redhotmagma-graphics-editor 1.41.1 → 1.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/App.js +90 -165
  2. package/CanvasAdapters/Mock/Canvas.js +71 -125
  3. package/CanvasAdapters/Mock/Objects/CanvasObject.js +23 -40
  4. package/CanvasAdapters/Mock/Objects/Group.js +15 -46
  5. package/CanvasAdapters/Mock/Objects/Image.js +15 -46
  6. package/CanvasAdapters/Mock/Objects/Text.js +15 -51
  7. package/CanvasAdapters/Mock/index.js +0 -1
  8. package/CanvasAdapters/PaperJs/Canvas.js +268 -398
  9. package/CanvasAdapters/PaperJs/CanvasRepository.js +6 -23
  10. package/CanvasAdapters/PaperJs/Modifiers/FontSizeMin.js +2 -5
  11. package/CanvasAdapters/PaperJs/Objects/CanvasObject.js +33 -65
  12. package/CanvasAdapters/PaperJs/Objects/Group.js +14 -48
  13. package/CanvasAdapters/PaperJs/Objects/Image.js +58 -114
  14. package/CanvasAdapters/PaperJs/Objects/Text.js +43 -99
  15. package/CanvasAdapters/PaperJs/Utils/HTML2Paper.js +57 -108
  16. package/CanvasAdapters/PaperJs/Utils/SVGfix.js +9 -30
  17. package/CanvasAdapters/PaperJs/Utils/StyleParams.js +10 -21
  18. package/CanvasAdapters/PaperJs/Utils/TextToSVGRepository.js +53 -86
  19. package/CanvasAdapters/PaperJs/Utils/TextToSVGUtils.js +4 -14
  20. package/CanvasAdapters/PaperJs/Utils/UTF8Base64.js +3 -24
  21. package/CanvasAdapters/PaperJs/Utils/UseColorLayer.js +58 -0
  22. package/CanvasAdapters/PaperJs/Utils/UseMask.js +183 -279
  23. package/CanvasAdapters/PaperJs/Utils/__tests__/SVGfix.test.js +0 -1
  24. package/CanvasAdapters/PaperJs/Utils/__tests__/TextToSVGUtils.test.js +0 -1
  25. package/CanvasAdapters/PaperJs/Utils/__tests__/updateFontStyle.test.js +0 -1
  26. package/CanvasAdapters/PaperJs/Utils/updateFontStyle.js +5 -11
  27. package/CanvasAdapters/PaperJs/index.js +0 -1
  28. package/CanvasInterface/Canvas.js +145 -235
  29. package/CanvasInterface/CanvasProvider.js +25 -75
  30. package/CanvasInterface/Objects/CanvasObject.js +68 -148
  31. package/CanvasInterface/Objects/index.js +0 -1
  32. package/CanvasInterface/Observable.js +10 -29
  33. package/CanvasInterface/canvasConnect.js +12 -44
  34. package/CanvasInterface/index.js +1 -7
  35. package/Components/Canvas/Canvas.js +14 -41
  36. package/Components/Canvas/CanvasContainer.js +5 -18
  37. package/Components/Canvas/styles.js +2 -3
  38. package/Components/DelayedContainer.js +14 -39
  39. package/Components/Editor/Editor.js +47 -102
  40. package/Components/Editor/EditorContainer.js +47 -131
  41. package/Components/Editor/styles.js +2 -3
  42. package/Components/InlineToolbox/InlineToolbox.js +49 -142
  43. package/Components/InlineToolbox/InlineToolboxButton.js +9 -19
  44. package/Components/InlineToolbox/styles.js +2 -3
  45. package/Components/ManipulableContainer.js +15 -41
  46. package/Components/ResizeDetect/ResizeDetect.js +14 -47
  47. package/Components/Rulers/Ruler.js +20 -68
  48. package/Components/Rulers/Rulers.js +14 -46
  49. package/Components/Rulers/styles.js +2 -3
  50. package/Components/SelectionToolbox/ColorPalette.js +25 -73
  51. package/Components/SelectionToolbox/SelectionToolbox.js +39 -101
  52. package/Components/SelectionToolbox/TextTools.js +81 -157
  53. package/Components/SelectionToolbox/styles.js +2 -3
  54. package/Components/StandardToolbox/StandardToolbox.js +81 -144
  55. package/Components/TextEditor/TextEditor.js +67 -182
  56. package/Components/TextEditor/TextEditorStateProvider.js +20 -56
  57. package/Components/Toolbox/ToolboxContainer.js +5 -18
  58. package/Components/Toolbox/ToolboxRow.js +4 -16
  59. package/Components/Toolbox/styles.js +2 -3
  60. package/Utils/Calc2D.js +3 -9
  61. package/Utils/DOM.js +22 -80
  62. package/Utils/Device.js +2 -6
  63. package/Utils/Image.js +17 -11
  64. package/Utils/Logger.js +8 -32
  65. package/Utils/Range.js +6 -33
  66. package/Utils/String.js +2 -8
  67. package/Utils/UnitConversion.js +3 -9
  68. package/Utils/__tests__/Calc2D.test.js +1 -3
  69. package/Utils/__tests__/DOM.test.js +17 -25
  70. package/Utils/__tests__/Range.test.js +0 -1
  71. package/_demos/UsingExternalControls/App.js +13 -48
  72. package/_demos/UsingRenderProps/App.js +15 -54
  73. package/index.js +2 -6
  74. package/package.json +5 -7
  75. package/src/App.js +35 -38
  76. package/src/CanvasAdapters/PaperJs/Canvas.ts +11 -0
  77. package/src/CanvasAdapters/PaperJs/Utils/UseColorLayer.js +56 -0
  78. package/src/Components/InlineToolbox/InlineToolbox.js +2 -2
  79. package/src/Components/SelectionToolbox/TextTools.js +1 -1
  80. package/src/_demos/UsingExternalControls/App.js +25 -28
  81. package/src/_demos/UsingRenderProps/App.js +16 -19
  82. package/src/index.js +2 -2
