shopar-plugin 0.7.3-alpha.0 → 0.7.3-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- function e(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class t extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const n=[Uint8Array,Uint32Array],r=n.length-2,o=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],i=[2,12,7,1],a=window[o[i[i[r]]]][o[i[i[i.length-1]]]],s=a.charCodeAt(r),l=s^s,c=new n[1]([l]);function u(){const e=(new TextEncoder).encode(a),t=o.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[o[t[2]]](String.fromCodePoint(...e))}const d=[1e3,2e3,4e3],h=d.length;function p(t,n=0){return e(this,void 0,void 0,(function*(){try{return yield t()}catch(e){if(n>=h)throw e;return yield new Promise((e=>setTimeout(e,d[n]))),p(t,n+1)}}))}function f(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const g=["Glasses","Shoes","Watches"],v=["Shoes"];const w="0.7.3-alpha.0";let y=`https://cdn.jsdelivr.net/npm/shopar-plugin@${w}/dist`;const b={update:e=>{null!=e&&(y=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>y};function E(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 A;const S=(()=>{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 M,R,C;function I(e){const t=function(e){const t=new R.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,R.ClampToEdgeWrapping,R.ClampToEdgeWrapping,R.LinearFilter,R.LinearFilter,1,R.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(C.parse(e));return t.mapping=R.EquirectangularReflectionMapping,t.colorSpace=R.LinearSRGBColorSpace,t}const P=45,T=45,x=3,k=1.5,L=1,U=.5;let $,D,O,_,N,j=!1;const F=4,W=.001,q=1e-7,G=10,z=11,B=1/(z-1),Q="function"==typeof Float32Array;function V(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 J;const o=Q?new Float32Array(z):new Array(z);for(let t=0;t<z;++t)o[t]=Z(t*B,e,n);function i(t){let r=0,i=1;const a=z-1;for(;i!==a&&o[i]<=t;++i)r+=B;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*B,l=Y(s,e,n);return l>=W?function(e,t,n,r){for(let o=0;o<F;++o){const o=Y(t,n,r);if(0===o)return t;t-=(Z(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=Z(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>q&&++s<G);return a}(t,r,r+B,e,n)}return function(e){return 0===e||1===e?e:Z(i(e),t,r)}}function K(e,t){return 1-3*t+3*e}function H(e,t){return 3*t-6*e}function X(e){return 3*e}function Z(e,t,n){return((K(t,n)*e+H(t,n))*e+X(t))*e}function Y(e,t,n){return 3*K(t,n)*e*e+2*H(t,n)*e+X(t)}function J(e){return e}function ee(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=V(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function te(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:ee(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 ne="#",re="time",oe="interpolation",ie="yaw",ae="pitch",se="fov",le=[re,ie,ae,se,oe],ce="s",ue="ms",de=1e3,he="deg",pe="rad",fe=Math.PI/180,me="ease-in-out",ge="cubic-bezier(",ve=")";function we(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(ne);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(!le.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(re))throw new Error(`Missing required token: '${re}'.`);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}=ye(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=Ee(null!==(t=r.interpolation)&&void 0!==t?t:me);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*fe,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*fe,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*fe,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 ye(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(re),o=function(e){if(e.endsWith(ue))return Se(e.substring(0,e.length-ue.length));if(e.endsWith(ce))return Se(e.substring(0,e.length-ce.length))*de;return Se(e)}(n[r]),i=e.indexOf(oe),a=Ee(-1===i?me:n[i]),s={};for(let t=0;t<n.length;t++){if(t===r||t===i)continue;const l=e[t],c=n[t];switch(l){case ie:s.theta={time:o,value:be(c),interpolation:a};break;case ae:s.phi={time:o,value:be(c),interpolation:a};break;case se:s.fov={time:o,value:be(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function be(e){return e.endsWith(he)?Se(e.substring(0,e.length-he.length))*fe:e.endsWith(pe)?Se(e.substring(0,e.length-pe.length)):Se(e)*fe}function Ee(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ae(0,0,1,1);if("sine"===e)return Ae(.37,0,.63,1);if("sine-in"===e)return Ae(.12,0,.39,0);if("sine-out"===e)return Ae(.61,1,.88,1);if("ease"===e)return Ae(.25,.1,.25,1);if("ease-in"===e)return Ae(.42,0,1,1);if("ease-out"===e)return Ae(0,0,.58,1);if("ease-in-out"===e)return Ae(.42,0,.58,1);if(e.startsWith(ge)&&e.endsWith(ve)){const t=e.substring(ge.length,e.length-ve.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:Se(t[0]),y1:Se(t[1]),x2:Se(t[2]),y2:Se(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ae(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Se(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Me=300,Re=2e3,Ce=.05,Ie=2*Math.PI/32,Pe=Ee("hold"),Te=Ee("sine"),xe=Ee("sine-in"),ke=Ee("sine-out");const Le=8,Ue=2*Math.PI,$e=Ue/12,De=Ue/60,Oe=Ue/60,_e=60,Ne=60,je=1e3,Fe=_e*Ne,We=-1;const qe=["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 Ge(e){null!=e&&(e.dispose(),qe.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let ze;const Be=0,Qe=3;let Ve,Ke,He,Xe=!1,Ze=1,Ye=1,Je=1;const et=1;let tt;const nt=new Map;function rt(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,L=!1,j=1,F=!0,W=!1,q=0,G=0,z=1,B=1,Q=1;const V={threeInit:()=>{b||(ot(),i=new Ke.Scene,a=new Ke.PerspectiveCamera(25,1,.5),s=new Ve.OrbitControls(a,t),s.setInteractionEnabled(F),h=Ke.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new $.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new $.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new $.Group;r.position.y=-.7;const o=new $.PlaneGeometry(P,T).rotateX(Math.PI/2),i=new $.MeshBasicMaterial({map:t.texture,opacity:U,transparent:!0,depthWrite:!1}),a=new $.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new $.Mesh(o);s.visible=!1,r.add(s);const l=new $.OrthographicCamera(-P/2,P/2,T/2,-T/2,0,x);function c(e){s.visible=!0,_.uniforms.tDiffuse.value=t.texture,_.uniforms.h.value=1*e/256,s.material=_,D.setRenderTarget(n),D.render(s,l),N.uniforms.tDiffuse.value=n.texture,N.uniforms.v.value=1*e/256,s.material=N,D.setRenderTarget(t),D.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=O;const r=D.getClearAlpha();D.setClearAlpha(0),D.setRenderTarget(t),D.render(e,l),e.overrideMaterial=null,c(k),c(.4*k),D.setRenderTarget(null),D.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;return R=(e=Ve).THREE,C=new e.RGBELoader,i.environment=I(n),function(e,t){const{THREE:n}=t;M=(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)}(tt,Ve),r=t,M.parseAsync(r.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t;e instanceof Ke.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(Ge):Ge(e.material))})),i.clear(),i.add(e.scene);const n=(new Ke.Box3).setFromObject(e.scene);l.position.y=n.min.y-Be,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof Ke.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(Ve.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,Ke.Vector3)),q=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())<je/Le)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=We*$e*(i+a/_e+s/Fe)),null!=n&&(n.rotation.y=We*De*(a+s/Ne)),null!=r&&(r.rotation.y=We*Oe*(s+l/je)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,tt.setAnimationLoop(it),t.style.visibility="visible",G=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 nt.values())if(!e())return!1;return!0}()&&tt.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:Ke.ACESFilmicToneMapping,Linear:Ke.LinearToneMapping,Neutral:Ke.NeutralToneMapping};null!=n[e]&&(h=n[e]),j=t},threeIsInteractive:()=>F,threeSetInteractive:e=>{F=e,null==s||s.setInteractionEnabled(F)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=te([{time:0,value:e,interpolation:Pe},{time:Me,value:e,interpolation:ke},{time:Me+Re/4,value:e+Ie,interpolation:Te},{time:Me+3*Re/4,value:e-Ie,interpolation:xe},{time:Me+Re,value:e,interpolation:Pe},{time:Me+2*Re,value:e,interpolation:Pe}]),s.setTheta(f.get()),m=null,g=null,v=te([{time:0,value:0,interpolation:Pe},{time:Me,value:1,interpolation:Pe},{time:Me+Re,value:0,interpolation:Pe},{time:Me+2*Re,value:0,interpolation:Pe}]),w=te([{time:0,value:0,interpolation:Pe},{time:Me,value:0,interpolation:ke},{time:Me+Re/4,value:-Ce,interpolation:Te},{time:Me+3*Re/4,value:Ce,interpolation:xe},{time:Me+Re,value:0,interpolation:Pe},{time:Me+2*Re,value:0,interpolation:Pe}])},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!==G?e-G:0;G=e,0===q?L=!0:q<Qe&&(t=0),q++,W||(s.hasUserInteracted()?(W=!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()),L=!0),null!=m&&(s.setPhi(m.get()),L=!0),null!=g&&(s.setFovRadians(g.get()),L=!0))),s.update()&&(L=!0),(null==y?void 0:y.update())&&(L=!0)},shouldRender_:()=>!(!b||S)&&L,render_:()=>{const e=tt.toneMapping,s=tt.toneMappingExposure;tt.toneMapping=h,tt.toneMappingExposure=j,tt.setViewport(0,0,t.width,t.height),tt.setClearColor(new Ke.Color(16777215),E&&!A?1:0),tt.render(i,a),tt.toneMapping=e,tt.toneMappingExposure=s,L=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),He.width>0&&He.height>0&&o.drawImage(He,0,Ye-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=F&&!W?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(z,B)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===z&&n===B&&Je===Q||(t.width=Math.ceil(e*Je*et),t.height=Math.ceil(n*Je*et),z=e,B=n,Q=Je,L=!0)},target_:t};return nt.set(t,V),V}function ot(){if(Xe)return;Ve=window.ShopAR__THREE,Ke=Ve.THREE,He=document.createElement("canvas");var e,t;He.style.position="block",tt=new Ke.WebGLRenderer({powerPreference:"high-performance",canvas:He,antialias:!0,alpha:!0}),tt.outputColorSpace=Ke.SRGBColorSpace,tt.toneMapping=Ke.ACESFilmicToneMapping,tt.setClearColor(new Ke.Color(16777215),0),e=tt,t=Ve,j||($=t.THREE,D=e,O=new $.MeshDepthMaterial,O.userData.darkness={value:L},O.onBeforeCompile=e=>{e.uniforms.darkness=O.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}`},O.depthTest=!1,O.depthWrite=!1,_=new $.ShaderMaterial(t.HorizontalBlurShader),_.depthTest=!1,N=new $.ShaderMaterial(t.VerticalBlurShader),N.depthTest=!1,j=!0),at(),Xe=!0}function it(e){at(),tt.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of nt.values())t(e),n()&&r()}function at(){let e=0,t=0;for(const{target_:n}of nt.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=S();e=Math.ceil(e*n*et),t=Math.ceil(t*n*et),e===Ze&&t===Ye&&n===Je||(Ze=e,Ye=t,Je=n,tt.setSize(Ze,Ye,!1));for(const{updateSize_:e}of nt.values())e()}const st={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},lt=Object.keys(st);function ct(e){return st[e]}const ut="shopar-error";function dt(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const r=document.createElementNS("http://www.w3.org/2000/svg","image");r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),r.setAttribute("width",e),r.setAttribute("height",e),n.appendChild(r)}return n}function ht(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn";{const e=dt("1.75rem",r);o.appendChild(e)}{const e=document.createElement("span");e.textContent=t,o.appendChild(e)}o.ariaLabel=n;const i=o.style;return i.display="none",i.pointerEvents="auto",o}const pt="shopar-control";const ft="shopar-deepar-output";function mt(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 gt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function vt(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 wt(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 yt="shopar-main";const bt="shopar-qr-output";const Et="shopar-three-output";var At;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(At||(At={}));let St=!1;function Mt(){St||(!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.")}}(),St=!0)}function Rt(){Mt();const e=function(){const e=document.createElement("div");e.id=yt;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=bt;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=ft;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=Et,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=dt("2rem",`${b}/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=mt("shopar-ar-loading-container"),h=gt("shopar-ar-loading-text",ct("loading.ar"));d.appendChild(h);const p=vt("shopar-ar-loading-bar-bg"),f=wt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=mt("shopar-3d-loading-container"),g=gt("shopar-3d-loading-text",ct("loading.3d"));m.appendChild(g);const v=vt("shopar-3d-loading-bar-bg"),w=wt("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}(),E=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(E),e.appendChild(y);const A=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),S=function(e){const t=document.createElement("div");t.id=ut;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}(A);e.appendChild(S);const M=function(){const e=document.createElement("div");return e.id=pt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(M);const R=ht("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");M.appendChild(R);const C=ht("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${b}/img/icons/cube.svg`);M.appendChild(C);const I=ht("shopar-btn-close","Close","Close ShopAR view",`${b}/img/icons/close.svg`);M.append(I);let P,T,x=At.None,k=!1,L=!1,U=!1,$=!1;function D(){f.classList.remove("active"),d.style.visibility="hidden"}function O(){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){A.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;k=e,L=t,U=n,$=r,P=o,T=i,Ct(M,k),Ct(R,k&&(U||L)&&x===At.None),Ct(C,k&&$&&x===At.None),Ct(I,k&&x!==At.None),D(),O(),k||""===(a=S).style.display&&Ct(a,!1)},getUIState:function(){return x},setUIState:function(e){x=e,x===At.None?(D(),O(),k&&(Ct(S,!1),Ct(I,!1),(L||U)&&Ct(R,!0),$&&Ct(C,!0))):x===At.QR||x===At.AR?k&&(Ct(S,!1),Ct(R,!1),Ct(C,$&&"AR"===T),Ct(I,"AR"!==T)):x===At.Preview&&k&&(Ct(S,!1),Ct(R,(L||U)&&"3D"===T),Ct(C,!1),Ct(I,"3D"!==T))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,r=`${b}/img/icons/${n}`;R.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(P),R.onclick=e),$&&(C.onclick=t),I.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=E.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:O,setThreePosterUrl:function(e){null!=e?(E.src=e,E.dataset.srcSet="true"):delete E.dataset.srcSet},showCameraError:function(){k&&Ct(S,!0)}}}function Ct(e,t){e.style.display=t?"":"none"}const It=new Map;function Pt(t){let n=It.get(t);return null==n?(n=function(){let t=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=Rt()),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 A;const e=`https://ar.shopar.ai/${w.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=rt(e(),t(),n())}return o}}}(),It.set(t,n)):n.incrementSetupId_(),n}function Tt(e){for(const t of It.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===At.AR&&o(At.None)}}let xt;const kt=new Uint8Array(16);function Lt(){if(!xt&&(xt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!xt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return xt(kt)}const Ut=[];for(let e=0;e<256;++e)Ut.push((e+256).toString(16).slice(1));var $t={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Dt(e,t,n){if($t.randomUUID&&!t&&!e)return $t.randomUUID();const r=(e=e||{}).random||(e.rng||Lt)();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 Ut[e[t+0]]+Ut[e[t+1]]+Ut[e[t+2]]+Ut[e[t+3]]+"-"+Ut[e[t+4]]+Ut[e[t+5]]+"-"+Ut[e[t+6]]+Ut[e[t+7]]+"-"+Ut[e[t+8]]+Ut[e[t+9]]+"-"+Ut[e[t+10]]+Ut[e[t+11]]+Ut[e[t+12]]+Ut[e[t+13]]+Ut[e[t+14]]+Ut[e[t+15]]}(r)}const Ot="qrLaunch",_t="arLaunch",Nt="previewLaunch",jt="heartbeat";let Ft,Wt,qt=!1,Gt=window.navigator.userAgent||"no user agent";const zt=[];function Bt(){null==Ft&&(Wt=Dt(),Ft=E(`${b}/shopar-analytics.js`),Ft.then((()=>{qt=!0,window.ShopAR__analytics.initializeImpl(),zt.forEach((e=>e()))})))}function Qt(e){qt?e():zt.push(e)}function Vt(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Kt(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 Ht=200,Xt=10;let Zt=!1,Yt=null,Jt=[],en=[];function tn(t){return e(this,void 0,void 0,(function*(){Zt=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${b}/wasm/mediapipe`,t),Yt&&clearInterval(Yt);const r=[],o=[];Yt=setInterval((()=>e(this,void 0,void 0,(function*(){if(Zt)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());Zt||(null!=a&&null!=s&&function(e){for(let t of Jt)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<Xt||(r.shift(),o.shift(),function(e,t){for(let n of en)n({faceWidth:e,IPD:t})}(rn(r),rn(o)))))}))),Ht)}))}function nn(){en=[],Jt=[],Zt=!0}function rn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}function on(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.")}}))}var an="undefined"!=typeof Float32Array?Float32Array:Array;function sn(){var e=new an(16);return an!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function ln(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 cn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function un(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 dn(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 hn(){var e=new an(3);return an!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function pn(e,t,n){var r=new an(3);return r[0]=e,r[1]=t,r[2]=n,r}function fn(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 mn(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 gn(){var e=new an(4);return an!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}hn(),function(){var e,t=(e=new an(4),an!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var vn;let wn,yn,bn;hn(),pn(1,0,0),pn(0,1,0),gn(),gn(),vn=new an(9),an!=Float32Array&&(vn[1]=0,vn[2]=0,vn[3]=0,vn[5]=0,vn[6]=0,vn[7]=0),vn[0]=1,vn[4]=1,vn[8]=1;let En,An,Sn,Mn,Rn=!0,Cn=null;const In=new Set;let Pn,Tn,xn,kn,Ln,Un;function $n(){null==wn&&(wn=E(`${b}/shopar-deepar.js`))}function Dn(){null==yn&&(yn=E(`${b}/shopar-true-scale.js`))}function On(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return Ln=o,null==Pn&&(Pn=(()=>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=Bn(Sn),o=Vt(n);En=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:Mn,additionalOptions:{hint:Un,cameraConfig:{disableDefaultCamera:!0}}}),An=yield Kt(o),yield Qn(En,An,"user"===n),"Glasses"===Sn&&(yield yn,tn(An),"DetectionLoop"!==Ln&&Xn((e=>{kn=e.faceWidth})))})))()),Pn}))}function _n(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===Sn&&(n=t,r=Un,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!=En&&(En.shutdown(),En=null,Pn=null),Sn=e,Un=t)}function Nn(e){e!==Mn&&(Mn=e,null!=En&&En.changePreviewElement(Mn))}function jn(e){Cn=e}function Fn(e){En.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(kn){const e=137/(kn+5);En.changeParameterVector("GLASSES","","scale",e,e,e,0),En.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=Kn("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=Kn("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);En.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),En.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),nn(),kn=null}e(),Vn("Glasses")}},En.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),Vn("Shoes"))},En.callbacks.onWristTracked=t=>{t.detected&&(e(),Vn("Watches"))}}function Wn(t,n,r){return e(this,void 0,void 0,(function*(){return null!=Tn&&xn===r||(yield Tn,Tn=En.switchEffect(t,{envmap:n}),xn=r),Tn}))}function qn(e,t){null!=e&&null!=t&&(En.setToneMapping(e),En.setExposure(t))}function Gn(){return e(this,void 0,void 0,(function*(){if(null!=En){if(Rn=!1,null==An){const e=Bn(Sn),t=Vt(e);An=yield Kt(t),yield Qn(En,An,"user"===e),"Glasses"===Sn&&(tn(An),"DetectionLoop"!==Ln&&Xn((e=>{kn=e.faceWidth})))}!function(){if(null==Cn)return;if(null==Sn||In.has(Sn))return;Cn.style.visibility="visible",Cn.style.opacity="1"}(),En.setPaused(Rn),Mn.style.display=""}}))}function zn(){null!=En&&(Rn=!0,En.setPaused(Rn),nn(),null!=An&&null!=An.srcObject&&An.srcObject instanceof MediaStream&&(An.srcObject.getTracks().forEach((e=>e.stop())),An=null),function(){if(null==Cn)return;Cn.style.visibility="hidden",Cn.style.opacity="0"}(),En.stopCamera(),Mn.style.display="none")}function Bn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Qn(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 Vn(e){null!=Cn&&(In.has(e)||(In.add(e),Cn.style.opacity="0"))}function Kn(e,t,n,r,o,i,a){const s=En.getTransformationBetween(e,t),l=cn(hn(),s),c=function(e,t){var n=new an(3);un(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}(gn(),s);dn(s,c,l,pn(a,a,a));const u=En.getTransformationBetween(t,n),d=cn(hn(),u);dn(u,gn(),d,un(hn(),u));const h=ln(sn(),s,u),p=cn(hn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=En.getTransformationBetween(n,r)}catch(e){return f}const g=ln(sn(),u,m),v=ln(sn(),s,g),w=pn(p[0],i[1],i[2]),y=mn(hn(),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,C=u*v-p*f,I=d*g-h*m,P=d*v-p*m,T=h*v-p*g,x=w*T-y*P+b*I+E*C-A*R+S*M;return x?(x=1/x,e[0]=(s*T-l*P+c*I)*x,e[1]=(o*P-r*T-i*I)*x,e[2]=(m*S-g*A+v*E)*x,e[3]=(h*A-d*S-p*E)*x,e[4]=(l*C-a*T-c*R)*x,e[5]=(n*T-o*C+i*R)*x,e[6]=(g*b-f*S-v*y)*x,e[7]=(u*S-h*b+p*y)*x,e[8]=(a*P-s*C+c*M)*x,e[9]=(r*C-n*P-i*M)*x,e[10]=(f*A-m*b+v*w)*x,e[11]=(d*b-u*A-p*w)*x,e[12]=(s*R-a*I-l*M)*x,e[13]=(n*I-r*R+o*M)*x,e[14]=(m*y-f*E-g*w)*x,e[15]=(u*E-d*y+h*w)*x,e):null}(sn(),v));let b=En.getClosestPointOnMesh(r,y);try{const e=En.getClosestPointOnMesh(o,y);fn(y,e)<fn(y,b)&&(b=e)}catch(e){}const E=mn(hn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function Hn(e){!function(e){Jt.push(e)}(e)}function Xn(e){!function(e){en.push(e)}(e)}var Zn;function Yn(){return[Zn.Android,Zn.iOS,Zn.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)?Zn.iOS:-1!==n.indexOf(t)?i?Zn.Tablet:Zn.MacOS:-1!==r.indexOf(t)?Zn.Windows:/Android/.test(e)?Zn.Android:/Linux/.test(t)?Zn.Linux:i?Zn.Tablet:Zn.Unknown}return Zn.Unknown}())}function Jn(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}))}!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"}(Zn||(Zn={}));const er=["AR","3D"];function tr(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function nr(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function rr(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function or(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;tr(n,"apiKey"),rr(n,"apiKey"),tr(r,"sku"),rr(r,"sku"),tr(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",er),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&&rr(s,"baseUrl"),null!=l&&nr(l,"defaultUI"),null!=c&&nr(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",lt)}let ir=!1;function ar(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;b.update(n.baseUrl),Bt();const{trackEvent:o}=function(e){const t=performance.now(),n=Dt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:w,userAgent:Gt,sessionId:Wt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),Qt((()=>{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=Pt(r),{getSetupId:l,findUI:c}=s,d=l();$n(),Dn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:y,stopDeepARLoading:E,showCameraError:A}=c();if(g()!=At.None)throw Error("UI state is not None, this is weird..");v(At.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),y(),yield wn,sr(l(),d);try{o("visionArLaunch"),zn(),_n("Glasses",["faceInit"]),Nn(f()),yield On({licenseKey:a,truescaleUsecase:"DetectionLoop"}),sr(l(),d),yield Gn(),sr(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),A(),zn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{E()}return ir=!0,{registerFacePoseListener:e=>{ir&&(o("registerFacePoseListener"),Hn(e))},registerFaceMeasurementListener:e=>{ir&&(o("registerFaceMeasurementListener"),Xn(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){ir&&(o("switchEffect",{arUrl:t}),function(e){En.switchEffect(e)}(t))})),clearEffect:()=>{ir&&(o("clearEffect"),En.clearEffect())},close:()=>{if(ir){if(ir=!1,o("visionClose"),g()!==At.AR)throw new t("AR not launched.");zn(),v(At.None)}}}}))}function sr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function lr(n){var r,o;return e(this,void 0,void 0,(function*(){or(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),b.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(st,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(st[t]=n)}}(n.strings);const y=null!=c?we(c):null,S=null!=(null==y?void 0:y.theta)?te(y.theta):null,M=null!=(null==y?void 0:y.phi)?te(y.phi):null,R=null!=(null==y?void 0:y.fov)?te(y.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==S?void 0:S.get(),null==M?void 0:M.get(),null==R?void 0:R.get(),h),I=Pt(s),{getSetupId:P,findUI:T,findQR:x,findThree:k}=I,L=P();Bt();const{trackEvent:U,arInteracted:$,previewInteracted:D}=function(e,t){const n=performance.now(),r=Dt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(jt,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Gt,pluginVersion:w,sessionId:Wt,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),Qt((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);U("setup",{hostname:window.location.hostname});const O=yield C;U("apiResponse",O);const{category:_,arUrl:N,arEnvUrl:j,arToneMapping:F,arToneMappingExposure:W,arKey:q,arPromptEnabled:G,arPromptText:z,arPromptImage:B,previewUrl:Q,previewEnvUrl:V,previewToneMapping:K,previewToneMappingExposure:H,previewPosterUrl:X,cameraErrorText:Z,qrPromptText:Y}=O;cr(P(),L);const J=null!=N&&function(e){return null!=e&&g.includes(e)}(_),ee=null==(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled),ne=J&&function(e){return null!=e&&v.includes(e)}(_),re=ee&&ne&&!Yn(),oe=J&&!re,ie=null!=Q;if(cr(P(),L),re&&function(){e(this,void 0,void 0,(function*(){null==A&&(A=E(`${b}/shopar-qr.js`))}))}(),oe&&($n(),function(e){e!==bn&&(bn=e,on(e),Tn=null,nn())}(N),"Glasses"===_&&Dn(),null!=j&&on(j)),ie){null==ze&&(ze=E(`${b}/shopar-three.js`));const e=255;Jn(Q,(new Date).getTime()+e,Math.random()*e),on(null!=V?V:`${b}/env/default.hdr`)}const{setTargetElement:ae,getDeepARTarget:se,getDeepARPrompt:le,customizeDeepARPrompt:ce,customizeCameraError:ue,customizeQRPrompt:de,setVisibilityParameters:he,getUIState:pe,setUIState:fe,setDefaultUIActions:me,startDeepARLoading:ge,stopDeepARLoading:ve,startThreeLoading:ye,stopThreeLoading:be,setThreePosterUrl:Ee,showCameraError:Ae}=T();ae(s);he(null==n.defaultUI||n.defaultUI,re,oe,ie,_,l),ce(null!=z?z:"",null!=B?B:""),ue(Z),de(Y),Ee(X),function(e,n){const r=e.parentNode;if(null==r)throw new t("Parent node missing.");new MutationObserver((t=>{for(const r of t)for(const t of r.removedNodes)if(t===e)return void n()})).observe(r,{childList:!0})}(s,(()=>{pe()!==At.QR||Se()||Re(),pe()!==At.AR||Rn||zn(),pe()!==At.Preview||Te()||ke(),fe(At.None)}));const{qrPaused:Se,qrDraw:Me,qrPause:Re}=x(),{threeInit:Ce,threeParse:Ie,threeLoad:Pe,threePaused:Te,threeResume:xe,threePause:ke,threeSetZoomEnabled:Le,threeSetForcedTransparency:Ue,threeSetToneMapping:$e,threeIsInteractive:De,threeSetInteractive:Oe,threeSetOnInteracted:_e,threeInitPromptAnimation:Ne,threeInitThetaAnimation:je,threeInitPhiAnimation:Fe,threeInitFovAnimation:We}=k(),qe=null==n.interactive||n.interactive;Oe(qe);let Ge=0;if(pe()===At.QR){if(!Se())if(re){U(Ot);try{yield Me(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Re(),fe(At.None)}else if(pe()===At.AR){if(!Rn)if(oe&&!ir){U(_t);const e=null!=j?yield on(j):void 0;cr(P(),L);const t=yield on(N);cr(P(),L),Tt(I),_n(_),Nn(se()),jn(G?le():null),yield Wn(t,e,`${N}${j}`),qn(F,W),Fn($),cr(P(),L)}else zn(),fe(At.None)}else if(pe()===At.Preview&&!Te())if(ie){U(Nt),ye();const e=255,t=yield Jn(Q,(new Date).getTime()+e,Math.random()*e);cr(P(),L);const n=yield on(null!=V?V:`${b}/env/default.hdr`);cr(P(),L);const r=yield Ie(t,n,`${Q}${V}`);cr(P(),L),Pe(r,_),Le(d),Ue(h),$e(null!=K?K:"ACES",null!=H?H:1),_e(D),Ne(),null!=y&&(je(S),Fe(M),We(R)),be()}else ke(),fe(At.None);const Be=()=>e(this,void 0,void 0,(function*(){if(re){if(pe()===At.QR||pe()===At.AR)return;try{U(Ot);const e=++Ge;if(pe()===At.Preview&&ie&&!Te()&&ke(),fe(At.QR),yield Me(i,a),Ge!==e)return;return void cr(P(),L)}catch(e){const n=e instanceof Error;throw U("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}}if(!oe)throw new t("Model does not have AR enabled.");if(pe()!==At.AR)try{U(_t);const e=++Ge;pe()===At.Preview&&ie&&!Te()&&ke(),Tt(I),fe(At.AR),ge();const t=null!=j?yield on(j):void 0;cr(P(),L);const n=yield on(N);if(Ge!==e)return;if(cr(P(),L),yield wn,Ge!==e)return;if(cr(P(),L),zn(),_n(_),Nn(se()),jn(G?le():null),yield On({licenseKey:q}),Ge!==e)return;if(cr(P(),L),yield Wn(n,t,`${N}${j}`),qn(F,W),Fn($),Ge!==e)return;if(cr(P(),L),yield Gn(),Ge!==e)return;cr(P(),L)}catch(e){const n=e instanceof Error;throw U("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Ae(),zn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ve()}})),Qe=()=>e(this,void 0,void 0,(function*(){if(!ie)throw new t("Model does not have 3D enabled.");if(pe()!==At.Preview)try{U(Nt);const e=++Ge;pe()===At.AR&&(oe&&!Rn&&zn(),Re()),fe(At.Preview),ye();const t=255,n=yield Jn(Q,(new Date).getTime()+t,Math.random()*t);if(Ge!==e)return;cr(P(),L);const r=yield on(null!=V?V:`${b}/env/default.hdr`);if(Ge!==e)return;if(cr(P(),L),yield ze,Ge!==e)return;if(cr(P(),L),Ce(),Ge!==e)return;cr(P(),L);const o=yield Ie(n,r,`${Q}${V}`);if(Ge!==e)return;cr(P(),L),Pe(o,_),Le(d),Ue(h),$e(null!=K?K:"ACES",null!=H?H:1),_e(D),Ne(),null!=y&&(je(S),Fe(M),We(R)),xe()}catch(e){const n=e instanceof Error;throw U("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}finally{be()}})),Ve=()=>e(this,void 0,void 0,(function*(){pe()!==At.None&&(++Ge,pe()===At.QR||pe()===At.AR?(oe&&!Rn&&zn(),Re()):pe()===At.Preview&&ie&&!Te()&&ke(),fe(At.None),"AR"!==l?"3D"!==l||(yield Qe()):yield Be())}));return me(Be,Qe,Ve),"AR"===l?(yield Be(),cr(P(),L)):"3D"===l&&(yield Qe(),cr(P(),L)),ir=!1,{launchAR:J?Be:void 0,launch3D:ie?Qe:void 0,closeAR:J?()=>e(this,void 0,void 0,(function*(){pe()!==At.AR&&pe()!==At.QR||(++Ge,oe&&!Rn&&zn(),Re(),fe(At.None),"3D"!==l||(yield Qe()))})):void 0,close3D:ie?()=>e(this,void 0,void 0,(function*(){pe()===At.Preview&&(++Ge,ie&&!Te()&&ke(),fe(At.None),"AR"!==l||(yield Be()))})):void 0,close:J||ie?Ve:void 0,isInteractive:()=>De(),setInteractive:e=>Oe(e)}}))}function cr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const ur={setup:function(t){return e(this,void 0,void 0,(function*(){return ar(t)}))}},dr={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",(()=>lr(n)))}))},version:w};export{er as PREVIEW_STATES,t as PluginError,dr as plugin,ur 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.1";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 C;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,T,x;function k(e){const t=function(e){const t=new T.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,T.ClampToEdgeWrapping,T.ClampToEdgeWrapping,T.LinearFilter,T.LinearFilter,1,T.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(x.parse(e));return t.mapping=T.EquirectangularReflectionMapping,t.colorSpace=T.LinearSRGBColorSpace,t}const L=45,U=45,$=3,D=1.5,O=1,_=.5;let N,j,F,W,q,G=!1;const z=4,B=.001,Q=1e-7,V=10,K=11,H=1/(K-1),X="function"==typeof Float32Array;function Z(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 re;const o=X?new Float32Array(K):new Array(K);for(let t=0;t<K;++t)o[t]=te(t*H,e,n);function i(t){let r=0,i=1;const a=K-1;for(;i!==a&&o[i]<=t;++i)r+=H;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*H,l=ne(s,e,n);return l>=B?function(e,t,n,r){for(let o=0;o<z;++o){const o=ne(t,n,r);if(0===o)return t;t-=(te(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=te(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>Q&&++s<V);return a}(t,r,r+H,e,n)}return function(e){return 0===e||1===e?e:te(i(e),t,r)}}function Y(e,t){return 1-3*t+3*e}function J(e,t){return 3*t-6*e}function ee(e){return 3*e}function te(e,t,n){return((Y(t,n)*e+J(t,n))*e+ee(t))*e}function ne(e,t,n){return 3*Y(t,n)*e*e+2*J(t,n)*e+ee(t)}function re(e){return e}function oe(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=Z(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function ie(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:oe(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 ae="#",se="time",le="interpolation",ce="yaw",ue="pitch",de="fov",he=[se,ce,ue,de,le],pe="s",fe="ms",me=1e3,ge="deg",ve="rad",we=Math.PI/180,ye="ease-in-out",be="cubic-bezier(",Ee=")";function Ae(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(ae);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(!he.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(se))throw new Error(`Missing required token: '${se}'.`);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}=Se(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=Re(null!==(t=r.interpolation)&&void 0!==t?t:ye);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*we,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*we,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*we,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 Se(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(se),o=function(e){if(e.endsWith(fe))return Ie(e.substring(0,e.length-fe.length));if(e.endsWith(pe))return Ie(e.substring(0,e.length-pe.length))*me;return Ie(e)}(n[r]),i=e.indexOf(le),a=Re(-1===i?ye: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 ce:s.theta={time:o,value:Me(c),interpolation:a};break;case ue:s.phi={time:o,value:Me(c),interpolation:a};break;case de:s.fov={time:o,value:Me(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Me(e){return e.endsWith(ge)?Ie(e.substring(0,e.length-ge.length))*we:e.endsWith(ve)?Ie(e.substring(0,e.length-ve.length)):Ie(e)*we}function Re(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(be)&&e.endsWith(Ee)){const t=e.substring(be.length,e.length-Ee.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 Pe=300,Te=2e3,xe=.05,ke=2*Math.PI/32,Le=Re("hold"),Ue=Re("sine"),$e=Re("sine-in"),De=Re("sine-out");const Oe=8,_e=2*Math.PI,Ne=_e/12,je=_e/60,Fe=_e/60,We=60,qe=60,Ge=1e3,ze=We*qe,Be=-1;const Qe=["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 Ve(e){null!=e&&(e.dispose(),Qe.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let Ke;const He=0,Xe=3;let Ze,Ye,Je,et=!1,tt=1,nt=1,rt=1;const ot=1;let it;const at=new Map;function st(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,C=!0,I=!1,O=0,G=0,z=1,B=1,Q=1;const V={threeInit:()=>{b||(lt(),i=new Ye.Scene,a=new Ye.PerspectiveCamera(25,1,.5),s=new Ze.OrbitControls(a,t),s.setInteractionEnabled(C),h=Ye.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new N.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new N.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new N.Group;r.position.y=-.7;const o=new N.PlaneGeometry(L,U).rotateX(Math.PI/2),i=new N.MeshBasicMaterial({map:t.texture,opacity:_,transparent:!0,depthWrite:!1}),a=new N.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new N.Mesh(o);s.visible=!1,r.add(s);const l=new N.OrthographicCamera(-L/2,L/2,U/2,-U/2,0,$);function c(e){s.visible=!0,W.uniforms.tDiffuse.value=t.texture,W.uniforms.h.value=1*e/256,s.material=W,j.setRenderTarget(n),j.render(s,l),q.uniforms.tDiffuse.value=n.texture,q.uniforms.v.value=1*e/256,s.material=q,j.setRenderTarget(t),j.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=F;const r=j.getClearAlpha();j.setClearAlpha(0),j.setRenderTarget(t),j.render(e,l),e.overrideMaterial=null,c(D),c(.4*D),j.setRenderTarget(null),j.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;return T=(e=Ze).THREE,x=new e.RGBELoader,i.environment=k(n),function(e,t){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)}(it,Ze),r=t,P.parseAsync(r.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t;e instanceof Ye.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(Ve):Ve(e.material))})),i.clear(),i.add(e.scene);const n=(new Ye.Box3).setFromObject(e.scene);l.position.y=n.min.y-He,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof Ye.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(Ze.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,Ye.Vector3)),O=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())<Ge/Oe)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=Be*Ne*(i+a/We+s/ze)),null!=n&&(n.rotation.y=Be*je*(a+s/qe)),null!=r&&(r.rotation.y=Be*Fe*(s+l/Ge)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,it.setAnimationLoop(ct),t.style.visibility="visible",G=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 at.values())if(!e())return!1;return!0}()&&it.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:Ye.ACESFilmicToneMapping,Linear:Ye.LinearToneMapping,Neutral:Ye.NeutralToneMapping};null!=n[e]&&(h=n[e]),R=t},threeIsInteractive:()=>C,threeSetInteractive:e=>{C=e,null==s||s.setInteractionEnabled(C)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=ie([{time:0,value:e,interpolation:Le},{time:Pe,value:e,interpolation:De},{time:Pe+Te/4,value:e+ke,interpolation:Ue},{time:Pe+3*Te/4,value:e-ke,interpolation:$e},{time:Pe+Te,value:e,interpolation:Le},{time:Pe+2*Te,value:e,interpolation:Le}]),s.setTheta(f.get()),m=null,g=null,v=ie([{time:0,value:0,interpolation:Le},{time:Pe,value:1,interpolation:Le},{time:Pe+Te,value:0,interpolation:Le},{time:Pe+2*Te,value:0,interpolation:Le}]),w=ie([{time:0,value:0,interpolation:Le},{time:Pe,value:0,interpolation:De},{time:Pe+Te/4,value:-xe,interpolation:Ue},{time:Pe+3*Te/4,value:xe,interpolation:$e},{time:Pe+Te,value:0,interpolation:Le},{time:Pe+2*Te,value:0,interpolation:Le}])},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!==G?e-G:0;G=e,0===O?M=!0:O<Xe&&(t=0),O++,I||(s.hasUserInteracted()?(I=!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=it.toneMapping,s=it.toneMappingExposure;it.toneMapping=h,it.toneMappingExposure=R,it.setViewport(0,0,t.width,t.height),it.setClearColor(new Ye.Color(16777215),E&&!A?1:0),it.render(i,a),it.toneMapping=e,it.toneMappingExposure=s,M=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),Je.width>0&&Je.height>0&&o.drawImage(Je,0,nt-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=C&&!I?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(z,B)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===z&&n===B&&rt===Q||(t.width=Math.ceil(e*rt*ot),t.height=Math.ceil(n*rt*ot),z=e,B=n,Q=rt,M=!0)},target_:t};return at.set(t,V),V}function lt(){if(et)return;Ze=window.ShopAR__THREE,Ye=Ze.THREE,Je=document.createElement("canvas");var e,t;Je.style.position="block",it=new Ye.WebGLRenderer({powerPreference:"high-performance",canvas:Je,antialias:!0,alpha:!0}),it.outputColorSpace=Ye.SRGBColorSpace,it.toneMapping=Ye.ACESFilmicToneMapping,it.setClearColor(new Ye.Color(16777215),0),e=it,t=Ze,G||(N=t.THREE,j=e,F=new N.MeshDepthMaterial,F.userData.darkness={value:O},F.onBeforeCompile=e=>{e.uniforms.darkness=F.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}`},F.depthTest=!1,F.depthWrite=!1,W=new N.ShaderMaterial(t.HorizontalBlurShader),W.depthTest=!1,q=new N.ShaderMaterial(t.VerticalBlurShader),q.depthTest=!1,G=!0),ut(),et=!0}function ct(e){ut(),it.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of at.values())t(e),n()&&r()}function ut(){let e=0,t=0;for(const{target_:n}of at.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*ot),t=Math.ceil(t*n*ot),e===tt&&t===nt&&n===rt||(tt=e,nt=t,rt=n,it.setSize(tt,nt,!1));for(const{updateSize_:e}of at.values())e()}const dt={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},ht=Object.keys(dt);function pt(e){return dt[e]}const ft="shopar-error";function mt(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const r=document.createElementNS("http://www.w3.org/2000/svg","image");r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),r.setAttribute("width",e),r.setAttribute("height",e),n.appendChild(r)}return n}function gt(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn";{const e=mt("1.75rem",r);o.appendChild(e)}{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 vt="shopar-control";const wt="shopar-deepar-output";function yt(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 bt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function Et(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 At(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 St="shopar-main";const Mt="shopar-qr-output";const Rt="shopar-three-output";var Ct;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Ct||(Ct={}));let It=!1;function Pt(){It||(!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.")}}(),It=!0)}function Tt(){Pt();const e=function(){const e=document.createElement("div");e.id=St;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=Mt;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=wt;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=Rt,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=mt("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=yt("shopar-ar-loading-container"),h=bt("shopar-ar-loading-text",pt("loading.ar"));d.appendChild(h);const p=Et("shopar-ar-loading-bar-bg"),f=At("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=yt("shopar-3d-loading-container"),g=bt("shopar-3d-loading-text",pt("loading.3d"));m.appendChild(g);const v=Et("shopar-3d-loading-bar-bg"),w=At("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=ft;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=vt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(S);const R=gt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");S.appendChild(R);const C=gt("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${M}/img/icons/cube.svg`);S.appendChild(C);const I=gt("shopar-btn-close","Close","Close ShopAR view",`${M}/img/icons/close.svg`);S.append(I);let P,T,x=Ct.None,k=!1,L=!1,U=!1,$=!1;function D(){f.classList.remove("active"),d.style.visibility="hidden"}function O(){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;k=e,L=t,U=n,$=r,P=o,T=i,xt(S,k),xt(R,k&&(U||L)&&x===Ct.None),xt(C,k&&$&&x===Ct.None),xt(I,k&&x!==Ct.None),D(),O(),k||""===(a=A).style.display&&xt(a,!1)},getUIState:function(){return x},setUIState:function(e){x=e,x===Ct.None?(D(),O(),k&&(xt(A,!1),xt(I,!1),(L||U)&&xt(R,!0),$&&xt(C,!0))):x===Ct.QR||x===Ct.AR?k&&(xt(A,!1),xt(R,!1),xt(C,$&&"AR"===T),xt(I,"AR"!==T)):x===Ct.Preview&&k&&(xt(A,!1),xt(R,(L||U)&&"3D"===T),xt(C,!1),xt(I,"3D"!==T))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!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.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(P),R.onclick=e),$&&(C.onclick=t),I.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:O,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){k&&xt(A,!0)}}}function xt(e,t){e.style.display=t?"":"none"}const kt=new Map;function Lt(t){let n=kt.get(t);return null==n?(n=function(){let t=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=Tt()),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 C;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=st(e(),t(),n())}return o}}}(),kt.set(t,n)):n.incrementSetupId_(),n}function Ut(e){for(const t of kt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===Ct.AR&&o(Ct.None)}}let $t;const Dt=new Uint8Array(16);function Ot(){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(Dt)}const _t=[];for(let e=0;e<256;++e)_t.push((e+256).toString(16).slice(1));var Nt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function jt(e,t,n){if(Nt.randomUUID&&!t&&!e)return Nt.randomUUID();const r=(e=e||{}).random||(e.rng||Ot)();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 _t[e[t+0]]+_t[e[t+1]]+_t[e[t+2]]+_t[e[t+3]]+"-"+_t[e[t+4]]+_t[e[t+5]]+"-"+_t[e[t+6]]+_t[e[t+7]]+"-"+_t[e[t+8]]+_t[e[t+9]]+"-"+_t[e[t+10]]+_t[e[t+11]]+_t[e[t+12]]+_t[e[t+13]]+_t[e[t+14]]+_t[e[t+15]]}(r)}const Ft="qrLaunch",Wt="arLaunch",qt="previewLaunch",Gt="heartbeat";let zt,Bt,Qt=!1,Vt=window.navigator.userAgent||"no user agent";const Kt=[];function Ht(){null==zt&&(Bt=jt(),zt=R(`${M}/shopar-analytics.js`),zt.then((()=>{Qt=!0,window.ShopAR__analytics.initializeImpl(),Kt.forEach((e=>e()))})))}function Xt(e){Qt?e():Kt.push(e)}function Zt(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Yt(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 Jt=200,en=10;let tn=!1,nn=null,rn=[],on=[];function an(t){return e(this,void 0,void 0,(function*(){tn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${M}/wasm/mediapipe`,t),nn&&clearInterval(nn);const r=[],o=[];nn=setInterval((()=>e(this,void 0,void 0,(function*(){if(tn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());tn||(null!=a&&null!=s&&function(e){for(let t of rn)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<en||(r.shift(),o.shift(),function(e,t){for(let n of on)n({faceWidth:e,IPD:t})}(ln(r),ln(o)))))}))),Jt)}))}function sn(){on=[],rn=[],tn=!0}function ln(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var cn="undefined"!=typeof Float32Array?Float32Array:Array;function un(){var e=new cn(16);return cn!=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 dn(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 hn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function pn(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 fn(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 mn(){var e=new cn(3);return cn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function gn(e,t,n){var r=new cn(3);return r[0]=e,r[1]=t,r[2]=n,r}function vn(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 wn(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 yn(){var e=new cn(4);return cn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}mn(),function(){var e,t=(e=new cn(4),cn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var bn;let En,An,Sn;mn(),gn(1,0,0),gn(0,1,0),yn(),yn(),bn=new cn(9),cn!=Float32Array&&(bn[1]=0,bn[2]=0,bn[3]=0,bn[5]=0,bn[6]=0,bn[7]=0),bn[0]=1,bn[4]=1,bn[8]=1;let Mn,Rn,Cn,In,Pn=!0,Tn=null;const xn=new Set;let kn,Ln,Un,$n,Dn,On;function _n(){null==En&&(En=R(`${M}/shopar-deepar.js`))}function Nn(){null==An&&(An=R(`${M}/shopar-true-scale.js`))}function jn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return Dn=o,null==kn&&(kn=(()=>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=Kn(Cn),o=Zt(n);Mn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:In,additionalOptions:{hint:On,cameraConfig:{disableDefaultCamera:!0}}}),Rn=yield Yt(o),yield Hn(Mn,Rn,"user"===n),"Glasses"===Cn&&(yield An,an(Rn),"DetectionLoop"!==Dn&&Jn((e=>{$n=e.faceWidth})))})))()),kn}))}function Fn(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===Cn&&(n=t,r=On,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!=Mn&&(Mn.shutdown(),Mn=null,kn=null),Cn=e,On=t)}function Wn(e){e!==In&&(In=e,null!=Mn&&Mn.changePreviewElement(In))}function qn(e){Tn=e}function Gn(e){Mn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if($n){const e=137/($n+5);Mn.changeParameterVector("GLASSES","","scale",e,e,e,0),Mn.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=Zn("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=Zn("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Mn.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),Mn.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),sn(),$n=null}e(),Xn("Glasses")}},Mn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),Xn("Shoes"))},Mn.callbacks.onWristTracked=t=>{t.detected&&(e(),Xn("Watches"))}}function zn(t,n,r){return e(this,void 0,void 0,(function*(){return null!=Ln&&Un===r||(yield Ln,Ln=Mn.switchEffect(t,{envmap:n}),Un=r),Ln}))}function Bn(e,t){null!=e&&null!=t&&(Mn.setToneMapping(e),Mn.setExposure(t))}function Qn(){return e(this,void 0,void 0,(function*(){if(null!=Mn){if(Pn=!1,null==Rn){const e=Kn(Cn),t=Zt(e);Rn=yield Yt(t),yield Hn(Mn,Rn,"user"===e),"Glasses"===Cn&&(an(Rn),"DetectionLoop"!==Dn&&Jn((e=>{$n=e.faceWidth})))}!function(){if(null==Tn)return;if(null==Cn||xn.has(Cn))return;Tn.style.visibility="visible",Tn.style.opacity="1"}(),Mn.setPaused(Pn),In.style.display=""}}))}function Vn(){null!=Mn&&(Pn=!0,Mn.setPaused(Pn),sn(),null!=Rn&&null!=Rn.srcObject&&Rn.srcObject instanceof MediaStream&&(Rn.srcObject.getTracks().forEach((e=>e.stop())),Rn=null),function(){if(null==Tn)return;Tn.style.visibility="hidden",Tn.style.opacity="0"}(),Mn.stopCamera(),In.style.display="none")}function Kn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Hn(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 Xn(e){null!=Tn&&(xn.has(e)||(xn.add(e),Tn.style.opacity="0"))}function Zn(e,t,n,r,o,i,a){const s=Mn.getTransformationBetween(e,t),l=hn(mn(),s),c=function(e,t){var n=new cn(3);pn(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}(yn(),s);fn(s,c,l,gn(a,a,a));const u=Mn.getTransformationBetween(t,n),d=hn(mn(),u);fn(u,yn(),d,pn(mn(),u));const h=dn(un(),s,u),p=hn(mn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=Mn.getTransformationBetween(n,r)}catch(e){return f}const g=dn(un(),u,m),v=dn(un(),s,g),w=gn(p[0],i[1],i[2]),y=wn(mn(),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,C=u*v-p*f,I=d*g-h*m,P=d*v-p*m,T=h*v-p*g,x=w*T-y*P+b*I+E*C-A*R+S*M;return x?(x=1/x,e[0]=(s*T-l*P+c*I)*x,e[1]=(o*P-r*T-i*I)*x,e[2]=(m*S-g*A+v*E)*x,e[3]=(h*A-d*S-p*E)*x,e[4]=(l*C-a*T-c*R)*x,e[5]=(n*T-o*C+i*R)*x,e[6]=(g*b-f*S-v*y)*x,e[7]=(u*S-h*b+p*y)*x,e[8]=(a*P-s*C+c*M)*x,e[9]=(r*C-n*P-i*M)*x,e[10]=(f*A-m*b+v*w)*x,e[11]=(d*b-u*A-p*w)*x,e[12]=(s*R-a*I-l*M)*x,e[13]=(n*I-r*R+o*M)*x,e[14]=(m*y-f*E-g*w)*x,e[15]=(u*E-d*y+h*w)*x,e):null}(un(),v));let b=Mn.getClosestPointOnMesh(r,y);try{const e=Mn.getClosestPointOnMesh(o,y);vn(y,e)<vn(y,b)&&(b=e)}catch(e){}const E=wn(mn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function Yn(e){!function(e){rn.push(e)}(e)}function Jn(e){!function(e){on.push(e)}(e)}var er;function tr(){return[er.Android,er.iOS,er.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)?er.iOS:-1!==n.indexOf(t)?i?er.Tablet:er.MacOS:-1!==r.indexOf(t)?er.Windows:/Android/.test(e)?er.Android:/Linux/.test(t)?er.Linux:i?er.Tablet:er.Unknown}return er.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"}(er||(er={}));const nr=["AR","3D"];function rr(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function or(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function ir(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function ar(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;rr(n,"apiKey"),ir(n,"apiKey"),rr(r,"sku"),ir(r,"sku"),rr(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",nr),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&&ir(s,"baseUrl"),null!=l&&or(l,"defaultUI"),null!=c&&or(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",ht)}let sr=!1;function lr(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;M.update(n.baseUrl),Ht();const{trackEvent:o}=function(e){const t=performance.now(),n=jt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:A,userAgent:Vt,sessionId:Bt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),Xt((()=>{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=Lt(r),{getSetupId:l,findUI:c}=s,d=l();_n(),Nn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=Ct.None)throw Error("UI state is not None, this is weird..");v(Ct.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield En,cr(l(),d);try{o("visionArLaunch"),Vn(),Fn("Glasses",["faceInit"]),Wn(f()),yield jn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),cr(l(),d),yield Qn(),cr(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),b(),Vn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{y()}return sr=!0,{registerFacePoseListener:e=>{sr&&(o("registerFacePoseListener"),Yn(e))},registerFaceMeasurementListener:e=>{sr&&(o("registerFaceMeasurementListener"),Jn(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){sr&&(o("switchEffect",{arUrl:t}),function(e){Mn.switchEffect(e)}(t))})),clearEffect:()=>{sr&&(o("clearEffect"),Mn.clearEffect())},close:()=>{if(sr){if(sr=!1,o("visionClose"),g()!==Ct.AR)throw new t("AR not launched.");Vn(),v(Ct.None)}}}}))}function cr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function ur(n){var r,o;return e(this,void 0,void 0,(function*(){ar(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(dt,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(dt[t]=n)}}(n.strings);const w=null!=c?Ae(c):null,y=null!=(null==w?void 0:w.theta)?ie(w.theta):null,S=null!=(null==w?void 0:w.phi)?ie(w.phi):null,I=null!=(null==w?void 0:w.fov)?ie(w.fov):null,P=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),T=Lt(s),{getSetupId:x,findUI:k,findQR:L,findThree:U}=T,$=x();Ht();const{trackEvent:D,arInteracted:O,previewInteracted:_}=function(e,t){const n=performance.now(),r=jt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(Gt,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Vt,pluginVersion:A,sessionId:Bt,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),Xt((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);D("setup",{hostname:window.location.hostname});const N=yield P;D("apiResponse",N);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}=N;dr(x(),$);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&&!tr(),ae=te&&!oe,se=null!=K;if(dr(x(),$),oe&&function(){e(this,void 0,void 0,(function*(){null==C&&(C=R(`${M}/shopar-qr.js`))}))}(),ae&&(_n(),function(e){e!==Sn&&(Sn=e,b(e),Ln=null,sn())}(F),"Glasses"===j&&Nn(),null!=W&&b(W)),se){null==Ke&&(Ke=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`)}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:Se,showCameraError:Me}=k();le(s);fe(null==n.defaultUI||n.defaultUI,oe,ae,se,j,l),de(null!=Q?Q:"",null!=V?V:""),he(J),pe(ee),Se(Y),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()!==Ct.QR||Re()||Ie(),me()!==Ct.AR||Pn||Vn(),me()!==Ct.Preview||ke()||Ue(),ge(Ct.None)}));const{qrPaused:Re,qrDraw:Ce,qrPause:Ie}=L(),{threeInit:Pe,threeParse:Te,threeLoad:xe,threePaused:ke,threeResume:Le,threePause:Ue,threeSetZoomEnabled:$e,threeSetForcedTransparency:De,threeSetToneMapping:Oe,threeIsInteractive:_e,threeSetInteractive:Ne,threeSetOnInteracted:je,threeInitPromptAnimation:Fe,threeInitThetaAnimation:We,threeInitPhiAnimation:qe,threeInitFovAnimation:Ge}=U(),ze=null==n.interactive||n.interactive;Ne(ze);let Be=0;if(me()===Ct.QR){if(!Re())if(oe){D(Ft);try{yield Ce(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Ie(),ge(Ct.None)}else if(me()===Ct.AR){if(!Pn)if(ae&&!sr){D(Wt);const e=null!=W?yield b(W):void 0;dr(x(),$);const t=yield b(F);dr(x(),$),Ut(T),Fn(j),Wn(ce()),qn(B?ue():null),yield zn(t,e,`${F}${W}`),Bn(q,G),Gn(O),dr(x(),$)}else Vn(),ge(Ct.None)}else if(me()===Ct.Preview&&!ke())if(se){D(qt),be();const e=255,t=yield E(K,(new Date).getTime()+e,Math.random()*e);dr(x(),$);const n=yield b(null!=H?H:`${M}/env/default.hdr`);dr(x(),$);const r=yield Te(t,n,`${K}${H}`);dr(x(),$),xe(r,j),$e(d),De(h),Oe(null!=X?X:"ACES",null!=Z?Z:1),je(_),Fe(),null!=w&&(We(y),qe(S),Ge(I)),Ee()}else Ue(),ge(Ct.None);const Qe=()=>e(this,void 0,void 0,(function*(){if(oe){if(me()===Ct.QR||me()===Ct.AR)return;try{D(Ft);const e=++Be;if(me()===Ct.Preview&&se&&!ke()&&Ue(),ge(Ct.QR),yield Ce(i,a),Be!==e)return;return void dr(x(),$)}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(!ae)throw new t("Model does not have AR enabled.");if(me()!==Ct.AR)try{D(Wt);const e=++Be;me()===Ct.Preview&&se&&!ke()&&Ue(),Ut(T),ge(Ct.AR),we();const t=null!=W?yield b(W):void 0;dr(x(),$);const n=yield b(F);if(Be!==e)return;if(dr(x(),$),yield En,Be!==e)return;if(dr(x(),$),Vn(),Fn(j),Wn(ce()),qn(B?ue():null),yield jn({licenseKey:z}),Be!==e)return;if(dr(x(),$),yield zn(n,t,`${F}${W}`),Bn(q,G),Gn(O),Be!==e)return;if(dr(x(),$),yield Qn(),Be!==e)return;dr(x(),$)}catch(e){const n=e instanceof Error;throw D("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Me(),Vn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ye()}})),Ve=()=>e(this,void 0,void 0,(function*(){if(!se)throw new t("Model does not have 3D enabled.");if(me()!==Ct.Preview)try{D(qt);const e=++Be;me()===Ct.AR&&(ae&&!Pn&&Vn(),Ie()),ge(Ct.Preview),be();const t=255,n=yield E(K,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;dr(x(),$);const r=yield b(null!=H?H:`${M}/env/default.hdr`);if(console.log(r),Be!==e)return;if(dr(x(),$),yield Ke,Be!==e)return;if(dr(x(),$),Pe(),Be!==e)return;dr(x(),$);const o=yield Te(n,r,`${K}${H}`);if(Be!==e)return;dr(x(),$),xe(o,j),$e(d),De(h),Oe(null!=X?X:"ACES",null!=Z?Z:1),je(_),Fe(),null!=w&&(We(y),qe(S),Ge(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()!==Ct.None&&(++Be,me()===Ct.QR||me()===Ct.AR?(ae&&!Pn&&Vn(),Ie()):me()===Ct.Preview&&se&&!ke()&&Ue(),ge(Ct.None),"AR"!==l?"3D"!==l||(yield Ve()):yield Qe())}));return ve(Qe,Ve,He),"AR"===l?(yield Qe(),dr(x(),$)):"3D"===l&&(yield Ve(),dr(x(),$)),sr=!1,{launchAR:te?Qe:void 0,launch3D:se?Ve:void 0,closeAR:te?()=>e(this,void 0,void 0,(function*(){me()!==Ct.AR&&me()!==Ct.QR||(++Be,ae&&!Pn&&Vn(),Ie(),ge(Ct.None),"3D"!==l||(yield Ve()))})):void 0,close3D:se?()=>e(this,void 0,void 0,(function*(){me()===Ct.Preview&&(++Be,se&&!ke()&&Ue(),ge(Ct.None),"AR"!==l||(yield Qe()))})):void 0,close:te||se?He:void 0,isInteractive:()=>_e(),setInteractive:e=>Ne(e)}}))}function dr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const hr={setup:function(t){return e(this,void 0,void 0,(function*(){return lr(t)}))}},pr={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",(()=>ur(n)))}))},version:A};export{nr as PREVIEW_STATES,t as PluginError,pr as plugin,hr 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,o){return new(n||(n=Promise))((function(r,i){function a(e){try{l(o.next(e))}catch(e){i(e)}}function s(e){try{l(o.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((o=o.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class n extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const o=[Uint8Array,Uint32Array],r=o.length-2,i=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],a=[2,12,7,1],s=window[i[a[a[r]]]][i[a[a[a.length-1]]]],l=s.charCodeAt(r),c=l^l,u=new o[1]([c]);function d(){const e=(new TextEncoder).encode(s),t=i.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[i[t[2]]](String.fromCodePoint(...e))}const h=[1e3,2e3,4e3],p=h.length;function f(e,n=0){return t(this,void 0,void 0,(function*(){try{return yield e()}catch(t){if(n>=p)throw t;return yield new Promise((e=>setTimeout(e,h[n]))),f(e,n+1)}}))}function 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="0.7.3-alpha.0";let b=`https://cdn.jsdelivr.net/npm/shopar-plugin@${y}/dist`;const E={update:e=>{null!=e&&(b=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>b};function A(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 S;const M=(()=>{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 R,T,C;function P(e){const t=function(e){const t=new T.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,T.ClampToEdgeWrapping,T.ClampToEdgeWrapping,T.LinearFilter,T.LinearFilter,1,T.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(C.parse(e));return t.mapping=T.EquirectangularReflectionMapping,t.colorSpace=T.LinearSRGBColorSpace,t}const I=45,x=45,k=3,L=1.5,U=1,$=.5;let D,O,_,N,j,F=!1;const W=4,q=.001,G=1e-7,z=10,V=11,B=1/(V-1),Q="function"==typeof Float32Array;function K(e,t,n,o){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===o)return ee;const r=Q?new Float32Array(V):new Array(V);for(let t=0;t<V;++t)r[t]=Y(t*B,e,n);function i(t){let o=0,i=1;const a=V-1;for(;i!==a&&r[i]<=t;++i)o+=B;--i;const s=o+(t-r[i])/(r[i+1]-r[i])*B,l=J(s,e,n);return l>=q?function(e,t,n,o){for(let r=0;r<W;++r){const r=J(t,n,o);if(0===r)return t;t-=(Y(t,n,o)-e)/r}return t}(t,s,e,n):0===l?s:function(e,t,n,o,r){let i,a,s=0;do{a=t+(n-t)/2,i=Y(a,o,r)-e,i>0?n=a:t=a}while(Math.abs(i)>G&&++s<z);return a}(t,o,o+B,e,n)}return function(e){return 0===e||1===e?e:Y(i(e),t,o)}}function H(e,t){return 1-3*t+3*e}function X(e,t){return 3*t-6*e}function Z(e){return 3*e}function Y(e,t,n){return((H(t,n)*e+X(t,n))*e+Z(t))*e}function J(e,t,n){return 3*H(t,n)*e*e+2*X(t,n)*e+Z(t)}function ee(e){return e}function te(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=K(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function ne(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:te(n)})));let o=0,r=n[0].value;return{reset:()=>{o=0},update:e=>{for(o+=e;o>=t;)o-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(o>=t.time&&o<i.time){const e=t.interpolate((o-t.time)/(i.time-t.time));r=t.value+e*(i.value-t.value)}}},get:()=>r}}const oe="#",re="time",ie="interpolation",ae="yaw",se="pitch",le="fov",ce=[re,ae,se,le,ie],ue="s",de="ms",he=1e3,pe="deg",fe="rad",me=Math.PI/180,ge="ease-in-out",ve="cubic-bezier(",we=")";function ye(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(oe);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const o=function(e){const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!ce.includes(o))throw new Error(`Invalid token in header: '${o}'.`);if(t.includes(o))throw new Error(`Duplicate token in header: '${o}'.`);t.push(o)}if(!t.includes(re))throw new Error(`Missing required token: '${re}'.`);return t}(t.split(/\s+/)),r={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=be(o,e);null!=t&&(null==r.theta&&(r.theta=[]),r.theta.push(t)),null!=n&&(null==r.phi&&(r.phi=[]),r.phi.push(n)),null!=i&&(null==r.fov&&(r.fov=[]),r.fov.push(i))}if(0===Object.values(r).length)throw new Error("At least one parameter should be animated.");return r}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const o of e){const{time:e,pitch:r,yaw:i,fov:a}=o;if(null==e)throw new Error("Time missing.");const s=Ae(null!==(t=o.interpolation)&&void 0!==t?t:ge);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*me,interpolation:s})),null!=r&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:r*me,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*me,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 be(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const o=e.indexOf(re),r=function(e){if(e.endsWith(de))return Me(e.substring(0,e.length-de.length));if(e.endsWith(ue))return Me(e.substring(0,e.length-ue.length))*he;return Me(e)}(n[o]),i=e.indexOf(ie),a=Ae(-1===i?ge:n[i]),s={};for(let t=0;t<n.length;t++){if(t===o||t===i)continue;const l=e[t],c=n[t];switch(l){case ae:s.theta={time:r,value:Ee(c),interpolation:a};break;case se:s.phi={time:r,value:Ee(c),interpolation:a};break;case le:s.fov={time:r,value:Ee(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Ee(e){return e.endsWith(pe)?Me(e.substring(0,e.length-pe.length))*me:e.endsWith(fe)?Me(e.substring(0,e.length-fe.length)):Me(e)*me}function Ae(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Se(0,0,1,1);if("sine"===e)return Se(.37,0,.63,1);if("sine-in"===e)return Se(.12,0,.39,0);if("sine-out"===e)return Se(.61,1,.88,1);if("ease"===e)return Se(.25,.1,.25,1);if("ease-in"===e)return Se(.42,0,1,1);if("ease-out"===e)return Se(0,0,.58,1);if("ease-in-out"===e)return Se(.42,0,.58,1);if(e.startsWith(ve)&&e.endsWith(we)){const t=e.substring(ve.length,e.length-we.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:Me(t[0]),y1:Me(t[1]),x2:Me(t[2]),y2:Me(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Se(e,t,n,o){return{type:"bezier",x1:e,y1:t,x2:n,y2:o}}function Me(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Re=300,Te=2e3,Ce=.05,Pe=2*Math.PI/32,Ie=Ae("hold"),xe=Ae("sine"),ke=Ae("sine-in"),Le=Ae("sine-out");const Ue=8,$e=2*Math.PI,De=$e/12,Oe=$e/60,_e=$e/60,Ne=60,je=60,Fe=1e3,We=Ne*je,qe=-1;const Ge=["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 ze(e){null!=e&&(e.dispose(),Ge.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let Ve;const Be=0,Qe=3;let Ke,He,Xe,Ze=!1,Ye=1,Je=1,et=1;const tt=1;let nt;const ot=new Map;function rt(e,n,o){const r=e.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,U=1,F=!0,W=!1,q=0,G=0,z=1,V=1,B=1;const Q={threeInit:()=>{b||(it(),i=new He.Scene,a=new He.PerspectiveCamera(25,1,.5),s=new Ke.OrbitControls(a,e),s.setInteractionEnabled(F),h=He.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new D.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new D.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new D.Group;o.position.y=-.7;const r=new D.PlaneGeometry(I,x).rotateX(Math.PI/2),i=new D.MeshBasicMaterial({map:t.texture,opacity:$,transparent:!0,depthWrite:!1}),a=new D.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new D.Mesh(r);s.visible=!1,o.add(s);const l=new D.OrthographicCamera(-I/2,I/2,x/2,-x/2,0,k);function c(e){s.visible=!0,N.uniforms.tDiffuse.value=t.texture,N.uniforms.h.value=1*e/256,s.material=N,O.setRenderTarget(n),O.render(s,l),j.uniforms.tDiffuse.value=n.texture,j.uniforms.v.value=1*e/256,s.material=j,O.setRenderTarget(t),O.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,o.add(l),{shadowGroup:o,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=_;const o=O.getClearAlpha();O.setClearAlpha(0),O.setRenderTarget(t),O.render(e,l),e.overrideMaterial=null,c(L),c(.4*L),O.setRenderTarget(null),O.setClearAlpha(o),e.background=n}}}(i)),b=!0)},threeParse:(e,n,o)=>t(this,void 0,void 0,(function*(){return null!=u&&d===o||(yield u,u=(()=>t(this,void 0,void 0,(function*(){var t,o;return T=(t=Ke).THREE,C=new t.RGBELoader,i.environment=P(n),function(e,t){const{THREE:n}=t;R=(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)}(nt,Ke),o=e,R.parseAsync(o.buffer,"")})))(),d=o),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t;e instanceof He.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(ze):ze(e.material))})),i.clear(),i.add(e.scene);const n=(new He.Box3).setFromObject(e.scene);l.position.y=n.min.y-Be,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof He.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(Ke.reduceVertices(e.scene,((e,t)=>Math.max(e,o.distanceToSquared(t))),0));s.reset(o,r,function(e,t){var n;const o={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?o.Glasses:null!==(n=o[e])&&void 0!==n?n:o.Glasses).normalize()}(t,He.Vector3)),q=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),o=e.getObjectByName("seconds");if(null==t&&null==n&&null==o)return null;let r=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-r.getTime())<Fe/Ue)return!1;r=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=qe*De*(i+a/Ne+s/We)),null!=n&&(n.rotation.y=qe*Oe*(a+s/je)),null!=o&&(o.rotation.y=qe*_e*(s+l/Fe)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,nt.setAnimationLoop(at),e.style.visibility="visible",G=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 ot.values())if(!e())return!1;return!0}()&&nt.setAnimationLoop(null),e.style.visibility="hidden",o.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:He.ACESFilmicToneMapping,Linear:He.LinearToneMapping,Neutral:He.NeutralToneMapping};null!=n[e]&&(h=n[e]),U=t},threeIsInteractive:()=>F,threeSetInteractive:e=>{F=e,null==s||s.setInteractionEnabled(F)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=ne([{time:0,value:e,interpolation:Ie},{time:Re,value:e,interpolation:Le},{time:Re+Te/4,value:e+Pe,interpolation:xe},{time:Re+3*Te/4,value:e-Pe,interpolation:ke},{time:Re+Te,value:e,interpolation:Ie},{time:Re+2*Te,value:e,interpolation:Ie}]),s.setTheta(f.get()),m=null,g=null,v=ne([{time:0,value:0,interpolation:Ie},{time:Re,value:1,interpolation:Ie},{time:Re+Te,value:0,interpolation:Ie},{time:Re+2*Te,value:0,interpolation:Ie}]),w=ne([{time:0,value:0,interpolation:Ie},{time:Re,value:0,interpolation:Le},{time:Re+Te/4,value:-Ce,interpolation:xe},{time:Re+3*Te/4,value:Ce,interpolation:ke},{time:Re+Te,value:0,interpolation:Ie},{time:Re+2*Te,value:0,interpolation:Ie}])},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!==G?e-G:0;G=e,0===q?M=!0:q<Qe&&(t=0),q++,W||(s.hasUserInteracted()?(W=!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=nt.toneMapping,s=nt.toneMappingExposure;nt.toneMapping=h,nt.toneMappingExposure=U,nt.setViewport(0,0,e.width,e.height),nt.setClearColor(new He.Color(16777215),E&&!A?1:0),nt.render(i,a),nt.toneMapping=t,nt.toneMappingExposure=s,M=!1,null!=r&&(r.clearRect(0,0,e.width,e.height),Xe.width>0&&Xe.height>0&&r.drawImage(Xe,0,Je-e.height,e.width,e.height,0,0,e.width,e.height),n.style.visibility=F&&!W?"visible":"hidden",null!=v&&(o.style.opacity=`${v.get()}`),null!=w&&(o.style.transform=`translateX(${w.get()*Math.min(z,V)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===z&&n===V&&et===B||(e.width=Math.ceil(t*et*tt),e.height=Math.ceil(n*et*tt),z=t,V=n,B=et,M=!0)},target_:e};return ot.set(e,Q),Q}function it(){if(Ze)return;Ke=window.ShopAR__THREE,He=Ke.THREE,Xe=document.createElement("canvas");var e,t;Xe.style.position="block",nt=new He.WebGLRenderer({powerPreference:"high-performance",canvas:Xe,antialias:!0,alpha:!0}),nt.outputColorSpace=He.SRGBColorSpace,nt.toneMapping=He.ACESFilmicToneMapping,nt.setClearColor(new He.Color(16777215),0),e=nt,t=Ke,F||(D=t.THREE,O=e,_=new D.MeshDepthMaterial,_.userData.darkness={value:U},_.onBeforeCompile=e=>{e.uniforms.darkness=_.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}`},_.depthTest=!1,_.depthWrite=!1,N=new D.ShaderMaterial(t.HorizontalBlurShader),N.depthTest=!1,j=new D.ShaderMaterial(t.VerticalBlurShader),j.depthTest=!1,F=!0),st(),Ze=!0}function at(e){st(),nt.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of ot.values())t(e),n()&&o()}function st(){let e=0,t=0;for(const{target_:n}of ot.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=M();e=Math.ceil(e*n*tt),t=Math.ceil(t*n*tt),e===Ye&&t===Je&&n===et||(Ye=e,Je=t,et=n,nt.setSize(Ye,Je,!1));for(const{updateSize_:e}of ot.values())e()}const lt={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},ct=Object.keys(lt);function ut(e){return lt[e]}const dt="shopar-error";function ht(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const o=document.createElementNS("http://www.w3.org/2000/svg","image");o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),o.setAttribute("width",e),o.setAttribute("height",e),n.appendChild(o)}return n}function pt(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=ht("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;const i=r.style;return i.display="none",i.pointerEvents="auto",r}const ft="shopar-control";const mt="shopar-deepar-output";function gt(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 vt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function wt(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 yt(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 bt="shopar-main";const Et="shopar-qr-output";const At="shopar-three-output";var St;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(St||(St={}));let Mt=!1;function Rt(){Mt||(!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.")}}(),Mt=!0)}function Tt(){Rt();const e=function(){const e=document.createElement("div");e.id=bt;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),o=function(e,t){const n=document.createElement("div");n.id=Et;const o=n.style;o.position="absolute",o.top="0",o.left="0",o.width="100%",o.height="100%",o.display="none",o.pointerEvents="auto",o.userSelect="none";const r=document.createElement("div");r.className="shopar-qr";const i=r.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(r),r.appendChild(e);const a=document.createElement("div");return a.appendChild(t),r.appendChild(a),n}(t,n);e.appendChild(o);const r=function(){const e=document.createElement("div");e.id=mt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(r);const i=function(){const e=document.createElement("canvas");e.id=At,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:o}=n;return o.position="absolute",o.width="100%",o.height="100%",o.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=ht("2rem",`${E}/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=gt("shopar-ar-loading-container"),h=vt("shopar-ar-loading-text",ut("loading.ar"));d.appendChild(h);const p=wt("shopar-ar-loading-bar-bg"),f=yt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=gt("shopar-3d-loading-container"),g=vt("shopar-3d-loading-text",ut("loading.3d"));m.appendChild(g);const v=wt("shopar-3d-loading-bar-bg"),w=yt("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 A=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),S=function(e){const t=document.createElement("div");t.id=dt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const o=document.createElement("div"),r=o.style;return r.position="absolute",r.width="100%",r.height="100%",r.backgroundColor="#ffffff",r.display="flex",r.flexDirection="column",r.justifyContent="center",r.alignItems="center",t.appendChild(o),o.appendChild(e),t}(A);e.appendChild(S);const M=function(){const e=document.createElement("div");return e.id=ft,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(M);const R=pt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");M.appendChild(R);const T=pt("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${E}/img/icons/cube.svg`);M.appendChild(T);const C=pt("shopar-btn-close","Close","Close ShopAR view",`${E}/img/icons/close.svg`);M.append(C);let P,I,x=St.None,k=!1,L=!1,U=!1,$=!1;function D(){f.classList.remove("active"),d.style.visibility="hidden"}function O(){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 o},getQRImage:function(){return n},getDeepARTarget:function(){return r},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){A.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,o,r,i){var a;k=e,L=t,U=n,$=o,P=r,I=i,Ct(M,k),Ct(R,k&&(U||L)&&x===St.None),Ct(T,k&&$&&x===St.None),Ct(C,k&&x!==St.None),D(),O(),k||""===(a=S).style.display&&Ct(a,!1)},getUIState:function(){return x},setUIState:function(e){x=e,x===St.None?(D(),O(),k&&(Ct(S,!1),Ct(C,!1),(L||U)&&Ct(R,!0),$&&Ct(T,!0))):x===St.QR||x===St.AR?k&&(Ct(S,!1),Ct(R,!1),Ct(T,$&&"AR"===I),Ct(C,"AR"!==I)):x===St.Preview&&k&&(Ct(S,!1),Ct(R,(L||U)&&"3D"===I),Ct(T,!1),Ct(C,"3D"!==I))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${E}/img/icons/${n}`;R.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(P),R.onclick=e),$&&(T.onclick=t),C.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:O,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){k&&Ct(S,!0)}}}function Ct(e,t){e.style.display=t?"":"none"}const Pt=new Map;function It(e){let n=Pt.get(e);return null==n?(n=function(){let e=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=Tt()),n);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==o){const{getQRTarget:e,getQRImage:n}=i();o=function(e,n){let o=!0;return{qrPaused:()=>o,qrDraw:(r,i)=>t(this,void 0,void 0,(function*(){yield S;const t=`https://ar.shopar.ai/${y.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:r,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,o=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){o=!0,e.style.display="none"}))}}(e(),n())}return o},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();r=rt(e(),t(),n())}return r}}}(),Pt.set(e,n)):n.incrementSetupId_(),n}function xt(e){for(const t of Pt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===St.AR&&r(St.None)}}let kt;const Lt=new Uint8Array(16);function Ut(){if(!kt&&(kt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!kt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return kt(Lt)}const $t=[];for(let e=0;e<256;++e)$t.push((e+256).toString(16).slice(1));var Dt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Ot(e,t,n){if(Dt.randomUUID&&!t&&!e)return Dt.randomUUID();const o=(e=e||{}).random||(e.rng||Ut)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=o[e];return t}return function(e,t=0){return $t[e[t+0]]+$t[e[t+1]]+$t[e[t+2]]+$t[e[t+3]]+"-"+$t[e[t+4]]+$t[e[t+5]]+"-"+$t[e[t+6]]+$t[e[t+7]]+"-"+$t[e[t+8]]+$t[e[t+9]]+"-"+$t[e[t+10]]+$t[e[t+11]]+$t[e[t+12]]+$t[e[t+13]]+$t[e[t+14]]+$t[e[t+15]]}(o)}const _t="qrLaunch",Nt="arLaunch",jt="previewLaunch",Ft="heartbeat";let Wt,qt,Gt=!1,zt=window.navigator.userAgent||"no user agent";const Vt=[];function Bt(){null==Wt&&(qt=Ot(),Wt=A(`${E}/shopar-analytics.js`),Wt.then((()=>{Gt=!0,window.ShopAR__analytics.initializeImpl(),Vt.forEach((e=>e()))})))}function Qt(e){Gt?e():Vt.push(e)}function Kt(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Ht(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 Xt=200,Zt=10;let Yt=!1,Jt=null,en=[],tn=[];function nn(e){return t(this,void 0,void 0,(function*(){Yt=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${E}/wasm/mediapipe`,e),Jt&&clearInterval(Jt);const o=[],r=[];Jt=setInterval((()=>t(this,void 0,void 0,(function*(){if(Yt)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());Yt||(null!=a&&null!=s&&function(e){for(let t of en)t(e)}({translation:a,rotation:s}),null==e&&(o.push(t),r.push(i),o.length<Zt||(o.shift(),r.shift(),function(e,t){for(let n of tn)n({faceWidth:e,IPD:t})}(rn(o),rn(r)))))}))),Xt)}))}function on(){tn=[],en=[],Yt=!0}function rn(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}function an(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(e).catch((e=>{throw console.error(e),new n("Resource unavailable.")}));if(!t.ok)throw new n(`Resource download failed with status ${t.status}.`);return t}))));try{return yield(yield o.blob()).arrayBuffer()}catch(e){throw console.error(e),new n("Resource has invalid body.")}}))}var sn="undefined"!=typeof Float32Array?Float32Array:Array;function ln(){var e=new sn(16);return sn!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function cn(e,t,n){var o=t[0],r=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],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*o+b*s+E*d+A*m,e[1]=y*r+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*o+b*s+E*d+A*m,e[5]=y*r+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*o+b*s+E*d+A*m,e[9]=y*r+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*o+b*s+E*d+A*m,e[13]=y*r+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 un(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function dn(e,t){var n=t[0],o=t[1],r=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,o,r),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function hn(e,t,n,o){var r=t[0],i=t[1],a=t[2],s=t[3],l=r+r,c=i+i,u=a+a,d=r*l,h=r*c,p=r*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=o[0],E=o[1],A=o[2];return e[0]=(1-(f+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 pn(){var e=new sn(3);return sn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function fn(e,t,n){var o=new sn(3);return o[0]=e,o[1]=t,o[2]=n,o}function mn(e,t){var n=t[0]-e[0],o=t[1]-e[1],r=t[2]-e[2];return Math.hypot(n,o,r)}function gn(e,t,n){var o=t[0],r=t[1],i=t[2],a=n[3]*o+n[7]*r+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*o+n[4]*r+n[8]*i+n[12])/a,e[1]=(n[1]*o+n[5]*r+n[9]*i+n[13])/a,e[2]=(n[2]*o+n[6]*r+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function vn(){var e=new sn(4);return sn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}pn(),function(){var e,t=(e=new sn(4),sn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var wn;let yn,bn,En;pn(),fn(1,0,0),fn(0,1,0),vn(),vn(),wn=new sn(9),sn!=Float32Array&&(wn[1]=0,wn[2]=0,wn[3]=0,wn[5]=0,wn[6]=0,wn[7]=0),wn[0]=1,wn[4]=1,wn[8]=1;let An,Sn,Mn,Rn,Tn=!0,Cn=null;const Pn=new Set;let In,xn,kn,Ln,Un,$n;function Dn(){null==yn&&(yn=A(`${E}/shopar-deepar.js`))}function On(){null==bn&&(bn=A(`${E}/shopar-true-scale.js`))}function _n(e){return t(this,void 0,void 0,(function*(){const{licenseKey:o,truescaleUsecase:r}=e;return Un=r,null==In&&(In=(()=>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=Bn(Mn),r=Kt(t);An=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:o||"your_license_key_goes_here",previewElement:Rn,additionalOptions:{hint:$n,cameraConfig:{disableDefaultCamera:!0}}}),Sn=yield Ht(r),yield Qn(An,Sn,"user"===t),"Glasses"===Mn&&(yield bn,nn(Sn),"DetectionLoop"!==Un&&Zn((e=>{Ln=e.faceWidth})))})))()),In}))}function Nn(e,t){var n,o;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===Mn&&(n=t,o=$n,n===o||null!=n&&null!=o&&n.length===o.length&&n.every((e=>o.find((t=>e===t))))&&o.every((e=>n.find((t=>t===e))))))||(null!=An&&(An.shutdown(),An=null,In=null),Mn=e,$n=t)}function jn(e){e!==Rn&&(Rn=e,null!=An&&An.changePreviewElement(Rn))}function Fn(e){Cn=e}function Wn(e){An.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(Ln){const e=137/(Ln+5);An.changeParameterVector("GLASSES","","scale",e,e,e,0),An.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const o=Hn("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),r=Hn("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);An.changeParameterVector("temple_left","","rotation",0,56.6*-o,0,0),An.changeParameterVector("temple_right","","rotation",0,56.6*-r,0,0)}catch(e){return}}(e),on(),Ln=null}e(),Kn("Glasses")}},An.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),Kn("Shoes"))},An.callbacks.onWristTracked=t=>{t.detected&&(e(),Kn("Watches"))}}function qn(e,n,o){return t(this,void 0,void 0,(function*(){return null!=xn&&kn===o||(yield xn,xn=An.switchEffect(e,{envmap:n}),kn=o),xn}))}function Gn(e,t){null!=e&&null!=t&&(An.setToneMapping(e),An.setExposure(t))}function zn(){return t(this,void 0,void 0,(function*(){if(null!=An){if(Tn=!1,null==Sn){const e=Bn(Mn),t=Kt(e);Sn=yield Ht(t),yield Qn(An,Sn,"user"===e),"Glasses"===Mn&&(nn(Sn),"DetectionLoop"!==Un&&Zn((e=>{Ln=e.faceWidth})))}!function(){if(null==Cn)return;if(null==Mn||Pn.has(Mn))return;Cn.style.visibility="visible",Cn.style.opacity="1"}(),An.setPaused(Tn),Rn.style.display=""}}))}function Vn(){null!=An&&(Tn=!0,An.setPaused(Tn),on(),null!=Sn&&null!=Sn.srcObject&&Sn.srcObject instanceof MediaStream&&(Sn.srcObject.getTracks().forEach((e=>e.stop())),Sn=null),function(){if(null==Cn)return;Cn.style.visibility="hidden",Cn.style.opacity="0"}(),An.stopCamera(),Rn.style.display="none")}function Bn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Qn(e,n,o){return t(this,void 0,void 0,(function*(){yield new Promise((r=>{n.onloadedmetadata=()=>{n.play().then((()=>t(this,void 0,void 0,(function*(){e.setVideoElement(n,o),r()}))))}}))}))}function Kn(e){null!=Cn&&(Pn.has(e)||(Pn.add(e),Cn.style.opacity="0"))}function Hn(e,t,n,o,r,i,a){const s=An.getTransformationBetween(e,t),l=un(pn(),s),c=function(e,t){var n=new sn(3);dn(n,t);var o=1/n[0],r=1/n[1],i=1/n[2],a=t[0]*o,s=t[1]*r,l=t[2]*i,c=t[4]*o,u=t[5]*r,d=t[6]*i,h=t[8]*o,p=t[9]*r,f=t[10]*i,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}(vn(),s);hn(s,c,l,fn(a,a,a));const u=An.getTransformationBetween(t,n),d=un(pn(),u);hn(u,vn(),d,dn(pn(),u));const h=cn(ln(),s,u),p=un(pn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=An.getTransformationBetween(n,o)}catch(e){return f}const g=cn(ln(),u,m),v=cn(ln(),s,g),w=fn(p[0],i[1],i[2]),y=gn(pn(),w,function(e,t){var n=t[0],o=t[1],r=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-o*a,y=n*l-r*a,b=n*c-i*a,E=o*l-r*s,A=o*c-i*s,S=r*c-i*l,M=u*m-d*f,R=u*g-h*f,T=u*v-p*f,C=d*g-h*m,P=d*v-p*m,I=h*v-p*g,x=w*I-y*P+b*C+E*T-A*R+S*M;return x?(x=1/x,e[0]=(s*I-l*P+c*C)*x,e[1]=(r*P-o*I-i*C)*x,e[2]=(m*S-g*A+v*E)*x,e[3]=(h*A-d*S-p*E)*x,e[4]=(l*T-a*I-c*R)*x,e[5]=(n*I-r*T+i*R)*x,e[6]=(g*b-f*S-v*y)*x,e[7]=(u*S-h*b+p*y)*x,e[8]=(a*P-s*T+c*M)*x,e[9]=(o*T-n*P-i*M)*x,e[10]=(f*A-m*b+v*w)*x,e[11]=(d*b-u*A-p*w)*x,e[12]=(s*R-a*C-l*M)*x,e[13]=(n*C-o*R+r*M)*x,e[14]=(m*y-f*E-g*w)*x,e[15]=(u*E-d*y+h*w)*x,e):null}(ln(),v));let b=An.getClosestPointOnMesh(o,y);try{const e=An.getClosestPointOnMesh(r,y);mn(y,e)<mn(y,b)&&(b=e)}catch(e){}const E=gn(pn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function Xn(e){!function(e){en.push(e)}(e)}function Zn(e){!function(e){tn.push(e)}(e)}var Yn;function Jn(){return[Yn.Android,Yn.iOS,Yn.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],o=["Win32","Win64","Windows","WinCE"],r=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==r.indexOf(t)?Yn.iOS:-1!==n.indexOf(t)?i?Yn.Tablet:Yn.MacOS:-1!==o.indexOf(t)?Yn.Windows:/Android/.test(e)?Yn.Android:/Linux/.test(t)?Yn.Linux:i?Yn.Tablet:Yn.Unknown}return Yn.Unknown}())}function eo(e,r,i){return t(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const l=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),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 o[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,r)*((a>>5)-1),152===u[c]&&(u[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)u[c]^=u[i]<<13,u[c]^=u[i]>>17,u[c]^=u[i]<<5,v[e]=v[e]^u[c];return i^=u[0],i^=u[1],i^=u[2],v}))}!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"}(Yn||(Yn={}));const to=["AR","3D"];function no(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function oo(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function ro(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function io(e){const{apiKey:t,sku:o,targetElement:r,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;no(t,"apiKey"),ro(t,"apiKey"),no(o,"sku"),ro(o,"sku"),no(r,"targetElement"),function(e,t){if(!(e instanceof HTMLElement))throw new n(`'${t}' must be an HTMLElement.`)}(r,"targetElement"),null!=i&&function(e,t,o){if("string"!=typeof e)throw new n(`'${t}' must be a string.`);if(!o.includes(e))throw new n(`'${t}' must be ${o.join("' or '")}.`)}(i,"initialState",to),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&&ro(s,"baseUrl"),null!=l&&oo(l,"defaultUI"),null!=c&&oo(c,"interactive"),null!=u&&function(e,t,o){for(const r of o){const o=e[r];if(null!=o&&"string"!=typeof o)throw new n(`Value for key '${r}' in '${t}' must be a string.`)}}(u,"strings",ct)}let ao=!1;function so(e){return t(this,void 0,void 0,(function*(){const{targetElement:o}=e;E.update(e.baseUrl),Bt();const{trackEvent:r}=function(e){const t=performance.now(),n=Ot();return{trackEvent:(o,r={})=>{r=Object.assign(Object.assign({},r),{pluginVersion:y,userAgent:zt,sessionId:qt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),Qt((()=>{window.ShopAR__analytics.trackEventImpl(o,r)}))}}}(e.apiKey);r("visionSetup");const i=yield function(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:e,sid:d()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield o.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(e.apiKey);r("visionApiResponse",i);const{arKey:a}=i,s=It(o),{getSetupId:l,findUI:c}=s,u=l();Dn(),On();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:b,showCameraError:A}=c();if(g()!=St.None)throw Error("UI state is not None, this is weird..");v(St.AR),h(o),m(!1,!1,!0,!1,void 0,void 0),w(),yield yn,lo(l(),u);try{r("visionArLaunch"),Vn(),Nn("Glasses",["faceInit"]),jn(p()),yield _n({licenseKey:a,truescaleUsecase:"DetectionLoop"}),lo(l(),u),yield zn(),lo(l(),u)}catch(e){const t=e instanceof Error;throw r("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),A(),Vn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{b()}return ao=!0,{registerFacePoseListener:e=>{ao&&(r("registerFacePoseListener"),Xn(e))},registerFaceMeasurementListener:e=>{ao&&(r("registerFaceMeasurementListener"),Zn(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){ao&&(r("switchEffect",{arUrl:e}),function(e){An.switchEffect(e)}(e))})),clearEffect:()=>{ao&&(r("clearEffect"),An.clearEffect())},close:()=>{if(ao){if(ao=!1,r("visionClose"),g()!==St.AR)throw new n("AR not launched.");Vn(),v(St.None)}}}}))}function lo(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function co(e){var o,r;return t(this,void 0,void 0,(function*(){io(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),E.update(e.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(lt,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(lt[t]=n)}}(e.strings);const p=null!=c?ye(c):null,b=null!=(null==p?void 0:p.theta)?ne(p.theta):null,M=null!=(null==p?void 0:p.phi)?ne(p.phi):null,R=null!=(null==p?void 0:p.fov)?ne(p.fov):null,T=function(e,o,r,i,a,s){return t(this,void 0,void 0,(function*(){const l=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:e,sku:o,sid:d()},null!=r&&{yaw:`${g(m(r))}`}),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==b?void 0:b.get(),null==M?void 0:M.get(),null==R?void 0:R.get(),h),C=It(s),{getSetupId:P,findUI:I,findQR:x,findThree:k}=C,L=P();Bt();const{trackEvent:U,arInteracted:$,previewInteracted:D}=function(e,t){const n=performance.now(),o=Ot();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,u(Ft,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const u=(r,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:zt,pluginVersion:y,sessionId:qt,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),Qt((()=>{window.ShopAR__analytics.trackEventImpl(r,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);U("setup",{hostname:window.location.hostname});const O=yield T;U("apiResponse",O);const{category:_,arUrl:N,arEnvUrl:j,arToneMapping:F,arToneMappingExposure:W,arKey:q,arPromptEnabled:G,arPromptText:z,arPromptImage:V,previewUrl:B,previewEnvUrl:Q,previewToneMapping:K,previewToneMappingExposure:H,previewPosterUrl:X,cameraErrorText:Z,qrPromptText:Y}=O;uo(P(),L);const J=null!=N&&function(e){return null!=e&&v.includes(e)}(_),ee=null==(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled),te=J&&function(e){return null!=e&&w.includes(e)}(_),oe=ee&&te&&!Jn(),re=J&&!oe,ie=null!=B;if(uo(P(),L),oe&&function(){t(this,void 0,void 0,(function*(){null==S&&(S=A(`${E}/shopar-qr.js`))}))}(),re&&(Dn(),function(e){e!==En&&(En=e,an(e),xn=null,on())}(N),"Glasses"===_&&On(),null!=j&&an(j)),ie){null==Ve&&(Ve=A(`${E}/shopar-three.js`));const e=255;eo(B,(new Date).getTime()+e,Math.random()*e),an(null!=Q?Q:`${E}/env/default.hdr`)}const{setTargetElement:ae,getDeepARTarget:se,getDeepARPrompt:le,customizeDeepARPrompt:ce,customizeCameraError:ue,customizeQRPrompt:de,setVisibilityParameters:he,getUIState:pe,setUIState:fe,setDefaultUIActions:me,startDeepARLoading:ge,stopDeepARLoading:ve,startThreeLoading:we,stopThreeLoading:be,setThreePosterUrl:Ee,showCameraError:Ae}=I();ae(s);he(null==e.defaultUI||e.defaultUI,oe,re,ie,_,l),ce(null!=z?z:"",null!=V?V:""),ue(Z),de(Y),Ee(X),function(e,t){const o=e.parentNode;if(null==o)throw new n("Parent node missing.");new MutationObserver((n=>{for(const o of n)for(const n of o.removedNodes)if(n===e)return void t()})).observe(o,{childList:!0})}(s,(()=>{pe()!==St.QR||Se()||Re(),pe()!==St.AR||Tn||Vn(),pe()!==St.Preview||Ie()||ke(),fe(St.None)}));const{qrPaused:Se,qrDraw:Me,qrPause:Re}=x(),{threeInit:Te,threeParse:Ce,threeLoad:Pe,threePaused:Ie,threeResume:xe,threePause:ke,threeSetZoomEnabled:Le,threeSetForcedTransparency:Ue,threeSetToneMapping:$e,threeIsInteractive:De,threeSetInteractive:Oe,threeSetOnInteracted:_e,threeInitPromptAnimation:Ne,threeInitThetaAnimation:je,threeInitPhiAnimation:Fe,threeInitFovAnimation:We}=k(),qe=null==e.interactive||e.interactive;Oe(qe);let Ge=0;if(pe()===St.QR){if(!Se())if(oe){U(_t);try{yield Me(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Re(),fe(St.None)}else if(pe()===St.AR){if(!Tn)if(re&&!ao){U(Nt);const e=null!=j?yield an(j):void 0;uo(P(),L);const t=yield an(N);uo(P(),L),xt(C),Nn(_),jn(se()),Fn(G?le():null),yield qn(t,e,`${N}${j}`),Gn(F,W),Wn($),uo(P(),L)}else Vn(),fe(St.None)}else if(pe()===St.Preview&&!Ie())if(ie){U(jt),we();const e=255,t=yield eo(B,(new Date).getTime()+e,Math.random()*e);uo(P(),L);const n=yield an(null!=Q?Q:`${E}/env/default.hdr`);uo(P(),L);const o=yield Ce(t,n,`${B}${Q}`);uo(P(),L),Pe(o,_),Le(u),Ue(h),$e(null!=K?K:"ACES",null!=H?H:1),_e(D),Ne(),null!=p&&(je(b),Fe(M),We(R)),be()}else ke(),fe(St.None);const ze=()=>t(this,void 0,void 0,(function*(){if(oe){if(pe()===St.QR||pe()===St.AR)return;try{U(_t);const e=++Ge;if(pe()===St.Preview&&ie&&!Ie()&&ke(),fe(St.QR),yield Me(i,a),Ge!==e)return;return void uo(P(),L)}catch(e){const t=e instanceof Error;throw U("qrLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`QR failed: ${t?e.message:"Unknown error."}`)}}if(!re)throw new n("Model does not have AR enabled.");if(pe()!==St.AR)try{U(Nt);const e=++Ge;pe()===St.Preview&&ie&&!Ie()&&ke(),xt(C),fe(St.AR),ge();const t=null!=j?yield an(j):void 0;uo(P(),L);const n=yield an(N);if(Ge!==e)return;if(uo(P(),L),yield yn,Ge!==e)return;if(uo(P(),L),Vn(),Nn(_),jn(se()),Fn(G?le():null),yield _n({licenseKey:q}),Ge!==e)return;if(uo(P(),L),yield qn(n,t,`${N}${j}`),Gn(F,W),Wn($),Ge!==e)return;if(uo(P(),L),yield zn(),Ge!==e)return;uo(P(),L)}catch(e){const t=e instanceof Error;throw U("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Ae(),Vn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{ve()}})),Be=()=>t(this,void 0,void 0,(function*(){if(!ie)throw new n("Model does not have 3D enabled.");if(pe()!==St.Preview)try{U(jt);const e=++Ge;pe()===St.AR&&(re&&!Tn&&Vn(),Re()),fe(St.Preview),we();const t=255,n=yield eo(B,(new Date).getTime()+t,Math.random()*t);if(Ge!==e)return;uo(P(),L);const o=yield an(null!=Q?Q:`${E}/env/default.hdr`);if(Ge!==e)return;if(uo(P(),L),yield Ve,Ge!==e)return;if(uo(P(),L),Te(),Ge!==e)return;uo(P(),L);const r=yield Ce(n,o,`${B}${Q}`);if(Ge!==e)return;uo(P(),L),Pe(r,_),Le(u),Ue(h),$e(null!=K?K:"ACES",null!=H?H:1),_e(D),Ne(),null!=p&&(je(b),Fe(M),We(R)),xe()}catch(e){const t=e instanceof Error;throw U("previewLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`3D failed: ${t?e.message:"Unknown error."}`)}finally{be()}})),Qe=()=>t(this,void 0,void 0,(function*(){pe()!==St.None&&(++Ge,pe()===St.QR||pe()===St.AR?(re&&!Tn&&Vn(),Re()):pe()===St.Preview&&ie&&!Ie()&&ke(),fe(St.None),"AR"!==l?"3D"!==l||(yield Be()):yield ze())}));return me(ze,Be,Qe),"AR"===l?(yield ze(),uo(P(),L)):"3D"===l&&(yield Be(),uo(P(),L)),ao=!1,{launchAR:J?ze:void 0,launch3D:ie?Be:void 0,closeAR:J?()=>t(this,void 0,void 0,(function*(){pe()!==St.AR&&pe()!==St.QR||(++Ge,re&&!Tn&&Vn(),Re(),fe(St.None),"3D"!==l||(yield Be()))})):void 0,close3D:ie?()=>t(this,void 0,void 0,(function*(){pe()===St.Preview&&(++Ge,ie&&!Ie()&&ke(),fe(St.None),"AR"!==l||(yield ze()))})):void 0,close:J||ie?Qe:void 0,isInteractive:()=>De(),setInteractive:e=>Oe(e)}}))}function uo(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const ho={setup:function(e){return t(this,void 0,void 0,(function*(){return so(e)}))}},po={setup:function(e){return t(this,void 0,void 0,(function*(){return function(e,o){return t(this,void 0,void 0,(function*(){try{return o()}catch(t){throw t instanceof Error?new n(`${e} failed: ${t.message}`):(console.error(t),new n(`${e} failed.`))}}))}("setup",(()=>co(e)))}))},version:y};e.PREVIEW_STATES=to,e.PluginError=n,e.plugin=po,e.vision=ho}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ShopAR={})}(this,(function(e){"use strict";function t(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{l(o.next(e))}catch(e){i(e)}}function s(e){try{l(o.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((o=o.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class n extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const o=[Uint8Array,Uint32Array],r=o.length-2,i=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],a=[2,12,7,1],s=window[i[a[a[r]]]][i[a[a[a.length-1]]]],l=s.charCodeAt(r),c=l^l,u=new o[1]([c]);function d(){const e=(new TextEncoder).encode(s),t=i.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[i[t[2]]](String.fromCodePoint(...e))}const h=[1e3,2e3,4e3],p=h.length;function f(e,n=0){return t(this,void 0,void 0,(function*(){try{return yield e()}catch(t){if(n>=p)throw t;return yield new Promise((e=>setTimeout(e,h[n]))),f(e,n+1)}}))}function 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 o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(e).catch((e=>{throw console.error(e),new n("Resource unavailable.")}));if(!t.ok)throw new n(`Resource download failed with status ${t.status}.`);return t}))));try{return yield(yield o.blob()).arrayBuffer()}catch(e){throw console.error(e),new n("Resource has invalid body.")}}))}(e)),y[e]}function A(e,r,i){return null==b[e]&&(b[e]=function(e,r,i){return t(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const l=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),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 o[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,r)*((a>>5)-1),152===u[c]&&(u[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)u[c]^=u[i]<<13,u[c]^=u[i]>>17,u[c]^=u[i]<<5,v[e]=v[e]^u[c];return i^=u[0],i^=u[1],i^=u[2],v}))}(e,r,i)),b[e]}const S="0.7.3-alpha.1";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 C;const P=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let I,x,k;function L(e){const t=function(e){const t=new x.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,x.ClampToEdgeWrapping,x.ClampToEdgeWrapping,x.LinearFilter,x.LinearFilter,1,x.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(k.parse(e));return t.mapping=x.EquirectangularReflectionMapping,t.colorSpace=x.LinearSRGBColorSpace,t}const U=45,$=45,D=3,O=1.5,_=1,N=.5;let j,F,W,q,G,z=!1;const V=4,B=.001,Q=1e-7,K=10,H=11,X=1/(H-1),Z="function"==typeof Float32Array;function Y(e,t,n,o){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===o)return re;const r=Z?new Float32Array(H):new Array(H);for(let t=0;t<H;++t)r[t]=ne(t*X,e,n);function i(t){let o=0,i=1;const a=H-1;for(;i!==a&&r[i]<=t;++i)o+=X;--i;const s=o+(t-r[i])/(r[i+1]-r[i])*X,l=oe(s,e,n);return l>=B?function(e,t,n,o){for(let r=0;r<V;++r){const r=oe(t,n,o);if(0===r)return t;t-=(ne(t,n,o)-e)/r}return t}(t,s,e,n):0===l?s:function(e,t,n,o,r){let i,a,s=0;do{a=t+(n-t)/2,i=ne(a,o,r)-e,i>0?n=a:t=a}while(Math.abs(i)>Q&&++s<K);return a}(t,o,o+X,e,n)}return function(e){return 0===e||1===e?e:ne(i(e),t,o)}}function J(e,t){return 1-3*t+3*e}function ee(e,t){return 3*t-6*e}function te(e){return 3*e}function ne(e,t,n){return((J(t,n)*e+ee(t,n))*e+te(t))*e}function oe(e,t,n){return 3*J(t,n)*e*e+2*ee(t,n)*e+te(t)}function re(e){return e}function ie(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=Y(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function ae(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:ie(n)})));let o=0,r=n[0].value;return{reset:()=>{o=0},update:e=>{for(o+=e;o>=t;)o-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(o>=t.time&&o<i.time){const e=t.interpolate((o-t.time)/(i.time-t.time));r=t.value+e*(i.value-t.value)}}},get:()=>r}}const se="#",le="time",ce="interpolation",ue="yaw",de="pitch",he="fov",pe=[le,ue,de,he,ce],fe="s",me="ms",ge=1e3,ve="deg",we="rad",ye=Math.PI/180,be="ease-in-out",Ee="cubic-bezier(",Ae=")";function Se(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(se);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const o=function(e){const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!pe.includes(o))throw new Error(`Invalid token in header: '${o}'.`);if(t.includes(o))throw new Error(`Duplicate token in header: '${o}'.`);t.push(o)}if(!t.includes(le))throw new Error(`Missing required token: '${le}'.`);return t}(t.split(/\s+/)),r={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=Me(o,e);null!=t&&(null==r.theta&&(r.theta=[]),r.theta.push(t)),null!=n&&(null==r.phi&&(r.phi=[]),r.phi.push(n)),null!=i&&(null==r.fov&&(r.fov=[]),r.fov.push(i))}if(0===Object.values(r).length)throw new Error("At least one parameter should be animated.");return r}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const o of e){const{time:e,pitch:r,yaw:i,fov:a}=o;if(null==e)throw new Error("Time missing.");const s=Te(null!==(t=o.interpolation)&&void 0!==t?t:be);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*ye,interpolation:s})),null!=r&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:r*ye,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*ye,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 Me(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const o=e.indexOf(le),r=function(e){if(e.endsWith(me))return Pe(e.substring(0,e.length-me.length));if(e.endsWith(fe))return Pe(e.substring(0,e.length-fe.length))*ge;return Pe(e)}(n[o]),i=e.indexOf(ce),a=Te(-1===i?be:n[i]),s={};for(let t=0;t<n.length;t++){if(t===o||t===i)continue;const l=e[t],c=n[t];switch(l){case ue:s.theta={time:r,value:Re(c),interpolation:a};break;case de:s.phi={time:r,value:Re(c),interpolation:a};break;case he:s.fov={time:r,value:Re(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Re(e){return e.endsWith(ve)?Pe(e.substring(0,e.length-ve.length))*ye:e.endsWith(we)?Pe(e.substring(0,e.length-we.length)):Pe(e)*ye}function Te(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(Ee)&&e.endsWith(Ae)){const t=e.substring(Ee.length,e.length-Ae.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,o){return{type:"bezier",x1:e,y1:t,x2:n,y2:o}}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 Ie=300,xe=2e3,ke=.05,Le=2*Math.PI/32,Ue=Te("hold"),$e=Te("sine"),De=Te("sine-in"),Oe=Te("sine-out");const _e=8,Ne=2*Math.PI,je=Ne/12,Fe=Ne/60,We=Ne/60,qe=60,Ge=60,ze=1e3,Ve=qe*Ge,Be=-1;const Qe=["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 Ke(e){null!=e&&(e.dispose(),Qe.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let He;const Xe=0,Ze=3;let Ye,Je,et,tt=!1,nt=1,ot=1,rt=1;const it=1;let at;const st=new Map;function lt(e,n,o){const r=e.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,R=1,T=!0,C=!1,P=0,_=0,z=1,V=1,B=1;const Q={threeInit:()=>{b||(ct(),i=new Je.Scene,a=new Je.PerspectiveCamera(25,1,.5),s=new Ye.OrbitControls(a,e),s.setInteractionEnabled(T),h=Je.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new j.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new j.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new j.Group;o.position.y=-.7;const r=new j.PlaneGeometry(U,$).rotateX(Math.PI/2),i=new j.MeshBasicMaterial({map:t.texture,opacity:N,transparent:!0,depthWrite:!1}),a=new j.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new j.Mesh(r);s.visible=!1,o.add(s);const l=new j.OrthographicCamera(-U/2,U/2,$/2,-$/2,0,D);function c(e){s.visible=!0,q.uniforms.tDiffuse.value=t.texture,q.uniforms.h.value=1*e/256,s.material=q,F.setRenderTarget(n),F.render(s,l),G.uniforms.tDiffuse.value=n.texture,G.uniforms.v.value=1*e/256,s.material=G,F.setRenderTarget(t),F.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,o.add(l),{shadowGroup:o,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=W;const o=F.getClearAlpha();F.setClearAlpha(0),F.setRenderTarget(t),F.render(e,l),e.overrideMaterial=null,c(O),c(.4*O),F.setRenderTarget(null),F.setClearAlpha(o),e.background=n}}}(i)),b=!0)},threeParse:(e,n,o)=>t(this,void 0,void 0,(function*(){return null!=u&&d===o||(yield u,u=(()=>t(this,void 0,void 0,(function*(){var t,o;return x=(t=Ye).THREE,k=new t.RGBELoader,i.environment=L(n),function(e,t){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)}(at,Ye),o=e,I.parseAsync(o.buffer,"")})))(),d=o),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t;e instanceof Je.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(Ke):Ke(e.material))})),i.clear(),i.add(e.scene);const n=(new Je.Box3).setFromObject(e.scene);l.position.y=n.min.y-Xe,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof Je.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(Ye.reduceVertices(e.scene,((e,t)=>Math.max(e,o.distanceToSquared(t))),0));s.reset(o,r,function(e,t){var n;const o={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?o.Glasses:null!==(n=o[e])&&void 0!==n?n:o.Glasses).normalize()}(t,Je.Vector3)),P=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),o=e.getObjectByName("seconds");if(null==t&&null==n&&null==o)return null;let r=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-r.getTime())<ze/_e)return!1;r=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=Be*je*(i+a/qe+s/Ve)),null!=n&&(n.rotation.y=Be*Fe*(a+s/Ge)),null!=o&&(o.rotation.y=Be*We*(s+l/ze)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,at.setAnimationLoop(ut),e.style.visibility="visible",_=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 st.values())if(!e())return!1;return!0}()&&at.setAnimationLoop(null),e.style.visibility="hidden",o.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:Je.ACESFilmicToneMapping,Linear:Je.LinearToneMapping,Neutral:Je.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=ae([{time:0,value:e,interpolation:Ue},{time:Ie,value:e,interpolation:Oe},{time:Ie+xe/4,value:e+Le,interpolation:$e},{time:Ie+3*xe/4,value:e-Le,interpolation:De},{time:Ie+xe,value:e,interpolation:Ue},{time:Ie+2*xe,value:e,interpolation:Ue}]),s.setTheta(f.get()),m=null,g=null,v=ae([{time:0,value:0,interpolation:Ue},{time:Ie,value:1,interpolation:Ue},{time:Ie+xe,value:0,interpolation:Ue},{time:Ie+2*xe,value:0,interpolation:Ue}]),w=ae([{time:0,value:0,interpolation:Ue},{time:Ie,value:0,interpolation:Oe},{time:Ie+xe/4,value:-ke,interpolation:$e},{time:Ie+3*xe/4,value:ke,interpolation:De},{time:Ie+xe,value:0,interpolation:Ue},{time:Ie+2*xe,value:0,interpolation:Ue}])},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!==_?e-_:0;_=e,0===P?M=!0:P<Ze&&(t=0),P++,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 t=at.toneMapping,s=at.toneMappingExposure;at.toneMapping=h,at.toneMappingExposure=R,at.setViewport(0,0,e.width,e.height),at.setClearColor(new Je.Color(16777215),E&&!A?1:0),at.render(i,a),at.toneMapping=t,at.toneMappingExposure=s,M=!1,null!=r&&(r.clearRect(0,0,e.width,e.height),et.width>0&&et.height>0&&r.drawImage(et,0,ot-e.height,e.width,e.height,0,0,e.width,e.height),n.style.visibility=T&&!C?"visible":"hidden",null!=v&&(o.style.opacity=`${v.get()}`),null!=w&&(o.style.transform=`translateX(${w.get()*Math.min(z,V)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===z&&n===V&&rt===B||(e.width=Math.ceil(t*rt*it),e.height=Math.ceil(n*rt*it),z=t,V=n,B=rt,M=!0)},target_:e};return st.set(e,Q),Q}function ct(){if(tt)return;Ye=window.ShopAR__THREE,Je=Ye.THREE,et=document.createElement("canvas");var e,t;et.style.position="block",at=new Je.WebGLRenderer({powerPreference:"high-performance",canvas:et,antialias:!0,alpha:!0}),at.outputColorSpace=Je.SRGBColorSpace,at.toneMapping=Je.ACESFilmicToneMapping,at.setClearColor(new Je.Color(16777215),0),e=at,t=Ye,z||(j=t.THREE,F=e,W=new j.MeshDepthMaterial,W.userData.darkness={value:_},W.onBeforeCompile=e=>{e.uniforms.darkness=W.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}`},W.depthTest=!1,W.depthWrite=!1,q=new j.ShaderMaterial(t.HorizontalBlurShader),q.depthTest=!1,G=new j.ShaderMaterial(t.VerticalBlurShader),G.depthTest=!1,z=!0),dt(),tt=!0}function ut(e){dt(),at.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of st.values())t(e),n()&&o()}function dt(){let e=0,t=0;for(const{target_:n}of st.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=P();e=Math.ceil(e*n*it),t=Math.ceil(t*n*it),e===nt&&t===ot&&n===rt||(nt=e,ot=t,rt=n,at.setSize(nt,ot,!1));for(const{updateSize_:e}of st.values())e()}const ht={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},pt=Object.keys(ht);function ft(e){return ht[e]}const mt="shopar-error";function gt(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const o=document.createElementNS("http://www.w3.org/2000/svg","image");o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),o.setAttribute("width",e),o.setAttribute("height",e),n.appendChild(o)}return n}function vt(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=gt("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;const i=r.style;return i.display="none",i.pointerEvents="auto",r}const wt="shopar-control";const yt="shopar-deepar-output";function bt(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 Et(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function At(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 St(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 Mt="shopar-main";const Rt="shopar-qr-output";const Tt="shopar-three-output";var Ct;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Ct||(Ct={}));let Pt=!1;function It(){Pt||(!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.")}}(),Pt=!0)}function xt(){It();const e=function(){const e=document.createElement("div");e.id=Mt;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),o=function(e,t){const n=document.createElement("div");n.id=Rt;const o=n.style;o.position="absolute",o.top="0",o.left="0",o.width="100%",o.height="100%",o.display="none",o.pointerEvents="auto",o.userSelect="none";const r=document.createElement("div");r.className="shopar-qr";const i=r.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(r),r.appendChild(e);const a=document.createElement("div");return a.appendChild(t),r.appendChild(a),n}(t,n);e.appendChild(o);const r=function(){const e=document.createElement("div");e.id=yt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(r);const i=function(){const e=document.createElement("canvas");e.id=Tt,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:o}=n;return o.position="absolute",o.width="100%",o.height="100%",o.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=gt("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=bt("shopar-ar-loading-container"),h=Et("shopar-ar-loading-text",ft("loading.ar"));d.appendChild(h);const p=At("shopar-ar-loading-bar-bg"),f=St("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=bt("shopar-3d-loading-container"),g=Et("shopar-3d-loading-text",ft("loading.3d"));m.appendChild(g);const v=At("shopar-3d-loading-bar-bg"),w=St("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=mt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const o=document.createElement("div"),r=o.style;return r.position="absolute",r.width="100%",r.height="100%",r.backgroundColor="#ffffff",r.display="flex",r.flexDirection="column",r.justifyContent="center",r.alignItems="center",t.appendChild(o),o.appendChild(e),t}(E);e.appendChild(A);const S=function(){const e=document.createElement("div");return e.id=wt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(S);const M=vt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");S.appendChild(M);const T=vt("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${R}/img/icons/cube.svg`);S.appendChild(T);const C=vt("shopar-btn-close","Close","Close ShopAR view",`${R}/img/icons/close.svg`);S.append(C);let P,I,x=Ct.None,k=!1,L=!1,U=!1,$=!1;function D(){f.classList.remove("active"),d.style.visibility="hidden"}function O(){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 o},getQRImage:function(){return n},getDeepARTarget:function(){return r},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){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,o,r,i){var a;k=e,L=t,U=n,$=o,P=r,I=i,kt(S,k),kt(M,k&&(U||L)&&x===Ct.None),kt(T,k&&$&&x===Ct.None),kt(C,k&&x!==Ct.None),D(),O(),k||""===(a=A).style.display&&kt(a,!1)},getUIState:function(){return x},setUIState:function(e){x=e,x===Ct.None?(D(),O(),k&&(kt(A,!1),kt(C,!1),(L||U)&&kt(M,!0),$&&kt(T,!0))):x===Ct.QR||x===Ct.AR?k&&(kt(A,!1),kt(M,!1),kt(T,$&&"AR"===I),kt(C,"AR"!==I)):x===Ct.Preview&&k&&(kt(A,!1),kt(M,(L||U)&&"3D"===I),kt(T,!1),kt(C,"3D"!==I))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${R}/img/icons/${n}`;M.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(P),M.onclick=e),$&&(T.onclick=t),C.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:O,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){k&&kt(A,!0)}}}function kt(e,t){e.style.display=t?"":"none"}const Lt=new Map;function Ut(e){let n=Lt.get(e);return null==n?(n=function(){let e=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=xt()),n);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==o){const{getQRTarget:e,getQRImage:n}=i();o=function(e,n){let o=!0;return{qrPaused:()=>o,qrDraw:(r,i)=>t(this,void 0,void 0,(function*(){yield C;const t=`https://ar.shopar.ai/${S.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:r,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,o=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){o=!0,e.style.display="none"}))}}(e(),n())}return o},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();r=lt(e(),t(),n())}return r}}}(),Lt.set(e,n)):n.incrementSetupId_(),n}function $t(e){for(const t of Lt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===Ct.AR&&r(Ct.None)}}let Dt;const Ot=new Uint8Array(16);function _t(){if(!Dt&&(Dt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Dt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Dt(Ot)}const Nt=[];for(let e=0;e<256;++e)Nt.push((e+256).toString(16).slice(1));var jt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Ft(e,t,n){if(jt.randomUUID&&!t&&!e)return jt.randomUUID();const o=(e=e||{}).random||(e.rng||_t)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=o[e];return t}return function(e,t=0){return Nt[e[t+0]]+Nt[e[t+1]]+Nt[e[t+2]]+Nt[e[t+3]]+"-"+Nt[e[t+4]]+Nt[e[t+5]]+"-"+Nt[e[t+6]]+Nt[e[t+7]]+"-"+Nt[e[t+8]]+Nt[e[t+9]]+"-"+Nt[e[t+10]]+Nt[e[t+11]]+Nt[e[t+12]]+Nt[e[t+13]]+Nt[e[t+14]]+Nt[e[t+15]]}(o)}const Wt="qrLaunch",qt="arLaunch",Gt="previewLaunch",zt="heartbeat";let Vt,Bt,Qt=!1,Kt=window.navigator.userAgent||"no user agent";const Ht=[];function Xt(){null==Vt&&(Bt=Ft(),Vt=T(`${R}/shopar-analytics.js`),Vt.then((()=>{Qt=!0,window.ShopAR__analytics.initializeImpl(),Ht.forEach((e=>e()))})))}function Zt(e){Qt?e():Ht.push(e)}function Yt(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Jt(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 en=200,tn=10;let nn=!1,on=null,rn=[],an=[];function sn(e){return t(this,void 0,void 0,(function*(){nn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${R}/wasm/mediapipe`,e),on&&clearInterval(on);const o=[],r=[];on=setInterval((()=>t(this,void 0,void 0,(function*(){if(nn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());nn||(null!=a&&null!=s&&function(e){for(let t of rn)t(e)}({translation:a,rotation:s}),null==e&&(o.push(t),r.push(i),o.length<tn||(o.shift(),r.shift(),function(e,t){for(let n of an)n({faceWidth:e,IPD:t})}(cn(o),cn(r)))))}))),en)}))}function ln(){an=[],rn=[],nn=!0}function cn(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}var un="undefined"!=typeof Float32Array?Float32Array:Array;function dn(){var e=new un(16);return un!=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 hn(e,t,n){var o=t[0],r=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],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*o+b*s+E*d+A*m,e[1]=y*r+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*o+b*s+E*d+A*m,e[5]=y*r+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*o+b*s+E*d+A*m,e[9]=y*r+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*o+b*s+E*d+A*m,e[13]=y*r+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 pn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function fn(e,t){var n=t[0],o=t[1],r=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,o,r),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function mn(e,t,n,o){var r=t[0],i=t[1],a=t[2],s=t[3],l=r+r,c=i+i,u=a+a,d=r*l,h=r*c,p=r*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=o[0],E=o[1],A=o[2];return e[0]=(1-(f+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 gn(){var e=new un(3);return un!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function vn(e,t,n){var o=new un(3);return o[0]=e,o[1]=t,o[2]=n,o}function wn(e,t){var n=t[0]-e[0],o=t[1]-e[1],r=t[2]-e[2];return Math.hypot(n,o,r)}function yn(e,t,n){var o=t[0],r=t[1],i=t[2],a=n[3]*o+n[7]*r+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*o+n[4]*r+n[8]*i+n[12])/a,e[1]=(n[1]*o+n[5]*r+n[9]*i+n[13])/a,e[2]=(n[2]*o+n[6]*r+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function bn(){var e=new un(4);return un!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}gn(),function(){var e,t=(e=new un(4),un!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var En;let An,Sn,Mn;gn(),vn(1,0,0),vn(0,1,0),bn(),bn(),En=new un(9),un!=Float32Array&&(En[1]=0,En[2]=0,En[3]=0,En[5]=0,En[6]=0,En[7]=0),En[0]=1,En[4]=1,En[8]=1;let Rn,Tn,Cn,Pn,In=!0,xn=null;const kn=new Set;let Ln,Un,$n,Dn,On,_n;function Nn(){null==An&&(An=T(`${R}/shopar-deepar.js`))}function jn(){null==Sn&&(Sn=T(`${R}/shopar-true-scale.js`))}function Fn(e){return t(this,void 0,void 0,(function*(){const{licenseKey:o,truescaleUsecase:r}=e;return On=r,null==Ln&&(Ln=(()=>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=Hn(Cn),r=Yt(t);Rn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:o||"your_license_key_goes_here",previewElement:Pn,additionalOptions:{hint:_n,cameraConfig:{disableDefaultCamera:!0}}}),Tn=yield Jt(r),yield Xn(Rn,Tn,"user"===t),"Glasses"===Cn&&(yield Sn,sn(Tn),"DetectionLoop"!==On&&eo((e=>{Dn=e.faceWidth})))})))()),Ln}))}function Wn(e,t){var n,o;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===Cn&&(n=t,o=_n,n===o||null!=n&&null!=o&&n.length===o.length&&n.every((e=>o.find((t=>e===t))))&&o.every((e=>n.find((t=>t===e))))))||(null!=Rn&&(Rn.shutdown(),Rn=null,Ln=null),Cn=e,_n=t)}function qn(e){e!==Pn&&(Pn=e,null!=Rn&&Rn.changePreviewElement(Pn))}function Gn(e){xn=e}function zn(e){Rn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(Dn){const e=137/(Dn+5);Rn.changeParameterVector("GLASSES","","scale",e,e,e,0),Rn.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const o=Yn("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),r=Yn("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Rn.changeParameterVector("temple_left","","rotation",0,56.6*-o,0,0),Rn.changeParameterVector("temple_right","","rotation",0,56.6*-r,0,0)}catch(e){return}}(e),ln(),Dn=null}e(),Zn("Glasses")}},Rn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),Zn("Shoes"))},Rn.callbacks.onWristTracked=t=>{t.detected&&(e(),Zn("Watches"))}}function Vn(e,n,o){return t(this,void 0,void 0,(function*(){return null!=Un&&$n===o||(yield Un,Un=Rn.switchEffect(e,{envmap:n}),$n=o),Un}))}function Bn(e,t){null!=e&&null!=t&&(Rn.setToneMapping(e),Rn.setExposure(t))}function Qn(){return t(this,void 0,void 0,(function*(){if(null!=Rn){if(In=!1,null==Tn){const e=Hn(Cn),t=Yt(e);Tn=yield Jt(t),yield Xn(Rn,Tn,"user"===e),"Glasses"===Cn&&(sn(Tn),"DetectionLoop"!==On&&eo((e=>{Dn=e.faceWidth})))}!function(){if(null==xn)return;if(null==Cn||kn.has(Cn))return;xn.style.visibility="visible",xn.style.opacity="1"}(),Rn.setPaused(In),Pn.style.display=""}}))}function Kn(){null!=Rn&&(In=!0,Rn.setPaused(In),ln(),null!=Tn&&null!=Tn.srcObject&&Tn.srcObject instanceof MediaStream&&(Tn.srcObject.getTracks().forEach((e=>e.stop())),Tn=null),function(){if(null==xn)return;xn.style.visibility="hidden",xn.style.opacity="0"}(),Rn.stopCamera(),Pn.style.display="none")}function Hn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Xn(e,n,o){return t(this,void 0,void 0,(function*(){yield new Promise((r=>{n.onloadedmetadata=()=>{n.play().then((()=>t(this,void 0,void 0,(function*(){e.setVideoElement(n,o),r()}))))}}))}))}function Zn(e){null!=xn&&(kn.has(e)||(kn.add(e),xn.style.opacity="0"))}function Yn(e,t,n,o,r,i,a){const s=Rn.getTransformationBetween(e,t),l=pn(gn(),s),c=function(e,t){var n=new un(3);fn(n,t);var o=1/n[0],r=1/n[1],i=1/n[2],a=t[0]*o,s=t[1]*r,l=t[2]*i,c=t[4]*o,u=t[5]*r,d=t[6]*i,h=t[8]*o,p=t[9]*r,f=t[10]*i,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}(bn(),s);mn(s,c,l,vn(a,a,a));const u=Rn.getTransformationBetween(t,n),d=pn(gn(),u);mn(u,bn(),d,fn(gn(),u));const h=hn(dn(),s,u),p=pn(gn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=Rn.getTransformationBetween(n,o)}catch(e){return f}const g=hn(dn(),u,m),v=hn(dn(),s,g),w=vn(p[0],i[1],i[2]),y=yn(gn(),w,function(e,t){var n=t[0],o=t[1],r=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-o*a,y=n*l-r*a,b=n*c-i*a,E=o*l-r*s,A=o*c-i*s,S=r*c-i*l,M=u*m-d*f,R=u*g-h*f,T=u*v-p*f,C=d*g-h*m,P=d*v-p*m,I=h*v-p*g,x=w*I-y*P+b*C+E*T-A*R+S*M;return x?(x=1/x,e[0]=(s*I-l*P+c*C)*x,e[1]=(r*P-o*I-i*C)*x,e[2]=(m*S-g*A+v*E)*x,e[3]=(h*A-d*S-p*E)*x,e[4]=(l*T-a*I-c*R)*x,e[5]=(n*I-r*T+i*R)*x,e[6]=(g*b-f*S-v*y)*x,e[7]=(u*S-h*b+p*y)*x,e[8]=(a*P-s*T+c*M)*x,e[9]=(o*T-n*P-i*M)*x,e[10]=(f*A-m*b+v*w)*x,e[11]=(d*b-u*A-p*w)*x,e[12]=(s*R-a*C-l*M)*x,e[13]=(n*C-o*R+r*M)*x,e[14]=(m*y-f*E-g*w)*x,e[15]=(u*E-d*y+h*w)*x,e):null}(dn(),v));let b=Rn.getClosestPointOnMesh(o,y);try{const e=Rn.getClosestPointOnMesh(r,y);wn(y,e)<wn(y,b)&&(b=e)}catch(e){}const E=yn(gn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function Jn(e){!function(e){rn.push(e)}(e)}function eo(e){!function(e){an.push(e)}(e)}var to;function no(){return[to.Android,to.iOS,to.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],o=["Win32","Win64","Windows","WinCE"],r=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==r.indexOf(t)?to.iOS:-1!==n.indexOf(t)?i?to.Tablet:to.MacOS:-1!==o.indexOf(t)?to.Windows:/Android/.test(e)?to.Android:/Linux/.test(t)?to.Linux:i?to.Tablet:to.Unknown}return to.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"}(to||(to={}));const oo=["AR","3D"];function ro(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function io(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function ao(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function so(e){const{apiKey:t,sku:o,targetElement:r,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;ro(t,"apiKey"),ao(t,"apiKey"),ro(o,"sku"),ao(o,"sku"),ro(r,"targetElement"),function(e,t){if(!(e instanceof HTMLElement))throw new n(`'${t}' must be an HTMLElement.`)}(r,"targetElement"),null!=i&&function(e,t,o){if("string"!=typeof e)throw new n(`'${t}' must be a string.`);if(!o.includes(e))throw new n(`'${t}' must be ${o.join("' or '")}.`)}(i,"initialState",oo),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&&ao(s,"baseUrl"),null!=l&&io(l,"defaultUI"),null!=c&&io(c,"interactive"),null!=u&&function(e,t,o){for(const r of o){const o=e[r];if(null!=o&&"string"!=typeof o)throw new n(`Value for key '${r}' in '${t}' must be a string.`)}}(u,"strings",pt)}let lo=!1;function co(e){return t(this,void 0,void 0,(function*(){const{targetElement:o}=e;R.update(e.baseUrl),Xt();const{trackEvent:r}=function(e){const t=performance.now(),n=Ft();return{trackEvent:(o,r={})=>{r=Object.assign(Object.assign({},r),{pluginVersion:S,userAgent:Kt,sessionId:Bt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),Zt((()=>{window.ShopAR__analytics.trackEventImpl(o,r)}))}}}(e.apiKey);r("visionSetup");const i=yield function(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:e,sid:d()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield o.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(e.apiKey);r("visionApiResponse",i);const{arKey:a}=i,s=Ut(o),{getSetupId:l,findUI:c}=s,u=l();Nn(),jn();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=Ct.None)throw Error("UI state is not None, this is weird..");v(Ct.AR),h(o),m(!1,!1,!0,!1,void 0,void 0),w(),yield An,uo(l(),u);try{r("visionArLaunch"),Kn(),Wn("Glasses",["faceInit"]),qn(p()),yield Fn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),uo(l(),u),yield Qn(),uo(l(),u)}catch(e){const t=e instanceof Error;throw r("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),b(),Kn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{y()}return lo=!0,{registerFacePoseListener:e=>{lo&&(r("registerFacePoseListener"),Jn(e))},registerFaceMeasurementListener:e=>{lo&&(r("registerFaceMeasurementListener"),eo(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){lo&&(r("switchEffect",{arUrl:e}),function(e){Rn.switchEffect(e)}(e))})),clearEffect:()=>{lo&&(r("clearEffect"),Rn.clearEffect())},close:()=>{if(lo){if(lo=!1,r("visionClose"),g()!==Ct.AR)throw new n("AR not launched.");Kn(),v(Ct.None)}}}}))}function uo(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function ho(e){var o,r;return t(this,void 0,void 0,(function*(){so(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(ht,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(ht[t]=n)}}(e.strings);const p=null!=c?Se(c):null,y=null!=(null==p?void 0:p.theta)?ae(p.theta):null,b=null!=(null==p?void 0:p.phi)?ae(p.phi):null,M=null!=(null==p?void 0:p.fov)?ae(p.fov):null,P=function(e,o,r,i,a,s){return t(this,void 0,void 0,(function*(){const l=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:e,sku:o,sid:d()},null!=r&&{yaw:`${g(m(r))}`}),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),I=Ut(s),{getSetupId:x,findUI:k,findQR:L,findThree:U}=I,$=x();Xt();const{trackEvent:D,arInteracted:O,previewInteracted:_}=function(e,t){const n=performance.now(),o=Ft();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,u(zt,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const u=(r,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Kt,pluginVersion:S,sessionId:Bt,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),Zt((()=>{window.ShopAR__analytics.trackEventImpl(r,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);D("setup",{hostname:window.location.hostname});const N=yield P;D("apiResponse",N);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}=N;po(x(),$);const te=null!=F&&function(e){return null!=e&&v.includes(e)}(j),ne=null==(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled),oe=te&&function(e){return null!=e&&w.includes(e)}(j),re=ne&&oe&&!no(),ie=te&&!re,se=null!=K;if(po(x(),$),re&&function(){t(this,void 0,void 0,(function*(){null==C&&(C=T(`${R}/shopar-qr.js`))}))}(),ie&&(Nn(),function(e){e!==Mn&&(Mn=e,E(e),Un=null,ln())}(F),"Glasses"===j&&jn(),null!=W&&E(W)),se){null==He&&(He=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`)}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:Me}=k();le(s);fe(null==e.defaultUI||e.defaultUI,re,ie,se,j,l),de(null!=B?B:"",null!=Q?Q:""),he(J),pe(ee),Ae(Y),function(e,t){const o=e.parentNode;if(null==o)throw new n("Parent node missing.");new MutationObserver((n=>{for(const o of n)for(const n of o.removedNodes)if(n===e)return void t()})).observe(o,{childList:!0})}(s,(()=>{me()!==Ct.QR||Re()||Ce(),me()!==Ct.AR||In||Kn(),me()!==Ct.Preview||ke()||Ue(),ge(Ct.None)}));const{qrPaused:Re,qrDraw:Te,qrPause:Ce}=L(),{threeInit:Pe,threeParse:Ie,threeLoad:xe,threePaused:ke,threeResume:Le,threePause:Ue,threeSetZoomEnabled:$e,threeSetForcedTransparency:De,threeSetToneMapping:Oe,threeIsInteractive:_e,threeSetInteractive:Ne,threeSetOnInteracted:je,threeInitPromptAnimation:Fe,threeInitThetaAnimation:We,threeInitPhiAnimation:qe,threeInitFovAnimation:Ge}=U(),ze=null==e.interactive||e.interactive;Ne(ze);let Ve=0;if(me()===Ct.QR){if(!Re())if(re){D(Wt);try{yield Te(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Ce(),ge(Ct.None)}else if(me()===Ct.AR){if(!In)if(ie&&!lo){D(qt);const e=null!=W?yield E(W):void 0;po(x(),$);const t=yield E(F);po(x(),$),$t(I),Wn(j),qn(ce()),Gn(V?ue():null),yield Vn(t,e,`${F}${W}`),Bn(q,G),zn(O),po(x(),$)}else Kn(),ge(Ct.None)}else if(me()===Ct.Preview&&!ke())if(se){D(Gt),be();const e=255,t=yield A(K,(new Date).getTime()+e,Math.random()*e);po(x(),$);const n=yield E(null!=H?H:`${R}/env/default.hdr`);po(x(),$);const o=yield Ie(t,n,`${K}${H}`);po(x(),$),xe(o,j),$e(u),De(h),Oe(null!=X?X:"ACES",null!=Z?Z:1),je(_),Fe(),null!=p&&(We(y),qe(b),Ge(M)),Ee()}else Ue(),ge(Ct.None);const Be=()=>t(this,void 0,void 0,(function*(){if(re){if(me()===Ct.QR||me()===Ct.AR)return;try{D(Wt);const e=++Ve;if(me()===Ct.Preview&&se&&!ke()&&Ue(),ge(Ct.QR),yield Te(i,a),Ve!==e)return;return void po(x(),$)}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()!==Ct.AR)try{D(qt);const e=++Ve;me()===Ct.Preview&&se&&!ke()&&Ue(),$t(I),ge(Ct.AR),we();const t=null!=W?yield E(W):void 0;po(x(),$);const n=yield E(F);if(Ve!==e)return;if(po(x(),$),yield An,Ve!==e)return;if(po(x(),$),Kn(),Wn(j),qn(ce()),Gn(V?ue():null),yield Fn({licenseKey:z}),Ve!==e)return;if(po(x(),$),yield Vn(n,t,`${F}${W}`),Bn(q,G),zn(O),Ve!==e)return;if(po(x(),$),yield Qn(),Ve!==e)return;po(x(),$)}catch(e){const t=e instanceof Error;throw D("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Me(),Kn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{ye()}})),Qe=()=>t(this,void 0,void 0,(function*(){if(!se)throw new n("Model does not have 3D enabled.");if(me()!==Ct.Preview)try{D(Gt);const e=++Ve;me()===Ct.AR&&(ie&&!In&&Kn(),Ce()),ge(Ct.Preview),be();const t=255,n=yield A(K,(new Date).getTime()+t,Math.random()*t);if(Ve!==e)return;po(x(),$);const o=yield E(null!=H?H:`${R}/env/default.hdr`);if(console.log(o),Ve!==e)return;if(po(x(),$),yield He,Ve!==e)return;if(po(x(),$),Pe(),Ve!==e)return;po(x(),$);const r=yield Ie(n,o,`${K}${H}`);if(Ve!==e)return;po(x(),$),xe(r,j),$e(u),De(h),Oe(null!=X?X:"ACES",null!=Z?Z:1),je(_),Fe(),null!=p&&(We(y),qe(b),Ge(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()}})),Ke=()=>t(this,void 0,void 0,(function*(){me()!==Ct.None&&(++Ve,me()===Ct.QR||me()===Ct.AR?(ie&&!In&&Kn(),Ce()):me()===Ct.Preview&&se&&!ke()&&Ue(),ge(Ct.None),"AR"!==l?"3D"!==l||(yield Qe()):yield Be())}));return ve(Be,Qe,Ke),"AR"===l?(yield Be(),po(x(),$)):"3D"===l&&(yield Qe(),po(x(),$)),lo=!1,{launchAR:te?Be:void 0,launch3D:se?Qe:void 0,closeAR:te?()=>t(this,void 0,void 0,(function*(){me()!==Ct.AR&&me()!==Ct.QR||(++Ve,ie&&!In&&Kn(),Ce(),ge(Ct.None),"3D"!==l||(yield Qe()))})):void 0,close3D:se?()=>t(this,void 0,void 0,(function*(){me()===Ct.Preview&&(++Ve,se&&!ke()&&Ue(),ge(Ct.None),"AR"!==l||(yield Be()))})):void 0,close:te||se?Ke:void 0,isInteractive:()=>_e(),setInteractive:e=>Ne(e)}}))}function po(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const fo={setup:function(e){return t(this,void 0,void 0,(function*(){return co(e)}))}},mo={setup:function(e){return t(this,void 0,void 0,(function*(){return function(e,o){return t(this,void 0,void 0,(function*(){try{return o()}catch(t){throw t instanceof Error?new n(`${e} failed: ${t.message}`):(console.error(t),new n(`${e} failed.`))}}))}("setup",(()=>ho(e)))}))},version:S};e.PREVIEW_STATES=oo,e.PluginError=n,e.plugin=mo,e.vision=fo}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shopar-plugin",
3
- "version": "0.7.3-alpha.0",
3
+ "version": "0.7.3-alpha.1",
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",