shopar-plugin 0.7.3-alpha.9 → 0.7.4-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class t extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const n=[Uint8Array,Uint32Array],r=n.length-2,o=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],i=[2,12,7,1],a=window[o[i[i[r]]]][o[i[i[i.length-1]]]],s=a.charCodeAt(r),l=s^s,c=new n[1]([l]);function u(){const e=(new TextEncoder).encode(a),t=o.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[o[t[2]]](String.fromCodePoint(...e))}const d=[1e3,2e3,4e3],h=d.length;function p(t,n=0){return e(this,void 0,void 0,(function*(){try{return yield t()}catch(e){if(n>=h)throw e;return yield new Promise((e=>setTimeout(e,d[n]))),p(t,n+1)}}))}function f(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const g=["Glasses","Shoes","Watches"],v=["Shoes"];const w={},y={};function b(n){return null==w[n]&&(w[n]=function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(n).catch((e=>{throw console.error(e),new t("Resource unavailable.")}));if(!e.ok)throw new t(`Resource download failed with status ${e.status}.`);return e}))));try{return yield(yield r.blob()).arrayBuffer()}catch(e){throw console.error(e),new t("Resource has invalid body.")}}))}(n)),w[n]}function E(r,o,i){return null==y[r]&&(y[r]=function(r,o,i){return e(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const u=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const f=String.fromCharCode(a-7),m=window[`${h}${d+u+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${f}`],g=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield m(`${r}`).catch((()=>{throw new t("Unknown error.")}));if(!e.ok)throw new t("Unknown error.");return e})))),v=new n[0](yield(yield g.blob().catch((()=>{throw new t("Unknown error.")}))).arrayBuffer().catch((()=>{throw new t("Unknown error.")})));i+=s;const w=v.byteLength;if(c[l]=Math.min(76,o)*((a>>5)-1),152===c[l]&&(c[l]=w),i==l)return v;i=l,i^=l;for(let e=0,t=v.length;e<t;e++)c[l]^=c[i]<<13,c[l]^=c[i]>>17,c[l]^=c[i]<<5,v[e]=v[e]^c[l];return i^=c[0],i^=c[1],i^=c[2],v}))}(r,o,i)),y[r]}const A="0.7.3-alpha.9";let S=`https://cdn.jsdelivr.net/npm/shopar-plugin@${A}/dist`;const M={update:e=>{null!=e&&(S=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>S};function R(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let x;const C=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let P,I,T,k=!1;let L=!1;function $(e){const t=function(e){const t=new I.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,I.ClampToEdgeWrapping,I.ClampToEdgeWrapping,I.LinearFilter,I.LinearFilter,1,I.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(T.parse(e));return t.mapping=I.EquirectangularReflectionMapping,t.colorSpace=I.LinearSRGBColorSpace,t}const U=45,D=45,O=3,N=1.5,_=1,j=.5;let F,W,q,G,z,B=!1;const Q=4,V=.001,K=1e-7,H=10,X=11,Z=1/(X-1),Y="function"==typeof Float32Array;function J(e,t,n,r){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===r)return ie;const o=Y?new Float32Array(X):new Array(X);for(let t=0;t<X;++t)o[t]=re(t*Z,e,n);function i(t){let r=0,i=1;const a=X-1;for(;i!==a&&o[i]<=t;++i)r+=Z;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*Z,l=oe(s,e,n);return l>=V?function(e,t,n,r){for(let o=0;o<Q;++o){const o=oe(t,n,r);if(0===o)return t;t-=(re(t,n,r)-e)/o}return t}(t,s,e,n):0===l?s:function(e,t,n,r,o){let i,a,s=0;do{a=t+(n-t)/2,i=re(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>K&&++s<H);return a}(t,r,r+Z,e,n)}return function(e){return 0===e||1===e?e:re(i(e),t,r)}}function ee(e,t){return 1-3*t+3*e}function te(e,t){return 3*t-6*e}function ne(e){return 3*e}function re(e,t,n){return((ee(t,n)*e+te(t,n))*e+ne(t))*e}function oe(e,t,n){return 3*ee(t,n)*e*e+2*te(t,n)*e+ne(t)}function ie(e){return e}function ae(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=J(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function se(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:ae(n)})));let r=0,o=n[0].value;return{reset:()=>{r=0},update:e=>{for(r+=e;r>=t;)r-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(r>=t.time&&r<i.time){const e=t.interpolate((r-t.time)/(i.time-t.time));o=t.value+e*(i.value-t.value)}}},get:()=>o}}const le="#",ce="time",ue="interpolation",de="yaw",he="pitch",pe="fov",fe=[ce,de,he,pe,ue],me="s",ge="ms",ve=1e3,we="deg",ye="rad",be=Math.PI/180,Ee="ease-in-out",Ae="cubic-bezier(",Se=")";function Me(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(le);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(!fe.includes(r))throw new Error(`Invalid token in header: '${r}'.`);if(t.includes(r))throw new Error(`Duplicate token in header: '${r}'.`);t.push(r)}if(!t.includes(ce))throw new Error(`Missing required token: '${ce}'.`);return t}(t.split(/\s+/)),o={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=Re(r,e);null!=t&&(null==o.theta&&(o.theta=[]),o.theta.push(t)),null!=n&&(null==o.phi&&(o.phi=[]),o.phi.push(n)),null!=i&&(null==o.fov&&(o.fov=[]),o.fov.push(i))}if(0===Object.values(o).length)throw new Error("At least one parameter should be animated.");return o}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const r of e){const{time:e,pitch:o,yaw:i,fov:a}=r;if(null==e)throw new Error("Time missing.");const s=Ce(null!==(t=r.interpolation)&&void 0!==t?t:Ee);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*be,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*be,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*be,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function Re(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const r=e.indexOf(ce),o=function(e){if(e.endsWith(ge))return Ie(e.substring(0,e.length-ge.length));if(e.endsWith(me))return Ie(e.substring(0,e.length-me.length))*ve;return Ie(e)}(n[r]),i=e.indexOf(ue),a=Ce(-1===i?Ee:n[i]),s={};for(let t=0;t<n.length;t++){if(t===r||t===i)continue;const l=e[t],c=n[t];switch(l){case de:s.theta={time:o,value:xe(c),interpolation:a};break;case he:s.phi={time:o,value:xe(c),interpolation:a};break;case pe:s.fov={time:o,value:xe(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function xe(e){return e.endsWith(we)?Ie(e.substring(0,e.length-we.length))*be:e.endsWith(ye)?Ie(e.substring(0,e.length-ye.length)):Ie(e)*be}function Ce(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Pe(0,0,1,1);if("sine"===e)return Pe(.37,0,.63,1);if("sine-in"===e)return Pe(.12,0,.39,0);if("sine-out"===e)return Pe(.61,1,.88,1);if("ease"===e)return Pe(.25,.1,.25,1);if("ease-in"===e)return Pe(.42,0,1,1);if("ease-out"===e)return Pe(0,0,.58,1);if("ease-in-out"===e)return Pe(.42,0,.58,1);if(e.startsWith(Ae)&&e.endsWith(Se)){const t=e.substring(Ae.length,e.length-Se.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Ie(t[0]),y1:Ie(t[1]),x2:Ie(t[2]),y2:Ie(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Pe(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Ie(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Te=300,ke=2e3,Le=.05,$e=2*Math.PI/32,Ue=Ce("hold"),De=Ce("sine"),Oe=Ce("sine-in"),Ne=Ce("sine-out");const _e=8,je=2*Math.PI,Fe=je/12,We=je/60,qe=je/60,Ge=60,ze=60,Be=1e3,Qe=Ge*ze,Ve=-1;const Ke=["map","alphaMap","anisotropyMap","aoMap","bumpMap","clearcoatMap","clearcoatNormalMap","clearcoatRoughnessMap","displacementMap","emissiveMap","envMap","gradientMap","iridescenceMap","iridescenceThicknessMap","lightMap","metalnessMap","normalMap","roughnessMap","sheenColorMap","sheenRoughnessMap","specularMap","specularColorMap","specularIntensityMap","thicknessMap","transmissionMap"];function He(e){null!=e&&(e.dispose(),Ke.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let Xe;const Ze=0,Ye=3;let Je,et,tt,nt=!1,rt=1,ot=1,it=1;const at=1;let st;const lt=new Map;function ct(t,n,r){const o=t.getContext("2d");null==o&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,R=1,x=!0,C=!1,_=0,B=0,Q=1,V=1,K=1;const H={threeInit:()=>{b||(ut(),i=new et.Scene,a=new et.PerspectiveCamera(25,1,.5),s=new Je.OrbitControls(a,t),s.setInteractionEnabled(x),h=et.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new F.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new F.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new F.Group;r.position.y=-.7;const o=new F.PlaneGeometry(U,D).rotateX(Math.PI/2),i=new F.MeshBasicMaterial({map:t.texture,opacity:j,transparent:!0,depthWrite:!1}),a=new F.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new F.Mesh(o);s.visible=!1,r.add(s);const l=new F.OrthographicCamera(-U/2,U/2,D/2,-D/2,0,O);function c(e){s.visible=!0,G.uniforms.tDiffuse.value=t.texture,G.uniforms.h.value=1*e/256,s.material=G,W.setRenderTarget(n),W.render(s,l),z.uniforms.tDiffuse.value=n.texture,z.uniforms.v.value=1*e/256,s.material=z,W.setRenderTarget(t),W.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,r.add(l),{shadowGroup:r,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=q;const r=W.getClearAlpha();W.setClearAlpha(0),W.setRenderTarget(t),W.render(e,l),e.overrideMaterial=null,c(N),c(.4*N),W.setRenderTarget(null),W.setClearAlpha(r),e.background=n}}}(i)),b=!0)},threeParse:(t,n,r)=>e(this,void 0,void 0,(function*(){return null!=u&&d===r||(yield u,u=(()=>e(this,void 0,void 0,(function*(){var e,r,o;return r=Je,L||(I=r.THREE,T=new r.RGBELoader,L=!0),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=$(n),function(e,t){if(k)return;const{THREE:n}=t;P=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder),k=!0}(st,Je),o=t,P.parseAsync(o.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{pt(i),i.add(e.scene);const n=(new et.Box3).setFromObject(e.scene);l.position.y=n.min.y-Ze,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof et.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const r=n.min.clone().add(n.max).divideScalar(2),o=Math.sqrt(Je.reduceVertices(e.scene,((e,t)=>Math.max(e,r.distanceToSquared(t))),0));s.reset(r,o,function(e,t){var n;const r={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?r.Glasses:null!==(n=r[e])&&void 0!==n?n:r.Glasses).normalize()}(t,et.Vector3)),_=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),r=e.getObjectByName("seconds");if(null==t&&null==n&&null==r)return null;let o=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-o.getTime())<Be/_e)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=Ve*Fe*(i+a/Ge+s/Qe)),null!=n&&(n.rotation.y=Ve*We*(a+s/ze)),null!=r&&(r.rotation.y=Ve*qe*(s+l/Be)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,st.setAnimationLoop(dt),t.style.visibility="visible",B=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of lt.values())if(!e())return!1;return!0}()&&st.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var e;pt(i),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=null,i=null,u=null,y=null,lt.delete(t)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:et.ACESFilmicToneMapping,Linear:et.LinearToneMapping,Neutral:et.NeutralToneMapping};null!=n[e]&&(h=n[e]),R=t},threeIsInteractive:()=>x,threeSetInteractive:e=>{x=e,null==s||s.setInteractionEnabled(x)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=se([{time:0,value:e,interpolation:Ue},{time:Te,value:e,interpolation:Ne},{time:Te+ke/4,value:e+$e,interpolation:De},{time:Te+3*ke/4,value:e-$e,interpolation:Oe},{time:Te+ke,value:e,interpolation:Ue},{time:Te+2*ke,value:e,interpolation:Ue}]),s.setTheta(f.get()),m=null,g=null,v=se([{time:0,value:0,interpolation:Ue},{time:Te,value:1,interpolation:Ue},{time:Te+ke,value:0,interpolation:Ue},{time:Te+2*ke,value:0,interpolation:Ue}]),w=se([{time:0,value:0,interpolation:Ue},{time:Te,value:0,interpolation:Ne},{time:Te+ke/4,value:-Le,interpolation:De},{time:Te+3*ke/4,value:Le,interpolation:Oe},{time:Te+ke,value:0,interpolation:Ue},{time:Te+2*ke,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())},threeRenderOnce:()=>{H.render_()},preRender_:e=>{if(!b||S||!function(e){const t=e.getBoundingClientRect();return t.bottom>0&&t.top<Math.max(document.documentElement.clientHeight,window.innerHeight)&&t.right>0&&t.left<Math.max(document.documentElement.clientWidth,window.innerWidth)}(t))return;let n=0!==B?e-B:0;B=e,0===_?M=!0:_<Ye&&(n=0),_++,C||(s.hasUserInteracted()?(C=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(n),null==m||m.update(n),null==g||g.update(n),null==v||v.update(n),null==w||w.update(n),null!=f&&(s.setTheta(f.get()),M=!0),null!=m&&(s.setPhi(m.get()),M=!0),null!=g&&(s.setFovRadians(g.get()),M=!0))),s.update()&&(M=!0),(null==y?void 0:y.update())&&(M=!0)},shouldRender_:()=>!(!b||S)&&M,render_:()=>{const e=st.toneMapping,s=st.toneMappingExposure;st.toneMapping=h,st.toneMappingExposure=R,st.setViewport(0,0,t.width,t.height),st.setClearColor(new et.Color(16777215),E&&!A?1:0),st.render(i,a),st.toneMapping=e,st.toneMappingExposure=s,M=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),tt.width>0&&tt.height>0&&o.drawImage(tt,0,ot-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=x&&!C?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(Q,V)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===Q&&n===V&&it===K||(t.width=Math.ceil(e*it*at),t.height=Math.ceil(n*it*at),Q=e,V=n,K=it,M=!0)},target_:t};return lt.set(t,H),H}function ut(){if(nt)return;Je=window.ShopAR__THREE,et=Je.THREE,tt=document.createElement("canvas");var e,t;tt.style.position="block",st=new et.WebGLRenderer({powerPreference:"high-performance",canvas:tt,antialias:!0,alpha:!0}),st.outputColorSpace=et.SRGBColorSpace,st.toneMapping=et.ACESFilmicToneMapping,st.setClearColor(new et.Color(16777215),0),e=st,t=Je,B||(F=t.THREE,W=e,q=new F.MeshDepthMaterial,q.userData.darkness={value:_},q.onBeforeCompile=e=>{e.uniforms.darkness=q.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},q.depthTest=!1,q.depthWrite=!1,G=new F.ShaderMaterial(t.HorizontalBlurShader),G.depthTest=!1,z=new F.ShaderMaterial(t.VerticalBlurShader),z.depthTest=!1,B=!0),ht(),nt=!0}function dt(e){ht(),st.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of lt.values())t(e),n()&&r()}function ht(){let e=0,t=0;for(const{target_:n}of lt.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=C();e=Math.ceil(e*n*at),t=Math.ceil(t*n*at),e===rt&&t===ot&&n===it||(rt=e,ot=t,it=n,st.setSize(rt,ot,!1));for(const{updateSize_:e}of lt.values())e()}function pt(e){e.traverse((e=>{var t;e instanceof et.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(He):He(e.material))})),e.clear()}const ft={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},mt=Object.keys(ft);function gt(e){return ft[e]}const vt="shopar-error";function wt(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn",o.appendChild(r);{const e=document.createElement("span");e.textContent=t,o.appendChild(e)}o.ariaLabel=n;const i=o.style;return i.display="none",i.pointerEvents="auto",o}const yt="shopar-control";const bt="shopar-deepar-output";function Et(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function At(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function St(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function Mt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const Rt="shopar-main";const xt="shopar-qr-output";function Ct(e){var t,n;const r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("width",null!==(t=e.getAttribute("width"))&&void 0!==t?t:"1rem"),r.setAttribute("height",null!==(n=e.getAttribute("height"))&&void 0!==n?n:"1rem"),r.appendChild(e),r}function Pt(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","image");return n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",null!=t?t:"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E"),n.setAttribute("width",e),n.setAttribute("height",e),n}const It="shopar-three-output";var Tt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Tt||(Tt={}));let kt=!1;function Lt(){kt||(!function(){try{const e=document.createElement("style"),t=process.env.css;null!=t&&(e.innerHTML=t);const n=document.head;n.insertBefore(e,n.children[0])}catch(e){console.warn("Failed to write default ShopAR Plugin CSS.")}}(),kt=!0)}function $t(){Lt();const e=function(){const e=document.createElement("div");e.id=Rt;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),r=function(e,t){const n=document.createElement("div");n.id=xt;const r=n.style;r.position="absolute",r.top="0",r.left="0",r.width="100%",r.height="100%",r.display="none",r.pointerEvents="auto",r.userSelect="none";const o=document.createElement("div");o.className="shopar-qr";const i=o.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(o),o.appendChild(e);const a=document.createElement("div");return a.appendChild(t),o.appendChild(a),n}(t,n);e.appendChild(r);const o=function(){const e=document.createElement("div");e.id=bt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(o);const i=function(){const e=document.createElement("canvas");e.id=It,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:r}=n;return r.position="absolute",r.width="100%",r.height="100%",r.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=Ct(Pt("2rem",`${M}/img/prompt/3d-interaction.svg`)),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=Et("shopar-ar-loading-container"),h=At("shopar-ar-loading-text",gt("loading.ar"));d.appendChild(h);const p=St("shopar-ar-loading-bar-bg"),f=Mt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=Et("shopar-3d-loading-container"),g=At("shopar-3d-loading-text",gt("loading.3d"));m.appendChild(g);const v=St("shopar-3d-loading-bar-bg"),w=Mt("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",t.backgroundSize="contain",t.backgroundRepeat="no-repeat",t.backgroundPosition="center",e}();e.appendChild(y);const b=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),E=function(e){const t=document.createElement("div");t.id=vt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const r=document.createElement("div"),o=r.style;return o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",t.appendChild(r),r.appendChild(e),t}(b);e.appendChild(E);const A=function(){const e=document.createElement("div");return e.id=yt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(A);const S=Pt("1.75rem"),R=wt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",Ct(S));A.appendChild(R);const x=Pt("1.75rem"),C=wt("shopar-btn-3d","3D","Launch ShopAR 3D preview",Ct(x));A.appendChild(C);const P=Pt("1.75rem"),I=wt("shopar-btn-close","Close","Close ShopAR view",Ct(P));A.append(I);let T,k,L=Tt.None,$=!1,U=!1,D=!1,O=!1;function N(){f.classList.remove("active"),d.style.visibility="hidden"}function _(){y.style.visibility="hidden",w.classList.remove("active"),m.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return r},getQRImage:function(){return n},getDeepARTarget:function(){return o},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){b.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,r,o,i){var a;$=e,U=t,D=n,O=r,T=o,k=i,Ut(A,$),Ut(R,$&&(D||U)&&L===Tt.None),Ut(C,$&&O&&L===Tt.None),Ut(I,$&&L!==Tt.None),N(),_(),$||""===(a=E).style.display&&Ut(a,!1)},getUIState:function(){return L},setUIState:function(e){L=e,L===Tt.None?(N(),_(),$&&(Ut(E,!1),Ut(I,!1),(U||D)&&Ut(R,!0),O&&Ut(C,!0))):L===Tt.QR||L===Tt.AR?$&&(Ut(E,!1),Ut(R,!1),Ut(C,O&&"AR"===k),Ut(I,"AR"!==k)):L===Tt.Preview&&$&&(Ut(E,!1),Ut(R,(U||D)&&"3D"===k),Ut(C,!1),Ut(I,"3D"!==k))},setDefaultUIActions:function(e,t,n){$&&((U||D)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,r=`${M}/img/icons/${n}`;S.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(T),R.onclick=e),O&&(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/cube.svg`),C.onclick=t),P.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/close.svg`),I.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:N,startThreeLoading:function(){null!=y.dataset.bgSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:_,setThreePosterUrl:function(e){null!=e?(y.style.backgroundImage=`url(${e})`,y.dataset.bgSet="true"):delete y.dataset.bgSet},showCameraError:function(){$&&Ut(E,!0)}}}function Ut(e,t){e.style.display=t?"":"none"}const Dt=new Map;function Ot(t){let n=Dt.get(t);return null==n?(n=function(){let t=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=$t()),n);return{getSetupId:()=>t,incrementSetupId_:()=>t++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==r){const{getQRTarget:t,getQRImage:n}=i();r=function(t,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>e(this,void 0,void 0,(function*(){yield x;const e=`https://ar.shopar.ai/${A.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(e),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,r=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){r=!0,t.style.display="none"}))}}(t(),n())}return r},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();o=ct(e(),t(),n())}return o}}}(),Dt.set(t,n)):n.incrementSetupId_(),n}function Nt(e){for(const t of Dt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===Tt.AR&&o(Tt.None)}}let _t;const jt=new Uint8Array(16);function Ft(){if(!_t&&(_t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!_t))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return _t(jt)}const Wt=[];for(let e=0;e<256;++e)Wt.push((e+256).toString(16).slice(1));var qt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Gt(e,t,n){if(qt.randomUUID&&!t&&!e)return qt.randomUUID();const r=(e=e||{}).random||(e.rng||Ft)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return Wt[e[t+0]]+Wt[e[t+1]]+Wt[e[t+2]]+Wt[e[t+3]]+"-"+Wt[e[t+4]]+Wt[e[t+5]]+"-"+Wt[e[t+6]]+Wt[e[t+7]]+"-"+Wt[e[t+8]]+Wt[e[t+9]]+"-"+Wt[e[t+10]]+Wt[e[t+11]]+Wt[e[t+12]]+Wt[e[t+13]]+Wt[e[t+14]]+Wt[e[t+15]]}(r)}const zt="qrLaunch",Bt="arLaunch",Qt="previewLaunch",Vt="heartbeat";let Kt,Ht,Xt=!1,Zt=window.navigator.userAgent||"no user agent";const Yt=[];function Jt(){null==Kt&&(Ht=Gt(),Kt=R(`${M}/shopar-analytics.js`),Kt.then((()=>{Xt=!0,window.ShopAR__analytics.initializeImpl(),Yt.forEach((e=>e()))})))}function en(e){Xt?e():Yt.push(e)}function tn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function nn(t){return e(this,void 0,void 0,(function*(){const e=document.createElement("video");return e.setAttribute("playsinline","playsinline"),e.srcObject=yield t,e}))}const rn=200,on=10;let an=!1,sn=null,ln=[],cn=[];function un(t){return e(this,void 0,void 0,(function*(){an=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${M}/wasm/mediapipe`,t),sn&&clearInterval(sn);const r=[],o=[];sn=setInterval((()=>e(this,void 0,void 0,(function*(){if(an)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());an||(null!=a&&null!=s&&function(e){for(let t of ln)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<on||(r.shift(),o.shift(),function(e,t){for(let n of cn)n({faceWidth:e,IPD:t})}(hn(r),hn(o)))))}))),rn)}))}function dn(){cn=[],ln=[],an=!0}function hn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var pn="undefined"!=typeof Float32Array?Float32Array:Array;function fn(){var e=new pn(16);return pn!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function mn(e,t,n){var r=t[0],o=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],g=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*r+b*s+E*d+A*m,e[1]=y*o+b*l+E*h+A*g,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*r+b*s+E*d+A*m,e[5]=y*o+b*l+E*h+A*g,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*r+b*s+E*d+A*m,e[9]=y*o+b*l+E*h+A*g,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*r+b*s+E*d+A*m,e[13]=y*o+b*l+E*h+A*g,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function gn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function vn(e,t){var n=t[0],r=t[1],o=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,r,o),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function wn(e,t,n,r){var o=t[0],i=t[1],a=t[2],s=t[3],l=o+o,c=i+i,u=a+a,d=o*l,h=o*c,p=o*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=r[0],E=r[1],A=r[2];return e[0]=(1-(f+g))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+g))*E,e[6]=(m+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(m-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function yn(){var e=new pn(3);return pn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function bn(e,t,n){var r=new pn(3);return r[0]=e,r[1]=t,r[2]=n,r}function En(e,t){var n=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return Math.hypot(n,r,o)}function An(e,t,n){var r=t[0],o=t[1],i=t[2],a=n[3]*r+n[7]*o+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*r+n[4]*o+n[8]*i+n[12])/a,e[1]=(n[1]*r+n[5]*o+n[9]*i+n[13])/a,e[2]=(n[2]*r+n[6]*o+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function Sn(){var e=new pn(4);return pn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}yn(),function(){var e,t=(e=new pn(4),pn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Mn;let Rn,xn,Cn;yn(),bn(1,0,0),bn(0,1,0),Sn(),Sn(),Mn=new pn(9),pn!=Float32Array&&(Mn[1]=0,Mn[2]=0,Mn[3]=0,Mn[5]=0,Mn[6]=0,Mn[7]=0),Mn[0]=1,Mn[4]=1,Mn[8]=1;let Pn,In,Tn,kn,Ln=!0,$n=null;const Un=new Set;let Dn,On,Nn,_n,jn,Fn;function Wn(){null==Rn&&(Rn=R(`${M}/shopar-deepar.js`))}function qn(){null==xn&&(xn=R(`${M}/shopar-true-scale.js`))}function Gn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return jn=o,null==Dn&&(Dn=(()=>e(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new t("No camera available!");var e;const n=Yn(Tn),o=tn(n);Pn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:kn,additionalOptions:{hint:Fn,cameraConfig:{disableDefaultCamera:!0}}}),In=yield nn(o),yield Jn(Pn,In,"user"===n),"Glasses"===Tn&&(yield xn,un(In),"DetectionLoop"!==jn&&rr((e=>{_n=e.faceWidth})))})))()),Dn}))}function zn(e,t){var n,r;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===Tn&&(n=t,r=Fn,n===r||null!=n&&null!=r&&n.length===r.length&&n.every((e=>r.find((t=>e===t))))&&r.every((e=>n.find((t=>t===e))))))||(null!=Pn&&(Pn.shutdown(),Pn=null,Dn=null),Tn=e,Fn=t)}function Bn(e){e!==kn&&(kn=e,null!=Pn&&Pn.changePreviewElement(kn))}function Qn(e){$n=e}function Vn(e){Pn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(_n){const e=137/(_n+5);Pn.changeParameterVector("GLASSES","","scale",e,e,e,0),Pn.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const r=tr("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=tr("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Pn.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),Pn.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),dn(),_n=null}e(),er("Glasses")}},Pn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),er("Shoes"))},Pn.callbacks.onWristTracked=t=>{t.detected&&(e(),er("Watches"))}}function Kn(t,n,r){return e(this,void 0,void 0,(function*(){return null!=On&&Nn===r||(yield On,On=Pn.switchEffect(t,{envmap:n}),Nn=r),On}))}function Hn(e,t){null!=e&&null!=t&&(Pn.setToneMapping(e),Pn.setExposure(t))}function Xn(){return e(this,void 0,void 0,(function*(){if(null!=Pn){if(Ln=!1,null==In){const e=Yn(Tn),t=tn(e);In=yield nn(t),yield Jn(Pn,In,"user"===e),"Glasses"===Tn&&(un(In),"DetectionLoop"!==jn&&rr((e=>{_n=e.faceWidth})))}!function(){if(null==$n)return;if(null==Tn||Un.has(Tn))return;$n.style.visibility="visible",$n.style.opacity="1"}(),Pn.setPaused(Ln),kn.style.display=""}}))}function Zn(){null!=Pn&&(Ln=!0,Pn.setPaused(Ln),dn(),null!=In&&null!=In.srcObject&&In.srcObject instanceof MediaStream&&(In.srcObject.getTracks().forEach((e=>e.stop())),In=null),function(){if(null==$n)return;$n.style.visibility="hidden",$n.style.opacity="0"}(),Pn.stopCamera(),kn.style.display="none")}function Yn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Jn(t,n,r){return e(this,void 0,void 0,(function*(){yield new Promise((o=>{n.onloadedmetadata=()=>{n.play().then((()=>e(this,void 0,void 0,(function*(){t.setVideoElement(n,r),o()}))))}}))}))}function er(e){null!=$n&&(Un.has(e)||(Un.add(e),$n.style.opacity="0"))}function tr(e,t,n,r,o,i,a){const s=Pn.getTransformationBetween(e,t),l=gn(yn(),s),c=function(e,t){var n=new pn(3);vn(n,t);var r=1/n[0],o=1/n[1],i=1/n[2],a=t[0]*r,s=t[1]*o,l=t[2]*i,c=t[4]*r,u=t[5]*o,d=t[6]*i,h=t[8]*r,p=t[9]*o,f=t[10]*i,m=a+u+f,g=0;return m>0?(g=2*Math.sqrt(m+1),e[3]=.25*g,e[0]=(d-p)/g,e[1]=(h-l)/g,e[2]=(s-c)/g):a>u&&a>f?(g=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/g,e[0]=.25*g,e[1]=(s+c)/g,e[2]=(h+l)/g):u>f?(g=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/g,e[0]=(s+c)/g,e[1]=.25*g,e[2]=(d+p)/g):(g=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/g,e[0]=(h+l)/g,e[1]=(d+p)/g,e[2]=.25*g),e}(Sn(),s);wn(s,c,l,bn(a,a,a));const u=Pn.getTransformationBetween(t,n),d=gn(yn(),u);wn(u,Sn(),d,vn(yn(),u));const h=mn(fn(),s,u),p=gn(yn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=Pn.getTransformationBetween(n,r)}catch(e){return f}const g=mn(fn(),u,m),v=mn(fn(),s,g),w=bn(p[0],i[1],i[2]),y=An(yn(),w,function(e,t){var n=t[0],r=t[1],o=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-r*a,y=n*l-o*a,b=n*c-i*a,E=r*l-o*s,A=r*c-i*s,S=o*c-i*l,M=u*m-d*f,R=u*g-h*f,x=u*v-p*f,C=d*g-h*m,P=d*v-p*m,I=h*v-p*g,T=w*I-y*P+b*C+E*x-A*R+S*M;return T?(T=1/T,e[0]=(s*I-l*P+c*C)*T,e[1]=(o*P-r*I-i*C)*T,e[2]=(m*S-g*A+v*E)*T,e[3]=(h*A-d*S-p*E)*T,e[4]=(l*x-a*I-c*R)*T,e[5]=(n*I-o*x+i*R)*T,e[6]=(g*b-f*S-v*y)*T,e[7]=(u*S-h*b+p*y)*T,e[8]=(a*P-s*x+c*M)*T,e[9]=(r*x-n*P-i*M)*T,e[10]=(f*A-m*b+v*w)*T,e[11]=(d*b-u*A-p*w)*T,e[12]=(s*R-a*C-l*M)*T,e[13]=(n*C-r*R+o*M)*T,e[14]=(m*y-f*E-g*w)*T,e[15]=(u*E-d*y+h*w)*T,e):null}(fn(),v));let b=Pn.getClosestPointOnMesh(r,y);try{const e=Pn.getClosestPointOnMesh(o,y);En(y,e)<En(y,b)&&(b=e)}catch(e){}const E=An(yn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function nr(e){!function(e){ln.push(e)}(e)}function rr(e){!function(e){cn.push(e)}(e)}var or;function ir(){return[or.Android,or.iOS,or.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],r=["Win32","Win64","Windows","WinCE"],o=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==o.indexOf(t)?or.iOS:-1!==n.indexOf(t)?i?or.Tablet:or.MacOS:-1!==r.indexOf(t)?or.Windows:/Android/.test(e)?or.Android:/Linux/.test(t)?or.Linux:i?or.Tablet:or.Unknown}return or.Unknown}())}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(or||(or={}));const ar=["AR","3D"];function sr(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function lr(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function cr(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function ur(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;sr(n,"apiKey"),cr(n,"apiKey"),sr(r,"sku"),cr(r,"sku"),sr(o,"targetElement"),function(e,n){if(!(e instanceof HTMLElement))throw new t(`'${n}' must be an HTMLElement.`)}(o,"targetElement"),null!=i&&function(e,n,r){if("string"!=typeof e)throw new t(`'${n}' must be a string.`);if(!r.includes(e))throw new t(`'${n}' must be ${r.join("' or '")}.`)}(i,"initialState",ar),null!=a&&function(e,n){if("string"!=typeof e&&!Array.isArray(e))throw new t(`'${n}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&cr(s,"baseUrl"),null!=l&&lr(l,"defaultUI"),null!=c&&lr(c,"interactive"),null!=u&&function(e,n,r){for(const o of r){const r=e[o];if(null!=r&&"string"!=typeof r)throw new t(`Value for key '${o}' in '${n}' must be a string.`)}}(u,"strings",mt)}let dr=!1;function hr(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;M.update(n.baseUrl),Jt();const{trackEvent:o}=function(e){const t=performance.now(),n=Gt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:A,userAgent:Zt,sessionId:Ht,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),en((()=>{window.ShopAR__analytics.trackEventImpl(r,o)}))}}}(n.apiKey);o("visionSetup");const i=yield function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:n,sid:u()})}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield r.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(n.apiKey);o("visionApiResponse",i);const{arKey:a}=i,s=Ot(r),{getSetupId:l,findUI:c}=s,d=l();Wn(),qn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=Tt.None)throw Error("UI state is not None, this is weird..");v(Tt.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield Rn,pr(l(),d);try{o("visionArLaunch"),Zn(),zn("Glasses",["faceInit"]),Bn(f()),yield Gn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),pr(l(),d),yield Xn(),pr(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),b(),Zn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{y()}return dr=!0,{registerFacePoseListener:e=>{dr&&(o("registerFacePoseListener"),nr(e))},registerFaceMeasurementListener:e=>{dr&&(o("registerFaceMeasurementListener"),rr(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){dr&&(o("switchEffect",{arUrl:t}),function(e){Pn.switchEffect(e)}(t))})),clearEffect:()=>{dr&&(o("clearEffect"),Pn.clearEffect())},close:()=>{if(dr){if(dr=!1,o("visionClose"),g()!==Tt.AR)throw new t("AR not launched.");Zn(),v(Tt.None)}}}}))}function pr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function fr(n){var r,o;return e(this,void 0,void 0,(function*(){ur(n);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=n,d=null==n.zoomEnabled||n.zoomEnabled,h=!0===n.alwaysTransparentBackground;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),M.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(ft,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(ft[t]=n)}}(n.strings);const w=null!=c?Me(c):null,y=null!=(null==w?void 0:w.theta)?se(w.theta):null,S=null!=(null==w?void 0:w.phi)?se(w.phi):null,C=null!=(null==w?void 0:w.fov)?se(w.fov):null,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==C?void 0:C.get(),h),I=Ot(s),{getSetupId:T,findUI:k,findQR:L,findThree:$}=I,U=T();Jt();const{trackEvent:D,arInteracted:O,previewInteracted:N}=function(e,t){const n=performance.now(),r=Gt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(Vt,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Zt,pluginVersion:A,sessionId:Ht,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),en((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);D("setup",{hostname:window.location.hostname});const _=yield P;D("apiResponse",_);const{category:j,arUrl:F,arEnvUrl:W,arToneMapping:q,arToneMappingExposure:G,arKey:z,arPromptEnabled:B,arPromptText:Q,arPromptImage:V,previewUrl:K,previewEnvUrl:H,previewToneMapping:X,previewToneMappingExposure:Z,previewPosterUrl:Y,cameraErrorText:J,qrPromptText:ee}=_;mr(T(),U);const te=null!=F&&function(e){return null!=e&&g.includes(e)}(j),ne=null==(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled),re=te&&function(e){return null!=e&&v.includes(e)}(j),oe=ne&&re&&!ir(),ie=te&&!oe,ae=null!=K;mr(T(),U);const{setTargetElement:le,getDeepARTarget:ce,getDeepARPrompt:ue,customizeDeepARPrompt:de,customizeCameraError:he,customizeQRPrompt:pe,setVisibilityParameters:fe,getUIState:me,setUIState:ge,setDefaultUIActions:ve,startDeepARLoading:we,stopDeepARLoading:ye,startThreeLoading:be,stopThreeLoading:Ee,setThreePosterUrl:Ae,showCameraError:Se}=k();le(s);if(fe(null==n.defaultUI||n.defaultUI,oe,ie,ae,j,l),de(null!=Q?Q:"",null!=V?V:""),he(J),pe(ee),Ae(Y),oe&&function(){e(this,void 0,void 0,(function*(){null==x&&(x=R(`${M}/shopar-qr.js`))}))}(),ie&&(Wn(),function(e){e!==Cn&&(Cn=e,b(e),On=null,dn())}(F),"Glasses"===j&&qn(),null!=W&&b(W)),ae){null==Xe&&(Xe=R(`${M}/shopar-three.js`));const e=255;E(K,(new Date).getTime()+e,Math.random()*e),b(null!=H?H:`${M}/env/default.hdr`)}!function(e,n){const r=e.parentNode;if(null==r)throw new t("Parent node missing.");new MutationObserver((t=>{for(const r of t)for(const t of r.removedNodes)if(t===e)return void n()})).observe(r,{childList:!0})}(s,(()=>{me()!==Tt.QR||Re()||Ce(),me()!==Tt.AR||Ln||Zn(),me()!==Tt.Preview||ke()||$e(),ge(Tt.None),Ue(),function(e){Dt.delete(e)}(s)}));const{qrPaused:Re,qrDraw:xe,qrPause:Ce}=L(),{threeInit:Pe,threeParse:Ie,threeLoad:Te,threePaused:ke,threeResume:Le,threePause:$e,threeDestroy:Ue,threeSetZoomEnabled:De,threeSetForcedTransparency:Oe,threeSetToneMapping:Ne,threeIsInteractive:_e,threeSetInteractive:je,threeSetOnInteracted:Fe,threeInitPromptAnimation:We,threeInitThetaAnimation:qe,threeInitPhiAnimation:Ge,threeInitFovAnimation:ze,threeRenderOnce:Be}=$(),Qe=null==n.interactive||n.interactive;je(Qe);let Ve=0;if(me()===Tt.QR){if(!Re())if(oe){D(zt);try{yield xe(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Ce(),ge(Tt.None)}else if(me()===Tt.AR){if(!Ln)if(ie&&!dr){D(Bt);const e=null!=W?yield b(W):void 0;mr(T(),U);const t=yield b(F);mr(T(),U),Nt(I),zn(j),Bn(ce()),Qn(B?ue():null),yield Kn(t,e,`${F}${W}`),Hn(q,G),Vn(O),mr(T(),U)}else Zn(),ge(Tt.None)}else if(me()===Tt.Preview&&!ke())if(ae){D(Qt),be();const e=255,t=yield E(K,(new Date).getTime()+e,Math.random()*e);mr(T(),U);const n=yield b(null!=H?H:`${M}/env/default.hdr`);mr(T(),U);const r=yield Ie(t,n,`${K}${H}`);mr(T(),U),Te(r,j),De(d),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=w&&(qe(y),Ge(S),ze(C)),Be(),Ee()}else $e(),ge(Tt.None);const Ke=()=>e(this,void 0,void 0,(function*(){if(oe)try{D(zt);const e=++Ve;if(me()===Tt.Preview&&ae&&!ke()&&$e(),ge(Tt.QR),yield xe(i,a),Ve!==e)return;return void mr(T(),U)}catch(e){const n=e instanceof Error;throw D("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}if(!ie)throw new t("Model does not have AR enabled.");try{D(Bt);const e=++Ve;me()===Tt.Preview&&ae&&!ke()&&$e(),Nt(I),ge(Tt.AR),we();const t=null!=W?yield b(W):void 0;mr(T(),U);const n=yield b(F);if(Ve!==e)return;if(mr(T(),U),yield Rn,Ve!==e)return;if(mr(T(),U),Zn(),zn(j),Bn(ce()),Qn(B?ue():null),yield Gn({licenseKey:z}),Ve!==e)return;if(mr(T(),U),yield Kn(n,t,`${F}${W}`),Hn(q,G),Vn(O),Ve!==e)return;if(mr(T(),U),yield Xn(),Ve!==e)return;mr(T(),U)}catch(e){const n=e instanceof Error;throw D("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Se(),Zn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ye()}})),He=()=>e(this,void 0,void 0,(function*(){if(!ae)throw new t("Model does not have 3D enabled.");try{D(Qt);const e=++Ve;me()===Tt.AR&&(ie&&!Ln&&Zn(),Ce()),ge(Tt.Preview),be();const t=255,n=yield E(K,(new Date).getTime()+t,Math.random()*t);if(Ve!==e)return;mr(T(),U);const r=yield b(null!=H?H:`${M}/env/default.hdr`);if(Ve!==e)return;if(mr(T(),U),yield Xe,Ve!==e)return;if(mr(T(),U),Pe(),Ve!==e)return;mr(T(),U);const o=yield Ie(n,r,`${K}${H}`);if(Ve!==e)return;mr(T(),U),Te(o,j),De(d),Oe(h),Ne(null!=X?X:"ACES",null!=Z?Z:1),Fe(N),We(),null!=w&&(qe(y),Ge(S),ze(C)),Be(),Le(),Ee()}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."}`)}})),Ze=()=>e(this,void 0,void 0,(function*(){me()!==Tt.None&&("AR"!==l||me()!==Tt.AR&&me()!==Tt.QR)&&("3D"===l&&me()===Tt.Preview||(++Ve,me()===Tt.QR||me()===Tt.AR?(ie&&!Ln&&Zn(),Ce()):me()===Tt.Preview&&ae&&!ke()&&$e(),ge(Tt.None),"AR"!==l?"3D"!==l||(yield He()):yield Ke()))}));return ve(Ke,He,Ze),"AR"===l?(yield Ke(),mr(T(),U)):"3D"===l&&(yield He(),mr(T(),U)),dr=!1,{launchAR:te?Ke:void 0,launch3D:ae?He:void 0,closeAR:te?()=>e(this,void 0,void 0,(function*(){me()!==Tt.AR&&me()!==Tt.QR||"AR"!==l&&(++Ve,ie&&!Ln&&Zn(),Ce(),ge(Tt.None),"3D"!==l||(yield He()))})):void 0,close3D:ae?()=>e(this,void 0,void 0,(function*(){me()===Tt.Preview&&"3D"!==l&&(++Ve,ae&&!ke()&&$e(),ge(Tt.None),"AR"!==l||(yield Ke()))})):void 0,close:te||ae?Ze:void 0,isInteractive:()=>_e(),setInteractive:e=>je(e)}}))}function mr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const gr={setup:function(t){return e(this,void 0,void 0,(function*(){return hr(t)}))}},vr={setup:function(n){return e(this,void 0,void 0,(function*(){return function(n,r){return e(this,void 0,void 0,(function*(){try{return r()}catch(e){throw e instanceof Error?new t(`${n} failed: ${e.message}`):(console.error(e),new t(`${n} failed.`))}}))}("setup",(()=>fr(n)))}))},version:A};export{ar as PREVIEW_STATES,t as PluginError,vr as plugin,gr as vision};
|
|
1
|
+
function e(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class t extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const n=[Uint8Array,Uint32Array],r=n.length-2,o=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],i=[2,12,7,1],a=window[o[i[i[r]]]][o[i[i[i.length-1]]]],s=a.charCodeAt(r),l=s^s,c=new n[1]([l]);function u(){const e=(new TextEncoder).encode(a),t=o.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[o[t[2]]](String.fromCodePoint(...e))}const d=[1e3,2e3,4e3],h=d.length;function p(t,n=0){return e(this,void 0,void 0,(function*(){try{return yield t()}catch(e){if(n>=h)throw e;return yield new Promise((e=>setTimeout(e,d[n]))),p(t,n+1)}}))}function f(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const g=["Glasses","Shoes","Watches"],v=["Shoes"];const w={},y={};function b(n){return null==w[n]&&(w[n]=function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(n).catch((e=>{throw console.error(e),new t("Resource unavailable.")}));if(!e.ok)throw new t(`Resource download failed with status ${e.status}.`);return e}))));try{return yield(yield r.blob()).arrayBuffer()}catch(e){throw console.error(e),new t("Resource has invalid body.")}}))}(n)),w[n]}function E(r,o,i){return null==y[r]&&(y[r]=function(r,o,i){return e(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const u=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const f=String.fromCharCode(a-7),m=window[`${h}${d+u+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${f}`],g=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield m(`${r}`).catch((()=>{throw new t("Unknown error.")}));if(!e.ok)throw new t("Unknown error.");return e})))),v=new n[0](yield(yield g.blob().catch((()=>{throw new t("Unknown error.")}))).arrayBuffer().catch((()=>{throw new t("Unknown error.")})));i+=s;const w=v.byteLength;if(c[l]=Math.min(76,o)*((a>>5)-1),152===c[l]&&(c[l]=w),i==l)return v;i=l,i^=l;for(let e=0,t=v.length;e<t;e++)c[l]^=c[i]<<13,c[l]^=c[i]>>17,c[l]^=c[i]<<5,v[e]=v[e]^c[l];return i^=c[0],i^=c[1],i^=c[2],v}))}(r,o,i)),y[r]}const A="0.7.4-alpha.0";let S=`https://cdn.jsdelivr.net/npm/shopar-plugin@${A}/dist`;const M={update:e=>{null!=e&&(S=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>S};function R(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let x;function T(t,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>e(this,void 0,void 0,(function*(){!function(){e(this,void 0,void 0,(function*(){null==x&&(x=R(`${M}/shopar-qr.js`))}))}(),yield x;const a=`https://ar.shopar.ai/${A.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,s=yield window.ShopAR__QR.toDataURL(a),l=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=s,yield l,r=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){r=!0,t.style.display="none"}))}}const C=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let P,I,k,L=!1;let U=!1;function $(e){const t=function(e){const t=new I.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,I.ClampToEdgeWrapping,I.ClampToEdgeWrapping,I.LinearFilter,I.LinearFilter,1,I.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(k.parse(e));return t.mapping=I.EquirectangularReflectionMapping,t.colorSpace=I.LinearSRGBColorSpace,t}const D=45,O=45,N=3,_=1.5,j=1,F=.5;let W,q,G,z,B,Q=!1;const V=4,H=.001,K=1e-7,X=10,Z=11,Y=1/(Z-1),J="function"==typeof Float32Array;function ee(e,t,n,r){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===r)return ae;const o=J?new Float32Array(Z):new Array(Z);for(let t=0;t<Z;++t)o[t]=oe(t*Y,e,n);function i(t){let r=0,i=1;const a=Z-1;for(;i!==a&&o[i]<=t;++i)r+=Y;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*Y,l=ie(s,e,n);return l>=H?function(e,t,n,r){for(let o=0;o<V;++o){const o=ie(t,n,r);if(0===o)return t;t-=(oe(t,n,r)-e)/o}return t}(t,s,e,n):0===l?s:function(e,t,n,r,o){let i,a,s=0;do{a=t+(n-t)/2,i=oe(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>K&&++s<X);return a}(t,r,r+Y,e,n)}return function(e){return 0===e||1===e?e:oe(i(e),t,r)}}function te(e,t){return 1-3*t+3*e}function ne(e,t){return 3*t-6*e}function re(e){return 3*e}function oe(e,t,n){return((te(t,n)*e+ne(t,n))*e+re(t))*e}function ie(e,t,n){return 3*te(t,n)*e*e+2*ne(t,n)*e+re(t)}function ae(e){return e}function se(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=ee(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function le(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:se(n)})));let r=0,o=n[0].value;return{reset:()=>{r=0},update:e=>{for(r+=e;r>=t;)r-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(r>=t.time&&r<i.time){const e=t.interpolate((r-t.time)/(i.time-t.time));o=t.value+e*(i.value-t.value)}}},get:()=>o}}const ce="#",ue="time",de="interpolation",he="yaw",pe="pitch",fe="fov",me=[ue,he,pe,fe,de],ge="s",ve="ms",we=1e3,ye="deg",be="rad",Ee=Math.PI/180,Ae="ease-in-out",Se="cubic-bezier(",Me=")";function Re(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(ce);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(!me.includes(r))throw new Error(`Invalid token in header: '${r}'.`);if(t.includes(r))throw new Error(`Duplicate token in header: '${r}'.`);t.push(r)}if(!t.includes(ue))throw new Error(`Missing required token: '${ue}'.`);return t}(t.split(/\s+/)),o={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=xe(r,e);null!=t&&(null==o.theta&&(o.theta=[]),o.theta.push(t)),null!=n&&(null==o.phi&&(o.phi=[]),o.phi.push(n)),null!=i&&(null==o.fov&&(o.fov=[]),o.fov.push(i))}if(0===Object.values(o).length)throw new Error("At least one parameter should be animated.");return o}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const r of e){const{time:e,pitch:o,yaw:i,fov:a}=r;if(null==e)throw new Error("Time missing.");const s=Ce(null!==(t=r.interpolation)&&void 0!==t?t:Ae);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*Ee,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*Ee,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*Ee,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function xe(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const r=e.indexOf(ue),o=function(e){if(e.endsWith(ve))return Ie(e.substring(0,e.length-ve.length));if(e.endsWith(ge))return Ie(e.substring(0,e.length-ge.length))*we;return Ie(e)}(n[r]),i=e.indexOf(de),a=Ce(-1===i?Ae:n[i]),s={};for(let t=0;t<n.length;t++){if(t===r||t===i)continue;const l=e[t],c=n[t];switch(l){case he:s.theta={time:o,value:Te(c),interpolation:a};break;case pe:s.phi={time:o,value:Te(c),interpolation:a};break;case fe:s.fov={time:o,value:Te(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Te(e){return e.endsWith(ye)?Ie(e.substring(0,e.length-ye.length))*Ee:e.endsWith(be)?Ie(e.substring(0,e.length-be.length)):Ie(e)*Ee}function Ce(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Pe(0,0,1,1);if("sine"===e)return Pe(.37,0,.63,1);if("sine-in"===e)return Pe(.12,0,.39,0);if("sine-out"===e)return Pe(.61,1,.88,1);if("ease"===e)return Pe(.25,.1,.25,1);if("ease-in"===e)return Pe(.42,0,1,1);if("ease-out"===e)return Pe(0,0,.58,1);if("ease-in-out"===e)return Pe(.42,0,.58,1);if(e.startsWith(Se)&&e.endsWith(Me)){const t=e.substring(Se.length,e.length-Me.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Ie(t[0]),y1:Ie(t[1]),x2:Ie(t[2]),y2:Ie(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Pe(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Ie(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const ke=300,Le=2e3,Ue=.05,$e=2*Math.PI/32,De=Ce("hold"),Oe=Ce("sine"),Ne=Ce("sine-in"),_e=Ce("sine-out");const je=2e3,Fe=8,We=2*Math.PI,qe=We/12,Ge=We/60,ze=We/60,Be=60,Qe=60,Ve=1e3,He=Be*Qe,Ke=-1;function Xe(e){return le([{time:0,value:0,interpolation:{type:"bezier",x1:.9,y1:0,x2:.6,y2:1}},{time:je,value:e,interpolation:{type:"hold"}}])}function Ze(e,t,n){return Ke*qe*(e+t/Be+n/He)}function Ye(e,t){return Ke*Ge*(e+t/Qe)}function Je(e,t){return Ke*ze*(e+t/Ve)}const et=["map","alphaMap","anisotropyMap","aoMap","bumpMap","clearcoatMap","clearcoatNormalMap","clearcoatRoughnessMap","displacementMap","emissiveMap","envMap","gradientMap","iridescenceMap","iridescenceThicknessMap","lightMap","metalnessMap","normalMap","roughnessMap","sheenColorMap","sheenRoughnessMap","specularMap","specularColorMap","specularIntensityMap","thicknessMap","transmissionMap"];function tt(e){null!=e&&(e.dispose(),et.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let nt;const rt=0,ot=3;let it,at,st,lt=!1,ct=1,ut=1,dt=1;const ht=1;let pt;const ft=new Map;function mt(){null==nt&&(nt=R(`${M}/shopar-three.js`))}function gt(t,n,r){const o=t.getContext("2d");null==o&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,R=1,x=!0,T=!1,C=0,j=0,Q=1,V=1,H=1;const K={threeInit:()=>{b||(vt(),i=new at.Scene,a=new at.PerspectiveCamera(25,1,.5),s=new it.OrbitControls(a,t),s.setInteractionEnabled(x),h=at.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new W.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new W.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new W.Group;r.position.y=-.7;const o=new W.PlaneGeometry(D,O).rotateX(Math.PI/2),i=new W.MeshBasicMaterial({map:t.texture,opacity:F,transparent:!0,depthWrite:!1}),a=new W.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new W.Mesh(o);s.visible=!1,r.add(s);const l=new W.OrthographicCamera(-D/2,D/2,O/2,-O/2,0,N);function c(e){s.visible=!0,z.uniforms.tDiffuse.value=t.texture,z.uniforms.h.value=1*e/256,s.material=z,q.setRenderTarget(n),q.render(s,l),B.uniforms.tDiffuse.value=n.texture,B.uniforms.v.value=1*e/256,s.material=B,q.setRenderTarget(t),q.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,r.add(l),{shadowGroup:r,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=G;const r=q.getClearAlpha();q.setClearAlpha(0),q.setRenderTarget(t),q.render(e,l),e.overrideMaterial=null,c(_),c(.4*_),q.setRenderTarget(null),q.setClearAlpha(r),e.background=n}}}(i)),b=!0)},threeParse:(t,n,r)=>e(this,void 0,void 0,(function*(){return null!=u&&d===r||(yield u,u=(()=>e(this,void 0,void 0,(function*(){var e,r,o;return r=it,U||(I=r.THREE,k=new r.RGBELoader,U=!0),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=$(n),function(e,t){if(L)return;const{THREE:n}=t;P=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder),L=!0}(pt,it),o=t,P.parseAsync(o.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{bt(i),i.add(e.scene);const n=(new at.Box3).setFromObject(e.scene);l.position.y=n.min.y-rt,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof at.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const r=n.min.clone().add(n.max).divideScalar(2),o=Math.sqrt(it.reduceVertices(e.scene,((e,t)=>Math.max(e,r.distanceToSquared(t))),0));s.reset(r,o,function(e,t){var n;const r={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?r.Glasses:null!==(n=r[e])&&void 0!==n?n:r.Glasses).normalize()}(t,at.Vector3)),C=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),r=e.getObjectByName("seconds");if(null==t&&null==n&&null==r)return null;let o,i,a,s,l,c;return{start:()=>{o=new Date,o.setMilliseconds(o.getMilliseconds()+je),l=!1;const e=o.getHours(),t=o.getMinutes(),n=o.getSeconds(),r=o.getMilliseconds();i=Xe(Ze(e,t,n)),a=Xe(Ye(t,n)),s=Xe(Je(n,r)),c=new Date},update:()=>{if(null==o)return!1;const e=new Date;if(!l){if(o.getTime()-e.getTime()>0){const o=Math.abs(e.getTime()-c.getTime());return null!=t&&(i.update(o),t.rotation.y=i.get()),null!=n&&(a.update(o),n.rotation.y=a.get()),null!=r&&(s.update(o),r.rotation.y=s.get()),c=e,!0}l=!0}if(Math.abs(e.getTime()-c.getTime())<Ve/Fe)return!1;c=e;const u=e.getHours(),d=e.getMinutes(),h=e.getSeconds(),p=e.getMilliseconds();return null!=t&&(t.rotation.y=Ze(u,d,h)),null!=n&&(n.rotation.y=Ye(d,h)),null!=r&&(r.rotation.y=Je(h,p)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,pt.setAnimationLoop(wt),t.style.visibility="visible",j=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset(),null==y||y.start()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of ft.values())if(!e())return!1;return!0}()&&pt.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var e;bt(i),null===(e=i.environment)||void 0===e||e.dispose(),i.environment=null,i=null,u=null,y=null,ft.delete(t)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:at.ACESFilmicToneMapping,Linear:at.LinearToneMapping,Neutral:at.NeutralToneMapping};null!=n[e]&&(h=n[e]),R=t},threeIsInteractive:()=>x,threeSetInteractive:e=>{x=e,null==s||s.setInteractionEnabled(x)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=le([{time:0,value:e,interpolation:De},{time:ke,value:e,interpolation:_e},{time:ke+Le/4,value:e+$e,interpolation:Oe},{time:ke+3*Le/4,value:e-$e,interpolation:Ne},{time:ke+Le,value:e,interpolation:De},{time:ke+2*Le,value:e,interpolation:De}]),s.setTheta(f.get()),m=null,g=null,v=le([{time:0,value:0,interpolation:De},{time:ke,value:1,interpolation:De},{time:ke+Le,value:0,interpolation:De},{time:ke+2*Le,value:0,interpolation:De}]),w=le([{time:0,value:0,interpolation:De},{time:ke,value:0,interpolation:_e},{time:ke+Le/4,value:-Ue,interpolation:Oe},{time:ke+3*Le/4,value:Ue,interpolation:Ne},{time:ke+Le,value:0,interpolation:De},{time:ke+2*Le,value:0,interpolation:De}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{m=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{g=e,null!=e&&s.setFovRadians(e.get())},threeRenderOnce:()=>{K.render_()},preRender_:e=>{if(!b||S||!function(e){const t=e.getBoundingClientRect();return t.bottom>0&&t.top<Math.max(document.documentElement.clientHeight,window.innerHeight)&&t.right>0&&t.left<Math.max(document.documentElement.clientWidth,window.innerWidth)}(t))return;let n=0!==j?e-j:0;j=e,0===C?M=!0:C<ot&&(n=0),C++,T||(s.hasUserInteracted()?(T=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(n),null==m||m.update(n),null==g||g.update(n),null==v||v.update(n),null==w||w.update(n),null!=f&&(s.setTheta(f.get()),M=!0),null!=m&&(s.setPhi(m.get()),M=!0),null!=g&&(s.setFovRadians(g.get()),M=!0))),s.update()&&(M=!0),(null==y?void 0:y.update())&&(M=!0)},shouldRender_:()=>!(!b||S)&&M,render_:()=>{const e=pt.toneMapping,s=pt.toneMappingExposure;pt.toneMapping=h,pt.toneMappingExposure=R,pt.setViewport(0,0,t.width,t.height),pt.setClearColor(new at.Color(16777215),E&&!A?1:0),pt.render(i,a),pt.toneMapping=e,pt.toneMappingExposure=s,M=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),st.width>0&&st.height>0&&o.drawImage(st,0,ut-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=x&&!T?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(Q,V)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===Q&&n===V&&dt===H||(t.width=Math.ceil(e*dt*ht),t.height=Math.ceil(n*dt*ht),Q=e,V=n,H=dt,M=!0)},target_:t};return ft.set(t,K),K}function vt(){if(lt)return;it=window.ShopAR__THREE,at=it.THREE,st=document.createElement("canvas");var e,t;st.style.position="block",pt=new at.WebGLRenderer({powerPreference:"high-performance",canvas:st,antialias:!0,alpha:!0}),pt.outputColorSpace=at.SRGBColorSpace,pt.toneMapping=at.ACESFilmicToneMapping,pt.setClearColor(new at.Color(16777215),0),e=pt,t=it,Q||(W=t.THREE,q=e,G=new W.MeshDepthMaterial,G.userData.darkness={value:j},G.onBeforeCompile=e=>{e.uniforms.darkness=G.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},G.depthTest=!1,G.depthWrite=!1,z=new W.ShaderMaterial(t.HorizontalBlurShader),z.depthTest=!1,B=new W.ShaderMaterial(t.VerticalBlurShader),B.depthTest=!1,Q=!0),yt(),lt=!0}function wt(e){yt(),pt.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of ft.values())t(e),n()&&r()}function yt(){let e=0,t=0;for(const{target_:n}of ft.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=C();e=Math.ceil(e*n*ht),t=Math.ceil(t*n*ht),e===ct&&t===ut&&n===dt||(ct=e,ut=t,dt=n,pt.setSize(ct,ut,!1));for(const{updateSize_:e}of ft.values())e()}function bt(e){e.traverse((e=>{var t;e instanceof at.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(tt):tt(e.material))})),e.clear()}const Et={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},At=Object.keys(Et);function St(e){return Et[e]}const Mt="shopar-error";function Rt(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn",o.appendChild(r);{const e=document.createElement("span");e.textContent=t,o.appendChild(e)}o.ariaLabel=n;const i=o.style;return i.display="none",i.pointerEvents="auto",o}const xt="shopar-control";const Tt="shopar-deepar-output";function Ct(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function Pt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function It(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function kt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const Lt="shopar-main";const Ut="shopar-qr-output";function $t(e){var t,n;const r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("width",null!==(t=e.getAttribute("width"))&&void 0!==t?t:"1rem"),r.setAttribute("height",null!==(n=e.getAttribute("height"))&&void 0!==n?n:"1rem"),r.appendChild(e),r}function Dt(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","image");return n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",null!=t?t:"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E"),n.setAttribute("width",e),n.setAttribute("height",e),n}const Ot="shopar-three-output";var Nt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Nt||(Nt={}));let _t=!1;function jt(){_t||(!function(){try{const e=document.createElement("style"),t=process.env.css;null!=t&&(e.innerHTML=t);const n=document.head;n.insertBefore(e,n.children[0])}catch(e){console.warn("Failed to write default ShopAR Plugin CSS.")}}(),_t=!0)}function Ft(){jt();const e=function(){const e=document.createElement("div");e.id=Lt;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),r=function(e,t){const n=document.createElement("div");n.id=Ut;const r=n.style;r.position="absolute",r.top="0",r.left="0",r.width="100%",r.height="100%",r.display="none",r.pointerEvents="auto",r.userSelect="none";const o=document.createElement("div");o.className="shopar-qr";const i=o.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(o),o.appendChild(e);const a=document.createElement("div");return a.appendChild(t),o.appendChild(a),n}(t,n);e.appendChild(r);const o=function(){const e=document.createElement("div");e.id=Tt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(o);const i=function(){const e=document.createElement("canvas");e.id=Ot,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:r}=n;return r.position="absolute",r.width="100%",r.height="100%",r.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=$t(Dt("2rem",`${M}/img/prompt/3d-interaction.svg`)),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=Ct("shopar-ar-loading-container"),h=Pt("shopar-ar-loading-text",St("loading.ar"));d.appendChild(h);const p=It("shopar-ar-loading-bar-bg"),f=kt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=Ct("shopar-3d-loading-container"),g=Pt("shopar-3d-loading-text",St("loading.3d"));m.appendChild(g);const v=It("shopar-3d-loading-bar-bg"),w=kt("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",t.backgroundSize="contain",t.backgroundRepeat="no-repeat",t.backgroundPosition="center",e}();e.appendChild(y);const b=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),E=function(e){const t=document.createElement("div");t.id=Mt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const r=document.createElement("div"),o=r.style;return o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",t.appendChild(r),r.appendChild(e),t}(b);e.appendChild(E);const A=function(){const e=document.createElement("div");return e.id=xt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(A);const S=Dt("1.75rem"),R=Rt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",$t(S));A.appendChild(R);const x=Dt("1.75rem"),T=Rt("shopar-btn-3d","3D","Launch ShopAR 3D preview",$t(x));A.appendChild(T);const C=Dt("1.75rem"),P=Rt("shopar-btn-close","Close","Close ShopAR view",$t(C));A.append(P);let I,k,L=Nt.None,U=!1,$=!1,D=!1,O=!1;function N(){f.classList.remove("active"),d.style.visibility="hidden"}function _(){y.style.visibility="hidden",w.classList.remove("active"),m.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return r},getQRImage:function(){return n},getDeepARTarget:function(){return o},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){b.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,r,o,i){var a;U=e,$=t,D=n,O=r,I=o,k=i,Wt(A,U),Wt(R,U&&(D||$)&&L===Nt.None),Wt(T,U&&O&&L===Nt.None),Wt(P,U&&L!==Nt.None),N(),_(),U||""===(a=E).style.display&&Wt(a,!1)},getUIState:function(){return L},setUIState:function(e){L=e,L===Nt.None?(N(),_(),U&&(Wt(E,!1),Wt(P,!1),($||D)&&Wt(R,!0),O&&Wt(T,!0))):L===Nt.QR||L===Nt.AR?U&&(Wt(E,!1),Wt(R,!1),Wt(T,O&&"AR"===k),Wt(P,"AR"!==k)):L===Nt.Preview&&U&&(Wt(E,!1),Wt(R,($||D)&&"3D"===k),Wt(T,!1),Wt(P,"3D"!==k))},setDefaultUIActions:function(e,t,n){U&&(($||D)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,r=`${M}/img/icons/${n}`;S.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(I),R.onclick=e),O&&(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/cube.svg`),T.onclick=t),C.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${M}/img/icons/close.svg`),P.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:N,startThreeLoading:function(){null!=y.dataset.bgSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:_,setThreePosterUrl:function(e){null!=e?(y.style.backgroundImage=`url(${e})`,y.dataset.bgSet="true"):delete y.dataset.bgSet},showCameraError:function(){U&&Wt(E,!0)}}}function Wt(e,t){e.style.display=t?"":"none"}const qt=new Map;function Gt(e){let t=qt.get(e);return null==t?(t=function(){let e=0,t=null,n=null,r=null;const o=()=>(null==t&&(t=Ft()),t);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>t,findUI:o,findQR:()=>{if(null==n){const{getQRTarget:e,getQRImage:t}=o();n=T(e(),t())}return n},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=o();r=gt(e(),t(),n())}return r}}}(),qt.set(e,t)):t.incrementSetupId_(),t}function zt(e){for(const t of qt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===Nt.AR&&o(Nt.None)}}let Bt;const Qt=new Uint8Array(16);function Vt(){if(!Bt&&(Bt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Bt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Bt(Qt)}const Ht=[];for(let e=0;e<256;++e)Ht.push((e+256).toString(16).slice(1));var Kt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Xt(e,t,n){if(Kt.randomUUID&&!t&&!e)return Kt.randomUUID();const r=(e=e||{}).random||(e.rng||Vt)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return Ht[e[t+0]]+Ht[e[t+1]]+Ht[e[t+2]]+Ht[e[t+3]]+"-"+Ht[e[t+4]]+Ht[e[t+5]]+"-"+Ht[e[t+6]]+Ht[e[t+7]]+"-"+Ht[e[t+8]]+Ht[e[t+9]]+"-"+Ht[e[t+10]]+Ht[e[t+11]]+Ht[e[t+12]]+Ht[e[t+13]]+Ht[e[t+14]]+Ht[e[t+15]]}(r)}const Zt="qrLaunch",Yt="arLaunch",Jt="previewLaunch",en="heartbeat";let tn,nn,rn=!1,on=window.navigator.userAgent||"no user agent";const an=[];function sn(){null==tn&&(nn=Xt(),tn=R(`${M}/shopar-analytics.js`),tn.then((()=>{rn=!0,window.ShopAR__analytics.initializeImpl(),an.forEach((e=>e()))})))}function ln(e){rn?e():an.push(e)}function cn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function un(t){return e(this,void 0,void 0,(function*(){const e=document.createElement("video");return e.setAttribute("playsinline","playsinline"),e.srcObject=yield t,e}))}const dn=200,hn=10;let pn=!1,fn=null,mn=[],gn=[];function vn(t){return e(this,void 0,void 0,(function*(){pn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${M}/wasm/mediapipe`,t),fn&&clearInterval(fn);const r=[],o=[];fn=setInterval((()=>e(this,void 0,void 0,(function*(){if(pn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());pn||(null!=a&&null!=s&&function(e){for(let t of mn)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<hn||(r.shift(),o.shift(),function(e,t){for(let n of gn)n({faceWidth:e,IPD:t})}(yn(r),yn(o)))))}))),dn)}))}function wn(){gn=[],mn=[],pn=!0}function yn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var bn="undefined"!=typeof Float32Array?Float32Array:Array;function En(){var e=new bn(16);return bn!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function An(e,t,n){var r=t[0],o=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],g=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*r+b*s+E*d+A*m,e[1]=y*o+b*l+E*h+A*g,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*r+b*s+E*d+A*m,e[5]=y*o+b*l+E*h+A*g,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*r+b*s+E*d+A*m,e[9]=y*o+b*l+E*h+A*g,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*r+b*s+E*d+A*m,e[13]=y*o+b*l+E*h+A*g,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Sn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Mn(e,t){var n=t[0],r=t[1],o=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,r,o),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function Rn(e,t,n,r){var o=t[0],i=t[1],a=t[2],s=t[3],l=o+o,c=i+i,u=a+a,d=o*l,h=o*c,p=o*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=r[0],E=r[1],A=r[2];return e[0]=(1-(f+g))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+g))*E,e[6]=(m+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(m-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function xn(){var e=new bn(3);return bn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Tn(e,t,n){var r=new bn(3);return r[0]=e,r[1]=t,r[2]=n,r}function Cn(e,t){var n=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return Math.hypot(n,r,o)}function Pn(e,t,n){var r=t[0],o=t[1],i=t[2],a=n[3]*r+n[7]*o+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*r+n[4]*o+n[8]*i+n[12])/a,e[1]=(n[1]*r+n[5]*o+n[9]*i+n[13])/a,e[2]=(n[2]*r+n[6]*o+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function In(){var e=new bn(4);return bn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}xn(),function(){var e,t=(e=new bn(4),bn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var kn;let Ln,Un;xn(),Tn(1,0,0),Tn(0,1,0),In(),In(),kn=new bn(9),bn!=Float32Array&&(kn[1]=0,kn[2]=0,kn[3]=0,kn[5]=0,kn[6]=0,kn[7]=0),kn[0]=1,kn[4]=1,kn[8]=1;let $n,Dn,On,Nn,_n=!0,jn=null;const Fn=new Set;let Wn,qn,Gn,zn,Bn,Qn;function Vn(){null==Ln&&(Ln=R(`${M}/shopar-deepar.js`))}function Hn(){null==Un&&(Un=R(`${M}/shopar-true-scale.js`))}function Kn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return Bn=o,null==Wn&&(Wn=(()=>e(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new t("No camera available!");var e;const n=or(On),o=cn(n);$n=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:Nn,additionalOptions:{hint:Qn,cameraConfig:{disableDefaultCamera:!0}}}),Dn=yield un(o),yield ir($n,Dn,"user"===n),"Glasses"===On&&(yield Un,vn(Dn),"DetectionLoop"!==Bn&&cr((e=>{zn=e.faceWidth})))})))()),Wn}))}function Xn(e,t){var n,r;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===On&&(n=t,r=Qn,n===r||null!=n&&null!=r&&n.length===r.length&&n.every((e=>r.find((t=>e===t))))&&r.every((e=>n.find((t=>t===e))))))||(null!=$n&&($n.shutdown(),$n=null,Wn=null),On=e,Qn=t)}function Zn(e){e!==Nn&&(Nn=e,null!=$n&&$n.changePreviewElement(Nn))}function Yn(e){jn=e}function Jn(e){$n.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(zn){const e=137/(zn+5);$n.changeParameterVector("GLASSES","","scale",e,e,e,0),$n.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const r=sr("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=sr("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);$n.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),$n.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),wn(),zn=null}e(),ar("Glasses")}},$n.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),ar("Shoes"))},$n.callbacks.onWristTracked=t=>{t.detected&&(e(),ar("Watches"))}}function er(t,n,r){return e(this,void 0,void 0,(function*(){return null!=qn&&Gn===r||(yield qn,qn=$n.switchEffect(t,{envmap:n}),Gn=r),qn}))}function tr(e,t){null!=e&&null!=t&&($n.setToneMapping(e),$n.setExposure(t))}function nr(){return e(this,void 0,void 0,(function*(){if(null!=$n){if(_n=!1,null==Dn){const e=or(On),t=cn(e);Dn=yield un(t),yield ir($n,Dn,"user"===e),"Glasses"===On&&(vn(Dn),"DetectionLoop"!==Bn&&cr((e=>{zn=e.faceWidth})))}!function(){if(null==jn)return;if(null==On||Fn.has(On))return;jn.style.visibility="visible",jn.style.opacity="1"}(),$n.setPaused(_n),Nn.style.display=""}}))}function rr(){null!=$n&&(_n=!0,$n.setPaused(_n),wn(),null!=Dn&&null!=Dn.srcObject&&Dn.srcObject instanceof MediaStream&&(Dn.srcObject.getTracks().forEach((e=>e.stop())),Dn=null),function(){if(null==jn)return;jn.style.visibility="hidden",jn.style.opacity="0"}(),$n.stopCamera(),Nn.style.display="none")}function or(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function ir(t,n,r){return e(this,void 0,void 0,(function*(){yield new Promise((o=>{n.onloadedmetadata=()=>{n.play().then((()=>e(this,void 0,void 0,(function*(){t.setVideoElement(n,r),o()}))))}}))}))}function ar(e){null!=jn&&(Fn.has(e)||(Fn.add(e),jn.style.opacity="0"))}function sr(e,t,n,r,o,i,a){const s=$n.getTransformationBetween(e,t),l=Sn(xn(),s),c=function(e,t){var n=new bn(3);Mn(n,t);var r=1/n[0],o=1/n[1],i=1/n[2],a=t[0]*r,s=t[1]*o,l=t[2]*i,c=t[4]*r,u=t[5]*o,d=t[6]*i,h=t[8]*r,p=t[9]*o,f=t[10]*i,m=a+u+f,g=0;return m>0?(g=2*Math.sqrt(m+1),e[3]=.25*g,e[0]=(d-p)/g,e[1]=(h-l)/g,e[2]=(s-c)/g):a>u&&a>f?(g=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/g,e[0]=.25*g,e[1]=(s+c)/g,e[2]=(h+l)/g):u>f?(g=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/g,e[0]=(s+c)/g,e[1]=.25*g,e[2]=(d+p)/g):(g=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/g,e[0]=(h+l)/g,e[1]=(d+p)/g,e[2]=.25*g),e}(In(),s);Rn(s,c,l,Tn(a,a,a));const u=$n.getTransformationBetween(t,n),d=Sn(xn(),u);Rn(u,In(),d,Mn(xn(),u));const h=An(En(),s,u),p=Sn(xn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=$n.getTransformationBetween(n,r)}catch(e){return f}const g=An(En(),u,m),v=An(En(),s,g),w=Tn(p[0],i[1],i[2]),y=Pn(xn(),w,function(e,t){var n=t[0],r=t[1],o=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-r*a,y=n*l-o*a,b=n*c-i*a,E=r*l-o*s,A=r*c-i*s,S=o*c-i*l,M=u*m-d*f,R=u*g-h*f,x=u*v-p*f,T=d*g-h*m,C=d*v-p*m,P=h*v-p*g,I=w*P-y*C+b*T+E*x-A*R+S*M;return I?(I=1/I,e[0]=(s*P-l*C+c*T)*I,e[1]=(o*C-r*P-i*T)*I,e[2]=(m*S-g*A+v*E)*I,e[3]=(h*A-d*S-p*E)*I,e[4]=(l*x-a*P-c*R)*I,e[5]=(n*P-o*x+i*R)*I,e[6]=(g*b-f*S-v*y)*I,e[7]=(u*S-h*b+p*y)*I,e[8]=(a*C-s*x+c*M)*I,e[9]=(r*x-n*C-i*M)*I,e[10]=(f*A-m*b+v*w)*I,e[11]=(d*b-u*A-p*w)*I,e[12]=(s*R-a*T-l*M)*I,e[13]=(n*T-r*R+o*M)*I,e[14]=(m*y-f*E-g*w)*I,e[15]=(u*E-d*y+h*w)*I,e):null}(En(),v));let b=$n.getClosestPointOnMesh(r,y);try{const e=$n.getClosestPointOnMesh(o,y);Cn(y,e)<Cn(y,b)&&(b=e)}catch(e){}const E=Pn(xn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function lr(e){!function(e){mn.push(e)}(e)}function cr(e){!function(e){gn.push(e)}(e)}var ur;function dr(){return[ur.Android,ur.iOS,ur.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],r=["Win32","Win64","Windows","WinCE"],o=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==o.indexOf(t)?ur.iOS:-1!==n.indexOf(t)?i?ur.Tablet:ur.MacOS:-1!==r.indexOf(t)?ur.Windows:/Android/.test(e)?ur.Android:/Linux/.test(t)?ur.Linux:i?ur.Tablet:ur.Unknown}return ur.Unknown}())}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(ur||(ur={}));const hr=["AR","3D"];function pr(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function fr(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function mr(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function gr(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;pr(n,"apiKey"),mr(n,"apiKey"),pr(r,"sku"),mr(r,"sku"),pr(o,"targetElement"),function(e,n){if(!(e instanceof HTMLElement))throw new t(`'${n}' must be an HTMLElement.`)}(o,"targetElement"),null!=i&&function(e,n,r){if("string"!=typeof e)throw new t(`'${n}' must be a string.`);if(!r.includes(e))throw new t(`'${n}' must be ${r.join("' or '")}.`)}(i,"initialState",hr),null!=a&&function(e,n){if("string"!=typeof e&&!Array.isArray(e))throw new t(`'${n}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&mr(s,"baseUrl"),null!=l&&fr(l,"defaultUI"),null!=c&&fr(c,"interactive"),null!=u&&function(e,n,r){for(const o of r){const r=e[o];if(null!=r&&"string"!=typeof r)throw new t(`Value for key '${o}' in '${n}' must be a string.`)}}(u,"strings",At)}let vr=!1;function wr(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;M.update(n.baseUrl),sn();const{trackEvent:o}=function(e){const t=performance.now(),n=Xt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:A,userAgent:on,sessionId:nn,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),ln((()=>{window.ShopAR__analytics.trackEventImpl(r,o)}))}}}(n.apiKey);o("visionSetup");const i=yield function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:n,sid:u()})}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield r.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(n.apiKey);o("visionApiResponse",i);const{arKey:a}=i,s=Gt(r),{getSetupId:l,findUI:c}=s,d=l();Vn(),Hn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=Nt.None)throw Error("UI state is not None, this is weird..");v(Nt.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield Ln,yr(l(),d);try{o("visionArLaunch"),rr(),Xn("Glasses",["faceInit"]),Zn(f()),yield Kn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),yr(l(),d),yield nr(),yr(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),b(),rr(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{y()}return vr=!0,{registerFacePoseListener:e=>{vr&&(o("registerFacePoseListener"),lr(e))},registerFaceMeasurementListener:e=>{vr&&(o("registerFaceMeasurementListener"),cr(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){vr&&(o("switchEffect",{arUrl:t}),function(e){$n.switchEffect(e)}(t))})),clearEffect:()=>{vr&&(o("clearEffect"),$n.clearEffect())},close:()=>{if(vr){if(vr=!1,o("visionClose"),g()!==Nt.AR)throw new t("AR not launched.");rr(),v(Nt.None)}}}}))}function yr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function br(n){var r,o;return e(this,void 0,void 0,(function*(){gr(n);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=n,d=null==n.zoomEnabled||n.zoomEnabled,h=!0===n.alwaysTransparentBackground;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),M.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(Et,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(Et[t]=n)}}(n.strings);const w=null!=c?Re(c):null,y=null!=(null==w?void 0:w.theta)?le(w.theta):null,S=null!=(null==w?void 0:w.phi)?le(w.phi):null,R=null!=(null==w?void 0:w.fov)?le(w.fov):null,x=function(n,r,o,i,a,s){return e(this,void 0,void 0,(function*(){const l=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:n,sku:r,sid:u()},null!=o&&{yaw:`${m(f(o))}`}),null!=i&&{pitch:`${m(f(i))}`}),null!=a&&{fov:`${m(f(a))}`}),s&&{forcedTransparency:`${s}`}))}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield l.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==S?void 0:S.get(),null==R?void 0:R.get(),h),T=Gt(s),{getSetupId:C,findUI:P,findQR:I,findThree:k}=T,L=C();sn();const{trackEvent:U,arInteracted:$,previewInteracted:D}=function(e,t){const n=performance.now(),r=Xt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(en,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:on,pluginVersion:A,sessionId:nn,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),ln((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);U("setup",{hostname:window.location.hostname});const O=yield x;U("apiResponse",O);const{category:N,arUrl:_,arEnvUrl:j,arToneMapping:F,arToneMappingExposure:W,arKey:q,arPromptEnabled:G,arPromptText:z,arPromptImage:B,previewUrl:Q,previewEnvUrl:V,previewToneMapping:H,previewToneMappingExposure:K,previewPosterUrl:X,cameraErrorText:Z,qrPromptText:Y}=O;Er(C(),L);const J=null!=_&&function(e){return null!=e&&g.includes(e)}(N),ee=null==(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled),te=J&&function(e){return null!=e&&v.includes(e)}(N),ne=ee&&te&&!dr(),re=J&&!ne,oe=null!=Q;Er(C(),L);const{setTargetElement:ie,getDeepARTarget:ae,getDeepARPrompt:se,customizeDeepARPrompt:ce,customizeCameraError:ue,customizeQRPrompt:de,setVisibilityParameters:he,getUIState:pe,setUIState:fe,setDefaultUIActions:me,startDeepARLoading:ge,stopDeepARLoading:ve,startThreeLoading:we,stopThreeLoading:ye,setThreePosterUrl:be,showCameraError:Ee}=P();ie(s);he(null==n.defaultUI||n.defaultUI,ne,re,oe,N,l),ce(null!=z?z:"",null!=B?B:""),ue(Z),de(Y),be(X),function(e,n){const r=e.parentNode;if(null==r)throw new t("Parent node missing.");new MutationObserver((t=>{for(const r of t)for(const t of r.removedNodes)if(t===e)return void n()})).observe(r,{childList:!0})}(s,(()=>{pe()!==Nt.QR||Ae()||Me(),pe()!==Nt.AR||_n||rr(),pe()!==Nt.Preview||Pe()||ke(),fe(Nt.None),Le(),function(e){qt.delete(e)}(s)}));const{qrPaused:Ae,qrDraw:Se,qrPause:Me}=I(),{threeInit:xe,threeParse:Te,threeLoad:Ce,threePaused:Pe,threeResume:Ie,threePause:ke,threeDestroy:Le,threeSetZoomEnabled:Ue,threeSetForcedTransparency:$e,threeSetToneMapping:De,threeIsInteractive:Oe,threeSetInteractive:Ne,threeSetOnInteracted:_e,threeInitPromptAnimation:je,threeInitThetaAnimation:Fe,threeInitPhiAnimation:We,threeInitFovAnimation:qe,threeRenderOnce:Ge}=k(),ze=null==n.interactive||n.interactive;Ne(ze);let Be=0;if(pe()===Nt.QR){if(!Ae())if(ne){U(Zt);try{yield Se(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Me(),fe(Nt.None)}else if(pe()===Nt.AR){if(!_n)if(re&&!vr){U(Yt),Vn(),"Glasses"===N&&Hn();const e=null!=j?yield b(j):void 0;Er(C(),L);const t=yield b(_);Er(C(),L),zt(T),Xn(N),Zn(ae()),Yn(G?se():null),yield er(t,e,`${_}${j}`),tr(F,W),Jn($),Er(C(),L)}else rr(),fe(Nt.None)}else if(pe()===Nt.Preview&&!Pe())if(oe){U(Jt),mt(),we();const e=255,t=yield E(Q,(new Date).getTime()+e,Math.random()*e);Er(C(),L);const n=yield b(null!=V?V:`${M}/env/default.hdr`);Er(C(),L),yield nt,Er(C(),L),xe(),Er(C(),L);const r=yield Te(t,n,`${Q}${V}`);Er(C(),L),Ce(r,N),Ue(d),$e(h),De(null!=H?H:"ACES",null!=K?K:1),_e(D),je(),null!=w&&(Fe(y),We(S),qe(R)),Ge(),Ie(),ye()}else ke(),fe(Nt.None);const Qe=()=>e(this,void 0,void 0,(function*(){if(ne)try{U(Zt);const e=++Be;if(pe()===Nt.Preview&&oe&&!Pe()&&ke(),fe(Nt.QR),yield Se(i,a),Be!==e)return;return void Er(C(),L)}catch(e){const n=e instanceof Error;throw U("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}if(!re)throw new t("Model does not have AR enabled.");try{U(Yt);const e=++Be;pe()===Nt.Preview&&oe&&!Pe()&&ke(),zt(T),fe(Nt.AR),Vn(),"Glasses"===N&&Hn(),ge();const t=null!=j?yield b(j):void 0;Er(C(),L);const n=yield b(_);if(Be!==e)return;if(Er(C(),L),yield Ln,Be!==e)return;if(Er(C(),L),rr(),Xn(N),Zn(ae()),Yn(G?se():null),yield Kn({licenseKey:q}),Be!==e)return;if(Er(C(),L),yield er(n,t,`${_}${j}`),tr(F,W),Jn($),Be!==e)return;if(Er(C(),L),yield nr(),Be!==e)return;Er(C(),L)}catch(e){const n=e instanceof Error;throw U("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Ee(),rr(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ve()}})),Ve=()=>e(this,void 0,void 0,(function*(){if(!oe)throw new t("Model does not have 3D enabled.");try{U(Jt);const e=++Be;pe()===Nt.AR&&(re&&!_n&&rr(),Me()),fe(Nt.Preview),mt(),we();const t=255,n=yield E(Q,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;Er(C(),L);const r=yield b(null!=V?V:`${M}/env/default.hdr`);if(Be!==e)return;if(Er(C(),L),yield nt,Be!==e)return;if(Er(C(),L),xe(),Be!==e)return;Er(C(),L);const o=yield Te(n,r,`${Q}${V}`);if(Be!==e)return;Er(C(),L),Ce(o,N),Ue(d),$e(h),De(null!=H?H:"ACES",null!=K?K:1),_e(D),je(),null!=w&&(Fe(y),We(S),qe(R)),Ge(),Ie(),ye()}catch(e){const n=e instanceof Error;throw U("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}})),He=()=>e(this,void 0,void 0,(function*(){pe()!==Nt.None&&("AR"!==l||pe()!==Nt.AR&&pe()!==Nt.QR)&&("3D"===l&&pe()===Nt.Preview||(++Be,pe()===Nt.QR||pe()===Nt.AR?(re&&!_n&&rr(),Me()):pe()===Nt.Preview&&oe&&!Pe()&&ke(),fe(Nt.None),"AR"!==l?"3D"!==l||(yield Ve()):yield Qe()))}));return me(Qe,Ve,He),"AR"===l?(yield Qe(),Er(C(),L)):"3D"===l&&(yield Ve(),Er(C(),L)),vr=!1,{launchAR:J?Qe:void 0,launch3D:oe?Ve:void 0,closeAR:J?()=>e(this,void 0,void 0,(function*(){pe()!==Nt.AR&&pe()!==Nt.QR||"AR"!==l&&(++Be,re&&!_n&&rr(),Me(),fe(Nt.None),"3D"!==l||(yield Ve()))})):void 0,close3D:oe?()=>e(this,void 0,void 0,(function*(){pe()===Nt.Preview&&"3D"!==l&&(++Be,oe&&!Pe()&&ke(),fe(Nt.None),"AR"!==l||(yield Qe()))})):void 0,close:J||oe?He:void 0,isInteractive:()=>Oe(),setInteractive:e=>Ne(e)}}))}function Er(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const Ar={setup:function(t){return e(this,void 0,void 0,(function*(){return wr(t)}))}},Sr={setup:function(n){return e(this,void 0,void 0,(function*(){return function(n,r){return e(this,void 0,void 0,(function*(){try{return r()}catch(e){throw e instanceof Error?new t(`${n} failed: ${e.message}`):(console.error(e),new t(`${n} failed.`))}}))}("setup",(()=>br(n)))}))},version:A};export{hr as PREVIEW_STATES,t as PluginError,Sr as plugin,Ar as vision};
|
package/dist/shopar-plugin.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ShopAR={})}(this,(function(e){"use strict";function t(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class n extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const r=[Uint8Array,Uint32Array],o=r.length-2,i=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],a=[2,12,7,1],s=window[i[a[a[o]]]][i[a[a[a.length-1]]]],l=s.charCodeAt(o),c=l^l,u=new r[1]([c]);function d(){const e=(new TextEncoder).encode(s),t=i.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[i[t[2]]](String.fromCodePoint(...e))}const h=[1e3,2e3,4e3],p=h.length;function f(e,n=0){return t(this,void 0,void 0,(function*(){try{return yield e()}catch(t){if(n>=p)throw t;return yield new Promise((e=>setTimeout(e,h[n]))),f(e,n+1)}}))}function m(e){return e*(180/Math.PI)}function g(e){return Math.round(100*e)/100}const v=["Glasses","Shoes","Watches"],w=["Shoes"];const y={},b={};function E(e){return null==y[e]&&(y[e]=function(e){return t(this,void 0,void 0,(function*(){const r=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(e).catch((e=>{throw console.error(e),new n("Resource unavailable.")}));if(!t.ok)throw new n(`Resource download failed with status ${t.status}.`);return t}))));try{return yield(yield r.blob()).arrayBuffer()}catch(e){throw console.error(e),new n("Resource has invalid body.")}}))}(e)),y[e]}function A(e,o,i){return null==b[e]&&(b[e]=function(e,o,i){return t(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const l=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),m=window[`${h}${d+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],g=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield m(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new r[0](yield(yield g.blob().catch((()=>{throw new n("Unknown error.")}))).arrayBuffer().catch((()=>{throw new n("Unknown error.")})));i+=s;const w=v.byteLength;if(u[c]=Math.min(76,o)*((a>>5)-1),152===u[c]&&(u[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)u[c]^=u[i]<<13,u[c]^=u[i]>>17,u[c]^=u[i]<<5,v[e]=v[e]^u[c];return i^=u[0],i^=u[1],i^=u[2],v}))}(e,o,i)),b[e]}const S="0.7.3-alpha.9";let M=`https://cdn.jsdelivr.net/npm/shopar-plugin@${S}/dist`;const R={update:e=>{null!=e&&(M=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>M};function x(e){return t(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const t=document.createElement("script");return t.setAttribute("src",e),t.setAttribute("crossorigin","anonymous"),new Promise((e=>{t.addEventListener("load",(()=>e()),!1),t.addEventListener("error",(()=>e()),!1),document.body.appendChild(t)}))}importScripts(e.toString())}))}let T;const P=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let C,I,k,L=!1;let $=!1;function U(e){const t=function(e){const t=new I.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,I.ClampToEdgeWrapping,I.ClampToEdgeWrapping,I.LinearFilter,I.LinearFilter,1,I.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(k.parse(e));return t.mapping=I.EquirectangularReflectionMapping,t.colorSpace=I.LinearSRGBColorSpace,t}const D=45,O=45,_=3,N=1.5,j=1,W=.5;let F,q,G,z,B,V=!1;const Q=4,K=.001,H=1e-7,X=10,Z=11,Y=1/(Z-1),J="function"==typeof Float32Array;function ee(e,t,n,r){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===r)return ae;const o=J?new Float32Array(Z):new Array(Z);for(let t=0;t<Z;++t)o[t]=oe(t*Y,e,n);function i(t){let r=0,i=1;const a=Z-1;for(;i!==a&&o[i]<=t;++i)r+=Y;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*Y,l=ie(s,e,n);return l>=K?function(e,t,n,r){for(let o=0;o<Q;++o){const o=ie(t,n,r);if(0===o)return t;t-=(oe(t,n,r)-e)/o}return t}(t,s,e,n):0===l?s:function(e,t,n,r,o){let i,a,s=0;do{a=t+(n-t)/2,i=oe(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>H&&++s<X);return a}(t,r,r+Y,e,n)}return function(e){return 0===e||1===e?e:oe(i(e),t,r)}}function te(e,t){return 1-3*t+3*e}function ne(e,t){return 3*t-6*e}function re(e){return 3*e}function oe(e,t,n){return((te(t,n)*e+ne(t,n))*e+re(t))*e}function ie(e,t,n){return 3*te(t,n)*e*e+2*ne(t,n)*e+re(t)}function ae(e){return e}function se(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=ee(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function le(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:se(n)})));let r=0,o=n[0].value;return{reset:()=>{r=0},update:e=>{for(r+=e;r>=t;)r-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(r>=t.time&&r<i.time){const e=t.interpolate((r-t.time)/(i.time-t.time));o=t.value+e*(i.value-t.value)}}},get:()=>o}}const ce="#",ue="time",de="interpolation",he="yaw",pe="pitch",fe="fov",me=[ue,he,pe,fe,de],ge="s",ve="ms",we=1e3,ye="deg",be="rad",Ee=Math.PI/180,Ae="ease-in-out",Se="cubic-bezier(",Me=")";function Re(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(ce);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(!me.includes(r))throw new Error(`Invalid token in header: '${r}'.`);if(t.includes(r))throw new Error(`Duplicate token in header: '${r}'.`);t.push(r)}if(!t.includes(ue))throw new Error(`Missing required token: '${ue}'.`);return t}(t.split(/\s+/)),o={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=xe(r,e);null!=t&&(null==o.theta&&(o.theta=[]),o.theta.push(t)),null!=n&&(null==o.phi&&(o.phi=[]),o.phi.push(n)),null!=i&&(null==o.fov&&(o.fov=[]),o.fov.push(i))}if(0===Object.values(o).length)throw new Error("At least one parameter should be animated.");return o}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const r of e){const{time:e,pitch:o,yaw:i,fov:a}=r;if(null==e)throw new Error("Time missing.");const s=Pe(null!==(t=r.interpolation)&&void 0!==t?t:Ae);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*Ee,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*Ee,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*Ee,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function xe(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const r=e.indexOf(ue),o=function(e){if(e.endsWith(ve))return Ie(e.substring(0,e.length-ve.length));if(e.endsWith(ge))return Ie(e.substring(0,e.length-ge.length))*we;return Ie(e)}(n[r]),i=e.indexOf(de),a=Pe(-1===i?Ae:n[i]),s={};for(let t=0;t<n.length;t++){if(t===r||t===i)continue;const l=e[t],c=n[t];switch(l){case he:s.theta={time:o,value:Te(c),interpolation:a};break;case pe:s.phi={time:o,value:Te(c),interpolation:a};break;case fe:s.fov={time:o,value:Te(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Te(e){return e.endsWith(ye)?Ie(e.substring(0,e.length-ye.length))*Ee:e.endsWith(be)?Ie(e.substring(0,e.length-be.length)):Ie(e)*Ee}function Pe(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ce(0,0,1,1);if("sine"===e)return Ce(.37,0,.63,1);if("sine-in"===e)return Ce(.12,0,.39,0);if("sine-out"===e)return Ce(.61,1,.88,1);if("ease"===e)return Ce(.25,.1,.25,1);if("ease-in"===e)return Ce(.42,0,1,1);if("ease-out"===e)return Ce(0,0,.58,1);if("ease-in-out"===e)return Ce(.42,0,.58,1);if(e.startsWith(Se)&&e.endsWith(Me)){const t=e.substring(Se.length,e.length-Me.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Ie(t[0]),y1:Ie(t[1]),x2:Ie(t[2]),y2:Ie(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ce(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Ie(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const ke=300,Le=2e3,$e=.05,Ue=2*Math.PI/32,De=Pe("hold"),Oe=Pe("sine"),_e=Pe("sine-in"),Ne=Pe("sine-out");const je=8,We=2*Math.PI,Fe=We/12,qe=We/60,Ge=We/60,ze=60,Be=60,Ve=1e3,Qe=ze*Be,Ke=-1;const He=["map","alphaMap","anisotropyMap","aoMap","bumpMap","clearcoatMap","clearcoatNormalMap","clearcoatRoughnessMap","displacementMap","emissiveMap","envMap","gradientMap","iridescenceMap","iridescenceThicknessMap","lightMap","metalnessMap","normalMap","roughnessMap","sheenColorMap","sheenRoughnessMap","specularMap","specularColorMap","specularIntensityMap","thicknessMap","transmissionMap"];function Xe(e){null!=e&&(e.dispose(),He.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let Ze;const Ye=0,Je=3;let et,tt,nt,rt=!1,ot=1,it=1,at=1;const st=1;let lt;const ct=new Map;function ut(e,n,r){const o=e.getContext("2d");null==o&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,R=1,x=!0,T=!1,P=0,j=0,V=1,Q=1,K=1;const H={threeInit:()=>{b||(dt(),i=new tt.Scene,a=new tt.PerspectiveCamera(25,1,.5),s=new et.OrbitControls(a,e),s.setInteractionEnabled(x),h=tt.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new F.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new F.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new F.Group;r.position.y=-.7;const o=new F.PlaneGeometry(D,O).rotateX(Math.PI/2),i=new F.MeshBasicMaterial({map:t.texture,opacity:W,transparent:!0,depthWrite:!1}),a=new F.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new F.Mesh(o);s.visible=!1,r.add(s);const l=new F.OrthographicCamera(-D/2,D/2,O/2,-O/2,0,_);function c(e){s.visible=!0,z.uniforms.tDiffuse.value=t.texture,z.uniforms.h.value=1*e/256,s.material=z,q.setRenderTarget(n),q.render(s,l),B.uniforms.tDiffuse.value=n.texture,B.uniforms.v.value=1*e/256,s.material=B,q.setRenderTarget(t),q.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,r.add(l),{shadowGroup:r,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=G;const r=q.getClearAlpha();q.setClearAlpha(0),q.setRenderTarget(t),q.render(e,l),e.overrideMaterial=null,c(N),c(.4*N),q.setRenderTarget(null),q.setClearAlpha(r),e.background=n}}}(i)),b=!0)},threeParse:(e,n,r)=>t(this,void 0,void 0,(function*(){return null!=u&&d===r||(yield u,u=(()=>t(this,void 0,void 0,(function*(){var t,r,o;return r=et,$||(I=r.THREE,k=new r.RGBELoader,$=!0),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=U(n),function(e,t){if(L)return;const{THREE:n}=t;C=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder),L=!0}(lt,et),o=e,C.parseAsync(o.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{ft(i),i.add(e.scene);const n=(new tt.Box3).setFromObject(e.scene);l.position.y=n.min.y-Ye,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof tt.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const r=n.min.clone().add(n.max).divideScalar(2),o=Math.sqrt(et.reduceVertices(e.scene,((e,t)=>Math.max(e,r.distanceToSquared(t))),0));s.reset(r,o,function(e,t){var n;const r={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?r.Glasses:null!==(n=r[e])&&void 0!==n?n:r.Glasses).normalize()}(t,tt.Vector3)),P=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),r=e.getObjectByName("seconds");if(null==t&&null==n&&null==r)return null;let o=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-o.getTime())<Ve/je)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=Ke*Fe*(i+a/ze+s/Qe)),null!=n&&(n.rotation.y=Ke*qe*(a+s/Be)),null!=r&&(r.rotation.y=Ke*Ge*(s+l/Ve)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,lt.setAnimationLoop(ht),e.style.visibility="visible",j=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of ct.values())if(!e())return!1;return!0}()&<.setAnimationLoop(null),e.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var t;ft(i),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=null,i=null,u=null,y=null,ct.delete(e)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:tt.ACESFilmicToneMapping,Linear:tt.LinearToneMapping,Neutral:tt.NeutralToneMapping};null!=n[e]&&(h=n[e]),R=t},threeIsInteractive:()=>x,threeSetInteractive:e=>{x=e,null==s||s.setInteractionEnabled(x)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=le([{time:0,value:e,interpolation:De},{time:ke,value:e,interpolation:Ne},{time:ke+Le/4,value:e+Ue,interpolation:Oe},{time:ke+3*Le/4,value:e-Ue,interpolation:_e},{time:ke+Le,value:e,interpolation:De},{time:ke+2*Le,value:e,interpolation:De}]),s.setTheta(f.get()),m=null,g=null,v=le([{time:0,value:0,interpolation:De},{time:ke,value:1,interpolation:De},{time:ke+Le,value:0,interpolation:De},{time:ke+2*Le,value:0,interpolation:De}]),w=le([{time:0,value:0,interpolation:De},{time:ke,value:0,interpolation:Ne},{time:ke+Le/4,value:-$e,interpolation:Oe},{time:ke+3*Le/4,value:$e,interpolation:_e},{time:ke+Le,value:0,interpolation:De},{time:ke+2*Le,value:0,interpolation:De}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{m=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{g=e,null!=e&&s.setFovRadians(e.get())},threeRenderOnce:()=>{H.render_()},preRender_:t=>{if(!b||S||!function(e){const t=e.getBoundingClientRect();return t.bottom>0&&t.top<Math.max(document.documentElement.clientHeight,window.innerHeight)&&t.right>0&&t.left<Math.max(document.documentElement.clientWidth,window.innerWidth)}(e))return;let n=0!==j?t-j:0;j=t,0===P?M=!0:P<Je&&(n=0),P++,T||(s.hasUserInteracted()?(T=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(n),null==m||m.update(n),null==g||g.update(n),null==v||v.update(n),null==w||w.update(n),null!=f&&(s.setTheta(f.get()),M=!0),null!=m&&(s.setPhi(m.get()),M=!0),null!=g&&(s.setFovRadians(g.get()),M=!0))),s.update()&&(M=!0),(null==y?void 0:y.update())&&(M=!0)},shouldRender_:()=>!(!b||S)&&M,render_:()=>{const t=lt.toneMapping,s=lt.toneMappingExposure;lt.toneMapping=h,lt.toneMappingExposure=R,lt.setViewport(0,0,e.width,e.height),lt.setClearColor(new tt.Color(16777215),E&&!A?1:0),lt.render(i,a),lt.toneMapping=t,lt.toneMappingExposure=s,M=!1,null!=o&&(o.clearRect(0,0,e.width,e.height),nt.width>0&&nt.height>0&&o.drawImage(nt,0,it-e.height,e.width,e.height,0,0,e.width,e.height),n.style.visibility=x&&!T?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(V,Q)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===V&&n===Q&&at===K||(e.width=Math.ceil(t*at*st),e.height=Math.ceil(n*at*st),V=t,Q=n,K=at,M=!0)},target_:e};return ct.set(e,H),H}function dt(){if(rt)return;et=window.ShopAR__THREE,tt=et.THREE,nt=document.createElement("canvas");var e,t;nt.style.position="block",lt=new tt.WebGLRenderer({powerPreference:"high-performance",canvas:nt,antialias:!0,alpha:!0}),lt.outputColorSpace=tt.SRGBColorSpace,lt.toneMapping=tt.ACESFilmicToneMapping,lt.setClearColor(new tt.Color(16777215),0),e=lt,t=et,V||(F=t.THREE,q=e,G=new F.MeshDepthMaterial,G.userData.darkness={value:j},G.onBeforeCompile=e=>{e.uniforms.darkness=G.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},G.depthTest=!1,G.depthWrite=!1,z=new F.ShaderMaterial(t.HorizontalBlurShader),z.depthTest=!1,B=new F.ShaderMaterial(t.VerticalBlurShader),B.depthTest=!1,V=!0),pt(),rt=!0}function ht(e){pt(),lt.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of ct.values())t(e),n()&&r()}function pt(){let e=0,t=0;for(const{target_:n}of ct.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=P();e=Math.ceil(e*n*st),t=Math.ceil(t*n*st),e===ot&&t===it&&n===at||(ot=e,it=t,at=n,lt.setSize(ot,it,!1));for(const{updateSize_:e}of ct.values())e()}function ft(e){e.traverse((e=>{var t;e instanceof tt.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(Xe):Xe(e.material))})),e.clear()}const mt={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},gt=Object.keys(mt);function vt(e){return mt[e]}const wt="shopar-error";function yt(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn",o.appendChild(r);{const e=document.createElement("span");e.textContent=t,o.appendChild(e)}o.ariaLabel=n;const i=o.style;return i.display="none",i.pointerEvents="auto",o}const bt="shopar-control";const Et="shopar-deepar-output";function At(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function St(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function Mt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function Rt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const xt="shopar-main";const Tt="shopar-qr-output";function Pt(e){var t,n;const r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("width",null!==(t=e.getAttribute("width"))&&void 0!==t?t:"1rem"),r.setAttribute("height",null!==(n=e.getAttribute("height"))&&void 0!==n?n:"1rem"),r.appendChild(e),r}function Ct(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","image");return n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",null!=t?t:"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E"),n.setAttribute("width",e),n.setAttribute("height",e),n}const It="shopar-three-output";var kt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(kt||(kt={}));let Lt=!1;function $t(){Lt||(!function(){try{const e=document.createElement("style"),t=process.env.css;null!=t&&(e.innerHTML=t);const n=document.head;n.insertBefore(e,n.children[0])}catch(e){console.warn("Failed to write default ShopAR Plugin CSS.")}}(),Lt=!0)}function Ut(){$t();const e=function(){const e=document.createElement("div");e.id=xt;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),r=function(e,t){const n=document.createElement("div");n.id=Tt;const r=n.style;r.position="absolute",r.top="0",r.left="0",r.width="100%",r.height="100%",r.display="none",r.pointerEvents="auto",r.userSelect="none";const o=document.createElement("div");o.className="shopar-qr";const i=o.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(o),o.appendChild(e);const a=document.createElement("div");return a.appendChild(t),o.appendChild(a),n}(t,n);e.appendChild(r);const o=function(){const e=document.createElement("div");e.id=Et;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(o);const i=function(){const e=document.createElement("canvas");e.id=It,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:r}=n;return r.position="absolute",r.width="100%",r.height="100%",r.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=Pt(Ct("2rem",`${R}/img/prompt/3d-interaction.svg`)),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=At("shopar-ar-loading-container"),h=St("shopar-ar-loading-text",vt("loading.ar"));d.appendChild(h);const p=Mt("shopar-ar-loading-bar-bg"),f=Rt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=At("shopar-3d-loading-container"),g=St("shopar-3d-loading-text",vt("loading.3d"));m.appendChild(g);const v=Mt("shopar-3d-loading-bar-bg"),w=Rt("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",t.backgroundSize="contain",t.backgroundRepeat="no-repeat",t.backgroundPosition="center",e}();e.appendChild(y);const b=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),E=function(e){const t=document.createElement("div");t.id=wt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const r=document.createElement("div"),o=r.style;return o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",t.appendChild(r),r.appendChild(e),t}(b);e.appendChild(E);const A=function(){const e=document.createElement("div");return e.id=bt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(A);const S=Ct("1.75rem"),M=yt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",Pt(S));A.appendChild(M);const x=Ct("1.75rem"),T=yt("shopar-btn-3d","3D","Launch ShopAR 3D preview",Pt(x));A.appendChild(T);const P=Ct("1.75rem"),C=yt("shopar-btn-close","Close","Close ShopAR view",Pt(P));A.append(C);let I,k,L=kt.None,$=!1,U=!1,D=!1,O=!1;function _(){f.classList.remove("active"),d.style.visibility="hidden"}function N(){y.style.visibility="hidden",w.classList.remove("active"),m.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return r},getQRImage:function(){return n},getDeepARTarget:function(){return o},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){b.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,r,o,i){var a;$=e,U=t,D=n,O=r,I=o,k=i,Dt(A,$),Dt(M,$&&(D||U)&&L===kt.None),Dt(T,$&&O&&L===kt.None),Dt(C,$&&L!==kt.None),_(),N(),$||""===(a=E).style.display&&Dt(a,!1)},getUIState:function(){return L},setUIState:function(e){L=e,L===kt.None?(_(),N(),$&&(Dt(E,!1),Dt(C,!1),(U||D)&&Dt(M,!0),O&&Dt(T,!0))):L===kt.QR||L===kt.AR?$&&(Dt(E,!1),Dt(M,!1),Dt(T,O&&"AR"===k),Dt(C,"AR"!==k)):L===kt.Preview&&$&&(Dt(E,!1),Dt(M,(U||D)&&"3D"===k),Dt(T,!1),Dt(C,"3D"!==k))},setDefaultUIActions:function(e,t,n){$&&((U||D)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,r=`${R}/img/icons/${n}`;S.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(I),M.onclick=e),O&&(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/cube.svg`),T.onclick=t),P.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/close.svg`),C.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:_,startThreeLoading:function(){null!=y.dataset.bgSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:N,setThreePosterUrl:function(e){null!=e?(y.style.backgroundImage=`url(${e})`,y.dataset.bgSet="true"):delete y.dataset.bgSet},showCameraError:function(){$&&Dt(E,!0)}}}function Dt(e,t){e.style.display=t?"":"none"}const Ot=new Map;function _t(e){let n=Ot.get(e);return null==n?(n=function(){let e=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=Ut()),n);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==r){const{getQRTarget:e,getQRImage:n}=i();r=function(e,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>t(this,void 0,void 0,(function*(){yield T;const t=`https://ar.shopar.ai/${S.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(t),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,r=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){r=!0,e.style.display="none"}))}}(e(),n())}return r},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();o=ut(e(),t(),n())}return o}}}(),Ot.set(e,n)):n.incrementSetupId_(),n}function Nt(e){for(const t of Ot.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===kt.AR&&o(kt.None)}}let jt;const Wt=new Uint8Array(16);function Ft(){if(!jt&&(jt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!jt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return jt(Wt)}const qt=[];for(let e=0;e<256;++e)qt.push((e+256).toString(16).slice(1));var Gt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function zt(e,t,n){if(Gt.randomUUID&&!t&&!e)return Gt.randomUUID();const r=(e=e||{}).random||(e.rng||Ft)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return qt[e[t+0]]+qt[e[t+1]]+qt[e[t+2]]+qt[e[t+3]]+"-"+qt[e[t+4]]+qt[e[t+5]]+"-"+qt[e[t+6]]+qt[e[t+7]]+"-"+qt[e[t+8]]+qt[e[t+9]]+"-"+qt[e[t+10]]+qt[e[t+11]]+qt[e[t+12]]+qt[e[t+13]]+qt[e[t+14]]+qt[e[t+15]]}(r)}const Bt="qrLaunch",Vt="arLaunch",Qt="previewLaunch",Kt="heartbeat";let Ht,Xt,Zt=!1,Yt=window.navigator.userAgent||"no user agent";const Jt=[];function en(){null==Ht&&(Xt=zt(),Ht=x(`${R}/shopar-analytics.js`),Ht.then((()=>{Zt=!0,window.ShopAR__analytics.initializeImpl(),Jt.forEach((e=>e()))})))}function tn(e){Zt?e():Jt.push(e)}function nn(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function rn(e){return t(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.setAttribute("playsinline","playsinline"),t.srcObject=yield e,t}))}const on=200,an=10;let sn=!1,ln=null,cn=[],un=[];function dn(e){return t(this,void 0,void 0,(function*(){sn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${R}/wasm/mediapipe`,e),ln&&clearInterval(ln);const r=[],o=[];ln=setInterval((()=>t(this,void 0,void 0,(function*(){if(sn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());sn||(null!=a&&null!=s&&function(e){for(let t of cn)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<an||(r.shift(),o.shift(),function(e,t){for(let n of un)n({faceWidth:e,IPD:t})}(pn(r),pn(o)))))}))),on)}))}function hn(){un=[],cn=[],sn=!0}function pn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var fn="undefined"!=typeof Float32Array?Float32Array:Array;function mn(){var e=new fn(16);return fn!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function gn(e,t,n){var r=t[0],o=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],g=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*r+b*s+E*d+A*m,e[1]=y*o+b*l+E*h+A*g,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*r+b*s+E*d+A*m,e[5]=y*o+b*l+E*h+A*g,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*r+b*s+E*d+A*m,e[9]=y*o+b*l+E*h+A*g,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*r+b*s+E*d+A*m,e[13]=y*o+b*l+E*h+A*g,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function vn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function wn(e,t){var n=t[0],r=t[1],o=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,r,o),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function yn(e,t,n,r){var o=t[0],i=t[1],a=t[2],s=t[3],l=o+o,c=i+i,u=a+a,d=o*l,h=o*c,p=o*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=r[0],E=r[1],A=r[2];return e[0]=(1-(f+g))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+g))*E,e[6]=(m+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(m-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function bn(){var e=new fn(3);return fn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function En(e,t,n){var r=new fn(3);return r[0]=e,r[1]=t,r[2]=n,r}function An(e,t){var n=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return Math.hypot(n,r,o)}function Sn(e,t,n){var r=t[0],o=t[1],i=t[2],a=n[3]*r+n[7]*o+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*r+n[4]*o+n[8]*i+n[12])/a,e[1]=(n[1]*r+n[5]*o+n[9]*i+n[13])/a,e[2]=(n[2]*r+n[6]*o+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function Mn(){var e=new fn(4);return fn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}bn(),function(){var e,t=(e=new fn(4),fn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Rn;let xn,Tn,Pn;bn(),En(1,0,0),En(0,1,0),Mn(),Mn(),Rn=new fn(9),fn!=Float32Array&&(Rn[1]=0,Rn[2]=0,Rn[3]=0,Rn[5]=0,Rn[6]=0,Rn[7]=0),Rn[0]=1,Rn[4]=1,Rn[8]=1;let Cn,In,kn,Ln,$n=!0,Un=null;const Dn=new Set;let On,_n,Nn,jn,Wn,Fn;function qn(){null==xn&&(xn=x(`${R}/shopar-deepar.js`))}function Gn(){null==Tn&&(Tn=x(`${R}/shopar-true-scale.js`))}function zn(e){return t(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=e;return Wn=o,null==On&&(On=(()=>t(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new n("No camera available!");var e;const t=Jn(kn),o=nn(t);Cn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:Ln,additionalOptions:{hint:Fn,cameraConfig:{disableDefaultCamera:!0}}}),In=yield rn(o),yield er(Cn,In,"user"===t),"Glasses"===kn&&(yield Tn,dn(In),"DetectionLoop"!==Wn&&or((e=>{jn=e.faceWidth})))})))()),On}))}function Bn(e,t){var n,r;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===kn&&(n=t,r=Fn,n===r||null!=n&&null!=r&&n.length===r.length&&n.every((e=>r.find((t=>e===t))))&&r.every((e=>n.find((t=>t===e))))))||(null!=Cn&&(Cn.shutdown(),Cn=null,On=null),kn=e,Fn=t)}function Vn(e){e!==Ln&&(Ln=e,null!=Cn&&Cn.changePreviewElement(Ln))}function Qn(e){Un=e}function Kn(e){Cn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(jn){const e=137/(jn+5);Cn.changeParameterVector("GLASSES","","scale",e,e,e,0),Cn.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const r=nr("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=nr("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Cn.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),Cn.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),hn(),jn=null}e(),tr("Glasses")}},Cn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),tr("Shoes"))},Cn.callbacks.onWristTracked=t=>{t.detected&&(e(),tr("Watches"))}}function Hn(e,n,r){return t(this,void 0,void 0,(function*(){return null!=_n&&Nn===r||(yield _n,_n=Cn.switchEffect(e,{envmap:n}),Nn=r),_n}))}function Xn(e,t){null!=e&&null!=t&&(Cn.setToneMapping(e),Cn.setExposure(t))}function Zn(){return t(this,void 0,void 0,(function*(){if(null!=Cn){if($n=!1,null==In){const e=Jn(kn),t=nn(e);In=yield rn(t),yield er(Cn,In,"user"===e),"Glasses"===kn&&(dn(In),"DetectionLoop"!==Wn&&or((e=>{jn=e.faceWidth})))}!function(){if(null==Un)return;if(null==kn||Dn.has(kn))return;Un.style.visibility="visible",Un.style.opacity="1"}(),Cn.setPaused($n),Ln.style.display=""}}))}function Yn(){null!=Cn&&($n=!0,Cn.setPaused($n),hn(),null!=In&&null!=In.srcObject&&In.srcObject instanceof MediaStream&&(In.srcObject.getTracks().forEach((e=>e.stop())),In=null),function(){if(null==Un)return;Un.style.visibility="hidden",Un.style.opacity="0"}(),Cn.stopCamera(),Ln.style.display="none")}function Jn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function er(e,n,r){return t(this,void 0,void 0,(function*(){yield new Promise((o=>{n.onloadedmetadata=()=>{n.play().then((()=>t(this,void 0,void 0,(function*(){e.setVideoElement(n,r),o()}))))}}))}))}function tr(e){null!=Un&&(Dn.has(e)||(Dn.add(e),Un.style.opacity="0"))}function nr(e,t,n,r,o,i,a){const s=Cn.getTransformationBetween(e,t),l=vn(bn(),s),c=function(e,t){var n=new fn(3);wn(n,t);var r=1/n[0],o=1/n[1],i=1/n[2],a=t[0]*r,s=t[1]*o,l=t[2]*i,c=t[4]*r,u=t[5]*o,d=t[6]*i,h=t[8]*r,p=t[9]*o,f=t[10]*i,m=a+u+f,g=0;return m>0?(g=2*Math.sqrt(m+1),e[3]=.25*g,e[0]=(d-p)/g,e[1]=(h-l)/g,e[2]=(s-c)/g):a>u&&a>f?(g=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/g,e[0]=.25*g,e[1]=(s+c)/g,e[2]=(h+l)/g):u>f?(g=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/g,e[0]=(s+c)/g,e[1]=.25*g,e[2]=(d+p)/g):(g=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/g,e[0]=(h+l)/g,e[1]=(d+p)/g,e[2]=.25*g),e}(Mn(),s);yn(s,c,l,En(a,a,a));const u=Cn.getTransformationBetween(t,n),d=vn(bn(),u);yn(u,Mn(),d,wn(bn(),u));const h=gn(mn(),s,u),p=vn(bn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=Cn.getTransformationBetween(n,r)}catch(e){return f}const g=gn(mn(),u,m),v=gn(mn(),s,g),w=En(p[0],i[1],i[2]),y=Sn(bn(),w,function(e,t){var n=t[0],r=t[1],o=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-r*a,y=n*l-o*a,b=n*c-i*a,E=r*l-o*s,A=r*c-i*s,S=o*c-i*l,M=u*m-d*f,R=u*g-h*f,x=u*v-p*f,T=d*g-h*m,P=d*v-p*m,C=h*v-p*g,I=w*C-y*P+b*T+E*x-A*R+S*M;return I?(I=1/I,e[0]=(s*C-l*P+c*T)*I,e[1]=(o*P-r*C-i*T)*I,e[2]=(m*S-g*A+v*E)*I,e[3]=(h*A-d*S-p*E)*I,e[4]=(l*x-a*C-c*R)*I,e[5]=(n*C-o*x+i*R)*I,e[6]=(g*b-f*S-v*y)*I,e[7]=(u*S-h*b+p*y)*I,e[8]=(a*P-s*x+c*M)*I,e[9]=(r*x-n*P-i*M)*I,e[10]=(f*A-m*b+v*w)*I,e[11]=(d*b-u*A-p*w)*I,e[12]=(s*R-a*T-l*M)*I,e[13]=(n*T-r*R+o*M)*I,e[14]=(m*y-f*E-g*w)*I,e[15]=(u*E-d*y+h*w)*I,e):null}(mn(),v));let b=Cn.getClosestPointOnMesh(r,y);try{const e=Cn.getClosestPointOnMesh(o,y);An(y,e)<An(y,b)&&(b=e)}catch(e){}const E=Sn(bn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function rr(e){!function(e){cn.push(e)}(e)}function or(e){!function(e){un.push(e)}(e)}var ir;function ar(){return[ir.Android,ir.iOS,ir.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],r=["Win32","Win64","Windows","WinCE"],o=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==o.indexOf(t)?ir.iOS:-1!==n.indexOf(t)?i?ir.Tablet:ir.MacOS:-1!==r.indexOf(t)?ir.Windows:/Android/.test(e)?ir.Android:/Linux/.test(t)?ir.Linux:i?ir.Tablet:ir.Unknown}return ir.Unknown}())}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(ir||(ir={}));const sr=["AR","3D"];function lr(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function cr(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function ur(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function dr(e){const{apiKey:t,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;lr(t,"apiKey"),ur(t,"apiKey"),lr(r,"sku"),ur(r,"sku"),lr(o,"targetElement"),function(e,t){if(!(e instanceof HTMLElement))throw new n(`'${t}' must be an HTMLElement.`)}(o,"targetElement"),null!=i&&function(e,t,r){if("string"!=typeof e)throw new n(`'${t}' must be a string.`);if(!r.includes(e))throw new n(`'${t}' must be ${r.join("' or '")}.`)}(i,"initialState",sr),null!=a&&function(e,t){if("string"!=typeof e&&!Array.isArray(e))throw new n(`'${t}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&ur(s,"baseUrl"),null!=l&&cr(l,"defaultUI"),null!=c&&cr(c,"interactive"),null!=u&&function(e,t,r){for(const o of r){const r=e[o];if(null!=r&&"string"!=typeof r)throw new n(`Value for key '${o}' in '${t}' must be a string.`)}}(u,"strings",gt)}let hr=!1;function pr(e){return t(this,void 0,void 0,(function*(){const{targetElement:r}=e;R.update(e.baseUrl),en();const{trackEvent:o}=function(e){const t=performance.now(),n=zt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:S,userAgent:Yt,sessionId:Xt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),tn((()=>{window.ShopAR__analytics.trackEventImpl(r,o)}))}}}(e.apiKey);o("visionSetup");const i=yield function(e){return t(this,void 0,void 0,(function*(){const r=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:e,sid:d()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield r.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(e.apiKey);o("visionApiResponse",i);const{arKey:a}=i,s=_t(r),{getSetupId:l,findUI:c}=s,u=l();qn(),Gn();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=kt.None)throw Error("UI state is not None, this is weird..");v(kt.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield xn,fr(l(),u);try{o("visionArLaunch"),Yn(),Bn("Glasses",["faceInit"]),Vn(p()),yield zn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),fr(l(),u),yield Zn(),fr(l(),u)}catch(e){const t=e instanceof Error;throw o("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),b(),Yn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{y()}return hr=!0,{registerFacePoseListener:e=>{hr&&(o("registerFacePoseListener"),rr(e))},registerFaceMeasurementListener:e=>{hr&&(o("registerFaceMeasurementListener"),or(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){hr&&(o("switchEffect",{arUrl:e}),function(e){Cn.switchEffect(e)}(e))})),clearEffect:()=>{hr&&(o("clearEffect"),Cn.clearEffect())},close:()=>{if(hr){if(hr=!1,o("visionClose"),g()!==kt.AR)throw new n("AR not launched.");Yn(),v(kt.None)}}}}))}function fr(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function mr(e){var r,o;return t(this,void 0,void 0,(function*(){dr(e);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=e,u=null==e.zoomEnabled||e.zoomEnabled,h=!0===e.alwaysTransparentBackground;!function(e){const t=getComputedStyle(e);if(!["static","relative"].includes(t.position))throw new n(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${t.position}'.`)}(s),R.update(e.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(mt,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(mt[t]=n)}}(e.strings);const p=null!=c?Re(c):null,y=null!=(null==p?void 0:p.theta)?le(p.theta):null,b=null!=(null==p?void 0:p.phi)?le(p.phi):null,M=null!=(null==p?void 0:p.fov)?le(p.fov):null,P=function(e,r,o,i,a,s){return t(this,void 0,void 0,(function*(){const l=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:e,sku:r,sid:d()},null!=o&&{yaw:`${g(m(o))}`}),null!=i&&{pitch:`${g(m(i))}`}),null!=a&&{fov:`${g(m(a))}`}),s&&{forcedTransparency:`${s}`}))}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield l.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==b?void 0:b.get(),null==M?void 0:M.get(),h),C=_t(s),{getSetupId:I,findUI:k,findQR:L,findThree:$}=C,U=I();en();const{trackEvent:D,arInteracted:O,previewInteracted:_}=function(e,t){const n=performance.now(),r=zt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(Kt,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Yt,pluginVersion:S,sessionId:Xt,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),tn((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);D("setup",{hostname:window.location.hostname});const N=yield P;D("apiResponse",N);const{category:j,arUrl:W,arEnvUrl:F,arToneMapping:q,arToneMappingExposure:G,arKey:z,arPromptEnabled:B,arPromptText:V,arPromptImage:Q,previewUrl:K,previewEnvUrl:H,previewToneMapping:X,previewToneMappingExposure:Z,previewPosterUrl:Y,cameraErrorText:J,qrPromptText:ee}=N;gr(I(),U);const te=null!=W&&function(e){return null!=e&&v.includes(e)}(j),ne=null==(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled),re=te&&function(e){return null!=e&&w.includes(e)}(j),oe=ne&&re&&!ar(),ie=te&&!oe,ae=null!=K;gr(I(),U);const{setTargetElement:se,getDeepARTarget:ce,getDeepARPrompt:ue,customizeDeepARPrompt:de,customizeCameraError:he,customizeQRPrompt:pe,setVisibilityParameters:fe,getUIState:me,setUIState:ge,setDefaultUIActions:ve,startDeepARLoading:we,stopDeepARLoading:ye,startThreeLoading:be,stopThreeLoading:Ee,setThreePosterUrl:Ae,showCameraError:Se}=k();se(s);if(fe(null==e.defaultUI||e.defaultUI,oe,ie,ae,j,l),de(null!=V?V:"",null!=Q?Q:""),he(J),pe(ee),Ae(Y),oe&&function(){t(this,void 0,void 0,(function*(){null==T&&(T=x(`${R}/shopar-qr.js`))}))}(),ie&&(qn(),function(e){e!==Pn&&(Pn=e,E(e),_n=null,hn())}(W),"Glasses"===j&&Gn(),null!=F&&E(F)),ae){null==Ze&&(Ze=x(`${R}/shopar-three.js`));const e=255;A(K,(new Date).getTime()+e,Math.random()*e),E(null!=H?H:`${R}/env/default.hdr`)}!function(e,t){const r=e.parentNode;if(null==r)throw new n("Parent node missing.");new MutationObserver((n=>{for(const r of n)for(const n of r.removedNodes)if(n===e)return void t()})).observe(r,{childList:!0})}(s,(()=>{me()!==kt.QR||Me()||Te(),me()!==kt.AR||$n||Yn(),me()!==kt.Preview||ke()||$e(),ge(kt.None),Ue(),function(e){Ot.delete(e)}(s)}));const{qrPaused:Me,qrDraw:xe,qrPause:Te}=L(),{threeInit:Pe,threeParse:Ce,threeLoad:Ie,threePaused:ke,threeResume:Le,threePause:$e,threeDestroy:Ue,threeSetZoomEnabled:De,threeSetForcedTransparency:Oe,threeSetToneMapping:_e,threeIsInteractive:Ne,threeSetInteractive:je,threeSetOnInteracted:We,threeInitPromptAnimation:Fe,threeInitThetaAnimation:qe,threeInitPhiAnimation:Ge,threeInitFovAnimation:ze,threeRenderOnce:Be}=$(),Ve=null==e.interactive||e.interactive;je(Ve);let Qe=0;if(me()===kt.QR){if(!Me())if(oe){D(Bt);try{yield xe(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Te(),ge(kt.None)}else if(me()===kt.AR){if(!$n)if(ie&&!hr){D(Vt);const e=null!=F?yield E(F):void 0;gr(I(),U);const t=yield E(W);gr(I(),U),Nt(C),Bn(j),Vn(ce()),Qn(B?ue():null),yield Hn(t,e,`${W}${F}`),Xn(q,G),Kn(O),gr(I(),U)}else Yn(),ge(kt.None)}else if(me()===kt.Preview&&!ke())if(ae){D(Qt),be();const e=255,t=yield A(K,(new Date).getTime()+e,Math.random()*e);gr(I(),U);const n=yield E(null!=H?H:`${R}/env/default.hdr`);gr(I(),U);const r=yield Ce(t,n,`${K}${H}`);gr(I(),U),Ie(r,j),De(u),Oe(h),_e(null!=X?X:"ACES",null!=Z?Z:1),We(_),Fe(),null!=p&&(qe(y),Ge(b),ze(M)),Be(),Ee()}else $e(),ge(kt.None);const Ke=()=>t(this,void 0,void 0,(function*(){if(oe)try{D(Bt);const e=++Qe;if(me()===kt.Preview&&ae&&!ke()&&$e(),ge(kt.QR),yield xe(i,a),Qe!==e)return;return void gr(I(),U)}catch(e){const t=e instanceof Error;throw D("qrLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`QR failed: ${t?e.message:"Unknown error."}`)}if(!ie)throw new n("Model does not have AR enabled.");try{D(Vt);const e=++Qe;me()===kt.Preview&&ae&&!ke()&&$e(),Nt(C),ge(kt.AR),we();const t=null!=F?yield E(F):void 0;gr(I(),U);const n=yield E(W);if(Qe!==e)return;if(gr(I(),U),yield xn,Qe!==e)return;if(gr(I(),U),Yn(),Bn(j),Vn(ce()),Qn(B?ue():null),yield zn({licenseKey:z}),Qe!==e)return;if(gr(I(),U),yield Hn(n,t,`${W}${F}`),Xn(q,G),Kn(O),Qe!==e)return;if(gr(I(),U),yield Zn(),Qe!==e)return;gr(I(),U)}catch(e){const t=e instanceof Error;throw D("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Se(),Yn(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{ye()}})),He=()=>t(this,void 0,void 0,(function*(){if(!ae)throw new n("Model does not have 3D enabled.");try{D(Qt);const e=++Qe;me()===kt.AR&&(ie&&!$n&&Yn(),Te()),ge(kt.Preview),be();const t=255,n=yield A(K,(new Date).getTime()+t,Math.random()*t);if(Qe!==e)return;gr(I(),U);const r=yield E(null!=H?H:`${R}/env/default.hdr`);if(Qe!==e)return;if(gr(I(),U),yield Ze,Qe!==e)return;if(gr(I(),U),Pe(),Qe!==e)return;gr(I(),U);const o=yield Ce(n,r,`${K}${H}`);if(Qe!==e)return;gr(I(),U),Ie(o,j),De(u),Oe(h),_e(null!=X?X:"ACES",null!=Z?Z:1),We(_),Fe(),null!=p&&(qe(y),Ge(b),ze(M)),Be(),Le(),Ee()}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."}`)}})),Xe=()=>t(this,void 0,void 0,(function*(){me()!==kt.None&&("AR"!==l||me()!==kt.AR&&me()!==kt.QR)&&("3D"===l&&me()===kt.Preview||(++Qe,me()===kt.QR||me()===kt.AR?(ie&&!$n&&Yn(),Te()):me()===kt.Preview&&ae&&!ke()&&$e(),ge(kt.None),"AR"!==l?"3D"!==l||(yield He()):yield Ke()))}));return ve(Ke,He,Xe),"AR"===l?(yield Ke(),gr(I(),U)):"3D"===l&&(yield He(),gr(I(),U)),hr=!1,{launchAR:te?Ke:void 0,launch3D:ae?He:void 0,closeAR:te?()=>t(this,void 0,void 0,(function*(){me()!==kt.AR&&me()!==kt.QR||"AR"!==l&&(++Qe,ie&&!$n&&Yn(),Te(),ge(kt.None),"3D"!==l||(yield He()))})):void 0,close3D:ae?()=>t(this,void 0,void 0,(function*(){me()===kt.Preview&&"3D"!==l&&(++Qe,ae&&!ke()&&$e(),ge(kt.None),"AR"!==l||(yield Ke()))})):void 0,close:te||ae?Xe:void 0,isInteractive:()=>Ne(),setInteractive:e=>je(e)}}))}function gr(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const vr={setup:function(e){return t(this,void 0,void 0,(function*(){return pr(e)}))}},wr={setup:function(e){return t(this,void 0,void 0,(function*(){return function(e,r){return t(this,void 0,void 0,(function*(){try{return r()}catch(t){throw t instanceof Error?new n(`${e} failed: ${t.message}`):(console.error(t),new n(`${e} failed.`))}}))}("setup",(()=>mr(e)))}))},version:S};e.PREVIEW_STATES=sr,e.PluginError=n,e.plugin=wr,e.vision=vr}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ShopAR={})}(this,(function(e){"use strict";function t(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{l(o.next(e))}catch(e){i(e)}}function s(e){try{l(o.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((o=o.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class n extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const o=[Uint8Array,Uint32Array],r=o.length-2,i=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],a=[2,12,7,1],s=window[i[a[a[r]]]][i[a[a[a.length-1]]]],l=s.charCodeAt(r),c=l^l,u=new o[1]([c]);function d(){const e=(new TextEncoder).encode(s),t=i.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[i[t[2]]](String.fromCodePoint(...e))}const h=[1e3,2e3,4e3],p=h.length;function f(e,n=0){return t(this,void 0,void 0,(function*(){try{return yield e()}catch(t){if(n>=p)throw t;return yield new Promise((e=>setTimeout(e,h[n]))),f(e,n+1)}}))}function g(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const v=["Glasses","Shoes","Watches"],w=["Shoes"];const y={},b={};function E(e){return null==y[e]&&(y[e]=function(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(e).catch((e=>{throw console.error(e),new n("Resource unavailable.")}));if(!t.ok)throw new n(`Resource download failed with status ${t.status}.`);return t}))));try{return yield(yield o.blob()).arrayBuffer()}catch(e){throw console.error(e),new n("Resource has invalid body.")}}))}(e)),y[e]}function A(e,r,i){return null==b[e]&&(b[e]=function(e,r,i){return t(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const l=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),g=window[`${h}${d+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],m=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield g(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new o[0](yield(yield m.blob().catch((()=>{throw new n("Unknown error.")}))).arrayBuffer().catch((()=>{throw new n("Unknown error.")})));i+=s;const w=v.byteLength;if(u[c]=Math.min(76,r)*((a>>5)-1),152===u[c]&&(u[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)u[c]^=u[i]<<13,u[c]^=u[i]>>17,u[c]^=u[i]<<5,v[e]=v[e]^u[c];return i^=u[0],i^=u[1],i^=u[2],v}))}(e,r,i)),b[e]}const S="0.7.4-alpha.0";let M=`https://cdn.jsdelivr.net/npm/shopar-plugin@${S}/dist`;const R={update:e=>{null!=e&&(M=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>M};function x(e){return t(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const t=document.createElement("script");return t.setAttribute("src",e),t.setAttribute("crossorigin","anonymous"),new Promise((e=>{t.addEventListener("load",(()=>e()),!1),t.addEventListener("error",(()=>e()),!1),document.body.appendChild(t)}))}importScripts(e.toString())}))}let T;function P(e,n){let o=!0;return{qrPaused:()=>o,qrDraw:(r,i)=>t(this,void 0,void 0,(function*(){!function(){t(this,void 0,void 0,(function*(){null==T&&(T=x(`${R}/shopar-qr.js`))}))}(),yield T;const a=`https://ar.shopar.ai/${S.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:r,s:i,h:location.href})}`,s=yield window.ShopAR__QR.toDataURL(a),l=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=s,yield l,o=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){o=!0,e.style.display="none"}))}}const C=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let I,k,L,U=!1;let $=!1;function D(e){const t=function(e){const t=new k.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,k.ClampToEdgeWrapping,k.ClampToEdgeWrapping,k.LinearFilter,k.LinearFilter,1,k.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(L.parse(e));return t.mapping=k.EquirectangularReflectionMapping,t.colorSpace=k.LinearSRGBColorSpace,t}const O=45,_=45,N=3,j=1.5,W=1,F=.5;let q,G,z,B,V,Q=!1;const H=4,K=.001,X=1e-7,Z=10,Y=11,J=1/(Y-1),ee="function"==typeof Float32Array;function te(e,t,n,o){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===o)return se;const r=ee?new Float32Array(Y):new Array(Y);for(let t=0;t<Y;++t)r[t]=ie(t*J,e,n);function i(t){let o=0,i=1;const a=Y-1;for(;i!==a&&r[i]<=t;++i)o+=J;--i;const s=o+(t-r[i])/(r[i+1]-r[i])*J,l=ae(s,e,n);return l>=K?function(e,t,n,o){for(let r=0;r<H;++r){const r=ae(t,n,o);if(0===r)return t;t-=(ie(t,n,o)-e)/r}return t}(t,s,e,n):0===l?s:function(e,t,n,o,r){let i,a,s=0;do{a=t+(n-t)/2,i=ie(a,o,r)-e,i>0?n=a:t=a}while(Math.abs(i)>X&&++s<Z);return a}(t,o,o+J,e,n)}return function(e){return 0===e||1===e?e:ie(i(e),t,o)}}function ne(e,t){return 1-3*t+3*e}function oe(e,t){return 3*t-6*e}function re(e){return 3*e}function ie(e,t,n){return((ne(t,n)*e+oe(t,n))*e+re(t))*e}function ae(e,t,n){return 3*ne(t,n)*e*e+2*oe(t,n)*e+re(t)}function se(e){return e}function le(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=te(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function ce(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:le(n)})));let o=0,r=n[0].value;return{reset:()=>{o=0},update:e=>{for(o+=e;o>=t;)o-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(o>=t.time&&o<i.time){const e=t.interpolate((o-t.time)/(i.time-t.time));r=t.value+e*(i.value-t.value)}}},get:()=>r}}const ue="#",de="time",he="interpolation",pe="yaw",fe="pitch",ge="fov",me=[de,pe,fe,ge,he],ve="s",we="ms",ye=1e3,be="deg",Ee="rad",Ae=Math.PI/180,Se="ease-in-out",Me="cubic-bezier(",Re=")";function xe(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(ue);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const o=function(e){const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!me.includes(o))throw new Error(`Invalid token in header: '${o}'.`);if(t.includes(o))throw new Error(`Duplicate token in header: '${o}'.`);t.push(o)}if(!t.includes(de))throw new Error(`Missing required token: '${de}'.`);return t}(t.split(/\s+/)),r={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=Te(o,e);null!=t&&(null==r.theta&&(r.theta=[]),r.theta.push(t)),null!=n&&(null==r.phi&&(r.phi=[]),r.phi.push(n)),null!=i&&(null==r.fov&&(r.fov=[]),r.fov.push(i))}if(0===Object.values(r).length)throw new Error("At least one parameter should be animated.");return r}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const o of e){const{time:e,pitch:r,yaw:i,fov:a}=o;if(null==e)throw new Error("Time missing.");const s=Ce(null!==(t=o.interpolation)&&void 0!==t?t:Se);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*Ae,interpolation:s})),null!=r&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:r*Ae,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*Ae,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function Te(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const o=e.indexOf(de),r=function(e){if(e.endsWith(we))return ke(e.substring(0,e.length-we.length));if(e.endsWith(ve))return ke(e.substring(0,e.length-ve.length))*ye;return ke(e)}(n[o]),i=e.indexOf(he),a=Ce(-1===i?Se:n[i]),s={};for(let t=0;t<n.length;t++){if(t===o||t===i)continue;const l=e[t],c=n[t];switch(l){case pe:s.theta={time:r,value:Pe(c),interpolation:a};break;case fe:s.phi={time:r,value:Pe(c),interpolation:a};break;case ge:s.fov={time:r,value:Pe(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Pe(e){return e.endsWith(be)?ke(e.substring(0,e.length-be.length))*Ae:e.endsWith(Ee)?ke(e.substring(0,e.length-Ee.length)):ke(e)*Ae}function Ce(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ie(0,0,1,1);if("sine"===e)return Ie(.37,0,.63,1);if("sine-in"===e)return Ie(.12,0,.39,0);if("sine-out"===e)return Ie(.61,1,.88,1);if("ease"===e)return Ie(.25,.1,.25,1);if("ease-in"===e)return Ie(.42,0,1,1);if("ease-out"===e)return Ie(0,0,.58,1);if("ease-in-out"===e)return Ie(.42,0,.58,1);if(e.startsWith(Me)&&e.endsWith(Re)){const t=e.substring(Me.length,e.length-Re.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:ke(t[0]),y1:ke(t[1]),x2:ke(t[2]),y2:ke(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ie(e,t,n,o){return{type:"bezier",x1:e,y1:t,x2:n,y2:o}}function ke(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Le=300,Ue=2e3,$e=.05,De=2*Math.PI/32,Oe=Ce("hold"),_e=Ce("sine"),Ne=Ce("sine-in"),je=Ce("sine-out");const We=2e3,Fe=8,qe=2*Math.PI,Ge=qe/12,ze=qe/60,Be=qe/60,Ve=60,Qe=60,He=1e3,Ke=Ve*Qe,Xe=-1;function Ze(e){return ce([{time:0,value:0,interpolation:{type:"bezier",x1:.9,y1:0,x2:.6,y2:1}},{time:We,value:e,interpolation:{type:"hold"}}])}function Ye(e,t,n){return Xe*Ge*(e+t/Ve+n/Ke)}function Je(e,t){return Xe*ze*(e+t/Qe)}function et(e,t){return Xe*Be*(e+t/He)}const tt=["map","alphaMap","anisotropyMap","aoMap","bumpMap","clearcoatMap","clearcoatNormalMap","clearcoatRoughnessMap","displacementMap","emissiveMap","envMap","gradientMap","iridescenceMap","iridescenceThicknessMap","lightMap","metalnessMap","normalMap","roughnessMap","sheenColorMap","sheenRoughnessMap","specularMap","specularColorMap","specularIntensityMap","thicknessMap","transmissionMap"];function nt(e){null!=e&&(e.dispose(),tt.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let ot;const rt=0,it=3;let at,st,lt,ct=!1,ut=1,dt=1,ht=1;const pt=1;let ft;const gt=new Map;function mt(){null==ot&&(ot=x(`${R}/shopar-three.js`))}function vt(e,n,o){const r=e.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,g,m,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,R=1,x=!0,T=!1,P=0,C=0,W=1,Q=1,H=1;const K={threeInit:()=>{b||(wt(),i=new st.Scene,a=new st.PerspectiveCamera(25,1,.5),s=new at.OrbitControls(a,e),s.setInteractionEnabled(x),h=st.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new q.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new q.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new q.Group;o.position.y=-.7;const r=new q.PlaneGeometry(O,_).rotateX(Math.PI/2),i=new q.MeshBasicMaterial({map:t.texture,opacity:F,transparent:!0,depthWrite:!1}),a=new q.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new q.Mesh(r);s.visible=!1,o.add(s);const l=new q.OrthographicCamera(-O/2,O/2,_/2,-_/2,0,N);function c(e){s.visible=!0,B.uniforms.tDiffuse.value=t.texture,B.uniforms.h.value=1*e/256,s.material=B,G.setRenderTarget(n),G.render(s,l),V.uniforms.tDiffuse.value=n.texture,V.uniforms.v.value=1*e/256,s.material=V,G.setRenderTarget(t),G.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,o.add(l),{shadowGroup:o,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=z;const o=G.getClearAlpha();G.setClearAlpha(0),G.setRenderTarget(t),G.render(e,l),e.overrideMaterial=null,c(j),c(.4*j),G.setRenderTarget(null),G.setClearAlpha(o),e.background=n}}}(i)),b=!0)},threeParse:(e,n,o)=>t(this,void 0,void 0,(function*(){return null!=u&&d===o||(yield u,u=(()=>t(this,void 0,void 0,(function*(){var t,o,r;return o=at,$||(k=o.THREE,L=new o.RGBELoader,$=!0),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=D(n),function(e,t){if(U)return;const{THREE:n}=t;I=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder),U=!0}(ft,at),r=e,I.parseAsync(r.buffer,"")})))(),d=o),u})),threeLoad:(e,t)=>{Et(i),i.add(e.scene);const n=(new st.Box3).setFromObject(e.scene);l.position.y=n.min.y-rt,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof st.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(at.reduceVertices(e.scene,((e,t)=>Math.max(e,o.distanceToSquared(t))),0));s.reset(o,r,function(e,t){var n;const o={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?o.Glasses:null!==(n=o[e])&&void 0!==n?n:o.Glasses).normalize()}(t,st.Vector3)),P=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),o=e.getObjectByName("seconds");if(null==t&&null==n&&null==o)return null;let r,i,a,s,l,c;return{start:()=>{r=new Date,r.setMilliseconds(r.getMilliseconds()+We),l=!1;const e=r.getHours(),t=r.getMinutes(),n=r.getSeconds(),o=r.getMilliseconds();i=Ze(Ye(e,t,n)),a=Ze(Je(t,n)),s=Ze(et(n,o)),c=new Date},update:()=>{if(null==r)return!1;const e=new Date;if(!l){if(r.getTime()-e.getTime()>0){const r=Math.abs(e.getTime()-c.getTime());return null!=t&&(i.update(r),t.rotation.y=i.get()),null!=n&&(a.update(r),n.rotation.y=a.get()),null!=o&&(s.update(r),o.rotation.y=s.get()),c=e,!0}l=!0}if(Math.abs(e.getTime()-c.getTime())<He/Fe)return!1;c=e;const u=e.getHours(),d=e.getMinutes(),h=e.getSeconds(),p=e.getMilliseconds();return null!=t&&(t.rotation.y=Ye(u,d,h)),null!=n&&(n.rotation.y=Je(d,h)),null!=o&&(o.rotation.y=et(h,p)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,ft.setAnimationLoop(yt),e.style.visibility="visible",C=0,null==f||f.reset(),null==g||g.reset(),null==m||m.reset(),null==v||v.reset(),null==w||w.reset(),null==y||y.start()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of gt.values())if(!e())return!1;return!0}()&&ft.setAnimationLoop(null),e.style.visibility="hidden",o.style.opacity="0",n.style.visibility="hidden"},threeDestroy:()=>{var t;Et(i),null===(t=i.environment)||void 0===t||t.dispose(),i.environment=null,i=null,u=null,y=null,gt.delete(e)},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:st.ACESFilmicToneMapping,Linear:st.LinearToneMapping,Neutral:st.NeutralToneMapping};null!=n[e]&&(h=n[e]),R=t},threeIsInteractive:()=>x,threeSetInteractive:e=>{x=e,null==s||s.setInteractionEnabled(x)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=ce([{time:0,value:e,interpolation:Oe},{time:Le,value:e,interpolation:je},{time:Le+Ue/4,value:e+De,interpolation:_e},{time:Le+3*Ue/4,value:e-De,interpolation:Ne},{time:Le+Ue,value:e,interpolation:Oe},{time:Le+2*Ue,value:e,interpolation:Oe}]),s.setTheta(f.get()),g=null,m=null,v=ce([{time:0,value:0,interpolation:Oe},{time:Le,value:1,interpolation:Oe},{time:Le+Ue,value:0,interpolation:Oe},{time:Le+2*Ue,value:0,interpolation:Oe}]),w=ce([{time:0,value:0,interpolation:Oe},{time:Le,value:0,interpolation:je},{time:Le+Ue/4,value:-$e,interpolation:_e},{time:Le+3*Ue/4,value:$e,interpolation:Ne},{time:Le+Ue,value:0,interpolation:Oe},{time:Le+2*Ue,value:0,interpolation:Oe}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{g=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{m=e,null!=e&&s.setFovRadians(e.get())},threeRenderOnce:()=>{K.render_()},preRender_:t=>{if(!b||S||!function(e){const t=e.getBoundingClientRect();return t.bottom>0&&t.top<Math.max(document.documentElement.clientHeight,window.innerHeight)&&t.right>0&&t.left<Math.max(document.documentElement.clientWidth,window.innerWidth)}(e))return;let n=0!==C?t-C:0;C=t,0===P?M=!0:P<it&&(n=0),P++,T||(s.hasUserInteracted()?(T=!0,f=null,g=null,m=null,v=null,w=null):(null==f||f.update(n),null==g||g.update(n),null==m||m.update(n),null==v||v.update(n),null==w||w.update(n),null!=f&&(s.setTheta(f.get()),M=!0),null!=g&&(s.setPhi(g.get()),M=!0),null!=m&&(s.setFovRadians(m.get()),M=!0))),s.update()&&(M=!0),(null==y?void 0:y.update())&&(M=!0)},shouldRender_:()=>!(!b||S)&&M,render_:()=>{const t=ft.toneMapping,s=ft.toneMappingExposure;ft.toneMapping=h,ft.toneMappingExposure=R,ft.setViewport(0,0,e.width,e.height),ft.setClearColor(new st.Color(16777215),E&&!A?1:0),ft.render(i,a),ft.toneMapping=t,ft.toneMappingExposure=s,M=!1,null!=r&&(r.clearRect(0,0,e.width,e.height),lt.width>0&<.height>0&&r.drawImage(lt,0,dt-e.height,e.width,e.height,0,0,e.width,e.height),n.style.visibility=x&&!T?"visible":"hidden",null!=v&&(o.style.opacity=`${v.get()}`),null!=w&&(o.style.transform=`translateX(${w.get()*Math.min(W,Q)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===W&&n===Q&&ht===H||(e.width=Math.ceil(t*ht*pt),e.height=Math.ceil(n*ht*pt),W=t,Q=n,H=ht,M=!0)},target_:e};return gt.set(e,K),K}function wt(){if(ct)return;at=window.ShopAR__THREE,st=at.THREE,lt=document.createElement("canvas");var e,t;lt.style.position="block",ft=new st.WebGLRenderer({powerPreference:"high-performance",canvas:lt,antialias:!0,alpha:!0}),ft.outputColorSpace=st.SRGBColorSpace,ft.toneMapping=st.ACESFilmicToneMapping,ft.setClearColor(new st.Color(16777215),0),e=ft,t=at,Q||(q=t.THREE,G=e,z=new q.MeshDepthMaterial,z.userData.darkness={value:W},z.onBeforeCompile=e=>{e.uniforms.darkness=z.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},z.depthTest=!1,z.depthWrite=!1,B=new q.ShaderMaterial(t.HorizontalBlurShader),B.depthTest=!1,V=new q.ShaderMaterial(t.VerticalBlurShader),V.depthTest=!1,Q=!0),bt(),ct=!0}function yt(e){bt(),ft.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of gt.values())t(e),n()&&o()}function bt(){let e=0,t=0;for(const{target_:n}of gt.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=C();e=Math.ceil(e*n*pt),t=Math.ceil(t*n*pt),e===ut&&t===dt&&n===ht||(ut=e,dt=t,ht=n,ft.setSize(ut,dt,!1));for(const{updateSize_:e}of gt.values())e()}function Et(e){e.traverse((e=>{var t;e instanceof st.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(nt):nt(e.material))})),e.clear()}const At={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},St=Object.keys(At);function Mt(e){return At[e]}const Rt="shopar-error";function xt(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn",r.appendChild(o);{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;const i=r.style;return i.display="none",i.pointerEvents="auto",r}const Tt="shopar-control";const Pt="shopar-deepar-output";function Ct(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function It(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function kt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function Lt(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const Ut="shopar-main";const $t="shopar-qr-output";function Dt(e){var t,n;const o=document.createElementNS("http://www.w3.org/2000/svg","svg");return o.setAttribute("width",null!==(t=e.getAttribute("width"))&&void 0!==t?t:"1rem"),o.setAttribute("height",null!==(n=e.getAttribute("height"))&&void 0!==n?n:"1rem"),o.appendChild(e),o}function Ot(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","image");return n.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",null!=t?t:"data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E"),n.setAttribute("width",e),n.setAttribute("height",e),n}const _t="shopar-three-output";var Nt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Nt||(Nt={}));let jt=!1;function Wt(){jt||(!function(){try{const e=document.createElement("style"),t=process.env.css;null!=t&&(e.innerHTML=t);const n=document.head;n.insertBefore(e,n.children[0])}catch(e){console.warn("Failed to write default ShopAR Plugin CSS.")}}(),jt=!0)}function Ft(){Wt();const e=function(){const e=document.createElement("div");e.id=Ut;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),o=function(e,t){const n=document.createElement("div");n.id=$t;const o=n.style;o.position="absolute",o.top="0",o.left="0",o.width="100%",o.height="100%",o.display="none",o.pointerEvents="auto",o.userSelect="none";const r=document.createElement("div");r.className="shopar-qr";const i=r.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(r),r.appendChild(e);const a=document.createElement("div");return a.appendChild(t),r.appendChild(a),n}(t,n);e.appendChild(o);const r=function(){const e=document.createElement("div");e.id=Pt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(r);const i=function(){const e=document.createElement("canvas");e.id=_t,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:o}=n;return o.position="absolute",o.width="100%",o.height="100%",o.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=Dt(Ot("2rem",`${R}/img/prompt/3d-interaction.svg`)),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=Ct("shopar-ar-loading-container"),h=It("shopar-ar-loading-text",Mt("loading.ar"));d.appendChild(h);const p=kt("shopar-ar-loading-bar-bg"),f=Lt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const g=Ct("shopar-3d-loading-container"),m=It("shopar-3d-loading-text",Mt("loading.3d"));g.appendChild(m);const v=kt("shopar-3d-loading-bar-bg"),w=Lt("shopar-3d-loading-bar-fg");v.appendChild(w),g.appendChild(v),e.appendChild(g);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",t.backgroundSize="contain",t.backgroundRepeat="no-repeat",t.backgroundPosition="center",e}();e.appendChild(y);const b=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),E=function(e){const t=document.createElement("div");t.id=Rt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const o=document.createElement("div"),r=o.style;return r.position="absolute",r.width="100%",r.height="100%",r.backgroundColor="#ffffff",r.display="flex",r.flexDirection="column",r.justifyContent="center",r.alignItems="center",t.appendChild(o),o.appendChild(e),t}(b);e.appendChild(E);const A=function(){const e=document.createElement("div");return e.id=Tt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(A);const S=Ot("1.75rem"),M=xt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on",Dt(S));A.appendChild(M);const x=Ot("1.75rem"),T=xt("shopar-btn-3d","3D","Launch ShopAR 3D preview",Dt(x));A.appendChild(T);const P=Ot("1.75rem"),C=xt("shopar-btn-close","Close","Close ShopAR view",Dt(P));A.append(C);let I,k,L=Nt.None,U=!1,$=!1,D=!1,O=!1;function _(){f.classList.remove("active"),d.style.visibility="hidden"}function N(){y.style.visibility="hidden",w.classList.remove("active"),g.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return o},getQRImage:function(){return n},getDeepARTarget:function(){return r},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){b.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,o,r,i){var a;U=e,$=t,D=n,O=o,I=r,k=i,qt(A,U),qt(M,U&&(D||$)&&L===Nt.None),qt(T,U&&O&&L===Nt.None),qt(C,U&&L!==Nt.None),_(),N(),U||""===(a=E).style.display&&qt(a,!1)},getUIState:function(){return L},setUIState:function(e){L=e,L===Nt.None?(_(),N(),U&&(qt(E,!1),qt(C,!1),($||D)&&qt(M,!0),O&&qt(T,!0))):L===Nt.QR||L===Nt.AR?U&&(qt(E,!1),qt(M,!1),qt(T,O&&"AR"===k),qt(C,"AR"!==k)):L===Nt.Preview&&U&&(qt(E,!1),qt(M,($||D)&&"3D"===k),qt(T,!1),qt(C,"3D"!==k))},setDefaultUIActions:function(e,t,n){U&&(($||D)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${R}/img/icons/${n}`;S.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(I),M.onclick=e),O&&(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/cube.svg`),T.onclick=t),P.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",`${R}/img/icons/close.svg`),C.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:_,startThreeLoading:function(){null!=y.dataset.bgSet?y.style.visibility="visible":(w.classList.add("active"),g.style.visibility="visible")},stopThreeLoading:N,setThreePosterUrl:function(e){null!=e?(y.style.backgroundImage=`url(${e})`,y.dataset.bgSet="true"):delete y.dataset.bgSet},showCameraError:function(){U&&qt(E,!0)}}}function qt(e,t){e.style.display=t?"":"none"}const Gt=new Map;function zt(e){let t=Gt.get(e);return null==t?(t=function(){let e=0,t=null,n=null,o=null;const r=()=>(null==t&&(t=Ft()),t);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>t,findUI:r,findQR:()=>{if(null==n){const{getQRTarget:e,getQRImage:t}=r();n=P(e(),t())}return n},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=r();o=vt(e(),t(),n())}return o}}}(),Gt.set(e,t)):t.incrementSetupId_(),t}function Bt(e){for(const t of Gt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===Nt.AR&&r(Nt.None)}}let Vt;const Qt=new Uint8Array(16);function Ht(){if(!Vt&&(Vt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Vt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Vt(Qt)}const Kt=[];for(let e=0;e<256;++e)Kt.push((e+256).toString(16).slice(1));var Xt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Zt(e,t,n){if(Xt.randomUUID&&!t&&!e)return Xt.randomUUID();const o=(e=e||{}).random||(e.rng||Ht)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=o[e];return t}return function(e,t=0){return Kt[e[t+0]]+Kt[e[t+1]]+Kt[e[t+2]]+Kt[e[t+3]]+"-"+Kt[e[t+4]]+Kt[e[t+5]]+"-"+Kt[e[t+6]]+Kt[e[t+7]]+"-"+Kt[e[t+8]]+Kt[e[t+9]]+"-"+Kt[e[t+10]]+Kt[e[t+11]]+Kt[e[t+12]]+Kt[e[t+13]]+Kt[e[t+14]]+Kt[e[t+15]]}(o)}const Yt="qrLaunch",Jt="arLaunch",en="previewLaunch",tn="heartbeat";let nn,on,rn=!1,an=window.navigator.userAgent||"no user agent";const sn=[];function ln(){null==nn&&(on=Zt(),nn=x(`${R}/shopar-analytics.js`),nn.then((()=>{rn=!0,window.ShopAR__analytics.initializeImpl(),sn.forEach((e=>e()))})))}function cn(e){rn?e():sn.push(e)}function un(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function dn(e){return t(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.setAttribute("playsinline","playsinline"),t.srcObject=yield e,t}))}const hn=200,pn=10;let fn=!1,gn=null,mn=[],vn=[];function wn(e){return t(this,void 0,void 0,(function*(){fn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${R}/wasm/mediapipe`,e),gn&&clearInterval(gn);const o=[],r=[];gn=setInterval((()=>t(this,void 0,void 0,(function*(){if(fn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());fn||(null!=a&&null!=s&&function(e){for(let t of mn)t(e)}({translation:a,rotation:s}),null==e&&(o.push(t),r.push(i),o.length<pn||(o.shift(),r.shift(),function(e,t){for(let n of vn)n({faceWidth:e,IPD:t})}(bn(o),bn(r)))))}))),hn)}))}function yn(){vn=[],mn=[],fn=!0}function bn(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}var En="undefined"!=typeof Float32Array?Float32Array:Array;function An(){var e=new En(16);return En!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Sn(e,t,n){var o=t[0],r=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],g=t[12],m=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*o+b*s+E*d+A*g,e[1]=y*r+b*l+E*h+A*m,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*o+b*s+E*d+A*g,e[5]=y*r+b*l+E*h+A*m,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*o+b*s+E*d+A*g,e[9]=y*r+b*l+E*h+A*m,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*o+b*s+E*d+A*g,e[13]=y*r+b*l+E*h+A*m,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Mn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Rn(e,t){var n=t[0],o=t[1],r=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,o,r),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function xn(e,t,n,o){var r=t[0],i=t[1],a=t[2],s=t[3],l=r+r,c=i+i,u=a+a,d=r*l,h=r*c,p=r*u,f=i*c,g=i*u,m=a*u,v=s*l,w=s*c,y=s*u,b=o[0],E=o[1],A=o[2];return e[0]=(1-(f+m))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+m))*E,e[6]=(g+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(g-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Tn(){var e=new En(3);return En!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Pn(e,t,n){var o=new En(3);return o[0]=e,o[1]=t,o[2]=n,o}function Cn(e,t){var n=t[0]-e[0],o=t[1]-e[1],r=t[2]-e[2];return Math.hypot(n,o,r)}function In(e,t,n){var o=t[0],r=t[1],i=t[2],a=n[3]*o+n[7]*r+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*o+n[4]*r+n[8]*i+n[12])/a,e[1]=(n[1]*o+n[5]*r+n[9]*i+n[13])/a,e[2]=(n[2]*o+n[6]*r+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function kn(){var e=new En(4);return En!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}Tn(),function(){var e,t=(e=new En(4),En!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var Ln;let Un,$n;Tn(),Pn(1,0,0),Pn(0,1,0),kn(),kn(),Ln=new En(9),En!=Float32Array&&(Ln[1]=0,Ln[2]=0,Ln[3]=0,Ln[5]=0,Ln[6]=0,Ln[7]=0),Ln[0]=1,Ln[4]=1,Ln[8]=1;let Dn,On,_n,Nn,jn=!0,Wn=null;const Fn=new Set;let qn,Gn,zn,Bn,Vn,Qn;function Hn(){null==Un&&(Un=x(`${R}/shopar-deepar.js`))}function Kn(){null==$n&&($n=x(`${R}/shopar-true-scale.js`))}function Xn(e){return t(this,void 0,void 0,(function*(){const{licenseKey:o,truescaleUsecase:r}=e;return Vn=r,null==qn&&(qn=(()=>t(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new n("No camera available!");var e;const t=io(_n),r=un(t);Dn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:o||"your_license_key_goes_here",previewElement:Nn,additionalOptions:{hint:Qn,cameraConfig:{disableDefaultCamera:!0}}}),On=yield dn(r),yield ao(Dn,On,"user"===t),"Glasses"===_n&&(yield $n,wn(On),"DetectionLoop"!==Vn&&uo((e=>{Bn=e.faceWidth})))})))()),qn}))}function Zn(e,t){var n,o;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===_n&&(n=t,o=Qn,n===o||null!=n&&null!=o&&n.length===o.length&&n.every((e=>o.find((t=>e===t))))&&o.every((e=>n.find((t=>t===e))))))||(null!=Dn&&(Dn.shutdown(),Dn=null,qn=null),_n=e,Qn=t)}function Yn(e){e!==Nn&&(Nn=e,null!=Dn&&Dn.changePreviewElement(Nn))}function Jn(e){Wn=e}function eo(e){Dn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(Bn){const e=137/(Bn+5);Dn.changeParameterVector("GLASSES","","scale",e,e,e,0),Dn.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const o=lo("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),r=lo("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Dn.changeParameterVector("temple_left","","rotation",0,56.6*-o,0,0),Dn.changeParameterVector("temple_right","","rotation",0,56.6*-r,0,0)}catch(e){return}}(e),yn(),Bn=null}e(),so("Glasses")}},Dn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),so("Shoes"))},Dn.callbacks.onWristTracked=t=>{t.detected&&(e(),so("Watches"))}}function to(e,n,o){return t(this,void 0,void 0,(function*(){return null!=Gn&&zn===o||(yield Gn,Gn=Dn.switchEffect(e,{envmap:n}),zn=o),Gn}))}function no(e,t){null!=e&&null!=t&&(Dn.setToneMapping(e),Dn.setExposure(t))}function oo(){return t(this,void 0,void 0,(function*(){if(null!=Dn){if(jn=!1,null==On){const e=io(_n),t=un(e);On=yield dn(t),yield ao(Dn,On,"user"===e),"Glasses"===_n&&(wn(On),"DetectionLoop"!==Vn&&uo((e=>{Bn=e.faceWidth})))}!function(){if(null==Wn)return;if(null==_n||Fn.has(_n))return;Wn.style.visibility="visible",Wn.style.opacity="1"}(),Dn.setPaused(jn),Nn.style.display=""}}))}function ro(){null!=Dn&&(jn=!0,Dn.setPaused(jn),yn(),null!=On&&null!=On.srcObject&&On.srcObject instanceof MediaStream&&(On.srcObject.getTracks().forEach((e=>e.stop())),On=null),function(){if(null==Wn)return;Wn.style.visibility="hidden",Wn.style.opacity="0"}(),Dn.stopCamera(),Nn.style.display="none")}function io(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function ao(e,n,o){return t(this,void 0,void 0,(function*(){yield new Promise((r=>{n.onloadedmetadata=()=>{n.play().then((()=>t(this,void 0,void 0,(function*(){e.setVideoElement(n,o),r()}))))}}))}))}function so(e){null!=Wn&&(Fn.has(e)||(Fn.add(e),Wn.style.opacity="0"))}function lo(e,t,n,o,r,i,a){const s=Dn.getTransformationBetween(e,t),l=Mn(Tn(),s),c=function(e,t){var n=new En(3);Rn(n,t);var o=1/n[0],r=1/n[1],i=1/n[2],a=t[0]*o,s=t[1]*r,l=t[2]*i,c=t[4]*o,u=t[5]*r,d=t[6]*i,h=t[8]*o,p=t[9]*r,f=t[10]*i,g=a+u+f,m=0;return g>0?(m=2*Math.sqrt(g+1),e[3]=.25*m,e[0]=(d-p)/m,e[1]=(h-l)/m,e[2]=(s-c)/m):a>u&&a>f?(m=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/m,e[0]=.25*m,e[1]=(s+c)/m,e[2]=(h+l)/m):u>f?(m=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/m,e[0]=(s+c)/m,e[1]=.25*m,e[2]=(d+p)/m):(m=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/m,e[0]=(h+l)/m,e[1]=(d+p)/m,e[2]=.25*m),e}(kn(),s);xn(s,c,l,Pn(a,a,a));const u=Dn.getTransformationBetween(t,n),d=Mn(Tn(),u);xn(u,kn(),d,Rn(Tn(),u));const h=Sn(An(),s,u),p=Mn(Tn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let g;try{g=Dn.getTransformationBetween(n,o)}catch(e){return f}const m=Sn(An(),u,g),v=Sn(An(),s,m),w=Pn(p[0],i[1],i[2]),y=In(Tn(),w,function(e,t){var n=t[0],o=t[1],r=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],g=t[13],m=t[14],v=t[15],w=n*s-o*a,y=n*l-r*a,b=n*c-i*a,E=o*l-r*s,A=o*c-i*s,S=r*c-i*l,M=u*g-d*f,R=u*m-h*f,x=u*v-p*f,T=d*m-h*g,P=d*v-p*g,C=h*v-p*m,I=w*C-y*P+b*T+E*x-A*R+S*M;return I?(I=1/I,e[0]=(s*C-l*P+c*T)*I,e[1]=(r*P-o*C-i*T)*I,e[2]=(g*S-m*A+v*E)*I,e[3]=(h*A-d*S-p*E)*I,e[4]=(l*x-a*C-c*R)*I,e[5]=(n*C-r*x+i*R)*I,e[6]=(m*b-f*S-v*y)*I,e[7]=(u*S-h*b+p*y)*I,e[8]=(a*P-s*x+c*M)*I,e[9]=(o*x-n*P-i*M)*I,e[10]=(f*A-g*b+v*w)*I,e[11]=(d*b-u*A-p*w)*I,e[12]=(s*R-a*T-l*M)*I,e[13]=(n*T-o*R+r*M)*I,e[14]=(g*y-f*E-m*w)*I,e[15]=(u*E-d*y+h*w)*I,e):null}(An(),v));let b=Dn.getClosestPointOnMesh(o,y);try{const e=Dn.getClosestPointOnMesh(r,y);Cn(y,e)<Cn(y,b)&&(b=e)}catch(e){}const E=In(Tn(),b,m);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function co(e){!function(e){mn.push(e)}(e)}function uo(e){!function(e){vn.push(e)}(e)}var ho;function po(){return[ho.Android,ho.iOS,ho.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],o=["Win32","Win64","Windows","WinCE"],r=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==r.indexOf(t)?ho.iOS:-1!==n.indexOf(t)?i?ho.Tablet:ho.MacOS:-1!==o.indexOf(t)?ho.Windows:/Android/.test(e)?ho.Android:/Linux/.test(t)?ho.Linux:i?ho.Tablet:ho.Unknown}return ho.Unknown}())}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(ho||(ho={}));const fo=["AR","3D"];function go(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function mo(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function vo(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function wo(e){const{apiKey:t,sku:o,targetElement:r,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;go(t,"apiKey"),vo(t,"apiKey"),go(o,"sku"),vo(o,"sku"),go(r,"targetElement"),function(e,t){if(!(e instanceof HTMLElement))throw new n(`'${t}' must be an HTMLElement.`)}(r,"targetElement"),null!=i&&function(e,t,o){if("string"!=typeof e)throw new n(`'${t}' must be a string.`);if(!o.includes(e))throw new n(`'${t}' must be ${o.join("' or '")}.`)}(i,"initialState",fo),null!=a&&function(e,t){if("string"!=typeof e&&!Array.isArray(e))throw new n(`'${t}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&vo(s,"baseUrl"),null!=l&&mo(l,"defaultUI"),null!=c&&mo(c,"interactive"),null!=u&&function(e,t,o){for(const r of o){const o=e[r];if(null!=o&&"string"!=typeof o)throw new n(`Value for key '${r}' in '${t}' must be a string.`)}}(u,"strings",St)}let yo=!1;function bo(e){return t(this,void 0,void 0,(function*(){const{targetElement:o}=e;R.update(e.baseUrl),ln();const{trackEvent:r}=function(e){const t=performance.now(),n=Zt();return{trackEvent:(o,r={})=>{r=Object.assign(Object.assign({},r),{pluginVersion:S,userAgent:an,sessionId:on,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),cn((()=>{window.ShopAR__analytics.trackEventImpl(o,r)}))}}}(e.apiKey);r("visionSetup");const i=yield function(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:e,sid:d()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield o.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(e.apiKey);r("visionApiResponse",i);const{arKey:a}=i,s=zt(o),{getSetupId:l,findUI:c}=s,u=l();Hn(),Kn();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:g,getUIState:m,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(m()!=Nt.None)throw Error("UI state is not None, this is weird..");v(Nt.AR),h(o),g(!1,!1,!0,!1,void 0,void 0),w(),yield Un,Eo(l(),u);try{r("visionArLaunch"),ro(),Zn("Glasses",["faceInit"]),Yn(p()),yield Xn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),Eo(l(),u),yield oo(),Eo(l(),u)}catch(e){const t=e instanceof Error;throw r("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),b(),ro(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{y()}return yo=!0,{registerFacePoseListener:e=>{yo&&(r("registerFacePoseListener"),co(e))},registerFaceMeasurementListener:e=>{yo&&(r("registerFaceMeasurementListener"),uo(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){yo&&(r("switchEffect",{arUrl:e}),function(e){Dn.switchEffect(e)}(e))})),clearEffect:()=>{yo&&(r("clearEffect"),Dn.clearEffect())},close:()=>{if(yo){if(yo=!1,r("visionClose"),m()!==Nt.AR)throw new n("AR not launched.");ro(),v(Nt.None)}}}}))}function Eo(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function Ao(e){var o,r;return t(this,void 0,void 0,(function*(){wo(e);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=e,u=null==e.zoomEnabled||e.zoomEnabled,h=!0===e.alwaysTransparentBackground;!function(e){const t=getComputedStyle(e);if(!["static","relative"].includes(t.position))throw new n(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${t.position}'.`)}(s),R.update(e.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(At,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(At[t]=n)}}(e.strings);const p=null!=c?xe(c):null,y=null!=(null==p?void 0:p.theta)?ce(p.theta):null,b=null!=(null==p?void 0:p.phi)?ce(p.phi):null,M=null!=(null==p?void 0:p.fov)?ce(p.fov):null,x=function(e,o,r,i,a,s){return t(this,void 0,void 0,(function*(){const l=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:e,sku:o,sid:d()},null!=r&&{yaw:`${m(g(r))}`}),null!=i&&{pitch:`${m(g(i))}`}),null!=a&&{fov:`${m(g(a))}`}),s&&{forcedTransparency:`${s}`}))}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield l.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==b?void 0:b.get(),null==M?void 0:M.get(),h),T=zt(s),{getSetupId:P,findUI:C,findQR:I,findThree:k}=T,L=P();ln();const{trackEvent:U,arInteracted:$,previewInteracted:D}=function(e,t){const n=performance.now(),o=Zt();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,u(tn,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const u=(r,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:an,pluginVersion:S,sessionId:on,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),cn((()=>{window.ShopAR__analytics.trackEventImpl(r,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);U("setup",{hostname:window.location.hostname});const O=yield x;U("apiResponse",O);const{category:_,arUrl:N,arEnvUrl:j,arToneMapping:W,arToneMappingExposure:F,arKey:q,arPromptEnabled:G,arPromptText:z,arPromptImage:B,previewUrl:V,previewEnvUrl:Q,previewToneMapping:H,previewToneMappingExposure:K,previewPosterUrl:X,cameraErrorText:Z,qrPromptText:Y}=O;So(P(),L);const J=null!=N&&function(e){return null!=e&&v.includes(e)}(_),ee=null==(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled),te=J&&function(e){return null!=e&&w.includes(e)}(_),ne=ee&&te&&!po(),oe=J&&!ne,re=null!=V;So(P(),L);const{setTargetElement:ie,getDeepARTarget:ae,getDeepARPrompt:se,customizeDeepARPrompt:le,customizeCameraError:ue,customizeQRPrompt:de,setVisibilityParameters:he,getUIState:pe,setUIState:fe,setDefaultUIActions:ge,startDeepARLoading:me,stopDeepARLoading:ve,startThreeLoading:we,stopThreeLoading:ye,setThreePosterUrl:be,showCameraError:Ee}=C();ie(s);he(null==e.defaultUI||e.defaultUI,ne,oe,re,_,l),le(null!=z?z:"",null!=B?B:""),ue(Z),de(Y),be(X),function(e,t){const o=e.parentNode;if(null==o)throw new n("Parent node missing.");new MutationObserver((n=>{for(const o of n)for(const n of o.removedNodes)if(n===e)return void t()})).observe(o,{childList:!0})}(s,(()=>{pe()!==Nt.QR||Ae()||Me(),pe()!==Nt.AR||jn||ro(),pe()!==Nt.Preview||Ce()||ke(),fe(Nt.None),Le(),function(e){Gt.delete(e)}(s)}));const{qrPaused:Ae,qrDraw:Se,qrPause:Me}=I(),{threeInit:Re,threeParse:Te,threeLoad:Pe,threePaused:Ce,threeResume:Ie,threePause:ke,threeDestroy:Le,threeSetZoomEnabled:Ue,threeSetForcedTransparency:$e,threeSetToneMapping:De,threeIsInteractive:Oe,threeSetInteractive:_e,threeSetOnInteracted:Ne,threeInitPromptAnimation:je,threeInitThetaAnimation:We,threeInitPhiAnimation:Fe,threeInitFovAnimation:qe,threeRenderOnce:Ge}=k(),ze=null==e.interactive||e.interactive;_e(ze);let Be=0;if(pe()===Nt.QR){if(!Ae())if(ne){U(Yt);try{yield Se(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Me(),fe(Nt.None)}else if(pe()===Nt.AR){if(!jn)if(oe&&!yo){U(Jt),Hn(),"Glasses"===_&&Kn();const e=null!=j?yield E(j):void 0;So(P(),L);const t=yield E(N);So(P(),L),Bt(T),Zn(_),Yn(ae()),Jn(G?se():null),yield to(t,e,`${N}${j}`),no(W,F),eo($),So(P(),L)}else ro(),fe(Nt.None)}else if(pe()===Nt.Preview&&!Ce())if(re){U(en),mt(),we();const e=255,t=yield A(V,(new Date).getTime()+e,Math.random()*e);So(P(),L);const n=yield E(null!=Q?Q:`${R}/env/default.hdr`);So(P(),L),yield ot,So(P(),L),Re(),So(P(),L);const o=yield Te(t,n,`${V}${Q}`);So(P(),L),Pe(o,_),Ue(u),$e(h),De(null!=H?H:"ACES",null!=K?K:1),Ne(D),je(),null!=p&&(We(y),Fe(b),qe(M)),Ge(),Ie(),ye()}else ke(),fe(Nt.None);const Ve=()=>t(this,void 0,void 0,(function*(){if(ne)try{U(Yt);const e=++Be;if(pe()===Nt.Preview&&re&&!Ce()&&ke(),fe(Nt.QR),yield Se(i,a),Be!==e)return;return void So(P(),L)}catch(e){const t=e instanceof Error;throw U("qrLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`QR failed: ${t?e.message:"Unknown error."}`)}if(!oe)throw new n("Model does not have AR enabled.");try{U(Jt);const e=++Be;pe()===Nt.Preview&&re&&!Ce()&&ke(),Bt(T),fe(Nt.AR),Hn(),"Glasses"===_&&Kn(),me();const t=null!=j?yield E(j):void 0;So(P(),L);const n=yield E(N);if(Be!==e)return;if(So(P(),L),yield Un,Be!==e)return;if(So(P(),L),ro(),Zn(_),Yn(ae()),Jn(G?se():null),yield Xn({licenseKey:q}),Be!==e)return;if(So(P(),L),yield to(n,t,`${N}${j}`),no(W,F),eo($),Be!==e)return;if(So(P(),L),yield oo(),Be!==e)return;So(P(),L)}catch(e){const t=e instanceof Error;throw U("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Ee(),ro(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{ve()}})),Qe=()=>t(this,void 0,void 0,(function*(){if(!re)throw new n("Model does not have 3D enabled.");try{U(en);const e=++Be;pe()===Nt.AR&&(oe&&!jn&&ro(),Me()),fe(Nt.Preview),mt(),we();const t=255,n=yield A(V,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;So(P(),L);const o=yield E(null!=Q?Q:`${R}/env/default.hdr`);if(Be!==e)return;if(So(P(),L),yield ot,Be!==e)return;if(So(P(),L),Re(),Be!==e)return;So(P(),L);const r=yield Te(n,o,`${V}${Q}`);if(Be!==e)return;So(P(),L),Pe(r,_),Ue(u),$e(h),De(null!=H?H:"ACES",null!=K?K:1),Ne(D),je(),null!=p&&(We(y),Fe(b),qe(M)),Ge(),Ie(),ye()}catch(e){const t=e instanceof Error;throw U("previewLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`3D failed: ${t?e.message:"Unknown error."}`)}})),He=()=>t(this,void 0,void 0,(function*(){pe()!==Nt.None&&("AR"!==l||pe()!==Nt.AR&&pe()!==Nt.QR)&&("3D"===l&&pe()===Nt.Preview||(++Be,pe()===Nt.QR||pe()===Nt.AR?(oe&&!jn&&ro(),Me()):pe()===Nt.Preview&&re&&!Ce()&&ke(),fe(Nt.None),"AR"!==l?"3D"!==l||(yield Qe()):yield Ve()))}));return ge(Ve,Qe,He),"AR"===l?(yield Ve(),So(P(),L)):"3D"===l&&(yield Qe(),So(P(),L)),yo=!1,{launchAR:J?Ve:void 0,launch3D:re?Qe:void 0,closeAR:J?()=>t(this,void 0,void 0,(function*(){pe()!==Nt.AR&&pe()!==Nt.QR||"AR"!==l&&(++Be,oe&&!jn&&ro(),Me(),fe(Nt.None),"3D"!==l||(yield Qe()))})):void 0,close3D:re?()=>t(this,void 0,void 0,(function*(){pe()===Nt.Preview&&"3D"!==l&&(++Be,re&&!Ce()&&ke(),fe(Nt.None),"AR"!==l||(yield Ve()))})):void 0,close:J||re?He:void 0,isInteractive:()=>Oe(),setInteractive:e=>_e(e)}}))}function So(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const Mo={setup:function(e){return t(this,void 0,void 0,(function*(){return bo(e)}))}},Ro={setup:function(e){return t(this,void 0,void 0,(function*(){return function(e,o){return t(this,void 0,void 0,(function*(){try{return o()}catch(t){throw t instanceof Error?new n(`${e} failed: ${t.message}`):(console.error(t),new n(`${e} failed.`))}}))}("setup",(()=>Ao(e)))}))},version:S};e.PREVIEW_STATES=fo,e.PluginError=n,e.plugin=Ro,e.vision=Mo}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shopar-plugin",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4-alpha.0",
|
|
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",
|