UNPKG

@plattar/plattar-ar-adapter

Version:

Plattar AR Adapter for interfacing with Google & Apple WebAR

1 lines 332 kB
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.PlattarARAdapter=f()}})(function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r}()({1:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:true});exports.ConfiguratorAR=void 0;const plattar_analytics_1=require("@plattar/plattar-analytics");const plattar_api_1=require("@plattar/plattar-api");const util_1=require("../util/util");const quicklook_viewer_1=__importDefault(require("../viewers/quicklook-viewer"));const scene_viewer_1=__importDefault(require("../viewers/scene-viewer"));const launcher_ar_1=require("./launcher-ar");const version_1=__importDefault(require("../version"));class ConfiguratorAR extends launcher_ar_1.LauncherAR{constructor(options){super();this._analytics=null;if(!options.state){throw new Error("ConfiguratorAR.constructor(state) - state must be defined")}this._options=options;this._ar=null}_SetupAnalytics(){const scene=this._options.state.scene;let analytics=null;if(scene){analytics=new plattar_analytics_1.Analytics(scene.attributes.application_id);analytics.origin=plattar_api_1.Server.location().type;this._analytics=analytics;analytics.data.push("type","scene-ar");analytics.data.push("sdkVersion",version_1.default);analytics.data.push("sceneId",scene.id);analytics.data.push("sceneTitle",scene.attributes.title);const application=scene.relationships.find(plattar_api_1.Project);if(application){analytics.data.push("applicationId",application.id);analytics.data.push("applicationTitle",application.attributes.title);if(this._options.useARBanner){this.options.banner={title:application.attributes.title,subtitle:scene.attributes.title,button:"Visit"}}}}}async _Compose(output){const type=output==="glb"?"viewer":"reality";const url=`https://xrutils.plattar.com/v3/scene/${this._options.state.scene.id}/${type}`;try{const response=await fetch(url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({data:{attributes:this._options.state.state.sceneGraph}})});if(!response.ok){throw new Error(`ConfiguratorAR - Fetching Existing Graph Error - network response was not ok ${response.status}`)}const data=await response.json();return data.data.attributes.url}catch(error){throw new Error(`ConfiguratorAR - Fetching Existing Graph Error - there was a request error to ${url}, error was ${error.message}`)}}async init(){if(!util_1.Util.canAugment()){throw new Error("ConfiguratorAR.init() - cannot proceed as AR not available in context")}const scene=this._options.state.scene;this._SetupAnalytics();const sceneOpt=scene.attributes.custom_json||{};if(util_1.Util.isSafari()||util_1.Util.isChromeOnIOS()){if(sceneOpt.anchor==="face"){if(util_1.Util.canRealityViewer()){const modelUrl=await this._Compose("vto");this._ar=new quicklook_viewer_1.default;this._ar.modelUrl=modelUrl;this._ar.banner=this.options.banner;return this}else{throw new Error("ConfiguratorAR.init() - cannot proceed as VTO AR requires Reality Viewer support")}}if(util_1.Util.canQuicklook()){const modelUrl=await this._Compose("usdz");this._ar=new quicklook_viewer_1.default;this._ar.modelUrl=modelUrl;this._ar.banner=this.options.banner;return this}throw new Error("ConfiguratorAR.init() - cannot proceed as IOS device does not support AR Mode")}if(util_1.Util.canSceneViewer()){const modelUrl=await this._Compose("glb");const arviewer=new scene_viewer_1.default;arviewer.modelUrl=modelUrl;arviewer.isVertical=this.options.anchor==="vertical"?true:false;arviewer.banner=this.options.banner;if(sceneOpt.anchor==="vertical"){arviewer.isVertical=true}this._ar=arviewer;return this}throw new Error("ConfiguratorAR.init() - could not initialise AR correctly, check values")}start(){if(!this._ar){throw new Error("SceneAR.start() - cannot proceed as AR instance is null")}const analytics=this._analytics;if(analytics){analytics.data.push("device",this._ar.device);analytics.data.push("eventCategory",this._ar.nodeType);analytics.data.push("eventAction","Start Scene Augment");analytics.write();analytics.startRecordEngagement()}this._ar.start()}canQuicklook(){return this._ar&&this._ar.nodeType==="Quick Look"?true:false}canRealityViewer(){return this._ar&&this._ar.nodeType==="Reality Viewer"?true:false}canSceneViewer(){return this._ar&&this._ar.nodeType==="Scene Viewer"?true:false}}exports.ConfiguratorAR=ConfiguratorAR},{"../util/util":19,"../version":20,"../viewers/quicklook-viewer":22,"../viewers/scene-viewer":24,"./launcher-ar":2,"@plattar/plattar-analytics":44,"@plattar/plattar-api":48}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LauncherAR=void 0;class LauncherAR{constructor(){this._opt={anchor:"horizontal_vertical",banner:null}}async launch(){const value=await this.init();return value.start()}get options(){return this._opt}}exports.LauncherAR=LauncherAR},{}],3:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:true});exports.ModelAR=void 0;const plattar_api_1=require("@plattar/plattar-api");const plattar_analytics_1=require("@plattar/plattar-analytics");const util_1=require("../util/util");const quicklook_viewer_1=__importDefault(require("../viewers/quicklook-viewer"));const reality_viewer_1=__importDefault(require("../viewers/reality-viewer"));const scene_viewer_1=__importDefault(require("../viewers/scene-viewer"));const launcher_ar_1=require("./launcher-ar");const version_1=__importDefault(require("../version"));class ModelAR extends launcher_ar_1.LauncherAR{constructor(options){super();this._analytics=null;if(!options.modelID){throw new Error("ModelAR.constructor(modelID) - modelID must be defined")}this._options=options;this._ar=null}get modelID(){return this._options.modelID}_SetupAnalytics(model){let analytics=null;const project=model.relationships.find(plattar_api_1.Project);if(project){analytics=new plattar_analytics_1.Analytics(project.id);analytics.origin=plattar_api_1.Server.location().type;analytics.data.push("type","model-ar");analytics.data.push("sdkVersion",version_1.default);analytics.data.push("applicationId",project.id);analytics.data.push("applicationTitle",project.attributes.title);analytics.data.push("modelId",model.id);analytics.data.push("modelTitle",model.attributes.title);this._analytics=analytics;if(this._options.useARBanner){this.options.banner={title:project.attributes.title,subtitle:model.attributes.title,button:"Visit"}}}}init(){return new Promise((accept,reject)=>{if(!util_1.Util.canAugment()){return reject(new Error("ModelAR.init() - cannot proceed as AR not available in context"))}const model=new plattar_api_1.FileModel(this.modelID);model.include(plattar_api_1.Project);model.get().then(model=>{this._SetupAnalytics(model);if(util_1.Util.isSafari()||util_1.Util.isChromeOnIOS()){if(model.attributes.reality_filename&&util_1.Util.canRealityViewer()){this._ar=new reality_viewer_1.default;this._ar.modelUrl=plattar_api_1.Server.location().cdn+model.attributes.path+model.attributes.reality_filename;this._ar.banner=this.options.banner;return accept(this)}if(model.attributes.usdz_filename&&util_1.Util.canQuicklook()){this._ar=new quicklook_viewer_1.default;this._ar.modelUrl=plattar_api_1.Server.location().cdn+model.attributes.path+model.attributes.usdz_filename;this._ar.banner=this.options.banner;return accept(this)}return reject(new Error("ModelAR.init() - cannot proceed as ModelFile does not have a defined .usdz or .reality file"))}if(util_1.Util.canSceneViewer()){const arviewer=new scene_viewer_1.default;arviewer.modelUrl=plattar_api_1.Server.location().cdn+model.attributes.path+model.attributes.original_filename;arviewer.isVertical=this.options.anchor==="vertical"?true:false;arviewer.banner=this.options.banner;this._ar=arviewer;return accept(this)}return reject(new Error("ModelAR.init() - could not initialise AR correctly, check values"))}).catch(reject)})}start(){if(!this._ar){throw new Error("ModelAR.start() - cannot proceed as AR instance is null")}const analytics=this._analytics;if(analytics){analytics.data.push("device",this._ar.device);analytics.data.push("eventCategory",this._ar.nodeType);analytics.data.push("eventAction","Start Model Augment");analytics.write();analytics.startRecordEngagement()}this._ar.start()}canQuicklook(){return this._ar&&this._ar.nodeType==="Quick Look"?true:false}canRealityViewer(){return this._ar&&this._ar.nodeType==="Reality Viewer"?true:false}canSceneViewer(){return this._ar&&this._ar.nodeType==="Scene Viewer"?true:false}}exports.ModelAR=ModelAR},{"../util/util":19,"../version":20,"../viewers/quicklook-viewer":22,"../viewers/reality-viewer":23,"../viewers/scene-viewer":24,"./launcher-ar":2,"@plattar/plattar-analytics":44,"@plattar/plattar-api":48}],4:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:true});exports.ProductAR=void 0;const plattar_api_1=require("@plattar/plattar-api");const plattar_analytics_1=require("@plattar/plattar-analytics");const util_1=require("../util/util");const quicklook_viewer_1=__importDefault(require("../viewers/quicklook-viewer"));const reality_viewer_1=__importDefault(require("../viewers/reality-viewer"));const scene_viewer_1=__importDefault(require("../viewers/scene-viewer"));const launcher_ar_1=require("./launcher-ar");const version_1=__importDefault(require("../version"));class ProductAR extends launcher_ar_1.LauncherAR{constructor(options){super();this._analytics=null;if(!options.productID){throw new Error("ProductAR.constructor(productID, variationID) - productID must be defined")}this._options=options;this._ar=null}get productID(){return this._options.productID}get variationID(){return this._options.variationID}get variationSKU(){return this._options.variationSKU}_SetupAnalytics(product,variation){let analytics=null;const scene=product.relationships.find(plattar_api_1.Scene);if(scene){analytics=new plattar_analytics_1.Analytics(scene.attributes.application_id);analytics.origin=plattar_api_1.Server.location().type;this._analytics=analytics;analytics.data.push("type","product-ar");analytics.data.push("sdkVersion",version_1.default);analytics.data.push("sceneId",scene.id);analytics.data.push("sceneTitle",scene.attributes.title);const application=scene.relationships.find(plattar_api_1.Project);if(application){analytics.data.push("applicationId",application.id);analytics.data.push("applicationTitle",application.attributes.title);if(this._options.useARBanner){this.options.banner={title:product.attributes.title,subtitle:variation.attributes.title,button:"Visit"}}}}if(analytics){analytics.data.push("productId",product.id);analytics.data.push("productTitle",product.attributes.title);analytics.data.push("productSKU",product.attributes.sku);analytics.data.push("variationId",variation.id);analytics.data.push("variationTitle",variation.attributes.title);analytics.data.push("variationSKU",variation.attributes.sku)}}init(){return new Promise((accept,reject)=>{if(!util_1.Util.canAugment()){return reject(new Error("ProductAR.init() - cannot proceed as AR not available in context"))}const product=new plattar_api_1.Product(this.productID);product.include(plattar_api_1.ProductVariation);product.include(plattar_api_1.ProductVariation.include(plattar_api_1.FileModel));product.include(plattar_api_1.Scene);product.include(plattar_api_1.Scene.include(plattar_api_1.Project));product.get().then(product=>{const variationID=this.variationID?this.variationID==="default"?product.attributes.product_variation_id:this.variationID:null;const variationSKU=this.variationSKU;if(!variationID&&!variationSKU){return reject(new Error("ProductAR.init() - cannot proceed as variation-id or variation-sku was not set correctly"))}let variation=undefined;if(variationID){variation=product.relationships.find(plattar_api_1.ProductVariation,variationID)}if(!variation&&variationSKU){const variations=product.relationships.filter(plattar_api_1.ProductVariation);if(variations){variation=variations.find(element=>{return element.attributes.sku===variationSKU})}}if(!variation){return reject(new Error("ProductAR.init() - cannot proceed as variation with id "+variationID+" or sku "+variationSKU+" cannot be found"))}const modelID=variation.attributes.file_model_id;if(!modelID){return reject(new Error("ProductAR.init() - cannot proceed as variation does not have a defined file"))}const model=variation.relationships.find(plattar_api_1.FileModel,modelID);if(!model){return reject(new Error("ProductAR.init() - cannot proceed as ModelFile for selected variation is corrupt"))}this._SetupAnalytics(product,variation);if(util_1.Util.isSafari()||util_1.Util.isChromeOnIOS()){if(model.attributes.reality_filename&&util_1.Util.canRealityViewer()){this._ar=new reality_viewer_1.default;this._ar.modelUrl=plattar_api_1.Server.location().cdn+model.attributes.path+model.attributes.reality_filename;this._ar.banner=this.options.banner;return accept(this)}if(model.attributes.usdz_filename&&util_1.Util.canQuicklook()){this._ar=new quicklook_viewer_1.default;this._ar.modelUrl=plattar_api_1.Server.location().cdn+model.attributes.path+model.attributes.usdz_filename;this._ar.banner=this.options.banner;return accept(this)}return reject(new Error("ProductAR.init() - cannot proceed as ModelFile does not have a defined .usdz or .reality file"))}if(util_1.Util.canSceneViewer()){const arviewer=new scene_viewer_1.default;arviewer.modelUrl=plattar_api_1.Server.location().cdn+model.attributes.path+model.attributes.original_filename;arviewer.isVertical=this.options.anchor==="vertical"?true:false;arviewer.banner=this.options.banner;const scene=product.relationships.find(plattar_api_1.Scene);if(scene){const sceneOpt=scene.attributes.custom_json||{};if(sceneOpt.anchor==="vertical"){arviewer.isVertical=true}}this._ar=arviewer;return accept(this)}return reject(new Error("ProductAR.init() - could not initialise AR correctly, check values"))}).catch(reject)})}start(){if(!this._ar){throw new Error("ProductAR.start() - cannot proceed as AR instance is null")}const analytics=this._analytics;if(analytics){analytics.data.push("device",this._ar.device);analytics.data.push("eventCategory",this._ar.nodeType);analytics.data.push("eventAction","Start Augment");analytics.write();analytics.startRecordEngagement()}this._ar.start()}canQuicklook(){return this._ar&&this._ar.nodeType==="Quick Look"?true:false}canRealityViewer(){return this._ar&&this._ar.nodeType==="Reality Viewer"?true:false}canSceneViewer(){return this._ar&&this._ar.nodeType==="Scene Viewer"?true:false}}exports.ProductAR=ProductAR},{"../util/util":19,"../version":20,"../viewers/quicklook-viewer":22,"../viewers/reality-viewer":23,"../viewers/scene-viewer":24,"./launcher-ar":2,"@plattar/plattar-analytics":44,"@plattar/plattar-api":48}],5:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:true});exports.RawAR=void 0;const plattar_analytics_1=require("@plattar/plattar-analytics");const plattar_api_1=require("@plattar/plattar-api");const util_1=require("../util/util");const quicklook_viewer_1=__importDefault(require("../viewers/quicklook-viewer"));const reality_viewer_1=__importDefault(require("../viewers/reality-viewer"));const scene_viewer_1=__importDefault(require("../viewers/scene-viewer"));const launcher_ar_1=require("./launcher-ar");const version_1=__importDefault(require("../version"));class RawAR extends launcher_ar_1.LauncherAR{constructor(options){super();this._analytics=null;if(!options.modelLocation){throw new Error("RawAR.constructor(modelLocation) - modelLocation must be defined")}const lowerLoc=options.modelLocation.toLowerCase();if(lowerLoc.endsWith("usdz")||lowerLoc.endsWith("glb")||lowerLoc.endsWith("gltf")||lowerLoc.endsWith("reality")){this._options=options;this._ar=null}else{throw new Error("RawAR.constructor(modelLocation) - modelLocation must be one of gltf, glb, usdz or reality")}}get modelLocation(){return this._options.modelLocation}_SetupAnalytics(){return new Promise((accept,_reject)=>{const sceneID=this._options.sceneID;if(!sceneID){return accept()}const scene=new plattar_api_1.Scene(sceneID);scene.include(plattar_api_1.Project);scene.get().then(scene=>{const analytics=new plattar_analytics_1.Analytics(scene.attributes.application_id);analytics.origin=plattar_api_1.Server.location().type;this._analytics=analytics;analytics.data.push("type","scene-ar");analytics.data.push("sdkVersion",version_1.default);analytics.data.push("sceneId",scene.id);analytics.data.push("sceneTitle",scene.attributes.title);const application=scene.relationships.find(plattar_api_1.Project);if(application){analytics.data.push("applicationId",application.id);analytics.data.push("applicationTitle",application.attributes.title);if(this._options.useARBanner){this.options.banner={title:application.attributes.title,subtitle:scene.attributes.title,button:"Visit"}}}accept()}).catch(_err=>{accept()})})}init(){return new Promise((accept,reject)=>{if(!util_1.Util.canAugment()){return reject(new Error("RawAR.init() - cannot proceed as AR not available in context"))}this._SetupAnalytics().then(()=>{const modelLocation=this._options.modelLocation;const lowerLoc=modelLocation.toLowerCase();if(util_1.Util.isSafari()||util_1.Util.isChromeOnIOS()){if(lowerLoc.endsWith("reality")&&util_1.Util.canRealityViewer()){this._ar=new reality_viewer_1.default;this._ar.modelUrl=modelLocation;this._ar.banner=this.options.banner;return accept(this)}if(lowerLoc.endsWith("usdz")&&util_1.Util.canQuicklook()){this._ar=new quicklook_viewer_1.default;this._ar.modelUrl=modelLocation;return accept(this)}return reject(new Error("RawAR.init() - cannot proceed as model is not a .usdz or .reality file"))}if(util_1.Util.canSceneViewer()){if(lowerLoc.endsWith("glb")||lowerLoc.endsWith("gltf")){const arviewer=new scene_viewer_1.default;arviewer.modelUrl=modelLocation;arviewer.isVertical=this.options.anchor==="vertical"?true:false;arviewer.banner=this.options.banner;this._ar=arviewer;return accept(this)}return reject(new Error("RawAR.init() - cannot proceed as model is not a .glb or .gltf file"))}return reject(new Error("RawAR.init() - could not initialise AR correctly, check values"))})})}start(){if(!this._ar){throw new Error("RawAR.start() - cannot proceed as AR instance is null")}const analytics=this._analytics;if(analytics){analytics.data.push("device",this._ar.device);analytics.data.push("eventCategory",this._ar.nodeType);analytics.data.push("eventAction","Start Scene Augment");analytics.write();analytics.startRecordEngagement()}this._ar.start()}canQuicklook(){return this._ar&&this._ar.nodeType==="Quick Look"?true:false}canRealityViewer(){return this._ar&&this._ar.nodeType==="Reality Viewer"?true:false}canSceneViewer(){return this._ar&&this._ar.nodeType==="Scene Viewer"?true:false}}exports.RawAR=RawAR},{"../util/util":19,"../version":20,"../viewers/quicklook-viewer":22,"../viewers/reality-viewer":23,"../viewers/scene-viewer":24,"./launcher-ar":2,"@plattar/plattar-analytics":44,"@plattar/plattar-api":48}],6:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:true});exports.SceneAR=void 0;const plattar_analytics_1=require("@plattar/plattar-analytics");const plattar_api_1=require("@plattar/plattar-api");const plattar_services_1=require("@plattar/plattar-services");const util_1=require("../util/util");const quicklook_viewer_1=__importDefault(require("../viewers/quicklook-viewer"));const scene_viewer_1=__importDefault(require("../viewers/scene-viewer"));const launcher_ar_1=require("./launcher-ar");const version_1=__importDefault(require("../version"));class SceneAR extends launcher_ar_1.LauncherAR{constructor(options){super();this._analytics=null;if(!options.sceneID){throw new Error("SceneAR.constructor(sceneID) - sceneID must be defined")}this._options=options;this._ar=null}get sceneID(){return this._options.sceneID}_SetupAnalytics(scene){let analytics=null;if(scene){analytics=new plattar_analytics_1.Analytics(scene.attributes.application_id);analytics.origin=plattar_api_1.Server.location().type;this._analytics=analytics;analytics.data.push("type","scene-ar");analytics.data.push("sdkVersion",version_1.default);analytics.data.push("sceneId",scene.id);analytics.data.push("sceneTitle",scene.attributes.title);const application=scene.relationships.find(plattar_api_1.Project);if(application){analytics.data.push("applicationId",application.id);analytics.data.push("applicationTitle",application.attributes.title);if(this._options.useARBanner){this.options.banner={title:application.attributes.title,subtitle:scene.attributes.title,button:"Visit"}}}}}_ComposeScene(scene,output){return new Promise((accept,reject)=>{const sceneProducts=scene.relationships.filter(plattar_api_1.SceneProduct);const sceneModels=scene.relationships.filter(plattar_api_1.SceneModel);if(sceneProducts.length+sceneModels.length<=0){return reject(new Error("SceneAR.ComposeScene() - cannot proceed as scene does not contain AR components"))}const configurator=new plattar_services_1.Configurator;configurator.server=plattar_api_1.Server.location().type;configurator.output=output;let totalARObjectCount=0;sceneProducts.forEach(sceneProduct=>{const product=sceneProduct.relationships.find(plattar_api_1.Product);const selection=this._options.variationSelection;if(sceneProduct.attributes.include_in_augment){if(product&&product.id===selection.productID&&selection.variationID){configurator.addSceneProduct(sceneProduct.id,selection.variationID);totalARObjectCount++}else if(product){if(sceneProduct.id===selection.sceneProductID&&selection.variationID){configurator.addSceneProduct(sceneProduct.id,selection.variationID);totalARObjectCount++}else if(product.attributes.product_variation_id){configurator.addSceneProduct(sceneProduct.id,product.attributes.product_variation_id);totalARObjectCount++}}}});sceneModels.forEach(sceneModel=>{if(sceneModel.attributes.include_in_augment){configurator.addModel(sceneModel.id);totalARObjectCount++}});if(totalARObjectCount<=0){return reject(new Error("SceneAR.ComposeScene() - cannot proceed as scene does not contain any enabled AR components"))}return configurator.get().then(result=>{accept(result.filename)}).catch(reject)})}init(){return new Promise((accept,reject)=>{if(!util_1.Util.canAugment()){return reject(new Error("SceneAR.init() - cannot proceed as AR not available in context"))}const scene=new plattar_api_1.Scene(this.sceneID);scene.include(plattar_api_1.Project);scene.include(plattar_api_1.SceneProduct);scene.include(plattar_api_1.SceneProduct.include(plattar_api_1.Product));scene.include(plattar_api_1.SceneModel);scene.get().then(scene=>{this._SetupAnalytics(scene);const sceneOpt=scene.attributes.custom_json||{};if(util_1.Util.isSafari()||util_1.Util.isChromeOnIOS()){if(sceneOpt.anchor==="face"){if(util_1.Util.canRealityViewer()){return this._ComposeScene(scene,"vto").then(modelUrl=>{this._ar=new quicklook_viewer_1.default;this._ar.modelUrl=modelUrl;this._ar.banner=this.options.banner;return accept(this)}).catch(reject)}else{return reject(new Error("SceneAR.init() - cannot proceed as VTO AR requires Reality Viewer support"))}}if(util_1.Util.canQuicklook()){return this._ComposeScene(scene,"usdz").then(modelUrl=>{this._ar=new quicklook_viewer_1.default;this._ar.modelUrl=modelUrl;this._ar.banner=this.options.banner;return accept(this)}).catch(reject)}return reject(new Error("SceneAR.init() - cannot proceed as IOS device does not support AR Mode"))}if(util_1.Util.canSceneViewer()){return this._ComposeScene(scene,"glb").then(modelUrl=>{const arviewer=new scene_viewer_1.default;arviewer.modelUrl=modelUrl;arviewer.isVertical=this.options.anchor==="vertical"?true:false;arviewer.banner=this.options.banner;if(sceneOpt.anchor==="vertical"){arviewer.isVertical=true}this._ar=arviewer;return accept(this)}).catch(reject)}return reject(new Error("SceneAR.init() - could not initialise AR correctly, check values"))}).catch(reject)})}start(){if(!this._ar){throw new Error("SceneAR.start() - cannot proceed as AR instance is null")}const analytics=this._analytics;if(analytics){analytics.data.push("device",this._ar.device);analytics.data.push("eventCategory",this._ar.nodeType);analytics.data.push("eventAction","Start Scene Augment");analytics.write();analytics.startRecordEngagement()}this._ar.start()}canQuicklook(){return this._ar&&this._ar.nodeType==="Quick Look"?true:false}canRealityViewer(){return this._ar&&this._ar.nodeType==="Reality Viewer"?true:false}canSceneViewer(){return this._ar&&this._ar.nodeType==="Scene Viewer"?true:false}}exports.SceneAR=SceneAR},{"../util/util":19,"../version":20,"../viewers/quicklook-viewer":22,"../viewers/scene-viewer":24,"./launcher-ar":2,"@plattar/plattar-analytics":44,"@plattar/plattar-api":48,"@plattar/plattar-services":122}],7:[function(require,module,exports){"use strict";var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:true});exports.SceneGraphAR=void 0;const plattar_analytics_1=require("@plattar/plattar-analytics");const plattar_api_1=require("@plattar/plattar-api");const util_1=require("../util/util");const quicklook_viewer_1=__importDefault(require("../viewers/quicklook-viewer"));const scene_viewer_1=__importDefault(require("../viewers/scene-viewer"));const launcher_ar_1=require("./launcher-ar");const version_1=__importDefault(require("../version"));class SceneGraphAR extends launcher_ar_1.LauncherAR{constructor(options){super();this._analytics=null;this._options=options;this._ar=null}async _SetupAnalytics(){const scene=new plattar_api_1.Scene(this._options.sceneID);scene.include(plattar_api_1.Project);const fetchedScene=await scene.get();let analytics=null;analytics=new plattar_analytics_1.Analytics(fetchedScene.attributes.application_id);analytics.origin=plattar_api_1.Server.location().type;this._analytics=analytics;analytics.data.push("type","scene-graph-ar");analytics.data.push("sdkVersion",version_1.default);analytics.data.push("sceneId",fetchedScene.id);analytics.data.push("sceneTitle",fetchedScene.attributes.title);const application=fetchedScene.relationships.find(plattar_api_1.Project);if(application){analytics.data.push("applicationId",application.id);analytics.data.push("applicationTitle",application.attributes.title);if(this._options.useARBanner){this.options.banner={title:application.attributes.title,subtitle:fetchedScene.attributes.title,button:"Visit"}}}return fetchedScene}async _Compose(output){const type=output==="glb"?"viewer":"reality";const url=`https://xrutils.plattar.com/v3/scene/${this._options.sceneID}/${type}/${this._options.id}`;try{const response=await fetch(url,{method:"GET",headers:{"Content-Type":"application/json"}});if(!response.ok){throw new Error(`ARAdapter - Fetching Existing Graph Error - network response was not ok ${response.status}`)}const data=await response.json();return data.data.attributes.url}catch(error){throw new Error(`ARAdapter - Fetching Existing Graph Error - there was a request error to ${url}, error was ${error.message}`)}}async init(){if(!util_1.Util.canAugment()){throw new Error("SceneGraphAR.init() - cannot proceed as AR not available in context")}const scene=await this._SetupAnalytics();const sceneOpt=scene.attributes.custom_json||{};if(util_1.Util.isSafari()||util_1.Util.isChromeOnIOS()){if(sceneOpt.anchor==="face"){if(util_1.Util.canRealityViewer()){const modelUrl=await this._Compose("vto");this._ar=new quicklook_viewer_1.default;this._ar.modelUrl=modelUrl;this._ar.banner=this.options.banner;return this}else{throw new Error("SceneGraphAR.init() - cannot proceed as VTO AR requires Reality Viewer support")}}if(util_1.Util.canQuicklook()){const modelUrl=await this._Compose("usdz");this._ar=new quicklook_viewer_1.default;this._ar.modelUrl=modelUrl;this._ar.banner=this.options.banner;return this}throw new Error("SceneGraphAR.init() - cannot proceed as IOS device does not support AR Mode")}if(util_1.Util.canSceneViewer()){const modelUrl=await this._Compose("glb");const arviewer=new scene_viewer_1.default;arviewer.modelUrl=modelUrl;arviewer.isVertical=this.options.anchor==="vertical"?true:false;arviewer.banner=this.options.banner;if(sceneOpt.anchor==="vertical"){arviewer.isVertical=true}this._ar=arviewer;return this}throw new Error("SceneGraphAR.init() - could not initialise AR correctly, check values")}start(){if(!this._ar){throw new Error("SceneGraphAR.start() - cannot proceed as AR instance is null")}const analytics=this._analytics;if(analytics){analytics.data.push("device",this._ar.device);analytics.data.push("eventCategory",this._ar.nodeType);analytics.data.push("eventAction","Start Scene Augment");analytics.write();analytics.startRecordEngagement()}this._ar.start()}canQuicklook(){return this._ar&&this._ar.nodeType==="Quick Look"?true:false}canRealityViewer(){return this._ar&&this._ar.nodeType==="Reality Viewer"?true:false}canSceneViewer(){return this._ar&&this._ar.nodeType==="Scene Viewer"?true:false}}exports.SceneGraphAR=SceneGraphAR},{"../util/util":19,"../version":20,"../viewers/quicklook-viewer":22,"../viewers/scene-viewer":24,"./launcher-ar":2,"@plattar/plattar-analytics":44,"@plattar/plattar-api":48}],8:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.SceneProductAR=void 0;const product_ar_1=require("./product-ar");const plattar_api_1=require("@plattar/plattar-api");const util_1=require("../util/util");class SceneProductAR extends product_ar_1.ProductAR{constructor(options){super(options);this._attachedProductID=null;if(!options.productID){throw new Error("SceneProductAR.constructor(sceneProductID, variationID) - sceneProductID must be defined")}this._sceneProductID=options.productID}get sceneProductID(){return this._sceneProductID}get productID(){if(!this._attachedProductID){throw new Error("SceneProductAR.productID() - product id was not defined, did you call init()?")}return this._attachedProductID}init(){return new Promise((accept,reject)=>{if(!util_1.Util.canAugment()){return reject(new Error("SceneProductAR.init() - cannot proceed as AR not available in context"))}const sceneProduct=new plattar_api_1.SceneProduct(this.sceneProductID);sceneProduct.get().then(sceneProduct=>{const productID=sceneProduct.attributes.product_id;if(!productID){return reject("SceneProductAR.init() - Scene Product does not have an attached Product instance")}this._attachedProductID=productID;return super.init().then(accept).catch(reject)}).catch(reject)})}}exports.SceneProductAR=SceneProductAR},{"../util/util":19,"./product-ar":4,"@plattar/plattar-api":48}],9:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ConfiguratorController=void 0;const plattar_api_1=require("@plattar/plattar-api");const scene_product_ar_1=require("../../ar/scene-product-ar");const util_1=require("../../util/util");const plattar_controller_1=require("./plattar-controller");const configurator_ar_1=require("../../ar/configurator-ar");const scene_graph_ar_1=require("../../ar/scene-graph-ar");class ConfiguratorController extends plattar_controller_1.PlattarController{constructor(){super(...arguments);this._cachedConfigState=null}async getConfiguratorState(){if(this._cachedConfigState){return this._cachedConfigState}this._cachedConfigState=this.createConfiguratorState();return this._cachedConfigState}async onAttributesUpdated(attributeName){const state=this._state;if(state===plattar_controller_1.ControllerState.Renderer){const viewer=this.element;if(viewer){if(attributeName==="variation-id"){const variationIDs=this.getAttribute("variation-id");const variationIDsList=variationIDs?variationIDs.split(","):[];if(variationIDsList.length>0){await viewer.messenger.selectVariationID(variationIDsList)}}if(attributeName==="variation-sku"){const variationSKUs=this.getAttribute("variation-sku");const variationSKUList=variationSKUs?variationSKUs.split(","):[];if(variationSKUList.length>0){await viewer.messenger.selectVariationSKU(variationSKUList)}}}return}if(state===plattar_controller_1.ControllerState.QRCode){if(attributeName==="variation-id"){const configState=await this.getConfiguratorState();const variationIDs=this.getAttribute("variation-id");const variationIDsList=variationIDs?variationIDs.split(","):[];variationIDsList.forEach(variationID=>{configState.state.setVariationID(variationID)})}if(attributeName==="variation-sku"){const configState=await this.getConfiguratorState();const variationSKUs=this.getAttribute("variation-sku");const variationSKUList=variationSKUs?variationSKUs.split(","):[];variationSKUList.forEach(variationSKU=>{configState.state.setVariationSKU(variationSKU)})}this.startQRCode(this._prevQROpt);return}}async startARQRCode(options){try{const dState=await this.getConfiguratorState();const product=dState.state.firstOfType("product");if(product){this.parent.lockObserver();this.parent.destroy();this.setAttribute("product-id",product.scene_product_id);this.removeAttribute("scene-id");this.parent.unlockObserver();const controller=this.parent.create();if(controller){return controller.startARQRCode(options)}return Promise.reject(new Error("ConfiguratorController.startARQRCode() - legacy product transition failed"))}}catch(_err){}return super.startARQRCode(options)}async startViewerQRCode(options){const opt=this._GetDefaultQROptions(options);if(!opt.detached){this.removeRenderer()}const sceneID=this.getAttribute("scene-id");if(!sceneID){throw new Error("ConfiguratorController.startViewerQRCode() - minimum required attributes not set, use scene-id as a minimum")}let configState=null;try{const dState=await this.getConfiguratorState();const product=dState.state.firstOfType("product");if(product){this.parent.lockObserver();this.parent.destroy();this.setAttribute("product-id",product.scene_product_id);this.removeAttribute("scene-id");this.parent.unlockObserver();const controller=this.parent.create();if(controller){return controller.startViewerQRCode(options)}return Promise.reject(new Error("ConfiguratorController.startViewerQRCode() - legacy product transition failed"))}configState=dState.state.encode()}catch(_err){configState=null}const viewer=document.createElement("plattar-qrcode");if(!opt.detached){this._element=viewer}const width=this.getAttribute("width")||"500px";const height=this.getAttribute("height")||"500px";viewer.setAttribute("width",width);viewer.setAttribute("height",height);if(opt.color){viewer.setAttribute("color",opt.color)}if(opt.margin){viewer.setAttribute("margin",""+opt.margin)}if(opt.qrType){viewer.setAttribute("qr-type",opt.qrType)}viewer.setAttribute("shorten",opt.shorten&&(opt.shorten===true||opt.shorten==="true")?"true":"false");let dst=plattar_api_1.Server.location().base+"renderer/configurator.html?scene_id="+sceneID;const showAR=this.getAttribute("show-ar");const showUI=this.getAttribute("show-ui");const showBanner=this.getAttribute("show-ar-banner");const sceneGraphID=this.getAttribute("scene-graph-id");if(showUI&&showUI==="true"){dst=plattar_api_1.Server.location().base+"configurator/dist/index.html?scene_id="+sceneID}if(configState){dst+="&config_state="+configState}if(showAR){dst+="&show_ar="+showAR}if(showBanner){dst+="&show_ar_banner="+showBanner}if(sceneGraphID){dst+="&scene_graph_id="+sceneGraphID}viewer.setAttribute("url",opt.url||dst);this._prevQROpt=opt;if(!opt.detached){this._state=plattar_controller_1.ControllerState.QRCode;return new Promise((accept,reject)=>{viewer.onload=()=>{return accept(viewer)};this.append(viewer)})}return new Promise((accept,reject)=>{return accept(viewer)})}async startRenderer(){this.removeRenderer();const sceneID=this.getAttribute("scene-id");if(!sceneID){throw new Error("ConfiguratorController.startRenderer() - minimum required attributes not set, use scene-id as a minimum")}let configState=null;this._state=plattar_controller_1.ControllerState.Renderer;try{const dState=await this.getConfiguratorState();const product=dState.state.firstOfType("product");if(product){this.parent.lockObserver();this.parent.destroy();this.setAttribute("product-id",product.scene_product_id);this.removeAttribute("scene-id");this.parent.unlockObserver();const controller=this.parent.create();if(controller){return controller.startRenderer()}return Promise.reject(new Error("ConfiguratorController.startRenderer() - legacy product transition failed"))}configState=dState}catch(_err){configState=null}const width=this.getAttribute("width")||"500px";const height=this.getAttribute("height")||"500px";const server=this.getAttribute("server")||"production";const viewer=document.createElement("plattar-configurator");this._element=viewer;viewer.setAttribute("width",width);viewer.setAttribute("height",height);viewer.setAttribute("server",server);viewer.setAttribute("scene-id",sceneID);const showAR=this.getAttribute("show-ar");const showUI=this.getAttribute("show-ui");if(configState){const encodedState=configState.state.encode();if(encodedState.length<6e3){viewer.setAttribute("config-state",encodedState)}}if(showAR){viewer.setAttribute("show-ar",showAR)}if(showUI){viewer.setAttribute("show-ui",showUI)}return new Promise((accept,reject)=>{this.append(viewer);if(configState){this.setupMessengerObservers(viewer,configState)}return accept(viewer)})}async initAR(){if(!util_1.Util.canAugment()){throw new Error("ConfiguratorController.initAR() - cannot proceed as AR not available in context")}try{const dState=await this.getConfiguratorState();const product=dState.state.firstOfType("product");if(product){this.parent.lockObserver();this.parent.destroy();this.setAttribute("product-id",product.scene_product_id);this.removeAttribute("scene-id");this.parent.unlockObserver();const controller=this.parent.create();if(controller){return controller.initAR()}return Promise.reject(new Error("ConfiguratorController.initAR() - legacy product transition failed"))}}catch(_err){}const arMode=this.getAttribute("ar-mode")||"generated";switch(arMode.toLowerCase()){case"inherited":return this._InitARInherited();case"generated":default:return this._InitARGenerated()}}async _InitARInherited(){const sceneID=this.getAttribute("scene-id");if(!sceneID){throw new Error("ConfiguratorController.initAR() - inherited AR minimum required attributes not set, use scene-id as a minimum")}const state=(await this.getConfiguratorState()).state;const first=state.firstActiveOfType("sceneproduct");if(first){const sceneProductAR=new scene_product_ar_1.SceneProductAR({productID:first.scene_product_id,variationID:first.product_variation_id,variationSKU:null,useARBanner:this.getBooleanAttribute("show-ar-banner")});return sceneProductAR.init()}throw new Error("ConfiguratorController.initAR() - invalid decoded config-state does not have any product states")}async _InitARGenerated(){const sceneID=this.getAttribute("scene-id");if(!sceneID){throw new Error("VTOController.initAR() - generated AR minimum required attributes not set, use scene-id as a minimum")}const graphID=this.getAttribute("scene-graph-id");if(graphID){const configAR=new scene_graph_ar_1.SceneGraphAR({useARBanner:this.getBooleanAttribute("show-ar-banner"),id:graphID,sceneID:sceneID});return configAR.init()}const configAR=new configurator_ar_1.ConfiguratorAR({state:await this.getConfiguratorState(),useARBanner:this.getBooleanAttribute("show-ar-banner")});return configAR.init()}get element(){return this._element}}exports.ConfiguratorController=ConfiguratorController},{"../../ar/configurator-ar":1,"../../ar/scene-graph-ar":7,"../../ar/scene-product-ar":8,"../../util/util":19,"./plattar-controller":12,"@plattar/plattar-api":48}],10:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.GalleryController=void 0;const plattar_api_1=require("@plattar/plattar-api");const plattar_controller_1=require("./plattar-controller");class GalleryController extends plattar_controller_1.PlattarController{constructor(){super(...arguments);this._cachedConfigState=null}async getConfiguratorState(){if(this._cachedConfigState){return this._cachedConfigState}this._cachedConfigState=this.createConfiguratorState();return this._cachedConfigState}async onAttributesUpdated(attributeName){const state=this._state;if(state===plattar_controller_1.ControllerState.QRCode){if(attributeName==="variation-id"){const configState=await this.getConfiguratorState();const variationIDs=this.getAttribute("variation-id");const variationIDsList=variationIDs?variationIDs.split(","):[];variationIDsList.forEach(variationID=>{configState.state.setVariationID(variationID)})}if(attributeName==="variation-sku"){const configState=await this.getConfiguratorState();const variationSKUs=this.getAttribute("variation-sku");const variationSKUList=variationSKUs?variationSKUs.split(","):[];variationSKUList.forEach(variationSKU=>{configState.state.setVariationSKU(variationSKU)})}this.startQRCode(this._prevQROpt);return}}async startViewerQRCode(options){const opt=this._GetDefaultQROptions(options);if(!opt.detached){this.removeRenderer()}const sceneID=this.getAttribute("scene-id");if(!sceneID){throw new Error("GalleryController.startViewerQRCode() - minimum required attributes not set, use scene-id as a minimum")}const viewer=document.createElement("plattar-qrcode");if(!opt.detached){this._element=viewer}const width=this.getAttribute("width")||"500px";const height=this.getAttribute("height")||"500px";viewer.setAttribute("width",width);viewer.setAttribute("height",height);if(opt.color){viewer.setAttribute("color",opt.color)}if(opt.margin){viewer.setAttribute("margin",""+opt.margin)}if(opt.qrType){viewer.setAttribute("qr-type",opt.qrType)}viewer.setAttribute("shorten",opt.shorten&&(opt.shorten===true||opt.shorten==="true")?"true":"false");const dst=plattar_api_1.Server.location().base+"renderer/gallery.html?scene_id="+sceneID;viewer.setAttribute("url",opt.url||dst);this._prevQROpt=opt;if(!opt.detached){this._state=plattar_controller_1.ControllerState.QRCode;return new Promise((accept,reject)=>{viewer.onload=()=>{return accept(viewer)};this.append(viewer)})}return new Promise((accept,reject)=>{return accept(viewer)})}async startRenderer(){this.removeRenderer();const sceneID=this.getAttribute("scene-id");if(!sceneID){throw new Error("GalleryController.startRenderer() - minimum required attributes not set, use scene-id as a minimum")}this._state=plattar_controller_1.ControllerState.Renderer;const width=this.getAttribute("width")||"500px";const height=this.getAttribute("height")||"500px";const server=this.getAttribute("server")||"production";const viewer=document.createElement("plattar-gallery");this._element=viewer;viewer.setAttribute("width",width);viewer.setAttribute("height",height);viewer.setAttribute("server",server);viewer.setAttribute("scene-id",sceneID);return new Promise((accept,reject)=>{this.append(viewer);return accept(viewer)})}async initAR(){throw new Error("GalleryController.initAR() - cannot proceed as AR not available in gallery context")}get element(){return this._element}}exports.GalleryController=GalleryController},{"./plattar-controller":12,"@plattar/plattar-api":48}],11:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LauncherController=void 0;const scene_product_ar_1=require("../../ar/scene-product-ar");const util_1=require("../../util/util");const plattar_controller_1=require("./plattar-controller");const configurator_ar_1=require("../../ar/configurator-ar");const scene_graph_ar_1=require("../../ar/scene-graph-ar");class LauncherController extends plattar_controller_1.PlattarController{constructor(){super(...arguments);this._cachedConfigState=null}async getConfiguratorState(){if(this._cachedConfigState){return this._cachedConfigState}this._cachedConfigState=this.createConfiguratorState();return this._cachedConfigState}async onAttributesUpdated(attributeName){const state=this._state;if(attributeName==="variation-id"){const configState=await this.getConfiguratorState();const variationIDs=this.getAttribute("variation-id");const variationIDsList=variationIDs?variationIDs.split(","):[];variationIDsList.forEach(variationID=>{configState.state.setVariationID(variationID)})}if(attributeName==="variation-sku"){const configState=await this.getConfiguratorState();const variationSKUs=this.getAttribute("variation-sku");const variationSKUList=variationSKUs?variationSKUs.split(","):[];variationSKUList.forEach(variationSKU=>{configState.state.setVariationSKU(variationSKU)})}if(state===plattar_controller_1.ControllerState.QRCode){this.startQRCode(this._prevQROpt);return}}async startARQRCode(options){try{const dState=await this.getConfiguratorState();const product=dState.state.firstOfType("product");if(product){this.parent.lockObserver();this.parent.destroy();this.setAttribute("product-id",product.scene_product_id);this.removeAttribute("scene-id");this.parent.unlockObserver();const controller=this.parent.create();if(controller){return controller.startARQRCode(options)}return Promise.reject(new Error("LauncherController.startARQRCode() - legacy product transition failed"))}}catch(_err){}return super.startARQRCode(options)}async startViewerQRCode(options){return this.startARQRCode(options)}async startRenderer(){this.removeRenderer();const sceneID=this.getAttribute("scene-id");if(!sceneID){throw new Error("LauncherController.startRenderer() - minimum required attributes not set, use scene-id as a minimum")}const configState=await this.getConfiguratorState();this._state=plattar_controller_1.ControllerState.Renderer;const qrOptions=btoa(JSON.stringify(this._GetDefaultQROptions()));const embedType=this.getAttribute("embed-type");const productID=this.getAttribute("product-id");const sceneProductID=this.getAttribute("scene-product-id");const variationID=this.getAttribute("variation-id");const variationSKU=this.getAttribute("variation-sku");const arMode=this.getAttribute("ar-mode");const showBanner=this.getAttribute("show-ar-banner");const sceneGraphID=this.getAttribute("scene-graph-id");const width=this.getAttribute("width")||"500px";const height=this.getAttribute("height")||"500px";const server=this.getAttribute("server")||"production";const viewer=document.createElement("plattar-launcher");this._element=viewer;viewer.setAttribute("width",width);viewer.setAttribute("height",height);viewer.setAttribute("server",server);viewer.setAttribute("scene-id",sceneID);viewer.setAttribute("qr-options",qrOptions);if(embedType){viewer.setAttribute("embed-type",embedType)}if(productID){viewer.setAttribute("product-id",productID)}if(sceneProductID){viewer.setAttribute("scene-product-id",sceneProductID)}if(variationID){viewer.setAttribute("variation-id",variationID)}if(variationSKU){viewer.setAttribute("variation-sku",variationSKU)}if(arMode){viewer.setAttribute("ar-mode",arMode)}if(showBanner){viewer.setAttribute("show-ar-banner",showBanner)}if(sceneGraphID){viewer.setAttribute("scene-graph-id",sceneGraphID)}else{try{const sceneGraphID=await(await this.getConfiguratorState()).state.encodeSceneGraphID();viewer.setAttribute("scene-graph-id",sceneGraphID)}catch(_err){console.error(_err)}}return new Promise((accept,reject)=>{this.append(viewer);if(configState){this.setupMessengerObservers(viewer,configState)}return accept(viewer)})}async initAR(){if(!util_1.Util.canAugment()){throw new Error("LauncherController.initAR() - cannot proceed as AR not available in context")}try{const dState=await this.getConfiguratorState();const product=dState.state.firstOfType("product");if(product){this.parent.lockObserver();this.parent.destroy();this.setAttribute("product-id",product.scene_product_id);this.removeAttribute("scene-id");this.parent.unlockObserver();const controller=this.parent.create();if(controller){return controller.initAR()}return Promise.reject(new Error("LauncherController.initAR() - legacy product transition failed"))}}catch(_err){}const arMode=this.getAttribute("ar-mode")||"generated";switch(arMode.toLowerCase()){case"inherited":return this._InitARInherited();case"generated":default:return this._InitARGenerated()}}async _InitARInherited(){const sceneID=this.getAttribute("scene-id");if(!sceneID){throw new Error("LauncherController.initAR() - inherited AR minimum required attributes not set, use scene-id as a minimum")}const state=(await this.getConfiguratorState()).state;const first=state.firstActiveOfType("sceneproduct");if(first){const sceneProductAR=new scene_product_ar_1.SceneProductAR({productID:first.scene_product_id,variationID:first.product_variation_id,variationSKU:null,useARBanner:this.getBooleanAttribute("show-ar-banner")});return sceneProductAR.init()}throw new Error("LauncherController.initAR() - invali