shopar-plugin 0.7.0-alpha.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -32,7 +32,7 @@ There are two distinct ways of integrating the plugin: via Script tag and via NP
32
32
  Add the following script to your HTML.
33
33
 
34
34
  ```html
35
- <script src="https://cdn.jsdelivr.net/npm/shopar-plugin@{{VERSION}}/dist/shopar-plugin.js"></script>
35
+ <script src="https://cdn.jsdelivr.net/npm/shopar-plugin@0.7.0/dist/shopar-plugin.js"></script>
36
36
  ```
37
37
 
38
38
  It is possible to use a different CDN instead of [jsDelivr](https://www.jsdelivr.com/) (e.g. [cdnjs](https://cdnjs.com/), [unpkg](https://www.unpkg.com/)), or even a relative path if the plugin is distributed as a static asset to your app. Just make sure to set the `baseUrl` parameter accordingly (see [setup options](#shoparpluginsetupoptions) for more details).
@@ -150,14 +150,25 @@ Options used for the plugin setup:
150
150
  - `initialState` (optional)
151
151
  - Type: `'AR' | '3D'`
152
152
  - If provided, defines which preview type the plugin initializes to.
153
+ - `baseUrl` (optional)
154
+ - Type: `string`
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.0/dist`
153
157
  - `defaultUI` (optional)
154
158
  - Type: `boolean`
155
159
  - If provided and set to `false`, disables the default UI such as buttons, loading and error views.
156
160
  - Default value: `true`
157
- - `baseUrl` (optional)
158
- - Type: `string`
159
- - If provided, defines where the additional ShopAR plugin files are fetched from.
160
- - Default value: `https://cdn.jsdelivr.net/npm/shopar-plugin@{{VERSION}}/dist`
161
+ - `interactive` (optional)
162
+ - Type: `boolean`
163
+ - If provided and set to `false`, disables user interactivity by ignoring input events.
164
+ - Default value: `true`
165
+ - `zoomEnabled` (optional)
166
+ - Type: `boolean`
167
+ - If provided and set to `false`, disables zoom in 3D by ignoring mouse scroll or pinch touch events.
168
+ - Default value: `true`
169
+ - `initialAnimation` (optional)
170
+ - Type: `string` or `KeyFrameConfig[]`
171
+ - If provided, replaces the default interactivity animation in 3D with a custom one.
161
172
  - `strings` (optional)
162
173
  - Type: `object`
163
174
  - If provided, overrides strings in the UI.
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ShopAR__analytics={})}(this,(function(t){"use strict";function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function i(t){return Number.isInteger(t)&&t>=0}function n(t){this.name="ArgumentError",this.message=t}var s=e((function(t,e){if(e=e||{},"function"!=typeof t)throw new n("fetch must be a function");if("object"!=typeof e)throw new n("defaults must be an object");if(void 0!==e.retries&&!i(e.retries))throw new n("retries must be a positive integer");if(void 0!==e.retryDelay&&!i(e.retryDelay)&&"function"!=typeof e.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");if(void 0!==e.retryOn&&!Array.isArray(e.retryOn)&&"function"!=typeof e.retryOn)throw new n("retryOn property expects an array or function");return e=Object.assign({retries:3,retryDelay:1e3,retryOn:[]},e),function(s,r){var a=e.retries,o=e.retryDelay,c=e.retryOn;if(r&&void 0!==r.retries){if(!i(r.retries))throw new n("retries must be a positive integer");a=r.retries}if(r&&void 0!==r.retryDelay){if(!i(r.retryDelay)&&"function"!=typeof r.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");o=r.retryDelay}if(r&&r.retryOn){if(!Array.isArray(r.retryOn)&&"function"!=typeof r.retryOn)throw new n("retryOn property expects an array or function");c=r.retryOn}return new Promise((function(e,i){var n=function(n){var o="undefined"!=typeof Request&&s instanceof Request?s.clone():s;t(o,r).then((function(t){if(Array.isArray(c)&&-1===c.indexOf(t.status))e(t);else if("function"==typeof c)try{return Promise.resolve(c(n,null,t)).then((function(i){i?u(n,null,t):e(t)})).catch(i)}catch(t){i(t)}else n<a?u(n,null,t):e(t)})).catch((function(t){if("function"==typeof c)try{Promise.resolve(c(n,t,null)).then((function(e){e?u(n,t,null):i(t)})).catch((function(t){i(t)}))}catch(t){i(t)}else n<a?u(n,t,null):i(t)}))};function u(t,e,i){var s="function"==typeof o?o(t,e,i):o;setTimeout((function(){n(++t)}),s)}n(0)}))}}));var r,a;!function(t){t.unknown="unknown",t.user="user",t.organization="organization",t.anonymous="anonymous"}(r||(r={})),function(t){t.api="api",t.query="query",t.ingest="ingest"}(a||(a={}));class o{scope;type;value;remaining;reset;constructor(t=r.unknown,e=a.api,i=0,n=-1,s=new Date){this.scope=t,this.type=e,this.value=i,this.remaining=n,this.reset=s}}function c(t,e,i,n,s){let a=new o;const c=t.headers.get(e.toLowerCase())||r.unknown;a.scope=r[c];const u=t.headers.get(i.toLowerCase())||"",h=parseInt(u,10);isNaN(h)||(a.value=h);const l=t.headers.get(n.toLowerCase())||"",f=parseInt(l,10);isNaN(f)||(a.remaining=f);const m=t.headers.get(s.toLowerCase())||"",y=parseInt(m,10);return isNaN(y)||(a.reset=new Date(1e3*y)),a}class u{config;constructor(t){this.config=t}async doReq(t,e,i={},n={}){let r=`${this.config.baseUrl}${t}`;const o=this._prepareSearchParams(n);o&&(r+=`?${o.toString()}`);const u={...this.config.headers,...i.headers},l=await s(fetch)(r,{retries:3,retryDelay:function(t,e,i){return 1e3*Math.pow(2,t)},retryOn:[503,502,504,500],headers:u,method:e,body:i.body?i.body:void 0});if(204===l.status)return l;if(429==l.status){const t=function(t){let e;return t.url?.endsWith("/ingest")?(e=c(t,"","X-IngestLimit-Limit","X-IngestLimit-Remaining","X-IngestLimit-Reset"),e.type=a.ingest):t.url?.endsWith("/query")||t.url?.endsWith("/_apl")?(e=c(t,"","X-QueryLimit-Limit","X-QueryLimit-Remaining","X-QueryLimit-Reset"),e.type=a.query):(e=c(t,"X-RateLimit-Scope","X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset"),e.type=a.api),e}(l);return Promise.reject(new h(t))}if(401===l.status)return Promise.reject(new Error("Forbidden"));if(l.status>=400){const t=await l.json();return Promise.reject(new Error(t.message))}return await l.json()}post(t,e={},i={}){return this.doReq(t,"POST",e,i)}get(t,e={},i={}){return this.doReq(t,"GET",e,i)}put(t,e={},i={}){return this.doReq(t,"PUT",e,i)}delete(t,e={},i={}){return this.doReq(t,"DELETE",e,i)}_prepareSearchParams=t=>{const e=new URLSearchParams;let i=!1;return Object.keys(t).forEach((n=>{t[n]&&(e.append(n,t[n]),i=!0)})),i?e:null}}class h extends Error{limit;shortcircuit;message="";constructor(t,e=!1){super(),this.limit=t,this.shortcircuit=e,Object.setPrototypeOf(this,h.prototype);const i=h.timeUntilReset(t);this.message=`${t.type} limit exceeded, try again in ${i.minutes}m${i.seconds}s`,t.type==a.api&&(this.message=`${t.scope} `+this.message)}static timeUntilReset(t){const e=t.reset.getTime()-(new Date).getTime(),i=Math.floor(e/1e3%60);return{total:e,minutes:Math.floor(e/1e3/60%60),seconds:i}}}class l{client;constructor({orgId:t="",token:e,url:i}){e||console.warn("Missing Axiom token");const n=i??"https://api.axiom.co",s={Accept:"application/json","Content-Type":"application/json",Authorization:"Bearer "+e};"undefined"==typeof window&&(s["User-Agent"]="axiom-js/1.0.0-rc.1"),t&&(s["X-Axiom-Org-Id"]=t),this.client=new u({baseUrl:n,headers:s,timeout:3e3})}}var f,m,y,p,d,g;!function(t){t.TimestampField="_time";t.Service=class extends l{localPath="/v1/datasets";list=()=>this.client.get(this.localPath);get=t=>this.client.get(this.localPath+"/"+t);create=t=>this.client.post(this.localPath,{body:JSON.stringify(t)});update=(t,e)=>this.client.put(this.localPath+"/"+t,{body:JSON.stringify(e)});delete=t=>this.client.delete(this.localPath+"/"+t);trim=(t,e)=>{const i={maxDuration:e};return this.client.post(this.localPath+"/"+t+"/trim",{body:JSON.stringify(i)})}}}(f||(f={})),function(t){t.Service=class extends l{current=()=>this.client.get("/v1/user")}}(m||(m={}));class w{ingestFn;id;options;events=[];activeFlush=Promise.resolve();nextFlush=setTimeout((()=>{}),0);lastFlush=new Date;constructor(t,e,i){this.ingestFn=t,this.id=e,this.options=i}ingest=t=>{Array.isArray(t)?this.events=this.events.concat(t):this.events.push(t),this.events.length>=1e3||this.lastFlush.getTime()<Date.now()-1e3?(clearTimeout(this.nextFlush),this.activeFlush=this.flush()):(clearTimeout(this.nextFlush),this.nextFlush=setTimeout((()=>{this.activeFlush=this.flush()}),1e3))};flush=async()=>{const t=this.events.splice(0,this.events.length);if(clearTimeout(this.nextFlush),await this.activeFlush,0===t.length)return void(this.lastFlush=new Date);const e=await this.ingestFn(this.id,t,this.options);return this.lastFlush=new Date,e}}class v extends l{datasets;users;localPath="/v1";constructor(t){super(t),this.datasets=new f.Service(t),this.users=new m.Service(t)}ingestRaw=(t,e,i=y.JSON,n=p.Identity,s)=>this.client.post(this.localPath+"/datasets/"+t+"/ingest",{headers:{"Content-Type":i,"Content-Encoding":n},body:e},{"timestamp-field":s?.timestampField,"timestamp-format":s?.timestampFormat,"csv-delimiter":s?.csvDelimiter});queryLegacy=(t,e,i)=>this.client.post(this.localPath+"/datasets/"+t+"/query",{body:JSON.stringify(e)},{"streaming-duration":i?.streamingDuration,nocache:i?.noCache});query=(t,e)=>{const i={apl:t};return e?.startTime&&(i.startTime=e?.startTime),e?.endTime&&(i.endTime=e?.endTime),this.client.post(this.localPath+"/datasets/_apl",{body:JSON.stringify(i)},{"streaming-duration":e?.streamingDuration,nocache:e?.noCache,format:"legacy"})};aplQuery=(t,e)=>this.query(t,e)}class b extends v{batch={};ingest=(t,e,i)=>{const n=function(t,e){return`${t}:${e?.timestampField||"-"}:${e?.timestampFormat||"-"}:${e?.csvDelimiter||"-"}`}(t,i);return this.batch[n]||(this.batch[n]=new w(((t,e,i)=>{const n=(Array.isArray(e)?e:[e]).map((t=>JSON.stringify(t))).join("\n");return this.ingestRaw(t,n,y.NDJSON,p.Identity,i)}),t,i)),this.batch[n].ingest(e)};flush=async()=>{let t=[];for(const e in this.batch)t.push(this.batch[e].flush());await Promise.all(t)}}let x;!function(t){t.JSON="application/json",t.NDJSON="application/x-ndjson",t.CSV="text/csv"}(y||(y={})),function(t){t.Identity="",t.GZIP="gzip"}(p||(p={})),function(t){t.Count="count",t.Distinct="distinct",t.Sum="sum",t.Avg="avg",t.Min="min",t.Max="max",t.Topk="topk",t.Percentiles="percentiles",t.Histogram="histogram",t.Variance="variance",t.Stdev="stdev",t.ArgMin="argmin",t.ArgMax="argmax",t.MakeSet="makeset",t.MakeSetIf="makesetif",t.CountIf="countif",t.CountDistinctIf="distinctif"}(d||(d={})),function(t){t.And="and",t.Or="or",t.Not="not",t.Equal="==",t.NotEqual="!=",t.Exists="exists",t.NotExists="not-exists",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.LessThan="<",t.LessThanOrEqualTo="<=",t.Gt="gt",t.Gte="gte",t.Lt="lt",t.Lte="lte",t.StartsWith="starts-with",t.NotStartsWith="not-starts-with",t.EndsWith="ends-with",t.NotEndsWith="not-ends-with",t.Contains="contains",t.NotContains="not-contains",t.Regexp="regexp",t.NotRegexp="not-regexp"}(g||(g={})),t.initializeImpl=function(){x=new b({token:"xaat-16d05fdd-4ab9-4990-acba-7cee24974bfb"})},t.trackEventImpl=function(t,e){x.ingest("shopar-plugin-alpha",Object.assign({name:t},e))}}));
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ShopAR__analytics={})}(this,(function(t){"use strict";function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function i(t){return Number.isInteger(t)&&t>=0}function n(t){this.name="ArgumentError",this.message=t}var s=e((function(t,e){if(e=e||{},"function"!=typeof t)throw new n("fetch must be a function");if("object"!=typeof e)throw new n("defaults must be an object");if(void 0!==e.retries&&!i(e.retries))throw new n("retries must be a positive integer");if(void 0!==e.retryDelay&&!i(e.retryDelay)&&"function"!=typeof e.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");if(void 0!==e.retryOn&&!Array.isArray(e.retryOn)&&"function"!=typeof e.retryOn)throw new n("retryOn property expects an array or function");return e=Object.assign({retries:3,retryDelay:1e3,retryOn:[]},e),function(s,r){var a=e.retries,o=e.retryDelay,c=e.retryOn;if(r&&void 0!==r.retries){if(!i(r.retries))throw new n("retries must be a positive integer");a=r.retries}if(r&&void 0!==r.retryDelay){if(!i(r.retryDelay)&&"function"!=typeof r.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");o=r.retryDelay}if(r&&r.retryOn){if(!Array.isArray(r.retryOn)&&"function"!=typeof r.retryOn)throw new n("retryOn property expects an array or function");c=r.retryOn}return new Promise((function(e,i){var n=function(n){var o="undefined"!=typeof Request&&s instanceof Request?s.clone():s;t(o,r).then((function(t){if(Array.isArray(c)&&-1===c.indexOf(t.status))e(t);else if("function"==typeof c)try{return Promise.resolve(c(n,null,t)).then((function(i){i?u(n,null,t):e(t)})).catch(i)}catch(t){i(t)}else n<a?u(n,null,t):e(t)})).catch((function(t){if("function"==typeof c)try{Promise.resolve(c(n,t,null)).then((function(e){e?u(n,t,null):i(t)})).catch((function(t){i(t)}))}catch(t){i(t)}else n<a?u(n,t,null):i(t)}))};function u(t,e,i){var s="function"==typeof o?o(t,e,i):o;setTimeout((function(){n(++t)}),s)}n(0)}))}}));var r,a;!function(t){t.unknown="unknown",t.user="user",t.organization="organization",t.anonymous="anonymous"}(r||(r={})),function(t){t.api="api",t.query="query",t.ingest="ingest"}(a||(a={}));class o{scope;type;value;remaining;reset;constructor(t=r.unknown,e=a.api,i=0,n=-1,s=new Date){this.scope=t,this.type=e,this.value=i,this.remaining=n,this.reset=s}}function c(t,e,i,n,s){let a=new o;const c=t.headers.get(e.toLowerCase())||r.unknown;a.scope=r[c];const u=t.headers.get(i.toLowerCase())||"",h=parseInt(u,10);isNaN(h)||(a.value=h);const l=t.headers.get(n.toLowerCase())||"",f=parseInt(l,10);isNaN(f)||(a.remaining=f);const m=t.headers.get(s.toLowerCase())||"",y=parseInt(m,10);return isNaN(y)||(a.reset=new Date(1e3*y)),a}class u{config;constructor(t){this.config=t}async doReq(t,e,i={},n={}){let r=`${this.config.baseUrl}${t}`;const o=this._prepareSearchParams(n);o&&(r+=`?${o.toString()}`);const u={...this.config.headers,...i.headers},l=await s(fetch)(r,{retries:3,retryDelay:function(t,e,i){return 1e3*Math.pow(2,t)},retryOn:[503,502,504,500],headers:u,method:e,body:i.body?i.body:void 0});if(204===l.status)return l;if(429==l.status){const t=function(t){let e;return t.url?.endsWith("/ingest")?(e=c(t,"","X-IngestLimit-Limit","X-IngestLimit-Remaining","X-IngestLimit-Reset"),e.type=a.ingest):t.url?.endsWith("/query")||t.url?.endsWith("/_apl")?(e=c(t,"","X-QueryLimit-Limit","X-QueryLimit-Remaining","X-QueryLimit-Reset"),e.type=a.query):(e=c(t,"X-RateLimit-Scope","X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset"),e.type=a.api),e}(l);return Promise.reject(new h(t))}if(401===l.status)return Promise.reject(new Error("Forbidden"));if(l.status>=400){const t=await l.json();return Promise.reject(new Error(t.message))}return await l.json()}post(t,e={},i={}){return this.doReq(t,"POST",e,i)}get(t,e={},i={}){return this.doReq(t,"GET",e,i)}put(t,e={},i={}){return this.doReq(t,"PUT",e,i)}delete(t,e={},i={}){return this.doReq(t,"DELETE",e,i)}_prepareSearchParams=t=>{const e=new URLSearchParams;let i=!1;return Object.keys(t).forEach((n=>{t[n]&&(e.append(n,t[n]),i=!0)})),i?e:null}}class h extends Error{limit;shortcircuit;message="";constructor(t,e=!1){super(),this.limit=t,this.shortcircuit=e,Object.setPrototypeOf(this,h.prototype);const i=h.timeUntilReset(t);this.message=`${t.type} limit exceeded, try again in ${i.minutes}m${i.seconds}s`,t.type==a.api&&(this.message=`${t.scope} `+this.message)}static timeUntilReset(t){const e=t.reset.getTime()-(new Date).getTime(),i=Math.floor(e/1e3%60);return{total:e,minutes:Math.floor(e/1e3/60%60),seconds:i}}}class l{client;constructor({orgId:t="",token:e,url:i}){e||console.warn("Missing Axiom token");const n=i??"https://api.axiom.co",s={Accept:"application/json","Content-Type":"application/json",Authorization:"Bearer "+e};"undefined"==typeof window&&(s["User-Agent"]="axiom-js/1.0.0-rc.1"),t&&(s["X-Axiom-Org-Id"]=t),this.client=new u({baseUrl:n,headers:s,timeout:3e3})}}var f,m,y,p,d,g;!function(t){t.TimestampField="_time";t.Service=class extends l{localPath="/v1/datasets";list=()=>this.client.get(this.localPath);get=t=>this.client.get(this.localPath+"/"+t);create=t=>this.client.post(this.localPath,{body:JSON.stringify(t)});update=(t,e)=>this.client.put(this.localPath+"/"+t,{body:JSON.stringify(e)});delete=t=>this.client.delete(this.localPath+"/"+t);trim=(t,e)=>{const i={maxDuration:e};return this.client.post(this.localPath+"/"+t+"/trim",{body:JSON.stringify(i)})}}}(f||(f={})),function(t){t.Service=class extends l{current=()=>this.client.get("/v1/user")}}(m||(m={}));class w{ingestFn;id;options;events=[];activeFlush=Promise.resolve();nextFlush=setTimeout((()=>{}),0);lastFlush=new Date;constructor(t,e,i){this.ingestFn=t,this.id=e,this.options=i}ingest=t=>{Array.isArray(t)?this.events=this.events.concat(t):this.events.push(t),this.events.length>=1e3||this.lastFlush.getTime()<Date.now()-1e3?(clearTimeout(this.nextFlush),this.activeFlush=this.flush()):(clearTimeout(this.nextFlush),this.nextFlush=setTimeout((()=>{this.activeFlush=this.flush()}),1e3))};flush=async()=>{const t=this.events.splice(0,this.events.length);if(clearTimeout(this.nextFlush),await this.activeFlush,0===t.length)return void(this.lastFlush=new Date);const e=await this.ingestFn(this.id,t,this.options);return this.lastFlush=new Date,e}}class v extends l{datasets;users;localPath="/v1";constructor(t){super(t),this.datasets=new f.Service(t),this.users=new m.Service(t)}ingestRaw=(t,e,i=y.JSON,n=p.Identity,s)=>this.client.post(this.localPath+"/datasets/"+t+"/ingest",{headers:{"Content-Type":i,"Content-Encoding":n},body:e},{"timestamp-field":s?.timestampField,"timestamp-format":s?.timestampFormat,"csv-delimiter":s?.csvDelimiter});queryLegacy=(t,e,i)=>this.client.post(this.localPath+"/datasets/"+t+"/query",{body:JSON.stringify(e)},{"streaming-duration":i?.streamingDuration,nocache:i?.noCache});query=(t,e)=>{const i={apl:t};return e?.startTime&&(i.startTime=e?.startTime),e?.endTime&&(i.endTime=e?.endTime),this.client.post(this.localPath+"/datasets/_apl",{body:JSON.stringify(i)},{"streaming-duration":e?.streamingDuration,nocache:e?.noCache,format:"legacy"})};aplQuery=(t,e)=>this.query(t,e)}class x extends v{batch={};ingest=(t,e,i)=>{const n=function(t,e){return`${t}:${e?.timestampField||"-"}:${e?.timestampFormat||"-"}:${e?.csvDelimiter||"-"}`}(t,i);return this.batch[n]||(this.batch[n]=new w(((t,e,i)=>{const n=(Array.isArray(e)?e:[e]).map((t=>JSON.stringify(t))).join("\n");return this.ingestRaw(t,n,y.NDJSON,p.Identity,i)}),t,i)),this.batch[n].ingest(e)};flush=async()=>{let t=[];for(const e in this.batch)t.push(this.batch[e].flush());await Promise.all(t)}}let b;!function(t){t.JSON="application/json",t.NDJSON="application/x-ndjson",t.CSV="text/csv"}(y||(y={})),function(t){t.Identity="",t.GZIP="gzip"}(p||(p={})),function(t){t.Count="count",t.Distinct="distinct",t.Sum="sum",t.Avg="avg",t.Min="min",t.Max="max",t.Topk="topk",t.Percentiles="percentiles",t.Histogram="histogram",t.Variance="variance",t.Stdev="stdev",t.ArgMin="argmin",t.ArgMax="argmax",t.MakeSet="makeset",t.MakeSetIf="makesetif",t.CountIf="countif",t.CountDistinctIf="distinctif"}(d||(d={})),function(t){t.And="and",t.Or="or",t.Not="not",t.Equal="==",t.NotEqual="!=",t.Exists="exists",t.NotExists="not-exists",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.LessThan="<",t.LessThanOrEqualTo="<=",t.Gt="gt",t.Gte="gte",t.Lt="lt",t.Lte="lte",t.StartsWith="starts-with",t.NotStartsWith="not-starts-with",t.EndsWith="ends-with",t.NotEndsWith="not-ends-with",t.Contains="contains",t.NotContains="not-contains",t.Regexp="regexp",t.NotRegexp="not-regexp"}(g||(g={})),t.initializeImpl=function(){b=new x({token:"xaat-f69a9dd7-3988-4fc2-849b-4a0978468c25"})},t.trackEventImpl=function(t,e){b.ingest("shopar-plugin",Object.assign({name:t},e))}}));
@@ -1 +1 @@
1
- function e(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{l(o.next(e))}catch(e){i(e)}}function s(e){try{l(o.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((o=o.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class t extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const n=[Uint8Array,Uint32Array],o=n.length-2,r=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],i=[2,12,7,1],a=window[r[i[i[o]]]][r[i[i[i.length-1]]]],s=a.charCodeAt(o),l=s^s,c=new n[1]([l]);function u(){const e=(new TextEncoder).encode(a),t=r.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[r[t[2]]](String.fromCodePoint(...e))}const d=[1e3,2e3,4e3],h=d.length;function p(t,n=0){return e(this,void 0,void 0,(function*(){try{return yield t()}catch(e){if(n>=h)throw e;return yield new Promise((e=>setTimeout(e,d[n]))),p(t,n+1)}}))}function f(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const g=["Glasses","Shoes","Watches"],v=["Shoes"];const w="0.7.0-alpha.1";let y=`https://cdn.jsdelivr.net/npm/shopar-plugin@${w}/dist`;const b={update:e=>{null!=e&&(y=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>y};function E(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let A;const S=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let R,C,P;function I(e){const t=function(e){const t=new C.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,C.ClampToEdgeWrapping,C.ClampToEdgeWrapping,C.LinearFilter,C.LinearFilter,1,C.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(P.parse(e));return t.mapping=C.EquirectangularReflectionMapping,t.colorSpace=C.LinearSRGBColorSpace,t}const M=45,x=45,T=3,k=1.5,L=1,U=.5;let $,D,_,O,N,j=!1;const F=4,W=.001,q=1e-7,G=10,z=11,Q=1/(z-1),V="function"==typeof Float32Array;function K(e,t,n,o){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===o)return J;const r=V?new Float32Array(z):new Array(z);for(let t=0;t<z;++t)r[t]=Z(t*Q,e,n);function i(t){let o=0,i=1;const a=z-1;for(;i!==a&&r[i]<=t;++i)o+=Q;--i;const s=o+(t-r[i])/(r[i+1]-r[i])*Q,l=Y(s,e,n);return l>=W?function(e,t,n,o){for(let r=0;r<F;++r){const r=Y(t,n,o);if(0===r)return t;t-=(Z(t,n,o)-e)/r}return t}(t,s,e,n):0===l?s:function(e,t,n,o,r){let i,a,s=0;do{a=t+(n-t)/2,i=Z(a,o,r)-e,i>0?n=a:t=a}while(Math.abs(i)>q&&++s<G);return a}(t,o,o+Q,e,n)}return function(e){return 0===e||1===e?e:Z(i(e),t,o)}}function B(e,t){return 1-3*t+3*e}function H(e,t){return 3*t-6*e}function X(e){return 3*e}function Z(e,t,n){return((B(t,n)*e+H(t,n))*e+X(t))*e}function Y(e,t,n){return 3*B(t,n)*e*e+2*H(t,n)*e+X(t)}function J(e){return e}function ee(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=K(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function te(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:ee(n)})));let o=0,r=n[0].value;return{reset:()=>{o=0},update:e=>{for(o+=e;o>=t;)o-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(o>=t.time&&o<i.time){const e=t.interpolate((o-t.time)/(i.time-t.time));r=t.value+e*(i.value-t.value)}}},get:()=>r}}const ne="#",oe="time",re="interpolation",ie="yaw",ae="pitch",se="fov",le=[oe,ie,ae,se,re],ce="s",ue="ms",de=1e3,he="deg",pe="rad",fe=Math.PI/180,me="ease-in-out",ge="cubic-bezier(",ve=")";function we(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(ne);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const o=function(e){const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!le.includes(o))throw new Error(`Invalid token in header: '${o}'.`);if(t.includes(o))throw new Error(`Duplicate token in header: '${o}'.`);t.push(o)}if(!t.includes(oe))throw new Error(`Missing required token: '${oe}'.`);return t}(t.split(/\s+/)),r={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=ye(o,e);null!=t&&(null==r.theta&&(r.theta=[]),r.theta.push(t)),null!=n&&(null==r.phi&&(r.phi=[]),r.phi.push(n)),null!=i&&(null==r.fov&&(r.fov=[]),r.fov.push(i))}if(0===Object.values(r).length)throw new Error("At least one parameter should be animated.");return r}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const o of e){const{time:e,pitch:r,yaw:i,fov:a}=o;if(null==e)throw new Error("Time missing.");const s=Ee(null!==(t=o.interpolation)&&void 0!==t?t:me);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*fe,interpolation:s})),null!=r&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:r*fe,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*fe,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function ye(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const o=e.indexOf(oe),r=function(e){if(e.endsWith(ue))return Se(e.substring(0,e.length-ue.length));if(e.endsWith(ce))return Se(e.substring(0,e.length-ce.length))*de;return Se(e)}(n[o]),i=e.indexOf(re),a=Ee(-1===i?me:n[i]),s={};for(let t=0;t<n.length;t++){if(t===o||t===i)continue;const l=e[t],c=n[t];switch(l){case ie:s.theta={time:r,value:be(c),interpolation:a};break;case ae:s.phi={time:r,value:be(c),interpolation:a};break;case se:s.fov={time:r,value:be(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function be(e){return e.endsWith(he)?Se(e.substring(0,e.length-he.length))*fe:e.endsWith(pe)?Se(e.substring(0,e.length-pe.length)):Se(e)*fe}function Ee(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ae(0,0,1,1);if("sine"===e)return Ae(.37,0,.63,1);if("sine-in"===e)return Ae(.12,0,.39,0);if("sine-out"===e)return Ae(.61,1,.88,1);if("ease"===e)return Ae(.25,.1,.25,1);if("ease-in"===e)return Ae(.42,0,1,1);if("ease-out"===e)return Ae(0,0,.58,1);if("ease-in-out"===e)return Ae(.42,0,.58,1);if(e.startsWith(ge)&&e.endsWith(ve)){const t=e.substring(ge.length,e.length-ve.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Se(t[0]),y1:Se(t[1]),x2:Se(t[2]),y2:Se(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ae(e,t,n,o){return{type:"bezier",x1:e,y1:t,x2:n,y2:o}}function Se(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Re=300,Ce=2e3,Pe=.05,Ie=2*Math.PI/32,Me=Ee("hold"),xe=Ee("sine"),Te=Ee("sine-in"),ke=Ee("sine-out");let Le;const Ue=0,$e=3;let De,_e,Oe,Ne=!1,je=1,Fe=1,We=1;const qe=1;let Ge;const ze=new Map;function Qe(t,n,o){const r=t.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y=!1,b=!1,E=!0,A=!1,S=1,L=!0,j=!1,F=0,W=0,q=1,G=1,z=1;const Q={threeInit:()=>{y||(Ve(),i=new _e.Scene,a=new _e.PerspectiveCamera(25,1,.5),s=new De.OrbitControls(a,t),s.setInteractionEnabled(L),h=_e.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new $.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new $.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new $.Group;o.position.y=-.7;const r=new $.PlaneGeometry(M,x).rotateX(Math.PI/2),i=new $.MeshBasicMaterial({map:t.texture,opacity:U,transparent:!0,depthWrite:!1}),a=new $.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new $.Mesh(r);s.visible=!1,o.add(s);const l=new $.OrthographicCamera(-M/2,M/2,x/2,-x/2,0,T);function c(e){s.visible=!0,O.uniforms.tDiffuse.value=t.texture,O.uniforms.h.value=1*e/256,s.material=O,D.setRenderTarget(n),D.render(s,l),N.uniforms.tDiffuse.value=n.texture,N.uniforms.v.value=1*e/256,s.material=N,D.setRenderTarget(t),D.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,o.add(l),{shadowGroup:o,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=_;const o=D.getClearAlpha();D.setClearAlpha(0),D.setRenderTarget(t),D.render(e,l),e.overrideMaterial=null,c(k),c(.4*k),D.setRenderTarget(null),D.setClearAlpha(o),e.background=n}}}(i)),y=!0)},threeParse:(t,n,o)=>e(this,void 0,void 0,(function*(){return null!=u&&d===o||(yield u,u=(()=>e(this,void 0,void 0,(function*(){var e,o;return C=(e=De).THREE,P=new e.RGBELoader,i.environment=I(n),function(e,t){const{THREE:n}=t;R=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder)}(Ge,De),o=t,R.parseAsync(o.buffer,"")})))(),d=o),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t,n;e instanceof _e.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach((e=>e.dispose())):null===(n=e.material)||void 0===n||n.dispose())})),i.clear(),i.add(e.scene);const n=(new _e.Box3).setFromObject(e.scene);l.position.y=n.min.y-Ue,i.add(l),c(),b=!1,i.traverse((e=>{if(e instanceof _e.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(b=!0)})):t.transmission>0&&(b=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(De.reduceVertices(e.scene,((e,t)=>Math.max(e,o.distanceToSquared(t))),0));s.reset(o,r,function(e,t){var n;const o={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?o.Glasses:null!==(n=o[e])&&void 0!==n?n:o.Glasses).normalize()}(t,_e.Vector3)),F=0},threePaused:()=>E,threeResume:()=>{E=!1,Ge.setAnimationLoop(Ke),t.style.visibility="visible",W=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset()},threePause:()=>{E=!0,function(){for(const{threePaused:e}of ze.values())if(!e())return!1;return!0}()&&Ge.setAnimationLoop(null),t.style.visibility="hidden",o.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetToneMapping:(e,t)=>{const n={ACES:_e.ACESFilmicToneMapping,Linear:_e.LinearToneMapping,Neutral:_e.NeutralToneMapping};null!=n[e]&&(h=n[e]),S=t},threeIsInteractive:()=>L,threeSetInteractive:e=>{L=e,null==s||s.setInteractionEnabled(L)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=te([{time:0,value:e,interpolation:Me},{time:Re,value:e,interpolation:ke},{time:Re+Ce/4,value:e+Ie,interpolation:xe},{time:Re+3*Ce/4,value:e-Ie,interpolation:Te},{time:Re+Ce,value:e,interpolation:Me},{time:Re+2*Ce,value:e,interpolation:Me}]),s.setTheta(f.get()),m=null,g=null,v=te([{time:0,value:0,interpolation:Me},{time:Re,value:1,interpolation:Me},{time:Re+Ce,value:0,interpolation:Me},{time:Re+2*Ce,value:0,interpolation:Me}]),w=te([{time:0,value:0,interpolation:Me},{time:Re,value:0,interpolation:ke},{time:Re+Ce/4,value:-Pe,interpolation:xe},{time:Re+3*Ce/4,value:Pe,interpolation:Te},{time:Re+Ce,value:0,interpolation:Me},{time:Re+2*Ce,value:0,interpolation:Me}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{m=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{g=e,null!=e&&s.setFovRadians(e.get())},preRender_:e=>{if(!y||E)return;let t=0!==W?e-W:0;W=e,0===F?A=!0:F<$e&&(t=0),F++,j||(s.hasUserInteracted()?(j=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(t),null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),null!=f&&(s.setTheta(f.get()),A=!0),null!=m&&(s.setPhi(m.get()),A=!0),null!=g&&(s.setFovRadians(g.get()),A=!0))),s.update()&&(A=!0)},shouldRender_:()=>!(!y||E)&&A,render_:()=>{const e=Ge.toneMapping,s=Ge.toneMappingExposure;Ge.toneMapping=h,Ge.toneMappingExposure=S,Ge.setViewport(0,0,t.width,t.height),Ge.setClearColor(new _e.Color(16777215),b?1:0),Ge.render(i,a),Ge.toneMapping=e,Ge.toneMappingExposure=s,A=!1,null!=r&&(r.clearRect(0,0,t.width,t.height),Oe.width>0&&Oe.height>0&&r.drawImage(Oe,0,Fe-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=L&&!j?"visible":"hidden",null!=v&&(o.style.opacity=`${v.get()}`),null!=w&&(o.style.transform=`translateX(${w.get()*Math.min(q,G)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===q&&n===G&&We===z||(t.width=Math.ceil(e*We*qe),t.height=Math.ceil(n*We*qe),q=e,G=n,z=We,A=!0)},target_:t};return ze.set(t,Q),Q}function Ve(){if(Ne)return;De=window.ShopAR__THREE,_e=De.THREE,Oe=document.createElement("canvas");var e,t;Oe.style.position="block",Ge=new _e.WebGLRenderer({powerPreference:"high-performance",canvas:Oe,antialias:!0,alpha:!0}),Ge.outputColorSpace=_e.SRGBColorSpace,Ge.toneMapping=_e.ACESFilmicToneMapping,Ge.setClearColor(new _e.Color(16777215),0),e=Ge,t=De,j||($=t.THREE,D=e,_=new $.MeshDepthMaterial,_.userData.darkness={value:L},_.onBeforeCompile=e=>{e.uniforms.darkness=_.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},_.depthTest=!1,_.depthWrite=!1,O=new $.ShaderMaterial(t.HorizontalBlurShader),O.depthTest=!1,N=new $.ShaderMaterial(t.VerticalBlurShader),N.depthTest=!1,j=!0),Be(),Ne=!0}function Ke(e){Be(),Ge.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of ze.values())t(e),n()&&o()}function Be(){let e=0,t=0;for(const{target_:n}of ze.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=S();e=Math.ceil(e*n*qe),t=Math.ceil(t*n*qe),e===je&&t===Fe&&n===We||(je=e,Fe=t,We=n,Ge.setSize(je,Fe,!1));for(const{updateSize_:e}of ze.values())e()}const He={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},Xe=Object.keys(He);function Ze(e){return He[e]}const Ye="shopar-error";function Je(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const o=document.createElementNS("http://www.w3.org/2000/svg","image");o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),o.setAttribute("width",e),o.setAttribute("height",e),n.appendChild(o)}return n}function et(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=Je("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;const i=r.style;return i.display="none",i.pointerEvents="auto",r}const tt="shopar-control";const nt="shopar-deepar-output";function ot(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 rt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function it(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function at(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const st="shopar-main";const lt="shopar-qr-output";const ct="shopar-three-output";var ut;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(ut||(ut={}));let dt=!1;function ht(){dt||(!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.")}}(),dt=!0)}function pt(){ht();const e=function(){const e=document.createElement("div");e.id=st;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),o=function(e,t){const n=document.createElement("div");n.id=lt;const o=n.style;o.position="absolute",o.top="0",o.left="0",o.width="100%",o.height="100%",o.display="none",o.pointerEvents="auto",o.userSelect="none";const r=document.createElement("div");r.className="shopar-qr";const i=r.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(r),r.appendChild(e);const a=document.createElement("div");return a.appendChild(t),r.appendChild(a),n}(t,n);e.appendChild(o);const r=function(){const e=document.createElement("div");e.id=nt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(r);const i=function(){const e=document.createElement("canvas");e.id=ct,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:o}=n;return o.position="absolute",o.width="100%",o.height="100%",o.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=Je("2rem",`${b}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=ot("shopar-ar-loading-container"),h=rt("shopar-ar-loading-text",Ze("loading.ar"));d.appendChild(h);const p=it("shopar-ar-loading-bar-bg"),f=at("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=ot("shopar-3d-loading-container"),g=rt("shopar-3d-loading-text",Ze("loading.3d"));m.appendChild(g);const v=it("shopar-3d-loading-bar-bg"),w=at("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",e}(),E=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(E),e.appendChild(y);const A=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),S=function(e){const t=document.createElement("div");t.id=Ye;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const o=document.createElement("div"),r=o.style;return r.position="absolute",r.width="100%",r.height="100%",r.backgroundColor="#ffffff",r.display="flex",r.flexDirection="column",r.justifyContent="center",r.alignItems="center",t.appendChild(o),o.appendChild(e),t}(A);e.appendChild(S);const R=function(){const e=document.createElement("div");return e.id=tt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(R);const C=et("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");R.appendChild(C);const P=et("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${b}/img/icons/cube.svg`);R.appendChild(P);const I=et("shopar-btn-close","Close","Close ShopAR view",`${b}/img/icons/close.svg`);R.append(I);let M,x,T=ut.None,k=!1,L=!1,U=!1,$=!1;function D(){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 o},getQRImage:function(){return n},getDeepARTarget:function(){return r},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){A.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,o,r,i){var a;k=e,L=t,U=n,$=o,M=r,x=i,ft(R,k),ft(C,k&&(U||L)&&T===ut.None),ft(P,k&&$&&T===ut.None),ft(I,k&&T!==ut.None),D(),_(),k||""===(a=S).style.display&&ft(a,!1)},getUIState:function(){return T},setUIState:function(e){T=e,T===ut.None?(D(),_(),k&&(ft(S,!1),ft(I,!1),(L||U)&&ft(C,!0),$&&ft(P,!0))):T===ut.QR||T===ut.AR?k&&(ft(S,!1),ft(C,!1),ft(P,$&&"AR"===x),ft(I,"AR"!==x)):T===ut.Preview&&k&&(ft(S,!1),ft(C,(L||U)&&"3D"===x),ft(P,!1),ft(I,"3D"!==x))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${b}/img/icons/${n}`;C.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(M),C.onclick=e),$&&(P.onclick=t),I.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=E.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:_,setThreePosterUrl:function(e){null!=e?(E.src=e,E.dataset.srcSet="true"):delete E.dataset.srcSet},showCameraError:function(){k&&ft(S,!0)}}}function ft(e,t){e.style.display=t?"":"none"}const mt=new Map;function gt(t){let n=mt.get(t);return null==n?(n=function(){let t=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=pt()),n);return{getSetupId:()=>t,incrementSetupId_:()=>t++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==o){const{getQRTarget:t,getQRImage:n}=i();o=function(t,n){let o=!0;return{qrPaused:()=>o,qrDraw:(r,i)=>e(this,void 0,void 0,(function*(){yield A;const e=`https://ar.shopar.ai/${w.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:r,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,o=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){o=!0,t.style.display="none"}))}}(t(),n())}return o},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();r=Qe(e(),t(),n())}return r}}}(),mt.set(t,n)):n.incrementSetupId_(),n}function vt(e){for(const t of mt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===ut.AR&&r(ut.None)}}let wt;const yt=new Uint8Array(16);function bt(){if(!wt&&(wt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!wt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return wt(yt)}const Et=[];for(let e=0;e<256;++e)Et.push((e+256).toString(16).slice(1));var At={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function St(e,t,n){if(At.randomUUID&&!t&&!e)return At.randomUUID();const o=(e=e||{}).random||(e.rng||bt)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=o[e];return t}return function(e,t=0){return Et[e[t+0]]+Et[e[t+1]]+Et[e[t+2]]+Et[e[t+3]]+"-"+Et[e[t+4]]+Et[e[t+5]]+"-"+Et[e[t+6]]+Et[e[t+7]]+"-"+Et[e[t+8]]+Et[e[t+9]]+"-"+Et[e[t+10]]+Et[e[t+11]]+Et[e[t+12]]+Et[e[t+13]]+Et[e[t+14]]+Et[e[t+15]]}(o)}const Rt="qrLaunch",Ct="arLaunch",Pt="previewLaunch",It="heartbeat";let Mt,xt,Tt=!1,kt=window.navigator.userAgent||"no user agent";const Lt=[];function Ut(){null==Mt&&(xt=St(),Mt=E(`${b}/shopar-analytics.js`),Mt.then((()=>{Tt=!0,window.ShopAR__analytics.initializeImpl(),Lt.forEach((e=>e()))})))}function $t(e){Tt?e():Lt.push(e)}function Dt(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function _t(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 Ot=200,Nt=10;let jt=!1,Ft=null,Wt=[],qt=[];function Gt(t){return e(this,void 0,void 0,(function*(){jt=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${b}/wasm/mediapipe`,t),Ft&&clearInterval(Ft);const o=[],r=[];Ft=setInterval((()=>e(this,void 0,void 0,(function*(){if(jt)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());jt||(null!=a&&null!=s&&function(e){for(let t of Wt)t(e)}({translation:a,rotation:s}),null==e&&(o.push(t),r.push(i),o.length<Nt||(o.shift(),r.shift(),function(e,t){for(let n of qt)n({faceWidth:e,IPD:t})}(Qt(o),Qt(r)))))}))),Ot)}))}function zt(){qt=[],Wt=[],jt=!0}function Qt(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}function Vt(n){return e(this,void 0,void 0,(function*(){const o=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 o.blob()).arrayBuffer()}catch(e){throw console.error(e),new t("Resource has invalid body.")}}))}var Kt="undefined"!=typeof Float32Array?Float32Array:Array;function Bt(){var e=new Kt(16);return Kt!=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 Ht(e,t,n){var o=t[0],r=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],g=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*o+b*s+E*d+A*m,e[1]=y*r+b*l+E*h+A*g,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*o+b*s+E*d+A*m,e[5]=y*r+b*l+E*h+A*g,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*o+b*s+E*d+A*m,e[9]=y*r+b*l+E*h+A*g,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*o+b*s+E*d+A*m,e[13]=y*r+b*l+E*h+A*g,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Xt(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Zt(e,t){var n=t[0],o=t[1],r=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,o,r),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function Yt(e,t,n,o){var r=t[0],i=t[1],a=t[2],s=t[3],l=r+r,c=i+i,u=a+a,d=r*l,h=r*c,p=r*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=o[0],E=o[1],A=o[2];return e[0]=(1-(f+g))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+g))*E,e[6]=(m+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(m-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Jt(){var e=new Kt(3);return Kt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function en(e,t,n){var o=new Kt(3);return o[0]=e,o[1]=t,o[2]=n,o}function tn(e,t){var n=t[0]-e[0],o=t[1]-e[1],r=t[2]-e[2];return Math.hypot(n,o,r)}function nn(e,t,n){var o=t[0],r=t[1],i=t[2],a=n[3]*o+n[7]*r+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*o+n[4]*r+n[8]*i+n[12])/a,e[1]=(n[1]*o+n[5]*r+n[9]*i+n[13])/a,e[2]=(n[2]*o+n[6]*r+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function on(){var e=new Kt(4);return Kt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}Jt(),function(){var e,t=(e=new Kt(4),Kt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var rn;let an,sn,ln;Jt(),en(1,0,0),en(0,1,0),on(),on(),rn=new Kt(9),Kt!=Float32Array&&(rn[1]=0,rn[2]=0,rn[3]=0,rn[5]=0,rn[6]=0,rn[7]=0),rn[0]=1,rn[4]=1,rn[8]=1;let cn,un,dn,hn,pn=!0,fn=null;const mn=new Set;let gn,vn,wn,yn,bn,En;function An(){null==an&&(an=E(`${b}/shopar-deepar.js`))}function Sn(){null==sn&&(sn=E(`${b}/shopar-true-scale.js`))}function Rn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:o,truescaleUsecase:r}=n;return bn=r,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=Un(dn),r=Dt(n);cn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:o||"your_license_key_goes_here",previewElement:hn,additionalOptions:{hint:En,cameraConfig:{disableDefaultCamera:!0}}}),un=yield _t(r),yield $n(cn,un,"user"===n),"Glasses"===dn&&(yield sn,Gt(un),"DetectionLoop"!==bn&&Nn((e=>{yn=e.faceWidth})))})))()),gn}))}function Cn(e,t){var n,o;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===dn&&(n=t,o=En,n===o||null!=n&&null!=o&&n.length===o.length&&n.every((e=>o.find((t=>e===t))))&&o.every((e=>n.find((t=>t===e))))))||(null!=cn&&(cn.shutdown(),cn=null,gn=null),dn=e,En=t)}function Pn(e){e!==hn&&(hn=e,null!=cn&&cn.changePreviewElement(hn))}function In(e){fn=e}function Mn(e){cn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(yn){const e=137/(yn+5);cn.changeParameterVector("GLASSES","","scale",e,e,e,0),cn.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const o=_n("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),r=_n("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);cn.changeParameterVector("temple_left","","rotation",0,56.6*-o,0,0),cn.changeParameterVector("temple_right","","rotation",0,56.6*-r,0,0)}catch(e){return}}(e),zt(),yn=null}e(),Dn("Glasses")}},cn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),Dn("Shoes"))},cn.callbacks.onWristTracked=t=>{t.detected&&(e(),Dn("Watches"))}}function xn(t,n,o){return e(this,void 0,void 0,(function*(){return null!=vn&&wn===o||(yield vn,vn=cn.switchEffect(t,{envmap:n}),wn=o),vn}))}function Tn(e,t){null!=e&&null!=t&&(cn.setToneMapping(e),cn.setExposure(t))}function kn(){return e(this,void 0,void 0,(function*(){if(null!=cn){if(pn=!1,null==un){const e=Un(dn),t=Dt(e);un=yield _t(t),yield $n(cn,un,"user"===e),"Glasses"===dn&&(Gt(un),"DetectionLoop"!==bn&&Nn((e=>{yn=e.faceWidth})))}!function(){if(null==fn)return;if(null==dn||mn.has(dn))return;fn.style.visibility="visible",fn.style.opacity="1"}(),cn.setPaused(pn),hn.style.display=""}}))}function Ln(){null!=cn&&(pn=!0,cn.setPaused(pn),zt(),null!=un&&null!=un.srcObject&&un.srcObject instanceof MediaStream&&(un.srcObject.getTracks().forEach((e=>e.stop())),un=null),function(){if(null==fn)return;fn.style.visibility="hidden",fn.style.opacity="0"}(),cn.stopCamera(),hn.style.display="none")}function Un(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function $n(t,n,o){return e(this,void 0,void 0,(function*(){yield new Promise((r=>{n.onloadedmetadata=()=>{n.play().then((()=>e(this,void 0,void 0,(function*(){t.setVideoElement(n,o),r()}))))}}))}))}function Dn(e){null!=fn&&(mn.has(e)||(mn.add(e),fn.style.opacity="0"))}function _n(e,t,n,o,r,i,a){const s=cn.getTransformationBetween(e,t),l=Xt(Jt(),s),c=function(e,t){var n=new Kt(3);Zt(n,t);var o=1/n[0],r=1/n[1],i=1/n[2],a=t[0]*o,s=t[1]*r,l=t[2]*i,c=t[4]*o,u=t[5]*r,d=t[6]*i,h=t[8]*o,p=t[9]*r,f=t[10]*i,m=a+u+f,g=0;return m>0?(g=2*Math.sqrt(m+1),e[3]=.25*g,e[0]=(d-p)/g,e[1]=(h-l)/g,e[2]=(s-c)/g):a>u&&a>f?(g=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/g,e[0]=.25*g,e[1]=(s+c)/g,e[2]=(h+l)/g):u>f?(g=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/g,e[0]=(s+c)/g,e[1]=.25*g,e[2]=(d+p)/g):(g=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/g,e[0]=(h+l)/g,e[1]=(d+p)/g,e[2]=.25*g),e}(on(),s);Yt(s,c,l,en(a,a,a));const u=cn.getTransformationBetween(t,n),d=Xt(Jt(),u);Yt(u,on(),d,Zt(Jt(),u));const h=Ht(Bt(),s,u),p=Xt(Jt(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=cn.getTransformationBetween(n,o)}catch(e){return f}const g=Ht(Bt(),u,m),v=Ht(Bt(),s,g),w=en(p[0],i[1],i[2]),y=nn(Jt(),w,function(e,t){var n=t[0],o=t[1],r=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-o*a,y=n*l-r*a,b=n*c-i*a,E=o*l-r*s,A=o*c-i*s,S=r*c-i*l,R=u*m-d*f,C=u*g-h*f,P=u*v-p*f,I=d*g-h*m,M=d*v-p*m,x=h*v-p*g,T=w*x-y*M+b*I+E*P-A*C+S*R;return T?(T=1/T,e[0]=(s*x-l*M+c*I)*T,e[1]=(r*M-o*x-i*I)*T,e[2]=(m*S-g*A+v*E)*T,e[3]=(h*A-d*S-p*E)*T,e[4]=(l*P-a*x-c*C)*T,e[5]=(n*x-r*P+i*C)*T,e[6]=(g*b-f*S-v*y)*T,e[7]=(u*S-h*b+p*y)*T,e[8]=(a*M-s*P+c*R)*T,e[9]=(o*P-n*M-i*R)*T,e[10]=(f*A-m*b+v*w)*T,e[11]=(d*b-u*A-p*w)*T,e[12]=(s*C-a*I-l*R)*T,e[13]=(n*I-o*C+r*R)*T,e[14]=(m*y-f*E-g*w)*T,e[15]=(u*E-d*y+h*w)*T,e):null}(Bt(),v));let b=cn.getClosestPointOnMesh(o,y);try{const e=cn.getClosestPointOnMesh(r,y);tn(y,e)<tn(y,b)&&(b=e)}catch(e){}const E=nn(Jt(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function On(e){!function(e){Wt.push(e)}(e)}function Nn(e){!function(e){qt.push(e)}(e)}var jn;function Fn(){return[jn.Android,jn.iOS,jn.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],o=["Win32","Win64","Windows","WinCE"],r=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==r.indexOf(t)?jn.iOS:-1!==n.indexOf(t)?i?jn.Tablet:jn.MacOS:-1!==o.indexOf(t)?jn.Windows:/Android/.test(e)?jn.Android:/Linux/.test(t)?jn.Linux:i?jn.Tablet:jn.Unknown}return jn.Unknown}())}function Wn(o,r,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(`${o}`).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,r)*((a>>5)-1),152===c[l]&&(c[l]=w),i==l)return v;i=l,i^=l;for(let e=0,t=v.length;e<t;e++)c[l]^=c[i]<<13,c[l]^=c[i]>>17,c[l]^=c[i]<<5,v[e]=v[e]^c[l];return i^=c[0],i^=c[1],i^=c[2],v}))}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(jn||(jn={}));const qn=["AR","3D"];function Gn(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function zn(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function Qn(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function Vn(e){const{apiKey:n,sku:o,targetElement:r,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;Gn(n,"apiKey"),Qn(n,"apiKey"),Gn(o,"sku"),Qn(o,"sku"),Gn(r,"targetElement"),function(e,n){if(!(e instanceof HTMLElement))throw new t(`'${n}' must be an HTMLElement.`)}(r,"targetElement"),null!=i&&function(e,n,o){if("string"!=typeof e)throw new t(`'${n}' must be a string.`);if(!o.includes(e))throw new t(`'${n}' must be ${o.join("' or '")}.`)}(i,"initialState",qn),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&&Qn(s,"baseUrl"),null!=l&&zn(l,"defaultUI"),null!=c&&zn(c,"interactive"),null!=u&&function(e,n,o){for(const r of o){const o=e[r];if(null!=o&&"string"!=typeof o)throw new t(`Value for key '${r}' in '${n}' must be a string.`)}}(u,"strings",Xe)}let Kn=!1;function Bn(n){return e(this,void 0,void 0,(function*(){const{targetElement:o}=n;b.update(n.baseUrl),Ut();const{trackEvent:r}=function(e){const t=performance.now(),n=St();return{trackEvent:(o,r={})=>{r=Object.assign(Object.assign({},r),{pluginVersion:w,userAgent:kt,sessionId:xt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),$t((()=>{window.ShopAR__analytics.trackEventImpl(o,r)}))}}}(n.apiKey);r("visionSetup");const i=yield function(n){return e(this,void 0,void 0,(function*(){const o=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 o.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(n.apiKey);r("visionApiResponse",i);const{arKey:a}=i,s=gt(o),{getSetupId:l,findUI:c}=s,d=l();An(),Sn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:y,stopDeepARLoading:E,showCameraError:A}=c();if(g()!=ut.None)throw Error("UI state is not None, this is weird..");v(ut.AR),h(o),m(!1,!1,!0,!1,void 0,void 0),y(),yield an,Hn(l(),d);try{r("visionArLaunch"),Ln(),Cn("Glasses",["faceInit"]),Pn(f()),yield Rn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),Hn(l(),d),yield kn(),Hn(l(),d)}catch(e){const n=e instanceof Error;throw r("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),A(),Ln(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{E()}return Kn=!0,{registerFacePoseListener:e=>{Kn&&(r("registerFacePoseListener"),On(e))},registerFaceMeasurementListener:e=>{Kn&&(r("registerFaceMeasurementListener"),Nn(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){Kn&&(r("switchEffect",{arUrl:t}),function(e){cn.switchEffect(e)}(t))})),clearEffect:()=>{Kn&&(r("clearEffect"),cn.clearEffect())},close:()=>{if(Kn){if(Kn=!1,r("visionClose"),g()!==ut.AR)throw new t("AR not launched.");Ln(),v(ut.None)}}}}))}function Hn(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function Xn(n){var o,r;return e(this,void 0,void 0,(function*(){Vn(n);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=n,d=null==n.zoomEnabled||n.zoomEnabled;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),b.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(He,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(He[t]=n)}}(n.strings);const h=null!=c?we(c):null,y=null!=(null==h?void 0:h.theta)?te(h.theta):null,S=null!=(null==h?void 0:h.phi)?te(h.phi):null,R=null!=(null==h?void 0:h.fov)?te(h.fov):null,C=function(n,o,r,i,a){return e(this,void 0,void 0,(function*(){const s=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({apiKey:n,sku:o,sid:u()},null!=r&&{yaw:`${m(f(r))}`}),null!=i&&{pitch:`${m(f(i))}`}),null!=a&&{fov:`${m(f(a))}`}))}`).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 s.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==S?void 0:S.get(),null==R?void 0:R.get()),P=gt(s),{getSetupId:I,findUI:M,findQR:x,findThree:T}=P,k=I();Ut();const{trackEvent:L,arInteracted:U,previewInteracted:$}=function(e,t){const n=performance.now(),o=St();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,u(It,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const u=(r,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:kt,pluginVersion:w,sessionId:xt,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),$t((()=>{window.ShopAR__analytics.trackEventImpl(r,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);L("setup",{hostname:window.location.hostname});const D=yield C;L("apiResponse",D);const{category:_,arUrl:O,arEnvUrl:N,arToneMapping:j,arToneMappingExposure:F,arKey:W,arPromptEnabled:q,arPromptText:G,arPromptImage:z,previewUrl:Q,previewEnvUrl:V,previewToneMapping:K,previewToneMappingExposure:B,previewPosterUrl:H,cameraErrorText:X,qrPromptText:Z}=D;Zn(I(),k);const Y=null!=O&&function(e){return null!=e&&g.includes(e)}(_),J=null==(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled),ee=Y&&function(e){return null!=e&&v.includes(e)}(_),ne=J&&ee&&!Fn(),oe=Y&&!ne,re=null!=Q;if(Zn(I(),k),ne&&function(){e(this,void 0,void 0,(function*(){null==A&&(A=E(`${b}/shopar-qr.js`))}))}(),oe&&(An(),function(e){e!==ln&&(ln=e,Vt(e),vn=null,zt())}(O),"Glasses"===_&&Sn(),null!=N&&Vt(N)),re){null==Le&&(Le=E(`${b}/shopar-three.js`));const e=255;Wn(Q,(new Date).getTime()+e,Math.random()*e),Vt(null!=V?V:`${b}/env/default.hdr`)}const{setTargetElement:ie,getDeepARTarget:ae,getDeepARPrompt:se,customizeDeepARPrompt:le,customizeCameraError:ce,customizeQRPrompt:ue,setVisibilityParameters:de,getUIState:he,setUIState:pe,setDefaultUIActions:fe,startDeepARLoading:me,stopDeepARLoading:ge,startThreeLoading:ve,stopThreeLoading:ye,setThreePosterUrl:be,showCameraError:Ee}=M();ie(s);de(null==n.defaultUI||n.defaultUI,ne,oe,re,_,l),le(null!=G?G:"",null!=z?z:""),ce(X),ue(Z),be(H),function(e,n){const o=e.parentNode;if(null==o)throw new t("Parent node missing.");new MutationObserver((t=>{for(const o of t)for(const t of o.removedNodes)if(t===e)return void n()})).observe(o,{childList:!0})}(s,(()=>{he()!==ut.QR||Ae()||Re(),he()!==ut.AR||pn||Ln(),he()!==ut.Preview||Me()||Te(),pe(ut.None)}));const{qrPaused:Ae,qrDraw:Se,qrPause:Re}=x(),{threeInit:Ce,threeParse:Pe,threeLoad:Ie,threePaused:Me,threeResume:xe,threePause:Te,threeSetZoomEnabled:ke,threeSetToneMapping:Ue,threeIsInteractive:$e,threeSetInteractive:De,threeSetOnInteracted:_e,threeInitPromptAnimation:Oe,threeInitThetaAnimation:Ne,threeInitPhiAnimation:je,threeInitFovAnimation:Fe}=T(),We=null==n.interactive||n.interactive;De(We);let qe=0;if(he()===ut.QR){if(!Ae())if(ne){L(Rt);try{yield Se(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Re(),pe(ut.None)}else if(he()===ut.AR){if(!pn)if(oe&&!Kn){L(Ct);const e=null!=N?yield Vt(N):void 0;Zn(I(),k);const t=yield Vt(O);Zn(I(),k),vt(P),Cn(_),Pn(ae()),In(q?se():null),yield xn(t,e,`${O}${N}`),Tn(j,F),Mn(U),Zn(I(),k)}else Ln(),pe(ut.None)}else if(he()===ut.Preview&&!Me())if(re){L(Pt),ve();const e=255,t=yield Wn(Q,(new Date).getTime()+e,Math.random()*e);Zn(I(),k);const n=yield Vt(null!=V?V:`${b}/env/default.hdr`);Zn(I(),k);const o=yield Pe(t,n,`${Q}${V}`);Zn(I(),k),Ie(o,_),ke(d),Ue(null!=K?K:"ACES",null!=B?B:1),_e($),Oe(),null!=h&&(Ne(y),je(S),Fe(R)),ye()}else Te(),pe(ut.None);const Ge=()=>e(this,void 0,void 0,(function*(){if(ne){if(he()===ut.QR||he()===ut.AR)return;try{L(Rt);const e=++qe;if(he()===ut.Preview&&re&&!Me()&&Te(),pe(ut.QR),yield Se(i,a),qe!==e)return;return void Zn(I(),k)}catch(e){const n=e instanceof Error;throw L("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}}if(!oe)throw new t("Model does not have AR enabled.");if(he()!==ut.AR)try{L(Ct);const e=++qe;he()===ut.Preview&&re&&!Me()&&Te(),vt(P),pe(ut.AR),me();const t=null!=N?yield Vt(N):void 0;Zn(I(),k);const n=yield Vt(O);if(qe!==e)return;if(Zn(I(),k),yield an,qe!==e)return;if(Zn(I(),k),Ln(),Cn(_),Pn(ae()),In(q?se():null),yield Rn({licenseKey:W}),qe!==e)return;if(Zn(I(),k),yield xn(n,t,`${O}${N}`),Tn(j,F),Mn(U),qe!==e)return;if(Zn(I(),k),yield kn(),qe!==e)return;Zn(I(),k)}catch(e){const n=e instanceof Error;throw L("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Ee(),Ln(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ge()}})),ze=()=>e(this,void 0,void 0,(function*(){if(!re)throw new t("Model does not have 3D enabled.");if(he()!==ut.Preview)try{L(Pt);const e=++qe;he()===ut.AR&&(oe&&!pn&&Ln(),Re()),pe(ut.Preview),ve();const t=255,n=yield Wn(Q,(new Date).getTime()+t,Math.random()*t);if(qe!==e)return;Zn(I(),k);const o=yield Vt(null!=V?V:`${b}/env/default.hdr`);if(qe!==e)return;if(Zn(I(),k),yield Le,qe!==e)return;if(Zn(I(),k),Ce(),qe!==e)return;Zn(I(),k);const r=yield Pe(n,o,`${Q}${V}`);if(qe!==e)return;Zn(I(),k),Ie(r,_),ke(d),Ue(null!=K?K:"ACES",null!=B?B:1),_e($),Oe(),null!=h&&(Ne(y),je(S),Fe(R)),xe()}catch(e){const n=e instanceof Error;throw L("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}finally{ye()}})),Qe=()=>e(this,void 0,void 0,(function*(){he()!==ut.None&&(++qe,he()===ut.QR||he()===ut.AR?(oe&&!pn&&Ln(),Re()):he()===ut.Preview&&re&&!Me()&&Te(),pe(ut.None),"AR"!==l?"3D"!==l||(yield ze()):yield Ge())}));return fe(Ge,ze,Qe),"AR"===l?(yield Ge(),Zn(I(),k)):"3D"===l&&(yield ze(),Zn(I(),k)),Kn=!1,{launchAR:Y?Ge:void 0,launch3D:re?ze:void 0,closeAR:Y?()=>e(this,void 0,void 0,(function*(){he()!==ut.AR&&he()!==ut.QR||(++qe,oe&&!pn&&Ln(),Re(),pe(ut.None),"3D"!==l||(yield ze()))})):void 0,close3D:re?()=>e(this,void 0,void 0,(function*(){he()===ut.Preview&&(++qe,re&&!Me()&&Te(),pe(ut.None),"AR"!==l||(yield Ge()))})):void 0,close:Y||re?Qe:void 0,isInteractive:()=>$e(),setInteractive:e=>De(e)}}))}function Zn(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const Yn={setup:function(t){return e(this,void 0,void 0,(function*(){return Bn(t)}))}},Jn={setup:function(n){return e(this,void 0,void 0,(function*(){return function(n,o){return e(this,void 0,void 0,(function*(){try{return o()}catch(e){throw e instanceof Error?new t(`${n} failed: ${e.message}`):(console.error(e),new t(`${n} failed.`))}}))}("setup",(()=>Xn(n)))}))},version:w};export{qn as PREVIEW_STATES,t as PluginError,Jn as plugin,Yn as vision};
1
+ function e(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{l(o.next(e))}catch(e){i(e)}}function s(e){try{l(o.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((o=o.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class t extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const n=[Uint8Array,Uint32Array],o=n.length-2,r=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],i=[2,12,7,1],a=window[r[i[i[o]]]][r[i[i[i.length-1]]]],s=a.charCodeAt(o),l=s^s,c=new n[1]([l]);function u(){const e=(new TextEncoder).encode(a),t=r.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[r[t[2]]](String.fromCodePoint(...e))}const d=[1e3,2e3,4e3],h=d.length;function p(t,n=0){return e(this,void 0,void 0,(function*(){try{return yield t()}catch(e){if(n>=h)throw e;return yield new Promise((e=>setTimeout(e,d[n]))),p(t,n+1)}}))}function f(e){return e*(180/Math.PI)}function m(e){return Math.round(100*e)/100}const g=["Glasses","Shoes","Watches"],v=["Shoes"];const w="0.7.0";let y=`https://cdn.jsdelivr.net/npm/shopar-plugin@${w}/dist`;const b={update:e=>{null!=e&&(y=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>y};function E(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let A;const S=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.error('No <meta name="viewport"> detected. This might cause ShopAR to crash on iOS.\nPlease add the following line to your HTML:\n<meta name="viewport" content="width=device-width, initial-scale=1.0">'),()=>e?window.devicePixelRatio:1})();let R,C,P;function I(e){const t=function(e){const t=new C.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,C.ClampToEdgeWrapping,C.ClampToEdgeWrapping,C.LinearFilter,C.LinearFilter,1,C.LinearSRGBColorSpace);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(P.parse(e));return t.mapping=C.EquirectangularReflectionMapping,t.colorSpace=C.LinearSRGBColorSpace,t}const M=45,x=45,T=3,k=1.5,L=1,U=.5;let $,D,_,O,N,j=!1;const F=4,W=.001,q=1e-7,G=10,z=11,Q=1/(z-1),V="function"==typeof Float32Array;function K(e,t,n,o){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===o)return J;const r=V?new Float32Array(z):new Array(z);for(let t=0;t<z;++t)r[t]=Z(t*Q,e,n);function i(t){let o=0,i=1;const a=z-1;for(;i!==a&&r[i]<=t;++i)o+=Q;--i;const s=o+(t-r[i])/(r[i+1]-r[i])*Q,l=Y(s,e,n);return l>=W?function(e,t,n,o){for(let r=0;r<F;++r){const r=Y(t,n,o);if(0===r)return t;t-=(Z(t,n,o)-e)/r}return t}(t,s,e,n):0===l?s:function(e,t,n,o,r){let i,a,s=0;do{a=t+(n-t)/2,i=Z(a,o,r)-e,i>0?n=a:t=a}while(Math.abs(i)>q&&++s<G);return a}(t,o,o+Q,e,n)}return function(e){return 0===e||1===e?e:Z(i(e),t,o)}}function B(e,t){return 1-3*t+3*e}function H(e,t){return 3*t-6*e}function X(e){return 3*e}function Z(e,t,n){return((B(t,n)*e+H(t,n))*e+X(t))*e}function Y(e,t,n){return 3*B(t,n)*e*e+2*H(t,n)*e+X(t)}function J(e){return e}function ee(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=K(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function te(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:ee(n)})));let o=0,r=n[0].value;return{reset:()=>{o=0},update:e=>{for(o+=e;o>=t;)o-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(o>=t.time&&o<i.time){const e=t.interpolate((o-t.time)/(i.time-t.time));r=t.value+e*(i.value-t.value)}}},get:()=>r}}const ne="#",oe="time",re="interpolation",ie="yaw",ae="pitch",se="fov",le=[oe,ie,ae,se,re],ce="s",ue="ms",de=1e3,he="deg",pe="rad",fe=Math.PI/180,me="ease-in-out",ge="cubic-bezier(",ve=")";function we(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(ne);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const o=function(e){const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!le.includes(o))throw new Error(`Invalid token in header: '${o}'.`);if(t.includes(o))throw new Error(`Duplicate token in header: '${o}'.`);t.push(o)}if(!t.includes(oe))throw new Error(`Missing required token: '${oe}'.`);return t}(t.split(/\s+/)),r={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=ye(o,e);null!=t&&(null==r.theta&&(r.theta=[]),r.theta.push(t)),null!=n&&(null==r.phi&&(r.phi=[]),r.phi.push(n)),null!=i&&(null==r.fov&&(r.fov=[]),r.fov.push(i))}if(0===Object.values(r).length)throw new Error("At least one parameter should be animated.");return r}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const o of e){const{time:e,pitch:r,yaw:i,fov:a}=o;if(null==e)throw new Error("Time missing.");const s=Ee(null!==(t=o.interpolation)&&void 0!==t?t:me);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*fe,interpolation:s})),null!=r&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:r*fe,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*fe,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function ye(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const o=e.indexOf(oe),r=function(e){if(e.endsWith(ue))return Se(e.substring(0,e.length-ue.length));if(e.endsWith(ce))return Se(e.substring(0,e.length-ce.length))*de;return Se(e)}(n[o]),i=e.indexOf(re),a=Ee(-1===i?me:n[i]),s={};for(let t=0;t<n.length;t++){if(t===o||t===i)continue;const l=e[t],c=n[t];switch(l){case ie:s.theta={time:r,value:be(c),interpolation:a};break;case ae:s.phi={time:r,value:be(c),interpolation:a};break;case se:s.fov={time:r,value:be(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function be(e){return e.endsWith(he)?Se(e.substring(0,e.length-he.length))*fe:e.endsWith(pe)?Se(e.substring(0,e.length-pe.length)):Se(e)*fe}function Ee(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Ae(0,0,1,1);if("sine"===e)return Ae(.37,0,.63,1);if("sine-in"===e)return Ae(.12,0,.39,0);if("sine-out"===e)return Ae(.61,1,.88,1);if("ease"===e)return Ae(.25,.1,.25,1);if("ease-in"===e)return Ae(.42,0,1,1);if("ease-out"===e)return Ae(0,0,.58,1);if("ease-in-out"===e)return Ae(.42,0,.58,1);if(e.startsWith(ge)&&e.endsWith(ve)){const t=e.substring(ge.length,e.length-ve.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Se(t[0]),y1:Se(t[1]),x2:Se(t[2]),y2:Se(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Ae(e,t,n,o){return{type:"bezier",x1:e,y1:t,x2:n,y2:o}}function Se(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Re=300,Ce=2e3,Pe=.05,Ie=2*Math.PI/32,Me=Ee("hold"),xe=Ee("sine"),Te=Ee("sine-in"),ke=Ee("sine-out");let Le;const Ue=0,$e=3;let De,_e,Oe,Ne=!1,je=1,Fe=1,We=1;const qe=1;let Ge;const ze=new Map;function Qe(t,n,o){const r=t.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y=!1,b=!1,E=!0,A=!1,S=1,L=!0,j=!1,F=0,W=0,q=1,G=1,z=1;const Q={threeInit:()=>{y||(Ve(),i=new _e.Scene,a=new _e.PerspectiveCamera(25,1,.5),s=new De.OrbitControls(a,t),s.setInteractionEnabled(L),h=_e.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new $.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new $.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new $.Group;o.position.y=-.7;const r=new $.PlaneGeometry(M,x).rotateX(Math.PI/2),i=new $.MeshBasicMaterial({map:t.texture,opacity:U,transparent:!0,depthWrite:!1}),a=new $.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new $.Mesh(r);s.visible=!1,o.add(s);const l=new $.OrthographicCamera(-M/2,M/2,x/2,-x/2,0,T);function c(e){s.visible=!0,O.uniforms.tDiffuse.value=t.texture,O.uniforms.h.value=1*e/256,s.material=O,D.setRenderTarget(n),D.render(s,l),N.uniforms.tDiffuse.value=n.texture,N.uniforms.v.value=1*e/256,s.material=N,D.setRenderTarget(t),D.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,o.add(l),{shadowGroup:o,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=_;const o=D.getClearAlpha();D.setClearAlpha(0),D.setRenderTarget(t),D.render(e,l),e.overrideMaterial=null,c(k),c(.4*k),D.setRenderTarget(null),D.setClearAlpha(o),e.background=n}}}(i)),y=!0)},threeParse:(t,n,o)=>e(this,void 0,void 0,(function*(){return null!=u&&d===o||(yield u,u=(()=>e(this,void 0,void 0,(function*(){var e,o;return C=(e=De).THREE,P=new e.RGBELoader,i.environment=I(n),function(e,t){const{THREE:n}=t;R=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder(t.MeshoptDecoder)}(Ge,De),o=t,R.parseAsync(o.buffer,"")})))(),d=o),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t,n;e instanceof _e.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach((e=>e.dispose())):null===(n=e.material)||void 0===n||n.dispose())})),i.clear(),i.add(e.scene);const n=(new _e.Box3).setFromObject(e.scene);l.position.y=n.min.y-Ue,i.add(l),c(),b=!1,i.traverse((e=>{if(e instanceof _e.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(b=!0)})):t.transmission>0&&(b=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(De.reduceVertices(e.scene,((e,t)=>Math.max(e,o.distanceToSquared(t))),0));s.reset(o,r,function(e,t){var n;const o={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?o.Glasses:null!==(n=o[e])&&void 0!==n?n:o.Glasses).normalize()}(t,_e.Vector3)),F=0},threePaused:()=>E,threeResume:()=>{E=!1,Ge.setAnimationLoop(Ke),t.style.visibility="visible",W=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset()},threePause:()=>{E=!0,function(){for(const{threePaused:e}of ze.values())if(!e())return!1;return!0}()&&Ge.setAnimationLoop(null),t.style.visibility="hidden",o.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetToneMapping:(e,t)=>{const n={ACES:_e.ACESFilmicToneMapping,Linear:_e.LinearToneMapping,Neutral:_e.NeutralToneMapping};null!=n[e]&&(h=n[e]),S=t},threeIsInteractive:()=>L,threeSetInteractive:e=>{L=e,null==s||s.setInteractionEnabled(L)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=te([{time:0,value:e,interpolation:Me},{time:Re,value:e,interpolation:ke},{time:Re+Ce/4,value:e+Ie,interpolation:xe},{time:Re+3*Ce/4,value:e-Ie,interpolation:Te},{time:Re+Ce,value:e,interpolation:Me},{time:Re+2*Ce,value:e,interpolation:Me}]),s.setTheta(f.get()),m=null,g=null,v=te([{time:0,value:0,interpolation:Me},{time:Re,value:1,interpolation:Me},{time:Re+Ce,value:0,interpolation:Me},{time:Re+2*Ce,value:0,interpolation:Me}]),w=te([{time:0,value:0,interpolation:Me},{time:Re,value:0,interpolation:ke},{time:Re+Ce/4,value:-Pe,interpolation:xe},{time:Re+3*Ce/4,value:Pe,interpolation:Te},{time:Re+Ce,value:0,interpolation:Me},{time:Re+2*Ce,value:0,interpolation:Me}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{m=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{g=e,null!=e&&s.setFovRadians(e.get())},preRender_:e=>{if(!y||E)return;let t=0!==W?e-W:0;W=e,0===F?A=!0:F<$e&&(t=0),F++,j||(s.hasUserInteracted()?(j=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(t),null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),null!=f&&(s.setTheta(f.get()),A=!0),null!=m&&(s.setPhi(m.get()),A=!0),null!=g&&(s.setFovRadians(g.get()),A=!0))),s.update()&&(A=!0)},shouldRender_:()=>!(!y||E)&&A,render_:()=>{const e=Ge.toneMapping,s=Ge.toneMappingExposure;Ge.toneMapping=h,Ge.toneMappingExposure=S,Ge.setViewport(0,0,t.width,t.height),Ge.setClearColor(new _e.Color(16777215),b?1:0),Ge.render(i,a),Ge.toneMapping=e,Ge.toneMappingExposure=s,A=!1,null!=r&&(r.clearRect(0,0,t.width,t.height),Oe.width>0&&Oe.height>0&&r.drawImage(Oe,0,Fe-t.height,t.width,t.height,0,0,t.width,t.height),n.style.visibility=L&&!j?"visible":"hidden",null!=v&&(o.style.opacity=`${v.get()}`),null!=w&&(o.style.transform=`translateX(${w.get()*Math.min(q,G)}px)`))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===q&&n===G&&We===z||(t.width=Math.ceil(e*We*qe),t.height=Math.ceil(n*We*qe),q=e,G=n,z=We,A=!0)},target_:t};return ze.set(t,Q),Q}function Ve(){if(Ne)return;De=window.ShopAR__THREE,_e=De.THREE,Oe=document.createElement("canvas");var e,t;Oe.style.position="block",Ge=new _e.WebGLRenderer({powerPreference:"high-performance",canvas:Oe,antialias:!0,alpha:!0}),Ge.outputColorSpace=_e.SRGBColorSpace,Ge.toneMapping=_e.ACESFilmicToneMapping,Ge.setClearColor(new _e.Color(16777215),0),e=Ge,t=De,j||($=t.THREE,D=e,_=new $.MeshDepthMaterial,_.userData.darkness={value:L},_.onBeforeCompile=e=>{e.uniforms.darkness=_.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},_.depthTest=!1,_.depthWrite=!1,O=new $.ShaderMaterial(t.HorizontalBlurShader),O.depthTest=!1,N=new $.ShaderMaterial(t.VerticalBlurShader),N.depthTest=!1,j=!0),Be(),Ne=!0}function Ke(e){Be(),Ge.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of ze.values())t(e),n()&&o()}function Be(){let e=0,t=0;for(const{target_:n}of ze.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=S();e=Math.ceil(e*n*qe),t=Math.ceil(t*n*qe),e===je&&t===Fe&&n===We||(je=e,Fe=t,We=n,Ge.setSize(je,Fe,!1));for(const{updateSize_:e}of ze.values())e()}const He={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},Xe=Object.keys(He);function Ze(e){return He[e]}const Ye="shopar-error";function Je(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const o=document.createElementNS("http://www.w3.org/2000/svg","image");o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),o.setAttribute("width",e),o.setAttribute("height",e),n.appendChild(o)}return n}function et(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=Je("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;const i=r.style;return i.display="none",i.pointerEvents="auto",r}const tt="shopar-control";const nt="shopar-deepar-output";function ot(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 rt(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function it(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function at(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const st="shopar-main";const lt="shopar-qr-output";const ct="shopar-three-output";var ut;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(ut||(ut={}));let dt=!1;function ht(){dt||(!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.")}}(),dt=!0)}function pt(){ht();const e=function(){const e=document.createElement("div");e.id=st;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),o=function(e,t){const n=document.createElement("div");n.id=lt;const o=n.style;o.position="absolute",o.top="0",o.left="0",o.width="100%",o.height="100%",o.display="none",o.pointerEvents="auto",o.userSelect="none";const r=document.createElement("div");r.className="shopar-qr";const i=r.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(r),r.appendChild(e);const a=document.createElement("div");return a.appendChild(t),r.appendChild(a),n}(t,n);e.appendChild(o);const r=function(){const e=document.createElement("div");e.id=nt;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(r);const i=function(){const e=document.createElement("canvas");e.id=ct,e.className="shopar-3d";const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",t.pointerEvents="auto",e}();e.appendChild(i);const a=function(){const e=document.createElement("div");return e.className="shopar-ar-prompt-text",e}(),s=function(){const e=new Image;return e.className="shopar-ar-prompt-img",e}(),l=function(e,t){const n=document.createElement("div");n.className="shopar-ar-prompt";const{style:o}=n;return o.position="absolute",o.width="100%",o.height="100%",o.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=Je("2rem",`${b}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=ot("shopar-ar-loading-container"),h=rt("shopar-ar-loading-text",Ze("loading.ar"));d.appendChild(h);const p=it("shopar-ar-loading-bar-bg"),f=at("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=ot("shopar-3d-loading-container"),g=rt("shopar-3d-loading-text",Ze("loading.3d"));m.appendChild(g);const v=it("shopar-3d-loading-bar-bg"),w=at("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",e}(),E=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(E),e.appendChild(y);const A=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),S=function(e){const t=document.createElement("div");t.id=Ye;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const o=document.createElement("div"),r=o.style;return r.position="absolute",r.width="100%",r.height="100%",r.backgroundColor="#ffffff",r.display="flex",r.flexDirection="column",r.justifyContent="center",r.alignItems="center",t.appendChild(o),o.appendChild(e),t}(A);e.appendChild(S);const R=function(){const e=document.createElement("div");return e.id=tt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(R);const C=et("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");R.appendChild(C);const P=et("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${b}/img/icons/cube.svg`);R.appendChild(P);const I=et("shopar-btn-close","Close","Close ShopAR view",`${b}/img/icons/close.svg`);R.append(I);let M,x,T=ut.None,k=!1,L=!1,U=!1,$=!1;function D(){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 o},getQRImage:function(){return n},getDeepARTarget:function(){return r},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){A.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,o,r,i){var a;k=e,L=t,U=n,$=o,M=r,x=i,ft(R,k),ft(C,k&&(U||L)&&T===ut.None),ft(P,k&&$&&T===ut.None),ft(I,k&&T!==ut.None),D(),_(),k||""===(a=S).style.display&&ft(a,!1)},getUIState:function(){return T},setUIState:function(e){T=e,T===ut.None?(D(),_(),k&&(ft(S,!1),ft(I,!1),(L||U)&&ft(C,!0),$&&ft(P,!0))):T===ut.QR||T===ut.AR?k&&(ft(S,!1),ft(C,!1),ft(P,$&&"AR"===x),ft(I,"AR"!==x)):T===ut.Preview&&k&&(ft(S,!1),ft(C,(L||U)&&"3D"===x),ft(P,!1),ft(I,"3D"!==x))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${b}/img/icons/${n}`;C.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(M),C.onclick=e),$&&(P.onclick=t),I.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=E.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:_,setThreePosterUrl:function(e){null!=e?(E.src=e,E.dataset.srcSet="true"):delete E.dataset.srcSet},showCameraError:function(){k&&ft(S,!0)}}}function ft(e,t){e.style.display=t?"":"none"}const mt=new Map;function gt(t){let n=mt.get(t);return null==n?(n=function(){let t=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=pt()),n);return{getSetupId:()=>t,incrementSetupId_:()=>t++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==o){const{getQRTarget:t,getQRImage:n}=i();o=function(t,n){let o=!0;return{qrPaused:()=>o,qrDraw:(r,i)=>e(this,void 0,void 0,(function*(){yield A;const e=`https://ar.shopar.ai/${w.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:r,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,o=!1,t.style.display=""})),qrPause:()=>e(this,void 0,void 0,(function*(){o=!0,t.style.display="none"}))}}(t(),n())}return o},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();r=Qe(e(),t(),n())}return r}}}(),mt.set(t,n)):n.incrementSetupId_(),n}function vt(e){for(const t of mt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===ut.AR&&r(ut.None)}}let wt;const yt=new Uint8Array(16);function bt(){if(!wt&&(wt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!wt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return wt(yt)}const Et=[];for(let e=0;e<256;++e)Et.push((e+256).toString(16).slice(1));var At={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function St(e,t,n){if(At.randomUUID&&!t&&!e)return At.randomUUID();const o=(e=e||{}).random||(e.rng||bt)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=o[e];return t}return function(e,t=0){return Et[e[t+0]]+Et[e[t+1]]+Et[e[t+2]]+Et[e[t+3]]+"-"+Et[e[t+4]]+Et[e[t+5]]+"-"+Et[e[t+6]]+Et[e[t+7]]+"-"+Et[e[t+8]]+Et[e[t+9]]+"-"+Et[e[t+10]]+Et[e[t+11]]+Et[e[t+12]]+Et[e[t+13]]+Et[e[t+14]]+Et[e[t+15]]}(o)}const Rt="qrLaunch",Ct="arLaunch",Pt="previewLaunch",It="heartbeat";let Mt,xt,Tt=!1,kt=window.navigator.userAgent||"no user agent";const Lt=[];function Ut(){null==Mt&&(xt=St(),Mt=E(`${b}/shopar-analytics.js`),Mt.then((()=>{Tt=!0,window.ShopAR__analytics.initializeImpl(),Lt.forEach((e=>e()))})))}function $t(e){Tt?e():Lt.push(e)}function Dt(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function _t(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 Ot=200,Nt=10;let jt=!1,Ft=null,Wt=[],qt=[];function Gt(t){return e(this,void 0,void 0,(function*(){jt=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${b}/wasm/mediapipe`,t),Ft&&clearInterval(Ft);const o=[],r=[];Ft=setInterval((()=>e(this,void 0,void 0,(function*(){if(jt)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());jt||(null!=a&&null!=s&&function(e){for(let t of Wt)t(e)}({translation:a,rotation:s}),null==e&&(o.push(t),r.push(i),o.length<Nt||(o.shift(),r.shift(),function(e,t){for(let n of qt)n({faceWidth:e,IPD:t})}(Qt(o),Qt(r)))))}))),Ot)}))}function zt(){qt=[],Wt=[],jt=!0}function Qt(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}function Vt(n){return e(this,void 0,void 0,(function*(){const o=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 o.blob()).arrayBuffer()}catch(e){throw console.error(e),new t("Resource has invalid body.")}}))}var Kt="undefined"!=typeof Float32Array?Float32Array:Array;function Bt(){var e=new Kt(16);return Kt!=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 Ht(e,t,n){var o=t[0],r=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],g=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*o+b*s+E*d+A*m,e[1]=y*r+b*l+E*h+A*g,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*o+b*s+E*d+A*m,e[5]=y*r+b*l+E*h+A*g,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*o+b*s+E*d+A*m,e[9]=y*r+b*l+E*h+A*g,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*o+b*s+E*d+A*m,e[13]=y*r+b*l+E*h+A*g,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Xt(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Zt(e,t){var n=t[0],o=t[1],r=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,o,r),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function Yt(e,t,n,o){var r=t[0],i=t[1],a=t[2],s=t[3],l=r+r,c=i+i,u=a+a,d=r*l,h=r*c,p=r*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=o[0],E=o[1],A=o[2];return e[0]=(1-(f+g))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+g))*E,e[6]=(m+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(m-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Jt(){var e=new Kt(3);return Kt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function en(e,t,n){var o=new Kt(3);return o[0]=e,o[1]=t,o[2]=n,o}function tn(e,t){var n=t[0]-e[0],o=t[1]-e[1],r=t[2]-e[2];return Math.hypot(n,o,r)}function nn(e,t,n){var o=t[0],r=t[1],i=t[2],a=n[3]*o+n[7]*r+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*o+n[4]*r+n[8]*i+n[12])/a,e[1]=(n[1]*o+n[5]*r+n[9]*i+n[13])/a,e[2]=(n[2]*o+n[6]*r+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function on(){var e=new Kt(4);return Kt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}Jt(),function(){var e,t=(e=new Kt(4),Kt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var rn;let an,sn,ln;Jt(),en(1,0,0),en(0,1,0),on(),on(),rn=new Kt(9),Kt!=Float32Array&&(rn[1]=0,rn[2]=0,rn[3]=0,rn[5]=0,rn[6]=0,rn[7]=0),rn[0]=1,rn[4]=1,rn[8]=1;let cn,un,dn,hn,pn=!0,fn=null;const mn=new Set;let gn,vn,wn,yn,bn,En;function An(){null==an&&(an=E(`${b}/shopar-deepar.js`))}function Sn(){null==sn&&(sn=E(`${b}/shopar-true-scale.js`))}function Rn(n){return e(this,void 0,void 0,(function*(){const{licenseKey:o,truescaleUsecase:r}=n;return bn=r,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=Un(dn),r=Dt(n);cn=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:o||"your_license_key_goes_here",previewElement:hn,additionalOptions:{hint:En,cameraConfig:{disableDefaultCamera:!0}}}),un=yield _t(r),yield $n(cn,un,"user"===n),"Glasses"===dn&&(yield sn,Gt(un),"DetectionLoop"!==bn&&Nn((e=>{yn=e.faceWidth})))})))()),gn}))}function Cn(e,t){var n,o;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===dn&&(n=t,o=En,n===o||null!=n&&null!=o&&n.length===o.length&&n.every((e=>o.find((t=>e===t))))&&o.every((e=>n.find((t=>t===e))))))||(null!=cn&&(cn.shutdown(),cn=null,gn=null),dn=e,En=t)}function Pn(e){e!==hn&&(hn=e,null!=cn&&cn.changePreviewElement(hn))}function In(e){fn=e}function Mn(e){cn.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(yn){const e=137/(yn+5);cn.changeParameterVector("GLASSES","","scale",e,e,e,0),cn.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const o=_n("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),r=_n("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);cn.changeParameterVector("temple_left","","rotation",0,56.6*-o,0,0),cn.changeParameterVector("temple_right","","rotation",0,56.6*-r,0,0)}catch(e){return}}(e),zt(),yn=null}e(),Dn("Glasses")}},cn.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),Dn("Shoes"))},cn.callbacks.onWristTracked=t=>{t.detected&&(e(),Dn("Watches"))}}function xn(t,n,o){return e(this,void 0,void 0,(function*(){return null!=vn&&wn===o||(yield vn,vn=cn.switchEffect(t,{envmap:n}),wn=o),vn}))}function Tn(e,t){null!=e&&null!=t&&(cn.setToneMapping(e),cn.setExposure(t))}function kn(){return e(this,void 0,void 0,(function*(){if(null!=cn){if(pn=!1,null==un){const e=Un(dn),t=Dt(e);un=yield _t(t),yield $n(cn,un,"user"===e),"Glasses"===dn&&(Gt(un),"DetectionLoop"!==bn&&Nn((e=>{yn=e.faceWidth})))}!function(){if(null==fn)return;if(null==dn||mn.has(dn))return;fn.style.visibility="visible",fn.style.opacity="1"}(),cn.setPaused(pn),hn.style.display=""}}))}function Ln(){null!=cn&&(pn=!0,cn.setPaused(pn),zt(),null!=un&&null!=un.srcObject&&un.srcObject instanceof MediaStream&&(un.srcObject.getTracks().forEach((e=>e.stop())),un=null),function(){if(null==fn)return;fn.style.visibility="hidden",fn.style.opacity="0"}(),cn.stopCamera(),hn.style.display="none")}function Un(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function $n(t,n,o){return e(this,void 0,void 0,(function*(){yield new Promise((r=>{n.onloadedmetadata=()=>{n.play().then((()=>e(this,void 0,void 0,(function*(){t.setVideoElement(n,o),r()}))))}}))}))}function Dn(e){null!=fn&&(mn.has(e)||(mn.add(e),fn.style.opacity="0"))}function _n(e,t,n,o,r,i,a){const s=cn.getTransformationBetween(e,t),l=Xt(Jt(),s),c=function(e,t){var n=new Kt(3);Zt(n,t);var o=1/n[0],r=1/n[1],i=1/n[2],a=t[0]*o,s=t[1]*r,l=t[2]*i,c=t[4]*o,u=t[5]*r,d=t[6]*i,h=t[8]*o,p=t[9]*r,f=t[10]*i,m=a+u+f,g=0;return m>0?(g=2*Math.sqrt(m+1),e[3]=.25*g,e[0]=(d-p)/g,e[1]=(h-l)/g,e[2]=(s-c)/g):a>u&&a>f?(g=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/g,e[0]=.25*g,e[1]=(s+c)/g,e[2]=(h+l)/g):u>f?(g=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/g,e[0]=(s+c)/g,e[1]=.25*g,e[2]=(d+p)/g):(g=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/g,e[0]=(h+l)/g,e[1]=(d+p)/g,e[2]=.25*g),e}(on(),s);Yt(s,c,l,en(a,a,a));const u=cn.getTransformationBetween(t,n),d=Xt(Jt(),u);Yt(u,on(),d,Zt(Jt(),u));const h=Ht(Bt(),s,u),p=Xt(Jt(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=cn.getTransformationBetween(n,o)}catch(e){return f}const g=Ht(Bt(),u,m),v=Ht(Bt(),s,g),w=en(p[0],i[1],i[2]),y=nn(Jt(),w,function(e,t){var n=t[0],o=t[1],r=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-o*a,y=n*l-r*a,b=n*c-i*a,E=o*l-r*s,A=o*c-i*s,S=r*c-i*l,R=u*m-d*f,C=u*g-h*f,P=u*v-p*f,I=d*g-h*m,M=d*v-p*m,x=h*v-p*g,T=w*x-y*M+b*I+E*P-A*C+S*R;return T?(T=1/T,e[0]=(s*x-l*M+c*I)*T,e[1]=(r*M-o*x-i*I)*T,e[2]=(m*S-g*A+v*E)*T,e[3]=(h*A-d*S-p*E)*T,e[4]=(l*P-a*x-c*C)*T,e[5]=(n*x-r*P+i*C)*T,e[6]=(g*b-f*S-v*y)*T,e[7]=(u*S-h*b+p*y)*T,e[8]=(a*M-s*P+c*R)*T,e[9]=(o*P-n*M-i*R)*T,e[10]=(f*A-m*b+v*w)*T,e[11]=(d*b-u*A-p*w)*T,e[12]=(s*C-a*I-l*R)*T,e[13]=(n*I-o*C+r*R)*T,e[14]=(m*y-f*E-g*w)*T,e[15]=(u*E-d*y+h*w)*T,e):null}(Bt(),v));let b=cn.getClosestPointOnMesh(o,y);try{const e=cn.getClosestPointOnMesh(r,y);tn(y,e)<tn(y,b)&&(b=e)}catch(e){}const E=nn(Jt(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function On(e){!function(e){Wt.push(e)}(e)}function Nn(e){!function(e){qt.push(e)}(e)}var jn;function Fn(){return[jn.Android,jn.iOS,jn.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],o=["Win32","Win64","Windows","WinCE"],r=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==r.indexOf(t)?jn.iOS:-1!==n.indexOf(t)?i?jn.Tablet:jn.MacOS:-1!==o.indexOf(t)?jn.Windows:/Android/.test(e)?jn.Android:/Linux/.test(t)?jn.Linux:i?jn.Tablet:jn.Unknown}return jn.Unknown}())}function Wn(o,r,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(`${o}`).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,r)*((a>>5)-1),152===c[l]&&(c[l]=w),i==l)return v;i=l,i^=l;for(let e=0,t=v.length;e<t;e++)c[l]^=c[i]<<13,c[l]^=c[i]>>17,c[l]^=c[i]<<5,v[e]=v[e]^c[l];return i^=c[0],i^=c[1],i^=c[2],v}))}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(jn||(jn={}));const qn=["AR","3D"];function Gn(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function zn(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}function Qn(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}function Vn(e){const{apiKey:n,sku:o,targetElement:r,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;Gn(n,"apiKey"),Qn(n,"apiKey"),Gn(o,"sku"),Qn(o,"sku"),Gn(r,"targetElement"),function(e,n){if(!(e instanceof HTMLElement))throw new t(`'${n}' must be an HTMLElement.`)}(r,"targetElement"),null!=i&&function(e,n,o){if("string"!=typeof e)throw new t(`'${n}' must be a string.`);if(!o.includes(e))throw new t(`'${n}' must be ${o.join("' or '")}.`)}(i,"initialState",qn),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&&Qn(s,"baseUrl"),null!=l&&zn(l,"defaultUI"),null!=c&&zn(c,"interactive"),null!=u&&function(e,n,o){for(const r of o){const o=e[r];if(null!=o&&"string"!=typeof o)throw new t(`Value for key '${r}' in '${n}' must be a string.`)}}(u,"strings",Xe)}let Kn=!1;function Bn(n){return e(this,void 0,void 0,(function*(){const{targetElement:o}=n;b.update(n.baseUrl),Ut();const{trackEvent:r}=function(e){const t=performance.now(),n=St();return{trackEvent:(o,r={})=>{r=Object.assign(Object.assign({},r),{pluginVersion:w,userAgent:kt,sessionId:xt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),$t((()=>{window.ShopAR__analytics.trackEventImpl(o,r)}))}}}(n.apiKey);r("visionSetup");const i=yield function(n){return e(this,void 0,void 0,(function*(){const o=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 o.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(n.apiKey);r("visionApiResponse",i);const{arKey:a}=i,s=gt(o),{getSetupId:l,findUI:c}=s,d=l();An(),Sn();const{setTargetElement:h,getDeepARTarget:f,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:y,stopDeepARLoading:E,showCameraError:A}=c();if(g()!=ut.None)throw Error("UI state is not None, this is weird..");v(ut.AR),h(o),m(!1,!1,!0,!1,void 0,void 0),y(),yield an,Hn(l(),d);try{r("visionArLaunch"),Ln(),Cn("Glasses",["faceInit"]),Pn(f()),yield Rn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),Hn(l(),d),yield kn(),Hn(l(),d)}catch(e){const n=e instanceof Error;throw r("visionArLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),A(),Ln(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{E()}return Kn=!0,{registerFacePoseListener:e=>{Kn&&(r("registerFacePoseListener"),On(e))},registerFaceMeasurementListener:e=>{Kn&&(r("registerFaceMeasurementListener"),Nn(e))},switchEffect:t=>e(this,void 0,void 0,(function*(){Kn&&(r("switchEffect",{arUrl:t}),function(e){cn.switchEffect(e)}(t))})),clearEffect:()=>{Kn&&(r("clearEffect"),cn.clearEffect())},close:()=>{if(Kn){if(Kn=!1,r("visionClose"),g()!==ut.AR)throw new t("AR not launched.");Ln(),v(ut.None)}}}}))}function Hn(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}function Xn(n){var o,r;return e(this,void 0,void 0,(function*(){Vn(n);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=n,d=null==n.zoomEnabled||n.zoomEnabled;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),b.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(He,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(He[t]=n)}}(n.strings);const h=null!=c?we(c):null,y=null!=(null==h?void 0:h.theta)?te(h.theta):null,S=null!=(null==h?void 0:h.phi)?te(h.phi):null,R=null!=(null==h?void 0:h.fov)?te(h.fov):null,C=function(n,o,r,i,a){return e(this,void 0,void 0,(function*(){const s=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({apiKey:n,sku:o,sid:u()},null!=r&&{yaw:`${m(f(r))}`}),null!=i&&{pitch:`${m(f(i))}`}),null!=a&&{fov:`${m(f(a))}`}))}`).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 s.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(i,a,null==y?void 0:y.get(),null==S?void 0:S.get(),null==R?void 0:R.get()),P=gt(s),{getSetupId:I,findUI:M,findQR:x,findThree:T}=P,k=I();Ut();const{trackEvent:L,arInteracted:U,previewInteracted:$}=function(e,t){const n=performance.now(),o=St();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,u(It,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const u=(r,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:kt,pluginVersion:w,sessionId:xt,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),$t((()=>{window.ShopAR__analytics.trackEventImpl(r,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);L("setup",{hostname:window.location.hostname});const D=yield C;L("apiResponse",D);const{category:_,arUrl:O,arEnvUrl:N,arToneMapping:j,arToneMappingExposure:F,arKey:W,arPromptEnabled:q,arPromptText:G,arPromptImage:z,previewUrl:Q,previewEnvUrl:V,previewToneMapping:K,previewToneMappingExposure:B,previewPosterUrl:H,cameraErrorText:X,qrPromptText:Z}=D;Zn(I(),k);const Y=null!=O&&function(e){return null!=e&&g.includes(e)}(_),J=null==(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled),ee=Y&&function(e){return null!=e&&v.includes(e)}(_),ne=J&&ee&&!Fn(),oe=Y&&!ne,re=null!=Q;if(Zn(I(),k),ne&&function(){e(this,void 0,void 0,(function*(){null==A&&(A=E(`${b}/shopar-qr.js`))}))}(),oe&&(An(),function(e){e!==ln&&(ln=e,Vt(e),vn=null,zt())}(O),"Glasses"===_&&Sn(),null!=N&&Vt(N)),re){null==Le&&(Le=E(`${b}/shopar-three.js`));const e=255;Wn(Q,(new Date).getTime()+e,Math.random()*e),Vt(null!=V?V:`${b}/env/default.hdr`)}const{setTargetElement:ie,getDeepARTarget:ae,getDeepARPrompt:se,customizeDeepARPrompt:le,customizeCameraError:ce,customizeQRPrompt:ue,setVisibilityParameters:de,getUIState:he,setUIState:pe,setDefaultUIActions:fe,startDeepARLoading:me,stopDeepARLoading:ge,startThreeLoading:ve,stopThreeLoading:ye,setThreePosterUrl:be,showCameraError:Ee}=M();ie(s);de(null==n.defaultUI||n.defaultUI,ne,oe,re,_,l),le(null!=G?G:"",null!=z?z:""),ce(X),ue(Z),be(H),function(e,n){const o=e.parentNode;if(null==o)throw new t("Parent node missing.");new MutationObserver((t=>{for(const o of t)for(const t of o.removedNodes)if(t===e)return void n()})).observe(o,{childList:!0})}(s,(()=>{he()!==ut.QR||Ae()||Re(),he()!==ut.AR||pn||Ln(),he()!==ut.Preview||Me()||Te(),pe(ut.None)}));const{qrPaused:Ae,qrDraw:Se,qrPause:Re}=x(),{threeInit:Ce,threeParse:Pe,threeLoad:Ie,threePaused:Me,threeResume:xe,threePause:Te,threeSetZoomEnabled:ke,threeSetToneMapping:Ue,threeIsInteractive:$e,threeSetInteractive:De,threeSetOnInteracted:_e,threeInitPromptAnimation:Oe,threeInitThetaAnimation:Ne,threeInitPhiAnimation:je,threeInitFovAnimation:Fe}=T(),We=null==n.interactive||n.interactive;De(We);let qe=0;if(he()===ut.QR){if(!Ae())if(ne){L(Rt);try{yield Se(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Re(),pe(ut.None)}else if(he()===ut.AR){if(!pn)if(oe&&!Kn){L(Ct);const e=null!=N?yield Vt(N):void 0;Zn(I(),k);const t=yield Vt(O);Zn(I(),k),vt(P),Cn(_),Pn(ae()),In(q?se():null),yield xn(t,e,`${O}${N}`),Tn(j,F),Mn(U),Zn(I(),k)}else Ln(),pe(ut.None)}else if(he()===ut.Preview&&!Me())if(re){L(Pt),ve();const e=255,t=yield Wn(Q,(new Date).getTime()+e,Math.random()*e);Zn(I(),k);const n=yield Vt(null!=V?V:`${b}/env/default.hdr`);Zn(I(),k);const o=yield Pe(t,n,`${Q}${V}`);Zn(I(),k),Ie(o,_),ke(d),Ue(null!=K?K:"ACES",null!=B?B:1),_e($),Oe(),null!=h&&(Ne(y),je(S),Fe(R)),ye()}else Te(),pe(ut.None);const Ge=()=>e(this,void 0,void 0,(function*(){if(ne){if(he()===ut.QR||he()===ut.AR)return;try{L(Rt);const e=++qe;if(he()===ut.Preview&&re&&!Me()&&Te(),pe(ut.QR),yield Se(i,a),qe!==e)return;return void Zn(I(),k)}catch(e){const n=e instanceof Error;throw L("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}}if(!oe)throw new t("Model does not have AR enabled.");if(he()!==ut.AR)try{L(Ct);const e=++qe;he()===ut.Preview&&re&&!Me()&&Te(),vt(P),pe(ut.AR),me();const t=null!=N?yield Vt(N):void 0;Zn(I(),k);const n=yield Vt(O);if(qe!==e)return;if(Zn(I(),k),yield an,qe!==e)return;if(Zn(I(),k),Ln(),Cn(_),Pn(ae()),In(q?se():null),yield Rn({licenseKey:W}),qe!==e)return;if(Zn(I(),k),yield xn(n,t,`${O}${N}`),Tn(j,F),Mn(U),qe!==e)return;if(Zn(I(),k),yield kn(),qe!==e)return;Zn(I(),k)}catch(e){const n=e instanceof Error;throw L("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),Ee(),Ln(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{ge()}})),ze=()=>e(this,void 0,void 0,(function*(){if(!re)throw new t("Model does not have 3D enabled.");if(he()!==ut.Preview)try{L(Pt);const e=++qe;he()===ut.AR&&(oe&&!pn&&Ln(),Re()),pe(ut.Preview),ve();const t=255,n=yield Wn(Q,(new Date).getTime()+t,Math.random()*t);if(qe!==e)return;Zn(I(),k);const o=yield Vt(null!=V?V:`${b}/env/default.hdr`);if(qe!==e)return;if(Zn(I(),k),yield Le,qe!==e)return;if(Zn(I(),k),Ce(),qe!==e)return;Zn(I(),k);const r=yield Pe(n,o,`${Q}${V}`);if(qe!==e)return;Zn(I(),k),Ie(r,_),ke(d),Ue(null!=K?K:"ACES",null!=B?B:1),_e($),Oe(),null!=h&&(Ne(y),je(S),Fe(R)),xe()}catch(e){const n=e instanceof Error;throw L("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}finally{ye()}})),Qe=()=>e(this,void 0,void 0,(function*(){he()!==ut.None&&(++qe,he()===ut.QR||he()===ut.AR?(oe&&!pn&&Ln(),Re()):he()===ut.Preview&&re&&!Me()&&Te(),pe(ut.None),"AR"!==l?"3D"!==l||(yield ze()):yield Ge())}));return fe(Ge,ze,Qe),"AR"===l?(yield Ge(),Zn(I(),k)):"3D"===l&&(yield ze(),Zn(I(),k)),Kn=!1,{launchAR:Y?Ge:void 0,launch3D:re?ze:void 0,closeAR:Y?()=>e(this,void 0,void 0,(function*(){he()!==ut.AR&&he()!==ut.QR||(++qe,oe&&!pn&&Ln(),Re(),pe(ut.None),"3D"!==l||(yield ze()))})):void 0,close3D:re?()=>e(this,void 0,void 0,(function*(){he()===ut.Preview&&(++qe,re&&!Me()&&Te(),pe(ut.None),"AR"!==l||(yield Ge()))})):void 0,close:Y||re?Qe:void 0,isInteractive:()=>$e(),setInteractive:e=>De(e)}}))}function Zn(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const Yn={setup:function(t){return e(this,void 0,void 0,(function*(){return Bn(t)}))}},Jn={setup:function(n){return e(this,void 0,void 0,(function*(){return function(n,o){return e(this,void 0,void 0,(function*(){try{return o()}catch(e){throw e instanceof Error?new t(`${n} failed: ${e.message}`):(console.error(e),new t(`${n} failed.`))}}))}("setup",(()=>Xn(n)))}))},version:w};export{qn as PREVIEW_STATES,t as PluginError,Jn as plugin,Yn as vision};
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ShopAR={})}(this,(function(e){"use strict";function t(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{l(o.next(e))}catch(e){i(e)}}function s(e){try{l(o.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((o=o.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class n extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const o=[Uint8Array,Uint32Array],r=o.length-2,i=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],a=[2,12,7,1],s=window[i[a[a[r]]]][i[a[a[a.length-1]]]],l=s.charCodeAt(r),c=l^l,u=new o[1]([c]);function d(){const e=(new TextEncoder).encode(s),t=i.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[i[t[2]]](String.fromCodePoint(...e))}const h=[1e3,2e3,4e3],p=h.length;function f(e,n=0){return t(this,void 0,void 0,(function*(){try{return yield e()}catch(t){if(n>=p)throw t;return yield new Promise((e=>setTimeout(e,h[n]))),f(e,n+1)}}))}function m(e){return e*(180/Math.PI)}function g(e){return Math.round(100*e)/100}const v=["Glasses","Shoes","Watches"],w=["Shoes"];const y="0.7.0-alpha.1";let b=`https://cdn.jsdelivr.net/npm/shopar-plugin@${y}/dist`;const E={update:e=>{null!=e&&(b=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>b};function A(e){return t(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const t=document.createElement("script");return t.setAttribute("src",e),t.setAttribute("crossorigin","anonymous"),new Promise((e=>{t.addEventListener("load",(()=>e()),!1),t.addEventListener("error",(()=>e()),!1),document.body.appendChild(t)}))}importScripts(e.toString())}))}let S;const R=(()=>{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,x;function I(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}(x.parse(e));return t.mapping=P.EquirectangularReflectionMapping,t.colorSpace=P.LinearSRGBColorSpace,t}const M=45,T=45,k=3,L=1.5,U=1,$=.5;let D,_,O,N,j,F=!1;const W=4,q=.001,G=1e-7,z=10,V=11,Q=1/(V-1),K="function"==typeof Float32Array;function B(e,t,n,o){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===o)return ee;const r=K?new Float32Array(V):new Array(V);for(let t=0;t<V;++t)r[t]=Y(t*Q,e,n);function i(t){let o=0,i=1;const a=V-1;for(;i!==a&&r[i]<=t;++i)o+=Q;--i;const s=o+(t-r[i])/(r[i+1]-r[i])*Q,l=J(s,e,n);return l>=q?function(e,t,n,o){for(let r=0;r<W;++r){const r=J(t,n,o);if(0===r)return t;t-=(Y(t,n,o)-e)/r}return t}(t,s,e,n):0===l?s:function(e,t,n,o,r){let i,a,s=0;do{a=t+(n-t)/2,i=Y(a,o,r)-e,i>0?n=a:t=a}while(Math.abs(i)>G&&++s<z);return a}(t,o,o+Q,e,n)}return function(e){return 0===e||1===e?e:Y(i(e),t,o)}}function H(e,t){return 1-3*t+3*e}function X(e,t){return 3*t-6*e}function Z(e){return 3*e}function Y(e,t,n){return((H(t,n)*e+X(t,n))*e+Z(t))*e}function J(e,t,n){return 3*H(t,n)*e*e+2*X(t,n)*e+Z(t)}function ee(e){return e}function te(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=B(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function ne(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:te(n)})));let o=0,r=n[0].value;return{reset:()=>{o=0},update:e=>{for(o+=e;o>=t;)o-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(o>=t.time&&o<i.time){const e=t.interpolate((o-t.time)/(i.time-t.time));r=t.value+e*(i.value-t.value)}}},get:()=>r}}const oe="#",re="time",ie="interpolation",ae="yaw",se="pitch",le="fov",ce=[re,ae,se,le,ie],ue="s",de="ms",he=1e3,pe="deg",fe="rad",me=Math.PI/180,ge="ease-in-out",ve="cubic-bezier(",we=")";function ye(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(oe);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const o=function(e){const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!ce.includes(o))throw new Error(`Invalid token in header: '${o}'.`);if(t.includes(o))throw new Error(`Duplicate token in header: '${o}'.`);t.push(o)}if(!t.includes(re))throw new Error(`Missing required token: '${re}'.`);return t}(t.split(/\s+/)),r={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=be(o,e);null!=t&&(null==r.theta&&(r.theta=[]),r.theta.push(t)),null!=n&&(null==r.phi&&(r.phi=[]),r.phi.push(n)),null!=i&&(null==r.fov&&(r.fov=[]),r.fov.push(i))}if(0===Object.values(r).length)throw new Error("At least one parameter should be animated.");return r}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const o of e){const{time:e,pitch:r,yaw:i,fov:a}=o;if(null==e)throw new Error("Time missing.");const s=Ae(null!==(t=o.interpolation)&&void 0!==t?t:ge);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*me,interpolation:s})),null!=r&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:r*me,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*me,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function be(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const o=e.indexOf(re),r=function(e){if(e.endsWith(de))return Re(e.substring(0,e.length-de.length));if(e.endsWith(ue))return Re(e.substring(0,e.length-ue.length))*he;return Re(e)}(n[o]),i=e.indexOf(ie),a=Ae(-1===i?ge:n[i]),s={};for(let t=0;t<n.length;t++){if(t===o||t===i)continue;const l=e[t],c=n[t];switch(l){case ae:s.theta={time:r,value:Ee(c),interpolation:a};break;case se:s.phi={time:r,value:Ee(c),interpolation:a};break;case le:s.fov={time:r,value:Ee(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Ee(e){return e.endsWith(pe)?Re(e.substring(0,e.length-pe.length))*me:e.endsWith(fe)?Re(e.substring(0,e.length-fe.length)):Re(e)*me}function Ae(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Se(0,0,1,1);if("sine"===e)return Se(.37,0,.63,1);if("sine-in"===e)return Se(.12,0,.39,0);if("sine-out"===e)return Se(.61,1,.88,1);if("ease"===e)return Se(.25,.1,.25,1);if("ease-in"===e)return Se(.42,0,1,1);if("ease-out"===e)return Se(0,0,.58,1);if("ease-in-out"===e)return Se(.42,0,.58,1);if(e.startsWith(ve)&&e.endsWith(we)){const t=e.substring(ve.length,e.length-we.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Re(t[0]),y1:Re(t[1]),x2:Re(t[2]),y2:Re(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Se(e,t,n,o){return{type:"bezier",x1:e,y1:t,x2:n,y2:o}}function Re(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Ce=300,Pe=2e3,xe=.05,Ie=2*Math.PI/32,Me=Ae("hold"),Te=Ae("sine"),ke=Ae("sine-in"),Le=Ae("sine-out");let Ue;const $e=0,De=3;let _e,Oe,Ne,je=!1,Fe=1,We=1,qe=1;const Ge=1;let ze;const Ve=new Map;function Qe(e,n,o){const r=e.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y=!1,b=!1,E=!0,A=!1,S=1,R=!0,U=!1,F=0,W=0,q=1,G=1,z=1;const V={threeInit:()=>{y||(Ke(),i=new Oe.Scene,a=new Oe.PerspectiveCamera(25,1,.5),s=new _e.OrbitControls(a,e),s.setInteractionEnabled(R),h=Oe.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new D.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new D.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new D.Group;o.position.y=-.7;const r=new D.PlaneGeometry(M,T).rotateX(Math.PI/2),i=new D.MeshBasicMaterial({map:t.texture,opacity:$,transparent:!0,depthWrite:!1}),a=new D.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new D.Mesh(r);s.visible=!1,o.add(s);const l=new D.OrthographicCamera(-M/2,M/2,T/2,-T/2,0,k);function c(e){s.visible=!0,N.uniforms.tDiffuse.value=t.texture,N.uniforms.h.value=1*e/256,s.material=N,_.setRenderTarget(n),_.render(s,l),j.uniforms.tDiffuse.value=n.texture,j.uniforms.v.value=1*e/256,s.material=j,_.setRenderTarget(t),_.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,o.add(l),{shadowGroup:o,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=O;const o=_.getClearAlpha();_.setClearAlpha(0),_.setRenderTarget(t),_.render(e,l),e.overrideMaterial=null,c(L),c(.4*L),_.setRenderTarget(null),_.setClearAlpha(o),e.background=n}}}(i)),y=!0)},threeParse:(e,n,o)=>t(this,void 0,void 0,(function*(){return null!=u&&d===o||(yield u,u=(()=>t(this,void 0,void 0,(function*(){var t,o;return P=(t=_e).THREE,x=new t.RGBELoader,i.environment=I(n),function(e,t){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)}(ze,_e),o=e,C.parseAsync(o.buffer,"")})))(),d=o),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t,n;e instanceof Oe.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach((e=>e.dispose())):null===(n=e.material)||void 0===n||n.dispose())})),i.clear(),i.add(e.scene);const n=(new Oe.Box3).setFromObject(e.scene);l.position.y=n.min.y-$e,i.add(l),c(),b=!1,i.traverse((e=>{if(e instanceof Oe.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(b=!0)})):t.transmission>0&&(b=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(_e.reduceVertices(e.scene,((e,t)=>Math.max(e,o.distanceToSquared(t))),0));s.reset(o,r,function(e,t){var n;const o={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?o.Glasses:null!==(n=o[e])&&void 0!==n?n:o.Glasses).normalize()}(t,Oe.Vector3)),F=0},threePaused:()=>E,threeResume:()=>{E=!1,ze.setAnimationLoop(Be),e.style.visibility="visible",W=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset()},threePause:()=>{E=!0,function(){for(const{threePaused:e}of Ve.values())if(!e())return!1;return!0}()&&ze.setAnimationLoop(null),e.style.visibility="hidden",o.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetToneMapping:(e,t)=>{const n={ACES:Oe.ACESFilmicToneMapping,Linear:Oe.LinearToneMapping,Neutral:Oe.NeutralToneMapping};null!=n[e]&&(h=n[e]),S=t},threeIsInteractive:()=>R,threeSetInteractive:e=>{R=e,null==s||s.setInteractionEnabled(R)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=ne([{time:0,value:e,interpolation:Me},{time:Ce,value:e,interpolation:Le},{time:Ce+Pe/4,value:e+Ie,interpolation:Te},{time:Ce+3*Pe/4,value:e-Ie,interpolation:ke},{time:Ce+Pe,value:e,interpolation:Me},{time:Ce+2*Pe,value:e,interpolation:Me}]),s.setTheta(f.get()),m=null,g=null,v=ne([{time:0,value:0,interpolation:Me},{time:Ce,value:1,interpolation:Me},{time:Ce+Pe,value:0,interpolation:Me},{time:Ce+2*Pe,value:0,interpolation:Me}]),w=ne([{time:0,value:0,interpolation:Me},{time:Ce,value:0,interpolation:Le},{time:Ce+Pe/4,value:-xe,interpolation:Te},{time:Ce+3*Pe/4,value:xe,interpolation:ke},{time:Ce+Pe,value:0,interpolation:Me},{time:Ce+2*Pe,value:0,interpolation:Me}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{m=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{g=e,null!=e&&s.setFovRadians(e.get())},preRender_:e=>{if(!y||E)return;let t=0!==W?e-W:0;W=e,0===F?A=!0:F<De&&(t=0),F++,U||(s.hasUserInteracted()?(U=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(t),null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),null!=f&&(s.setTheta(f.get()),A=!0),null!=m&&(s.setPhi(m.get()),A=!0),null!=g&&(s.setFovRadians(g.get()),A=!0))),s.update()&&(A=!0)},shouldRender_:()=>!(!y||E)&&A,render_:()=>{const t=ze.toneMapping,s=ze.toneMappingExposure;ze.toneMapping=h,ze.toneMappingExposure=S,ze.setViewport(0,0,e.width,e.height),ze.setClearColor(new Oe.Color(16777215),b?1:0),ze.render(i,a),ze.toneMapping=t,ze.toneMappingExposure=s,A=!1,null!=r&&(r.clearRect(0,0,e.width,e.height),Ne.width>0&&Ne.height>0&&r.drawImage(Ne,0,We-e.height,e.width,e.height,0,0,e.width,e.height),n.style.visibility=R&&!U?"visible":"hidden",null!=v&&(o.style.opacity=`${v.get()}`),null!=w&&(o.style.transform=`translateX(${w.get()*Math.min(q,G)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===q&&n===G&&qe===z||(e.width=Math.ceil(t*qe*Ge),e.height=Math.ceil(n*qe*Ge),q=t,G=n,z=qe,A=!0)},target_:e};return Ve.set(e,V),V}function Ke(){if(je)return;_e=window.ShopAR__THREE,Oe=_e.THREE,Ne=document.createElement("canvas");var e,t;Ne.style.position="block",ze=new Oe.WebGLRenderer({powerPreference:"high-performance",canvas:Ne,antialias:!0,alpha:!0}),ze.outputColorSpace=Oe.SRGBColorSpace,ze.toneMapping=Oe.ACESFilmicToneMapping,ze.setClearColor(new Oe.Color(16777215),0),e=ze,t=_e,F||(D=t.THREE,_=e,O=new D.MeshDepthMaterial,O.userData.darkness={value:U},O.onBeforeCompile=e=>{e.uniforms.darkness=O.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},O.depthTest=!1,O.depthWrite=!1,N=new D.ShaderMaterial(t.HorizontalBlurShader),N.depthTest=!1,j=new D.ShaderMaterial(t.VerticalBlurShader),j.depthTest=!1,F=!0),He(),je=!0}function Be(e){He(),ze.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of Ve.values())t(e),n()&&o()}function He(){let e=0,t=0;for(const{target_:n}of Ve.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=R();e=Math.ceil(e*n*Ge),t=Math.ceil(t*n*Ge),e===Fe&&t===We&&n===qe||(Fe=e,We=t,qe=n,ze.setSize(Fe,We,!1));for(const{updateSize_:e}of Ve.values())e()}const Xe={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},Ze=Object.keys(Xe);function Ye(e){return Xe[e]}const Je="shopar-error";function et(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const o=document.createElementNS("http://www.w3.org/2000/svg","image");o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),o.setAttribute("width",e),o.setAttribute("height",e),n.appendChild(o)}return n}function tt(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=et("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;const i=r.style;return i.display="none",i.pointerEvents="auto",r}const nt="shopar-control";const ot="shopar-deepar-output";function rt(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function it(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function at(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function st(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const lt="shopar-main";const ct="shopar-qr-output";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 ht=!1;function pt(){ht||(!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.")}}(),ht=!0)}function ft(){pt();const e=function(){const e=document.createElement("div");e.id=lt;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),o=function(e,t){const n=document.createElement("div");n.id=ct;const o=n.style;o.position="absolute",o.top="0",o.left="0",o.width="100%",o.height="100%",o.display="none",o.pointerEvents="auto",o.userSelect="none";const r=document.createElement("div");r.className="shopar-qr";const i=r.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(r),r.appendChild(e);const a=document.createElement("div");return a.appendChild(t),r.appendChild(a),n}(t,n);e.appendChild(o);const r=function(){const e=document.createElement("div");e.id=ot;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(r);const i=function(){const e=document.createElement("canvas");e.id=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:o}=n;return o.position="absolute",o.width="100%",o.height="100%",o.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=et("2rem",`${E}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=rt("shopar-ar-loading-container"),h=it("shopar-ar-loading-text",Ye("loading.ar"));d.appendChild(h);const p=at("shopar-ar-loading-bar-bg"),f=st("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=rt("shopar-3d-loading-container"),g=it("shopar-3d-loading-text",Ye("loading.3d"));m.appendChild(g);const v=at("shopar-3d-loading-bar-bg"),w=st("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",e}(),b=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(b),e.appendChild(y);const A=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),S=function(e){const t=document.createElement("div");t.id=Je;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const o=document.createElement("div"),r=o.style;return r.position="absolute",r.width="100%",r.height="100%",r.backgroundColor="#ffffff",r.display="flex",r.flexDirection="column",r.justifyContent="center",r.alignItems="center",t.appendChild(o),o.appendChild(e),t}(A);e.appendChild(S);const R=function(){const e=document.createElement("div");return e.id=nt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(R);const C=tt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");R.appendChild(C);const P=tt("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${E}/img/icons/cube.svg`);R.appendChild(P);const x=tt("shopar-btn-close","Close","Close ShopAR view",`${E}/img/icons/close.svg`);R.append(x);let I,M,T=dt.None,k=!1,L=!1,U=!1,$=!1;function D(){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 o},getQRImage:function(){return n},getDeepARTarget:function(){return r},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){A.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,o,r,i){var a;k=e,L=t,U=n,$=o,I=r,M=i,mt(R,k),mt(C,k&&(U||L)&&T===dt.None),mt(P,k&&$&&T===dt.None),mt(x,k&&T!==dt.None),D(),_(),k||""===(a=S).style.display&&mt(a,!1)},getUIState:function(){return T},setUIState:function(e){T=e,T===dt.None?(D(),_(),k&&(mt(S,!1),mt(x,!1),(L||U)&&mt(C,!0),$&&mt(P,!0))):T===dt.QR||T===dt.AR?k&&(mt(S,!1),mt(C,!1),mt(P,$&&"AR"===M),mt(x,"AR"!==M)):T===dt.Preview&&k&&(mt(S,!1),mt(C,(L||U)&&"3D"===M),mt(P,!1),mt(x,"3D"!==M))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${E}/img/icons/${n}`;C.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(I),C.onclick=e),$&&(P.onclick=t),x.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:_,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){k&&mt(S,!0)}}}function mt(e,t){e.style.display=t?"":"none"}const gt=new Map;function vt(e){let n=gt.get(e);return null==n?(n=function(){let e=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=ft()),n);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==o){const{getQRTarget:e,getQRImage:n}=i();o=function(e,n){let o=!0;return{qrPaused:()=>o,qrDraw:(r,i)=>t(this,void 0,void 0,(function*(){yield S;const t=`https://ar.shopar.ai/${y.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:r,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(t),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,o=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){o=!0,e.style.display="none"}))}}(e(),n())}return o},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();r=Qe(e(),t(),n())}return r}}}(),gt.set(e,n)):n.incrementSetupId_(),n}function wt(e){for(const t of gt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===dt.AR&&r(dt.None)}}let yt;const bt=new Uint8Array(16);function Et(){if(!yt&&(yt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!yt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return yt(bt)}const At=[];for(let e=0;e<256;++e)At.push((e+256).toString(16).slice(1));var St={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Rt(e,t,n){if(St.randomUUID&&!t&&!e)return St.randomUUID();const o=(e=e||{}).random||(e.rng||Et)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=o[e];return t}return function(e,t=0){return At[e[t+0]]+At[e[t+1]]+At[e[t+2]]+At[e[t+3]]+"-"+At[e[t+4]]+At[e[t+5]]+"-"+At[e[t+6]]+At[e[t+7]]+"-"+At[e[t+8]]+At[e[t+9]]+"-"+At[e[t+10]]+At[e[t+11]]+At[e[t+12]]+At[e[t+13]]+At[e[t+14]]+At[e[t+15]]}(o)}const Ct="qrLaunch",Pt="arLaunch",xt="previewLaunch",It="heartbeat";let Mt,Tt,kt=!1,Lt=window.navigator.userAgent||"no user agent";const Ut=[];function $t(){null==Mt&&(Tt=Rt(),Mt=A(`${E}/shopar-analytics.js`),Mt.then((()=>{kt=!0,window.ShopAR__analytics.initializeImpl(),Ut.forEach((e=>e()))})))}function Dt(e){kt?e():Ut.push(e)}function _t(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Ot(e){return t(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.setAttribute("playsinline","playsinline"),t.srcObject=yield e,t}))}const Nt=200,jt=10;let Ft=!1,Wt=null,qt=[],Gt=[];function zt(e){return t(this,void 0,void 0,(function*(){Ft=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${E}/wasm/mediapipe`,e),Wt&&clearInterval(Wt);const o=[],r=[];Wt=setInterval((()=>t(this,void 0,void 0,(function*(){if(Ft)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());Ft||(null!=a&&null!=s&&function(e){for(let t of qt)t(e)}({translation:a,rotation:s}),null==e&&(o.push(t),r.push(i),o.length<jt||(o.shift(),r.shift(),function(e,t){for(let n of Gt)n({faceWidth:e,IPD:t})}(Qt(o),Qt(r)))))}))),Nt)}))}function Vt(){Gt=[],qt=[],Ft=!0}function Qt(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}function Kt(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(e).catch((e=>{throw console.error(e),new n("Resource unavailable.")}));if(!t.ok)throw new n(`Resource download failed with status ${t.status}.`);return t}))));try{return yield(yield o.blob()).arrayBuffer()}catch(e){throw console.error(e),new n("Resource has invalid body.")}}))}var Bt="undefined"!=typeof Float32Array?Float32Array:Array;function Ht(){var e=new Bt(16);return Bt!=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 Xt(e,t,n){var o=t[0],r=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],g=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*o+b*s+E*d+A*m,e[1]=y*r+b*l+E*h+A*g,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*o+b*s+E*d+A*m,e[5]=y*r+b*l+E*h+A*g,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*o+b*s+E*d+A*m,e[9]=y*r+b*l+E*h+A*g,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*o+b*s+E*d+A*m,e[13]=y*r+b*l+E*h+A*g,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Zt(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Yt(e,t){var n=t[0],o=t[1],r=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,o,r),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function Jt(e,t,n,o){var r=t[0],i=t[1],a=t[2],s=t[3],l=r+r,c=i+i,u=a+a,d=r*l,h=r*c,p=r*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=o[0],E=o[1],A=o[2];return e[0]=(1-(f+g))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+g))*E,e[6]=(m+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(m-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function en(){var e=new Bt(3);return Bt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function tn(e,t,n){var o=new Bt(3);return o[0]=e,o[1]=t,o[2]=n,o}function nn(e,t){var n=t[0]-e[0],o=t[1]-e[1],r=t[2]-e[2];return Math.hypot(n,o,r)}function on(e,t,n){var o=t[0],r=t[1],i=t[2],a=n[3]*o+n[7]*r+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*o+n[4]*r+n[8]*i+n[12])/a,e[1]=(n[1]*o+n[5]*r+n[9]*i+n[13])/a,e[2]=(n[2]*o+n[6]*r+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function rn(){var e=new Bt(4);return Bt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}en(),function(){var e,t=(e=new Bt(4),Bt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var an;let sn,ln,cn;en(),tn(1,0,0),tn(0,1,0),rn(),rn(),an=new Bt(9),Bt!=Float32Array&&(an[1]=0,an[2]=0,an[3]=0,an[5]=0,an[6]=0,an[7]=0),an[0]=1,an[4]=1,an[8]=1;let un,dn,hn,pn,fn=!0,mn=null;const gn=new Set;let vn,wn,yn,bn,En,An;function Sn(){null==sn&&(sn=A(`${E}/shopar-deepar.js`))}function Rn(){null==ln&&(ln=A(`${E}/shopar-true-scale.js`))}function Cn(e){return t(this,void 0,void 0,(function*(){const{licenseKey:o,truescaleUsecase:r}=e;return En=r,null==vn&&(vn=(()=>t(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new n("No camera available!");var e;const t=$n(hn),r=_t(t);un=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:o||"your_license_key_goes_here",previewElement:pn,additionalOptions:{hint:An,cameraConfig:{disableDefaultCamera:!0}}}),dn=yield Ot(r),yield Dn(un,dn,"user"===t),"Glasses"===hn&&(yield ln,zt(dn),"DetectionLoop"!==En&&jn((e=>{bn=e.faceWidth})))})))()),vn}))}function Pn(e,t){var n,o;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===hn&&(n=t,o=An,n===o||null!=n&&null!=o&&n.length===o.length&&n.every((e=>o.find((t=>e===t))))&&o.every((e=>n.find((t=>t===e))))))||(null!=un&&(un.shutdown(),un=null,vn=null),hn=e,An=t)}function xn(e){e!==pn&&(pn=e,null!=un&&un.changePreviewElement(pn))}function In(e){mn=e}function Mn(e){un.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(bn){const e=137/(bn+5);un.changeParameterVector("GLASSES","","scale",e,e,e,0),un.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const o=On("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),r=On("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);un.changeParameterVector("temple_left","","rotation",0,56.6*-o,0,0),un.changeParameterVector("temple_right","","rotation",0,56.6*-r,0,0)}catch(e){return}}(e),Vt(),bn=null}e(),_n("Glasses")}},un.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),_n("Shoes"))},un.callbacks.onWristTracked=t=>{t.detected&&(e(),_n("Watches"))}}function Tn(e,n,o){return t(this,void 0,void 0,(function*(){return null!=wn&&yn===o||(yield wn,wn=un.switchEffect(e,{envmap:n}),yn=o),wn}))}function kn(e,t){null!=e&&null!=t&&(un.setToneMapping(e),un.setExposure(t))}function Ln(){return t(this,void 0,void 0,(function*(){if(null!=un){if(fn=!1,null==dn){const e=$n(hn),t=_t(e);dn=yield Ot(t),yield Dn(un,dn,"user"===e),"Glasses"===hn&&(zt(dn),"DetectionLoop"!==En&&jn((e=>{bn=e.faceWidth})))}!function(){if(null==mn)return;if(null==hn||gn.has(hn))return;mn.style.visibility="visible",mn.style.opacity="1"}(),un.setPaused(fn),pn.style.display=""}}))}function Un(){null!=un&&(fn=!0,un.setPaused(fn),Vt(),null!=dn&&null!=dn.srcObject&&dn.srcObject instanceof MediaStream&&(dn.srcObject.getTracks().forEach((e=>e.stop())),dn=null),function(){if(null==mn)return;mn.style.visibility="hidden",mn.style.opacity="0"}(),un.stopCamera(),pn.style.display="none")}function $n(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Dn(e,n,o){return t(this,void 0,void 0,(function*(){yield new Promise((r=>{n.onloadedmetadata=()=>{n.play().then((()=>t(this,void 0,void 0,(function*(){e.setVideoElement(n,o),r()}))))}}))}))}function _n(e){null!=mn&&(gn.has(e)||(gn.add(e),mn.style.opacity="0"))}function On(e,t,n,o,r,i,a){const s=un.getTransformationBetween(e,t),l=Zt(en(),s),c=function(e,t){var n=new Bt(3);Yt(n,t);var o=1/n[0],r=1/n[1],i=1/n[2],a=t[0]*o,s=t[1]*r,l=t[2]*i,c=t[4]*o,u=t[5]*r,d=t[6]*i,h=t[8]*o,p=t[9]*r,f=t[10]*i,m=a+u+f,g=0;return m>0?(g=2*Math.sqrt(m+1),e[3]=.25*g,e[0]=(d-p)/g,e[1]=(h-l)/g,e[2]=(s-c)/g):a>u&&a>f?(g=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/g,e[0]=.25*g,e[1]=(s+c)/g,e[2]=(h+l)/g):u>f?(g=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/g,e[0]=(s+c)/g,e[1]=.25*g,e[2]=(d+p)/g):(g=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/g,e[0]=(h+l)/g,e[1]=(d+p)/g,e[2]=.25*g),e}(rn(),s);Jt(s,c,l,tn(a,a,a));const u=un.getTransformationBetween(t,n),d=Zt(en(),u);Jt(u,rn(),d,Yt(en(),u));const h=Xt(Ht(),s,u),p=Zt(en(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=un.getTransformationBetween(n,o)}catch(e){return f}const g=Xt(Ht(),u,m),v=Xt(Ht(),s,g),w=tn(p[0],i[1],i[2]),y=on(en(),w,function(e,t){var n=t[0],o=t[1],r=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-o*a,y=n*l-r*a,b=n*c-i*a,E=o*l-r*s,A=o*c-i*s,S=r*c-i*l,R=u*m-d*f,C=u*g-h*f,P=u*v-p*f,x=d*g-h*m,I=d*v-p*m,M=h*v-p*g,T=w*M-y*I+b*x+E*P-A*C+S*R;return T?(T=1/T,e[0]=(s*M-l*I+c*x)*T,e[1]=(r*I-o*M-i*x)*T,e[2]=(m*S-g*A+v*E)*T,e[3]=(h*A-d*S-p*E)*T,e[4]=(l*P-a*M-c*C)*T,e[5]=(n*M-r*P+i*C)*T,e[6]=(g*b-f*S-v*y)*T,e[7]=(u*S-h*b+p*y)*T,e[8]=(a*I-s*P+c*R)*T,e[9]=(o*P-n*I-i*R)*T,e[10]=(f*A-m*b+v*w)*T,e[11]=(d*b-u*A-p*w)*T,e[12]=(s*C-a*x-l*R)*T,e[13]=(n*x-o*C+r*R)*T,e[14]=(m*y-f*E-g*w)*T,e[15]=(u*E-d*y+h*w)*T,e):null}(Ht(),v));let b=un.getClosestPointOnMesh(o,y);try{const e=un.getClosestPointOnMesh(r,y);nn(y,e)<nn(y,b)&&(b=e)}catch(e){}const E=on(en(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function Nn(e){!function(e){qt.push(e)}(e)}function jn(e){!function(e){Gt.push(e)}(e)}var Fn;function Wn(){return[Fn.Android,Fn.iOS,Fn.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],o=["Win32","Win64","Windows","WinCE"],r=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==r.indexOf(t)?Fn.iOS:-1!==n.indexOf(t)?i?Fn.Tablet:Fn.MacOS:-1!==o.indexOf(t)?Fn.Windows:/Android/.test(e)?Fn.Android:/Linux/.test(t)?Fn.Linux:i?Fn.Tablet:Fn.Unknown}return Fn.Unknown}())}function qn(e,r,i){return t(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const l=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),m=window[`${h}${d+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],g=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield m(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new o[0](yield(yield g.blob().catch((()=>{throw new n("Unknown error.")}))).arrayBuffer().catch((()=>{throw new n("Unknown error.")})));i+=s;const w=v.byteLength;if(u[c]=Math.min(76,r)*((a>>5)-1),152===u[c]&&(u[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)u[c]^=u[i]<<13,u[c]^=u[i]>>17,u[c]^=u[i]<<5,v[e]=v[e]^u[c];return i^=u[0],i^=u[1],i^=u[2],v}))}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(Fn||(Fn={}));const Gn=["AR","3D"];function zn(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function Vn(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function Qn(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function Kn(e){const{apiKey:t,sku:o,targetElement:r,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;zn(t,"apiKey"),Qn(t,"apiKey"),zn(o,"sku"),Qn(o,"sku"),zn(r,"targetElement"),function(e,t){if(!(e instanceof HTMLElement))throw new n(`'${t}' must be an HTMLElement.`)}(r,"targetElement"),null!=i&&function(e,t,o){if("string"!=typeof e)throw new n(`'${t}' must be a string.`);if(!o.includes(e))throw new n(`'${t}' must be ${o.join("' or '")}.`)}(i,"initialState",Gn),null!=a&&function(e,t){if("string"!=typeof e&&!Array.isArray(e))throw new n(`'${t}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&Qn(s,"baseUrl"),null!=l&&Vn(l,"defaultUI"),null!=c&&Vn(c,"interactive"),null!=u&&function(e,t,o){for(const r of o){const o=e[r];if(null!=o&&"string"!=typeof o)throw new n(`Value for key '${r}' in '${t}' must be a string.`)}}(u,"strings",Ze)}let Bn=!1;function Hn(e){return t(this,void 0,void 0,(function*(){const{targetElement:o}=e;E.update(e.baseUrl),$t();const{trackEvent:r}=function(e){const t=performance.now(),n=Rt();return{trackEvent:(o,r={})=>{r=Object.assign(Object.assign({},r),{pluginVersion:y,userAgent:Lt,sessionId:Tt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),Dt((()=>{window.ShopAR__analytics.trackEventImpl(o,r)}))}}}(e.apiKey);r("visionSetup");const i=yield function(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:e,sid:d()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield o.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(e.apiKey);r("visionApiResponse",i);const{arKey:a}=i,s=vt(o),{getSetupId:l,findUI:c}=s,u=l();Sn(),Rn();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:b,showCameraError:A}=c();if(g()!=dt.None)throw Error("UI state is not None, this is weird..");v(dt.AR),h(o),m(!1,!1,!0,!1,void 0,void 0),w(),yield sn,Xn(l(),u);try{r("visionArLaunch"),Un(),Pn("Glasses",["faceInit"]),xn(p()),yield Cn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),Xn(l(),u),yield Ln(),Xn(l(),u)}catch(e){const t=e instanceof Error;throw r("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),A(),Un(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{b()}return Bn=!0,{registerFacePoseListener:e=>{Bn&&(r("registerFacePoseListener"),Nn(e))},registerFaceMeasurementListener:e=>{Bn&&(r("registerFaceMeasurementListener"),jn(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){Bn&&(r("switchEffect",{arUrl:e}),function(e){un.switchEffect(e)}(e))})),clearEffect:()=>{Bn&&(r("clearEffect"),un.clearEffect())},close:()=>{if(Bn){if(Bn=!1,r("visionClose"),g()!==dt.AR)throw new n("AR not launched.");Un(),v(dt.None)}}}}))}function Xn(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function Zn(e){var o,r;return t(this,void 0,void 0,(function*(){Kn(e);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=e,u=null==e.zoomEnabled||e.zoomEnabled;!function(e){const t=getComputedStyle(e);if(!["static","relative"].includes(t.position))throw new n(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${t.position}'.`)}(s),E.update(e.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(Xe,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(Xe[t]=n)}}(e.strings);const h=null!=c?ye(c):null,p=null!=(null==h?void 0:h.theta)?ne(h.theta):null,b=null!=(null==h?void 0:h.phi)?ne(h.phi):null,R=null!=(null==h?void 0:h.fov)?ne(h.fov):null,C=function(e,o,r,i,a){return t(this,void 0,void 0,(function*(){const s=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign({apiKey:e,sku:o,sid:d()},null!=r&&{yaw:`${g(m(r))}`}),null!=i&&{pitch:`${g(m(i))}`}),null!=a&&{fov:`${g(m(a))}`}))}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield s.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(i,a,null==p?void 0:p.get(),null==b?void 0:b.get(),null==R?void 0:R.get()),P=vt(s),{getSetupId:x,findUI:I,findQR:M,findThree:T}=P,k=x();$t();const{trackEvent:L,arInteracted:U,previewInteracted:$}=function(e,t){const n=performance.now(),o=Rt();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,u(It,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const u=(r,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Lt,pluginVersion:y,sessionId:Tt,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),Dt((()=>{window.ShopAR__analytics.trackEventImpl(r,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);L("setup",{hostname:window.location.hostname});const D=yield C;L("apiResponse",D);const{category:_,arUrl:O,arEnvUrl:N,arToneMapping:j,arToneMappingExposure:F,arKey:W,arPromptEnabled:q,arPromptText:G,arPromptImage:z,previewUrl:V,previewEnvUrl:Q,previewToneMapping:K,previewToneMappingExposure:B,previewPosterUrl:H,cameraErrorText:X,qrPromptText:Z}=D;Yn(x(),k);const Y=null!=O&&function(e){return null!=e&&v.includes(e)}(_),J=null==(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled),ee=Y&&function(e){return null!=e&&w.includes(e)}(_),te=J&&ee&&!Wn(),oe=Y&&!te,re=null!=V;if(Yn(x(),k),te&&function(){t(this,void 0,void 0,(function*(){null==S&&(S=A(`${E}/shopar-qr.js`))}))}(),oe&&(Sn(),function(e){e!==cn&&(cn=e,Kt(e),wn=null,Vt())}(O),"Glasses"===_&&Rn(),null!=N&&Kt(N)),re){null==Ue&&(Ue=A(`${E}/shopar-three.js`));const e=255;qn(V,(new Date).getTime()+e,Math.random()*e),Kt(null!=Q?Q:`${E}/env/default.hdr`)}const{setTargetElement:ie,getDeepARTarget:ae,getDeepARPrompt:se,customizeDeepARPrompt:le,customizeCameraError:ce,customizeQRPrompt:ue,setVisibilityParameters:de,getUIState:he,setUIState:pe,setDefaultUIActions:fe,startDeepARLoading:me,stopDeepARLoading:ge,startThreeLoading:ve,stopThreeLoading:we,setThreePosterUrl:be,showCameraError:Ee}=I();ie(s);de(null==e.defaultUI||e.defaultUI,te,oe,re,_,l),le(null!=G?G:"",null!=z?z:""),ce(X),ue(Z),be(H),function(e,t){const o=e.parentNode;if(null==o)throw new n("Parent node missing.");new MutationObserver((n=>{for(const o of n)for(const n of o.removedNodes)if(n===e)return void t()})).observe(o,{childList:!0})}(s,(()=>{he()!==dt.QR||Ae()||Re(),he()!==dt.AR||fn||Un(),he()!==dt.Preview||Ie()||Te(),pe(dt.None)}));const{qrPaused:Ae,qrDraw:Se,qrPause:Re}=M(),{threeInit:Ce,threeParse:Pe,threeLoad:xe,threePaused:Ie,threeResume:Me,threePause:Te,threeSetZoomEnabled:ke,threeSetToneMapping:Le,threeIsInteractive:$e,threeSetInteractive:De,threeSetOnInteracted:_e,threeInitPromptAnimation:Oe,threeInitThetaAnimation:Ne,threeInitPhiAnimation:je,threeInitFovAnimation:Fe}=T(),We=null==e.interactive||e.interactive;De(We);let qe=0;if(he()===dt.QR){if(!Ae())if(te){L(Ct);try{yield Se(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Re(),pe(dt.None)}else if(he()===dt.AR){if(!fn)if(oe&&!Bn){L(Pt);const e=null!=N?yield Kt(N):void 0;Yn(x(),k);const t=yield Kt(O);Yn(x(),k),wt(P),Pn(_),xn(ae()),In(q?se():null),yield Tn(t,e,`${O}${N}`),kn(j,F),Mn(U),Yn(x(),k)}else Un(),pe(dt.None)}else if(he()===dt.Preview&&!Ie())if(re){L(xt),ve();const e=255,t=yield qn(V,(new Date).getTime()+e,Math.random()*e);Yn(x(),k);const n=yield Kt(null!=Q?Q:`${E}/env/default.hdr`);Yn(x(),k);const o=yield Pe(t,n,`${V}${Q}`);Yn(x(),k),xe(o,_),ke(u),Le(null!=K?K:"ACES",null!=B?B:1),_e($),Oe(),null!=h&&(Ne(p),je(b),Fe(R)),we()}else Te(),pe(dt.None);const Ge=()=>t(this,void 0,void 0,(function*(){if(te){if(he()===dt.QR||he()===dt.AR)return;try{L(Ct);const e=++qe;if(he()===dt.Preview&&re&&!Ie()&&Te(),pe(dt.QR),yield Se(i,a),qe!==e)return;return void Yn(x(),k)}catch(e){const t=e instanceof Error;throw L("qrLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`QR failed: ${t?e.message:"Unknown error."}`)}}if(!oe)throw new n("Model does not have AR enabled.");if(he()!==dt.AR)try{L(Pt);const e=++qe;he()===dt.Preview&&re&&!Ie()&&Te(),wt(P),pe(dt.AR),me();const t=null!=N?yield Kt(N):void 0;Yn(x(),k);const n=yield Kt(O);if(qe!==e)return;if(Yn(x(),k),yield sn,qe!==e)return;if(Yn(x(),k),Un(),Pn(_),xn(ae()),In(q?se():null),yield Cn({licenseKey:W}),qe!==e)return;if(Yn(x(),k),yield Tn(n,t,`${O}${N}`),kn(j,F),Mn(U),qe!==e)return;if(Yn(x(),k),yield Ln(),qe!==e)return;Yn(x(),k)}catch(e){const t=e instanceof Error;throw L("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Ee(),Un(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{ge()}})),ze=()=>t(this,void 0,void 0,(function*(){if(!re)throw new n("Model does not have 3D enabled.");if(he()!==dt.Preview)try{L(xt);const e=++qe;he()===dt.AR&&(oe&&!fn&&Un(),Re()),pe(dt.Preview),ve();const t=255,n=yield qn(V,(new Date).getTime()+t,Math.random()*t);if(qe!==e)return;Yn(x(),k);const o=yield Kt(null!=Q?Q:`${E}/env/default.hdr`);if(qe!==e)return;if(Yn(x(),k),yield Ue,qe!==e)return;if(Yn(x(),k),Ce(),qe!==e)return;Yn(x(),k);const r=yield Pe(n,o,`${V}${Q}`);if(qe!==e)return;Yn(x(),k),xe(r,_),ke(u),Le(null!=K?K:"ACES",null!=B?B:1),_e($),Oe(),null!=h&&(Ne(p),je(b),Fe(R)),Me()}catch(e){const t=e instanceof Error;throw L("previewLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`3D failed: ${t?e.message:"Unknown error."}`)}finally{we()}})),Ve=()=>t(this,void 0,void 0,(function*(){he()!==dt.None&&(++qe,he()===dt.QR||he()===dt.AR?(oe&&!fn&&Un(),Re()):he()===dt.Preview&&re&&!Ie()&&Te(),pe(dt.None),"AR"!==l?"3D"!==l||(yield ze()):yield Ge())}));return fe(Ge,ze,Ve),"AR"===l?(yield Ge(),Yn(x(),k)):"3D"===l&&(yield ze(),Yn(x(),k)),Bn=!1,{launchAR:Y?Ge:void 0,launch3D:re?ze:void 0,closeAR:Y?()=>t(this,void 0,void 0,(function*(){he()!==dt.AR&&he()!==dt.QR||(++qe,oe&&!fn&&Un(),Re(),pe(dt.None),"3D"!==l||(yield ze()))})):void 0,close3D:re?()=>t(this,void 0,void 0,(function*(){he()===dt.Preview&&(++qe,re&&!Ie()&&Te(),pe(dt.None),"AR"!==l||(yield Ge()))})):void 0,close:Y||re?Ve:void 0,isInteractive:()=>$e(),setInteractive:e=>De(e)}}))}function Yn(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const Jn={setup:function(e){return t(this,void 0,void 0,(function*(){return Hn(e)}))}},eo={setup:function(e){return t(this,void 0,void 0,(function*(){return function(e,o){return t(this,void 0,void 0,(function*(){try{return o()}catch(t){throw t instanceof Error?new n(`${e} failed: ${t.message}`):(console.error(t),new n(`${e} failed.`))}}))}("setup",(()=>Zn(e)))}))},version:y};e.PREVIEW_STATES=Gn,e.PluginError=n,e.plugin=eo,e.vision=Jn}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ShopAR={})}(this,(function(e){"use strict";function t(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{l(o.next(e))}catch(e){i(e)}}function s(e){try{l(o.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((o=o.apply(e,t||[])).next())}))}!function(){const e={css:".shopar-btn-container{position:absolute;width:100%;bottom:0;padding-bottom:2rem;display:flex;justify-content:center;gap:.5rem}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.shopar-ar-prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#1e293bb2;transition:.3s ease-in-out opacity}.shopar-ar-prompt-text{text-align:center;color:#fff}.shopar-ar-prompt-img{max-width:80%;max-height:50%;object-fit:contain}.shopar-3d{background-color:#fff}.shopar-3d-poster{background-color:#fff}"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}(),"function"==typeof SuppressedError&&SuppressedError;class n extends Error{constructor(e){super(`ShopAR Plugin: ${e}`)}}const o=[Uint8Array,Uint32Array],r=o.length-2,i=["addEventListener","alert","atob","blur","btoa","cancelAnimationFrame","localStorage","location","locationbar","hash","hasOwnProperty","host","hostname","href","requestAnimationFrame"],a=[2,12,7,1],s=window[i[a[a[r]]]][i[a[a[a.length-1]]]],l=s.charCodeAt(r),c=l^l,u=new o[1]([c]);function d(){const e=(new TextEncoder).encode(s),t=i.map((e=>e.length));for(let n=0;n<e.length;n++)e[n]^=t[n%t.length];return window[i[t[2]]](String.fromCodePoint(...e))}const h=[1e3,2e3,4e3],p=h.length;function f(e,n=0){return t(this,void 0,void 0,(function*(){try{return yield e()}catch(t){if(n>=p)throw t;return yield new Promise((e=>setTimeout(e,h[n]))),f(e,n+1)}}))}function m(e){return e*(180/Math.PI)}function g(e){return Math.round(100*e)/100}const v=["Glasses","Shoes","Watches"],w=["Shoes"];const y="0.7.0";let b=`https://cdn.jsdelivr.net/npm/shopar-plugin@${y}/dist`;const E={update:e=>{null!=e&&(b=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>b};function A(e){return t(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const t=document.createElement("script");return t.setAttribute("src",e),t.setAttribute("crossorigin","anonymous"),new Promise((e=>{t.addEventListener("load",(()=>e()),!1),t.addEventListener("error",(()=>e()),!1),document.body.appendChild(t)}))}importScripts(e.toString())}))}let S;const R=(()=>{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,x;function I(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}(x.parse(e));return t.mapping=P.EquirectangularReflectionMapping,t.colorSpace=P.LinearSRGBColorSpace,t}const M=45,T=45,k=3,L=1.5,U=1,$=.5;let D,_,O,N,j,F=!1;const W=4,q=.001,G=1e-7,z=10,V=11,Q=1/(V-1),K="function"==typeof Float32Array;function B(e,t,n,o){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===o)return ee;const r=K?new Float32Array(V):new Array(V);for(let t=0;t<V;++t)r[t]=Y(t*Q,e,n);function i(t){let o=0,i=1;const a=V-1;for(;i!==a&&r[i]<=t;++i)o+=Q;--i;const s=o+(t-r[i])/(r[i+1]-r[i])*Q,l=J(s,e,n);return l>=q?function(e,t,n,o){for(let r=0;r<W;++r){const r=J(t,n,o);if(0===r)return t;t-=(Y(t,n,o)-e)/r}return t}(t,s,e,n):0===l?s:function(e,t,n,o,r){let i,a,s=0;do{a=t+(n-t)/2,i=Y(a,o,r)-e,i>0?n=a:t=a}while(Math.abs(i)>G&&++s<z);return a}(t,o,o+Q,e,n)}return function(e){return 0===e||1===e?e:Y(i(e),t,o)}}function H(e,t){return 1-3*t+3*e}function X(e,t){return 3*t-6*e}function Z(e){return 3*e}function Y(e,t,n){return((H(t,n)*e+X(t,n))*e+Z(t))*e}function J(e,t,n){return 3*H(t,n)*e*e+2*X(t,n)*e+Z(t)}function ee(e){return e}function te(e){if("hold"===e.type)return()=>0;if("bezier"===e.type){const t=B(e.x1,e.y1,e.x2,e.y2);return e=>t(e)}throw new Error(`Unknown interpolation: ${e}`)}function ne(e){if(e.length<2)throw new Error("Expected at least two key frames.");const t=e[e.length-1].time,n=[...e].sort(((e,t)=>e.time-t.time)).map((({time:e,value:t,interpolation:n})=>({time:e,value:t,interpolate:te(n)})));let o=0,r=n[0].value;return{reset:()=>{o=0},update:e=>{for(o+=e;o>=t;)o-=t;for(let e=0;e<n.length-1;e++){const t=n[e],i=n[e+1];if(o>=t.time&&o<i.time){const e=t.interpolate((o-t.time)/(i.time-t.time));r=t.value+e*(i.value-t.value)}}},get:()=>r}}const oe="#",re="time",ie="interpolation",ae="yaw",se="pitch",le="fov",ce=[re,ae,se,le,ie],ue="s",de="ms",he=1e3,pe="deg",fe="rad",me=Math.PI/180,ge="ease-in-out",ve="cubic-bezier(",we=")";function ye(e){if("string"==typeof e)return function(e){const[t,...n]=function(e){return e.split(/\r?\n/).map((e=>function(e){const t=e.indexOf(oe);return(-1!==t?e.substring(0,t):e).trim()}(e))).filter((e=>""!==e))}(e);if(null==t)throw new Error("Header missing.");const o=function(e){const t=[];for(let n=0;n<e.length;n++){const o=e[n];if(!ce.includes(o))throw new Error(`Invalid token in header: '${o}'.`);if(t.includes(o))throw new Error(`Duplicate token in header: '${o}'.`);t.push(o)}if(!t.includes(re))throw new Error(`Missing required token: '${re}'.`);return t}(t.split(/\s+/)),r={};if(n.length<2)throw new Error("Expected at least two key frames.");for(const e of n){const{theta:t,phi:n,fov:i}=be(o,e);null!=t&&(null==r.theta&&(r.theta=[]),r.theta.push(t)),null!=n&&(null==r.phi&&(r.phi=[]),r.phi.push(n)),null!=i&&(null==r.fov&&(r.fov=[]),r.fov.push(i))}if(0===Object.values(r).length)throw new Error("At least one parameter should be animated.");return r}(e);if(Array.isArray(e))return function(e){var t;const n={};if(e.length<2)throw new Error("Expected at least two key frames.");for(const o of e){const{time:e,pitch:r,yaw:i,fov:a}=o;if(null==e)throw new Error("Time missing.");const s=Ae(null!==(t=o.interpolation)&&void 0!==t?t:ge);null!=i&&(null==n.theta&&(n.theta=[]),n.theta.push({time:e,value:i*me,interpolation:s})),null!=r&&(null==n.phi&&(n.phi=[]),n.phi.push({time:e,value:r*me,interpolation:s})),null!=a&&(null==n.fov&&(n.fov=[]),n.fov.push({time:e,value:a*me,interpolation:s}))}if(0===Object.values(n).length)throw new Error("At least one parameter should be animated.");if(Object.values(n).every((t=>t.length!==e.length)))throw new Error("All parameters should have the same key frame count.");return n}(e);throw new Error("Expected string or key frame config array.")}function be(e,t){const n=t.match(/[^()\s]+(\(.*?\))?/g);if(null==n||n.length<e.length)throw new Error(`Missing data for fields: '${e.filter((e=>!(null==n?void 0:n.includes(e)))).join(", ")}'.`);if(n.length>e.length)throw new Error(`Excess data: '${n.filter((t=>!e.includes(t))).join(", ")}'.`);const o=e.indexOf(re),r=function(e){if(e.endsWith(de))return Re(e.substring(0,e.length-de.length));if(e.endsWith(ue))return Re(e.substring(0,e.length-ue.length))*he;return Re(e)}(n[o]),i=e.indexOf(ie),a=Ae(-1===i?ge:n[i]),s={};for(let t=0;t<n.length;t++){if(t===o||t===i)continue;const l=e[t],c=n[t];switch(l){case ae:s.theta={time:r,value:Ee(c),interpolation:a};break;case se:s.phi={time:r,value:Ee(c),interpolation:a};break;case le:s.fov={time:r,value:Ee(c),interpolation:a};break;default:throw new Error(`Unhandled value for header '${l}'.`)}}return s}function Ee(e){return e.endsWith(pe)?Re(e.substring(0,e.length-pe.length))*me:e.endsWith(fe)?Re(e.substring(0,e.length-fe.length)):Re(e)*me}function Ae(e){if("hold"===e)return{type:"hold"};if("linear"===e)return Se(0,0,1,1);if("sine"===e)return Se(.37,0,.63,1);if("sine-in"===e)return Se(.12,0,.39,0);if("sine-out"===e)return Se(.61,1,.88,1);if("ease"===e)return Se(.25,.1,.25,1);if("ease-in"===e)return Se(.42,0,1,1);if("ease-out"===e)return Se(0,0,.58,1);if("ease-in-out"===e)return Se(.42,0,.58,1);if(e.startsWith(ve)&&e.endsWith(we)){const t=e.substring(ve.length,e.length-we.length).split(/\s*,\s*/);if(4!==t.length)throw new Error(`Expected 4 parameters for the Bezier curve, but got '${t}'.`);return{type:"bezier",x1:Re(t[0]),y1:Re(t[1]),x2:Re(t[2]),y2:Re(t[3])}}throw new Error(`Expected an interpolation token, but found: ${e}`)}function Se(e,t,n,o){return{type:"bezier",x1:e,y1:t,x2:n,y2:o}}function Re(e){const t=Number.parseFloat(e);if(Number.isNaN(t))throw new Error(`Expected a numeric value, but got: ${e}`);return t}const Ce=300,Pe=2e3,xe=.05,Ie=2*Math.PI/32,Me=Ae("hold"),Te=Ae("sine"),ke=Ae("sine-in"),Le=Ae("sine-out");let Ue;const $e=0,De=3;let _e,Oe,Ne,je=!1,Fe=1,We=1,qe=1;const Ge=1;let ze;const Ve=new Map;function Qe(e,n,o){const r=e.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,u,d,h,p,f,m,g,v,w,y=!1,b=!1,E=!0,A=!1,S=1,R=!0,U=!1,F=0,W=0,q=1,G=1,z=1;const V={threeInit:()=>{y||(Ke(),i=new Oe.Scene,a=new Oe.PerspectiveCamera(25,1,.5),s=new _e.OrbitControls(a,e),s.setInteractionEnabled(R),h=Oe.ACESFilmicToneMapping,({renderShadow:c,shadowGroup:l}=function(e){const t=new D.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new D.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new D.Group;o.position.y=-.7;const r=new D.PlaneGeometry(M,T).rotateX(Math.PI/2),i=new D.MeshBasicMaterial({map:t.texture,opacity:$,transparent:!0,depthWrite:!1}),a=new D.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new D.Mesh(r);s.visible=!1,o.add(s);const l=new D.OrthographicCamera(-M/2,M/2,T/2,-T/2,0,k);function c(e){s.visible=!0,N.uniforms.tDiffuse.value=t.texture,N.uniforms.h.value=1*e/256,s.material=N,_.setRenderTarget(n),_.render(s,l),j.uniforms.tDiffuse.value=n.texture,j.uniforms.v.value=1*e/256,s.material=j,_.setRenderTarget(t),_.render(s,l),s.visible=!1}return l.rotation.x=Math.PI/2,o.add(l),{shadowGroup:o,renderShadow:()=>{const n=e.background;e.background=null,e.overrideMaterial=O;const o=_.getClearAlpha();_.setClearAlpha(0),_.setRenderTarget(t),_.render(e,l),e.overrideMaterial=null,c(L),c(.4*L),_.setRenderTarget(null),_.setClearAlpha(o),e.background=n}}}(i)),y=!0)},threeParse:(e,n,o)=>t(this,void 0,void 0,(function*(){return null!=u&&d===o||(yield u,u=(()=>t(this,void 0,void 0,(function*(){var t,o;return P=(t=_e).THREE,x=new t.RGBELoader,i.environment=I(n),function(e,t){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)}(ze,_e),o=e,C.parseAsync(o.buffer,"")})))(),d=o),u})),threeLoad:(e,t)=>{i.traverse((e=>{var t,n;e instanceof Oe.Mesh&&(null===(t=e.geometry)||void 0===t||t.dispose(),Array.isArray(e.material)?e.material.forEach((e=>e.dispose())):null===(n=e.material)||void 0===n||n.dispose())})),i.clear(),i.add(e.scene);const n=(new Oe.Box3).setFromObject(e.scene);l.position.y=n.min.y-$e,i.add(l),c(),b=!1,i.traverse((e=>{if(e instanceof Oe.Mesh){e.material.depthWrite=!0;const t=e.material;Array.isArray(t)?t.forEach((e=>{e.transmission>0&&(b=!0)})):t.transmission>0&&(b=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(_e.reduceVertices(e.scene,((e,t)=>Math.max(e,o.distanceToSquared(t))),0));s.reset(o,r,function(e,t){var n;const o={Glasses:new t(67.5,15,90),Shoes:new t(-55,30,30),Watches:new t(0,-10,40),Handbags:new t(40,0,0),Rings:new t(0,0,10)};return(null==e?o.Glasses:null!==(n=o[e])&&void 0!==n?n:o.Glasses).normalize()}(t,Oe.Vector3)),F=0},threePaused:()=>E,threeResume:()=>{E=!1,ze.setAnimationLoop(Be),e.style.visibility="visible",W=0,null==f||f.reset(),null==m||m.reset(),null==g||g.reset(),null==v||v.reset(),null==w||w.reset()},threePause:()=>{E=!0,function(){for(const{threePaused:e}of Ve.values())if(!e())return!1;return!0}()&&ze.setAnimationLoop(null),e.style.visibility="hidden",o.style.opacity="0",n.style.visibility="hidden"},threeSetZoomEnabled:e=>{s.enableZoom=e},threeSetToneMapping:(e,t)=>{const n={ACES:Oe.ACESFilmicToneMapping,Linear:Oe.LinearToneMapping,Neutral:Oe.NeutralToneMapping};null!=n[e]&&(h=n[e]),S=t},threeIsInteractive:()=>R,threeSetInteractive:e=>{R=e,null==s||s.setInteractionEnabled(R)},threeSetOnInteracted:e=>{s.removeEventListener("change",p),p=e,s.addEventListener("change",e)},threeInitPromptAnimation:()=>{var e;e=s.getTheta(),f=ne([{time:0,value:e,interpolation:Me},{time:Ce,value:e,interpolation:Le},{time:Ce+Pe/4,value:e+Ie,interpolation:Te},{time:Ce+3*Pe/4,value:e-Ie,interpolation:ke},{time:Ce+Pe,value:e,interpolation:Me},{time:Ce+2*Pe,value:e,interpolation:Me}]),s.setTheta(f.get()),m=null,g=null,v=ne([{time:0,value:0,interpolation:Me},{time:Ce,value:1,interpolation:Me},{time:Ce+Pe,value:0,interpolation:Me},{time:Ce+2*Pe,value:0,interpolation:Me}]),w=ne([{time:0,value:0,interpolation:Me},{time:Ce,value:0,interpolation:Le},{time:Ce+Pe/4,value:-xe,interpolation:Te},{time:Ce+3*Pe/4,value:xe,interpolation:ke},{time:Ce+Pe,value:0,interpolation:Me},{time:Ce+2*Pe,value:0,interpolation:Me}])},threeInitThetaAnimation:e=>{f=e,null!=e&&s.setTheta(e.get())},threeInitPhiAnimation:e=>{m=e,null!=e&&s.setPhi(e.get())},threeInitFovAnimation:e=>{g=e,null!=e&&s.setFovRadians(e.get())},preRender_:e=>{if(!y||E)return;let t=0!==W?e-W:0;W=e,0===F?A=!0:F<De&&(t=0),F++,U||(s.hasUserInteracted()?(U=!0,f=null,m=null,g=null,v=null,w=null):(null==f||f.update(t),null==m||m.update(t),null==g||g.update(t),null==v||v.update(t),null==w||w.update(t),null!=f&&(s.setTheta(f.get()),A=!0),null!=m&&(s.setPhi(m.get()),A=!0),null!=g&&(s.setFovRadians(g.get()),A=!0))),s.update()&&(A=!0)},shouldRender_:()=>!(!y||E)&&A,render_:()=>{const t=ze.toneMapping,s=ze.toneMappingExposure;ze.toneMapping=h,ze.toneMappingExposure=S,ze.setViewport(0,0,e.width,e.height),ze.setClearColor(new Oe.Color(16777215),b?1:0),ze.render(i,a),ze.toneMapping=t,ze.toneMappingExposure=s,A=!1,null!=r&&(r.clearRect(0,0,e.width,e.height),Ne.width>0&&Ne.height>0&&r.drawImage(Ne,0,We-e.height,e.width,e.height,0,0,e.width,e.height),n.style.visibility=R&&!U?"visible":"hidden",null!=v&&(o.style.opacity=`${v.get()}`),null!=w&&(o.style.transform=`translateX(${w.get()*Math.min(q,G)}px)`))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===q&&n===G&&qe===z||(e.width=Math.ceil(t*qe*Ge),e.height=Math.ceil(n*qe*Ge),q=t,G=n,z=qe,A=!0)},target_:e};return Ve.set(e,V),V}function Ke(){if(je)return;_e=window.ShopAR__THREE,Oe=_e.THREE,Ne=document.createElement("canvas");var e,t;Ne.style.position="block",ze=new Oe.WebGLRenderer({powerPreference:"high-performance",canvas:Ne,antialias:!0,alpha:!0}),ze.outputColorSpace=Oe.SRGBColorSpace,ze.toneMapping=Oe.ACESFilmicToneMapping,ze.setClearColor(new Oe.Color(16777215),0),e=ze,t=_e,F||(D=t.THREE,_=e,O=new D.MeshDepthMaterial,O.userData.darkness={value:U},O.onBeforeCompile=e=>{e.uniforms.darkness=O.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},O.depthTest=!1,O.depthWrite=!1,N=new D.ShaderMaterial(t.HorizontalBlurShader),N.depthTest=!1,j=new D.ShaderMaterial(t.VerticalBlurShader),j.depthTest=!1,F=!0),He(),je=!0}function Be(e){He(),ze.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of Ve.values())t(e),n()&&o()}function He(){let e=0,t=0;for(const{target_:n}of Ve.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=R();e=Math.ceil(e*n*Ge),t=Math.ceil(t*n*Ge),e===Fe&&t===We&&n===qe||(Fe=e,We=t,qe=n,ze.setSize(Fe,We,!1));for(const{updateSize_:e}of Ve.values())e()}const Xe={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},Ze=Object.keys(Xe);function Ye(e){return Xe[e]}const Je="shopar-error";function et(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width",e),n.setAttribute("height",e);{const o=document.createElementNS("http://www.w3.org/2000/svg","image");o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",t),o.setAttribute("width",e),o.setAttribute("height",e),n.appendChild(o)}return n}function tt(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=et("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;const i=r.style;return i.display="none",i.pointerEvents="auto",r}const nt="shopar-control";const ot="shopar-deepar-output";function rt(e){const t=document.createElement("div");t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.pointerEvents="auto",n.userSelect="none",t}function it(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function at(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-bg",e);const n=t.style;return n.position="relative",n.overflow="hidden",t}function st(e){const t=document.createElement("div");t.classList.add("shopar-loading-bar-fg",e);const n=t.style;return n.width="100%",n.height="100%",t}const lt="shopar-main";const ct="shopar-qr-output";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 ht=!1;function pt(){ht||(!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.")}}(),ht=!0)}function ft(){pt();const e=function(){const e=document.createElement("div");e.id=lt;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",t.pointerEvents="none",e}(),t=function(){const e=document.createElement("div");return e.style.textAlign="center",e}(),n=function(){const e=new Image;e.draggable=!1;const t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),o=function(e,t){const n=document.createElement("div");n.id=ct;const o=n.style;o.position="absolute",o.top="0",o.left="0",o.width="100%",o.height="100%",o.display="none",o.pointerEvents="auto",o.userSelect="none";const r=document.createElement("div");r.className="shopar-qr";const i=r.style;i.position="relative",i.top="0",i.left="0",i.width="100%",i.height="100%",n.appendChild(r),r.appendChild(e);const a=document.createElement("div");return a.appendChild(t),r.appendChild(a),n}(t,n);e.appendChild(o);const r=function(){const e=document.createElement("div");e.id=ot;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",t.pointerEvents="auto",e}();e.appendChild(r);const i=function(){const e=document.createElement("canvas");e.id=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:o}=n;return o.position="absolute",o.width="100%",o.height="100%",o.opacity="0",n.appendChild(e),n.appendChild(t),n}(a,s);e.appendChild(l);const c=function(){const e=et("2rem",`${E}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),u=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",t.appendChild(e),t}(c);e.appendChild(u);const d=rt("shopar-ar-loading-container"),h=it("shopar-ar-loading-text",Ye("loading.ar"));d.appendChild(h);const p=at("shopar-ar-loading-bar-bg"),f=st("shopar-ar-loading-bar-fg");p.appendChild(f),d.appendChild(p),e.appendChild(d);const m=rt("shopar-3d-loading-container"),g=it("shopar-3d-loading-text",Ye("loading.3d"));m.appendChild(g);const v=at("shopar-3d-loading-bar-bg"),w=st("shopar-3d-loading-bar-fg");v.appendChild(w),m.appendChild(v),e.appendChild(m);const y=function(){const e=document.createElement("div");e.className="shopar-3d-poster";const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.pointerEvents="auto",t.userSelect="none",e}(),b=function(){const e=new Image;e.draggable=!1;const{style:t}=e;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.objectFit="contain",e}();y.appendChild(b),e.appendChild(y);const A=function(){const e=document.createElement("div");return e.className="shopar-error-text",e.style.textAlign="center",e}(),S=function(e){const t=document.createElement("div");t.id=Je;const n=t.style;n.position="absolute",n.width="100%",n.height="100%",n.display="none",n.pointerEvents="auto",n.userSelect="none";const o=document.createElement("div"),r=o.style;return r.position="absolute",r.width="100%",r.height="100%",r.backgroundColor="#ffffff",r.display="flex",r.flexDirection="column",r.justifyContent="center",r.alignItems="center",t.appendChild(o),o.appendChild(e),t}(A);e.appendChild(S);const R=function(){const e=document.createElement("div");return e.id=nt,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(R);const C=tt("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");R.appendChild(C);const P=tt("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${E}/img/icons/cube.svg`);R.appendChild(P);const x=tt("shopar-btn-close","Close","Close ShopAR view",`${E}/img/icons/close.svg`);R.append(x);let I,M,T=dt.None,k=!1,L=!1,U=!1,$=!1;function D(){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 o},getQRImage:function(){return n},getDeepARTarget:function(){return r},getDeepARPrompt:function(){return l},getThreeTarget:function(){return i},getThreePrompt:function(){return u},getThreePromptImage:function(){return c},customizeDeepARPrompt:function(e,t){a.textContent=e,s.src=t},customizeCameraError:function(e){A.textContent=null!=e?e:"Please reload page and allow camera access to continue"},customizeQRPrompt:function(e){t.textContent=null!=e?e:"Scan on mobile or tablet to try on"},setVisibilityParameters:function(e,t,n,o,r,i){var a;k=e,L=t,U=n,$=o,I=r,M=i,mt(R,k),mt(C,k&&(U||L)&&T===dt.None),mt(P,k&&$&&T===dt.None),mt(x,k&&T!==dt.None),D(),_(),k||""===(a=S).style.display&&mt(a,!1)},getUIState:function(){return T},setUIState:function(e){T=e,T===dt.None?(D(),_(),k&&(mt(S,!1),mt(x,!1),(L||U)&&mt(C,!0),$&&mt(P,!0))):T===dt.QR||T===dt.AR?k&&(mt(S,!1),mt(C,!1),mt(P,$&&"AR"===M),mt(x,"AR"!==M)):T===dt.Preview&&k&&(mt(S,!1),mt(C,(L||U)&&"3D"===M),mt(P,!1),mt(x,"3D"!==M))},setDefaultUIActions:function(e,t,n){k&&((L||U)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${E}/img/icons/${n}`;C.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(I),C.onclick=e),$&&(P.onclick=t),x.onclick=n)},startDeepARLoading:function(){f.classList.add("active"),d.style.visibility="visible"},stopDeepARLoading:D,startThreeLoading:function(){null!=b.dataset.srcSet?y.style.visibility="visible":(w.classList.add("active"),m.style.visibility="visible")},stopThreeLoading:_,setThreePosterUrl:function(e){null!=e?(b.src=e,b.dataset.srcSet="true"):delete b.dataset.srcSet},showCameraError:function(){k&&mt(S,!0)}}}function mt(e,t){e.style.display=t?"":"none"}const gt=new Map;function vt(e){let n=gt.get(e);return null==n?(n=function(){let e=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=ft()),n);return{getSetupId:()=>e,incrementSetupId_:()=>e++,getUI_:()=>n,findUI:i,findQR:()=>{if(null==o){const{getQRTarget:e,getQRImage:n}=i();o=function(e,n){let o=!0;return{qrPaused:()=>o,qrDraw:(r,i)=>t(this,void 0,void 0,(function*(){yield S;const t=`https://ar.shopar.ai/${y.includes("alpha")?"qr-alpha":"qr"}/?${new URLSearchParams({a:r,s:i,h:location.href})}`,a=yield window.ShopAR__QR.toDataURL(t),s=new Promise(((e,t)=>{n.onload=e,n.onerror=t}));n.src=a,yield s,o=!1,e.style.display=""})),qrPause:()=>t(this,void 0,void 0,(function*(){o=!0,e.style.display="none"}))}}(e(),n())}return o},findThree:()=>{if(null==r){const{getThreeTarget:e,getThreePrompt:t,getThreePromptImage:n}=i();r=Qe(e(),t(),n())}return r}}}(),gt.set(e,n)):n.incrementSetupId_(),n}function wt(e){for(const t of gt.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===dt.AR&&r(dt.None)}}let yt;const bt=new Uint8Array(16);function Et(){if(!yt&&(yt="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!yt))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return yt(bt)}const At=[];for(let e=0;e<256;++e)At.push((e+256).toString(16).slice(1));var St={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Rt(e,t,n){if(St.randomUUID&&!t&&!e)return St.randomUUID();const o=(e=e||{}).random||(e.rng||Et)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=o[e];return t}return function(e,t=0){return At[e[t+0]]+At[e[t+1]]+At[e[t+2]]+At[e[t+3]]+"-"+At[e[t+4]]+At[e[t+5]]+"-"+At[e[t+6]]+At[e[t+7]]+"-"+At[e[t+8]]+At[e[t+9]]+"-"+At[e[t+10]]+At[e[t+11]]+At[e[t+12]]+At[e[t+13]]+At[e[t+14]]+At[e[t+15]]}(o)}const Ct="qrLaunch",Pt="arLaunch",xt="previewLaunch",It="heartbeat";let Mt,Tt,kt=!1,Lt=window.navigator.userAgent||"no user agent";const Ut=[];function $t(){null==Mt&&(Tt=Rt(),Mt=A(`${E}/shopar-analytics.js`),Mt.then((()=>{kt=!0,window.ShopAR__analytics.initializeImpl(),Ut.forEach((e=>e()))})))}function Dt(e){kt?e():Ut.push(e)}function _t(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Ot(e){return t(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.setAttribute("playsinline","playsinline"),t.srcObject=yield e,t}))}const Nt=200,jt=10;let Ft=!1,Wt=null,qt=[],Gt=[];function zt(e){return t(this,void 0,void 0,(function*(){Ft=!1;const{ShopAR__TrueScale:n}=window;yield n.initialize(`${E}/wasm/mediapipe`,e),Wt&&clearInterval(Wt);const o=[],r=[];Wt=setInterval((()=>t(this,void 0,void 0,(function*(){if(Ft)return;const{error:e,faceWidth:t,ipd:i,translation:a,rotation:s}=yield n.predict(performance.now());Ft||(null!=a&&null!=s&&function(e){for(let t of qt)t(e)}({translation:a,rotation:s}),null==e&&(o.push(t),r.push(i),o.length<jt||(o.shift(),r.shift(),function(e,t){for(let n of Gt)n({faceWidth:e,IPD:t})}(Qt(o),Qt(r)))))}))),Nt)}))}function Vt(){Gt=[],qt=[],Ft=!0}function Qt(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}function Kt(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(e).catch((e=>{throw console.error(e),new n("Resource unavailable.")}));if(!t.ok)throw new n(`Resource download failed with status ${t.status}.`);return t}))));try{return yield(yield o.blob()).arrayBuffer()}catch(e){throw console.error(e),new n("Resource has invalid body.")}}))}var Bt="undefined"!=typeof Float32Array?Float32Array:Array;function Ht(){var e=new Bt(16);return Bt!=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 Xt(e,t,n){var o=t[0],r=t[1],i=t[2],a=t[3],s=t[4],l=t[5],c=t[6],u=t[7],d=t[8],h=t[9],p=t[10],f=t[11],m=t[12],g=t[13],v=t[14],w=t[15],y=n[0],b=n[1],E=n[2],A=n[3];return e[0]=y*o+b*s+E*d+A*m,e[1]=y*r+b*l+E*h+A*g,e[2]=y*i+b*c+E*p+A*v,e[3]=y*a+b*u+E*f+A*w,y=n[4],b=n[5],E=n[6],A=n[7],e[4]=y*o+b*s+E*d+A*m,e[5]=y*r+b*l+E*h+A*g,e[6]=y*i+b*c+E*p+A*v,e[7]=y*a+b*u+E*f+A*w,y=n[8],b=n[9],E=n[10],A=n[11],e[8]=y*o+b*s+E*d+A*m,e[9]=y*r+b*l+E*h+A*g,e[10]=y*i+b*c+E*p+A*v,e[11]=y*a+b*u+E*f+A*w,y=n[12],b=n[13],E=n[14],A=n[15],e[12]=y*o+b*s+E*d+A*m,e[13]=y*r+b*l+E*h+A*g,e[14]=y*i+b*c+E*p+A*v,e[15]=y*a+b*u+E*f+A*w,e}function Zt(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Yt(e,t){var n=t[0],o=t[1],r=t[2],i=t[4],a=t[5],s=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.hypot(n,o,r),e[1]=Math.hypot(i,a,s),e[2]=Math.hypot(l,c,u),e}function Jt(e,t,n,o){var r=t[0],i=t[1],a=t[2],s=t[3],l=r+r,c=i+i,u=a+a,d=r*l,h=r*c,p=r*u,f=i*c,m=i*u,g=a*u,v=s*l,w=s*c,y=s*u,b=o[0],E=o[1],A=o[2];return e[0]=(1-(f+g))*b,e[1]=(h+y)*b,e[2]=(p-w)*b,e[3]=0,e[4]=(h-y)*E,e[5]=(1-(d+g))*E,e[6]=(m+v)*E,e[7]=0,e[8]=(p+w)*A,e[9]=(m-v)*A,e[10]=(1-(d+f))*A,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function en(){var e=new Bt(3);return Bt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function tn(e,t,n){var o=new Bt(3);return o[0]=e,o[1]=t,o[2]=n,o}function nn(e,t){var n=t[0]-e[0],o=t[1]-e[1],r=t[2]-e[2];return Math.hypot(n,o,r)}function on(e,t,n){var o=t[0],r=t[1],i=t[2],a=n[3]*o+n[7]*r+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*o+n[4]*r+n[8]*i+n[12])/a,e[1]=(n[1]*o+n[5]*r+n[9]*i+n[13])/a,e[2]=(n[2]*o+n[6]*r+n[10]*i+n[14])/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function rn(){var e=new Bt(4);return Bt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}en(),function(){var e,t=(e=new Bt(4),Bt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var an;let sn,ln,cn;en(),tn(1,0,0),tn(0,1,0),rn(),rn(),an=new Bt(9),Bt!=Float32Array&&(an[1]=0,an[2]=0,an[3]=0,an[5]=0,an[6]=0,an[7]=0),an[0]=1,an[4]=1,an[8]=1;let un,dn,hn,pn,fn=!0,mn=null;const gn=new Set;let vn,wn,yn,bn,En,An;function Sn(){null==sn&&(sn=A(`${E}/shopar-deepar.js`))}function Rn(){null==ln&&(ln=A(`${E}/shopar-true-scale.js`))}function Cn(e){return t(this,void 0,void 0,(function*(){const{licenseKey:o,truescaleUsecase:r}=e;return En=r,null==vn&&(vn=(()=>t(this,void 0,void 0,(function*(){if(null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia))throw new n("No camera available!");var e;const t=$n(hn),r=_t(t);un=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:o||"your_license_key_goes_here",previewElement:pn,additionalOptions:{hint:An,cameraConfig:{disableDefaultCamera:!0}}}),dn=yield Ot(r),yield Dn(un,dn,"user"===t),"Glasses"===hn&&(yield ln,zt(dn),"DetectionLoop"!==En&&jn((e=>{bn=e.faceWidth})))})))()),vn}))}function Pn(e,t){var n,o;(t=null!=t?t:function(e){const t={Glasses:["rigidFaceTrackingInit","faceInit"],Shoes:["footInit"],Watches:["wristInit"]};return null==e?void 0:t[e]}(e),e===hn&&(n=t,o=An,n===o||null!=n&&null!=o&&n.length===o.length&&n.every((e=>o.find((t=>e===t))))&&o.every((e=>n.find((t=>t===e))))))||(null!=un&&(un.shutdown(),un=null,vn=null),hn=e,An=t)}function xn(e){e!==pn&&(pn=e,null!=un&&un.changePreviewElement(pn))}function In(e){mn=e}function Mn(e){un.callbacks.onFaceTracked=t=>{if(t.some((e=>e.detected))){if(bn){const e=137/(bn+5);un.changeParameterVector("GLASSES","","scale",e,e,e,0),un.changeParameterVector("shopar_glasses","","scale",e,e,e,0),function(e){const t=[-8.362421,4.549,-9.275],n=[8.362421,4.549,-9.275];try{const o=On("face_position","model","temple_left","temple_left_outer","temple_tip_outer_left",n,e),r=On("face_position","model","temple_right","temple_right_outer","temple_tip_outer_right",t,e);un.changeParameterVector("temple_left","","rotation",0,56.6*-o,0,0),un.changeParameterVector("temple_right","","rotation",0,56.6*-r,0,0)}catch(e){return}}(e),Vt(),bn=null}e(),_n("Glasses")}},un.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&(e(),_n("Shoes"))},un.callbacks.onWristTracked=t=>{t.detected&&(e(),_n("Watches"))}}function Tn(e,n,o){return t(this,void 0,void 0,(function*(){return null!=wn&&yn===o||(yield wn,wn=un.switchEffect(e,{envmap:n}),yn=o),wn}))}function kn(e,t){null!=e&&null!=t&&(un.setToneMapping(e),un.setExposure(t))}function Ln(){return t(this,void 0,void 0,(function*(){if(null!=un){if(fn=!1,null==dn){const e=$n(hn),t=_t(e);dn=yield Ot(t),yield Dn(un,dn,"user"===e),"Glasses"===hn&&(zt(dn),"DetectionLoop"!==En&&jn((e=>{bn=e.faceWidth})))}!function(){if(null==mn)return;if(null==hn||gn.has(hn))return;mn.style.visibility="visible",mn.style.opacity="1"}(),un.setPaused(fn),pn.style.display=""}}))}function Un(){null!=un&&(fn=!0,un.setPaused(fn),Vt(),null!=dn&&null!=dn.srcObject&&dn.srcObject instanceof MediaStream&&(dn.srcObject.getTracks().forEach((e=>e.stop())),dn=null),function(){if(null==mn)return;mn.style.visibility="hidden",mn.style.opacity="0"}(),un.stopCamera(),pn.style.display="none")}function $n(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function Dn(e,n,o){return t(this,void 0,void 0,(function*(){yield new Promise((r=>{n.onloadedmetadata=()=>{n.play().then((()=>t(this,void 0,void 0,(function*(){e.setVideoElement(n,o),r()}))))}}))}))}function _n(e){null!=mn&&(gn.has(e)||(gn.add(e),mn.style.opacity="0"))}function On(e,t,n,o,r,i,a){const s=un.getTransformationBetween(e,t),l=Zt(en(),s),c=function(e,t){var n=new Bt(3);Yt(n,t);var o=1/n[0],r=1/n[1],i=1/n[2],a=t[0]*o,s=t[1]*r,l=t[2]*i,c=t[4]*o,u=t[5]*r,d=t[6]*i,h=t[8]*o,p=t[9]*r,f=t[10]*i,m=a+u+f,g=0;return m>0?(g=2*Math.sqrt(m+1),e[3]=.25*g,e[0]=(d-p)/g,e[1]=(h-l)/g,e[2]=(s-c)/g):a>u&&a>f?(g=2*Math.sqrt(1+a-u-f),e[3]=(d-p)/g,e[0]=.25*g,e[1]=(s+c)/g,e[2]=(h+l)/g):u>f?(g=2*Math.sqrt(1+u-a-f),e[3]=(h-l)/g,e[0]=(s+c)/g,e[1]=.25*g,e[2]=(d+p)/g):(g=2*Math.sqrt(1+f-a-u),e[3]=(s-c)/g,e[0]=(h+l)/g,e[1]=(d+p)/g,e[2]=.25*g),e}(rn(),s);Jt(s,c,l,tn(a,a,a));const u=un.getTransformationBetween(t,n),d=Zt(en(),u);Jt(u,rn(),d,Yt(en(),u));const h=Xt(Ht(),s,u),p=Zt(en(),h),f=Math.atan2(i[0]-p[0],Math.abs(i[2]-p[2]));let m;try{m=un.getTransformationBetween(n,o)}catch(e){return f}const g=Xt(Ht(),u,m),v=Xt(Ht(),s,g),w=tn(p[0],i[1],i[2]),y=on(en(),w,function(e,t){var n=t[0],o=t[1],r=t[2],i=t[3],a=t[4],s=t[5],l=t[6],c=t[7],u=t[8],d=t[9],h=t[10],p=t[11],f=t[12],m=t[13],g=t[14],v=t[15],w=n*s-o*a,y=n*l-r*a,b=n*c-i*a,E=o*l-r*s,A=o*c-i*s,S=r*c-i*l,R=u*m-d*f,C=u*g-h*f,P=u*v-p*f,x=d*g-h*m,I=d*v-p*m,M=h*v-p*g,T=w*M-y*I+b*x+E*P-A*C+S*R;return T?(T=1/T,e[0]=(s*M-l*I+c*x)*T,e[1]=(r*I-o*M-i*x)*T,e[2]=(m*S-g*A+v*E)*T,e[3]=(h*A-d*S-p*E)*T,e[4]=(l*P-a*M-c*C)*T,e[5]=(n*M-r*P+i*C)*T,e[6]=(g*b-f*S-v*y)*T,e[7]=(u*S-h*b+p*y)*T,e[8]=(a*I-s*P+c*R)*T,e[9]=(o*P-n*I-i*R)*T,e[10]=(f*A-m*b+v*w)*T,e[11]=(d*b-u*A-p*w)*T,e[12]=(s*C-a*x-l*R)*T,e[13]=(n*x-o*C+r*R)*T,e[14]=(m*y-f*E-g*w)*T,e[15]=(u*E-d*y+h*w)*T,e):null}(Ht(),v));let b=un.getClosestPointOnMesh(o,y);try{const e=un.getClosestPointOnMesh(r,y);nn(y,e)<nn(y,b)&&(b=e)}catch(e){}const E=on(en(),b,g);return f-Math.atan2(E[0]-d[0],Math.abs(E[2]-d[2]))}function Nn(e){!function(e){qt.push(e)}(e)}function jn(e){!function(e){Gt.push(e)}(e)}var Fn;function Wn(){return[Fn.Android,Fn.iOS,Fn.Tablet].includes(function(){if("undefined"!=typeof window&&window.navigator){const e=window.navigator.userAgent,t=window.navigator.platform||"",n=["Macintosh","MacIntel","MacPPC","Mac68K"],o=["Win32","Win64","Windows","WinCE"],r=["iPhone","iPod","iPad"],i="ontouchstart"in window||navigator.maxTouchPoints>0;return-1!==r.indexOf(t)?Fn.iOS:-1!==n.indexOf(t)?i?Fn.Tablet:Fn.MacOS:-1!==o.indexOf(t)?Fn.Windows:/Android/.test(e)?Fn.Android:/Linux/.test(t)?Fn.Linux:i?Fn.Tablet:Fn.Unknown}return Fn.Unknown}())}function qn(e,r,i){return t(this,void 0,void 0,(function*(){let a="glb".charCodeAt(0),s="3d".charCodeAt(0);a>>=1,a+=s;const l=String.fromCharCode(a+14);s>>=2,a^=s+2;const d=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),m=window[`${h}${d+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],g=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield m(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new o[0](yield(yield g.blob().catch((()=>{throw new n("Unknown error.")}))).arrayBuffer().catch((()=>{throw new n("Unknown error.")})));i+=s;const w=v.byteLength;if(u[c]=Math.min(76,r)*((a>>5)-1),152===u[c]&&(u[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)u[c]^=u[i]<<13,u[c]^=u[i]>>17,u[c]^=u[i]<<5,v[e]=v[e]^u[c];return i^=u[0],i^=u[1],i^=u[2],v}))}!function(e){e[e.Unknown=0]="Unknown",e[e.Android=1]="Android",e[e.iOS=2]="iOS",e[e.Tablet=3]="Tablet",e[e.MacOS=4]="MacOS",e[e.Windows=5]="Windows",e[e.Linux=6]="Linux"}(Fn||(Fn={}));const Gn=["AR","3D"];function zn(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function Vn(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}function Qn(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}function Kn(e){const{apiKey:t,sku:o,targetElement:r,initialState:i,initialAnimation:a,baseUrl:s,defaultUI:l,interactive:c,strings:u}=e;zn(t,"apiKey"),Qn(t,"apiKey"),zn(o,"sku"),Qn(o,"sku"),zn(r,"targetElement"),function(e,t){if(!(e instanceof HTMLElement))throw new n(`'${t}' must be an HTMLElement.`)}(r,"targetElement"),null!=i&&function(e,t,o){if("string"!=typeof e)throw new n(`'${t}' must be a string.`);if(!o.includes(e))throw new n(`'${t}' must be ${o.join("' or '")}.`)}(i,"initialState",Gn),null!=a&&function(e,t){if("string"!=typeof e&&!Array.isArray(e))throw new n(`'${t}' must be a string or array.`)}(a,"initialAnimation"),null!=s&&Qn(s,"baseUrl"),null!=l&&Vn(l,"defaultUI"),null!=c&&Vn(c,"interactive"),null!=u&&function(e,t,o){for(const r of o){const o=e[r];if(null!=o&&"string"!=typeof o)throw new n(`Value for key '${r}' in '${t}' must be a string.`)}}(u,"strings",Ze)}let Bn=!1;function Hn(e){return t(this,void 0,void 0,(function*(){const{targetElement:o}=e;E.update(e.baseUrl),$t();const{trackEvent:r}=function(e){const t=performance.now(),n=Rt();return{trackEvent:(o,r={})=>{r=Object.assign(Object.assign({},r),{pluginVersion:y,userAgent:Lt,sessionId:Tt,setupId:n,timeSinceSetup:performance.now()-t,apiKey:e}),Dt((()=>{window.ShopAR__analytics.trackEventImpl(o,r)}))}}}(e.apiKey);r("visionSetup");const i=yield function(e){return t(this,void 0,void 0,(function*(){const o=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin/vision?${new URLSearchParams({apiKey:e,sid:d()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield o.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(e.apiKey);r("visionApiResponse",i);const{arKey:a}=i,s=vt(o),{getSetupId:l,findUI:c}=s,u=l();Sn(),Rn();const{setTargetElement:h,getDeepARTarget:p,setVisibilityParameters:m,getUIState:g,setUIState:v,startDeepARLoading:w,stopDeepARLoading:b,showCameraError:A}=c();if(g()!=dt.None)throw Error("UI state is not None, this is weird..");v(dt.AR),h(o),m(!1,!1,!0,!1,void 0,void 0),w(),yield sn,Xn(l(),u);try{r("visionArLaunch"),Un(),Pn("Glasses",["faceInit"]),xn(p()),yield Cn({licenseKey:a,truescaleUsecase:"DetectionLoop"}),Xn(l(),u),yield Ln(),Xn(l(),u)}catch(e){const t=e instanceof Error;throw r("visionArLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),A(),Un(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{b()}return Bn=!0,{registerFacePoseListener:e=>{Bn&&(r("registerFacePoseListener"),Nn(e))},registerFaceMeasurementListener:e=>{Bn&&(r("registerFaceMeasurementListener"),jn(e))},switchEffect:e=>t(this,void 0,void 0,(function*(){Bn&&(r("switchEffect",{arUrl:e}),function(e){un.switchEffect(e)}(e))})),clearEffect:()=>{Bn&&(r("clearEffect"),un.clearEffect())},close:()=>{if(Bn){if(Bn=!1,r("visionClose"),g()!==dt.AR)throw new n("AR not launched.");Un(),v(dt.None)}}}}))}function Xn(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}function Zn(e){var o,r;return t(this,void 0,void 0,(function*(){Kn(e);const{apiKey:i,sku:a,targetElement:s,initialState:l,initialAnimation:c}=e,u=null==e.zoomEnabled||e.zoomEnabled;!function(e){const t=getComputedStyle(e);if(!["static","relative"].includes(t.position))throw new n(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${t.position}'.`)}(s),E.update(e.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(Xe,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(Xe[t]=n)}}(e.strings);const h=null!=c?ye(c):null,p=null!=(null==h?void 0:h.theta)?ne(h.theta):null,b=null!=(null==h?void 0:h.phi)?ne(h.phi):null,R=null!=(null==h?void 0:h.fov)?ne(h.fov):null,C=function(e,o,r,i,a){return t(this,void 0,void 0,(function*(){const s=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams(Object.assign(Object.assign(Object.assign({apiKey:e,sku:o,sid:d()},null!=r&&{yaw:`${g(m(r))}`}),null!=i&&{pitch:`${g(m(i))}`}),null!=a&&{fov:`${g(m(a))}`}))}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield s.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(i,a,null==p?void 0:p.get(),null==b?void 0:b.get(),null==R?void 0:R.get()),P=vt(s),{getSetupId:x,findUI:I,findQR:M,findThree:T}=P,k=x();$t();const{trackEvent:L,arInteracted:U,previewInteracted:$}=function(e,t){const n=performance.now(),o=Rt();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,u(It,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const u=(r,i={})=>{i=Object.assign(Object.assign({},i),{userAgent:Lt,pluginVersion:y,sessionId:Tt,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),Dt((()=>{window.ShopAR__analytics.trackEventImpl(r,i)}))};return{trackEvent:u,arInteracted:()=>{const e=performance.now(),t=e-s;s=e,t<200&&(i+=t,c=!0)},previewInteracted:()=>{const e=performance.now(),t=e-l;l=e,t<200&&(a+=t,c=!0)}}}(a,i);L("setup",{hostname:window.location.hostname});const D=yield C;L("apiResponse",D);const{category:_,arUrl:O,arEnvUrl:N,arToneMapping:j,arToneMappingExposure:F,arKey:W,arPromptEnabled:q,arPromptText:G,arPromptImage:z,previewUrl:V,previewEnvUrl:Q,previewToneMapping:K,previewToneMappingExposure:B,previewPosterUrl:H,cameraErrorText:X,qrPromptText:Z}=D;Yn(x(),k);const Y=null!=O&&function(e){return null!=e&&v.includes(e)}(_),J=null==(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled),ee=Y&&function(e){return null!=e&&w.includes(e)}(_),te=J&&ee&&!Wn(),oe=Y&&!te,re=null!=V;if(Yn(x(),k),te&&function(){t(this,void 0,void 0,(function*(){null==S&&(S=A(`${E}/shopar-qr.js`))}))}(),oe&&(Sn(),function(e){e!==cn&&(cn=e,Kt(e),wn=null,Vt())}(O),"Glasses"===_&&Rn(),null!=N&&Kt(N)),re){null==Ue&&(Ue=A(`${E}/shopar-three.js`));const e=255;qn(V,(new Date).getTime()+e,Math.random()*e),Kt(null!=Q?Q:`${E}/env/default.hdr`)}const{setTargetElement:ie,getDeepARTarget:ae,getDeepARPrompt:se,customizeDeepARPrompt:le,customizeCameraError:ce,customizeQRPrompt:ue,setVisibilityParameters:de,getUIState:he,setUIState:pe,setDefaultUIActions:fe,startDeepARLoading:me,stopDeepARLoading:ge,startThreeLoading:ve,stopThreeLoading:we,setThreePosterUrl:be,showCameraError:Ee}=I();ie(s);de(null==e.defaultUI||e.defaultUI,te,oe,re,_,l),le(null!=G?G:"",null!=z?z:""),ce(X),ue(Z),be(H),function(e,t){const o=e.parentNode;if(null==o)throw new n("Parent node missing.");new MutationObserver((n=>{for(const o of n)for(const n of o.removedNodes)if(n===e)return void t()})).observe(o,{childList:!0})}(s,(()=>{he()!==dt.QR||Ae()||Re(),he()!==dt.AR||fn||Un(),he()!==dt.Preview||Ie()||Te(),pe(dt.None)}));const{qrPaused:Ae,qrDraw:Se,qrPause:Re}=M(),{threeInit:Ce,threeParse:Pe,threeLoad:xe,threePaused:Ie,threeResume:Me,threePause:Te,threeSetZoomEnabled:ke,threeSetToneMapping:Le,threeIsInteractive:$e,threeSetInteractive:De,threeSetOnInteracted:_e,threeInitPromptAnimation:Oe,threeInitThetaAnimation:Ne,threeInitPhiAnimation:je,threeInitFovAnimation:Fe}=T(),We=null==e.interactive||e.interactive;De(We);let qe=0;if(he()===dt.QR){if(!Ae())if(te){L(Ct);try{yield Se(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Re(),pe(dt.None)}else if(he()===dt.AR){if(!fn)if(oe&&!Bn){L(Pt);const e=null!=N?yield Kt(N):void 0;Yn(x(),k);const t=yield Kt(O);Yn(x(),k),wt(P),Pn(_),xn(ae()),In(q?se():null),yield Tn(t,e,`${O}${N}`),kn(j,F),Mn(U),Yn(x(),k)}else Un(),pe(dt.None)}else if(he()===dt.Preview&&!Ie())if(re){L(xt),ve();const e=255,t=yield qn(V,(new Date).getTime()+e,Math.random()*e);Yn(x(),k);const n=yield Kt(null!=Q?Q:`${E}/env/default.hdr`);Yn(x(),k);const o=yield Pe(t,n,`${V}${Q}`);Yn(x(),k),xe(o,_),ke(u),Le(null!=K?K:"ACES",null!=B?B:1),_e($),Oe(),null!=h&&(Ne(p),je(b),Fe(R)),we()}else Te(),pe(dt.None);const Ge=()=>t(this,void 0,void 0,(function*(){if(te){if(he()===dt.QR||he()===dt.AR)return;try{L(Ct);const e=++qe;if(he()===dt.Preview&&re&&!Ie()&&Te(),pe(dt.QR),yield Se(i,a),qe!==e)return;return void Yn(x(),k)}catch(e){const t=e instanceof Error;throw L("qrLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`QR failed: ${t?e.message:"Unknown error."}`)}}if(!oe)throw new n("Model does not have AR enabled.");if(he()!==dt.AR)try{L(Pt);const e=++qe;he()===dt.Preview&&re&&!Ie()&&Te(),wt(P),pe(dt.AR),me();const t=null!=N?yield Kt(N):void 0;Yn(x(),k);const n=yield Kt(O);if(qe!==e)return;if(Yn(x(),k),yield sn,qe!==e)return;if(Yn(x(),k),Un(),Pn(_),xn(ae()),In(q?se():null),yield Cn({licenseKey:W}),qe!==e)return;if(Yn(x(),k),yield Tn(n,t,`${O}${N}`),kn(j,F),Mn(U),qe!==e)return;if(Yn(x(),k),yield Ln(),qe!==e)return;Yn(x(),k)}catch(e){const t=e instanceof Error;throw L("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),Ee(),Un(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{ge()}})),ze=()=>t(this,void 0,void 0,(function*(){if(!re)throw new n("Model does not have 3D enabled.");if(he()!==dt.Preview)try{L(xt);const e=++qe;he()===dt.AR&&(oe&&!fn&&Un(),Re()),pe(dt.Preview),ve();const t=255,n=yield qn(V,(new Date).getTime()+t,Math.random()*t);if(qe!==e)return;Yn(x(),k);const o=yield Kt(null!=Q?Q:`${E}/env/default.hdr`);if(qe!==e)return;if(Yn(x(),k),yield Ue,qe!==e)return;if(Yn(x(),k),Ce(),qe!==e)return;Yn(x(),k);const r=yield Pe(n,o,`${V}${Q}`);if(qe!==e)return;Yn(x(),k),xe(r,_),ke(u),Le(null!=K?K:"ACES",null!=B?B:1),_e($),Oe(),null!=h&&(Ne(p),je(b),Fe(R)),Me()}catch(e){const t=e instanceof Error;throw L("previewLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`3D failed: ${t?e.message:"Unknown error."}`)}finally{we()}})),Ve=()=>t(this,void 0,void 0,(function*(){he()!==dt.None&&(++qe,he()===dt.QR||he()===dt.AR?(oe&&!fn&&Un(),Re()):he()===dt.Preview&&re&&!Ie()&&Te(),pe(dt.None),"AR"!==l?"3D"!==l||(yield ze()):yield Ge())}));return fe(Ge,ze,Ve),"AR"===l?(yield Ge(),Yn(x(),k)):"3D"===l&&(yield ze(),Yn(x(),k)),Bn=!1,{launchAR:Y?Ge:void 0,launch3D:re?ze:void 0,closeAR:Y?()=>t(this,void 0,void 0,(function*(){he()!==dt.AR&&he()!==dt.QR||(++qe,oe&&!fn&&Un(),Re(),pe(dt.None),"3D"!==l||(yield ze()))})):void 0,close3D:re?()=>t(this,void 0,void 0,(function*(){he()===dt.Preview&&(++qe,re&&!Ie()&&Te(),pe(dt.None),"AR"!==l||(yield Ge()))})):void 0,close:Y||re?Ve:void 0,isInteractive:()=>$e(),setInteractive:e=>De(e)}}))}function Yn(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const Jn={setup:function(e){return t(this,void 0,void 0,(function*(){return Hn(e)}))}},eo={setup:function(e){return t(this,void 0,void 0,(function*(){return function(e,o){return t(this,void 0,void 0,(function*(){try{return o()}catch(t){throw t instanceof Error?new n(`${e} failed: ${t.message}`):(console.error(t),new n(`${e} failed.`))}}))}("setup",(()=>Zn(e)))}))},version:y};e.PREVIEW_STATES=Gn,e.PluginError=n,e.plugin=eo,e.vision=Jn}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shopar-plugin",
3
- "version": "0.7.0-alpha.1",
3
+ "version": "0.7.0",
4
4
  "description": "Plugin for the Web that seamlessly integrates into your webpage to create embedded virtual try-on and 3D preview capabilities.",
5
5
  "main": "dist/shopar-plugin.esm.js",
6
6
  "module": "dist/shopar-plugin.esm.js",