@anu3ev/fabric-image-editor 0.1.42 → 0.1.44

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 +722 -807
  2. package/package.json +4 -2
package/dist/main.js CHANGED
@@ -1,12 +1,12 @@
1
- var Ee = Object.defineProperty;
1
+ var we = Object.defineProperty;
2
2
  var G = Object.getOwnPropertySymbols;
3
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) => {
4
+ var me = (o, e, t) => e in o ? we(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
- fe.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
- je.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) => {
@@ -18,30 +18,30 @@ var X = (o, e) => {
18
18
  e.indexOf(a) < 0 && je.call(o, a) && (t[a] = o[a]);
19
19
  return t;
20
20
  };
21
- var Q = (o, e, t) => new Promise((a, r) => {
22
- var n = (c) => {
21
+ var Q = (o, e, t) => new Promise((a, n) => {
22
+ var i = (c) => {
23
23
  try {
24
- s(t.next(c));
24
+ r(t.next(c));
25
25
  } catch (u) {
26
- r(u);
26
+ n(u);
27
27
  }
28
- }, i = (c) => {
28
+ }, s = (c) => {
29
29
  try {
30
- s(t.throw(c));
30
+ r(t.throw(c));
31
31
  } catch (u) {
32
- r(u);
32
+ n(u);
33
33
  }
34
- }, s = (c) => c.done ? a(c.value) : Promise.resolve(c.value).then(n, i);
35
- s((t = t.apply(o, e)).next());
34
+ }, r = (c) => c.done ? a(c.value) : Promise.resolve(c.value).then(i, s);
35
+ r((t = t.apply(o, e)).next());
36
36
  });
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
- import { create as _e } from "jsondiffpatch";
39
- var He = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", A = function() {
37
+ import { ActiveSelection as T, 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 _e } from "fabric";
38
+ import { create as He } from "jsondiffpatch";
39
+ var Ye = "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 += He[a[e] & 63];
41
+ t += Ye[a[e] & 63];
42
42
  return t;
43
43
  };
44
- class H {
44
+ class R {
45
45
  /**
46
46
  * Конструктор принимает редактор и опции.
47
47
  * @param {Object} params
@@ -58,7 +58,7 @@ class H {
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 = 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();
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();
62
62
  }
63
63
  /**
64
64
  * Инициализация всех обработчиков согласно опциям.
@@ -68,15 +68,15 @@ class H {
68
68
  adaptCanvasToContainerOnResize: e,
69
69
  canvasDragging: t,
70
70
  mouseWheelZooming: a,
71
- bringToFrontOnSelection: r,
72
- copyObjectsByHotkey: n,
73
- pasteImageFromClipboard: i,
74
- undoRedoByHotKeys: s,
71
+ bringToFrontOnSelection: n,
72
+ copyObjectsByHotkey: i,
73
+ pasteImageFromClipboard: s,
74
+ undoRedoByHotKeys: r,
75
75
  selectAllByHotkey: c,
76
76
  deleteObjectsByHotkey: u,
77
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)), 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);
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), n && (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 }), i && document.addEventListener("keydown", this.handleCopyEventBound, { capture: !0 }), s && document.addEventListener("paste", this.handlePasteEventBound, { capture: !0 }), r && (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,20 +85,20 @@ class H {
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((i) => i.locked)) return;
89
- const r = e.filter((i) => !i.locked);
90
- if (r.length === 0) {
88
+ if (!(e != null && e.length) || !(t instanceof MouseEvent) || e.length === 1 || !e.some((s) => s.locked)) return;
89
+ const n = e.filter((s) => !s.locked);
90
+ if (n.length === 0) {
91
91
  this.canvas.discardActiveObject();
92
92
  return;
93
93
  }
94
- if (r.length === 1) {
95
- this.canvas.setActiveObject(r[0]);
94
+ if (n.length === 1) {
95
+ this.canvas.setActiveObject(n[0]);
96
96
  return;
97
97
  }
98
- const n = new R(r, {
98
+ const i = new T(n, {
99
99
  canvas: this.canvas
100
100
  });
101
- this.canvas.setActiveObject(n), this.canvas.requestRenderAll();
101
+ this.canvas.setActiveObject(i), this.canvas.requestRenderAll();
102
102
  }
103
103
  /**
104
104
  * Обработчики для сохранения состояния редактора в истории.
@@ -139,8 +139,8 @@ class H {
139
139
  * @param {String} event.code — код клавиши
140
140
  */
141
141
  handleCopyEvent(e) {
142
- const { ctrlKey: t, metaKey: a, code: r } = e;
143
- !t && !a || r !== "KeyC" || (e.preventDefault(), this.editor.clipboardManager.copy());
142
+ const { ctrlKey: t, metaKey: a, code: n } = e;
143
+ !t && !a || n !== "KeyC" || (e.preventDefault(), this.editor.clipboardManager.copy());
144
144
  }
145
145
  /**
146
146
  * Обработчик вставки объекта или изображения из буфера обмена.
@@ -158,8 +158,8 @@ class H {
158
158
  */
159
159
  handleUndoRedoEvent(e) {
160
160
  return Q(this, null, function* () {
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()));
161
+ const { ctrlKey: t, metaKey: a, code: n, repeat: i } = e;
162
+ !t && !a || i || !/Mac/i.test(navigator.userAgent) && this.isUndoRedoKeyPressed || (n === "KeyZ" ? (e.preventDefault(), this.isUndoRedoKeyPressed = !0, yield this.editor.historyManager.undo()) : n === "KeyY" && (e.preventDefault(), this.isUndoRedoKeyPressed = !0, yield this.editor.historyManager.redo()));
163
163
  });
164
164
  }
165
165
  /**
@@ -178,8 +178,8 @@ class H {
178
178
  * @param {String} event.code — код клавиши
179
179
  */
180
180
  handleSelectAllEvent(e) {
181
- const { ctrlKey: t, metaKey: a, code: r } = e;
182
- !t && !a || r !== "KeyA" || (e.preventDefault(), this.editor.selectionManager.selectAll());
181
+ const { ctrlKey: t, metaKey: a, code: n } = e;
182
+ !t && !a || n !== "KeyA" || (e.preventDefault(), this.editor.selectionManager.selectAll());
183
183
  }
184
184
  /**
185
185
  * Обработчик для удаления объектов (Delete).
@@ -197,12 +197,12 @@ class H {
197
197
  */
198
198
  handleSpaceKeyDown(e) {
199
199
  if (e.code !== "Space") return;
200
- const { canvas: t, editor: a, isSpacePressed: r, isDragging: n } = this;
201
- r || n || (this.isSpacePressed = !0, e.preventDefault(), t.set({
200
+ const { canvas: t, editor: a, isSpacePressed: n, isDragging: i } = this;
201
+ n || i || (this.isSpacePressed = !0, e.preventDefault(), t.set({
202
202
  selection: !1,
203
203
  defaultCursor: "grab"
204
- }), t.setCursor("grab"), a.canvasManager.getObjects().forEach((i) => {
205
- i.set({
204
+ }), t.setCursor("grab"), a.canvasManager.getObjects().forEach((s) => {
205
+ s.set({
206
206
  selectable: !1,
207
207
  evented: !1
208
208
  });
@@ -296,10 +296,9 @@ class H {
296
296
  */
297
297
  static debounce(e, t) {
298
298
  let a = null;
299
- return function(...r) {
300
- const n = this;
301
- a && clearTimeout(a), a = setTimeout(() => {
302
- e.apply(n, r);
299
+ return function(...n) {
300
+ a !== null && clearTimeout(a), a = setTimeout(() => {
301
+ e.apply(this, n);
303
302
  }, t);
304
303
  };
305
304
  }
@@ -348,11 +347,11 @@ class Pe {
348
347
  data: t
349
348
  } = e, {
350
349
  requestId: a,
351
- success: r,
352
- data: n,
353
- error: i
354
- } = t, s = this._callbacks.get(a);
355
- s && (r ? s.resolve(n) : s.reject(new Error(i)), this._callbacks.delete(a));
350
+ success: n,
351
+ data: i,
352
+ error: s
353
+ } = t, r = this._callbacks.get(a);
354
+ r && (n ? r.resolve(i) : r.reject(new Error(s)), this._callbacks.delete(a));
356
355
  }
357
356
  /**
358
357
  * Универсальный метод отправки команды в воркер
@@ -362,15 +361,15 @@ class Pe {
362
361
  * @returns {Promise<any>}
363
362
  */
364
363
  post(e, t) {
365
- var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [], r = "".concat(e, ":").concat(A(8));
366
- return new Promise((n, i) => {
367
- this._callbacks.set(r, {
368
- resolve: n,
369
- reject: i
364
+ var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [], n = "".concat(e, ":").concat(A(8));
365
+ return new Promise((i, s) => {
366
+ this._callbacks.set(n, {
367
+ resolve: i,
368
+ reject: s
370
369
  }), this.worker.postMessage({
371
370
  action: e,
372
371
  payload: t,
373
- requestId: r
372
+ requestId: n
374
373
  }, a);
375
374
  });
376
375
  }
@@ -381,26 +380,26 @@ class Pe {
381
380
  this.worker.terminate();
382
381
  }
383
382
  }
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
- function J(o, e, t, a, r) {
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();
383
+ const I = 12, We = 2, ae = 8, ne = 20, Fe = 100, ie = 20, se = 8, Ve = 100, re = 32, oe = 1, Ge = "#2B2D33", ce = "#3D8BF4", ue = "#FFFFFF";
384
+ function J(o, e, t, a, n) {
385
+ const i = I, s = We;
386
+ o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(n.angle)), o.fillStyle = ue, o.strokeStyle = ce, o.lineWidth = oe, o.beginPath(), o.roundRect(-12 / 2, -12 / 2, i, i, s), o.fill(), o.stroke(), o.restore();
388
387
  }
389
- function ye(o, e, t, a, r) {
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();
388
+ function ye(o, e, t, a, n) {
389
+ const i = ae, s = ne, r = Fe;
390
+ o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(n.angle)), o.fillStyle = ue, o.strokeStyle = ce, o.lineWidth = oe, o.beginPath(), o.roundRect(-8 / 2, -20 / 2, i, s, r), o.fill(), o.stroke(), o.restore();
392
391
  }
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();
392
+ function be(o, e, t, a, n) {
393
+ const i = ie, s = se, r = Ve;
394
+ o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(n.angle)), o.fillStyle = ue, o.strokeStyle = ce, o.lineWidth = oe, o.beginPath(), o.roundRect(-20 / 2, -8 / 2, i, s, r), o.fill(), o.stroke(), o.restore();
396
395
  }
397
- var Xe = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", Ce = new Image();
396
+ const Xe = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", Ce = new Image();
398
397
  Ce.src = Xe;
399
- function Qe(o, e, t, a, r) {
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();
398
+ function Qe(o, e, t, a, n) {
399
+ const s = re / 2;
400
+ o.save(), o.translate(e, t), o.rotate(P.degreesToRadians(n.angle)), o.fillStyle = Ge, o.beginPath(), o.arc(0, 0, s, 0, 2 * Math.PI), o.fill(), o.drawImage(Ce, -16 / 2, -16 / 2, s, s), o.restore();
402
401
  }
403
- var Je = {
402
+ const Je = {
404
403
  // Угловые точки
405
404
  tl: {
406
405
  render: J,
@@ -434,84 +433,83 @@ var Je = {
434
433
  ml: {
435
434
  render: ye,
436
435
  sizeX: ae,
437
- sizeY: re,
436
+ sizeY: ne,
438
437
  offsetX: 0,
439
438
  offsetY: 0
440
439
  },
441
440
  mr: {
442
441
  render: ye,
443
442
  sizeX: ae,
444
- sizeY: re,
443
+ sizeY: ne,
445
444
  offsetX: 0,
446
445
  offsetY: 0
447
446
  },
448
447
  // Середина горизонталей
449
448
  mt: {
450
- render: pe,
451
- sizeX: ne,
452
- sizeY: ie,
449
+ render: be,
450
+ sizeX: ie,
451
+ sizeY: se,
453
452
  offsetX: 0,
454
453
  offsetY: 0
455
454
  },
456
455
  mb: {
457
- render: pe,
458
- sizeX: ne,
459
- sizeY: ie,
456
+ render: be,
457
+ sizeX: ie,
458
+ sizeY: se,
460
459
  offsetX: 0,
461
460
  offsetY: 0
462
461
  },
463
462
  // Специальный «rotate» контрол
464
463
  mtr: {
465
464
  render: Qe,
466
- sizeX: se,
467
- sizeY: se,
465
+ sizeX: re,
466
+ sizeY: re,
468
467
  offsetX: 0,
469
468
  offsetY: -32
470
469
  }
471
470
  };
472
471
  class Ke {
473
472
  static apply() {
474
- var e = Oe.createObjectDefaultControls();
475
- Object.entries(Je).forEach((t) => {
476
- var [a, r] = t;
477
- Object.assign(e[a], {
478
- render: r.render,
479
- sizeX: r.sizeX,
480
- sizeY: r.sizeY,
481
- offsetX: r.offsetX,
482
- offsetY: r.offsetY
483
- }), a === "mtr" && (e[a].cursorStyle = "grab", e[a].mouseDownHandler = (n, i, s, c) => {
484
- var u = i.target;
485
- u.canvas.setCursor("grabbing");
473
+ const e = Oe.createObjectDefaultControls();
474
+ Object.entries(Je).forEach(([t, a]) => {
475
+ Object.assign(e[t], {
476
+ render: a.render,
477
+ sizeX: a.sizeX,
478
+ sizeY: a.sizeY,
479
+ offsetX: a.offsetX,
480
+ offsetY: a.offsetY
481
+ }), t === "mtr" && (e[t].cursorStyle = "grab", e[t].mouseDownHandler = (i, s, r, c) => {
482
+ var l;
483
+ (l = s.target.canvas) == null || l.setCursor("grabbing");
486
484
  });
487
485
  }), Te.ownDefaults.controls = e;
488
486
  }
489
487
  }
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) {
488
+ 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+", nt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTIuNSA2LjI1IDcuNSA0LjM3NSA3LjUtNC4zNzVMMTAgMS44NzUgMi41IDYuMjVaIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMS4zMzVhLjYyNS42MjUgMCAwIDEgLjYzIDBsNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4bDcuNS00LjM3NVpNMy43NCA2LjI1IDEwIDkuOTAxbDYuMjYtMy42NTFMMTAgMi41OTkgMy43NCA2LjI1WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDExLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCAxMy42NTFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgMTEuMzM1Wk0zLjc0IDEzLjc1IDEwIDE3LjQwMWw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTMuNzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgNy41ODVhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgOS45MDFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgNy41ODVaTTMuNzQgMTAgMTAgMTMuNjUxIDE2LjI2IDEwbC0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNkwzLjc0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", it = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMS45NiAxMy40MzVhLjYyNS42MjUgMCAwIDEgLjg1NS0uMjI1TDEwIDE3LjQwMWw3LjE4NS00LjE5YS42MjUuNjI1IDAgMCAxIC42MyAxLjA3OWwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEtLjIyNS0uODU1Wk05LjY4NSAxLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDYuMjUgMTAgOS45MDFsNi4yNi0zLjY1MUwxMCAyLjU5OSAzLjc0IDYuMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im01LjcxNCAxMS44NzUgNC4yODYgMi41IDQuMjg2LTIuNUwxNy41IDEzLjc1IDEwIDE4LjEyNSAyLjUgMTMuNzVsMy4yMTQtMS44NzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgMTEuMzM1YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDEzLjY1MWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCAxMS4zMzVaTTMuNzQgMTMuNzUgMTAgMTcuNDAxbDYuMjYtMy42NTEtMS45NzQtMS4xNTEtMy45NzEgMi4zMTZhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTMuOTctMi4zMTZMMy43NCAxMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA3LjU4NWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCA5LjkwMWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA3LjU4NVpNMy43NCAxMCAxMCAxMy42NTEgMTYuMjYgMTBsLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTBaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=", st = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0VDNEU0MCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4xMjUgMS4yNUExLjg3NSAxLjg3NSAwIDAgMCA2LjI1IDMuMTI1di42MjVIMy4xMjVhLjYyNS42MjUgMCAwIDAgMCAxLjI1aC42MjV2MTEuMjVBMS4yNSAxLjI1IDAgMCAwIDUgMTcuNWgxMGExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjVoLjYyNWEuNjI1LjYyNSAwIDAgMCAwLTEuMjVIMTMuNzV2LS42MjVhMS44NzUgMS44NzUgMCAwIDAtMS44NzUtMS44NzVoLTMuNzVabTQuMzc1IDIuNXYtLjYyNWEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2LjYyNWg1Wk01IDE2LjI1VjVoMTB2MTEuMjVINVpNOC4xMjUgNy41Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NWEuNjI1LjYyNSAwIDEgMS0xLjI1IDB2LTVjMC0uMzQ1LjI4LS42MjUuNjI1LS42MjVabTQuMzc1IDUuNjI1di01YS42MjUuNjI1IDAgMCAwLTEuMjUgMHY1YS42MjUuNjI1IDAgMSAwIDEuMjUgMFoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==";
489
+ function pe(o, e, t, a, n, i, s) {
492
490
  try {
493
- var s = o[n](i), c = s.value;
491
+ var r = o[i](s), c = r.value;
494
492
  } catch (u) {
495
493
  return void t(u);
496
494
  }
497
- s.done ? e(c) : Promise.resolve(c).then(a, r);
495
+ r.done ? e(c) : Promise.resolve(c).then(a, n);
498
496
  }
499
- function st(o) {
497
+ function rt(o) {
500
498
  return function() {
501
499
  var e = this, t = arguments;
502
- return new Promise(function(a, r) {
503
- var n = o.apply(e, t);
504
- function i(c) {
505
- be(n, a, r, i, s, "next", c);
506
- }
500
+ return new Promise(function(a, n) {
501
+ var i = o.apply(e, t);
507
502
  function s(c) {
508
- be(n, a, r, i, s, "throw", c);
503
+ pe(i, a, n, s, r, "next", c);
504
+ }
505
+ function r(c) {
506
+ pe(i, a, n, s, r, "throw", c);
509
507
  }
510
- i(void 0);
508
+ s(void 0);
511
509
  });
512
510
  };
513
511
  }
514
- const _ = {
512
+ const Y = {
515
513
  style: {
516
514
  position: "absolute",
517
515
  display: "none",
@@ -571,17 +569,17 @@ const _ = {
571
569
  offsetTop: 50,
572
570
  icons: {
573
571
  copyPaste: $e,
574
- delete: it,
572
+ delete: st,
575
573
  lock: qe,
576
574
  unlock: et,
577
- bringToFront: rt,
578
- sendToBack: nt,
575
+ bringToFront: nt,
576
+ sendToBack: it,
579
577
  bringForward: tt,
580
578
  sendBackwards: at
581
579
  },
582
580
  handlers: {
583
581
  copyPaste: function() {
584
- var o = st(function* (t) {
582
+ var o = rt(function* (t) {
585
583
  yield t.clipboardManager.copy(), yield t.clipboardManager.paste();
586
584
  });
587
585
  function e(t) {
@@ -616,8 +614,8 @@ function Ie(o, e) {
616
614
  var t = Object.keys(o);
617
615
  if (Object.getOwnPropertySymbols) {
618
616
  var a = Object.getOwnPropertySymbols(o);
619
- e && (a = a.filter(function(r) {
620
- return Object.getOwnPropertyDescriptor(o, r).enumerable;
617
+ e && (a = a.filter(function(n) {
618
+ return Object.getOwnPropertyDescriptor(o, n).enumerable;
621
619
  })), t.push.apply(t, a);
622
620
  }
623
621
  return t;
@@ -662,11 +660,11 @@ class dt {
662
660
  if (this.options = t.options, !!this.options.showToolbar) {
663
661
  this.editor = t, this.canvas = t.canvas;
664
662
  var a = this.options.toolbar || {};
665
- this.config = j(j(j({}, _), a), {}, {
666
- style: j(j({}, _.style), a.style || {}),
667
- btnStyle: j(j({}, _.btnStyle), a.btnStyle || {}),
668
- icons: j(j({}, _.icons), a.icons || {}),
669
- handlers: j(j({}, _.handlers), a.handlers || {})
663
+ this.config = j(j(j({}, Y), a), {}, {
664
+ style: j(j({}, Y.style), a.style || {}),
665
+ btnStyle: j(j({}, Y.btnStyle), a.btnStyle || {}),
666
+ icons: j(j({}, Y.icons), a.icons || {}),
667
+ handlers: j(j({}, Y.handlers), a.handlers || {})
670
668
  }), this.currentTarget = null, this.currentLocked = null, this.isTransforming = !1, this._onMouseDown = this._handleMouseDown.bind(this), this._onObjectMoving = this._startTransform.bind(this), this._onObjectScaling = this._startTransform.bind(this), this._onObjectRotating = this._startTransform.bind(this), this._onMouseUp = this._endTransform.bind(this), this._onObjectModified = this._endTransform.bind(this), this._onSelectionChange = this._updateToolbar.bind(this), this._onSelectionClear = () => {
671
669
  this.el.style.display = "none";
672
670
  }, this._createDOM(), this._bindEvents();
@@ -700,19 +698,19 @@ class dt {
700
698
  this.el.innerHTML = "";
701
699
  var a = function() {
702
700
  var {
703
- name: i,
704
- handle: s
705
- } = r, {
701
+ name: s,
702
+ handle: r
703
+ } = n, {
706
704
  icons: c,
707
705
  btnStyle: u,
708
706
  handlers: l
709
707
  } = 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 = () => {
708
+ d.innerHTML = c[r] ? '<img src="'.concat(c[r], '" title="').concat(s, '" />') : s, Object.assign(d.style, u), d.onclick = () => {
711
709
  var h;
712
- return (h = l[s]) === null || h === void 0 ? void 0 : h.call(l, t.editor);
710
+ return (h = l[r]) === null || h === void 0 ? void 0 : h.call(l, t.editor);
713
711
  }, t.el.appendChild(d);
714
712
  };
715
- for (var r of e)
713
+ for (var n of e)
716
714
  a();
717
715
  }
718
716
  /**
@@ -779,15 +777,15 @@ class dt {
779
777
  var {
780
778
  el: t,
781
779
  config: a,
782
- canvas: r
780
+ canvas: n
783
781
  } = this;
784
782
  e.setCoords();
785
- var n = r.getZoom(), [, , , , i, s] = r.viewportTransform, {
783
+ var i = n.getZoom(), [, , , , s, r] = n.viewportTransform, {
786
784
  x: c
787
785
  } = e.getCenterPoint(), {
788
786
  top: u,
789
787
  height: l
790
- } = e.getBoundingRect(!1, !0), d = c * n + i, h = d - t.offsetWidth / 2, g = (u + l) * n + s + a.offsetTop;
788
+ } = e.getBoundingRect(!1, !0), d = c * i + s, h = d - t.offsetWidth / 2, g = (u + l) * i + r + a.offsetTop;
791
789
  Object.assign(t.style, {
792
790
  left: "".concat(h, "px"),
793
791
  top: "".concat(g, "px"),
@@ -802,26 +800,26 @@ class dt {
802
800
  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
801
  }
804
802
  }
805
- function Ae(o, e, t, a, r, n, i) {
803
+ function Ae(o, e, t, a, n, i, s) {
806
804
  try {
807
- var s = o[n](i), c = s.value;
805
+ var r = o[i](s), c = r.value;
808
806
  } catch (u) {
809
807
  return void t(u);
810
808
  }
811
- s.done ? e(c) : Promise.resolve(c).then(a, r);
809
+ r.done ? e(c) : Promise.resolve(c).then(a, n);
812
810
  }
813
811
  function te(o) {
814
812
  return function() {
815
813
  var e = this, t = arguments;
816
- return new Promise(function(a, r) {
817
- var n = o.apply(e, t);
818
- function i(c) {
819
- Ae(n, a, r, i, s, "next", c);
820
- }
814
+ return new Promise(function(a, n) {
815
+ var i = o.apply(e, t);
821
816
  function s(c) {
822
- Ae(n, a, r, i, s, "throw", c);
817
+ Ae(i, a, n, s, r, "next", c);
818
+ }
819
+ function r(c) {
820
+ Ae(i, a, n, s, r, "throw", c);
823
821
  }
824
- i(void 0);
822
+ s(void 0);
825
823
  });
826
824
  };
827
825
  }
@@ -844,7 +842,7 @@ class lt {
844
842
  return this.patches[this.currentIndex - 1] || null;
845
843
  }
846
844
  _createDiffPatcher() {
847
- this.diffPatcher = _e({
845
+ this.diffPatcher = He({
848
846
  objectHash(e) {
849
847
  return [e.id, e.format, e.locked, e.left, e.top, e.width, e.height, e.flipX, e.flipY, e.scaleX, e.scaleY, e.angle, e.opacity].join("-");
850
848
  },
@@ -887,9 +885,9 @@ class lt {
887
885
  baseState: e,
888
886
  currentIndex: t,
889
887
  patches: a
890
- } = this, r = JSON.parse(JSON.stringify(e)), n = 0; n < t; n += 1)
891
- r = this.diffPatcher.patch(r, a[n].diff);
892
- return console.log("getFullState state", r), r;
888
+ } = this, n = JSON.parse(JSON.stringify(e)), i = 0; i < t; i += 1)
889
+ n = this.diffPatcher.patch(n, a[i].diff);
890
+ return console.log("getFullState state", n), n;
893
891
  }
894
892
  /**
895
893
  * Сохраняем текущее состояние в виде диффа от последнего сохранённого полного состояния.
@@ -925,17 +923,17 @@ class lt {
925
923
  console.log("loadStateFromFullState fullState", e);
926
924
  var {
927
925
  canvas: a,
928
- canvasManager: r,
929
- interactionBlocker: n
926
+ canvasManager: n,
927
+ interactionBlocker: i
930
928
  } = t.editor, {
931
- width: i,
932
- height: s
929
+ width: s,
930
+ height: r
933
931
  } = a;
934
932
  yield a.loadFromJSON(e);
935
933
  var c = a.getObjects().find((l) => l.id === "montage-area");
936
- c && (t.editor.montageArea = c, (i !== e.width || s !== e.height) && r.updateCanvasAndFitObjects());
934
+ c && (t.editor.montageArea = c, (s !== e.width || r !== e.height) && n.updateCanvasAndFitObjects());
937
935
  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", {
936
+ u && (i.overlayMask = u, i.overlayMask.visible = !1), a.renderAll(), a.fire("editor:history-state-loaded", {
939
937
  fullState: e,
940
938
  currentIndex: t.currentIndex,
941
939
  totalChangesCount: t.totalChangesCount,
@@ -1015,27 +1013,27 @@ class lt {
1015
1013
  })();
1016
1014
  }
1017
1015
  }
1018
- const ht = 0.1, gt = 2, vt = 0.1, mt = 90, k = 16, x = 16, E = 4096, O = 4096;
1019
- function Se(o, e, t, a, r, n, i) {
1016
+ const ht = 0.1, gt = 2, Mt = 0.1, vt = 90, x = 16, B = 16, w = 4096, O = 4096;
1017
+ function Se(o, e, t, a, n, i, s) {
1020
1018
  try {
1021
- var s = o[n](i), c = s.value;
1019
+ var r = o[i](s), c = r.value;
1022
1020
  } catch (u) {
1023
1021
  return void t(u);
1024
1022
  }
1025
- s.done ? e(c) : Promise.resolve(c).then(a, r);
1023
+ r.done ? e(c) : Promise.resolve(c).then(a, n);
1026
1024
  }
1027
- function T(o) {
1025
+ function k(o) {
1028
1026
  return function() {
1029
1027
  var e = this, t = arguments;
1030
- return new Promise(function(a, r) {
1031
- var n = o.apply(e, t);
1032
- function i(c) {
1033
- Se(n, a, r, i, s, "next", c);
1034
- }
1028
+ return new Promise(function(a, n) {
1029
+ var i = o.apply(e, t);
1035
1030
  function s(c) {
1036
- Se(n, a, r, i, s, "throw", c);
1031
+ Se(i, a, n, s, r, "next", c);
1032
+ }
1033
+ function r(c) {
1034
+ Se(i, a, n, s, r, "throw", c);
1037
1035
  }
1038
- i(void 0);
1036
+ s(void 0);
1039
1037
  });
1040
1038
  };
1041
1039
  }
@@ -1064,44 +1062,44 @@ class D {
1064
1062
  */
1065
1063
  importImage(e) {
1066
1064
  var t = this;
1067
- return T(function* () {
1065
+ return k(function* () {
1068
1066
  var {
1069
1067
  source: a,
1070
- scale: r = "image-".concat(t.options.scaleType),
1071
- withoutSave: n = !1
1068
+ scale: n = "image-".concat(t.options.scaleType),
1069
+ withoutSave: i = !1
1072
1070
  } = e;
1073
1071
  if (!a) return null;
1074
1072
  var {
1075
- canvas: i,
1076
- montageArea: s,
1073
+ canvas: s,
1074
+ montageArea: r,
1077
1075
  transformManager: c,
1078
1076
  historyManager: u,
1079
1077
  errorManager: l
1080
1078
  } = t.editor, d = yield t.getContentType(a), h = D.getFormatFromContentType(d), {
1081
1079
  acceptContentTypes: g,
1082
- acceptFormats: M
1080
+ acceptFormats: v
1083
1081
  } = t;
1084
1082
  if (!t.isAllowedContentType(d)) {
1085
- var m = "Неверный contentType для изображения: ".concat(d, ". Ожидается один из: ").concat(t.acceptContentTypes.join(", "), ".");
1083
+ var f = "Неверный contentType для изображения: ".concat(d, ". Ожидается один из: ").concat(t.acceptContentTypes.join(", "), ".");
1086
1084
  return l.emitError({
1087
1085
  origin: "ImageManager",
1088
1086
  method: "importImage",
1089
1087
  code: "INVALID_CONTENT_TYPE",
1090
- message: m,
1088
+ message: f,
1091
1089
  data: {
1092
1090
  source: a,
1093
1091
  format: h,
1094
1092
  contentType: d,
1095
1093
  acceptContentTypes: g,
1096
- acceptFormats: M
1094
+ acceptFormats: v
1097
1095
  }
1098
1096
  }), null;
1099
1097
  }
1100
1098
  u.suspendHistory();
1101
1099
  try {
1102
- var f, v;
1100
+ var m, M;
1103
1101
  if (a instanceof File)
1104
- f = URL.createObjectURL(a);
1102
+ m = URL.createObjectURL(a);
1105
1103
  else if (typeof a == "string") {
1106
1104
  var S = yield fetch(a, {
1107
1105
  mode: "cors"
@@ -1109,7 +1107,7 @@ class D {
1109
1107
  type: d,
1110
1108
  quality: 1
1111
1109
  });
1112
- f = URL.createObjectURL(N);
1110
+ m = URL.createObjectURL(N);
1113
1111
  } else
1114
1112
  return l.emitError({
1115
1113
  origin: "ImageManager",
@@ -1121,76 +1119,76 @@ class D {
1121
1119
  format: h,
1122
1120
  contentType: d,
1123
1121
  acceptContentTypes: g,
1124
- acceptFormats: M
1122
+ acceptFormats: v
1125
1123
  }
1126
1124
  }), null;
1127
- if (t._createdBlobUrls.push(f), h === "svg") {
1128
- var L = yield ke(f);
1129
- v = P.groupSVGElements(L.objects, L.options);
1125
+ if (t._createdBlobUrls.push(m), h === "svg") {
1126
+ var E = yield ke(m);
1127
+ M = P.groupSVGElements(E.objects, E.options);
1130
1128
  } else
1131
- v = yield ee.fromURL(f, {
1129
+ M = yield ee.fromURL(m, {
1132
1130
  crossOrigin: "anonymous"
1133
1131
  });
1134
1132
  var {
1135
- width: w,
1133
+ width: L,
1136
1134
  height: y
1137
- } = v;
1138
- if (y > O || w > E) {
1139
- var p = yield t.resizeImageToBoundaries(v._element.src, "max"), B = URL.createObjectURL(p);
1140
- t._createdBlobUrls.push(B), v = yield ee.fromURL(B, {
1135
+ } = M;
1136
+ if (y > O || L > w) {
1137
+ var b = yield t.resizeImageToBoundaries(M._element.src, "max"), Z = URL.createObjectURL(b);
1138
+ t._createdBlobUrls.push(Z), M = yield ee.fromURL(Z, {
1141
1139
  crossOrigin: "anonymous"
1142
1140
  });
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, {
1141
+ } else if (y < B || L < x) {
1142
+ var W = yield t.resizeImageToBoundaries(M._element.src, "min"), z = URL.createObjectURL(W);
1143
+ t._createdBlobUrls.push(z), M = yield ee.fromURL(z, {
1146
1144
  crossOrigin: "anonymous"
1147
1145
  });
1148
1146
  }
1149
- if (v.set("id", "".concat(v.type, "-").concat(A())), v.set("format", h), r === "scale-montage")
1147
+ if (M.set("id", "".concat(M.type, "-").concat(A())), M.set("format", h), n === "scale-montage")
1150
1148
  t.editor.canvasManager.scaleMontageAreaToImage({
1151
- object: v,
1149
+ object: M,
1152
1150
  withoutSave: !0
1153
1151
  });
1154
1152
  else {
1155
1153
  var {
1156
- width: W,
1157
- height: z
1158
- } = s, U = t.calculateScaleFactor({
1159
- imageObject: v,
1160
- scaleType: r
1154
+ width: F,
1155
+ height: U
1156
+ } = r, _ = t.calculateScaleFactor({
1157
+ imageObject: M,
1158
+ scaleType: n
1161
1159
  });
1162
- r === "image-contain" && U < 1 ? c.fitObject({
1163
- object: v,
1160
+ n === "image-contain" && _ < 1 ? c.fitObject({
1161
+ object: M,
1164
1162
  type: "contain",
1165
1163
  withoutSave: !0
1166
- }) : r === "image-cover" && (w > W || y > z) && c.fitObject({
1167
- object: v,
1164
+ }) : n === "image-cover" && (L > F || y > U) && c.fitObject({
1165
+ object: M,
1168
1166
  type: "cover",
1169
1167
  withoutSave: !0
1170
1168
  });
1171
1169
  }
1172
- i.add(v), i.centerObject(v), i.setActiveObject(v), i.renderAll(), u.resumeHistory(), n || u.saveState();
1170
+ s.add(M), s.centerObject(M), s.setActiveObject(M), s.renderAll(), u.resumeHistory(), i || u.saveState();
1173
1171
  var V = {
1174
- image: v,
1172
+ image: M,
1175
1173
  format: h,
1176
1174
  contentType: d,
1177
- scale: r,
1178
- withoutSave: n,
1175
+ scale: n,
1176
+ withoutSave: i,
1179
1177
  source: a
1180
1178
  };
1181
- return i.fire("editor:image-imported", V), V;
1182
- } catch (Y) {
1179
+ return s.fire("editor:image-imported", V), V;
1180
+ } catch (H) {
1183
1181
  return l.emitError({
1184
1182
  origin: "ImageManager",
1185
1183
  method: "importImage",
1186
1184
  code: "IMPORT_FAILED",
1187
- message: "Ошибка импорта изображения: ".concat(Y.message),
1185
+ message: "Ошибка импорта изображения: ".concat(H.message),
1188
1186
  data: {
1189
1187
  source: a,
1190
1188
  format: h,
1191
1189
  contentType: d,
1192
- scale: r,
1193
- withoutSave: n
1190
+ scale: n,
1191
+ withoutSave: i
1194
1192
  }
1195
1193
  }), u.resumeHistory(), null;
1196
1194
  }
@@ -1206,24 +1204,24 @@ class D {
1206
1204
  */
1207
1205
  resizeImageToBoundaries(e) {
1208
1206
  var t = arguments, a = this;
1209
- return T(function* () {
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 = {
1207
+ return k(function* () {
1208
+ var n = t.length > 1 && t[1] !== void 0 ? t[1] : "max", i = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров c сохранением пропорций: ".concat(w, "x").concat(O);
1209
+ n === "min" && (i = "Размер изображения меньше минимального размера канваса, поэтому оно будет увеличено до минимальных размеров c сохранением пропорций: ".concat(x, "x").concat(B));
1210
+ var s = {
1213
1211
  dataURL: e,
1214
- sizeType: r,
1215
- maxWidth: E,
1212
+ sizeType: n,
1213
+ maxWidth: w,
1216
1214
  maxHeight: O,
1217
- minWidth: k,
1218
- minHeight: x
1215
+ minWidth: x,
1216
+ minHeight: B
1219
1217
  };
1220
1218
  return a.editor.errorManager.emitWarning({
1221
1219
  origin: "ImageManager",
1222
1220
  method: "resizeImageToBoundaries",
1223
1221
  code: "IMAGE_RESIZE_WARNING",
1224
- message: n,
1225
- data: i
1226
- }), a.editor.workerManager.post("resizeImage", i);
1222
+ message: i,
1223
+ data: s
1224
+ }), a.editor.workerManager.post("resizeImage", s);
1227
1225
  })();
1228
1226
  }
1229
1227
  /**
@@ -1239,121 +1237,121 @@ class D {
1239
1237
  */
1240
1238
  exportCanvasAsImageFile() {
1241
1239
  var e = arguments, t = this;
1242
- return T(function* () {
1240
+ return k(function* () {
1243
1241
  var {
1244
1242
  fileName: a = "image.png",
1245
- contentType: r = "image/png",
1246
- exportAsBase64: n = !1,
1247
- exportAsBlob: i = !1
1243
+ contentType: n = "image/png",
1244
+ exportAsBase64: i = !1,
1245
+ exportAsBlob: s = !1
1248
1246
  } = e.length > 0 && e[0] !== void 0 ? e[0] : {}, {
1249
- canvas: s,
1247
+ canvas: r,
1250
1248
  montageArea: c,
1251
1249
  workerManager: u
1252
1250
  } = t.editor;
1253
1251
  try {
1254
- var l = r === "application/pdf", d = l ? "image/jpg" : r, h = D.getFormatFromContentType(d);
1252
+ var l = n === "application/pdf", d = l ? "image/jpg" : n, h = D.getFormatFromContentType(d);
1255
1253
  c.setCoords();
1256
1254
  var {
1257
1255
  left: g,
1258
- top: M,
1259
- width: m,
1260
- height: f
1261
- } = c.getBoundingRect(), v = yield s.clone(["id", "format", "locked"]);
1262
- ["image/jpg", "image/jpeg"].includes(d) && (v.backgroundColor = "#ffffff");
1263
- var S = v.getObjects().find((b) => b.id === c.id);
1264
- S.visible = !1, v.viewportTransform = [1, 0, 0, 1, -g, -M], v.setDimensions({
1265
- width: m,
1266
- height: f
1256
+ top: v,
1257
+ width: f,
1258
+ height: m
1259
+ } = c.getBoundingRect(), M = yield r.clone(["id", "format", "locked"]);
1260
+ ["image/jpg", "image/jpeg"].includes(d) && (M.backgroundColor = "#ffffff");
1261
+ var S = M.getObjects().find((p) => p.id === c.id);
1262
+ S.visible = !1, M.viewportTransform = [1, 0, 0, 1, -g, -v], M.setDimensions({
1263
+ width: f,
1264
+ height: m
1267
1265
  }, {
1268
1266
  backstoreOnly: !0
1269
- }), v.renderAll();
1270
- var N = v.getObjects().filter((b) => b.format).every((b) => b.format === "svg");
1267
+ }), M.renderAll();
1268
+ var N = M.getObjects().filter((p) => p.format).every((p) => p.format === "svg");
1271
1269
  if (h === "svg" && N) {
1272
- var L = v.toSVG();
1273
- v.dispose();
1274
- var w = D._exportSVGStringAsFile(L, {
1275
- exportAsBase64: n,
1276
- exportAsBlob: i,
1270
+ var E = M.toSVG();
1271
+ M.dispose();
1272
+ var L = D._exportSVGStringAsFile(E, {
1273
+ exportAsBase64: i,
1274
+ exportAsBlob: s,
1277
1275
  fileName: a
1278
1276
  }), y = {
1279
- image: w,
1277
+ image: L,
1280
1278
  format: "svg",
1281
1279
  contentType: "image/svg+xml",
1282
1280
  fileName: a.replace(/\.[^/.]+$/, ".svg")
1283
1281
  };
1284
- return s.fire("editor:canvas-exported", y), y;
1282
+ return r.fire("editor:canvas-exported", y), y;
1285
1283
  }
1286
- var p = yield new Promise((b) => {
1287
- v.getElement().toBlob(b);
1284
+ var b = yield new Promise((p) => {
1285
+ M.getElement().toBlob(p);
1288
1286
  });
1289
- if (v.dispose(), i) {
1290
- var B = {
1291
- image: p,
1287
+ if (M.dispose(), s) {
1288
+ var Z = {
1289
+ image: b,
1292
1290
  format: h,
1293
1291
  contentType: d,
1294
1292
  fileName: a
1295
1293
  };
1296
- return s.fire("editor:canvas-exported", B), B;
1294
+ return r.fire("editor:canvas-exported", Z), Z;
1297
1295
  }
1298
- var F = yield createImageBitmap(p), Z = yield u.post("toDataURL", {
1296
+ var W = yield createImageBitmap(b), z = yield u.post("toDataURL", {
1299
1297
  format: h,
1300
1298
  quality: 1,
1301
- bitmap: F
1302
- }, [F]);
1299
+ bitmap: W
1300
+ }, [W]);
1303
1301
  if (l) {
1304
- var W = 0.264583, z = m * W, U = f * W, V = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, Y = new V({
1305
- orientation: z > U ? "landscape" : "portrait",
1302
+ var F = 0.264583, U = f * F, _ = m * F, V = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, H = new V({
1303
+ orientation: U > _ ? "landscape" : "portrait",
1306
1304
  unit: "mm",
1307
- format: [z, U]
1305
+ format: [U, _]
1308
1306
  });
1309
- if (Y.addImage(Z, "JPG", 0, 0, z, U), n) {
1310
- var De = Y.output("datauristring"), le = {
1307
+ if (H.addImage(z, "JPG", 0, 0, U, _), i) {
1308
+ var De = H.output("datauristring"), le = {
1311
1309
  image: De,
1312
1310
  format: "pdf",
1313
1311
  contentType: "application/pdf",
1314
1312
  fileName: a
1315
1313
  };
1316
- return s.fire("editor:canvas-exported", le), le;
1314
+ return r.fire("editor:canvas-exported", le), le;
1317
1315
  }
1318
- var Ne = Y.output("blob"), Le = new File([Ne], a, {
1316
+ var Ne = H.output("blob"), Ee = new File([Ne], a, {
1319
1317
  type: "application/pdf"
1320
1318
  }), he = {
1321
- image: Le,
1319
+ image: Ee,
1322
1320
  format: "pdf",
1323
1321
  contentType: "application/pdf",
1324
1322
  fileName: a
1325
1323
  };
1326
- return s.fire("editor:canvas-exported", he), he;
1324
+ return r.fire("editor:canvas-exported", he), he;
1327
1325
  }
1328
- if (n) {
1326
+ if (i) {
1329
1327
  var ge = {
1330
- image: Z,
1328
+ image: z,
1331
1329
  format: h,
1332
1330
  contentType: d,
1333
1331
  fileName: a
1334
1332
  };
1335
- return s.fire("editor:canvas-exported", ge), ge;
1333
+ return r.fire("editor:canvas-exported", ge), ge;
1336
1334
  }
1337
- var ve = h === "svg" && !N ? a.replace(/\.[^/.]+$/, ".png") : a, we = new File([p], ve, {
1335
+ var Me = h === "svg" && !N ? a.replace(/\.[^/.]+$/, ".png") : a, Le = new File([b], Me, {
1338
1336
  type: d
1339
- }), me = {
1340
- image: we,
1337
+ }), ve = {
1338
+ image: Le,
1341
1339
  format: h,
1342
1340
  contentType: d,
1343
- fileName: ve
1341
+ fileName: Me
1344
1342
  };
1345
- return s.fire("editor:canvas-exported", me), me;
1346
- } catch (b) {
1343
+ return r.fire("editor:canvas-exported", ve), ve;
1344
+ } catch (p) {
1347
1345
  return t.editor.errorManager.emitError({
1348
1346
  origin: "ImageManager",
1349
1347
  method: "exportCanvasAsImageFile",
1350
1348
  code: "IMAGE_EXPORT_FAILED",
1351
- message: "Ошибка экспорта изображения: ".concat(b.message),
1349
+ message: "Ошибка экспорта изображения: ".concat(p.message),
1352
1350
  data: {
1353
- contentType: r,
1351
+ contentType: n,
1354
1352
  fileName: a,
1355
- exportAsBase64: n,
1356
- exportAsBlob: i
1353
+ exportAsBase64: i,
1354
+ exportAsBlob: s
1357
1355
  }
1358
1356
  }), "";
1359
1357
  }
@@ -1372,13 +1370,13 @@ class D {
1372
1370
  */
1373
1371
  exportObjectAsImageFile() {
1374
1372
  var e = arguments, t = this;
1375
- return T(function* () {
1373
+ return k(function* () {
1376
1374
  var {
1377
1375
  object: a,
1378
- fileName: r = "image.png",
1379
- contentType: n = "image/png",
1380
- exportAsBase64: i = !1,
1381
- exportAsBlob: s = !1
1376
+ fileName: n = "image.png",
1377
+ contentType: i = "image/png",
1378
+ exportAsBase64: s = !1,
1379
+ exportAsBlob: r = !1
1382
1380
  } = e.length > 0 && e[0] !== void 0 ? e[0] : {}, {
1383
1381
  canvas: c,
1384
1382
  workerManager: u
@@ -1390,72 +1388,72 @@ class D {
1390
1388
  code: "NO_OBJECT_SELECTED",
1391
1389
  message: "Не выбран объект для экспорта",
1392
1390
  data: {
1393
- contentType: n,
1394
- fileName: r,
1395
- exportAsBase64: i,
1396
- exportAsBlob: s
1391
+ contentType: i,
1392
+ fileName: n,
1393
+ exportAsBase64: s,
1394
+ exportAsBlob: r
1397
1395
  }
1398
1396
  }), "";
1399
1397
  try {
1400
- var d = D.getFormatFromContentType(n);
1398
+ var d = D.getFormatFromContentType(i);
1401
1399
  if (d === "svg") {
1402
1400
  var h = l.toSVG(), g = t._exportSVGStringAsFile(h, {
1403
- exportAsBase64: i,
1404
- exportAsBlob: s,
1405
- fileName: r
1406
- }), M = {
1401
+ exportAsBase64: s,
1402
+ exportAsBlob: r,
1403
+ fileName: n
1404
+ }), v = {
1407
1405
  image: g,
1408
1406
  format: d,
1409
1407
  contentType: "image/svg+xml",
1410
- fileName: r.replace(/\.[^/.]+$/, ".svg")
1408
+ fileName: n.replace(/\.[^/.]+$/, ".svg")
1411
1409
  };
1412
- return c.fire("editor:object-exported", M), M;
1410
+ return c.fire("editor:object-exported", v), v;
1413
1411
  }
1414
- if (i) {
1415
- var m = yield createImageBitmap(l._element), f = yield u.post("toDataURL", {
1412
+ if (s) {
1413
+ var f = yield createImageBitmap(l._element), m = yield u.post("toDataURL", {
1416
1414
  format: d,
1417
1415
  quality: 1,
1418
- bitmap: m
1419
- }, [m]), v = {
1420
- image: f,
1416
+ bitmap: f
1417
+ }, [f]), M = {
1418
+ image: m,
1421
1419
  format: d,
1422
- contentType: n,
1423
- fileName: r
1420
+ contentType: i,
1421
+ fileName: n
1424
1422
  };
1425
- return c.fire("editor:object-exported", v), v;
1423
+ return c.fire("editor:object-exported", M), M;
1426
1424
  }
1427
- var S = l.toCanvasElement(), N = yield new Promise((p) => {
1428
- S.toBlob(p);
1425
+ var S = l.toCanvasElement(), N = yield new Promise((b) => {
1426
+ S.toBlob(b);
1429
1427
  });
1430
- if (s) {
1431
- var L = {
1428
+ if (r) {
1429
+ var E = {
1432
1430
  image: N,
1433
1431
  format: d,
1434
- contentType: n,
1435
- fileName: r
1432
+ contentType: i,
1433
+ fileName: n
1436
1434
  };
1437
- return c.fire("editor:object-exported", L), L;
1435
+ return c.fire("editor:object-exported", E), E;
1438
1436
  }
1439
- var w = new File([N], r, {
1440
- type: n
1437
+ var L = new File([N], n, {
1438
+ type: i
1441
1439
  }), y = {
1442
- image: w,
1440
+ image: L,
1443
1441
  format: d,
1444
- contentType: n,
1445
- fileName: r
1442
+ contentType: i,
1443
+ fileName: n
1446
1444
  };
1447
1445
  return c.fire("editor:object-exported", y), y;
1448
- } catch (p) {
1446
+ } catch (b) {
1449
1447
  return t.editor.errorManager.emitError({
1450
1448
  origin: "ImageManager",
1451
1449
  method: "exportObjectAsImageFile",
1452
1450
  code: "IMAGE_EXPORT_FAILED",
1453
- message: "Ошибка экспорта объекта: ".concat(p.message),
1451
+ message: "Ошибка экспорта объекта: ".concat(b.message),
1454
1452
  data: {
1455
- contentType: n,
1456
- fileName: r,
1457
- exportAsBase64: i,
1458
- exportAsBlob: s
1453
+ contentType: i,
1454
+ fileName: n,
1455
+ exportAsBase64: s,
1456
+ exportAsBlob: r
1459
1457
  }
1460
1458
  }), "";
1461
1459
  }
@@ -1483,11 +1481,11 @@ class D {
1483
1481
  var {
1484
1482
  exportAsBase64: t,
1485
1483
  exportAsBlob: a,
1486
- fileName: r
1484
+ fileName: n
1487
1485
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1488
1486
  return a ? new Blob([e], {
1489
1487
  type: "image/svg+xml"
1490
- }) : t ? "data:image/svg+xml;base64,".concat(btoa(e)) : new File([e], r.replace(/\.[^/.]+$/, ".svg"), {
1488
+ }) : t ? "data:image/svg+xml;base64,".concat(btoa(e)) : new File([e], n.replace(/\.[^/.]+$/, ".svg"), {
1491
1489
  type: "image/svg+xml"
1492
1490
  });
1493
1491
  }
@@ -1526,7 +1524,7 @@ class D {
1526
1524
  */
1527
1525
  getContentType(e) {
1528
1526
  var t = this;
1529
- return T(function* () {
1527
+ return k(function* () {
1530
1528
  return typeof e == "string" ? t.getContentTypeFromUrl(e) : e.type || "application/octet-stream";
1531
1529
  })();
1532
1530
  }
@@ -1538,19 +1536,19 @@ class D {
1538
1536
  */
1539
1537
  getContentTypeFromUrl(e) {
1540
1538
  var t = this;
1541
- return T(function* () {
1539
+ return k(function* () {
1542
1540
  if (e.startsWith("data:")) {
1543
1541
  var a = e.match(/^data:([^;]+)/);
1544
1542
  return a ? a[1] : "application/octet-stream";
1545
1543
  }
1546
1544
  try {
1547
- var r = yield fetch(e, {
1545
+ var n = yield fetch(e, {
1548
1546
  method: "HEAD"
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);
1547
+ }), i = n.headers.get("content-type");
1548
+ if (i && i.startsWith("image/"))
1549
+ return i.split(";")[0];
1550
+ } catch (s) {
1551
+ console.warn("HEAD запрос неудачен, определяем тип по расширению:", s);
1554
1552
  }
1555
1553
  return t.getContentTypeFromExtension(e);
1556
1554
  })();
@@ -1563,13 +1561,13 @@ class D {
1563
1561
  */
1564
1562
  getContentTypeFromExtension(e) {
1565
1563
  try {
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";
1564
+ var t, a = new URL(e), n = (t = a.pathname.split(".").pop()) === null || t === void 0 ? void 0 : t.toLowerCase(), i = {};
1565
+ return this.acceptContentTypes.forEach((s) => {
1566
+ var r = D.getFormatFromContentType(s);
1567
+ r && (i[r] = s);
1568
+ }), i[n] || "application/octet-stream";
1569
+ } catch (s) {
1570
+ return console.warn("Не удалось определить расширение из URL:", e, s), "application/octet-stream";
1573
1571
  }
1574
1572
  }
1575
1573
  /**
@@ -1583,26 +1581,23 @@ class D {
1583
1581
  imageObject: t,
1584
1582
  scaleType: a = "contain"
1585
1583
  } = e, {
1586
- montageArea: r
1584
+ montageArea: n
1587
1585
  } = this.editor;
1588
- if (!r || !t) return 1;
1589
- var n = r.width, i = r.height, {
1590
- width: s,
1586
+ if (!n || !t) return 1;
1587
+ var i = n.width, s = n.height, {
1588
+ width: r,
1591
1589
  height: c
1592
1590
  } = t;
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;
1591
+ return a === "contain" || a === "image-contain" ? Math.min(i / r, s / c) : a === "cover" || a === "image-cover" ? Math.max(i / r, s / c) : 1;
1594
1592
  }
1595
1593
  }
1596
- class Mt {
1594
+ class mt {
1597
1595
  /**
1598
1596
  * @param {object} options
1599
1597
  * @param {ImageEditor} options.editor – экземпляр редактора
1600
1598
  */
1601
- constructor(e) {
1602
- var {
1603
- editor: t
1604
- } = e;
1605
- this.editor = t;
1599
+ constructor({ editor: e }) {
1600
+ this.editor = e;
1606
1601
  }
1607
1602
  /**
1608
1603
  * Устанавливаем внутреннюю ширину канваса (для экспорта)
@@ -1613,40 +1608,26 @@ class Mt {
1613
1608
  * @param {Boolean} [options.adaptCanvasToContainer] - Адаптировать канвас к контейнеру
1614
1609
  * @fires editor:resolution-width-changed
1615
1610
  */
1616
- setResolutionWidth(e) {
1617
- var {
1611
+ setResolutionWidth(e, { preserveProportional: t, withoutSave: a, adaptCanvasToContainer: n } = {}) {
1612
+ var v;
1613
+ if (!e) return;
1614
+ const {
1615
+ canvas: i,
1616
+ montageArea: s,
1617
+ options: { canvasBackstoreWidth: r }
1618
+ } = this.editor, { width: c, height: u } = s, l = Math.max(Math.min(Number(e), w), x);
1619
+ if (!r || r === "auto" || n ? this.adaptCanvasToContainer() : r ? this.setCanvasBackstoreWidth(Number(r)) : this.setCanvasBackstoreWidth(l), s.set({ width: l }), (v = i.clipPath) == null || v.set({ width: l }), t) {
1620
+ const f = l / c, m = u * f;
1621
+ this.setResolutionHeight(m);
1622
+ return;
1623
+ }
1624
+ const { left: d, top: h } = this.getObjectDefaultCoords(s), g = i.getZoom();
1625
+ i.setViewportTransform([g, 0, 0, g, d, h]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i.fire("editor:resolution-width-changed", {
1626
+ width: l,
1618
1627
  preserveProportional: t,
1619
1628
  withoutSave: a,
1620
- adaptCanvasToContainer: r
1621
- } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1622
- if (e) {
1623
- var {
1624
- canvas: n,
1625
- montageArea: i,
1626
- options: {
1627
- canvasBackstoreWidth: s
1628
- }
1629
- } = this.editor, {
1630
- width: c,
1631
- height: u
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
1637
- }), t) {
1638
- var d = l / c, h = u * d;
1639
- this.setResolutionHeight(h);
1640
- return;
1641
- }
1642
- var {
1643
- left: g,
1644
- top: M
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", {
1647
- width: e
1648
- });
1649
- }
1629
+ adaptCanvasToContainer: n
1630
+ });
1650
1631
  }
1651
1632
  /**
1652
1633
  * Устанавливаем внутреннюю высоту канваса (для экспорта)
@@ -1657,59 +1638,43 @@ class Mt {
1657
1638
  * @param {Boolean} [options.adaptCanvasToContainer] - Адаптировать канвас к контейнеру
1658
1639
  * @fires editor:resolution-height-changed
1659
1640
  */
1660
- setResolutionHeight(e) {
1661
- var {
1641
+ setResolutionHeight(e, { preserveProportional: t, withoutSave: a, adaptCanvasToContainer: n } = {}) {
1642
+ var v;
1643
+ if (!e) return;
1644
+ const {
1645
+ canvas: i,
1646
+ montageArea: s,
1647
+ options: { canvasBackstoreHeight: r }
1648
+ } = this.editor, { width: c, height: u } = s, l = Math.max(Math.min(Number(e), O), B);
1649
+ if (!r || r === "auto" || n ? this.adaptCanvasToContainer() : r ? this.setCanvasBackstoreHeight(Number(r)) : this.setCanvasBackstoreHeight(l), s.set({ height: l }), (v = i.clipPath) == null || v.set({ height: l }), t) {
1650
+ const f = l / u, m = c * f;
1651
+ this.setResolutionWidth(m);
1652
+ return;
1653
+ }
1654
+ const { left: d, top: h } = this.getObjectDefaultCoords(s), g = i.getZoom();
1655
+ i.setViewportTransform([g, 0, 0, g, d, h]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i.fire("editor:resolution-height-changed", {
1656
+ height: l,
1662
1657
  preserveProportional: t,
1663
1658
  withoutSave: a,
1664
- adaptCanvasToContainer: r
1665
- } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1666
- if (e) {
1667
- var {
1668
- canvas: n,
1669
- montageArea: i,
1670
- options: {
1671
- canvasBackstoreHeight: s
1672
- }
1673
- } = this.editor, {
1674
- width: c,
1675
- height: u
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
1681
- }), t) {
1682
- var d = l / u, h = c * d;
1683
- this.setResolutionWidth(h);
1684
- return;
1685
- }
1686
- var {
1687
- left: g,
1688
- top: M
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", {
1691
- height: e
1692
- });
1693
- }
1659
+ adaptCanvasToContainer: n
1660
+ });
1694
1661
  }
1695
1662
  /**
1696
1663
  * Центрирует монтажную область и ClipPath точно по центру канваса
1697
1664
  * и устанавливает правильный viewportTransform.
1698
1665
  */
1699
1666
  centerMontageArea() {
1700
- var {
1701
- canvas: e,
1702
- montageArea: t
1703
- } = this.editor, a = e.getWidth(), r = e.getHeight(), n = e.getZoom(), i = new K(a / 2, r / 2);
1667
+ var c;
1668
+ const { canvas: e, montageArea: t } = this.editor, a = e.getWidth(), n = e.getHeight(), i = e.getZoom(), s = new K(a / 2, n / 2);
1704
1669
  t.set({
1705
1670
  left: a / 2,
1706
- top: r / 2
1707
- }), e.clipPath.set({
1671
+ top: n / 2
1672
+ }), (c = e.clipPath) == null || c.set({
1708
1673
  left: a / 2,
1709
- top: r / 2
1674
+ top: n / 2
1710
1675
  }), e.renderAll();
1711
- var s = e.viewportTransform;
1712
- s[4] = a / 2 - i.x * n, s[5] = r / 2 - i.y * n, e.setViewportTransform(s), e.renderAll();
1676
+ const r = e.viewportTransform;
1677
+ r[4] = a / 2 - s.x * i, r[5] = n / 2 - s.y * i, e.setViewportTransform(r), e.renderAll();
1713
1678
  }
1714
1679
  /**
1715
1680
  * Метод для получения координат объекта с учетом текущего зума
@@ -1717,52 +1682,43 @@ class Mt {
1717
1682
  * @returns {Object} координаты объекта
1718
1683
  */
1719
1684
  getObjectDefaultCoords(e) {
1720
- var {
1721
- canvas: t
1722
- } = this.editor, a = e || t.getActiveObject();
1685
+ const { canvas: t } = this.editor, a = e || t.getActiveObject();
1723
1686
  if (!a)
1724
- return console.error("getObjectDefaultCoords. Не выбран объект"), this.editor.canvas.fire("editor:error", {
1687
+ return this.editor.errorManager.emitError({
1688
+ origin: "CanvasManager",
1689
+ method: "getObjectDefaultCoords",
1690
+ code: "NO_ACTIVE_OBJECT",
1725
1691
  message: "Не выбран объект для получения координат"
1726
- }), {};
1727
- var {
1728
- width: r,
1729
- height: n
1730
- } = a, i = t.getZoom(), s = (r - r * i) / 2, c = (n - n * i) / 2;
1731
- return {
1732
- left: s,
1733
- top: c
1734
- };
1692
+ }), { left: 0, top: 0 };
1693
+ const { width: n, height: i } = a, s = t.getZoom(), r = (n - n * s) / 2, c = (i - i * s) / 2;
1694
+ return { left: r, top: c };
1735
1695
  }
1696
+ /**
1697
+ * Устанавливаем ширину канваса в backstore (для экспорта)
1698
+ * @param {Number} width
1699
+ */
1736
1700
  setCanvasBackstoreWidth(e) {
1737
- if (!(!e || typeof e != "number")) {
1738
- var t = Math.max(Math.min(e, E), k);
1739
- this.editor.canvas.setDimensions({
1740
- width: t
1741
- }, {
1742
- backstoreOnly: !0
1743
- });
1744
- }
1701
+ if (!e || typeof e != "number") return;
1702
+ const t = Math.max(Math.min(e, w), x);
1703
+ this.editor.canvas.setDimensions({ width: t }, { backstoreOnly: !0 });
1745
1704
  }
1705
+ /**
1706
+ * Устанавливаем высоту канваса в backstore (для экспорта)
1707
+ * @param {Number} height
1708
+ */
1746
1709
  setCanvasBackstoreHeight(e) {
1747
- if (!(!e || typeof e != "number")) {
1748
- var t = Math.max(Math.min(e, O), x);
1749
- this.editor.canvas.setDimensions({
1750
- height: t
1751
- }, {
1752
- backstoreOnly: !0
1753
- });
1754
- }
1710
+ if (!e || typeof e != "number") return;
1711
+ const t = Math.max(Math.min(e, O), B);
1712
+ this.editor.canvas.setDimensions({ height: t }, { backstoreOnly: !0 });
1755
1713
  }
1714
+ /**
1715
+ * Адаптирует размеры канваса к размерам контейнера редактора.
1716
+ * Устанавливает ширину и высоту канваса в зависимости от размеров контейнера
1717
+ * с учётом минимальных и максимальных значений.
1718
+ */
1756
1719
  adaptCanvasToContainer() {
1757
- var {
1758
- canvas: e
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
1763
- }, {
1764
- backstoreOnly: !0
1765
- });
1720
+ const { canvas: e } = this.editor, t = e.editorContainer, a = t.clientWidth, n = t.clientHeight, i = Math.max(Math.min(a, w), x), s = Math.max(Math.min(n, O), B);
1721
+ console.log("adaptCanvasToContainer newWidth", i), console.log("adaptCanvasToContainer newHeight", s), e.setDimensions({ width: i, height: s }, { backstoreOnly: !0 });
1766
1722
  }
1767
1723
  /**
1768
1724
  * Обновляет размеры канваса и вписывает объекты в монтажную область.
@@ -1770,27 +1726,18 @@ class Mt {
1770
1726
  * @fires editor:canvas-updated
1771
1727
  */
1772
1728
  updateCanvasAndFitObjects() {
1773
- var {
1729
+ const {
1774
1730
  canvas: e,
1775
1731
  selectionManager: t,
1776
1732
  transformManager: a,
1777
1733
  montageArea: {
1778
- width: r,
1779
- height: n
1734
+ width: n,
1735
+ height: i
1780
1736
  }
1781
1737
  } = this.editor;
1782
- this.setResolutionWidth(r, {
1783
- adaptCanvasToContainer: !0,
1784
- withoutSave: !0
1785
- }), this.setResolutionHeight(n, {
1786
- adaptCanvasToContainer: !0,
1787
- withoutSave: !0
1788
- }), this.centerMontageArea(), t.selectAll(), a.fitObject({
1789
- fitAsOneObject: !0,
1790
- withoutSave: !0
1791
- }), e.fire("editor:canvas-updated", {
1792
- width: r,
1793
- height: n
1738
+ this.setResolutionWidth(n, { adaptCanvasToContainer: !0, withoutSave: !0 }), this.setResolutionHeight(i, { adaptCanvasToContainer: !0, withoutSave: !0 }), this.centerMontageArea(), t.selectAll(), a.fitObject({ fitAsOneObject: !0, withoutSave: !0 }), e.fire("editor:canvas-updated", {
1739
+ width: n,
1740
+ height: i
1794
1741
  });
1795
1742
  }
1796
1743
  /**
@@ -1805,16 +1752,13 @@ class Mt {
1805
1752
  * @param {Number} zoom — текущее значение zoom (например, 1, 1.2, 2 и т.д.)
1806
1753
  */
1807
1754
  updateCssDimensionsForZoom(e) {
1808
- var {
1809
- canvas: t,
1810
- montageArea: a
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;
1812
- t.setDimensions({
1813
- width: s,
1814
- height: c
1815
- }, {
1816
- cssOnly: !0
1817
- });
1755
+ const { canvas: t, montageArea: a } = this.editor, n = a.width * e, i = a.height * e, s = t.wrapperEl.parentNode;
1756
+ if (!(s instanceof HTMLElement)) return;
1757
+ const r = n <= s.clientWidth ? "100%" : n, c = i <= s.clientHeight ? "100%" : i;
1758
+ t.setDimensions(
1759
+ { width: r, height: c },
1760
+ { cssOnly: !0 }
1761
+ );
1818
1762
  }
1819
1763
  /**
1820
1764
  * Устанавливаем CSS ширину канваса для отображения
@@ -1897,50 +1841,37 @@ class Mt {
1897
1841
  * @param {string|number} [options.value]
1898
1842
  * @fires editor:display-{element}-{dimension}-changed
1899
1843
  */
1900
- setDisplayDimension() {
1901
- var {
1844
+ setDisplayDimension({ element: e = "canvas", dimension: t, value: a } = {}) {
1845
+ if (!a) return;
1846
+ const { canvas: n, options: { editorContainer: i } } = this.editor, s = [];
1847
+ switch (e) {
1848
+ case "canvas":
1849
+ s.push(n.lowerCanvasEl, n.upperCanvasEl);
1850
+ break;
1851
+ case "wrapper":
1852
+ s.push(n.wrapperEl);
1853
+ break;
1854
+ case "container":
1855
+ s.push(i);
1856
+ break;
1857
+ default:
1858
+ s.push(n.lowerCanvasEl, n.upperCanvasEl);
1859
+ }
1860
+ const r = t === "width" ? "width" : "height";
1861
+ if (typeof a == "string") {
1862
+ s.forEach((u) => {
1863
+ u.style[r] = a;
1864
+ });
1865
+ return;
1866
+ }
1867
+ if (isNaN(a)) return;
1868
+ const c = `${a}px`;
1869
+ s.forEach((u) => {
1870
+ u.style[r] = c;
1871
+ }), n.fire(`editor:display-${e}-${r}-changed`, {
1902
1872
  element: e,
1903
- dimension: t,
1904
1873
  value: a
1905
- } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
1906
- if (a) {
1907
- var {
1908
- canvas: r,
1909
- options: {
1910
- editorContainer: n
1911
- }
1912
- } = this.editor, i = [];
1913
- switch (e) {
1914
- case "canvas":
1915
- i.push(r.lowerCanvasEl, r.upperCanvasEl);
1916
- break;
1917
- case "wrapper":
1918
- i.push(r.wrapperEl);
1919
- break;
1920
- case "container":
1921
- i.push(n);
1922
- break;
1923
- default:
1924
- i.push(r.lowerCanvasEl, r.upperCanvasEl);
1925
- }
1926
- var s = t === "width" ? "width" : "height";
1927
- if (typeof a == "string") {
1928
- i.forEach((l) => {
1929
- l.style[s] = a;
1930
- });
1931
- return;
1932
- }
1933
- var c = parseFloat(a);
1934
- if (!isNaN(c)) {
1935
- var u = "".concat(c, "px");
1936
- i.forEach((l) => {
1937
- l.style[s] = u;
1938
- }), r.fire("editor:display-".concat(e, "-").concat(s, "-changed"), {
1939
- element: e,
1940
- value: a
1941
- });
1942
- }
1943
- }
1874
+ });
1944
1875
  }
1945
1876
  /**
1946
1877
  * Если изображение вписывается в допустимые значения, то масштабируем под него канвас
@@ -1950,57 +1881,40 @@ class Mt {
1950
1881
  * @param {Boolean} [options.preserveAspectRatio] - Сохранять изначальные пропорции монтажной области
1951
1882
  * @fires editor:montage-area-scaled-to-image
1952
1883
  */
1953
- scaleMontageAreaToImage() {
1954
- var {
1955
- object: e,
1956
- preserveAspectRatio: t,
1957
- withoutSave: a
1958
- } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
1959
- canvas: r,
1960
- montageArea: n,
1961
- transformManager: i,
1884
+ scaleMontageAreaToImage({ object: e, preserveAspectRatio: t, withoutSave: a } = {}) {
1885
+ const {
1886
+ canvas: n,
1887
+ montageArea: i,
1888
+ transformManager: s,
1962
1889
  options: {
1963
- montageAreaWidth: s,
1890
+ montageAreaWidth: r,
1964
1891
  montageAreaHeight: c
1965
1892
  }
1966
- } = this.editor, u = e || r.getActiveObject();
1967
- if (!(!u || u.type !== "image" && u.format !== "svg")) {
1968
- var {
1969
- width: l,
1970
- height: d
1971
- } = u, h = Math.min(l, E), g = Math.min(d, O);
1972
- if (t) {
1973
- var {
1974
- width: M,
1975
- height: m
1976
- } = n, f = l / M, v = d / m, S = Math.max(f, v);
1977
- h = M * S, g = m * S;
1978
- }
1979
- this.setResolutionWidth(h, {
1980
- withoutSave: !0
1981
- }), this.setResolutionHeight(g, {
1982
- withoutSave: !0
1983
- }), (l > s || d > c) && i.calculateAndApplyDefaultZoom(), i.resetObject(u, {
1984
- withoutSave: !0
1985
- }), r.centerObject(u), r.renderAll(), a || this.editor.historyManager.saveState(), r.fire("editor:montage-area-scaled-to-image", {
1986
- object: u,
1987
- width: h,
1988
- height: g,
1989
- preserveAspectRatio: t,
1990
- withoutSave: a
1991
- });
1893
+ } = this.editor, u = e || n.getActiveObject();
1894
+ if (!u || u.type !== "image" && u.format !== "svg") return;
1895
+ const { width: l, height: d } = u;
1896
+ let h = Math.min(l, w), g = Math.min(d, O);
1897
+ if (t) {
1898
+ const {
1899
+ width: v,
1900
+ height: f
1901
+ } = i, m = l / v, M = d / f, S = Math.max(m, M);
1902
+ h = v * S, g = f * S;
1992
1903
  }
1904
+ this.setResolutionWidth(h, { withoutSave: !0 }), this.setResolutionHeight(g, { withoutSave: !0 }), (l > r || d > c) && s.calculateAndApplyDefaultZoom(), s.resetObject(u, { withoutSave: !0 }), n.centerObject(u), n.renderAll(), a || this.editor.historyManager.saveState(), n.fire("editor:montage-area-scaled-to-image", {
1905
+ object: u,
1906
+ width: h,
1907
+ height: g,
1908
+ preserveAspectRatio: t,
1909
+ withoutSave: a
1910
+ });
1993
1911
  }
1994
1912
  /**
1995
1913
  * Очистка холста
1996
1914
  * @fires editor:cleared
1997
1915
  */
1998
1916
  clearCanvas() {
1999
- var {
2000
- canvas: e,
2001
- montageArea: t,
2002
- historyManager: a
2003
- } = this.editor;
1917
+ const { canvas: e, montageArea: t, historyManager: a } = this.editor;
2004
1918
  a.suspendHistory(), e.clear(), e.add(t), e.renderAll(), a.resumeHistory(), a.saveState(), e == null || e.fire("editor:cleared");
2005
1919
  }
2006
1920
  /**
@@ -2009,37 +1923,25 @@ class Mt {
2009
1923
  * @param {Boolean} options.withoutSave - Не сохранять состояние
2010
1924
  * @fires editor:default-scale-set
2011
1925
  */
2012
- setDefaultScale() {
2013
- var {
2014
- withoutSave: e
2015
- } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
1926
+ setDefaultScale({ withoutSave: e } = {}) {
1927
+ const {
2016
1928
  canvas: t,
2017
1929
  transformManager: a,
2018
- historyManager: r,
1930
+ historyManager: n,
2019
1931
  options: {
2020
- montageAreaWidth: n,
2021
- montageAreaHeight: i
1932
+ montageAreaWidth: i,
1933
+ montageAreaHeight: s
2022
1934
  }
2023
1935
  } = this.editor;
2024
- a.resetZoom(), this.setResolutionWidth(n, {
2025
- withoutSave: !0
2026
- }), this.setResolutionHeight(i, {
2027
- withoutSave: !0
2028
- }), t.renderAll(), a.resetObjects(), e || r.saveState(), t.fire("editor:default-scale-set");
1936
+ a.resetZoom(), this.setResolutionWidth(i, { withoutSave: !0 }), this.setResolutionHeight(s, { withoutSave: !0 }), t.renderAll(), a.resetObjects(), e || n.saveState(), t.fire("editor:default-scale-set");
2029
1937
  }
2030
1938
  /**
2031
1939
  * Получение всех объектов внутри монтажной области редактора
2032
1940
  * @returns {Array} массив объектов
2033
1941
  */
2034
1942
  getObjects() {
2035
- var {
2036
- canvas: e,
2037
- montageArea: t,
2038
- interactionBlocker: {
2039
- overlayMask: a
2040
- }
2041
- } = this.editor, r = e.getObjects();
2042
- return r.filter((n) => n.id !== t.id && n.id !== a.id);
1943
+ const { canvas: e, montageArea: t, interactionBlocker: { overlayMask: a } } = this.editor;
1944
+ return e.getObjects().filter((i) => i.id !== t.id && i.id !== a.id);
2043
1945
  }
2044
1946
  }
2045
1947
  class ft {
@@ -2054,7 +1956,7 @@ class ft {
2054
1956
  * @param {Number} [scale] - Желаемый масштаб относительно размеров контейнера редактора.
2055
1957
  */
2056
1958
  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;
1959
+ const { canvas: t } = this.editor, a = t.editorContainer, n = a.clientWidth, i = a.clientHeight, { width: s, height: r } = this.editor.montageArea, c = n / s * e, u = i / r * e;
2058
1960
  this.defaultZoom = Math.min(c, u);
2059
1961
  const { defaultZoom: l, maxZoomFactor: d, minZoom: h, maxZoom: g } = this;
2060
1962
  this.minZoom = Math.min(l / d, h), this.maxZoom = Math.max(l * d, g), this.setZoom();
@@ -2068,17 +1970,17 @@ class ft {
2068
1970
  * @fires editor:zoom-changed
2069
1971
  * Если передавать координаты курсора, то нужно быть аккуратнее, так как юзер может выйти за пределы рабочей области
2070
1972
  */
2071
- zoom(e = vt, t = {}) {
1973
+ zoom(e = Mt, t = {}) {
2072
1974
  var h, g;
2073
1975
  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,
1976
+ const { minZoom: a, maxZoom: n } = this, { canvas: i } = this.editor, s = i.getZoom(), r = i.getCenterPoint(), c = (h = t.pointX) != null ? h : r.x, u = (g = t.pointY) != null ? g : r.y, l = new K(c, u);
1977
+ let d = Number((s + Number(e)).toFixed(2));
1978
+ d > n && (d = n), d < a && (d = a), i.zoomToPoint(l, d), console.log({
1979
+ currentZoom: s,
2078
1980
  zoom: d,
2079
1981
  point: l
2080
- }), n.fire("editor:zoom-changed", {
2081
- currentZoom: n.getZoom(),
1982
+ }), i.fire("editor:zoom-changed", {
1983
+ currentZoom: i.getZoom(),
2082
1984
  zoom: d,
2083
1985
  point: l
2084
1986
  });
@@ -2089,12 +1991,12 @@ class ft {
2089
1991
  * @fires editor:zoom-changed
2090
1992
  */
2091
1993
  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
1994
+ const { minZoom: t, maxZoom: a } = this, { canvas: n } = this.editor, i = new K(n.getCenterPoint());
1995
+ let s = e;
1996
+ e > a && (s = a), e < t && (s = t), n.zoomToPoint(i, s), n.fire("editor:zoom-changed", {
1997
+ currentZoom: n.getZoom(),
1998
+ zoom: s,
1999
+ point: i
2098
2000
  });
2099
2001
  }
2100
2002
  /**
@@ -2115,14 +2017,14 @@ class ft {
2115
2017
  * @param {Boolean} options.withoutSave - Не сохранять состояние
2116
2018
  * @fires editor:object-rotated
2117
2019
  */
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,
2020
+ rotate(e = vt, { withoutSave: t } = {}) {
2021
+ const { canvas: a, historyManager: n } = this.editor, i = a.getActiveObject();
2022
+ if (!i) return;
2023
+ const s = i.angle + e;
2024
+ i.rotate(s), i.setCoords(), a.renderAll(), t || n.saveState(), a.fire("editor:object-rotated", {
2025
+ object: i,
2124
2026
  withoutSave: t,
2125
- angle: i
2027
+ angle: s
2126
2028
  });
2127
2029
  }
2128
2030
  /**
@@ -2132,9 +2034,9 @@ class ft {
2132
2034
  * @fires editor:object-flipped-x
2133
2035
  */
2134
2036
  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,
2037
+ const { canvas: t, historyManager: a } = this.editor, n = t.getActiveObject();
2038
+ n && (n.flipX = !n.flipX, t.renderAll(), e || a.saveState(), t.fire("editor:object-flipped-x", {
2039
+ object: n,
2138
2040
  withoutSave: e
2139
2041
  }));
2140
2042
  }
@@ -2145,9 +2047,9 @@ class ft {
2145
2047
  * @fires editor:object-flipped-y
2146
2048
  */
2147
2049
  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,
2050
+ const { canvas: t, historyManager: a } = this.editor, n = t.getActiveObject();
2051
+ n && (n.flipY = !n.flipY, t.renderAll(), e || a.saveState(), t.fire("editor:object-flipped-y", {
2052
+ object: n,
2151
2053
  withoutSave: e
2152
2054
  }));
2153
2055
  }
@@ -2161,11 +2063,11 @@ class ft {
2161
2063
  opacity: t = 1,
2162
2064
  withoutSave: a
2163
2065
  } = {}) {
2164
- const { canvas: r, historyManager: n } = this.editor, i = e || r.getActiveObject();
2165
- i && (i.type === "activeselection" ? i.getObjects().forEach((s) => {
2166
- s.set("opacity", t);
2167
- }) : i.set("opacity", t), r.renderAll(), a || n.saveState(), r.fire("editor:object-opacity-changed", {
2168
- object: i,
2066
+ const { canvas: n, historyManager: i } = this.editor, s = e || n.getActiveObject();
2067
+ s && (s instanceof T ? s.getObjects().forEach((r) => {
2068
+ r.set("opacity", t);
2069
+ }) : s.set("opacity", t), n.renderAll(), a || i.saveState(), n.fire("editor:object-opacity-changed", {
2070
+ object: s,
2169
2071
  opacity: t,
2170
2072
  withoutSave: a
2171
2073
  }));
@@ -2185,30 +2087,30 @@ class ft {
2185
2087
  object: e,
2186
2088
  type: t = this.options.scaleType,
2187
2089
  withoutSave: a,
2188
- fitAsOneObject: r
2090
+ fitAsOneObject: n
2189
2091
  } = {}) {
2190
- const { canvas: n, imageManager: i, historyManager: s } = this.editor, c = e || n.getActiveObject();
2092
+ const { canvas: i, imageManager: s, historyManager: r } = this.editor, c = e || i.getActiveObject();
2191
2093
  if (c) {
2192
- if (c.set("angle", 0), ["activeselection"].includes(c.type) && !r) {
2094
+ if (c.set("angle", 0), c instanceof T && !n) {
2193
2095
  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);
2096
+ i.discardActiveObject(), u.forEach((d) => {
2097
+ const h = s.calculateScaleFactor({ imageObject: d, scaleType: t });
2098
+ d.scale(h), i.centerObject(d);
2197
2099
  });
2198
- const l = new R(u, { canvas: n });
2199
- n.setActiveObject(l);
2100
+ const l = new T(u, { canvas: i });
2101
+ i.setActiveObject(l);
2200
2102
  } else {
2201
- const u = i.calculateScaleFactor({
2103
+ const u = s.calculateScaleFactor({
2202
2104
  imageObject: c,
2203
2105
  scaleType: t
2204
2106
  });
2205
- c.scale(u), n.centerObject(c);
2107
+ c.scale(u), i.centerObject(c);
2206
2108
  }
2207
- n.renderAll(), a || s.saveState(), n.fire("editor:object-fitted", {
2109
+ i.renderAll(), a || r.saveState(), i.fire("editor:object-fitted", {
2208
2110
  object: c,
2209
2111
  type: t,
2210
2112
  withoutSave: a,
2211
- fitAsOneObject: r
2113
+ fitAsOneObject: n
2212
2114
  });
2213
2115
  }
2214
2116
  }
@@ -2231,14 +2133,14 @@ class ft {
2231
2133
  */
2232
2134
  resetObject(e, { alwaysFitObject: t = !1, withoutSave: a = !1 } = {}) {
2233
2135
  const {
2234
- canvas: r,
2235
- montageArea: n,
2236
- imageManager: i,
2237
- historyManager: s,
2136
+ canvas: n,
2137
+ montageArea: i,
2138
+ imageManager: s,
2139
+ historyManager: r,
2238
2140
  options: { scaleType: c }
2239
- } = this.editor, u = e || r.getActiveObject();
2141
+ } = this.editor, u = e || n.getActiveObject();
2240
2142
  if (!u || u.locked) return;
2241
- if (s.suspendHistory(), u.type === "image" || u.format === "svg" || u.set({
2143
+ if (r.suspendHistory(), u.type === "image" || u.format === "svg" || u.set({
2242
2144
  scaleX: 1,
2243
2145
  scaleY: 1,
2244
2146
  flipX: !1,
@@ -2247,13 +2149,13 @@ class ft {
2247
2149
  }), t)
2248
2150
  this.fitObject({ object: u, withoutSave: !0, fitAsOneObject: !0 });
2249
2151
  else {
2250
- const { width: d, height: h } = n, { width: g, height: M } = u, m = i.calculateScaleFactor({
2152
+ const { width: d, height: h } = i, { width: g, height: v } = u, f = s.calculateScaleFactor({
2251
2153
  imageObject: u,
2252
2154
  scaleType: c
2253
2155
  });
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 });
2156
+ c === "contain" && f < 1 || c === "cover" && (g > d || v > h) ? this.fitObject({ object: u, withoutSave: !0, fitAsOneObject: !0 }) : u.set({ scaleX: 1, scaleY: 1 });
2255
2157
  }
2256
- u.set({ flipX: !1, flipY: !1, angle: 0 }), r.centerObject(u), r.renderAll(), s.resumeHistory(), a || s.saveState(), r.fire("editor:object-reset", {
2158
+ u.set({ flipX: !1, flipY: !1, angle: 0 }), n.centerObject(u), n.renderAll(), r.resumeHistory(), a || r.saveState(), n.fire("editor:object-reset", {
2257
2159
  object: u,
2258
2160
  withoutSave: a,
2259
2161
  alwaysFitObject: t
@@ -2309,16 +2211,16 @@ class jt {
2309
2211
  if (!(!t || !this.overlayMask)) {
2310
2212
  a.suspendHistory(), t.setCoords();
2311
2213
  var {
2312
- left: r,
2313
- top: n,
2314
- width: i,
2315
- height: s
2214
+ left: n,
2215
+ top: i,
2216
+ width: s,
2217
+ height: r
2316
2218
  } = t.getBoundingRect();
2317
2219
  this.overlayMask.set({
2318
- left: r,
2319
- top: n,
2320
- width: i,
2321
- height: s
2220
+ left: n,
2221
+ top: i,
2222
+ width: s,
2223
+ height: r
2322
2224
  }), e.discardActiveObject(), this.editor.layerManager.bringToFront(this.overlayMask, {
2323
2225
  withoutSave: !0
2324
2226
  }), a.resumeHistory();
@@ -2338,8 +2240,8 @@ class jt {
2338
2240
  canvasManager: t,
2339
2241
  historyManager: a
2340
2242
  } = this.editor;
2341
- a.suspendHistory(), this.isBlocked = !0, e.discardActiveObject(), e.selection = !1, e.skipTargetFind = !0, t.getObjects().forEach((r) => {
2342
- r.evented = !1, r.selectable = !1;
2243
+ a.suspendHistory(), this.isBlocked = !0, e.discardActiveObject(), e.selection = !1, e.skipTargetFind = !0, t.getObjects().forEach((n) => {
2244
+ n.evented = !1, n.selectable = !1;
2343
2245
  }), e.upperCanvasEl.style.pointerEvents = "none", e.lowerCanvasEl.style.pointerEvents = "none", this.overlayMask.visible = !0, this.refresh(), e.fire("editor:disabled"), a.resumeHistory();
2344
2246
  }
2345
2247
  }
@@ -2354,8 +2256,8 @@ class jt {
2354
2256
  canvasManager: t,
2355
2257
  historyManager: a
2356
2258
  } = this.editor;
2357
- a.suspendHistory(), this.isBlocked = !1, e.selection = !0, e.skipTargetFind = !1, t.getObjects().forEach((r) => {
2358
- r.evented = !0, r.selectable = !0;
2259
+ a.suspendHistory(), this.isBlocked = !1, e.selection = !0, e.skipTargetFind = !1, t.getObjects().forEach((n) => {
2260
+ n.evented = !0, n.selectable = !0;
2359
2261
  }), e.upperCanvasEl.style.pointerEvents = "", e.lowerCanvasEl.style.pointerEvents = "", this.overlayMask.visible = !1, e.requestRenderAll(), e.fire("editor:enabled"), a.resumeHistory();
2360
2262
  }
2361
2263
  }
@@ -2383,14 +2285,14 @@ class $ {
2383
2285
  withoutSave: t
2384
2286
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2385
2287
  canvas: a,
2386
- historyManager: r
2288
+ historyManager: n
2387
2289
  } = this.editor;
2388
- r.suspendHistory();
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,
2290
+ n.suspendHistory();
2291
+ var i = e || a.getActiveObject();
2292
+ i && (i.type === "activeselection" ? i.getObjects().forEach((s) => {
2293
+ a.bringObjectToFront(s);
2294
+ }) : a.bringObjectToFront(i), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-bring-to-front", {
2295
+ object: i,
2394
2296
  withoutSave: t
2395
2297
  }));
2396
2298
  }
@@ -2406,12 +2308,12 @@ class $ {
2406
2308
  withoutSave: t
2407
2309
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2408
2310
  canvas: a,
2409
- historyManager: r
2311
+ historyManager: n
2410
2312
  } = this.editor;
2411
- r.suspendHistory();
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,
2313
+ n.suspendHistory();
2314
+ var i = e || a.getActiveObject();
2315
+ i && (i.type === "activeselection" ? $._moveSelectionForward(a, i) : a.bringObjectForward(i), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-bring-forward", {
2316
+ object: i,
2415
2317
  withoutSave: t
2416
2318
  }));
2417
2319
  }
@@ -2427,22 +2329,22 @@ class $ {
2427
2329
  withoutSave: t
2428
2330
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2429
2331
  canvas: a,
2430
- montageArea: r,
2431
- historyManager: n,
2332
+ montageArea: n,
2333
+ historyManager: i,
2432
2334
  interactionBlocker: {
2433
- overlayMask: i
2335
+ overlayMask: s
2434
2336
  }
2435
2337
  } = this.editor;
2436
- n.suspendHistory();
2437
- var s = e || a.getActiveObject();
2438
- if (s) {
2439
- if (s.type === "activeselection")
2440
- for (var c = s.getObjects(), u = c.length - 1; u >= 0; u -= 1)
2338
+ i.suspendHistory();
2339
+ var r = e || a.getActiveObject();
2340
+ if (r) {
2341
+ if (r.type === "activeselection")
2342
+ for (var c = r.getObjects(), u = c.length - 1; u >= 0; u -= 1)
2441
2343
  a.sendObjectToBack(c[u]);
2442
2344
  else
2443
- a.sendObjectToBack(s);
2444
- a.sendObjectToBack(r), a.sendObjectToBack(i), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-send-to-back", {
2445
- object: s,
2345
+ a.sendObjectToBack(r);
2346
+ a.sendObjectToBack(n), a.sendObjectToBack(s), a.renderAll(), i.resumeHistory(), t || i.saveState(), a.fire("editor:object-send-to-back", {
2347
+ object: r,
2446
2348
  withoutSave: t
2447
2349
  });
2448
2350
  }
@@ -2458,16 +2360,16 @@ class $ {
2458
2360
  withoutSave: t
2459
2361
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2460
2362
  canvas: a,
2461
- montageArea: r,
2462
- historyManager: n,
2363
+ montageArea: n,
2364
+ historyManager: i,
2463
2365
  interactionBlocker: {
2464
- overlayMask: i
2366
+ overlayMask: s
2465
2367
  }
2466
2368
  } = this.editor;
2467
- n.suspendHistory();
2468
- var s = e || a.getActiveObject();
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,
2369
+ i.suspendHistory();
2370
+ var r = e || a.getActiveObject();
2371
+ r && (r.type === "activeselection" ? $._moveSelectionBackwards(a, r) : a.sendObjectBackwards(r), a.sendObjectToBack(n), a.sendObjectToBack(s), a.renderAll(), i.resumeHistory(), t || i.saveState(), a.fire("editor:object-send-backwards", {
2372
+ object: r,
2471
2373
  withoutSave: t
2472
2374
  }));
2473
2375
  }
@@ -2479,20 +2381,20 @@ class $ {
2479
2381
  * @private
2480
2382
  */
2481
2383
  static _moveSelectionForward(e, t) {
2482
- for (var a = e.getObjects(), r = t.getObjects(), n = r.map((l) => a.indexOf(l)), i = -1, s = function(d) {
2384
+ for (var a = e.getObjects(), n = t.getObjects(), i = n.map((l) => a.indexOf(l)), s = -1, r = function(d) {
2483
2385
  var h = a[d];
2484
- if (!r.includes(h) && n.some((g) => d > g))
2485
- return i = d, 1;
2486
- }, c = 0; c < a.length && !s(c); c += 1)
2386
+ if (!n.includes(h) && i.some((g) => d > g))
2387
+ return s = d, 1;
2388
+ }, c = 0; c < a.length && !r(c); c += 1)
2487
2389
  ;
2488
- if (i !== -1) {
2489
- var u = r.map((l) => ({
2390
+ if (s !== -1) {
2391
+ var u = n.map((l) => ({
2490
2392
  obj: l,
2491
2393
  index: a.indexOf(l)
2492
2394
  })).sort((l, d) => d.index - l.index);
2493
2395
  u.forEach((l) => {
2494
2396
  var d = a.indexOf(l.obj);
2495
- d < i && (e.moveObjectTo(l.obj, i), i = d);
2397
+ d < s && (e.moveObjectTo(l.obj, s), s = d);
2496
2398
  });
2497
2399
  }
2498
2400
  }
@@ -2504,8 +2406,8 @@ class $ {
2504
2406
  * @private
2505
2407
  */
2506
2408
  static _moveSelectionBackwards(e, t) {
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);
2409
+ for (var a = e.getObjects(), n = t.getObjects(), i = Math.min(...n.map((r) => a.indexOf(r))), s = n.length - 1; s >= 0; s -= 1)
2410
+ e.moveObjectTo(n[s], i - 1);
2509
2411
  }
2510
2412
  }
2511
2413
  class yt {
@@ -2537,10 +2439,10 @@ class yt {
2537
2439
  id: e = `rect-${A()}`,
2538
2440
  left: t,
2539
2441
  top: a,
2540
- width: r = 100,
2541
- height: n = 100,
2542
- fill: i = "blue"
2543
- } = d, s = X(d, [
2442
+ width: n = 100,
2443
+ height: i = 100,
2444
+ fill: s = "blue"
2445
+ } = d, r = X(d, [
2544
2446
  "id",
2545
2447
  "left",
2546
2448
  "top",
@@ -2552,10 +2454,10 @@ class yt {
2552
2454
  id: e,
2553
2455
  left: t,
2554
2456
  top: a,
2555
- width: r,
2556
- height: n,
2557
- fill: i
2558
- }, s));
2457
+ width: n,
2458
+ height: i,
2459
+ fill: s
2460
+ }, r));
2559
2461
  return !t && !a && h.centerObject(g), u || (h.add(g), c || h.setActiveObject(g), h.renderAll()), g;
2560
2462
  }
2561
2463
  /**
@@ -2574,14 +2476,14 @@ class yt {
2574
2476
  * @param {Object} flags.withoutSelection - Не выделять объект
2575
2477
  * @param {Object} flags.withoutAdding - Не добавлять объект в canvas
2576
2478
  */
2577
- addCircle(u = {}, { withoutSelection: s, withoutAdding: c } = {}) {
2479
+ addCircle(u = {}, { withoutSelection: r, withoutAdding: c } = {}) {
2578
2480
  var l = u, {
2579
2481
  id: e = `circle-${A()}`,
2580
2482
  left: t,
2581
2483
  top: a,
2582
- radius: r = 50,
2583
- fill: n = "green"
2584
- } = l, i = X(l, [
2484
+ radius: n = 50,
2485
+ fill: i = "green"
2486
+ } = l, s = X(l, [
2585
2487
  "id",
2586
2488
  "left",
2587
2489
  "top",
@@ -2592,10 +2494,10 @@ class yt {
2592
2494
  id: e,
2593
2495
  left: t,
2594
2496
  top: a,
2595
- fill: n,
2596
- radius: r
2597
- }, i));
2598
- return !t && !a && d.centerObject(h), c || (d.add(h), s || d.setActiveObject(h), d.renderAll()), h;
2497
+ fill: i,
2498
+ radius: n
2499
+ }, s));
2500
+ return !t && !a && d.centerObject(h), c || (d.add(h), r || d.setActiveObject(h), d.renderAll()), h;
2599
2501
  }
2600
2502
  /**
2601
2503
  * Добавление треугольника
@@ -2619,10 +2521,10 @@ class yt {
2619
2521
  id: e = `triangle-${A()}`,
2620
2522
  left: t,
2621
2523
  top: a,
2622
- width: r = 100,
2623
- height: n = 100,
2624
- fill: i = "yellow"
2625
- } = d, s = X(d, [
2524
+ width: n = 100,
2525
+ height: i = 100,
2526
+ fill: s = "yellow"
2527
+ } = d, r = X(d, [
2626
2528
  "id",
2627
2529
  "left",
2628
2530
  "top",
@@ -2634,14 +2536,14 @@ class yt {
2634
2536
  id: e,
2635
2537
  left: t,
2636
2538
  top: a,
2637
- fill: i,
2638
- width: r,
2639
- height: n
2640
- }, s));
2539
+ fill: s,
2540
+ width: n,
2541
+ height: i
2542
+ }, r));
2641
2543
  return !t && !a && h.centerObject(g), u || (h.add(g), c || h.setActiveObject(g), h.renderAll()), g;
2642
2544
  }
2643
2545
  }
2644
- class pt {
2546
+ class bt {
2645
2547
  /**
2646
2548
  * @param {object} options
2647
2549
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2656,16 +2558,19 @@ class pt {
2656
2558
  copy() {
2657
2559
  const { canvas: e, errorManager: t } = this.editor, a = e.getActiveObject();
2658
2560
  if (!a) return;
2659
- if (typeof ClipboardItem == "undefined" || !navigator.clipboard)
2660
- return t.emitWarning({
2561
+ if (typeof ClipboardItem == "undefined" || !navigator.clipboard) {
2562
+ t.emitWarning({
2661
2563
  origin: "ClipboardManager",
2662
2564
  method: "copy",
2663
2565
  code: "CLIPBOARD_NOT_SUPPORTED",
2566
+ // eslint-disable-next-line max-len
2664
2567
  message: "ClipboardManager. navigator.clipboard не поддерживается в этом браузере или отсутствует соединение по HTTPS-протоколу."
2665
2568
  }), this._cloneAndFire(e, a);
2569
+ return;
2570
+ }
2666
2571
  if (a.type !== "image") {
2667
2572
  const h = `application/image-editor:${JSON.stringify(a.toObject(["format"]))}`;
2668
- return navigator.clipboard.writeText(h).catch((g) => {
2573
+ navigator.clipboard.writeText(h).catch((g) => {
2669
2574
  t.emitWarning({
2670
2575
  origin: "ClipboardManager",
2671
2576
  method: "copy",
@@ -2674,11 +2579,12 @@ class pt {
2674
2579
  data: g
2675
2580
  });
2676
2581
  }), this._cloneAndFire(e, a);
2582
+ return;
2677
2583
  }
2678
- const n = a.toCanvasElement().toDataURL(), i = n.slice(5).split(";")[0], s = n.split(",")[1], c = atob(s), u = new Uint8Array(c.length);
2679
- for (let h = 0; h < c.length; h++)
2584
+ const i = a.toCanvasElement().toDataURL(), s = i.slice(5).split(";")[0], r = i.split(",")[1], c = atob(r), u = new Uint8Array(c.length);
2585
+ for (let h = 0; h < c.length; h += 1)
2680
2586
  u[h] = c.charCodeAt(h);
2681
- const l = new Blob([u.buffer], { type: i }), d = new ClipboardItem({ [i]: l });
2587
+ const l = new Blob([u.buffer], { type: s }), d = new ClipboardItem({ [s]: l });
2682
2588
  navigator.clipboard.write([d]).catch((h) => {
2683
2589
  t.emitWarning({
2684
2590
  origin: "ClipboardManager",
@@ -2713,21 +2619,21 @@ class pt {
2713
2619
  * @param {Array} event.clipboardData.items — элементы буфера обмена
2714
2620
  */
2715
2621
  handlePasteEvent({ clipboardData: e }) {
2716
- var i;
2717
- if (!((i = e == null ? void 0 : e.items) != null && i.length)) return;
2718
- const { imageManager: t } = this.editor, { items: a } = e, r = a[a.length - 1];
2719
- if (r.type !== "text/html") {
2720
- const s = r.getAsFile();
2721
- if (!s) return;
2622
+ var s;
2623
+ if (!((s = e == null ? void 0 : e.items) != null && s.length)) return;
2624
+ const { imageManager: t } = this.editor, { items: a } = e, n = a[a.length - 1];
2625
+ if (n.type !== "text/html") {
2626
+ const r = n.getAsFile();
2627
+ if (!r) return;
2722
2628
  const c = new FileReader();
2723
2629
  c.onload = (u) => {
2724
2630
  u.target && this.editor.imageManager.importImage({ source: u.target.result });
2725
- }, c.readAsDataURL(s);
2631
+ }, c.readAsDataURL(r);
2726
2632
  return;
2727
2633
  }
2728
- const n = e.getData("text/html");
2729
- if (n) {
2730
- const u = new DOMParser().parseFromString(n, "text/html").querySelector("img");
2634
+ const i = e.getData("text/html");
2635
+ if (i) {
2636
+ const u = new DOMParser().parseFromString(i, "text/html").querySelector("img");
2731
2637
  if (u != null && u.src) {
2732
2638
  t.importImage({ source: u.src });
2733
2639
  return;
@@ -2749,13 +2655,13 @@ class pt {
2749
2655
  left: t.left + 10,
2750
2656
  top: t.top + 10,
2751
2657
  evented: !0
2752
- }), t instanceof R ? (t.canvas = e, t.forEachObject((a) => {
2658
+ }), t instanceof T ? (t.canvas = e, t.forEachObject((a) => {
2753
2659
  e.add(a);
2754
2660
  })) : e.add(t), e.setActiveObject(t), e.requestRenderAll(), e.fire("editor:object-pasted", { object: t });
2755
2661
  });
2756
2662
  }
2757
2663
  }
2758
- class bt {
2664
+ class pt {
2759
2665
  /**
2760
2666
  * @param {object} options
2761
2667
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2780,11 +2686,11 @@ class bt {
2780
2686
  skipInnerObjects: t,
2781
2687
  withoutSave: a
2782
2688
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2783
- canvas: r,
2784
- historyManager: n
2785
- } = this.editor, i = e || r.getActiveObject();
2786
- if (!(!i || i.locked)) {
2787
- var s = {
2689
+ canvas: n,
2690
+ historyManager: i
2691
+ } = this.editor, s = e || n.getActiveObject();
2692
+ if (!(!s || s.locked)) {
2693
+ var r = {
2788
2694
  lockMovementX: !0,
2789
2695
  lockMovementY: !0,
2790
2696
  lockRotation: !0,
@@ -2794,12 +2700,12 @@ class bt {
2794
2700
  lockSkewingY: !0,
2795
2701
  locked: !0
2796
2702
  };
2797
- i.set(s);
2798
- var c = !t && ["activeselection", "group"].includes(i.type);
2799
- c && i.getObjects().forEach((u) => {
2800
- u.set(s);
2801
- }), r.renderAll(), a || n.saveState(), r.fire("editor:object-locked", {
2802
- object: i,
2703
+ s.set(r);
2704
+ var c = !t && ["activeselection", "group"].includes(s.type);
2705
+ c && s.getObjects().forEach((u) => {
2706
+ u.set(r);
2707
+ }), n.renderAll(), a || i.saveState(), n.fire("editor:object-locked", {
2708
+ object: s,
2803
2709
  skipInnerObjects: t,
2804
2710
  withoutSave: a
2805
2711
  });
@@ -2819,10 +2725,10 @@ class bt {
2819
2725
  withoutSave: t
2820
2726
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2821
2727
  canvas: a,
2822
- historyManager: r
2823
- } = this.editor, n = e || a.getActiveObject();
2824
- if (n) {
2825
- var i = {
2728
+ historyManager: n
2729
+ } = this.editor, i = e || a.getActiveObject();
2730
+ if (i) {
2731
+ var s = {
2826
2732
  lockMovementX: !1,
2827
2733
  lockMovementY: !1,
2828
2734
  lockRotation: !1,
@@ -2832,10 +2738,10 @@ class bt {
2832
2738
  lockSkewingY: !1,
2833
2739
  locked: !1
2834
2740
  };
2835
- n.set(i), ["activeselection", "group"].includes(n.type) && n.getObjects().forEach((s) => {
2836
- s.set(i);
2837
- }), a.renderAll(), t || r.saveState(), a.fire("editor:object-unlocked", {
2838
- object: n,
2741
+ i.set(s), ["activeselection", "group"].includes(i.type) && i.getObjects().forEach((r) => {
2742
+ r.set(s);
2743
+ }), a.renderAll(), t || n.saveState(), a.fire("editor:object-unlocked", {
2744
+ object: i,
2839
2745
  withoutSave: t
2840
2746
  });
2841
2747
  }
@@ -2865,15 +2771,15 @@ class It {
2865
2771
  withoutSave: t
2866
2772
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2867
2773
  canvas: a,
2868
- historyManager: r
2774
+ historyManager: n
2869
2775
  } = this.editor;
2870
- r.suspendHistory();
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,
2876
- group: s,
2776
+ n.suspendHistory();
2777
+ var i = e || a.getActiveObject();
2778
+ if (i && i.type === "activeselection") {
2779
+ var s = i.getObjects(), r = new ze(s);
2780
+ s.forEach((c) => a.remove(c)), r.set("id", "".concat(r.type, "-").concat(A())), a.add(r), a.setActiveObject(r), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:objects-grouped", {
2781
+ object: i,
2782
+ group: r,
2877
2783
  withoutSave: t
2878
2784
  });
2879
2785
  }
@@ -2891,19 +2797,19 @@ class It {
2891
2797
  withoutSave: t
2892
2798
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2893
2799
  canvas: a,
2894
- historyManager: r
2800
+ historyManager: n
2895
2801
  } = this.editor;
2896
- r.suspendHistory();
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, {
2802
+ n.suspendHistory();
2803
+ var i = e || a.getActiveObject();
2804
+ if (!(!i || i.type !== "group")) {
2805
+ var s = i.removeAll();
2806
+ a.remove(i), s.forEach((c) => a.add(c));
2807
+ var r = new T(s, {
2902
2808
  canvas: a
2903
2809
  });
2904
- a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-ungrouped", {
2905
- object: n,
2906
- selection: s,
2810
+ a.setActiveObject(r), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:objects-ungrouped", {
2811
+ object: i,
2812
+ selection: r,
2907
2813
  withoutSave: t
2908
2814
  });
2909
2815
  }
@@ -2931,15 +2837,15 @@ class At {
2931
2837
  objectLockManager: a
2932
2838
  } = this.editor;
2933
2839
  e.discardActiveObject();
2934
- var r = t.getObjects(), n = r.some((s) => s.locked), i = r.length > 1 ? new R(t.getObjects(), {
2840
+ var n = t.getObjects(), i = n.some((r) => r.locked), s = n.length > 1 ? new T(t.getObjects(), {
2935
2841
  canvas: e
2936
- }) : r[0];
2937
- n && a.lockObject({
2938
- object: i,
2842
+ }) : n[0];
2843
+ i && a.lockObject({
2844
+ object: s,
2939
2845
  skipInnerObjects: !0,
2940
2846
  withoutSave: !0
2941
- }), e.setActiveObject(i), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
2942
- selected: i
2847
+ }), e.setActiveObject(s), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
2848
+ selected: s
2943
2849
  });
2944
2850
  }
2945
2851
  }
@@ -2967,22 +2873,22 @@ class St {
2967
2873
  withoutSave: t
2968
2874
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2969
2875
  canvas: a,
2970
- historyManager: r,
2971
- groupingManager: n
2972
- } = this.editor, i = (e || a.getActiveObjects()).filter((s) => !s.locked);
2973
- i != null && i.length && (r.suspendHistory(), i.forEach((s) => {
2974
- if (s.type === "group" && s.format !== "svg") {
2975
- n.ungroup(s), this.deleteSelectedObjects();
2876
+ historyManager: n,
2877
+ groupingManager: i
2878
+ } = this.editor, s = (e || a.getActiveObjects()).filter((r) => !r.locked);
2879
+ s != null && s.length && (n.suspendHistory(), s.forEach((r) => {
2880
+ if (r.type === "group" && r.format !== "svg") {
2881
+ i.ungroup(r), this.deleteSelectedObjects();
2976
2882
  return;
2977
2883
  }
2978
- a.remove(s);
2979
- }), a.discardActiveObject(), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-deleted", {
2980
- objects: i,
2884
+ a.remove(r);
2885
+ }), a.discardActiveObject(), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:objects-deleted", {
2886
+ objects: s,
2981
2887
  withoutSave: t
2982
2888
  }));
2983
2889
  }
2984
2890
  }
2985
- var Ct = {
2891
+ const Ct = {
2986
2892
  IMAGE_MANAGER: {
2987
2893
  /**
2988
2894
  * Некорректный Content-Type изображения
@@ -3012,7 +2918,7 @@ var Ct = {
3012
2918
  /**
3013
2919
  * Коды ошибок и предупреждений для ClipboardManager.
3014
2920
  */
3015
- CLIPBOARD_CODES: {
2921
+ CLIPBOARD_MANAGER: {
3016
2922
  /**
3017
2923
  * Буфер обмена не поддерживается в браузере или отсутствует HTTPS-соединение.
3018
2924
  */
@@ -3029,6 +2935,15 @@ var Ct = {
3029
2935
  * Ошибка клонирования объекта.
3030
2936
  */
3031
2937
  CLONE_FAILED: "CLONE_FAILED"
2938
+ },
2939
+ /**
2940
+ * Коды ошибок и предупреждений для CanvasManager.
2941
+ */
2942
+ CANVAS_MANAGER: {
2943
+ /**
2944
+ * Ошибка при получении активного объекта.
2945
+ */
2946
+ NO_ACTIVE_OBJECT: "NO_ACTIVE_OBJECT"
3032
2947
  }
3033
2948
  };
3034
2949
  class q {
@@ -3051,24 +2966,24 @@ class q {
3051
2966
  * @param {string} [options.message] — текст ошибки (опционально, если не передан, то используется код ошибки)
3052
2967
  * @fires editor:error
3053
2968
  */
3054
- emitError({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, data: r, message: n }) {
2969
+ emitError({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, data: n, message: i }) {
3055
2970
  if (!q.isValidErrorCode(a)) {
3056
2971
  console.warn("Неизвестный код ошибки: ", { code: a, origin: e, method: t });
3057
2972
  return;
3058
2973
  }
3059
2974
  if (!a) return;
3060
- const i = n || a;
3061
- console.error(`${e}. ${t}. ${a}. ${i}`, r);
3062
- const s = {
2975
+ const s = i || a;
2976
+ console.error(`${e}. ${t}. ${a}. ${s}`, n);
2977
+ const r = {
3063
2978
  code: a,
3064
2979
  origin: e,
3065
2980
  method: t,
3066
- message: i,
3067
- data: r
2981
+ message: s,
2982
+ data: n
3068
2983
  };
3069
2984
  this._buffer.push(C({
3070
2985
  type: "editor:error"
3071
- }, s)), this.editor.canvas.fire("editor:error", s);
2986
+ }, r)), this.editor.canvas.fire("editor:error", r);
3072
2987
  }
3073
2988
  /**
3074
2989
  * Эмитит предупреждение через fabricjs
@@ -3080,23 +2995,23 @@ class q {
3080
2995
  * @param {string} [options.message] — текст предупреждения (опционально, если не передан, то используется код предупреждения)
3081
2996
  * @fires editor:warning
3082
2997
  */
3083
- emitWarning({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, message: r, data: n }) {
2998
+ emitWarning({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, message: n, data: i }) {
3084
2999
  if (!q.isValidErrorCode(a)) {
3085
3000
  console.warn("Неизвестный код предупреждения: ", { code: a, origin: e, method: t });
3086
3001
  return;
3087
3002
  }
3088
- const i = r || a;
3089
- console.warn(`${e}. ${t}. ${a}. ${i}`, n);
3090
- const s = {
3003
+ const s = n || a;
3004
+ console.warn(`${e}. ${t}. ${a}. ${s}`, i);
3005
+ const r = {
3091
3006
  code: a,
3092
3007
  origin: e,
3093
3008
  method: t,
3094
- message: i,
3095
- data: n
3009
+ message: s,
3010
+ data: i
3096
3011
  };
3097
3012
  this._buffer.push(C({
3098
3013
  type: "editor:warning"
3099
- }, s)), this.editor.canvas.fire("editor:warning", s);
3014
+ }, r)), this.editor.canvas.fire("editor:warning", r);
3100
3015
  }
3101
3016
  static isValidErrorCode(e) {
3102
3017
  return e ? Object.values(Ct).some((t) => Object.values(t).includes(e)) : !1;
@@ -3117,20 +3032,20 @@ class de {
3117
3032
  editorContainerWidth: e,
3118
3033
  editorContainerHeight: t,
3119
3034
  canvasWrapperWidth: a,
3120
- canvasWrapperHeight: r,
3121
- canvasCSSWidth: n,
3122
- canvasCSSHeight: i,
3123
- initialImage: s,
3035
+ canvasWrapperHeight: n,
3036
+ canvasCSSWidth: i,
3037
+ canvasCSSHeight: s,
3038
+ initialImage: r,
3124
3039
  initialStateJSON: c,
3125
3040
  scaleType: u,
3126
3041
  _onReadyCallback: l
3127
3042
  } = this.options;
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) {
3043
+ 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 bt({ editor: this }), this.objectLockManager = new pt({ 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(n), this.canvasManager.setCanvasCSSWidth(i), this.canvasManager.setCanvasCSSHeight(s), r != null && r.source) {
3129
3044
  const {
3130
3045
  source: d,
3131
3046
  scale: h = `image-${u}`,
3132
3047
  withoutSave: g = !0
3133
- } = s;
3048
+ } = r;
3134
3049
  yield this.imageManager.importImage({ source: d, scale: h, withoutSave: g });
3135
3050
  } else
3136
3051
  this.canvasManager.setDefaultScale({ withoutSave: !0 });
@@ -3189,7 +3104,7 @@ class de {
3189
3104
  const e = document.createElement("canvas");
3190
3105
  e.width = 20, e.height = 20;
3191
3106
  const t = e.getContext("2d");
3192
- return t.fillStyle = "#ddd", t.fillRect(0, 0, 40, 40), t.fillStyle = "#ccc", t.fillRect(0, 0, 10, 10), t.fillRect(10, 10, 10, 10), new Ye({
3107
+ return t.fillStyle = "#ddd", t.fillRect(0, 0, 40, 40), t.fillStyle = "#ccc", t.fillRect(0, 0, 10, 10), t.fillRect(10, 10, 10, 10), new _e({
3193
3108
  source: e,
3194
3109
  repeat: "repeat"
3195
3110
  });
@@ -3283,18 +3198,18 @@ const Dt = {
3283
3198
  deleteObjectsByHotkey: !0,
3284
3199
  resetObjectFitByDoubleClick: !0
3285
3200
  };
3286
- function Et(o, e = {}) {
3201
+ function wt(o, e = {}) {
3287
3202
  const t = C(C({}, Dt), e), a = document.getElementById(o);
3288
3203
  if (!a)
3289
3204
  return Promise.reject(new Error(`Контейнер с ID "${o}" не найден.`));
3290
- const r = document.createElement("canvas");
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;
3205
+ const n = document.createElement("canvas");
3206
+ return n.id = `${o}-canvas`, a.appendChild(n), t.editorContainer = a, new Promise((i) => {
3207
+ t._onReadyCallback = i;
3208
+ const s = new de(n.id, t);
3209
+ window[o] = s;
3295
3210
  });
3296
3211
  }
3297
3212
  export {
3298
- Et as default
3213
+ wt as default
3299
3214
  };
3300
3215
  //# sourceMappingURL=main.js.map