shopar-plugin 0.3.0-alpha.0 → 0.3.0

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