UNPKG

@plattar/plattar-web

Version:

Module for interfacing with the Plattar Embeds and Web Viewers (https://www.plattar.com)

1,248 lines (1,232 loc) 95.8 kB
"use strict"; function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; } function _get() { return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) { var p = _superPropBase(e, t); if (p) { var n = Object.getOwnPropertyDescriptor(p, t); return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value; } }, _get.apply(null, arguments); } function _superPropBase(t, o) { for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t));); return t; } function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _wrapNativeSuper(t) { var r = "function" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); } function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; } function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); } function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); } function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); } function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } (function (f) { if ((typeof exports === "undefined" ? "undefined" : _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.PlattarWeb = 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) { var BaseElement = require("./base/base-element.js"); var AdhocElement = /*#__PURE__*/function (_BaseElement) { function AdhocElement() { _classCallCheck(this, AdhocElement); return _callSuper(this, AdhocElement); } _inherits(AdhocElement, _BaseElement); return _createClass(AdhocElement, [{ key: "permissions", get: function get() { return ["autoplay"]; } }, { key: "elementType", get: function get() { return "adhoc"; } }, { key: "elementFullLocation", get: function get() { if (this.hasAttribute("type")) { var type = this.getAttribute("type"); var server = this.hasAttribute("server") ? this.getAttribute("server") : "production"; switch (server) { case "production": return "https://renderer.plattar.com/".concat(type, ".html").concat(this.allMappedAttributesQuery); case "staging": return "https://renderer-staging.plattar.com/".concat(type, ".html").concat(this.allMappedAttributesQuery); case "review": return "https://renderer-review.plattar.com/".concat(type, ".html").concat(this.allMappedAttributesQuery); case "dev": return "https://localhost/renderer/".concat(type, ".html").concat(this.allMappedAttributesQuery); default: throw new Error("AdhocElement.elementFullLocation - attribute \"server\" must be one of \"production\", \"staging\", \"review\" or \"dev\" but was \"".concat(server, "\"")); } } throw new Error("AdhocElement.elementFullLocation - attribute \"type\" is required"); } }, { key: "optionalAttributes", get: function get() { if (this.hasAttribute("properties")) { var properties = this.getAttribute("properties"); if (properties) { var splitProperties = properties.split(","); var props = []; splitProperties.forEach(function (prop) { props.push({ key: prop, map: prop.replaceAll('-', '_') }); }); return props; } } return []; } }, { key: "coreAttributes", get: function get() { return []; } }]); }(BaseElement); module.exports = AdhocElement; }, { "./base/base-element.js": 2 }], 2: [function (require, module, exports) { var Util = require("../../util/util"); var ElementController = require("../controllers/element-controller"); var _require = require("@plattar/context-messenger"), messenger = _require.messenger; var BaseElement = /*#__PURE__*/function (_HTMLElement) { function BaseElement() { _classCallCheck(this, BaseElement); return _callSuper(this, BaseElement); } _inherits(BaseElement, _HTMLElement); return _createClass(BaseElement, [{ key: "connectedCallback", value: function connectedCallback() { this._controller = new ElementController(this); } }, { key: "onready", set: function set(callback) { if (this._controller) { this._controller.onload = callback; return; } throw new Error("set BaseElement.onready - cannot use as element not connected"); } }, { key: "messengerInstance", get: function get() { return messenger; } }, { key: "messenger", get: function get() { return this._controller ? this._controller.messenger : undefined; } }, { key: "context", get: function get() { return this.messengerInstance.self; } }, { key: "parent", get: function get() { return this.messengerInstance.parent; } }, { key: "element", get: function get() { return this._controller; } }, { key: "ready", get: function get() { return this._controller ? true : false; } }, { key: "allowDragDrop", get: function get() { return this._controller ? this._controller.controller.allowDragDrop : false; }, set: function set(value) { if (this._controller) { this._controller.controller.allowDragDrop = value; return; } throw new Error("set BaseElement.allowDragDrop - cannot use as element not connected"); } }, { key: "permissions", get: function get() { return []; } }, { key: "coreAttributes", get: function get() { return [{ key: "scene-id", map: "scene_id" }]; } }, { key: "usesCoreAttribute", value: function usesCoreAttribute(key) { var attr = this.coreAttributes; var length = attr.length; for (var i = 0; i < length; i++) { if (attr[i].key === key) { return true; } } return false; } }, { key: "usesOptionalAttribute", value: function usesOptionalAttribute(key) { var attr = this.optionalAttributes; var length = attr.length; for (var i = 0; i < length; i++) { if (attr[i].key === key) { return true; } } return false; } }, { key: "usesAttribute", value: function usesAttribute(key) { return this.usesCoreAttribute(key) || this.usesOptionalAttribute(key); } }, { key: "optionalAttributes", get: function get() { return []; } }, { key: "hasAllCoreAttributes", get: function get() { var attr = this.coreAttributes; var length = attr.length; for (var i = 0; i < length; i++) { if (!this.hasAttribute(attr[i].key)) { return false; } } return true; } }, { key: "allMappedAttributes", get: function get() { var _this = this; var map = new Map(); var coreAttr = this.coreAttributes; var optAttr = this.optionalAttributes; coreAttr.forEach(function (ele) { if (_this.hasAttribute(ele.key)) { map.set(ele.map, _this.getAttribute(ele.key)); } }); optAttr.forEach(function (ele) { if (_this.hasAttribute(ele.key)) { map.set(ele.map, _this.getAttribute(ele.key)); } }); return map; } }, { key: "allMappedAttributesQuery", get: function get() { var attr = this.allMappedAttributes; var queryStr = ""; var first = true; var _iterator = _createForOfIteratorHelper(attr.entries()), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var _step$value = _slicedToArray(_step.value, 2), key = _step$value[0], value = _step$value[1]; queryStr += first ? "?" + key + "=" + value : "&" + key + "=" + value; first = false; } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return queryStr; } }, { key: "elementType", get: function get() { return "none"; } }, { key: "elementFullLocation", get: function get() { var server = this.hasAttribute("server") ? this.getAttribute("server") : "production"; var serverLocation = Util.getServerLocation(server); if (serverLocation === undefined) { throw new Error("BaseElement.elementFullLocation - attribute \"server\" must be one of \"production\", \"staging\", \"review\" or \"dev\" but was \"".concat(server, "\"")); } var embedLocation = Util.getElementLocation(this.elementType); if (embedLocation === undefined) { throw new Error("BaseElement.elementFullLocation - element named \"".concat(this.elementType, "\" is invalid")); } if (serverLocation === Util.getServerLocation('dev')) { return "".concat(serverLocation, "renderer/").concat(embedLocation).concat(this.allMappedAttributesQuery); } return "".concat(serverLocation).concat(embedLocation).concat(this.allMappedAttributesQuery); } }]); }(/*#__PURE__*/_wrapNativeSuper(HTMLElement)); module.exports = BaseElement; }, { "../../util/util": 33, "../controllers/element-controller": 4, "@plattar/context-messenger": 17 }], 3: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var ConfiguratorElement = /*#__PURE__*/function (_BaseElement2) { function ConfiguratorElement() { _classCallCheck(this, ConfiguratorElement); return _callSuper(this, ConfiguratorElement); } _inherits(ConfiguratorElement, _BaseElement2); return _createClass(ConfiguratorElement, [{ key: "permissions", get: function get() { return ["autoplay"]; } }, { key: "elementType", get: function get() { return "configurator"; } }, { key: "elementFullLocation", get: function get() { if (this.hasAttribute("show-ui")) { var state = this.getAttribute("show-ui"); if (state === "true") { var server = this.hasAttribute("server") ? this.getAttribute("server") : "production"; switch (server) { case "production": return "https://configurator.plattar.com/index.html".concat(this.allMappedAttributesQuery); case "staging": return "https://configurator-staging.plattar.com/index.html".concat(this.allMappedAttributesQuery); case "review": return "https://configurator-review.plattar.com/index.html".concat(this.allMappedAttributesQuery); case "dev": return "https://localhost/configurator/dist/index.html".concat(this.allMappedAttributesQuery); default: throw new Error("ConfiguratorElement.elementFullLocation - attribute \"server\" must be one of \"production\", \"staging\", \"review\" or \"dev\" but was \"".concat(server, "\"")); } } } return _superPropGet(ConfiguratorElement, "elementFullLocation", this, 1); } }, { key: "optionalAttributes", get: function get() { return [{ key: "config-state", map: "config_state" }, { key: "show-ar", map: "show_ar" }, { key: "scene-graph-id", map: "scene_graph_id" }]; } }]); }(BaseElement); module.exports = ConfiguratorElement; }, { "./base/base-element.js": 2 }], 4: [function (require, module, exports) { var Util = require("../../util/util.js"); var _require2 = require("@plattar/context-messenger"), messenger = _require2.messenger; var IFrameController = require("./iframe-controller.js"); var ElementController = /*#__PURE__*/function () { function ElementController(element) { var _this2 = this; _classCallCheck(this, ElementController); this._element = element; // observe the changes in scene-id var callback = function callback(mutationsList) { var _iterator2 = _createForOfIteratorHelper(mutationsList), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var mutation = _step2.value; if (mutation.type === 'attributes' && element.usesAttribute(mutation.attributeName)) { if (element.hasAllCoreAttributes) { _this2._load(); } } } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } }; var observer = new MutationObserver(callback); observer.observe(this._element, { attributes: true }); // load initially if all core attributes are set if (element.hasAllCoreAttributes) { this._load(); } } return _createClass(ElementController, [{ key: "_load", value: function _load() { if (this._controller) { this._controller._destroy(); this._controller = undefined; } var element = this._element; this._server = element.hasAttribute("server") ? element.getAttribute("server") : "production"; var source = element.elementFullLocation; // ensure iframe ID is randomly generated as we could have multiple iframes // with same Scene ID - such as viewer and editor running on same page this._messengerID = "element_" + Util.id(); this._controller = new IFrameController(element, source, this._messengerID, function (node) { // for cross-origin messenger setup, we need to setup manually // this might require additional iterations messenger.addChild(node); }); } }, { key: "onload", set: function set(callback) { if (!callback) { return; } if (this.messenger) { callback(); } else { messenger.onload(this._messengerID, function () { callback(); }); } } }, { key: "messenger", get: function get() { return messenger[this._messengerID]; } }, { key: "context", get: function get() { return messenger.self; } }, { key: "parent", get: function get() { return messenger.parent; } }, { key: "controller", get: function get() { return this._controller; } }]); }(); module.exports = ElementController; }, { "../../util/util.js": 33, "./iframe-controller.js": 5, "@plattar/context-messenger": 17 }], 5: [function (require, module, exports) { var Util = require("../../util/util.js"); var IFrameController = /*#__PURE__*/function () { function IFrameController(element, src, id) { var _this3 = this; var onelemload = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined; _classCallCheck(this, IFrameController); this._iframe = document.createElement("iframe"); this._isDraggable = false; // check the onload functionality if cross-origin is defined if (!element.hasAttribute("sameorigin")) { this._iframe.onload = function () { if (onelemload) { onelemload(_this3._iframe); } }; } this._iframe.setAttribute("id", id); this._iframe.setAttribute("width", element.hasAttribute("width") ? element.getAttribute("width") : "500px"); this._iframe.setAttribute("height", element.hasAttribute("height") ? element.getAttribute("height") : "500px"); this._iframe.setAttribute("src", src); this._iframe.setAttribute("frameBorder", "0"); var permissions = Util.getPermissionString(element.permissions); if (permissions) { this._iframe.setAttribute("allow", permissions); } var shadow = element.shadowRoot || element.attachShadow({ mode: 'open' }); this.allowDragging = false; shadow.append(this._iframe); if (element.hasAttribute("fullscreen")) { var style = document.createElement('style'); style.textContent = "._PlattarFullScreen { width: 100%; height: 100%; position: absolute; top: 0; left: 0; }"; this._iframe.className = "_PlattarFullScreen"; shadow.append(style); this._fsStyle = style; } } return _createClass(IFrameController, [{ key: "allowDragDrop", get: function get() { return this._isDraggable; }, set: function set(value) { if (value) { this._isDraggable = true; this._iframe.style.pointerEvents = "none"; } else { this._isDraggable = false; this._iframe.style.pointerEvents = "auto"; } } }, { key: "_destroy", value: function _destroy() { if (this._iframe) { this._iframe.remove(); } if (this._fsStyle) { this._fsStyle.remove(); } this._iframe = undefined; this._fsStyle = undefined; } }, { key: "width", get: function get() { return this._iframe.getAttribute("width"); }, set: function set(value) { this._iframe.setAttribute("width", value); } }, { key: "child", get: function get() { return this._iframe; } }, { key: "height", get: function get() { return this._iframe.getAttribute("height"); }, set: function set(value) { this._iframe.setAttribute("height", value); } }, { key: "id", get: function get() { return this._iframe.id; } }]); }(); module.exports = IFrameController; }, { "../../util/util.js": 33 }], 6: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var EditorElement = /*#__PURE__*/function (_BaseElement3) { function EditorElement() { _classCallCheck(this, EditorElement); return _callSuper(this, EditorElement); } _inherits(EditorElement, _BaseElement3); return _createClass(EditorElement, [{ key: "permissions", get: function get() { return ["autoplay"]; } }, { key: "elementType", get: function get() { return "editor"; } }]); }(BaseElement); module.exports = EditorElement; }, { "./base/base-element.js": 2 }], 7: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var EWallElement = /*#__PURE__*/function (_BaseElement4) { function EWallElement() { _classCallCheck(this, EWallElement); return _callSuper(this, EWallElement); } _inherits(EWallElement, _BaseElement4); return _createClass(EWallElement, [{ key: "permissions", get: function get() { return ["camera *", "autoplay *", "xr-spatial-tracking *", "gyroscope *", "accelerometer *", "magnetometer *"]; } }, { key: "elementType", get: function get() { return "ewall"; } }]); }(BaseElement); module.exports = EWallElement; }, { "./base/base-element.js": 2 }], 8: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var FaceARElement = /*#__PURE__*/function (_BaseElement5) { function FaceARElement() { _classCallCheck(this, FaceARElement); return _callSuper(this, FaceARElement); } _inherits(FaceARElement, _BaseElement5); return _createClass(FaceARElement, [{ key: "permissions", get: function get() { return ["camera", "autoplay"]; } }, { key: "elementType", get: function get() { return "facear"; } }, { key: "optionalAttributes", get: function get() { return [{ key: "variation-id", map: "variationId" }, { key: "variation-sku", map: "variationSku" }, { key: "product-id", map: "productId" }, { key: "config-state", map: "config_state" }, { key: "show-ar", map: "show_ar" }]; } }]); }(BaseElement); module.exports = FaceARElement; }, { "./base/base-element.js": 2 }], 9: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var GalleryElement = /*#__PURE__*/function (_BaseElement6) { function GalleryElement() { _classCallCheck(this, GalleryElement); return _callSuper(this, GalleryElement); } _inherits(GalleryElement, _BaseElement6); return _createClass(GalleryElement, [{ key: "permissions", get: function get() { return ["autoplay"]; } }, { key: "elementType", get: function get() { return "gallery"; } }, { key: "optionalAttributes", get: function get() { return []; } }]); }(BaseElement); module.exports = GalleryElement; }, { "./base/base-element.js": 2 }], 10: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var LauncherElement = /*#__PURE__*/function (_BaseElement7) { function LauncherElement() { _classCallCheck(this, LauncherElement); return _callSuper(this, LauncherElement); } _inherits(LauncherElement, _BaseElement7); return _createClass(LauncherElement, [{ key: "permissions", get: function get() { return ["autoplay"]; } }, { key: "elementType", get: function get() { return "launcher"; } }, { key: "optionalAttributes", get: function get() { return [{ key: "config-state", map: "config_state" }, { key: "qr-options", map: "qr_options" }, { key: "embed-type", map: "embed_type" }, { key: "product-id", map: "product_id" }, { key: "scene-product-id", map: "scene_product_id" }, { key: "variation-id", map: "variation_id" }, { key: "variation-sku", map: "variation_sku" }, { key: "ar-mode", map: "ar_mode" }, { key: "show-ar-banner", map: "show_ar_banner" }, { key: "scene-graph-id", map: "scene_graph_id" }]; } }]); }(BaseElement); module.exports = LauncherElement; }, { "./base/base-element.js": 2 }], 11: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var ModelElement = /*#__PURE__*/function (_BaseElement8) { function ModelElement() { _classCallCheck(this, ModelElement); return _callSuper(this, ModelElement); } _inherits(ModelElement, _BaseElement8); return _createClass(ModelElement, [{ key: "permissions", get: function get() { return ["camera", "autoplay"]; } }, { key: "elementType", get: function get() { return "model"; } }, { key: "coreAttributes", get: function get() { return []; } }, { key: "optionalAttributes", get: function get() { return [{ key: "mode", map: "mode" }, { key: "capture-id", map: "capture_id" }, { key: "model-id", map: "model_id" }]; } }]); }(BaseElement); module.exports = ModelElement; }, { "./base/base-element.js": 2 }], 12: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var ProductElement = /*#__PURE__*/function (_BaseElement9) { function ProductElement() { _classCallCheck(this, ProductElement); return _callSuper(this, ProductElement); } _inherits(ProductElement, _BaseElement9); return _createClass(ProductElement, [{ key: "permissions", get: function get() { return ["autoplay"]; } }, { key: "elementType", get: function get() { return "product"; } }, { key: "coreAttributes", get: function get() { return [{ key: "product-id", map: "product_id" }]; } }, { key: "optionalAttributes", get: function get() { return [{ key: "variation-id", map: "variation_id" }, { key: "variation-sku", map: "variationSku" }, { key: "show-ar", map: "show_ar" }]; } }]); }(BaseElement); module.exports = ProductElement; }, { "./base/base-element.js": 2 }], 13: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var StudioElement = /*#__PURE__*/function (_BaseElement0) { function StudioElement() { _classCallCheck(this, StudioElement); return _callSuper(this, StudioElement); } _inherits(StudioElement, _BaseElement0); return _createClass(StudioElement, [{ key: "permissions", get: function get() { return ["autoplay"]; } }, { key: "elementType", get: function get() { return "studio"; } }, { key: "optionalAttributes", get: function get() { return [{ key: "variation-id", map: "variationId" }, { key: "variation-sku", map: "variationSku" }]; } }]); }(BaseElement); module.exports = StudioElement; }, { "./base/base-element.js": 2 }], 14: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var ViewerElement = /*#__PURE__*/function (_BaseElement1) { function ViewerElement() { _classCallCheck(this, ViewerElement); return _callSuper(this, ViewerElement); } _inherits(ViewerElement, _BaseElement1); return _createClass(ViewerElement, [{ key: "permissions", get: function get() { return ["autoplay"]; } }, { key: "elementType", get: function get() { return "viewer"; } }, { key: "optionalAttributes", get: function get() { return [{ key: "variation-id", map: "variationId" }, { key: "variation-sku", map: "variationSku" }, { key: "product-id", map: "productId" }, { key: "show-ar", map: "show_ar" }]; } }]); }(BaseElement); module.exports = ViewerElement; }, { "./base/base-element.js": 2 }], 15: [function (require, module, exports) { var BaseElement = require("./base/base-element.js"); var WebXRElement = /*#__PURE__*/function (_BaseElement10) { function WebXRElement() { _classCallCheck(this, WebXRElement); return _callSuper(this, WebXRElement); } _inherits(WebXRElement, _BaseElement10); return _createClass(WebXRElement, [{ key: "permissions", get: function get() { return ["camera", "autoplay", "xr-spatial-tracking"]; } }, { key: "elementType", get: function get() { return "webxr"; } }]); }(BaseElement); module.exports = WebXRElement; }, { "./base/base-element.js": 2 }], 16: [function (require, module, exports) { "use strict"; var WebXRElement = require("./elements/webxr-element.js"); var ViewerElement = require("./elements/viewer-element.js"); var ProductElement = require("./elements/product-element.js"); var EWallElement = require("./elements/ewall-element.js"); var FaceARElement = require("./elements/facear-element.js"); var EditorElement = require("./elements/editor-element.js"); var StudioElement = require("./elements/studio-element.js"); var ModelElement = require("./elements/model-element.js"); var ConfiguratorElement = require("./elements/configurator-element.js"); var LauncherElement = require("./elements/launcher-element.js"); var GalleryElement = require("./elements/gallery-element.js"); var AdhocElement = require("./elements/adhoc-element.js"); var Version = require("./version"); if (customElements.get("plattar-webxr") === undefined) { customElements.define("plattar-webxr", WebXRElement); } if (customElements.get("plattar-viewer") === undefined) { customElements.define("plattar-viewer", ViewerElement); } if (customElements.get("plattar-product") === undefined) { customElements.define("plattar-product", ProductElement); } if (customElements.get("plattar-editor") === undefined) { customElements.define("plattar-editor", EditorElement); } if (customElements.get("plattar-facear") === undefined) { customElements.define("plattar-facear", FaceARElement); } if (customElements.get("plattar-8wall") === undefined) { customElements.define("plattar-8wall", EWallElement); } if (customElements.get("plattar-studio") === undefined) { customElements.define("plattar-studio", StudioElement); } if (customElements.get("plattar-model") === undefined) { customElements.define("plattar-model", ModelElement); } if (customElements.get("plattar-configurator") === undefined) { customElements.define("plattar-configurator", ConfiguratorElement); } if (customElements.get("plattar-gallery") === undefined) { customElements.define("plattar-gallery", GalleryElement); } if (customElements.get("plattar-launcher") === undefined) { customElements.define("plattar-launcher", LauncherElement); } if (customElements.get("plattar-adhoc") === undefined) { customElements.define("plattar-adhoc", AdhocElement); } console.log("using @plattar/plattar-web v" + Version); module.exports = { version: Version }; }, { "./elements/adhoc-element.js": 1, "./elements/configurator-element.js": 3, "./elements/editor-element.js": 6, "./elements/ewall-element.js": 7, "./elements/facear-element.js": 8, "./elements/gallery-element.js": 9, "./elements/launcher-element.js": 10, "./elements/model-element.js": 11, "./elements/product-element.js": 12, "./elements/studio-element.js": 13, "./elements/viewer-element.js": 14, "./elements/webxr-element.js": 15, "./version": 34 }], 17: [function (require, module, exports) { "use strict"; var Messenger = require("./messenger/messenger.js"); var Memory = require("./memory/memory.js"); var GlobalEventHandler = require("./messenger/global-event-handler.js"); var Version = require("./version"); // re-create a new messenger instance if it does not exist if (!GlobalEventHandler.instance().messengerInstance) { // create our instances which we only need one each var messengerInstance = new Messenger(); // memory requires the messenger interface to function correctly var memoryInstance = new Memory(messengerInstance); GlobalEventHandler.instance().messengerInstance = messengerInstance; GlobalEventHandler.instance().memoryInstance = memoryInstance; } // re-create a new memory instance if it does not exist if (!GlobalEventHandler.instance().memoryInstance) { // memory requires the messenger interface to function correctly var _memoryInstance = new Memory(GlobalEventHandler.instance().messengerInstance); GlobalEventHandler.instance().memoryInstance = _memoryInstance; } console.log("using @plattar/context-messenger v" + Version); module.exports = { messenger: GlobalEventHandler.instance().messengerInstance, memory: GlobalEventHandler.instance().memoryInstance, version: Version }; }, { "./memory/memory.js": 18, "./messenger/global-event-handler.js": 26, "./messenger/messenger.js": 27, "./version": 32 }], 18: [function (require, module, exports) { var PermanentMemory = require("./permanent-memory"); var TemporaryMemory = require("./temporary-memory"); /** * Memory is a singleton that allows setting variables from multiple * iframe contexts */ var Memory = /*#__PURE__*/function () { function Memory(messengerInstance) { var _this4 = this; _classCallCheck(this, Memory); this._messenger = messengerInstance; this._tempMemory = new TemporaryMemory(messengerInstance); this._permMemory = new PermanentMemory(messengerInstance); this._messenger.self.__memory__set_temp_var = function (name, data) { _this4._tempMemory[name] = data; }; this._messenger.self.__memory__set_perm_var = function (name, data) { _this4._permMemory[name] = data; }; } return _createClass(Memory, [{ key: "temp", get: function get() { return this._tempMemory; } }, { key: "perm", get: function get() { return this._permMemory; } }]); }(); module.exports = Memory; }, { "./permanent-memory": 19, "./temporary-memory": 20 }], 19: [function (require, module, exports) { var WrappedValue = require("./wrapped-value"); var PermanentMemory = /*#__PURE__*/_createClass(function PermanentMemory(messengerInstance) { _classCallCheck(this, PermanentMemory); return new Proxy(this, { get: function get(target, prop, receiver) { // sets the watcher callback if (prop === "watch") { return function (variable, callback) { if (!target[variable]) { target[variable] = new WrappedValue(variable, true, messengerInstance); } target[variable].watch = callback; }; } // clears everything, including specific items if (prop === "clear") { return function () { var _iterator3 = _createForOfIteratorHelper(Object.getOwnPropertyNames(target)), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var pitem = _step3.value; delete target[pitem]; localStorage.removeItem(pitem); } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } }; } // clears everything, including from storage if (prop === "purge") { return function () { localStorage.clear(); var _iterator4 = _createForOfIteratorHelper(Object.getOwnPropertyNames(target)), _step4; try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { var pitem = _step4.value; delete target[pitem]; } } catch (err) { _iterator4.e(err); } finally { _iterator4.f(); } }; } if (prop === "refresh") { return function () { var _iterator5 = _createForOfIteratorHelper(Object.getOwnPropertyNames(target)), _step5; try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { var val = _step5.value; target[val].refresh(); } } catch (err) { _iterator5.e(err); } finally { _iterator5.f(); } }; } // on first access, we create a WrappedValue type if (!target[prop]) { target[prop] = new WrappedValue(prop, true, messengerInstance); } return target[prop].value; }, set: function set(target, prop, value) { if (!target[prop]) { target[prop] = new WrappedValue(prop, true, messengerInstance); } target[prop].value = value; return true; } }); }); module.exports = PermanentMemory; }, { "./wrapped-value": 21 }], 20: [function (require, module, exports) { var WrappedValue = require("./wrapped-value"); var TemporaryMemory = /*#__PURE__*/_createClass(function TemporaryMemory(messengerInstance) { _classCallCheck(this, TemporaryMemory); return new Proxy(this, { get: function get(target, prop, receiver) { // sets the watcher callback if (prop === "watch") { return function (variable, callback) { if (!target[variable]) { target[variable] = new WrappedValue(variable, false, messengerInstance); } target[variable].watch = callback; }; } // clears everything // purge is the same thing for all temporary variables if (prop === "clear" || prop === "purge") { return function () { var _iterator6 = _createForOfIteratorHelper(Object.getOwnPropertyNames(target)), _step6; try { for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { var val = _step6.value; delete target[val]; } } catch (err) { _iterator6.e(err); } finally { _iterator6.f(); } }; } if (prop === "refresh") { return function () {