shopar-plugin 0.7.4-alpha.0 → 0.7.4-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class t extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const n=[Uint8Array,Uint32Array],r=n.length-2,o=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],i=[2,12,7,1],a=window[o[i[i[r]]]][o[i[i[i.length-1]]]],s=a.charCodeAt(r),l=s^s,c=new n[1]([l]);function u(){const e=(new TextEncoder).encode(a),t=o.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[o[t[2]]](String.fromCodePoint(...e))}const d=[1e3,2e3,4e3],h=d.length;function p(t,n=0){return e(this,void 0,void 0,(function*(){try{return yield t()}catch(e){if(n>=h)throw e;return yield new Promise((e=>setTimeout(e,d[n]))),p(t,n+1)}}))}function f(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const g=["Glasses","Shoes","Watches"],v=["Shoes"];const w={},y={};function b(n){return null==w[n]&&(w[n]=function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(n).catch((e=>{throw console.error(e),new t("Resource unavailable.")}));if(!e.ok)throw new t(`Resource download failed with status ${e.status}.`);return e}))));try{return yield(yield r.blob()).arrayBuffer()}catch(e){throw console.error(e),new t("Resource has invalid body.")}}))}(n)),w[n]}function E(r,o,i){return null==y[r]&&(y[r]=function(r,o,i){return e(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const u=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const f=String.fromCharCode(a-7),m=window[`${h}${d+u+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${f}`],g=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield m(`${r}`).catch((()=>{throw new t("Unknown error.")}));if(!e.ok)throw new t("Unknown error.");return e})))),v=new n[0](yield(yield g.blob().catch((()=>{throw new t("Unknown error.")}))).arrayBuffer().catch((()=>{throw new t("Unknown error.")})));i+=s;const w=v.byteLength;if(c[l]=Math.min(76,o)*((a>>5)-1),152===c[l]&&(c[l]=w),i==l)return v;i=l,i^=l;for(let e=0,t=v.length;e<t;e++)c[l]^=c[i]<<13,c[l]^=c[i]>>17,c[l]^=c[i]<<5,v[e]=v[e]^c[l];return i^=c[0],i^=c[1],i^=c[2],v}))}(r,o,i)),y[r]}const A="0.7.4-alpha.0";let S=`https://cdn.jsdelivr.net/npm/shopar-plugin@${A}/dist`;const M={update:e=>{null!=e&&(S=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>S};function R(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let x;function T(t,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>e(this,void 0,void 0,(function*(){!function(){e(this,void 0,void 0,(function*(){null==x&&(x=R(`${M}/shopar-qr.js`))}))}(),yield x;const a=`https://ar.shopar.ai/${A.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,s=yield window.ShopAR__QR.toDataURL(a),l=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=s,yield l,r=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){r=!0,t.style.display="none"}))}}const C=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let P,I,k,L=!1;let U=!1;function $(e){const t=function(e){const t=new I.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,I.ClampToEdgeWrapping,I.ClampToEdgeWrapping,I.LinearFilter,I.LinearFilter,1,I.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(k.parse(e));return t.mapping=I.EquirectangularReflectionMapping,t.colorSpace=I.LinearSRGBColorSpace,t}const D=45,O=45,N=3,_=1.5,j=1,F=.5;let W,q,G,z,B,Q=!1;const V=4,H=.001,K=1e-7,X=10,Z=11,Y=1/(Z-1),J="function"==typeof Float32Array;function ee(e,t,n,r){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===r)return ae;const o=J?new Float32Array(Z):new Array(Z);for(let t=0;t<Z;++t)o[t]=oe(t*Y,e,n);function i(t){let r=0,i=1;const a=Z-1;for(;i!==a&&o[i]<=t;++i)r+=Y;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*Y,l=ie(s,e,n);return l>=H?function(e,t,n,r){for(let o=0;o<V;++o){const o=ie(t,n,r);if(0===o)return t;t-=(oe(t,n,r)-e)/o}return t}(t,s,e,n):0===l?s:function(e,t,n,r,o){let i,a,s=0;do{a=t+(n-t)/2,i=oe(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>K&&++s<X);return a}(t,r,r+Y,e,n)}return function(e){return 0===e||1===e?e:oe(i(e),t,r)}}function te(e,t){return 1-3*t+3*e}function ne(e,t){return 3*t-6*e}function re(e){return 3*e}function oe(e,t,n){return((te(t,n)*e+ne(t,n))*e+re(t))*e}function ie(e,t,n){return 3*te(t,n)*e*e+2*ne(t,n)*e+re(t)}function ae(e){return e}function se(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=ee(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function le(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:se(n)})));let r=0,o=n[0].value;return{reset:()=>{r=0},update:e=>{for(r+=e;r>=t;)r-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(r>=t.time&&r<i.time){const e=t.interpolate((r-t.time)/(i.time-t.time));o=t.value+e*(i.value-t.value)}}},get:()=>o}}const ce="#",ue="time",de="interpolation",he="yaw",pe="pitch",fe="fov",me=[ue,he,pe,fe,de],ge="s",ve="ms",we=1e3,ye="deg",be="rad",Ee=Math.PI/180,Ae="ease-in-out",Se="cubic-bezier(",Me=")";function Re(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(ce);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(!me.includes(r))throw new Error(`Invalid token in header: '${r}'.`);if(t.includes(r))throw new Error(`Duplicate token in header: '${r}'.`);t.push(r)}if(!t.includes(ue))throw new Error(`Missing required token: '${ue}'.`);return t}(t.split(/\s+/)),o={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=xe(r,e);null!=t&&(null==o.theta&&(o.theta=[]),o.theta.push(t)),null!=n&&(null==o.phi&&(o.phi=[]),o.phi.push(n)),null!=i&&(null==o.fov&&(o.fov=[]),o.fov.push(i))}if(0===Object.values(o).length)throw new Error("At least one parameter should be animated.");return o}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const r of e){const{time:e,pitch:o,yaw:i,fov:a}=r;if(null==e)throw new Error("Time missing.");const s=Ce(null!==(t=r.interpolation)&&void 0!==t?t:Ae);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*Ee,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*Ee,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*Ee,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function xe(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const r=e.indexOf(ue),o=function(e){if(e.endsWith(ve))return Ie(e.substring(0,e.length-ve.length));if(e.endsWith(ge))return Ie(e.substring(0,e.length-ge.length))*we;return Ie(e)}(n[r]),i=e.indexOf(de),a=Ce(-1===i?Ae:n[i]),s={};for(let t=0;t<n.length;t++){if(t===r||t===i)continue;const l=e[t],c=n[t];switch(l){case he:s.theta={time:o,value:Te(c),interpolation:a};break;case pe:s.phi={time:o,value:Te(c),interpolation:a};break;case fe:s.fov={time:o,value:Te(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Te(e){return e.endsWith(ye)?Ie(e.substring(0,e.length-ye.length))*Ee:e.endsWith(be)?Ie(e.substring(0,e.length-be.length)):Ie(e)*Ee}function Ce(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Pe(0,0,1,1);if("sine"===e)return Pe(.37,0,.63,1);if("sine-in"===e)return Pe(.12,0,.39,0);if("sine-out"===e)return Pe(.61,1,.88,1);if("ease"===e)return Pe(.25,.1,.25,1);if("ease-in"===e)return Pe(.42,0,1,1);if("ease-out"===e)return Pe(0,0,.58,1);if("ease-in-out"===e)return Pe(.42,0,.58,1);if(e.startsWith(Se)&&e.endsWith(Me)){const t=e.substring(Se.length,e.length-Me.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Ie(t[0]),y1:Ie(t[1]),x2:Ie(t[2]),y2:Ie(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Pe(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Ie(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const ke=300,Le=2e3,Ue=.05,$e=2*Math.PI/32,De=Ce("hold"),Oe=Ce("sine"),Ne=Ce("sine-in"),_e=Ce("sine-out");const je=2e3,Fe=8,We=2*Math.PI,qe=We/12,Ge=We/60,ze=We/60,Be=60,Qe=60,Ve=1e3,He=Be*Qe,Ke=-1;function Xe(e){return le([{time:0,value:0,interpolation:{type:"bezier",x1:.9,y1:0,x2:.6,y2:1}},{time:je,value:e,interpolation:{type:"hold"}}])}function Ze(e,t,n){return Ke*qe*(e+t/Be+n/He)}function Ye(e,t){return Ke*Ge*(e+t/Qe)}function Je(e,t){return Ke*ze*(e+t/Ve)}const et=["map","alphaMap","anisotropyMap","aoMap","bumpMap","clearcoatMap","clearcoatNormalMap","clearcoatRoughnessMap","displacementMap","emissiveMap","envMap","gradientMap","iridescenceMap","iridescenceThicknessMap","lightMap","metalnessMap","normalMap","roughnessMap","sheenColorMap","sheenRoughnessMap","specularMap","specularColorMap","specularIntensityMap","thicknessMap","transmissionMap"];function tt(e){null!=e&&(e.dispose(),et.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let nt;const rt=0,ot=3;let it,at,st,lt=!1,ct=1,ut=1,dt=1;const ht=1;let pt;const ft=new Map;function mt(){null==nt&&(nt=R(`${M}/shopar-three.js`))}function gt(t,n,r){const o=t.getContext("2d");null==o&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,R=1,x=!0,T=!1,C=0,j=0,Q=1,V=1,H=1;const K={threeInit:()=>{b||(vt(),i=new at.Scene,a=new at.PerspectiveCamera(25,1,.5),s=new it.OrbitControls(a,t),s.setInteractionEnabled(x),h=at.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new W.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new W.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new W.Group;r.position.y=-.7;const o=new W.PlaneGeometry(D,O).rotateX(Math.PI/2),i=new W.MeshBasicMaterial({map:t.texture,opacity:F,transparent:!0,depthWrite:!1}),a=new W.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new W.Mesh(o);s.visible=!1,r.add(s);const l=new W.OrthographicCamera(-D/2,D/2,O/2,-O/2,0,N);function c(e){s.visible=!0,z.uniforms.tDiffuse.value=t.texture,z.uniforms.h.value=1*e/256,s.material=z,q.setRenderTarget(n),q.render(s,l),B.uniforms.tDiffuse.value=n.texture,B.uniforms.v.value=1*e/256,s.material=B,q.setRenderTarget(t),q.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,r.add(l),{shadowGroup:r,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=G;const r=q.getClearAlpha();q.setClearAlpha(0),q.setRenderTarget(t),q.render(e,l),e.overrideMaterial=null,c(_),c(.4*_),q.setRenderTarget(null),q.setClearAlpha(r),e.background=n}}}(i)),b=!0)},threeParse:(t,n,r)=>e(this,void 0,void 0,(function*(){return null!=u&&d===r||(yield u,u=(()=>e(this,void 0,void 0,(function*(){var e,r,o;return r=it,U||(I=r.THREE,k=new r.RGBELoader,U=!0),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=$(n),function(e,t){if(L)return;const{THREE:n}=t;P=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder),L=!0}(pt,it),o=t,P.parseAsync(o.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{bt(i),i.add(e.scene);const n=(new at.Box3).setFromObject(e.scene);l.position.y=n.min.y-rt,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof at.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const r=n.min.clone().add(n.max).divideScalar(2),o=Math.sqrt(it.reduceVertices(e.scene,((e,t)=>Math.max(e,r.distanceToSquared(t))),0));s.reset(r,o,function(e,t){var n;const r={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?r.Glasses:null!==(n=r[e])&&void 0!==n?n:r.Glasses).normalize()}(t,at.Vector3)),C=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),r=e.getObjectByName("seconds");if(null==t&&null==n&&null==r)return null;let o,i,a,s,l,c;return{start:()=>{o=new Date,o.setMilliseconds(o.getMilliseconds()+je),l=!1;const e=o.getHours(),t=o.getMinutes(),n=o.getSeconds(),r=o.getMilliseconds();i=Xe(Ze(e,t,n)),a=Xe(Ye(t,n)),s=Xe(Je(n,r)),c=new Date},update:()=>{if(null==o)return!1;const e=new Date;if(!l){if(o.getTime()-e.getTime()>0){const o=Math.abs(e.getTime()-c.getTime());return null!=t&&(i.update(o),t.rotation.y=i.get()),null!=n&&(a.update(o),n.rotation.y=a.get()),null!=r&&(s.update(o),r.rotation.y=s.get()),c=e,!0}l=!0}if(Math.abs(e.getTime()-c.getTime())<Ve/Fe)return!1;c=e;const u=e.getHours(),d=e.getMinutes(),h=e.getSeconds(),p=e.getMilliseconds();return null!=t&&(t.rotation.y=Ze(u,d,h)),null!=n&&(n.rotation.y=Ye(d,h)),null!=r&&(r.rotation.y=Je(h,p)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,pt.setAnimationLoop(wt),t.style.visibility="visible",j=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset(),null==y||y.start()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of ft.values())if(!e())return!1;return!0}()&&pt.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var e;bt(i),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=null,i=null,u=null,y=null,ft.delete(t)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:at.ACESFilmicToneMapping,Linear:at.LinearToneMapping,Neutral:at.NeutralToneMapping};null!=n[e]&&(h=n[e]),R=t},threeIsInteractive:()=>x,threeSetInteractive:e=>{x=e,null==s||s.setInteractionEnabled(x)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=le([{time:0,value:e,interpolation:De},{time:ke,value:e,interpolation:_e},{time:ke+Le/4,value:e+$e,interpolation:Oe},{time:ke+3*Le/4,value:e-$e,interpolation:Ne},{time:ke+Le,value:e,interpolation:De},{time:ke+2*Le,value:e,interpolation:De}]),s.setTheta(f.get()),m=null,g=null,v=le([{time:0,value:0,interpolation:De},{time:ke,value:1,interpolation:De},{time:ke+Le,value:0,interpolation:De},{time:ke+2*Le,value:0,interpolation:De}]),w=le([{time:0,value:0,interpolation:De},{time:ke,value:0,interpolation:_e},{time:ke+Le/4,value:-Ue,interpolation:Oe},{time:ke+3*Le/4,value:Ue,interpolation:Ne},{time:ke+Le,value:0,interpolation:De},{time:ke+2*Le,value:0,interpolation:De}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{m=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{g=e,null!=e&&s.setFovRadians(e.get())},threeRenderOnce:()=>{K.render_()},preRender_:e=>{if(!b||S||!function(e){const t=e.getBoundingClientRect();return t.bottom>0&&t.top<Math.max(document.documentElement.clientHeight,window.innerHeight)&&t.right>0&&t.left<Math.max(document.documentElement.clientWidth,window.innerWidth)}(t))return;let n=0!==j?e-j:0;j=e,0===C?M=!0:C<ot&&(n=0),C++,T||(s.hasUserInteracted()?(T=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(n),null==m||m.update(n),null==g||g.update(n),null==v||v.update(n),null==w||w.update(n),null!=f&&(s.setTheta(f.get()),M=!0),null!=m&&(s.setPhi(m.get()),M=!0),null!=g&&(s.setFovRadians(g.get()),M=!0))),s.update()&&(M=!0),(null==y?void 0:y.update())&&(M=!0)},shouldRender_:()=>!(!b||S)&&M,render_:()=>{const e=pt.toneMapping,s=pt.toneMappingExposure;pt.toneMapping=h,pt.toneMappingExposure=R,pt.setViewport(0,0,t.width,t.height),pt.setClearColor(new at.Color(16777215),E&&!A?1:0),pt.render(i,a),pt.toneMapping=e,pt.toneMappingExposure=s,M=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),st.width>0&&st.height>0&&o.drawImage(st,0,ut-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=x&&!T?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(Q,V)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===Q&&n===V&&dt===H||(t.width=Math.ceil(e*dt*ht),t.height=Math.ceil(n*dt*ht),Q=e,V=n,H=dt,M=!0)},target_:t};return ft.set(t,K),K}function vt(){if(lt)return;it=window.ShopAR__THREE,at=it.THREE,st=document.createElement("canvas");var e,t;st.style.position="block",pt=new at.WebGLRenderer({powerPreference:"high-performance",canvas:st,antialias:!0,alpha:!0}),pt.outputColorSpace=at.SRGBColorSpace,pt.toneMapping=at.ACESFilmicToneMapping,pt.setClearColor(new at.Color(16777215),0),e=pt,t=it,Q||(W=t.THREE,q=e,G=new W.MeshDepthMaterial,G.userData.darkness={value:j},G.onBeforeCompile=e=>{e.uniforms.darkness=G.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},G.depthTest=!1,G.depthWrite=!1,z=new W.ShaderMaterial(t.HorizontalBlurShader),z.depthTest=!1,B=new W.ShaderMaterial(t.VerticalBlurShader),B.depthTest=!1,Q=!0),yt(),lt=!0}function wt(e){yt(),pt.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of ft.values())t(e),n()&&r()}function yt(){let e=0,t=0;for(const{target_:n}of ft.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=C();e=Math.ceil(e*n*ht),t=Math.ceil(t*n*ht),e===ct&&t===ut&&n===dt||(ct=e,ut=t,dt=n,pt.setSize(ct,ut,!1));for(const{updateSize_:e}of ft.values())e()}function bt(e){e.traverse((e=>{var t;e instanceof at.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(tt):tt(e.material))})),e.clear()}const Et={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},At=Object.keys(Et);function St(e){return Et[e]}const Mt="shopar-error";function Rt(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn",o.appendChild(r);{const e=document.createElement("span");e.textContent=t,o.appendChild(e)}o.ariaLabel=n;const i=o.style;return i.display="none",i.pointerEvents="auto",o}const xt="shopar-control";const Tt="shopar-deepar-output";function Ct(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function Pt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function It(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function kt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const Lt="shopar-main";const Ut="shopar-qr-output";function $t(e){var t,n;const r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("width",null!==(t=e.getAttribute("width"))&&void 0!==t?t:"1rem"),r.setAttribute("height",null!==(n=e.getAttribute("height"))&&void 0!==n?n:"1rem"),r.appendChild(e),r}function Dt(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","image");return n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",null!=t?t:"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E"),n.setAttribute("width",e),n.setAttribute("height",e),n}const Ot="shopar-three-output";var Nt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Nt||(Nt={}));let _t=!1;function jt(){_t||(!function(){try{const e=document.createElement("style"),t=process.env.css;null!=t&&(e.innerHTML=t);const n=document.head;n.insertBefore(e,n.children[0])}catch(e){console.warn("Failed to write default ShopAR Plugin CSS.")}}(),_t=!0)}function Ft(){jt();const e=function(){const e=document.createElement("div");e.id=Lt;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),r=function(e,t){const n=document.createElement("div");n.id=Ut;const r=n.style;r.position="absolute",r.top="0",r.left="0",r.width="100%",r.height="100%",r.display="none",r.pointerEvents="auto",r.userSelect="none";const o=document.createElement("div");o.className="shopar-qr";const i=o.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(o),o.appendChild(e);const a=document.createElement("div");return a.appendChild(t),o.appendChild(a),n}(t,n);e.appendChild(r);const o=function(){const e=document.createElement("div");e.id=Tt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(o);const i=function(){const e=document.createElement("canvas");e.id=Ot,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:r}=n;return r.position="absolute",r.width="100%",r.height="100%",r.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=$t(Dt("2rem",`${M}/img/prompt/3d-interaction.svg`)),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=Ct("shopar-ar-loading-container"),h=Pt("shopar-ar-loading-text",St("loading.ar"));d.appendChild(h);const p=It("shopar-ar-loading-bar-bg"),f=kt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=Ct("shopar-3d-loading-container"),g=Pt("shopar-3d-loading-text",St("loading.3d"));m.appendChild(g);const v=It("shopar-3d-loading-bar-bg"),w=kt("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",t.backgroundSize="contain",t.backgroundRepeat="no-repeat",t.backgroundPosition="center",e}();e.appendChild(y);const b=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),E=function(e){const t=document.createElement("div");t.id=Mt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const r=document.createElement("div"),o=r.style;return o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",t.appendChild(r),r.appendChild(e),t}(b);e.appendChild(E);const A=function(){const e=document.createElement("div");return e.id=xt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(A);const S=Dt("1.75rem"),R=Rt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",$t(S));A.appendChild(R);const x=Dt("1.75rem"),T=Rt("shopar-btn-3d","3D","Launch ShopAR 3D preview",$t(x));A.appendChild(T);const C=Dt("1.75rem"),P=Rt("shopar-btn-close","Close","Close ShopAR view",$t(C));A.append(P);let I,k,L=Nt.None,U=!1,$=!1,D=!1,O=!1;function N(){f.classList.remove("active"),d.style.visibility="hidden"}function _(){y.style.visibility="hidden",w.classList.remove("active"),m.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return r},getQRImage:function(){return n},getDeepARTarget:function(){return o},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){b.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,r,o,i){var a;U=e,$=t,D=n,O=r,I=o,k=i,Wt(A,U),Wt(R,U&&(D||$)&&L===Nt.None),Wt(T,U&&O&&L===Nt.None),Wt(P,U&&L!==Nt.None),N(),_(),U||""===(a=E).style.display&&Wt(a,!1)},getUIState:function(){return L},setUIState:function(e){L=e,L===Nt.None?(N(),_(),U&&(Wt(E,!1),Wt(P,!1),($||D)&&Wt(R,!0),O&&Wt(T,!0))):L===Nt.QR||L===Nt.AR?U&&(Wt(E,!1),Wt(R,!1),Wt(T,O&&"AR"===k),Wt(P,"AR"!==k)):L===Nt.Preview&&U&&(Wt(E,!1),Wt(R,($||D)&&"3D"===k),Wt(T,!1),Wt(P,"3D"!==k))},setDefaultUIActions:function(e,t,n){U&&(($||D)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,r=`${M}/img/icons/${n}`;S.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(I),R.onclick=e),O&&(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/cube.svg`),T.onclick=t),C.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/close.svg`),P.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:N,startThreeLoading:function(){null!=y.dataset.bgSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:_,setThreePosterUrl:function(e){null!=e?(y.style.backgroundImage=`url(${e})`,y.dataset.bgSet="true"):delete y.dataset.bgSet},showCameraError:function(){U&&Wt(E,!0)}}}function Wt(e,t){e.style.display=t?"":"none"}const qt=new Map;function Gt(e){let t=qt.get(e);return null==t?(t=function(){let e=0,t=null,n=null,r=null;const o=()=>(null==t&&(t=Ft()),t);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>t,findUI:o,findQR:()=>{if(null==n){const{getQRTarget:e,getQRImage:t}=o();n=T(e(),t())}return n},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=o();r=gt(e(),t(),n())}return r}}}(),qt.set(e,t)):t.incrementSetupId_(),t}function zt(e){for(const t of qt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===Nt.AR&&o(Nt.None)}}let Bt;const Qt=new Uint8Array(16);function Vt(){if(!Bt&&(Bt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Bt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Bt(Qt)}const Ht=[];for(let e=0;e<256;++e)Ht.push((e+256).toString(16).slice(1));var Kt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Xt(e,t,n){if(Kt.randomUUID&&!t&&!e)return Kt.randomUUID();const r=(e=e||{}).random||(e.rng||Vt)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return Ht[e[t+0]]+Ht[e[t+1]]+Ht[e[t+2]]+Ht[e[t+3]]+"-"+Ht[e[t+4]]+Ht[e[t+5]]+"-"+Ht[e[t+6]]+Ht[e[t+7]]+"-"+Ht[e[t+8]]+Ht[e[t+9]]+"-"+Ht[e[t+10]]+Ht[e[t+11]]+Ht[e[t+12]]+Ht[e[t+13]]+Ht[e[t+14]]+Ht[e[t+15]]}(r)}const Zt="qrLaunch",Yt="arLaunch",Jt="previewLaunch",en="heartbeat";let tn,nn,rn=!1,on=window.navigator.userAgent||"no user agent";const an=[];function sn(){null==tn&&(nn=Xt(),tn=R(`${M}/shopar-analytics.js`),tn.then((()=>{rn=!0,window.ShopAR__analytics.initializeImpl(),an.forEach((e=>e()))})))}function ln(e){rn?e():an.push(e)}function cn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function un(t){return e(this,void 0,void 0,(function*(){const e=document.createElement("video");return e.setAttribute("playsinline","playsinline"),e.srcObject=yield t,e}))}const dn=200,hn=10;let pn=!1,fn=null,mn=[],gn=[];function vn(t){return e(this,void 0,void 0,(function*(){pn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${M}/wasm/mediapipe`,t),fn&&clearInterval(fn);const r=[],o=[];fn=setInterval((()=>e(this,void 0,void 0,(function*(){if(pn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());pn||(null!=a&&null!=s&&function(e){for(let t of mn)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<hn||(r.shift(),o.shift(),function(e,t){for(let n of gn)n({faceWidth:e,IPD:t})}(yn(r),yn(o)))))}))),dn)}))}function wn(){gn=[],mn=[],pn=!0}function yn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var bn="undefined"!=typeof Float32Array?Float32Array:Array;function En(){var e=new bn(16);return bn!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function An(e,t,n){var r=t[0],o=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],g=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*r+b*s+E*d+A*m,e[1]=y*o+b*l+E*h+A*g,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*r+b*s+E*d+A*m,e[5]=y*o+b*l+E*h+A*g,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*r+b*s+E*d+A*m,e[9]=y*o+b*l+E*h+A*g,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*r+b*s+E*d+A*m,e[13]=y*o+b*l+E*h+A*g,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Sn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Mn(e,t){var n=t[0],r=t[1],o=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,r,o),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function Rn(e,t,n,r){var o=t[0],i=t[1],a=t[2],s=t[3],l=o+o,c=i+i,u=a+a,d=o*l,h=o*c,p=o*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=r[0],E=r[1],A=r[2];return e[0]=(1-(f+g))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+g))*E,e[6]=(m+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(m-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function xn(){var e=new bn(3);return bn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Tn(e,t,n){var r=new bn(3);return r[0]=e,r[1]=t,r[2]=n,r}function Cn(e,t){var n=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return Math.hypot(n,r,o)}function Pn(e,t,n){var r=t[0],o=t[1],i=t[2],a=n[3]*r+n[7]*o+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*r+n[4]*o+n[8]*i+n[12])/a,e[1]=(n[1]*r+n[5]*o+n[9]*i+n[13])/a,e[2]=(n[2]*r+n[6]*o+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function In(){var e=new bn(4);return bn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}xn(),function(){var e,t=(e=new bn(4),bn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var kn;let Ln,Un;xn(),Tn(1,0,0),Tn(0,1,0),In(),In(),kn=new bn(9),bn!=Float32Array&&(kn[1]=0,kn[2]=0,kn[3]=0,kn[5]=0,kn[6]=0,kn[7]=0),kn[0]=1,kn[4]=1,kn[8]=1;let $n,Dn,On,Nn,_n=!0,jn=null;const Fn=new Set;let Wn,qn,Gn,zn,Bn,Qn;function Vn(){null==Ln&&(Ln=R(`${M}/shopar-deepar.js`))}function Hn(){null==Un&&(Un=R(`${M}/shopar-true-scale.js`))}function Kn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return Bn=o,null==Wn&&(Wn=(()=>e(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new t("No camera available!");var e;const n=or(On),o=cn(n);$n=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:Nn,additionalOptions:{hint:Qn,cameraConfig:{disableDefaultCamera:!0}}}),Dn=yield un(o),yield ir($n,Dn,"user"===n),"Glasses"===On&&(yield Un,vn(Dn),"DetectionLoop"!==Bn&&cr((e=>{zn=e.faceWidth})))})))()),Wn}))}function Xn(e,t){var n,r;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===On&&(n=t,r=Qn,n===r||null!=n&&null!=r&&n.length===r.length&&n.every((e=>r.find((t=>e===t))))&&r.every((e=>n.find((t=>t===e))))))||(null!=$n&&($n.shutdown(),$n=null,Wn=null),On=e,Qn=t)}function Zn(e){e!==Nn&&(Nn=e,null!=$n&&$n.changePreviewElement(Nn))}function Yn(e){jn=e}function Jn(e){$n.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(zn){const e=137/(zn+5);$n.changeParameterVector("GLASSES","","scale",e,e,e,0),$n.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const r=sr("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=sr("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);$n.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),$n.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),wn(),zn=null}e(),ar("Glasses")}},$n.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),ar("Shoes"))},$n.callbacks.onWristTracked=t=>{t.detected&&(e(),ar("Watches"))}}function er(t,n,r){return e(this,void 0,void 0,(function*(){return null!=qn&&Gn===r||(yield qn,qn=$n.switchEffect(t,{envmap:n}),Gn=r),qn}))}function tr(e,t){null!=e&&null!=t&&($n.setToneMapping(e),$n.setExposure(t))}function nr(){return e(this,void 0,void 0,(function*(){if(null!=$n){if(_n=!1,null==Dn){const e=or(On),t=cn(e);Dn=yield un(t),yield ir($n,Dn,"user"===e),"Glasses"===On&&(vn(Dn),"DetectionLoop"!==Bn&&cr((e=>{zn=e.faceWidth})))}!function(){if(null==jn)return;if(null==On||Fn.has(On))return;jn.style.visibility="visible",jn.style.opacity="1"}(),$n.setPaused(_n),Nn.style.display=""}}))}function rr(){null!=$n&&(_n=!0,$n.setPaused(_n),wn(),null!=Dn&&null!=Dn.srcObject&&Dn.srcObject instanceof MediaStream&&(Dn.srcObject.getTracks().forEach((e=>e.stop())),Dn=null),function(){if(null==jn)return;jn.style.visibility="hidden",jn.style.opacity="0"}(),$n.stopCamera(),Nn.style.display="none")}function or(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function ir(t,n,r){return e(this,void 0,void 0,(function*(){yield new Promise((o=>{n.onloadedmetadata=()=>{n.play().then((()=>e(this,void 0,void 0,(function*(){t.setVideoElement(n,r),o()}))))}}))}))}function ar(e){null!=jn&&(Fn.has(e)||(Fn.add(e),jn.style.opacity="0"))}function sr(e,t,n,r,o,i,a){const s=$n.getTransformationBetween(e,t),l=Sn(xn(),s),c=function(e,t){var n=new bn(3);Mn(n,t);var r=1/n[0],o=1/n[1],i=1/n[2],a=t[0]*r,s=t[1]*o,l=t[2]*i,c=t[4]*r,u=t[5]*o,d=t[6]*i,h=t[8]*r,p=t[9]*o,f=t[10]*i,m=a+u+f,g=0;return m>0?(g=2*Math.sqrt(m+1),e[3]=.25*g,e[0]=(d-p)/g,e[1]=(h-l)/g,e[2]=(s-c)/g):a>u&&a>f?(g=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/g,e[0]=.25*g,e[1]=(s+c)/g,e[2]=(h+l)/g):u>f?(g=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/g,e[0]=(s+c)/g,e[1]=.25*g,e[2]=(d+p)/g):(g=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/g,e[0]=(h+l)/g,e[1]=(d+p)/g,e[2]=.25*g),e}(In(),s);Rn(s,c,l,Tn(a,a,a));const u=$n.getTransformationBetween(t,n),d=Sn(xn(),u);Rn(u,In(),d,Mn(xn(),u));const h=An(En(),s,u),p=Sn(xn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=$n.getTransformationBetween(n,r)}catch(e){return f}const g=An(En(),u,m),v=An(En(),s,g),w=Tn(p[0],i[1],i[2]),y=Pn(xn(),w,function(e,t){var n=t[0],r=t[1],o=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-r*a,y=n*l-o*a,b=n*c-i*a,E=r*l-o*s,A=r*c-i*s,S=o*c-i*l,M=u*m-d*f,R=u*g-h*f,x=u*v-p*f,T=d*g-h*m,C=d*v-p*m,P=h*v-p*g,I=w*P-y*C+b*T+E*x-A*R+S*M;return I?(I=1/I,e[0]=(s*P-l*C+c*T)*I,e[1]=(o*C-r*P-i*T)*I,e[2]=(m*S-g*A+v*E)*I,e[3]=(h*A-d*S-p*E)*I,e[4]=(l*x-a*P-c*R)*I,e[5]=(n*P-o*x+i*R)*I,e[6]=(g*b-f*S-v*y)*I,e[7]=(u*S-h*b+p*y)*I,e[8]=(a*C-s*x+c*M)*I,e[9]=(r*x-n*C-i*M)*I,e[10]=(f*A-m*b+v*w)*I,e[11]=(d*b-u*A-p*w)*I,e[12]=(s*R-a*T-l*M)*I,e[13]=(n*T-r*R+o*M)*I,e[14]=(m*y-f*E-g*w)*I,e[15]=(u*E-d*y+h*w)*I,e):null}(En(),v));let b=$n.getClosestPointOnMesh(r,y);try{const e=$n.getClosestPointOnMesh(o,y);Cn(y,e)<Cn(y,b)&&(b=e)}catch(e){}const E=Pn(xn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function lr(e){!function(e){mn.push(e)}(e)}function cr(e){!function(e){gn.push(e)}(e)}var ur;function dr(){return[ur.Android,ur.iOS,ur.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],r=["Win32","Win64","Windows","WinCE"],o=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==o.indexOf(t)?ur.iOS:-1!==n.indexOf(t)?i?ur.Tablet:ur.MacOS:-1!==r.indexOf(t)?ur.Windows:/Android/.test(e)?ur.Android:/Linux/.test(t)?ur.Linux:i?ur.Tablet:ur.Unknown}return ur.Unknown}())}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(ur||(ur={}));const hr=["AR","3D"];function pr(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function fr(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function mr(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function gr(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;pr(n,"apiKey"),mr(n,"apiKey"),pr(r,"sku"),mr(r,"sku"),pr(o,"targetElement"),function(e,n){if(!(e instanceof HTMLElement))throw new t(`'${n}' must be an HTMLElement.`)}(o,"targetElement"),null!=i&&function(e,n,r){if("string"!=typeof e)throw new t(`'${n}' must be a string.`);if(!r.includes(e))throw new t(`'${n}' must be ${r.join("' or '")}.`)}(i,"initialState",hr),null!=a&&function(e,n){if("string"!=typeof e&&!Array.isArray(e))throw new t(`'${n}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&mr(s,"baseUrl"),null!=l&&fr(l,"defaultUI"),null!=c&&fr(c,"interactive"),null!=u&&function(e,n,r){for(const o of r){const r=e[o];if(null!=r&&"string"!=typeof r)throw new t(`Value for key '${o}' in '${n}' must be a string.`)}}(u,"strings",At)}let vr=!1;function wr(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;M.update(n.baseUrl),sn();const{trackEvent:o}=function(e){const t=performance.now(),n=Xt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:A,userAgent:on,sessionId:nn,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),ln((()=>{window.ShopAR__analytics.trackEventImpl(r,o)}))}}}(n.apiKey);o("visionSetup");const i=yield function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:n,sid:u()})}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield r.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(n.apiKey);o("visionApiResponse",i);const{arKey:a}=i,s=Gt(r),{getSetupId:l,findUI:c}=s,d=l();Vn(),Hn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=Nt.None)throw Error("UI state is not None, this is weird..");v(Nt.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield Ln,yr(l(),d);try{o("visionArLaunch"),rr(),Xn("Glasses",["faceInit"]),Zn(f()),yield Kn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),yr(l(),d),yield nr(),yr(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),b(),rr(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{y()}return vr=!0,{registerFacePoseListener:e=>{vr&&(o("registerFacePoseListener"),lr(e))},registerFaceMeasurementListener:e=>{vr&&(o("registerFaceMeasurementListener"),cr(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){vr&&(o("switchEffect",{arUrl:t}),function(e){$n.switchEffect(e)}(t))})),clearEffect:()=>{vr&&(o("clearEffect"),$n.clearEffect())},close:()=>{if(vr){if(vr=!1,o("visionClose"),g()!==Nt.AR)throw new t("AR not launched.");rr(),v(Nt.None)}}}}))}function yr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function br(n){var r,o;return e(this,void 0,void 0,(function*(){gr(n);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=n,d=null==n.zoomEnabled||n.zoomEnabled,h=!0===n.alwaysTransparentBackground;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),M.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(Et,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(Et[t]=n)}}(n.strings);const w=null!=c?Re(c):null,y=null!=(null==w?void 0:w.theta)?le(w.theta):null,S=null!=(null==w?void 0:w.phi)?le(w.phi):null,R=null!=(null==w?void 0:w.fov)?le(w.fov):null,x=function(n,r,o,i,a,s){return e(this,void 0,void 0,(function*(){const l=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:n,sku:r,sid:u()},null!=o&&{yaw:`${m(f(o))}`}),null!=i&&{pitch:`${m(f(i))}`}),null!=a&&{fov:`${m(f(a))}`}),s&&{forcedTransparency:`${s}`}))}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield l.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==S?void 0:S.get(),null==R?void 0:R.get(),h),T=Gt(s),{getSetupId:C,findUI:P,findQR:I,findThree:k}=T,L=C();sn();const{trackEvent:U,arInteracted:$,previewInteracted:D}=function(e,t){const n=performance.now(),r=Xt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(en,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:on,pluginVersion:A,sessionId:nn,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),ln((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);U("setup",{hostname:window.location.hostname});const O=yield x;U("apiResponse",O);const{category:N,arUrl:_,arEnvUrl:j,arToneMapping:F,arToneMappingExposure:W,arKey:q,arPromptEnabled:G,arPromptText:z,arPromptImage:B,previewUrl:Q,previewEnvUrl:V,previewToneMapping:H,previewToneMappingExposure:K,previewPosterUrl:X,cameraErrorText:Z,qrPromptText:Y}=O;Er(C(),L);const J=null!=_&&function(e){return null!=e&&g.includes(e)}(N),ee=null==(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled),te=J&&function(e){return null!=e&&v.includes(e)}(N),ne=ee&&te&&!dr(),re=J&&!ne,oe=null!=Q;Er(C(),L);const{setTargetElement:ie,getDeepARTarget:ae,getDeepARPrompt:se,customizeDeepARPrompt:ce,customizeCameraError:ue,customizeQRPrompt:de,setVisibilityParameters:he,getUIState:pe,setUIState:fe,setDefaultUIActions:me,startDeepARLoading:ge,stopDeepARLoading:ve,startThreeLoading:we,stopThreeLoading:ye,setThreePosterUrl:be,showCameraError:Ee}=P();ie(s);he(null==n.defaultUI||n.defaultUI,ne,re,oe,N,l),ce(null!=z?z:"",null!=B?B:""),ue(Z),de(Y),be(X),function(e,n){const r=e.parentNode;if(null==r)throw new t("Parent node missing.");new MutationObserver((t=>{for(const r of t)for(const t of r.removedNodes)if(t===e)return void n()})).observe(r,{childList:!0})}(s,(()=>{pe()!==Nt.QR||Ae()||Me(),pe()!==Nt.AR||_n||rr(),pe()!==Nt.Preview||Pe()||ke(),fe(Nt.None),Le(),function(e){qt.delete(e)}(s)}));const{qrPaused:Ae,qrDraw:Se,qrPause:Me}=I(),{threeInit:xe,threeParse:Te,threeLoad:Ce,threePaused:Pe,threeResume:Ie,threePause:ke,threeDestroy:Le,threeSetZoomEnabled:Ue,threeSetForcedTransparency:$e,threeSetToneMapping:De,threeIsInteractive:Oe,threeSetInteractive:Ne,threeSetOnInteracted:_e,threeInitPromptAnimation:je,threeInitThetaAnimation:Fe,threeInitPhiAnimation:We,threeInitFovAnimation:qe,threeRenderOnce:Ge}=k(),ze=null==n.interactive||n.interactive;Ne(ze);let Be=0;if(pe()===Nt.QR){if(!Ae())if(ne){U(Zt);try{yield Se(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Me(),fe(Nt.None)}else if(pe()===Nt.AR){if(!_n)if(re&&!vr){U(Yt),Vn(),"Glasses"===N&&Hn();const e=null!=j?yield b(j):void 0;Er(C(),L);const t=yield b(_);Er(C(),L),zt(T),Xn(N),Zn(ae()),Yn(G?se():null),yield er(t,e,`${_}${j}`),tr(F,W),Jn($),Er(C(),L)}else rr(),fe(Nt.None)}else if(pe()===Nt.Preview&&!Pe())if(oe){U(Jt),mt(),we();const e=255,t=yield E(Q,(new Date).getTime()+e,Math.random()*e);Er(C(),L);const n=yield b(null!=V?V:`${M}/env/default.hdr`);Er(C(),L),yield nt,Er(C(),L),xe(),Er(C(),L);const r=yield Te(t,n,`${Q}${V}`);Er(C(),L),Ce(r,N),Ue(d),$e(h),De(null!=H?H:"ACES",null!=K?K:1),_e(D),je(),null!=w&&(Fe(y),We(S),qe(R)),Ge(),Ie(),ye()}else ke(),fe(Nt.None);const Qe=()=>e(this,void 0,void 0,(function*(){if(ne)try{U(Zt);const e=++Be;if(pe()===Nt.Preview&&oe&&!Pe()&&ke(),fe(Nt.QR),yield Se(i,a),Be!==e)return;return void Er(C(),L)}catch(e){const n=e instanceof Error;throw U("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}if(!re)throw new t("Model does not have AR enabled.");try{U(Yt);const e=++Be;pe()===Nt.Preview&&oe&&!Pe()&&ke(),zt(T),fe(Nt.AR),Vn(),"Glasses"===N&&Hn(),ge();const t=null!=j?yield b(j):void 0;Er(C(),L);const n=yield b(_);if(Be!==e)return;if(Er(C(),L),yield Ln,Be!==e)return;if(Er(C(),L),rr(),Xn(N),Zn(ae()),Yn(G?se():null),yield Kn({licenseKey:q}),Be!==e)return;if(Er(C(),L),yield er(n,t,`${_}${j}`),tr(F,W),Jn($),Be!==e)return;if(Er(C(),L),yield nr(),Be!==e)return;Er(C(),L)}catch(e){const n=e instanceof Error;throw U("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Ee(),rr(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ve()}})),Ve=()=>e(this,void 0,void 0,(function*(){if(!oe)throw new t("Model does not have 3D enabled.");try{U(Jt);const e=++Be;pe()===Nt.AR&&(re&&!_n&&rr(),Me()),fe(Nt.Preview),mt(),we();const t=255,n=yield E(Q,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;Er(C(),L);const r=yield b(null!=V?V:`${M}/env/default.hdr`);if(Be!==e)return;if(Er(C(),L),yield nt,Be!==e)return;if(Er(C(),L),xe(),Be!==e)return;Er(C(),L);const o=yield Te(n,r,`${Q}${V}`);if(Be!==e)return;Er(C(),L),Ce(o,N),Ue(d),$e(h),De(null!=H?H:"ACES",null!=K?K:1),_e(D),je(),null!=w&&(Fe(y),We(S),qe(R)),Ge(),Ie(),ye()}catch(e){const n=e instanceof Error;throw U("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}})),He=()=>e(this,void 0,void 0,(function*(){pe()!==Nt.None&&("AR"!==l||pe()!==Nt.AR&&pe()!==Nt.QR)&&("3D"===l&&pe()===Nt.Preview||(++Be,pe()===Nt.QR||pe()===Nt.AR?(re&&!_n&&rr(),Me()):pe()===Nt.Preview&&oe&&!Pe()&&ke(),fe(Nt.None),"AR"!==l?"3D"!==l||(yield Ve()):yield Qe()))}));return me(Qe,Ve,He),"AR"===l?(yield Qe(),Er(C(),L)):"3D"===l&&(yield Ve(),Er(C(),L)),vr=!1,{launchAR:J?Qe:void 0,launch3D:oe?Ve:void 0,closeAR:J?()=>e(this,void 0,void 0,(function*(){pe()!==Nt.AR&&pe()!==Nt.QR||"AR"!==l&&(++Be,re&&!_n&&rr(),Me(),fe(Nt.None),"3D"!==l||(yield Ve()))})):void 0,close3D:oe?()=>e(this,void 0,void 0,(function*(){pe()===Nt.Preview&&"3D"!==l&&(++Be,oe&&!Pe()&&ke(),fe(Nt.None),"AR"!==l||(yield Qe()))})):void 0,close:J||oe?He:void 0,isInteractive:()=>Oe(),setInteractive:e=>Ne(e)}}))}function Er(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const Ar={setup:function(t){return e(this,void 0,void 0,(function*(){return wr(t)}))}},Sr={setup:function(n){return e(this,void 0,void 0,(function*(){return function(n,r){return e(this,void 0,void 0,(function*(){try{return r()}catch(e){throw e instanceof Error?new t(`${n} failed: ${e.message}`):(console.error(e),new t(`${n} failed.`))}}))}("setup",(()=>br(n)))}))},version:A};export{hr as PREVIEW_STATES,t as PluginError,Sr as plugin,Ar as vision};
|
|
1
|
+
function e(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class t extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const n=[Uint8Array,Uint32Array],r=n.length-2,o=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],i=[2,12,7,1],a=window[o[i[i[r]]]][o[i[i[i.length-1]]]],s=a.charCodeAt(r),l=s^s,c=new n[1]([l]);function u(){const e=(new TextEncoder).encode(a),t=o.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[o[t[2]]](String.fromCodePoint(...e))}const d=[1e3,2e3,4e3],h=d.length;function p(t,n=0){return e(this,void 0,void 0,(function*(){try{return yield t()}catch(e){if(n>=h)throw e;return yield new Promise((e=>setTimeout(e,d[n]))),p(t,n+1)}}))}function f(e){return e*(180/Math.PI)}function g(e){return Math.round(100*e)/100}const m=["Glasses","Shoes","Watches"],v=["Shoes"];const w={},y={};function b(n){return null==w[n]&&(w[n]=function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(n).catch((e=>{throw console.error(e),new t("Resource unavailable.")}));if(!e.ok)throw new t(`Resource download failed with status ${e.status}.`);return e}))));try{return yield(yield r.blob()).arrayBuffer()}catch(e){throw console.error(e),new t("Resource has invalid body.")}}))}(n)),w[n]}function E(r,o,i){return null==y[r]&&(y[r]=function(r,o,i){return e(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const u=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const f=String.fromCharCode(a-7),g=window[`${h}${d+u+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${f}`],m=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield g(`${r}`).catch((()=>{throw new t("Unknown error.")}));if(!e.ok)throw new t("Unknown error.");return e})))),v=new n[0](yield(yield m.blob().catch((()=>{throw new t("Unknown error.")}))).arrayBuffer().catch((()=>{throw new t("Unknown error.")})));i+=s;const w=v.byteLength;if(c[l]=Math.min(76,o)*((a>>5)-1),152===c[l]&&(c[l]=w),i==l)return v;i=l,i^=l;for(let e=0,t=v.length;e<t;e++)c[l]^=c[i]<<13,c[l]^=c[i]>>17,c[l]^=c[i]<<5,v[e]=v[e]^c[l];return i^=c[0],i^=c[1],i^=c[2],v}))}(r,o,i)),y[r]}const A="0.7.4-alpha.1";let S=`https://cdn.jsdelivr.net/npm/shopar-plugin@${A}/dist`;const R={update:e=>{null!=e&&(S=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>S};function M(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let x;function T(t,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>e(this,void 0,void 0,(function*(){!function(){e(this,void 0,void 0,(function*(){null==x&&(x=M(`${R}/shopar-qr.js`))}))}(),yield x;const a=`https://ar.shopar.ai/${A.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,s=yield window.ShopAR__QR.toDataURL(a),l=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=s,yield l,r=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){r=!0,t.style.display="none"}))}}const C=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let P,I=!1;var k;let L,U,D;!function(e){e[e.HDR=0]="HDR",e[e.EXR=1]="EXR"}(k||(k={}));let $=!1;function O(e,t){const n=t===k.HDR?function(e){const t=new L.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,L.ClampToEdgeWrapping,L.ClampToEdgeWrapping,L.LinearFilter,L.LinearFilter,1,L.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(U.parse(e)):function(e){const t=new L.DataTexture(e.data,e.width,e.height,e.format,e.type,void 0,L.ClampToEdgeWrapping,L.ClampToEdgeWrapping,L.LinearFilter,L.LinearFilter,1,e.colorSpace);return t.needsUpdate=!0,t}(D.parse(e));return n.mapping=L.EquirectangularReflectionMapping,n.colorSpace=L.LinearSRGBColorSpace,n}const N=45,_=45,j=3,W=1.5,F=1,q=.5;let G,z,H,B,Q,V=!1;const K=4,X=.001,Z=1e-7,Y=10,J=11,ee=1/(J-1),te="function"==typeof Float32Array;function ne(e,t,n,r){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===r)return le;const o=te?new Float32Array(J):new Array(J);for(let t=0;t<J;++t)o[t]=ae(t*ee,e,n);function i(t){let r=0,i=1;const a=J-1;for(;i!==a&&o[i]<=t;++i)r+=ee;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*ee,l=se(s,e,n);return l>=X?function(e,t,n,r){for(let o=0;o<K;++o){const o=se(t,n,r);if(0===o)return t;t-=(ae(t,n,r)-e)/o}return t}(t,s,e,n):0===l?s:function(e,t,n,r,o){let i,a,s=0;do{a=t+(n-t)/2,i=ae(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>Z&&++s<Y);return a}(t,r,r+ee,e,n)}return function(e){return 0===e||1===e?e:ae(i(e),t,r)}}function re(e,t){return 1-3*t+3*e}function oe(e,t){return 3*t-6*e}function ie(e){return 3*e}function ae(e,t,n){return((re(t,n)*e+oe(t,n))*e+ie(t))*e}function se(e,t,n){return 3*re(t,n)*e*e+2*oe(t,n)*e+ie(t)}function le(e){return e}function ce(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=ne(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function ue(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:ce(n)})));let r=0,o=n[0].value;return{reset:()=>{r=0},update:e=>{for(r+=e;r>=t;)r-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(r>=t.time&&r<i.time){const e=t.interpolate((r-t.time)/(i.time-t.time));o=t.value+e*(i.value-t.value)}}},get:()=>o}}const de="#",he="time",pe="interpolation",fe="yaw",ge="pitch",me="fov",ve=[he,fe,ge,me,pe],we="s",ye="ms",be=1e3,Ee="deg",Ae="rad",Se=Math.PI/180,Re="ease-in-out",Me="cubic-bezier(",xe=")";function Te(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(de);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(!ve.includes(r))throw new Error(`Invalid token in header: '${r}'.`);if(t.includes(r))throw new Error(`Duplicate token in header: '${r}'.`);t.push(r)}if(!t.includes(he))throw new Error(`Missing required token: '${he}'.`);return t}(t.split(/\s+/)),o={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=Ce(r,e);null!=t&&(null==o.theta&&(o.theta=[]),o.theta.push(t)),null!=n&&(null==o.phi&&(o.phi=[]),o.phi.push(n)),null!=i&&(null==o.fov&&(o.fov=[]),o.fov.push(i))}if(0===Object.values(o).length)throw new Error("At least one parameter should be animated.");return o}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const r of e){const{time:e,pitch:o,yaw:i,fov:a}=r;if(null==e)throw new Error("Time missing.");const s=Ie(null!==(t=r.interpolation)&&void 0!==t?t:Re);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*Se,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*Se,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*Se,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function Ce(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const r=e.indexOf(he),o=function(e){if(e.endsWith(ye))return Le(e.substring(0,e.length-ye.length));if(e.endsWith(we))return Le(e.substring(0,e.length-we.length))*be;return Le(e)}(n[r]),i=e.indexOf(pe),a=Ie(-1===i?Re:n[i]),s={};for(let t=0;t<n.length;t++){if(t===r||t===i)continue;const l=e[t],c=n[t];switch(l){case fe:s.theta={time:o,value:Pe(c),interpolation:a};break;case ge:s.phi={time:o,value:Pe(c),interpolation:a};break;case me:s.fov={time:o,value:Pe(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Pe(e){return e.endsWith(Ee)?Le(e.substring(0,e.length-Ee.length))*Se:e.endsWith(Ae)?Le(e.substring(0,e.length-Ae.length)):Le(e)*Se}function Ie(e){if("hold"===e)return{type:"hold"};if("linear"===e)return ke(0,0,1,1);if("sine"===e)return ke(.37,0,.63,1);if("sine-in"===e)return ke(.12,0,.39,0);if("sine-out"===e)return ke(.61,1,.88,1);if("ease"===e)return ke(.25,.1,.25,1);if("ease-in"===e)return ke(.42,0,1,1);if("ease-out"===e)return ke(0,0,.58,1);if("ease-in-out"===e)return ke(.42,0,.58,1);if(e.startsWith(Me)&&e.endsWith(xe)){const t=e.substring(Me.length,e.length-xe.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Le(t[0]),y1:Le(t[1]),x2:Le(t[2]),y2:Le(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function ke(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Le(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Ue=300,De=2e3,$e=.05,Oe=2*Math.PI/32,Ne=Ie("hold"),_e=Ie("sine"),je=Ie("sine-in"),We=Ie("sine-out");const Fe=2e3,qe=8,Ge=2*Math.PI,ze=Ge/12,He=Ge/60,Be=Ge/60,Qe=60,Ve=60,Ke=1e3,Xe=Qe*Ve,Ze=-1;function Ye(e){return ue([{time:0,value:0,interpolation:{type:"bezier",x1:.9,y1:0,x2:.6,y2:1}},{time:Fe,value:e,interpolation:{type:"hold"}}])}function Je(e,t,n){return Ze*ze*(e+t/Qe+n/Xe)}function et(e,t){return Ze*He*(e+t/Ve)}function tt(e,t){return Ze*Be*(e+t/Ke)}const nt=["map","alphaMap","anisotropyMap","aoMap","bumpMap","clearcoatMap","clearcoatNormalMap","clearcoatRoughnessMap","displacementMap","emissiveMap","envMap","gradientMap","iridescenceMap","iridescenceThicknessMap","lightMap","metalnessMap","normalMap","roughnessMap","sheenColorMap","sheenRoughnessMap","specularMap","specularColorMap","specularIntensityMap","thicknessMap","transmissionMap"];function rt(e){null!=e&&(e.dispose(),nt.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let ot;const it=0,at=3;let st,lt,ct,ut=!1,dt=1,ht=1,pt=1;const ft=1;let gt;const mt=new Map;function vt(){null==ot&&(ot=M(`${R}/shopar-three.js`))}function wt(t,n,r){const o=t.getContext("2d");null==o&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,g,m,v,w,y,b=!1,E=!1,A=!1,S=!0,R=!1,M=1,x=!0,T=!1,C=0,k=0,F=1,V=1,K=1;const X={threeInit:()=>{b||(yt(),i=new lt.Scene,a=new lt.PerspectiveCamera(25,1,.5),s=new st.OrbitControls(a,t),s.setInteractionEnabled(x),h=lt.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new G.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new G.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new G.Group;r.position.y=-.7;const o=new G.PlaneGeometry(N,_).rotateX(Math.PI/2),i=new G.MeshBasicMaterial({map:t.texture,opacity:q,transparent:!0,depthWrite:!1}),a=new G.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new G.Mesh(o);s.visible=!1,r.add(s);const l=new G.OrthographicCamera(-N/2,N/2,_/2,-_/2,0,j);function c(e){s.visible=!0,B.uniforms.tDiffuse.value=t.texture,B.uniforms.h.value=1*e/256,s.material=B,z.setRenderTarget(n),z.render(s,l),Q.uniforms.tDiffuse.value=n.texture,Q.uniforms.v.value=1*e/256,s.material=Q,z.setRenderTarget(t),z.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,r.add(l),{shadowGroup:r,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=H;const r=z.getClearAlpha();z.setClearAlpha(0),z.setRenderTarget(t),z.render(e,l),e.overrideMaterial=null,c(W),c(.4*W),z.setRenderTarget(null),z.setClearAlpha(r),e.background=n}}}(i)),b=!0)},threeParse:(t,n,r,o)=>e(this,void 0,void 0,(function*(){return null!=u&&d===r||(yield u,u=(()=>e(this,void 0,void 0,(function*(){var e,r,a;return r=st,$||(L=r.THREE,U=new r.RGBELoader,D=new r.EXRLoader,$=!0),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=O(n,o),function(e,t){if(I)return;const{THREE:n}=t;P=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder),I=!0}(gt,st),a=t,P.parseAsync(a.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{At(i),i.add(e.scene);const n=(new lt.Box3).setFromObject(e.scene);l.position.y=n.min.y-it,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof lt.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const r=n.min.clone().add(n.max).divideScalar(2),o=Math.sqrt(st.reduceVertices(e.scene,((e,t)=>Math.max(e,r.distanceToSquared(t))),0));s.reset(r,o,function(e,t){var n;const r={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?r.Glasses:null!==(n=r[e])&&void 0!==n?n:r.Glasses).normalize()}(t,lt.Vector3)),C=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),r=e.getObjectByName("seconds");if(null==t&&null==n&&null==r)return null;let o,i,a,s,l,c;return{start:()=>{o=new Date,o.setMilliseconds(o.getMilliseconds()+Fe),l=!1;const e=o.getHours(),t=o.getMinutes(),n=o.getSeconds(),r=o.getMilliseconds();i=Ye(Je(e,t,n)),a=Ye(et(t,n)),s=Ye(tt(n,r)),c=new Date},update:()=>{if(null==o)return!1;const e=new Date;if(!l){if(o.getTime()-e.getTime()>0){const o=Math.abs(e.getTime()-c.getTime());return null!=t&&(i.update(o),t.rotation.y=i.get()),null!=n&&(a.update(o),n.rotation.y=a.get()),null!=r&&(s.update(o),r.rotation.y=s.get()),c=e,!0}l=!0}if(Math.abs(e.getTime()-c.getTime())<Ke/qe)return!1;c=e;const u=e.getHours(),d=e.getMinutes(),h=e.getSeconds(),p=e.getMilliseconds();return null!=t&&(t.rotation.y=Je(u,d,h)),null!=n&&(n.rotation.y=et(d,h)),null!=r&&(r.rotation.y=tt(h,p)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,gt.setAnimationLoop(bt),t.style.visibility="visible",k=0,null==f||f.reset(),null==g||g.reset(),null==m||m.reset(),null==v||v.reset(),null==w||w.reset(),null==y||y.start()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of mt.values())if(!e())return!1;return!0}()&>.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var e;At(i),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=null,i=null,u=null,y=null,mt.delete(t)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:lt.ACESFilmicToneMapping,Linear:lt.LinearToneMapping,Neutral:lt.NeutralToneMapping};null!=n[e]&&(h=n[e]),M=t},threeIsInteractive:()=>x,threeSetInteractive:e=>{x=e,null==s||s.setInteractionEnabled(x)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=ue([{time:0,value:e,interpolation:Ne},{time:Ue,value:e,interpolation:We},{time:Ue+De/4,value:e+Oe,interpolation:_e},{time:Ue+3*De/4,value:e-Oe,interpolation:je},{time:Ue+De,value:e,interpolation:Ne},{time:Ue+2*De,value:e,interpolation:Ne}]),s.setTheta(f.get()),g=null,m=null,v=ue([{time:0,value:0,interpolation:Ne},{time:Ue,value:1,interpolation:Ne},{time:Ue+De,value:0,interpolation:Ne},{time:Ue+2*De,value:0,interpolation:Ne}]),w=ue([{time:0,value:0,interpolation:Ne},{time:Ue,value:0,interpolation:We},{time:Ue+De/4,value:-$e,interpolation:_e},{time:Ue+3*De/4,value:$e,interpolation:je},{time:Ue+De,value:0,interpolation:Ne},{time:Ue+2*De,value:0,interpolation:Ne}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{g=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{m=e,null!=e&&s.setFovRadians(e.get())},threeRenderOnce:()=>{X.render_()},preRender_:e=>{if(!b||S||!function(e){const t=e.getBoundingClientRect();return t.bottom>0&&t.top<Math.max(document.documentElement.clientHeight,window.innerHeight)&&t.right>0&&t.left<Math.max(document.documentElement.clientWidth,window.innerWidth)}(t))return;let n=0!==k?e-k:0;k=e,0===C?R=!0:C<at&&(n=0),C++,T||(s.hasUserInteracted()?(T=!0,f=null,g=null,m=null,v=null,w=null):(null==f||f.update(n),null==g||g.update(n),null==m||m.update(n),null==v||v.update(n),null==w||w.update(n),null!=f&&(s.setTheta(f.get()),R=!0),null!=g&&(s.setPhi(g.get()),R=!0),null!=m&&(s.setFovRadians(m.get()),R=!0))),s.update()&&(R=!0),(null==y?void 0:y.update())&&(R=!0)},shouldRender_:()=>!(!b||S)&&R,render_:()=>{const e=gt.toneMapping,s=gt.toneMappingExposure;gt.toneMapping=h,gt.toneMappingExposure=M,gt.setViewport(0,0,t.width,t.height),gt.setClearColor(new lt.Color(16777215),E&&!A?1:0),gt.render(i,a),gt.toneMapping=e,gt.toneMappingExposure=s,R=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),ct.width>0&&ct.height>0&&o.drawImage(ct,0,ht-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=x&&!T?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(F,V)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===F&&n===V&&pt===K||(t.width=Math.ceil(e*pt*ft),t.height=Math.ceil(n*pt*ft),F=e,V=n,K=pt,R=!0)},target_:t};return mt.set(t,X),X}function yt(){if(ut)return;st=window.ShopAR__THREE,lt=st.THREE,ct=document.createElement("canvas");var e,t;ct.style.position="block",gt=new lt.WebGLRenderer({powerPreference:"high-performance",canvas:ct,antialias:!0,alpha:!0}),gt.outputColorSpace=lt.SRGBColorSpace,gt.toneMapping=lt.ACESFilmicToneMapping,gt.setClearColor(new lt.Color(16777215),0),e=gt,t=st,V||(G=t.THREE,z=e,H=new G.MeshDepthMaterial,H.userData.darkness={value:F},H.onBeforeCompile=e=>{e.uniforms.darkness=H.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},H.depthTest=!1,H.depthWrite=!1,B=new G.ShaderMaterial(t.HorizontalBlurShader),B.depthTest=!1,Q=new G.ShaderMaterial(t.VerticalBlurShader),Q.depthTest=!1,V=!0),Et(),ut=!0}function bt(e){Et(),gt.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of mt.values())t(e),n()&&r()}function Et(){let e=0,t=0;for(const{target_:n}of mt.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=C();e=Math.ceil(e*n*ft),t=Math.ceil(t*n*ft),e===dt&&t===ht&&n===pt||(dt=e,ht=t,pt=n,gt.setSize(dt,ht,!1));for(const{updateSize_:e}of mt.values())e()}function At(e){e.traverse((e=>{var t;e instanceof lt.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(rt):rt(e.material))})),e.clear()}const St={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},Rt=Object.keys(St);function Mt(e){return St[e]}const xt="shopar-error";function Tt(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn",o.appendChild(r);{const e=document.createElement("span");e.textContent=t,o.appendChild(e)}o.ariaLabel=n;const i=o.style;return i.display="none",i.pointerEvents="auto",o}const Ct="shopar-control";const Pt="shopar-deepar-output";function It(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function kt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function Lt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function Ut(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const Dt="shopar-main";const $t="shopar-qr-output";function Ot(e){var t,n;const r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("width",null!==(t=e.getAttribute("width"))&&void 0!==t?t:"1rem"),r.setAttribute("height",null!==(n=e.getAttribute("height"))&&void 0!==n?n:"1rem"),r.appendChild(e),r}function Nt(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","image");return n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",null!=t?t:"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E"),n.setAttribute("width",e),n.setAttribute("height",e),n}const _t="shopar-three-output";var jt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(jt||(jt={}));let Wt=!1;function Ft(){Wt||(!function(){try{const e=document.createElement("style"),t=process.env.css;null!=t&&(e.innerHTML=t);const n=document.head;n.insertBefore(e,n.children[0])}catch(e){console.warn("Failed to write default ShopAR Plugin CSS.")}}(),Wt=!0)}function qt(){Ft();const e=function(){const e=document.createElement("div");e.id=Dt;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),r=function(e,t){const n=document.createElement("div");n.id=$t;const r=n.style;r.position="absolute",r.top="0",r.left="0",r.width="100%",r.height="100%",r.display="none",r.pointerEvents="auto",r.userSelect="none";const o=document.createElement("div");o.className="shopar-qr";const i=o.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(o),o.appendChild(e);const a=document.createElement("div");return a.appendChild(t),o.appendChild(a),n}(t,n);e.appendChild(r);const o=function(){const e=document.createElement("div");e.id=Pt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(o);const i=function(){const e=document.createElement("canvas");e.id=_t,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:r}=n;return r.position="absolute",r.width="100%",r.height="100%",r.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=Ot(Nt("2rem",`${R}/img/prompt/3d-interaction.svg`)),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=It("shopar-ar-loading-container"),h=kt("shopar-ar-loading-text",Mt("loading.ar"));d.appendChild(h);const p=Lt("shopar-ar-loading-bar-bg"),f=Ut("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const g=It("shopar-3d-loading-container"),m=kt("shopar-3d-loading-text",Mt("loading.3d"));g.appendChild(m);const v=Lt("shopar-3d-loading-bar-bg"),w=Ut("shopar-3d-loading-bar-fg");v.appendChild(w),g.appendChild(v),e.appendChild(g);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",t.backgroundSize="contain",t.backgroundRepeat="no-repeat",t.backgroundPosition="center",e}();e.appendChild(y);const b=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),E=function(e){const t=document.createElement("div");t.id=xt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const r=document.createElement("div"),o=r.style;return o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",t.appendChild(r),r.appendChild(e),t}(b);e.appendChild(E);const A=function(){const e=document.createElement("div");return e.id=Ct,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(A);const S=Nt("1.75rem"),M=Tt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",Ot(S));A.appendChild(M);const x=Nt("1.75rem"),T=Tt("shopar-btn-3d","3D","Launch ShopAR 3D preview",Ot(x));A.appendChild(T);const C=Nt("1.75rem"),P=Tt("shopar-btn-close","Close","Close ShopAR view",Ot(C));A.append(P);let I,k,L=jt.None,U=!1,D=!1,$=!1,O=!1;function N(){f.classList.remove("active"),d.style.visibility="hidden"}function _(){y.style.visibility="hidden",w.classList.remove("active"),g.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return r},getQRImage:function(){return n},getDeepARTarget:function(){return o},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){b.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,r,o,i){var a;U=e,D=t,$=n,O=r,I=o,k=i,Gt(A,U),Gt(M,U&&($||D)&&L===jt.None),Gt(T,U&&O&&L===jt.None),Gt(P,U&&L!==jt.None),N(),_(),U||""===(a=E).style.display&&Gt(a,!1)},getUIState:function(){return L},setUIState:function(e){L=e,L===jt.None?(N(),_(),U&&(Gt(E,!1),Gt(P,!1),(D||$)&&Gt(M,!0),O&&Gt(T,!0))):L===jt.QR||L===jt.AR?U&&(Gt(E,!1),Gt(M,!1),Gt(T,O&&"AR"===k),Gt(P,"AR"!==k)):L===jt.Preview&&U&&(Gt(E,!1),Gt(M,(D||$)&&"3D"===k),Gt(T,!1),Gt(P,"3D"!==k))},setDefaultUIActions:function(e,t,n){U&&((D||$)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,r=`${R}/img/icons/${n}`;S.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(I),M.onclick=e),O&&(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/cube.svg`),T.onclick=t),C.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/close.svg`),P.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:N,startThreeLoading:function(){null!=y.dataset.bgSet?y.style.visibility="visible":(w.classList.add("active"),g.style.visibility="visible")},stopThreeLoading:_,setThreePosterUrl:function(e){null!=e?(y.style.backgroundImage=`url(${e})`,y.dataset.bgSet="true"):delete y.dataset.bgSet},showCameraError:function(){U&&Gt(E,!0)}}}function Gt(e,t){e.style.display=t?"":"none"}const zt=new Map;function Ht(e){let t=zt.get(e);return null==t?(t=function(){let e=0,t=null,n=null,r=null;const o=()=>(null==t&&(t=qt()),t);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>t,findUI:o,findQR:()=>{if(null==n){const{getQRTarget:e,getQRImage:t}=o();n=T(e(),t())}return n},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=o();r=wt(e(),t(),n())}return r}}}(),zt.set(e,t)):t.incrementSetupId_(),t}function Bt(e){for(const t of zt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===jt.AR&&o(jt.None)}}let Qt;const Vt=new Uint8Array(16);function Kt(){if(!Qt&&(Qt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Qt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Qt(Vt)}const Xt=[];for(let e=0;e<256;++e)Xt.push((e+256).toString(16).slice(1));var Zt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Yt(e,t,n){if(Zt.randomUUID&&!t&&!e)return Zt.randomUUID();const r=(e=e||{}).random||(e.rng||Kt)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return Xt[e[t+0]]+Xt[e[t+1]]+Xt[e[t+2]]+Xt[e[t+3]]+"-"+Xt[e[t+4]]+Xt[e[t+5]]+"-"+Xt[e[t+6]]+Xt[e[t+7]]+"-"+Xt[e[t+8]]+Xt[e[t+9]]+"-"+Xt[e[t+10]]+Xt[e[t+11]]+Xt[e[t+12]]+Xt[e[t+13]]+Xt[e[t+14]]+Xt[e[t+15]]}(r)}const Jt="qrLaunch",en="arLaunch",tn="previewLaunch",nn="heartbeat";let rn,on,an=!1,sn=window.navigator.userAgent||"no user agent";const ln=[];function cn(){null==rn&&(on=Yt(),rn=M(`${R}/shopar-analytics.js`),rn.then((()=>{an=!0,window.ShopAR__analytics.initializeImpl(),ln.forEach((e=>e()))})))}function un(e){an?e():ln.push(e)}function dn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function hn(t){return e(this,void 0,void 0,(function*(){const e=document.createElement("video");return e.setAttribute("playsinline","playsinline"),e.srcObject=yield t,e}))}const pn=200,fn=10;let gn=!1,mn=null,vn=[],wn=[];function yn(t){return e(this,void 0,void 0,(function*(){gn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${R}/wasm/mediapipe`,t),mn&&clearInterval(mn);const r=[],o=[];mn=setInterval((()=>e(this,void 0,void 0,(function*(){if(gn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());gn||(null!=a&&null!=s&&function(e){for(let t of vn)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<fn||(r.shift(),o.shift(),function(e,t){for(let n of wn)n({faceWidth:e,IPD:t})}(En(r),En(o)))))}))),pn)}))}function bn(){wn=[],vn=[],gn=!0}function En(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var An="undefined"!=typeof Float32Array?Float32Array:Array;function Sn(){var e=new An(16);return An!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Rn(e,t,n){var r=t[0],o=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],g=t[12],m=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*r+b*s+E*d+A*g,e[1]=y*o+b*l+E*h+A*m,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*r+b*s+E*d+A*g,e[5]=y*o+b*l+E*h+A*m,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*r+b*s+E*d+A*g,e[9]=y*o+b*l+E*h+A*m,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*r+b*s+E*d+A*g,e[13]=y*o+b*l+E*h+A*m,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Mn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function xn(e,t){var n=t[0],r=t[1],o=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,r,o),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function Tn(e,t,n,r){var o=t[0],i=t[1],a=t[2],s=t[3],l=o+o,c=i+i,u=a+a,d=o*l,h=o*c,p=o*u,f=i*c,g=i*u,m=a*u,v=s*l,w=s*c,y=s*u,b=r[0],E=r[1],A=r[2];return e[0]=(1-(f+m))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+m))*E,e[6]=(g+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(g-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Cn(){var e=new An(3);return An!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Pn(e,t,n){var r=new An(3);return r[0]=e,r[1]=t,r[2]=n,r}function In(e,t){var n=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return Math.hypot(n,r,o)}function kn(e,t,n){var r=t[0],o=t[1],i=t[2],a=n[3]*r+n[7]*o+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*r+n[4]*o+n[8]*i+n[12])/a,e[1]=(n[1]*r+n[5]*o+n[9]*i+n[13])/a,e[2]=(n[2]*r+n[6]*o+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function Ln(){var e=new An(4);return An!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}Cn(),function(){var e,t=(e=new An(4),An!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Un;let Dn,$n;Cn(),Pn(1,0,0),Pn(0,1,0),Ln(),Ln(),Un=new An(9),An!=Float32Array&&(Un[1]=0,Un[2]=0,Un[3]=0,Un[5]=0,Un[6]=0,Un[7]=0),Un[0]=1,Un[4]=1,Un[8]=1;let On,Nn,_n,jn,Wn=!0,Fn=null;const qn=new Set;let Gn,zn,Hn,Bn,Qn,Vn;function Kn(){null==Dn&&(Dn=M(`${R}/shopar-deepar.js`))}function Xn(){null==$n&&($n=M(`${R}/shopar-true-scale.js`))}function Zn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return Qn=o,null==Gn&&(Gn=(()=>e(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new t("No camera available!");var e;const n=ar(_n),o=dn(n);On=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:jn,additionalOptions:{hint:Vn,cameraConfig:{disableDefaultCamera:!0}}}),Nn=yield hn(o),yield sr(On,Nn,"user"===n),"Glasses"===_n&&(yield $n,yn(Nn),"DetectionLoop"!==Qn&&dr((e=>{Bn=e.faceWidth})))})))()),Gn}))}function Yn(e,t){var n,r;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===_n&&(n=t,r=Vn,n===r||null!=n&&null!=r&&n.length===r.length&&n.every((e=>r.find((t=>e===t))))&&r.every((e=>n.find((t=>t===e))))))||(null!=On&&(On.shutdown(),On=null,Gn=null),_n=e,Vn=t)}function Jn(e){e!==jn&&(jn=e,null!=On&&On.changePreviewElement(jn))}function er(e){Fn=e}function tr(e){On.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(Bn){const e=137/(Bn+5);On.changeParameterVector("GLASSES","","scale",e,e,e,0),On.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const r=cr("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=cr("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);On.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),On.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),bn(),Bn=null}e(),lr("Glasses")}},On.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),lr("Shoes"))},On.callbacks.onWristTracked=t=>{t.detected&&(e(),lr("Watches"))}}function nr(t,n,r){return e(this,void 0,void 0,(function*(){return null!=zn&&Hn===r||(yield zn,zn=On.switchEffect(t,{envmap:n}),Hn=r),zn}))}function rr(e,t){null!=e&&null!=t&&(On.setToneMapping(e),On.setExposure(t))}function or(){return e(this,void 0,void 0,(function*(){if(null!=On){if(Wn=!1,null==Nn){const e=ar(_n),t=dn(e);Nn=yield hn(t),yield sr(On,Nn,"user"===e),"Glasses"===_n&&(yn(Nn),"DetectionLoop"!==Qn&&dr((e=>{Bn=e.faceWidth})))}!function(){if(null==Fn)return;if(null==_n||qn.has(_n))return;Fn.style.visibility="visible",Fn.style.opacity="1"}(),On.setPaused(Wn),jn.style.display=""}}))}function ir(){null!=On&&(Wn=!0,On.setPaused(Wn),bn(),null!=Nn&&null!=Nn.srcObject&&Nn.srcObject instanceof MediaStream&&(Nn.srcObject.getTracks().forEach((e=>e.stop())),Nn=null),function(){if(null==Fn)return;Fn.style.visibility="hidden",Fn.style.opacity="0"}(),On.stopCamera(),jn.style.display="none")}function ar(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function sr(t,n,r){return e(this,void 0,void 0,(function*(){yield new Promise((o=>{n.onloadedmetadata=()=>{n.play().then((()=>e(this,void 0,void 0,(function*(){t.setVideoElement(n,r),o()}))))}}))}))}function lr(e){null!=Fn&&(qn.has(e)||(qn.add(e),Fn.style.opacity="0"))}function cr(e,t,n,r,o,i,a){const s=On.getTransformationBetween(e,t),l=Mn(Cn(),s),c=function(e,t){var n=new An(3);xn(n,t);var r=1/n[0],o=1/n[1],i=1/n[2],a=t[0]*r,s=t[1]*o,l=t[2]*i,c=t[4]*r,u=t[5]*o,d=t[6]*i,h=t[8]*r,p=t[9]*o,f=t[10]*i,g=a+u+f,m=0;return g>0?(m=2*Math.sqrt(g+1),e[3]=.25*m,e[0]=(d-p)/m,e[1]=(h-l)/m,e[2]=(s-c)/m):a>u&&a>f?(m=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/m,e[0]=.25*m,e[1]=(s+c)/m,e[2]=(h+l)/m):u>f?(m=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/m,e[0]=(s+c)/m,e[1]=.25*m,e[2]=(d+p)/m):(m=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/m,e[0]=(h+l)/m,e[1]=(d+p)/m,e[2]=.25*m),e}(Ln(),s);Tn(s,c,l,Pn(a,a,a));const u=On.getTransformationBetween(t,n),d=Mn(Cn(),u);Tn(u,Ln(),d,xn(Cn(),u));const h=Rn(Sn(),s,u),p=Mn(Cn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let g;try{g=On.getTransformationBetween(n,r)}catch(e){return f}const m=Rn(Sn(),u,g),v=Rn(Sn(),s,m),w=Pn(p[0],i[1],i[2]),y=kn(Cn(),w,function(e,t){var n=t[0],r=t[1],o=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],g=t[13],m=t[14],v=t[15],w=n*s-r*a,y=n*l-o*a,b=n*c-i*a,E=r*l-o*s,A=r*c-i*s,S=o*c-i*l,R=u*g-d*f,M=u*m-h*f,x=u*v-p*f,T=d*m-h*g,C=d*v-p*g,P=h*v-p*m,I=w*P-y*C+b*T+E*x-A*M+S*R;return I?(I=1/I,e[0]=(s*P-l*C+c*T)*I,e[1]=(o*C-r*P-i*T)*I,e[2]=(g*S-m*A+v*E)*I,e[3]=(h*A-d*S-p*E)*I,e[4]=(l*x-a*P-c*M)*I,e[5]=(n*P-o*x+i*M)*I,e[6]=(m*b-f*S-v*y)*I,e[7]=(u*S-h*b+p*y)*I,e[8]=(a*C-s*x+c*R)*I,e[9]=(r*x-n*C-i*R)*I,e[10]=(f*A-g*b+v*w)*I,e[11]=(d*b-u*A-p*w)*I,e[12]=(s*M-a*T-l*R)*I,e[13]=(n*T-r*M+o*R)*I,e[14]=(g*y-f*E-m*w)*I,e[15]=(u*E-d*y+h*w)*I,e):null}(Sn(),v));let b=On.getClosestPointOnMesh(r,y);try{const e=On.getClosestPointOnMesh(o,y);In(y,e)<In(y,b)&&(b=e)}catch(e){}const E=kn(Cn(),b,m);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function ur(e){!function(e){vn.push(e)}(e)}function dr(e){!function(e){wn.push(e)}(e)}var hr;function pr(){return[hr.Android,hr.iOS,hr.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],r=["Win32","Win64","Windows","WinCE"],o=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==o.indexOf(t)?hr.iOS:-1!==n.indexOf(t)?i?hr.Tablet:hr.MacOS:-1!==r.indexOf(t)?hr.Windows:/Android/.test(e)?hr.Android:/Linux/.test(t)?hr.Linux:i?hr.Tablet:hr.Unknown}return hr.Unknown}())}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(hr||(hr={}));const fr=["AR","3D"];function gr(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function mr(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function vr(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function wr(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;gr(n,"apiKey"),vr(n,"apiKey"),gr(r,"sku"),vr(r,"sku"),gr(o,"targetElement"),function(e,n){if(!(e instanceof HTMLElement))throw new t(`'${n}' must be an HTMLElement.`)}(o,"targetElement"),null!=i&&function(e,n,r){if("string"!=typeof e)throw new t(`'${n}' must be a string.`);if(!r.includes(e))throw new t(`'${n}' must be ${r.join("' or '")}.`)}(i,"initialState",fr),null!=a&&function(e,n){if("string"!=typeof e&&!Array.isArray(e))throw new t(`'${n}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&vr(s,"baseUrl"),null!=l&&mr(l,"defaultUI"),null!=c&&mr(c,"interactive"),null!=u&&function(e,n,r){for(const o of r){const r=e[o];if(null!=r&&"string"!=typeof r)throw new t(`Value for key '${o}' in '${n}' must be a string.`)}}(u,"strings",Rt)}let yr=!1;function br(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;R.update(n.baseUrl),cn();const{trackEvent:o}=function(e){const t=performance.now(),n=Yt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:A,userAgent:sn,sessionId:on,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),un((()=>{window.ShopAR__analytics.trackEventImpl(r,o)}))}}}(n.apiKey);o("visionSetup");const i=yield function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:n,sid:u()})}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield r.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(n.apiKey);o("visionApiResponse",i);const{arKey:a}=i,s=Ht(r),{getSetupId:l,findUI:c}=s,d=l();Kn(),Xn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:g,getUIState:m,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(m()!=jt.None)throw Error("UI state is not None, this is weird..");v(jt.AR),h(r),g(!1,!1,!0,!1,void 0,void 0),w(),yield Dn,Er(l(),d);try{o("visionArLaunch"),ir(),Yn("Glasses",["faceInit"]),Jn(f()),yield Zn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),Er(l(),d),yield or(),Er(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),b(),ir(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{y()}return yr=!0,{registerFacePoseListener:e=>{yr&&(o("registerFacePoseListener"),ur(e))},registerFaceMeasurementListener:e=>{yr&&(o("registerFaceMeasurementListener"),dr(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){yr&&(o("switchEffect",{arUrl:t}),function(e){On.switchEffect(e)}(t))})),clearEffect:()=>{yr&&(o("clearEffect"),On.clearEffect())},close:()=>{if(yr){if(yr=!1,o("visionClose"),m()!==jt.AR)throw new t("AR not launched.");ir(),v(jt.None)}}}}))}function Er(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function Ar(n){var r,o;return e(this,void 0,void 0,(function*(){wr(n);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=n,d=null==n.zoomEnabled||n.zoomEnabled,h=!0===n.alwaysTransparentBackground;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),R.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(St,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(St[t]=n)}}(n.strings);const w=null!=c?Te(c):null,y=null!=(null==w?void 0:w.theta)?ue(w.theta):null,S=null!=(null==w?void 0:w.phi)?ue(w.phi):null,M=null!=(null==w?void 0:w.fov)?ue(w.fov):null,x=function(n,r,o,i,a,s){return e(this,void 0,void 0,(function*(){const l=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:n,sku:r,sid:u()},null!=o&&{yaw:`${g(f(o))}`}),null!=i&&{pitch:`${g(f(i))}`}),null!=a&&{fov:`${g(f(a))}`}),s&&{forcedTransparency:`${s}`}))}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield l.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==S?void 0:S.get(),null==M?void 0:M.get(),h),T=Ht(s),{getSetupId:C,findUI:P,findQR:I,findThree:L}=T,U=C();cn();const{trackEvent:D,arInteracted:$,previewInteracted:O}=function(e,t){const n=performance.now(),r=Yt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(nn,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:sn,pluginVersion:A,sessionId:on,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),un((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);D("setup",{hostname:window.location.hostname});const N=yield x;D("apiResponse",N);const{category:_,arUrl:j,arEnvUrl:W,arToneMapping:F,arToneMappingExposure:q,arKey:G,arPromptEnabled:z,arPromptText:H,arPromptImage:B,previewUrl:Q,previewEnvUrl:V,previewToneMapping:K,previewToneMappingExposure:X,previewPosterUrl:Z,cameraErrorText:Y,qrPromptText:J}=N;Sr(C(),U);const ee=null!=j&&function(e){return null!=e&&m.includes(e)}(_),te=null==(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled),ne=ee&&function(e){return null!=e&&v.includes(e)}(_),re=te&&ne&&!pr(),oe=ee&&!re,ie=null!=Q;Sr(C(),U);const{setTargetElement:ae,getDeepARTarget:se,getDeepARPrompt:le,customizeDeepARPrompt:ce,customizeCameraError:de,customizeQRPrompt:he,setVisibilityParameters:pe,getUIState:fe,setUIState:ge,setDefaultUIActions:me,startDeepARLoading:ve,stopDeepARLoading:we,startThreeLoading:ye,stopThreeLoading:be,setThreePosterUrl:Ee,showCameraError:Ae}=P();ae(s);pe(null==n.defaultUI||n.defaultUI,re,oe,ie,_,l),ce(null!=H?H:"",null!=B?B:""),de(Y),he(J),Ee(Z),function(e,n){const r=e.parentNode;if(null==r)throw new t("Parent node missing.");new MutationObserver((t=>{for(const r of t)for(const t of r.removedNodes)if(t===e)return void n()})).observe(r,{childList:!0})}(s,(()=>{fe()!==jt.QR||Se()||Me(),fe()!==jt.AR||Wn||ir(),fe()!==jt.Preview||Ie()||Le(),ge(jt.None),Ue(),function(e){zt.delete(e)}(s)}));const{qrPaused:Se,qrDraw:Re,qrPause:Me}=I(),{threeInit:xe,threeParse:Ce,threeLoad:Pe,threePaused:Ie,threeResume:ke,threePause:Le,threeDestroy:Ue,threeSetZoomEnabled:De,threeSetForcedTransparency:$e,threeSetToneMapping:Oe,threeIsInteractive:Ne,threeSetInteractive:_e,threeSetOnInteracted:je,threeInitPromptAnimation:We,threeInitThetaAnimation:Fe,threeInitPhiAnimation:qe,threeInitFovAnimation:Ge,threeRenderOnce:ze}=L(),He=null==n.interactive||n.interactive;_e(He);let Be=0;if(fe()===jt.QR){if(!Se())if(re){D(Jt);try{yield Re(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Me(),ge(jt.None)}else if(fe()===jt.AR){if(!Wn)if(oe&&!yr){D(en),Kn(),"Glasses"===_&&Xn();const e=null!=W?yield b(W):void 0;Sr(C(),U);const t=yield b(j);Sr(C(),U),Bt(T),Yn(_),Jn(se()),er(z?le():null),yield nr(t,e,`${j}${W}`),rr(F,q),tr($),Sr(C(),U)}else ir(),ge(jt.None)}else if(fe()===jt.Preview&&!Ie())if(ie){D(tn),vt(),ye();const e=255,t=yield E(Q,(new Date).getTime()+e,Math.random()*e);Sr(C(),U);const n=null!=V?V:`${R}/env/default.hdr`,r=yield b(n);Sr(C(),U),yield ot,Sr(C(),U),xe(),Sr(C(),U);const o=n.endsWith(".hdr")?k.HDR:k.EXR,i=yield Ce(t,r,`${Q}${V}`,o);Sr(C(),U),Pe(i,_),De(d),$e(h),Oe(null!=K?K:"ACES",null!=X?X:1),je(O),We(),null!=w&&(Fe(y),qe(S),Ge(M)),ze(),ke(),be()}else Le(),ge(jt.None);const Qe=()=>e(this,void 0,void 0,(function*(){if(re)try{D(Jt);const e=++Be;if(fe()===jt.Preview&&ie&&!Ie()&&Le(),ge(jt.QR),yield Re(i,a),Be!==e)return;return void Sr(C(),U)}catch(e){const n=e instanceof Error;throw D("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}if(!oe)throw new t("Model does not have AR enabled.");try{D(en);const e=++Be;fe()===jt.Preview&&ie&&!Ie()&&Le(),Bt(T),ge(jt.AR),Kn(),"Glasses"===_&&Xn(),ve();const t=null!=W?yield b(W):void 0;Sr(C(),U);const n=yield b(j);if(Be!==e)return;if(Sr(C(),U),yield Dn,Be!==e)return;if(Sr(C(),U),ir(),Yn(_),Jn(se()),er(z?le():null),yield Zn({licenseKey:G}),Be!==e)return;if(Sr(C(),U),yield nr(n,t,`${j}${W}`),rr(F,q),tr($),Be!==e)return;if(Sr(C(),U),yield or(),Be!==e)return;Sr(C(),U)}catch(e){const n=e instanceof Error;throw D("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Ae(),ir(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{we()}})),Ve=()=>e(this,void 0,void 0,(function*(){if(!ie)throw new t("Model does not have 3D enabled.");try{D(tn);const e=++Be;fe()===jt.AR&&(oe&&!Wn&&ir(),Me()),ge(jt.Preview),vt(),ye();const t=255,n=yield E(Q,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;Sr(C(),U);const r=null!=V?V:`${R}/env/default.hdr`,o=yield b(r);if(Be!==e)return;if(Sr(C(),U),yield ot,Be!==e)return;if(Sr(C(),U),xe(),Be!==e)return;Sr(C(),U);const i=r.endsWith(".hdr")?k.HDR:k.EXR,a=yield Ce(n,o,`${Q}${V}`,i);if(Be!==e)return;Sr(C(),U),Pe(a,_),De(d),$e(h),Oe(null!=K?K:"ACES",null!=X?X:1),je(O),We(),null!=w&&(Fe(y),qe(S),Ge(M)),ze(),ke(),be()}catch(e){const n=e instanceof Error;throw D("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}})),Ke=()=>e(this,void 0,void 0,(function*(){fe()!==jt.None&&("AR"!==l||fe()!==jt.AR&&fe()!==jt.QR)&&("3D"===l&&fe()===jt.Preview||(++Be,fe()===jt.QR||fe()===jt.AR?(oe&&!Wn&&ir(),Me()):fe()===jt.Preview&&ie&&!Ie()&&Le(),ge(jt.None),"AR"!==l?"3D"!==l||(yield Ve()):yield Qe()))}));return me(Qe,Ve,Ke),"AR"===l?(yield Qe(),Sr(C(),U)):"3D"===l&&(yield Ve(),Sr(C(),U)),yr=!1,{launchAR:ee?Qe:void 0,launch3D:ie?Ve:void 0,closeAR:ee?()=>e(this,void 0,void 0,(function*(){fe()!==jt.AR&&fe()!==jt.QR||"AR"!==l&&(++Be,oe&&!Wn&&ir(),Me(),ge(jt.None),"3D"!==l||(yield Ve()))})):void 0,close3D:ie?()=>e(this,void 0,void 0,(function*(){fe()===jt.Preview&&"3D"!==l&&(++Be,ie&&!Ie()&&Le(),ge(jt.None),"AR"!==l||(yield Qe()))})):void 0,close:ee||ie?Ke:void 0,isInteractive:()=>Ne(),setInteractive:e=>_e(e)}}))}function Sr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const Rr={setup:function(t){return e(this,void 0,void 0,(function*(){return br(t)}))}},Mr={setup:function(n){return e(this,void 0,void 0,(function*(){return function(n,r){return e(this,void 0,void 0,(function*(){try{return r()}catch(e){throw e instanceof Error?new t(`${n} failed: ${e.message}`):(console.error(e),new t(`${n} failed.`))}}))}("setup",(()=>Ar(n)))}))},version:A};export{fr as PREVIEW_STATES,t as PluginError,Mr as plugin,Rr as vision};
|
package/dist/shopar-plugin.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ShopAR={})}(this,(function(e){"use strict";function t(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{l(o.next(e))}catch(e){i(e)}}function s(e){try{l(o.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((o=o.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class n extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const o=[Uint8Array,Uint32Array],r=o.length-2,i=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],a=[2,12,7,1],s=window[i[a[a[r]]]][i[a[a[a.length-1]]]],l=s.charCodeAt(r),c=l^l,u=new o[1]([c]);function d(){const e=(new TextEncoder).encode(s),t=i.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[i[t[2]]](String.fromCodePoint(...e))}const h=[1e3,2e3,4e3],p=h.length;function f(e,n=0){return t(this,void 0,void 0,(function*(){try{return yield e()}catch(t){if(n>=p)throw t;return yield new Promise((e=>setTimeout(e,h[n]))),f(e,n+1)}}))}function g(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const v=["Glasses","Shoes","Watches"],w=["Shoes"];const y={},b={};function E(e){return null==y[e]&&(y[e]=function(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(e).catch((e=>{throw console.error(e),new n("Resource unavailable.")}));if(!t.ok)throw new n(`Resource download failed with status ${t.status}.`);return t}))));try{return yield(yield o.blob()).arrayBuffer()}catch(e){throw console.error(e),new n("Resource has invalid body.")}}))}(e)),y[e]}function A(e,r,i){return null==b[e]&&(b[e]=function(e,r,i){return t(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const l=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),g=window[`${h}${d+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],m=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield g(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new o[0](yield(yield m.blob().catch((()=>{throw new n("Unknown error.")}))).arrayBuffer().catch((()=>{throw new n("Unknown error.")})));i+=s;const w=v.byteLength;if(u[c]=Math.min(76,r)*((a>>5)-1),152===u[c]&&(u[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)u[c]^=u[i]<<13,u[c]^=u[i]>>17,u[c]^=u[i]<<5,v[e]=v[e]^u[c];return i^=u[0],i^=u[1],i^=u[2],v}))}(e,r,i)),b[e]}const S="0.7.4-alpha.0";let M=`https://cdn.jsdelivr.net/npm/shopar-plugin@${S}/dist`;const R={update:e=>{null!=e&&(M=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>M};function x(e){return t(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const t=document.createElement("script");return t.setAttribute("src",e),t.setAttribute("crossorigin","anonymous"),new Promise((e=>{t.addEventListener("load",(()=>e()),!1),t.addEventListener("error",(()=>e()),!1),document.body.appendChild(t)}))}importScripts(e.toString())}))}let T;function P(e,n){let o=!0;return{qrPaused:()=>o,qrDraw:(r,i)=>t(this,void 0,void 0,(function*(){!function(){t(this,void 0,void 0,(function*(){null==T&&(T=x(`${R}/shopar-qr.js`))}))}(),yield T;const a=`https://ar.shopar.ai/${S.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:r,s:i,h:location.href})}`,s=yield window.ShopAR__QR.toDataURL(a),l=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=s,yield l,o=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){o=!0,e.style.display="none"}))}}const C=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let I,k,L,U=!1;let $=!1;function D(e){const t=function(e){const t=new k.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,k.ClampToEdgeWrapping,k.ClampToEdgeWrapping,k.LinearFilter,k.LinearFilter,1,k.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(L.parse(e));return t.mapping=k.EquirectangularReflectionMapping,t.colorSpace=k.LinearSRGBColorSpace,t}const O=45,_=45,N=3,j=1.5,W=1,F=.5;let q,G,z,B,V,Q=!1;const H=4,K=.001,X=1e-7,Z=10,Y=11,J=1/(Y-1),ee="function"==typeof Float32Array;function te(e,t,n,o){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===o)return se;const r=ee?new Float32Array(Y):new Array(Y);for(let t=0;t<Y;++t)r[t]=ie(t*J,e,n);function i(t){let o=0,i=1;const a=Y-1;for(;i!==a&&r[i]<=t;++i)o+=J;--i;const s=o+(t-r[i])/(r[i+1]-r[i])*J,l=ae(s,e,n);return l>=K?function(e,t,n,o){for(let r=0;r<H;++r){const r=ae(t,n,o);if(0===r)return t;t-=(ie(t,n,o)-e)/r}return t}(t,s,e,n):0===l?s:function(e,t,n,o,r){let i,a,s=0;do{a=t+(n-t)/2,i=ie(a,o,r)-e,i>0?n=a:t=a}while(Math.abs(i)>X&&++s<Z);return a}(t,o,o+J,e,n)}return function(e){return 0===e||1===e?e:ie(i(e),t,o)}}function ne(e,t){return 1-3*t+3*e}function oe(e,t){return 3*t-6*e}function re(e){return 3*e}function ie(e,t,n){return((ne(t,n)*e+oe(t,n))*e+re(t))*e}function ae(e,t,n){return 3*ne(t,n)*e*e+2*oe(t,n)*e+re(t)}function se(e){return e}function le(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=te(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function ce(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:le(n)})));let o=0,r=n[0].value;return{reset:()=>{o=0},update:e=>{for(o+=e;o>=t;)o-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(o>=t.time&&o<i.time){const e=t.interpolate((o-t.time)/(i.time-t.time));r=t.value+e*(i.value-t.value)}}},get:()=>r}}const ue="#",de="time",he="interpolation",pe="yaw",fe="pitch",ge="fov",me=[de,pe,fe,ge,he],ve="s",we="ms",ye=1e3,be="deg",Ee="rad",Ae=Math.PI/180,Se="ease-in-out",Me="cubic-bezier(",Re=")";function xe(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(ue);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const o=function(e){const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!me.includes(o))throw new Error(`Invalid token in header: '${o}'.`);if(t.includes(o))throw new Error(`Duplicate token in header: '${o}'.`);t.push(o)}if(!t.includes(de))throw new Error(`Missing required token: '${de}'.`);return t}(t.split(/\s+/)),r={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=Te(o,e);null!=t&&(null==r.theta&&(r.theta=[]),r.theta.push(t)),null!=n&&(null==r.phi&&(r.phi=[]),r.phi.push(n)),null!=i&&(null==r.fov&&(r.fov=[]),r.fov.push(i))}if(0===Object.values(r).length)throw new Error("At least one parameter should be animated.");return r}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const o of e){const{time:e,pitch:r,yaw:i,fov:a}=o;if(null==e)throw new Error("Time missing.");const s=Ce(null!==(t=o.interpolation)&&void 0!==t?t:Se);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*Ae,interpolation:s})),null!=r&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:r*Ae,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*Ae,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function Te(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const o=e.indexOf(de),r=function(e){if(e.endsWith(we))return ke(e.substring(0,e.length-we.length));if(e.endsWith(ve))return ke(e.substring(0,e.length-ve.length))*ye;return ke(e)}(n[o]),i=e.indexOf(he),a=Ce(-1===i?Se:n[i]),s={};for(let t=0;t<n.length;t++){if(t===o||t===i)continue;const l=e[t],c=n[t];switch(l){case pe:s.theta={time:r,value:Pe(c),interpolation:a};break;case fe:s.phi={time:r,value:Pe(c),interpolation:a};break;case ge:s.fov={time:r,value:Pe(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Pe(e){return e.endsWith(be)?ke(e.substring(0,e.length-be.length))*Ae:e.endsWith(Ee)?ke(e.substring(0,e.length-Ee.length)):ke(e)*Ae}function Ce(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ie(0,0,1,1);if("sine"===e)return Ie(.37,0,.63,1);if("sine-in"===e)return Ie(.12,0,.39,0);if("sine-out"===e)return Ie(.61,1,.88,1);if("ease"===e)return Ie(.25,.1,.25,1);if("ease-in"===e)return Ie(.42,0,1,1);if("ease-out"===e)return Ie(0,0,.58,1);if("ease-in-out"===e)return Ie(.42,0,.58,1);if(e.startsWith(Me)&&e.endsWith(Re)){const t=e.substring(Me.length,e.length-Re.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:ke(t[0]),y1:ke(t[1]),x2:ke(t[2]),y2:ke(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ie(e,t,n,o){return{type:"bezier",x1:e,y1:t,x2:n,y2:o}}function ke(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Le=300,Ue=2e3,$e=.05,De=2*Math.PI/32,Oe=Ce("hold"),_e=Ce("sine"),Ne=Ce("sine-in"),je=Ce("sine-out");const We=2e3,Fe=8,qe=2*Math.PI,Ge=qe/12,ze=qe/60,Be=qe/60,Ve=60,Qe=60,He=1e3,Ke=Ve*Qe,Xe=-1;function Ze(e){return ce([{time:0,value:0,interpolation:{type:"bezier",x1:.9,y1:0,x2:.6,y2:1}},{time:We,value:e,interpolation:{type:"hold"}}])}function Ye(e,t,n){return Xe*Ge*(e+t/Ve+n/Ke)}function Je(e,t){return Xe*ze*(e+t/Qe)}function et(e,t){return Xe*Be*(e+t/He)}const tt=["map","alphaMap","anisotropyMap","aoMap","bumpMap","clearcoatMap","clearcoatNormalMap","clearcoatRoughnessMap","displacementMap","emissiveMap","envMap","gradientMap","iridescenceMap","iridescenceThicknessMap","lightMap","metalnessMap","normalMap","roughnessMap","sheenColorMap","sheenRoughnessMap","specularMap","specularColorMap","specularIntensityMap","thicknessMap","transmissionMap"];function nt(e){null!=e&&(e.dispose(),tt.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let ot;const rt=0,it=3;let at,st,lt,ct=!1,ut=1,dt=1,ht=1;const pt=1;let ft;const gt=new Map;function mt(){null==ot&&(ot=x(`${R}/shopar-three.js`))}function vt(e,n,o){const r=e.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,g,m,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,R=1,x=!0,T=!1,P=0,C=0,W=1,Q=1,H=1;const K={threeInit:()=>{b||(wt(),i=new st.Scene,a=new st.PerspectiveCamera(25,1,.5),s=new at.OrbitControls(a,e),s.setInteractionEnabled(x),h=st.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new q.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new q.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new q.Group;o.position.y=-.7;const r=new q.PlaneGeometry(O,_).rotateX(Math.PI/2),i=new q.MeshBasicMaterial({map:t.texture,opacity:F,transparent:!0,depthWrite:!1}),a=new q.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new q.Mesh(r);s.visible=!1,o.add(s);const l=new q.OrthographicCamera(-O/2,O/2,_/2,-_/2,0,N);function c(e){s.visible=!0,B.uniforms.tDiffuse.value=t.texture,B.uniforms.h.value=1*e/256,s.material=B,G.setRenderTarget(n),G.render(s,l),V.uniforms.tDiffuse.value=n.texture,V.uniforms.v.value=1*e/256,s.material=V,G.setRenderTarget(t),G.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,o.add(l),{shadowGroup:o,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=z;const o=G.getClearAlpha();G.setClearAlpha(0),G.setRenderTarget(t),G.render(e,l),e.overrideMaterial=null,c(j),c(.4*j),G.setRenderTarget(null),G.setClearAlpha(o),e.background=n}}}(i)),b=!0)},threeParse:(e,n,o)=>t(this,void 0,void 0,(function*(){return null!=u&&d===o||(yield u,u=(()=>t(this,void 0,void 0,(function*(){var t,o,r;return o=at,$||(k=o.THREE,L=new o.RGBELoader,$=!0),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=D(n),function(e,t){if(U)return;const{THREE:n}=t;I=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder),U=!0}(ft,at),r=e,I.parseAsync(r.buffer,"")})))(),d=o),u})),threeLoad:(e,t)=>{Et(i),i.add(e.scene);const n=(new st.Box3).setFromObject(e.scene);l.position.y=n.min.y-rt,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof st.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(at.reduceVertices(e.scene,((e,t)=>Math.max(e,o.distanceToSquared(t))),0));s.reset(o,r,function(e,t){var n;const o={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?o.Glasses:null!==(n=o[e])&&void 0!==n?n:o.Glasses).normalize()}(t,st.Vector3)),P=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),o=e.getObjectByName("seconds");if(null==t&&null==n&&null==o)return null;let r,i,a,s,l,c;return{start:()=>{r=new Date,r.setMilliseconds(r.getMilliseconds()+We),l=!1;const e=r.getHours(),t=r.getMinutes(),n=r.getSeconds(),o=r.getMilliseconds();i=Ze(Ye(e,t,n)),a=Ze(Je(t,n)),s=Ze(et(n,o)),c=new Date},update:()=>{if(null==r)return!1;const e=new Date;if(!l){if(r.getTime()-e.getTime()>0){const r=Math.abs(e.getTime()-c.getTime());return null!=t&&(i.update(r),t.rotation.y=i.get()),null!=n&&(a.update(r),n.rotation.y=a.get()),null!=o&&(s.update(r),o.rotation.y=s.get()),c=e,!0}l=!0}if(Math.abs(e.getTime()-c.getTime())<He/Fe)return!1;c=e;const u=e.getHours(),d=e.getMinutes(),h=e.getSeconds(),p=e.getMilliseconds();return null!=t&&(t.rotation.y=Ye(u,d,h)),null!=n&&(n.rotation.y=Je(d,h)),null!=o&&(o.rotation.y=et(h,p)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,ft.setAnimationLoop(yt),e.style.visibility="visible",C=0,null==f||f.reset(),null==g||g.reset(),null==m||m.reset(),null==v||v.reset(),null==w||w.reset(),null==y||y.start()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of gt.values())if(!e())return!1;return!0}()&&ft.setAnimationLoop(null),e.style.visibility="hidden",o.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var t;Et(i),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=null,i=null,u=null,y=null,gt.delete(e)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:st.ACESFilmicToneMapping,Linear:st.LinearToneMapping,Neutral:st.NeutralToneMapping};null!=n[e]&&(h=n[e]),R=t},threeIsInteractive:()=>x,threeSetInteractive:e=>{x=e,null==s||s.setInteractionEnabled(x)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=ce([{time:0,value:e,interpolation:Oe},{time:Le,value:e,interpolation:je},{time:Le+Ue/4,value:e+De,interpolation:_e},{time:Le+3*Ue/4,value:e-De,interpolation:Ne},{time:Le+Ue,value:e,interpolation:Oe},{time:Le+2*Ue,value:e,interpolation:Oe}]),s.setTheta(f.get()),g=null,m=null,v=ce([{time:0,value:0,interpolation:Oe},{time:Le,value:1,interpolation:Oe},{time:Le+Ue,value:0,interpolation:Oe},{time:Le+2*Ue,value:0,interpolation:Oe}]),w=ce([{time:0,value:0,interpolation:Oe},{time:Le,value:0,interpolation:je},{time:Le+Ue/4,value:-$e,interpolation:_e},{time:Le+3*Ue/4,value:$e,interpolation:Ne},{time:Le+Ue,value:0,interpolation:Oe},{time:Le+2*Ue,value:0,interpolation:Oe}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{g=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{m=e,null!=e&&s.setFovRadians(e.get())},threeRenderOnce:()=>{K.render_()},preRender_:t=>{if(!b||S||!function(e){const t=e.getBoundingClientRect();return t.bottom>0&&t.top<Math.max(document.documentElement.clientHeight,window.innerHeight)&&t.right>0&&t.left<Math.max(document.documentElement.clientWidth,window.innerWidth)}(e))return;let n=0!==C?t-C:0;C=t,0===P?M=!0:P<it&&(n=0),P++,T||(s.hasUserInteracted()?(T=!0,f=null,g=null,m=null,v=null,w=null):(null==f||f.update(n),null==g||g.update(n),null==m||m.update(n),null==v||v.update(n),null==w||w.update(n),null!=f&&(s.setTheta(f.get()),M=!0),null!=g&&(s.setPhi(g.get()),M=!0),null!=m&&(s.setFovRadians(m.get()),M=!0))),s.update()&&(M=!0),(null==y?void 0:y.update())&&(M=!0)},shouldRender_:()=>!(!b||S)&&M,render_:()=>{const t=ft.toneMapping,s=ft.toneMappingExposure;ft.toneMapping=h,ft.toneMappingExposure=R,ft.setViewport(0,0,e.width,e.height),ft.setClearColor(new st.Color(16777215),E&&!A?1:0),ft.render(i,a),ft.toneMapping=t,ft.toneMappingExposure=s,M=!1,null!=r&&(r.clearRect(0,0,e.width,e.height),lt.width>0&<.height>0&&r.drawImage(lt,0,dt-e.height,e.width,e.height,0,0,e.width,e.height),n.style.visibility=x&&!T?"visible":"hidden",null!=v&&(o.style.opacity=`${v.get()}`),null!=w&&(o.style.transform=`translateX(${w.get()*Math.min(W,Q)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===W&&n===Q&&ht===H||(e.width=Math.ceil(t*ht*pt),e.height=Math.ceil(n*ht*pt),W=t,Q=n,H=ht,M=!0)},target_:e};return gt.set(e,K),K}function wt(){if(ct)return;at=window.ShopAR__THREE,st=at.THREE,lt=document.createElement("canvas");var e,t;lt.style.position="block",ft=new st.WebGLRenderer({powerPreference:"high-performance",canvas:lt,antialias:!0,alpha:!0}),ft.outputColorSpace=st.SRGBColorSpace,ft.toneMapping=st.ACESFilmicToneMapping,ft.setClearColor(new st.Color(16777215),0),e=ft,t=at,Q||(q=t.THREE,G=e,z=new q.MeshDepthMaterial,z.userData.darkness={value:W},z.onBeforeCompile=e=>{e.uniforms.darkness=z.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},z.depthTest=!1,z.depthWrite=!1,B=new q.ShaderMaterial(t.HorizontalBlurShader),B.depthTest=!1,V=new q.ShaderMaterial(t.VerticalBlurShader),V.depthTest=!1,Q=!0),bt(),ct=!0}function yt(e){bt(),ft.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of gt.values())t(e),n()&&o()}function bt(){let e=0,t=0;for(const{target_:n}of gt.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=C();e=Math.ceil(e*n*pt),t=Math.ceil(t*n*pt),e===ut&&t===dt&&n===ht||(ut=e,dt=t,ht=n,ft.setSize(ut,dt,!1));for(const{updateSize_:e}of gt.values())e()}function Et(e){e.traverse((e=>{var t;e instanceof st.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(nt):nt(e.material))})),e.clear()}const At={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},St=Object.keys(At);function Mt(e){return At[e]}const Rt="shopar-error";function xt(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn",r.appendChild(o);{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;const i=r.style;return i.display="none",i.pointerEvents="auto",r}const Tt="shopar-control";const Pt="shopar-deepar-output";function Ct(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function It(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function kt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function Lt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const Ut="shopar-main";const $t="shopar-qr-output";function Dt(e){var t,n;const o=document.createElementNS("http://www.w3.org/2000/svg","svg");return o.setAttribute("width",null!==(t=e.getAttribute("width"))&&void 0!==t?t:"1rem"),o.setAttribute("height",null!==(n=e.getAttribute("height"))&&void 0!==n?n:"1rem"),o.appendChild(e),o}function Ot(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","image");return n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",null!=t?t:"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E"),n.setAttribute("width",e),n.setAttribute("height",e),n}const _t="shopar-three-output";var Nt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Nt||(Nt={}));let jt=!1;function Wt(){jt||(!function(){try{const e=document.createElement("style"),t=process.env.css;null!=t&&(e.innerHTML=t);const n=document.head;n.insertBefore(e,n.children[0])}catch(e){console.warn("Failed to write default ShopAR Plugin CSS.")}}(),jt=!0)}function Ft(){Wt();const e=function(){const e=document.createElement("div");e.id=Ut;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),o=function(e,t){const n=document.createElement("div");n.id=$t;const o=n.style;o.position="absolute",o.top="0",o.left="0",o.width="100%",o.height="100%",o.display="none",o.pointerEvents="auto",o.userSelect="none";const r=document.createElement("div");r.className="shopar-qr";const i=r.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(r),r.appendChild(e);const a=document.createElement("div");return a.appendChild(t),r.appendChild(a),n}(t,n);e.appendChild(o);const r=function(){const e=document.createElement("div");e.id=Pt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(r);const i=function(){const e=document.createElement("canvas");e.id=_t,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:o}=n;return o.position="absolute",o.width="100%",o.height="100%",o.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=Dt(Ot("2rem",`${R}/img/prompt/3d-interaction.svg`)),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=Ct("shopar-ar-loading-container"),h=It("shopar-ar-loading-text",Mt("loading.ar"));d.appendChild(h);const p=kt("shopar-ar-loading-bar-bg"),f=Lt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const g=Ct("shopar-3d-loading-container"),m=It("shopar-3d-loading-text",Mt("loading.3d"));g.appendChild(m);const v=kt("shopar-3d-loading-bar-bg"),w=Lt("shopar-3d-loading-bar-fg");v.appendChild(w),g.appendChild(v),e.appendChild(g);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",t.backgroundSize="contain",t.backgroundRepeat="no-repeat",t.backgroundPosition="center",e}();e.appendChild(y);const b=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),E=function(e){const t=document.createElement("div");t.id=Rt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const o=document.createElement("div"),r=o.style;return r.position="absolute",r.width="100%",r.height="100%",r.backgroundColor="#ffffff",r.display="flex",r.flexDirection="column",r.justifyContent="center",r.alignItems="center",t.appendChild(o),o.appendChild(e),t}(b);e.appendChild(E);const A=function(){const e=document.createElement("div");return e.id=Tt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(A);const S=Ot("1.75rem"),M=xt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",Dt(S));A.appendChild(M);const x=Ot("1.75rem"),T=xt("shopar-btn-3d","3D","Launch ShopAR 3D preview",Dt(x));A.appendChild(T);const P=Ot("1.75rem"),C=xt("shopar-btn-close","Close","Close ShopAR view",Dt(P));A.append(C);let I,k,L=Nt.None,U=!1,$=!1,D=!1,O=!1;function _(){f.classList.remove("active"),d.style.visibility="hidden"}function N(){y.style.visibility="hidden",w.classList.remove("active"),g.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return o},getQRImage:function(){return n},getDeepARTarget:function(){return r},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){b.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,o,r,i){var a;U=e,$=t,D=n,O=o,I=r,k=i,qt(A,U),qt(M,U&&(D||$)&&L===Nt.None),qt(T,U&&O&&L===Nt.None),qt(C,U&&L!==Nt.None),_(),N(),U||""===(a=E).style.display&&qt(a,!1)},getUIState:function(){return L},setUIState:function(e){L=e,L===Nt.None?(_(),N(),U&&(qt(E,!1),qt(C,!1),($||D)&&qt(M,!0),O&&qt(T,!0))):L===Nt.QR||L===Nt.AR?U&&(qt(E,!1),qt(M,!1),qt(T,O&&"AR"===k),qt(C,"AR"!==k)):L===Nt.Preview&&U&&(qt(E,!1),qt(M,($||D)&&"3D"===k),qt(T,!1),qt(C,"3D"!==k))},setDefaultUIActions:function(e,t,n){U&&(($||D)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${R}/img/icons/${n}`;S.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(I),M.onclick=e),O&&(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/cube.svg`),T.onclick=t),P.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/close.svg`),C.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:_,startThreeLoading:function(){null!=y.dataset.bgSet?y.style.visibility="visible":(w.classList.add("active"),g.style.visibility="visible")},stopThreeLoading:N,setThreePosterUrl:function(e){null!=e?(y.style.backgroundImage=`url(${e})`,y.dataset.bgSet="true"):delete y.dataset.bgSet},showCameraError:function(){U&&qt(E,!0)}}}function qt(e,t){e.style.display=t?"":"none"}const Gt=new Map;function zt(e){let t=Gt.get(e);return null==t?(t=function(){let e=0,t=null,n=null,o=null;const r=()=>(null==t&&(t=Ft()),t);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>t,findUI:r,findQR:()=>{if(null==n){const{getQRTarget:e,getQRImage:t}=r();n=P(e(),t())}return n},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=r();o=vt(e(),t(),n())}return o}}}(),Gt.set(e,t)):t.incrementSetupId_(),t}function Bt(e){for(const t of Gt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===Nt.AR&&r(Nt.None)}}let Vt;const Qt=new Uint8Array(16);function Ht(){if(!Vt&&(Vt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Vt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Vt(Qt)}const Kt=[];for(let e=0;e<256;++e)Kt.push((e+256).toString(16).slice(1));var Xt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Zt(e,t,n){if(Xt.randomUUID&&!t&&!e)return Xt.randomUUID();const o=(e=e||{}).random||(e.rng||Ht)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=o[e];return t}return function(e,t=0){return Kt[e[t+0]]+Kt[e[t+1]]+Kt[e[t+2]]+Kt[e[t+3]]+"-"+Kt[e[t+4]]+Kt[e[t+5]]+"-"+Kt[e[t+6]]+Kt[e[t+7]]+"-"+Kt[e[t+8]]+Kt[e[t+9]]+"-"+Kt[e[t+10]]+Kt[e[t+11]]+Kt[e[t+12]]+Kt[e[t+13]]+Kt[e[t+14]]+Kt[e[t+15]]}(o)}const Yt="qrLaunch",Jt="arLaunch",en="previewLaunch",tn="heartbeat";let nn,on,rn=!1,an=window.navigator.userAgent||"no user agent";const sn=[];function ln(){null==nn&&(on=Zt(),nn=x(`${R}/shopar-analytics.js`),nn.then((()=>{rn=!0,window.ShopAR__analytics.initializeImpl(),sn.forEach((e=>e()))})))}function cn(e){rn?e():sn.push(e)}function un(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function dn(e){return t(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.setAttribute("playsinline","playsinline"),t.srcObject=yield e,t}))}const hn=200,pn=10;let fn=!1,gn=null,mn=[],vn=[];function wn(e){return t(this,void 0,void 0,(function*(){fn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${R}/wasm/mediapipe`,e),gn&&clearInterval(gn);const o=[],r=[];gn=setInterval((()=>t(this,void 0,void 0,(function*(){if(fn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());fn||(null!=a&&null!=s&&function(e){for(let t of mn)t(e)}({translation:a,rotation:s}),null==e&&(o.push(t),r.push(i),o.length<pn||(o.shift(),r.shift(),function(e,t){for(let n of vn)n({faceWidth:e,IPD:t})}(bn(o),bn(r)))))}))),hn)}))}function yn(){vn=[],mn=[],fn=!0}function bn(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}var En="undefined"!=typeof Float32Array?Float32Array:Array;function An(){var e=new En(16);return En!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Sn(e,t,n){var o=t[0],r=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],g=t[12],m=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*o+b*s+E*d+A*g,e[1]=y*r+b*l+E*h+A*m,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*o+b*s+E*d+A*g,e[5]=y*r+b*l+E*h+A*m,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*o+b*s+E*d+A*g,e[9]=y*r+b*l+E*h+A*m,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*o+b*s+E*d+A*g,e[13]=y*r+b*l+E*h+A*m,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Mn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Rn(e,t){var n=t[0],o=t[1],r=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,o,r),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function xn(e,t,n,o){var r=t[0],i=t[1],a=t[2],s=t[3],l=r+r,c=i+i,u=a+a,d=r*l,h=r*c,p=r*u,f=i*c,g=i*u,m=a*u,v=s*l,w=s*c,y=s*u,b=o[0],E=o[1],A=o[2];return e[0]=(1-(f+m))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+m))*E,e[6]=(g+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(g-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Tn(){var e=new En(3);return En!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Pn(e,t,n){var o=new En(3);return o[0]=e,o[1]=t,o[2]=n,o}function Cn(e,t){var n=t[0]-e[0],o=t[1]-e[1],r=t[2]-e[2];return Math.hypot(n,o,r)}function In(e,t,n){var o=t[0],r=t[1],i=t[2],a=n[3]*o+n[7]*r+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*o+n[4]*r+n[8]*i+n[12])/a,e[1]=(n[1]*o+n[5]*r+n[9]*i+n[13])/a,e[2]=(n[2]*o+n[6]*r+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function kn(){var e=new En(4);return En!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}Tn(),function(){var e,t=(e=new En(4),En!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Ln;let Un,$n;Tn(),Pn(1,0,0),Pn(0,1,0),kn(),kn(),Ln=new En(9),En!=Float32Array&&(Ln[1]=0,Ln[2]=0,Ln[3]=0,Ln[5]=0,Ln[6]=0,Ln[7]=0),Ln[0]=1,Ln[4]=1,Ln[8]=1;let Dn,On,_n,Nn,jn=!0,Wn=null;const Fn=new Set;let qn,Gn,zn,Bn,Vn,Qn;function Hn(){null==Un&&(Un=x(`${R}/shopar-deepar.js`))}function Kn(){null==$n&&($n=x(`${R}/shopar-true-scale.js`))}function Xn(e){return t(this,void 0,void 0,(function*(){const{licenseKey:o,truescaleUsecase:r}=e;return Vn=r,null==qn&&(qn=(()=>t(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new n("No camera available!");var e;const t=io(_n),r=un(t);Dn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:o||"your_license_key_goes_here",previewElement:Nn,additionalOptions:{hint:Qn,cameraConfig:{disableDefaultCamera:!0}}}),On=yield dn(r),yield ao(Dn,On,"user"===t),"Glasses"===_n&&(yield $n,wn(On),"DetectionLoop"!==Vn&&uo((e=>{Bn=e.faceWidth})))})))()),qn}))}function Zn(e,t){var n,o;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===_n&&(n=t,o=Qn,n===o||null!=n&&null!=o&&n.length===o.length&&n.every((e=>o.find((t=>e===t))))&&o.every((e=>n.find((t=>t===e))))))||(null!=Dn&&(Dn.shutdown(),Dn=null,qn=null),_n=e,Qn=t)}function Yn(e){e!==Nn&&(Nn=e,null!=Dn&&Dn.changePreviewElement(Nn))}function Jn(e){Wn=e}function eo(e){Dn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(Bn){const e=137/(Bn+5);Dn.changeParameterVector("GLASSES","","scale",e,e,e,0),Dn.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const o=lo("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),r=lo("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Dn.changeParameterVector("temple_left","","rotation",0,56.6*-o,0,0),Dn.changeParameterVector("temple_right","","rotation",0,56.6*-r,0,0)}catch(e){return}}(e),yn(),Bn=null}e(),so("Glasses")}},Dn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),so("Shoes"))},Dn.callbacks.onWristTracked=t=>{t.detected&&(e(),so("Watches"))}}function to(e,n,o){return t(this,void 0,void 0,(function*(){return null!=Gn&&zn===o||(yield Gn,Gn=Dn.switchEffect(e,{envmap:n}),zn=o),Gn}))}function no(e,t){null!=e&&null!=t&&(Dn.setToneMapping(e),Dn.setExposure(t))}function oo(){return t(this,void 0,void 0,(function*(){if(null!=Dn){if(jn=!1,null==On){const e=io(_n),t=un(e);On=yield dn(t),yield ao(Dn,On,"user"===e),"Glasses"===_n&&(wn(On),"DetectionLoop"!==Vn&&uo((e=>{Bn=e.faceWidth})))}!function(){if(null==Wn)return;if(null==_n||Fn.has(_n))return;Wn.style.visibility="visible",Wn.style.opacity="1"}(),Dn.setPaused(jn),Nn.style.display=""}}))}function ro(){null!=Dn&&(jn=!0,Dn.setPaused(jn),yn(),null!=On&&null!=On.srcObject&&On.srcObject instanceof MediaStream&&(On.srcObject.getTracks().forEach((e=>e.stop())),On=null),function(){if(null==Wn)return;Wn.style.visibility="hidden",Wn.style.opacity="0"}(),Dn.stopCamera(),Nn.style.display="none")}function io(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function ao(e,n,o){return t(this,void 0,void 0,(function*(){yield new Promise((r=>{n.onloadedmetadata=()=>{n.play().then((()=>t(this,void 0,void 0,(function*(){e.setVideoElement(n,o),r()}))))}}))}))}function so(e){null!=Wn&&(Fn.has(e)||(Fn.add(e),Wn.style.opacity="0"))}function lo(e,t,n,o,r,i,a){const s=Dn.getTransformationBetween(e,t),l=Mn(Tn(),s),c=function(e,t){var n=new En(3);Rn(n,t);var o=1/n[0],r=1/n[1],i=1/n[2],a=t[0]*o,s=t[1]*r,l=t[2]*i,c=t[4]*o,u=t[5]*r,d=t[6]*i,h=t[8]*o,p=t[9]*r,f=t[10]*i,g=a+u+f,m=0;return g>0?(m=2*Math.sqrt(g+1),e[3]=.25*m,e[0]=(d-p)/m,e[1]=(h-l)/m,e[2]=(s-c)/m):a>u&&a>f?(m=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/m,e[0]=.25*m,e[1]=(s+c)/m,e[2]=(h+l)/m):u>f?(m=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/m,e[0]=(s+c)/m,e[1]=.25*m,e[2]=(d+p)/m):(m=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/m,e[0]=(h+l)/m,e[1]=(d+p)/m,e[2]=.25*m),e}(kn(),s);xn(s,c,l,Pn(a,a,a));const u=Dn.getTransformationBetween(t,n),d=Mn(Tn(),u);xn(u,kn(),d,Rn(Tn(),u));const h=Sn(An(),s,u),p=Mn(Tn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let g;try{g=Dn.getTransformationBetween(n,o)}catch(e){return f}const m=Sn(An(),u,g),v=Sn(An(),s,m),w=Pn(p[0],i[1],i[2]),y=In(Tn(),w,function(e,t){var n=t[0],o=t[1],r=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],g=t[13],m=t[14],v=t[15],w=n*s-o*a,y=n*l-r*a,b=n*c-i*a,E=o*l-r*s,A=o*c-i*s,S=r*c-i*l,M=u*g-d*f,R=u*m-h*f,x=u*v-p*f,T=d*m-h*g,P=d*v-p*g,C=h*v-p*m,I=w*C-y*P+b*T+E*x-A*R+S*M;return I?(I=1/I,e[0]=(s*C-l*P+c*T)*I,e[1]=(r*P-o*C-i*T)*I,e[2]=(g*S-m*A+v*E)*I,e[3]=(h*A-d*S-p*E)*I,e[4]=(l*x-a*C-c*R)*I,e[5]=(n*C-r*x+i*R)*I,e[6]=(m*b-f*S-v*y)*I,e[7]=(u*S-h*b+p*y)*I,e[8]=(a*P-s*x+c*M)*I,e[9]=(o*x-n*P-i*M)*I,e[10]=(f*A-g*b+v*w)*I,e[11]=(d*b-u*A-p*w)*I,e[12]=(s*R-a*T-l*M)*I,e[13]=(n*T-o*R+r*M)*I,e[14]=(g*y-f*E-m*w)*I,e[15]=(u*E-d*y+h*w)*I,e):null}(An(),v));let b=Dn.getClosestPointOnMesh(o,y);try{const e=Dn.getClosestPointOnMesh(r,y);Cn(y,e)<Cn(y,b)&&(b=e)}catch(e){}const E=In(Tn(),b,m);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function co(e){!function(e){mn.push(e)}(e)}function uo(e){!function(e){vn.push(e)}(e)}var ho;function po(){return[ho.Android,ho.iOS,ho.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],o=["Win32","Win64","Windows","WinCE"],r=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==r.indexOf(t)?ho.iOS:-1!==n.indexOf(t)?i?ho.Tablet:ho.MacOS:-1!==o.indexOf(t)?ho.Windows:/Android/.test(e)?ho.Android:/Linux/.test(t)?ho.Linux:i?ho.Tablet:ho.Unknown}return ho.Unknown}())}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(ho||(ho={}));const fo=["AR","3D"];function go(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function mo(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function vo(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function wo(e){const{apiKey:t,sku:o,targetElement:r,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;go(t,"apiKey"),vo(t,"apiKey"),go(o,"sku"),vo(o,"sku"),go(r,"targetElement"),function(e,t){if(!(e instanceof HTMLElement))throw new n(`'${t}' must be an HTMLElement.`)}(r,"targetElement"),null!=i&&function(e,t,o){if("string"!=typeof e)throw new n(`'${t}' must be a string.`);if(!o.includes(e))throw new n(`'${t}' must be ${o.join("' or '")}.`)}(i,"initialState",fo),null!=a&&function(e,t){if("string"!=typeof e&&!Array.isArray(e))throw new n(`'${t}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&vo(s,"baseUrl"),null!=l&&mo(l,"defaultUI"),null!=c&&mo(c,"interactive"),null!=u&&function(e,t,o){for(const r of o){const o=e[r];if(null!=o&&"string"!=typeof o)throw new n(`Value for key '${r}' in '${t}' must be a string.`)}}(u,"strings",St)}let yo=!1;function bo(e){return t(this,void 0,void 0,(function*(){const{targetElement:o}=e;R.update(e.baseUrl),ln();const{trackEvent:r}=function(e){const t=performance.now(),n=Zt();return{trackEvent:(o,r={})=>{r=Object.assign(Object.assign({},r),{pluginVersion:S,userAgent:an,sessionId:on,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),cn((()=>{window.ShopAR__analytics.trackEventImpl(o,r)}))}}}(e.apiKey);r("visionSetup");const i=yield function(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:e,sid:d()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield o.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(e.apiKey);r("visionApiResponse",i);const{arKey:a}=i,s=zt(o),{getSetupId:l,findUI:c}=s,u=l();Hn(),Kn();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:g,getUIState:m,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(m()!=Nt.None)throw Error("UI state is not None, this is weird..");v(Nt.AR),h(o),g(!1,!1,!0,!1,void 0,void 0),w(),yield Un,Eo(l(),u);try{r("visionArLaunch"),ro(),Zn("Glasses",["faceInit"]),Yn(p()),yield Xn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),Eo(l(),u),yield oo(),Eo(l(),u)}catch(e){const t=e instanceof Error;throw r("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),b(),ro(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{y()}return yo=!0,{registerFacePoseListener:e=>{yo&&(r("registerFacePoseListener"),co(e))},registerFaceMeasurementListener:e=>{yo&&(r("registerFaceMeasurementListener"),uo(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){yo&&(r("switchEffect",{arUrl:e}),function(e){Dn.switchEffect(e)}(e))})),clearEffect:()=>{yo&&(r("clearEffect"),Dn.clearEffect())},close:()=>{if(yo){if(yo=!1,r("visionClose"),m()!==Nt.AR)throw new n("AR not launched.");ro(),v(Nt.None)}}}}))}function Eo(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function Ao(e){var o,r;return t(this,void 0,void 0,(function*(){wo(e);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=e,u=null==e.zoomEnabled||e.zoomEnabled,h=!0===e.alwaysTransparentBackground;!function(e){const t=getComputedStyle(e);if(!["static","relative"].includes(t.position))throw new n(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${t.position}'.`)}(s),R.update(e.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(At,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(At[t]=n)}}(e.strings);const p=null!=c?xe(c):null,y=null!=(null==p?void 0:p.theta)?ce(p.theta):null,b=null!=(null==p?void 0:p.phi)?ce(p.phi):null,M=null!=(null==p?void 0:p.fov)?ce(p.fov):null,x=function(e,o,r,i,a,s){return t(this,void 0,void 0,(function*(){const l=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:e,sku:o,sid:d()},null!=r&&{yaw:`${m(g(r))}`}),null!=i&&{pitch:`${m(g(i))}`}),null!=a&&{fov:`${m(g(a))}`}),s&&{forcedTransparency:`${s}`}))}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield l.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==b?void 0:b.get(),null==M?void 0:M.get(),h),T=zt(s),{getSetupId:P,findUI:C,findQR:I,findThree:k}=T,L=P();ln();const{trackEvent:U,arInteracted:$,previewInteracted:D}=function(e,t){const n=performance.now(),o=Zt();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,u(tn,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const u=(r,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:an,pluginVersion:S,sessionId:on,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),cn((()=>{window.ShopAR__analytics.trackEventImpl(r,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);U("setup",{hostname:window.location.hostname});const O=yield x;U("apiResponse",O);const{category:_,arUrl:N,arEnvUrl:j,arToneMapping:W,arToneMappingExposure:F,arKey:q,arPromptEnabled:G,arPromptText:z,arPromptImage:B,previewUrl:V,previewEnvUrl:Q,previewToneMapping:H,previewToneMappingExposure:K,previewPosterUrl:X,cameraErrorText:Z,qrPromptText:Y}=O;So(P(),L);const J=null!=N&&function(e){return null!=e&&v.includes(e)}(_),ee=null==(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled),te=J&&function(e){return null!=e&&w.includes(e)}(_),ne=ee&&te&&!po(),oe=J&&!ne,re=null!=V;So(P(),L);const{setTargetElement:ie,getDeepARTarget:ae,getDeepARPrompt:se,customizeDeepARPrompt:le,customizeCameraError:ue,customizeQRPrompt:de,setVisibilityParameters:he,getUIState:pe,setUIState:fe,setDefaultUIActions:ge,startDeepARLoading:me,stopDeepARLoading:ve,startThreeLoading:we,stopThreeLoading:ye,setThreePosterUrl:be,showCameraError:Ee}=C();ie(s);he(null==e.defaultUI||e.defaultUI,ne,oe,re,_,l),le(null!=z?z:"",null!=B?B:""),ue(Z),de(Y),be(X),function(e,t){const o=e.parentNode;if(null==o)throw new n("Parent node missing.");new MutationObserver((n=>{for(const o of n)for(const n of o.removedNodes)if(n===e)return void t()})).observe(o,{childList:!0})}(s,(()=>{pe()!==Nt.QR||Ae()||Me(),pe()!==Nt.AR||jn||ro(),pe()!==Nt.Preview||Ce()||ke(),fe(Nt.None),Le(),function(e){Gt.delete(e)}(s)}));const{qrPaused:Ae,qrDraw:Se,qrPause:Me}=I(),{threeInit:Re,threeParse:Te,threeLoad:Pe,threePaused:Ce,threeResume:Ie,threePause:ke,threeDestroy:Le,threeSetZoomEnabled:Ue,threeSetForcedTransparency:$e,threeSetToneMapping:De,threeIsInteractive:Oe,threeSetInteractive:_e,threeSetOnInteracted:Ne,threeInitPromptAnimation:je,threeInitThetaAnimation:We,threeInitPhiAnimation:Fe,threeInitFovAnimation:qe,threeRenderOnce:Ge}=k(),ze=null==e.interactive||e.interactive;_e(ze);let Be=0;if(pe()===Nt.QR){if(!Ae())if(ne){U(Yt);try{yield Se(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Me(),fe(Nt.None)}else if(pe()===Nt.AR){if(!jn)if(oe&&!yo){U(Jt),Hn(),"Glasses"===_&&Kn();const e=null!=j?yield E(j):void 0;So(P(),L);const t=yield E(N);So(P(),L),Bt(T),Zn(_),Yn(ae()),Jn(G?se():null),yield to(t,e,`${N}${j}`),no(W,F),eo($),So(P(),L)}else ro(),fe(Nt.None)}else if(pe()===Nt.Preview&&!Ce())if(re){U(en),mt(),we();const e=255,t=yield A(V,(new Date).getTime()+e,Math.random()*e);So(P(),L);const n=yield E(null!=Q?Q:`${R}/env/default.hdr`);So(P(),L),yield ot,So(P(),L),Re(),So(P(),L);const o=yield Te(t,n,`${V}${Q}`);So(P(),L),Pe(o,_),Ue(u),$e(h),De(null!=H?H:"ACES",null!=K?K:1),Ne(D),je(),null!=p&&(We(y),Fe(b),qe(M)),Ge(),Ie(),ye()}else ke(),fe(Nt.None);const Ve=()=>t(this,void 0,void 0,(function*(){if(ne)try{U(Yt);const e=++Be;if(pe()===Nt.Preview&&re&&!Ce()&&ke(),fe(Nt.QR),yield Se(i,a),Be!==e)return;return void So(P(),L)}catch(e){const t=e instanceof Error;throw U("qrLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`QR failed: ${t?e.message:"Unknown error."}`)}if(!oe)throw new n("Model does not have AR enabled.");try{U(Jt);const e=++Be;pe()===Nt.Preview&&re&&!Ce()&&ke(),Bt(T),fe(Nt.AR),Hn(),"Glasses"===_&&Kn(),me();const t=null!=j?yield E(j):void 0;So(P(),L);const n=yield E(N);if(Be!==e)return;if(So(P(),L),yield Un,Be!==e)return;if(So(P(),L),ro(),Zn(_),Yn(ae()),Jn(G?se():null),yield Xn({licenseKey:q}),Be!==e)return;if(So(P(),L),yield to(n,t,`${N}${j}`),no(W,F),eo($),Be!==e)return;if(So(P(),L),yield oo(),Be!==e)return;So(P(),L)}catch(e){const t=e instanceof Error;throw U("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Ee(),ro(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{ve()}})),Qe=()=>t(this,void 0,void 0,(function*(){if(!re)throw new n("Model does not have 3D enabled.");try{U(en);const e=++Be;pe()===Nt.AR&&(oe&&!jn&&ro(),Me()),fe(Nt.Preview),mt(),we();const t=255,n=yield A(V,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;So(P(),L);const o=yield E(null!=Q?Q:`${R}/env/default.hdr`);if(Be!==e)return;if(So(P(),L),yield ot,Be!==e)return;if(So(P(),L),Re(),Be!==e)return;So(P(),L);const r=yield Te(n,o,`${V}${Q}`);if(Be!==e)return;So(P(),L),Pe(r,_),Ue(u),$e(h),De(null!=H?H:"ACES",null!=K?K:1),Ne(D),je(),null!=p&&(We(y),Fe(b),qe(M)),Ge(),Ie(),ye()}catch(e){const t=e instanceof Error;throw U("previewLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`3D failed: ${t?e.message:"Unknown error."}`)}})),He=()=>t(this,void 0,void 0,(function*(){pe()!==Nt.None&&("AR"!==l||pe()!==Nt.AR&&pe()!==Nt.QR)&&("3D"===l&&pe()===Nt.Preview||(++Be,pe()===Nt.QR||pe()===Nt.AR?(oe&&!jn&&ro(),Me()):pe()===Nt.Preview&&re&&!Ce()&&ke(),fe(Nt.None),"AR"!==l?"3D"!==l||(yield Qe()):yield Ve()))}));return ge(Ve,Qe,He),"AR"===l?(yield Ve(),So(P(),L)):"3D"===l&&(yield Qe(),So(P(),L)),yo=!1,{launchAR:J?Ve:void 0,launch3D:re?Qe:void 0,closeAR:J?()=>t(this,void 0,void 0,(function*(){pe()!==Nt.AR&&pe()!==Nt.QR||"AR"!==l&&(++Be,oe&&!jn&&ro(),Me(),fe(Nt.None),"3D"!==l||(yield Qe()))})):void 0,close3D:re?()=>t(this,void 0,void 0,(function*(){pe()===Nt.Preview&&"3D"!==l&&(++Be,re&&!Ce()&&ke(),fe(Nt.None),"AR"!==l||(yield Ve()))})):void 0,close:J||re?He:void 0,isInteractive:()=>Oe(),setInteractive:e=>_e(e)}}))}function So(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const Mo={setup:function(e){return t(this,void 0,void 0,(function*(){return bo(e)}))}},Ro={setup:function(e){return t(this,void 0,void 0,(function*(){return function(e,o){return t(this,void 0,void 0,(function*(){try{return o()}catch(t){throw t instanceof Error?new n(`${e} failed: ${t.message}`):(console.error(t),new n(`${e} failed.`))}}))}("setup",(()=>Ao(e)))}))},version:S};e.PREVIEW_STATES=fo,e.PluginError=n,e.plugin=Ro,e.vision=Mo}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ShopAR={})}(this,(function(e){"use strict";function t(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class n extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const r=[Uint8Array,Uint32Array],o=r.length-2,i=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],a=[2,12,7,1],s=window[i[a[a[o]]]][i[a[a[a.length-1]]]],l=s.charCodeAt(o),c=l^l,u=new r[1]([c]);function d(){const e=(new TextEncoder).encode(s),t=i.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[i[t[2]]](String.fromCodePoint(...e))}const h=[1e3,2e3,4e3],p=h.length;function f(e,n=0){return t(this,void 0,void 0,(function*(){try{return yield e()}catch(t){if(n>=p)throw t;return yield new Promise((e=>setTimeout(e,h[n]))),f(e,n+1)}}))}function g(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const v=["Glasses","Shoes","Watches"],w=["Shoes"];const y={},b={};function E(e){return null==y[e]&&(y[e]=function(e){return t(this,void 0,void 0,(function*(){const r=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(e).catch((e=>{throw console.error(e),new n("Resource unavailable.")}));if(!t.ok)throw new n(`Resource download failed with status ${t.status}.`);return t}))));try{return yield(yield r.blob()).arrayBuffer()}catch(e){throw console.error(e),new n("Resource has invalid body.")}}))}(e)),y[e]}function A(e,o,i){return null==b[e]&&(b[e]=function(e,o,i){return t(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const l=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),g=window[`${h}${d+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],m=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield g(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new r[0](yield(yield m.blob().catch((()=>{throw new n("Unknown error.")}))).arrayBuffer().catch((()=>{throw new n("Unknown error.")})));i+=s;const w=v.byteLength;if(u[c]=Math.min(76,o)*((a>>5)-1),152===u[c]&&(u[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)u[c]^=u[i]<<13,u[c]^=u[i]>>17,u[c]^=u[i]<<5,v[e]=v[e]^u[c];return i^=u[0],i^=u[1],i^=u[2],v}))}(e,o,i)),b[e]}const S="0.7.4-alpha.1";let R=`https://cdn.jsdelivr.net/npm/shopar-plugin@${S}/dist`;const M={update:e=>{null!=e&&(R=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>R};function T(e){return t(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const t=document.createElement("script");return t.setAttribute("src",e),t.setAttribute("crossorigin","anonymous"),new Promise((e=>{t.addEventListener("load",(()=>e()),!1),t.addEventListener("error",(()=>e()),!1),document.body.appendChild(t)}))}importScripts(e.toString())}))}let x;function C(e,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>t(this,void 0,void 0,(function*(){!function(){t(this,void 0,void 0,(function*(){null==x&&(x=T(`${M}/shopar-qr.js`))}))}(),yield x;const a=`https://ar.shopar.ai/${S.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,s=yield window.ShopAR__QR.toDataURL(a),l=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=s,yield l,r=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){r=!0,e.style.display="none"}))}}const P=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let I,k=!1;var L;let U,D,$;!function(e){e[e.HDR=0]="HDR",e[e.EXR=1]="EXR"}(L||(L={}));let O=!1;function _(e,t){const n=t===L.HDR?function(e){const t=new U.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,U.ClampToEdgeWrapping,U.ClampToEdgeWrapping,U.LinearFilter,U.LinearFilter,1,U.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(D.parse(e)):function(e){const t=new U.DataTexture(e.data,e.width,e.height,e.format,e.type,void 0,U.ClampToEdgeWrapping,U.ClampToEdgeWrapping,U.LinearFilter,U.LinearFilter,1,e.colorSpace);return t.needsUpdate=!0,t}($.parse(e));return n.mapping=U.EquirectangularReflectionMapping,n.colorSpace=U.LinearSRGBColorSpace,n}const N=45,j=45,W=3,F=1.5,q=1,G=.5;let z,H,B,V,Q,K=!1;const X=4,Z=.001,Y=1e-7,J=10,ee=11,te=1/(ee-1),ne="function"==typeof Float32Array;function re(e,t,n,r){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===r)return ce;const o=ne?new Float32Array(ee):new Array(ee);for(let t=0;t<ee;++t)o[t]=se(t*te,e,n);function i(t){let r=0,i=1;const a=ee-1;for(;i!==a&&o[i]<=t;++i)r+=te;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*te,l=le(s,e,n);return l>=Z?function(e,t,n,r){for(let o=0;o<X;++o){const o=le(t,n,r);if(0===o)return t;t-=(se(t,n,r)-e)/o}return t}(t,s,e,n):0===l?s:function(e,t,n,r,o){let i,a,s=0;do{a=t+(n-t)/2,i=se(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>Y&&++s<J);return a}(t,r,r+te,e,n)}return function(e){return 0===e||1===e?e:se(i(e),t,r)}}function oe(e,t){return 1-3*t+3*e}function ie(e,t){return 3*t-6*e}function ae(e){return 3*e}function se(e,t,n){return((oe(t,n)*e+ie(t,n))*e+ae(t))*e}function le(e,t,n){return 3*oe(t,n)*e*e+2*ie(t,n)*e+ae(t)}function ce(e){return e}function ue(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=re(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function de(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:ue(n)})));let r=0,o=n[0].value;return{reset:()=>{r=0},update:e=>{for(r+=e;r>=t;)r-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(r>=t.time&&r<i.time){const e=t.interpolate((r-t.time)/(i.time-t.time));o=t.value+e*(i.value-t.value)}}},get:()=>o}}const he="#",pe="time",fe="interpolation",ge="yaw",me="pitch",ve="fov",we=[pe,ge,me,ve,fe],ye="s",be="ms",Ee=1e3,Ae="deg",Se="rad",Re=Math.PI/180,Me="ease-in-out",Te="cubic-bezier(",xe=")";function Ce(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(he);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(!we.includes(r))throw new Error(`Invalid token in header: '${r}'.`);if(t.includes(r))throw new Error(`Duplicate token in header: '${r}'.`);t.push(r)}if(!t.includes(pe))throw new Error(`Missing required token: '${pe}'.`);return t}(t.split(/\s+/)),o={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=Pe(r,e);null!=t&&(null==o.theta&&(o.theta=[]),o.theta.push(t)),null!=n&&(null==o.phi&&(o.phi=[]),o.phi.push(n)),null!=i&&(null==o.fov&&(o.fov=[]),o.fov.push(i))}if(0===Object.values(o).length)throw new Error("At least one parameter should be animated.");return o}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const r of e){const{time:e,pitch:o,yaw:i,fov:a}=r;if(null==e)throw new Error("Time missing.");const s=ke(null!==(t=r.interpolation)&&void 0!==t?t:Me);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*Re,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*Re,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*Re,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function Pe(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const r=e.indexOf(pe),o=function(e){if(e.endsWith(be))return Ue(e.substring(0,e.length-be.length));if(e.endsWith(ye))return Ue(e.substring(0,e.length-ye.length))*Ee;return Ue(e)}(n[r]),i=e.indexOf(fe),a=ke(-1===i?Me:n[i]),s={};for(let t=0;t<n.length;t++){if(t===r||t===i)continue;const l=e[t],c=n[t];switch(l){case ge:s.theta={time:o,value:Ie(c),interpolation:a};break;case me:s.phi={time:o,value:Ie(c),interpolation:a};break;case ve:s.fov={time:o,value:Ie(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Ie(e){return e.endsWith(Ae)?Ue(e.substring(0,e.length-Ae.length))*Re:e.endsWith(Se)?Ue(e.substring(0,e.length-Se.length)):Ue(e)*Re}function ke(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Le(0,0,1,1);if("sine"===e)return Le(.37,0,.63,1);if("sine-in"===e)return Le(.12,0,.39,0);if("sine-out"===e)return Le(.61,1,.88,1);if("ease"===e)return Le(.25,.1,.25,1);if("ease-in"===e)return Le(.42,0,1,1);if("ease-out"===e)return Le(0,0,.58,1);if("ease-in-out"===e)return Le(.42,0,.58,1);if(e.startsWith(Te)&&e.endsWith(xe)){const t=e.substring(Te.length,e.length-xe.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Ue(t[0]),y1:Ue(t[1]),x2:Ue(t[2]),y2:Ue(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Le(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Ue(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const De=300,$e=2e3,Oe=.05,_e=2*Math.PI/32,Ne=ke("hold"),je=ke("sine"),We=ke("sine-in"),Fe=ke("sine-out");const qe=2e3,Ge=8,ze=2*Math.PI,He=ze/12,Be=ze/60,Ve=ze/60,Qe=60,Ke=60,Xe=1e3,Ze=Qe*Ke,Ye=-1;function Je(e){return de([{time:0,value:0,interpolation:{type:"bezier",x1:.9,y1:0,x2:.6,y2:1}},{time:qe,value:e,interpolation:{type:"hold"}}])}function et(e,t,n){return Ye*He*(e+t/Qe+n/Ze)}function tt(e,t){return Ye*Be*(e+t/Ke)}function nt(e,t){return Ye*Ve*(e+t/Xe)}const rt=["map","alphaMap","anisotropyMap","aoMap","bumpMap","clearcoatMap","clearcoatNormalMap","clearcoatRoughnessMap","displacementMap","emissiveMap","envMap","gradientMap","iridescenceMap","iridescenceThicknessMap","lightMap","metalnessMap","normalMap","roughnessMap","sheenColorMap","sheenRoughnessMap","specularMap","specularColorMap","specularIntensityMap","thicknessMap","transmissionMap"];function ot(e){null!=e&&(e.dispose(),rt.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let it;const at=0,st=3;let lt,ct,ut,dt=!1,ht=1,pt=1,ft=1;const gt=1;let mt;const vt=new Map;function wt(){null==it&&(it=T(`${M}/shopar-three.js`))}function yt(e,n,r){const o=e.getContext("2d");null==o&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,g,m,v,w,y,b=!1,E=!1,A=!1,S=!0,R=!1,M=1,T=!0,x=!1,C=0,P=0,L=1,q=1,K=1;const X={threeInit:()=>{b||(bt(),i=new ct.Scene,a=new ct.PerspectiveCamera(25,1,.5),s=new lt.OrbitControls(a,e),s.setInteractionEnabled(T),h=ct.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new z.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new z.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new z.Group;r.position.y=-.7;const o=new z.PlaneGeometry(N,j).rotateX(Math.PI/2),i=new z.MeshBasicMaterial({map:t.texture,opacity:G,transparent:!0,depthWrite:!1}),a=new z.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new z.Mesh(o);s.visible=!1,r.add(s);const l=new z.OrthographicCamera(-N/2,N/2,j/2,-j/2,0,W);function c(e){s.visible=!0,V.uniforms.tDiffuse.value=t.texture,V.uniforms.h.value=1*e/256,s.material=V,H.setRenderTarget(n),H.render(s,l),Q.uniforms.tDiffuse.value=n.texture,Q.uniforms.v.value=1*e/256,s.material=Q,H.setRenderTarget(t),H.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,r.add(l),{shadowGroup:r,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=B;const r=H.getClearAlpha();H.setClearAlpha(0),H.setRenderTarget(t),H.render(e,l),e.overrideMaterial=null,c(F),c(.4*F),H.setRenderTarget(null),H.setClearAlpha(r),e.background=n}}}(i)),b=!0)},threeParse:(e,n,r,o)=>t(this,void 0,void 0,(function*(){return null!=u&&d===r||(yield u,u=(()=>t(this,void 0,void 0,(function*(){var t,r,a;return r=lt,O||(U=r.THREE,D=new r.RGBELoader,$=new r.EXRLoader,O=!0),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=_(n,o),function(e,t){if(k)return;const{THREE:n}=t;I=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder),k=!0}(mt,lt),a=e,I.parseAsync(a.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{St(i),i.add(e.scene);const n=(new ct.Box3).setFromObject(e.scene);l.position.y=n.min.y-at,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof ct.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const r=n.min.clone().add(n.max).divideScalar(2),o=Math.sqrt(lt.reduceVertices(e.scene,((e,t)=>Math.max(e,r.distanceToSquared(t))),0));s.reset(r,o,function(e,t){var n;const r={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?r.Glasses:null!==(n=r[e])&&void 0!==n?n:r.Glasses).normalize()}(t,ct.Vector3)),C=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),r=e.getObjectByName("seconds");if(null==t&&null==n&&null==r)return null;let o,i,a,s,l,c;return{start:()=>{o=new Date,o.setMilliseconds(o.getMilliseconds()+qe),l=!1;const e=o.getHours(),t=o.getMinutes(),n=o.getSeconds(),r=o.getMilliseconds();i=Je(et(e,t,n)),a=Je(tt(t,n)),s=Je(nt(n,r)),c=new Date},update:()=>{if(null==o)return!1;const e=new Date;if(!l){if(o.getTime()-e.getTime()>0){const o=Math.abs(e.getTime()-c.getTime());return null!=t&&(i.update(o),t.rotation.y=i.get()),null!=n&&(a.update(o),n.rotation.y=a.get()),null!=r&&(s.update(o),r.rotation.y=s.get()),c=e,!0}l=!0}if(Math.abs(e.getTime()-c.getTime())<Xe/Ge)return!1;c=e;const u=e.getHours(),d=e.getMinutes(),h=e.getSeconds(),p=e.getMilliseconds();return null!=t&&(t.rotation.y=et(u,d,h)),null!=n&&(n.rotation.y=tt(d,h)),null!=r&&(r.rotation.y=nt(h,p)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,mt.setAnimationLoop(Et),e.style.visibility="visible",P=0,null==f||f.reset(),null==g||g.reset(),null==m||m.reset(),null==v||v.reset(),null==w||w.reset(),null==y||y.start()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of vt.values())if(!e())return!1;return!0}()&&mt.setAnimationLoop(null),e.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var t;St(i),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=null,i=null,u=null,y=null,vt.delete(e)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:ct.ACESFilmicToneMapping,Linear:ct.LinearToneMapping,Neutral:ct.NeutralToneMapping};null!=n[e]&&(h=n[e]),M=t},threeIsInteractive:()=>T,threeSetInteractive:e=>{T=e,null==s||s.setInteractionEnabled(T)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=de([{time:0,value:e,interpolation:Ne},{time:De,value:e,interpolation:Fe},{time:De+$e/4,value:e+_e,interpolation:je},{time:De+3*$e/4,value:e-_e,interpolation:We},{time:De+$e,value:e,interpolation:Ne},{time:De+2*$e,value:e,interpolation:Ne}]),s.setTheta(f.get()),g=null,m=null,v=de([{time:0,value:0,interpolation:Ne},{time:De,value:1,interpolation:Ne},{time:De+$e,value:0,interpolation:Ne},{time:De+2*$e,value:0,interpolation:Ne}]),w=de([{time:0,value:0,interpolation:Ne},{time:De,value:0,interpolation:Fe},{time:De+$e/4,value:-Oe,interpolation:je},{time:De+3*$e/4,value:Oe,interpolation:We},{time:De+$e,value:0,interpolation:Ne},{time:De+2*$e,value:0,interpolation:Ne}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{g=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{m=e,null!=e&&s.setFovRadians(e.get())},threeRenderOnce:()=>{X.render_()},preRender_:t=>{if(!b||S||!function(e){const t=e.getBoundingClientRect();return t.bottom>0&&t.top<Math.max(document.documentElement.clientHeight,window.innerHeight)&&t.right>0&&t.left<Math.max(document.documentElement.clientWidth,window.innerWidth)}(e))return;let n=0!==P?t-P:0;P=t,0===C?R=!0:C<st&&(n=0),C++,x||(s.hasUserInteracted()?(x=!0,f=null,g=null,m=null,v=null,w=null):(null==f||f.update(n),null==g||g.update(n),null==m||m.update(n),null==v||v.update(n),null==w||w.update(n),null!=f&&(s.setTheta(f.get()),R=!0),null!=g&&(s.setPhi(g.get()),R=!0),null!=m&&(s.setFovRadians(m.get()),R=!0))),s.update()&&(R=!0),(null==y?void 0:y.update())&&(R=!0)},shouldRender_:()=>!(!b||S)&&R,render_:()=>{const t=mt.toneMapping,s=mt.toneMappingExposure;mt.toneMapping=h,mt.toneMappingExposure=M,mt.setViewport(0,0,e.width,e.height),mt.setClearColor(new ct.Color(16777215),E&&!A?1:0),mt.render(i,a),mt.toneMapping=t,mt.toneMappingExposure=s,R=!1,null!=o&&(o.clearRect(0,0,e.width,e.height),ut.width>0&&ut.height>0&&o.drawImage(ut,0,pt-e.height,e.width,e.height,0,0,e.width,e.height),n.style.visibility=T&&!x?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(L,q)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===L&&n===q&&ft===K||(e.width=Math.ceil(t*ft*gt),e.height=Math.ceil(n*ft*gt),L=t,q=n,K=ft,R=!0)},target_:e};return vt.set(e,X),X}function bt(){if(dt)return;lt=window.ShopAR__THREE,ct=lt.THREE,ut=document.createElement("canvas");var e,t;ut.style.position="block",mt=new ct.WebGLRenderer({powerPreference:"high-performance",canvas:ut,antialias:!0,alpha:!0}),mt.outputColorSpace=ct.SRGBColorSpace,mt.toneMapping=ct.ACESFilmicToneMapping,mt.setClearColor(new ct.Color(16777215),0),e=mt,t=lt,K||(z=t.THREE,H=e,B=new z.MeshDepthMaterial,B.userData.darkness={value:q},B.onBeforeCompile=e=>{e.uniforms.darkness=B.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},B.depthTest=!1,B.depthWrite=!1,V=new z.ShaderMaterial(t.HorizontalBlurShader),V.depthTest=!1,Q=new z.ShaderMaterial(t.VerticalBlurShader),Q.depthTest=!1,K=!0),At(),dt=!0}function Et(e){At(),mt.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of vt.values())t(e),n()&&r()}function At(){let e=0,t=0;for(const{target_:n}of vt.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=P();e=Math.ceil(e*n*gt),t=Math.ceil(t*n*gt),e===ht&&t===pt&&n===ft||(ht=e,pt=t,ft=n,mt.setSize(ht,pt,!1));for(const{updateSize_:e}of vt.values())e()}function St(e){e.traverse((e=>{var t;e instanceof ct.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(ot):ot(e.material))})),e.clear()}const Rt={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},Mt=Object.keys(Rt);function Tt(e){return Rt[e]}const xt="shopar-error";function Ct(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn",o.appendChild(r);{const e=document.createElement("span");e.textContent=t,o.appendChild(e)}o.ariaLabel=n;const i=o.style;return i.display="none",i.pointerEvents="auto",o}const Pt="shopar-control";const It="shopar-deepar-output";function kt(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function Lt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function Ut(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function Dt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const $t="shopar-main";const Ot="shopar-qr-output";function _t(e){var t,n;const r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("width",null!==(t=e.getAttribute("width"))&&void 0!==t?t:"1rem"),r.setAttribute("height",null!==(n=e.getAttribute("height"))&&void 0!==n?n:"1rem"),r.appendChild(e),r}function Nt(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","image");return n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",null!=t?t:"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E"),n.setAttribute("width",e),n.setAttribute("height",e),n}const jt="shopar-three-output";var Wt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Wt||(Wt={}));let Ft=!1;function qt(){Ft||(!function(){try{const e=document.createElement("style"),t=process.env.css;null!=t&&(e.innerHTML=t);const n=document.head;n.insertBefore(e,n.children[0])}catch(e){console.warn("Failed to write default ShopAR Plugin CSS.")}}(),Ft=!0)}function Gt(){qt();const e=function(){const e=document.createElement("div");e.id=$t;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),r=function(e,t){const n=document.createElement("div");n.id=Ot;const r=n.style;r.position="absolute",r.top="0",r.left="0",r.width="100%",r.height="100%",r.display="none",r.pointerEvents="auto",r.userSelect="none";const o=document.createElement("div");o.className="shopar-qr";const i=o.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(o),o.appendChild(e);const a=document.createElement("div");return a.appendChild(t),o.appendChild(a),n}(t,n);e.appendChild(r);const o=function(){const e=document.createElement("div");e.id=It;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(o);const i=function(){const e=document.createElement("canvas");e.id=jt,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:r}=n;return r.position="absolute",r.width="100%",r.height="100%",r.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=_t(Nt("2rem",`${M}/img/prompt/3d-interaction.svg`)),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=kt("shopar-ar-loading-container"),h=Lt("shopar-ar-loading-text",Tt("loading.ar"));d.appendChild(h);const p=Ut("shopar-ar-loading-bar-bg"),f=Dt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const g=kt("shopar-3d-loading-container"),m=Lt("shopar-3d-loading-text",Tt("loading.3d"));g.appendChild(m);const v=Ut("shopar-3d-loading-bar-bg"),w=Dt("shopar-3d-loading-bar-fg");v.appendChild(w),g.appendChild(v),e.appendChild(g);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",t.backgroundSize="contain",t.backgroundRepeat="no-repeat",t.backgroundPosition="center",e}();e.appendChild(y);const b=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),E=function(e){const t=document.createElement("div");t.id=xt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const r=document.createElement("div"),o=r.style;return o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",t.appendChild(r),r.appendChild(e),t}(b);e.appendChild(E);const A=function(){const e=document.createElement("div");return e.id=Pt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(A);const S=Nt("1.75rem"),R=Ct("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",_t(S));A.appendChild(R);const T=Nt("1.75rem"),x=Ct("shopar-btn-3d","3D","Launch ShopAR 3D preview",_t(T));A.appendChild(x);const C=Nt("1.75rem"),P=Ct("shopar-btn-close","Close","Close ShopAR view",_t(C));A.append(P);let I,k,L=Wt.None,U=!1,D=!1,$=!1,O=!1;function _(){f.classList.remove("active"),d.style.visibility="hidden"}function N(){y.style.visibility="hidden",w.classList.remove("active"),g.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return r},getQRImage:function(){return n},getDeepARTarget:function(){return o},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){b.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,r,o,i){var a;U=e,D=t,$=n,O=r,I=o,k=i,zt(A,U),zt(R,U&&($||D)&&L===Wt.None),zt(x,U&&O&&L===Wt.None),zt(P,U&&L!==Wt.None),_(),N(),U||""===(a=E).style.display&&zt(a,!1)},getUIState:function(){return L},setUIState:function(e){L=e,L===Wt.None?(_(),N(),U&&(zt(E,!1),zt(P,!1),(D||$)&&zt(R,!0),O&&zt(x,!0))):L===Wt.QR||L===Wt.AR?U&&(zt(E,!1),zt(R,!1),zt(x,O&&"AR"===k),zt(P,"AR"!==k)):L===Wt.Preview&&U&&(zt(E,!1),zt(R,(D||$)&&"3D"===k),zt(x,!1),zt(P,"3D"!==k))},setDefaultUIActions:function(e,t,n){U&&((D||$)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,r=`${M}/img/icons/${n}`;S.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(I),R.onclick=e),O&&(T.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/cube.svg`),x.onclick=t),C.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/close.svg`),P.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:_,startThreeLoading:function(){null!=y.dataset.bgSet?y.style.visibility="visible":(w.classList.add("active"),g.style.visibility="visible")},stopThreeLoading:N,setThreePosterUrl:function(e){null!=e?(y.style.backgroundImage=`url(${e})`,y.dataset.bgSet="true"):delete y.dataset.bgSet},showCameraError:function(){U&&zt(E,!0)}}}function zt(e,t){e.style.display=t?"":"none"}const Ht=new Map;function Bt(e){let t=Ht.get(e);return null==t?(t=function(){let e=0,t=null,n=null,r=null;const o=()=>(null==t&&(t=Gt()),t);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>t,findUI:o,findQR:()=>{if(null==n){const{getQRTarget:e,getQRImage:t}=o();n=C(e(),t())}return n},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=o();r=yt(e(),t(),n())}return r}}}(),Ht.set(e,t)):t.incrementSetupId_(),t}function Vt(e){for(const t of Ht.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===Wt.AR&&o(Wt.None)}}let Qt;const Kt=new Uint8Array(16);function Xt(){if(!Qt&&(Qt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Qt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Qt(Kt)}const Zt=[];for(let e=0;e<256;++e)Zt.push((e+256).toString(16).slice(1));var Yt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Jt(e,t,n){if(Yt.randomUUID&&!t&&!e)return Yt.randomUUID();const r=(e=e||{}).random||(e.rng||Xt)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return Zt[e[t+0]]+Zt[e[t+1]]+Zt[e[t+2]]+Zt[e[t+3]]+"-"+Zt[e[t+4]]+Zt[e[t+5]]+"-"+Zt[e[t+6]]+Zt[e[t+7]]+"-"+Zt[e[t+8]]+Zt[e[t+9]]+"-"+Zt[e[t+10]]+Zt[e[t+11]]+Zt[e[t+12]]+Zt[e[t+13]]+Zt[e[t+14]]+Zt[e[t+15]]}(r)}const en="qrLaunch",tn="arLaunch",nn="previewLaunch",rn="heartbeat";let on,an,sn=!1,ln=window.navigator.userAgent||"no user agent";const cn=[];function un(){null==on&&(an=Jt(),on=T(`${M}/shopar-analytics.js`),on.then((()=>{sn=!0,window.ShopAR__analytics.initializeImpl(),cn.forEach((e=>e()))})))}function dn(e){sn?e():cn.push(e)}function hn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function pn(e){return t(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.setAttribute("playsinline","playsinline"),t.srcObject=yield e,t}))}const fn=200,gn=10;let mn=!1,vn=null,wn=[],yn=[];function bn(e){return t(this,void 0,void 0,(function*(){mn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${M}/wasm/mediapipe`,e),vn&&clearInterval(vn);const r=[],o=[];vn=setInterval((()=>t(this,void 0,void 0,(function*(){if(mn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());mn||(null!=a&&null!=s&&function(e){for(let t of wn)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<gn||(r.shift(),o.shift(),function(e,t){for(let n of yn)n({faceWidth:e,IPD:t})}(An(r),An(o)))))}))),fn)}))}function En(){yn=[],wn=[],mn=!0}function An(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var Sn="undefined"!=typeof Float32Array?Float32Array:Array;function Rn(){var e=new Sn(16);return Sn!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Mn(e,t,n){var r=t[0],o=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],g=t[12],m=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*r+b*s+E*d+A*g,e[1]=y*o+b*l+E*h+A*m,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*r+b*s+E*d+A*g,e[5]=y*o+b*l+E*h+A*m,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*r+b*s+E*d+A*g,e[9]=y*o+b*l+E*h+A*m,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*r+b*s+E*d+A*g,e[13]=y*o+b*l+E*h+A*m,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Tn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function xn(e,t){var n=t[0],r=t[1],o=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,r,o),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function Cn(e,t,n,r){var o=t[0],i=t[1],a=t[2],s=t[3],l=o+o,c=i+i,u=a+a,d=o*l,h=o*c,p=o*u,f=i*c,g=i*u,m=a*u,v=s*l,w=s*c,y=s*u,b=r[0],E=r[1],A=r[2];return e[0]=(1-(f+m))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+m))*E,e[6]=(g+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(g-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Pn(){var e=new Sn(3);return Sn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function In(e,t,n){var r=new Sn(3);return r[0]=e,r[1]=t,r[2]=n,r}function kn(e,t){var n=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return Math.hypot(n,r,o)}function Ln(e,t,n){var r=t[0],o=t[1],i=t[2],a=n[3]*r+n[7]*o+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*r+n[4]*o+n[8]*i+n[12])/a,e[1]=(n[1]*r+n[5]*o+n[9]*i+n[13])/a,e[2]=(n[2]*r+n[6]*o+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function Un(){var e=new Sn(4);return Sn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}Pn(),function(){var e,t=(e=new Sn(4),Sn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Dn;let $n,On;Pn(),In(1,0,0),In(0,1,0),Un(),Un(),Dn=new Sn(9),Sn!=Float32Array&&(Dn[1]=0,Dn[2]=0,Dn[3]=0,Dn[5]=0,Dn[6]=0,Dn[7]=0),Dn[0]=1,Dn[4]=1,Dn[8]=1;let _n,Nn,jn,Wn,Fn=!0,qn=null;const Gn=new Set;let zn,Hn,Bn,Vn,Qn,Kn;function Xn(){null==$n&&($n=T(`${M}/shopar-deepar.js`))}function Zn(){null==On&&(On=T(`${M}/shopar-true-scale.js`))}function Yn(e){return t(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=e;return Qn=o,null==zn&&(zn=(()=>t(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new n("No camera available!");var e;const t=sr(jn),o=hn(t);_n=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:Wn,additionalOptions:{hint:Kn,cameraConfig:{disableDefaultCamera:!0}}}),Nn=yield pn(o),yield lr(_n,Nn,"user"===t),"Glasses"===jn&&(yield On,bn(Nn),"DetectionLoop"!==Qn&&hr((e=>{Vn=e.faceWidth})))})))()),zn}))}function Jn(e,t){var n,r;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===jn&&(n=t,r=Kn,n===r||null!=n&&null!=r&&n.length===r.length&&n.every((e=>r.find((t=>e===t))))&&r.every((e=>n.find((t=>t===e))))))||(null!=_n&&(_n.shutdown(),_n=null,zn=null),jn=e,Kn=t)}function er(e){e!==Wn&&(Wn=e,null!=_n&&_n.changePreviewElement(Wn))}function tr(e){qn=e}function nr(e){_n.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(Vn){const e=137/(Vn+5);_n.changeParameterVector("GLASSES","","scale",e,e,e,0),_n.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const r=ur("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=ur("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);_n.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),_n.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),En(),Vn=null}e(),cr("Glasses")}},_n.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),cr("Shoes"))},_n.callbacks.onWristTracked=t=>{t.detected&&(e(),cr("Watches"))}}function rr(e,n,r){return t(this,void 0,void 0,(function*(){return null!=Hn&&Bn===r||(yield Hn,Hn=_n.switchEffect(e,{envmap:n}),Bn=r),Hn}))}function or(e,t){null!=e&&null!=t&&(_n.setToneMapping(e),_n.setExposure(t))}function ir(){return t(this,void 0,void 0,(function*(){if(null!=_n){if(Fn=!1,null==Nn){const e=sr(jn),t=hn(e);Nn=yield pn(t),yield lr(_n,Nn,"user"===e),"Glasses"===jn&&(bn(Nn),"DetectionLoop"!==Qn&&hr((e=>{Vn=e.faceWidth})))}!function(){if(null==qn)return;if(null==jn||Gn.has(jn))return;qn.style.visibility="visible",qn.style.opacity="1"}(),_n.setPaused(Fn),Wn.style.display=""}}))}function ar(){null!=_n&&(Fn=!0,_n.setPaused(Fn),En(),null!=Nn&&null!=Nn.srcObject&&Nn.srcObject instanceof MediaStream&&(Nn.srcObject.getTracks().forEach((e=>e.stop())),Nn=null),function(){if(null==qn)return;qn.style.visibility="hidden",qn.style.opacity="0"}(),_n.stopCamera(),Wn.style.display="none")}function sr(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function lr(e,n,r){return t(this,void 0,void 0,(function*(){yield new Promise((o=>{n.onloadedmetadata=()=>{n.play().then((()=>t(this,void 0,void 0,(function*(){e.setVideoElement(n,r),o()}))))}}))}))}function cr(e){null!=qn&&(Gn.has(e)||(Gn.add(e),qn.style.opacity="0"))}function ur(e,t,n,r,o,i,a){const s=_n.getTransformationBetween(e,t),l=Tn(Pn(),s),c=function(e,t){var n=new Sn(3);xn(n,t);var r=1/n[0],o=1/n[1],i=1/n[2],a=t[0]*r,s=t[1]*o,l=t[2]*i,c=t[4]*r,u=t[5]*o,d=t[6]*i,h=t[8]*r,p=t[9]*o,f=t[10]*i,g=a+u+f,m=0;return g>0?(m=2*Math.sqrt(g+1),e[3]=.25*m,e[0]=(d-p)/m,e[1]=(h-l)/m,e[2]=(s-c)/m):a>u&&a>f?(m=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/m,e[0]=.25*m,e[1]=(s+c)/m,e[2]=(h+l)/m):u>f?(m=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/m,e[0]=(s+c)/m,e[1]=.25*m,e[2]=(d+p)/m):(m=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/m,e[0]=(h+l)/m,e[1]=(d+p)/m,e[2]=.25*m),e}(Un(),s);Cn(s,c,l,In(a,a,a));const u=_n.getTransformationBetween(t,n),d=Tn(Pn(),u);Cn(u,Un(),d,xn(Pn(),u));const h=Mn(Rn(),s,u),p=Tn(Pn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let g;try{g=_n.getTransformationBetween(n,r)}catch(e){return f}const m=Mn(Rn(),u,g),v=Mn(Rn(),s,m),w=In(p[0],i[1],i[2]),y=Ln(Pn(),w,function(e,t){var n=t[0],r=t[1],o=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],g=t[13],m=t[14],v=t[15],w=n*s-r*a,y=n*l-o*a,b=n*c-i*a,E=r*l-o*s,A=r*c-i*s,S=o*c-i*l,R=u*g-d*f,M=u*m-h*f,T=u*v-p*f,x=d*m-h*g,C=d*v-p*g,P=h*v-p*m,I=w*P-y*C+b*x+E*T-A*M+S*R;return I?(I=1/I,e[0]=(s*P-l*C+c*x)*I,e[1]=(o*C-r*P-i*x)*I,e[2]=(g*S-m*A+v*E)*I,e[3]=(h*A-d*S-p*E)*I,e[4]=(l*T-a*P-c*M)*I,e[5]=(n*P-o*T+i*M)*I,e[6]=(m*b-f*S-v*y)*I,e[7]=(u*S-h*b+p*y)*I,e[8]=(a*C-s*T+c*R)*I,e[9]=(r*T-n*C-i*R)*I,e[10]=(f*A-g*b+v*w)*I,e[11]=(d*b-u*A-p*w)*I,e[12]=(s*M-a*x-l*R)*I,e[13]=(n*x-r*M+o*R)*I,e[14]=(g*y-f*E-m*w)*I,e[15]=(u*E-d*y+h*w)*I,e):null}(Rn(),v));let b=_n.getClosestPointOnMesh(r,y);try{const e=_n.getClosestPointOnMesh(o,y);kn(y,e)<kn(y,b)&&(b=e)}catch(e){}const E=Ln(Pn(),b,m);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function dr(e){!function(e){wn.push(e)}(e)}function hr(e){!function(e){yn.push(e)}(e)}var pr;function fr(){return[pr.Android,pr.iOS,pr.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],r=["Win32","Win64","Windows","WinCE"],o=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==o.indexOf(t)?pr.iOS:-1!==n.indexOf(t)?i?pr.Tablet:pr.MacOS:-1!==r.indexOf(t)?pr.Windows:/Android/.test(e)?pr.Android:/Linux/.test(t)?pr.Linux:i?pr.Tablet:pr.Unknown}return pr.Unknown}())}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(pr||(pr={}));const gr=["AR","3D"];function mr(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function vr(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function wr(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function yr(e){const{apiKey:t,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;mr(t,"apiKey"),wr(t,"apiKey"),mr(r,"sku"),wr(r,"sku"),mr(o,"targetElement"),function(e,t){if(!(e instanceof HTMLElement))throw new n(`'${t}' must be an HTMLElement.`)}(o,"targetElement"),null!=i&&function(e,t,r){if("string"!=typeof e)throw new n(`'${t}' must be a string.`);if(!r.includes(e))throw new n(`'${t}' must be ${r.join("' or '")}.`)}(i,"initialState",gr),null!=a&&function(e,t){if("string"!=typeof e&&!Array.isArray(e))throw new n(`'${t}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&wr(s,"baseUrl"),null!=l&&vr(l,"defaultUI"),null!=c&&vr(c,"interactive"),null!=u&&function(e,t,r){for(const o of r){const r=e[o];if(null!=r&&"string"!=typeof r)throw new n(`Value for key '${o}' in '${t}' must be a string.`)}}(u,"strings",Mt)}let br=!1;function Er(e){return t(this,void 0,void 0,(function*(){const{targetElement:r}=e;M.update(e.baseUrl),un();const{trackEvent:o}=function(e){const t=performance.now(),n=Jt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:S,userAgent:ln,sessionId:an,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),dn((()=>{window.ShopAR__analytics.trackEventImpl(r,o)}))}}}(e.apiKey);o("visionSetup");const i=yield function(e){return t(this,void 0,void 0,(function*(){const r=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:e,sid:d()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield r.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(e.apiKey);o("visionApiResponse",i);const{arKey:a}=i,s=Bt(r),{getSetupId:l,findUI:c}=s,u=l();Xn(),Zn();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:g,getUIState:m,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(m()!=Wt.None)throw Error("UI state is not None, this is weird..");v(Wt.AR),h(r),g(!1,!1,!0,!1,void 0,void 0),w(),yield $n,Ar(l(),u);try{o("visionArLaunch"),ar(),Jn("Glasses",["faceInit"]),er(p()),yield Yn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),Ar(l(),u),yield ir(),Ar(l(),u)}catch(e){const t=e instanceof Error;throw o("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),b(),ar(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{y()}return br=!0,{registerFacePoseListener:e=>{br&&(o("registerFacePoseListener"),dr(e))},registerFaceMeasurementListener:e=>{br&&(o("registerFaceMeasurementListener"),hr(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){br&&(o("switchEffect",{arUrl:e}),function(e){_n.switchEffect(e)}(e))})),clearEffect:()=>{br&&(o("clearEffect"),_n.clearEffect())},close:()=>{if(br){if(br=!1,o("visionClose"),m()!==Wt.AR)throw new n("AR not launched.");ar(),v(Wt.None)}}}}))}function Ar(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function Sr(e){var r,o;return t(this,void 0,void 0,(function*(){yr(e);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=e,u=null==e.zoomEnabled||e.zoomEnabled,h=!0===e.alwaysTransparentBackground;!function(e){const t=getComputedStyle(e);if(!["static","relative"].includes(t.position))throw new n(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${t.position}'.`)}(s),M.update(e.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(Rt,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(Rt[t]=n)}}(e.strings);const p=null!=c?Ce(c):null,y=null!=(null==p?void 0:p.theta)?de(p.theta):null,b=null!=(null==p?void 0:p.phi)?de(p.phi):null,R=null!=(null==p?void 0:p.fov)?de(p.fov):null,T=function(e,r,o,i,a,s){return t(this,void 0,void 0,(function*(){const l=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:e,sku:r,sid:d()},null!=o&&{yaw:`${m(g(o))}`}),null!=i&&{pitch:`${m(g(i))}`}),null!=a&&{fov:`${m(g(a))}`}),s&&{forcedTransparency:`${s}`}))}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield l.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==b?void 0:b.get(),null==R?void 0:R.get(),h),x=Bt(s),{getSetupId:C,findUI:P,findQR:I,findThree:k}=x,U=C();un();const{trackEvent:D,arInteracted:$,previewInteracted:O}=function(e,t){const n=performance.now(),r=Jt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(rn,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:ln,pluginVersion:S,sessionId:an,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),dn((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);D("setup",{hostname:window.location.hostname});const _=yield T;D("apiResponse",_);const{category:N,arUrl:j,arEnvUrl:W,arToneMapping:F,arToneMappingExposure:q,arKey:G,arPromptEnabled:z,arPromptText:H,arPromptImage:B,previewUrl:V,previewEnvUrl:Q,previewToneMapping:K,previewToneMappingExposure:X,previewPosterUrl:Z,cameraErrorText:Y,qrPromptText:J}=_;Rr(C(),U);const ee=null!=j&&function(e){return null!=e&&v.includes(e)}(N),te=null==(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled),ne=ee&&function(e){return null!=e&&w.includes(e)}(N),re=te&&ne&&!fr(),oe=ee&&!re,ie=null!=V;Rr(C(),U);const{setTargetElement:ae,getDeepARTarget:se,getDeepARPrompt:le,customizeDeepARPrompt:ce,customizeCameraError:ue,customizeQRPrompt:he,setVisibilityParameters:pe,getUIState:fe,setUIState:ge,setDefaultUIActions:me,startDeepARLoading:ve,stopDeepARLoading:we,startThreeLoading:ye,stopThreeLoading:be,setThreePosterUrl:Ee,showCameraError:Ae}=P();ae(s);pe(null==e.defaultUI||e.defaultUI,re,oe,ie,N,l),ce(null!=H?H:"",null!=B?B:""),ue(Y),he(J),Ee(Z),function(e,t){const r=e.parentNode;if(null==r)throw new n("Parent node missing.");new MutationObserver((n=>{for(const r of n)for(const n of r.removedNodes)if(n===e)return void t()})).observe(r,{childList:!0})}(s,(()=>{fe()!==Wt.QR||Se()||Me(),fe()!==Wt.AR||Fn||ar(),fe()!==Wt.Preview||Ie()||Le(),ge(Wt.None),Ue(),function(e){Ht.delete(e)}(s)}));const{qrPaused:Se,qrDraw:Re,qrPause:Me}=I(),{threeInit:Te,threeParse:xe,threeLoad:Pe,threePaused:Ie,threeResume:ke,threePause:Le,threeDestroy:Ue,threeSetZoomEnabled:De,threeSetForcedTransparency:$e,threeSetToneMapping:Oe,threeIsInteractive:_e,threeSetInteractive:Ne,threeSetOnInteracted:je,threeInitPromptAnimation:We,threeInitThetaAnimation:Fe,threeInitPhiAnimation:qe,threeInitFovAnimation:Ge,threeRenderOnce:ze}=k(),He=null==e.interactive||e.interactive;Ne(He);let Be=0;if(fe()===Wt.QR){if(!Se())if(re){D(en);try{yield Re(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Me(),ge(Wt.None)}else if(fe()===Wt.AR){if(!Fn)if(oe&&!br){D(tn),Xn(),"Glasses"===N&&Zn();const e=null!=W?yield E(W):void 0;Rr(C(),U);const t=yield E(j);Rr(C(),U),Vt(x),Jn(N),er(se()),tr(z?le():null),yield rr(t,e,`${j}${W}`),or(F,q),nr($),Rr(C(),U)}else ar(),ge(Wt.None)}else if(fe()===Wt.Preview&&!Ie())if(ie){D(nn),wt(),ye();const e=255,t=yield A(V,(new Date).getTime()+e,Math.random()*e);Rr(C(),U);const n=null!=Q?Q:`${M}/env/default.hdr`,r=yield E(n);Rr(C(),U),yield it,Rr(C(),U),Te(),Rr(C(),U);const o=n.endsWith(".hdr")?L.HDR:L.EXR,i=yield xe(t,r,`${V}${Q}`,o);Rr(C(),U),Pe(i,N),De(u),$e(h),Oe(null!=K?K:"ACES",null!=X?X:1),je(O),We(),null!=p&&(Fe(y),qe(b),Ge(R)),ze(),ke(),be()}else Le(),ge(Wt.None);const Ve=()=>t(this,void 0,void 0,(function*(){if(re)try{D(en);const e=++Be;if(fe()===Wt.Preview&&ie&&!Ie()&&Le(),ge(Wt.QR),yield Re(i,a),Be!==e)return;return void Rr(C(),U)}catch(e){const t=e instanceof Error;throw D("qrLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`QR failed: ${t?e.message:"Unknown error."}`)}if(!oe)throw new n("Model does not have AR enabled.");try{D(tn);const e=++Be;fe()===Wt.Preview&&ie&&!Ie()&&Le(),Vt(x),ge(Wt.AR),Xn(),"Glasses"===N&&Zn(),ve();const t=null!=W?yield E(W):void 0;Rr(C(),U);const n=yield E(j);if(Be!==e)return;if(Rr(C(),U),yield $n,Be!==e)return;if(Rr(C(),U),ar(),Jn(N),er(se()),tr(z?le():null),yield Yn({licenseKey:G}),Be!==e)return;if(Rr(C(),U),yield rr(n,t,`${j}${W}`),or(F,q),nr($),Be!==e)return;if(Rr(C(),U),yield ir(),Be!==e)return;Rr(C(),U)}catch(e){const t=e instanceof Error;throw D("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Ae(),ar(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{we()}})),Qe=()=>t(this,void 0,void 0,(function*(){if(!ie)throw new n("Model does not have 3D enabled.");try{D(nn);const e=++Be;fe()===Wt.AR&&(oe&&!Fn&&ar(),Me()),ge(Wt.Preview),wt(),ye();const t=255,n=yield A(V,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;Rr(C(),U);const r=null!=Q?Q:`${M}/env/default.hdr`,o=yield E(r);if(Be!==e)return;if(Rr(C(),U),yield it,Be!==e)return;if(Rr(C(),U),Te(),Be!==e)return;Rr(C(),U);const i=r.endsWith(".hdr")?L.HDR:L.EXR,a=yield xe(n,o,`${V}${Q}`,i);if(Be!==e)return;Rr(C(),U),Pe(a,N),De(u),$e(h),Oe(null!=K?K:"ACES",null!=X?X:1),je(O),We(),null!=p&&(Fe(y),qe(b),Ge(R)),ze(),ke(),be()}catch(e){const t=e instanceof Error;throw D("previewLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`3D failed: ${t?e.message:"Unknown error."}`)}})),Ke=()=>t(this,void 0,void 0,(function*(){fe()!==Wt.None&&("AR"!==l||fe()!==Wt.AR&&fe()!==Wt.QR)&&("3D"===l&&fe()===Wt.Preview||(++Be,fe()===Wt.QR||fe()===Wt.AR?(oe&&!Fn&&ar(),Me()):fe()===Wt.Preview&&ie&&!Ie()&&Le(),ge(Wt.None),"AR"!==l?"3D"!==l||(yield Qe()):yield Ve()))}));return me(Ve,Qe,Ke),"AR"===l?(yield Ve(),Rr(C(),U)):"3D"===l&&(yield Qe(),Rr(C(),U)),br=!1,{launchAR:ee?Ve:void 0,launch3D:ie?Qe:void 0,closeAR:ee?()=>t(this,void 0,void 0,(function*(){fe()!==Wt.AR&&fe()!==Wt.QR||"AR"!==l&&(++Be,oe&&!Fn&&ar(),Me(),ge(Wt.None),"3D"!==l||(yield Qe()))})):void 0,close3D:ie?()=>t(this,void 0,void 0,(function*(){fe()===Wt.Preview&&"3D"!==l&&(++Be,ie&&!Ie()&&Le(),ge(Wt.None),"AR"!==l||(yield Ve()))})):void 0,close:ee||ie?Ke:void 0,isInteractive:()=>_e(),setInteractive:e=>Ne(e)}}))}function Rr(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const Mr={setup:function(e){return t(this,void 0,void 0,(function*(){return Er(e)}))}},Tr={setup:function(e){return t(this,void 0,void 0,(function*(){return function(e,r){return t(this,void 0,void 0,(function*(){try{return r()}catch(t){throw t instanceof Error?new n(`${e} failed: ${t.message}`):(console.error(t),new n(`${e} failed.`))}}))}("setup",(()=>Sr(e)))}))},version:S};e.PREVIEW_STATES=gr,e.PluginError=n,e.plugin=Tr,e.vision=Mr}));
|