@anu3ev/fabric-image-editor 0.1.10 → 0.1.12

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 +467 -444
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -1,30 +1,30 @@
1
- import { ActiveSelection as Z, util as z, controlsUtils as Oe, InteractiveFabricObject as Te, Pattern as Ee, loadSVGFromURL as ke, FabricImage as de, Point as xe, Rect as Be, Circle as Ze, Triangle as ze, Group as Ue, Canvas as Pe } from "fabric";
1
+ import { ActiveSelection as Z, util as z, controlsUtils as Oe, InteractiveFabricObject as Te, loadSVGFromURL as Ee, FabricImage as de, Point as ke, Rect as xe, Circle as Be, Triangle as Ze, Group as ze, Pattern as Ue, Canvas as Pe } from "fabric";
2
2
  import { create as Ye } from "jsondiffpatch";
3
3
  var He = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", I = function() {
4
4
  for (var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 21, t = "", a = crypto.getRandomValues(new Uint8Array(e |= 0)); e--; )
5
5
  t += He[a[e] & 63];
6
6
  return t;
7
7
  };
8
- function le(i, e, t, a, r, n, o) {
8
+ function le(o, e, t, a, r, n, i) {
9
9
  try {
10
- var s = i[n](o), c = s.value;
10
+ var s = o[n](i), c = s.value;
11
11
  } catch (u) {
12
12
  return void t(u);
13
13
  }
14
14
  s.done ? e(c) : Promise.resolve(c).then(a, r);
15
15
  }
16
- function We(i) {
16
+ function We(o) {
17
17
  return function() {
18
18
  var e = this, t = arguments;
19
19
  return new Promise(function(a, r) {
20
- var n = i.apply(e, t);
21
- function o(c) {
22
- le(n, a, r, o, s, "next", c);
20
+ var n = o.apply(e, t);
21
+ function i(c) {
22
+ le(n, a, r, i, s, "next", c);
23
23
  }
24
24
  function s(c) {
25
- le(n, a, r, o, s, "throw", c);
25
+ le(n, a, r, i, s, "throw", c);
26
26
  }
27
- o(void 0);
27
+ i(void 0);
28
28
  });
29
29
  };
30
30
  }
@@ -61,7 +61,7 @@ class B {
61
61
  mouseWheelZooming: a,
62
62
  bringToFrontOnSelection: r,
63
63
  copyObjectsByHotkey: n,
64
- pasteImageFromClipboard: o,
64
+ pasteImageFromClipboard: i,
65
65
  undoRedoByHotKeys: s,
66
66
  selectAllByHotkey: c,
67
67
  deleteObjectsByHotkey: u,
@@ -71,7 +71,7 @@ class B {
71
71
  capture: !0
72
72
  }), n && document.addEventListener("keydown", this.handleCopyEventBound, {
73
73
  capture: !0
74
- }), o && document.addEventListener("paste", this.handlePasteEventBound, {
74
+ }), i && document.addEventListener("paste", this.handlePasteEventBound, {
75
75
  capture: !0
76
76
  }), s && (document.addEventListener("keydown", this.handleUndoRedoEventBound, {
77
77
  capture: !0
@@ -103,10 +103,10 @@ class B {
103
103
  this.canvas.setActiveObject(n[0]);
104
104
  return;
105
105
  }
106
- var o = new Z(n, {
106
+ var i = new Z(n, {
107
107
  canvas: this.canvas
108
108
  });
109
- this.canvas.setActiveObject(o), this.canvas.requestRenderAll();
109
+ this.canvas.setActiveObject(i), this.canvas.requestRenderAll();
110
110
  }
111
111
  }
112
112
  }
@@ -186,14 +186,14 @@ class B {
186
186
  items: r
187
187
  } = a, n = r[r.length - 1];
188
188
  if (n.type.indexOf("image") !== -1) {
189
- var o = n.getAsFile();
190
- if (!o) return;
189
+ var i = n.getAsFile();
190
+ if (!i) return;
191
191
  var s = new FileReader();
192
192
  s.onload = (h) => {
193
193
  this.editor.imageManager.importImage({
194
194
  source: h.target.result
195
195
  });
196
- }, s.readAsDataURL(o);
196
+ }, s.readAsDataURL(i);
197
197
  return;
198
198
  }
199
199
  var c = a.getData("text/html");
@@ -223,9 +223,9 @@ class B {
223
223
  ctrlKey: a,
224
224
  metaKey: r,
225
225
  code: n,
226
- repeat: o
226
+ repeat: i
227
227
  } = e;
228
- !a && !r || o || t.isUndoRedoKeyPressed || (n === "KeyZ" ? (e.preventDefault(), t.isUndoRedoKeyPressed = !0, yield t.editor.historyManager.undo()) : n === "KeyY" && (e.preventDefault(), t.isUndoRedoKeyPressed = !0, yield t.editor.historyManager.redo()));
228
+ !a && !r || i || t.isUndoRedoKeyPressed || (n === "KeyZ" ? (e.preventDefault(), t.isUndoRedoKeyPressed = !0, yield t.editor.historyManager.undo()) : n === "KeyY" && (e.preventDefault(), t.isUndoRedoKeyPressed = !0, yield t.editor.historyManager.redo()));
229
229
  })();
230
230
  }
231
231
  /**
@@ -354,8 +354,8 @@ class B {
354
354
  static debounce(e, t) {
355
355
  var a = null;
356
356
  return function() {
357
- for (var r = arguments.length, n = new Array(r), o = 0; o < r; o++)
358
- n[o] = arguments[o];
357
+ for (var r = arguments.length, n = new Array(r), i = 0; i < r; i++)
358
+ n[i] = arguments[i];
359
359
  var s = this;
360
360
  clearTimeout(a), a = setTimeout(() => {
361
361
  e.apply(s, n);
@@ -409,9 +409,9 @@ class Re {
409
409
  requestId: a,
410
410
  success: r,
411
411
  data: n,
412
- error: o
412
+ error: i
413
413
  } = t, s = this._callbacks.get(a);
414
- s && (r ? s.resolve(n) : s.reject(new Error(o)), this._callbacks.delete(a));
414
+ s && (r ? s.resolve(n) : s.reject(new Error(i)), this._callbacks.delete(a));
415
415
  }
416
416
  /**
417
417
  * Универсальный метод отправки команды в воркер
@@ -422,10 +422,10 @@ class Re {
422
422
  */
423
423
  post(e, t) {
424
424
  var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [], r = "".concat(e, ":").concat(I(8));
425
- return new Promise((n, o) => {
425
+ return new Promise((n, i) => {
426
426
  this._callbacks.set(r, {
427
427
  resolve: n,
428
- reject: o
428
+ reject: i
429
429
  }), this.worker.postMessage({
430
430
  action: e,
431
431
  payload: t,
@@ -440,90 +440,90 @@ class Re {
440
440
  this.worker.terminate();
441
441
  }
442
442
  }
443
- var p = 12, Ve = 2, X = 8, Q = 20, Fe = 100, J = 20, K = 8, Ge = 100, $ = 32, q = 1, Xe = "#2B2D33", ee = "#3D8BF4", te = "#FFFFFF";
444
- function U(i, e, t, a, r) {
445
- var n = p, o = Ve;
446
- i.save(), i.translate(e, t), i.rotate(z.degreesToRadians(r.angle)), i.fillStyle = te, i.strokeStyle = ee, i.lineWidth = q, i.beginPath(), i.roundRect(-12 / 2, -12 / 2, n, n, o), i.fill(), i.stroke(), i.restore();
443
+ var b = 12, Ve = 2, G = 8, X = 20, Fe = 100, Q = 20, J = 8, Ge = 100, K = 32, $ = 1, Xe = "#2B2D33", q = "#3D8BF4", ee = "#FFFFFF";
444
+ function U(o, e, t, a, r) {
445
+ var n = b, i = Ve;
446
+ o.save(), o.translate(e, t), o.rotate(z.degreesToRadians(r.angle)), o.fillStyle = ee, o.strokeStyle = q, o.lineWidth = $, o.beginPath(), o.roundRect(-12 / 2, -12 / 2, n, n, i), o.fill(), o.stroke(), o.restore();
447
447
  }
448
- function he(i, e, t, a, r) {
449
- var n = X, o = Q, s = Fe;
450
- i.save(), i.translate(e, t), i.rotate(z.degreesToRadians(r.angle)), i.fillStyle = te, i.strokeStyle = ee, i.lineWidth = q, i.beginPath(), i.roundRect(-8 / 2, -20 / 2, n, o, s), i.fill(), i.stroke(), i.restore();
448
+ function he(o, e, t, a, r) {
449
+ var n = G, i = X, s = Fe;
450
+ o.save(), o.translate(e, t), o.rotate(z.degreesToRadians(r.angle)), o.fillStyle = ee, o.strokeStyle = q, o.lineWidth = $, o.beginPath(), o.roundRect(-8 / 2, -20 / 2, n, i, s), o.fill(), o.stroke(), o.restore();
451
451
  }
452
- function ge(i, e, t, a, r) {
453
- var n = J, o = K, s = Ge;
454
- i.save(), i.translate(e, t), i.rotate(z.degreesToRadians(r.angle)), i.fillStyle = te, i.strokeStyle = ee, i.lineWidth = q, i.beginPath(), i.roundRect(-20 / 2, -8 / 2, n, o, s), i.fill(), i.stroke(), i.restore();
452
+ function ge(o, e, t, a, r) {
453
+ var n = Q, i = J, s = Ge;
454
+ o.save(), o.translate(e, t), o.rotate(z.degreesToRadians(r.angle)), o.fillStyle = ee, o.strokeStyle = q, o.lineWidth = $, o.beginPath(), o.roundRect(-20 / 2, -8 / 2, n, i, s), o.fill(), o.stroke(), o.restore();
455
455
  }
456
456
  var Qe = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", Ae = new Image();
457
457
  Ae.src = Qe;
458
- function Je(i, e, t, a, r) {
459
- var n = $, o = n / 2;
460
- i.save(), i.translate(e, t), i.rotate(z.degreesToRadians(r.angle)), i.fillStyle = Xe, i.beginPath(), i.arc(0, 0, o, 0, 2 * Math.PI), i.fill(), i.drawImage(Ae, -16 / 2, -16 / 2, o, o), i.restore();
458
+ function Je(o, e, t, a, r) {
459
+ var n = K, i = n / 2;
460
+ o.save(), o.translate(e, t), o.rotate(z.degreesToRadians(r.angle)), o.fillStyle = Xe, o.beginPath(), o.arc(0, 0, i, 0, 2 * Math.PI), o.fill(), o.drawImage(Ae, -16 / 2, -16 / 2, i, i), o.restore();
461
461
  }
462
462
  var Ke = {
463
463
  // Угловые точки
464
464
  tl: {
465
465
  render: U,
466
- sizeX: p,
467
- sizeY: p,
466
+ sizeX: b,
467
+ sizeY: b,
468
468
  offsetX: 0,
469
469
  offsetY: 0
470
470
  },
471
471
  tr: {
472
472
  render: U,
473
- sizeX: p,
474
- sizeY: p,
473
+ sizeX: b,
474
+ sizeY: b,
475
475
  offsetX: 0,
476
476
  offsetY: 0
477
477
  },
478
478
  bl: {
479
479
  render: U,
480
- sizeX: p,
481
- sizeY: p,
480
+ sizeX: b,
481
+ sizeY: b,
482
482
  offsetX: 0,
483
483
  offsetY: 0
484
484
  },
485
485
  br: {
486
486
  render: U,
487
- sizeX: p,
488
- sizeY: p,
487
+ sizeX: b,
488
+ sizeY: b,
489
489
  offsetX: 0,
490
490
  offsetY: 0
491
491
  },
492
492
  // Середина вертикалей
493
493
  ml: {
494
494
  render: he,
495
- sizeX: X,
496
- sizeY: Q,
495
+ sizeX: G,
496
+ sizeY: X,
497
497
  offsetX: 0,
498
498
  offsetY: 0
499
499
  },
500
500
  mr: {
501
501
  render: he,
502
- sizeX: X,
503
- sizeY: Q,
502
+ sizeX: G,
503
+ sizeY: X,
504
504
  offsetX: 0,
505
505
  offsetY: 0
506
506
  },
507
507
  // Середина горизонталей
508
508
  mt: {
509
509
  render: ge,
510
- sizeX: J,
511
- sizeY: K,
510
+ sizeX: Q,
511
+ sizeY: J,
512
512
  offsetX: 0,
513
513
  offsetY: 0
514
514
  },
515
515
  mb: {
516
516
  render: ge,
517
- sizeX: J,
518
- sizeY: K,
517
+ sizeX: Q,
518
+ sizeY: J,
519
519
  offsetX: 0,
520
520
  offsetY: 0
521
521
  },
522
522
  // Специальный «rotate» контрол
523
523
  mtr: {
524
524
  render: Je,
525
- sizeX: $,
526
- sizeY: $,
525
+ sizeX: K,
526
+ sizeY: K,
527
527
  offsetX: 0,
528
528
  offsetY: -32
529
529
  }
@@ -544,26 +544,26 @@ class $e {
544
544
  }
545
545
  }
546
546
  var qe = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNi44NzUgMi41YS42MjUuNjI1IDAgMCAwLS42MjUuNjI0VjYuMjVIMy4xMjVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2MTBjMCAuMzQ1LjI4LjYyNS42MjUuNjI1aDEwYy4zNDUgMCAuNjI1LS4yOC42MjUtLjYyNXYtMy4xMjZoMy4xMjVjLjM0NSAwIC42MjUtLjI4LjYyNS0uNjI1di0xMGEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTEwWm02Ljg3NSAxMGgyLjVWMy43NUg3LjV2Mi41aDUuNjI1Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NS42MjRabS0xMCAzLjc1VjcuNWg4Ljc1djguNzVIMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", et = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDcuNWMwLS42OS41Ni0xLjI1IDEuMjUtMS4yNWgxMi41Yy42OSAwIDEuMjUuNTYgMS4yNSAxLjI1djguNzVjMCAuNjktLjU2IDEuMjUtMS4yNSAxLjI1SDMuNzVjLS42OSAwLTEuMjUtLjU2LTEuMjUtMS4yNVY3LjVabTEzLjc1IDBIMy43NXY4Ljc1aDEyLjVWNy41WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMS44NzVhMi4xODggMi4xODggMCAwIDAtMi4xODggMi4xODh2Mi44MTJhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyYTMuNDM3IDMuNDM3IDAgMSAxIDYuODc1IDB2Mi44MTNhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyQTIuMTg4IDIuMTg4IDAgMCAwIDEwIDEuODc2WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEwIDEyLjgxM2EuOTM3LjkzNyAwIDEgMCAwLTEuODc1LjkzNy45MzcgMCAwIDAgMCAxLjg3NFoiLz48L3N2Zz4=", tt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE2LjI1IDYuMjVINy41VjQuMzc1YTIuNSAyLjUgMCAwIDEgMi41LTIuNWMxLjIgMCAyLjI4MS44NiAyLjUxMiAyYS42MjUuNjI1IDAgMCAwIDEuMjI2LS4yNWMtLjM1NC0xLjczOC0xLjkyNS0zLTMuNzM4LTNhMy43NTQgMy43NTQgMCAwIDAtMy43NSAzLjc1VjYuMjVoLTIuNUExLjI1IDEuMjUgMCAwIDAgMi41IDcuNXY4Ljc1YTEuMjUgMS4yNSAwIDAgMCAxLjI1IDEuMjVoMTIuNWExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjcuNWExLjI1IDEuMjUgMCAwIDAtMS4yNS0xLjI1Wm0wIDEwSDMuNzVWNy41aDEyLjV2OC43NVptLTUuMzEzLTQuMzc1YS45MzcuOTM3IDAgMSAxLTEuODc0IDAgLjkzNy45MzcgMCAwIDEgMS44NzQgMFoiLz48L3N2Zz4K", at = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTIuNSA4LjEyNSAxMCAxMi41bDcuNS00LjM3NUwxMCAzLjc1IDIuNSA4LjEyNVoiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjY4NSAzLjIxYS42MjUuNjI1IDAgMCAxIC42MyAwbDcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOGw3LjUtNC4zNzVaTTMuNzQgOC4xMjUgMTAgMTEuNzc2bDYuMjYtMy42NTFMMTAgNC40NzQgMy43NCA4LjEyNVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA5LjQ2YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDExLjc3NmwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA5LjQ2Wm0tMS42NiAyLjQxNUwxMCAxNS41MjZsNi4yNi0zLjY1MS0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNi0xLjk3NSAxLjE1MVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", rt = "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=", ot = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0VDNEU0MCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4xMjUgMS4yNUExLjg3NSAxLjg3NSAwIDAgMCA2LjI1IDMuMTI1di42MjVIMy4xMjVhLjYyNS42MjUgMCAwIDAgMCAxLjI1aC42MjV2MTEuMjVBMS4yNSAxLjI1IDAgMCAwIDUgMTcuNWgxMGExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjVoLjYyNWEuNjI1LjYyNSAwIDAgMCAwLTEuMjVIMTMuNzV2LS42MjVhMS44NzUgMS44NzUgMCAwIDAtMS44NzUtMS44NzVoLTMuNzVabTQuMzc1IDIuNXYtLjYyNWEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2LjYyNWg1Wk01IDE2LjI1VjVoMTB2MTEuMjVINVpNOC4xMjUgNy41Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NWEuNjI1LjYyNSAwIDEgMS0xLjI1IDB2LTVjMC0uMzQ1LjI4LS42MjUuNjI1LS42MjVabTQuMzc1IDUuNjI1di01YS42MjUuNjI1IDAgMCAwLTEuMjUgMHY1YS42MjUuNjI1IDAgMSAwIDEuMjUgMFoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==";
547
- function ve(i, e, t, a, r, n, o) {
547
+ function ve(o, e, t, a, r, n, i) {
548
548
  try {
549
- var s = i[n](o), c = s.value;
549
+ var s = o[n](i), c = s.value;
550
550
  } catch (u) {
551
551
  return void t(u);
552
552
  }
553
553
  s.done ? e(c) : Promise.resolve(c).then(a, r);
554
554
  }
555
- function st(i) {
555
+ function st(o) {
556
556
  return function() {
557
557
  var e = this, t = arguments;
558
558
  return new Promise(function(a, r) {
559
- var n = i.apply(e, t);
560
- function o(c) {
561
- ve(n, a, r, o, s, "next", c);
559
+ var n = o.apply(e, t);
560
+ function i(c) {
561
+ ve(n, a, r, i, s, "next", c);
562
562
  }
563
563
  function s(c) {
564
- ve(n, a, r, o, s, "throw", c);
564
+ ve(n, a, r, i, s, "throw", c);
565
565
  }
566
- o(void 0);
566
+ i(void 0);
567
567
  });
568
568
  };
569
569
  }
@@ -637,74 +637,74 @@ const E = {
637
637
  },
638
638
  handlers: {
639
639
  copyPaste: function() {
640
- var i = st(function* (t) {
640
+ var o = st(function* (t) {
641
641
  yield t.clipboardManager.copy(), yield t.clipboardManager.paste();
642
642
  });
643
643
  function e(t) {
644
- return i.apply(this, arguments);
644
+ return o.apply(this, arguments);
645
645
  }
646
646
  return e;
647
647
  }(),
648
- delete: (i) => {
649
- i.deletionManager.deleteSelectedObjects();
648
+ delete: (o) => {
649
+ o.deletionManager.deleteSelectedObjects();
650
650
  },
651
- lock: (i) => {
652
- i.objectLockManager.lockObject();
651
+ lock: (o) => {
652
+ o.objectLockManager.lockObject();
653
653
  },
654
- unlock: (i) => {
655
- i.objectLockManager.unlockObject();
654
+ unlock: (o) => {
655
+ o.objectLockManager.unlockObject();
656
656
  },
657
- bringForward: (i) => {
658
- i.layerManager.bringForward();
657
+ bringForward: (o) => {
658
+ o.layerManager.bringForward();
659
659
  },
660
- bringToFront: (i) => {
661
- i.layerManager.bringToFront();
660
+ bringToFront: (o) => {
661
+ o.layerManager.bringToFront();
662
662
  },
663
- sendToBack: (i) => {
664
- i.layerManager.sendToBack();
663
+ sendToBack: (o) => {
664
+ o.layerManager.sendToBack();
665
665
  },
666
- sendBackwards: (i) => {
667
- i.layerManager.sendBackwards();
666
+ sendBackwards: (o) => {
667
+ o.layerManager.sendBackwards();
668
668
  }
669
669
  }
670
670
  };
671
- function me(i, e) {
672
- var t = Object.keys(i);
671
+ function me(o, e) {
672
+ var t = Object.keys(o);
673
673
  if (Object.getOwnPropertySymbols) {
674
- var a = Object.getOwnPropertySymbols(i);
674
+ var a = Object.getOwnPropertySymbols(o);
675
675
  e && (a = a.filter(function(r) {
676
- return Object.getOwnPropertyDescriptor(i, r).enumerable;
676
+ return Object.getOwnPropertyDescriptor(o, r).enumerable;
677
677
  })), t.push.apply(t, a);
678
678
  }
679
679
  return t;
680
680
  }
681
- function M(i) {
681
+ function M(o) {
682
682
  for (var e = 1; e < arguments.length; e++) {
683
683
  var t = arguments[e] != null ? arguments[e] : {};
684
684
  e % 2 ? me(Object(t), !0).forEach(function(a) {
685
- ct(i, a, t[a]);
686
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(i, Object.getOwnPropertyDescriptors(t)) : me(Object(t)).forEach(function(a) {
687
- Object.defineProperty(i, a, Object.getOwnPropertyDescriptor(t, a));
685
+ ct(o, a, t[a]);
686
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : me(Object(t)).forEach(function(a) {
687
+ Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
688
688
  });
689
689
  }
690
- return i;
690
+ return o;
691
691
  }
692
- function ct(i, e, t) {
693
- return (e = ut(e)) in i ? Object.defineProperty(i, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : i[e] = t, i;
692
+ function ct(o, e, t) {
693
+ return (e = ut(e)) in o ? Object.defineProperty(o, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : o[e] = t, o;
694
694
  }
695
- function ut(i) {
696
- var e = dt(i, "string");
695
+ function ut(o) {
696
+ var e = dt(o, "string");
697
697
  return typeof e == "symbol" ? e : e + "";
698
698
  }
699
- function dt(i, e) {
700
- if (typeof i != "object" || !i) return i;
701
- var t = i[Symbol.toPrimitive];
699
+ function dt(o, e) {
700
+ if (typeof o != "object" || !o) return o;
701
+ var t = o[Symbol.toPrimitive];
702
702
  if (t !== void 0) {
703
- var a = t.call(i, e);
703
+ var a = t.call(o, e);
704
704
  if (typeof a != "object") return a;
705
705
  throw new TypeError("@@toPrimitive must return a primitive value.");
706
706
  }
707
- return (e === "string" ? String : Number)(i);
707
+ return (e === "string" ? String : Number)(o);
708
708
  }
709
709
  class lt {
710
710
  /**
@@ -756,14 +756,14 @@ class lt {
756
756
  this.el.innerHTML = "";
757
757
  var a = function() {
758
758
  var {
759
- name: o,
759
+ name: i,
760
760
  handle: s
761
761
  } = r, {
762
762
  icons: c,
763
763
  btnStyle: u,
764
764
  handlers: l
765
765
  } = t.config, d = document.createElement("button");
766
- d.innerHTML = c[s] ? '<img src="'.concat(c[s], '" title="').concat(o, '" />') : o, Object.assign(d.style, u), d.onclick = () => {
766
+ d.innerHTML = c[s] ? '<img src="'.concat(c[s], '" title="').concat(i, '" />') : i, Object.assign(d.style, u), d.onclick = () => {
767
767
  var h;
768
768
  return (h = l[s]) === null || h === void 0 ? void 0 : h.call(l, t.editor);
769
769
  }, t.el.appendChild(d);
@@ -838,12 +838,12 @@ class lt {
838
838
  canvas: r
839
839
  } = this;
840
840
  e.setCoords();
841
- var n = r.getZoom(), [, , , , o, s] = r.viewportTransform, {
841
+ var n = r.getZoom(), [, , , , i, s] = r.viewportTransform, {
842
842
  x: c
843
843
  } = e.getCenterPoint(), {
844
844
  top: u,
845
845
  height: l
846
- } = e.getBoundingRect(!1, !0), d = c * n + o, h = d - t.offsetWidth / 2, g = (u + l) * n + s + a.offsetTop;
846
+ } = e.getBoundingRect(!1, !0), d = c * n + i, h = d - t.offsetWidth / 2, g = (u + l) * n + s + a.offsetTop;
847
847
  Object.assign(t.style, {
848
848
  left: "".concat(h, "px"),
849
849
  top: "".concat(g, "px"),
@@ -858,26 +858,26 @@ class lt {
858
858
  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();
859
859
  }
860
860
  }
861
- function fe(i, e, t, a, r, n, o) {
861
+ function fe(o, e, t, a, r, n, i) {
862
862
  try {
863
- var s = i[n](o), c = s.value;
863
+ var s = o[n](i), c = s.value;
864
864
  } catch (u) {
865
865
  return void t(u);
866
866
  }
867
867
  s.done ? e(c) : Promise.resolve(c).then(a, r);
868
868
  }
869
- function V(i) {
869
+ function R(o) {
870
870
  return function() {
871
871
  var e = this, t = arguments;
872
872
  return new Promise(function(a, r) {
873
- var n = i.apply(e, t);
874
- function o(c) {
875
- fe(n, a, r, o, s, "next", c);
873
+ var n = o.apply(e, t);
874
+ function i(c) {
875
+ fe(n, a, r, i, s, "next", c);
876
876
  }
877
877
  function s(c) {
878
- fe(n, a, r, o, s, "throw", c);
878
+ fe(n, a, r, i, s, "throw", c);
879
879
  }
880
- o(void 0);
880
+ i(void 0);
881
881
  });
882
882
  };
883
883
  }
@@ -890,7 +890,7 @@ class ht {
890
890
  var {
891
891
  editor: t
892
892
  } = e;
893
- this.editor = t, this.canvas = t.canvas, this._historySuspendCount = 0, this.baseState = null, this.patches = [], this.currentIndex = 0, this.maxHistoryLength = t.options.maxHistoryLength, this._createDiffPatcher();
893
+ this.editor = t, this.canvas = t.canvas, this._historySuspendCount = 0, this.baseState = null, this.patches = [], this.currentIndex = 0, this.maxHistoryLength = t.options.maxHistoryLength, this.totalChangesCount = 0, this.baseStateChangesCount = 0, this._createDiffPatcher();
894
894
  }
895
895
  /** Проверка, нужно ли пропускать сохранение истории */
896
896
  get skipHistory() {
@@ -918,6 +918,20 @@ class ht {
918
918
  resumeHistory() {
919
919
  this._historySuspendCount = Math.max(0, this._historySuspendCount - 1);
920
920
  }
921
+ /**
922
+ * Проверяет, есть ли в редакторе несохранённые изменения
923
+ * @returns {boolean}
924
+ */
925
+ hasUnsavedChanges() {
926
+ return this.totalChangesCount > 0;
927
+ }
928
+ /**
929
+ * Получает текущую позицию в общей истории изменений
930
+ * @returns {number}
931
+ */
932
+ getCurrentChangePosition() {
933
+ return this.baseStateChangesCount + this.currentIndex;
934
+ }
921
935
  /**
922
936
  * Получаем полное состояние, применяя все диффы к базовому состоянию.
923
937
  */
@@ -946,7 +960,7 @@ class ht {
946
960
  console.log("Нет изменений для сохранения.");
947
961
  return;
948
962
  }
949
- console.log("baseState", this.baseState), this.currentIndex < this.patches.length && this.patches.splice(this.currentIndex), console.log("diff", a), this.patches.push(a), this.currentIndex += 1, this.patches.length > this.maxHistoryLength && (this.baseState = this.diffPatcher.patch(this.baseState, this.patches[0]), this.patches.shift(), this.currentIndex -= 1), console.log("Состояние сохранено. Текущий индекс истории:", this.currentIndex);
963
+ console.log("baseState", this.baseState), this.currentIndex < this.patches.length && this.patches.splice(this.currentIndex), console.log("diff", a), this.totalChangesCount += 1, this.patches.push(a), this.currentIndex += 1, this.patches.length > this.maxHistoryLength && (this.baseState = this.diffPatcher.patch(this.baseState, this.patches[0]), this.patches.shift(), this.currentIndex -= 1, this.baseStateChangesCount += 1), console.log("Состояние сохранено. Текущий индекс истории:", this.currentIndex);
950
964
  }
951
965
  }
952
966
  /**
@@ -956,7 +970,7 @@ class ht {
956
970
  */
957
971
  loadStateFromFullState(e) {
958
972
  var t = this;
959
- return V(function* () {
973
+ return R(function* () {
960
974
  if (e) {
961
975
  console.log("loadStateFromFullState fullState", e), yield t.canvas.loadFromJSON(e);
962
976
  var a = t.canvas.getObjects().find((n) => n.id === "montage-area");
@@ -972,7 +986,7 @@ class ht {
972
986
  */
973
987
  undo() {
974
988
  var e = this;
975
- return V(function* () {
989
+ return R(function* () {
976
990
  if (!e.skipHistory) {
977
991
  if (e.currentIndex <= 0) {
978
992
  console.log("Нет предыдущих состояний для отмены.");
@@ -980,7 +994,7 @@ class ht {
980
994
  }
981
995
  e.suspendHistory();
982
996
  try {
983
- e.currentIndex -= 1;
997
+ e.currentIndex -= 1, e.totalChangesCount -= 1;
984
998
  var t = e.getFullState();
985
999
  yield e.loadStateFromFullState(t), console.log("Undo выполнен. Текущий индекс истории:", e.currentIndex), e.canvas.fire("editor:undo");
986
1000
  } catch (a) {
@@ -999,7 +1013,7 @@ class ht {
999
1013
  */
1000
1014
  redo() {
1001
1015
  var e = this;
1002
- return V(function* () {
1016
+ return R(function* () {
1003
1017
  if (!e.skipHistory) {
1004
1018
  if (e.currentIndex >= e.patches.length) {
1005
1019
  console.log("Нет состояний для повтора.");
@@ -1007,7 +1021,7 @@ class ht {
1007
1021
  }
1008
1022
  e.suspendHistory();
1009
1023
  try {
1010
- e.currentIndex += 1;
1024
+ e.currentIndex += 1, e.totalChangesCount += 1;
1011
1025
  var t = e.getFullState();
1012
1026
  console.log("fullState", t), yield e.loadStateFromFullState(t), console.log("Redo выполнен. Текущий индекс истории:", e.currentIndex), e.canvas.fire("editor:redo");
1013
1027
  } catch (a) {
@@ -1021,49 +1035,27 @@ class ht {
1021
1035
  })();
1022
1036
  }
1023
1037
  }
1024
- function Y(i) {
1025
- var {
1026
- montageArea: e,
1027
- imageObject: t,
1028
- scaleType: a = "contain"
1029
- } = i;
1030
- if (!e || !t) return 1;
1031
- var r = e.width, n = e.height, {
1032
- width: o,
1033
- height: s
1034
- } = t;
1035
- return a === "contain" || a === "image-contain" ? Math.min(r / o, n / s) : a === "cover" || a === "image-cover" ? Math.max(r / o, n / s) : 1;
1036
- }
1037
- function gt() {
1038
- var i = document.createElement("canvas");
1039
- i.width = 20, i.height = 20;
1040
- var e = i.getContext("2d");
1041
- return e.fillStyle = "#ddd", e.fillRect(0, 0, 40, 40), e.fillStyle = "#ccc", e.fillRect(0, 0, 10, 10), e.fillRect(10, 10, 10, 10), new Ee({
1042
- source: i,
1043
- repeat: "repeat"
1044
- });
1045
- }
1046
- var vt = 0.1, mt = 2, ft = 0.1, Mt = 90, k = 16, x = 16, D = 4096, C = 4096;
1047
- function Me(i, e, t, a, r, n, o) {
1038
+ var gt = 0.1, vt = 2, mt = 0.1, ft = 90, k = 16, x = 16, N = 4096, D = 4096;
1039
+ function Me(o, e, t, a, r, n, i) {
1048
1040
  try {
1049
- var s = i[n](o), c = s.value;
1041
+ var s = o[n](i), c = s.value;
1050
1042
  } catch (u) {
1051
1043
  return void t(u);
1052
1044
  }
1053
1045
  s.done ? e(c) : Promise.resolve(c).then(a, r);
1054
1046
  }
1055
- function P(i) {
1047
+ function P(o) {
1056
1048
  return function() {
1057
1049
  var e = this, t = arguments;
1058
1050
  return new Promise(function(a, r) {
1059
- var n = i.apply(e, t);
1060
- function o(c) {
1061
- Me(n, a, r, o, s, "next", c);
1051
+ var n = o.apply(e, t);
1052
+ function i(c) {
1053
+ Me(n, a, r, i, s, "next", c);
1062
1054
  }
1063
1055
  function s(c) {
1064
- Me(n, a, r, o, s, "throw", c);
1056
+ Me(n, a, r, i, s, "throw", c);
1065
1057
  }
1066
- o(void 0);
1058
+ i(void 0);
1067
1059
  });
1068
1060
  };
1069
1061
  }
@@ -1096,7 +1088,7 @@ class L {
1096
1088
  source: a,
1097
1089
  scale: r = "image-".concat(t.options.scaleType),
1098
1090
  withoutSave: n = !1,
1099
- contentType: o = "image/png"
1091
+ contentType: i = "image/png"
1100
1092
  } = e;
1101
1093
  if (a) {
1102
1094
  var {
@@ -1113,33 +1105,33 @@ class L {
1113
1105
  else if (typeof a == "string") {
1114
1106
  var g = yield fetch(a, {
1115
1107
  mode: "cors"
1116
- }), f = yield g.blob({
1117
- type: o,
1108
+ }), v = yield g.blob({
1109
+ type: i,
1118
1110
  quality: 1
1119
1111
  });
1120
- d = URL.createObjectURL(f);
1112
+ d = URL.createObjectURL(v);
1121
1113
  } else
1122
1114
  throw new Error("ImportImage. Неверный тип источника изображения. Ожидается URL или объект File.");
1123
1115
  t._createdBlobUrls.push(d);
1124
- var v = L.getFormatFromContentType(o);
1125
- if (v === "svg") {
1126
- var j = yield ke(d);
1116
+ var m = L.getFormatFromContentType(i);
1117
+ if (m === "svg") {
1118
+ var j = yield Ee(d);
1127
1119
  h = z.groupSVGElements(j.objects, j.options);
1128
1120
  } else
1129
1121
  h = yield de.fromURL(d, {
1130
1122
  crossOrigin: "anonymous"
1131
1123
  });
1132
1124
  var {
1133
- width: m,
1134
- height: b
1125
+ width: f,
1126
+ height: p
1135
1127
  } = h;
1136
- if (b > C || m > D) {
1128
+ if (p > D || f > N) {
1137
1129
  var y = yield t.resizeImageToBoundaries(h._element.src, "max"), S = URL.createObjectURL(y);
1138
1130
  t._createdBlobUrls.push(S), h = yield de.fromURL(S, {
1139
1131
  crossOrigin: "anonymous"
1140
1132
  });
1141
1133
  }
1142
- if (h.set("id", "".concat(h.type, "-").concat(I())), h.set("format", v), r === "scale-montage")
1134
+ if (h.set("id", "".concat(h.type, "-").concat(I())), h.set("format", m), r === "scale-montage")
1143
1135
  t.editor.canvasManager.scaleMontageAreaToImage({
1144
1136
  object: h,
1145
1137
  withoutSave: !0
@@ -1148,8 +1140,7 @@ class L {
1148
1140
  var {
1149
1141
  width: O,
1150
1142
  height: A
1151
- } = c, w = Y({
1152
- montageArea: c,
1143
+ } = c, w = t.calculateScaleFactor({
1153
1144
  imageObject: h,
1154
1145
  scaleType: r
1155
1146
  });
@@ -1157,7 +1148,7 @@ class L {
1157
1148
  object: h,
1158
1149
  type: "contain",
1159
1150
  withoutSave: !0
1160
- }) : r === "image-cover" && (m > O || b > A) && u.fitObject({
1151
+ }) : r === "image-cover" && (f > O || p > A) && u.fitObject({
1161
1152
  object: h,
1162
1153
  type: "cover",
1163
1154
  withoutSave: !0
@@ -1183,17 +1174,17 @@ class L {
1183
1174
  resizeImageToBoundaries(e) {
1184
1175
  var t = arguments, a = this;
1185
1176
  return P(function* () {
1186
- var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", n = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров: ".concat(D, "x").concat(C);
1177
+ var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", n = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров: ".concat(N, "x").concat(D);
1187
1178
  console.warn("importImage. ".concat(n)), a.editor.canvas.fire("editor:warning", {
1188
1179
  message: n
1189
1180
  });
1190
- var o = yield a.editor.workerManager.post("resizeImage", {
1181
+ var i = yield a.editor.workerManager.post("resizeImage", {
1191
1182
  dataURL: e,
1192
- maxWidth: D,
1193
- maxHeight: C,
1183
+ maxWidth: N,
1184
+ maxHeight: D,
1194
1185
  sizeType: r
1195
1186
  });
1196
- return o;
1187
+ return i;
1197
1188
  })();
1198
1189
  }
1199
1190
  /**
@@ -1214,7 +1205,7 @@ class L {
1214
1205
  fileName: a = "image.png",
1215
1206
  contentType: r = "image/png",
1216
1207
  exportAsBase64: n = !1,
1217
- exportAsBlob: o = !1
1208
+ exportAsBlob: i = !1
1218
1209
  } = e.length > 0 && e[0] !== void 0 ? e[0] : {}, {
1219
1210
  canvas: s,
1220
1211
  montageArea: c,
@@ -1223,25 +1214,25 @@ class L {
1223
1214
  c.setCoords();
1224
1215
  var {
1225
1216
  left: g,
1226
- top: f,
1227
- width: v,
1217
+ top: v,
1218
+ width: m,
1228
1219
  height: j
1229
- } = c.getBoundingRect(), m = yield s.clone(["id", "format", "locked"]);
1230
- ["image/jpg", "image/jpeg"].includes(d) && (m.backgroundColor = "#ffffff");
1231
- var b = m.getObjects().find((N) => N.id === c.id);
1232
- b.visible = !1, m.viewportTransform = [1, 0, 0, 1, -g, -f], m.setDimensions({
1233
- width: v,
1220
+ } = c.getBoundingRect(), f = yield s.clone(["id", "format", "locked"]);
1221
+ ["image/jpg", "image/jpeg"].includes(d) && (f.backgroundColor = "#ffffff");
1222
+ var p = f.getObjects().find((C) => C.id === c.id);
1223
+ p.visible = !1, f.viewportTransform = [1, 0, 0, 1, -g, -v], f.setDimensions({
1224
+ width: m,
1234
1225
  height: j
1235
1226
  }, {
1236
1227
  backstoreOnly: !0
1237
- }), m.renderAll();
1238
- var y = m.getObjects().filter((N) => N.format).every((N) => N.format === "svg");
1228
+ }), f.renderAll();
1229
+ var y = f.getObjects().filter((C) => C.format).every((C) => C.format === "svg");
1239
1230
  if (h === "svg" && y) {
1240
- var S = m.toSVG();
1241
- m.dispose();
1231
+ var S = f.toSVG();
1232
+ f.dispose();
1242
1233
  var O = L._exportSVGStringAsFile(S, {
1243
1234
  exportAsBase64: n,
1244
- exportAsBlob: o,
1235
+ exportAsBlob: i,
1245
1236
  fileName: a
1246
1237
  }), A = {
1247
1238
  image: O,
@@ -1251,10 +1242,10 @@ class L {
1251
1242
  };
1252
1243
  return s.fire("editor:canvas-exported", A), A;
1253
1244
  }
1254
- var w = yield new Promise((N) => {
1255
- m.getElement().toBlob(N);
1245
+ var w = yield new Promise((C) => {
1246
+ f.getElement().toBlob(C);
1256
1247
  });
1257
- if (m.dispose(), o) {
1248
+ if (f.dispose(), i) {
1258
1249
  var T = {
1259
1250
  image: w,
1260
1251
  format: h,
@@ -1269,24 +1260,24 @@ class L {
1269
1260
  bitmap: ae
1270
1261
  }, [ae]);
1271
1262
  if (l) {
1272
- var ne = 0.264583, W = v * ne, _ = j * ne, we = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, R = new we({
1273
- orientation: W > _ ? "landscape" : "portrait",
1263
+ var ne = 0.264583, H = m * ne, W = j * ne, we = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, _ = new we({
1264
+ orientation: H > W ? "landscape" : "portrait",
1274
1265
  unit: "mm",
1275
- format: [W, _]
1266
+ format: [H, W]
1276
1267
  });
1277
- if (R.addImage(re, "JPG", 0, 0, W, _), n) {
1278
- var Ne = R.output("datauristring"), ie = {
1279
- image: Ne,
1268
+ if (_.addImage(re, "JPG", 0, 0, H, W), n) {
1269
+ var Ce = _.output("datauristring"), ie = {
1270
+ image: Ce,
1280
1271
  format: "pdf",
1281
1272
  contentType: "application/pdf",
1282
1273
  fileName: a
1283
1274
  };
1284
1275
  return s.fire("editor:canvas-exported", ie), ie;
1285
1276
  }
1286
- var De = R.output("blob"), Ce = new File([De], a, {
1277
+ var Ne = _.output("blob"), De = new File([Ne], a, {
1287
1278
  type: "application/pdf"
1288
1279
  }), oe = {
1289
- image: Ce,
1280
+ image: De,
1290
1281
  format: "pdf",
1291
1282
  contentType: "application/pdf",
1292
1283
  fileName: a
@@ -1331,7 +1322,7 @@ class L {
1331
1322
  object: a,
1332
1323
  fileName: r = "image.png",
1333
1324
  contentType: n = "image/png",
1334
- exportAsBase64: o = !1,
1325
+ exportAsBase64: i = !1,
1335
1326
  exportAsBlob: s = !1
1336
1327
  } = e.length > 0 && e[0] !== void 0 ? e[0] : {}, {
1337
1328
  canvas: c,
@@ -1344,32 +1335,32 @@ class L {
1344
1335
  var d = L.getFormatFromContentType(n);
1345
1336
  if (d === "svg") {
1346
1337
  var h = l.toSVG(), g = t._exportSVGStringAsFile(h, {
1347
- exportAsBase64: o,
1338
+ exportAsBase64: i,
1348
1339
  exportAsBlob: s,
1349
1340
  fileName: r
1350
- }), f = {
1341
+ }), v = {
1351
1342
  image: g,
1352
1343
  format: d,
1353
1344
  contentType: "image/svg+xml",
1354
1345
  fileName: r.replace(/\.[^/.]+$/, ".svg")
1355
1346
  };
1356
- return c.fire("editor:object-exported", f), f;
1347
+ return c.fire("editor:object-exported", v), v;
1357
1348
  }
1358
- if (o) {
1359
- var v = yield createImageBitmap(l._element), j = yield u.post("toDataURL", {
1349
+ if (i) {
1350
+ var m = yield createImageBitmap(l._element), j = yield u.post("toDataURL", {
1360
1351
  format: d,
1361
1352
  quality: 1,
1362
- bitmap: v
1363
- }, [v]), m = {
1353
+ bitmap: m
1354
+ }, [m]), f = {
1364
1355
  image: j,
1365
1356
  format: d,
1366
1357
  contentType: n,
1367
1358
  fileName: r
1368
1359
  };
1369
- return c.fire("editor:object-exported", m), m;
1360
+ return c.fire("editor:object-exported", f), f;
1370
1361
  }
1371
- var b = l.toCanvasElement(), y = yield new Promise((w) => {
1372
- b.toBlob(w);
1362
+ var p = l.toCanvasElement(), y = yield new Promise((w) => {
1363
+ p.toBlob(w);
1373
1364
  });
1374
1365
  if (s) {
1375
1366
  var S = {
@@ -1432,8 +1423,28 @@ class L {
1432
1423
  var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "", t = e.match(/^[^/]+\/([^+;]+)/);
1433
1424
  return t ? t[1] : "";
1434
1425
  }
1426
+ /**
1427
+ * Рассчитывает коэффициент масштабирования изображения.
1428
+ * @param {object} imageObject - объект изображения
1429
+ * @param {string} scaleType - тип масштабирования ('contain' или 'cover')
1430
+ * @returns {number} коэффициент масштабирования
1431
+ */
1432
+ calculateScaleFactor(e) {
1433
+ var {
1434
+ imageObject: t,
1435
+ scaleType: a = "contain"
1436
+ } = e, {
1437
+ montageArea: r
1438
+ } = this.editor;
1439
+ if (!r || !t) return 1;
1440
+ var n = r.width, i = r.height, {
1441
+ width: s,
1442
+ height: c
1443
+ } = t;
1444
+ return a === "contain" || a === "image-contain" ? Math.min(n / s, i / c) : a === "cover" || a === "image-cover" ? Math.max(n / s, i / c) : 1;
1445
+ }
1435
1446
  }
1436
- class jt {
1447
+ class Mt {
1437
1448
  /**
1438
1449
  * @param {object} options
1439
1450
  * @param {ImageEditor} options.editor – экземпляр редактора
@@ -1461,15 +1472,15 @@ class jt {
1461
1472
  if (e) {
1462
1473
  var {
1463
1474
  canvas: n,
1464
- montageArea: o,
1475
+ montageArea: i,
1465
1476
  options: {
1466
1477
  canvasBackstoreWidth: s
1467
1478
  }
1468
1479
  } = this.editor, {
1469
1480
  width: c,
1470
1481
  height: u
1471
- } = o, l = Number(Math.max(Math.min(e, D), k));
1472
- if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(l), o.set({
1482
+ } = i, l = Number(Math.max(Math.min(e, N), k));
1483
+ if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(l), i.set({
1473
1484
  width: l
1474
1485
  }), n.clipPath.set({
1475
1486
  width: l
@@ -1480,9 +1491,9 @@ class jt {
1480
1491
  }
1481
1492
  var {
1482
1493
  left: g,
1483
- top: f
1484
- } = this.getObjectDefaultCoords(o), v = n.getZoom();
1485
- n.setViewportTransform([v, 0, 0, v, g, f]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), n == null || n.fire("editor:resolution-width-changed", {
1494
+ top: v
1495
+ } = this.getObjectDefaultCoords(i), m = n.getZoom();
1496
+ n.setViewportTransform([m, 0, 0, m, g, v]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), n == null || n.fire("editor:resolution-width-changed", {
1486
1497
  width: e
1487
1498
  });
1488
1499
  }
@@ -1504,15 +1515,15 @@ class jt {
1504
1515
  if (e) {
1505
1516
  var {
1506
1517
  canvas: n,
1507
- montageArea: o,
1518
+ montageArea: i,
1508
1519
  options: {
1509
1520
  canvasBackstoreHeight: s
1510
1521
  }
1511
1522
  } = this.editor, {
1512
1523
  width: c,
1513
1524
  height: u
1514
- } = o, l = Number(Math.max(Math.min(e, C), x));
1515
- if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(l), o.set({
1525
+ } = i, l = Number(Math.max(Math.min(e, D), x));
1526
+ if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(l), i.set({
1516
1527
  height: l
1517
1528
  }), n.clipPath.set({
1518
1529
  height: l
@@ -1523,9 +1534,9 @@ class jt {
1523
1534
  }
1524
1535
  var {
1525
1536
  left: g,
1526
- top: f
1527
- } = this.getObjectDefaultCoords(o), v = n.getZoom();
1528
- n.setViewportTransform([v, 0, 0, v, g, f]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), n == null || n.fire("editor:resolution-height-changed", {
1537
+ top: v
1538
+ } = this.getObjectDefaultCoords(i), m = n.getZoom();
1539
+ n.setViewportTransform([m, 0, 0, m, g, v]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), n == null || n.fire("editor:resolution-height-changed", {
1529
1540
  height: e
1530
1541
  });
1531
1542
  }
@@ -1538,7 +1549,7 @@ class jt {
1538
1549
  var {
1539
1550
  canvas: e,
1540
1551
  montageArea: t
1541
- } = this.editor, a = e.getWidth(), r = e.getHeight(), n = e.getZoom(), o = new xe(a / 2, r / 2);
1552
+ } = this.editor, a = e.getWidth(), r = e.getHeight(), n = e.getZoom(), i = new ke(a / 2, r / 2);
1542
1553
  t.set({
1543
1554
  left: a / 2,
1544
1555
  top: r / 2
@@ -1547,7 +1558,7 @@ class jt {
1547
1558
  top: r / 2
1548
1559
  }), e.renderAll();
1549
1560
  var s = e.viewportTransform;
1550
- s[4] = a / 2 - o.x * n, s[5] = r / 2 - o.y * n, e.setViewportTransform(s), e.renderAll();
1561
+ s[4] = a / 2 - i.x * n, s[5] = r / 2 - i.y * n, e.setViewportTransform(s), e.renderAll();
1551
1562
  }
1552
1563
  /**
1553
1564
  * Метод для получения координат объекта с учетом текущего зума
@@ -1565,7 +1576,7 @@ class jt {
1565
1576
  var {
1566
1577
  width: r,
1567
1578
  height: n
1568
- } = a, o = t.getZoom(), s = (r - r * o) / 2, c = (n - n * o) / 2;
1579
+ } = a, i = t.getZoom(), s = (r - r * i) / 2, c = (n - n * i) / 2;
1569
1580
  return {
1570
1581
  left: s,
1571
1582
  top: c
@@ -1573,7 +1584,7 @@ class jt {
1573
1584
  }
1574
1585
  setCanvasBackstoreWidth(e) {
1575
1586
  if (!(!e || typeof e != "number")) {
1576
- var t = Math.max(Math.min(e, D), k);
1587
+ var t = Math.max(Math.min(e, N), k);
1577
1588
  this.editor.canvas.setDimensions({
1578
1589
  width: t
1579
1590
  }, {
@@ -1583,7 +1594,7 @@ class jt {
1583
1594
  }
1584
1595
  setCanvasBackstoreHeight(e) {
1585
1596
  if (!(!e || typeof e != "number")) {
1586
- var t = Math.max(Math.min(e, C), x);
1597
+ var t = Math.max(Math.min(e, D), x);
1587
1598
  this.editor.canvas.setDimensions({
1588
1599
  height: t
1589
1600
  }, {
@@ -1594,10 +1605,10 @@ class jt {
1594
1605
  adaptCanvasToContainer() {
1595
1606
  var {
1596
1607
  canvas: e
1597
- } = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, n = Math.max(Math.min(a, D), k), o = Math.max(Math.min(r, C), x);
1598
- console.log("adaptCanvasToContainer newWidth", n), console.log("adaptCanvasToContainer newHeight", o), e.setDimensions({
1608
+ } = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, n = Math.max(Math.min(a, N), k), i = Math.max(Math.min(r, D), x);
1609
+ console.log("adaptCanvasToContainer newWidth", n), console.log("adaptCanvasToContainer newHeight", i), e.setDimensions({
1599
1610
  width: n,
1600
- height: o
1611
+ height: i
1601
1612
  }, {
1602
1613
  backstoreOnly: !0
1603
1614
  });
@@ -1695,23 +1706,23 @@ class jt {
1695
1706
  options: {
1696
1707
  editorContainer: n
1697
1708
  }
1698
- } = this.editor, o = [];
1709
+ } = this.editor, i = [];
1699
1710
  switch (e) {
1700
1711
  case "canvas":
1701
- o.push(r.lowerCanvasEl, r.upperCanvasEl);
1712
+ i.push(r.lowerCanvasEl, r.upperCanvasEl);
1702
1713
  break;
1703
1714
  case "wrapper":
1704
- o.push(r.wrapperEl);
1715
+ i.push(r.wrapperEl);
1705
1716
  break;
1706
1717
  case "container":
1707
- o.push(n);
1718
+ i.push(n);
1708
1719
  break;
1709
1720
  default:
1710
- o.push(r.lowerCanvasEl, r.upperCanvasEl);
1721
+ i.push(r.lowerCanvasEl, r.upperCanvasEl);
1711
1722
  }
1712
1723
  var s = t === "width" ? "width" : "height";
1713
1724
  if (typeof a == "string") {
1714
- o.forEach((l) => {
1725
+ i.forEach((l) => {
1715
1726
  l.style[s] = a;
1716
1727
  });
1717
1728
  return;
@@ -1719,7 +1730,7 @@ class jt {
1719
1730
  var c = parseFloat(a);
1720
1731
  if (!isNaN(c)) {
1721
1732
  var u = "".concat(c, "px");
1722
- o.forEach((l) => {
1733
+ i.forEach((l) => {
1723
1734
  l.style[s] = u;
1724
1735
  }), r.fire("editor:display-".concat(e, "-").concat(s, "-changed"), {
1725
1736
  element: e,
@@ -1744,7 +1755,7 @@ class jt {
1744
1755
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
1745
1756
  canvas: r,
1746
1757
  montageArea: n,
1747
- transformManager: o,
1758
+ transformManager: i,
1748
1759
  options: {
1749
1760
  montageAreaWidth: s,
1750
1761
  montageAreaHeight: c
@@ -1761,23 +1772,23 @@ class jt {
1761
1772
  message: h
1762
1773
  });
1763
1774
  }
1764
- var g = Math.min(l, D), f = Math.min(d, C);
1775
+ var g = Math.min(l, N), v = Math.min(d, D);
1765
1776
  if (t) {
1766
1777
  var {
1767
- width: v,
1778
+ width: m,
1768
1779
  height: j
1769
- } = n, m = l / v, b = d / j, y = Math.max(m, b);
1770
- g = v * y, f = j * y;
1780
+ } = n, f = l / m, p = d / j, y = Math.max(f, p);
1781
+ g = m * y, v = j * y;
1771
1782
  }
1772
1783
  this.setResolutionWidth(g, {
1773
1784
  withoutSave: !0
1774
- }), this.setResolutionHeight(f, {
1785
+ }), this.setResolutionHeight(v, {
1775
1786
  withoutSave: !0
1776
- }), (l > s || d > c) && o.calculateAndApplyDefaultZoom(s, c), o.resetObject(u, {
1787
+ }), (l > s || d > c) && i.calculateAndApplyDefaultZoom(s, c), i.resetObject(u, {
1777
1788
  withoutSave: !0
1778
1789
  }), r.centerObject(u), r.renderAll(), a || this.editor.historyManager.saveState(), r.fire("editor:canvas-scaled", {
1779
1790
  width: g,
1780
- height: f
1791
+ height: v
1781
1792
  });
1782
1793
  }
1783
1794
  }
@@ -1808,12 +1819,12 @@ class jt {
1808
1819
  historyManager: r,
1809
1820
  options: {
1810
1821
  montageAreaWidth: n,
1811
- montageAreaHeight: o
1822
+ montageAreaHeight: i
1812
1823
  }
1813
1824
  } = this.editor;
1814
1825
  a.resetZoom(), this.setResolutionWidth(n, {
1815
1826
  withoutSave: !0
1816
- }), this.setResolutionHeight(o, {
1827
+ }), this.setResolutionHeight(i, {
1817
1828
  withoutSave: !0
1818
1829
  }), t.renderAll(), a.resetObjects(), e || r.saveState(), t.fire("editor:default-scale-set");
1819
1830
  }
@@ -1832,7 +1843,7 @@ class jt {
1832
1843
  return r.filter((n) => n.id !== t.id && n.id !== a.id);
1833
1844
  }
1834
1845
  }
1835
- class yt {
1846
+ class jt {
1836
1847
  /**
1837
1848
  * @param {object} options
1838
1849
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -1854,7 +1865,7 @@ class yt {
1854
1865
  var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.options.montageAreaWidth, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.options.montageAreaHeight, {
1855
1866
  width: a,
1856
1867
  height: r
1857
- } = this.editor.montageArea, n = e / a, o = t / r, s = Math.min(n, o), {
1868
+ } = this.editor.montageArea, n = e / a, i = t / r, s = Math.min(n, i), {
1858
1869
  minZoom: c,
1859
1870
  maxZoom: u,
1860
1871
  maxZoomFactor: l
@@ -1871,16 +1882,16 @@ class yt {
1871
1882
  * Если передавать координаты курсора, то нужно быть аккуратнее, так как юзер может выйти за пределы рабочей области
1872
1883
  */
1873
1884
  zoom() {
1874
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ft, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1885
+ var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : mt, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1875
1886
  if (e) {
1876
1887
  var {
1877
1888
  canvas: a,
1878
1889
  minZoom: r,
1879
1890
  maxZoom: n
1880
- } = this.editor, o = a.getZoom(), {
1891
+ } = this.editor, i = a.getZoom(), {
1881
1892
  x: s = t.pointX,
1882
1893
  y: c = t.pointY
1883
- } = a.getCenterPoint(), u = Number((o + Number(e)).toFixed(2));
1894
+ } = a.getCenterPoint(), u = Number((i + Number(e)).toFixed(2));
1884
1895
  u > n && (u = n), u < r && (u = r), a.zoomToPoint({
1885
1896
  x: Number(s),
1886
1897
  y: Number(c)
@@ -1904,16 +1915,16 @@ class yt {
1904
1915
  maxZoom: r
1905
1916
  } = this.editor, {
1906
1917
  x: n,
1907
- y: o
1918
+ y: i
1908
1919
  } = t.getCenterPoint(), s = e;
1909
1920
  e > r && (s = r), e < a && (s = a), t.zoomToPoint({
1910
1921
  x: Number(n),
1911
- y: Number(o)
1922
+ y: Number(i)
1912
1923
  }, s), t.fire("editor:zoom-changed", {
1913
1924
  currentZoom: t.getZoom(),
1914
1925
  zoom: s,
1915
1926
  pointX: n,
1916
- pointY: o
1927
+ pointY: i
1917
1928
  });
1918
1929
  }
1919
1930
  /**
@@ -1943,16 +1954,16 @@ class yt {
1943
1954
  * @fires editor:object-rotated
1944
1955
  */
1945
1956
  rotate() {
1946
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Mt, {
1957
+ var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ft, {
1947
1958
  withoutSave: t
1948
1959
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
1949
1960
  canvas: a,
1950
1961
  historyManager: r
1951
1962
  } = this.editor, n = a.getActiveObject();
1952
1963
  if (n) {
1953
- var o = n.angle + e;
1954
- n.rotate(o), n.setCoords(), a.renderAll(), t || r.saveState(), a.fire("editor:object-rotated", {
1955
- angle: o
1964
+ var i = n.angle + e;
1965
+ n.rotate(i), n.setCoords(), a.renderAll(), t || r.saveState(), a.fire("editor:object-rotated", {
1966
+ angle: i
1956
1967
  });
1957
1968
  }
1958
1969
  }
@@ -1999,10 +2010,10 @@ class yt {
1999
2010
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2000
2011
  canvas: r,
2001
2012
  historyManager: n
2002
- } = this.editor, o = e || r.getActiveObject();
2003
- o && (o.type === "activeselection" ? o.getObjects().forEach((s) => {
2013
+ } = this.editor, i = e || r.getActiveObject();
2014
+ i && (i.type === "activeselection" ? i.getObjects().forEach((s) => {
2004
2015
  s.set("opacity", t);
2005
- }) : o.set("opacity", t), r.renderAll(), a || n.saveState(), r.fire("editor:object-opacity-changed", t));
2016
+ }) : i.set("opacity", t), r.renderAll(), a || n.saveState(), r.fire("editor:object-opacity-changed", t));
2006
2017
  }
2007
2018
  /**
2008
2019
  * Масштабирование изображения
@@ -2023,33 +2034,32 @@ class yt {
2023
2034
  fitAsOneObject: r
2024
2035
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2025
2036
  canvas: n,
2026
- montageArea: o,
2027
- historyManager: s
2028
- } = this.editor, c = e || n.getActiveObject();
2029
- if (c) {
2030
- if (["activeselection"].includes(c.type) && !r) {
2031
- var u = c.getObjects();
2032
- n.discardActiveObject(), u.forEach((h) => {
2033
- var g = Y({
2034
- montageArea: o,
2035
- imageObject: h,
2037
+ montageArea: i,
2038
+ imageManager: s,
2039
+ historyManager: c
2040
+ } = this.editor, u = e || n.getActiveObject();
2041
+ if (u) {
2042
+ if (["activeselection"].includes(u.type) && !r) {
2043
+ var l = u.getObjects();
2044
+ n.discardActiveObject(), l.forEach((g) => {
2045
+ var v = s.calculateScaleFactor({
2046
+ imageObject: g,
2036
2047
  scaleType: t
2037
2048
  });
2038
- h.scale(g), n.centerObject(h);
2049
+ g.scale(v), n.centerObject(g);
2039
2050
  });
2040
- var l = new Z(u, {
2051
+ var d = new Z(l, {
2041
2052
  canvas: n
2042
2053
  });
2043
- n.setActiveObject(l);
2054
+ n.setActiveObject(d);
2044
2055
  } else {
2045
- var d = Y({
2046
- montageArea: o,
2047
- imageObject: c,
2056
+ var h = s.calculateScaleFactor({
2057
+ imageObject: u,
2048
2058
  scaleType: t
2049
2059
  });
2050
- c.scale(d), n.centerObject(c);
2060
+ u.scale(h), n.centerObject(u);
2051
2061
  }
2052
- n.renderAll(), a || s.saveState(), n.fire("editor:image-fitted", {
2062
+ n.renderAll(), a || c.saveState(), n.fire("editor:image-fitted", {
2053
2063
  type: t
2054
2064
  });
2055
2065
  }
@@ -2076,52 +2086,52 @@ class yt {
2076
2086
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2077
2087
  canvas: r,
2078
2088
  montageArea: n,
2079
- historyManager: o,
2089
+ imageManager: i,
2090
+ historyManager: s,
2080
2091
  options: {
2081
- scaleType: s
2092
+ scaleType: c
2082
2093
  }
2083
- } = this.editor, c = e || r.getActiveObject();
2084
- if (!(!c || c.locked)) {
2085
- if (o.suspendHistory(), c.type !== "image" && c.format !== "svg" && (c.set({
2094
+ } = this.editor, u = e || r.getActiveObject();
2095
+ if (!(!u || u.locked)) {
2096
+ if (s.suspendHistory(), u.type !== "image" && u.format !== "svg" && (u.set({
2086
2097
  scaleX: 1,
2087
2098
  scaleY: 1,
2088
2099
  flipX: !1,
2089
2100
  flipY: !1,
2090
2101
  angle: 0
2091
- }), r.centerObject(c), r.renderAll()), t)
2102
+ }), r.centerObject(u), r.renderAll()), t)
2092
2103
  this.fitObject({
2093
- object: c,
2104
+ object: u,
2094
2105
  withoutSave: !0
2095
2106
  });
2096
2107
  else {
2097
2108
  var {
2098
- width: u,
2099
- height: l
2109
+ width: l,
2110
+ height: d
2100
2111
  } = n, {
2101
- width: d,
2102
- height: h
2103
- } = c, g = Y({
2104
- montageArea: n,
2105
- imageObject: c,
2106
- scaleType: s
2112
+ width: h,
2113
+ height: g
2114
+ } = u, v = i.calculateScaleFactor({
2115
+ imageObject: u,
2116
+ scaleType: c
2107
2117
  });
2108
- s === "contain" && g < 1 || s === "cover" && (d > u || h > l) ? this.fitObject({
2109
- object: c,
2118
+ c === "contain" && v < 1 || c === "cover" && (h > l || g > d) ? this.fitObject({
2119
+ object: u,
2110
2120
  withoutSave: !0
2111
- }) : c.set({
2121
+ }) : u.set({
2112
2122
  scaleX: 1,
2113
2123
  scaleY: 1
2114
2124
  });
2115
2125
  }
2116
- c.set({
2126
+ u.set({
2117
2127
  flipX: !1,
2118
2128
  flipY: !1,
2119
2129
  angle: 0
2120
- }), r.centerObject(c), r.renderAll(), o.resumeHistory(), a || o.saveState(), r.fire("editor:object-reset");
2130
+ }), r.centerObject(u), r.renderAll(), s.resumeHistory(), a || s.saveState(), r.fire("editor:object-reset");
2121
2131
  }
2122
2132
  }
2123
2133
  }
2124
- class pt {
2134
+ class yt {
2125
2135
  /**
2126
2136
  * @param {object} options
2127
2137
  * @param {ImageEditor} options.editor – экземпляр редактора
@@ -2172,13 +2182,13 @@ class pt {
2172
2182
  var {
2173
2183
  left: r,
2174
2184
  top: n,
2175
- width: o,
2185
+ width: i,
2176
2186
  height: s
2177
2187
  } = t.getBoundingRect();
2178
2188
  this.overlayMask.set({
2179
2189
  left: r,
2180
2190
  top: n,
2181
- width: o,
2191
+ width: i,
2182
2192
  height: s
2183
2193
  }), e.discardActiveObject(), this.editor.layerManager.bringToFront(this.overlayMask, {
2184
2194
  withoutSave: !0
@@ -2221,7 +2231,7 @@ class pt {
2221
2231
  }
2222
2232
  }
2223
2233
  }
2224
- class H {
2234
+ class Y {
2225
2235
  /**
2226
2236
  * @param {object} options
2227
2237
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2248,8 +2258,8 @@ class H {
2248
2258
  } = this.editor;
2249
2259
  r.suspendHistory();
2250
2260
  var n = e || a.getActiveObject();
2251
- n && (n.type === "activeselection" ? n.getObjects().forEach((o) => {
2252
- a.bringObjectToFront(o);
2261
+ n && (n.type === "activeselection" ? n.getObjects().forEach((i) => {
2262
+ a.bringObjectToFront(i);
2253
2263
  }) : a.bringObjectToFront(n), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-to-front"));
2254
2264
  }
2255
2265
  /**
@@ -2268,7 +2278,7 @@ class H {
2268
2278
  } = this.editor;
2269
2279
  r.suspendHistory();
2270
2280
  var n = e || a.getActiveObject();
2271
- n && (n.type === "activeselection" ? H._moveSelectionForward(a, n) : a.bringObjectForward(n), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-forward"));
2281
+ n && (n.type === "activeselection" ? Y._moveSelectionForward(a, n) : a.bringObjectForward(n), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-forward"));
2272
2282
  }
2273
2283
  /**
2274
2284
  * Отправить объект на задний план по оси Z
@@ -2285,7 +2295,7 @@ class H {
2285
2295
  montageArea: r,
2286
2296
  historyManager: n,
2287
2297
  interactionBlocker: {
2288
- overlayMask: o
2298
+ overlayMask: i
2289
2299
  }
2290
2300
  } = this.editor;
2291
2301
  n.suspendHistory();
@@ -2296,7 +2306,7 @@ class H {
2296
2306
  a.sendObjectToBack(c[u]);
2297
2307
  else
2298
2308
  a.sendObjectToBack(s);
2299
- a.sendObjectToBack(r), a.sendObjectToBack(o), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-send-to-back");
2309
+ a.sendObjectToBack(r), a.sendObjectToBack(i), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-send-to-back");
2300
2310
  }
2301
2311
  }
2302
2312
  /**
@@ -2313,12 +2323,12 @@ class H {
2313
2323
  montageArea: r,
2314
2324
  historyManager: n,
2315
2325
  interactionBlocker: {
2316
- overlayMask: o
2326
+ overlayMask: i
2317
2327
  }
2318
2328
  } = this.editor;
2319
2329
  n.suspendHistory();
2320
2330
  var s = e || a.getActiveObject();
2321
- s && (s.type === "activeselection" ? H._moveSelectionBackwards(a, s) : a.sendObjectBackwards(s), a.sendObjectToBack(r), a.sendObjectToBack(o), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-send-backwards"));
2331
+ s && (s.type === "activeselection" ? Y._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"));
2322
2332
  }
2323
2333
  /**
2324
2334
  * Сдвигает выделенные объекты на один уровень вверх относительно ближайшего верхнего объекта
@@ -2328,20 +2338,20 @@ class H {
2328
2338
  * @private
2329
2339
  */
2330
2340
  static _moveSelectionForward(e, t) {
2331
- for (var a = e.getObjects(), r = t.getObjects(), n = r.map((l) => a.indexOf(l)), o = -1, s = function(d) {
2341
+ for (var a = e.getObjects(), r = t.getObjects(), n = r.map((l) => a.indexOf(l)), i = -1, s = function(d) {
2332
2342
  var h = a[d];
2333
2343
  if (!r.includes(h) && n.some((g) => d > g))
2334
- return o = d, 1;
2344
+ return i = d, 1;
2335
2345
  }, c = 0; c < a.length && !s(c); c += 1)
2336
2346
  ;
2337
- if (o !== -1) {
2347
+ if (i !== -1) {
2338
2348
  var u = r.map((l) => ({
2339
2349
  obj: l,
2340
2350
  index: a.indexOf(l)
2341
2351
  })).sort((l, d) => d.index - l.index);
2342
2352
  u.forEach((l) => {
2343
2353
  var d = a.indexOf(l.obj);
2344
- d < o && (e.moveObjectTo(l.obj, o), o = d);
2354
+ d < i && (e.moveObjectTo(l.obj, i), i = d);
2345
2355
  });
2346
2356
  }
2347
2357
  }
@@ -2353,68 +2363,68 @@ class H {
2353
2363
  * @private
2354
2364
  */
2355
2365
  static _moveSelectionBackwards(e, t) {
2356
- for (var a = e.getObjects(), r = t.getObjects(), n = Math.min(...r.map((s) => a.indexOf(s))), o = r.length - 1; o >= 0; o -= 1)
2357
- e.moveObjectTo(r[o], n - 1);
2366
+ 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)
2367
+ e.moveObjectTo(r[i], n - 1);
2358
2368
  }
2359
2369
  }
2360
- var bt = ["id", "left", "top", "width", "height", "fill"], It = ["id", "left", "top", "radius", "fill"], St = ["id", "left", "top", "width", "height", "fill"];
2361
- function je(i, e) {
2362
- var t = Object.keys(i);
2370
+ var bt = ["id", "left", "top", "width", "height", "fill"], pt = ["id", "left", "top", "radius", "fill"], It = ["id", "left", "top", "width", "height", "fill"];
2371
+ function je(o, e) {
2372
+ var t = Object.keys(o);
2363
2373
  if (Object.getOwnPropertySymbols) {
2364
- var a = Object.getOwnPropertySymbols(i);
2374
+ var a = Object.getOwnPropertySymbols(o);
2365
2375
  e && (a = a.filter(function(r) {
2366
- return Object.getOwnPropertyDescriptor(i, r).enumerable;
2376
+ return Object.getOwnPropertyDescriptor(o, r).enumerable;
2367
2377
  })), t.push.apply(t, a);
2368
2378
  }
2369
2379
  return t;
2370
2380
  }
2371
- function F(i) {
2381
+ function V(o) {
2372
2382
  for (var e = 1; e < arguments.length; e++) {
2373
2383
  var t = arguments[e] != null ? arguments[e] : {};
2374
2384
  e % 2 ? je(Object(t), !0).forEach(function(a) {
2375
- At(i, a, t[a]);
2376
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(i, Object.getOwnPropertyDescriptors(t)) : je(Object(t)).forEach(function(a) {
2377
- Object.defineProperty(i, a, Object.getOwnPropertyDescriptor(t, a));
2385
+ St(o, a, t[a]);
2386
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : je(Object(t)).forEach(function(a) {
2387
+ Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
2378
2388
  });
2379
2389
  }
2380
- return i;
2390
+ return o;
2381
2391
  }
2382
- function At(i, e, t) {
2383
- return (e = wt(e)) in i ? Object.defineProperty(i, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : i[e] = t, i;
2392
+ function St(o, e, t) {
2393
+ return (e = At(e)) in o ? Object.defineProperty(o, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : o[e] = t, o;
2384
2394
  }
2385
- function wt(i) {
2386
- var e = Nt(i, "string");
2395
+ function At(o) {
2396
+ var e = wt(o, "string");
2387
2397
  return typeof e == "symbol" ? e : e + "";
2388
2398
  }
2389
- function Nt(i, e) {
2390
- if (typeof i != "object" || !i) return i;
2391
- var t = i[Symbol.toPrimitive];
2399
+ function wt(o, e) {
2400
+ if (typeof o != "object" || !o) return o;
2401
+ var t = o[Symbol.toPrimitive];
2392
2402
  if (t !== void 0) {
2393
- var a = t.call(i, e);
2403
+ var a = t.call(o, e);
2394
2404
  if (typeof a != "object") return a;
2395
2405
  throw new TypeError("@@toPrimitive must return a primitive value.");
2396
2406
  }
2397
- return (e === "string" ? String : Number)(i);
2407
+ return (e === "string" ? String : Number)(o);
2398
2408
  }
2399
- function G(i, e) {
2400
- if (i == null) return {};
2401
- var t, a, r = Dt(i, e);
2409
+ function F(o, e) {
2410
+ if (o == null) return {};
2411
+ var t, a, r = Ct(o, e);
2402
2412
  if (Object.getOwnPropertySymbols) {
2403
- var n = Object.getOwnPropertySymbols(i);
2404
- for (a = 0; a < n.length; a++) t = n[a], e.indexOf(t) === -1 && {}.propertyIsEnumerable.call(i, t) && (r[t] = i[t]);
2413
+ var n = Object.getOwnPropertySymbols(o);
2414
+ for (a = 0; a < n.length; a++) t = n[a], e.indexOf(t) === -1 && {}.propertyIsEnumerable.call(o, t) && (r[t] = o[t]);
2405
2415
  }
2406
2416
  return r;
2407
2417
  }
2408
- function Dt(i, e) {
2409
- if (i == null) return {};
2418
+ function Ct(o, e) {
2419
+ if (o == null) return {};
2410
2420
  var t = {};
2411
- for (var a in i) if ({}.hasOwnProperty.call(i, a)) {
2421
+ for (var a in o) if ({}.hasOwnProperty.call(o, a)) {
2412
2422
  if (e.indexOf(a) !== -1) continue;
2413
- t[a] = i[a];
2423
+ t[a] = o[a];
2414
2424
  }
2415
2425
  return t;
2416
2426
  }
2417
- class Ct {
2427
+ class Nt {
2418
2428
  /**
2419
2429
  * @param {object} options
2420
2430
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2446,19 +2456,19 @@ class Ct {
2446
2456
  left: a,
2447
2457
  top: r,
2448
2458
  width: n = 100,
2449
- height: o = 100,
2459
+ height: i = 100,
2450
2460
  fill: s = "blue"
2451
- } = e, c = G(e, bt), {
2461
+ } = e, c = F(e, bt), {
2452
2462
  withoutSelection: u,
2453
2463
  withoutAdding: l
2454
2464
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2455
2465
  canvas: d
2456
- } = this.editor, h = new Be(F({
2466
+ } = this.editor, h = new xe(V({
2457
2467
  id: t,
2458
2468
  left: a,
2459
2469
  top: r,
2460
2470
  width: n,
2461
- height: o,
2471
+ height: i,
2462
2472
  fill: s
2463
2473
  }, c));
2464
2474
  return !a && !r && d.centerObject(h), l || (d.add(h), u || d.setActiveObject(h), d.renderAll()), h;
@@ -2483,17 +2493,17 @@ class Ct {
2483
2493
  left: a,
2484
2494
  top: r,
2485
2495
  radius: n = 50,
2486
- fill: o = "green"
2487
- } = e, s = G(e, It), {
2496
+ fill: i = "green"
2497
+ } = e, s = F(e, pt), {
2488
2498
  withoutSelection: c,
2489
2499
  withoutAdding: u
2490
2500
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2491
2501
  canvas: l
2492
- } = this.editor, d = new Ze(F({
2502
+ } = this.editor, d = new Be(V({
2493
2503
  id: t,
2494
2504
  left: a,
2495
2505
  top: r,
2496
- fill: o,
2506
+ fill: i,
2497
2507
  radius: n
2498
2508
  }, s));
2499
2509
  return !a && !r && l.centerObject(d), u || (l.add(d), c || l.setActiveObject(d), l.renderAll()), d;
@@ -2519,48 +2529,48 @@ class Ct {
2519
2529
  left: a,
2520
2530
  top: r,
2521
2531
  width: n = 100,
2522
- height: o = 100,
2532
+ height: i = 100,
2523
2533
  fill: s = "yellow"
2524
- } = e, c = G(e, St), {
2534
+ } = e, c = F(e, It), {
2525
2535
  withoutSelection: u,
2526
2536
  withoutAdding: l
2527
2537
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2528
2538
  canvas: d
2529
- } = this.editor, h = new ze(F({
2539
+ } = this.editor, h = new Ze(V({
2530
2540
  id: t,
2531
2541
  left: a,
2532
2542
  top: r,
2533
2543
  fill: s,
2534
2544
  width: n,
2535
- height: o
2545
+ height: i
2536
2546
  }, c));
2537
2547
  return !a && !r && d.centerObject(h), l || (d.add(h), u || d.setActiveObject(h), d.renderAll()), h;
2538
2548
  }
2539
2549
  }
2540
- function ye(i, e, t, a, r, n, o) {
2550
+ function ye(o, e, t, a, r, n, i) {
2541
2551
  try {
2542
- var s = i[n](o), c = s.value;
2552
+ var s = o[n](i), c = s.value;
2543
2553
  } catch (u) {
2544
2554
  return void t(u);
2545
2555
  }
2546
2556
  s.done ? e(c) : Promise.resolve(c).then(a, r);
2547
2557
  }
2548
- function pe(i) {
2558
+ function be(o) {
2549
2559
  return function() {
2550
2560
  var e = this, t = arguments;
2551
2561
  return new Promise(function(a, r) {
2552
- var n = i.apply(e, t);
2553
- function o(c) {
2554
- ye(n, a, r, o, s, "next", c);
2562
+ var n = o.apply(e, t);
2563
+ function i(c) {
2564
+ ye(n, a, r, i, s, "next", c);
2555
2565
  }
2556
2566
  function s(c) {
2557
- ye(n, a, r, o, s, "throw", c);
2567
+ ye(n, a, r, i, s, "throw", c);
2558
2568
  }
2559
- o(void 0);
2569
+ i(void 0);
2560
2570
  });
2561
2571
  };
2562
2572
  }
2563
- class Lt {
2573
+ class Dt {
2564
2574
  /**
2565
2575
  * @param {object} options
2566
2576
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2577,7 +2587,7 @@ class Lt {
2577
2587
  */
2578
2588
  copy() {
2579
2589
  var e = this;
2580
- return pe(function* () {
2590
+ return be(function* () {
2581
2591
  var {
2582
2592
  canvas: t
2583
2593
  } = e.editor, a = t.getActiveObject();
@@ -2599,10 +2609,10 @@ class Lt {
2599
2609
  });
2600
2610
  return;
2601
2611
  }
2602
- var n = r.toCanvasElement(), o = yield new Promise((u) => {
2612
+ var n = r.toCanvasElement(), i = yield new Promise((u) => {
2603
2613
  n.toBlob(u);
2604
2614
  }), s = new ClipboardItem({
2605
- [o.type]: o
2615
+ [i.type]: i
2606
2616
  });
2607
2617
  yield navigator.clipboard.write([s]), t.fire("editor:object-copied", {
2608
2618
  object: r
@@ -2621,7 +2631,7 @@ class Lt {
2621
2631
  */
2622
2632
  paste() {
2623
2633
  var e = this;
2624
- return pe(function* () {
2634
+ return be(function* () {
2625
2635
  var {
2626
2636
  canvas: t
2627
2637
  } = e.editor;
@@ -2641,7 +2651,7 @@ class Lt {
2641
2651
  })();
2642
2652
  }
2643
2653
  }
2644
- class Ot {
2654
+ class Lt {
2645
2655
  /**
2646
2656
  * @param {object} options
2647
2657
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2668,8 +2678,8 @@ class Ot {
2668
2678
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2669
2679
  canvas: r,
2670
2680
  historyManager: n
2671
- } = this.editor, o = e || r.getActiveObject();
2672
- if (!(!o || o.locked)) {
2681
+ } = this.editor, i = e || r.getActiveObject();
2682
+ if (!(!i || i.locked)) {
2673
2683
  var s = {
2674
2684
  lockMovementX: !0,
2675
2685
  lockMovementY: !0,
@@ -2680,12 +2690,12 @@ class Ot {
2680
2690
  lockSkewingY: !0,
2681
2691
  locked: !0
2682
2692
  };
2683
- o.set(s);
2684
- var c = !t && ["activeselection", "group"].includes(o.type);
2685
- c && o.getObjects().forEach((u) => {
2693
+ i.set(s);
2694
+ var c = !t && ["activeselection", "group"].includes(i.type);
2695
+ c && i.getObjects().forEach((u) => {
2686
2696
  u.set(s);
2687
2697
  }), r.renderAll(), a || n.saveState(), r.fire("editor:object-locked", {
2688
- object: o
2698
+ object: i
2689
2699
  });
2690
2700
  }
2691
2701
  }
@@ -2706,7 +2716,7 @@ class Ot {
2706
2716
  historyManager: r
2707
2717
  } = this.editor, n = e || a.getActiveObject();
2708
2718
  if (n) {
2709
- var o = {
2719
+ var i = {
2710
2720
  lockMovementX: !1,
2711
2721
  lockMovementY: !1,
2712
2722
  lockRotation: !1,
@@ -2716,15 +2726,15 @@ class Ot {
2716
2726
  lockSkewingY: !1,
2717
2727
  locked: !1
2718
2728
  };
2719
- n.set(o), ["activeselection", "group"].includes(n.type) && n.getObjects().forEach((s) => {
2720
- s.set(o);
2729
+ n.set(i), ["activeselection", "group"].includes(n.type) && n.getObjects().forEach((s) => {
2730
+ s.set(i);
2721
2731
  }), a.renderAll(), t || r.saveState(), a.fire("editor:object-unlocked", {
2722
2732
  object: n
2723
2733
  });
2724
2734
  }
2725
2735
  }
2726
2736
  }
2727
- class Tt {
2737
+ class Ot {
2728
2738
  /**
2729
2739
  * @param {object} options
2730
2740
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2753,8 +2763,8 @@ class Tt {
2753
2763
  r.suspendHistory();
2754
2764
  var n = e || a.getActiveObject();
2755
2765
  if (n && n.type === "activeselection") {
2756
- var o = n.getObjects(), s = new Ue(o);
2757
- o.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(I())), a.add(s), a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped");
2766
+ var i = n.getObjects(), s = new ze(i);
2767
+ i.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(I())), a.add(s), a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped");
2758
2768
  }
2759
2769
  }
2760
2770
  /**
@@ -2775,16 +2785,16 @@ class Tt {
2775
2785
  r.suspendHistory();
2776
2786
  var n = e || a.getActiveObject();
2777
2787
  if (!(!n || n.type !== "group")) {
2778
- var o = n.removeAll();
2779
- a.remove(n), o.forEach((c) => a.add(c));
2780
- var s = new Z(o, {
2788
+ var i = n.removeAll();
2789
+ a.remove(n), i.forEach((c) => a.add(c));
2790
+ var s = new Z(i, {
2781
2791
  canvas: a
2782
2792
  });
2783
2793
  a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-ungrouped");
2784
2794
  }
2785
2795
  }
2786
2796
  }
2787
- class Et {
2797
+ class Tt {
2788
2798
  /**
2789
2799
  * @param {object} options
2790
2800
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2806,19 +2816,19 @@ class Et {
2806
2816
  objectLockManager: a
2807
2817
  } = this.editor;
2808
2818
  e.discardActiveObject();
2809
- var r = t.getObjects(), n = r.some((s) => s.locked), o = r.length > 1 ? new Z(t.getObjects(), {
2819
+ var r = t.getObjects(), n = r.some((s) => s.locked), i = r.length > 1 ? new Z(t.getObjects(), {
2810
2820
  canvas: e
2811
2821
  }) : r[0];
2812
2822
  n && a.lockObject({
2813
- object: o,
2823
+ object: i,
2814
2824
  skipInnerObjects: !0,
2815
2825
  withoutSave: !0
2816
- }), e.setActiveObject(o), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
2817
- selected: o
2826
+ }), e.setActiveObject(i), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
2827
+ selected: i
2818
2828
  });
2819
2829
  }
2820
2830
  }
2821
- class kt {
2831
+ class Et {
2822
2832
  /**
2823
2833
  * @param {object} options
2824
2834
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2843,40 +2853,40 @@ class kt {
2843
2853
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2844
2854
  canvas: a,
2845
2855
  historyManager: r
2846
- } = this.editor, n = (e || a.getActiveObjects()).filter((o) => !o.locked);
2847
- n != null && n.length && (r.suspendHistory(), n.forEach((o) => {
2848
- if (o.type === "group" && o.format !== "svg") {
2849
- this.ungroup(o), this.deleteSelectedObjects();
2856
+ } = this.editor, n = (e || a.getActiveObjects()).filter((i) => !i.locked);
2857
+ n != null && n.length && (r.suspendHistory(), n.forEach((i) => {
2858
+ if (i.type === "group" && i.format !== "svg") {
2859
+ this.ungroup(i), this.deleteSelectedObjects();
2850
2860
  return;
2851
2861
  }
2852
- a.remove(o);
2862
+ a.remove(i);
2853
2863
  }), a.discardActiveObject(), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-deleted"));
2854
2864
  }
2855
2865
  }
2856
- function be(i, e, t, a, r, n, o) {
2866
+ function pe(o, e, t, a, r, n, i) {
2857
2867
  try {
2858
- var s = i[n](o), c = s.value;
2868
+ var s = o[n](i), c = s.value;
2859
2869
  } catch (u) {
2860
2870
  return void t(u);
2861
2871
  }
2862
2872
  s.done ? e(c) : Promise.resolve(c).then(a, r);
2863
2873
  }
2864
- function xt(i) {
2874
+ function kt(o) {
2865
2875
  return function() {
2866
2876
  var e = this, t = arguments;
2867
2877
  return new Promise(function(a, r) {
2868
- var n = i.apply(e, t);
2869
- function o(c) {
2870
- be(n, a, r, o, s, "next", c);
2878
+ var n = o.apply(e, t);
2879
+ function i(c) {
2880
+ pe(n, a, r, i, s, "next", c);
2871
2881
  }
2872
2882
  function s(c) {
2873
- be(n, a, r, o, s, "throw", c);
2883
+ pe(n, a, r, i, s, "throw", c);
2874
2884
  }
2875
- o(void 0);
2885
+ i(void 0);
2876
2886
  });
2877
2887
  };
2878
2888
  }
2879
- class Bt {
2889
+ class te {
2880
2890
  constructor(e) {
2881
2891
  var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
2882
2892
  this.options = t;
@@ -2885,17 +2895,17 @@ class Bt {
2885
2895
  minZoom: r,
2886
2896
  maxZoom: n
2887
2897
  } = t;
2888
- this.containerId = e, this.editorId = "".concat(e, "-").concat(I()), this.clipboard = null, this.defaultZoom = a, this.minZoom = r || vt, this.maxZoom = n || mt, this.init();
2898
+ this.containerId = e, this.editorId = "".concat(e, "-").concat(I()), this.clipboard = null, this.defaultZoom = a, this.minZoom = r || gt, this.maxZoom = n || vt, this.init();
2889
2899
  }
2890
2900
  init() {
2891
2901
  var e = this;
2892
- return xt(function* () {
2902
+ return kt(function* () {
2893
2903
  var {
2894
2904
  editorContainerWidth: t,
2895
2905
  editorContainerHeight: a,
2896
2906
  canvasWrapperWidth: r,
2897
2907
  canvasWrapperHeight: n,
2898
- canvasCSSWidth: o,
2908
+ canvasCSSWidth: i,
2899
2909
  canvasCSSHeight: s,
2900
2910
  initialImage: c,
2901
2911
  initialStateJSON: u,
@@ -2906,43 +2916,43 @@ class Bt {
2906
2916
  editor: e
2907
2917
  }), e.toolbar = new lt({
2908
2918
  editor: e
2909
- }), e.transformManager = new yt({
2919
+ }), e.transformManager = new jt({
2910
2920
  editor: e
2911
- }), e.canvasManager = new jt({
2921
+ }), e.canvasManager = new Mt({
2912
2922
  editor: e
2913
2923
  }), e.imageManager = new L({
2914
2924
  editor: e
2915
- }), e.layerManager = new H({
2925
+ }), e.layerManager = new Y({
2916
2926
  editor: e
2917
- }), e.shapeManager = new Ct({
2927
+ }), e.shapeManager = new Nt({
2918
2928
  editor: e
2919
- }), e.interactionBlocker = new pt({
2929
+ }), e.interactionBlocker = new yt({
2920
2930
  editor: e
2921
- }), e.clipboardManager = new Lt({
2931
+ }), e.clipboardManager = new Dt({
2922
2932
  editor: e
2923
- }), e.objectLockManager = new Ot({
2933
+ }), e.objectLockManager = new Lt({
2924
2934
  editor: e
2925
- }), e.groupingManager = new Tt({
2935
+ }), e.groupingManager = new Ot({
2926
2936
  editor: e
2927
- }), e.selectionManager = new Et({
2937
+ }), e.selectionManager = new Tt({
2928
2938
  editor: e
2929
- }), e.deletionManager = new kt({
2939
+ }), e.deletionManager = new Et({
2930
2940
  editor: e
2931
2941
  }), e._createMonageArea(), e._createClippingArea(), e.listeners = new B({
2932
2942
  editor: e,
2933
2943
  options: e.options
2934
- }), e.canvasManager.setEditorContainerWidth(t), e.canvasManager.setEditorContainerHeight(a), e.canvasManager.setCanvasWrapperWidth(r), e.canvasManager.setCanvasWrapperHeight(n), e.canvasManager.setCanvasCSSWidth(o), e.canvasManager.setCanvasCSSHeight(s), c != null && c.source) {
2944
+ }), e.canvasManager.setEditorContainerWidth(t), e.canvasManager.setEditorContainerHeight(a), e.canvasManager.setCanvasWrapperWidth(r), e.canvasManager.setCanvasWrapperHeight(n), e.canvasManager.setCanvasCSSWidth(i), e.canvasManager.setCanvasCSSHeight(s), c != null && c.source) {
2935
2945
  var {
2936
2946
  source: h,
2937
2947
  scale: g = "image-".concat(l),
2938
- withoutSave: f = !0,
2939
- contentType: v
2948
+ withoutSave: v = !0,
2949
+ contentType: m
2940
2950
  } = c;
2941
2951
  yield e.imageManager.importImage({
2942
2952
  source: h,
2943
2953
  scale: g,
2944
- withoutSave: f,
2945
- contentType: v
2954
+ withoutSave: v,
2955
+ contentType: m
2946
2956
  });
2947
2957
  } else
2948
2958
  e.canvasManager.setDefaultScale({
@@ -2964,7 +2974,7 @@ class Bt {
2964
2974
  this.montageArea = this.shapeManager.addRectangle({
2965
2975
  width: e,
2966
2976
  height: t,
2967
- fill: gt(),
2977
+ fill: te._createMosaicPattern(),
2968
2978
  stroke: null,
2969
2979
  strokeWidth: 0,
2970
2980
  selectable: !1,
@@ -3014,8 +3024,21 @@ class Bt {
3014
3024
  destroy() {
3015
3025
  this.listeners.destroy(), this.toolbar.destroy(), this.canvas.dispose(), this.workerManager.worker.terminate(), this.imageManager.revokeBlobUrls();
3016
3026
  }
3027
+ /**
3028
+ * Создает паттерн мозаики.
3029
+ * @returns {object} паттерн мозаики
3030
+ */
3031
+ static _createMosaicPattern() {
3032
+ var e = document.createElement("canvas");
3033
+ e.width = 20, e.height = 20;
3034
+ var t = e.getContext("2d");
3035
+ 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 Ue({
3036
+ source: e,
3037
+ repeat: "repeat"
3038
+ });
3039
+ }
3017
3040
  }
3018
- const Zt = {
3041
+ const xt = {
3019
3042
  // Cохраняют ли объекты свой текущий порядок (z-index) при выделении
3020
3043
  preserveObjectStacking: !0,
3021
3044
  // Возможность взаимодействия с объектом за пределами монтажной области
@@ -3122,56 +3145,56 @@ const Zt = {
3122
3145
  // Сброс параметров объекта по двойному клику
3123
3146
  resetObjectFitByDoubleClick: !0
3124
3147
  };
3125
- function Ie(i, e) {
3126
- var t = Object.keys(i);
3148
+ function Ie(o, e) {
3149
+ var t = Object.keys(o);
3127
3150
  if (Object.getOwnPropertySymbols) {
3128
- var a = Object.getOwnPropertySymbols(i);
3151
+ var a = Object.getOwnPropertySymbols(o);
3129
3152
  e && (a = a.filter(function(r) {
3130
- return Object.getOwnPropertyDescriptor(i, r).enumerable;
3153
+ return Object.getOwnPropertyDescriptor(o, r).enumerable;
3131
3154
  })), t.push.apply(t, a);
3132
3155
  }
3133
3156
  return t;
3134
3157
  }
3135
- function Se(i) {
3158
+ function Se(o) {
3136
3159
  for (var e = 1; e < arguments.length; e++) {
3137
3160
  var t = arguments[e] != null ? arguments[e] : {};
3138
3161
  e % 2 ? Ie(Object(t), !0).forEach(function(a) {
3139
- zt(i, a, t[a]);
3140
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(i, Object.getOwnPropertyDescriptors(t)) : Ie(Object(t)).forEach(function(a) {
3141
- Object.defineProperty(i, a, Object.getOwnPropertyDescriptor(t, a));
3162
+ Bt(o, a, t[a]);
3163
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : Ie(Object(t)).forEach(function(a) {
3164
+ Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
3142
3165
  });
3143
3166
  }
3144
- return i;
3167
+ return o;
3145
3168
  }
3146
- function zt(i, e, t) {
3147
- return (e = Ut(e)) in i ? Object.defineProperty(i, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : i[e] = t, i;
3169
+ function Bt(o, e, t) {
3170
+ return (e = Zt(e)) in o ? Object.defineProperty(o, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : o[e] = t, o;
3148
3171
  }
3149
- function Ut(i) {
3150
- var e = Pt(i, "string");
3172
+ function Zt(o) {
3173
+ var e = zt(o, "string");
3151
3174
  return typeof e == "symbol" ? e : e + "";
3152
3175
  }
3153
- function Pt(i, e) {
3154
- if (typeof i != "object" || !i) return i;
3155
- var t = i[Symbol.toPrimitive];
3176
+ function zt(o, e) {
3177
+ if (typeof o != "object" || !o) return o;
3178
+ var t = o[Symbol.toPrimitive];
3156
3179
  if (t !== void 0) {
3157
- var a = t.call(i, e);
3180
+ var a = t.call(o, e);
3158
3181
  if (typeof a != "object") return a;
3159
3182
  throw new TypeError("@@toPrimitive must return a primitive value.");
3160
3183
  }
3161
- return (e === "string" ? String : Number)(i);
3184
+ return (e === "string" ? String : Number)(o);
3162
3185
  }
3163
- function Wt(i) {
3164
- var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, t = Se(Se({}, Zt), e), a = document.getElementById(i);
3186
+ function Yt(o) {
3187
+ var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, t = Se(Se({}, xt), e), a = document.getElementById(o);
3165
3188
  if (!a)
3166
- return Promise.reject(new Error('Контейнер с ID "'.concat(i, '" не найден.')));
3189
+ return Promise.reject(new Error('Контейнер с ID "'.concat(o, '" не найден.')));
3167
3190
  var r = document.createElement("canvas");
3168
- return r.id = "".concat(i, "-canvas"), a.appendChild(r), t.editorContainer = a, new Promise((n) => {
3191
+ return r.id = "".concat(o, "-canvas"), a.appendChild(r), t.editorContainer = a, new Promise((n) => {
3169
3192
  t._onReadyCallback = n;
3170
- var o = new Bt(r.id, t);
3171
- window[i] = o;
3193
+ var i = new te(r.id, t);
3194
+ window[o] = i;
3172
3195
  });
3173
3196
  }
3174
3197
  export {
3175
- Wt as default
3198
+ Yt as default
3176
3199
  };
3177
3200
  //# sourceMappingURL=main.js.map