shopar-plugin 0.7.3-alpha.4 → 0.7.3-alpha.5

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.3-alpha.4";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;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,P,T,k=!1;let L=!1;function U(e){const t=function(e){const t=new P.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,P.ClampToEdgeWrapping,P.ClampToEdgeWrapping,P.LinearFilter,P.LinearFilter,1,P.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(T.parse(e));return t.mapping=P.EquirectangularReflectionMapping,t.colorSpace=P.LinearSRGBColorSpace,t}const $=45,D=45,O=3,N=1.5,_=1,j=.5;let F,W,q,G,z,B=!1;const Q=4,V=.001,K=1e-7,H=10,X=11,Z=1/(X-1),Y="function"==typeof Float32Array;function J(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 ie;const o=Y?new Float32Array(X):new Array(X);for(let t=0;t<X;++t)o[t]=re(t*Z,e,n);function i(t){let r=0,i=1;const a=X-1;for(;i!==a&&o[i]<=t;++i)r+=Z;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*Z,l=oe(s,e,n);return l>=V?function(e,t,n,r){for(let o=0;o<Q;++o){const o=oe(t,n,r);if(0===o)return t;t-=(re(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=re(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>K&&++s<H);return a}(t,r,r+Z,e,n)}return function(e){return 0===e||1===e?e:re(i(e),t,r)}}function ee(e,t){return 1-3*t+3*e}function te(e,t){return 3*t-6*e}function ne(e){return 3*e}function re(e,t,n){return((ee(t,n)*e+te(t,n))*e+ne(t))*e}function oe(e,t,n){return 3*ee(t,n)*e*e+2*te(t,n)*e+ne(t)}function ie(e){return e}function ae(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=J(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function se(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:ae(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 le="#",ce="time",ue="interpolation",de="yaw",he="pitch",pe="fov",fe=[ce,de,he,pe,ue],me="s",ge="ms",ve=1e3,we="deg",ye="rad",be=Math.PI/180,Ee="ease-in-out",Ae="cubic-bezier(",Se=")";function Me(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(le);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(!fe.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(ce))throw new Error(`Missing required token: '${ce}'.`);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}=Re(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:Ee);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*be,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*be,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*be,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 Re(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(ce),o=function(e){if(e.endsWith(ge))return Pe(e.substring(0,e.length-ge.length));if(e.endsWith(me))return Pe(e.substring(0,e.length-me.length))*ve;return Pe(e)}(n[r]),i=e.indexOf(ue),a=Ce(-1===i?Ee: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 de:s.theta={time:o,value:xe(c),interpolation:a};break;case he:s.phi={time:o,value:xe(c),interpolation:a};break;case pe:s.fov={time:o,value:xe(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function xe(e){return e.endsWith(we)?Pe(e.substring(0,e.length-we.length))*be:e.endsWith(ye)?Pe(e.substring(0,e.length-ye.length)):Pe(e)*be}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(Ae)&&e.endsWith(Se)){const t=e.substring(Ae.length,e.length-Se.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:Pe(t[0]),y1:Pe(t[1]),x2:Pe(t[2]),y2:Pe(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ie(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Pe(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Te=300,ke=2e3,Le=.05,Ue=2*Math.PI/32,$e=Ce("hold"),De=Ce("sine"),Oe=Ce("sine-in"),Ne=Ce("sine-out");const _e=8,je=2*Math.PI,Fe=je/12,We=je/60,qe=je/60,Ge=60,ze=60,Be=1e3,Qe=Ge*ze,Ve=-1;const Ke=["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 He(e){null!=e&&(e.dispose(),Ke.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let Xe;const Ze=0,Ye=3;let Je,et,tt,nt=!1,rt=1,ot=1,it=1;const at=1;let st;const lt=new Map;function ct(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,C=!1,_=0,B=0,Q=1,V=1,K=1;const H={threeInit:()=>{b||(ut(),i=new et.Scene,a=new et.PerspectiveCamera(25,1,.5),s=new Je.OrbitControls(a,t),s.setInteractionEnabled(x),h=et.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new F.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new F.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new F.Group;r.position.y=-.7;const o=new F.PlaneGeometry($,D).rotateX(Math.PI/2),i=new F.MeshBasicMaterial({map:t.texture,opacity:j,transparent:!0,depthWrite:!1}),a=new F.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new F.Mesh(o);s.visible=!1,r.add(s);const l=new F.OrthographicCamera(-$/2,$/2,D/2,-D/2,0,O);function c(e){s.visible=!0,G.uniforms.tDiffuse.value=t.texture,G.uniforms.h.value=1*e/256,s.material=G,W.setRenderTarget(n),W.render(s,l),z.uniforms.tDiffuse.value=n.texture,z.uniforms.v.value=1*e/256,s.material=z,W.setRenderTarget(t),W.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=q;const r=W.getClearAlpha();W.setClearAlpha(0),W.setRenderTarget(t),W.render(e,l),e.overrideMaterial=null,c(N),c(.4*N),W.setRenderTarget(null),W.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=Je,L||(P=r.THREE,T=new r.RGBELoader,L=!0),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=U(n),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}(st,Je),o=t,I.parseAsync(o.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{pt(i),i.add(e.scene);const n=(new et.Box3).setFromObject(e.scene);l.position.y=n.min.y-Ze,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof et.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(Je.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,et.Vector3)),_=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=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-o.getTime())<Be/_e)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=Ve*Fe*(i+a/Ge+s/Qe)),null!=n&&(n.rotation.y=Ve*We*(a+s/ze)),null!=r&&(r.rotation.y=Ve*qe*(s+l/Be)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,st.setAnimationLoop(dt),t.style.visibility="visible",B=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of lt.values())if(!e())return!1;return!0}()&&st.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var e;pt(i),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=null,i=null,u=null,y=null,lt.delete(t)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:et.ACESFilmicToneMapping,Linear:et.LinearToneMapping,Neutral:et.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=se([{time:0,value:e,interpolation:$e},{time:Te,value:e,interpolation:Ne},{time:Te+ke/4,value:e+Ue,interpolation:De},{time:Te+3*ke/4,value:e-Ue,interpolation:Oe},{time:Te+ke,value:e,interpolation:$e},{time:Te+2*ke,value:e,interpolation:$e}]),s.setTheta(f.get()),m=null,g=null,v=se([{time:0,value:0,interpolation:$e},{time:Te,value:1,interpolation:$e},{time:Te+ke,value:0,interpolation:$e},{time:Te+2*ke,value:0,interpolation:$e}]),w=se([{time:0,value:0,interpolation:$e},{time:Te,value:0,interpolation:Ne},{time:Te+ke/4,value:-Le,interpolation:De},{time:Te+3*ke/4,value:Le,interpolation:Oe},{time:Te+ke,value:0,interpolation:$e},{time:Te+2*ke,value:0,interpolation:$e}])},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())},preRender_:e=>{if(!b||S)return;let t=0!==B?e-B:0;B=e,0===_?M=!0:_<Ye&&(t=0),_++,C||(s.hasUserInteracted()?(C=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(t),null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),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=st.toneMapping,s=st.toneMappingExposure;st.toneMapping=h,st.toneMappingExposure=R,st.setViewport(0,0,t.width,t.height),st.setClearColor(new et.Color(16777215),E&&!A?1:0),st.render(i,a),st.toneMapping=e,st.toneMappingExposure=s,M=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),tt.width>0&&tt.height>0&&o.drawImage(tt,0,ot-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=x&&!C?"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&&it===K||(t.width=Math.ceil(e*it*at),t.height=Math.ceil(n*it*at),Q=e,V=n,K=it,M=!0)},target_:t};return lt.set(t,H),H}function ut(){if(nt)return;Je=window.ShopAR__THREE,et=Je.THREE,tt=document.createElement("canvas");var e,t;tt.style.position="block",st=new et.WebGLRenderer({powerPreference:"high-performance",canvas:tt,antialias:!0,alpha:!0}),st.outputColorSpace=et.SRGBColorSpace,st.toneMapping=et.ACESFilmicToneMapping,st.setClearColor(new et.Color(16777215),0),e=st,t=Je,B||(F=t.THREE,W=e,q=new F.MeshDepthMaterial,q.userData.darkness={value:_},q.onBeforeCompile=e=>{e.uniforms.darkness=q.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}`},q.depthTest=!1,q.depthWrite=!1,G=new F.ShaderMaterial(t.HorizontalBlurShader),G.depthTest=!1,z=new F.ShaderMaterial(t.VerticalBlurShader),z.depthTest=!1,B=!0),ht(),nt=!0}function dt(e){ht(),st.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of lt.values())t(e),n()&&r()}function ht(){let e=0,t=0;for(const{target_:n}of lt.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*at),t=Math.ceil(t*n*at),e===rt&&t===ot&&n===it||(rt=e,ot=t,it=n,st.setSize(rt,ot,!1));for(const{updateSize_:e}of lt.values())e()}function pt(e){e.traverse((e=>{var t;e instanceof et.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(He):He(e.material))})),e.clear()}const ft={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},mt=Object.keys(ft);function gt(e){return ft[e]}const vt="shopar-error";function wt(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 yt="shopar-control";const bt="shopar-deepar-output";function Et(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 At(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function St(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 Mt(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 Rt="shopar-main";const xt="shopar-qr-output";function Ct(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 It(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 Pt="shopar-three-output";var Tt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Tt||(Tt={}));let kt=!1;function Lt(){kt||(!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.")}}(),kt=!0)}function Ut(){Lt();const e=function(){const e=document.createElement("div");e.id=Rt;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=xt;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=bt;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=Pt,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=Ct(It("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=Et("shopar-ar-loading-container"),h=At("shopar-ar-loading-text",gt("loading.ar"));d.appendChild(h);const p=St("shopar-ar-loading-bar-bg"),f=Mt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=Et("shopar-3d-loading-container"),g=At("shopar-3d-loading-text",gt("loading.3d"));m.appendChild(g);const v=St("shopar-3d-loading-bar-bg"),w=Mt("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",e}(),b=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(b),e.appendChild(y);const E=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),A=function(e){const t=document.createElement("div");t.id=vt;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}(E);e.appendChild(A);const S=function(){const e=document.createElement("div");return e.id=yt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(S);const R=It("1.75rem"),x=wt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",Ct(R));S.appendChild(x);const C=It("1.75rem"),I=wt("shopar-btn-3d","3D","Launch ShopAR 3D preview",Ct(C));S.appendChild(I);const P=It("1.75rem"),T=wt("shopar-btn-close","Close","Close ShopAR view",Ct(P));S.append(T);let k,L,U=Tt.None,$=!1,D=!1,O=!1,N=!1;function _(){f.classList.remove("active"),d.style.visibility="hidden"}function j(){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){E.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;$=e,D=t,O=n,N=r,k=o,L=i,$t(S,$),$t(x,$&&(O||D)&&U===Tt.None),$t(I,$&&N&&U===Tt.None),$t(T,$&&U!==Tt.None),_(),j(),$||""===(a=A).style.display&&$t(a,!1)},getUIState:function(){return U},setUIState:function(e){U=e,U===Tt.None?(_(),j(),$&&($t(A,!1),$t(T,!1),(D||O)&&$t(x,!0),N&&$t(I,!0))):U===Tt.QR||U===Tt.AR?$&&($t(A,!1),$t(x,!1),$t(I,N&&"AR"===L),$t(T,"AR"!==L)):U===Tt.Preview&&$&&($t(A,!1),$t(x,(D||O)&&"3D"===L),$t(I,!1),$t(T,"3D"!==L))},setDefaultUIActions:function(e,t,n){$&&((D||O)&&(!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}`;R.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(k),x.onclick=e),N&&(C.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/cube.svg`),I.onclick=t),P.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/close.svg`),T.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:_,startThreeLoading:function(){null!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:j,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){$&&$t(A,!0)}}}function $t(e,t){e.style.display=t?"":"none"}const Dt=new Map;function Ot(t){let n=Dt.get(t);return null==n?(n=function(){let t=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=Ut()),n);return{getSetupId:()=>t,incrementSetupId_:()=>t++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==r){const{getQRTarget:t,getQRImage:n}=i();r=function(t,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>e(this,void 0,void 0,(function*(){yield x;const e=`https://ar.shopar.ai/${A.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(e),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,r=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){r=!0,t.style.display="none"}))}}(t(),n())}return r},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();o=ct(e(),t(),n())}return o}}}(),Dt.set(t,n)):n.incrementSetupId_(),n}function Nt(e){for(const t of Dt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===Tt.AR&&o(Tt.None)}}let _t;const jt=new Uint8Array(16);function Ft(){if(!_t&&(_t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!_t))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return _t(jt)}const Wt=[];for(let e=0;e<256;++e)Wt.push((e+256).toString(16).slice(1));var qt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Gt(e,t,n){if(qt.randomUUID&&!t&&!e)return qt.randomUUID();const r=(e=e||{}).random||(e.rng||Ft)();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 Wt[e[t+0]]+Wt[e[t+1]]+Wt[e[t+2]]+Wt[e[t+3]]+"-"+Wt[e[t+4]]+Wt[e[t+5]]+"-"+Wt[e[t+6]]+Wt[e[t+7]]+"-"+Wt[e[t+8]]+Wt[e[t+9]]+"-"+Wt[e[t+10]]+Wt[e[t+11]]+Wt[e[t+12]]+Wt[e[t+13]]+Wt[e[t+14]]+Wt[e[t+15]]}(r)}const zt="qrLaunch",Bt="arLaunch",Qt="previewLaunch",Vt="heartbeat";let Kt,Ht,Xt=!1,Zt=window.navigator.userAgent||"no user agent";const Yt=[];function Jt(){null==Kt&&(Ht=Gt(),Kt=R(`${M}/shopar-analytics.js`),Kt.then((()=>{Xt=!0,window.ShopAR__analytics.initializeImpl(),Yt.forEach((e=>e()))})))}function en(e){Xt?e():Yt.push(e)}function tn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function nn(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 rn=200,on=10;let an=!1,sn=null,ln=[],cn=[];function un(t){return e(this,void 0,void 0,(function*(){an=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${M}/wasm/mediapipe`,t),sn&&clearInterval(sn);const r=[],o=[];sn=setInterval((()=>e(this,void 0,void 0,(function*(){if(an)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());an||(null!=a&&null!=s&&function(e){for(let t of ln)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<on||(r.shift(),o.shift(),function(e,t){for(let n of cn)n({faceWidth:e,IPD:t})}(hn(r),hn(o)))))}))),rn)}))}function dn(){cn=[],ln=[],an=!0}function hn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var pn="undefined"!=typeof Float32Array?Float32Array:Array;function fn(){var e=new pn(16);return pn!=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],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 gn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function vn(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 wn(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 yn(){var e=new pn(3);return pn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function bn(e,t,n){var r=new pn(3);return r[0]=e,r[1]=t,r[2]=n,r}function En(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 An(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 Sn(){var e=new pn(4);return pn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}yn(),function(){var e,t=(e=new pn(4),pn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Mn;let Rn,xn,Cn;yn(),bn(1,0,0),bn(0,1,0),Sn(),Sn(),Mn=new pn(9),pn!=Float32Array&&(Mn[1]=0,Mn[2]=0,Mn[3]=0,Mn[5]=0,Mn[6]=0,Mn[7]=0),Mn[0]=1,Mn[4]=1,Mn[8]=1;let In,Pn,Tn,kn,Ln=!0,Un=null;const $n=new Set;let Dn,On,Nn,_n,jn,Fn;function Wn(){null==Rn&&(Rn=R(`${M}/shopar-deepar.js`))}function qn(){null==xn&&(xn=R(`${M}/shopar-true-scale.js`))}function Gn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return jn=o,null==Dn&&(Dn=(()=>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=Yn(Tn),o=tn(n);In=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:kn,additionalOptions:{hint:Fn,cameraConfig:{disableDefaultCamera:!0}}}),Pn=yield nn(o),yield Jn(In,Pn,"user"===n),"Glasses"===Tn&&(yield xn,un(Pn),"DetectionLoop"!==jn&&rr((e=>{_n=e.faceWidth})))})))()),Dn}))}function zn(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===Tn&&(n=t,r=Fn,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!=In&&(In.shutdown(),In=null,Dn=null),Tn=e,Fn=t)}function Bn(e){e!==kn&&(kn=e,null!=In&&In.changePreviewElement(kn))}function Qn(e){Un=e}function Vn(e){In.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(_n){const e=137/(_n+5);In.changeParameterVector("GLASSES","","scale",e,e,e,0),In.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=tr("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=tr("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);In.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),In.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),dn(),_n=null}e(),er("Glasses")}},In.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),er("Shoes"))},In.callbacks.onWristTracked=t=>{t.detected&&(e(),er("Watches"))}}function Kn(t,n,r){return e(this,void 0,void 0,(function*(){return null!=On&&Nn===r||(yield On,On=In.switchEffect(t,{envmap:n}),Nn=r),On}))}function Hn(e,t){null!=e&&null!=t&&(In.setToneMapping(e),In.setExposure(t))}function Xn(){return e(this,void 0,void 0,(function*(){if(null!=In){if(Ln=!1,null==Pn){const e=Yn(Tn),t=tn(e);Pn=yield nn(t),yield Jn(In,Pn,"user"===e),"Glasses"===Tn&&(un(Pn),"DetectionLoop"!==jn&&rr((e=>{_n=e.faceWidth})))}!function(){if(null==Un)return;if(null==Tn||$n.has(Tn))return;Un.style.visibility="visible",Un.style.opacity="1"}(),In.setPaused(Ln),kn.style.display=""}}))}function Zn(){null!=In&&(Ln=!0,In.setPaused(Ln),dn(),null!=Pn&&null!=Pn.srcObject&&Pn.srcObject instanceof MediaStream&&(Pn.srcObject.getTracks().forEach((e=>e.stop())),Pn=null),function(){if(null==Un)return;Un.style.visibility="hidden",Un.style.opacity="0"}(),In.stopCamera(),kn.style.display="none")}function Yn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Jn(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 er(e){null!=Un&&($n.has(e)||($n.add(e),Un.style.opacity="0"))}function tr(e,t,n,r,o,i,a){const s=In.getTransformationBetween(e,t),l=gn(yn(),s),c=function(e,t){var n=new pn(3);vn(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}(Sn(),s);wn(s,c,l,bn(a,a,a));const u=In.getTransformationBetween(t,n),d=gn(yn(),u);wn(u,Sn(),d,vn(yn(),u));const h=mn(fn(),s,u),p=gn(yn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=In.getTransformationBetween(n,r)}catch(e){return f}const g=mn(fn(),u,m),v=mn(fn(),s,g),w=bn(p[0],i[1],i[2]),y=An(yn(),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,C=d*g-h*m,I=d*v-p*m,P=h*v-p*g,T=w*P-y*I+b*C+E*x-A*R+S*M;return T?(T=1/T,e[0]=(s*P-l*I+c*C)*T,e[1]=(o*I-r*P-i*C)*T,e[2]=(m*S-g*A+v*E)*T,e[3]=(h*A-d*S-p*E)*T,e[4]=(l*x-a*P-c*R)*T,e[5]=(n*P-o*x+i*R)*T,e[6]=(g*b-f*S-v*y)*T,e[7]=(u*S-h*b+p*y)*T,e[8]=(a*I-s*x+c*M)*T,e[9]=(r*x-n*I-i*M)*T,e[10]=(f*A-m*b+v*w)*T,e[11]=(d*b-u*A-p*w)*T,e[12]=(s*R-a*C-l*M)*T,e[13]=(n*C-r*R+o*M)*T,e[14]=(m*y-f*E-g*w)*T,e[15]=(u*E-d*y+h*w)*T,e):null}(fn(),v));let b=In.getClosestPointOnMesh(r,y);try{const e=In.getClosestPointOnMesh(o,y);En(y,e)<En(y,b)&&(b=e)}catch(e){}const E=An(yn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function nr(e){!function(e){ln.push(e)}(e)}function rr(e){!function(e){cn.push(e)}(e)}var or;function ir(){return[or.Android,or.iOS,or.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)?or.iOS:-1!==n.indexOf(t)?i?or.Tablet:or.MacOS:-1!==r.indexOf(t)?or.Windows:/Android/.test(e)?or.Android:/Linux/.test(t)?or.Linux:i?or.Tablet:or.Unknown}return or.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"}(or||(or={}));const ar=["AR","3D"];function sr(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function lr(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function cr(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function ur(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;sr(n,"apiKey"),cr(n,"apiKey"),sr(r,"sku"),cr(r,"sku"),sr(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",ar),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&&cr(s,"baseUrl"),null!=l&&lr(l,"defaultUI"),null!=c&&lr(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",mt)}let dr=!1;function hr(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;M.update(n.baseUrl),Jt();const{trackEvent:o}=function(e){const t=performance.now(),n=Gt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:A,userAgent:Zt,sessionId:Ht,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),en((()=>{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=Ot(r),{getSetupId:l,findUI:c}=s,d=l();Wn(),qn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=Tt.None)throw Error("UI state is not None, this is weird..");v(Tt.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield Rn,pr(l(),d);try{o("visionArLaunch"),Zn(),zn("Glasses",["faceInit"]),Bn(f()),yield Gn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),pr(l(),d),yield Xn(),pr(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),b(),Zn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{y()}return dr=!0,{registerFacePoseListener:e=>{dr&&(o("registerFacePoseListener"),nr(e))},registerFaceMeasurementListener:e=>{dr&&(o("registerFaceMeasurementListener"),rr(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){dr&&(o("switchEffect",{arUrl:t}),function(e){In.switchEffect(e)}(t))})),clearEffect:()=>{dr&&(o("clearEffect"),In.clearEffect())},close:()=>{if(dr){if(dr=!1,o("visionClose"),g()!==Tt.AR)throw new t("AR not launched.");Zn(),v(Tt.None)}}}}))}function pr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function fr(n){var r,o;return e(this,void 0,void 0,(function*(){ur(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(ft,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(ft[t]=n)}}(n.strings);const w=null!=c?Me(c):null,y=null!=(null==w?void 0:w.theta)?se(w.theta):null,S=null!=(null==w?void 0:w.phi)?se(w.phi):null,C=null!=(null==w?void 0:w.fov)?se(w.fov):null,I=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==C?void 0:C.get(),h),P=Ot(s),{getSetupId:T,findUI:k,findQR:L,findThree:U}=P,$=T();Jt();const{trackEvent:D,arInteracted:O,previewInteracted:N}=function(e,t){const n=performance.now(),r=Gt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(Vt,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Zt,pluginVersion:A,sessionId:Ht,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),en((()=>{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 I;D("apiResponse",_);const{category:j,arUrl:F,arEnvUrl:W,arToneMapping:q,arToneMappingExposure:G,arKey:z,arPromptEnabled:B,arPromptText:Q,arPromptImage:V,previewUrl:K,previewEnvUrl:H,previewToneMapping:X,previewToneMappingExposure:Z,previewPosterUrl:Y,cameraErrorText:J,qrPromptText:ee}=_;mr(T(),$);const te=null!=F&&function(e){return null!=e&&g.includes(e)}(j),ne=null==(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled),re=te&&function(e){return null!=e&&v.includes(e)}(j),oe=ne&&re&&!ir(),ie=te&&!oe,ae=null!=K;mr(T(),$);const{setTargetElement:le,getDeepARTarget:ce,getDeepARPrompt:ue,customizeDeepARPrompt:de,customizeCameraError:he,customizeQRPrompt:pe,setVisibilityParameters:fe,getUIState:me,setUIState:ge,setDefaultUIActions:ve,startDeepARLoading:we,stopDeepARLoading:ye,startThreeLoading:be,stopThreeLoading:Ee,setThreePosterUrl:Ae,showCameraError:Se}=k();le(s);if(fe(null==n.defaultUI||n.defaultUI,oe,ie,ae,j,l),de(null!=Q?Q:"",null!=V?V:""),he(J),pe(ee),Ae(Y),oe&&function(){e(this,void 0,void 0,(function*(){null==x&&(x=R(`${M}/shopar-qr.js`))}))}(),ie&&(Wn(),function(e){e!==Cn&&(Cn=e,b(e),On=null,dn())}(F),"Glasses"===j&&qn(),null!=W&&b(W)),ae){null==Xe&&(Xe=R(`${M}/shopar-three.js`));const e=255;E(K,(new Date).getTime()+e,Math.random()*e),b(null!=H?H:`${M}/env/default.hdr`)}!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,(()=>{me()!==Tt.QR||Re()||Ce(),me()!==Tt.AR||Ln||Zn(),me()!==Tt.Preview||ke()||Ue(),ge(Tt.None),$e(),function(e){Dt.delete(e)}(s)}));const{qrPaused:Re,qrDraw:xe,qrPause:Ce}=L(),{threeInit:Ie,threeParse:Pe,threeLoad:Te,threePaused:ke,threeResume:Le,threePause:Ue,threeDestroy:$e,threeSetZoomEnabled:De,threeSetForcedTransparency:Oe,threeSetToneMapping:Ne,threeIsInteractive:_e,threeSetInteractive:je,threeSetOnInteracted:Fe,threeInitPromptAnimation:We,threeInitThetaAnimation:qe,threeInitPhiAnimation:Ge,threeInitFovAnimation:ze}=U(),Be=null==n.interactive||n.interactive;je(Be);let Qe=0;if(me()===Tt.QR){if(!Re())if(oe){D(zt);try{yield xe(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Ce(),ge(Tt.None)}else if(me()===Tt.AR){if(!Ln)if(ie&&!dr){D(Bt);const e=null!=W?yield b(W):void 0;mr(T(),$);const t=yield b(F);mr(T(),$),Nt(P),zn(j),Bn(ce()),Qn(B?ue():null),yield Kn(t,e,`${F}${W}`),Hn(q,G),Vn(O),mr(T(),$)}else Zn(),ge(Tt.None)}else if(me()===Tt.Preview&&!ke())if(ae){D(Qt),be();const e=255,t=yield E(K,(new Date).getTime()+e,Math.random()*e);mr(T(),$);const n=yield b(null!=H?H:`${M}/env/default.hdr`);mr(T(),$);const r=yield Pe(t,n,`${K}${H}`);mr(T(),$),Te(r,j),De(d),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=w&&(qe(y),Ge(S),ze(C)),Ee()}else Ue(),ge(Tt.None);const Ve=()=>e(this,void 0,void 0,(function*(){if(oe){if(me()===Tt.QR||me()===Tt.AR)return;try{D(zt);const e=++Qe;if(me()===Tt.Preview&&ae&&!ke()&&Ue(),ge(Tt.QR),yield xe(i,a),Qe!==e)return;return void mr(T(),$)}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(!ie)throw new t("Model does not have AR enabled.");if(me()!==Tt.AR)try{D(Bt);const e=++Qe;me()===Tt.Preview&&ae&&!ke()&&Ue(),Nt(P),ge(Tt.AR),we();const t=null!=W?yield b(W):void 0;mr(T(),$);const n=yield b(F);if(Qe!==e)return;if(mr(T(),$),yield Rn,Qe!==e)return;if(mr(T(),$),Zn(),zn(j),Bn(ce()),Qn(B?ue():null),yield Gn({licenseKey:z}),Qe!==e)return;if(mr(T(),$),yield Kn(n,t,`${F}${W}`),Hn(q,G),Vn(O),Qe!==e)return;if(mr(T(),$),yield Xn(),Qe!==e)return;mr(T(),$)}catch(e){const n=e instanceof Error;throw D("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Se(),Zn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ye()}})),Ke=()=>e(this,void 0,void 0,(function*(){if(!ae)throw new t("Model does not have 3D enabled.");if(me()!==Tt.Preview)try{D(Qt);const e=++Qe;me()===Tt.AR&&(ie&&!Ln&&Zn(),Ce()),ge(Tt.Preview),be();const t=255,n=yield E(K,(new Date).getTime()+t,Math.random()*t);if(Qe!==e)return;mr(T(),$);const r=yield b(null!=H?H:`${M}/env/default.hdr`);if(Qe!==e)return;if(mr(T(),$),yield Xe,Qe!==e)return;if(mr(T(),$),Ie(),Qe!==e)return;mr(T(),$);const o=yield Pe(n,r,`${K}${H}`);if(Qe!==e)return;mr(T(),$),Te(o,j),De(d),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=w&&(qe(y),Ge(S),ze(C)),Le()}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."}`)}finally{Ee()}})),He=()=>e(this,void 0,void 0,(function*(){me()!==Tt.None&&(++Qe,me()===Tt.QR||me()===Tt.AR?(ie&&!Ln&&Zn(),Ce()):me()===Tt.Preview&&ae&&!ke()&&Ue(),ge(Tt.None),"AR"!==l?"3D"!==l||(yield Ke()):yield Ve())}));return ve(Ve,Ke,He),"AR"===l?(yield Ve(),mr(T(),$)):"3D"===l&&(yield Ke(),mr(T(),$)),dr=!1,{launchAR:te?Ve:void 0,launch3D:ae?Ke:void 0,closeAR:te?()=>e(this,void 0,void 0,(function*(){me()!==Tt.AR&&me()!==Tt.QR||(++Qe,ie&&!Ln&&Zn(),Ce(),ge(Tt.None),"3D"!==l||(yield Ke()))})):void 0,close3D:ae?()=>e(this,void 0,void 0,(function*(){me()===Tt.Preview&&(++Qe,ae&&!ke()&&Ue(),ge(Tt.None),"AR"!==l||(yield Ve()))})):void 0,close:te||ae?He:void 0,isInteractive:()=>_e(),setInteractive:e=>je(e)}}))}function mr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const gr={setup:function(t){return e(this,void 0,void 0,(function*(){return hr(t)}))}},vr={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",(()=>fr(n)))}))},version:A};export{ar as PREVIEW_STATES,t as PluginError,vr as plugin,gr 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 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.3-alpha.5";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;const I=(()=>{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 C,P,T,k=!1;let L=!1;function U(e){const t=function(e){const t=new P.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,P.ClampToEdgeWrapping,P.ClampToEdgeWrapping,P.LinearFilter,P.LinearFilter,1,P.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(T.parse(e));return t.mapping=P.EquirectangularReflectionMapping,t.colorSpace=P.LinearSRGBColorSpace,t}const $=45,D=45,O=3,N=1.5,_=1,j=.5;let F,W,q,G,z,B=!1;const Q=4,V=.001,K=1e-7,H=10,X=11,Z=1/(X-1),Y="function"==typeof Float32Array;function J(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 ie;const o=Y?new Float32Array(X):new Array(X);for(let t=0;t<X;++t)o[t]=re(t*Z,e,n);function i(t){let r=0,i=1;const a=X-1;for(;i!==a&&o[i]<=t;++i)r+=Z;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*Z,l=oe(s,e,n);return l>=V?function(e,t,n,r){for(let o=0;o<Q;++o){const o=oe(t,n,r);if(0===o)return t;t-=(re(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=re(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>K&&++s<H);return a}(t,r,r+Z,e,n)}return function(e){return 0===e||1===e?e:re(i(e),t,r)}}function ee(e,t){return 1-3*t+3*e}function te(e,t){return 3*t-6*e}function ne(e){return 3*e}function re(e,t,n){return((ee(t,n)*e+te(t,n))*e+ne(t))*e}function oe(e,t,n){return 3*ee(t,n)*e*e+2*te(t,n)*e+ne(t)}function ie(e){return e}function ae(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=J(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function se(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:ae(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 le="#",ce="time",ue="interpolation",de="yaw",he="pitch",pe="fov",fe=[ce,de,he,pe,ue],me="s",ge="ms",ve=1e3,we="deg",ye="rad",be=Math.PI/180,Ee="ease-in-out",Ae="cubic-bezier(",Se=")";function Me(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(le);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(!fe.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(ce))throw new Error(`Missing required token: '${ce}'.`);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}=Re(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:Ee);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*be,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*be,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*be,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 Re(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(ce),o=function(e){if(e.endsWith(ge))return Pe(e.substring(0,e.length-ge.length));if(e.endsWith(me))return Pe(e.substring(0,e.length-me.length))*ve;return Pe(e)}(n[r]),i=e.indexOf(ue),a=Ie(-1===i?Ee: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 de:s.theta={time:o,value:xe(c),interpolation:a};break;case he:s.phi={time:o,value:xe(c),interpolation:a};break;case pe:s.fov={time:o,value:xe(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function xe(e){return e.endsWith(we)?Pe(e.substring(0,e.length-we.length))*be:e.endsWith(ye)?Pe(e.substring(0,e.length-ye.length)):Pe(e)*be}function Ie(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ce(0,0,1,1);if("sine"===e)return Ce(.37,0,.63,1);if("sine-in"===e)return Ce(.12,0,.39,0);if("sine-out"===e)return Ce(.61,1,.88,1);if("ease"===e)return Ce(.25,.1,.25,1);if("ease-in"===e)return Ce(.42,0,1,1);if("ease-out"===e)return Ce(0,0,.58,1);if("ease-in-out"===e)return Ce(.42,0,.58,1);if(e.startsWith(Ae)&&e.endsWith(Se)){const t=e.substring(Ae.length,e.length-Se.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:Pe(t[0]),y1:Pe(t[1]),x2:Pe(t[2]),y2:Pe(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ce(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Pe(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Te=300,ke=2e3,Le=.05,Ue=2*Math.PI/32,$e=Ie("hold"),De=Ie("sine"),Oe=Ie("sine-in"),Ne=Ie("sine-out");const _e=8,je=2*Math.PI,Fe=je/12,We=je/60,qe=je/60,Ge=60,ze=60,Be=1e3,Qe=Ge*ze,Ve=-1;const Ke=["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 He(e){null!=e&&(e.dispose(),Ke.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let Xe;const Ze=0,Ye=3;let Je,et,tt,nt=!1,rt=1,ot=1,it=1;const at=1;let st;const lt=new Map;function ct(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,E=!1,A=!1,S=!1,M=!0,R=!1,x=1,I=!0,_=!1,B=0,Q=0,V=!1,K=1,H=1,X=1;const Z={threeInit:()=>{E||(ut(),i=new et.Scene,a=new et.PerspectiveCamera(25,1,.5),s=new Je.OrbitControls(a,t),s.setInteractionEnabled(I),h=et.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new F.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new F.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new F.Group;r.position.y=-.7;const o=new F.PlaneGeometry($,D).rotateX(Math.PI/2),i=new F.MeshBasicMaterial({map:t.texture,opacity:j,transparent:!0,depthWrite:!1}),a=new F.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new F.Mesh(o);s.visible=!1,r.add(s);const l=new F.OrthographicCamera(-$/2,$/2,D/2,-D/2,0,O);function c(e){s.visible=!0,G.uniforms.tDiffuse.value=t.texture,G.uniforms.h.value=1*e/256,s.material=G,W.setRenderTarget(n),W.render(s,l),z.uniforms.tDiffuse.value=n.texture,z.uniforms.v.value=1*e/256,s.material=z,W.setRenderTarget(t),W.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=q;const r=W.getClearAlpha();W.setClearAlpha(0),W.setRenderTarget(t),W.render(e,l),e.overrideMaterial=null,c(N),c(.4*N),W.setRenderTarget(null),W.setClearAlpha(r),e.background=n}}}(i)),E=!0,f=new IntersectionObserver((e=>{for(const n of e)if(n.target===t)return void(V=n.isIntersecting)}),{root:null,rootMargin:"0px",threshold:1e-5}),f.observe(t))},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=Je,L||(P=r.THREE,T=new r.RGBELoader,L=!0),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=U(n),function(e,t){if(k)return;const{THREE:n}=t;C=(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}(st,Je),o=t,C.parseAsync(o.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{pt(i),i.add(e.scene);const n=(new et.Box3).setFromObject(e.scene);l.position.y=n.min.y-Ze,i.add(l),c(),A=!1,i.traverse((e=>{if(e instanceof et.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(A=!0)})):t.transmission>0&&(A=!0)}}));const r=n.min.clone().add(n.max).divideScalar(2),o=Math.sqrt(Je.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,et.Vector3)),B=0,b="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=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-o.getTime())<Be/_e)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=Ve*Fe*(i+a/Ge+s/Qe)),null!=n&&(n.rotation.y=Ve*We*(a+s/ze)),null!=r&&(r.rotation.y=Ve*qe*(s+l/Be)),!0}}}(e.scene):null},threePaused:()=>M,threeResume:()=>{M=!1,st.setAnimationLoop(dt),t.style.visibility="visible",Q=0,null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset(),null==y||y.reset()},threePause:()=>{M=!0,function(){for(const{threePaused:e}of lt.values())if(!e())return!1;return!0}()&&st.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var e;pt(i),f.disconnect(),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=null,i=null,u=null,b=null,lt.delete(t)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{S=e},threeSetToneMapping:(e,t)=>{const n={ACES:et.ACESFilmicToneMapping,Linear:et.LinearToneMapping,Neutral:et.NeutralToneMapping};null!=n[e]&&(h=n[e]),x=t},threeIsInteractive:()=>I,threeSetInteractive:e=>{I=e,null==s||s.setInteractionEnabled(I)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),m=se([{time:0,value:e,interpolation:$e},{time:Te,value:e,interpolation:Ne},{time:Te+ke/4,value:e+Ue,interpolation:De},{time:Te+3*ke/4,value:e-Ue,interpolation:Oe},{time:Te+ke,value:e,interpolation:$e},{time:Te+2*ke,value:e,interpolation:$e}]),s.setTheta(m.get()),g=null,v=null,w=se([{time:0,value:0,interpolation:$e},{time:Te,value:1,interpolation:$e},{time:Te+ke,value:0,interpolation:$e},{time:Te+2*ke,value:0,interpolation:$e}]),y=se([{time:0,value:0,interpolation:$e},{time:Te,value:0,interpolation:Ne},{time:Te+ke/4,value:-Le,interpolation:De},{time:Te+3*ke/4,value:Le,interpolation:Oe},{time:Te+ke,value:0,interpolation:$e},{time:Te+2*ke,value:0,interpolation:$e}])},threeInitThetaAnimation:e=>{m=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{g=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{v=e,null!=e&&s.setFovRadians(e.get())},preRender_:e=>{if(!E||M||!V)return;let t=0!==Q?e-Q:0;Q=e,0===B?R=!0:B<Ye&&(t=0),B++,_||(s.hasUserInteracted()?(_=!0,m=null,g=null,v=null,w=null,y=null):(null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),null==y||y.update(t),null!=m&&(s.setTheta(m.get()),R=!0),null!=g&&(s.setPhi(g.get()),R=!0),null!=v&&(s.setFovRadians(v.get()),R=!0))),s.update()&&(R=!0),(null==b?void 0:b.update())&&(R=!0)},shouldRender_:()=>!(!E||M)&&R,render_:()=>{const e=st.toneMapping,s=st.toneMappingExposure;st.toneMapping=h,st.toneMappingExposure=x,st.setViewport(0,0,t.width,t.height),st.setClearColor(new et.Color(16777215),A&&!S?1:0),st.render(i,a),st.toneMapping=e,st.toneMappingExposure=s,R=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),tt.width>0&&tt.height>0&&o.drawImage(tt,0,ot-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=I&&!_?"visible":"hidden",null!=w&&(r.style.opacity=`${w.get()}`),null!=y&&(r.style.transform=`translateX(${y.get()*Math.min(K,H)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===K&&n===H&&it===X||(t.width=Math.ceil(e*it*at),t.height=Math.ceil(n*it*at),K=e,H=n,X=it,R=!0)},target_:t};return lt.set(t,Z),Z}function ut(){if(nt)return;Je=window.ShopAR__THREE,et=Je.THREE,tt=document.createElement("canvas");var e,t;tt.style.position="block",st=new et.WebGLRenderer({powerPreference:"high-performance",canvas:tt,antialias:!0,alpha:!0}),st.outputColorSpace=et.SRGBColorSpace,st.toneMapping=et.ACESFilmicToneMapping,st.setClearColor(new et.Color(16777215),0),e=st,t=Je,B||(F=t.THREE,W=e,q=new F.MeshDepthMaterial,q.userData.darkness={value:_},q.onBeforeCompile=e=>{e.uniforms.darkness=q.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}`},q.depthTest=!1,q.depthWrite=!1,G=new F.ShaderMaterial(t.HorizontalBlurShader),G.depthTest=!1,z=new F.ShaderMaterial(t.VerticalBlurShader),z.depthTest=!1,B=!0),ht(),nt=!0}function dt(e){ht(),st.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of lt.values())t(e),n()&&r()}function ht(){let e=0,t=0;for(const{target_:n}of lt.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=I();e=Math.ceil(e*n*at),t=Math.ceil(t*n*at),e===rt&&t===ot&&n===it||(rt=e,ot=t,it=n,st.setSize(rt,ot,!1));for(const{updateSize_:e}of lt.values())e()}function pt(e){e.traverse((e=>{var t;e instanceof et.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(He):He(e.material))})),e.clear()}const ft={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},mt=Object.keys(ft);function gt(e){return ft[e]}const vt="shopar-error";function wt(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 yt="shopar-control";const bt="shopar-deepar-output";function Et(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 At(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function St(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 Mt(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 Rt="shopar-main";const xt="shopar-qr-output";function It(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 Ct(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 Pt="shopar-three-output";var Tt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Tt||(Tt={}));let kt=!1;function Lt(){kt||(!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.")}}(),kt=!0)}function Ut(){Lt();const e=function(){const e=document.createElement("div");e.id=Rt;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=xt;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=bt;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=Pt,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=It(Ct("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=Et("shopar-ar-loading-container"),h=At("shopar-ar-loading-text",gt("loading.ar"));d.appendChild(h);const p=St("shopar-ar-loading-bar-bg"),f=Mt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=Et("shopar-3d-loading-container"),g=At("shopar-3d-loading-text",gt("loading.3d"));m.appendChild(g);const v=St("shopar-3d-loading-bar-bg"),w=Mt("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",e}(),b=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(b),e.appendChild(y);const E=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),A=function(e){const t=document.createElement("div");t.id=vt;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}(E);e.appendChild(A);const S=function(){const e=document.createElement("div");return e.id=yt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(S);const R=Ct("1.75rem"),x=wt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",It(R));S.appendChild(x);const I=Ct("1.75rem"),C=wt("shopar-btn-3d","3D","Launch ShopAR 3D preview",It(I));S.appendChild(C);const P=Ct("1.75rem"),T=wt("shopar-btn-close","Close","Close ShopAR view",It(P));S.append(T);let k,L,U=Tt.None,$=!1,D=!1,O=!1,N=!1;function _(){f.classList.remove("active"),d.style.visibility="hidden"}function j(){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){E.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;$=e,D=t,O=n,N=r,k=o,L=i,$t(S,$),$t(x,$&&(O||D)&&U===Tt.None),$t(C,$&&N&&U===Tt.None),$t(T,$&&U!==Tt.None),_(),j(),$||""===(a=A).style.display&&$t(a,!1)},getUIState:function(){return U},setUIState:function(e){U=e,U===Tt.None?(_(),j(),$&&($t(A,!1),$t(T,!1),(D||O)&&$t(x,!0),N&&$t(C,!0))):U===Tt.QR||U===Tt.AR?$&&($t(A,!1),$t(x,!1),$t(C,N&&"AR"===L),$t(T,"AR"!==L)):U===Tt.Preview&&$&&($t(A,!1),$t(x,(D||O)&&"3D"===L),$t(C,!1),$t(T,"3D"!==L))},setDefaultUIActions:function(e,t,n){$&&((D||O)&&(!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}`;R.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(k),x.onclick=e),N&&(I.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/cube.svg`),C.onclick=t),P.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/close.svg`),T.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:_,startThreeLoading:function(){null!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:j,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){$&&$t(A,!0)}}}function $t(e,t){e.style.display=t?"":"none"}const Dt=new Map;function Ot(t){let n=Dt.get(t);return null==n?(n=function(){let t=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=Ut()),n);return{getSetupId:()=>t,incrementSetupId_:()=>t++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==r){const{getQRTarget:t,getQRImage:n}=i();r=function(t,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>e(this,void 0,void 0,(function*(){yield x;const e=`https://ar.shopar.ai/${A.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(e),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,r=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){r=!0,t.style.display="none"}))}}(t(),n())}return r},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();o=ct(e(),t(),n())}return o}}}(),Dt.set(t,n)):n.incrementSetupId_(),n}function Nt(e){for(const t of Dt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===Tt.AR&&o(Tt.None)}}let _t;const jt=new Uint8Array(16);function Ft(){if(!_t&&(_t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!_t))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return _t(jt)}const Wt=[];for(let e=0;e<256;++e)Wt.push((e+256).toString(16).slice(1));var qt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Gt(e,t,n){if(qt.randomUUID&&!t&&!e)return qt.randomUUID();const r=(e=e||{}).random||(e.rng||Ft)();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 Wt[e[t+0]]+Wt[e[t+1]]+Wt[e[t+2]]+Wt[e[t+3]]+"-"+Wt[e[t+4]]+Wt[e[t+5]]+"-"+Wt[e[t+6]]+Wt[e[t+7]]+"-"+Wt[e[t+8]]+Wt[e[t+9]]+"-"+Wt[e[t+10]]+Wt[e[t+11]]+Wt[e[t+12]]+Wt[e[t+13]]+Wt[e[t+14]]+Wt[e[t+15]]}(r)}const zt="qrLaunch",Bt="arLaunch",Qt="previewLaunch",Vt="heartbeat";let Kt,Ht,Xt=!1,Zt=window.navigator.userAgent||"no user agent";const Yt=[];function Jt(){null==Kt&&(Ht=Gt(),Kt=R(`${M}/shopar-analytics.js`),Kt.then((()=>{Xt=!0,window.ShopAR__analytics.initializeImpl(),Yt.forEach((e=>e()))})))}function en(e){Xt?e():Yt.push(e)}function tn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function nn(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 rn=200,on=10;let an=!1,sn=null,ln=[],cn=[];function un(t){return e(this,void 0,void 0,(function*(){an=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${M}/wasm/mediapipe`,t),sn&&clearInterval(sn);const r=[],o=[];sn=setInterval((()=>e(this,void 0,void 0,(function*(){if(an)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());an||(null!=a&&null!=s&&function(e){for(let t of ln)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<on||(r.shift(),o.shift(),function(e,t){for(let n of cn)n({faceWidth:e,IPD:t})}(hn(r),hn(o)))))}))),rn)}))}function dn(){cn=[],ln=[],an=!0}function hn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var pn="undefined"!=typeof Float32Array?Float32Array:Array;function fn(){var e=new pn(16);return pn!=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],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 gn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function vn(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 wn(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 yn(){var e=new pn(3);return pn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function bn(e,t,n){var r=new pn(3);return r[0]=e,r[1]=t,r[2]=n,r}function En(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 An(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 Sn(){var e=new pn(4);return pn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}yn(),function(){var e,t=(e=new pn(4),pn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Mn;let Rn,xn,In;yn(),bn(1,0,0),bn(0,1,0),Sn(),Sn(),Mn=new pn(9),pn!=Float32Array&&(Mn[1]=0,Mn[2]=0,Mn[3]=0,Mn[5]=0,Mn[6]=0,Mn[7]=0),Mn[0]=1,Mn[4]=1,Mn[8]=1;let Cn,Pn,Tn,kn,Ln=!0,Un=null;const $n=new Set;let Dn,On,Nn,_n,jn,Fn;function Wn(){null==Rn&&(Rn=R(`${M}/shopar-deepar.js`))}function qn(){null==xn&&(xn=R(`${M}/shopar-true-scale.js`))}function Gn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return jn=o,null==Dn&&(Dn=(()=>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=Yn(Tn),o=tn(n);Cn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:kn,additionalOptions:{hint:Fn,cameraConfig:{disableDefaultCamera:!0}}}),Pn=yield nn(o),yield Jn(Cn,Pn,"user"===n),"Glasses"===Tn&&(yield xn,un(Pn),"DetectionLoop"!==jn&&rr((e=>{_n=e.faceWidth})))})))()),Dn}))}function zn(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===Tn&&(n=t,r=Fn,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!=Cn&&(Cn.shutdown(),Cn=null,Dn=null),Tn=e,Fn=t)}function Bn(e){e!==kn&&(kn=e,null!=Cn&&Cn.changePreviewElement(kn))}function Qn(e){Un=e}function Vn(e){Cn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(_n){const e=137/(_n+5);Cn.changeParameterVector("GLASSES","","scale",e,e,e,0),Cn.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=tr("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=tr("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Cn.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),Cn.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),dn(),_n=null}e(),er("Glasses")}},Cn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),er("Shoes"))},Cn.callbacks.onWristTracked=t=>{t.detected&&(e(),er("Watches"))}}function Kn(t,n,r){return e(this,void 0,void 0,(function*(){return null!=On&&Nn===r||(yield On,On=Cn.switchEffect(t,{envmap:n}),Nn=r),On}))}function Hn(e,t){null!=e&&null!=t&&(Cn.setToneMapping(e),Cn.setExposure(t))}function Xn(){return e(this,void 0,void 0,(function*(){if(null!=Cn){if(Ln=!1,null==Pn){const e=Yn(Tn),t=tn(e);Pn=yield nn(t),yield Jn(Cn,Pn,"user"===e),"Glasses"===Tn&&(un(Pn),"DetectionLoop"!==jn&&rr((e=>{_n=e.faceWidth})))}!function(){if(null==Un)return;if(null==Tn||$n.has(Tn))return;Un.style.visibility="visible",Un.style.opacity="1"}(),Cn.setPaused(Ln),kn.style.display=""}}))}function Zn(){null!=Cn&&(Ln=!0,Cn.setPaused(Ln),dn(),null!=Pn&&null!=Pn.srcObject&&Pn.srcObject instanceof MediaStream&&(Pn.srcObject.getTracks().forEach((e=>e.stop())),Pn=null),function(){if(null==Un)return;Un.style.visibility="hidden",Un.style.opacity="0"}(),Cn.stopCamera(),kn.style.display="none")}function Yn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Jn(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 er(e){null!=Un&&($n.has(e)||($n.add(e),Un.style.opacity="0"))}function tr(e,t,n,r,o,i,a){const s=Cn.getTransformationBetween(e,t),l=gn(yn(),s),c=function(e,t){var n=new pn(3);vn(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}(Sn(),s);wn(s,c,l,bn(a,a,a));const u=Cn.getTransformationBetween(t,n),d=gn(yn(),u);wn(u,Sn(),d,vn(yn(),u));const h=mn(fn(),s,u),p=gn(yn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=Cn.getTransformationBetween(n,r)}catch(e){return f}const g=mn(fn(),u,m),v=mn(fn(),s,g),w=bn(p[0],i[1],i[2]),y=An(yn(),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,I=d*g-h*m,C=d*v-p*m,P=h*v-p*g,T=w*P-y*C+b*I+E*x-A*R+S*M;return T?(T=1/T,e[0]=(s*P-l*C+c*I)*T,e[1]=(o*C-r*P-i*I)*T,e[2]=(m*S-g*A+v*E)*T,e[3]=(h*A-d*S-p*E)*T,e[4]=(l*x-a*P-c*R)*T,e[5]=(n*P-o*x+i*R)*T,e[6]=(g*b-f*S-v*y)*T,e[7]=(u*S-h*b+p*y)*T,e[8]=(a*C-s*x+c*M)*T,e[9]=(r*x-n*C-i*M)*T,e[10]=(f*A-m*b+v*w)*T,e[11]=(d*b-u*A-p*w)*T,e[12]=(s*R-a*I-l*M)*T,e[13]=(n*I-r*R+o*M)*T,e[14]=(m*y-f*E-g*w)*T,e[15]=(u*E-d*y+h*w)*T,e):null}(fn(),v));let b=Cn.getClosestPointOnMesh(r,y);try{const e=Cn.getClosestPointOnMesh(o,y);En(y,e)<En(y,b)&&(b=e)}catch(e){}const E=An(yn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function nr(e){!function(e){ln.push(e)}(e)}function rr(e){!function(e){cn.push(e)}(e)}var or;function ir(){return[or.Android,or.iOS,or.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)?or.iOS:-1!==n.indexOf(t)?i?or.Tablet:or.MacOS:-1!==r.indexOf(t)?or.Windows:/Android/.test(e)?or.Android:/Linux/.test(t)?or.Linux:i?or.Tablet:or.Unknown}return or.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"}(or||(or={}));const ar=["AR","3D"];function sr(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function lr(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function cr(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function ur(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;sr(n,"apiKey"),cr(n,"apiKey"),sr(r,"sku"),cr(r,"sku"),sr(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",ar),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&&cr(s,"baseUrl"),null!=l&&lr(l,"defaultUI"),null!=c&&lr(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",mt)}let dr=!1;function hr(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;M.update(n.baseUrl),Jt();const{trackEvent:o}=function(e){const t=performance.now(),n=Gt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:A,userAgent:Zt,sessionId:Ht,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),en((()=>{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=Ot(r),{getSetupId:l,findUI:c}=s,d=l();Wn(),qn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=Tt.None)throw Error("UI state is not None, this is weird..");v(Tt.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield Rn,pr(l(),d);try{o("visionArLaunch"),Zn(),zn("Glasses",["faceInit"]),Bn(f()),yield Gn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),pr(l(),d),yield Xn(),pr(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),b(),Zn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{y()}return dr=!0,{registerFacePoseListener:e=>{dr&&(o("registerFacePoseListener"),nr(e))},registerFaceMeasurementListener:e=>{dr&&(o("registerFaceMeasurementListener"),rr(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){dr&&(o("switchEffect",{arUrl:t}),function(e){Cn.switchEffect(e)}(t))})),clearEffect:()=>{dr&&(o("clearEffect"),Cn.clearEffect())},close:()=>{if(dr){if(dr=!1,o("visionClose"),g()!==Tt.AR)throw new t("AR not launched.");Zn(),v(Tt.None)}}}}))}function pr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function fr(n){var r,o;return e(this,void 0,void 0,(function*(){ur(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(ft,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(ft[t]=n)}}(n.strings);const w=null!=c?Me(c):null,y=null!=(null==w?void 0:w.theta)?se(w.theta):null,S=null!=(null==w?void 0:w.phi)?se(w.phi):null,I=null!=(null==w?void 0:w.fov)?se(w.fov):null,C=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==I?void 0:I.get(),h),P=Ot(s),{getSetupId:T,findUI:k,findQR:L,findThree:U}=P,$=T();Jt();const{trackEvent:D,arInteracted:O,previewInteracted:N}=function(e,t){const n=performance.now(),r=Gt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(Vt,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Zt,pluginVersion:A,sessionId:Ht,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),en((()=>{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 C;D("apiResponse",_);const{category:j,arUrl:F,arEnvUrl:W,arToneMapping:q,arToneMappingExposure:G,arKey:z,arPromptEnabled:B,arPromptText:Q,arPromptImage:V,previewUrl:K,previewEnvUrl:H,previewToneMapping:X,previewToneMappingExposure:Z,previewPosterUrl:Y,cameraErrorText:J,qrPromptText:ee}=_;mr(T(),$);const te=null!=F&&function(e){return null!=e&&g.includes(e)}(j),ne=null==(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled),re=te&&function(e){return null!=e&&v.includes(e)}(j),oe=ne&&re&&!ir(),ie=te&&!oe,ae=null!=K;mr(T(),$);const{setTargetElement:le,getDeepARTarget:ce,getDeepARPrompt:ue,customizeDeepARPrompt:de,customizeCameraError:he,customizeQRPrompt:pe,setVisibilityParameters:fe,getUIState:me,setUIState:ge,setDefaultUIActions:ve,startDeepARLoading:we,stopDeepARLoading:ye,startThreeLoading:be,stopThreeLoading:Ee,setThreePosterUrl:Ae,showCameraError:Se}=k();le(s);if(fe(null==n.defaultUI||n.defaultUI,oe,ie,ae,j,l),de(null!=Q?Q:"",null!=V?V:""),he(J),pe(ee),Ae(Y),oe&&function(){e(this,void 0,void 0,(function*(){null==x&&(x=R(`${M}/shopar-qr.js`))}))}(),ie&&(Wn(),function(e){e!==In&&(In=e,b(e),On=null,dn())}(F),"Glasses"===j&&qn(),null!=W&&b(W)),ae){null==Xe&&(Xe=R(`${M}/shopar-three.js`));const e=255;E(K,(new Date).getTime()+e,Math.random()*e),b(null!=H?H:`${M}/env/default.hdr`)}!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,(()=>{me()!==Tt.QR||Re()||Ie(),me()!==Tt.AR||Ln||Zn(),me()!==Tt.Preview||ke()||Ue(),ge(Tt.None),$e(),function(e){Dt.delete(e)}(s)}));const{qrPaused:Re,qrDraw:xe,qrPause:Ie}=L(),{threeInit:Ce,threeParse:Pe,threeLoad:Te,threePaused:ke,threeResume:Le,threePause:Ue,threeDestroy:$e,threeSetZoomEnabled:De,threeSetForcedTransparency:Oe,threeSetToneMapping:Ne,threeIsInteractive:_e,threeSetInteractive:je,threeSetOnInteracted:Fe,threeInitPromptAnimation:We,threeInitThetaAnimation:qe,threeInitPhiAnimation:Ge,threeInitFovAnimation:ze}=U(),Be=null==n.interactive||n.interactive;je(Be);let Qe=0;if(me()===Tt.QR){if(!Re())if(oe){D(zt);try{yield xe(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Ie(),ge(Tt.None)}else if(me()===Tt.AR){if(!Ln)if(ie&&!dr){D(Bt);const e=null!=W?yield b(W):void 0;mr(T(),$);const t=yield b(F);mr(T(),$),Nt(P),zn(j),Bn(ce()),Qn(B?ue():null),yield Kn(t,e,`${F}${W}`),Hn(q,G),Vn(O),mr(T(),$)}else Zn(),ge(Tt.None)}else if(me()===Tt.Preview&&!ke())if(ae){D(Qt),be();const e=255,t=yield E(K,(new Date).getTime()+e,Math.random()*e);mr(T(),$);const n=yield b(null!=H?H:`${M}/env/default.hdr`);mr(T(),$);const r=yield Pe(t,n,`${K}${H}`);mr(T(),$),Te(r,j),De(d),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=w&&(qe(y),Ge(S),ze(I)),Ee()}else Ue(),ge(Tt.None);const Ve=()=>e(this,void 0,void 0,(function*(){if(oe){if(me()===Tt.QR||me()===Tt.AR)return;try{D(zt);const e=++Qe;if(me()===Tt.Preview&&ae&&!ke()&&Ue(),ge(Tt.QR),yield xe(i,a),Qe!==e)return;return void mr(T(),$)}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(!ie)throw new t("Model does not have AR enabled.");if(me()!==Tt.AR)try{D(Bt);const e=++Qe;me()===Tt.Preview&&ae&&!ke()&&Ue(),Nt(P),ge(Tt.AR),we();const t=null!=W?yield b(W):void 0;mr(T(),$);const n=yield b(F);if(Qe!==e)return;if(mr(T(),$),yield Rn,Qe!==e)return;if(mr(T(),$),Zn(),zn(j),Bn(ce()),Qn(B?ue():null),yield Gn({licenseKey:z}),Qe!==e)return;if(mr(T(),$),yield Kn(n,t,`${F}${W}`),Hn(q,G),Vn(O),Qe!==e)return;if(mr(T(),$),yield Xn(),Qe!==e)return;mr(T(),$)}catch(e){const n=e instanceof Error;throw D("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Se(),Zn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ye()}})),Ke=()=>e(this,void 0,void 0,(function*(){if(!ae)throw new t("Model does not have 3D enabled.");if(me()!==Tt.Preview)try{D(Qt);const e=++Qe;me()===Tt.AR&&(ie&&!Ln&&Zn(),Ie()),ge(Tt.Preview),be();const t=255,n=yield E(K,(new Date).getTime()+t,Math.random()*t);if(Qe!==e)return;mr(T(),$);const r=yield b(null!=H?H:`${M}/env/default.hdr`);if(Qe!==e)return;if(mr(T(),$),yield Xe,Qe!==e)return;if(mr(T(),$),Ce(),Qe!==e)return;mr(T(),$);const o=yield Pe(n,r,`${K}${H}`);if(Qe!==e)return;mr(T(),$),Te(o,j),De(d),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=w&&(qe(y),Ge(S),ze(I)),Le()}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."}`)}finally{Ee()}})),He=()=>e(this,void 0,void 0,(function*(){me()!==Tt.None&&(++Qe,me()===Tt.QR||me()===Tt.AR?(ie&&!Ln&&Zn(),Ie()):me()===Tt.Preview&&ae&&!ke()&&Ue(),ge(Tt.None),"AR"!==l?"3D"!==l||(yield Ke()):yield Ve())}));return ve(Ve,Ke,He),"AR"===l?(yield Ve(),mr(T(),$)):"3D"===l&&(yield Ke(),mr(T(),$)),dr=!1,{launchAR:te?Ve:void 0,launch3D:ae?Ke:void 0,closeAR:te?()=>e(this,void 0,void 0,(function*(){me()!==Tt.AR&&me()!==Tt.QR||(++Qe,ie&&!Ln&&Zn(),Ie(),ge(Tt.None),"3D"!==l||(yield Ke()))})):void 0,close3D:ae?()=>e(this,void 0,void 0,(function*(){me()===Tt.Preview&&(++Qe,ae&&!ke()&&Ue(),ge(Tt.None),"AR"!==l||(yield Ve()))})):void 0,close:te||ae?He:void 0,isInteractive:()=>_e(),setInteractive:e=>je(e)}}))}function mr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const gr={setup:function(t){return e(this,void 0,void 0,(function*(){return hr(t)}))}},vr={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",(()=>fr(n)))}))},version:A};export{ar as PREVIEW_STATES,t as PluginError,vr as plugin,gr as vision};
@@ -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,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 m(e){return e*(180/Math.PI)}function g(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),m=window[`${h}${d+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],g=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield m(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new r[0](yield(yield g.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.3-alpha.4";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 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;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 C,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,V,B=!1;const Q=4,K=.001,H=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>=K?function(e,t,n,r){for(let o=0;o<Q;++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)>H&&++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}=Te(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=Pe(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 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 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=Pe(-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:xe(c),interpolation:a};break;case pe:s.phi={time:o,value:xe(c),interpolation:a};break;case fe:s.fov={time:o,value:xe(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function xe(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 Pe(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ce(0,0,1,1);if("sine"===e)return Ce(.37,0,.63,1);if("sine-in"===e)return Ce(.12,0,.39,0);if("sine-out"===e)return Ce(.61,1,.88,1);if("ease"===e)return Ce(.25,.1,.25,1);if("ease-in"===e)return Ce(.42,0,1,1);if("ease-out"===e)return Ce(0,0,.58,1);if("ease-in-out"===e)return Ce(.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 Ce(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=Pe("hold"),Oe=Pe("sine"),Ne=Pe("sine-in"),_e=Pe("sine-out");const je=8,Fe=2*Math.PI,We=Fe/12,qe=Fe/60,Ge=Fe/60,ze=60,Ve=60,Be=1e3,Qe=ze*Ve,Ke=-1;const He=["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 Xe(e){null!=e&&(e.dispose(),He.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let Ze;const Ye=0,Je=3;let et,tt,nt,rt=!1,ot=1,it=1,at=1;const st=1;let lt;const ct=new Map;function ut(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,m,g,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,R=1,T=!0,x=!1,P=0,j=0,B=1,Q=1,K=1;const H={threeInit:()=>{b||(dt(),i=new tt.Scene,a=new tt.PerspectiveCamera(25,1,.5),s=new et.OrbitControls(a,e),s.setInteractionEnabled(T),h=tt.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),V.uniforms.tDiffuse.value=n.texture,V.uniforms.v.value=1*e/256,s.material=V,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:(e,n,r)=>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,o;return r=et,U||(I=r.THREE,k=new r.RGBELoader,U=!0),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=$(n),function(e,t){if(L)return;const{THREE:n}=t;C=(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}(lt,et),o=e,C.parseAsync(o.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{ft(i),i.add(e.scene);const n=(new tt.Box3).setFromObject(e.scene);l.position.y=n.min.y-Ye,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof tt.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(et.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,tt.Vector3)),P=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=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-o.getTime())<Be/je)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=Ke*We*(i+a/ze+s/Qe)),null!=n&&(n.rotation.y=Ke*qe*(a+s/Ve)),null!=r&&(r.rotation.y=Ke*Ge*(s+l/Be)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,lt.setAnimationLoop(ht),e.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()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of ct.values())if(!e())return!1;return!0}()&&lt.setAnimationLoop(null),e.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var t;ft(i),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=null,i=null,u=null,y=null,ct.delete(e)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:tt.ACESFilmicToneMapping,Linear:tt.LinearToneMapping,Neutral:tt.NeutralToneMapping};null!=n[e]&&(h=n[e]),R=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=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())},preRender_:e=>{if(!b||S)return;let t=0!==j?e-j:0;j=e,0===P?M=!0:P<Je&&(t=0),P++,x||(s.hasUserInteracted()?(x=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(t),null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),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 t=lt.toneMapping,s=lt.toneMappingExposure;lt.toneMapping=h,lt.toneMappingExposure=R,lt.setViewport(0,0,e.width,e.height),lt.setClearColor(new tt.Color(16777215),E&&!A?1:0),lt.render(i,a),lt.toneMapping=t,lt.toneMappingExposure=s,M=!1,null!=o&&(o.clearRect(0,0,e.width,e.height),nt.width>0&&nt.height>0&&o.drawImage(nt,0,it-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(B,Q)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===B&&n===Q&&at===K||(e.width=Math.ceil(t*at*st),e.height=Math.ceil(n*at*st),B=t,Q=n,K=at,M=!0)},target_:e};return ct.set(e,H),H}function dt(){if(rt)return;et=window.ShopAR__THREE,tt=et.THREE,nt=document.createElement("canvas");var e,t;nt.style.position="block",lt=new tt.WebGLRenderer({powerPreference:"high-performance",canvas:nt,antialias:!0,alpha:!0}),lt.outputColorSpace=tt.SRGBColorSpace,lt.toneMapping=tt.ACESFilmicToneMapping,lt.setClearColor(new tt.Color(16777215),0),e=lt,t=et,B||(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,V=new W.ShaderMaterial(t.VerticalBlurShader),V.depthTest=!1,B=!0),pt(),rt=!0}function ht(e){pt(),lt.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of ct.values())t(e),n()&&r()}function pt(){let e=0,t=0;for(const{target_:n}of ct.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*st),t=Math.ceil(t*n*st),e===ot&&t===it&&n===at||(ot=e,it=t,at=n,lt.setSize(ot,it,!1));for(const{updateSize_:e}of ct.values())e()}function ft(e){e.traverse((e=>{var t;e instanceof tt.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(Xe):Xe(e.material))})),e.clear()}const mt={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},gt=Object.keys(mt);function vt(e){return mt[e]}const wt="shopar-error";function yt(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 bt="shopar-control";const Et="shopar-deepar-output";function At(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 St(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function Mt(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 Rt(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 Tt="shopar-main";const xt="shopar-qr-output";function Pt(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 Ct(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 It="shopar-three-output";var kt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(kt||(kt={}));let Lt=!1;function Ut(){Lt||(!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.")}}(),Lt=!0)}function $t(){Ut();const e=function(){const e=document.createElement("div");e.id=Tt;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=xt;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=Et;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=It,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=Pt(Ct("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=At("shopar-ar-loading-container"),h=St("shopar-ar-loading-text",vt("loading.ar"));d.appendChild(h);const p=Mt("shopar-ar-loading-bar-bg"),f=Rt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=At("shopar-3d-loading-container"),g=St("shopar-3d-loading-text",vt("loading.3d"));m.appendChild(g);const v=Mt("shopar-3d-loading-bar-bg"),w=Rt("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",e}(),b=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(b),e.appendChild(y);const E=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),A=function(e){const t=document.createElement("div");t.id=wt;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}(E);e.appendChild(A);const S=function(){const e=document.createElement("div");return e.id=bt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(S);const M=Ct("1.75rem"),T=yt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",Pt(M));S.appendChild(T);const x=Ct("1.75rem"),P=yt("shopar-btn-3d","3D","Launch ShopAR 3D preview",Pt(x));S.appendChild(P);const C=Ct("1.75rem"),I=yt("shopar-btn-close","Close","Close ShopAR view",Pt(C));S.append(I);let k,L,U=kt.None,$=!1,D=!1,O=!1,N=!1;function _(){f.classList.remove("active"),d.style.visibility="hidden"}function j(){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){E.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;$=e,D=t,O=n,N=r,k=o,L=i,Dt(S,$),Dt(T,$&&(O||D)&&U===kt.None),Dt(P,$&&N&&U===kt.None),Dt(I,$&&U!==kt.None),_(),j(),$||""===(a=A).style.display&&Dt(a,!1)},getUIState:function(){return U},setUIState:function(e){U=e,U===kt.None?(_(),j(),$&&(Dt(A,!1),Dt(I,!1),(D||O)&&Dt(T,!0),N&&Dt(P,!0))):U===kt.QR||U===kt.AR?$&&(Dt(A,!1),Dt(T,!1),Dt(P,N&&"AR"===L),Dt(I,"AR"!==L)):U===kt.Preview&&$&&(Dt(A,!1),Dt(T,(D||O)&&"3D"===L),Dt(P,!1),Dt(I,"3D"!==L))},setDefaultUIActions:function(e,t,n){$&&((D||O)&&(!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}`;M.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(k),T.onclick=e),N&&(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/cube.svg`),P.onclick=t),C.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/close.svg`),I.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:_,startThreeLoading:function(){null!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:j,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){$&&Dt(A,!0)}}}function Dt(e,t){e.style.display=t?"":"none"}const Ot=new Map;function Nt(e){let n=Ot.get(e);return null==n?(n=function(){let e=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=$t()),n);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==r){const{getQRTarget:e,getQRImage:n}=i();r=function(e,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>t(this,void 0,void 0,(function*(){yield x;const t=`https://ar.shopar.ai/${S.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(t),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,r=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){r=!0,e.style.display="none"}))}}(e(),n())}return r},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();o=ut(e(),t(),n())}return o}}}(),Ot.set(e,n)):n.incrementSetupId_(),n}function _t(e){for(const t of Ot.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===kt.AR&&o(kt.None)}}let jt;const Ft=new Uint8Array(16);function Wt(){if(!jt&&(jt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!jt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return jt(Ft)}const qt=[];for(let e=0;e<256;++e)qt.push((e+256).toString(16).slice(1));var Gt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function zt(e,t,n){if(Gt.randomUUID&&!t&&!e)return Gt.randomUUID();const r=(e=e||{}).random||(e.rng||Wt)();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 qt[e[t+0]]+qt[e[t+1]]+qt[e[t+2]]+qt[e[t+3]]+"-"+qt[e[t+4]]+qt[e[t+5]]+"-"+qt[e[t+6]]+qt[e[t+7]]+"-"+qt[e[t+8]]+qt[e[t+9]]+"-"+qt[e[t+10]]+qt[e[t+11]]+qt[e[t+12]]+qt[e[t+13]]+qt[e[t+14]]+qt[e[t+15]]}(r)}const Vt="qrLaunch",Bt="arLaunch",Qt="previewLaunch",Kt="heartbeat";let Ht,Xt,Zt=!1,Yt=window.navigator.userAgent||"no user agent";const Jt=[];function en(){null==Ht&&(Xt=zt(),Ht=T(`${R}/shopar-analytics.js`),Ht.then((()=>{Zt=!0,window.ShopAR__analytics.initializeImpl(),Jt.forEach((e=>e()))})))}function tn(e){Zt?e():Jt.push(e)}function nn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function rn(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 on=200,an=10;let sn=!1,ln=null,cn=[],un=[];function dn(e){return t(this,void 0,void 0,(function*(){sn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${R}/wasm/mediapipe`,e),ln&&clearInterval(ln);const r=[],o=[];ln=setInterval((()=>t(this,void 0,void 0,(function*(){if(sn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());sn||(null!=a&&null!=s&&function(e){for(let t of cn)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<an||(r.shift(),o.shift(),function(e,t){for(let n of un)n({faceWidth:e,IPD:t})}(pn(r),pn(o)))))}))),on)}))}function hn(){un=[],cn=[],sn=!0}function pn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var fn="undefined"!=typeof Float32Array?Float32Array:Array;function mn(){var e=new fn(16);return fn!=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 gn(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 vn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function wn(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 yn(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 bn(){var e=new fn(3);return fn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function En(e,t,n){var r=new fn(3);return r[0]=e,r[1]=t,r[2]=n,r}function An(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 Sn(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 Mn(){var e=new fn(4);return fn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}bn(),function(){var e,t=(e=new fn(4),fn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Rn;let Tn,xn,Pn;bn(),En(1,0,0),En(0,1,0),Mn(),Mn(),Rn=new fn(9),fn!=Float32Array&&(Rn[1]=0,Rn[2]=0,Rn[3]=0,Rn[5]=0,Rn[6]=0,Rn[7]=0),Rn[0]=1,Rn[4]=1,Rn[8]=1;let Cn,In,kn,Ln,Un=!0,$n=null;const Dn=new Set;let On,Nn,_n,jn,Fn,Wn;function qn(){null==Tn&&(Tn=T(`${R}/shopar-deepar.js`))}function Gn(){null==xn&&(xn=T(`${R}/shopar-true-scale.js`))}function zn(e){return t(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=e;return Fn=o,null==On&&(On=(()=>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=Jn(kn),o=nn(t);Cn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:Ln,additionalOptions:{hint:Wn,cameraConfig:{disableDefaultCamera:!0}}}),In=yield rn(o),yield er(Cn,In,"user"===t),"Glasses"===kn&&(yield xn,dn(In),"DetectionLoop"!==Fn&&or((e=>{jn=e.faceWidth})))})))()),On}))}function Vn(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===kn&&(n=t,r=Wn,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!=Cn&&(Cn.shutdown(),Cn=null,On=null),kn=e,Wn=t)}function Bn(e){e!==Ln&&(Ln=e,null!=Cn&&Cn.changePreviewElement(Ln))}function Qn(e){$n=e}function Kn(e){Cn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(jn){const e=137/(jn+5);Cn.changeParameterVector("GLASSES","","scale",e,e,e,0),Cn.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=nr("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=nr("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Cn.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),Cn.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),hn(),jn=null}e(),tr("Glasses")}},Cn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),tr("Shoes"))},Cn.callbacks.onWristTracked=t=>{t.detected&&(e(),tr("Watches"))}}function Hn(e,n,r){return t(this,void 0,void 0,(function*(){return null!=Nn&&_n===r||(yield Nn,Nn=Cn.switchEffect(e,{envmap:n}),_n=r),Nn}))}function Xn(e,t){null!=e&&null!=t&&(Cn.setToneMapping(e),Cn.setExposure(t))}function Zn(){return t(this,void 0,void 0,(function*(){if(null!=Cn){if(Un=!1,null==In){const e=Jn(kn),t=nn(e);In=yield rn(t),yield er(Cn,In,"user"===e),"Glasses"===kn&&(dn(In),"DetectionLoop"!==Fn&&or((e=>{jn=e.faceWidth})))}!function(){if(null==$n)return;if(null==kn||Dn.has(kn))return;$n.style.visibility="visible",$n.style.opacity="1"}(),Cn.setPaused(Un),Ln.style.display=""}}))}function Yn(){null!=Cn&&(Un=!0,Cn.setPaused(Un),hn(),null!=In&&null!=In.srcObject&&In.srcObject instanceof MediaStream&&(In.srcObject.getTracks().forEach((e=>e.stop())),In=null),function(){if(null==$n)return;$n.style.visibility="hidden",$n.style.opacity="0"}(),Cn.stopCamera(),Ln.style.display="none")}function Jn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function er(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 tr(e){null!=$n&&(Dn.has(e)||(Dn.add(e),$n.style.opacity="0"))}function nr(e,t,n,r,o,i,a){const s=Cn.getTransformationBetween(e,t),l=vn(bn(),s),c=function(e,t){var n=new fn(3);wn(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}(Mn(),s);yn(s,c,l,En(a,a,a));const u=Cn.getTransformationBetween(t,n),d=vn(bn(),u);yn(u,Mn(),d,wn(bn(),u));const h=gn(mn(),s,u),p=vn(bn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=Cn.getTransformationBetween(n,r)}catch(e){return f}const g=gn(mn(),u,m),v=gn(mn(),s,g),w=En(p[0],i[1],i[2]),y=Sn(bn(),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,T=u*v-p*f,x=d*g-h*m,P=d*v-p*m,C=h*v-p*g,I=w*C-y*P+b*x+E*T-A*R+S*M;return I?(I=1/I,e[0]=(s*C-l*P+c*x)*I,e[1]=(o*P-r*C-i*x)*I,e[2]=(m*S-g*A+v*E)*I,e[3]=(h*A-d*S-p*E)*I,e[4]=(l*T-a*C-c*R)*I,e[5]=(n*C-o*T+i*R)*I,e[6]=(g*b-f*S-v*y)*I,e[7]=(u*S-h*b+p*y)*I,e[8]=(a*P-s*T+c*M)*I,e[9]=(r*T-n*P-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*x-l*M)*I,e[13]=(n*x-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}(mn(),v));let b=Cn.getClosestPointOnMesh(r,y);try{const e=Cn.getClosestPointOnMesh(o,y);An(y,e)<An(y,b)&&(b=e)}catch(e){}const E=Sn(bn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function rr(e){!function(e){cn.push(e)}(e)}function or(e){!function(e){un.push(e)}(e)}var ir;function ar(){return[ir.Android,ir.iOS,ir.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)?ir.iOS:-1!==n.indexOf(t)?i?ir.Tablet:ir.MacOS:-1!==r.indexOf(t)?ir.Windows:/Android/.test(e)?ir.Android:/Linux/.test(t)?ir.Linux:i?ir.Tablet:ir.Unknown}return ir.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"}(ir||(ir={}));const sr=["AR","3D"];function lr(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function cr(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function ur(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function dr(e){const{apiKey:t,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;lr(t,"apiKey"),ur(t,"apiKey"),lr(r,"sku"),ur(r,"sku"),lr(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",sr),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&&ur(s,"baseUrl"),null!=l&&cr(l,"defaultUI"),null!=c&&cr(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",gt)}let hr=!1;function pr(e){return t(this,void 0,void 0,(function*(){const{targetElement:r}=e;R.update(e.baseUrl),en();const{trackEvent:o}=function(e){const t=performance.now(),n=zt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:S,userAgent:Yt,sessionId:Xt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),tn((()=>{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=Nt(r),{getSetupId:l,findUI:c}=s,u=l();qn(),Gn();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=kt.None)throw Error("UI state is not None, this is weird..");v(kt.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield Tn,fr(l(),u);try{o("visionArLaunch"),Yn(),Vn("Glasses",["faceInit"]),Bn(p()),yield zn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),fr(l(),u),yield Zn(),fr(l(),u)}catch(e){const t=e instanceof Error;throw o("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),b(),Yn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{y()}return hr=!0,{registerFacePoseListener:e=>{hr&&(o("registerFacePoseListener"),rr(e))},registerFaceMeasurementListener:e=>{hr&&(o("registerFaceMeasurementListener"),or(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){hr&&(o("switchEffect",{arUrl:e}),function(e){Cn.switchEffect(e)}(e))})),clearEffect:()=>{hr&&(o("clearEffect"),Cn.clearEffect())},close:()=>{if(hr){if(hr=!1,o("visionClose"),g()!==kt.AR)throw new n("AR not launched.");Yn(),v(kt.None)}}}}))}function fr(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function mr(e){var r,o;return t(this,void 0,void 0,(function*(){dr(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(mt,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(mt[t]=n)}}(e.strings);const p=null!=c?Re(c):null,y=null!=(null==p?void 0:p.theta)?le(p.theta):null,b=null!=(null==p?void 0:p.phi)?le(p.phi):null,M=null!=(null==p?void 0:p.fov)?le(p.fov):null,P=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:`${g(m(o))}`}),null!=i&&{pitch:`${g(m(i))}`}),null!=a&&{fov:`${g(m(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),C=Nt(s),{getSetupId:I,findUI:k,findQR:L,findThree:U}=C,$=I();en();const{trackEvent:D,arInteracted:O,previewInteracted:N}=function(e,t){const n=performance.now(),r=zt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(Kt,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Yt,pluginVersion:S,sessionId:Xt,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),tn((()=>{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 P;D("apiResponse",_);const{category:j,arUrl:F,arEnvUrl:W,arToneMapping:q,arToneMappingExposure:G,arKey:z,arPromptEnabled:V,arPromptText:B,arPromptImage:Q,previewUrl:K,previewEnvUrl:H,previewToneMapping:X,previewToneMappingExposure:Z,previewPosterUrl:Y,cameraErrorText:J,qrPromptText:ee}=_;gr(I(),$);const te=null!=F&&function(e){return null!=e&&v.includes(e)}(j),ne=null==(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled),re=te&&function(e){return null!=e&&w.includes(e)}(j),oe=ne&&re&&!ar(),ie=te&&!oe,ae=null!=K;gr(I(),$);const{setTargetElement:se,getDeepARTarget:ce,getDeepARPrompt:ue,customizeDeepARPrompt:de,customizeCameraError:he,customizeQRPrompt:pe,setVisibilityParameters:fe,getUIState:me,setUIState:ge,setDefaultUIActions:ve,startDeepARLoading:we,stopDeepARLoading:ye,startThreeLoading:be,stopThreeLoading:Ee,setThreePosterUrl:Ae,showCameraError:Se}=k();se(s);if(fe(null==e.defaultUI||e.defaultUI,oe,ie,ae,j,l),de(null!=B?B:"",null!=Q?Q:""),he(J),pe(ee),Ae(Y),oe&&function(){t(this,void 0,void 0,(function*(){null==x&&(x=T(`${R}/shopar-qr.js`))}))}(),ie&&(qn(),function(e){e!==Pn&&(Pn=e,E(e),Nn=null,hn())}(F),"Glasses"===j&&Gn(),null!=W&&E(W)),ae){null==Ze&&(Ze=T(`${R}/shopar-three.js`));const e=255;A(K,(new Date).getTime()+e,Math.random()*e),E(null!=H?H:`${R}/env/default.hdr`)}!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,(()=>{me()!==kt.QR||Me()||xe(),me()!==kt.AR||Un||Yn(),me()!==kt.Preview||ke()||Ue(),ge(kt.None),$e(),function(e){Ot.delete(e)}(s)}));const{qrPaused:Me,qrDraw:Te,qrPause:xe}=L(),{threeInit:Pe,threeParse:Ce,threeLoad:Ie,threePaused:ke,threeResume:Le,threePause:Ue,threeDestroy:$e,threeSetZoomEnabled:De,threeSetForcedTransparency:Oe,threeSetToneMapping:Ne,threeIsInteractive:_e,threeSetInteractive:je,threeSetOnInteracted:Fe,threeInitPromptAnimation:We,threeInitThetaAnimation:qe,threeInitPhiAnimation:Ge,threeInitFovAnimation:ze}=U(),Ve=null==e.interactive||e.interactive;je(Ve);let Be=0;if(me()===kt.QR){if(!Me())if(oe){D(Vt);try{yield Te(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else xe(),ge(kt.None)}else if(me()===kt.AR){if(!Un)if(ie&&!hr){D(Bt);const e=null!=W?yield E(W):void 0;gr(I(),$);const t=yield E(F);gr(I(),$),_t(C),Vn(j),Bn(ce()),Qn(V?ue():null),yield Hn(t,e,`${F}${W}`),Xn(q,G),Kn(O),gr(I(),$)}else Yn(),ge(kt.None)}else if(me()===kt.Preview&&!ke())if(ae){D(Qt),be();const e=255,t=yield A(K,(new Date).getTime()+e,Math.random()*e);gr(I(),$);const n=yield E(null!=H?H:`${R}/env/default.hdr`);gr(I(),$);const r=yield Ce(t,n,`${K}${H}`);gr(I(),$),Ie(r,j),De(u),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=p&&(qe(y),Ge(b),ze(M)),Ee()}else Ue(),ge(kt.None);const Qe=()=>t(this,void 0,void 0,(function*(){if(oe){if(me()===kt.QR||me()===kt.AR)return;try{D(Vt);const e=++Be;if(me()===kt.Preview&&ae&&!ke()&&Ue(),ge(kt.QR),yield Te(i,a),Be!==e)return;return void gr(I(),$)}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(!ie)throw new n("Model does not have AR enabled.");if(me()!==kt.AR)try{D(Bt);const e=++Be;me()===kt.Preview&&ae&&!ke()&&Ue(),_t(C),ge(kt.AR),we();const t=null!=W?yield E(W):void 0;gr(I(),$);const n=yield E(F);if(Be!==e)return;if(gr(I(),$),yield Tn,Be!==e)return;if(gr(I(),$),Yn(),Vn(j),Bn(ce()),Qn(V?ue():null),yield zn({licenseKey:z}),Be!==e)return;if(gr(I(),$),yield Hn(n,t,`${F}${W}`),Xn(q,G),Kn(O),Be!==e)return;if(gr(I(),$),yield Zn(),Be!==e)return;gr(I(),$)}catch(e){const t=e instanceof Error;throw D("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Se(),Yn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{ye()}})),Ke=()=>t(this,void 0,void 0,(function*(){if(!ae)throw new n("Model does not have 3D enabled.");if(me()!==kt.Preview)try{D(Qt);const e=++Be;me()===kt.AR&&(ie&&!Un&&Yn(),xe()),ge(kt.Preview),be();const t=255,n=yield A(K,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;gr(I(),$);const r=yield E(null!=H?H:`${R}/env/default.hdr`);if(Be!==e)return;if(gr(I(),$),yield Ze,Be!==e)return;if(gr(I(),$),Pe(),Be!==e)return;gr(I(),$);const o=yield Ce(n,r,`${K}${H}`);if(Be!==e)return;gr(I(),$),Ie(o,j),De(u),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=p&&(qe(y),Ge(b),ze(M)),Le()}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."}`)}finally{Ee()}})),He=()=>t(this,void 0,void 0,(function*(){me()!==kt.None&&(++Be,me()===kt.QR||me()===kt.AR?(ie&&!Un&&Yn(),xe()):me()===kt.Preview&&ae&&!ke()&&Ue(),ge(kt.None),"AR"!==l?"3D"!==l||(yield Ke()):yield Qe())}));return ve(Qe,Ke,He),"AR"===l?(yield Qe(),gr(I(),$)):"3D"===l&&(yield Ke(),gr(I(),$)),hr=!1,{launchAR:te?Qe:void 0,launch3D:ae?Ke:void 0,closeAR:te?()=>t(this,void 0,void 0,(function*(){me()!==kt.AR&&me()!==kt.QR||(++Be,ie&&!Un&&Yn(),xe(),ge(kt.None),"3D"!==l||(yield Ke()))})):void 0,close3D:ae?()=>t(this,void 0,void 0,(function*(){me()===kt.Preview&&(++Be,ae&&!ke()&&Ue(),ge(kt.None),"AR"!==l||(yield Qe()))})):void 0,close:te||ae?He:void 0,isInteractive:()=>_e(),setInteractive:e=>je(e)}}))}function gr(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const vr={setup:function(e){return t(this,void 0,void 0,(function*(){return pr(e)}))}},wr={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",(()=>mr(e)))}))},version:S};e.PREVIEW_STATES=sr,e.PluginError=n,e.plugin=wr,e.vision=vr}));
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 m(e){return e*(180/Math.PI)}function g(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),m=window[`${h}${d+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],g=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield m(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new r[0](yield(yield g.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.3-alpha.5";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;const I=(()=>{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,C,k,L=!1;let U=!1;function $(e){const t=function(e){const t=new C.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,C.ClampToEdgeWrapping,C.ClampToEdgeWrapping,C.LinearFilter,C.LinearFilter,1,C.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(k.parse(e));return t.mapping=C.EquirectangularReflectionMapping,t.colorSpace=C.LinearSRGBColorSpace,t}const D=45,O=45,N=3,_=1.5,j=1,F=.5;let W,q,G,z,V,B=!1;const Q=4,K=.001,H=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>=K?function(e,t,n,r){for(let o=0;o<Q;++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)>H&&++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=Ie(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 Ce(e.substring(0,e.length-ve.length));if(e.endsWith(ge))return Ce(e.substring(0,e.length-ge.length))*we;return Ce(e)}(n[r]),i=e.indexOf(de),a=Ie(-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)?Ce(e.substring(0,e.length-ye.length))*Ee:e.endsWith(be)?Ce(e.substring(0,e.length-be.length)):Ce(e)*Ee}function Ie(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:Ce(t[0]),y1:Ce(t[1]),x2:Ce(t[2]),y2:Ce(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 Ce(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=Ie("hold"),Oe=Ie("sine"),Ne=Ie("sine-in"),_e=Ie("sine-out");const je=8,Fe=2*Math.PI,We=Fe/12,qe=Fe/60,Ge=Fe/60,ze=60,Ve=60,Be=1e3,Qe=ze*Ve,Ke=-1;const He=["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 Xe(e){null!=e&&(e.dispose(),He.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let Ze;const Ye=0,Je=3;let et,tt,nt,rt=!1,ot=1,it=1,at=1;const st=1;let lt;const ct=new Map;function ut(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,m,g,v,w,y,b,E=!1,A=!1,S=!1,M=!0,R=!1,x=1,T=!0,I=!1,j=0,B=0,Q=!1,K=1,H=1,X=1;const Z={threeInit:()=>{E||(dt(),i=new tt.Scene,a=new tt.PerspectiveCamera(25,1,.5),s=new et.OrbitControls(a,e),s.setInteractionEnabled(T),h=tt.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),V.uniforms.tDiffuse.value=n.texture,V.uniforms.v.value=1*e/256,s.material=V,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)),E=!0,f=new IntersectionObserver((t=>{for(const n of t)if(n.target===e)return void(Q=n.isIntersecting)}),{root:null,rootMargin:"0px",threshold:1e-5}),f.observe(e))},threeParse:(e,n,r)=>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,o;return r=et,U||(C=r.THREE,k=new r.RGBELoader,U=!0),null===(t=i.environment)||void 0===t||t.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}(lt,et),o=e,P.parseAsync(o.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{ft(i),i.add(e.scene);const n=(new tt.Box3).setFromObject(e.scene);l.position.y=n.min.y-Ye,i.add(l),c(),A=!1,i.traverse((e=>{if(e instanceof tt.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(A=!0)})):t.transmission>0&&(A=!0)}}));const r=n.min.clone().add(n.max).divideScalar(2),o=Math.sqrt(et.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,tt.Vector3)),j=0,b="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=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-o.getTime())<Be/je)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=Ke*We*(i+a/ze+s/Qe)),null!=n&&(n.rotation.y=Ke*qe*(a+s/Ve)),null!=r&&(r.rotation.y=Ke*Ge*(s+l/Be)),!0}}}(e.scene):null},threePaused:()=>M,threeResume:()=>{M=!1,lt.setAnimationLoop(ht),e.style.visibility="visible",B=0,null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset(),null==y||y.reset()},threePause:()=>{M=!0,function(){for(const{threePaused:e}of ct.values())if(!e())return!1;return!0}()&&lt.setAnimationLoop(null),e.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var t;ft(i),f.disconnect(),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=null,i=null,u=null,b=null,ct.delete(e)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{S=e},threeSetToneMapping:(e,t)=>{const n={ACES:tt.ACESFilmicToneMapping,Linear:tt.LinearToneMapping,Neutral:tt.NeutralToneMapping};null!=n[e]&&(h=n[e]),x=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(),m=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(m.get()),g=null,v=null,w=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}]),y=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=>{m=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{g=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{v=e,null!=e&&s.setFovRadians(e.get())},preRender_:e=>{if(!E||M||!Q)return;let t=0!==B?e-B:0;B=e,0===j?R=!0:j<Je&&(t=0),j++,I||(s.hasUserInteracted()?(I=!0,m=null,g=null,v=null,w=null,y=null):(null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),null==y||y.update(t),null!=m&&(s.setTheta(m.get()),R=!0),null!=g&&(s.setPhi(g.get()),R=!0),null!=v&&(s.setFovRadians(v.get()),R=!0))),s.update()&&(R=!0),(null==b?void 0:b.update())&&(R=!0)},shouldRender_:()=>!(!E||M)&&R,render_:()=>{const t=lt.toneMapping,s=lt.toneMappingExposure;lt.toneMapping=h,lt.toneMappingExposure=x,lt.setViewport(0,0,e.width,e.height),lt.setClearColor(new tt.Color(16777215),A&&!S?1:0),lt.render(i,a),lt.toneMapping=t,lt.toneMappingExposure=s,R=!1,null!=o&&(o.clearRect(0,0,e.width,e.height),nt.width>0&&nt.height>0&&o.drawImage(nt,0,it-e.height,e.width,e.height,0,0,e.width,e.height),n.style.visibility=T&&!I?"visible":"hidden",null!=w&&(r.style.opacity=`${w.get()}`),null!=y&&(r.style.transform=`translateX(${y.get()*Math.min(K,H)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===K&&n===H&&at===X||(e.width=Math.ceil(t*at*st),e.height=Math.ceil(n*at*st),K=t,H=n,X=at,R=!0)},target_:e};return ct.set(e,Z),Z}function dt(){if(rt)return;et=window.ShopAR__THREE,tt=et.THREE,nt=document.createElement("canvas");var e,t;nt.style.position="block",lt=new tt.WebGLRenderer({powerPreference:"high-performance",canvas:nt,antialias:!0,alpha:!0}),lt.outputColorSpace=tt.SRGBColorSpace,lt.toneMapping=tt.ACESFilmicToneMapping,lt.setClearColor(new tt.Color(16777215),0),e=lt,t=et,B||(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,V=new W.ShaderMaterial(t.VerticalBlurShader),V.depthTest=!1,B=!0),pt(),rt=!0}function ht(e){pt(),lt.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of ct.values())t(e),n()&&r()}function pt(){let e=0,t=0;for(const{target_:n}of ct.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=I();e=Math.ceil(e*n*st),t=Math.ceil(t*n*st),e===ot&&t===it&&n===at||(ot=e,it=t,at=n,lt.setSize(ot,it,!1));for(const{updateSize_:e}of ct.values())e()}function ft(e){e.traverse((e=>{var t;e instanceof tt.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(Xe):Xe(e.material))})),e.clear()}const mt={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},gt=Object.keys(mt);function vt(e){return mt[e]}const wt="shopar-error";function yt(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 bt="shopar-control";const Et="shopar-deepar-output";function At(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 St(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function Mt(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 Rt(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 xt="shopar-main";const Tt="shopar-qr-output";function It(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 Pt(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 Ct="shopar-three-output";var kt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(kt||(kt={}));let Lt=!1;function Ut(){Lt||(!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.")}}(),Lt=!0)}function $t(){Ut();const e=function(){const e=document.createElement("div");e.id=xt;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=Tt;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=Et;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=Ct,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=It(Pt("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=At("shopar-ar-loading-container"),h=St("shopar-ar-loading-text",vt("loading.ar"));d.appendChild(h);const p=Mt("shopar-ar-loading-bar-bg"),f=Rt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=At("shopar-3d-loading-container"),g=St("shopar-3d-loading-text",vt("loading.3d"));m.appendChild(g);const v=Mt("shopar-3d-loading-bar-bg"),w=Rt("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",e}(),b=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(b),e.appendChild(y);const E=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),A=function(e){const t=document.createElement("div");t.id=wt;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}(E);e.appendChild(A);const S=function(){const e=document.createElement("div");return e.id=bt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(S);const M=Pt("1.75rem"),x=yt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",It(M));S.appendChild(x);const T=Pt("1.75rem"),I=yt("shopar-btn-3d","3D","Launch ShopAR 3D preview",It(T));S.appendChild(I);const P=Pt("1.75rem"),C=yt("shopar-btn-close","Close","Close ShopAR view",It(P));S.append(C);let k,L,U=kt.None,$=!1,D=!1,O=!1,N=!1;function _(){f.classList.remove("active"),d.style.visibility="hidden"}function j(){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){E.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;$=e,D=t,O=n,N=r,k=o,L=i,Dt(S,$),Dt(x,$&&(O||D)&&U===kt.None),Dt(I,$&&N&&U===kt.None),Dt(C,$&&U!==kt.None),_(),j(),$||""===(a=A).style.display&&Dt(a,!1)},getUIState:function(){return U},setUIState:function(e){U=e,U===kt.None?(_(),j(),$&&(Dt(A,!1),Dt(C,!1),(D||O)&&Dt(x,!0),N&&Dt(I,!0))):U===kt.QR||U===kt.AR?$&&(Dt(A,!1),Dt(x,!1),Dt(I,N&&"AR"===L),Dt(C,"AR"!==L)):U===kt.Preview&&$&&(Dt(A,!1),Dt(x,(D||O)&&"3D"===L),Dt(I,!1),Dt(C,"3D"!==L))},setDefaultUIActions:function(e,t,n){$&&((D||O)&&(!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}`;M.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(k),x.onclick=e),N&&(T.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/cube.svg`),I.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!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:j,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){$&&Dt(A,!0)}}}function Dt(e,t){e.style.display=t?"":"none"}const Ot=new Map;function Nt(e){let n=Ot.get(e);return null==n?(n=function(){let e=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=$t()),n);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==r){const{getQRTarget:e,getQRImage:n}=i();r=function(e,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>t(this,void 0,void 0,(function*(){yield T;const t=`https://ar.shopar.ai/${S.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(t),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,r=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){r=!0,e.style.display="none"}))}}(e(),n())}return r},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();o=ut(e(),t(),n())}return o}}}(),Ot.set(e,n)):n.incrementSetupId_(),n}function _t(e){for(const t of Ot.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===kt.AR&&o(kt.None)}}let jt;const Ft=new Uint8Array(16);function Wt(){if(!jt&&(jt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!jt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return jt(Ft)}const qt=[];for(let e=0;e<256;++e)qt.push((e+256).toString(16).slice(1));var Gt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function zt(e,t,n){if(Gt.randomUUID&&!t&&!e)return Gt.randomUUID();const r=(e=e||{}).random||(e.rng||Wt)();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 qt[e[t+0]]+qt[e[t+1]]+qt[e[t+2]]+qt[e[t+3]]+"-"+qt[e[t+4]]+qt[e[t+5]]+"-"+qt[e[t+6]]+qt[e[t+7]]+"-"+qt[e[t+8]]+qt[e[t+9]]+"-"+qt[e[t+10]]+qt[e[t+11]]+qt[e[t+12]]+qt[e[t+13]]+qt[e[t+14]]+qt[e[t+15]]}(r)}const Vt="qrLaunch",Bt="arLaunch",Qt="previewLaunch",Kt="heartbeat";let Ht,Xt,Zt=!1,Yt=window.navigator.userAgent||"no user agent";const Jt=[];function en(){null==Ht&&(Xt=zt(),Ht=x(`${R}/shopar-analytics.js`),Ht.then((()=>{Zt=!0,window.ShopAR__analytics.initializeImpl(),Jt.forEach((e=>e()))})))}function tn(e){Zt?e():Jt.push(e)}function nn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function rn(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 on=200,an=10;let sn=!1,ln=null,cn=[],un=[];function dn(e){return t(this,void 0,void 0,(function*(){sn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${R}/wasm/mediapipe`,e),ln&&clearInterval(ln);const r=[],o=[];ln=setInterval((()=>t(this,void 0,void 0,(function*(){if(sn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());sn||(null!=a&&null!=s&&function(e){for(let t of cn)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<an||(r.shift(),o.shift(),function(e,t){for(let n of un)n({faceWidth:e,IPD:t})}(pn(r),pn(o)))))}))),on)}))}function hn(){un=[],cn=[],sn=!0}function pn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var fn="undefined"!=typeof Float32Array?Float32Array:Array;function mn(){var e=new fn(16);return fn!=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 gn(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 vn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function wn(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 yn(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 bn(){var e=new fn(3);return fn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function En(e,t,n){var r=new fn(3);return r[0]=e,r[1]=t,r[2]=n,r}function An(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 Sn(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 Mn(){var e=new fn(4);return fn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}bn(),function(){var e,t=(e=new fn(4),fn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Rn;let xn,Tn,In;bn(),En(1,0,0),En(0,1,0),Mn(),Mn(),Rn=new fn(9),fn!=Float32Array&&(Rn[1]=0,Rn[2]=0,Rn[3]=0,Rn[5]=0,Rn[6]=0,Rn[7]=0),Rn[0]=1,Rn[4]=1,Rn[8]=1;let Pn,Cn,kn,Ln,Un=!0,$n=null;const Dn=new Set;let On,Nn,_n,jn,Fn,Wn;function qn(){null==xn&&(xn=x(`${R}/shopar-deepar.js`))}function Gn(){null==Tn&&(Tn=x(`${R}/shopar-true-scale.js`))}function zn(e){return t(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=e;return Fn=o,null==On&&(On=(()=>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=Jn(kn),o=nn(t);Pn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:Ln,additionalOptions:{hint:Wn,cameraConfig:{disableDefaultCamera:!0}}}),Cn=yield rn(o),yield er(Pn,Cn,"user"===t),"Glasses"===kn&&(yield Tn,dn(Cn),"DetectionLoop"!==Fn&&or((e=>{jn=e.faceWidth})))})))()),On}))}function Vn(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===kn&&(n=t,r=Wn,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!=Pn&&(Pn.shutdown(),Pn=null,On=null),kn=e,Wn=t)}function Bn(e){e!==Ln&&(Ln=e,null!=Pn&&Pn.changePreviewElement(Ln))}function Qn(e){$n=e}function Kn(e){Pn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(jn){const e=137/(jn+5);Pn.changeParameterVector("GLASSES","","scale",e,e,e,0),Pn.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=nr("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=nr("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Pn.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),Pn.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),hn(),jn=null}e(),tr("Glasses")}},Pn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),tr("Shoes"))},Pn.callbacks.onWristTracked=t=>{t.detected&&(e(),tr("Watches"))}}function Hn(e,n,r){return t(this,void 0,void 0,(function*(){return null!=Nn&&_n===r||(yield Nn,Nn=Pn.switchEffect(e,{envmap:n}),_n=r),Nn}))}function Xn(e,t){null!=e&&null!=t&&(Pn.setToneMapping(e),Pn.setExposure(t))}function Zn(){return t(this,void 0,void 0,(function*(){if(null!=Pn){if(Un=!1,null==Cn){const e=Jn(kn),t=nn(e);Cn=yield rn(t),yield er(Pn,Cn,"user"===e),"Glasses"===kn&&(dn(Cn),"DetectionLoop"!==Fn&&or((e=>{jn=e.faceWidth})))}!function(){if(null==$n)return;if(null==kn||Dn.has(kn))return;$n.style.visibility="visible",$n.style.opacity="1"}(),Pn.setPaused(Un),Ln.style.display=""}}))}function Yn(){null!=Pn&&(Un=!0,Pn.setPaused(Un),hn(),null!=Cn&&null!=Cn.srcObject&&Cn.srcObject instanceof MediaStream&&(Cn.srcObject.getTracks().forEach((e=>e.stop())),Cn=null),function(){if(null==$n)return;$n.style.visibility="hidden",$n.style.opacity="0"}(),Pn.stopCamera(),Ln.style.display="none")}function Jn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function er(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 tr(e){null!=$n&&(Dn.has(e)||(Dn.add(e),$n.style.opacity="0"))}function nr(e,t,n,r,o,i,a){const s=Pn.getTransformationBetween(e,t),l=vn(bn(),s),c=function(e,t){var n=new fn(3);wn(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}(Mn(),s);yn(s,c,l,En(a,a,a));const u=Pn.getTransformationBetween(t,n),d=vn(bn(),u);yn(u,Mn(),d,wn(bn(),u));const h=gn(mn(),s,u),p=vn(bn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=Pn.getTransformationBetween(n,r)}catch(e){return f}const g=gn(mn(),u,m),v=gn(mn(),s,g),w=En(p[0],i[1],i[2]),y=Sn(bn(),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,I=d*v-p*m,P=h*v-p*g,C=w*P-y*I+b*T+E*x-A*R+S*M;return C?(C=1/C,e[0]=(s*P-l*I+c*T)*C,e[1]=(o*I-r*P-i*T)*C,e[2]=(m*S-g*A+v*E)*C,e[3]=(h*A-d*S-p*E)*C,e[4]=(l*x-a*P-c*R)*C,e[5]=(n*P-o*x+i*R)*C,e[6]=(g*b-f*S-v*y)*C,e[7]=(u*S-h*b+p*y)*C,e[8]=(a*I-s*x+c*M)*C,e[9]=(r*x-n*I-i*M)*C,e[10]=(f*A-m*b+v*w)*C,e[11]=(d*b-u*A-p*w)*C,e[12]=(s*R-a*T-l*M)*C,e[13]=(n*T-r*R+o*M)*C,e[14]=(m*y-f*E-g*w)*C,e[15]=(u*E-d*y+h*w)*C,e):null}(mn(),v));let b=Pn.getClosestPointOnMesh(r,y);try{const e=Pn.getClosestPointOnMesh(o,y);An(y,e)<An(y,b)&&(b=e)}catch(e){}const E=Sn(bn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function rr(e){!function(e){cn.push(e)}(e)}function or(e){!function(e){un.push(e)}(e)}var ir;function ar(){return[ir.Android,ir.iOS,ir.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)?ir.iOS:-1!==n.indexOf(t)?i?ir.Tablet:ir.MacOS:-1!==r.indexOf(t)?ir.Windows:/Android/.test(e)?ir.Android:/Linux/.test(t)?ir.Linux:i?ir.Tablet:ir.Unknown}return ir.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"}(ir||(ir={}));const sr=["AR","3D"];function lr(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function cr(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function ur(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function dr(e){const{apiKey:t,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;lr(t,"apiKey"),ur(t,"apiKey"),lr(r,"sku"),ur(r,"sku"),lr(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",sr),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&&ur(s,"baseUrl"),null!=l&&cr(l,"defaultUI"),null!=c&&cr(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",gt)}let hr=!1;function pr(e){return t(this,void 0,void 0,(function*(){const{targetElement:r}=e;R.update(e.baseUrl),en();const{trackEvent:o}=function(e){const t=performance.now(),n=zt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:S,userAgent:Yt,sessionId:Xt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),tn((()=>{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=Nt(r),{getSetupId:l,findUI:c}=s,u=l();qn(),Gn();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=kt.None)throw Error("UI state is not None, this is weird..");v(kt.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield xn,fr(l(),u);try{o("visionArLaunch"),Yn(),Vn("Glasses",["faceInit"]),Bn(p()),yield zn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),fr(l(),u),yield Zn(),fr(l(),u)}catch(e){const t=e instanceof Error;throw o("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),b(),Yn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{y()}return hr=!0,{registerFacePoseListener:e=>{hr&&(o("registerFacePoseListener"),rr(e))},registerFaceMeasurementListener:e=>{hr&&(o("registerFaceMeasurementListener"),or(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){hr&&(o("switchEffect",{arUrl:e}),function(e){Pn.switchEffect(e)}(e))})),clearEffect:()=>{hr&&(o("clearEffect"),Pn.clearEffect())},close:()=>{if(hr){if(hr=!1,o("visionClose"),g()!==kt.AR)throw new n("AR not launched.");Yn(),v(kt.None)}}}}))}function fr(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function mr(e){var r,o;return t(this,void 0,void 0,(function*(){dr(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(mt,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(mt[t]=n)}}(e.strings);const p=null!=c?Re(c):null,y=null!=(null==p?void 0:p.theta)?le(p.theta):null,b=null!=(null==p?void 0:p.phi)?le(p.phi):null,M=null!=(null==p?void 0:p.fov)?le(p.fov):null,I=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:`${g(m(o))}`}),null!=i&&{pitch:`${g(m(i))}`}),null!=a&&{fov:`${g(m(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),P=Nt(s),{getSetupId:C,findUI:k,findQR:L,findThree:U}=P,$=C();en();const{trackEvent:D,arInteracted:O,previewInteracted:N}=function(e,t){const n=performance.now(),r=zt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(Kt,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Yt,pluginVersion:S,sessionId:Xt,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),tn((()=>{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 I;D("apiResponse",_);const{category:j,arUrl:F,arEnvUrl:W,arToneMapping:q,arToneMappingExposure:G,arKey:z,arPromptEnabled:V,arPromptText:B,arPromptImage:Q,previewUrl:K,previewEnvUrl:H,previewToneMapping:X,previewToneMappingExposure:Z,previewPosterUrl:Y,cameraErrorText:J,qrPromptText:ee}=_;gr(C(),$);const te=null!=F&&function(e){return null!=e&&v.includes(e)}(j),ne=null==(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled),re=te&&function(e){return null!=e&&w.includes(e)}(j),oe=ne&&re&&!ar(),ie=te&&!oe,ae=null!=K;gr(C(),$);const{setTargetElement:se,getDeepARTarget:ce,getDeepARPrompt:ue,customizeDeepARPrompt:de,customizeCameraError:he,customizeQRPrompt:pe,setVisibilityParameters:fe,getUIState:me,setUIState:ge,setDefaultUIActions:ve,startDeepARLoading:we,stopDeepARLoading:ye,startThreeLoading:be,stopThreeLoading:Ee,setThreePosterUrl:Ae,showCameraError:Se}=k();se(s);if(fe(null==e.defaultUI||e.defaultUI,oe,ie,ae,j,l),de(null!=B?B:"",null!=Q?Q:""),he(J),pe(ee),Ae(Y),oe&&function(){t(this,void 0,void 0,(function*(){null==T&&(T=x(`${R}/shopar-qr.js`))}))}(),ie&&(qn(),function(e){e!==In&&(In=e,E(e),Nn=null,hn())}(F),"Glasses"===j&&Gn(),null!=W&&E(W)),ae){null==Ze&&(Ze=x(`${R}/shopar-three.js`));const e=255;A(K,(new Date).getTime()+e,Math.random()*e),E(null!=H?H:`${R}/env/default.hdr`)}!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,(()=>{me()!==kt.QR||Me()||Te(),me()!==kt.AR||Un||Yn(),me()!==kt.Preview||ke()||Ue(),ge(kt.None),$e(),function(e){Ot.delete(e)}(s)}));const{qrPaused:Me,qrDraw:xe,qrPause:Te}=L(),{threeInit:Ie,threeParse:Pe,threeLoad:Ce,threePaused:ke,threeResume:Le,threePause:Ue,threeDestroy:$e,threeSetZoomEnabled:De,threeSetForcedTransparency:Oe,threeSetToneMapping:Ne,threeIsInteractive:_e,threeSetInteractive:je,threeSetOnInteracted:Fe,threeInitPromptAnimation:We,threeInitThetaAnimation:qe,threeInitPhiAnimation:Ge,threeInitFovAnimation:ze}=U(),Ve=null==e.interactive||e.interactive;je(Ve);let Be=0;if(me()===kt.QR){if(!Me())if(oe){D(Vt);try{yield xe(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Te(),ge(kt.None)}else if(me()===kt.AR){if(!Un)if(ie&&!hr){D(Bt);const e=null!=W?yield E(W):void 0;gr(C(),$);const t=yield E(F);gr(C(),$),_t(P),Vn(j),Bn(ce()),Qn(V?ue():null),yield Hn(t,e,`${F}${W}`),Xn(q,G),Kn(O),gr(C(),$)}else Yn(),ge(kt.None)}else if(me()===kt.Preview&&!ke())if(ae){D(Qt),be();const e=255,t=yield A(K,(new Date).getTime()+e,Math.random()*e);gr(C(),$);const n=yield E(null!=H?H:`${R}/env/default.hdr`);gr(C(),$);const r=yield Pe(t,n,`${K}${H}`);gr(C(),$),Ce(r,j),De(u),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=p&&(qe(y),Ge(b),ze(M)),Ee()}else Ue(),ge(kt.None);const Qe=()=>t(this,void 0,void 0,(function*(){if(oe){if(me()===kt.QR||me()===kt.AR)return;try{D(Vt);const e=++Be;if(me()===kt.Preview&&ae&&!ke()&&Ue(),ge(kt.QR),yield xe(i,a),Be!==e)return;return void gr(C(),$)}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(!ie)throw new n("Model does not have AR enabled.");if(me()!==kt.AR)try{D(Bt);const e=++Be;me()===kt.Preview&&ae&&!ke()&&Ue(),_t(P),ge(kt.AR),we();const t=null!=W?yield E(W):void 0;gr(C(),$);const n=yield E(F);if(Be!==e)return;if(gr(C(),$),yield xn,Be!==e)return;if(gr(C(),$),Yn(),Vn(j),Bn(ce()),Qn(V?ue():null),yield zn({licenseKey:z}),Be!==e)return;if(gr(C(),$),yield Hn(n,t,`${F}${W}`),Xn(q,G),Kn(O),Be!==e)return;if(gr(C(),$),yield Zn(),Be!==e)return;gr(C(),$)}catch(e){const t=e instanceof Error;throw D("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Se(),Yn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{ye()}})),Ke=()=>t(this,void 0,void 0,(function*(){if(!ae)throw new n("Model does not have 3D enabled.");if(me()!==kt.Preview)try{D(Qt);const e=++Be;me()===kt.AR&&(ie&&!Un&&Yn(),Te()),ge(kt.Preview),be();const t=255,n=yield A(K,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;gr(C(),$);const r=yield E(null!=H?H:`${R}/env/default.hdr`);if(Be!==e)return;if(gr(C(),$),yield Ze,Be!==e)return;if(gr(C(),$),Ie(),Be!==e)return;gr(C(),$);const o=yield Pe(n,r,`${K}${H}`);if(Be!==e)return;gr(C(),$),Ce(o,j),De(u),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=p&&(qe(y),Ge(b),ze(M)),Le()}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."}`)}finally{Ee()}})),He=()=>t(this,void 0,void 0,(function*(){me()!==kt.None&&(++Be,me()===kt.QR||me()===kt.AR?(ie&&!Un&&Yn(),Te()):me()===kt.Preview&&ae&&!ke()&&Ue(),ge(kt.None),"AR"!==l?"3D"!==l||(yield Ke()):yield Qe())}));return ve(Qe,Ke,He),"AR"===l?(yield Qe(),gr(C(),$)):"3D"===l&&(yield Ke(),gr(C(),$)),hr=!1,{launchAR:te?Qe:void 0,launch3D:ae?Ke:void 0,closeAR:te?()=>t(this,void 0,void 0,(function*(){me()!==kt.AR&&me()!==kt.QR||(++Be,ie&&!Un&&Yn(),Te(),ge(kt.None),"3D"!==l||(yield Ke()))})):void 0,close3D:ae?()=>t(this,void 0,void 0,(function*(){me()===kt.Preview&&(++Be,ae&&!ke()&&Ue(),ge(kt.None),"AR"!==l||(yield Qe()))})):void 0,close:te||ae?He:void 0,isInteractive:()=>_e(),setInteractive:e=>je(e)}}))}function gr(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const vr={setup:function(e){return t(this,void 0,void 0,(function*(){return pr(e)}))}},wr={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",(()=>mr(e)))}))},version:S};e.PREVIEW_STATES=sr,e.PluginError=n,e.plugin=wr,e.vision=vr}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shopar-plugin",
3
- "version": "0.7.3-alpha.4",
3
+ "version": "0.7.3-alpha.5",
4
4
  "description": "Plugin for the Web that seamlessly integrates into your webpage to create embedded virtual try-on and 3D preview capabilities.",
5
5
  "main": "dist/shopar-plugin.esm.js",
6
6
  "module": "dist/shopar-plugin.esm.js",