@@ -5,69 +5,48 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.loadFonts = loadFonts;
7
7
  exports.transformTextToPath = transformTextToPath;
8
-
9
8
  var _textToSvg = _interopRequireDefault(require("text-to-svg"));
10
-
11
9
  var _String = require("../../../Utils/String");
12
-
13
10
  var _DOM = require("../../../Utils/DOM");
14
-
15
11
  var _TextToSVGUtils = require("./TextToSVGUtils");
16
-
17
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18
-
19
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
20
-
21
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
22
-
23
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
-
13
+ 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); }
14
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
18
+ 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); }
25
19
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
26
-
27
20
  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."); }
28
-
29
21
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
30
-
31
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
32
-
33
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
34
-
22
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
23
+ 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; } }
35
24
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
36
-
25
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
37
26
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
38
-
39
27
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
40
-
41
28
  function getFontsFromSvg(node, fontToFileMap) {
42
29
  var fonts = {};
43
-
44
30
  if (node.nodeName === 'text') {
45
31
  var fontFamily = (0, _String.trimQuotes)((0, _DOM.getClosestAttribute)(node, 'font-family'));
46
32
  var fontWeight = (0, _DOM.getClosestAttribute)(node, 'font-weight');
47
33
  var type = (0, _TextToSVGUtils.convertFontWeightToType)(fontWeight);
48
-
49
34
  if (fontFamily) {
50
35
  var url = fontToFileMap[fontFamily] && fontToFileMap[fontFamily][type];
51
-
52
36
  if (url) {
53
37
  var key = "".concat(fontFamily, ".").concat(type);
54
38
  fonts[key] = url;
55
39
  }
56
40
  }
57
41
  }
58
-
59
42
  var nodes = node.childNodes;
60
-
61
43
  for (var i = 0; i < nodes.length; i++) {
62
44
  Object.assign(fonts, getFontsFromSvg(nodes[i], fontToFileMap));
63
45
  }
64
-
65
46
  return fonts;
66
47
  }
