shopar-plugin 0.7.3 → 0.7.4-alpha.1

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