shopar-plugin 0.0.9-alpha.0 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/shopar-analytics.js +1 -1
- package/dist/shopar-plugin.esm.js +1 -1
- package/dist/shopar-plugin.js +1 -1
- package/dist/shopar-qr.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ There are two distinct ways of integrating the plugin: via Script tag and via NP
|
|
|
32
32
|
Add the following script to your HTML.
|
|
33
33
|
|
|
34
34
|
```html
|
|
35
|
-
<script src="https://cdn.jsdelivr.net/npm/shopar-plugin@
|
|
35
|
+
<script src="https://cdn.jsdelivr.net/npm/shopar-plugin@0.0.9/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).
|
|
@@ -148,7 +148,7 @@ Options used for the plugin setup:
|
|
|
148
148
|
- `baseUrl` (optional)
|
|
149
149
|
- Type: `string`
|
|
150
150
|
- If provided, defines where the additional ShopAR plugin files are fetched from.
|
|
151
|
-
- Default value: `https://cdn.jsdelivr.net/npm/shopar-plugin@
|
|
151
|
+
- Default value: `https://cdn.jsdelivr.net/npm/shopar-plugin@0.0.9/dist`
|
|
152
152
|
- `strings` (optional)
|
|
153
153
|
- Type: `object`
|
|
154
154
|
- If provided, overrides strings in the UI.
|
package/dist/shopar-analytics.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ShopAR__analytics={})}(this,(function(t){"use strict";function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function i(t){return Number.isInteger(t)&&t>=0}function n(t){this.name="ArgumentError",this.message=t}var s=e((function(t,e){if(e=e||{},"function"!=typeof t)throw new n("fetch must be a function");if("object"!=typeof e)throw new n("defaults must be an object");if(void 0!==e.retries&&!i(e.retries))throw new n("retries must be a positive integer");if(void 0!==e.retryDelay&&!i(e.retryDelay)&&"function"!=typeof e.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");if(void 0!==e.retryOn&&!Array.isArray(e.retryOn)&&"function"!=typeof e.retryOn)throw new n("retryOn property expects an array or function");return e=Object.assign({retries:3,retryDelay:1e3,retryOn:[]},e),function(s,r){var a=e.retries,o=e.retryDelay,c=e.retryOn;if(r&&void 0!==r.retries){if(!i(r.retries))throw new n("retries must be a positive integer");a=r.retries}if(r&&void 0!==r.retryDelay){if(!i(r.retryDelay)&&"function"!=typeof r.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");o=r.retryDelay}if(r&&r.retryOn){if(!Array.isArray(r.retryOn)&&"function"!=typeof r.retryOn)throw new n("retryOn property expects an array or function");c=r.retryOn}return new Promise((function(e,i){var n=function(n){var o="undefined"!=typeof Request&&s instanceof Request?s.clone():s;t(o,r).then((function(t){if(Array.isArray(c)&&-1===c.indexOf(t.status))e(t);else if("function"==typeof c)try{return Promise.resolve(c(n,null,t)).then((function(i){i?u(n,null,t):e(t)})).catch(i)}catch(t){i(t)}else n<a?u(n,null,t):e(t)})).catch((function(t){if("function"==typeof c)try{Promise.resolve(c(n,t,null)).then((function(e){e?u(n,t,null):i(t)})).catch((function(t){i(t)}))}catch(t){i(t)}else n<a?u(n,t,null):i(t)}))};function u(t,e,i){var s="function"==typeof o?o(t,e,i):o;setTimeout((function(){n(++t)}),s)}n(0)}))}}));var r,a;!function(t){t.unknown="unknown",t.user="user",t.organization="organization",t.anonymous="anonymous"}(r||(r={})),function(t){t.api="api",t.query="query",t.ingest="ingest"}(a||(a={}));class o{scope;type;value;remaining;reset;constructor(t=r.unknown,e=a.api,i=0,n=-1,s=new Date){this.scope=t,this.type=e,this.value=i,this.remaining=n,this.reset=s}}function c(t,e,i,n,s){let a=new o;const c=t.headers.get(e.toLowerCase())||r.unknown;a.scope=r[c];const u=t.headers.get(i.toLowerCase())||"",h=parseInt(u,10);isNaN(h)||(a.value=h);const l=t.headers.get(n.toLowerCase())||"",f=parseInt(l,10);isNaN(f)||(a.remaining=f);const m=t.headers.get(s.toLowerCase())||"",y=parseInt(m,10);return isNaN(y)||(a.reset=new Date(1e3*y)),a}class u{config;constructor(t){this.config=t}async doReq(t,e,i={},n={}){let r=`${this.config.baseUrl}${t}`;const o=this._prepareSearchParams(n);o&&(r+=`?${o.toString()}`);const u={...this.config.headers,...i.headers},l=await s(fetch)(r,{retries:3,retryDelay:function(t,e,i){return 1e3*Math.pow(2,t)},retryOn:[503,502,504,500],headers:u,method:e,body:i.body?i.body:void 0});if(204===l.status)return l;if(429==l.status){const t=function(t){let e;return t.url?.endsWith("/ingest")?(e=c(t,"","X-IngestLimit-Limit","X-IngestLimit-Remaining","X-IngestLimit-Reset"),e.type=a.ingest):t.url?.endsWith("/query")||t.url?.endsWith("/_apl")?(e=c(t,"","X-QueryLimit-Limit","X-QueryLimit-Remaining","X-QueryLimit-Reset"),e.type=a.query):(e=c(t,"X-RateLimit-Scope","X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset"),e.type=a.api),e}(l);return Promise.reject(new h(t))}if(401===l.status)return Promise.reject(new Error("Forbidden"));if(l.status>=400){const t=await l.json();return Promise.reject(new Error(t.message))}return await l.json()}post(t,e={},i={}){return this.doReq(t,"POST",e,i)}get(t,e={},i={}){return this.doReq(t,"GET",e,i)}put(t,e={},i={}){return this.doReq(t,"PUT",e,i)}delete(t,e={},i={}){return this.doReq(t,"DELETE",e,i)}_prepareSearchParams=t=>{const e=new URLSearchParams;let i=!1;return Object.keys(t).forEach((n=>{t[n]&&(e.append(n,t[n]),i=!0)})),i?e:null}}class h extends Error{limit;shortcircuit;message="";constructor(t,e=!1){super(),this.limit=t,this.shortcircuit=e,Object.setPrototypeOf(this,h.prototype);const i=h.timeUntilReset(t);this.message=`${t.type} limit exceeded, try again in ${i.minutes}m${i.seconds}s`,t.type==a.api&&(this.message=`${t.scope} `+this.message)}static timeUntilReset(t){const e=t.reset.getTime()-(new Date).getTime(),i=Math.floor(e/1e3%60);return{total:e,minutes:Math.floor(e/1e3/60%60),seconds:i}}}class l{client;constructor({orgId:t="",token:e,url:i}){e||console.warn("Missing Axiom token");const n=i??"https://api.axiom.co",s={Accept:"application/json","Content-Type":"application/json",Authorization:"Bearer "+e};"undefined"==typeof window&&(s["User-Agent"]="axiom-js/1.0.0-rc.1"),t&&(s["X-Axiom-Org-Id"]=t),this.client=new u({baseUrl:n,headers:s,timeout:3e3})}}var f,m,y,p,d,g;!function(t){t.TimestampField="_time";t.Service=class extends l{localPath="/v1/datasets";list=()=>this.client.get(this.localPath);get=t=>this.client.get(this.localPath+"/"+t);create=t=>this.client.post(this.localPath,{body:JSON.stringify(t)});update=(t,e)=>this.client.put(this.localPath+"/"+t,{body:JSON.stringify(e)});delete=t=>this.client.delete(this.localPath+"/"+t);trim=(t,e)=>{const i={maxDuration:e};return this.client.post(this.localPath+"/"+t+"/trim",{body:JSON.stringify(i)})}}}(f||(f={})),function(t){t.Service=class extends l{current=()=>this.client.get("/v1/user")}}(m||(m={}));class w{ingestFn;id;options;events=[];activeFlush=Promise.resolve();nextFlush=setTimeout((()=>{}),0);lastFlush=new Date;constructor(t,e,i){this.ingestFn=t,this.id=e,this.options=i}ingest=t=>{Array.isArray(t)?this.events=this.events.concat(t):this.events.push(t),this.events.length>=1e3||this.lastFlush.getTime()<Date.now()-1e3?(clearTimeout(this.nextFlush),this.activeFlush=this.flush()):(clearTimeout(this.nextFlush),this.nextFlush=setTimeout((()=>{this.activeFlush=this.flush()}),1e3))};flush=async()=>{const t=this.events.splice(0,this.events.length);if(clearTimeout(this.nextFlush),await this.activeFlush,0===t.length)return void(this.lastFlush=new Date);const e=await this.ingestFn(this.id,t,this.options);return this.lastFlush=new Date,e}}class v extends l{datasets;users;localPath="/v1";constructor(t){super(t),this.datasets=new f.Service(t),this.users=new m.Service(t)}ingestRaw=(t,e,i=y.JSON,n=p.Identity,s)=>this.client.post(this.localPath+"/datasets/"+t+"/ingest",{headers:{"Content-Type":i,"Content-Encoding":n},body:e},{"timestamp-field":s?.timestampField,"timestamp-format":s?.timestampFormat,"csv-delimiter":s?.csvDelimiter});queryLegacy=(t,e,i)=>this.client.post(this.localPath+"/datasets/"+t+"/query",{body:JSON.stringify(e)},{"streaming-duration":i?.streamingDuration,nocache:i?.noCache});query=(t,e)=>{const i={apl:t};return e?.startTime&&(i.startTime=e?.startTime),e?.endTime&&(i.endTime=e?.endTime),this.client.post(this.localPath+"/datasets/_apl",{body:JSON.stringify(i)},{"streaming-duration":e?.streamingDuration,nocache:e?.noCache,format:"legacy"})};aplQuery=(t,e)=>this.query(t,e)}class
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ShopAR__analytics={})}(this,(function(t){"use strict";function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function i(t){return Number.isInteger(t)&&t>=0}function n(t){this.name="ArgumentError",this.message=t}var s=e((function(t,e){if(e=e||{},"function"!=typeof t)throw new n("fetch must be a function");if("object"!=typeof e)throw new n("defaults must be an object");if(void 0!==e.retries&&!i(e.retries))throw new n("retries must be a positive integer");if(void 0!==e.retryDelay&&!i(e.retryDelay)&&"function"!=typeof e.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");if(void 0!==e.retryOn&&!Array.isArray(e.retryOn)&&"function"!=typeof e.retryOn)throw new n("retryOn property expects an array or function");return e=Object.assign({retries:3,retryDelay:1e3,retryOn:[]},e),function(s,r){var a=e.retries,o=e.retryDelay,c=e.retryOn;if(r&&void 0!==r.retries){if(!i(r.retries))throw new n("retries must be a positive integer");a=r.retries}if(r&&void 0!==r.retryDelay){if(!i(r.retryDelay)&&"function"!=typeof r.retryDelay)throw new n("retryDelay must be a positive integer or a function returning a positive integer");o=r.retryDelay}if(r&&r.retryOn){if(!Array.isArray(r.retryOn)&&"function"!=typeof r.retryOn)throw new n("retryOn property expects an array or function");c=r.retryOn}return new Promise((function(e,i){var n=function(n){var o="undefined"!=typeof Request&&s instanceof Request?s.clone():s;t(o,r).then((function(t){if(Array.isArray(c)&&-1===c.indexOf(t.status))e(t);else if("function"==typeof c)try{return Promise.resolve(c(n,null,t)).then((function(i){i?u(n,null,t):e(t)})).catch(i)}catch(t){i(t)}else n<a?u(n,null,t):e(t)})).catch((function(t){if("function"==typeof c)try{Promise.resolve(c(n,t,null)).then((function(e){e?u(n,t,null):i(t)})).catch((function(t){i(t)}))}catch(t){i(t)}else n<a?u(n,t,null):i(t)}))};function u(t,e,i){var s="function"==typeof o?o(t,e,i):o;setTimeout((function(){n(++t)}),s)}n(0)}))}}));var r,a;!function(t){t.unknown="unknown",t.user="user",t.organization="organization",t.anonymous="anonymous"}(r||(r={})),function(t){t.api="api",t.query="query",t.ingest="ingest"}(a||(a={}));class o{scope;type;value;remaining;reset;constructor(t=r.unknown,e=a.api,i=0,n=-1,s=new Date){this.scope=t,this.type=e,this.value=i,this.remaining=n,this.reset=s}}function c(t,e,i,n,s){let a=new o;const c=t.headers.get(e.toLowerCase())||r.unknown;a.scope=r[c];const u=t.headers.get(i.toLowerCase())||"",h=parseInt(u,10);isNaN(h)||(a.value=h);const l=t.headers.get(n.toLowerCase())||"",f=parseInt(l,10);isNaN(f)||(a.remaining=f);const m=t.headers.get(s.toLowerCase())||"",y=parseInt(m,10);return isNaN(y)||(a.reset=new Date(1e3*y)),a}class u{config;constructor(t){this.config=t}async doReq(t,e,i={},n={}){let r=`${this.config.baseUrl}${t}`;const o=this._prepareSearchParams(n);o&&(r+=`?${o.toString()}`);const u={...this.config.headers,...i.headers},l=await s(fetch)(r,{retries:3,retryDelay:function(t,e,i){return 1e3*Math.pow(2,t)},retryOn:[503,502,504,500],headers:u,method:e,body:i.body?i.body:void 0});if(204===l.status)return l;if(429==l.status){const t=function(t){let e;return t.url?.endsWith("/ingest")?(e=c(t,"","X-IngestLimit-Limit","X-IngestLimit-Remaining","X-IngestLimit-Reset"),e.type=a.ingest):t.url?.endsWith("/query")||t.url?.endsWith("/_apl")?(e=c(t,"","X-QueryLimit-Limit","X-QueryLimit-Remaining","X-QueryLimit-Reset"),e.type=a.query):(e=c(t,"X-RateLimit-Scope","X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset"),e.type=a.api),e}(l);return Promise.reject(new h(t))}if(401===l.status)return Promise.reject(new Error("Forbidden"));if(l.status>=400){const t=await l.json();return Promise.reject(new Error(t.message))}return await l.json()}post(t,e={},i={}){return this.doReq(t,"POST",e,i)}get(t,e={},i={}){return this.doReq(t,"GET",e,i)}put(t,e={},i={}){return this.doReq(t,"PUT",e,i)}delete(t,e={},i={}){return this.doReq(t,"DELETE",e,i)}_prepareSearchParams=t=>{const e=new URLSearchParams;let i=!1;return Object.keys(t).forEach((n=>{t[n]&&(e.append(n,t[n]),i=!0)})),i?e:null}}class h extends Error{limit;shortcircuit;message="";constructor(t,e=!1){super(),this.limit=t,this.shortcircuit=e,Object.setPrototypeOf(this,h.prototype);const i=h.timeUntilReset(t);this.message=`${t.type} limit exceeded, try again in ${i.minutes}m${i.seconds}s`,t.type==a.api&&(this.message=`${t.scope} `+this.message)}static timeUntilReset(t){const e=t.reset.getTime()-(new Date).getTime(),i=Math.floor(e/1e3%60);return{total:e,minutes:Math.floor(e/1e3/60%60),seconds:i}}}class l{client;constructor({orgId:t="",token:e,url:i}){e||console.warn("Missing Axiom token");const n=i??"https://api.axiom.co",s={Accept:"application/json","Content-Type":"application/json",Authorization:"Bearer "+e};"undefined"==typeof window&&(s["User-Agent"]="axiom-js/1.0.0-rc.1"),t&&(s["X-Axiom-Org-Id"]=t),this.client=new u({baseUrl:n,headers:s,timeout:3e3})}}var f,m,y,p,d,g;!function(t){t.TimestampField="_time";t.Service=class extends l{localPath="/v1/datasets";list=()=>this.client.get(this.localPath);get=t=>this.client.get(this.localPath+"/"+t);create=t=>this.client.post(this.localPath,{body:JSON.stringify(t)});update=(t,e)=>this.client.put(this.localPath+"/"+t,{body:JSON.stringify(e)});delete=t=>this.client.delete(this.localPath+"/"+t);trim=(t,e)=>{const i={maxDuration:e};return this.client.post(this.localPath+"/"+t+"/trim",{body:JSON.stringify(i)})}}}(f||(f={})),function(t){t.Service=class extends l{current=()=>this.client.get("/v1/user")}}(m||(m={}));class w{ingestFn;id;options;events=[];activeFlush=Promise.resolve();nextFlush=setTimeout((()=>{}),0);lastFlush=new Date;constructor(t,e,i){this.ingestFn=t,this.id=e,this.options=i}ingest=t=>{Array.isArray(t)?this.events=this.events.concat(t):this.events.push(t),this.events.length>=1e3||this.lastFlush.getTime()<Date.now()-1e3?(clearTimeout(this.nextFlush),this.activeFlush=this.flush()):(clearTimeout(this.nextFlush),this.nextFlush=setTimeout((()=>{this.activeFlush=this.flush()}),1e3))};flush=async()=>{const t=this.events.splice(0,this.events.length);if(clearTimeout(this.nextFlush),await this.activeFlush,0===t.length)return void(this.lastFlush=new Date);const e=await this.ingestFn(this.id,t,this.options);return this.lastFlush=new Date,e}}class v extends l{datasets;users;localPath="/v1";constructor(t){super(t),this.datasets=new f.Service(t),this.users=new m.Service(t)}ingestRaw=(t,e,i=y.JSON,n=p.Identity,s)=>this.client.post(this.localPath+"/datasets/"+t+"/ingest",{headers:{"Content-Type":i,"Content-Encoding":n},body:e},{"timestamp-field":s?.timestampField,"timestamp-format":s?.timestampFormat,"csv-delimiter":s?.csvDelimiter});queryLegacy=(t,e,i)=>this.client.post(this.localPath+"/datasets/"+t+"/query",{body:JSON.stringify(e)},{"streaming-duration":i?.streamingDuration,nocache:i?.noCache});query=(t,e)=>{const i={apl:t};return e?.startTime&&(i.startTime=e?.startTime),e?.endTime&&(i.endTime=e?.endTime),this.client.post(this.localPath+"/datasets/_apl",{body:JSON.stringify(i)},{"streaming-duration":e?.streamingDuration,nocache:e?.noCache,format:"legacy"})};aplQuery=(t,e)=>this.query(t,e)}class 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;pointer-events:none}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer;pointer-events:auto}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}"};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 d(){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 u=[1e3,2e3,4e3],h=u.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,u[n]))),p(t,n+1)}}))}const f=["Glasses","Shoes","Watches"],g=["Shoes"];const m="0.0.9-alpha.0";let v=`https://cdn.jsdelivr.net/npm/shopar-plugin@${m}/dist`;const w={update:e=>{null!=e&&(v=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>v};function y(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let b;const 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.warn('No <meta name="viewport"> detected; ShopAR will cap pixel density at 1.'),()=>e?window.devicePixelRatio:1})();let E,S,C;function A(e){const t=function(e){const t=new S.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,S.ClampToEdgeWrapping,S.ClampToEdgeWrapping,S.LinearFilter,S.LinearFilter,1,S.LinearEncoding);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(C.parse(e));return t.mapping=S.EquirectangularReflectionMapping,t.encoding=S.LinearEncoding,t}const I=45,P=45,T=3,L=1.5,k=1,M=.5;let x,$,U,D,_,N,j=!1;const O=0,q=2e3,G=.05,W=1/(32*Math.PI);let Q,F,V,H=!1,B=1,K=1,z=1;const X=1;let Z;const Y=new Map;function J(t,n,o){const r=t.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,d,u,h,p,f=!1,g=!0,m=!1,v=!1,w=!1,y=0,b=0,R=1,k=1,N=1;const j={threeInit:()=>{f||(ee(),i=new F.Scene,a=new F.PerspectiveCamera(25,1,.5),s=new Q.OrbitControls(a,t),s.enableInteraction(),({renderShadow:c,shadowGroup:l}=function(e){const t=new x.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new x.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new x.Group;o.position.y=-.7;const r=new x.PlaneGeometry(I,P).rotateX(Math.PI/2),i=new x.MeshBasicMaterial({map:t.texture,opacity:M,transparent:!0,depthWrite:!1}),a=new x.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new x.Mesh(r);s.visible=!1,o.add(s);const l=new x.OrthographicCamera(-I/2,I/2,P/2,-P/2,0,T);function c(e){s.visible=!0,D.uniforms.tDiffuse.value=t.texture,D.uniforms.h.value=1*e/256,s.material=D,$.setRenderTarget(n),$.render(s,l),_.uniforms.tDiffuse.value=n.texture,_.uniforms.v.value=1*e/256,s.material=_,$.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=U;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)),f=!0)},threeParse:(t,n,o)=>e(this,void 0,void 0,(function*(){return null!=d&&u===o||(yield d,d=(()=>e(this,void 0,void 0,(function*(){var e,o;return S=(e=Q).THREE,C=new e.RGBELoader,i.environment=A(n),function(e,t){const{THREE:n}=t;E=(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("function"==typeof t.MeshoptDecoder?t.MeshoptDecoder():t.MeshoptDecoder)}(Z,Q),o=t,E.parseAsync(o.buffer,"")})))(),u=o),d})),threeLoad:(e,t)=>{i.clear(),i.add(e.scene);const n=(new F.Box3).setFromObject(e.scene);l.position.y=n.min.y-O,i.add(l),c(),i.traverse((e=>{if(e instanceof F.Mesh){const t=e.material;t.depthWrite=!0,t instanceof F.MeshPhysicalMaterial&&t.transmissionMap&&(t.transmission=1,t.toneMapped=!1,t.fog=!1,t.needsUpdate=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(Q.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,F.Vector3)),w=!0},threePaused:()=>g,threeResume:()=>{g=!1,Z.setAnimationLoop(te),t.style.visibility="visible",y=0,b=0},threePause:()=>{g=!0,function(){for(const{threePaused:e}of Y.values())if(!e())return!1;return!0}()&&Z.setAnimationLoop(null),t.style.visibility="hidden",n.style.visibility="hidden"},threeSetOnInteracted:e=>{s.removeEventListener("change",h),h=e,s.addEventListener("change",e)},preRender_:e=>{if(!f||g)return;e=performance.now();const t=0!==b?e-b:0;if(b=e,!s.update()){if(v)return;if(w)return void(w=!1);if(null==p&&(p=()=>{w||(v=!0,n.style.visibility="hidden",null!=p&&(s.removeEventListener("change",p),p=null))},s.addEventListener("change",p)),y+=t,!(y>q&&y<2*q))return o.style.opacity="0",void(y>2*q&&(y=0));{n.style.visibility="visible",o.style.opacity="1";const e=2*Math.PI/q*y,t=-Math.sin(e),r=Math.cos(e);o.style.transform=`translateX(${G*t*Math.min(R,k)}px)`,s.updateTheta(W*r)}}m=!0},shouldRender_:()=>!(!f||g)&&m,render_:()=>{Z.setViewport(0,0,t.width,t.height),Z.render(i,a),m=!1,null!=r&&(r.clearRect(0,0,t.width,t.height),r.drawImage(V,0,K-t.height,t.width,t.height,0,0,t.width,t.height))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===R&&n===k&&z===N||(t.width=Math.ceil(e*z*X),t.height=Math.ceil(n*z*X),R=e,k=n,N=z,m=!0)},target_:t};return Y.set(t,j),j}function ee(){if(H)return;Q=window.ShopAR__THREE,F=Q.THREE,V=document.createElement("canvas");var e,t;V.style.position="block",Z=new F.WebGLRenderer({powerPreference:"high-performance",canvas:V,antialias:!0,alpha:!0}),Z.outputEncoding=F.sRGBEncoding,Z.toneMapping=F.ACESFilmicToneMapping,Z.setClearColor(new F.Color(16777215)),e=Z,t=Q,j||(x=t.THREE,$=e,U=new x.MeshDepthMaterial,U.userData.darkness={value:k},U.onBeforeCompile=e=>{e.uniforms.darkness=U.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}`},U.depthTest=!1,U.depthWrite=!1,D=new x.ShaderMaterial(t.HorizontalBlurShader),D.depthTest=!1,_=new x.ShaderMaterial(t.VerticalBlurShader),_.depthTest=!1,j=!0),ne(),H=!0}function te(e){ne(),Z.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of Y.values())t(e),n()&&o()}function ne(){let e=0,t=0;for(const{target_:n}of Y.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*X),t=Math.ceil(t*n*X),e===B&&t===K&&n===z||(B=e,K=t,z=n,Z.setSize(B,K,!1));for(const{updateSize_:e}of Y.values())e()}const oe={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},re=Object.keys(oe);function ie(e){return oe[e]}function ae(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}const se="shopar-error";function le(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=ae("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;return r.style.display="none",r}const ce="shopar-control";const de="shopar-deepar-output";function ue(e){const t=document.createElement("div");t.className=e,t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",t}function he(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function pe(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 fe(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 ge="shopar-main";const me="shopar-qr-output";const ve="shopar-three-output";var we;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(we||(we={}));let ye=!1;function be(){ye||(!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.")}}(),ye=!0)}function Re(){be();const e=function(){const e=document.createElement("div");e.id=ge;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",e}(),t=function(){const e=new Image,t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),n=function(e){const t=document.createElement("div");t.id=me;const n=t.style;n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.display="none";const o=document.createElement("div");o.className="shopar-qr";const r=o.style;r.position="relative",r.top="0",r.left="0",r.width="100%",r.height="100%",t.appendChild(o);const i=document.createElement("div");i.innerText="Scan on mobile or tablet to try on",i.style.textAlign="center",o.appendChild(i);const a=document.createElement("div");return a.appendChild(e),o.appendChild(a),t}(t);e.appendChild(n);const o=function(){const e=document.createElement("div");e.id=de;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",e}();e.appendChild(o);const r=function(){const e=document.createElement("canvas");e.id=ve;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",e}();e.appendChild(r);const i=function(){const e=ae("2rem",`${w}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),a=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",n.pointerEvents="none",t.appendChild(e),t}(i);e.appendChild(a);const s=ue("shopar-ar-loading-container"),l=he("shopar-ar-loading-text",ie("loading.ar"));s.appendChild(l);const c=pe("shopar-ar-loading-bar-bg"),d=fe("shopar-ar-loading-bar-fg");c.appendChild(d),s.appendChild(c),e.appendChild(s);const u=ue("shopar-3d-loading-container"),h=he("shopar-3d-loading-text",ie("loading.3d"));u.appendChild(h);const p=pe("shopar-3d-loading-bar-bg"),f=fe("shopar-3d-loading-bar-fg");p.appendChild(f),u.appendChild(p),e.appendChild(u);const g=function(){const e=document.createElement("div");e.id=se;const t=e.style;t.position="absolute",t.width="100%",t.height="100%",t.display="none";const n=document.createElement("div"),o=n.style;o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",e.appendChild(n);const r=ae("4rem",`${w}/img/icons/close.svg`);n.appendChild(r);const i=document.createElement("div");i.className="shopar-error-title",i.textContent="Camera Error",n.appendChild(i);const a=document.createElement("div");return a.className="shopar-error-body",a.textContent="Please refresh the page and allow the use of camera.",n.appendChild(a),e}();e.appendChild(g);const m=function(){const e=document.createElement("div");return e.id=ce,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(m);const v=le("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");m.appendChild(v);const y=le("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${w}/img/icons/cube.svg`);m.appendChild(y);const b=le("shopar-btn-close","Close","Close ShopAR view",`${w}/img/icons/close.svg`);m.append(b);let R,E=we.None,S=!1,C=!1,A=!1,I=!1;function P(){d.classList.remove("active"),s.style.visibility="hidden"}function T(){f.classList.remove("active"),u.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return n},getQRImage:function(){return t},getDeepARTarget:function(){return o},getThreeTarget:function(){return r},getThreePrompt:function(){return a},getThreePromptImage:function(){return i},setVisibilityParameters:function(e,t,n,o,r){var i;S=e,C=t,A=n,I=o,R=r,Ee(m,S),Ee(v,S&&(A||C)&&E===we.None),Ee(y,S&&I&&E===we.None),Ee(b,S&&E!==we.None),P(),T(),S||""===(i=g).style.display&&Ee(i,!1)},getUIState:function(){return E},setUIState:function(e){E=e,E===we.None?(P(),T(),S&&(Ee(g,!1),Ee(b,!1),(C||A)&&Ee(v,!0),I&&Ee(y,!0))):E!==we.QR&&E!==we.AR&&E!==we.Preview||S&&(Ee(g,!1),Ee(v,!1),Ee(y,!1),Ee(b,!0))},setDefaultUIActions:function(e,t,n){S&&((C||A)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${w}/img/icons/${n}`;v.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(R),v.onclick=e),I&&(y.onclick=t),b.onclick=n)},startDeepARLoading:function(){d.classList.add("active"),s.style.visibility="visible"},stopDeepARLoading:P,startThreeLoading:function(){f.classList.add("active"),u.style.visibility="visible"},stopThreeLoading:T,showCameraError:function(){S&&Ee(g,!0)}}}function Ee(e,t){e.style.display=t?"":"none"}const Se=new Map;function Ce(t){let n=Se.get(t);return null==n?(n=function(){let t=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=Re()),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 b;const e=`https://apps.deepar.ai/${m.includes("alpha")?"shopar-qr-alpha":"shopar-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=J(e(),t(),n())}return r}}}(),Se.set(t,n)):n.incrementSetupId_(),n}function Ae(e){for(const t of Se.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===we.AR&&r(we.None)}}let Ie;const Pe=new Uint8Array(16);function Te(){if(!Ie&&(Ie="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ie))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ie(Pe)}const Le=[];for(let e=0;e<256;++e)Le.push((e+256).toString(16).slice(1));var ke={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Me(e,t,n){if(ke.randomUUID&&!t&&!e)return ke.randomUUID();const o=(e=e||{}).random||(e.rng||Te)();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 Le[e[t+0]]+Le[e[t+1]]+Le[e[t+2]]+Le[e[t+3]]+"-"+Le[e[t+4]]+Le[e[t+5]]+"-"+Le[e[t+6]]+Le[e[t+7]]+"-"+Le[e[t+8]]+Le[e[t+9]]+"-"+Le[e[t+10]]+Le[e[t+11]]+Le[e[t+12]]+Le[e[t+13]]+Le[e[t+14]]+Le[e[t+15]]}(o)}const xe="qrLaunch",$e="arLaunch",Ue="previewLaunch",De="heartbeat";let _e,Ne,je=!1;const Oe=[];function qe(e,t){const n=performance.now(),o=Me();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,d(De,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const d=(r,i={})=>{var a;i=Object.assign(Object.assign({},i),{pluginVersion:m,sessionId:Ne,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),a=()=>{window.ShopAR__analytics.trackEventImpl(r,i)},je?a():Oe.push(a)};return{trackEvent:d,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)}}}function Ge(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function We(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 Qe=200,Fe=10;let Ve,He,Be,Ke=!1;function ze(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.")}}))}let Xe,Ze,Ye,Je,et,tt,nt,ot,rt=!0;function it(e){e!==Be&&(Be=e,ze(e),tt=null,Ke=!0)}function at(n,o){return e(this,void 0,void 0,(function*(){return Ye=o,null==et&&(et=(()=>e(this,void 0,void 0,(function*(){if(null==(null===(r=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===r?void 0:r.getUserMedia))throw new t("No camera available!");var r;const i=ut(o),a=Ge(i),s=function(e){const t={Glasses:"rigidFaceTrackingInit",Shoes:"footInit",Watches:void 0};return null==e?void 0:t[e]}(o);Xe=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:n||"your_license_key_goes_here",previewElement:Je,additionalOptions:{hint:s,cameraConfig:{disableDefaultCamera:!0}}}),Ze=yield We(a),yield ht(Xe,Ze,"user"===i),"Glasses"===o&&(yield He,function(t,n){e(this,void 0,void 0,(function*(){Ke=!1;const{ShopAR__TrueScale:o}=window;yield o.initialize(`${w}/wasm/mediapipe`,t);const r=[],i=setInterval((()=>e(this,void 0,void 0,(function*(){if(Ke)return void clearInterval(i);const{error:e,faceWidth:t}=yield o.predict(performance.now());if(Ke)return void clearInterval(i);if(null!=e)return void console.error(`TrueScale predict error: ${e}`);if(r.length<Fe)return void r.push(t);clearInterval(i);const a=137/(function(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}(r)+5);n.changeParameterVector("GLASSES","","scale",a,a,a,0),n.changeParameterVector("shopar_glasses","","scale",a,a,a,0)}))),Qe)}))}(Ze,Xe))})))()),et}))}function st(t){return e(this,void 0,void 0,(function*(){t!==Je&&(Je=t,null!=Xe&&Xe.changePreviewElement(Je))}))}function lt(e){Xe.callbacks.onFaceTracked=t=>{t.some((e=>e.detected))&&e()},Xe.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&e()},Xe.callbacks.onWristTracked=t=>{t.detected&&e()}}function ct(t,n){return e(this,void 0,void 0,(function*(){return null!=tt&&nt===n||(yield tt,tt=Xe.switchEffect(t),nt=n),tt}))}function dt(){null!=Xe&&(rt=!0,Xe.setPaused(rt),null!=Ze&&null!=Ze.srcObject&&Ze.srcObject instanceof MediaStream&&(Ze.srcObject.getTracks().forEach((e=>e.stop())),Ze=null),Xe.stopCamera(),Je.style.display="none")}function ut(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function ht(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 pt(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 d=String.fromCharCode(a+14);s>>=2,a^=s+2;const u=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const f=String.fromCharCode(a-7),g=window[`${h}${u+d+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${f}`],m=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield g(`${o}`).catch((()=>{throw new t("Unknown error.")}));if(!e.ok)throw new t("Unknown error.");return e})))),v=new n[0](yield(yield m.blob().catch((()=>{throw new t("Unknown error.")}))).arrayBuffer().catch((()=>{throw new t("Unknown error.")})));i+=s;const w=v.byteLength;if(c[l]=Math.min(76,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 ft(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function gt(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}const mt=["AR","3D"];function vt(e){const{apiKey:n,sku:o,targetElement:r,initialState:i,baseUrl:a,defaultUI:s,strings:l}=e;ft(n,"apiKey"),gt(n,"apiKey"),ft(o,"sku"),gt(o,"sku"),ft(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",mt),null!=a&>(a,"baseUrl"),null!=s&&function(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}(s,"defaultUI"),null!=l&&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.`)}}(l,"strings",re)}function wt(n){var o,r;return e(this,void 0,void 0,(function*(){vt(n);const{apiKey:i,sku:a,targetElement:s,initialState:l}=n;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),w.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(oe,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(oe[t]=n)}}(n.strings);const c=function(n,o){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams({apiKey:n,sku:o,sid:d()})}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield r.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(i,a),u=Ce(s),{getSetupId:h,findUI:m,findQR:v,findThree:R}=u,E=h();null==_e&&(Ne=Me(),_e=y(`${w}/shopar-analytics.js`),_e.then((()=>{je=!0,window.ShopAR__analytics.initializeImpl(),Oe.forEach((e=>e()))})));const{trackEvent:S,arInteracted:C,previewInteracted:A}=qe(a,i);S("setup",{hostname:window.location.hostname});const I=yield c;S("apiResponse",I);const{category:P,arUrl:T,arKey:L,previewUrl:k,previewEnvUrl:M}=I;yt(h(),E);const x=null!=T&&function(e){return null!=e&&f.includes(e)}(P),$=null==(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled),U=x&&function(e){return null!=e&&g.includes(e)}(P),D=$&&U&&!(yield function(){var t;return e(this,void 0,void 0,(function*(){return null==ot&&(ot=y(`${w}/shopar-platform.js`)),yield ot,["Android","iOS","Windows Phone",void 0].includes(null===(t=window.ShopAR__platform.platform.os)||void 0===t?void 0:t.family)}))}()),_=x&&!D,j=null!=k;if(yt(h(),E),D&&function(){e(this,void 0,void 0,(function*(){null==b&&(b=y(`${w}/shopar-qr.js`))}))}(),_&&(null==Ve&&(Ve=y(`${w}/shopar-deepar.js`)),it(T),"Glasses"===P&&null==He&&(He=y(`${w}/shopar-true-scale.js`))),j){null==N&&(N=y(`${w}/shopar-three.js`));const e=255;pt(k,(new Date).getTime()+e,Math.random()*e),ze(null!=M?M:`${w}/env/default.hdr`)}const{setTargetElement:O,getDeepARTarget:q,setVisibilityParameters:G,getUIState:W,setUIState:Q,setDefaultUIActions:F,startDeepARLoading:V,stopDeepARLoading:H,startThreeLoading:B,stopThreeLoading:K,showCameraError:z}=m();O(s);G(null==n.defaultUI||n.defaultUI,D,_,j,P),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,(()=>{W()!==we.QR||X()||Y(),W()!==we.AR||rt||dt(),W()!==we.Preview||ne()||ie(),Q(we.None)}));const{qrPaused:X,qrDraw:Z,qrPause:Y}=v(),{threeInit:J,threeParse:ee,threeLoad:te,threePaused:ne,threeResume:re,threePause:ie,threeSetOnInteracted:ae}=R();let se=0;if(W()===we.QR){if(!X())if(D){S(xe);try{yield Z(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Y(),Q(we.None)}else if(W()===we.AR){if(!rt)if(_){S($e);const e=yield ze(T);yt(h(),E),Ae(u),st(q()),yield ct(e,T),lt(C),yt(h(),E)}else dt(),Q(we.None)}else if(W()===we.Preview&&!ne())if(j){S(Ue),B();const e=255,t=yield pt(k,(new Date).getTime()+e,Math.random()*e);yt(h(),E);const n=yield ze(null!=M?M:`${w}/env/default.hdr`);yt(h(),E);const o=yield ee(t,n,`${k}${M}`);yt(h(),E),te(o,P),ae(A),K()}else ie(),Q(we.None);const le=()=>e(this,void 0,void 0,(function*(){if(D){if(W()===we.QR||W()===we.AR)throw new t("AR already launched.");try{S(xe);const e=++se;if(W()===we.Preview&&j&&!ne()&&ie(),Q(we.QR),yield Z(i,a),se!==e)return;return void yt(h(),E)}catch(e){const n=e instanceof Error;throw S("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}}if(!_)throw new t("Model does not have AR enabled.");if(W()===we.AR)throw new t("AR already launched.");try{S($e);const t=++se;W()===we.Preview&&j&&!ne()&&ie(),Ae(u),Q(we.AR),V();const n=yield ze(T);if(se!==t)return;if(yt(h(),E),yield Ve,se!==t)return;if(yt(h(),E),dt(),st(q()),yield at(L,P),se!==t)return;if(yt(h(),E),yield ct(n,T),lt(C),se!==t)return;if(yt(h(),E),yield function(){return e(this,void 0,void 0,(function*(){if(null!=Xe){if(rt=!1,null==Ze){const e=ut(Ye),t=Ge(e);Ze=yield We(t),yield ht(Xe,Ze,"user"===e)}Xe.setPaused(rt),Je.style.display=""}}))}(),se!==t)return;yt(h(),E)}catch(e){const n=e instanceof Error;throw S("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),z(),dt(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{H()}})),ce=()=>e(this,void 0,void 0,(function*(){if(!j)throw new t("Model does not have 3D enabled.");if(W()===we.Preview)throw new t("3D already launched.");try{S(Ue);const e=++se;W()===we.AR&&(_&&!rt&&dt(),Y()),Q(we.Preview),B();const t=255,n=yield pt(k,(new Date).getTime()+t,Math.random()*t);if(se!==e)return;yt(h(),E);const o=yield ze(null!=M?M:`${w}/env/default.hdr`);if(se!==e)return;if(yt(h(),E),yield N,se!==e)return;if(yt(h(),E),J(),se!==e)return;yt(h(),E);const r=yield ee(n,o,`${k}${M}`);if(se!==e)return;yt(h(),E),te(r,P),ae(A),re()}catch(e){const n=e instanceof Error;throw S("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}finally{K()}})),de=()=>e(this,void 0,void 0,(function*(){if(W()===we.None)throw new t("Neither AR or 3D launched.");++se,W()===we.QR||W()===we.AR?(_&&!rt&&dt(),Y()):W()===we.Preview&&j&&!ne()&&ie(),Q(we.None)}));return F(le,ce,de),"AR"===l?(yield le(),yt(h(),E)):"3D"===l&&(yield ce(),yt(h(),E)),{launchAR:x?le:void 0,launch3D:j?ce:void 0,closeAR:x?()=>e(this,void 0,void 0,(function*(){if(W()!==we.AR&&W()!==we.QR)throw new t("AR not launched.");++se,_&&!rt&&dt(),Y(),Q(we.None)})):void 0,close3D:j?()=>e(this,void 0,void 0,(function*(){if(W()!==we.Preview)throw new t("3D not launched.");++se,j&&!ne()&&ie(),Q(we.None)})):void 0,close:x||j?de:void 0}}))}function yt(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const bt={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",(()=>wt(n)))}))},version:m};export{bt as plugin};
|
|
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;pointer-events:none}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer;pointer-events:auto}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}"};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 d(){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 u=[1e3,2e3,4e3],h=u.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,u[n]))),p(t,n+1)}}))}const f=["Glasses","Shoes","Watches"],g=["Shoes"];const m="0.0.9";let v=`https://cdn.jsdelivr.net/npm/shopar-plugin@${m}/dist`;const w={update:e=>{null!=e&&(v=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>v};function y(t){return e(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const e=document.createElement("script");return e.setAttribute("src",t),e.setAttribute("crossorigin","anonymous"),new Promise((t=>{e.addEventListener("load",(()=>t()),!1),e.addEventListener("error",(()=>t()),!1),document.body.appendChild(e)}))}importScripts(t.toString())}))}let b;const 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.warn('No <meta name="viewport"> detected; ShopAR will cap pixel density at 1.'),()=>e?window.devicePixelRatio:1})();let E,S,C;function A(e){const t=function(e){const t=new S.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,S.ClampToEdgeWrapping,S.ClampToEdgeWrapping,S.LinearFilter,S.LinearFilter,1,S.LinearEncoding);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(C.parse(e));return t.mapping=S.EquirectangularReflectionMapping,t.encoding=S.LinearEncoding,t}const I=45,P=45,T=3,L=1.5,k=1,M=.5;let x,$,U,D,_,N,j=!1;const O=0,q=300,G=2e3,W=.05,Q=1/(32*Math.PI);let F,V,H,B=!1,K=1,z=1,X=1;const Z=1;let Y;const J=new Map;function ee(t,n,o){const r=t.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,d,u,h,p,f=!1,g=!0,m=!1,v=!1,w=!1,y=0,b=0,R=1,k=1,N=1;const j={threeInit:()=>{f||(te(),i=new V.Scene,a=new V.PerspectiveCamera(25,1,.5),s=new F.OrbitControls(a,t),s.enableInteraction(),({renderShadow:c,shadowGroup:l}=function(e){const t=new x.WebGLRenderTarget(512,512);t.texture.generateMipmaps=!1;const n=new x.WebGLRenderTarget(512,512);n.texture.generateMipmaps=!1;const o=new x.Group;o.position.y=-.7;const r=new x.PlaneGeometry(I,P).rotateX(Math.PI/2),i=new x.MeshBasicMaterial({map:t.texture,opacity:M,transparent:!0,depthWrite:!1}),a=new x.Mesh(r,i);a.renderOrder=1,a.scale.y=-1,o.add(a);const s=new x.Mesh(r);s.visible=!1,o.add(s);const l=new x.OrthographicCamera(-I/2,I/2,P/2,-P/2,0,T);function c(e){s.visible=!0,D.uniforms.tDiffuse.value=t.texture,D.uniforms.h.value=1*e/256,s.material=D,$.setRenderTarget(n),$.render(s,l),_.uniforms.tDiffuse.value=n.texture,_.uniforms.v.value=1*e/256,s.material=_,$.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=U;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)),f=!0)},threeParse:(t,n,o)=>e(this,void 0,void 0,(function*(){return null!=d&&u===o||(yield d,d=(()=>e(this,void 0,void 0,(function*(){var e,o;return S=(e=F).THREE,C=new e.RGBELoader,i.environment=A(n),function(e,t){const{THREE:n}=t;E=(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("function"==typeof t.MeshoptDecoder?t.MeshoptDecoder():t.MeshoptDecoder)}(Y,F),o=t,E.parseAsync(o.buffer,"")})))(),u=o),d})),threeLoad:(e,t)=>{i.clear(),i.add(e.scene);const n=(new V.Box3).setFromObject(e.scene);l.position.y=n.min.y-O,i.add(l),c(),i.traverse((e=>{if(e instanceof V.Mesh){const t=e.material;t.depthWrite=!0,t instanceof V.MeshPhysicalMaterial&&t.transmissionMap&&(t.transmission=1,t.toneMapped=!1,t.fog=!1,t.needsUpdate=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(F.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,V.Vector3)),w=!0},threePaused:()=>g,threeResume:()=>{g=!1,Y.setAnimationLoop(ne),t.style.visibility="visible",y=0,b=0},threePause:()=>{g=!0,function(){for(const{threePaused:e}of J.values())if(!e())return!1;return!0}()&&Y.setAnimationLoop(null),t.style.visibility="hidden",n.style.visibility="hidden"},threeSetOnInteracted:e=>{s.removeEventListener("change",h),h=e,s.addEventListener("change",e)},preRender_:e=>{if(!f||g)return;e=performance.now();const t=0!==b?e-b:0;if(b=e,!s.update()){if(v)return;if(w)return void(w=!1);if(null==p&&(p=()=>{w||(v=!0,n.style.visibility="hidden",null!=p&&(s.removeEventListener("change",p),p=null))},s.addEventListener("change",p)),y+=t,!(y>q&&y<=q+G))return o.style.opacity="0",void(y>q+2*G&&(y=0));{n.style.visibility="visible",o.style.opacity="1";const e=y-q,t=2*Math.PI/G*e,r=-Math.sin(t),i=Math.cos(t);o.style.transform=`translateX(${W*r*Math.min(R,k)}px)`,s.updateTheta(Q*i)}}m=!0},shouldRender_:()=>!(!f||g)&&m,render_:()=>{Y.setViewport(0,0,t.width,t.height),Y.render(i,a),m=!1,null!=r&&(r.clearRect(0,0,t.width,t.height),r.drawImage(H,0,z-t.height,t.width,t.height,0,0,t.width,t.height))},updateSize_:()=>{const{clientWidth:e,clientHeight:n}=t;e===R&&n===k&&X===N||(t.width=Math.ceil(e*X*Z),t.height=Math.ceil(n*X*Z),R=e,k=n,N=X,m=!0)},target_:t};return J.set(t,j),j}function te(){if(B)return;F=window.ShopAR__THREE,V=F.THREE,H=document.createElement("canvas");var e,t;H.style.position="block",Y=new V.WebGLRenderer({powerPreference:"high-performance",canvas:H,antialias:!0,alpha:!0}),Y.outputEncoding=V.sRGBEncoding,Y.toneMapping=V.ACESFilmicToneMapping,Y.setClearColor(new V.Color(16777215)),e=Y,t=F,j||(x=t.THREE,$=e,U=new x.MeshDepthMaterial,U.userData.darkness={value:k},U.onBeforeCompile=e=>{e.uniforms.darkness=U.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}`},U.depthTest=!1,U.depthWrite=!1,D=new x.ShaderMaterial(t.HorizontalBlurShader),D.depthTest=!1,_=new x.ShaderMaterial(t.VerticalBlurShader),_.depthTest=!1,j=!0),oe(),B=!0}function ne(e){oe(),Y.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of J.values())t(e),n()&&o()}function oe(){let e=0,t=0;for(const{target_:n}of J.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*Z),t=Math.ceil(t*n*Z),e===K&&t===z&&n===X||(K=e,z=t,X=n,Y.setSize(K,z,!1));for(const{updateSize_:e}of J.values())e()}const re={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},ie=Object.keys(re);function ae(e){return re[e]}function se(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}const le="shopar-error";function ce(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=se("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;return r.style.display="none",r}const de="shopar-control";const ue="shopar-deepar-output";function he(e){const t=document.createElement("div");t.className=e,t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",t}function pe(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function fe(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 ge(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 me="shopar-main";const ve="shopar-qr-output";const we="shopar-three-output";var ye;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(ye||(ye={}));let be=!1;function Re(){be||(!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.")}}(),be=!0)}function Ee(){Re();const e=function(){const e=document.createElement("div");e.id=me;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",e}(),t=function(){const e=new Image,t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),n=function(e){const t=document.createElement("div");t.id=ve;const n=t.style;n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.display="none";const o=document.createElement("div");o.className="shopar-qr";const r=o.style;r.position="relative",r.top="0",r.left="0",r.width="100%",r.height="100%",t.appendChild(o);const i=document.createElement("div");i.innerText="Scan on mobile or tablet to try on",i.style.textAlign="center",o.appendChild(i);const a=document.createElement("div");return a.appendChild(e),o.appendChild(a),t}(t);e.appendChild(n);const o=function(){const e=document.createElement("div");e.id=ue;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",e}();e.appendChild(o);const r=function(){const e=document.createElement("canvas");e.id=we;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",e}();e.appendChild(r);const i=function(){const e=se("2rem",`${w}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),a=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",n.pointerEvents="none",t.appendChild(e),t}(i);e.appendChild(a);const s=he("shopar-ar-loading-container"),l=pe("shopar-ar-loading-text",ae("loading.ar"));s.appendChild(l);const c=fe("shopar-ar-loading-bar-bg"),d=ge("shopar-ar-loading-bar-fg");c.appendChild(d),s.appendChild(c),e.appendChild(s);const u=he("shopar-3d-loading-container"),h=pe("shopar-3d-loading-text",ae("loading.3d"));u.appendChild(h);const p=fe("shopar-3d-loading-bar-bg"),f=ge("shopar-3d-loading-bar-fg");p.appendChild(f),u.appendChild(p),e.appendChild(u);const g=function(){const e=document.createElement("div");e.id=le;const t=e.style;t.position="absolute",t.width="100%",t.height="100%",t.display="none";const n=document.createElement("div"),o=n.style;o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",e.appendChild(n);const r=se("4rem",`${w}/img/icons/close.svg`);n.appendChild(r);const i=document.createElement("div");i.className="shopar-error-title",i.textContent="Camera Error",n.appendChild(i);const a=document.createElement("div");return a.className="shopar-error-body",a.textContent="Please refresh the page and allow the use of camera.",n.appendChild(a),e}();e.appendChild(g);const m=function(){const e=document.createElement("div");return e.id=de,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(m);const v=ce("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");m.appendChild(v);const y=ce("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${w}/img/icons/cube.svg`);m.appendChild(y);const b=ce("shopar-btn-close","Close","Close ShopAR view",`${w}/img/icons/close.svg`);m.append(b);let R,E=ye.None,S=!1,C=!1,A=!1,I=!1;function P(){d.classList.remove("active"),s.style.visibility="hidden"}function T(){f.classList.remove("active"),u.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return n},getQRImage:function(){return t},getDeepARTarget:function(){return o},getThreeTarget:function(){return r},getThreePrompt:function(){return a},getThreePromptImage:function(){return i},setVisibilityParameters:function(e,t,n,o,r){var i;S=e,C=t,A=n,I=o,R=r,Se(m,S),Se(v,S&&(A||C)&&E===ye.None),Se(y,S&&I&&E===ye.None),Se(b,S&&E!==ye.None),P(),T(),S||""===(i=g).style.display&&Se(i,!1)},getUIState:function(){return E},setUIState:function(e){E=e,E===ye.None?(P(),T(),S&&(Se(g,!1),Se(b,!1),(C||A)&&Se(v,!0),I&&Se(y,!0))):E!==ye.QR&&E!==ye.AR&&E!==ye.Preview||S&&(Se(g,!1),Se(v,!1),Se(y,!1),Se(b,!0))},setDefaultUIActions:function(e,t,n){S&&((C||A)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${w}/img/icons/${n}`;v.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(R),v.onclick=e),I&&(y.onclick=t),b.onclick=n)},startDeepARLoading:function(){d.classList.add("active"),s.style.visibility="visible"},stopDeepARLoading:P,startThreeLoading:function(){f.classList.add("active"),u.style.visibility="visible"},stopThreeLoading:T,showCameraError:function(){S&&Se(g,!0)}}}function Se(e,t){e.style.display=t?"":"none"}const Ce=new Map;function Ae(t){let n=Ce.get(t);return null==n?(n=function(){let t=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=Ee()),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 b;const e=`https://apps.deepar.ai/${m.includes("alpha")?"shopar-qr-alpha":"shopar-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=ee(e(),t(),n())}return r}}}(),Ce.set(t,n)):n.incrementSetupId_(),n}function Ie(e){for(const t of Ce.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===ye.AR&&r(ye.None)}}let Pe;const Te=new Uint8Array(16);function Le(){if(!Pe&&(Pe="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Pe))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Pe(Te)}const ke=[];for(let e=0;e<256;++e)ke.push((e+256).toString(16).slice(1));var Me={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function xe(e,t,n){if(Me.randomUUID&&!t&&!e)return Me.randomUUID();const o=(e=e||{}).random||(e.rng||Le)();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 ke[e[t+0]]+ke[e[t+1]]+ke[e[t+2]]+ke[e[t+3]]+"-"+ke[e[t+4]]+ke[e[t+5]]+"-"+ke[e[t+6]]+ke[e[t+7]]+"-"+ke[e[t+8]]+ke[e[t+9]]+"-"+ke[e[t+10]]+ke[e[t+11]]+ke[e[t+12]]+ke[e[t+13]]+ke[e[t+14]]+ke[e[t+15]]}(o)}const $e="qrLaunch",Ue="arLaunch",De="previewLaunch",_e="heartbeat";let Ne,je,Oe=!1;const qe=[];function Ge(e,t){const n=performance.now(),o=xe();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,d(_e,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const d=(r,i={})=>{var a;i=Object.assign(Object.assign({},i),{pluginVersion:m,sessionId:je,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),a=()=>{window.ShopAR__analytics.trackEventImpl(r,i)},Oe?a():qe.push(a)};return{trackEvent:d,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)}}}function We(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Qe(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 Fe=200,Ve=10;let He,Be,Ke,ze=!1;function Xe(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.")}}))}let Ze,Ye,Je,et,tt,nt,ot,rt,it=!0;function at(e){e!==Ke&&(Ke=e,Xe(e),nt=null,ze=!0)}function st(n,o){return e(this,void 0,void 0,(function*(){return Je=o,null==tt&&(tt=(()=>e(this,void 0,void 0,(function*(){if(null==(null===(r=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===r?void 0:r.getUserMedia))throw new t("No camera available!");var r;const i=ht(o),a=We(i),s=function(e){const t={Glasses:"rigidFaceTrackingInit",Shoes:"footInit",Watches:void 0};return null==e?void 0:t[e]}(o);Ze=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:n||"your_license_key_goes_here",previewElement:et,additionalOptions:{hint:s,cameraConfig:{disableDefaultCamera:!0}}}),Ye=yield Qe(a),yield pt(Ze,Ye,"user"===i),"Glasses"===o&&(yield Be,function(t,n){e(this,void 0,void 0,(function*(){ze=!1;const{ShopAR__TrueScale:o}=window;yield o.initialize(`${w}/wasm/mediapipe`,t);const r=[],i=setInterval((()=>e(this,void 0,void 0,(function*(){if(ze)return void clearInterval(i);const{error:e,faceWidth:t}=yield o.predict(performance.now());if(ze)return void clearInterval(i);if(null!=e)return void console.error(`TrueScale predict error: ${e}`);if(r.length<Ve)return void r.push(t);clearInterval(i);const a=137/(function(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}(r)+5);n.changeParameterVector("GLASSES","","scale",a,a,a,0),n.changeParameterVector("shopar_glasses","","scale",a,a,a,0)}))),Fe)}))}(Ye,Ze))})))()),tt}))}function lt(t){return e(this,void 0,void 0,(function*(){t!==et&&(et=t,null!=Ze&&Ze.changePreviewElement(et))}))}function ct(e){Ze.callbacks.onFaceTracked=t=>{t.some((e=>e.detected))&&e()},Ze.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&e()},Ze.callbacks.onWristTracked=t=>{t.detected&&e()}}function dt(t,n){return e(this,void 0,void 0,(function*(){return null!=nt&&ot===n||(yield nt,nt=Ze.switchEffect(t),ot=n),nt}))}function ut(){null!=Ze&&(it=!0,Ze.setPaused(it),null!=Ye&&null!=Ye.srcObject&&Ye.srcObject instanceof MediaStream&&(Ye.srcObject.getTracks().forEach((e=>e.stop())),Ye=null),Ze.stopCamera(),et.style.display="none")}function ht(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function pt(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 ft(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 d=String.fromCharCode(a+14);s>>=2,a^=s+2;const u=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const f=String.fromCharCode(a-7),g=window[`${h}${u+d+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${f}`],m=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield g(`${o}`).catch((()=>{throw new t("Unknown error.")}));if(!e.ok)throw new t("Unknown error.");return e})))),v=new n[0](yield(yield m.blob().catch((()=>{throw new t("Unknown error.")}))).arrayBuffer().catch((()=>{throw new t("Unknown error.")})));i+=s;const w=v.byteLength;if(c[l]=Math.min(76,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 gt(e,n){if(null==e)throw new t(`'${n}' not specified.`)}function mt(e,n){if("string"!=typeof e)throw new t(`'${n}' must be a string.`)}const vt=["AR","3D"];function wt(e){const{apiKey:n,sku:o,targetElement:r,initialState:i,baseUrl:a,defaultUI:s,strings:l}=e;gt(n,"apiKey"),mt(n,"apiKey"),gt(o,"sku"),mt(o,"sku"),gt(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",vt),null!=a&&mt(a,"baseUrl"),null!=s&&function(e,n){if("boolean"!=typeof e)throw new t(`'${n}' must be a boolean.`)}(s,"defaultUI"),null!=l&&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.`)}}(l,"strings",ie)}function yt(n){var o,r;return e(this,void 0,void 0,(function*(){wt(n);const{apiKey:i,sku:a,targetElement:s,initialState:l}=n;!function(e){const n=getComputedStyle(e);if(!["static","relative"].includes(n.position))throw new t(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${n.position}'.`)}(s),w.update(n.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(re,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(re[t]=n)}}(n.strings);const c=function(n,o){return e(this,void 0,void 0,(function*(){const r=yield p((()=>e(this,void 0,void 0,(function*(){const e=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams({apiKey:n,sku:o,sid:d()})}`).catch((e=>{throw console.error(e),new t("API unavailable.")}));if(!e.ok)throw new t(`API call failed with status ${e.status}.`);return e}))));try{return yield r.json()}catch(e){throw console.error(e),new t("API returned invalid body.")}}))}(i,a),u=Ae(s),{getSetupId:h,findUI:m,findQR:v,findThree:R}=u,E=h();null==Ne&&(je=xe(),Ne=y(`${w}/shopar-analytics.js`),Ne.then((()=>{Oe=!0,window.ShopAR__analytics.initializeImpl(),qe.forEach((e=>e()))})));const{trackEvent:S,arInteracted:C,previewInteracted:A}=Ge(a,i);S("setup",{hostname:window.location.hostname});const I=yield c;S("apiResponse",I);const{category:P,arUrl:T,arKey:L,previewUrl:k,previewEnvUrl:M}=I;bt(h(),E);const x=null!=T&&function(e){return null!=e&&f.includes(e)}(P),$=null==(null===(o=n._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=n._internalOptions)||void 0===r?void 0:r.qrEnabled),U=x&&function(e){return null!=e&&g.includes(e)}(P),D=$&&U&&!(yield function(){var t;return e(this,void 0,void 0,(function*(){return null==rt&&(rt=y(`${w}/shopar-platform.js`)),yield rt,["Android","iOS","Windows Phone",void 0].includes(null===(t=window.ShopAR__platform.platform.os)||void 0===t?void 0:t.family)}))}()),_=x&&!D,j=null!=k;if(bt(h(),E),D&&function(){e(this,void 0,void 0,(function*(){null==b&&(b=y(`${w}/shopar-qr.js`))}))}(),_&&(null==He&&(He=y(`${w}/shopar-deepar.js`)),at(T),"Glasses"===P&&null==Be&&(Be=y(`${w}/shopar-true-scale.js`))),j){null==N&&(N=y(`${w}/shopar-three.js`));const e=255;ft(k,(new Date).getTime()+e,Math.random()*e),Xe(null!=M?M:`${w}/env/default.hdr`)}const{setTargetElement:O,getDeepARTarget:q,setVisibilityParameters:G,getUIState:W,setUIState:Q,setDefaultUIActions:F,startDeepARLoading:V,stopDeepARLoading:H,startThreeLoading:B,stopThreeLoading:K,showCameraError:z}=m();O(s);G(null==n.defaultUI||n.defaultUI,D,_,j,P),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,(()=>{W()!==ye.QR||X()||Y(),W()!==ye.AR||it||ut(),W()!==ye.Preview||ne()||ie(),Q(ye.None)}));const{qrPaused:X,qrDraw:Z,qrPause:Y}=v(),{threeInit:J,threeParse:ee,threeLoad:te,threePaused:ne,threeResume:oe,threePause:ie,threeSetOnInteracted:ae}=R();let se=0;if(W()===ye.QR){if(!X())if(D){S($e);try{yield Z(i,a)}catch(e){throw new t(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Y(),Q(ye.None)}else if(W()===ye.AR){if(!it)if(_){S(Ue);const e=yield Xe(T);bt(h(),E),Ie(u),lt(q()),yield dt(e,T),ct(C),bt(h(),E)}else ut(),Q(ye.None)}else if(W()===ye.Preview&&!ne())if(j){S(De),B();const e=255,t=yield ft(k,(new Date).getTime()+e,Math.random()*e);bt(h(),E);const n=yield Xe(null!=M?M:`${w}/env/default.hdr`);bt(h(),E);const o=yield ee(t,n,`${k}${M}`);bt(h(),E),te(o,P),ae(A),K()}else ie(),Q(ye.None);const le=()=>e(this,void 0,void 0,(function*(){if(D){if(W()===ye.QR||W()===ye.AR)throw new t("AR already launched.");try{S($e);const e=++se;if(W()===ye.Preview&&j&&!ne()&&ie(),Q(ye.QR),yield Z(i,a),se!==e)return;return void bt(h(),E)}catch(e){const n=e instanceof Error;throw S("qrLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`QR failed: ${n?e.message:"Unknown error."}`)}}if(!_)throw new t("Model does not have AR enabled.");if(W()===ye.AR)throw new t("AR already launched.");try{S(Ue);const t=++se;W()===ye.Preview&&j&&!ne()&&ie(),Ie(u),Q(ye.AR),V();const n=yield Xe(T);if(se!==t)return;if(bt(h(),E),yield He,se!==t)return;if(bt(h(),E),ut(),lt(q()),yield st(L,P),se!==t)return;if(bt(h(),E),yield dt(n,T),ct(C),se!==t)return;if(bt(h(),E),yield function(){return e(this,void 0,void 0,(function*(){if(null!=Ze){if(it=!1,null==Ye){const e=ht(Je),t=We(e);Ye=yield Qe(t),yield pt(Ze,Ye,"user"===e)}Ze.setPaused(it),et.style.display=""}}))}(),se!==t)return;bt(h(),E)}catch(e){const n=e instanceof Error;throw S("arLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),z(),ut(),new t(`AR failed: ${n?e.message:"Unknown error."}`)}finally{H()}})),ce=()=>e(this,void 0,void 0,(function*(){if(!j)throw new t("Model does not have 3D enabled.");if(W()===ye.Preview)throw new t("3D already launched.");try{S(De);const e=++se;W()===ye.AR&&(_&&!it&&ut(),Y()),Q(ye.Preview),B();const t=255,n=yield ft(k,(new Date).getTime()+t,Math.random()*t);if(se!==e)return;bt(h(),E);const o=yield Xe(null!=M?M:`${w}/env/default.hdr`);if(se!==e)return;if(bt(h(),E),yield N,se!==e)return;if(bt(h(),E),J(),se!==e)return;bt(h(),E);const r=yield ee(n,o,`${k}${M}`);if(se!==e)return;bt(h(),E),te(r,P),ae(A),oe()}catch(e){const n=e instanceof Error;throw S("previewLaunchFailure",{errorName:n?e.name:"Unknown",errorMessage:n?e.message:""}),new t(`3D failed: ${n?e.message:"Unknown error."}`)}finally{K()}})),de=()=>e(this,void 0,void 0,(function*(){if(W()===ye.None)throw new t("Neither AR or 3D launched.");++se,W()===ye.QR||W()===ye.AR?(_&&!it&&ut(),Y()):W()===ye.Preview&&j&&!ne()&&ie(),Q(ye.None)}));return F(le,ce,de),"AR"===l?(yield le(),bt(h(),E)):"3D"===l&&(yield ce(),bt(h(),E)),{launchAR:x?le:void 0,launch3D:j?ce:void 0,closeAR:x?()=>e(this,void 0,void 0,(function*(){if(W()!==ye.AR&&W()!==ye.QR)throw new t("AR not launched.");++se,_&&!it&&ut(),Y(),Q(ye.None)})):void 0,close3D:j?()=>e(this,void 0,void 0,(function*(){if(W()!==ye.Preview)throw new t("3D not launched.");++se,j&&!ne()&&ie(),Q(ye.None)})):void 0,close:x||j?de:void 0}}))}function bt(e,n){if(e!==n)throw new t("Setup cancelled. Please ensure that setup is only called once.")}const Rt={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",(()=>yt(n)))}))},version:m};export{Rt as plugin};
|
package/dist/shopar-plugin.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ShopAR={})}(this,(function(e){"use strict";function t(e,t,n,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;pointer-events:none}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer;pointer-events:auto}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}"};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,d=new o[1]([c]);function u(){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)}}))}const g=["Glasses","Shoes","Watches"],m=["Shoes"];const v="0.0.9-alpha.0";let w=`https://cdn.jsdelivr.net/npm/shopar-plugin@${v}/dist`;const y={update:e=>{null!=e&&(w=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>w};function b(e){return t(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const t=document.createElement("script");return t.setAttribute("src",e),t.setAttribute("crossorigin","anonymous"),new Promise((e=>{t.addEventListener("load",(()=>e()),!1),t.addEventListener("error",(()=>e()),!1),document.body.appendChild(t)}))}importScripts(e.toString())}))}let R;const E=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.warn('No <meta name="viewport"> detected; ShopAR will cap pixel density at 1.'),()=>e?window.devicePixelRatio:1})();let S,A,C;function T(e){const t=function(e){const t=new A.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,A.ClampToEdgeWrapping,A.ClampToEdgeWrapping,A.LinearFilter,A.LinearFilter,1,A.LinearEncoding);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(C.parse(e));return t.mapping=A.EquirectangularReflectionMapping,t.encoding=A.LinearEncoding,t}const I=45,P=45,L=3,x=1.5,k=1,M=.5;let $,U,D,_,N,j,O=!1;const q=0,G=2e3,W=.05,Q=1/(32*Math.PI);let F,V,H,B=!1,K=1,z=1,X=1;const Z=1;let Y;const J=new Map;function ee(e,n,o){const r=e.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,d,u,h,p,f=!1,g=!0,m=!1,v=!1,w=!1,y=0,b=0,R=1,E=1,k=1;const j={threeInit:()=>{f||(te(),i=new V.Scene,a=new V.PerspectiveCamera(25,1,.5),s=new F.OrbitControls(a,e),s.enableInteraction(),({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(I,P).rotateX(Math.PI/2),i=new $.MeshBasicMaterial({map:t.texture,opacity:M,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(-I/2,I/2,P/2,-P/2,0,L);function c(e){s.visible=!0,_.uniforms.tDiffuse.value=t.texture,_.uniforms.h.value=1*e/256,s.material=_,U.setRenderTarget(n),U.render(s,l),N.uniforms.tDiffuse.value=n.texture,N.uniforms.v.value=1*e/256,s.material=N,U.setRenderTarget(t),U.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=D;const o=U.getClearAlpha();U.setClearAlpha(0),U.setRenderTarget(t),U.render(e,l),e.overrideMaterial=null,c(x),c(.4*x),U.setRenderTarget(null),U.setClearAlpha(o),e.background=n}}}(i)),f=!0)},threeParse:(e,n,o)=>t(this,void 0,void 0,(function*(){return null!=d&&u===o||(yield d,d=(()=>t(this,void 0,void 0,(function*(){var t,o;return A=(t=F).THREE,C=new t.RGBELoader,i.environment=T(n),function(e,t){const{THREE:n}=t;S=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder("function"==typeof t.MeshoptDecoder?t.MeshoptDecoder():t.MeshoptDecoder)}(Y,F),o=e,S.parseAsync(o.buffer,"")})))(),u=o),d})),threeLoad:(e,t)=>{i.clear(),i.add(e.scene);const n=(new V.Box3).setFromObject(e.scene);l.position.y=n.min.y-q,i.add(l),c(),i.traverse((e=>{if(e instanceof V.Mesh){const t=e.material;t.depthWrite=!0,t instanceof V.MeshPhysicalMaterial&&t.transmissionMap&&(t.transmission=1,t.toneMapped=!1,t.fog=!1,t.needsUpdate=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(F.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,V.Vector3)),w=!0},threePaused:()=>g,threeResume:()=>{g=!1,Y.setAnimationLoop(ne),e.style.visibility="visible",y=0,b=0},threePause:()=>{g=!0,function(){for(const{threePaused:e}of J.values())if(!e())return!1;return!0}()&&Y.setAnimationLoop(null),e.style.visibility="hidden",n.style.visibility="hidden"},threeSetOnInteracted:e=>{s.removeEventListener("change",h),h=e,s.addEventListener("change",e)},preRender_:e=>{if(!f||g)return;e=performance.now();const t=0!==b?e-b:0;if(b=e,!s.update()){if(v)return;if(w)return void(w=!1);if(null==p&&(p=()=>{w||(v=!0,n.style.visibility="hidden",null!=p&&(s.removeEventListener("change",p),p=null))},s.addEventListener("change",p)),y+=t,!(y>G&&y<2*G))return o.style.opacity="0",void(y>2*G&&(y=0));{n.style.visibility="visible",o.style.opacity="1";const e=2*Math.PI/G*y,t=-Math.sin(e),r=Math.cos(e);o.style.transform=`translateX(${W*t*Math.min(R,E)}px)`,s.updateTheta(Q*r)}}m=!0},shouldRender_:()=>!(!f||g)&&m,render_:()=>{Y.setViewport(0,0,e.width,e.height),Y.render(i,a),m=!1,null!=r&&(r.clearRect(0,0,e.width,e.height),r.drawImage(H,0,z-e.height,e.width,e.height,0,0,e.width,e.height))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===R&&n===E&&X===k||(e.width=Math.ceil(t*X*Z),e.height=Math.ceil(n*X*Z),R=t,E=n,k=X,m=!0)},target_:e};return J.set(e,j),j}function te(){if(B)return;F=window.ShopAR__THREE,V=F.THREE,H=document.createElement("canvas");var e,t;H.style.position="block",Y=new V.WebGLRenderer({powerPreference:"high-performance",canvas:H,antialias:!0,alpha:!0}),Y.outputEncoding=V.sRGBEncoding,Y.toneMapping=V.ACESFilmicToneMapping,Y.setClearColor(new V.Color(16777215)),e=Y,t=F,O||($=t.THREE,U=e,D=new $.MeshDepthMaterial,D.userData.darkness={value:k},D.onBeforeCompile=e=>{e.uniforms.darkness=D.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},D.depthTest=!1,D.depthWrite=!1,_=new $.ShaderMaterial(t.HorizontalBlurShader),_.depthTest=!1,N=new $.ShaderMaterial(t.VerticalBlurShader),N.depthTest=!1,O=!0),oe(),B=!0}function ne(e){oe(),Y.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of J.values())t(e),n()&&o()}function oe(){let e=0,t=0;for(const{target_:n}of J.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=E();e=Math.ceil(e*n*Z),t=Math.ceil(t*n*Z),e===K&&t===z&&n===X||(K=e,z=t,X=n,Y.setSize(K,z,!1));for(const{updateSize_:e}of J.values())e()}const re={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},ie=Object.keys(re);function ae(e){return re[e]}function se(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}const le="shopar-error";function ce(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=se("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;return r.style.display="none",r}const de="shopar-control";const ue="shopar-deepar-output";function he(e){const t=document.createElement("div");t.className=e,t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",t}function pe(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function fe(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 ge(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 me="shopar-main";const ve="shopar-qr-output";const we="shopar-three-output";var ye;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(ye||(ye={}));let be=!1;function Re(){be||(!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.")}}(),be=!0)}function Ee(){Re();const e=function(){const e=document.createElement("div");e.id=me;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",e}(),t=function(){const e=new Image,t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),n=function(e){const t=document.createElement("div");t.id=ve;const n=t.style;n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.display="none";const o=document.createElement("div");o.className="shopar-qr";const r=o.style;r.position="relative",r.top="0",r.left="0",r.width="100%",r.height="100%",t.appendChild(o);const i=document.createElement("div");i.innerText="Scan on mobile or tablet to try on",i.style.textAlign="center",o.appendChild(i);const a=document.createElement("div");return a.appendChild(e),o.appendChild(a),t}(t);e.appendChild(n);const o=function(){const e=document.createElement("div");e.id=ue;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",e}();e.appendChild(o);const r=function(){const e=document.createElement("canvas");e.id=we;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",e}();e.appendChild(r);const i=function(){const e=se("2rem",`${y}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),a=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",n.pointerEvents="none",t.appendChild(e),t}(i);e.appendChild(a);const s=he("shopar-ar-loading-container"),l=pe("shopar-ar-loading-text",ae("loading.ar"));s.appendChild(l);const c=fe("shopar-ar-loading-bar-bg"),d=ge("shopar-ar-loading-bar-fg");c.appendChild(d),s.appendChild(c),e.appendChild(s);const u=he("shopar-3d-loading-container"),h=pe("shopar-3d-loading-text",ae("loading.3d"));u.appendChild(h);const p=fe("shopar-3d-loading-bar-bg"),f=ge("shopar-3d-loading-bar-fg");p.appendChild(f),u.appendChild(p),e.appendChild(u);const g=function(){const e=document.createElement("div");e.id=le;const t=e.style;t.position="absolute",t.width="100%",t.height="100%",t.display="none";const n=document.createElement("div"),o=n.style;o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",e.appendChild(n);const r=se("4rem",`${y}/img/icons/close.svg`);n.appendChild(r);const i=document.createElement("div");i.className="shopar-error-title",i.textContent="Camera Error",n.appendChild(i);const a=document.createElement("div");return a.className="shopar-error-body",a.textContent="Please refresh the page and allow the use of camera.",n.appendChild(a),e}();e.appendChild(g);const m=function(){const e=document.createElement("div");return e.id=de,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(m);const v=ce("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");m.appendChild(v);const w=ce("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${y}/img/icons/cube.svg`);m.appendChild(w);const b=ce("shopar-btn-close","Close","Close ShopAR view",`${y}/img/icons/close.svg`);m.append(b);let R,E=ye.None,S=!1,A=!1,C=!1,T=!1;function I(){d.classList.remove("active"),s.style.visibility="hidden"}function P(){f.classList.remove("active"),u.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return n},getQRImage:function(){return t},getDeepARTarget:function(){return o},getThreeTarget:function(){return r},getThreePrompt:function(){return a},getThreePromptImage:function(){return i},setVisibilityParameters:function(e,t,n,o,r){var i;S=e,A=t,C=n,T=o,R=r,Se(m,S),Se(v,S&&(C||A)&&E===ye.None),Se(w,S&&T&&E===ye.None),Se(b,S&&E!==ye.None),I(),P(),S||""===(i=g).style.display&&Se(i,!1)},getUIState:function(){return E},setUIState:function(e){E=e,E===ye.None?(I(),P(),S&&(Se(g,!1),Se(b,!1),(A||C)&&Se(v,!0),T&&Se(w,!0))):E!==ye.QR&&E!==ye.AR&&E!==ye.Preview||S&&(Se(g,!1),Se(v,!1),Se(w,!1),Se(b,!0))},setDefaultUIActions:function(e,t,n){S&&((A||C)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${y}/img/icons/${n}`;v.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(R),v.onclick=e),T&&(w.onclick=t),b.onclick=n)},startDeepARLoading:function(){d.classList.add("active"),s.style.visibility="visible"},stopDeepARLoading:I,startThreeLoading:function(){f.classList.add("active"),u.style.visibility="visible"},stopThreeLoading:P,showCameraError:function(){S&&Se(g,!0)}}}function Se(e,t){e.style.display=t?"":"none"}const Ae=new Map;function Ce(e){let n=Ae.get(e);return null==n?(n=function(){let e=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=Ee()),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 R;const t=`https://apps.deepar.ai/${v.includes("alpha")?"shopar-qr-alpha":"shopar-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=ee(e(),t(),n())}return r}}}(),Ae.set(e,n)):n.incrementSetupId_(),n}function Te(e){for(const t of Ae.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===ye.AR&&r(ye.None)}}let Ie;const Pe=new Uint8Array(16);function Le(){if(!Ie&&(Ie="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Ie))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Ie(Pe)}const xe=[];for(let e=0;e<256;++e)xe.push((e+256).toString(16).slice(1));var ke={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Me(e,t,n){if(ke.randomUUID&&!t&&!e)return ke.randomUUID();const o=(e=e||{}).random||(e.rng||Le)();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 xe[e[t+0]]+xe[e[t+1]]+xe[e[t+2]]+xe[e[t+3]]+"-"+xe[e[t+4]]+xe[e[t+5]]+"-"+xe[e[t+6]]+xe[e[t+7]]+"-"+xe[e[t+8]]+xe[e[t+9]]+"-"+xe[e[t+10]]+xe[e[t+11]]+xe[e[t+12]]+xe[e[t+13]]+xe[e[t+14]]+xe[e[t+15]]}(o)}const $e="qrLaunch",Ue="arLaunch",De="previewLaunch",_e="heartbeat";let Ne,je,Oe=!1;const qe=[];function Ge(e,t){const n=performance.now(),o=Me();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,d(_e,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const d=(r,i={})=>{var a;i=Object.assign(Object.assign({},i),{pluginVersion:v,sessionId:je,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),a=()=>{window.ShopAR__analytics.trackEventImpl(r,i)},Oe?a():qe.push(a)};return{trackEvent:d,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)}}}function We(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Qe(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 Fe=200,Ve=10;let He,Be,Ke,ze=!1;function Xe(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.")}}))}let Ze,Ye,Je,et,tt,nt,ot,rt,it=!0;function at(e){e!==Ke&&(Ke=e,Xe(e),nt=null,ze=!0)}function st(e,o){return t(this,void 0,void 0,(function*(){return Je=o,null==tt&&(tt=(()=>t(this,void 0,void 0,(function*(){if(null==(null===(r=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===r?void 0:r.getUserMedia))throw new n("No camera available!");var r;const i=ht(o),a=We(i),s=function(e){const t={Glasses:"rigidFaceTrackingInit",Shoes:"footInit",Watches:void 0};return null==e?void 0:t[e]}(o);Ze=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:e||"your_license_key_goes_here",previewElement:et,additionalOptions:{hint:s,cameraConfig:{disableDefaultCamera:!0}}}),Ye=yield Qe(a),yield pt(Ze,Ye,"user"===i),"Glasses"===o&&(yield Be,function(e,n){t(this,void 0,void 0,(function*(){ze=!1;const{ShopAR__TrueScale:o}=window;yield o.initialize(`${y}/wasm/mediapipe`,e);const r=[],i=setInterval((()=>t(this,void 0,void 0,(function*(){if(ze)return void clearInterval(i);const{error:e,faceWidth:t}=yield o.predict(performance.now());if(ze)return void clearInterval(i);if(null!=e)return void console.error(`TrueScale predict error: ${e}`);if(r.length<Ve)return void r.push(t);clearInterval(i);const a=137/(function(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}(r)+5);n.changeParameterVector("GLASSES","","scale",a,a,a,0),n.changeParameterVector("shopar_glasses","","scale",a,a,a,0)}))),Fe)}))}(Ye,Ze))})))()),tt}))}function lt(e){return t(this,void 0,void 0,(function*(){e!==et&&(et=e,null!=Ze&&Ze.changePreviewElement(et))}))}function ct(e){Ze.callbacks.onFaceTracked=t=>{t.some((e=>e.detected))&&e()},Ze.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&e()},Ze.callbacks.onWristTracked=t=>{t.detected&&e()}}function dt(e,n){return t(this,void 0,void 0,(function*(){return null!=nt&&ot===n||(yield nt,nt=Ze.switchEffect(e),ot=n),nt}))}function ut(){null!=Ze&&(it=!0,Ze.setPaused(it),null!=Ye&&null!=Ye.srcObject&&Ye.srcObject instanceof MediaStream&&(Ye.srcObject.getTracks().forEach((e=>e.stop())),Ye=null),Ze.stopCamera(),et.style.display="none")}function ht(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function pt(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 ft(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 u=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),g=window[`${h}${u+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],m=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield g(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new o[0](yield(yield m.blob().catch((()=>{throw new n("Unknown error.")}))).arrayBuffer().catch((()=>{throw new n("Unknown error.")})));i+=s;const w=v.byteLength;if(d[c]=Math.min(76,r)*((a>>5)-1),152===d[c]&&(d[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)d[c]^=d[i]<<13,d[c]^=d[i]>>17,d[c]^=d[i]<<5,v[e]=v[e]^d[c];return i^=d[0],i^=d[1],i^=d[2],v}))}function gt(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function mt(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}const vt=["AR","3D"];function wt(e){const{apiKey:t,sku:o,targetElement:r,initialState:i,baseUrl:a,defaultUI:s,strings:l}=e;gt(t,"apiKey"),mt(t,"apiKey"),gt(o,"sku"),mt(o,"sku"),gt(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",vt),null!=a&&mt(a,"baseUrl"),null!=s&&function(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}(s,"defaultUI"),null!=l&&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.`)}}(l,"strings",ie)}function yt(e){var o,r;return t(this,void 0,void 0,(function*(){wt(e);const{apiKey:i,sku:a,targetElement:s,initialState:l}=e;!function(e){const t=getComputedStyle(e);if(!["static","relative"].includes(t.position))throw new n(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${t.position}'.`)}(s),y.update(e.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(re,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(re[t]=n)}}(e.strings);const c=function(e,o){return t(this,void 0,void 0,(function*(){const r=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams({apiKey:e,sku:o,sid:u()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield r.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(i,a),d=Ce(s),{getSetupId:h,findUI:p,findQR:v,findThree:w}=d,E=h();null==Ne&&(je=Me(),Ne=b(`${y}/shopar-analytics.js`),Ne.then((()=>{Oe=!0,window.ShopAR__analytics.initializeImpl(),qe.forEach((e=>e()))})));const{trackEvent:S,arInteracted:A,previewInteracted:C}=Ge(a,i);S("setup",{hostname:window.location.hostname});const T=yield c;S("apiResponse",T);const{category:I,arUrl:P,arKey:L,previewUrl:x,previewEnvUrl:k}=T;bt(h(),E);const M=null!=P&&function(e){return null!=e&&g.includes(e)}(I),$=null==(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled),U=M&&function(e){return null!=e&&m.includes(e)}(I),D=$&&U&&!(yield function(){var e;return t(this,void 0,void 0,(function*(){return null==rt&&(rt=b(`${y}/shopar-platform.js`)),yield rt,["Android","iOS","Windows Phone",void 0].includes(null===(e=window.ShopAR__platform.platform.os)||void 0===e?void 0:e.family)}))}()),_=M&&!D,N=null!=x;if(bt(h(),E),D&&function(){t(this,void 0,void 0,(function*(){null==R&&(R=b(`${y}/shopar-qr.js`))}))}(),_&&(null==He&&(He=b(`${y}/shopar-deepar.js`)),at(P),"Glasses"===I&&null==Be&&(Be=b(`${y}/shopar-true-scale.js`))),N){null==j&&(j=b(`${y}/shopar-three.js`));const e=255;ft(x,(new Date).getTime()+e,Math.random()*e),Xe(null!=k?k:`${y}/env/default.hdr`)}const{setTargetElement:O,getDeepARTarget:q,setVisibilityParameters:G,getUIState:W,setUIState:Q,setDefaultUIActions:F,startDeepARLoading:V,stopDeepARLoading:H,startThreeLoading:B,stopThreeLoading:K,showCameraError:z}=p();O(s);G(null==e.defaultUI||e.defaultUI,D,_,N,I),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,(()=>{W()!==ye.QR||X()||Y(),W()!==ye.AR||it||ut(),W()!==ye.Preview||ne()||ie(),Q(ye.None)}));const{qrPaused:X,qrDraw:Z,qrPause:Y}=v(),{threeInit:J,threeParse:ee,threeLoad:te,threePaused:ne,threeResume:oe,threePause:ie,threeSetOnInteracted:ae}=w();let se=0;if(W()===ye.QR){if(!X())if(D){S($e);try{yield Z(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Y(),Q(ye.None)}else if(W()===ye.AR){if(!it)if(_){S(Ue);const e=yield Xe(P);bt(h(),E),Te(d),lt(q()),yield dt(e,P),ct(A),bt(h(),E)}else ut(),Q(ye.None)}else if(W()===ye.Preview&&!ne())if(N){S(De),B();const e=255,t=yield ft(x,(new Date).getTime()+e,Math.random()*e);bt(h(),E);const n=yield Xe(null!=k?k:`${y}/env/default.hdr`);bt(h(),E);const o=yield ee(t,n,`${x}${k}`);bt(h(),E),te(o,I),ae(C),K()}else ie(),Q(ye.None);const le=()=>t(this,void 0,void 0,(function*(){if(D){if(W()===ye.QR||W()===ye.AR)throw new n("AR already launched.");try{S($e);const e=++se;if(W()===ye.Preview&&N&&!ne()&&ie(),Q(ye.QR),yield Z(i,a),se!==e)return;return void bt(h(),E)}catch(e){const t=e instanceof Error;throw S("qrLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`QR failed: ${t?e.message:"Unknown error."}`)}}if(!_)throw new n("Model does not have AR enabled.");if(W()===ye.AR)throw new n("AR already launched.");try{S(Ue);const e=++se;W()===ye.Preview&&N&&!ne()&&ie(),Te(d),Q(ye.AR),V();const n=yield Xe(P);if(se!==e)return;if(bt(h(),E),yield He,se!==e)return;if(bt(h(),E),ut(),lt(q()),yield st(L,I),se!==e)return;if(bt(h(),E),yield dt(n,P),ct(A),se!==e)return;if(bt(h(),E),yield function(){return t(this,void 0,void 0,(function*(){if(null!=Ze){if(it=!1,null==Ye){const e=ht(Je),t=We(e);Ye=yield Qe(t),yield pt(Ze,Ye,"user"===e)}Ze.setPaused(it),et.style.display=""}}))}(),se!==e)return;bt(h(),E)}catch(e){const t=e instanceof Error;throw S("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),z(),ut(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{H()}})),ce=()=>t(this,void 0,void 0,(function*(){if(!N)throw new n("Model does not have 3D enabled.");if(W()===ye.Preview)throw new n("3D already launched.");try{S(De);const e=++se;W()===ye.AR&&(_&&!it&&ut(),Y()),Q(ye.Preview),B();const t=255,n=yield ft(x,(new Date).getTime()+t,Math.random()*t);if(se!==e)return;bt(h(),E);const o=yield Xe(null!=k?k:`${y}/env/default.hdr`);if(se!==e)return;if(bt(h(),E),yield j,se!==e)return;if(bt(h(),E),J(),se!==e)return;bt(h(),E);const r=yield ee(n,o,`${x}${k}`);if(se!==e)return;bt(h(),E),te(r,I),ae(C),oe()}catch(e){const t=e instanceof Error;throw S("previewLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`3D failed: ${t?e.message:"Unknown error."}`)}finally{K()}})),de=()=>t(this,void 0,void 0,(function*(){if(W()===ye.None)throw new n("Neither AR or 3D launched.");++se,W()===ye.QR||W()===ye.AR?(_&&!it&&ut(),Y()):W()===ye.Preview&&N&&!ne()&&ie(),Q(ye.None)}));return F(le,ce,de),"AR"===l?(yield le(),bt(h(),E)):"3D"===l&&(yield ce(),bt(h(),E)),{launchAR:M?le:void 0,launch3D:N?ce:void 0,closeAR:M?()=>t(this,void 0,void 0,(function*(){if(W()!==ye.AR&&W()!==ye.QR)throw new n("AR not launched.");++se,_&&!it&&ut(),Y(),Q(ye.None)})):void 0,close3D:N?()=>t(this,void 0,void 0,(function*(){if(W()!==ye.Preview)throw new n("3D not launched.");++se,N&&!ne()&&ie(),Q(ye.None)})):void 0,close:M||N?de:void 0}}))}function bt(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const Rt={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",(()=>yt(e)))}))},version:v};e.plugin=Rt}));
|
|
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;pointer-events:none}.shopar-btn{padding:.5rem .75rem;display:flex;justify-content:center;align-items:center;gap:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:9999px;cursor:pointer;pointer-events:auto}.shopar-btn:hover{background-color:#f5f5f5}.shopar-loading-container{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:1rem;background-color:#fff}.shopar-loading-text{text-align:center}.shopar-loading-bar-bg{width:80%;height:.5rem;background-color:#e5e7eb;border-radius:9999px}.shopar-loading-bar-fg{background-color:#1434f7;border-radius:9999px;transition:none;transform:translateX(-100%);will-change:transform}.shopar-loading-bar-fg.active{transition:transform 5s cubic-bezier(0,0,.2,1);transform:none}.shopar-qr{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}"};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,d=new o[1]([c]);function u(){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)}}))}const g=["Glasses","Shoes","Watches"],m=["Shoes"];const v="0.0.9";let w=`https://cdn.jsdelivr.net/npm/shopar-plugin@${v}/dist`;const y={update:e=>{null!=e&&(w=e.endsWith("/")?e.substring(0,e.length-1):e)},toString:()=>w};function b(e){return t(this,void 0,void 0,(function*(){if("function"!=typeof importScripts){const t=document.createElement("script");return t.setAttribute("src",e),t.setAttribute("crossorigin","anonymous"),new Promise((e=>{t.addEventListener("load",(()=>e()),!1),t.addEventListener("error",(()=>e()),!1),document.body.appendChild(t)}))}importScripts(e.toString())}))}let R;const E=(()=>{const e=(()=>{var e;if(null===(e=document.documentElement.getAttribute("itemtype"))||void 0===e?void 0:e.includes("schema.org/SearchResultsPage"))return!0;const t=null!=document.head?Array.from(document.head.querySelectorAll("meta")):[];for(const e of t)if("viewport"===e.name)return!0;return!1})();return e||console.warn('No <meta name="viewport"> detected; ShopAR will cap pixel density at 1.'),()=>e?window.devicePixelRatio:1})();let S,A,C;function T(e){const t=function(e){const t=new A.DataTexture(e.data,e.width,e.height,void 0,e.type,void 0,A.ClampToEdgeWrapping,A.ClampToEdgeWrapping,A.LinearFilter,A.LinearFilter,1,A.LinearEncoding);return t.flipY=!0,t.generateMipmaps=!1,t.needsUpdate=!0,t}(C.parse(e));return t.mapping=A.EquirectangularReflectionMapping,t.encoding=A.LinearEncoding,t}const I=45,P=45,L=3,x=1.5,k=1,M=.5;let $,U,D,_,N,j,O=!1;const q=0,G=300,W=2e3,Q=.05,F=1/(32*Math.PI);let V,H,B,K=!1,z=1,X=1,Z=1;const Y=1;let J;const ee=new Map;function te(e,n,o){const r=e.getContext("2d");null==r&&console.warn("2D context missing.");let i,a,s,l,c,d,u,h,p,f=!1,g=!0,m=!1,v=!1,w=!1,y=0,b=0,R=1,E=1,k=1;const j={threeInit:()=>{f||(ne(),i=new H.Scene,a=new H.PerspectiveCamera(25,1,.5),s=new V.OrbitControls(a,e),s.enableInteraction(),({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(I,P).rotateX(Math.PI/2),i=new $.MeshBasicMaterial({map:t.texture,opacity:M,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(-I/2,I/2,P/2,-P/2,0,L);function c(e){s.visible=!0,_.uniforms.tDiffuse.value=t.texture,_.uniforms.h.value=1*e/256,s.material=_,U.setRenderTarget(n),U.render(s,l),N.uniforms.tDiffuse.value=n.texture,N.uniforms.v.value=1*e/256,s.material=N,U.setRenderTarget(t),U.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=D;const o=U.getClearAlpha();U.setClearAlpha(0),U.setRenderTarget(t),U.render(e,l),e.overrideMaterial=null,c(x),c(.4*x),U.setRenderTarget(null),U.setClearAlpha(o),e.background=n}}}(i)),f=!0)},threeParse:(e,n,o)=>t(this,void 0,void 0,(function*(){return null!=d&&u===o||(yield d,d=(()=>t(this,void 0,void 0,(function*(){var t,o;return A=(t=V).THREE,C=new t.RGBELoader,i.environment=T(n),function(e,t){const{THREE:n}=t;S=(new t.GLTFLoader).setDRACOLoader((new t.DRACOLoader).setDecoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/draco/gltf/`)).setKTX2Loader((new t.KTX2Loader).setTranscoderPath(`https://cdn.jsdelivr.net/npm/three@0.${n.REVISION}.0/examples/jsm/libs/basis/`).detectSupport(e)).setMeshoptDecoder("function"==typeof t.MeshoptDecoder?t.MeshoptDecoder():t.MeshoptDecoder)}(J,V),o=e,S.parseAsync(o.buffer,"")})))(),u=o),d})),threeLoad:(e,t)=>{i.clear(),i.add(e.scene);const n=(new H.Box3).setFromObject(e.scene);l.position.y=n.min.y-q,i.add(l),c(),i.traverse((e=>{if(e instanceof H.Mesh){const t=e.material;t.depthWrite=!0,t instanceof H.MeshPhysicalMaterial&&t.transmissionMap&&(t.transmission=1,t.toneMapped=!1,t.fog=!1,t.needsUpdate=!0)}}));const o=n.min.clone().add(n.max).divideScalar(2),r=Math.sqrt(V.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,H.Vector3)),w=!0},threePaused:()=>g,threeResume:()=>{g=!1,J.setAnimationLoop(oe),e.style.visibility="visible",y=0,b=0},threePause:()=>{g=!0,function(){for(const{threePaused:e}of ee.values())if(!e())return!1;return!0}()&&J.setAnimationLoop(null),e.style.visibility="hidden",n.style.visibility="hidden"},threeSetOnInteracted:e=>{s.removeEventListener("change",h),h=e,s.addEventListener("change",e)},preRender_:e=>{if(!f||g)return;e=performance.now();const t=0!==b?e-b:0;if(b=e,!s.update()){if(v)return;if(w)return void(w=!1);if(null==p&&(p=()=>{w||(v=!0,n.style.visibility="hidden",null!=p&&(s.removeEventListener("change",p),p=null))},s.addEventListener("change",p)),y+=t,!(y>G&&y<=G+W))return o.style.opacity="0",void(y>G+2*W&&(y=0));{n.style.visibility="visible",o.style.opacity="1";const e=y-G,t=2*Math.PI/W*e,r=-Math.sin(t),i=Math.cos(t);o.style.transform=`translateX(${Q*r*Math.min(R,E)}px)`,s.updateTheta(F*i)}}m=!0},shouldRender_:()=>!(!f||g)&&m,render_:()=>{J.setViewport(0,0,e.width,e.height),J.render(i,a),m=!1,null!=r&&(r.clearRect(0,0,e.width,e.height),r.drawImage(B,0,X-e.height,e.width,e.height,0,0,e.width,e.height))},updateSize_:()=>{const{clientWidth:t,clientHeight:n}=e;t===R&&n===E&&Z===k||(e.width=Math.ceil(t*Z*Y),e.height=Math.ceil(n*Z*Y),R=t,E=n,k=Z,m=!0)},target_:e};return ee.set(e,j),j}function ne(){if(K)return;V=window.ShopAR__THREE,H=V.THREE,B=document.createElement("canvas");var e,t;B.style.position="block",J=new H.WebGLRenderer({powerPreference:"high-performance",canvas:B,antialias:!0,alpha:!0}),J.outputEncoding=H.sRGBEncoding,J.toneMapping=H.ACESFilmicToneMapping,J.setClearColor(new H.Color(16777215)),e=J,t=V,O||($=t.THREE,U=e,D=new $.MeshDepthMaterial,D.userData.darkness={value:k},D.onBeforeCompile=e=>{e.uniforms.darkness=D.userData.darkness;const t=e.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );");e.fragmentShader=`uniform float darkness;\n${t}`},D.depthTest=!1,D.depthWrite=!1,_=new $.ShaderMaterial(t.HorizontalBlurShader),_.depthTest=!1,N=new $.ShaderMaterial(t.VerticalBlurShader),N.depthTest=!1,O=!0),re(),K=!0}function oe(e){re(),J.clear();for(const{preRender_:t,shouldRender_:n,render_:o}of ee.values())t(e),n()&&o()}function re(){let e=0,t=0;for(const{target_:n}of ee.values()){const{clientWidth:o,clientHeight:r}=n;e=Math.max(e,o),t=Math.max(t,r)}const n=E();e=Math.ceil(e*n*Y),t=Math.ceil(t*n*Y),e===z&&t===X&&n===Z||(z=e,X=t,Z=n,J.setSize(z,X,!1));for(const{updateSize_:e}of ee.values())e()}const ie={"loading.ar":"Loading Try On...","loading.3d":"Loading 3D..."},ae=Object.keys(ie);function se(e){return ie[e]}function le(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}const ce="shopar-error";function de(e,t,n,o){const r=document.createElement("button");r.id=e,r.type="button",r.className="shopar-btn";{const e=le("1.75rem",o);r.appendChild(e)}{const e=document.createElement("span");e.textContent=t,r.appendChild(e)}r.ariaLabel=n;return r.style.display="none",r}const ue="shopar-control";const he="shopar-deepar-output";function pe(e){const t=document.createElement("div");t.className=e,t.classList.add("shopar-loading-container",e);const n=t.style;return n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",t}function fe(e,t){const n=document.createElement("div");return n.classList.add("shopar-loading-text",e),n.textContent=t,n.style.textAlign="center",n}function ge(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 me(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 ve="shopar-main";const we="shopar-qr-output";const ye="shopar-three-output";var be;!function(e){e[e.None=0]="None",e[e.QR=1]="QR",e[e.AR=2]="AR",e[e.Preview=3]="Preview"}(be||(be={}));let Re=!1;function Ee(){Re||(!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.")}}(),Re=!0)}function Se(){Ee();const e=function(){const e=document.createElement("div");e.id=ve;const t=e.style;return t.position="absolute",t.top="0",t.bottom="0",t.left="0",t.right="0",e}(),t=function(){const e=new Image,t=e.style;return t.maxWidth="100%",t.maxHeight="100%",e}(),n=function(e){const t=document.createElement("div");t.id=we;const n=t.style;n.position="absolute",n.top="0",n.left="0",n.width="100%",n.height="100%",n.display="none";const o=document.createElement("div");o.className="shopar-qr";const r=o.style;r.position="relative",r.top="0",r.left="0",r.width="100%",r.height="100%",t.appendChild(o);const i=document.createElement("div");i.innerText="Scan on mobile or tablet to try on",i.style.textAlign="center",o.appendChild(i);const a=document.createElement("div");return a.appendChild(e),o.appendChild(a),t}(t);e.appendChild(n);const o=function(){const e=document.createElement("div");e.id=he;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.display="none",e}();e.appendChild(o);const r=function(){const e=document.createElement("canvas");e.id=ye;const t=e.style;return t.position="absolute",t.top="0",t.left="0",t.width="100%",t.height="100%",t.visibility="hidden",e}();e.appendChild(r);const i=function(){const e=le("2rem",`${y}/img/prompt/3d-interaction.svg`),{style:t}=e;return t.transition="opacity 0.3s",t.opacity="0",e}(),a=function(e){const t=document.createElement("div"),{style:n}=t;return n.visibility="hidden",n.position="absolute",n.width="100%",n.height="100%",n.display="flex",n.justifyContent="center",n.alignItems="center",n.pointerEvents="none",t.appendChild(e),t}(i);e.appendChild(a);const s=pe("shopar-ar-loading-container"),l=fe("shopar-ar-loading-text",se("loading.ar"));s.appendChild(l);const c=ge("shopar-ar-loading-bar-bg"),d=me("shopar-ar-loading-bar-fg");c.appendChild(d),s.appendChild(c),e.appendChild(s);const u=pe("shopar-3d-loading-container"),h=fe("shopar-3d-loading-text",se("loading.3d"));u.appendChild(h);const p=ge("shopar-3d-loading-bar-bg"),f=me("shopar-3d-loading-bar-fg");p.appendChild(f),u.appendChild(p),e.appendChild(u);const g=function(){const e=document.createElement("div");e.id=ce;const t=e.style;t.position="absolute",t.width="100%",t.height="100%",t.display="none";const n=document.createElement("div"),o=n.style;o.position="absolute",o.width="100%",o.height="100%",o.backgroundColor="#ffffff",o.display="flex",o.flexDirection="column",o.justifyContent="center",o.alignItems="center",e.appendChild(n);const r=le("4rem",`${y}/img/icons/close.svg`);n.appendChild(r);const i=document.createElement("div");i.className="shopar-error-title",i.textContent="Camera Error",n.appendChild(i);const a=document.createElement("div");return a.className="shopar-error-body",a.textContent="Please refresh the page and allow the use of camera.",n.appendChild(a),e}();e.appendChild(g);const m=function(){const e=document.createElement("div");return e.id=ue,e.role="group",e.ariaLabel="Preview type chooser",e.className="shopar-btn-container",e.style.display="none",e}();e.appendChild(m);const v=de("shopar-btn-vto","Try-on","Launch ShopAR virtual try-on","data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22/%3E");m.appendChild(v);const w=de("shopar-btn-3d","3D","Launch ShopAR 3D preview",`${y}/img/icons/cube.svg`);m.appendChild(w);const b=de("shopar-btn-close","Close","Close ShopAR view",`${y}/img/icons/close.svg`);m.append(b);let R,E=be.None,S=!1,A=!1,C=!1,T=!1;function I(){d.classList.remove("active"),s.style.visibility="hidden"}function P(){f.classList.remove("active"),u.style.visibility="hidden"}return{setTargetElement:function(t){t.style.position="relative",t.appendChild(e)},getQRTarget:function(){return n},getQRImage:function(){return t},getDeepARTarget:function(){return o},getThreeTarget:function(){return r},getThreePrompt:function(){return a},getThreePromptImage:function(){return i},setVisibilityParameters:function(e,t,n,o,r){var i;S=e,A=t,C=n,T=o,R=r,Ae(m,S),Ae(v,S&&(C||A)&&E===be.None),Ae(w,S&&T&&E===be.None),Ae(b,S&&E!==be.None),I(),P(),S||""===(i=g).style.display&&Ae(i,!1)},getUIState:function(){return E},setUIState:function(e){E=e,E===be.None?(I(),P(),S&&(Ae(g,!1),Ae(b,!1),(A||C)&&Ae(v,!0),T&&Ae(w,!0))):E!==be.QR&&E!==be.AR&&E!==be.Preview||S&&(Ae(g,!1),Ae(v,!1),Ae(w,!1),Ae(b,!0))},setDefaultUIActions:function(e,t,n){S&&((A||C)&&(!function(e){const t={Glasses:"glasses.svg",Shoes:"shoe.svg",Watches:"watch.svg"},n=null!=e&&t[e]||t.Glasses,o=`${y}/img/icons/${n}`;v.firstChild.firstChild.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o)}(R),v.onclick=e),T&&(w.onclick=t),b.onclick=n)},startDeepARLoading:function(){d.classList.add("active"),s.style.visibility="visible"},stopDeepARLoading:I,startThreeLoading:function(){f.classList.add("active"),u.style.visibility="visible"},stopThreeLoading:P,showCameraError:function(){S&&Ae(g,!0)}}}function Ae(e,t){e.style.display=t?"":"none"}const Ce=new Map;function Te(e){let n=Ce.get(e);return null==n?(n=function(){let e=0,n=null,o=null,r=null;const i=()=>(null==n&&(n=Se()),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 R;const t=`https://apps.deepar.ai/${v.includes("alpha")?"shopar-qr-alpha":"shopar-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=te(e(),t(),n())}return r}}}(),Ce.set(e,n)):n.incrementSetupId_(),n}function Ie(e){for(const t of Ce.values()){if(t===e)continue;const n=t.getUI_();if(null==n)continue;const{getUIState:o,setUIState:r}=n;o()===be.AR&&r(be.None)}}let Pe;const Le=new Uint8Array(16);function xe(){if(!Pe&&(Pe="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Pe))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Pe(Le)}const ke=[];for(let e=0;e<256;++e)ke.push((e+256).toString(16).slice(1));var Me={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function $e(e,t,n){if(Me.randomUUID&&!t&&!e)return Me.randomUUID();const o=(e=e||{}).random||(e.rng||xe)();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 ke[e[t+0]]+ke[e[t+1]]+ke[e[t+2]]+ke[e[t+3]]+"-"+ke[e[t+4]]+ke[e[t+5]]+"-"+ke[e[t+6]]+ke[e[t+7]]+"-"+ke[e[t+8]]+ke[e[t+9]]+"-"+ke[e[t+10]]+ke[e[t+11]]+ke[e[t+12]]+ke[e[t+13]]+ke[e[t+14]]+ke[e[t+15]]}(o)}const Ue="qrLaunch",De="arLaunch",_e="previewLaunch",Ne="heartbeat";let je,Oe,qe=!1;const Ge=[];function We(e,t){const n=performance.now(),o=$e();let r=0,i=0,a=0,s=0,l=0,c=!1;window.setInterval((()=>{c&&(r=i+a,c=!1,d(Ne,{engagementTotal:r,engagementAR:i,engagement3D:a}))}),1e3);const d=(r,i={})=>{var a;i=Object.assign(Object.assign({},i),{pluginVersion:v,sessionId:Oe,setupId:o,timeSinceSetup:performance.now()-n,sku:e,apiKey:t}),a=()=>{window.ShopAR__analytics.trackEventImpl(r,i)},qe?a():Ge.push(a)};return{trackEvent:d,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)}}}function Qe(e){return navigator.mediaDevices.getUserMedia({video:{facingMode:e,frameRate:{ideal:30},width:{ideal:640},height:{ideal:360}}})}function Fe(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 Ve=200,He=10;let Be,Ke,ze,Xe=!1;function Ze(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.")}}))}let Ye,Je,et,tt,nt,ot,rt,it,at=!0;function st(e){e!==ze&&(ze=e,Ze(e),ot=null,Xe=!0)}function lt(e,o){return t(this,void 0,void 0,(function*(){return et=o,null==nt&&(nt=(()=>t(this,void 0,void 0,(function*(){if(null==(null===(r=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===r?void 0:r.getUserMedia))throw new n("No camera available!");var r;const i=pt(o),a=Qe(i),s=function(e){const t={Glasses:"rigidFaceTrackingInit",Shoes:"footInit",Watches:void 0};return null==e?void 0:t[e]}(o);Ye=yield window.ShopAR__DeepAR.deepar.initialize({licenseKey:e||"your_license_key_goes_here",previewElement:tt,additionalOptions:{hint:s,cameraConfig:{disableDefaultCamera:!0}}}),Je=yield Fe(a),yield ft(Ye,Je,"user"===i),"Glasses"===o&&(yield Ke,function(e,n){t(this,void 0,void 0,(function*(){Xe=!1;const{ShopAR__TrueScale:o}=window;yield o.initialize(`${y}/wasm/mediapipe`,e);const r=[],i=setInterval((()=>t(this,void 0,void 0,(function*(){if(Xe)return void clearInterval(i);const{error:e,faceWidth:t}=yield o.predict(performance.now());if(Xe)return void clearInterval(i);if(null!=e)return void console.error(`TrueScale predict error: ${e}`);if(r.length<He)return void r.push(t);clearInterval(i);const a=137/(function(e){let t=0;const n=e.length;for(let o=0;o<n;o++)t+=e[o];return t/n}(r)+5);n.changeParameterVector("GLASSES","","scale",a,a,a,0),n.changeParameterVector("shopar_glasses","","scale",a,a,a,0)}))),Ve)}))}(Je,Ye))})))()),nt}))}function ct(e){return t(this,void 0,void 0,(function*(){e!==tt&&(tt=e,null!=Ye&&Ye.changePreviewElement(tt))}))}function dt(e){Ye.callbacks.onFaceTracked=t=>{t.some((e=>e.detected))&&e()},Ye.callbacks.onFeetTracked=(t,n)=>{(t.detected||n.detected)&&e()},Ye.callbacks.onWristTracked=t=>{t.detected&&e()}}function ut(e,n){return t(this,void 0,void 0,(function*(){return null!=ot&&rt===n||(yield ot,ot=Ye.switchEffect(e),rt=n),ot}))}function ht(){null!=Ye&&(at=!0,Ye.setPaused(at),null!=Je&&null!=Je.srcObject&&Je.srcObject instanceof MediaStream&&(Je.srcObject.getTracks().forEach((e=>e.stop())),Je=null),Ye.stopCamera(),tt.style.display="none")}function pt(e){var t;return null==e?"user":null!==(t={Glasses:"user",Shoes:"environment",Watches:"environment"}[e])&&void 0!==t?t:"user"}function ft(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 gt(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 u=String.fromCharCode(a-3);a^=5;const h=String.fromCharCode(a-7);a^=2;const p=String.fromCharCode(a-7),g=window[`${h}${u+l+(typeof[])[(+!+[]+ +!+[])*(+!+[]+ +!+[])]}${p}`],m=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield g(`${e}`).catch((()=>{throw new n("Unknown error.")}));if(!t.ok)throw new n("Unknown error.");return t})))),v=new o[0](yield(yield m.blob().catch((()=>{throw new n("Unknown error.")}))).arrayBuffer().catch((()=>{throw new n("Unknown error.")})));i+=s;const w=v.byteLength;if(d[c]=Math.min(76,r)*((a>>5)-1),152===d[c]&&(d[c]=w),i==c)return v;i=c,i^=c;for(let e=0,t=v.length;e<t;e++)d[c]^=d[i]<<13,d[c]^=d[i]>>17,d[c]^=d[i]<<5,v[e]=v[e]^d[c];return i^=d[0],i^=d[1],i^=d[2],v}))}function mt(e,t){if(null==e)throw new n(`'${t}' not specified.`)}function vt(e,t){if("string"!=typeof e)throw new n(`'${t}' must be a string.`)}const wt=["AR","3D"];function yt(e){const{apiKey:t,sku:o,targetElement:r,initialState:i,baseUrl:a,defaultUI:s,strings:l}=e;mt(t,"apiKey"),vt(t,"apiKey"),mt(o,"sku"),vt(o,"sku"),mt(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",wt),null!=a&&vt(a,"baseUrl"),null!=s&&function(e,t){if("boolean"!=typeof e)throw new n(`'${t}' must be a boolean.`)}(s,"defaultUI"),null!=l&&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.`)}}(l,"strings",ae)}function bt(e){var o,r;return t(this,void 0,void 0,(function*(){yt(e);const{apiKey:i,sku:a,targetElement:s,initialState:l}=e;!function(e){const t=getComputedStyle(e);if(!["static","relative"].includes(t.position))throw new n(`Invalid targetElement's position. Expected 'static' or 'relative', but found '${t.position}'.`)}(s),y.update(e.baseUrl),function(e){if(null!=e)for(const t of Object.keys(e)){if(!Object.prototype.hasOwnProperty.call(ie,t)){console.warn(`String for key '${t}' will be ignored.`);continue}const n=e[t];null!=n&&(ie[t]=n)}}(e.strings);const c=function(e,o){return t(this,void 0,void 0,(function*(){const r=yield f((()=>t(this,void 0,void 0,(function*(){const t=yield fetch(`https://dashboard.shopar.ai/plugin?${new URLSearchParams({apiKey:e,sku:o,sid:u()})}`).catch((e=>{throw console.error(e),new n("API unavailable.")}));if(!t.ok)throw new n(`API call failed with status ${t.status}.`);return t}))));try{return yield r.json()}catch(e){throw console.error(e),new n("API returned invalid body.")}}))}(i,a),d=Te(s),{getSetupId:h,findUI:p,findQR:v,findThree:w}=d,E=h();null==je&&(Oe=$e(),je=b(`${y}/shopar-analytics.js`),je.then((()=>{qe=!0,window.ShopAR__analytics.initializeImpl(),Ge.forEach((e=>e()))})));const{trackEvent:S,arInteracted:A,previewInteracted:C}=We(a,i);S("setup",{hostname:window.location.hostname});const T=yield c;S("apiResponse",T);const{category:I,arUrl:P,arKey:L,previewUrl:x,previewEnvUrl:k}=T;Rt(h(),E);const M=null!=P&&function(e){return null!=e&&g.includes(e)}(I),$=null==(null===(o=e._internalOptions)||void 0===o?void 0:o.qrEnabled)||(null===(r=e._internalOptions)||void 0===r?void 0:r.qrEnabled),U=M&&function(e){return null!=e&&m.includes(e)}(I),D=$&&U&&!(yield function(){var e;return t(this,void 0,void 0,(function*(){return null==it&&(it=b(`${y}/shopar-platform.js`)),yield it,["Android","iOS","Windows Phone",void 0].includes(null===(e=window.ShopAR__platform.platform.os)||void 0===e?void 0:e.family)}))}()),_=M&&!D,N=null!=x;if(Rt(h(),E),D&&function(){t(this,void 0,void 0,(function*(){null==R&&(R=b(`${y}/shopar-qr.js`))}))}(),_&&(null==Be&&(Be=b(`${y}/shopar-deepar.js`)),st(P),"Glasses"===I&&null==Ke&&(Ke=b(`${y}/shopar-true-scale.js`))),N){null==j&&(j=b(`${y}/shopar-three.js`));const e=255;gt(x,(new Date).getTime()+e,Math.random()*e),Ze(null!=k?k:`${y}/env/default.hdr`)}const{setTargetElement:O,getDeepARTarget:q,setVisibilityParameters:G,getUIState:W,setUIState:Q,setDefaultUIActions:F,startDeepARLoading:V,stopDeepARLoading:H,startThreeLoading:B,stopThreeLoading:K,showCameraError:z}=p();O(s);G(null==e.defaultUI||e.defaultUI,D,_,N,I),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,(()=>{W()!==be.QR||X()||Y(),W()!==be.AR||at||ht(),W()!==be.Preview||ne()||re(),Q(be.None)}));const{qrPaused:X,qrDraw:Z,qrPause:Y}=v(),{threeInit:J,threeParse:ee,threeLoad:te,threePaused:ne,threeResume:oe,threePause:re,threeSetOnInteracted:ae}=w();let se=0;if(W()===be.QR){if(!X())if(D){S(Ue);try{yield Z(i,a)}catch(e){throw new n(`QR failed: ${e instanceof Error?e.message:"Unknown error."}`)}}else Y(),Q(be.None)}else if(W()===be.AR){if(!at)if(_){S(De);const e=yield Ze(P);Rt(h(),E),Ie(d),ct(q()),yield ut(e,P),dt(A),Rt(h(),E)}else ht(),Q(be.None)}else if(W()===be.Preview&&!ne())if(N){S(_e),B();const e=255,t=yield gt(x,(new Date).getTime()+e,Math.random()*e);Rt(h(),E);const n=yield Ze(null!=k?k:`${y}/env/default.hdr`);Rt(h(),E);const o=yield ee(t,n,`${x}${k}`);Rt(h(),E),te(o,I),ae(C),K()}else re(),Q(be.None);const le=()=>t(this,void 0,void 0,(function*(){if(D){if(W()===be.QR||W()===be.AR)throw new n("AR already launched.");try{S(Ue);const e=++se;if(W()===be.Preview&&N&&!ne()&&re(),Q(be.QR),yield Z(i,a),se!==e)return;return void Rt(h(),E)}catch(e){const t=e instanceof Error;throw S("qrLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`QR failed: ${t?e.message:"Unknown error."}`)}}if(!_)throw new n("Model does not have AR enabled.");if(W()===be.AR)throw new n("AR already launched.");try{S(De);const e=++se;W()===be.Preview&&N&&!ne()&&re(),Ie(d),Q(be.AR),V();const n=yield Ze(P);if(se!==e)return;if(Rt(h(),E),yield Be,se!==e)return;if(Rt(h(),E),ht(),ct(q()),yield lt(L,I),se!==e)return;if(Rt(h(),E),yield ut(n,P),dt(A),se!==e)return;if(Rt(h(),E),yield function(){return t(this,void 0,void 0,(function*(){if(null!=Ye){if(at=!1,null==Je){const e=pt(et),t=Qe(e);Je=yield Fe(t),yield ft(Ye,Je,"user"===e)}Ye.setPaused(at),tt.style.display=""}}))}(),se!==e)return;Rt(h(),E)}catch(e){const t=e instanceof Error;throw S("arLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),z(),ht(),new n(`AR failed: ${t?e.message:"Unknown error."}`)}finally{H()}})),ce=()=>t(this,void 0,void 0,(function*(){if(!N)throw new n("Model does not have 3D enabled.");if(W()===be.Preview)throw new n("3D already launched.");try{S(_e);const e=++se;W()===be.AR&&(_&&!at&&ht(),Y()),Q(be.Preview),B();const t=255,n=yield gt(x,(new Date).getTime()+t,Math.random()*t);if(se!==e)return;Rt(h(),E);const o=yield Ze(null!=k?k:`${y}/env/default.hdr`);if(se!==e)return;if(Rt(h(),E),yield j,se!==e)return;if(Rt(h(),E),J(),se!==e)return;Rt(h(),E);const r=yield ee(n,o,`${x}${k}`);if(se!==e)return;Rt(h(),E),te(r,I),ae(C),oe()}catch(e){const t=e instanceof Error;throw S("previewLaunchFailure",{errorName:t?e.name:"Unknown",errorMessage:t?e.message:""}),new n(`3D failed: ${t?e.message:"Unknown error."}`)}finally{K()}})),de=()=>t(this,void 0,void 0,(function*(){if(W()===be.None)throw new n("Neither AR or 3D launched.");++se,W()===be.QR||W()===be.AR?(_&&!at&&ht(),Y()):W()===be.Preview&&N&&!ne()&&re(),Q(be.None)}));return F(le,ce,de),"AR"===l?(yield le(),Rt(h(),E)):"3D"===l&&(yield ce(),Rt(h(),E)),{launchAR:M?le:void 0,launch3D:N?ce:void 0,closeAR:M?()=>t(this,void 0,void 0,(function*(){if(W()!==be.AR&&W()!==be.QR)throw new n("AR not launched.");++se,_&&!at&&ht(),Y(),Q(be.None)})):void 0,close3D:N?()=>t(this,void 0,void 0,(function*(){if(W()!==be.Preview)throw new n("3D not launched.");++se,N&&!ne()&&re(),Q(be.None)})):void 0,close:M||N?de:void 0}}))}function Rt(e,t){if(e!==t)throw new n("Setup cancelled. Please ensure that setup is only called once.")}const Et={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",(()=>bt(e)))}))},version:v};e.plugin=Et}));
|