67
-
68
48
  function replaceTextNodesWithPaths(node, textToSVGInstances) {
69
49
  var childNodes = node.childNodes;
70
-
71
50
  if (node.nodeName === 'text') {
72
51
  var fontFamily = (0, _String.trimQuotes)((0, _DOM.getClosestAttribute)(node, 'font-family'));
73
52
  var fontWeight = (0, _DOM.getClosestAttribute)(node, 'font-weight');
@@ -75,7 +54,6 @@ function replaceTextNodesWithPaths(node, textToSVGInstances) {
75
54
  var type = (0, _TextToSVGUtils.convertFontWeightToType)(fontWeight);
76
55
  var key = "".concat(fontFamily, ".").concat(type);
77
56
  var textToSVG = textToSVGInstances[key];
78
-
79
57
  if (!textToSVG) {
80
58
  // eslint-disable-next-line no-console
81
59
  console.error('text to svg for ' + fontFamily + ' ' + type + ' not found!');
@@ -85,8 +63,9 @@ function replaceTextNodesWithPaths(node, textToSVGInstances) {
85
63
  fontSize: fontSize
86
64
  });
87
65
  var svgPathElement = document.createElementNS(node.ownerSVGElement.getAttribute('xmlns'), 'path');
88
- svgPathElement.setAttribute('d', svgPath); // copy attributes
66
+ svgPathElement.setAttribute('d', svgPath);
89
67
 
68
+ // copy attributes
90
69
  svgPathElement.setAttribute('transform', "translate(".concat(node.getAttribute('x') || 0, ",").concat(node.getAttribute('y') || 0, ")"));
91
70
  svgPathElement.setAttribute('fill', node.getAttribute('fill'));
92
71
  node.parentNode.appendChild(svgPathElement);
@@ -101,77 +80,65 @@ function replaceTextNodesWithPaths(node, textToSVGInstances) {
101
80
  return replaceTextNodesWithPaths(childNode, textToSVGInstances);
102
81
  });
103
82
  }
104
- } // cache the TextToSVG instances to avoid multiple loading of the same font
105
-
83
+ }
106
84
 
85
+ // cache the TextToSVG instances to avoid multiple loading of the same font
107
86
  var textToSVGInstances = {};
108
-
109
87
  function loadFonts(_x) {
110
88
  return _loadFonts.apply(this, arguments);
111
89
  }
112
-
113
90
  function _loadFonts() {
114
- _loadFonts = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(fonts) {
115
- return regeneratorRuntime.wrap(function _callee$(_context) {
116
- while (1) {
117
- switch (_context.prev = _context.next) {
118
- case 0:
119
- fonts.forEach(function (url) {
120
- if (!textToSVGInstances[url]) {
121
- textToSVGInstances[url] = new Promise(function (resolve) {
122
- _textToSvg["default"].load(url, function (err, textToSVG) {
123
- // eslint-disable-next-line no-console
124
- err && console.error('Error while loading font family!', err);
125
- textToSVGInstances[url] = textToSVG;
126
- resolve(textToSVG);
127
- });
91
+ _loadFonts = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(fonts) {
92
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
93
+ while (1) switch (_context.prev = _context.next) {
94
+ case 0:
95
+ fonts.forEach(function (url) {
96
+ if (!textToSVGInstances[url]) {
97
+ textToSVGInstances[url] = new Promise(function (resolve) {
98
+ _textToSvg["default"].load(url, function (err, textToSVG) {
99
+ // eslint-disable-next-line no-console
100
+ err && console.error('Error while loading font family!', err);
101
+ textToSVGInstances[url] = textToSVG;
102
+ resolve(textToSVG);
128
103
  });
129
- }
130
- });
131
- _context.next = 3;
132
- return Promise.all(Object.values(textToSVGInstances));
133
-
134
- case 3:
135
- case "end":
136
- return _context.stop();
137
- }
104
+ });
105
+ }
106
+ });
107
+ _context.next = 3;
108
+ return Promise.all(Object.values(textToSVGInstances));
109
+ case 3:
110
+ case "end":
111
+ return _context.stop();
138
112
  }
139
113
  }, _callee);
140
114
  }));
141
115
  return _loadFonts.apply(this, arguments);
142
116
  }
143
-
144
117
  function transformTextToPath(_x2, _x3) {
145
118
  return _transformTextToPath.apply(this, arguments);
146
119
  }
147
-
148
120
  function _transformTextToPath() {
149
- _transformTextToPath = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(xmlDoc, fontToFileMap) {
121
+ _transformTextToPath = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(xmlDoc, fontToFileMap) {
150
122
  var fonts, mappedTextToSVGObjects;
151
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
152
- while (1) {
153
- switch (_context2.prev = _context2.next) {
154
- case 0:
155
- // get all used fonts
156
- fonts = getFontsFromSvg(xmlDoc.documentElement, fontToFileMap);
157
- _context2.next = 3;
158
- return loadFonts(Object.values(fonts));
159
-
160
- case 3:
161
- // remapping TextToSVG objects to the font keys from urls
162
- mappedTextToSVGObjects = Object.entries(fonts).reduce(function (res, _ref) {
163
- var _ref2 = _slicedToArray(_ref, 2),
164
- key = _ref2[0],
165
- url = _ref2[1];
166
-
167
- return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, textToSVGInstances[url]));
168
- }, {});
169
- replaceTextNodesWithPaths(xmlDoc.documentElement, mappedTextToSVGObjects);
170
-
171
- case 5:
172
- case "end":
173
- return _context2.stop();
174
- }
123
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
124
+ while (1) switch (_context2.prev = _context2.next) {
125
+ case 0:
126
+ // get all used fonts
127
+ fonts = getFontsFromSvg(xmlDoc.documentElement, fontToFileMap);
128
+ _context2.next = 3;
129
+ return loadFonts(Object.values(fonts));
130
+ case 3:
131
+ // remapping TextToSVG objects to the font keys from urls
132
+ mappedTextToSVGObjects = Object.entries(fonts).reduce(function (res, _ref) {
133
+ var _ref2 = _slicedToArray(_ref, 2),
134
+ key = _ref2[0],
135
+ url = _ref2[1];
136
+ return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, textToSVGInstances[url]));
137
+ }, {});
138
+ replaceTextNodesWithPaths(xmlDoc.documentElement, mappedTextToSVGObjects);
139
+ case 5:
140
+ case "end":
141
+ return _context2.stop();
175
142
  }
176
143
  }, _callee2);
