@anu3ev/fabric-image-editor 0.1.40 → 0.1.42

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 (2) hide show
  1. package/dist/main.js +542 -595
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -1,47 +1,47 @@
1
- var Le = Object.defineProperty;
1
+ var Ee = Object.defineProperty;
2
2
  var G = Object.getOwnPropertySymbols;
3
- var Me = Object.prototype.hasOwnProperty, fe = Object.prototype.propertyIsEnumerable;
4
- var me = (o, e, t) => e in o ? Le(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t, C = (o, e) => {
3
+ var fe = Object.prototype.hasOwnProperty, je = Object.prototype.propertyIsEnumerable;
4
+ var Me = (o, e, t) => e in o ? Ee(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t, C = (o, e) => {
5
5
  for (var t in e || (e = {}))
6
- Me.call(e, t) && me(o, t, e[t]);
6
+ fe.call(e, t) && Me(o, t, e[t]);
7
7
  if (G)
8
8
  for (var t of G(e))
9
- fe.call(e, t) && me(o, t, e[t]);
9
+ je.call(e, t) && Me(o, t, e[t]);
10
10
  return o;
11
11
  };
12
12
  var X = (o, e) => {
13
13
  var t = {};
14
14
  for (var a in o)
15
- Me.call(o, a) && e.indexOf(a) < 0 && (t[a] = o[a]);
15
+ fe.call(o, a) && e.indexOf(a) < 0 && (t[a] = o[a]);
16
16
  if (o != null && G)
17
17
  for (var a of G(o))
18
- e.indexOf(a) < 0 && fe.call(o, a) && (t[a] = o[a]);
18
+ e.indexOf(a) < 0 && je.call(o, a) && (t[a] = o[a]);
19
19
  return t;
20
20
  };
21
21
  var Q = (o, e, t) => new Promise((a, r) => {
22
- var i = (c) => {
22
+ var n = (c) => {
23
23
  try {
24
24
  s(t.next(c));
25
25
  } catch (u) {
26
26
  r(u);
27
27
  }
28
- }, n = (c) => {
28
+ }, i = (c) => {
29
29
  try {
30
30
  s(t.throw(c));
31
31
  } catch (u) {
32
32
  r(u);
33
33
  }
34
- }, s = (c) => c.done ? a(c.value) : Promise.resolve(c.value).then(i, n);
34
+ }, s = (c) => c.done ? a(c.value) : Promise.resolve(c.value).then(n, i);
35
35
  s((t = t.apply(o, e)).next());
36
36
  });
37
- import { ActiveSelection as H, util as P, controlsUtils as Ee, InteractiveFabricObject as Oe, loadSVGFromURL as Te, FabricImage as q, Point as ke, Rect as xe, Circle as Be, Triangle as Ze, Group as ze, Canvas as Ue, Pattern as Ye } from "fabric";
37
+ import { ActiveSelection as R, util as P, controlsUtils as Oe, InteractiveFabricObject as Te, loadSVGFromURL as ke, FabricImage as ee, Point as K, Rect as xe, Circle as Be, Triangle as Ze, Group as ze, Canvas as Ue, Pattern as Ye } from "fabric";
38
38
  import { create as _e } from "jsondiffpatch";
39
- var Re = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", A = function() {
39
+ var He = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", A = function() {
40
40
  for (var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 21, t = "", a = crypto.getRandomValues(new Uint8Array(e |= 0)); e--; )
41
- t += Re[a[e] & 63];
41
+ t += He[a[e] & 63];
42
42
  return t;
43
43
  };
44
- class R {
44
+ class H {
45
45
  /**
46
46
  * Конструктор принимает редактор и опции.
47
47
  * @param {Object} params
@@ -58,7 +58,7 @@ class R {
58
58
  * @param {Boolean} [params.options.resetObjectFitByDoubleClick] — сброс фита объекта по двойному клику
59
59
  */
60
60
  constructor({ editor: e, options: t = {} }) {
61
- this.isDragging = !1, this.lastMouseX = 0, this.lastMouseY = 0, this.isUndoRedoKeyPressed = !1, this.isSpacePressed = !1, this.canvasDragging = !1, this.mouseWheelZooming = !1, this.bringToFrontOnSelection = !1, this.resetObjectFitByDoubleClick = !1, this.copyObjectsByHotkey = !1, this.pasteImageFromClipboard = !1, this.undoRedoByHotKeys = !1, this.selectAllByHotkey = !1, this.deleteObjectsByHotkey = !1, this.adaptCanvasToContainerOnResize = !1, this.editor = e, this.canvas = e.canvas, this.options = t, this.handleContainerResizeBound = R.debounce(this.handleContainerResize.bind(this), 500), this.handleCopyEventBound = this.handleCopyEvent.bind(this), this.handlePasteEventBound = this.handlePasteEvent.bind(this), this.handleUndoRedoEventBound = this.handleUndoRedoEvent.bind(this), this.handleUndoRedoKeyUpBound = this.handleUndoRedoKeyUp.bind(this), this.handleSelectAllEventBound = this.handleSelectAllEvent.bind(this), this.handleDeleteObjectsEventBound = this.handleDeleteObjectsEvent.bind(this), this.handleSpaceKeyDownBound = this.handleSpaceKeyDown.bind(this), this.handleSpaceKeyUpBound = this.handleSpaceKeyUp.bind(this), this.handleObjectModifiedHistoryBound = R.debounce(this.handleObjectModifiedHistory.bind(this), 300), this.handleObjectRotatingHistoryBound = R.debounce(this.handleObjectRotatingHistory.bind(this), 300), this.handleObjectAddedHistoryBound = this.handleObjectAddedHistory.bind(this), this.handleObjectRemovedHistoryBound = this.handleObjectRemovedHistory.bind(this), this.handleOverlayUpdateBound = this.handleOverlayUpdate.bind(this), this.handleCanvasDragStartBound = this.handleCanvasDragStart.bind(this), this.handleCanvasDraggingBound = this.handleCanvasDragging.bind(this), this.handleCanvasDragEndBound = this.handleCanvasDragEnd.bind(this), this.handleMouseWheelZoomBound = this.handleMouseWheelZoom.bind(this), this.handleBringToFrontBound = this.handleBringToFront.bind(this), this.handleResetObjectFitBound = this.handleResetObjectFit.bind(this), this.handleLockedSelectionBound = this._filterLockedSelection.bind(this), this.init();
61
+ this.isDragging = !1, this.lastMouseX = 0, this.lastMouseY = 0, this.isUndoRedoKeyPressed = !1, this.isSpacePressed = !1, this.canvasDragging = !1, this.mouseWheelZooming = !1, this.bringToFrontOnSelection = !1, this.resetObjectFitByDoubleClick = !1, this.copyObjectsByHotkey = !1, this.pasteImageFromClipboard = !1, this.undoRedoByHotKeys = !1, this.selectAllByHotkey = !1, this.deleteObjectsByHotkey = !1, this.adaptCanvasToContainerOnResize = !1, this.editor = e, this.canvas = e.canvas, this.options = t, this.handleContainerResizeBound = H.debounce(this.handleContainerResize.bind(this), 500), this.handleCopyEventBound = this.handleCopyEvent.bind(this), this.handlePasteEventBound = this.handlePasteEvent.bind(this), this.handleUndoRedoEventBound = this.handleUndoRedoEvent.bind(this), this.handleUndoRedoKeyUpBound = this.handleUndoRedoKeyUp.bind(this), this.handleSelectAllEventBound = this.handleSelectAllEvent.bind(this), this.handleDeleteObjectsEventBound = this.handleDeleteObjectsEvent.bind(this), this.handleSpaceKeyDownBound = this.handleSpaceKeyDown.bind(this), this.handleSpaceKeyUpBound = this.handleSpaceKeyUp.bind(this), this.handleObjectModifiedHistoryBound = H.debounce(this.handleObjectModifiedHistory.bind(this), 300), this.handleObjectRotatingHistoryBound = H.debounce(this.handleObjectRotatingHistory.bind(this), 300), this.handleObjectAddedHistoryBound = this.handleObjectAddedHistory.bind(this), this.handleObjectRemovedHistoryBound = this.handleObjectRemovedHistory.bind(this), this.handleOverlayUpdateBound = this.handleOverlayUpdate.bind(this), this.handleCanvasDragStartBound = this.handleCanvasDragStart.bind(this), this.handleCanvasDraggingBound = this.handleCanvasDragging.bind(this), this.handleCanvasDragEndBound = this.handleCanvasDragEnd.bind(this), this.handleMouseWheelZoomBound = this.handleMouseWheelZoom.bind(this), this.handleBringToFrontBound = this.handleBringToFront.bind(this), this.handleResetObjectFitBound = this.handleResetObjectFit.bind(this), this.handleLockedSelectionBound = this._filterLockedSelection.bind(this), this.init();
62
62
  }
63
63
  /**
64
64
  * Инициализация всех обработчиков согласно опциям.
@@ -69,14 +69,14 @@ class R {
69
69
  canvasDragging: t,
70
70
  mouseWheelZooming: a,
71
71
  bringToFrontOnSelection: r,
72
- copyObjectsByHotkey: i,
73
- pasteImageFromClipboard: n,
72
+ copyObjectsByHotkey: n,
73
+ pasteImageFromClipboard: i,
74
74
  undoRedoByHotKeys: s,
75
75
  selectAllByHotkey: c,
76
76
  deleteObjectsByHotkey: u,
77
- resetObjectFitByDoubleClick: d
77
+ resetObjectFitByDoubleClick: l
78
78
  } = this.options;
79
- t && (this.canvas.on("mouse:down", this.handleCanvasDragStartBound), this.canvas.on("mouse:move", this.handleCanvasDraggingBound), this.canvas.on("mouse:up", this.handleCanvasDragEndBound), document.addEventListener("keydown", this.handleSpaceKeyDownBound, { capture: !0 }), document.addEventListener("keyup", this.handleSpaceKeyUpBound, { capture: !0 })), a && this.canvas.on("mouse:wheel", this.handleMouseWheelZoomBound), r && (this.canvas.on("selection:created", this.handleBringToFrontBound), this.canvas.on("selection:updated", this.handleBringToFrontBound)), d && this.canvas.on("mouse:dblclick", this.handleResetObjectFitBound), e && window.addEventListener("resize", this.handleContainerResizeBound, { capture: !0 }), i && document.addEventListener("keydown", this.handleCopyEventBound, { capture: !0 }), n && document.addEventListener("paste", this.handlePasteEventBound, { capture: !0 }), s && (document.addEventListener("keydown", this.handleUndoRedoEventBound, { capture: !0 }), document.addEventListener("keyup", this.handleUndoRedoKeyUpBound, { capture: !0 })), c && document.addEventListener("keydown", this.handleSelectAllEventBound, { capture: !0 }), u && document.addEventListener("keydown", this.handleDeleteObjectsEventBound, { capture: !0 }), this.canvas.on("object:modified", this.handleObjectModifiedHistoryBound), this.canvas.on("object:rotating", this.handleObjectRotatingHistoryBound), this.canvas.on("object:added", this.handleObjectAddedHistoryBound), this.canvas.on("object:removed", this.handleObjectRemovedHistoryBound), this.canvas.on("object:added", this.handleOverlayUpdateBound), this.canvas.on("selection:created", this.handleOverlayUpdateBound), this.canvas.on("selection:created", this.handleLockedSelectionBound), this.canvas.on("selection:updated", this.handleLockedSelectionBound);
79
+ t && (this.canvas.on("mouse:down", this.handleCanvasDragStartBound), this.canvas.on("mouse:move", this.handleCanvasDraggingBound), this.canvas.on("mouse:up", this.handleCanvasDragEndBound), document.addEventListener("keydown", this.handleSpaceKeyDownBound, { capture: !0 }), document.addEventListener("keyup", this.handleSpaceKeyUpBound, { capture: !0 })), a && this.canvas.on("mouse:wheel", this.handleMouseWheelZoomBound), r && (this.canvas.on("selection:created", this.handleBringToFrontBound), this.canvas.on("selection:updated", this.handleBringToFrontBound)), l && this.canvas.on("mouse:dblclick", this.handleResetObjectFitBound), e && window.addEventListener("resize", this.handleContainerResizeBound, { capture: !0 }), n && document.addEventListener("keydown", this.handleCopyEventBound, { capture: !0 }), i && document.addEventListener("paste", this.handlePasteEventBound, { capture: !0 }), s && (document.addEventListener("keydown", this.handleUndoRedoEventBound, { capture: !0 }), document.addEventListener("keyup", this.handleUndoRedoKeyUpBound, { capture: !0 })), c && document.addEventListener("keydown", this.handleSelectAllEventBound, { capture: !0 }), u && document.addEventListener("keydown", this.handleDeleteObjectsEventBound, { capture: !0 }), this.canvas.on("object:modified", this.handleObjectModifiedHistoryBound), this.canvas.on("object:rotating", this.handleObjectRotatingHistoryBound), this.canvas.on("object:added", this.handleObjectAddedHistoryBound), this.canvas.on("object:removed", this.handleObjectRemovedHistoryBound), this.canvas.on("object:added", this.handleOverlayUpdateBound), this.canvas.on("selection:created", this.handleOverlayUpdateBound), this.canvas.on("selection:created", this.handleLockedSelectionBound), this.canvas.on("selection:updated", this.handleLockedSelectionBound);
80
80
  }
81
81
  /**
82
82
  * При массовом выделении объектов удаляем из него залоченные.
@@ -85,8 +85,8 @@ class R {
85
85
  * @param {TPointerEvent} [params.e] - событие указателя (опционально)
86
86
  */
87
87
  _filterLockedSelection({ selected: e, e: t }) {
88
- if (!(e != null && e.length) || !(t instanceof MouseEvent) || e.length === 1 || !e.some((n) => n.locked)) return;
89
- const r = e.filter((n) => !n.locked);
88
+ if (!(e != null && e.length) || !(t instanceof MouseEvent) || e.length === 1 || !e.some((i) => i.locked)) return;
89
+ const r = e.filter((i) => !i.locked);
90
90
  if (r.length === 0) {
91
91
  this.canvas.discardActiveObject();
92
92
  return;
@@ -95,10 +95,10 @@ class R {
95
95
  this.canvas.setActiveObject(r[0]);
96
96
  return;
97
97
  }
98
- const i = new H(r, {
98
+ const n = new R(r, {
99
99
  canvas: this.canvas
100
100
  });
101
- this.canvas.setActiveObject(i), this.canvas.requestRenderAll();
101
+ this.canvas.setActiveObject(n), this.canvas.requestRenderAll();
102
102
  }
103
103
  /**
104
104
  * Обработчики для сохранения состояния редактора в истории.
@@ -158,8 +158,8 @@ class R {
158
158
  */
159
159
  handleUndoRedoEvent(e) {
160
160
  return Q(this, null, function* () {
161
- const { ctrlKey: t, metaKey: a, code: r, repeat: i } = e;
162
- !t && !a || i || !/Mac/i.test(navigator.userAgent) && this.isUndoRedoKeyPressed || (r === "KeyZ" ? (e.preventDefault(), this.isUndoRedoKeyPressed = !0, yield this.editor.historyManager.undo()) : r === "KeyY" && (e.preventDefault(), this.isUndoRedoKeyPressed = !0, yield this.editor.historyManager.redo()));
161
+ const { ctrlKey: t, metaKey: a, code: r, repeat: n } = e;
162
+ !t && !a || n || !/Mac/i.test(navigator.userAgent) && this.isUndoRedoKeyPressed || (r === "KeyZ" ? (e.preventDefault(), this.isUndoRedoKeyPressed = !0, yield this.editor.historyManager.undo()) : r === "KeyY" && (e.preventDefault(), this.isUndoRedoKeyPressed = !0, yield this.editor.historyManager.redo()));
163
163
  });
164
164
  }
165
165
  /**
@@ -197,12 +197,12 @@ class R {
197
197
  */
198
198
  handleSpaceKeyDown(e) {
199
199
  if (e.code !== "Space") return;
200
- const { canvas: t, editor: a, isSpacePressed: r, isDragging: i } = this;
201
- r || i || (this.isSpacePressed = !0, e.preventDefault(), t.set({
200
+ const { canvas: t, editor: a, isSpacePressed: r, isDragging: n } = this;
201
+ r || n || (this.isSpacePressed = !0, e.preventDefault(), t.set({
202
202
  selection: !1,
203
203
  defaultCursor: "grab"
204
- }), t.setCursor("grab"), a.canvasManager.getObjects().forEach((n) => {
205
- n.set({
204
+ }), t.setCursor("grab"), a.canvasManager.getObjects().forEach((i) => {
205
+ i.set({
206
206
  selectable: !1,
207
207
  evented: !1
208
208
  });
@@ -297,14 +297,14 @@ class R {
297
297
  static debounce(e, t) {
298
298
  let a = null;
299
299
  return function(...r) {
300
- const i = this;
300
+ const n = this;
301
301
  a && clearTimeout(a), a = setTimeout(() => {
302
- e.apply(i, r);
302
+ e.apply(n, r);
303
303
  }, t);
304
304
  };
305
305
  }
306
306
  }
307
- class He {
307
+ class Re {
308
308
  /**
309
309
  * @description Класс для динамической загрузки внешних модулей.
310
310
  */
@@ -349,10 +349,10 @@ class Pe {
349
349
  } = e, {
350
350
  requestId: a,
351
351
  success: r,
352
- data: i,
353
- error: n
352
+ data: n,
353
+ error: i
354
354
  } = t, s = this._callbacks.get(a);
355
- s && (r ? s.resolve(i) : s.reject(new Error(n)), this._callbacks.delete(a));
355
+ s && (r ? s.resolve(n) : s.reject(new Error(i)), this._callbacks.delete(a));
356
356
  }
357
357
  /**
358
358
  * Универсальный метод отправки команды в воркер
@@ -363,10 +363,10 @@ class Pe {
363
363
  */
364
364
  post(e, t) {
365
365
  var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [], r = "".concat(e, ":").concat(A(8));
366
- return new Promise((i, n) => {
366
+ return new Promise((n, i) => {
367
367
  this._callbacks.set(r, {
368
- resolve: i,
369
- reject: n
368
+ resolve: n,
369
+ reject: i
370
370
  }), this.worker.postMessage({
371
371
  action: e,
372
372
  payload: t,
@@ -381,24 +381,24 @@ class Pe {
381
381
  this.worker.terminate();
382
382
  }
383
383
  }
384
- var I = 12, We = 2, te = 8, ae = 20, Fe = 100, re = 20, ie = 8, Ve = 100, ne = 32, se = 1, Ge = "#2B2D33", oe = "#3D8BF4", ce = "#FFFFFF";
384
+ var I = 12, Fe = 2, ae = 8, re = 20, We = 100, ne = 20, ie = 8, Ve = 100, se = 32, oe = 1, Ge = "#2B2D33", ce = "#3D8BF4", ue = "#FFFFFF";
385
385
  function J(o, e, t, a, r) {
386
- var i = I, n = We;
387
- o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-12 / 2, -12 / 2, i, i, n), o.fill(), o.stroke(), o.restore();
388
- }
389
- function je(o, e, t, a, r) {
390
- var i = te, n = ae, s = Fe;
391
- o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-8 / 2, -20 / 2, i, n, s), o.fill(), o.stroke(), o.restore();
386
+ var n = I, i = Fe;
387
+ o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(r.angle)), o.fillStyle = ue, o.strokeStyle = ce, o.lineWidth = oe, o.beginPath(), o.roundRect(-12 / 2, -12 / 2, n, n, i), o.fill(), o.stroke(), o.restore();
392
388
  }
393
389
  function ye(o, e, t, a, r) {
394
- var i = re, n = ie, s = Ve;
395
- o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-20 / 2, -8 / 2, i, n, s), o.fill(), o.stroke(), o.restore();
390
+ var n = ae, i = re, s = We;
391
+ o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(r.angle)), o.fillStyle = ue, o.strokeStyle = ce, o.lineWidth = oe, o.beginPath(), o.roundRect(-8 / 2, -20 / 2, n, i, s), o.fill(), o.stroke(), o.restore();
392
+ }
393
+ function pe(o, e, t, a, r) {
394
+ var n = ne, i = ie, s = Ve;
395
+ o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(r.angle)), o.fillStyle = ue, o.strokeStyle = ce, o.lineWidth = oe, o.beginPath(), o.roundRect(-20 / 2, -8 / 2, n, i, s), o.fill(), o.stroke(), o.restore();
396
396
  }
397
- var Xe = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", Se = new Image();
398
- Se.src = Xe;
397
+ var Xe = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", Ce = new Image();
398
+ Ce.src = Xe;
399
399
  function Qe(o, e, t, a, r) {
400
- var i = ne, n = i / 2;
401
- o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(r.angle)), o.fillStyle = Ge, o.beginPath(), o.arc(0, 0, n, 0, 2 * Math.PI), o.fill(), o.drawImage(Se, -16 / 2, -16 / 2, n, n), o.restore();
400
+ var n = se, i = n / 2;
401
+ o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(r.angle)), o.fillStyle = Ge, o.beginPath(), o.arc(0, 0, i, 0, 2 * Math.PI), o.fill(), o.drawImage(Ce, -16 / 2, -16 / 2, i, i), o.restore();
402
402
  }
403
403
  var Je = {
404
404
  // Угловые точки
@@ -432,30 +432,30 @@ var Je = {
432
432
  },
433
433
  // Середина вертикалей
434
434
  ml: {
435
- render: je,
436
- sizeX: te,
437
- sizeY: ae,
435
+ render: ye,
436
+ sizeX: ae,
437
+ sizeY: re,
438
438
  offsetX: 0,
439
439
  offsetY: 0
440
440
  },
441
441
  mr: {
442
- render: je,
443
- sizeX: te,
444
- sizeY: ae,
442
+ render: ye,
443
+ sizeX: ae,
444
+ sizeY: re,
445
445
  offsetX: 0,
446
446
  offsetY: 0
447
447
  },
448
448
  // Середина горизонталей
449
449
  mt: {
450
- render: ye,
451
- sizeX: re,
450
+ render: pe,
451
+ sizeX: ne,
452
452
  sizeY: ie,
453
453
  offsetX: 0,
454
454
  offsetY: 0
455
455
  },
456
456
  mb: {
457
- render: ye,
458
- sizeX: re,
457
+ render: pe,
458
+ sizeX: ne,
459
459
  sizeY: ie,
460
460
  offsetX: 0,
461
461
  offsetY: 0
@@ -463,15 +463,15 @@ var Je = {
463
463
  // Специальный «rotate» контрол
464
464
  mtr: {
465
465
  render: Qe,
466
- sizeX: ne,
467
- sizeY: ne,
466
+ sizeX: se,
467
+ sizeY: se,
468
468
  offsetX: 0,
469
469
  offsetY: -32
470
470
  }
471
471
  };
472
472
  class Ke {
473
473
  static apply() {
474
- var e = Ee.createObjectDefaultControls();
474
+ var e = Oe.createObjectDefaultControls();
475
475
  Object.entries(Je).forEach((t) => {
476
476
  var [a, r] = t;
477
477
  Object.assign(e[a], {
@@ -480,17 +480,17 @@ class Ke {
480
480
  sizeY: r.sizeY,
481
481
  offsetX: r.offsetX,
482
482
  offsetY: r.offsetY
483
- }), a === "mtr" && (e[a].cursorStyle = "grab", e[a].mouseDownHandler = (i, n, s, c) => {
484
- var u = n.target;
483
+ }), a === "mtr" && (e[a].cursorStyle = "grab", e[a].mouseDownHandler = (n, i, s, c) => {
484
+ var u = i.target;
485
485
  u.canvas.setCursor("grabbing");
486
486
  });
487
- }), Oe.ownDefaults.controls = e;
487
+ }), Te.ownDefaults.controls = e;
488
488
  }
489
489
  }
490
- var $e = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNi44NzUgMi41YS42MjUuNjI1IDAgMCAwLS42MjUuNjI0VjYuMjVIMy4xMjVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2MTBjMCAuMzQ1LjI4LjYyNS42MjUuNjI1aDEwYy4zNDUgMCAuNjI1LS4yOC42MjUtLjYyNXYtMy4xMjZoMy4xMjVjLjM0NSAwIC42MjUtLjI4LjYyNS0uNjI1di0xMGEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTEwWm02Ljg3NSAxMGgyLjVWMy43NUg3LjV2Mi41aDUuNjI1Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NS42MjRabS0xMCAzLjc1VjcuNWg4Ljc1djguNzVIMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", qe = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDcuNWMwLS42OS41Ni0xLjI1IDEuMjUtMS4yNWgxMi41Yy42OSAwIDEuMjUuNTYgMS4yNSAxLjI1djguNzVjMCAuNjktLjU2IDEuMjUtMS4yNSAxLjI1SDMuNzVjLS42OSAwLTEuMjUtLjU2LTEuMjUtMS4yNVY3LjVabTEzLjc1IDBIMy43NXY4Ljc1aDEyLjVWNy41WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMS44NzVhMi4xODggMi4xODggMCAwIDAtMi4xODggMi4xODh2Mi44MTJhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyYTMuNDM3IDMuNDM3IDAgMSAxIDYuODc1IDB2Mi44MTNhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyQTIuMTg4IDIuMTg4IDAgMCAwIDEwIDEuODc2WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEwIDEyLjgxM2EuOTM3LjkzNyAwIDEgMCAwLTEuODc1LjkzNy45MzcgMCAwIDAgMCAxLjg3NFoiLz48L3N2Zz4=", et = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE2LjI1IDYuMjVINy41VjQuMzc1YTIuNSAyLjUgMCAwIDEgMi41LTIuNWMxLjIgMCAyLjI4MS44NiAyLjUxMiAyYS42MjUuNjI1IDAgMCAwIDEuMjI2LS4yNWMtLjM1NC0xLjczOC0xLjkyNS0zLTMuNzM4LTNhMy43NTQgMy43NTQgMCAwIDAtMy43NSAzLjc1VjYuMjVoLTIuNUExLjI1IDEuMjUgMCAwIDAgMi41IDcuNXY4Ljc1YTEuMjUgMS4yNSAwIDAgMCAxLjI1IDEuMjVoMTIuNWExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjcuNWExLjI1IDEuMjUgMCAwIDAtMS4yNS0xLjI1Wm0wIDEwSDMuNzVWNy41aDEyLjV2OC43NVptLTUuMzEzLTQuMzc1YS45MzcuOTM3IDAgMSAxLTEuODc0IDAgLjkzNy45MzcgMCAwIDEgMS44NzQgMFoiLz48L3N2Zz4K", tt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTIuNSA4LjEyNSAxMCAxMi41bDcuNS00LjM3NUwxMCAzLjc1IDIuNSA4LjEyNVoiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjY4NSAzLjIxYS42MjUuNjI1IDAgMCAxIC42MyAwbDcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOGw3LjUtNC4zNzVaTTMuNzQgOC4xMjUgMTAgMTEuNzc2bDYuMjYtMy42NTFMMTAgNC40NzQgMy43NCA4LjEyNVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA5LjQ2YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDExLjc3NmwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA5LjQ2Wm0tMS42NiAyLjQxNUwxMCAxNS41MjZsNi4yNi0zLjY1MS0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNi0xLjk3NSAxLjE1MVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", at = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMy4yMWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDguMTI1IDEwIDExLjc3Nmw2LjI2LTMuNjUxTDEwIDQuNDc0IDMuNzQgOC4xMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjcxNCAxMCAxMCAxMi41bDQuMjg2LTIuNSAzLjIxNCAxLjg3NUwxMCAxNi4yNWwtNy41LTQuMzc1TDUuNzE0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDkuNDZhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgMTEuNzc2bDMuOTctMi4zMTZhLjYyNS42MjUgMCAwIDEgLjYzIDBsMy4yMTUgMS44NzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhMNS40IDkuNDZabS0xLjY2IDIuNDE1TDEwIDE1LjUyNmw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2LTEuOTc1IDEuMTUxWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", rt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTIuNSA2LjI1IDcuNSA0LjM3NSA3LjUtNC4zNzVMMTAgMS44NzUgMi41IDYuMjVaIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMS4zMzVhLjYyNS42MjUgMCAwIDEgLjYzIDBsNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4bDcuNS00LjM3NVpNMy43NCA2LjI1IDEwIDkuOTAxbDYuMjYtMy42NTFMMTAgMi41OTkgMy43NCA2LjI1WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDExLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCAxMy42NTFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgMTEuMzM1Wk0zLjc0IDEzLjc1IDEwIDE3LjQwMWw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTMuNzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgNy41ODVhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgOS45MDFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgNy41ODVaTTMuNzQgMTAgMTAgMTMuNjUxIDE2LjI2IDEwbC0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNkwzLjc0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", it = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMS45NiAxMy40MzVhLjYyNS42MjUgMCAwIDEgLjg1NS0uMjI1TDEwIDE3LjQwMWw3LjE4NS00LjE5YS42MjUuNjI1IDAgMCAxIC42MyAxLjA3OWwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEtLjIyNS0uODU1Wk05LjY4NSAxLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDYuMjUgMTAgOS45MDFsNi4yNi0zLjY1MUwxMCAyLjU5OSAzLjc0IDYuMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im01LjcxNCAxMS44NzUgNC4yODYgMi41IDQuMjg2LTIuNUwxNy41IDEzLjc1IDEwIDE4LjEyNSAyLjUgMTMuNzVsMy4yMTQtMS44NzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgMTEuMzM1YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDEzLjY1MWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCAxMS4zMzVaTTMuNzQgMTMuNzUgMTAgMTcuNDAxbDYuMjYtMy42NTEtMS45NzQtMS4xNTEtMy45NzEgMi4zMTZhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTMuOTctMi4zMTZMMy43NCAxMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA3LjU4NWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCA5LjkwMWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA3LjU4NVpNMy43NCAxMCAxMCAxMy42NTEgMTYuMjYgMTBsLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTBaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=", nt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0VDNEU0MCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4xMjUgMS4yNUExLjg3NSAxLjg3NSAwIDAgMCA2LjI1IDMuMTI1di42MjVIMy4xMjVhLjYyNS42MjUgMCAwIDAgMCAxLjI1aC42MjV2MTEuMjVBMS4yNSAxLjI1IDAgMCAwIDUgMTcuNWgxMGExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjVoLjYyNWEuNjI1LjYyNSAwIDAgMCAwLTEuMjVIMTMuNzV2LS42MjVhMS44NzUgMS44NzUgMCAwIDAtMS44NzUtMS44NzVoLTMuNzVabTQuMzc1IDIuNXYtLjYyNWEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2LjYyNWg1Wk01IDE2LjI1VjVoMTB2MTEuMjVINVpNOC4xMjUgNy41Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NWEuNjI1LjYyNSAwIDEgMS0xLjI1IDB2LTVjMC0uMzQ1LjI4LS42MjUuNjI1LS42MjVabTQuMzc1IDUuNjI1di01YS42MjUuNjI1IDAgMCAwLTEuMjUgMHY1YS42MjUuNjI1IDAgMSAwIDEuMjUgMFoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==";
491
- function pe(o, e, t, a, r, i, n) {
490
+ var $e = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNi44NzUgMi41YS42MjUuNjI1IDAgMCAwLS42MjUuNjI0VjYuMjVIMy4xMjVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2MTBjMCAuMzQ1LjI4LjYyNS42MjUuNjI1aDEwYy4zNDUgMCAuNjI1LS4yOC42MjUtLjYyNXYtMy4xMjZoMy4xMjVjLjM0NSAwIC42MjUtLjI4LjYyNS0uNjI1di0xMGEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTEwWm02Ljg3NSAxMGgyLjVWMy43NUg3LjV2Mi41aDUuNjI1Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NS42MjRabS0xMCAzLjc1VjcuNWg4Ljc1djguNzVIMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", qe = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDcuNWMwLS42OS41Ni0xLjI1IDEuMjUtMS4yNWgxMi41Yy42OSAwIDEuMjUuNTYgMS4yNSAxLjI1djguNzVjMCAuNjktLjU2IDEuMjUtMS4yNSAxLjI1SDMuNzVjLS42OSAwLTEuMjUtLjU2LTEuMjUtMS4yNVY3LjVabTEzLjc1IDBIMy43NXY4Ljc1aDEyLjVWNy41WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMS44NzVhMi4xODggMi4xODggMCAwIDAtMi4xODggMi4xODh2Mi44MTJhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyYTMuNDM3IDMuNDM3IDAgMSAxIDYuODc1IDB2Mi44MTNhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyQTIuMTg4IDIuMTg4IDAgMCAwIDEwIDEuODc2WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEwIDEyLjgxM2EuOTM3LjkzNyAwIDEgMCAwLTEuODc1LjkzNy45MzcgMCAwIDAgMCAxLjg3NFoiLz48L3N2Zz4=", et = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE2LjI1IDYuMjVINy41VjQuMzc1YTIuNSAyLjUgMCAwIDEgMi41LTIuNWMxLjIgMCAyLjI4MS44NiAyLjUxMiAyYS42MjUuNjI1IDAgMCAwIDEuMjI2LS4yNWMtLjM1NC0xLjczOC0xLjkyNS0zLTMuNzM4LTNhMy43NTQgMy43NTQgMCAwIDAtMy43NSAzLjc1VjYuMjVoLTIuNUExLjI1IDEuMjUgMCAwIDAgMi41IDcuNXY4Ljc1YTEuMjUgMS4yNSAwIDAgMCAxLjI1IDEuMjVoMTIuNWExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjcuNWExLjI1IDEuMjUgMCAwIDAtMS4yNS0xLjI1Wm0wIDEwSDMuNzVWNy41aDEyLjV2OC43NVptLTUuMzEzLTQuMzc1YS45MzcuOTM3IDAgMSAxLTEuODc0IDAgLjkzNy45MzcgMCAwIDEgMS44NzQgMFoiLz48L3N2Zz4K", tt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTIuNSA4LjEyNSAxMCAxMi41bDcuNS00LjM3NUwxMCAzLjc1IDIuNSA4LjEyNVoiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjY4NSAzLjIxYS42MjUuNjI1IDAgMCAxIC42MyAwbDcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOGw3LjUtNC4zNzVaTTMuNzQgOC4xMjUgMTAgMTEuNzc2bDYuMjYtMy42NTFMMTAgNC40NzQgMy43NCA4LjEyNVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA5LjQ2YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDExLjc3NmwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA5LjQ2Wm0tMS42NiAyLjQxNUwxMCAxNS41MjZsNi4yNi0zLjY1MS0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNi0xLjk3NSAxLjE1MVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", at = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMy4yMWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDguMTI1IDEwIDExLjc3Nmw2LjI2LTMuNjUxTDEwIDQuNDc0IDMuNzQgOC4xMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjcxNCAxMCAxMCAxMi41bDQuMjg2LTIuNSAzLjIxNCAxLjg3NUwxMCAxNi4yNWwtNy41LTQuMzc1TDUuNzE0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDkuNDZhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgMTEuNzc2bDMuOTctMi4zMTZhLjYyNS42MjUgMCAwIDEgLjYzIDBsMy4yMTUgMS44NzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhMNS40IDkuNDZabS0xLjY2IDIuNDE1TDEwIDE1LjUyNmw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2LTEuOTc1IDEuMTUxWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", rt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTIuNSA2LjI1IDcuNSA0LjM3NSA3LjUtNC4zNzVMMTAgMS44NzUgMi41IDYuMjVaIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMS4zMzVhLjYyNS42MjUgMCAwIDEgLjYzIDBsNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4bDcuNS00LjM3NVpNMy43NCA2LjI1IDEwIDkuOTAxbDYuMjYtMy42NTFMMTAgMi41OTkgMy43NCA2LjI1WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDExLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCAxMy42NTFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgMTEuMzM1Wk0zLjc0IDEzLjc1IDEwIDE3LjQwMWw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTMuNzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgNy41ODVhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgOS45MDFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgNy41ODVaTTMuNzQgMTAgMTAgMTMuNjUxIDE2LjI2IDEwbC0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNkwzLjc0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", nt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMS45NiAxMy40MzVhLjYyNS42MjUgMCAwIDEgLjg1NS0uMjI1TDEwIDE3LjQwMWw3LjE4NS00LjE5YS42MjUuNjI1IDAgMCAxIC42MyAxLjA3OWwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEtLjIyNS0uODU1Wk05LjY4NSAxLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDYuMjUgMTAgOS45MDFsNi4yNi0zLjY1MUwxMCAyLjU5OSAzLjc0IDYuMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im01LjcxNCAxMS44NzUgNC4yODYgMi41IDQuMjg2LTIuNUwxNy41IDEzLjc1IDEwIDE4LjEyNSAyLjUgMTMuNzVsMy4yMTQtMS44NzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgMTEuMzM1YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDEzLjY1MWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCAxMS4zMzVaTTMuNzQgMTMuNzUgMTAgMTcuNDAxbDYuMjYtMy42NTEtMS45NzQtMS4xNTEtMy45NzEgMi4zMTZhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTMuOTctMi4zMTZMMy43NCAxMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA3LjU4NWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCA5LjkwMWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA3LjU4NVpNMy43NCAxMCAxMCAxMy42NTEgMTYuMjYgMTBsLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTBaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=", it = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0VDNEU0MCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4xMjUgMS4yNUExLjg3NSAxLjg3NSAwIDAgMCA2LjI1IDMuMTI1di42MjVIMy4xMjVhLjYyNS42MjUgMCAwIDAgMCAxLjI1aC42MjV2MTEuMjVBMS4yNSAxLjI1IDAgMCAwIDUgMTcuNWgxMGExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjVoLjYyNWEuNjI1LjYyNSAwIDAgMCAwLTEuMjVIMTMuNzV2LS42MjVhMS44NzUgMS44NzUgMCAwIDAtMS44NzUtMS44NzVoLTMuNzVabTQuMzc1IDIuNXYtLjYyNWEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2LjYyNWg1Wk01IDE2LjI1VjVoMTB2MTEuMjVINVpNOC4xMjUgNy41Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NWEuNjI1LjYyNSAwIDEgMS0xLjI1IDB2LTVjMC0uMzQ1LjI4LS42MjUuNjI1LS42MjVabTQuMzc1IDUuNjI1di01YS42MjUuNjI1IDAgMCAwLTEuMjUgMHY1YS42MjUuNjI1IDAgMSAwIDEuMjUgMFoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==";
491
+ function be(o, e, t, a, r, n, i) {
492
492
  try {
493
- var s = o[i](n), c = s.value;
493
+ var s = o[n](i), c = s.value;
494
494
  } catch (u) {
495
495
  return void t(u);
496
496
  }
@@ -500,14 +500,14 @@ function st(o) {
500
500
  return function() {
501
501
  var e = this, t = arguments;
502
502
  return new Promise(function(a, r) {
503
- var i = o.apply(e, t);
504
- function n(c) {
505
- pe(i, a, r, n, s, "next", c);
503
+ var n = o.apply(e, t);
504
+ function i(c) {
505
+ be(n, a, r, i, s, "next", c);
506
506
  }
507
507
  function s(c) {
508
- pe(i, a, r, n, s, "throw", c);
508
+ be(n, a, r, i, s, "throw", c);
509
509
  }
510
- n(void 0);
510
+ i(void 0);
511
511
  });
512
512
  };
513
513
  }
@@ -571,11 +571,11 @@ const _ = {
571
571
  offsetTop: 50,
572
572
  icons: {
573
573
  copyPaste: $e,
574
- delete: nt,
574
+ delete: it,
575
575
  lock: qe,
576
576
  unlock: et,
577
577
  bringToFront: rt,
578
- sendToBack: it,
578
+ sendToBack: nt,
579
579
  bringForward: tt,
580
580
  sendBackwards: at
581
581
  },
@@ -612,7 +612,7 @@ const _ = {
612
612
  }
613
613
  }
614
614
  };
615
- function be(o, e) {
615
+ function Ie(o, e) {
616
616
  var t = Object.keys(o);
617
617
  if (Object.getOwnPropertySymbols) {
618
618
  var a = Object.getOwnPropertySymbols(o);
@@ -625,9 +625,9 @@ function be(o, e) {
625
625
  function j(o) {
626
626
  for (var e = 1; e < arguments.length; e++) {
627
627
  var t = arguments[e] != null ? arguments[e] : {};
628
- e % 2 ? be(Object(t), !0).forEach(function(a) {
628
+ e % 2 ? Ie(Object(t), !0).forEach(function(a) {
629
629
  ot(o, a, t[a]);
630
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : be(Object(t)).forEach(function(a) {
630
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : Ie(Object(t)).forEach(function(a) {
631
631
  Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
632
632
  });
633
633
  }
@@ -700,17 +700,17 @@ class dt {
700
700
  this.el.innerHTML = "";
701
701
  var a = function() {
702
702
  var {
703
- name: n,
703
+ name: i,
704
704
  handle: s
705
705
  } = r, {
706
706
  icons: c,
707
707
  btnStyle: u,
708
- handlers: d
709
- } = t.config, l = document.createElement("button");
710
- l.innerHTML = c[s] ? '<img src="'.concat(c[s], '" title="').concat(n, '" />') : n, Object.assign(l.style, u), l.onclick = () => {
708
+ handlers: l
709
+ } = t.config, d = document.createElement("button");
710
+ d.innerHTML = c[s] ? '<img src="'.concat(c[s], '" title="').concat(i, '" />') : i, Object.assign(d.style, u), d.onclick = () => {
711
711
  var h;
712
- return (h = d[s]) === null || h === void 0 ? void 0 : h.call(d, t.editor);
713
- }, t.el.appendChild(l);
712
+ return (h = l[s]) === null || h === void 0 ? void 0 : h.call(l, t.editor);
713
+ }, t.el.appendChild(d);
714
714
  };
715
715
  for (var r of e)
716
716
  a();
@@ -782,12 +782,12 @@ class dt {
782
782
  canvas: r
783
783
  } = this;
784
784
  e.setCoords();
785
- var i = r.getZoom(), [, , , , n, s] = r.viewportTransform, {
785
+ var n = r.getZoom(), [, , , , i, s] = r.viewportTransform, {
786
786
  x: c
787
787
  } = e.getCenterPoint(), {
788
788
  top: u,
789
- height: d
790
- } = e.getBoundingRect(!1, !0), l = c * i + n, h = l - t.offsetWidth / 2, g = (u + d) * i + s + a.offsetTop;
789
+ height: l
790
+ } = e.getBoundingRect(!1, !0), d = c * n + i, h = d - t.offsetWidth / 2, g = (u + l) * n + s + a.offsetTop;
791
791
  Object.assign(t.style, {
792
792
  left: "".concat(h, "px"),
793
793
  top: "".concat(g, "px"),
@@ -802,26 +802,26 @@ class dt {
802
802
  this.el.removeEventListener("mouseover", this._onBtnOver), this.el.removeEventListener("mouseout", this._onBtnOut), this.canvas.off("mouse:down", this._onMouseDown), this.canvas.off("object:moving", this._onObjectMoving), this.canvas.off("object:scaling", this._onObjectScaling), this.canvas.off("object:rotating", this._onObjectRotating), this.canvas.off("mouse:up", this._onMouseUp), this.canvas.off("object:modified", this._onObjectModified), this.canvas.off("selection:created", this._onSelectionChange), this.canvas.off("selection:updated", this._onSelectionChange), this.canvas.off("selection:changed", this._onSelectionChange), this.canvas.off("after:render", this._onSelectionChange), this.canvas.off("selection:cleared", this._onSelectionClear), this.el.remove();
803
803
  }
804
804
  }
805
- function Ie(o, e, t, a, r, i, n) {
805
+ function Ae(o, e, t, a, r, n, i) {
806
806
  try {
807
- var s = o[i](n), c = s.value;
807
+ var s = o[n](i), c = s.value;
808
808
  } catch (u) {
809
809
  return void t(u);
810
810
  }
811
811
  s.done ? e(c) : Promise.resolve(c).then(a, r);
812
812
  }
813
- function ee(o) {
813
+ function te(o) {
814
814
  return function() {
815
815
  var e = this, t = arguments;
816
816
  return new Promise(function(a, r) {
817
- var i = o.apply(e, t);
818
- function n(c) {
819
- Ie(i, a, r, n, s, "next", c);
817
+ var n = o.apply(e, t);
818
+ function i(c) {
819
+ Ae(n, a, r, i, s, "next", c);
820
820
  }
821
821
  function s(c) {
822
- Ie(i, a, r, n, s, "throw", c);
822
+ Ae(n, a, r, i, s, "throw", c);
823
823
  }
824
- n(void 0);
824
+ i(void 0);
825
825
  });
826
826
  };
827
827
  }
@@ -887,8 +887,8 @@ class lt {
887
887
  baseState: e,
888
888
  currentIndex: t,
889
889
  patches: a
890
- } = this, r = JSON.parse(JSON.stringify(e)), i = 0; i < t; i += 1)
891
- r = this.diffPatcher.patch(r, a[i].diff);
890
+ } = this, r = JSON.parse(JSON.stringify(e)), n = 0; n < t; n += 1)
891
+ r = this.diffPatcher.patch(r, a[n].diff);
892
892
  return console.log("getFullState state", r), r;
893
893
  }
894
894
  /**
@@ -920,22 +920,22 @@ class lt {
920
920
  */
921
921
  loadStateFromFullState(e) {
922
922
  var t = this;
923
- return ee(function* () {
923
+ return te(function* () {
924
924
  if (e) {
925
925
  console.log("loadStateFromFullState fullState", e);
926
926
  var {
927
927
  canvas: a,
928
928
  canvasManager: r,
929
- interactionBlocker: i
929
+ interactionBlocker: n
930
930
  } = t.editor, {
931
- width: n,
931
+ width: i,
932
932
  height: s
933
933
  } = a;
934
934
  yield a.loadFromJSON(e);
935
- var c = a.getObjects().find((d) => d.id === "montage-area");
936
- c && (t.editor.montageArea = c, (n !== e.width || s !== e.height) && r.updateCanvasAndFitObjects());
937
- var u = a.getObjects().find((d) => d.id === "overlay-mask");
938
- u && (i.overlayMask = u, i.overlayMask.visible = !1), a.renderAll(), a.fire("editor:history-state-loaded", {
935
+ var c = a.getObjects().find((l) => l.id === "montage-area");
936
+ c && (t.editor.montageArea = c, (i !== e.width || s !== e.height) && r.updateCanvasAndFitObjects());
937
+ var u = a.getObjects().find((l) => l.id === "overlay-mask");
938
+ u && (n.overlayMask = u, n.overlayMask.visible = !1), a.renderAll(), a.fire("editor:history-state-loaded", {
939
939
  fullState: e,
940
940
  currentIndex: t.currentIndex,
941
941
  totalChangesCount: t.totalChangesCount,
@@ -952,7 +952,7 @@ class lt {
952
952
  */
953
953
  undo() {
954
954
  var e = this;
955
- return ee(function* () {
955
+ return te(function* () {
956
956
  if (!e.skipHistory) {
957
957
  if (e.currentIndex <= 0) {
958
958
  console.log("Нет предыдущих состояний для отмены.");
@@ -962,7 +962,14 @@ class lt {
962
962
  try {
963
963
  e.currentIndex -= 1, e.totalChangesCount -= 1;
964
964
  var t = e.getFullState();
965
- yield e.loadStateFromFullState(t), console.log("Undo выполнен. Текущий индекс истории:", e.currentIndex), e.canvas.fire("editor:undo");
965
+ yield e.loadStateFromFullState(t), console.log("Undo выполнен. Текущий индекс истории:", e.currentIndex), e.canvas.fire("editor:undo", {
966
+ fullState: t,
967
+ currentIndex: e.currentIndex,
968
+ totalChangesCount: e.totalChangesCount,
969
+ baseStateChangesCount: e.baseStateChangesCount,
970
+ patchesCount: e.patches.length,
971
+ patches: e.patches
972
+ });
966
973
  } catch (a) {
967
974
  console.error("undo. Ошибка отмены действия: ", a), e.canvas.fire("editor:error", {
968
975
  message: "Ошибка отмены действия: ".concat(a.message)
@@ -979,7 +986,7 @@ class lt {
979
986
  */
980
987
  redo() {
981
988
  var e = this;
982
- return ee(function* () {
989
+ return te(function* () {
983
990
  if (!e.skipHistory) {
984
991
  if (e.currentIndex >= e.patches.length) {
985
992
  console.log("Нет состояний для повтора.");
@@ -989,7 +996,14 @@ class lt {
989
996
  try {
990
997
  e.currentIndex += 1, e.totalChangesCount += 1;
991
998
  var t = e.getFullState();
992
- console.log("fullState", t), yield e.loadStateFromFullState(t), console.log("Redo выполнен. Текущий индекс истории:", e.currentIndex), e.canvas.fire("editor:redo");
999
+ console.log("fullState", t), yield e.loadStateFromFullState(t), console.log("Redo выполнен. Текущий индекс истории:", e.currentIndex), e.canvas.fire("editor:redo", {
1000
+ fullState: t,
1001
+ currentIndex: e.currentIndex,
1002
+ totalChangesCount: e.totalChangesCount,
1003
+ baseStateChangesCount: e.baseStateChangesCount,
1004
+ patchesCount: e.patches.length,
1005
+ patches: e.patches
1006
+ });
993
1007
  } catch (a) {
994
1008
  console.error("redo. Ошибка повтора действия: ", a), e.canvas.fire("editor:error", {
995
1009
  message: "Ошибка повтора действия: ".concat(a.message)
@@ -1002,9 +1016,9 @@ class lt {
1002
1016
  }
1003
1017
  }
1004
1018
  const ht = 0.1, gt = 2, vt = 0.1, mt = 90, k = 16, x = 16, E = 4096, O = 4096;
1005
- function Ae(o, e, t, a, r, i, n) {
1019
+ function Se(o, e, t, a, r, n, i) {
1006
1020
  try {
1007
- var s = o[i](n), c = s.value;
1021
+ var s = o[n](i), c = s.value;
1008
1022
  } catch (u) {
1009
1023
  return void t(u);
1010
1024
  }
@@ -1014,14 +1028,14 @@ function T(o) {
1014
1028
  return function() {
1015
1029
  var e = this, t = arguments;
1016
1030
  return new Promise(function(a, r) {
1017
- var i = o.apply(e, t);
1018
- function n(c) {
1019
- Ae(i, a, r, n, s, "next", c);
1031
+ var n = o.apply(e, t);
1032
+ function i(c) {
1033
+ Se(n, a, r, i, s, "next", c);
1020
1034
  }
1021
1035
  function s(c) {
1022
- Ae(i, a, r, n, s, "throw", c);
1036
+ Se(n, a, r, i, s, "throw", c);
1023
1037
  }
1024
- n(void 0);
1038
+ i(void 0);
1025
1039
  });
1026
1040
  };
1027
1041
  }
@@ -1054,22 +1068,22 @@ class D {
1054
1068
  var {
1055
1069
  source: a,
1056
1070
  scale: r = "image-".concat(t.options.scaleType),
1057
- withoutSave: i = !1
1071
+ withoutSave: n = !1
1058
1072
  } = e;
1059
1073
  if (!a) return null;
1060
1074
  var {
1061
- canvas: n,
1075
+ canvas: i,
1062
1076
  montageArea: s,
1063
1077
  transformManager: c,
1064
1078
  historyManager: u,
1065
- errorManager: d
1066
- } = t.editor, l = yield t.getContentType(a), h = D.getFormatFromContentType(l), {
1079
+ errorManager: l
1080
+ } = t.editor, d = yield t.getContentType(a), h = D.getFormatFromContentType(d), {
1067
1081
  acceptContentTypes: g,
1068
1082
  acceptFormats: M
1069
1083
  } = t;
1070
- if (!t.isAllowedContentType(l)) {
1071
- var m = "Неверный contentType для изображения: ".concat(l, ". Ожидается один из: ").concat(t.acceptContentTypes.join(", "), ".");
1072
- return d.emitError({
1084
+ if (!t.isAllowedContentType(d)) {
1085
+ var m = "Неверный contentType для изображения: ".concat(d, ". Ожидается один из: ").concat(t.acceptContentTypes.join(", "), ".");
1086
+ return l.emitError({
1073
1087
  origin: "ImageManager",
1074
1088
  method: "importImage",
1075
1089
  code: "INVALID_CONTENT_TYPE",
@@ -1077,7 +1091,7 @@ class D {
1077
1091
  data: {
1078
1092
  source: a,
1079
1093
  format: h,
1080
- contentType: l,
1094
+ contentType: d,
1081
1095
  acceptContentTypes: g,
1082
1096
  acceptFormats: M
1083
1097
  }
@@ -1092,12 +1106,12 @@ class D {
1092
1106
  var S = yield fetch(a, {
1093
1107
  mode: "cors"
1094
1108
  }), N = yield S.blob({
1095
- type: l,
1109
+ type: d,
1096
1110
  quality: 1
1097
1111
  });
1098
1112
  f = URL.createObjectURL(N);
1099
1113
  } else
1100
- return d.emitError({
1114
+ return l.emitError({
1101
1115
  origin: "ImageManager",
1102
1116
  method: "importImage",
1103
1117
  code: "INVALID_SOURCE_TYPE",
@@ -1105,30 +1119,30 @@ class D {
1105
1119
  data: {
1106
1120
  source: a,
1107
1121
  format: h,
1108
- contentType: l,
1122
+ contentType: d,
1109
1123
  acceptContentTypes: g,
1110
1124
  acceptFormats: M
1111
1125
  }
1112
1126
  }), null;
1113
1127
  if (t._createdBlobUrls.push(f), h === "svg") {
1114
- var w = yield Te(f);
1115
- v = P.groupSVGElements(w.objects, w.options);
1128
+ var L = yield ke(f);
1129
+ v = P.groupSVGElements(L.objects, L.options);
1116
1130
  } else
1117
- v = yield q.fromURL(f, {
1131
+ v = yield ee.fromURL(f, {
1118
1132
  crossOrigin: "anonymous"
1119
1133
  });
1120
1134
  var {
1121
- width: L,
1135
+ width: w,
1122
1136
  height: y
1123
1137
  } = v;
1124
- if (y > O || L > E) {
1138
+ if (y > O || w > E) {
1125
1139
  var p = yield t.resizeImageToBoundaries(v._element.src, "max"), B = URL.createObjectURL(p);
1126
- t._createdBlobUrls.push(B), v = yield q.fromURL(B, {
1140
+ t._createdBlobUrls.push(B), v = yield ee.fromURL(B, {
1127
1141
  crossOrigin: "anonymous"
1128
1142
  });
1129
- } else if (y < x || L < k) {
1130
- var W = yield t.resizeImageToBoundaries(v._element.src, "min"), Z = URL.createObjectURL(W);
1131
- t._createdBlobUrls.push(Z), v = yield q.fromURL(Z, {
1143
+ } else if (y < x || w < k) {
1144
+ var F = yield t.resizeImageToBoundaries(v._element.src, "min"), Z = URL.createObjectURL(F);
1145
+ t._createdBlobUrls.push(Z), v = yield ee.fromURL(Z, {
1132
1146
  crossOrigin: "anonymous"
1133
1147
  });
1134
1148
  }
@@ -1139,7 +1153,7 @@ class D {
1139
1153
  });
1140
1154
  else {
1141
1155
  var {
1142
- width: F,
1156
+ width: W,
1143
1157
  height: z
1144
1158
  } = s, U = t.calculateScaleFactor({
1145
1159
  imageObject: v,
@@ -1149,24 +1163,24 @@ class D {
1149
1163
  object: v,
1150
1164
  type: "contain",
1151
1165
  withoutSave: !0
1152
- }) : r === "image-cover" && (L > F || y > z) && c.fitObject({
1166
+ }) : r === "image-cover" && (w > W || y > z) && c.fitObject({
1153
1167
  object: v,
1154
1168
  type: "cover",
1155
1169
  withoutSave: !0
1156
1170
  });
1157
1171
  }
1158
- n.add(v), n.centerObject(v), n.setActiveObject(v), n.renderAll(), u.resumeHistory(), i || u.saveState();
1172
+ i.add(v), i.centerObject(v), i.setActiveObject(v), i.renderAll(), u.resumeHistory(), n || u.saveState();
1159
1173
  var V = {
1160
1174
  image: v,
1161
1175
  format: h,
1162
- contentType: l,
1176
+ contentType: d,
1163
1177
  scale: r,
1164
- withoutSave: i,
1178
+ withoutSave: n,
1165
1179
  source: a
1166
1180
  };
1167
- return n.fire("editor:image-imported", V), V;
1181
+ return i.fire("editor:image-imported", V), V;
1168
1182
  } catch (Y) {
1169
- return d.emitError({
1183
+ return l.emitError({
1170
1184
  origin: "ImageManager",
1171
1185
  method: "importImage",
1172
1186
  code: "IMPORT_FAILED",
@@ -1174,9 +1188,9 @@ class D {
1174
1188
  data: {
1175
1189
  source: a,
1176
1190
  format: h,
1177
- contentType: l,
1191
+ contentType: d,
1178
1192
  scale: r,
1179
- withoutSave: i
1193
+ withoutSave: n
1180
1194
  }
1181
1195
  }), u.resumeHistory(), null;
1182
1196
  }
@@ -1193,9 +1207,9 @@ class D {
1193
1207
  resizeImageToBoundaries(e) {
1194
1208
  var t = arguments, a = this;
1195
1209
  return T(function* () {
1196
- var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", i = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров c сохранением пропорций: ".concat(E, "x").concat(O);
1197
- r === "min" && (i = "Размер изображения меньше минимального размера канваса, поэтому оно будет увеличено до минимальных размеров c сохранением пропорций: ".concat(k, "x").concat(x));
1198
- var n = {
1210
+ var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", n = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров c сохранением пропорций: ".concat(E, "x").concat(O);
1211
+ r === "min" && (n = "Размер изображения меньше минимального размера канваса, поэтому оно будет увеличено до минимальных размеров c сохранением пропорций: ".concat(k, "x").concat(x));
1212
+ var i = {
1199
1213
  dataURL: e,
1200
1214
  sizeType: r,
1201
1215
  maxWidth: E,
@@ -1207,9 +1221,9 @@ class D {
1207
1221
  origin: "ImageManager",
1208
1222
  method: "resizeImageToBoundaries",
1209
1223
  code: "IMAGE_RESIZE_WARNING",
1210
- message: i,
1211
- data: n
1212
- }), a.editor.workerManager.post("resizeImage", n);
1224
+ message: n,
1225
+ data: i
1226
+ }), a.editor.workerManager.post("resizeImage", i);
1213
1227
  })();
1214
1228
  }
1215
1229
  /**
@@ -1229,15 +1243,15 @@ class D {
1229
1243
  var {
1230
1244
  fileName: a = "image.png",
1231
1245
  contentType: r = "image/png",
1232
- exportAsBase64: i = !1,
1233
- exportAsBlob: n = !1
1246
+ exportAsBase64: n = !1,
1247
+ exportAsBlob: i = !1
1234
1248
  } = e.length > 0 && e[0] !== void 0 ? e[0] : {}, {
1235
1249
  canvas: s,
1236
1250
  montageArea: c,
1237
1251
  workerManager: u
1238
1252
  } = t.editor;
1239
1253
  try {
1240
- var d = r === "application/pdf", l = d ? "image/jpg" : r, h = D.getFormatFromContentType(l);
1254
+ var l = r === "application/pdf", d = l ? "image/jpg" : r, h = D.getFormatFromContentType(d);
1241
1255
  c.setCoords();
1242
1256
  var {
1243
1257
  left: g,
@@ -1245,7 +1259,7 @@ class D {
1245
1259
  width: m,
1246
1260
  height: f
1247
1261
  } = c.getBoundingRect(), v = yield s.clone(["id", "format", "locked"]);
1248
- ["image/jpg", "image/jpeg"].includes(l) && (v.backgroundColor = "#ffffff");
1262
+ ["image/jpg", "image/jpeg"].includes(d) && (v.backgroundColor = "#ffffff");
1249
1263
  var S = v.getObjects().find((b) => b.id === c.id);
1250
1264
  S.visible = !1, v.viewportTransform = [1, 0, 0, 1, -g, -M], v.setDimensions({
1251
1265
  width: m,
@@ -1255,14 +1269,14 @@ class D {
1255
1269
  }), v.renderAll();
1256
1270
  var N = v.getObjects().filter((b) => b.format).every((b) => b.format === "svg");
1257
1271
  if (h === "svg" && N) {
1258
- var w = v.toSVG();
1272
+ var L = v.toSVG();
1259
1273
  v.dispose();
1260
- var L = D._exportSVGStringAsFile(w, {
1261
- exportAsBase64: i,
1262
- exportAsBlob: n,
1274
+ var w = D._exportSVGStringAsFile(L, {
1275
+ exportAsBase64: n,
1276
+ exportAsBlob: i,
1263
1277
  fileName: a
1264
1278
  }), y = {
1265
- image: L,
1279
+ image: w,
1266
1280
  format: "svg",
1267
1281
  contentType: "image/svg+xml",
1268
1282
  fileName: a.replace(/\.[^/.]+$/, ".svg")
@@ -1272,63 +1286,63 @@ class D {
1272
1286
  var p = yield new Promise((b) => {
1273
1287
  v.getElement().toBlob(b);
1274
1288
  });
1275
- if (v.dispose(), n) {
1289
+ if (v.dispose(), i) {
1276
1290
  var B = {
1277
1291
  image: p,
1278
1292
  format: h,
1279
- contentType: l,
1293
+ contentType: d,
1280
1294
  fileName: a
1281
1295
  };
1282
1296
  return s.fire("editor:canvas-exported", B), B;
1283
1297
  }
1284
- var W = yield createImageBitmap(p), Z = yield u.post("toDataURL", {
1298
+ var F = yield createImageBitmap(p), Z = yield u.post("toDataURL", {
1285
1299
  format: h,
1286
1300
  quality: 1,
1287
- bitmap: W
1288
- }, [W]);
1289
- if (d) {
1290
- var F = 0.264583, z = m * F, U = f * F, V = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, Y = new V({
1301
+ bitmap: F
1302
+ }, [F]);
1303
+ if (l) {
1304
+ var W = 0.264583, z = m * W, U = f * W, V = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, Y = new V({
1291
1305
  orientation: z > U ? "landscape" : "portrait",
1292
1306
  unit: "mm",
1293
1307
  format: [z, U]
1294
1308
  });
1295
- if (Y.addImage(Z, "JPG", 0, 0, z, U), i) {
1296
- var Ce = Y.output("datauristring"), de = {
1297
- image: Ce,
1309
+ if (Y.addImage(Z, "JPG", 0, 0, z, U), n) {
1310
+ var De = Y.output("datauristring"), le = {
1311
+ image: De,
1298
1312
  format: "pdf",
1299
1313
  contentType: "application/pdf",
1300
1314
  fileName: a
1301
1315
  };
1302
- return s.fire("editor:canvas-exported", de), de;
1316
+ return s.fire("editor:canvas-exported", le), le;
1303
1317
  }
1304
- var De = Y.output("blob"), Ne = new File([De], a, {
1318
+ var Ne = Y.output("blob"), Le = new File([Ne], a, {
1305
1319
  type: "application/pdf"
1306
- }), le = {
1307
- image: Ne,
1320
+ }), he = {
1321
+ image: Le,
1308
1322
  format: "pdf",
1309
1323
  contentType: "application/pdf",
1310
1324
  fileName: a
1311
1325
  };
1312
- return s.fire("editor:canvas-exported", le), le;
1326
+ return s.fire("editor:canvas-exported", he), he;
1313
1327
  }
1314
- if (i) {
1315
- var he = {
1328
+ if (n) {
1329
+ var ge = {
1316
1330
  image: Z,
1317
1331
  format: h,
1318
- contentType: l,
1332
+ contentType: d,
1319
1333
  fileName: a
1320
1334
  };
1321
- return s.fire("editor:canvas-exported", he), he;
1335
+ return s.fire("editor:canvas-exported", ge), ge;
1322
1336
  }
1323
- var ge = h === "svg" && !N ? a.replace(/\.[^/.]+$/, ".png") : a, we = new File([p], ge, {
1324
- type: l
1325
- }), ve = {
1337
+ var ve = h === "svg" && !N ? a.replace(/\.[^/.]+$/, ".png") : a, we = new File([p], ve, {
1338
+ type: d
1339
+ }), me = {
1326
1340
  image: we,
1327
1341
  format: h,
1328
- contentType: l,
1329
- fileName: ge
1342
+ contentType: d,
1343
+ fileName: ve
1330
1344
  };
1331
- return s.fire("editor:canvas-exported", ve), ve;
1345
+ return s.fire("editor:canvas-exported", me), me;
1332
1346
  } catch (b) {
1333
1347
  return t.editor.errorManager.emitError({
1334
1348
  origin: "ImageManager",
@@ -1338,8 +1352,8 @@ class D {
1338
1352
  data: {
1339
1353
  contentType: r,
1340
1354
  fileName: a,
1341
- exportAsBase64: i,
1342
- exportAsBlob: n
1355
+ exportAsBase64: n,
1356
+ exportAsBlob: i
1343
1357
  }
1344
1358
  }), "";
1345
1359
  }
@@ -1362,72 +1376,72 @@ class D {
1362
1376
  var {
1363
1377
  object: a,
1364
1378
  fileName: r = "image.png",
1365
- contentType: i = "image/png",
1366
- exportAsBase64: n = !1,
1379
+ contentType: n = "image/png",
1380
+ exportAsBase64: i = !1,
1367
1381
  exportAsBlob: s = !1
1368
1382
  } = e.length > 0 && e[0] !== void 0 ? e[0] : {}, {
1369
1383
  canvas: c,
1370
1384
  workerManager: u
1371
- } = t.editor, d = a || c.getActiveObject();
1372
- if (!d)
1385
+ } = t.editor, l = a || c.getActiveObject();
1386
+ if (!l)
1373
1387
  return t.editor.errorManager.emitError({
1374
1388
  origin: "ImageManager",
1375
1389
  method: "exportObjectAsImageFile",
1376
1390
  code: "NO_OBJECT_SELECTED",
1377
1391
  message: "Не выбран объект для экспорта",
1378
1392
  data: {
1379
- contentType: i,
1393
+ contentType: n,
1380
1394
  fileName: r,
1381
- exportAsBase64: n,
1395
+ exportAsBase64: i,
1382
1396
  exportAsBlob: s
1383
1397
  }
1384
1398
  }), "";
1385
1399
  try {
1386
- var l = D.getFormatFromContentType(i);
1387
- if (l === "svg") {
1388
- var h = d.toSVG(), g = t._exportSVGStringAsFile(h, {
1389
- exportAsBase64: n,
1400
+ var d = D.getFormatFromContentType(n);
1401
+ if (d === "svg") {
1402
+ var h = l.toSVG(), g = t._exportSVGStringAsFile(h, {
1403
+ exportAsBase64: i,
1390
1404
  exportAsBlob: s,
1391
1405
  fileName: r
1392
1406
  }), M = {
1393
1407
  image: g,
1394
- format: l,
1408
+ format: d,
1395
1409
  contentType: "image/svg+xml",
1396
1410
  fileName: r.replace(/\.[^/.]+$/, ".svg")
1397
1411
  };
1398
1412
  return c.fire("editor:object-exported", M), M;
1399
1413
  }
1400
- if (n) {
1401
- var m = yield createImageBitmap(d._element), f = yield u.post("toDataURL", {
1402
- format: l,
1414
+ if (i) {
1415
+ var m = yield createImageBitmap(l._element), f = yield u.post("toDataURL", {
1416
+ format: d,
1403
1417
  quality: 1,
1404
1418
  bitmap: m
1405
1419
  }, [m]), v = {
1406
1420
  image: f,
1407
- format: l,
1408
- contentType: i,
1421
+ format: d,
1422
+ contentType: n,
1409
1423
  fileName: r
1410
1424
  };
1411
1425
  return c.fire("editor:object-exported", v), v;
1412
1426
  }
1413
- var S = d.toCanvasElement(), N = yield new Promise((p) => {
1427
+ var S = l.toCanvasElement(), N = yield new Promise((p) => {
1414
1428
  S.toBlob(p);
1415
1429
  });
1416
1430
  if (s) {
1417
- var w = {
1431
+ var L = {
1418
1432
  image: N,
1419
- format: l,
1420
- contentType: i,
1433
+ format: d,
1434
+ contentType: n,
1421
1435
  fileName: r
1422
1436
  };
1423
- return c.fire("editor:object-exported", w), w;
1437
+ return c.fire("editor:object-exported", L), L;
1424
1438
  }
1425
- var L = new File([N], r, {
1426
- type: i
1439
+ var w = new File([N], r, {
1440
+ type: n
1427
1441
  }), y = {
1428
- image: L,
1429
- format: l,
1430
- contentType: i,
1442
+ image: w,
1443
+ format: d,
1444
+ contentType: n,
1431
1445
  fileName: r
1432
1446
  };
1433
1447
  return c.fire("editor:object-exported", y), y;
@@ -1438,9 +1452,9 @@ class D {
1438
1452
  code: "IMAGE_EXPORT_FAILED",
1439
1453
  message: "Ошибка экспорта объекта: ".concat(p.message),
1440
1454
  data: {
1441
- contentType: i,
1455
+ contentType: n,
1442
1456
  fileName: r,
1443
- exportAsBase64: n,
1457
+ exportAsBase64: i,
1444
1458
  exportAsBlob: s
1445
1459
  }
1446
1460
  }), "";
@@ -1532,11 +1546,11 @@ class D {
1532
1546
  try {
1533
1547
  var r = yield fetch(e, {
1534
1548
  method: "HEAD"
1535
- }), i = r.headers.get("content-type");
1536
- if (i && i.startsWith("image/"))
1537
- return i.split(";")[0];
1538
- } catch (n) {
1539
- console.warn("HEAD запрос неудачен, определяем тип по расширению:", n);
1549
+ }), n = r.headers.get("content-type");
1550
+ if (n && n.startsWith("image/"))
1551
+ return n.split(";")[0];
1552
+ } catch (i) {
1553
+ console.warn("HEAD запрос неудачен, определяем тип по расширению:", i);
1540
1554
  }
1541
1555
  return t.getContentTypeFromExtension(e);
1542
1556
  })();
@@ -1549,13 +1563,13 @@ class D {
1549
1563
  */
1550
1564
  getContentTypeFromExtension(e) {
1551
1565
  try {
1552
- var t, a = new URL(e), r = (t = a.pathname.split(".").pop()) === null || t === void 0 ? void 0 : t.toLowerCase(), i = {};
1553
- return this.acceptContentTypes.forEach((n) => {
1554
- var s = D.getFormatFromContentType(n);
1555
- s && (i[s] = n);
1556
- }), i[r] || "application/octet-stream";
1557
- } catch (n) {
1558
- return console.warn("Не удалось определить расширение из URL:", e, n), "application/octet-stream";
1566
+ var t, a = new URL(e), r = (t = a.pathname.split(".").pop()) === null || t === void 0 ? void 0 : t.toLowerCase(), n = {};
1567
+ return this.acceptContentTypes.forEach((i) => {
1568
+ var s = D.getFormatFromContentType(i);
1569
+ s && (n[s] = i);
1570
+ }), n[r] || "application/octet-stream";
1571
+ } catch (i) {
1572
+ return console.warn("Не удалось определить расширение из URL:", e, i), "application/octet-stream";
1559
1573
  }
1560
1574
  }
1561
1575
  /**
@@ -1572,11 +1586,11 @@ class D {
1572
1586
  montageArea: r
1573
1587
  } = this.editor;
1574
1588
  if (!r || !t) return 1;
1575
- var i = r.width, n = r.height, {
1589
+ var n = r.width, i = r.height, {
1576
1590
  width: s,
1577
1591
  height: c
1578
1592
  } = t;
1579
- return a === "contain" || a === "image-contain" ? Math.min(i / s, n / c) : a === "cover" || a === "image-cover" ? Math.max(i / s, n / c) : 1;
1593
+ return a === "contain" || a === "image-contain" ? Math.min(n / s, i / c) : a === "cover" || a === "image-cover" ? Math.max(n / s, i / c) : 1;
1580
1594
  }
1581
1595
  }
1582
1596
  class Mt {
@@ -1607,29 +1621,29 @@ class Mt {
1607
1621
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1608
1622
  if (e) {
1609
1623
  var {
1610
- canvas: i,
1611
- montageArea: n,
1624
+ canvas: n,
1625
+ montageArea: i,
1612
1626
  options: {
1613
1627
  canvasBackstoreWidth: s
1614
1628
  }
1615
1629
  } = this.editor, {
1616
1630
  width: c,
1617
1631
  height: u
1618
- } = n, d = Number(Math.max(Math.min(e, E), k));
1619
- if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(d), n.set({
1620
- width: d
1621
- }), i.clipPath.set({
1622
- width: d
1632
+ } = i, l = Number(Math.max(Math.min(e, E), k));
1633
+ if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(l), i.set({
1634
+ width: l
1635
+ }), n.clipPath.set({
1636
+ width: l
1623
1637
  }), t) {
1624
- var l = d / c, h = u * l;
1638
+ var d = l / c, h = u * d;
1625
1639
  this.setResolutionHeight(h);
1626
1640
  return;
1627
1641
  }
1628
1642
  var {
1629
1643
  left: g,
1630
1644
  top: M
1631
- } = this.getObjectDefaultCoords(n), m = i.getZoom();
1632
- i.setViewportTransform([m, 0, 0, m, g, M]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i == null || i.fire("editor:resolution-width-changed", {
1645
+ } = this.getObjectDefaultCoords(i), m = n.getZoom();
1646
+ n.setViewportTransform([m, 0, 0, m, g, M]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), n == null || n.fire("editor:resolution-width-changed", {
1633
1647
  width: e
1634
1648
  });
1635
1649
  }
@@ -1651,29 +1665,29 @@ class Mt {
1651
1665
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1652
1666
  if (e) {
1653
1667
  var {
1654
- canvas: i,
1655
- montageArea: n,
1668
+ canvas: n,
1669
+ montageArea: i,
1656
1670
  options: {
1657
1671
  canvasBackstoreHeight: s
1658
1672
  }
1659
1673
  } = this.editor, {
1660
1674
  width: c,
1661
1675
  height: u
1662
- } = n, d = Number(Math.max(Math.min(e, O), x));
1663
- if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(d), n.set({
1664
- height: d
1665
- }), i.clipPath.set({
1666
- height: d
1676
+ } = i, l = Number(Math.max(Math.min(e, O), x));
1677
+ if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(l), i.set({
1678
+ height: l
1679
+ }), n.clipPath.set({
1680
+ height: l
1667
1681
  }), t) {
1668
- var l = d / u, h = c * l;
1682
+ var d = l / u, h = c * d;
1669
1683
  this.setResolutionWidth(h);
1670
1684
  return;
1671
1685
  }
1672
1686
  var {
1673
1687
  left: g,
1674
1688
  top: M
1675
- } = this.getObjectDefaultCoords(n), m = i.getZoom();
1676
- i.setViewportTransform([m, 0, 0, m, g, M]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i == null || i.fire("editor:resolution-height-changed", {
1689
+ } = this.getObjectDefaultCoords(i), m = n.getZoom();
1690
+ n.setViewportTransform([m, 0, 0, m, g, M]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), n == null || n.fire("editor:resolution-height-changed", {
1677
1691
  height: e
1678
1692
  });
1679
1693
  }
@@ -1686,7 +1700,7 @@ class Mt {
1686
1700
  var {
1687
1701
  canvas: e,
1688
1702
  montageArea: t
1689
- } = this.editor, a = e.getWidth(), r = e.getHeight(), i = e.getZoom(), n = new ke(a / 2, r / 2);
1703
+ } = this.editor, a = e.getWidth(), r = e.getHeight(), n = e.getZoom(), i = new K(a / 2, r / 2);
1690
1704
  t.set({
1691
1705
  left: a / 2,
1692
1706
  top: r / 2
@@ -1695,7 +1709,7 @@ class Mt {
1695
1709
  top: r / 2
1696
1710
  }), e.renderAll();
1697
1711
  var s = e.viewportTransform;
1698
- s[4] = a / 2 - n.x * i, s[5] = r / 2 - n.y * i, e.setViewportTransform(s), e.renderAll();
1712
+ s[4] = a / 2 - i.x * n, s[5] = r / 2 - i.y * n, e.setViewportTransform(s), e.renderAll();
1699
1713
  }
1700
1714
  /**
1701
1715
  * Метод для получения координат объекта с учетом текущего зума
@@ -1712,8 +1726,8 @@ class Mt {
1712
1726
  }), {};
1713
1727
  var {
1714
1728
  width: r,
1715
- height: i
1716
- } = a, n = t.getZoom(), s = (r - r * n) / 2, c = (i - i * n) / 2;
1729
+ height: n
1730
+ } = a, i = t.getZoom(), s = (r - r * i) / 2, c = (n - n * i) / 2;
1717
1731
  return {
1718
1732
  left: s,
1719
1733
  top: c
@@ -1742,10 +1756,10 @@ class Mt {
1742
1756
  adaptCanvasToContainer() {
1743
1757
  var {
1744
1758
  canvas: e
1745
- } = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, i = Math.max(Math.min(a, E), k), n = Math.max(Math.min(r, O), x);
1746
- console.log("adaptCanvasToContainer newWidth", i), console.log("adaptCanvasToContainer newHeight", n), e.setDimensions({
1747
- width: i,
1748
- height: n
1759
+ } = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, n = Math.max(Math.min(a, E), k), i = Math.max(Math.min(r, O), x);
1760
+ console.log("adaptCanvasToContainer newWidth", n), console.log("adaptCanvasToContainer newHeight", i), e.setDimensions({
1761
+ width: n,
1762
+ height: i
1749
1763
  }, {
1750
1764
  backstoreOnly: !0
1751
1765
  });
@@ -1762,13 +1776,13 @@ class Mt {
1762
1776
  transformManager: a,
1763
1777
  montageArea: {
1764
1778
  width: r,
1765
- height: i
1779
+ height: n
1766
1780
  }
1767
1781
  } = this.editor;
1768
1782
  this.setResolutionWidth(r, {
1769
1783
  adaptCanvasToContainer: !0,
1770
1784
  withoutSave: !0
1771
- }), this.setResolutionHeight(i, {
1785
+ }), this.setResolutionHeight(n, {
1772
1786
  adaptCanvasToContainer: !0,
1773
1787
  withoutSave: !0
1774
1788
  }), this.centerMontageArea(), t.selectAll(), a.fitObject({
@@ -1776,7 +1790,7 @@ class Mt {
1776
1790
  withoutSave: !0
1777
1791
  }), e.fire("editor:canvas-updated", {
1778
1792
  width: r,
1779
- height: i
1793
+ height: n
1780
1794
  });
1781
1795
  }
1782
1796
  /**
@@ -1794,7 +1808,7 @@ class Mt {
1794
1808
  var {
1795
1809
  canvas: t,
1796
1810
  montageArea: a
1797
- } = this.editor, r = a.width * e, i = a.height * e, n = t.wrapperEl.parentNode, s = r <= n.clientWidth ? "100%" : r, c = i <= n.clientHeight ? "100%" : i;
1811
+ } = this.editor, r = a.width * e, n = a.height * e, i = t.wrapperEl.parentNode, s = r <= i.clientWidth ? "100%" : r, c = n <= i.clientHeight ? "100%" : n;
1798
1812
  t.setDimensions({
1799
1813
  width: s,
1800
1814
  height: c
@@ -1893,34 +1907,34 @@ class Mt {
1893
1907
  var {
1894
1908
  canvas: r,
1895
1909
  options: {
1896
- editorContainer: i
1910
+ editorContainer: n
1897
1911
  }
1898
- } = this.editor, n = [];
1912
+ } = this.editor, i = [];
1899
1913
  switch (e) {
1900
1914
  case "canvas":
1901
- n.push(r.lowerCanvasEl, r.upperCanvasEl);
1915
+ i.push(r.lowerCanvasEl, r.upperCanvasEl);
1902
1916
  break;
1903
1917
  case "wrapper":
1904
- n.push(r.wrapperEl);
1918
+ i.push(r.wrapperEl);
1905
1919
  break;
1906
1920
  case "container":
1907
- n.push(i);
1921
+ i.push(n);
1908
1922
  break;
1909
1923
  default:
1910
- n.push(r.lowerCanvasEl, r.upperCanvasEl);
1924
+ i.push(r.lowerCanvasEl, r.upperCanvasEl);
1911
1925
  }
1912
1926
  var s = t === "width" ? "width" : "height";
1913
1927
  if (typeof a == "string") {
1914
- n.forEach((d) => {
1915
- d.style[s] = a;
1928
+ i.forEach((l) => {
1929
+ l.style[s] = a;
1916
1930
  });
1917
1931
  return;
1918
1932
  }
1919
1933
  var c = parseFloat(a);
1920
1934
  if (!isNaN(c)) {
1921
1935
  var u = "".concat(c, "px");
1922
- n.forEach((d) => {
1923
- d.style[s] = u;
1936
+ i.forEach((l) => {
1937
+ l.style[s] = u;
1924
1938
  }), r.fire("editor:display-".concat(e, "-").concat(s, "-changed"), {
1925
1939
  element: e,
1926
1940
  value: a
@@ -1943,8 +1957,8 @@ class Mt {
1943
1957
  withoutSave: a
1944
1958
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
1945
1959
  canvas: r,
1946
- montageArea: i,
1947
- transformManager: n,
1960
+ montageArea: n,
1961
+ transformManager: i,
1948
1962
  options: {
1949
1963
  montageAreaWidth: s,
1950
1964
  montageAreaHeight: c
@@ -1952,21 +1966,21 @@ class Mt {
1952
1966
  } = this.editor, u = e || r.getActiveObject();
1953
1967
  if (!(!u || u.type !== "image" && u.format !== "svg")) {
1954
1968
  var {
1955
- width: d,
1956
- height: l
1957
- } = u, h = Math.min(d, E), g = Math.min(l, O);
1969
+ width: l,
1970
+ height: d
1971
+ } = u, h = Math.min(l, E), g = Math.min(d, O);
1958
1972
  if (t) {
1959
1973
  var {
1960
1974
  width: M,
1961
1975
  height: m
1962
- } = i, f = d / M, v = l / m, S = Math.max(f, v);
1976
+ } = n, f = l / M, v = d / m, S = Math.max(f, v);
1963
1977
  h = M * S, g = m * S;
1964
1978
  }
1965
1979
  this.setResolutionWidth(h, {
1966
1980
  withoutSave: !0
1967
1981
  }), this.setResolutionHeight(g, {
1968
1982
  withoutSave: !0
1969
- }), (d > s || l > c) && n.calculateAndApplyDefaultZoom(), n.resetObject(u, {
1983
+ }), (l > s || d > c) && i.calculateAndApplyDefaultZoom(), i.resetObject(u, {
1970
1984
  withoutSave: !0
1971
1985
  }), r.centerObject(u), r.renderAll(), a || this.editor.historyManager.saveState(), r.fire("editor:montage-area-scaled-to-image", {
1972
1986
  object: u,
@@ -2003,13 +2017,13 @@ class Mt {
2003
2017
  transformManager: a,
2004
2018
  historyManager: r,
2005
2019
  options: {
2006
- montageAreaWidth: i,
2007
- montageAreaHeight: n
2020
+ montageAreaWidth: n,
2021
+ montageAreaHeight: i
2008
2022
  }
2009
2023
  } = this.editor;
2010
- a.resetZoom(), this.setResolutionWidth(i, {
2024
+ a.resetZoom(), this.setResolutionWidth(n, {
2011
2025
  withoutSave: !0
2012
- }), this.setResolutionHeight(n, {
2026
+ }), this.setResolutionHeight(i, {
2013
2027
  withoutSave: !0
2014
2028
  }), t.renderAll(), a.resetObjects(), e || r.saveState(), t.fire("editor:default-scale-set");
2015
2029
  }
@@ -2025,19 +2039,12 @@ class Mt {
2025
2039
  overlayMask: a
2026
2040
  }
2027
2041
  } = this.editor, r = e.getObjects();
2028
- return r.filter((i) => i.id !== t.id && i.id !== a.id);
2042
+ return r.filter((n) => n.id !== t.id && n.id !== a.id);
2029
2043
  }
2030
2044
  }
2031
2045
  class ft {
2032
- /**
2033
- * @param {object} options
2034
- * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
2035
- */
2036
- constructor(e) {
2037
- var {
2038
- editor: t
2039
- } = e;
2040
- this.editor = t, this.options = t.options;
2046
+ constructor({ editor: e }) {
2047
+ this.editor = e, this.options = e.options, this.minZoom = this.options.minZoom || ht, this.maxZoom = this.options.maxZoom || gt, this.defaultZoom = this.options.defaultScale, this.maxZoomFactor = this.options.maxZoomFactor;
2041
2048
  }
2042
2049
  /**
2043
2050
  * Метод рассчитывает и применяет зум по умолчанию для монтажной области редактора.
@@ -2046,18 +2053,11 @@ class ft {
2046
2053
  * Если scale не передан, то используется значение из options.defaultScale.
2047
2054
  * @param {Number} [scale] - Желаемый масштаб относительно размеров контейнера редактора.
2048
2055
  */
2049
- calculateAndApplyDefaultZoom() {
2050
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.options.defaultScale, {
2051
- canvas: t
2052
- } = this.editor, a = t.editorContainer, r = a.clientWidth, i = a.clientHeight, {
2053
- width: n,
2054
- height: s
2055
- } = this.editor.montageArea, c = r / n * e, u = i / s * e, d = Math.min(c, u), {
2056
- minZoom: l,
2057
- maxZoom: h,
2058
- maxZoomFactor: g
2059
- } = this.options;
2060
- this.minZoom = Math.min(d / g, l), this.maxZoom = Math.max(d * g, h), this.defaultZoom = d, this.setZoom(d);
2056
+ calculateAndApplyDefaultZoom(e = this.options.defaultScale) {
2057
+ const { canvas: t } = this.editor, a = t.editorContainer, r = a.clientWidth, n = a.clientHeight, { width: i, height: s } = this.editor.montageArea, c = r / i * e, u = n / s * e;
2058
+ this.defaultZoom = Math.min(c, u);
2059
+ const { defaultZoom: l, maxZoomFactor: d, minZoom: h, maxZoom: g } = this;
2060
+ this.minZoom = Math.min(l / d, h), this.maxZoom = Math.max(l * d, g), this.setZoom();
2061
2061
  }
2062
2062
  /**
2063
2063
  * Увеличение/уменьшение масштаба
@@ -2068,50 +2068,33 @@ class ft {
2068
2068
  * @fires editor:zoom-changed
2069
2069
  * Если передавать координаты курсора, то нужно быть аккуратнее, так как юзер может выйти за пределы рабочей области
2070
2070
  */
2071
- zoom() {
2072
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : vt, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
2073
- if (e) {
2074
- var {
2075
- canvas: a,
2076
- minZoom: r,
2077
- maxZoom: i
2078
- } = this.editor, n = a.getZoom(), {
2079
- x: s = t.pointX,
2080
- y: c = t.pointY
2081
- } = a.getCenterPoint(), u = Number((n + Number(e)).toFixed(2));
2082
- u > i && (u = i), u < r && (u = r), a.zoomToPoint({
2083
- x: Number(s),
2084
- y: Number(c)
2085
- }, u), a.fire("editor:zoom-changed", {
2086
- currentZoom: a.getZoom(),
2087
- zoom: u,
2088
- pointX: s,
2089
- pointY: c
2090
- });
2091
- }
2071
+ zoom(e = vt, t = {}) {
2072
+ var h, g;
2073
+ if (!e) return;
2074
+ const { minZoom: a, maxZoom: r } = this, { canvas: n } = this.editor, i = n.getZoom(), s = n.getCenterPoint(), c = (h = t.pointX) != null ? h : s.x, u = (g = t.pointY) != null ? g : s.y, l = new K(c, u);
2075
+ let d = Number((i + Number(e)).toFixed(2));
2076
+ d > r && (d = r), d < a && (d = a), n.zoomToPoint(l, d), console.log({
2077
+ currentZoom: i,
2078
+ zoom: d,
2079
+ point: l
2080
+ }), n.fire("editor:zoom-changed", {
2081
+ currentZoom: n.getZoom(),
2082
+ zoom: d,
2083
+ point: l
2084
+ });
2092
2085
  }
2093
2086
  /**
2094
2087
  * Установка зума
2095
2088
  * @param {Number} zoom - Зум
2096
2089
  * @fires editor:zoom-changed
2097
2090
  */
2098
- setZoom() {
2099
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.defaultZoom, {
2100
- canvas: t,
2101
- minZoom: a,
2102
- maxZoom: r
2103
- } = this.editor, {
2104
- x: i,
2105
- y: n
2106
- } = t.getCenterPoint(), s = e;
2107
- e > r && (s = r), e < a && (s = a), t.zoomToPoint({
2108
- x: Number(i),
2109
- y: Number(n)
2110
- }, s), t.fire("editor:zoom-changed", {
2111
- currentZoom: t.getZoom(),
2112
- zoom: s,
2113
- pointX: i,
2114
- pointY: n
2091
+ setZoom(e = this.defaultZoom) {
2092
+ const { minZoom: t, maxZoom: a } = this, { canvas: r } = this.editor, n = new K(r.getCenterPoint());
2093
+ let i = e;
2094
+ e > a && (i = a), e < t && (i = t), r.zoomToPoint(n, i), r.fire("editor:zoom-changed", {
2095
+ currentZoom: r.getZoom(),
2096
+ zoom: i,
2097
+ point: n
2115
2098
  });
2116
2099
  }
2117
2100
  /**
@@ -2119,18 +2102,10 @@ class ft {
2119
2102
  * @fires editor:zoom-changed
2120
2103
  */
2121
2104
  resetZoom() {
2122
- var {
2123
- canvas: e,
2124
- defaultZoom: t
2125
- } = this.editor, {
2126
- x: a,
2127
- y: r
2128
- } = e.getCenterPoint();
2129
- e.zoomToPoint({
2130
- x: Number(a),
2131
- y: Number(r)
2132
- }, t), this.editor.canvas.fire("editor:zoom-changed", {
2133
- currentZoom: e.getZoom()
2105
+ const { canvas: e } = this.editor, t = new K(e.getCenterPoint());
2106
+ e.zoomToPoint(t, this.defaultZoom), this.editor.canvas.fire("editor:zoom-changed", {
2107
+ currentZoom: e.getZoom(),
2108
+ point: t
2134
2109
  });
2135
2110
  }
2136
2111
  /**
@@ -2140,19 +2115,15 @@ class ft {
2140
2115
  * @param {Boolean} options.withoutSave - Не сохранять состояние
2141
2116
  * @fires editor:object-rotated
2142
2117
  */
2143
- rotate() {
2144
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : mt, {
2145
- withoutSave: t
2146
- } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2147
- canvas: a,
2148
- historyManager: r
2149
- } = this.editor, i = a.getActiveObject();
2150
- if (i) {
2151
- var n = i.angle + e;
2152
- i.rotate(n), i.setCoords(), a.renderAll(), t || r.saveState(), a.fire("editor:object-rotated", {
2153
- angle: n
2154
- });
2155
- }
2118
+ rotate(e = mt, { withoutSave: t } = {}) {
2119
+ const { canvas: a, historyManager: r } = this.editor, n = a.getActiveObject();
2120
+ if (!n) return;
2121
+ const i = n.angle + e;
2122
+ n.rotate(i), n.setCoords(), a.renderAll(), t || r.saveState(), a.fire("editor:object-rotated", {
2123
+ object: n,
2124
+ withoutSave: t,
2125
+ angle: i
2126
+ });
2156
2127
  }
2157
2128
  /**
2158
2129
  * Отразить по горизонтали
@@ -2160,14 +2131,12 @@ class ft {
2160
2131
  * @param {Boolean} options.withoutSave - Не сохранять состояние
2161
2132
  * @fires editor:object-flipped-x
2162
2133
  */
2163
- flipX() {
2164
- var {
2134
+ flipX({ withoutSave: e } = {}) {
2135
+ const { canvas: t, historyManager: a } = this.editor, r = t.getActiveObject();
2136
+ r && (r.flipX = !r.flipX, t.renderAll(), e || a.saveState(), t.fire("editor:object-flipped-x", {
2137
+ object: r,
2165
2138
  withoutSave: e
2166
- } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2167
- canvas: t,
2168
- historyManager: a
2169
- } = this.editor, r = t.getActiveObject();
2170
- r && (r.flipX = !r.flipX, t.renderAll(), e || a.saveState(), t.fire("editor:object-flipped-x"));
2139
+ }));
2171
2140
  }
2172
2141
  /**
2173
2142
  * Отразить по вертикали
@@ -2175,32 +2144,31 @@ class ft {
2175
2144
  * @param {Boolean} options.withoutSave - Не сохранять состояние
2176
2145
  * @fires editor:object-flipped-y
2177
2146
  */
2178
- flipY() {
2179
- var {
2147
+ flipY({ withoutSave: e } = {}) {
2148
+ const { canvas: t, historyManager: a } = this.editor, r = t.getActiveObject();
2149
+ r && (r.flipY = !r.flipY, t.renderAll(), e || a.saveState(), t.fire("editor:object-flipped-y", {
2150
+ object: r,
2180
2151
  withoutSave: e
2181
- } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2182
- canvas: t,
2183
- historyManager: a
2184
- } = this.editor, r = t.getActiveObject();
2185
- r && (r.flipY = !r.flipY, t.renderAll(), e || a.saveState(), t.fire("editor:object-flipped-y"));
2152
+ }));
2186
2153
  }
2187
2154
  /**
2188
2155
  * Установка прозрачности объекта
2189
2156
  * @param {Number} opacity - Прозрачность от 0 до 1
2190
2157
  * @fires editor:object-opacity-changed
2191
2158
  */
2192
- setActiveObjectOpacity() {
2193
- var {
2194
- object: e,
2195
- opacity: t = 1,
2196
- withoutSave: a
2197
- } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2198
- canvas: r,
2199
- historyManager: i
2200
- } = this.editor, n = e || r.getActiveObject();
2201
- n && (n.type === "activeselection" ? n.getObjects().forEach((s) => {
2159
+ setActiveObjectOpacity({
2160
+ object: e,
2161
+ opacity: t = 1,
2162
+ withoutSave: a
2163
+ } = {}) {
2164
+ const { canvas: r, historyManager: n } = this.editor, i = e || r.getActiveObject();
2165
+ i && (i.type === "activeselection" ? i.getObjects().forEach((s) => {
2202
2166
  s.set("opacity", t);
2203
- }) : n.set("opacity", t), r.renderAll(), a || i.saveState(), r.fire("editor:object-opacity-changed", t));
2167
+ }) : i.set("opacity", t), r.renderAll(), a || n.saveState(), r.fire("editor:object-opacity-changed", {
2168
+ object: i,
2169
+ opacity: t,
2170
+ withoutSave: a
2171
+ }));
2204
2172
  }
2205
2173
  /**
2206
2174
  * Масштабирование объекта
@@ -2213,39 +2181,30 @@ class ft {
2213
2181
  * @param {Boolean} [options.fitAsOneObject] - Масштабировать все объекты в активной группе как один объект
2214
2182
  * @fires editor:image-fitted
2215
2183
  */
2216
- fitObject() {
2217
- var {
2218
- object: e,
2219
- type: t = this.options.scaleType,
2220
- withoutSave: a,
2221
- fitAsOneObject: r
2222
- } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2223
- canvas: i,
2224
- imageManager: n,
2225
- historyManager: s
2226
- } = this.editor, c = e || i.getActiveObject();
2184
+ fitObject({
2185
+ object: e,
2186
+ type: t = this.options.scaleType,
2187
+ withoutSave: a,
2188
+ fitAsOneObject: r
2189
+ } = {}) {
2190
+ const { canvas: n, imageManager: i, historyManager: s } = this.editor, c = e || n.getActiveObject();
2227
2191
  if (c) {
2228
2192
  if (c.set("angle", 0), ["activeselection"].includes(c.type) && !r) {
2229
- var u = c.getObjects();
2230
- i.discardActiveObject(), u.forEach((h) => {
2231
- var g = n.calculateScaleFactor({
2232
- imageObject: h,
2233
- scaleType: t
2234
- });
2235
- h.scale(g), i.centerObject(h);
2236
- });
2237
- var d = new H(u, {
2238
- canvas: i
2193
+ const u = c.getObjects();
2194
+ n.discardActiveObject(), u.forEach((d) => {
2195
+ const h = i.calculateScaleFactor({ imageObject: d, scaleType: t });
2196
+ d.scale(h), n.centerObject(d);
2239
2197
  });
2240
- i.setActiveObject(d);
2198
+ const l = new R(u, { canvas: n });
2199
+ n.setActiveObject(l);
2241
2200
  } else {
2242
- var l = n.calculateScaleFactor({
2201
+ const u = i.calculateScaleFactor({
2243
2202
  imageObject: c,
2244
2203
  scaleType: t
2245
2204
  });
2246
- c.scale(l), i.centerObject(c);
2205
+ c.scale(u), n.centerObject(c);
2247
2206
  }
2248
- i.renderAll(), a || s.saveState(), i.fire("editor:object-fitted", {
2207
+ n.renderAll(), a || s.saveState(), n.fire("editor:object-fitted", {
2249
2208
  object: c,
2250
2209
  type: t,
2251
2210
  withoutSave: a,
@@ -2270,60 +2229,35 @@ class ft {
2270
2229
  * @returns
2271
2230
  * @fires editor:object-reset
2272
2231
  */
2273
- resetObject(e) {
2274
- var {
2275
- alwaysFitObject: t = !1,
2276
- withoutSave: a = !1
2277
- } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2232
+ resetObject(e, { alwaysFitObject: t = !1, withoutSave: a = !1 } = {}) {
2233
+ const {
2278
2234
  canvas: r,
2279
- montageArea: i,
2280
- imageManager: n,
2235
+ montageArea: n,
2236
+ imageManager: i,
2281
2237
  historyManager: s,
2282
- options: {
2283
- scaleType: c
2284
- }
2238
+ options: { scaleType: c }
2285
2239
  } = this.editor, u = e || r.getActiveObject();
2286
- if (!(!u || u.locked)) {
2287
- s.suspendHistory();
2288
- var d = u.type === "image" || u.format === "svg";
2289
- if (d || u.set({
2290
- scaleX: 1,
2291
- scaleY: 1,
2292
- flipX: !1,
2293
- flipY: !1,
2294
- angle: 0
2295
- }), t)
2296
- this.fitObject({
2297
- object: u,
2298
- withoutSave: !0,
2299
- fitAsOneObject: !0
2300
- });
2301
- else {
2302
- var {
2303
- width: l,
2304
- height: h
2305
- } = i, {
2306
- width: g,
2307
- height: M
2308
- } = u, m = n.calculateScaleFactor({
2309
- imageObject: u,
2310
- scaleType: c
2311
- }), f = c === "contain" && m < 1 || c === "cover" && (g > l || M > h);
2312
- f ? this.fitObject({
2313
- object: u,
2314
- withoutSave: !0,
2315
- fitAsOneObject: !0
2316
- }) : u.set({
2317
- scaleX: 1,
2318
- scaleY: 1
2319
- });
2320
- }
2321
- u.set({
2322
- flipX: !1,
2323
- flipY: !1,
2324
- angle: 0
2325
- }), r.centerObject(u), r.renderAll(), s.resumeHistory(), a || s.saveState(), r.fire("editor:object-reset");
2240
+ if (!u || u.locked) return;
2241
+ if (s.suspendHistory(), u.type === "image" || u.format === "svg" || u.set({
2242
+ scaleX: 1,
2243
+ scaleY: 1,
2244
+ flipX: !1,
2245
+ flipY: !1,
2246
+ angle: 0
2247
+ }), t)
2248
+ this.fitObject({ object: u, withoutSave: !0, fitAsOneObject: !0 });
2249
+ else {
2250
+ const { width: d, height: h } = n, { width: g, height: M } = u, m = i.calculateScaleFactor({
2251
+ imageObject: u,
2252
+ scaleType: c
2253
+ });
2254
+ c === "contain" && m < 1 || c === "cover" && (g > d || M > h) ? this.fitObject({ object: u, withoutSave: !0, fitAsOneObject: !0 }) : u.set({ scaleX: 1, scaleY: 1 });
2326
2255
  }
2256
+ u.set({ flipX: !1, flipY: !1, angle: 0 }), r.centerObject(u), r.renderAll(), s.resumeHistory(), a || s.saveState(), r.fire("editor:object-reset", {
2257
+ object: u,
2258
+ withoutSave: a,
2259
+ alwaysFitObject: t
2260
+ });
2327
2261
  }
2328
2262
  }
2329
2263
  class jt {
@@ -2376,14 +2310,14 @@ class jt {
2376
2310
  a.suspendHistory(), t.setCoords();
2377
2311
  var {
2378
2312
  left: r,
2379
- top: i,
2380
- width: n,
2313
+ top: n,
2314
+ width: i,
2381
2315
  height: s
2382
2316
  } = t.getBoundingRect();
2383
2317
  this.overlayMask.set({
2384
2318
  left: r,
2385
- top: i,
2386
- width: n,
2319
+ top: n,
2320
+ width: i,
2387
2321
  height: s
2388
2322
  }), e.discardActiveObject(), this.editor.layerManager.bringToFront(this.overlayMask, {
2389
2323
  withoutSave: !0
@@ -2426,7 +2360,7 @@ class jt {
2426
2360
  }
2427
2361
  }
2428
2362
  }
2429
- class K {
2363
+ class $ {
2430
2364
  /**
2431
2365
  * @param {object} options
2432
2366
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2452,10 +2386,13 @@ class K {
2452
2386
  historyManager: r
2453
2387
  } = this.editor;
2454
2388
  r.suspendHistory();
2455
- var i = e || a.getActiveObject();
2456
- i && (i.type === "activeselection" ? i.getObjects().forEach((n) => {
2457
- a.bringObjectToFront(n);
2458
- }) : a.bringObjectToFront(i), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-to-front"));
2389
+ var n = e || a.getActiveObject();
2390
+ n && (n.type === "activeselection" ? n.getObjects().forEach((i) => {
2391
+ a.bringObjectToFront(i);
2392
+ }) : a.bringObjectToFront(n), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-to-front", {
2393
+ object: n,
2394
+ withoutSave: t
2395
+ }));
2459
2396
  }
2460
2397
  /**
2461
2398
  * Поднять объект на один уровень вверх по оси Z
@@ -2472,8 +2409,11 @@ class K {
2472
2409
  historyManager: r
2473
2410
  } = this.editor;
2474
2411
  r.suspendHistory();
2475
- var i = e || a.getActiveObject();
2476
- i && (i.type === "activeselection" ? K._moveSelectionForward(a, i) : a.bringObjectForward(i), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-forward"));
2412
+ var n = e || a.getActiveObject();
2413
+ n && (n.type === "activeselection" ? $._moveSelectionForward(a, n) : a.bringObjectForward(n), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-forward", {
2414
+ object: n,
2415
+ withoutSave: t
2416
+ }));
2477
2417
  }
2478
2418
  /**
2479
2419
  * Отправить объект на задний план по оси Z
@@ -2488,12 +2428,12 @@ class K {
2488
2428
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2489
2429
  canvas: a,
2490
2430
  montageArea: r,
2491
- historyManager: i,
2431
+ historyManager: n,
2492
2432
  interactionBlocker: {
2493
- overlayMask: n
2433
+ overlayMask: i
2494
2434
  }
2495
2435
  } = this.editor;
2496
- i.suspendHistory();
2436
+ n.suspendHistory();
2497
2437
  var s = e || a.getActiveObject();
2498
2438
  if (s) {
2499
2439
  if (s.type === "activeselection")
@@ -2501,7 +2441,10 @@ class K {
2501
2441
  a.sendObjectToBack(c[u]);
2502
2442
  else
2503
2443
  a.sendObjectToBack(s);
2504
- a.sendObjectToBack(r), a.sendObjectToBack(n), a.renderAll(), i.resumeHistory(), t || i.saveState(), a.fire("editor:object-send-to-back");
2444
+ a.sendObjectToBack(r), a.sendObjectToBack(i), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-send-to-back", {
2445
+ object: s,
2446
+ withoutSave: t
2447
+ });
2505
2448
  }
2506
2449
  }
2507
2450
  /**
@@ -2516,14 +2459,17 @@ class K {
2516
2459
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2517
2460
  canvas: a,
2518
2461
  montageArea: r,
2519
- historyManager: i,
2462
+ historyManager: n,
2520
2463
  interactionBlocker: {
2521
- overlayMask: n
2464
+ overlayMask: i
2522
2465
  }
2523
2466
  } = this.editor;
2524
- i.suspendHistory();
2467
+ n.suspendHistory();
2525
2468
  var s = e || a.getActiveObject();
2526
- s && (s.type === "activeselection" ? K._moveSelectionBackwards(a, s) : a.sendObjectBackwards(s), a.sendObjectToBack(r), a.sendObjectToBack(n), a.renderAll(), i.resumeHistory(), t || i.saveState(), a.fire("editor:object-send-backwards"));
2469
+ s && (s.type === "activeselection" ? $._moveSelectionBackwards(a, s) : a.sendObjectBackwards(s), a.sendObjectToBack(r), a.sendObjectToBack(i), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-send-backwards", {
2470
+ object: s,
2471
+ withoutSave: t
2472
+ }));
2527
2473
  }
2528
2474
  /**
2529
2475
  * Сдвигает выделенные объекты на один уровень вверх относительно ближайшего верхнего объекта
@@ -2533,20 +2479,20 @@ class K {
2533
2479
  * @private
2534
2480
  */
2535
2481
  static _moveSelectionForward(e, t) {
2536
- for (var a = e.getObjects(), r = t.getObjects(), i = r.map((d) => a.indexOf(d)), n = -1, s = function(l) {
2537
- var h = a[l];
2538
- if (!r.includes(h) && i.some((g) => l > g))
2539
- return n = l, 1;
2482
+ for (var a = e.getObjects(), r = t.getObjects(), n = r.map((l) => a.indexOf(l)), i = -1, s = function(d) {
2483
+ var h = a[d];
2484
+ if (!r.includes(h) && n.some((g) => d > g))
2485
+ return i = d, 1;
2540
2486
  }, c = 0; c < a.length && !s(c); c += 1)
2541
2487
  ;
2542
- if (n !== -1) {
2543
- var u = r.map((d) => ({
2544
- obj: d,
2545
- index: a.indexOf(d)
2546
- })).sort((d, l) => l.index - d.index);
2547
- u.forEach((d) => {
2548
- var l = a.indexOf(d.obj);
2549
- l < n && (e.moveObjectTo(d.obj, n), n = l);
2488
+ if (i !== -1) {
2489
+ var u = r.map((l) => ({
2490
+ obj: l,
2491
+ index: a.indexOf(l)
2492
+ })).sort((l, d) => d.index - l.index);
2493
+ u.forEach((l) => {
2494
+ var d = a.indexOf(l.obj);
2495
+ d < i && (e.moveObjectTo(l.obj, i), i = d);
2550
2496
  });
2551
2497
  }
2552
2498
  }
@@ -2558,8 +2504,8 @@ class K {
2558
2504
  * @private
2559
2505
  */
2560
2506
  static _moveSelectionBackwards(e, t) {
2561
- for (var a = e.getObjects(), r = t.getObjects(), i = Math.min(...r.map((s) => a.indexOf(s))), n = r.length - 1; n >= 0; n -= 1)
2562
- e.moveObjectTo(r[n], i - 1);
2507
+ for (var a = e.getObjects(), r = t.getObjects(), n = Math.min(...r.map((s) => a.indexOf(s))), i = r.length - 1; i >= 0; i -= 1)
2508
+ e.moveObjectTo(r[i], n - 1);
2563
2509
  }
2564
2510
  }
2565
2511
  class yt {
@@ -2586,15 +2532,15 @@ class yt {
2586
2532
  * @param {Object} flags.withoutSelection - Не выделять объект
2587
2533
  * @param {Object} flags.withoutAdding - Не добавлять объект в canvas
2588
2534
  */
2589
- addRectangle(d = {}, { withoutSelection: c, withoutAdding: u } = {}) {
2590
- var l = d, {
2535
+ addRectangle(l = {}, { withoutSelection: c, withoutAdding: u } = {}) {
2536
+ var d = l, {
2591
2537
  id: e = `rect-${A()}`,
2592
2538
  left: t,
2593
2539
  top: a,
2594
2540
  width: r = 100,
2595
- height: i = 100,
2596
- fill: n = "blue"
2597
- } = l, s = X(l, [
2541
+ height: n = 100,
2542
+ fill: i = "blue"
2543
+ } = d, s = X(d, [
2598
2544
  "id",
2599
2545
  "left",
2600
2546
  "top",
@@ -2607,8 +2553,8 @@ class yt {
2607
2553
  left: t,
2608
2554
  top: a,
2609
2555
  width: r,
2610
- height: i,
2611
- fill: n
2556
+ height: n,
2557
+ fill: i
2612
2558
  }, s));
2613
2559
  return !t && !a && h.centerObject(g), u || (h.add(g), c || h.setActiveObject(g), h.renderAll()), g;
2614
2560
  }
@@ -2629,27 +2575,27 @@ class yt {
2629
2575
  * @param {Object} flags.withoutAdding - Не добавлять объект в canvas
2630
2576
  */
2631
2577
  addCircle(u = {}, { withoutSelection: s, withoutAdding: c } = {}) {
2632
- var d = u, {
2578
+ var l = u, {
2633
2579
  id: e = `circle-${A()}`,
2634
2580
  left: t,
2635
2581
  top: a,
2636
2582
  radius: r = 50,
2637
- fill: i = "green"
2638
- } = d, n = X(d, [
2583
+ fill: n = "green"
2584
+ } = l, i = X(l, [
2639
2585
  "id",
2640
2586
  "left",
2641
2587
  "top",
2642
2588
  "radius",
2643
2589
  "fill"
2644
2590
  ]);
2645
- const { canvas: l } = this.editor, h = new Be(C({
2591
+ const { canvas: d } = this.editor, h = new Be(C({
2646
2592
  id: e,
2647
2593
  left: t,
2648
2594
  top: a,
2649
- fill: i,
2595
+ fill: n,
2650
2596
  radius: r
2651
- }, n));
2652
- return !t && !a && l.centerObject(h), c || (l.add(h), s || l.setActiveObject(h), l.renderAll()), h;
2597
+ }, i));
2598
+ return !t && !a && d.centerObject(h), c || (d.add(h), s || d.setActiveObject(h), d.renderAll()), h;
2653
2599
  }
2654
2600
  /**
2655
2601
  * Добавление треугольника
@@ -2668,15 +2614,15 @@ class yt {
2668
2614
  * @param {Object} flags.withoutSelection - Не выделять объект
2669
2615
  * @param {Object} flags.withoutAdding - Не добавлять объект в canvas
2670
2616
  */
2671
- addTriangle(d = {}, { withoutSelection: c, withoutAdding: u } = {}) {
2672
- var l = d, {
2617
+ addTriangle(l = {}, { withoutSelection: c, withoutAdding: u } = {}) {
2618
+ var d = l, {
2673
2619
  id: e = `triangle-${A()}`,
2674
2620
  left: t,
2675
2621
  top: a,
2676
2622
  width: r = 100,
2677
- height: i = 100,
2678
- fill: n = "yellow"
2679
- } = l, s = X(l, [
2623
+ height: n = 100,
2624
+ fill: i = "yellow"
2625
+ } = d, s = X(d, [
2680
2626
  "id",
2681
2627
  "left",
2682
2628
  "top",
@@ -2688,9 +2634,9 @@ class yt {
2688
2634
  id: e,
2689
2635
  left: t,
2690
2636
  top: a,
2691
- fill: n,
2637
+ fill: i,
2692
2638
  width: r,
2693
- height: i
2639
+ height: n
2694
2640
  }, s));
2695
2641
  return !t && !a && h.centerObject(g), u || (h.add(g), c || h.setActiveObject(g), h.renderAll()), g;
2696
2642
  }
@@ -2729,11 +2675,11 @@ class pt {
2729
2675
  });
2730
2676
  }), this._cloneAndFire(e, a);
2731
2677
  }
2732
- const i = a.toCanvasElement().toDataURL(), n = i.slice(5).split(";")[0], s = i.split(",")[1], c = atob(s), u = new Uint8Array(c.length);
2678
+ const n = a.toCanvasElement().toDataURL(), i = n.slice(5).split(";")[0], s = n.split(",")[1], c = atob(s), u = new Uint8Array(c.length);
2733
2679
  for (let h = 0; h < c.length; h++)
2734
2680
  u[h] = c.charCodeAt(h);
2735
- const d = new Blob([u.buffer], { type: n }), l = new ClipboardItem({ [n]: d });
2736
- navigator.clipboard.write([l]).catch((h) => {
2681
+ const l = new Blob([u.buffer], { type: i }), d = new ClipboardItem({ [i]: l });
2682
+ navigator.clipboard.write([d]).catch((h) => {
2737
2683
  t.emitWarning({
2738
2684
  origin: "ClipboardManager",
2739
2685
  method: "copy",
@@ -2767,8 +2713,8 @@ class pt {
2767
2713
  * @param {Array} event.clipboardData.items — элементы буфера обмена
2768
2714
  */
2769
2715
  handlePasteEvent({ clipboardData: e }) {
2770
- var n;
2771
- if (!((n = e == null ? void 0 : e.items) != null && n.length)) return;
2716
+ var i;
2717
+ if (!((i = e == null ? void 0 : e.items) != null && i.length)) return;
2772
2718
  const { imageManager: t } = this.editor, { items: a } = e, r = a[a.length - 1];
2773
2719
  if (r.type !== "text/html") {
2774
2720
  const s = r.getAsFile();
@@ -2779,9 +2725,9 @@ class pt {
2779
2725
  }, c.readAsDataURL(s);
2780
2726
  return;
2781
2727
  }
2782
- const i = e.getData("text/html");
2783
- if (i) {
2784
- const u = new DOMParser().parseFromString(i, "text/html").querySelector("img");
2728
+ const n = e.getData("text/html");
2729
+ if (n) {
2730
+ const u = new DOMParser().parseFromString(n, "text/html").querySelector("img");
2785
2731
  if (u != null && u.src) {
2786
2732
  t.importImage({ source: u.src });
2787
2733
  return;
@@ -2803,7 +2749,7 @@ class pt {
2803
2749
  left: t.left + 10,
2804
2750
  top: t.top + 10,
2805
2751
  evented: !0
2806
- }), t instanceof H ? (t.canvas = e, t.forEachObject((a) => {
2752
+ }), t instanceof R ? (t.canvas = e, t.forEachObject((a) => {
2807
2753
  e.add(a);
2808
2754
  })) : e.add(t), e.setActiveObject(t), e.requestRenderAll(), e.fire("editor:object-pasted", { object: t });
2809
2755
  });
@@ -2835,9 +2781,9 @@ class bt {
2835
2781
  withoutSave: a
2836
2782
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2837
2783
  canvas: r,
2838
- historyManager: i
2839
- } = this.editor, n = e || r.getActiveObject();
2840
- if (!(!n || n.locked)) {
2784
+ historyManager: n
2785
+ } = this.editor, i = e || r.getActiveObject();
2786
+ if (!(!i || i.locked)) {
2841
2787
  var s = {
2842
2788
  lockMovementX: !0,
2843
2789
  lockMovementY: !0,
@@ -2848,12 +2794,14 @@ class bt {
2848
2794
  lockSkewingY: !0,
2849
2795
  locked: !0
2850
2796
  };
2851
- n.set(s);
2852
- var c = !t && ["activeselection", "group"].includes(n.type);
2853
- c && n.getObjects().forEach((u) => {
2797
+ i.set(s);
2798
+ var c = !t && ["activeselection", "group"].includes(i.type);
2799
+ c && i.getObjects().forEach((u) => {
2854
2800
  u.set(s);
2855
- }), r.renderAll(), a || i.saveState(), r.fire("editor:object-locked", {
2856
- object: n
2801
+ }), r.renderAll(), a || n.saveState(), r.fire("editor:object-locked", {
2802
+ object: i,
2803
+ skipInnerObjects: t,
2804
+ withoutSave: a
2857
2805
  });
2858
2806
  }
2859
2807
  }
@@ -2872,9 +2820,9 @@ class bt {
2872
2820
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2873
2821
  canvas: a,
2874
2822
  historyManager: r
2875
- } = this.editor, i = e || a.getActiveObject();
2876
- if (i) {
2877
- var n = {
2823
+ } = this.editor, n = e || a.getActiveObject();
2824
+ if (n) {
2825
+ var i = {
2878
2826
  lockMovementX: !1,
2879
2827
  lockMovementY: !1,
2880
2828
  lockRotation: !1,
@@ -2884,10 +2832,11 @@ class bt {
2884
2832
  lockSkewingY: !1,
2885
2833
  locked: !1
2886
2834
  };
2887
- i.set(n), ["activeselection", "group"].includes(i.type) && i.getObjects().forEach((s) => {
2888
- s.set(n);
2835
+ n.set(i), ["activeselection", "group"].includes(n.type) && n.getObjects().forEach((s) => {
2836
+ s.set(i);
2889
2837
  }), a.renderAll(), t || r.saveState(), a.fire("editor:object-unlocked", {
2890
- object: i
2838
+ object: n,
2839
+ withoutSave: t
2891
2840
  });
2892
2841
  }
2893
2842
  }
@@ -2919,11 +2868,11 @@ class It {
2919
2868
  historyManager: r
2920
2869
  } = this.editor;
2921
2870
  r.suspendHistory();
2922
- var i = e || a.getActiveObject();
2923
- if (i && i.type === "activeselection") {
2924
- var n = i.getObjects(), s = new ze(n);
2925
- n.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(A())), a.add(s), a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped", {
2926
- object: i,
2871
+ var n = e || a.getActiveObject();
2872
+ if (n && n.type === "activeselection") {
2873
+ var i = n.getObjects(), s = new ze(i);
2874
+ i.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(A())), a.add(s), a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped", {
2875
+ object: n,
2927
2876
  group: s,
2928
2877
  withoutSave: t
2929
2878
  });
@@ -2945,15 +2894,15 @@ class It {
2945
2894
  historyManager: r
2946
2895
  } = this.editor;
2947
2896
  r.suspendHistory();
2948
- var i = e || a.getActiveObject();
2949
- if (!(!i || i.type !== "group")) {
2950
- var n = i.removeAll();
2951
- a.remove(i), n.forEach((c) => a.add(c));
2952
- var s = new H(n, {
2897
+ var n = e || a.getActiveObject();
2898
+ if (!(!n || n.type !== "group")) {
2899
+ var i = n.removeAll();
2900
+ a.remove(n), i.forEach((c) => a.add(c));
2901
+ var s = new R(i, {
2953
2902
  canvas: a
2954
2903
  });
2955
2904
  a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-ungrouped", {
2956
- object: i,
2905
+ object: n,
2957
2906
  selection: s,
2958
2907
  withoutSave: t
2959
2908
  });
@@ -2982,15 +2931,15 @@ class At {
2982
2931
  objectLockManager: a
2983
2932
  } = this.editor;
2984
2933
  e.discardActiveObject();
2985
- var r = t.getObjects(), i = r.some((s) => s.locked), n = r.length > 1 ? new H(t.getObjects(), {
2934
+ var r = t.getObjects(), n = r.some((s) => s.locked), i = r.length > 1 ? new R(t.getObjects(), {
2986
2935
  canvas: e
2987
2936
  }) : r[0];
2988
- i && a.lockObject({
2989
- object: n,
2937
+ n && a.lockObject({
2938
+ object: i,
2990
2939
  skipInnerObjects: !0,
2991
2940
  withoutSave: !0
2992
- }), e.setActiveObject(n), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
2993
- selected: n
2941
+ }), e.setActiveObject(i), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
2942
+ selected: i
2994
2943
  });
2995
2944
  }
2996
2945
  }
@@ -3019,16 +2968,16 @@ class St {
3019
2968
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
3020
2969
  canvas: a,
3021
2970
  historyManager: r,
3022
- groupingManager: i
3023
- } = this.editor, n = (e || a.getActiveObjects()).filter((s) => !s.locked);
3024
- n != null && n.length && (r.suspendHistory(), n.forEach((s) => {
2971
+ groupingManager: n
2972
+ } = this.editor, i = (e || a.getActiveObjects()).filter((s) => !s.locked);
2973
+ i != null && i.length && (r.suspendHistory(), i.forEach((s) => {
3025
2974
  if (s.type === "group" && s.format !== "svg") {
3026
- i.ungroup(s), this.deleteSelectedObjects();
2975
+ n.ungroup(s), this.deleteSelectedObjects();
3027
2976
  return;
3028
2977
  }
3029
2978
  a.remove(s);
3030
2979
  }), a.discardActiveObject(), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-deleted", {
3031
- objects: n,
2980
+ objects: i,
3032
2981
  withoutSave: t
3033
2982
  }));
3034
2983
  }
@@ -3082,7 +3031,7 @@ var Ct = {
3082
3031
  CLONE_FAILED: "CLONE_FAILED"
3083
3032
  }
3084
3033
  };
3085
- class $ {
3034
+ class q {
3086
3035
  constructor({ editor: e }) {
3087
3036
  this._buffer = [], this.editor = e;
3088
3037
  }
@@ -3102,19 +3051,19 @@ class $ {
3102
3051
  * @param {string} [options.message] — текст ошибки (опционально, если не передан, то используется код ошибки)
3103
3052
  * @fires editor:error
3104
3053
  */
3105
- emitError({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, data: r, message: i }) {
3106
- if (!$.isValidErrorCode(a)) {
3054
+ emitError({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, data: r, message: n }) {
3055
+ if (!q.isValidErrorCode(a)) {
3107
3056
  console.warn("Неизвестный код ошибки: ", { code: a, origin: e, method: t });
3108
3057
  return;
3109
3058
  }
3110
3059
  if (!a) return;
3111
- const n = i || a;
3112
- console.error(`${e}. ${t}. ${a}. ${n}`, r);
3060
+ const i = n || a;
3061
+ console.error(`${e}. ${t}. ${a}. ${i}`, r);
3113
3062
  const s = {
3114
3063
  code: a,
3115
3064
  origin: e,
3116
3065
  method: t,
3117
- message: n,
3066
+ message: i,
3118
3067
  data: r
3119
3068
  };
3120
3069
  this._buffer.push(C({
@@ -3131,19 +3080,19 @@ class $ {
3131
3080
  * @param {string} [options.message] — текст предупреждения (опционально, если не передан, то используется код предупреждения)
3132
3081
  * @fires editor:warning
3133
3082
  */
3134
- emitWarning({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, message: r, data: i }) {
3135
- if (!$.isValidErrorCode(a)) {
3083
+ emitWarning({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, message: r, data: n }) {
3084
+ if (!q.isValidErrorCode(a)) {
3136
3085
  console.warn("Неизвестный код предупреждения: ", { code: a, origin: e, method: t });
3137
3086
  return;
3138
3087
  }
3139
- const n = r || a;
3140
- console.warn(`${e}. ${t}. ${a}. ${n}`, i);
3088
+ const i = r || a;
3089
+ console.warn(`${e}. ${t}. ${a}. ${i}`, n);
3141
3090
  const s = {
3142
3091
  code: a,
3143
3092
  origin: e,
3144
3093
  method: t,
3145
- message: n,
3146
- data: i
3094
+ message: i,
3095
+ data: n
3147
3096
  };
3148
3097
  this._buffer.push(C({
3149
3098
  type: "editor:warning"
@@ -3153,16 +3102,14 @@ class $ {
3153
3102
  return e ? Object.values(Ct).some((t) => Object.values(t).includes(e)) : !1;
3154
3103
  }
3155
3104
  }
3156
- class ue {
3105
+ class de {
3157
3106
  /**
3158
3107
  * Конструктор класса ImageEditor.
3159
3108
  * @param {string} canvasId - идентификатор канваса, в котором будет создан редактор
3160
- * @param {IEditorOptions} options - опции и настройки редактора
3109
+ * @param {CanvasOptions} options - опции и настройки редактора
3161
3110
  */
3162
3111
  constructor(e, t) {
3163
- this.options = t;
3164
- const { defaultScale: a, minZoom: r, maxZoom: i } = t;
3165
- this.containerId = e, this.editorId = `${e}-${A()}`, this.clipboard = null, this.defaultZoom = a, this.minZoom = r || ht, this.maxZoom = i || gt, this.init();
3112
+ this.options = t, this.containerId = e, this.editorId = `${e}-${A()}`, this.clipboard = null, this.init();
3166
3113
  }
3167
3114
  init() {
3168
3115
  return Q(this, null, function* () {
@@ -3171,23 +3118,23 @@ class ue {
3171
3118
  editorContainerHeight: t,
3172
3119
  canvasWrapperWidth: a,
3173
3120
  canvasWrapperHeight: r,
3174
- canvasCSSWidth: i,
3175
- canvasCSSHeight: n,
3121
+ canvasCSSWidth: n,
3122
+ canvasCSSHeight: i,
3176
3123
  initialImage: s,
3177
3124
  initialStateJSON: c,
3178
3125
  scaleType: u,
3179
- _onReadyCallback: d
3126
+ _onReadyCallback: l
3180
3127
  } = this.options;
3181
- if (Ke.apply(), this.canvas = new Ue(this.containerId, this.options), this.moduleLoader = new He(), this.workerManager = new Pe(), this.errorManager = new $({ editor: this }), this.historyManager = new lt({ editor: this }), this.toolbar = new dt({ editor: this }), this.transformManager = new ft({ editor: this }), this.canvasManager = new Mt({ editor: this }), this.imageManager = new D({ editor: this }), this.layerManager = new K({ editor: this }), this.shapeManager = new yt({ editor: this }), this.interactionBlocker = new jt({ editor: this }), this.clipboardManager = new pt({ editor: this }), this.objectLockManager = new bt({ editor: this }), this.groupingManager = new It({ editor: this }), this.selectionManager = new At({ editor: this }), this.deletionManager = new St({ editor: this }), this._createMontageArea(), this._createClippingArea(), this.listeners = new R({ editor: this, options: this.options }), this.canvasManager.setEditorContainerWidth(e), this.canvasManager.setEditorContainerHeight(t), this.canvasManager.setCanvasWrapperWidth(a), this.canvasManager.setCanvasWrapperHeight(r), this.canvasManager.setCanvasCSSWidth(i), this.canvasManager.setCanvasCSSHeight(n), s != null && s.source) {
3128
+ if (Ke.apply(), this.canvas = new Ue(this.containerId, this.options), this.moduleLoader = new Re(), this.workerManager = new Pe(), this.errorManager = new q({ editor: this }), this.historyManager = new lt({ editor: this }), this.toolbar = new dt({ editor: this }), this.transformManager = new ft({ editor: this }), this.canvasManager = new Mt({ editor: this }), this.imageManager = new D({ editor: this }), this.layerManager = new $({ editor: this }), this.shapeManager = new yt({ editor: this }), this.interactionBlocker = new jt({ editor: this }), this.clipboardManager = new pt({ editor: this }), this.objectLockManager = new bt({ editor: this }), this.groupingManager = new It({ editor: this }), this.selectionManager = new At({ editor: this }), this.deletionManager = new St({ editor: this }), this._createMontageArea(), this._createClippingArea(), this.listeners = new H({ editor: this, options: this.options }), this.canvasManager.setEditorContainerWidth(e), this.canvasManager.setEditorContainerHeight(t), this.canvasManager.setCanvasWrapperWidth(a), this.canvasManager.setCanvasWrapperHeight(r), this.canvasManager.setCanvasCSSWidth(n), this.canvasManager.setCanvasCSSHeight(i), s != null && s.source) {
3182
3129
  const {
3183
- source: l,
3130
+ source: d,
3184
3131
  scale: h = `image-${u}`,
3185
3132
  withoutSave: g = !0
3186
3133
  } = s;
3187
- yield this.imageManager.importImage({ source: l, scale: h, withoutSave: g });
3134
+ yield this.imageManager.importImage({ source: d, scale: h, withoutSave: g });
3188
3135
  } else
3189
3136
  this.canvasManager.setDefaultScale({ withoutSave: !0 });
3190
- c && this.historyManager.loadStateFromFullState(c), this.historyManager.saveState(), console.log("editor:ready"), this.canvas.fire("editor:ready", this), typeof d == "function" && d(this);
3137
+ c && this.historyManager.loadStateFromFullState(c), this.historyManager.saveState(), console.log("editor:ready"), this.canvas.fire("editor:ready", this), typeof l == "function" && l(this);
3191
3138
  });
3192
3139
  }
3193
3140
  _createMontageArea() {
@@ -3198,7 +3145,7 @@ class ue {
3198
3145
  this.montageArea = this.shapeManager.addRectangle({
3199
3146
  width: e,
3200
3147
  height: t,
3201
- fill: ue._createMosaicPattern(),
3148
+ fill: de._createMosaicPattern(),
3202
3149
  stroke: null,
3203
3150
  strokeWidth: 0,
3204
3151
  selectable: !1,
@@ -3341,10 +3288,10 @@ function Et(o, e = {}) {
3341
3288
  if (!a)
3342
3289
  return Promise.reject(new Error(`Контейнер с ID "${o}" не найден.`));
3343
3290
  const r = document.createElement("canvas");
3344
- return r.id = `${o}-canvas`, a.appendChild(r), t.editorContainer = a, new Promise((i) => {
3345
- t._onReadyCallback = i;
3346
- const n = new ue(r.id, t);
3347
- window[o] = n;
3291
+ return r.id = `${o}-canvas`, a.appendChild(r), t.editorContainer = a, new Promise((n) => {
3292
+ t._onReadyCallback = n;
3293
+ const i = new de(r.id, t);
3294
+ window[o] = i;
3348
3295
  });
3349
3296
  }
3350
3297
  export {