redhotmagma-graphics-editor 1.41.1 → 1.42.0
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.
- package/App.js +90 -165
- package/CanvasAdapters/Mock/Canvas.js +71 -125
- package/CanvasAdapters/Mock/Objects/CanvasObject.js +23 -40
- package/CanvasAdapters/Mock/Objects/Group.js +15 -46
- package/CanvasAdapters/Mock/Objects/Image.js +15 -46
- package/CanvasAdapters/Mock/Objects/Text.js +15 -51
- package/CanvasAdapters/Mock/index.js +0 -1
- package/CanvasAdapters/PaperJs/Canvas.js +268 -398
- package/CanvasAdapters/PaperJs/CanvasRepository.js +6 -23
- package/CanvasAdapters/PaperJs/Modifiers/FontSizeMin.js +2 -5
- package/CanvasAdapters/PaperJs/Objects/CanvasObject.js +33 -65
- package/CanvasAdapters/PaperJs/Objects/Group.js +14 -48
- package/CanvasAdapters/PaperJs/Objects/Image.js +58 -114
- package/CanvasAdapters/PaperJs/Objects/Text.js +43 -99
- package/CanvasAdapters/PaperJs/Utils/HTML2Paper.js +57 -108
- package/CanvasAdapters/PaperJs/Utils/SVGfix.js +9 -30
- package/CanvasAdapters/PaperJs/Utils/StyleParams.js +10 -21
- package/CanvasAdapters/PaperJs/Utils/TextToSVGRepository.js +53 -86
- package/CanvasAdapters/PaperJs/Utils/TextToSVGUtils.js +4 -14
- package/CanvasAdapters/PaperJs/Utils/UTF8Base64.js +3 -24
- package/CanvasAdapters/PaperJs/Utils/UseColorLayer.js +58 -0
- package/CanvasAdapters/PaperJs/Utils/UseMask.js +183 -279
- package/CanvasAdapters/PaperJs/Utils/__tests__/SVGfix.test.js +0 -1
- package/CanvasAdapters/PaperJs/Utils/__tests__/TextToSVGUtils.test.js +0 -1
- package/CanvasAdapters/PaperJs/Utils/__tests__/updateFontStyle.test.js +0 -1
- package/CanvasAdapters/PaperJs/Utils/updateFontStyle.js +5 -11
- package/CanvasAdapters/PaperJs/index.js +0 -1
- package/CanvasInterface/Canvas.js +145 -235
- package/CanvasInterface/CanvasProvider.js +25 -75
- package/CanvasInterface/Objects/CanvasObject.js +68 -148
- package/CanvasInterface/Objects/index.js +0 -1
- package/CanvasInterface/Observable.js +10 -29
- package/CanvasInterface/canvasConnect.js +12 -44
- package/CanvasInterface/index.js +1 -7
- package/Components/Canvas/Canvas.js +14 -41
- package/Components/Canvas/CanvasContainer.js +5 -18
- package/Components/Canvas/styles.js +2 -3
- package/Components/DelayedContainer.js +14 -39
- package/Components/Editor/Editor.js +47 -102
- package/Components/Editor/EditorContainer.js +47 -131
- package/Components/Editor/styles.js +2 -3
- package/Components/InlineToolbox/InlineToolbox.js +49 -142
- package/Components/InlineToolbox/InlineToolboxButton.js +9 -19
- package/Components/InlineToolbox/styles.js +2 -3
- package/Components/ManipulableContainer.js +15 -41
- package/Components/ResizeDetect/ResizeDetect.js +14 -47
- package/Components/Rulers/Ruler.js +20 -68
- package/Components/Rulers/Rulers.js +14 -46
- package/Components/Rulers/styles.js +2 -3
- package/Components/SelectionToolbox/ColorPalette.js +25 -73
- package/Components/SelectionToolbox/SelectionToolbox.js +39 -101
- package/Components/SelectionToolbox/TextTools.js +81 -157
- package/Components/SelectionToolbox/styles.js +2 -3
- package/Components/StandardToolbox/StandardToolbox.js +81 -144
- package/Components/TextEditor/TextEditor.js +67 -182
- package/Components/TextEditor/TextEditorStateProvider.js +20 -56
- package/Components/Toolbox/ToolboxContainer.js +5 -18
- package/Components/Toolbox/ToolboxRow.js +4 -16
- package/Components/Toolbox/styles.js +2 -3
- package/Utils/Calc2D.js +3 -9
- package/Utils/DOM.js +22 -80
- package/Utils/Device.js +2 -6
- package/Utils/Image.js +17 -11
- package/Utils/Logger.js +8 -32
- package/Utils/Range.js +6 -33
- package/Utils/String.js +2 -8
- package/Utils/UnitConversion.js +3 -9
- package/Utils/__tests__/Calc2D.test.js +1 -3
- package/Utils/__tests__/DOM.test.js +17 -25
- package/Utils/__tests__/Range.test.js +0 -1
- package/_demos/UsingExternalControls/App.js +13 -48
- package/_demos/UsingRenderProps/App.js +15 -54
- package/index.js +2 -6
- package/package.json +5 -7
- package/src/App.js +35 -38
- package/src/CanvasAdapters/PaperJs/Canvas.ts +11 -0
- package/src/CanvasAdapters/PaperJs/Utils/UseColorLayer.js +56 -0
- package/src/Components/InlineToolbox/InlineToolbox.js +2 -2
- package/src/Components/SelectionToolbox/TextTools.js +1 -1
- package/src/_demos/UsingExternalControls/App.js +25 -28
- package/src/_demos/UsingRenderProps/App.js +16 -19
- 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(
|
|
20
|
-
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
function
|
|
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
|
|
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);
|
|
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
|
-
}
|
|
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__*/
|
|
115
|
-
return
|
|
116
|
-
while (1) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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__*/
|
|
121
|
+
_transformTextToPath = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(xmlDoc, fontToFileMap) {
|
|
150
122
|
var fonts, mappedTextToSVGObjects;
|
|
151
|
-
return
|
|
152
|
-
while (1) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
+
};
|