luisa-vue
Version:
Luisa - VUE Renderer for FIGMA designs. Turn your Figma or Quant-UX design into VUE, or create re-usable designlets
379 lines (372 loc) • 17.5 kB
JavaScript
/******/ (function() { // webpackBootstrap
/******/ "use strict";
var __webpack_exports__ = {};
;// CONCATENATED MODULE: ./src/qux/core/Logger.js
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var Logger = /*#__PURE__*/function () {
function Logger() {
_classCallCheck(this, Logger);
this.logLevel = 0;
}
_createClass(Logger, [{
key: "setLogLevel",
value: function setLogLevel(l) {
this.logLevel = l;
}
}, {
key: "warn",
value: function warn(msg, obj) {
if (obj !== undefined) {
console.warn(msg, obj);
} else {
console.warn(msg);
}
}
}, {
key: "error",
value: function error(msg, obj) {
if (obj !== undefined) {
console.error(msg, obj);
} else {
console.error(msg);
}
}
}, {
key: "log",
value: function log(level, msg, obj) {
var obj2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "";
if (level < this.logLevel) {
if (obj !== undefined) {
console.debug(msg, obj, obj2);
} else {
console.debug(msg);
}
}
}
}]);
return Logger;
}();
/* harmony default export */ var core_Logger = (new Logger());
;// CONCATENATED MODULE: ./src/qux/scripts/ScriptAPI.js
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (ScriptAPI_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function ScriptAPI_typeof(obj) { "@babel/helpers - typeof"; return ScriptAPI_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, ScriptAPI_typeof(obj); }
function ScriptAPI_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function ScriptAPI_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, ScriptAPI_toPropertyKey(descriptor.key), descriptor); } }
function ScriptAPI_createClass(Constructor, protoProps, staticProps) { if (protoProps) ScriptAPI_defineProperties(Constructor.prototype, protoProps); if (staticProps) ScriptAPI_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function ScriptAPI_toPropertyKey(arg) { var key = ScriptAPI_toPrimitive(arg, "string"); return ScriptAPI_typeof(key) === "symbol" ? key : String(key); }
function ScriptAPI_toPrimitive(input, hint) { if (ScriptAPI_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (ScriptAPI_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var QModel = /*#__PURE__*/function () {
function QModel(model, api, type) {
ScriptAPI_classCallCheck(this, QModel);
this.qModel = model;
this.api = api;
this.type = type;
}
ScriptAPI_createClass(QModel, [{
key: "getName",
value: function getName() {
return this.qModel.name;
}
}, {
key: "setStyle",
value: function setStyle(newStyleDelta) {
this.api.appDeltas.push({
type: this.type,
key: 'style',
id: this.qModel.id,
style: newStyleDelta
});
}
}, {
key: "setProp",
value: function setProp(newStyleDelta) {
this.api.appDeltas.push({
type: this.type,
id: this.qModel.id,
key: 'props',
props: newStyleDelta
});
}
}, {
key: "hide",
value: function hide() {
this.setStyle({
display: 'none'
});
}
}, {
key: "isHidden",
value: function isHidden() {
var _this$qModel, _this$qModel$style;
return (this === null || this === void 0 ? void 0 : (_this$qModel = this.qModel) === null || _this$qModel === void 0 ? void 0 : (_this$qModel$style = _this$qModel.style) === null || _this$qModel$style === void 0 ? void 0 : _this$qModel$style.display) === 'none';
}
}, {
key: "show",
value: function show() {
this.setStyle({
display: 'block'
});
}
}, {
key: "toggle",
value: function toggle() {
if (this.isHidden()) {
this.show();
} else {
this.hide();
}
}
}]);
return QModel;
}();
var QWidget = /*#__PURE__*/function (_QModel) {
_inherits(QWidget, _QModel);
var _super = _createSuper(QWidget);
function QWidget(model, api) {
ScriptAPI_classCallCheck(this, QWidget);
return _super.call(this, model, api, 'Widget');
}
return ScriptAPI_createClass(QWidget);
}(QModel);
var QGroup = /*#__PURE__*/function (_QModel2) {
_inherits(QGroup, _QModel2);
var _super2 = _createSuper(QGroup);
function QGroup(model, api) {
ScriptAPI_classCallCheck(this, QGroup);
return _super2.call(this, model, api, 'Group');
}
ScriptAPI_createClass(QGroup, [{
key: "forEachChild",
value: function forEachChild(callback) {
this.qModel.children.forEach(callback);
}
}, {
key: "setStyle",
value: function setStyle(newStyleDelta) {
var _this = this;
this.forEachChild(function (id) {
_this.api.appDeltas.push({
type: 'Widget',
key: 'style',
id: id,
style: newStyleDelta
});
});
}
}, {
key: "setProp",
value: function setProp(newStyleDelta) {
var _this2 = this;
this.forEachChild(function (id) {
_this2.api.appDeltas.push({
type: 'Widget',
key: 'props',
id: id,
props: newStyleDelta
});
});
}
}, {
key: "isHidden",
value: function isHidden() {
var _this3 = this;
var hidden = this.qModel.children.filter(function (id) {
var _widget$style;
var widget = _this3.api.app.widgets[id];
return (widget === null || widget === void 0 ? void 0 : (_widget$style = widget.style) === null || _widget$style === void 0 ? void 0 : _widget$style.display) === 'none';
});
return hidden.length === this.qModel.children.length;
}
}]);
return QGroup;
}(QModel);
var QScreen = /*#__PURE__*/function (_QModel3) {
_inherits(QScreen, _QModel3);
var _super3 = _createSuper(QScreen);
function QScreen(model, api) {
ScriptAPI_classCallCheck(this, QScreen);
return _super3.call(this, model, api, 'Screen');
}
ScriptAPI_createClass(QScreen, [{
key: "getGroup",
value: function getGroup(name) {
core_Logger.log(2, "QScreen.getGroup() ", name);
if (this.api.app.groups) {
var groups = this.api.app.groups;
var screenChildren = this.qModel.children;
var group = Object.values(groups).find(function (g) {
if (g.name === name) {
var groupChildren = g.children;
var contained = groupChildren.filter(function (groupChild) {
return screenChildren.indexOf(groupChild) >= 0;
});
return contained.length === groupChildren.length;
}
return false;
});
if (group) {
return new QGroup(group, this.api);
}
}
throw new Error("Widget \"".concat(name, "\" in screen \"").concat(this.qModel.name, "\" not found."));
}
}, {
key: "getWidget",
value: function getWidget(name) {
core_Logger.log(2, "QScreen.getWidget() ", name);
var children = this.qModel.children;
for (var i = 0; i < children.length; i++) {
var widgetId = children[i];
var widget = this.api.app.widgets[widgetId];
if (widget && widget.name === name) {
return new QWidget(widget, this.api);
}
}
throw new Error("Widget \"".concat(name, "\" in screen \"").concat(this.qModel.name, "\" not found."));
}
}]);
return QScreen;
}(QModel);
var ScriptAPI = /*#__PURE__*/function () {
function ScriptAPI(app, viewModel) {
ScriptAPI_classCallCheck(this, ScriptAPI);
core_Logger.log(2, "ScriptAPI.constructor() ", viewModel);
this.app = app;
this.appDeltas = [];
}
ScriptAPI_createClass(ScriptAPI, [{
key: "getScreen",
value: function getScreen(name) {
var found = Object.values(this.app.screens).filter(function (s) {
return s.name === name;
});
if (found.length === 1) {
return new QScreen(found[0], this);
}
throw new Error("Screen \"".concat(name, "\" not found."));
}
}, {
key: "vibrate",
value: function vibrate(pattern) {
this.vibratePattern = pattern;
}
}, {
key: "getAppDeltas",
value: function getAppDeltas() {
return this.appDeltas;
}
}]);
return ScriptAPI;
}();
;// CONCATENATED MODULE: ./src/qux/scripts/ScriptConsole.js
function ScriptConsole_typeof(obj) { "@babel/helpers - typeof"; return ScriptConsole_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, ScriptConsole_typeof(obj); }
function ScriptConsole_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function ScriptConsole_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, ScriptConsole_toPropertyKey(descriptor.key), descriptor); } }
function ScriptConsole_createClass(Constructor, protoProps, staticProps) { if (protoProps) ScriptConsole_defineProperties(Constructor.prototype, protoProps); if (staticProps) ScriptConsole_defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function ScriptConsole_toPropertyKey(arg) { var key = ScriptConsole_toPrimitive(arg, "string"); return ScriptConsole_typeof(key) === "symbol" ? key : String(key); }
function ScriptConsole_toPrimitive(input, hint) { if (ScriptConsole_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (ScriptConsole_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var ScriptConsole = /*#__PURE__*/function () {
function ScriptConsole() {
ScriptConsole_classCallCheck(this, ScriptConsole);
this.messages = [];
}
ScriptConsole_createClass(ScriptConsole, [{
key: "debug",
value: function debug() {
console.debug('ScriptConsole.debug() > ', arguments[0]);
this.messages.push({
type: 'debug',
args: arguments[0]
});
}
}, {
key: "log",
value: function log() {
console.log('ScriptConsole.log() > ', arguments[0]);
this.messages.push({
type: 'log',
args: arguments[0]
});
}
}, {
key: "warn",
value: function warn() {
console.warn('ScriptConsole.warn() > ', arguments[0]);
this.messages.push({
type: 'warn',
args: arguments[0]
});
}
}, {
key: "error",
value: function error() {
console.warn('ScriptConsole.error() > ', arguments[0]);
this.messages.push({
type: 'error',
args: arguments[0]
});
}
}]);
return ScriptConsole;
}();
;// CONCATENATED MODULE: ./src/qux/scripts/ScriptWorker.js
self.addEventListener('message', async function (e) {
core_Logger.log(3, 'ScriptWorker.message() > enter ', e);
var js = e.data.code;
var model = e.data.model;
var viewModel = e.data.viewModel;
var sourceEvent = e.data.sourceEvent;
var qux = new ScriptAPI(model);
var console = new ScriptConsole();
var result = undefined;
try {
result = await runCode(js, qux, viewModel, console, sourceEvent);
self.postMessage({
to: result,
viewModel: viewModel,
appDeltas: qux.getAppDeltas(),
console: console.messages,
vibratePattern: qux.vibratePattern,
status: 'ok'
});
} catch (error) {
core_Logger.error(1, 'ScriptWorker.message() > Error', error);
console.error(error);
self.postMessage({
status: 'error',
console: console.messages,
error: error.message,
stack: error.stack
});
}
core_Logger.log(1, 'ScriptWoker.message() > exit ');
});
async function runCode(js, qux, viewModel, console, sourceEvent) {
if (js.indexOf('await ') > 0) {
core_Logger.warn('ScriptWoker.runCode() > enter > ASYNC ', js);
var AsyncFunction = Object.getPrototypeOf(async function () {}).constructor;
var aysncJS = "return new Promise(async (resolve) => {\n ".concat(js, "\n resolve()\n });");
console.log('ScriptWoker.runCode() > run aysnc...');
var asycnCode = AsyncFunction('qux', 'data', 'console', 'event', aysncJS);
return await asycnCode(qux, viewModel, console, sourceEvent);
} else {
core_Logger.log(-1, 'ScriptWoker.runCode() > enter sync');
var code = new Function('qux', 'data', 'console', 'event', js);
return code(qux, viewModel, console, sourceEvent);
}
}
module.exports = __webpack_exports__;
/******/ })()
;
//# sourceMappingURL=luisa-vue3.common.396.js.map