@plattar/plattar-web
Version:
Module for interfacing with the Plattar Embeds and Web Viewers (https://www.plattar.com)
1,272 lines (1,250 loc) • 91.5 kB
JavaScript
"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 _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 _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 _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 _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } }
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
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 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: "elementLocation",
get: function get() {
return Util.getElementLocation(this.elementType);
}
}]);
}(/*#__PURE__*/_wrapNativeSuper(HTMLElement));
module.exports = BaseElement;
}, {
"../../util/util": 32,
"../controllers/element-controller": 3,
"@plattar/context-messenger": 16
}],
2: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var ConfiguratorElement = /*#__PURE__*/function (_BaseElement) {
function ConfiguratorElement() {
_classCallCheck(this, ConfiguratorElement);
return _callSuper(this, ConfiguratorElement);
}
_inherits(ConfiguratorElement, _BaseElement);
return _createClass(ConfiguratorElement, [{
key: "permissions",
get: function get() {
return ["autoplay"];
}
}, {
key: "elementType",
get: function get() {
return "configurator";
}
}, {
key: "elementLocation",
get: function get() {
if (this.hasAttribute("show-ui")) {
var state = this.getAttribute("show-ui");
return state === "true" ? "configurator/dist/index.html" : _superPropGet(ConfiguratorElement, "elementLocation", this, 1);
}
return _superPropGet(ConfiguratorElement, "elementLocation", 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": 1
}],
3: [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 serverLocation = Util.getServerLocation(this._server);
if (serverLocation === undefined) {
throw new Error("ElementController - attribute \"server\" must be one of \"production\", \"staging\", \"review\" or \"dev\"");
}
var embedLocation = element.elementLocation;
if (embedLocation === undefined) {
throw new Error("ElementController - element named \"" + elementType + "\" is invalid");
}
var source = serverLocation + embedLocation + element.allMappedAttributesQuery;
// 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": 32,
"./iframe-controller.js": 4,
"@plattar/context-messenger": 16
}],
4: [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": 32
}],
5: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var EditorElement = /*#__PURE__*/function (_BaseElement2) {
function EditorElement() {
_classCallCheck(this, EditorElement);
return _callSuper(this, EditorElement);
}
_inherits(EditorElement, _BaseElement2);
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": 1
}],
6: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var EWallElement = /*#__PURE__*/function (_BaseElement3) {
function EWallElement() {
_classCallCheck(this, EWallElement);
return _callSuper(this, EWallElement);
}
_inherits(EWallElement, _BaseElement3);
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": 1
}],
7: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var FaceARElement = /*#__PURE__*/function (_BaseElement4) {
function FaceARElement() {
_classCallCheck(this, FaceARElement);
return _callSuper(this, FaceARElement);
}
_inherits(FaceARElement, _BaseElement4);
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": 1
}],
8: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var GalleryElement = /*#__PURE__*/function (_BaseElement5) {
function GalleryElement() {
_classCallCheck(this, GalleryElement);
return _callSuper(this, GalleryElement);
}
_inherits(GalleryElement, _BaseElement5);
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": 1
}],
9: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var LauncherElement = /*#__PURE__*/function (_BaseElement6) {
function LauncherElement() {
_classCallCheck(this, LauncherElement);
return _callSuper(this, LauncherElement);
}
_inherits(LauncherElement, _BaseElement6);
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": 1
}],
10: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var ModelElement = /*#__PURE__*/function (_BaseElement7) {
function ModelElement() {
_classCallCheck(this, ModelElement);
return _callSuper(this, ModelElement);
}
_inherits(ModelElement, _BaseElement7);
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": 1
}],
11: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var ProductElement = /*#__PURE__*/function (_BaseElement8) {
function ProductElement() {
_classCallCheck(this, ProductElement);
return _callSuper(this, ProductElement);
}
_inherits(ProductElement, _BaseElement8);
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": 1
}],
12: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var StudioElement = /*#__PURE__*/function (_BaseElement9) {
function StudioElement() {
_classCallCheck(this, StudioElement);
return _callSuper(this, StudioElement);
}
_inherits(StudioElement, _BaseElement9);
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": 1
}],
13: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var ViewerElement = /*#__PURE__*/function (_BaseElement10) {
function ViewerElement() {
_classCallCheck(this, ViewerElement);
return _callSuper(this, ViewerElement);
}
_inherits(ViewerElement, _BaseElement10);
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": 1
}],
14: [function (require, module, exports) {
var BaseElement = require("./base/base-element.js");
var WebXRElement = /*#__PURE__*/function (_BaseElement11) {
function WebXRElement() {
_classCallCheck(this, WebXRElement);
return _callSuper(this, WebXRElement);
}
_inherits(WebXRElement, _BaseElement11);
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": 1
}],
15: [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 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);
}
console.log("using @plattar/plattar-web v" + Version);
module.exports = {
version: Version
};
}, {
"./elements/configurator-element.js": 2,
"./elements/editor-element.js": 5,
"./elements/ewall-element.js": 6,
"./elements/facear-element.js": 7,
"./elements/gallery-element.js": 8,
"./elements/launcher-element.js": 9,
"./elements/model-element.js": 10,
"./elements/product-element.js": 11,
"./elements/studio-element.js": 12,
"./elements/viewer-element.js": 13,
"./elements/webxr-element.js": 14,
"./version": 33
}],
16: [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": 17,
"./messenger/global-event-handler.js": 25,
"./messenger/messenger.js": 26,
"./version": 31
}],
17: [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": 18,
"./temporary-memory": 19
}],
18: [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": 20
}],
19: [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 () {
var _iterator7 = _createForOfIteratorHelper(Object.getOwnPropertyNames(target)),
_step7;
try {
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
var val = _step7.value;
target[val].refresh();
}
} catch (err) {
_iterator7.e(err);
} finally {
_iterator7.f();
}
};
}
// on first access, we create a WrappedValue type
if (!target[prop]) {
target[prop] = new WrappedValue(prop, false, messengerInstance);
}
return target[prop].value;
},
set: function set(target, prop, value) {
if (!target[prop]) {
target[prop] = new WrappedValue(prop, false, messengerInstance);
}
target[prop].value = value;
return true;
}
});
});
module.exports = TemporaryMemory;
}, {
"./wrapped-value": 20
}],
20: [function (require, module, exports) {
/**
* WrappedValue represents a generic value type with a callback function
* for when the value has changed
*/
var WrappedValue = /*#__PURE__*/function () {
function WrappedValue(varName, isPermanent, messengerInstance) {
_classCallCheck(this, WrappedValue);
this._value = undefined;
this._callback = undefined;
this._isPermanent = isPermanent;
this._varName = varName;
this._messenger = messengerInstance;
if (this._isPermanent) {
this._value = JSON.parse(localStorage.getItem(this._varName));
}
}
/**
* Refresh the memory value across all memory instances recursively
*/
return _createClass(WrappedValue, [{
key: "refresh",
value: function refresh() {
if (this._isPermanent) {
// broadcast variable to all children
this._messenger.broadcast.__memory__set_perm_var(this._varName, this._value);
// send variable to the parent
if (this._messenger.parent) {
this._messenger.parent.__memory__set_perm_var(this._varName, this._value);
}
} else {
// broadcast variable to all children
this._messenger.broadcast.__memory__set_temp_var(this._varName, this._value);
// send variable to the parent
if (this._messenger.parent) {
this._messenger.parent.__memory__set_temp_var(this._varName, this._value);
}
}
}
/**
* Refresh this memory for a specific callable interface
*/
}, {
key: "refreshFor",
value: function refreshFor(callable) {
// invalid interface check
if (!this._messenger[callable]) {
return;
}
if (this._isPermanent) {
// set the variable for the specific callable
this._messenger[callable].__memory__set_perm_var(this._varName, this._value);
} else {
// set the variable for the specific callable
this._messenger[callable].__memory__set_temp_var(this._varName, this._value);
}
}
}, {
key: "value",
get: function get() {
if (this._isPermanent && this._value == undefined) {
this._value = JSON.parse(localStorage.getItem(this._varName));
}
return this._value;
},
set: function set(newValue) {
if (typeof newValue === "function") {
throw new TypeError("WrappedValue.value cannot be set to a function type");
}
var oldValue = this._value;
this._value = newValue;
// for permanent variables, set the variable type
if (this._isPermanent) {
localStorage.setItem(this._varName, JSON.stringify(this._value));
}
// do not fire callback if the old and new values do not match
if (this._callback && oldValue !== n