177
144
  }));
@@ -3,30 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.cleanText = exports.convertFontWeightToType = void 0;
7
-
8
- var convertFontWeightToType = function convertFontWeightToType(fontWeight) {
6
+ exports.convertFontWeightToType = exports.cleanText = void 0;
7
+ var convertFontWeightToType = exports.convertFontWeightToType = function convertFontWeightToType(fontWeight) {
9
8
  var isBold = false;
10
9
  var isItalic = false;
11
-
12
10
  if (fontWeight !== undefined && fontWeight !== null) {
13
11
  if (fontWeight.indexOf('bold') !== -1) {
14
12
  isBold = true;
15
13
  }
16
-
17
14
  if (fontWeight.indexOf('italic') !== -1) {
18
15
  isItalic = true;
19
16
  }
20
17
  }
21
-
22
18
  return isBold && isItalic ? 'boldItalic' : isBold ? 'bold' : isItalic ? 'italic' : 'regular';
23
19
  };
24
-
25
- exports.convertFontWeightToType = convertFontWeightToType;
26
-
27
- var cleanText = function cleanText(text) {
20
+ var cleanText = exports.cleanText = function cleanText(text) {
28
21
  return text.replace(new RegExp(String.fromCharCode(160), 'g'), ' ');
29
- }; // replace nbsp with space
30
-
31
-
32
- exports.cleanText = cleanText;
22
+ }; // replace nbsp with space
@@ -4,19 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = exports.UTF8Base64 = void 0;
7
-
8
7
  /**
9
8
  * UTF8 Base64 encode / decode
10
9
  * original source: http://www.webtoolkit.info/
11
10
  **/
12
- var UTF8Base64 = {
11
+
12
+ var UTF8Base64 = exports.UTF8Base64 = {
13
13
  _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
14
14
  // public method for encoding
15
15
  encode: function encode(input) {
16
16
  var output = '';
17
17
  var i = 0;
18
18
  input = UTF8Base64._utf8_encode(input);
19
-
20
19
  while (i < input.length) {
21
20
  var chr1 = input.charCodeAt(i++);
22
21
  var chr2 = input.charCodeAt(i++);
@@ -25,16 +24,13 @@ var UTF8Base64 = {
25
24
  var enc2 = (chr1 & 3) << 4 | chr2 >> 4;
26
25
  var enc3 = (chr2 & 15) << 2 | chr3 >> 6;
27
26
  var enc4 = chr3 & 63;
28
-
29
27
  if (isNaN(chr2)) {
30
28
  enc3 = enc4 = 64;
31
29
  } else if (isNaN(chr3)) {
32
30
  enc4 = 64;
33
31
  }
34
-
35
32
  output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
36
33
  }
37
-
38
34
  return output;
39
35
  },
40
36
  // public method for decoding
@@ -42,30 +38,22 @@ var UTF8Base64 = {
42
38
  var output = '';
43
39
  var i = 0;
44
40
  input = input.replace(/[^A-Za-z0-9+/=]/g, '');
45
-
46
41
  while (i < input.length) {
47
42
  var enc1 = this._keyStr.indexOf(input.charAt(i++));
48
-
49
43
  var enc2 = this._keyStr.indexOf(input.charAt(i++));
50
-
51
44
  var enc3 = this._keyStr.indexOf(input.charAt(i++));
52
-
53
45
  var enc4 = this._keyStr.indexOf(input.charAt(i++));
54
-
55
46
  var chr1 = enc1 << 2 | enc2 >> 4;
56
47
  var chr2 = (enc2 & 15) << 4 | enc3 >> 2;
57
48
  var chr3 = (enc3 & 3) << 6 | enc4;
58
49
  output = output + String.fromCharCode(chr1);
59
-
60
50
  if (enc3 !== 64) {
61
51
  output = output + String.fromCharCode(chr2);
62
52
  }
63
-
64
53
  if (enc4 !== 64) {
65
54
  output = output + String.fromCharCode(chr3);
66
55
  }
67
56
  }
68
-
69
57
  output = UTF8Base64._utf8_decode(output);
70
58
  return output;
71
59
  },
@@ -73,10 +61,8 @@ var UTF8Base64 = {
73
61
  _utf8_encode: function _utf8_encode(string) {
74
62
  string = string.replace(/\r\n/g, '\n');
75
63
  var utfText = '';
76
-
77
64
  for (var n = 0; n < string.length; n++) {
78
65
  var c = string.charCodeAt(n);
79
-
80
66
  if (c < 128) {
81
67
  utfText += String.fromCharCode(c);
82
68
  } else if (c > 127 && c < 2048) {
@@ -88,17 +74,14 @@ var UTF8Base64 = {
88
74
  utfText += String.fromCharCode(c & 63 | 128);
89
75
  }
90
76
  }
91
-
92
77
  return utfText;
93
78
  },
94
79
  // private method for UTF-8 decoding
95
80
  _utf8_decode: function _utf8_decode(utftext) {
96
81
  var string = '';
97
82
  var i = 0;
98
-
99
83
  while (i < utftext.length) {
100
84
  var c = utftext.charCodeAt(i);
101
-
102
85
  if (c < 128) {
103
86
  string += String.fromCharCode(c);
104
87
  i++;
@@ -108,16 +91,12 @@ var UTF8Base64 = {
108
91
  i += 2;
109
92
  } else {
110
93
  var _c = utftext.charCodeAt(i + 1);
111
-
112
94
  var c3 = utftext.charCodeAt(i + 2);
113
95
  string += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63);
114
96
  i += 3;
115
97
  }
116
98
  }
117
-
118
99
  return string;
119
100
  }
120
101
  };
121
- exports.UTF8Base64 = UTF8Base64;
122
- var _default = UTF8Base64;
123
- exports["default"] = _default;
102
+ var _default = exports["default"] = UTF8Base64;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useColorLayer = void 0;
7
+ var _paper = _interopRequireDefault(require("paper"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
+ var useColorLayer = exports.useColorLayer = function useColorLayer(project, initialColorLayerData) {
10
+ var designerLayer = project.layers.designerLayer;
11
+ var colorLayer;
12
+ if (!designerLayer) {
13
+ console.error('Missing designerLayer!');
14
+ return;
15
+ }
16
+ var init = function init(colorLayerData) {
17
+ var _project$layers$color;
18
+ (_project$layers$color = project.layers.colorLayer) === null || _project$layers$color === void 0 || _project$layers$color.remove();
19
+ var color = colorLayerData === null || colorLayerData === void 0 ? void 0 : colorLayerData.color;
20
+ if (!color) {
21
+ return;
22
+ }
23
+ var path = new _paper["default"].Path.Rectangle(project.layers.designerLayer.view.bounds);
24
+ path.fillColor = color;
25
+ colorLayer = new _paper["default"].Layer({
26
+ name: 'colorLayer',
27
+ children: [path],
28
+ locked: true
29
+ });
30
+ colorLayer.blendMode = 'source-in';
31
+ project.addLayer(colorLayer);
32
+ };
33
+ var toggle = function toggle(on) {
34
+ if (!colorLayer) {
35
+ return;
36
+ }
37
+ var onOrig = colorLayer.visible;
38
+ colorLayer.visible = on;
39
+ project.view.update();
40
+ return function () {
41
+ if (onOrig !== on) {
42
+ colorLayer.visible = onOrig;
43
+ project.view.update();
44
+ }
45
+ };
46
+ };
47
+ var dispose = function dispose() {
48
+ var _colorLayer;
49
+ (_colorLayer = colorLayer) === null || _colorLayer === void 0 || _colorLayer.remove();
50
+ colorLayer = null;
51
+ };
52
+ init(initialColorLayerData);
53
+ return {
54
+ init: init,
55
+ toggle: toggle,
56
+ dispose: dispose
57
+ };
58
+ };