shopar-plugin 0.7.2 → 0.7.3-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/shopar-analytics.js +1 -1
- package/dist/shopar-plugin.esm.js +1 -1
- package/dist/shopar-plugin.js +1 -1
- package/dist/shopar-qr.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ There are two distinct ways of integrating the plugin: via Script tag and via NP
|
|
|
32
32
|
Add the following script to your HTML.
|
|
33
33
|
|
|
34
34
|
```html
|
|
35
|
-
<script src="https://cdn.jsdelivr.net/npm/shopar-plugin@
|
|
35
|
+
<script src="https://cdn.jsdelivr.net/npm/shopar-plugin@{{VERSION}}/dist/shopar-plugin.js"></script>
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
It is possible to use a different CDN instead of [jsDelivr](https://www.jsdelivr.com/) (e.g. [cdnjs](https://cdnjs.com/), [unpkg](https://www.unpkg.com/)), or even a relative path if the plugin is distributed as a static asset to your app. Just make sure to set the `baseUrl` parameter accordingly (see [setup options](#shoparpluginsetupoptions) for more details).
|
|
@@ -153,7 +153,7 @@ Options used for the plugin setup:
|
|
|
153
153
|
- `baseUrl` (optional)
|
|
154
154
|
- Type: `string`
|
|
155
155
|
- If provided, defines where the additional ShopAR plugin files are fetched from.
|
|
156
|
-
- Default value: `https://cdn.jsdelivr.net/npm/shopar-plugin@
|
|
156
|
+
- Default value: `https://cdn.jsdelivr.net/npm/shopar-plugin@{{VERSION}}/dist`
|
|
157
157
|
- `defaultUI` (optional)
|
|
158
158
|
- Type: `boolean`
|
|
159
159
|
- If provided and set to `false`, disables the default UI such as buttons, loading and error views.
|
package/dist/shopar-analytics.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ShopAR__analytics={})}(this,(function(t){"use strict";function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function i(t){return Number.isInteger(t)&&t>=0}function n(t){this.name="ArgumentError",this.message=t}var s=e((function(t,e){if(e=e||{},"function"!=typeof t)throw new n("fetch must be a function");if("object"!=typeof e)throw new n("defaults must be an object");if(void 0!==e.retries&&!i(e.retries))throw new n("retries must be a positive integer");if(void 0!==e.retryDelay&&!i(e.retryDelay)&&"function"!=typeof e.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");if(void 0!==e.retryOn&&!Array.isArray(e.retryOn)&&"function"!=typeof e.retryOn)throw new n("retryOn property expects an array or function");return e=Object.assign({retries:3,retryDelay:1e3,retryOn:[]},e),function(s,r){var a=e.retries,o=e.retryDelay,c=e.retryOn;if(r&&void 0!==r.retries){if(!i(r.retries))throw new n("retries must be a positive integer");a=r.retries}if(r&&void 0!==r.retryDelay){if(!i(r.retryDelay)&&"function"!=typeof r.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");o=r.retryDelay}if(r&&r.retryOn){if(!Array.isArray(r.retryOn)&&"function"!=typeof r.retryOn)throw new n("retryOn property expects an array or function");c=r.retryOn}return new Promise((function(e,i){var n=function(n){var o="undefined"!=typeof Request&&s instanceof Request?s.clone():s;t(o,r).then((function(t){if(Array.isArray(c)&&-1===c.indexOf(t.status))e(t);else if("function"==typeof c)try{return Promise.resolve(c(n,null,t)).then((function(i){i?u(n,null,t):e(t)})).catch(i)}catch(t){i(t)}else n<a?u(n,null,t):e(t)})).catch((function(t){if("function"==typeof c)try{Promise.resolve(c(n,t,null)).then((function(e){e?u(n,t,null):i(t)})).catch((function(t){i(t)}))}catch(t){i(t)}else n<a?u(n,t,null):i(t)}))};function u(t,e,i){var s="function"==typeof o?o(t,e,i):o;setTimeout((function(){n(++t)}),s)}n(0)}))}}));var r,a;!function(t){t.unknown="unknown",t.user="user",t.organization="organization",t.anonymous="anonymous"}(r||(r={})),function(t){t.api="api",t.query="query",t.ingest="ingest"}(a||(a={}));class o{scope;type;value;remaining;reset;constructor(t=r.unknown,e=a.api,i=0,n=-1,s=new Date){this.scope=t,this.type=e,this.value=i,this.remaining=n,this.reset=s}}function c(t,e,i,n,s){let a=new o;const c=t.headers.get(e.toLowerCase())||r.unknown;a.scope=r[c];const u=t.headers.get(i.toLowerCase())||"",h=parseInt(u,10);isNaN(h)||(a.value=h);const l=t.headers.get(n.toLowerCase())||"",f=parseInt(l,10);isNaN(f)||(a.remaining=f);const m=t.headers.get(s.toLowerCase())||"",y=parseInt(m,10);return isNaN(y)||(a.reset=new Date(1e3*y)),a}class u{config;constructor(t){this.config=t}async doReq(t,e,i={},n={}){let r=`${this.config.baseUrl}${t}`;const o=this._prepareSearchParams(n);o&&(r+=`?${o.toString()}`);const u={...this.config.headers,...i.headers},l=await s(fetch)(r,{retries:3,retryDelay:function(t,e,i){return 1e3*Math.pow(2,t)},retryOn:[503,502,504,500],headers:u,method:e,body:i.body?i.body:void 0});if(204===l.status)return l;if(429==l.status){const t=function(t){let e;return t.url?.endsWith("/ingest")?(e=c(t,"","X-IngestLimit-Limit","X-IngestLimit-Remaining","X-IngestLimit-Reset"),e.type=a.ingest):t.url?.endsWith("/query")||t.url?.endsWith("/_apl")?(e=c(t,"","X-QueryLimit-Limit","X-QueryLimit-Remaining","X-QueryLimit-Reset"),e.type=a.query):(e=c(t,"X-RateLimit-Scope","X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset"),e.type=a.api),e}(l);return Promise.reject(new h(t))}if(401===l.status)return Promise.reject(new Error("Forbidden"));if(l.status>=400){const t=await l.json();return Promise.reject(new Error(t.message))}return await l.json()}post(t,e={},i={}){return this.doReq(t,"POST",e,i)}get(t,e={},i={}){return this.doReq(t,"GET",e,i)}put(t,e={},i={}){return this.doReq(t,"PUT",e,i)}delete(t,e={},i={}){return this.doReq(t,"DELETE",e,i)}_prepareSearchParams=t=>{const e=new URLSearchParams;let i=!1;return Object.keys(t).forEach((n=>{t[n]&&(e.append(n,t[n]),i=!0)})),i?e:null}}class h extends Error{limit;shortcircuit;message="";constructor(t,e=!1){super(),this.limit=t,this.shortcircuit=e,Object.setPrototypeOf(this,h.prototype);const i=h.timeUntilReset(t);this.message=`${t.type} limit exceeded, try again in ${i.minutes}m${i.seconds}s`,t.type==a.api&&(this.message=`${t.scope} `+this.message)}static timeUntilReset(t){const e=t.reset.getTime()-(new Date).getTime(),i=Math.floor(e/1e3%60);return{total:e,minutes:Math.floor(e/1e3/60%60),seconds:i}}}class l{client;constructor({orgId:t="",token:e,url:i}){e||console.warn("Missing Axiom token");const n=i??"https://api.axiom.co",s={Accept:"application/json","Content-Type":"application/json",Authorization:"Bearer "+e};"undefined"==typeof window&&(s["User-Agent"]="axiom-js/1.0.0-rc.1"),t&&(s["X-Axiom-Org-Id"]=t),this.client=new u({baseUrl:n,headers:s,timeout:3e3})}}var f,m,y,p,d,g;!function(t){t.TimestampField="_time";t.Service=class extends l{localPath="/v1/datasets";list=()=>this.client.get(this.localPath);get=t=>this.client.get(this.localPath+"/"+t);create=t=>this.client.post(this.localPath,{body:JSON.stringify(t)});update=(t,e)=>this.client.put(this.localPath+"/"+t,{body:JSON.stringify(e)});delete=t=>this.client.delete(this.localPath+"/"+t);trim=(t,e)=>{const i={maxDuration:e};return this.client.post(this.localPath+"/"+t+"/trim",{body:JSON.stringify(i)})}}}(f||(f={})),function(t){t.Service=class extends l{current=()=>this.client.get("/v1/user")}}(m||(m={}));class w{ingestFn;id;options;events=[];activeFlush=Promise.resolve();nextFlush=setTimeout((()=>{}),0);lastFlush=new Date;constructor(t,e,i){this.ingestFn=t,this.id=e,this.options=i}ingest=t=>{Array.isArray(t)?this.events=this.events.concat(t):this.events.push(t),this.events.length>=1e3||this.lastFlush.getTime()<Date.now()-1e3?(clearTimeout(this.nextFlush),this.activeFlush=this.flush()):(clearTimeout(this.nextFlush),this.nextFlush=setTimeout((()=>{this.activeFlush=this.flush()}),1e3))};flush=async()=>{const t=this.events.splice(0,this.events.length);if(clearTimeout(this.nextFlush),await this.activeFlush,0===t.length)return void(this.lastFlush=new Date);const e=await this.ingestFn(this.id,t,this.options);return this.lastFlush=new Date,e}}class v extends l{datasets;users;localPath="/v1";constructor(t){super(t),this.datasets=new f.Service(t),this.users=new m.Service(t)}ingestRaw=(t,e,i=y.JSON,n=p.Identity,s)=>this.client.post(this.localPath+"/datasets/"+t+"/ingest",{headers:{"Content-Type":i,"Content-Encoding":n},body:e},{"timestamp-field":s?.timestampField,"timestamp-format":s?.timestampFormat,"csv-delimiter":s?.csvDelimiter});queryLegacy=(t,e,i)=>this.client.post(this.localPath+"/datasets/"+t+"/query",{body:JSON.stringify(e)},{"streaming-duration":i?.streamingDuration,nocache:i?.noCache});query=(t,e)=>{const i={apl:t};return e?.startTime&&(i.startTime=e?.startTime),e?.endTime&&(i.endTime=e?.endTime),this.client.post(this.localPath+"/datasets/_apl",{body:JSON.stringify(i)},{"streaming-duration":e?.streamingDuration,nocache:e?.noCache,format:"legacy"})};aplQuery=(t,e)=>this.query(t,e)}class
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ShopAR__analytics={})}(this,(function(t){"use strict";function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function i(t){return Number.isInteger(t)&&t>=0}function n(t){this.name="ArgumentError",this.message=t}var s=e((function(t,e){if(e=e||{},"function"!=typeof t)throw new n("fetch must be a function");if("object"!=typeof e)throw new n("defaults must be an object");if(void 0!==e.retries&&!i(e.retries))throw new n("retries must be a positive integer");if(void 0!==e.retryDelay&&!i(e.retryDelay)&&"function"!=typeof e.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");if(void 0!==e.retryOn&&!Array.isArray(e.retryOn)&&"function"!=typeof e.retryOn)throw new n("retryOn property expects an array or function");return e=Object.assign({retries:3,retryDelay:1e3,retryOn:[]},e),function(s,r){var a=e.retries,o=e.retryDelay,c=e.retryOn;if(r&&void 0!==r.retries){if(!i(r.retries))throw new n("retries must be a positive integer");a=r.retries}if(r&&void 0!==r.retryDelay){if(!i(r.retryDelay)&&"function"!=typeof r.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");o=r.retryDelay}if(r&&r.retryOn){if(!Array.isArray(r.retryOn)&&"function"!=typeof r.retryOn)throw new n("retryOn property expects an array or function");c=r.retryOn}return new Promise((function(e,i){var n=function(n){var o="undefined"!=typeof Request&&s instanceof Request?s.clone():s;t(o,r).then((function(t){if(Array.isArray(c)&&-1===c.indexOf(t.status))e(t);else if("function"==typeof c)try{return Promise.resolve(c(n,null,t)).then((function(i){i?u(n,null,t):e(t)})).catch(i)}catch(t){i(t)}else n<a?u(n,null,t):e(t)})).catch((function(t){if("function"==typeof c)try{Promise.resolve(c(n,t,null)).then((function(e){e?u(n,t,null):i(t)})).catch((function(t){i(t)}))}catch(t){i(t)}else n<a?u(n,t,null):i(t)}))};function u(t,e,i){var s="function"==typeof o?o(t,e,i):o;setTimeout((function(){n(++t)}),s)}n(0)}))}}));var r,a;!function(t){t.unknown="unknown",t.user="user",t.organization="organization",t.anonymous="anonymous"}(r||(r={})),function(t){t.api="api",t.query="query",t.ingest="ingest"}(a||(a={}));class o{scope;type;value;remaining;reset;constructor(t=r.unknown,e=a.api,i=0,n=-1,s=new Date){this.scope=t,this.type=e,this.value=i,this.remaining=n,this.reset=s}}function c(t,e,i,n,s){let a=new o;const c=t.headers.get(e.toLowerCase())||r.unknown;a.scope=r[c];const u=t.headers.get(i.toLowerCase())||"",h=parseInt(u,10);isNaN(h)||(a.value=h);const l=t.headers.get(n.toLowerCase())||"",f=parseInt(l,10);isNaN(f)||(a.remaining=f);const m=t.headers.get(s.toLowerCase())||"",y=parseInt(m,10);return isNaN(y)||(a.reset=new Date(1e3*y)),a}class u{config;constructor(t){this.config=t}async doReq(t,e,i={},n={}){let r=`${this.config.baseUrl}${t}`;const o=this._prepareSearchParams(n);o&&(r+=`?${o.toString()}`);const u={...this.config.headers,...i.headers},l=await s(fetch)(r,{retries:3,retryDelay:function(t,e,i){return 1e3*Math.pow(2,t)},retryOn:[503,502,504,500],headers:u,method:e,body:i.body?i.body:void 0});if(204===l.status)return l;if(429==l.status){const t=function(t){let e;return t.url?.endsWith("/ingest")?(e=c(t,"","X-IngestLimit-Limit","X-IngestLimit-Remaining","X-IngestLimit-Reset"),e.type=a.ingest):t.url?.endsWith("/query")||t.url?.endsWith("/_apl")?(e=c(t,"","X-QueryLimit-Limit","X-QueryLimit-Remaining","X-QueryLimit-Reset"),e.type=a.query):(e=c(t,"X-RateLimit-Scope","X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset"),e.type=a.api),e}(l);return Promise.reject(new h(t))}if(401===l.status)return Promise.reject(new Error("Forbidden"));if(l.status>=400){const t=await l.json();return Promise.reject(new Error(t.message))}return await l.json()}post(t,e={},i={}){return this.doReq(t,"POST",e,i)}get(t,e={},i={}){return this.doReq(t,"GET",e,i)}put(t,e={},i={}){return this.doReq(t,"PUT",e,i)}delete(t,e={},i={}){return this.doReq(t,"DELETE",e,i)}_prepareSearchParams=t=>{const e=new URLSearchParams;let i=!1;return Object.keys(t).forEach((n=>{t[n]&&(e.append(n,t[n]),i=!0)})),i?e:null}}class h extends Error{limit;shortcircuit;message="";constructor(t,e=!1){super(),this.limit=t,this.shortcircuit=e,Object.setPrototypeOf(this,h.prototype);const i=h.timeUntilReset(t);this.message=`${t.type} limit exceeded, try again in ${i.minutes}m${i.seconds}s`,t.type==a.api&&(this.message=`${t.scope} `+this.message)}static timeUntilReset(t){const e=t.reset.getTime()-(new Date).getTime(),i=Math.floor(e/1e3%60);return{total:e,minutes:Math.floor(e/1e3/60%60),seconds:i}}}class l{client;constructor({orgId:t="",token:e,url:i}){e||console.warn("Missing Axiom token");const n=i??"https://api.axiom.co",s={Accept:"application/json","Content-Type":"application/json",Authorization:"Bearer "+e};"undefined"==typeof window&&(s["User-Agent"]="axiom-js/1.0.0-rc.1"),t&&(s["X-Axiom-Org-Id"]=t),this.client=new u({baseUrl:n,headers:s,timeout:3e3})}}var f,m,y,p,d,g;!function(t){t.TimestampField="_time";t.Service=class extends l{localPath="/v1/datasets";list=()=>this.client.get(this.localPath);get=t=>this.client.get(this.localPath+"/"+t);create=t=>this.client.post(this.localPath,{body:JSON.stringify(t)});update=(t,e)=>this.client.put(this.localPath+"/"+t,{body:JSON.stringify(e)});delete=t=>this.client.delete(this.localPath+"/"+t);trim=(t,e)=>{const i={maxDuration:e};return this.client.post(this.localPath+"/"+t+"/trim",{body:JSON.stringify(i)})}}}(f||(f={})),function(t){t.Service=class extends l{current=()=>this.client.get("/v1/user")}}(m||(m={}));class w{ingestFn;id;options;events=[];activeFlush=Promise.resolve();nextFlush=setTimeout((()=>{}),0);lastFlush=new Date;constructor(t,e,i){this.ingestFn=t,this.id=e,this.options=i}ingest=t=>{Array.isArray(t)?this.events=this.events.concat(t):this.events.push(t),this.events.length>=1e3||this.lastFlush.getTime()<Date.now()-1e3?(clearTimeout(this.nextFlush),this.activeFlush=this.flush()):(clearTimeout(this.nextFlush),this.nextFlush=setTimeout((()=>{this.activeFlush=this.flush()}),1e3))};flush=async()=>{const t=this.events.splice(0,this.events.length);if(clearTimeout(this.nextFlush),await this.activeFlush,0===t.length)return void(this.lastFlush=new Date);const e=await this.ingestFn(this.id,t,this.options);return this.lastFlush=new Date,e}}class v extends l{datasets;users;localPath="/v1";constructor(t){super(t),this.datasets=new f.Service(t),this.users=new m.Service(t)}ingestRaw=(t,e,i=y.JSON,n=p.Identity,s)=>this.client.post(this.localPath+"/datasets/"+t+"/ingest",{headers:{"Content-Type":i,"Content-Encoding":n},body:e},{"timestamp-field":s?.timestampField,"timestamp-format":s?.timestampFormat,"csv-delimiter":s?.csvDelimiter});queryLegacy=(t,e,i)=>this.client.post(this.localPath+"/datasets/"+t+"/query",{body:JSON.stringify(e)},{"streaming-duration":i?.streamingDuration,nocache:i?.noCache});query=(t,e)=>{const i={apl:t};return e?.startTime&&(i.startTime=e?.startTime),e?.endTime&&(i.endTime=e?.endTime),this.client.post(this.localPath+"/datasets/_apl",{body:JSON.stringify(i)},{"streaming-duration":e?.streamingDuration,nocache:e?.noCache,format:"legacy"})};aplQuery=(t,e)=>this.query(t,e)}class b extends v{batch={};ingest=(t,e,i)=>{const n=function(t,e){return`${t}:${e?.timestampField||"-"}:${e?.timestampFormat||"-"}:${e?.csvDelimiter||"-"}`}(t,i);return this.batch[n]||(this.batch[n]=new w(((t,e,i)=>{const n=(Array.isArray(e)?e:[e]).map((t=>JSON.stringify(t))).join("\n");return this.ingestRaw(t,n,y.NDJSON,p.Identity,i)}),t,i)),this.batch[n].ingest(e)};flush=async()=>{let t=[];for(const e in this.batch)t.push(this.batch[e].flush());await Promise.all(t)}}let x;!function(t){t.JSON="application/json",t.NDJSON="application/x-ndjson",t.CSV="text/csv"}(y||(y={})),function(t){t.Identity="",t.GZIP="gzip"}(p||(p={})),function(t){t.Count="count",t.Distinct="distinct",t.Sum="sum",t.Avg="avg",t.Min="min",t.Max="max",t.Topk="topk",t.Percentiles="percentiles",t.Histogram="histogram",t.Variance="variance",t.Stdev="stdev",t.ArgMin="argmin",t.ArgMax="argmax",t.MakeSet="makeset",t.MakeSetIf="makesetif",t.CountIf="countif",t.CountDistinctIf="distinctif"}(d||(d={})),function(t){t.And="and",t.Or="or",t.Not="not",t.Equal="==",t.NotEqual="!=",t.Exists="exists",t.NotExists="not-exists",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.LessThan="<",t.LessThanOrEqualTo="<=",t.Gt="gt",t.Gte="gte",t.Lt="lt",t.Lte="lte",t.StartsWith="starts-with",t.NotStartsWith="not-starts-with",t.EndsWith="ends-with",t.NotEndsWith="not-ends-with",t.Contains="contains",t.NotContains="not-contains",t.Regexp="regexp",t.NotRegexp="not-regexp"}(g||(g={})),t.initializeImpl=function(){x=new b({token:"xaat-16d05fdd-4ab9-4990-acba-7cee24974bfb"})},t.trackEventImpl=function(t,e){x.ingest("shopar-plugin-alpha",Object.assign({name:t},e))}}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class t extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const n=[Uint8Array,Uint32Array],r=n.length-2,o=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],i=[2,12,7,1],a=window[o[i[i[r]]]][o[i[i[i.length-1]]]],s=a.charCodeAt(r),l=s^s,c=new n[1]([l]);function u(){const e=(new TextEncoder).encode(a),t=o.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[o[t[2]]](String.fromCodePoint(...e))}const d=[1e3,2e3,4e3],h=d.length;function p(t,n=0){return e(this,void 0,void 0,(function*(){try{return yield t()}catch(e){if(n>=h)throw e;return yield new Promise((e=>setTimeout(e,d[n]))),p(t,n+1)}}))}function f(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const g=["Glasses","Shoes","Watches"],v=["Shoes"];const w="0.7.2";let y=`https://cdn.jsdelivr.net/npm/shopar-plugin@${w}/dist`;const b={update:e=>{null!=e&&(y=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>y};function E(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let A;const S=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let R,M,C;function P(e){const t=function(e){const t=new M.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,M.ClampToEdgeWrapping,M.ClampToEdgeWrapping,M.LinearFilter,M.LinearFilter,1,M.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(C.parse(e));return t.mapping=M.EquirectangularReflectionMapping,t.colorSpace=M.LinearSRGBColorSpace,t}const I=45,T=45,x=3,k=1.5,L=1,U=.5;let $,D,O,_,N,j=!1;const F=4,W=.001,q=1e-7,G=10,z=11,B=1/(z-1),Q="function"==typeof Float32Array;function V(e,t,n,r){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===r)return J;const o=Q?new Float32Array(z):new Array(z);for(let t=0;t<z;++t)o[t]=Z(t*B,e,n);function i(t){let r=0,i=1;const a=z-1;for(;i!==a&&o[i]<=t;++i)r+=B;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*B,l=Y(s,e,n);return l>=W?function(e,t,n,r){for(let o=0;o<F;++o){const o=Y(t,n,r);if(0===o)return t;t-=(Z(t,n,r)-e)/o}return t}(t,s,e,n):0===l?s:function(e,t,n,r,o){let i,a,s=0;do{a=t+(n-t)/2,i=Z(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>q&&++s<G);return a}(t,r,r+B,e,n)}return function(e){return 0===e||1===e?e:Z(i(e),t,r)}}function K(e,t){return 1-3*t+3*e}function H(e,t){return 3*t-6*e}function X(e){return 3*e}function Z(e,t,n){return((K(t,n)*e+H(t,n))*e+X(t))*e}function Y(e,t,n){return 3*K(t,n)*e*e+2*H(t,n)*e+X(t)}function J(e){return e}function ee(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=V(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function te(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:ee(n)})));let r=0,o=n[0].value;return{reset:()=>{r=0},update:e=>{for(r+=e;r>=t;)r-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(r>=t.time&&r<i.time){const e=t.interpolate((r-t.time)/(i.time-t.time));o=t.value+e*(i.value-t.value)}}},get:()=>o}}const ne="#",re="time",oe="interpolation",ie="yaw",ae="pitch",se="fov",le=[re,ie,ae,se,oe],ce="s",ue="ms",de=1e3,he="deg",pe="rad",fe=Math.PI/180,me="ease-in-out",ge="cubic-bezier(",ve=")";function we(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(ne);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(!le.includes(r))throw new Error(`Invalid token in header: '${r}'.`);if(t.includes(r))throw new Error(`Duplicate token in header: '${r}'.`);t.push(r)}if(!t.includes(re))throw new Error(`Missing required token: '${re}'.`);return t}(t.split(/\s+/)),o={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=ye(r,e);null!=t&&(null==o.theta&&(o.theta=[]),o.theta.push(t)),null!=n&&(null==o.phi&&(o.phi=[]),o.phi.push(n)),null!=i&&(null==o.fov&&(o.fov=[]),o.fov.push(i))}if(0===Object.values(o).length)throw new Error("At least one parameter should be animated.");return o}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const r of e){const{time:e,pitch:o,yaw:i,fov:a}=r;if(null==e)throw new Error("Time missing.");const s=Ee(null!==(t=r.interpolation)&&void 0!==t?t:me);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*fe,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*fe,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*fe,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function ye(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const r=e.indexOf(re),o=function(e){if(e.endsWith(ue))return Se(e.substring(0,e.length-ue.length));if(e.endsWith(ce))return Se(e.substring(0,e.length-ce.length))*de;return Se(e)}(n[r]),i=e.indexOf(oe),a=Ee(-1===i?me:n[i]),s={};for(let t=0;t<n.length;t++){if(t===r||t===i)continue;const l=e[t],c=n[t];switch(l){case ie:s.theta={time:o,value:be(c),interpolation:a};break;case ae:s.phi={time:o,value:be(c),interpolation:a};break;case se:s.fov={time:o,value:be(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function be(e){return e.endsWith(he)?Se(e.substring(0,e.length-he.length))*fe:e.endsWith(pe)?Se(e.substring(0,e.length-pe.length)):Se(e)*fe}function Ee(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ae(0,0,1,1);if("sine"===e)return Ae(.37,0,.63,1);if("sine-in"===e)return Ae(.12,0,.39,0);if("sine-out"===e)return Ae(.61,1,.88,1);if("ease"===e)return Ae(.25,.1,.25,1);if("ease-in"===e)return Ae(.42,0,1,1);if("ease-out"===e)return Ae(0,0,.58,1);if("ease-in-out"===e)return Ae(.42,0,.58,1);if(e.startsWith(ge)&&e.endsWith(ve)){const t=e.substring(ge.length,e.length-ve.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Se(t[0]),y1:Se(t[1]),x2:Se(t[2]),y2:Se(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ae(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Se(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Re=300,Me=2e3,Ce=.05,Pe=2*Math.PI/32,Ie=Ee("hold"),Te=Ee("sine"),xe=Ee("sine-in"),ke=Ee("sine-out");const Le=8,Ue=2*Math.PI,$e=Ue/12,De=Ue/60,Oe=Ue/60,_e=60,Ne=60,je=1e3,Fe=_e*Ne,We=-1;let qe;const Ge=0,ze=3;let Be,Qe,Ve,Ke=!1,He=1,Xe=1,Ze=1;const Ye=1;let Je;const et=new Map;function tt(t,n,r){const o=t.getContext("2d");null==o&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y,b=!1,E=!1,A=!1,S=!0,L=!1,j=1,F=!0,W=!1,q=0,G=0,z=1,B=1,Q=1;const V={threeInit:()=>{b||(nt(),i=new Qe.Scene,a=new Qe.PerspectiveCamera(25,1,.5),s=new Be.OrbitControls(a,t),s.setInteractionEnabled(F),h=Qe.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new $.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new $.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new $.Group;r.position.y=-.7;const o=new $.PlaneGeometry(I,T).rotateX(Math.PI/2),i=new $.MeshBasicMaterial({map:t.texture,opacity:U,transparent:!0,depthWrite:!1}),a=new $.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new $.Mesh(o);s.visible=!1,r.add(s);const l=new $.OrthographicCamera(-I/2,I/2,T/2,-T/2,0,x);function c(e){s.visible=!0,_.uniforms.tDiffuse.value=t.texture,_.uniforms.h.value=1*e/256,s.material=_,D.setRenderTarget(n),D.render(s,l),N.uniforms.tDiffuse.value=n.texture,N.uniforms.v.value=1*e/256,s.material=N,D.setRenderTarget(t),D.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,r.add(l),{shadowGroup:r,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=O;const r=D.getClearAlpha();D.setClearAlpha(0),D.setRenderTarget(t),D.render(e,l),e.overrideMaterial=null,c(k),c(.4*k),D.setRenderTarget(null),D.setClearAlpha(r),e.background=n}}}(i)),b=!0)},threeParse:(t,n,r)=>e(this,void 0,void 0,(function*(){return null!=u&&d===r||(yield u,u=(()=>e(this,void 0,void 0,(function*(){var e,r;return M=(e=Be).THREE,C=new e.RGBELoader,i.environment=P(n),function(e,t){const{THREE:n}=t;R=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder)}(Je,Be),r=t,R.parseAsync(r.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t,n;e instanceof Qe.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach((e=>e.dispose())):null===(n=e.material)||void 0===n||n.dispose())})),i.clear(),i.add(e.scene);const n=(new Qe.Box3).setFromObject(e.scene);l.position.y=n.min.y-Ge,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof Qe.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(Be.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,Qe.Vector3)),q=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),r=e.getObjectByName("seconds");if(null==t&&null==n&&null==r)return null;let o=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-o.getTime())<je/Le)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=We*$e*(i+a/_e+s/Fe)),null!=n&&(n.rotation.y=We*De*(a+s/Ne)),null!=r&&(r.rotation.y=We*Oe*(s+l/je)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,Je.setAnimationLoop(rt),t.style.visibility="visible",G=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of et.values())if(!e())return!1;return!0}()&&Je.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:Qe.ACESFilmicToneMapping,Linear:Qe.LinearToneMapping,Neutral:Qe.NeutralToneMapping};null!=n[e]&&(h=n[e]),j=t},threeIsInteractive:()=>F,threeSetInteractive:e=>{F=e,null==s||s.setInteractionEnabled(F)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=te([{time:0,value:e,interpolation:Ie},{time:Re,value:e,interpolation:ke},{time:Re+Me/4,value:e+Pe,interpolation:Te},{time:Re+3*Me/4,value:e-Pe,interpolation:xe},{time:Re+Me,value:e,interpolation:Ie},{time:Re+2*Me,value:e,interpolation:Ie}]),s.setTheta(f.get()),m=null,g=null,v=te([{time:0,value:0,interpolation:Ie},{time:Re,value:1,interpolation:Ie},{time:Re+Me,value:0,interpolation:Ie},{time:Re+2*Me,value:0,interpolation:Ie}]),w=te([{time:0,value:0,interpolation:Ie},{time:Re,value:0,interpolation:ke},{time:Re+Me/4,value:-Ce,interpolation:Te},{time:Re+3*Me/4,value:Ce,interpolation:xe},{time:Re+Me,value:0,interpolation:Ie},{time:Re+2*Me,value:0,interpolation:Ie}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{m=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{g=e,null!=e&&s.setFovRadians(e.get())},preRender_:e=>{if(!b||S)return;let t=0!==G?e-G:0;G=e,0===q?L=!0:q<ze&&(t=0),q++,W||(s.hasUserInteracted()?(W=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(t),null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),null!=f&&(s.setTheta(f.get()),L=!0),null!=m&&(s.setPhi(m.get()),L=!0),null!=g&&(s.setFovRadians(g.get()),L=!0))),s.update()&&(L=!0),(null==y?void 0:y.update())&&(L=!0)},shouldRender_:()=>!(!b||S)&&L,render_:()=>{const e=Je.toneMapping,s=Je.toneMappingExposure;Je.toneMapping=h,Je.toneMappingExposure=j,Je.setViewport(0,0,t.width,t.height),Je.setClearColor(new Qe.Color(16777215),E&&!A?1:0),Je.render(i,a),Je.toneMapping=e,Je.toneMappingExposure=s,L=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),Ve.width>0&&Ve.height>0&&o.drawImage(Ve,0,Xe-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=F&&!W?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(z,B)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===z&&n===B&&Ze===Q||(t.width=Math.ceil(e*Ze*Ye),t.height=Math.ceil(n*Ze*Ye),z=e,B=n,Q=Ze,L=!0)},target_:t};return et.set(t,V),V}function nt(){if(Ke)return;Be=window.ShopAR__THREE,Qe=Be.THREE,Ve=document.createElement("canvas");var e,t;Ve.style.position="block",Je=new Qe.WebGLRenderer({powerPreference:"high-performance",canvas:Ve,antialias:!0,alpha:!0}),Je.outputColorSpace=Qe.SRGBColorSpace,Je.toneMapping=Qe.ACESFilmicToneMapping,Je.setClearColor(new Qe.Color(16777215),0),e=Je,t=Be,j||($=t.THREE,D=e,O=new $.MeshDepthMaterial,O.userData.darkness={value:L},O.onBeforeCompile=e=>{e.uniforms.darkness=O.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},O.depthTest=!1,O.depthWrite=!1,_=new $.ShaderMaterial(t.HorizontalBlurShader),_.depthTest=!1,N=new $.ShaderMaterial(t.VerticalBlurShader),N.depthTest=!1,j=!0),ot(),Ke=!0}function rt(e){ot(),Je.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of et.values())t(e),n()&&r()}function ot(){let e=0,t=0;for(const{target_:n}of et.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=S();e=Math.ceil(e*n*Ye),t=Math.ceil(t*n*Ye),e===He&&t===Xe&&n===Ze||(He=e,Xe=t,Ze=n,Je.setSize(He,Xe,!1));for(const{updateSize_:e}of et.values())e()}const it={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},at=Object.keys(it);function st(e){return it[e]}const lt="shopar-error";function ct(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const r=document.createElementNS("http://www.w3.org/2000/svg","image");r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),r.setAttribute("width",e),r.setAttribute("height",e),n.appendChild(r)}return n}function ut(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn";{const e=ct("1.75rem",r);o.appendChild(e)}{const e=document.createElement("span");e.textContent=t,o.appendChild(e)}o.ariaLabel=n;const i=o.style;return i.display="none",i.pointerEvents="auto",o}const dt="shopar-control";const ht="shopar-deepar-output";function pt(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 ft(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 gt(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 vt="shopar-main";const wt="shopar-qr-output";const yt="shopar-three-output";var bt;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(bt||(bt={}));let Et=!1;function At(){Et||(!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.")}}(),Et=!0)}function St(){At();const e=function(){const e=document.createElement("div");e.id=vt;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=wt;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=ht;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=yt,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("2rem",`${b}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=pt("shopar-ar-loading-container"),h=ft("shopar-ar-loading-text",st("loading.ar"));d.appendChild(h);const p=mt("shopar-ar-loading-bar-bg"),f=gt("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=pt("shopar-3d-loading-container"),g=ft("shopar-3d-loading-text",st("loading.3d"));m.appendChild(g);const v=mt("shopar-3d-loading-bar-bg"),w=gt("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",e}(),E=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(E),e.appendChild(y);const A=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),S=function(e){const t=document.createElement("div");t.id=lt;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const r=document.createElement("div"),o=r.style;return o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",t.appendChild(r),r.appendChild(e),t}(A);e.appendChild(S);const R=function(){const e=document.createElement("div");return e.id=dt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(R);const M=ut("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");R.appendChild(M);const C=ut("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${b}/img/icons/cube.svg`);R.appendChild(C);const P=ut("shopar-btn-close","Close","Close ShopAR view",`${b}/img/icons/close.svg`);R.append(P);let I,T,x=bt.None,k=!1,L=!1,U=!1,$=!1;function D(){f.classList.remove("active"),d.style.visibility="hidden"}function O(){y.style.visibility="hidden",w.classList.remove("active"),m.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return r},getQRImage:function(){return n},getDeepARTarget:function(){return o},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){A.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,r,o,i){var a;k=e,L=t,U=n,$=r,I=o,T=i,Rt(R,k),Rt(M,k&&(U||L)&&x===bt.None),Rt(C,k&&$&&x===bt.None),Rt(P,k&&x!==bt.None),D(),O(),k||""===(a=S).style.display&&Rt(a,!1)},getUIState:function(){return x},setUIState:function(e){x=e,x===bt.None?(D(),O(),k&&(Rt(S,!1),Rt(P,!1),(L||U)&&Rt(M,!0),$&&Rt(C,!0))):x===bt.QR||x===bt.AR?k&&(Rt(S,!1),Rt(M,!1),Rt(C,$&&"AR"===T),Rt(P,"AR"!==T)):x===bt.Preview&&k&&(Rt(S,!1),Rt(M,(L||U)&&"3D"===T),Rt(C,!1),Rt(P,"3D"!==T))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,r=`${b}/img/icons/${n}`;M.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(I),M.onclick=e),$&&(C.onclick=t),P.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=E.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:O,setThreePosterUrl:function(e){null!=e?(E.src=e,E.dataset.srcSet="true"):delete E.dataset.srcSet},showCameraError:function(){k&&Rt(S,!0)}}}function Rt(e,t){e.style.display=t?"":"none"}const Mt=new Map;function Ct(t){let n=Mt.get(t);return null==n?(n=function(){let t=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=St()),n);return{getSetupId:()=>t,incrementSetupId_:()=>t++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==r){const{getQRTarget:t,getQRImage:n}=i();r=function(t,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>e(this,void 0,void 0,(function*(){yield A;const e=`https://ar.shopar.ai/${w.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(e),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,r=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){r=!0,t.style.display="none"}))}}(t(),n())}return r},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();o=tt(e(),t(),n())}return o}}}(),Mt.set(t,n)):n.incrementSetupId_(),n}function Pt(e){for(const t of Mt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===bt.AR&&o(bt.None)}}let It;const Tt=new Uint8Array(16);function xt(){if(!It&&(It="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!It))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return It(Tt)}const kt=[];for(let e=0;e<256;++e)kt.push((e+256).toString(16).slice(1));var Lt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Ut(e,t,n){if(Lt.randomUUID&&!t&&!e)return Lt.randomUUID();const r=(e=e||{}).random||(e.rng||xt)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return 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]]}(r)}const $t="qrLaunch",Dt="arLaunch",Ot="previewLaunch",_t="heartbeat";let Nt,jt,Ft=!1,Wt=window.navigator.userAgent||"no user agent";const qt=[];function Gt(){null==Nt&&(jt=Ut(),Nt=E(`${b}/shopar-analytics.js`),Nt.then((()=>{Ft=!0,window.ShopAR__analytics.initializeImpl(),qt.forEach((e=>e()))})))}function zt(e){Ft?e():qt.push(e)}function Bt(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Qt(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 Vt=200,Kt=10;let Ht=!1,Xt=null,Zt=[],Yt=[];function Jt(t){return e(this,void 0,void 0,(function*(){Ht=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${b}/wasm/mediapipe`,t),Xt&&clearInterval(Xt);const r=[],o=[];Xt=setInterval((()=>e(this,void 0,void 0,(function*(){if(Ht)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());Ht||(null!=a&&null!=s&&function(e){for(let t of Zt)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<Kt||(r.shift(),o.shift(),function(e,t){for(let n of Yt)n({faceWidth:e,IPD:t})}(tn(r),tn(o)))))}))),Vt)}))}function en(){Yt=[],Zt=[],Ht=!0}function tn(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}function nn(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(n).catch((e=>{throw console.error(e),new t("Resource unavailable.")}));if(!e.ok)throw new t(`Resource download failed with status ${e.status}.`);return e}))));try{return yield(yield r.blob()).arrayBuffer()}catch(e){throw console.error(e),new t("Resource has invalid body.")}}))}var rn="undefined"!=typeof Float32Array?Float32Array:Array;function on(){var e=new rn(16);return rn!=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 ln(e,t){var n=t[0],r=t[1],o=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,r,o),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function cn(e,t,n,r){var o=t[0],i=t[1],a=t[2],s=t[3],l=o+o,c=i+i,u=a+a,d=o*l,h=o*c,p=o*u,f=i*c,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 un(){var e=new rn(3);return rn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function dn(e,t,n){var r=new rn(3);return r[0]=e,r[1]=t,r[2]=n,r}function hn(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 fn(){var e=new rn(4);return rn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}un(),function(){var e,t=(e=new rn(4),rn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var mn;let gn,vn,wn;un(),dn(1,0,0),dn(0,1,0),fn(),fn(),mn=new rn(9),rn!=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 yn,bn,En,An,Sn=!0,Rn=null;const Mn=new Set;let Cn,Pn,In,Tn,xn,kn;function Ln(){null==gn&&(gn=E(`${b}/shopar-deepar.js`))}function Un(){null==vn&&(vn=E(`${b}/shopar-true-scale.js`))}function $n(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return xn=o,null==Cn&&(Cn=(()=>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=Gn(En),o=Bt(n);yn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:An,additionalOptions:{hint:kn,cameraConfig:{disableDefaultCamera:!0}}}),bn=yield Qt(o),yield zn(yn,bn,"user"===n),"Glasses"===En&&(yield vn,Jt(bn),"DetectionLoop"!==xn&&Kn((e=>{Tn=e.faceWidth})))})))()),Cn}))}function Dn(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===En&&(n=t,r=kn,n===r||null!=n&&null!=r&&n.length===r.length&&n.every((e=>r.find((t=>e===t))))&&r.every((e=>n.find((t=>t===e))))))||(null!=yn&&(yn.shutdown(),yn=null,Cn=null),En=e,kn=t)}function On(e){e!==An&&(An=e,null!=yn&&yn.changePreviewElement(An))}function _n(e){Rn=e}function Nn(e){yn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(Tn){const e=137/(Tn+5);yn.changeParameterVector("GLASSES","","scale",e,e,e,0),yn.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=Qn("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=Qn("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);yn.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),yn.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),en(),Tn=null}e(),Bn("Glasses")}},yn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),Bn("Shoes"))},yn.callbacks.onWristTracked=t=>{t.detected&&(e(),Bn("Watches"))}}function jn(t,n,r){return e(this,void 0,void 0,(function*(){return null!=Pn&&In===r||(yield Pn,Pn=yn.switchEffect(t,{envmap:n}),In=r),Pn}))}function Fn(e,t){null!=e&&null!=t&&(yn.setToneMapping(e),yn.setExposure(t))}function Wn(){return e(this,void 0,void 0,(function*(){if(null!=yn){if(Sn=!1,null==bn){const e=Gn(En),t=Bt(e);bn=yield Qt(t),yield zn(yn,bn,"user"===e),"Glasses"===En&&(Jt(bn),"DetectionLoop"!==xn&&Kn((e=>{Tn=e.faceWidth})))}!function(){if(null==Rn)return;if(null==En||Mn.has(En))return;Rn.style.visibility="visible",Rn.style.opacity="1"}(),yn.setPaused(Sn),An.style.display=""}}))}function qn(){null!=yn&&(Sn=!0,yn.setPaused(Sn),en(),null!=bn&&null!=bn.srcObject&&bn.srcObject instanceof MediaStream&&(bn.srcObject.getTracks().forEach((e=>e.stop())),bn=null),function(){if(null==Rn)return;Rn.style.visibility="hidden",Rn.style.opacity="0"}(),yn.stopCamera(),An.style.display="none")}function Gn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function zn(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 Bn(e){null!=Rn&&(Mn.has(e)||(Mn.add(e),Rn.style.opacity="0"))}function Qn(e,t,n,r,o,i,a){const s=yn.getTransformationBetween(e,t),l=sn(un(),s),c=function(e,t){var n=new rn(3);ln(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}(fn(),s);cn(s,c,l,dn(a,a,a));const u=yn.getTransformationBetween(t,n),d=sn(un(),u);cn(u,fn(),d,ln(un(),u));const h=an(on(),s,u),p=sn(un(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=yn.getTransformationBetween(n,r)}catch(e){return f}const g=an(on(),u,m),v=an(on(),s,g),w=dn(p[0],i[1],i[2]),y=pn(un(),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,R=u*m-d*f,M=u*g-h*f,C=u*v-p*f,P=d*g-h*m,I=d*v-p*m,T=h*v-p*g,x=w*T-y*I+b*P+E*C-A*M+S*R;return x?(x=1/x,e[0]=(s*T-l*I+c*P)*x,e[1]=(o*I-r*T-i*P)*x,e[2]=(m*S-g*A+v*E)*x,e[3]=(h*A-d*S-p*E)*x,e[4]=(l*C-a*T-c*M)*x,e[5]=(n*T-o*C+i*M)*x,e[6]=(g*b-f*S-v*y)*x,e[7]=(u*S-h*b+p*y)*x,e[8]=(a*I-s*C+c*R)*x,e[9]=(r*C-n*I-i*R)*x,e[10]=(f*A-m*b+v*w)*x,e[11]=(d*b-u*A-p*w)*x,e[12]=(s*M-a*P-l*R)*x,e[13]=(n*P-r*M+o*R)*x,e[14]=(m*y-f*E-g*w)*x,e[15]=(u*E-d*y+h*w)*x,e):null}(on(),v));let b=yn.getClosestPointOnMesh(r,y);try{const e=yn.getClosestPointOnMesh(o,y);hn(y,e)<hn(y,b)&&(b=e)}catch(e){}const E=pn(un(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function Vn(e){!function(e){Zt.push(e)}(e)}function Kn(e){!function(e){Yt.push(e)}(e)}var Hn;function Xn(){return[Hn.Android,Hn.iOS,Hn.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)?Hn.iOS:-1!==n.indexOf(t)?i?Hn.Tablet:Hn.MacOS:-1!==r.indexOf(t)?Hn.Windows:/Android/.test(e)?Hn.Android:/Linux/.test(t)?Hn.Linux:i?Hn.Tablet:Hn.Unknown}return Hn.Unknown}())}function Zn(r,o,i){return e(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const u=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const f=String.fromCharCode(a-7),m=window[`${h}${d+u+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${f}`],g=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield m(`${r}`).catch((()=>{throw new t("Unknown error.")}));if(!e.ok)throw new t("Unknown error.");return e})))),v=new n[0](yield(yield g.blob().catch((()=>{throw new t("Unknown error.")}))).arrayBuffer().catch((()=>{throw new t("Unknown error.")})));i+=s;const w=v.byteLength;if(c[l]=Math.min(76,o)*((a>>5)-1),152===c[l]&&(c[l]=w),i==l)return v;i=l,i^=l;for(let e=0,t=v.length;e<t;e++)c[l]^=c[i]<<13,c[l]^=c[i]>>17,c[l]^=c[i]<<5,v[e]=v[e]^c[l];return i^=c[0],i^=c[1],i^=c[2],v}))}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(Hn||(Hn={}));const Yn=["AR","3D"];function Jn(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function er(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function tr(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function nr(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;Jn(n,"apiKey"),tr(n,"apiKey"),Jn(r,"sku"),tr(r,"sku"),Jn(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",Yn),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&&tr(s,"baseUrl"),null!=l&&er(l,"defaultUI"),null!=c&&er(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 rr=!1;function or(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;b.update(n.baseUrl),Gt();const{trackEvent:o}=function(e){const t=performance.now(),n=Ut();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:w,userAgent:Wt,sessionId:jt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),zt((()=>{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=Ct(r),{getSetupId:l,findUI:c}=s,d=l();Ln(),Un();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:y,stopDeepARLoading:E,showCameraError:A}=c();if(g()!=bt.None)throw Error("UI state is not None, this is weird..");v(bt.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),y(),yield gn,ir(l(),d);try{o("visionArLaunch"),qn(),Dn("Glasses",["faceInit"]),On(f()),yield $n({licenseKey:a,truescaleUsecase:"DetectionLoop"}),ir(l(),d),yield Wn(),ir(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),A(),qn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{E()}return rr=!0,{registerFacePoseListener:e=>{rr&&(o("registerFacePoseListener"),Vn(e))},registerFaceMeasurementListener:e=>{rr&&(o("registerFaceMeasurementListener"),Kn(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){rr&&(o("switchEffect",{arUrl:t}),function(e){yn.switchEffect(e)}(t))})),clearEffect:()=>{rr&&(o("clearEffect"),yn.clearEffect())},close:()=>{if(rr){if(rr=!1,o("visionClose"),g()!==bt.AR)throw new t("AR not launched.");qn(),v(bt.None)}}}}))}function ir(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function ar(n){var r,o;return e(this,void 0,void 0,(function*(){nr(n);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=n,d=null==n.zoomEnabled||n.zoomEnabled,h=!0===n.alwaysTransparentBackground;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),b.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(it,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(it[t]=n)}}(n.strings);const y=null!=c?we(c):null,S=null!=(null==y?void 0:y.theta)?te(y.theta):null,R=null!=(null==y?void 0:y.phi)?te(y.phi):null,M=null!=(null==y?void 0:y.fov)?te(y.fov):null,C=function(n,r,o,i,a,s){return e(this,void 0,void 0,(function*(){const l=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:n,sku:r,sid:u()},null!=o&&{yaw:`${m(f(o))}`}),null!=i&&{pitch:`${m(f(i))}`}),null!=a&&{fov:`${m(f(a))}`}),s&&{forcedTransparency:`${s}`}))}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield l.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(i,a,null==S?void 0:S.get(),null==R?void 0:R.get(),null==M?void 0:M.get(),h),P=Ct(s),{getSetupId:I,findUI:T,findQR:x,findThree:k}=P,L=I();Gt();const{trackEvent:U,arInteracted:$,previewInteracted:D}=function(e,t){const n=performance.now(),r=Ut();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(_t,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Wt,pluginVersion:w,sessionId:jt,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),zt((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);U("setup",{hostname:window.location.hostname});const O=yield C;U("apiResponse",O);const{category:_,arUrl:N,arEnvUrl:j,arToneMapping:F,arToneMappingExposure:W,arKey:q,arPromptEnabled:G,arPromptText:z,arPromptImage:B,previewUrl:Q,previewEnvUrl:V,previewToneMapping:K,previewToneMappingExposure:H,previewPosterUrl:X,cameraErrorText:Z,qrPromptText:Y}=O;sr(I(),L);const J=null!=N&&function(e){return null!=e&&g.includes(e)}(_),ee=null==(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled),ne=J&&function(e){return null!=e&&v.includes(e)}(_),re=ee&&ne&&!Xn(),oe=J&&!re,ie=null!=Q;if(sr(I(),L),re&&function(){e(this,void 0,void 0,(function*(){null==A&&(A=E(`${b}/shopar-qr.js`))}))}(),oe&&(Ln(),function(e){e!==wn&&(wn=e,nn(e),Pn=null,en())}(N),"Glasses"===_&&Un(),null!=j&&nn(j)),ie){null==qe&&(qe=E(`${b}/shopar-three.js`));const e=255;Zn(Q,(new Date).getTime()+e,Math.random()*e),nn(null!=V?V:`${b}/env/default.hdr`)}const{setTargetElement:ae,getDeepARTarget:se,getDeepARPrompt:le,customizeDeepARPrompt:ce,customizeCameraError:ue,customizeQRPrompt:de,setVisibilityParameters:he,getUIState:pe,setUIState:fe,setDefaultUIActions:me,startDeepARLoading:ge,stopDeepARLoading:ve,startThreeLoading:ye,stopThreeLoading:be,setThreePosterUrl:Ee,showCameraError:Ae}=T();ae(s);he(null==n.defaultUI||n.defaultUI,re,oe,ie,_,l),ce(null!=z?z:"",null!=B?B:""),ue(Z),de(Y),Ee(X),function(e,n){const r=e.parentNode;if(null==r)throw new t("Parent node missing.");new MutationObserver((t=>{for(const r of t)for(const t of r.removedNodes)if(t===e)return void n()})).observe(r,{childList:!0})}(s,(()=>{pe()!==bt.QR||Se()||Me(),pe()!==bt.AR||Sn||qn(),pe()!==bt.Preview||Te()||ke(),fe(bt.None)}));const{qrPaused:Se,qrDraw:Re,qrPause:Me}=x(),{threeInit:Ce,threeParse:Pe,threeLoad:Ie,threePaused:Te,threeResume:xe,threePause:ke,threeSetZoomEnabled:Le,threeSetForcedTransparency:Ue,threeSetToneMapping:$e,threeIsInteractive:De,threeSetInteractive:Oe,threeSetOnInteracted:_e,threeInitPromptAnimation:Ne,threeInitThetaAnimation:je,threeInitPhiAnimation:Fe,threeInitFovAnimation:We}=k(),Ge=null==n.interactive||n.interactive;Oe(Ge);let ze=0;if(pe()===bt.QR){if(!Se())if(re){U($t);try{yield Re(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Me(),fe(bt.None)}else if(pe()===bt.AR){if(!Sn)if(oe&&!rr){U(Dt);const e=null!=j?yield nn(j):void 0;sr(I(),L);const t=yield nn(N);sr(I(),L),Pt(P),Dn(_),On(se()),_n(G?le():null),yield jn(t,e,`${N}${j}`),Fn(F,W),Nn($),sr(I(),L)}else qn(),fe(bt.None)}else if(pe()===bt.Preview&&!Te())if(ie){U(Ot),ye();const e=255,t=yield Zn(Q,(new Date).getTime()+e,Math.random()*e);sr(I(),L);const n=yield nn(null!=V?V:`${b}/env/default.hdr`);sr(I(),L);const r=yield Pe(t,n,`${Q}${V}`);sr(I(),L),Ie(r,_),Le(d),Ue(h),$e(null!=K?K:"ACES",null!=H?H:1),_e(D),Ne(),null!=y&&(je(S),Fe(R),We(M)),be()}else ke(),fe(bt.None);const Be=()=>e(this,void 0,void 0,(function*(){if(re){if(pe()===bt.QR||pe()===bt.AR)return;try{U($t);const e=++ze;if(pe()===bt.Preview&&ie&&!Te()&&ke(),fe(bt.QR),yield Re(i,a),ze!==e)return;return void sr(I(),L)}catch(e){const n=e instanceof Error;throw U("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}}if(!oe)throw new t("Model does not have AR enabled.");if(pe()!==bt.AR)try{U(Dt);const e=++ze;pe()===bt.Preview&&ie&&!Te()&&ke(),Pt(P),fe(bt.AR),ge();const t=null!=j?yield nn(j):void 0;sr(I(),L);const n=yield nn(N);if(ze!==e)return;if(sr(I(),L),yield gn,ze!==e)return;if(sr(I(),L),qn(),Dn(_),On(se()),_n(G?le():null),yield $n({licenseKey:q}),ze!==e)return;if(sr(I(),L),yield jn(n,t,`${N}${j}`),Fn(F,W),Nn($),ze!==e)return;if(sr(I(),L),yield Wn(),ze!==e)return;sr(I(),L)}catch(e){const n=e instanceof Error;throw U("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Ae(),qn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ve()}})),Qe=()=>e(this,void 0,void 0,(function*(){if(!ie)throw new t("Model does not have 3D enabled.");if(pe()!==bt.Preview)try{U(Ot);const e=++ze;pe()===bt.AR&&(oe&&!Sn&&qn(),Me()),fe(bt.Preview),ye();const t=255,n=yield Zn(Q,(new Date).getTime()+t,Math.random()*t);if(ze!==e)return;sr(I(),L);const r=yield nn(null!=V?V:`${b}/env/default.hdr`);if(ze!==e)return;if(sr(I(),L),yield qe,ze!==e)return;if(sr(I(),L),Ce(),ze!==e)return;sr(I(),L);const o=yield Pe(n,r,`${Q}${V}`);if(ze!==e)return;sr(I(),L),Ie(o,_),Le(d),Ue(h),$e(null!=K?K:"ACES",null!=H?H:1),_e(D),Ne(),null!=y&&(je(S),Fe(R),We(M)),xe()}catch(e){const n=e instanceof Error;throw U("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}finally{be()}})),Ve=()=>e(this,void 0,void 0,(function*(){pe()!==bt.None&&(++ze,pe()===bt.QR||pe()===bt.AR?(oe&&!Sn&&qn(),Me()):pe()===bt.Preview&&ie&&!Te()&&ke(),fe(bt.None),"AR"!==l?"3D"!==l||(yield Qe()):yield Be())}));return me(Be,Qe,Ve),"AR"===l?(yield Be(),sr(I(),L)):"3D"===l&&(yield Qe(),sr(I(),L)),rr=!1,{launchAR:J?Be:void 0,launch3D:ie?Qe:void 0,closeAR:J?()=>e(this,void 0,void 0,(function*(){pe()!==bt.AR&&pe()!==bt.QR||(++ze,oe&&!Sn&&qn(),Me(),fe(bt.None),"3D"!==l||(yield Qe()))})):void 0,close3D:ie?()=>e(this,void 0,void 0,(function*(){pe()===bt.Preview&&(++ze,ie&&!Te()&&ke(),fe(bt.None),"AR"!==l||(yield Be()))})):void 0,close:J||ie?Ve:void 0,isInteractive:()=>De(),setInteractive:e=>Oe(e)}}))}function sr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const lr={setup:function(t){return e(this,void 0,void 0,(function*(){return or(t)}))}},cr={setup:function(n){return e(this,void 0,void 0,(function*(){return function(n,r){return e(this,void 0,void 0,(function*(){try{return r()}catch(e){throw e instanceof Error?new t(`${n} failed: ${e.message}`):(console.error(e),new t(`${n} failed.`))}}))}("setup",(()=>ar(n)))}))},version:w};export{Yn as PREVIEW_STATES,t as PluginError,cr as plugin,lr as vision};
|
|
1
|
+
function e(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class t extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const n=[Uint8Array,Uint32Array],r=n.length-2,o=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],i=[2,12,7,1],a=window[o[i[i[r]]]][o[i[i[i.length-1]]]],s=a.charCodeAt(r),l=s^s,c=new n[1]([l]);function u(){const e=(new TextEncoder).encode(a),t=o.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[o[t[2]]](String.fromCodePoint(...e))}const d=[1e3,2e3,4e3],h=d.length;function p(t,n=0){return e(this,void 0,void 0,(function*(){try{return yield t()}catch(e){if(n>=h)throw e;return yield new Promise((e=>setTimeout(e,d[n]))),p(t,n+1)}}))}function f(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const g=["Glasses","Shoes","Watches"],v=["Shoes"];const w={},y={};function b(n){return null==w[n]&&(w[n]=function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(n).catch((e=>{throw console.error(e),new t("Resource unavailable.")}));if(!e.ok)throw new t(`Resource download failed with status ${e.status}.`);return e}))));try{return yield(yield r.blob()).arrayBuffer()}catch(e){throw console.error(e),new t("Resource has invalid body.")}}))}(n)),w[n]}function E(r,o,i){return null==y[r]&&(y[r]=function(r,o,i){return e(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const u=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const f=String.fromCharCode(a-7),m=window[`${h}${d+u+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${f}`],g=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield m(`${r}`).catch((()=>{throw new t("Unknown error.")}));if(!e.ok)throw new t("Unknown error.");return e})))),v=new n[0](yield(yield g.blob().catch((()=>{throw new t("Unknown error.")}))).arrayBuffer().catch((()=>{throw new t("Unknown error.")})));i+=s;const w=v.byteLength;if(c[l]=Math.min(76,o)*((a>>5)-1),152===c[l]&&(c[l]=w),i==l)return v;i=l,i^=l;for(let e=0,t=v.length;e<t;e++)c[l]^=c[i]<<13,c[l]^=c[i]>>17,c[l]^=c[i]<<5,v[e]=v[e]^c[l];return i^=c[0],i^=c[1],i^=c[2],v}))}(r,o,i)),y[r]}const A="0.7.3-alpha.1";let S=`https://cdn.jsdelivr.net/npm/shopar-plugin@${A}/dist`;const M={update:e=>{null!=e&&(S=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>S};function R(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let C;const I=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let P,T,x;function k(e){const t=function(e){const t=new T.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,T.ClampToEdgeWrapping,T.ClampToEdgeWrapping,T.LinearFilter,T.LinearFilter,1,T.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(x.parse(e));return t.mapping=T.EquirectangularReflectionMapping,t.colorSpace=T.LinearSRGBColorSpace,t}const L=45,U=45,$=3,D=1.5,O=1,_=.5;let N,j,F,W,q,G=!1;const z=4,B=.001,Q=1e-7,V=10,K=11,H=1/(K-1),X="function"==typeof Float32Array;function Z(e,t,n,r){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===r)return re;const o=X?new Float32Array(K):new Array(K);for(let t=0;t<K;++t)o[t]=te(t*H,e,n);function i(t){let r=0,i=1;const a=K-1;for(;i!==a&&o[i]<=t;++i)r+=H;--i;const s=r+(t-o[i])/(o[i+1]-o[i])*H,l=ne(s,e,n);return l>=B?function(e,t,n,r){for(let o=0;o<z;++o){const o=ne(t,n,r);if(0===o)return t;t-=(te(t,n,r)-e)/o}return t}(t,s,e,n):0===l?s:function(e,t,n,r,o){let i,a,s=0;do{a=t+(n-t)/2,i=te(a,r,o)-e,i>0?n=a:t=a}while(Math.abs(i)>Q&&++s<V);return a}(t,r,r+H,e,n)}return function(e){return 0===e||1===e?e:te(i(e),t,r)}}function Y(e,t){return 1-3*t+3*e}function J(e,t){return 3*t-6*e}function ee(e){return 3*e}function te(e,t,n){return((Y(t,n)*e+J(t,n))*e+ee(t))*e}function ne(e,t,n){return 3*Y(t,n)*e*e+2*J(t,n)*e+ee(t)}function re(e){return e}function oe(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=Z(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function ie(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:oe(n)})));let r=0,o=n[0].value;return{reset:()=>{r=0},update:e=>{for(r+=e;r>=t;)r-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(r>=t.time&&r<i.time){const e=t.interpolate((r-t.time)/(i.time-t.time));o=t.value+e*(i.value-t.value)}}},get:()=>o}}const ae="#",se="time",le="interpolation",ce="yaw",ue="pitch",de="fov",he=[se,ce,ue,de,le],pe="s",fe="ms",me=1e3,ge="deg",ve="rad",we=Math.PI/180,ye="ease-in-out",be="cubic-bezier(",Ee=")";function Ae(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(ae);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const r=function(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(!he.includes(r))throw new Error(`Invalid token in header: '${r}'.`);if(t.includes(r))throw new Error(`Duplicate token in header: '${r}'.`);t.push(r)}if(!t.includes(se))throw new Error(`Missing required token: '${se}'.`);return t}(t.split(/\s+/)),o={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=Se(r,e);null!=t&&(null==o.theta&&(o.theta=[]),o.theta.push(t)),null!=n&&(null==o.phi&&(o.phi=[]),o.phi.push(n)),null!=i&&(null==o.fov&&(o.fov=[]),o.fov.push(i))}if(0===Object.values(o).length)throw new Error("At least one parameter should be animated.");return o}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const r of e){const{time:e,pitch:o,yaw:i,fov:a}=r;if(null==e)throw new Error("Time missing.");const s=Re(null!==(t=r.interpolation)&&void 0!==t?t:ye);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*we,interpolation:s})),null!=o&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:o*we,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*we,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function Se(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const r=e.indexOf(se),o=function(e){if(e.endsWith(fe))return Ie(e.substring(0,e.length-fe.length));if(e.endsWith(pe))return Ie(e.substring(0,e.length-pe.length))*me;return Ie(e)}(n[r]),i=e.indexOf(le),a=Re(-1===i?ye:n[i]),s={};for(let t=0;t<n.length;t++){if(t===r||t===i)continue;const l=e[t],c=n[t];switch(l){case ce:s.theta={time:o,value:Me(c),interpolation:a};break;case ue:s.phi={time:o,value:Me(c),interpolation:a};break;case de:s.fov={time:o,value:Me(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Me(e){return e.endsWith(ge)?Ie(e.substring(0,e.length-ge.length))*we:e.endsWith(ve)?Ie(e.substring(0,e.length-ve.length)):Ie(e)*we}function Re(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ce(0,0,1,1);if("sine"===e)return Ce(.37,0,.63,1);if("sine-in"===e)return Ce(.12,0,.39,0);if("sine-out"===e)return Ce(.61,1,.88,1);if("ease"===e)return Ce(.25,.1,.25,1);if("ease-in"===e)return Ce(.42,0,1,1);if("ease-out"===e)return Ce(0,0,.58,1);if("ease-in-out"===e)return Ce(.42,0,.58,1);if(e.startsWith(be)&&e.endsWith(Ee)){const t=e.substring(be.length,e.length-Ee.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Ie(t[0]),y1:Ie(t[1]),x2:Ie(t[2]),y2:Ie(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ce(e,t,n,r){return{type:"bezier",x1:e,y1:t,x2:n,y2:r}}function Ie(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Pe=300,Te=2e3,xe=.05,ke=2*Math.PI/32,Le=Re("hold"),Ue=Re("sine"),$e=Re("sine-in"),De=Re("sine-out");const Oe=8,_e=2*Math.PI,Ne=_e/12,je=_e/60,Fe=_e/60,We=60,qe=60,Ge=1e3,ze=We*qe,Be=-1;const Qe=["map","alphaMap","anisotropyMap","aoMap","bumpMap","clearcoatMap","clearcoatNormalMap","clearcoatRoughnessMap","displacementMap","emissiveMap","envMap","gradientMap","iridescenceMap","iridescenceThicknessMap","lightMap","metalnessMap","normalMap","roughnessMap","sheenColorMap","sheenRoughnessMap","specularMap","specularColorMap","specularIntensityMap","thicknessMap","transmissionMap"];function Ve(e){null!=e&&(e.dispose(),Qe.forEach((t=>{var n;return null===(n=e[t])||void 0===n?void 0:n.dispose()})))}let Ke;const He=0,Xe=3;let Ze,Ye,Je,et=!1,tt=1,nt=1,rt=1;const ot=1;let it;const at=new Map;function st(t,n,r){const o=t.getContext("2d");null==o&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y,b=!1,E=!1,A=!1,S=!0,M=!1,R=1,C=!0,I=!1,O=0,G=0,z=1,B=1,Q=1;const V={threeInit:()=>{b||(lt(),i=new Ye.Scene,a=new Ye.PerspectiveCamera(25,1,.5),s=new Ze.OrbitControls(a,t),s.setInteractionEnabled(C),h=Ye.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new N.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new N.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const r=new N.Group;r.position.y=-.7;const o=new N.PlaneGeometry(L,U).rotateX(Math.PI/2),i=new N.MeshBasicMaterial({map:t.texture,opacity:_,transparent:!0,depthWrite:!1}),a=new N.Mesh(o,i);a.renderOrder=1,a.scale.y=-1,r.add(a);const s=new N.Mesh(o);s.visible=!1,r.add(s);const l=new N.OrthographicCamera(-L/2,L/2,U/2,-U/2,0,$);function c(e){s.visible=!0,W.uniforms.tDiffuse.value=t.texture,W.uniforms.h.value=1*e/256,s.material=W,j.setRenderTarget(n),j.render(s,l),q.uniforms.tDiffuse.value=n.texture,q.uniforms.v.value=1*e/256,s.material=q,j.setRenderTarget(t),j.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,r.add(l),{shadowGroup:r,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=F;const r=j.getClearAlpha();j.setClearAlpha(0),j.setRenderTarget(t),j.render(e,l),e.overrideMaterial=null,c(D),c(.4*D),j.setRenderTarget(null),j.setClearAlpha(r),e.background=n}}}(i)),b=!0)},threeParse:(t,n,r)=>e(this,void 0,void 0,(function*(){return null!=u&&d===r||(yield u,u=(()=>e(this,void 0,void 0,(function*(){var e,r;return T=(e=Ze).THREE,x=new e.RGBELoader,i.environment=k(n),function(e,t){const{THREE:n}=t;P=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder)}(it,Ze),r=t,P.parseAsync(r.buffer,"")})))(),d=r),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t;e instanceof Ye.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach(Ve):Ve(e.material))})),i.clear(),i.add(e.scene);const n=(new Ye.Box3).setFromObject(e.scene);l.position.y=n.min.y-He,i.add(l),c(),E=!1,i.traverse((e=>{if(e instanceof Ye.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(E=!0)})):t.transmission>0&&(E=!0)}}));const r=n.min.clone().add(n.max).divideScalar(2),o=Math.sqrt(Ze.reduceVertices(e.scene,((e,t)=>Math.max(e,r.distanceToSquared(t))),0));s.reset(r,o,function(e,t){var n;const r={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?r.Glasses:null!==(n=r[e])&&void 0!==n?n:r.Glasses).normalize()}(t,Ye.Vector3)),O=0,y="Watches"===t?function(e){const t=e.getObjectByName("hours"),n=e.getObjectByName("minutes"),r=e.getObjectByName("seconds");if(null==t&&null==n&&null==r)return null;let o=new Date;return{update:()=>{const e=new Date;if(Math.abs(e.getTime()-o.getTime())<Ge/Oe)return!1;o=e;const i=e.getHours(),a=e.getMinutes(),s=e.getSeconds(),l=e.getMilliseconds();return null!=t&&(t.rotation.y=Be*Ne*(i+a/We+s/ze)),null!=n&&(n.rotation.y=Be*je*(a+s/qe)),null!=r&&(r.rotation.y=Be*Fe*(s+l/Ge)),!0}}}(e.scene):null},threePaused:()=>S,threeResume:()=>{S=!1,it.setAnimationLoop(ct),t.style.visibility="visible",G=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset()},threePause:()=>{S=!0,function(){for(const{threePaused:e}of at.values())if(!e())return!1;return!0}()&&it.setAnimationLoop(null),t.style.visibility="hidden",r.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetForcedTransparency:e=>{A=e},threeSetToneMapping:(e,t)=>{const n={ACES:Ye.ACESFilmicToneMapping,Linear:Ye.LinearToneMapping,Neutral:Ye.NeutralToneMapping};null!=n[e]&&(h=n[e]),R=t},threeIsInteractive:()=>C,threeSetInteractive:e=>{C=e,null==s||s.setInteractionEnabled(C)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=ie([{time:0,value:e,interpolation:Le},{time:Pe,value:e,interpolation:De},{time:Pe+Te/4,value:e+ke,interpolation:Ue},{time:Pe+3*Te/4,value:e-ke,interpolation:$e},{time:Pe+Te,value:e,interpolation:Le},{time:Pe+2*Te,value:e,interpolation:Le}]),s.setTheta(f.get()),m=null,g=null,v=ie([{time:0,value:0,interpolation:Le},{time:Pe,value:1,interpolation:Le},{time:Pe+Te,value:0,interpolation:Le},{time:Pe+2*Te,value:0,interpolation:Le}]),w=ie([{time:0,value:0,interpolation:Le},{time:Pe,value:0,interpolation:De},{time:Pe+Te/4,value:-xe,interpolation:Ue},{time:Pe+3*Te/4,value:xe,interpolation:$e},{time:Pe+Te,value:0,interpolation:Le},{time:Pe+2*Te,value:0,interpolation:Le}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{m=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{g=e,null!=e&&s.setFovRadians(e.get())},preRender_:e=>{if(!b||S)return;let t=0!==G?e-G:0;G=e,0===O?M=!0:O<Xe&&(t=0),O++,I||(s.hasUserInteracted()?(I=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(t),null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),null!=f&&(s.setTheta(f.get()),M=!0),null!=m&&(s.setPhi(m.get()),M=!0),null!=g&&(s.setFovRadians(g.get()),M=!0))),s.update()&&(M=!0),(null==y?void 0:y.update())&&(M=!0)},shouldRender_:()=>!(!b||S)&&M,render_:()=>{const e=it.toneMapping,s=it.toneMappingExposure;it.toneMapping=h,it.toneMappingExposure=R,it.setViewport(0,0,t.width,t.height),it.setClearColor(new Ye.Color(16777215),E&&!A?1:0),it.render(i,a),it.toneMapping=e,it.toneMappingExposure=s,M=!1,null!=o&&(o.clearRect(0,0,t.width,t.height),Je.width>0&&Je.height>0&&o.drawImage(Je,0,nt-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=C&&!I?"visible":"hidden",null!=v&&(r.style.opacity=`${v.get()}`),null!=w&&(r.style.transform=`translateX(${w.get()*Math.min(z,B)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===z&&n===B&&rt===Q||(t.width=Math.ceil(e*rt*ot),t.height=Math.ceil(n*rt*ot),z=e,B=n,Q=rt,M=!0)},target_:t};return at.set(t,V),V}function lt(){if(et)return;Ze=window.ShopAR__THREE,Ye=Ze.THREE,Je=document.createElement("canvas");var e,t;Je.style.position="block",it=new Ye.WebGLRenderer({powerPreference:"high-performance",canvas:Je,antialias:!0,alpha:!0}),it.outputColorSpace=Ye.SRGBColorSpace,it.toneMapping=Ye.ACESFilmicToneMapping,it.setClearColor(new Ye.Color(16777215),0),e=it,t=Ze,G||(N=t.THREE,j=e,F=new N.MeshDepthMaterial,F.userData.darkness={value:O},F.onBeforeCompile=e=>{e.uniforms.darkness=F.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},F.depthTest=!1,F.depthWrite=!1,W=new N.ShaderMaterial(t.HorizontalBlurShader),W.depthTest=!1,q=new N.ShaderMaterial(t.VerticalBlurShader),q.depthTest=!1,G=!0),ut(),et=!0}function ct(e){ut(),it.clear();for(const{preRender_:t,shouldRender_:n,render_:r}of at.values())t(e),n()&&r()}function ut(){let e=0,t=0;for(const{target_:n}of at.values()){const{clientWidth:r,clientHeight:o}=n;e=Math.max(e,r),t=Math.max(t,o)}const n=I();e=Math.ceil(e*n*ot),t=Math.ceil(t*n*ot),e===tt&&t===nt&&n===rt||(tt=e,nt=t,rt=n,it.setSize(tt,nt,!1));for(const{updateSize_:e}of at.values())e()}const dt={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},ht=Object.keys(dt);function pt(e){return dt[e]}const ft="shopar-error";function mt(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const r=document.createElementNS("http://www.w3.org/2000/svg","image");r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),r.setAttribute("width",e),r.setAttribute("height",e),n.appendChild(r)}return n}function gt(e,t,n,r){const o=document.createElement("button");o.id=e,o.type="button",o.className="shopar-btn";{const e=mt("1.75rem",r);o.appendChild(e)}{const e=document.createElement("span");e.textContent=t,o.appendChild(e)}o.ariaLabel=n;const i=o.style;return i.display="none",i.pointerEvents="auto",o}const vt="shopar-control";const wt="shopar-deepar-output";function yt(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function bt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function Et(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function At(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const St="shopar-main";const Mt="shopar-qr-output";const Rt="shopar-three-output";var Ct;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(Ct||(Ct={}));let It=!1;function Pt(){It||(!function(){try{const e=document.createElement("style"),t=process.env.css;null!=t&&(e.innerHTML=t);const n=document.head;n.insertBefore(e,n.children[0])}catch(e){console.warn("Failed to write default ShopAR Plugin CSS.")}}(),It=!0)}function Tt(){Pt();const e=function(){const e=document.createElement("div");e.id=St;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),r=function(e,t){const n=document.createElement("div");n.id=Mt;const r=n.style;r.position="absolute",r.top="0",r.left="0",r.width="100%",r.height="100%",r.display="none",r.pointerEvents="auto",r.userSelect="none";const o=document.createElement("div");o.className="shopar-qr";const i=o.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(o),o.appendChild(e);const a=document.createElement("div");return a.appendChild(t),o.appendChild(a),n}(t,n);e.appendChild(r);const o=function(){const e=document.createElement("div");e.id=wt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(o);const i=function(){const e=document.createElement("canvas");e.id=Rt,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:r}=n;return r.position="absolute",r.width="100%",r.height="100%",r.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=mt("2rem",`${M}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=yt("shopar-ar-loading-container"),h=bt("shopar-ar-loading-text",pt("loading.ar"));d.appendChild(h);const p=Et("shopar-ar-loading-bar-bg"),f=At("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=yt("shopar-3d-loading-container"),g=bt("shopar-3d-loading-text",pt("loading.3d"));m.appendChild(g);const v=Et("shopar-3d-loading-bar-bg"),w=At("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",e}(),b=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(b),e.appendChild(y);const E=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),A=function(e){const t=document.createElement("div");t.id=ft;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const r=document.createElement("div"),o=r.style;return o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",t.appendChild(r),r.appendChild(e),t}(E);e.appendChild(A);const S=function(){const e=document.createElement("div");return e.id=vt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(S);const R=gt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");S.appendChild(R);const C=gt("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${M}/img/icons/cube.svg`);S.appendChild(C);const I=gt("shopar-btn-close","Close","Close ShopAR view",`${M}/img/icons/close.svg`);S.append(I);let P,T,x=Ct.None,k=!1,L=!1,U=!1,$=!1;function D(){f.classList.remove("active"),d.style.visibility="hidden"}function O(){y.style.visibility="hidden",w.classList.remove("active"),m.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return r},getQRImage:function(){return n},getDeepARTarget:function(){return o},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){E.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,r,o,i){var a;k=e,L=t,U=n,$=r,P=o,T=i,xt(S,k),xt(R,k&&(U||L)&&x===Ct.None),xt(C,k&&$&&x===Ct.None),xt(I,k&&x!==Ct.None),D(),O(),k||""===(a=A).style.display&&xt(a,!1)},getUIState:function(){return x},setUIState:function(e){x=e,x===Ct.None?(D(),O(),k&&(xt(A,!1),xt(I,!1),(L||U)&&xt(R,!0),$&&xt(C,!0))):x===Ct.QR||x===Ct.AR?k&&(xt(A,!1),xt(R,!1),xt(C,$&&"AR"===T),xt(I,"AR"!==T)):x===Ct.Preview&&k&&(xt(A,!1),xt(R,(L||U)&&"3D"===T),xt(C,!1),xt(I,"3D"!==T))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,r=`${M}/img/icons/${n}`;R.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r)}(P),R.onclick=e),$&&(C.onclick=t),I.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:O,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){k&&xt(A,!0)}}}function xt(e,t){e.style.display=t?"":"none"}const kt=new Map;function Lt(t){let n=kt.get(t);return null==n?(n=function(){let t=0,n=null,r=null,o=null;const i=()=>(null==n&&(n=Tt()),n);return{getSetupId:()=>t,incrementSetupId_:()=>t++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==r){const{getQRTarget:t,getQRImage:n}=i();r=function(t,n){let r=!0;return{qrPaused:()=>r,qrDraw:(o,i)=>e(this,void 0,void 0,(function*(){yield C;const e=`https://ar.shopar.ai/${A.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:o,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(e),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,r=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){r=!0,t.style.display="none"}))}}(t(),n())}return r},findThree:()=>{if(null==o){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();o=st(e(),t(),n())}return o}}}(),kt.set(t,n)):n.incrementSetupId_(),n}function Ut(e){for(const t of kt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:r,setUIState:o}=n;r()===Ct.AR&&o(Ct.None)}}let $t;const Dt=new Uint8Array(16);function Ot(){if(!$t&&($t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!$t))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return $t(Dt)}const _t=[];for(let e=0;e<256;++e)_t.push((e+256).toString(16).slice(1));var Nt={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function jt(e,t,n){if(Nt.randomUUID&&!t&&!e)return Nt.randomUUID();const r=(e=e||{}).random||(e.rng||Ot)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return _t[e[t+0]]+_t[e[t+1]]+_t[e[t+2]]+_t[e[t+3]]+"-"+_t[e[t+4]]+_t[e[t+5]]+"-"+_t[e[t+6]]+_t[e[t+7]]+"-"+_t[e[t+8]]+_t[e[t+9]]+"-"+_t[e[t+10]]+_t[e[t+11]]+_t[e[t+12]]+_t[e[t+13]]+_t[e[t+14]]+_t[e[t+15]]}(r)}const Ft="qrLaunch",Wt="arLaunch",qt="previewLaunch",Gt="heartbeat";let zt,Bt,Qt=!1,Vt=window.navigator.userAgent||"no user agent";const Kt=[];function Ht(){null==zt&&(Bt=jt(),zt=R(`${M}/shopar-analytics.js`),zt.then((()=>{Qt=!0,window.ShopAR__analytics.initializeImpl(),Kt.forEach((e=>e()))})))}function Xt(e){Qt?e():Kt.push(e)}function Zt(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Yt(t){return e(this,void 0,void 0,(function*(){const e=document.createElement("video");return e.setAttribute("playsinline","playsinline"),e.srcObject=yield t,e}))}const Jt=200,en=10;let tn=!1,nn=null,rn=[],on=[];function an(t){return e(this,void 0,void 0,(function*(){tn=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${M}/wasm/mediapipe`,t),nn&&clearInterval(nn);const r=[],o=[];nn=setInterval((()=>e(this,void 0,void 0,(function*(){if(tn)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());tn||(null!=a&&null!=s&&function(e){for(let t of rn)t(e)}({translation:a,rotation:s}),null==e&&(r.push(t),o.push(i),r.length<en||(r.shift(),o.shift(),function(e,t){for(let n of on)n({faceWidth:e,IPD:t})}(ln(r),ln(o)))))}))),Jt)}))}function sn(){on=[],rn=[],tn=!0}function ln(e){let t=0;const n=e.length;for(let r=0;r<n;r++)t+=e[r];return t/n}var cn="undefined"!=typeof Float32Array?Float32Array:Array;function un(){var e=new cn(16);return cn!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function dn(e,t,n){var r=t[0],o=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],g=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*r+b*s+E*d+A*m,e[1]=y*o+b*l+E*h+A*g,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*r+b*s+E*d+A*m,e[5]=y*o+b*l+E*h+A*g,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*r+b*s+E*d+A*m,e[9]=y*o+b*l+E*h+A*g,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*r+b*s+E*d+A*m,e[13]=y*o+b*l+E*h+A*g,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function hn(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function pn(e,t){var n=t[0],r=t[1],o=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,r,o),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function fn(e,t,n,r){var o=t[0],i=t[1],a=t[2],s=t[3],l=o+o,c=i+i,u=a+a,d=o*l,h=o*c,p=o*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=r[0],E=r[1],A=r[2];return e[0]=(1-(f+g))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+g))*E,e[6]=(m+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(m-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function mn(){var e=new cn(3);return cn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function gn(e,t,n){var r=new cn(3);return r[0]=e,r[1]=t,r[2]=n,r}function vn(e,t){var n=t[0]-e[0],r=t[1]-e[1],o=t[2]-e[2];return Math.hypot(n,r,o)}function wn(e,t,n){var r=t[0],o=t[1],i=t[2],a=n[3]*r+n[7]*o+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*r+n[4]*o+n[8]*i+n[12])/a,e[1]=(n[1]*r+n[5]*o+n[9]*i+n[13])/a,e[2]=(n[2]*r+n[6]*o+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function yn(){var e=new cn(4);return cn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}mn(),function(){var e,t=(e=new cn(4),cn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var bn;let En,An,Sn;mn(),gn(1,0,0),gn(0,1,0),yn(),yn(),bn=new cn(9),cn!=Float32Array&&(bn[1]=0,bn[2]=0,bn[3]=0,bn[5]=0,bn[6]=0,bn[7]=0),bn[0]=1,bn[4]=1,bn[8]=1;let Mn,Rn,Cn,In,Pn=!0,Tn=null;const xn=new Set;let kn,Ln,Un,$n,Dn,On;function _n(){null==En&&(En=R(`${M}/shopar-deepar.js`))}function Nn(){null==An&&(An=R(`${M}/shopar-true-scale.js`))}function jn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:r,truescaleUsecase:o}=n;return Dn=o,null==kn&&(kn=(()=>e(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new t("No camera available!");var e;const n=Kn(Cn),o=Zt(n);Mn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:r||"your_license_key_goes_here",previewElement:In,additionalOptions:{hint:On,cameraConfig:{disableDefaultCamera:!0}}}),Rn=yield Yt(o),yield Hn(Mn,Rn,"user"===n),"Glasses"===Cn&&(yield An,an(Rn),"DetectionLoop"!==Dn&&Jn((e=>{$n=e.faceWidth})))})))()),kn}))}function Fn(e,t){var n,r;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===Cn&&(n=t,r=On,n===r||null!=n&&null!=r&&n.length===r.length&&n.every((e=>r.find((t=>e===t))))&&r.every((e=>n.find((t=>t===e))))))||(null!=Mn&&(Mn.shutdown(),Mn=null,kn=null),Cn=e,On=t)}function Wn(e){e!==In&&(In=e,null!=Mn&&Mn.changePreviewElement(In))}function qn(e){Tn=e}function Gn(e){Mn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if($n){const e=137/($n+5);Mn.changeParameterVector("GLASSES","","scale",e,e,e,0),Mn.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const r=Zn("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),o=Zn("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);Mn.changeParameterVector("temple_left","","rotation",0,56.6*-r,0,0),Mn.changeParameterVector("temple_right","","rotation",0,56.6*-o,0,0)}catch(e){return}}(e),sn(),$n=null}e(),Xn("Glasses")}},Mn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),Xn("Shoes"))},Mn.callbacks.onWristTracked=t=>{t.detected&&(e(),Xn("Watches"))}}function zn(t,n,r){return e(this,void 0,void 0,(function*(){return null!=Ln&&Un===r||(yield Ln,Ln=Mn.switchEffect(t,{envmap:n}),Un=r),Ln}))}function Bn(e,t){null!=e&&null!=t&&(Mn.setToneMapping(e),Mn.setExposure(t))}function Qn(){return e(this,void 0,void 0,(function*(){if(null!=Mn){if(Pn=!1,null==Rn){const e=Kn(Cn),t=Zt(e);Rn=yield Yt(t),yield Hn(Mn,Rn,"user"===e),"Glasses"===Cn&&(an(Rn),"DetectionLoop"!==Dn&&Jn((e=>{$n=e.faceWidth})))}!function(){if(null==Tn)return;if(null==Cn||xn.has(Cn))return;Tn.style.visibility="visible",Tn.style.opacity="1"}(),Mn.setPaused(Pn),In.style.display=""}}))}function Vn(){null!=Mn&&(Pn=!0,Mn.setPaused(Pn),sn(),null!=Rn&&null!=Rn.srcObject&&Rn.srcObject instanceof MediaStream&&(Rn.srcObject.getTracks().forEach((e=>e.stop())),Rn=null),function(){if(null==Tn)return;Tn.style.visibility="hidden",Tn.style.opacity="0"}(),Mn.stopCamera(),In.style.display="none")}function Kn(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Hn(t,n,r){return e(this,void 0,void 0,(function*(){yield new Promise((o=>{n.onloadedmetadata=()=>{n.play().then((()=>e(this,void 0,void 0,(function*(){t.setVideoElement(n,r),o()}))))}}))}))}function Xn(e){null!=Tn&&(xn.has(e)||(xn.add(e),Tn.style.opacity="0"))}function Zn(e,t,n,r,o,i,a){const s=Mn.getTransformationBetween(e,t),l=hn(mn(),s),c=function(e,t){var n=new cn(3);pn(n,t);var r=1/n[0],o=1/n[1],i=1/n[2],a=t[0]*r,s=t[1]*o,l=t[2]*i,c=t[4]*r,u=t[5]*o,d=t[6]*i,h=t[8]*r,p=t[9]*o,f=t[10]*i,m=a+u+f,g=0;return m>0?(g=2*Math.sqrt(m+1),e[3]=.25*g,e[0]=(d-p)/g,e[1]=(h-l)/g,e[2]=(s-c)/g):a>u&&a>f?(g=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/g,e[0]=.25*g,e[1]=(s+c)/g,e[2]=(h+l)/g):u>f?(g=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/g,e[0]=(s+c)/g,e[1]=.25*g,e[2]=(d+p)/g):(g=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/g,e[0]=(h+l)/g,e[1]=(d+p)/g,e[2]=.25*g),e}(yn(),s);fn(s,c,l,gn(a,a,a));const u=Mn.getTransformationBetween(t,n),d=hn(mn(),u);fn(u,yn(),d,pn(mn(),u));const h=dn(un(),s,u),p=hn(mn(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=Mn.getTransformationBetween(n,r)}catch(e){return f}const g=dn(un(),u,m),v=dn(un(),s,g),w=gn(p[0],i[1],i[2]),y=wn(mn(),w,function(e,t){var n=t[0],r=t[1],o=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-r*a,y=n*l-o*a,b=n*c-i*a,E=r*l-o*s,A=r*c-i*s,S=o*c-i*l,M=u*m-d*f,R=u*g-h*f,C=u*v-p*f,I=d*g-h*m,P=d*v-p*m,T=h*v-p*g,x=w*T-y*P+b*I+E*C-A*R+S*M;return x?(x=1/x,e[0]=(s*T-l*P+c*I)*x,e[1]=(o*P-r*T-i*I)*x,e[2]=(m*S-g*A+v*E)*x,e[3]=(h*A-d*S-p*E)*x,e[4]=(l*C-a*T-c*R)*x,e[5]=(n*T-o*C+i*R)*x,e[6]=(g*b-f*S-v*y)*x,e[7]=(u*S-h*b+p*y)*x,e[8]=(a*P-s*C+c*M)*x,e[9]=(r*C-n*P-i*M)*x,e[10]=(f*A-m*b+v*w)*x,e[11]=(d*b-u*A-p*w)*x,e[12]=(s*R-a*I-l*M)*x,e[13]=(n*I-r*R+o*M)*x,e[14]=(m*y-f*E-g*w)*x,e[15]=(u*E-d*y+h*w)*x,e):null}(un(),v));let b=Mn.getClosestPointOnMesh(r,y);try{const e=Mn.getClosestPointOnMesh(o,y);vn(y,e)<vn(y,b)&&(b=e)}catch(e){}const E=wn(mn(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function Yn(e){!function(e){rn.push(e)}(e)}function Jn(e){!function(e){on.push(e)}(e)}var er;function tr(){return[er.Android,er.iOS,er.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],r=["Win32","Win64","Windows","WinCE"],o=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==o.indexOf(t)?er.iOS:-1!==n.indexOf(t)?i?er.Tablet:er.MacOS:-1!==r.indexOf(t)?er.Windows:/Android/.test(e)?er.Android:/Linux/.test(t)?er.Linux:i?er.Tablet:er.Unknown}return er.Unknown}())}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(er||(er={}));const nr=["AR","3D"];function rr(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function or(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function ir(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function ar(e){const{apiKey:n,sku:r,targetElement:o,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;rr(n,"apiKey"),ir(n,"apiKey"),rr(r,"sku"),ir(r,"sku"),rr(o,"targetElement"),function(e,n){if(!(e instanceof HTMLElement))throw new t(`'${n}' must be an HTMLElement.`)}(o,"targetElement"),null!=i&&function(e,n,r){if("string"!=typeof e)throw new t(`'${n}' must be a string.`);if(!r.includes(e))throw new t(`'${n}' must be ${r.join("' or '")}.`)}(i,"initialState",nr),null!=a&&function(e,n){if("string"!=typeof e&&!Array.isArray(e))throw new t(`'${n}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&ir(s,"baseUrl"),null!=l&&or(l,"defaultUI"),null!=c&&or(c,"interactive"),null!=u&&function(e,n,r){for(const o of r){const r=e[o];if(null!=r&&"string"!=typeof r)throw new t(`Value for key '${o}' in '${n}' must be a string.`)}}(u,"strings",ht)}let sr=!1;function lr(n){return e(this,void 0,void 0,(function*(){const{targetElement:r}=n;M.update(n.baseUrl),Ht();const{trackEvent:o}=function(e){const t=performance.now(),n=jt();return{trackEvent:(r,o={})=>{o=Object.assign(Object.assign({},o),{pluginVersion:A,userAgent:Vt,sessionId:Bt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),Xt((()=>{window.ShopAR__analytics.trackEventImpl(r,o)}))}}}(n.apiKey);o("visionSetup");const i=yield function(n){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:n,sid:u()})}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield r.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(n.apiKey);o("visionApiResponse",i);const{arKey:a}=i,s=Lt(r),{getSetupId:l,findUI:c}=s,d=l();_n(),Nn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:y,showCameraError:b}=c();if(g()!=Ct.None)throw Error("UI state is not None, this is weird..");v(Ct.AR),h(r),m(!1,!1,!0,!1,void 0,void 0),w(),yield En,cr(l(),d);try{o("visionArLaunch"),Vn(),Fn("Glasses",["faceInit"]),Wn(f()),yield jn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),cr(l(),d),yield Qn(),cr(l(),d)}catch(e){const n=e instanceof Error;throw o("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),b(),Vn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{y()}return sr=!0,{registerFacePoseListener:e=>{sr&&(o("registerFacePoseListener"),Yn(e))},registerFaceMeasurementListener:e=>{sr&&(o("registerFaceMeasurementListener"),Jn(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){sr&&(o("switchEffect",{arUrl:t}),function(e){Mn.switchEffect(e)}(t))})),clearEffect:()=>{sr&&(o("clearEffect"),Mn.clearEffect())},close:()=>{if(sr){if(sr=!1,o("visionClose"),g()!==Ct.AR)throw new t("AR not launched.");Vn(),v(Ct.None)}}}}))}function cr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function ur(n){var r,o;return e(this,void 0,void 0,(function*(){ar(n);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=n,d=null==n.zoomEnabled||n.zoomEnabled,h=!0===n.alwaysTransparentBackground;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),M.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(dt,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(dt[t]=n)}}(n.strings);const w=null!=c?Ae(c):null,y=null!=(null==w?void 0:w.theta)?ie(w.theta):null,S=null!=(null==w?void 0:w.phi)?ie(w.phi):null,I=null!=(null==w?void 0:w.fov)?ie(w.fov):null,P=function(n,r,o,i,a,s){return e(this,void 0,void 0,(function*(){const l=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign(Object.assign({apiKey:n,sku:r,sid:u()},null!=o&&{yaw:`${m(f(o))}`}),null!=i&&{pitch:`${m(f(i))}`}),null!=a&&{fov:`${m(f(a))}`}),s&&{forcedTransparency:`${s}`}))}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield l.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==S?void 0:S.get(),null==I?void 0:I.get(),h),T=Lt(s),{getSetupId:x,findUI:k,findQR:L,findThree:U}=T,$=x();Ht();const{trackEvent:D,arInteracted:O,previewInteracted:_}=function(e,t){const n=performance.now(),r=jt();let o=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(o=i+a,c=!1,u(Gt,{engagementTotal:o,engagementAR:i,engagement3D:a}))}),1e3);const u=(o,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Vt,pluginVersion:A,sessionId:Bt,setupId:r,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),Xt((()=>{window.ShopAR__analytics.trackEventImpl(o,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);D("setup",{hostname:window.location.hostname});const N=yield P;D("apiResponse",N);const{category:j,arUrl:F,arEnvUrl:W,arToneMapping:q,arToneMappingExposure:G,arKey:z,arPromptEnabled:B,arPromptText:Q,arPromptImage:V,previewUrl:K,previewEnvUrl:H,previewToneMapping:X,previewToneMappingExposure:Z,previewPosterUrl:Y,cameraErrorText:J,qrPromptText:ee}=N;dr(x(),$);const te=null!=F&&function(e){return null!=e&&g.includes(e)}(j),ne=null==(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled)||(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled),re=te&&function(e){return null!=e&&v.includes(e)}(j),oe=ne&&re&&!tr(),ae=te&&!oe,se=null!=K;if(dr(x(),$),oe&&function(){e(this,void 0,void 0,(function*(){null==C&&(C=R(`${M}/shopar-qr.js`))}))}(),ae&&(_n(),function(e){e!==Sn&&(Sn=e,b(e),Ln=null,sn())}(F),"Glasses"===j&&Nn(),null!=W&&b(W)),se){null==Ke&&(Ke=R(`${M}/shopar-three.js`));const e=255;E(K,(new Date).getTime()+e,Math.random()*e),b(null!=H?H:`${M}/env/default.hdr`)}const{setTargetElement:le,getDeepARTarget:ce,getDeepARPrompt:ue,customizeDeepARPrompt:de,customizeCameraError:he,customizeQRPrompt:pe,setVisibilityParameters:fe,getUIState:me,setUIState:ge,setDefaultUIActions:ve,startDeepARLoading:we,stopDeepARLoading:ye,startThreeLoading:be,stopThreeLoading:Ee,setThreePosterUrl:Se,showCameraError:Me}=k();le(s);fe(null==n.defaultUI||n.defaultUI,oe,ae,se,j,l),de(null!=Q?Q:"",null!=V?V:""),he(J),pe(ee),Se(Y),function(e,n){const r=e.parentNode;if(null==r)throw new t("Parent node missing.");new MutationObserver((t=>{for(const r of t)for(const t of r.removedNodes)if(t===e)return void n()})).observe(r,{childList:!0})}(s,(()=>{me()!==Ct.QR||Re()||Ie(),me()!==Ct.AR||Pn||Vn(),me()!==Ct.Preview||ke()||Ue(),ge(Ct.None)}));const{qrPaused:Re,qrDraw:Ce,qrPause:Ie}=L(),{threeInit:Pe,threeParse:Te,threeLoad:xe,threePaused:ke,threeResume:Le,threePause:Ue,threeSetZoomEnabled:$e,threeSetForcedTransparency:De,threeSetToneMapping:Oe,threeIsInteractive:_e,threeSetInteractive:Ne,threeSetOnInteracted:je,threeInitPromptAnimation:Fe,threeInitThetaAnimation:We,threeInitPhiAnimation:qe,threeInitFovAnimation:Ge}=U(),ze=null==n.interactive||n.interactive;Ne(ze);let Be=0;if(me()===Ct.QR){if(!Re())if(oe){D(Ft);try{yield Ce(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Ie(),ge(Ct.None)}else if(me()===Ct.AR){if(!Pn)if(ae&&!sr){D(Wt);const e=null!=W?yield b(W):void 0;dr(x(),$);const t=yield b(F);dr(x(),$),Ut(T),Fn(j),Wn(ce()),qn(B?ue():null),yield zn(t,e,`${F}${W}`),Bn(q,G),Gn(O),dr(x(),$)}else Vn(),ge(Ct.None)}else if(me()===Ct.Preview&&!ke())if(se){D(qt),be();const e=255,t=yield E(K,(new Date).getTime()+e,Math.random()*e);dr(x(),$);const n=yield b(null!=H?H:`${M}/env/default.hdr`);dr(x(),$);const r=yield Te(t,n,`${K}${H}`);dr(x(),$),xe(r,j),$e(d),De(h),Oe(null!=X?X:"ACES",null!=Z?Z:1),je(_),Fe(),null!=w&&(We(y),qe(S),Ge(I)),Ee()}else Ue(),ge(Ct.None);const Qe=()=>e(this,void 0,void 0,(function*(){if(oe){if(me()===Ct.QR||me()===Ct.AR)return;try{D(Ft);const e=++Be;if(me()===Ct.Preview&&se&&!ke()&&Ue(),ge(Ct.QR),yield Ce(i,a),Be!==e)return;return void dr(x(),$)}catch(e){const n=e instanceof Error;throw D("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}}if(!ae)throw new t("Model does not have AR enabled.");if(me()!==Ct.AR)try{D(Wt);const e=++Be;me()===Ct.Preview&&se&&!ke()&&Ue(),Ut(T),ge(Ct.AR),we();const t=null!=W?yield b(W):void 0;dr(x(),$);const n=yield b(F);if(Be!==e)return;if(dr(x(),$),yield En,Be!==e)return;if(dr(x(),$),Vn(),Fn(j),Wn(ce()),qn(B?ue():null),yield jn({licenseKey:z}),Be!==e)return;if(dr(x(),$),yield zn(n,t,`${F}${W}`),Bn(q,G),Gn(O),Be!==e)return;if(dr(x(),$),yield Qn(),Be!==e)return;dr(x(),$)}catch(e){const n=e instanceof Error;throw D("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Me(),Vn(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ye()}})),Ve=()=>e(this,void 0,void 0,(function*(){if(!se)throw new t("Model does not have 3D enabled.");if(me()!==Ct.Preview)try{D(qt);const e=++Be;me()===Ct.AR&&(ae&&!Pn&&Vn(),Ie()),ge(Ct.Preview),be();const t=255,n=yield E(K,(new Date).getTime()+t,Math.random()*t);if(Be!==e)return;dr(x(),$);const r=yield b(null!=H?H:`${M}/env/default.hdr`);if(console.log(r),Be!==e)return;if(dr(x(),$),yield Ke,Be!==e)return;if(dr(x(),$),Pe(),Be!==e)return;dr(x(),$);const o=yield Te(n,r,`${K}${H}`);if(Be!==e)return;dr(x(),$),xe(o,j),$e(d),De(h),Oe(null!=X?X:"ACES",null!=Z?Z:1),je(_),Fe(),null!=w&&(We(y),qe(S),Ge(I)),Le()}catch(e){const n=e instanceof Error;throw D("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}finally{Ee()}})),He=()=>e(this,void 0,void 0,(function*(){me()!==Ct.None&&(++Be,me()===Ct.QR||me()===Ct.AR?(ae&&!Pn&&Vn(),Ie()):me()===Ct.Preview&&se&&!ke()&&Ue(),ge(Ct.None),"AR"!==l?"3D"!==l||(yield Ve()):yield Qe())}));return ve(Qe,Ve,He),"AR"===l?(yield Qe(),dr(x(),$)):"3D"===l&&(yield Ve(),dr(x(),$)),sr=!1,{launchAR:te?Qe:void 0,launch3D:se?Ve:void 0,closeAR:te?()=>e(this,void 0,void 0,(function*(){me()!==Ct.AR&&me()!==Ct.QR||(++Be,ae&&!Pn&&Vn(),Ie(),ge(Ct.None),"3D"!==l||(yield Ve()))})):void 0,close3D:se?()=>e(this,void 0,void 0,(function*(){me()===Ct.Preview&&(++Be,se&&!ke()&&Ue(),ge(Ct.None),"AR"!==l||(yield Qe()))})):void 0,close:te||se?He:void 0,isInteractive:()=>_e(),setInteractive:e=>Ne(e)}}))}function dr(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const hr={setup:function(t){return e(this,void 0,void 0,(function*(){return lr(t)}))}},pr={setup:function(n){return e(this,void 0,void 0,(function*(){return function(n,r){return e(this,void 0,void 0,(function*(){try{return r()}catch(e){throw e instanceof Error?new t(`${n} failed: ${e.message}`):(console.error(e),new t(`${n} failed.`))}}))}("setup",(()=>ur(n)))}))},version:A};export{nr as PREVIEW_STATES,t as PluginError,pr as plugin,hr as vision};
|