@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.
- package/dist/main.js +467 -444
- 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,
|
|
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(
|
|
8
|
+
function le(o, e, t, a, r, n, i) {
|
|
9
9
|
try {
|
|
10
|
-
var s =
|
|
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(
|
|
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 =
|
|
21
|
-
function
|
|
22
|
-
le(n, a, r,
|
|
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,
|
|
25
|
+
le(n, a, r, i, s, "throw", c);
|
|
26
26
|
}
|
|
27
|
-
|
|
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:
|
|
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
|
-
}),
|
|
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
|
|
106
|
+
var i = new Z(n, {
|
|
107
107
|
canvas: this.canvas
|
|
108
108
|
});
|
|
109
|
-
this.canvas.setActiveObject(
|
|
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
|
|
190
|
-
if (!
|
|
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(
|
|
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:
|
|
226
|
+
repeat: i
|
|
227
227
|
} = e;
|
|
228
|
-
!a && !r ||
|
|
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),
|
|
358
|
-
n[
|
|
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:
|
|
412
|
+
error: i
|
|
413
413
|
} = t, s = this._callbacks.get(a);
|
|
414
|
-
s && (r ? s.resolve(n) : s.reject(new Error(
|
|
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,
|
|
425
|
+
return new Promise((n, i) => {
|
|
426
426
|
this._callbacks.set(r, {
|
|
427
427
|
resolve: n,
|
|
428
|
-
reject:
|
|
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
|
|
444
|
-
function U(
|
|
445
|
-
var n =
|
|
446
|
-
|
|
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(
|
|
449
|
-
var n =
|
|
450
|
-
|
|
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(
|
|
453
|
-
var n =
|
|
454
|
-
|
|
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(
|
|
459
|
-
var n =
|
|
460
|
-
|
|
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:
|
|
467
|
-
sizeY:
|
|
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:
|
|
474
|
-
sizeY:
|
|
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:
|
|
481
|
-
sizeY:
|
|
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:
|
|
488
|
-
sizeY:
|
|
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:
|
|
496
|
-
sizeY:
|
|
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:
|
|
503
|
-
sizeY:
|
|
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:
|
|
511
|
-
sizeY:
|
|
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:
|
|
518
|
-
sizeY:
|
|
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(
|
|
547
|
+
function ve(o, e, t, a, r, n, i) {
|
|
548
548
|
try {
|
|
549
|
-
var s =
|
|
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(
|
|
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 =
|
|
560
|
-
function
|
|
561
|
-
ve(n, a, r,
|
|
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,
|
|
564
|
+
ve(n, a, r, i, s, "throw", c);
|
|
565
565
|
}
|
|
566
|
-
|
|
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
|
|
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
|
|
644
|
+
return o.apply(this, arguments);
|
|
645
645
|
}
|
|
646
646
|
return e;
|
|
647
647
|
}(),
|
|
648
|
-
delete: (
|
|
649
|
-
|
|
648
|
+
delete: (o) => {
|
|
649
|
+
o.deletionManager.deleteSelectedObjects();
|
|
650
650
|
},
|
|
651
|
-
lock: (
|
|
652
|
-
|
|
651
|
+
lock: (o) => {
|
|
652
|
+
o.objectLockManager.lockObject();
|
|
653
653
|
},
|
|
654
|
-
unlock: (
|
|
655
|
-
|
|
654
|
+
unlock: (o) => {
|
|
655
|
+
o.objectLockManager.unlockObject();
|
|
656
656
|
},
|
|
657
|
-
bringForward: (
|
|
658
|
-
|
|
657
|
+
bringForward: (o) => {
|
|
658
|
+
o.layerManager.bringForward();
|
|
659
659
|
},
|
|
660
|
-
bringToFront: (
|
|
661
|
-
|
|
660
|
+
bringToFront: (o) => {
|
|
661
|
+
o.layerManager.bringToFront();
|
|
662
662
|
},
|
|
663
|
-
sendToBack: (
|
|
664
|
-
|
|
663
|
+
sendToBack: (o) => {
|
|
664
|
+
o.layerManager.sendToBack();
|
|
665
665
|
},
|
|
666
|
-
sendBackwards: (
|
|
667
|
-
|
|
666
|
+
sendBackwards: (o) => {
|
|
667
|
+
o.layerManager.sendBackwards();
|
|
668
668
|
}
|
|
669
669
|
}
|
|
670
670
|
};
|
|
671
|
-
function me(
|
|
672
|
-
var t = Object.keys(
|
|
671
|
+
function me(o, e) {
|
|
672
|
+
var t = Object.keys(o);
|
|
673
673
|
if (Object.getOwnPropertySymbols) {
|
|
674
|
-
var a = Object.getOwnPropertySymbols(
|
|
674
|
+
var a = Object.getOwnPropertySymbols(o);
|
|
675
675
|
e && (a = a.filter(function(r) {
|
|
676
|
-
return Object.getOwnPropertyDescriptor(
|
|
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(
|
|
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(
|
|
686
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(
|
|
687
|
-
Object.defineProperty(
|
|
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
|
|
690
|
+
return o;
|
|
691
691
|
}
|
|
692
|
-
function ct(
|
|
693
|
-
return (e = ut(e)) in
|
|
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(
|
|
696
|
-
var e = dt(
|
|
695
|
+
function ut(o) {
|
|
696
|
+
var e = dt(o, "string");
|
|
697
697
|
return typeof e == "symbol" ? e : e + "";
|
|
698
698
|
}
|
|
699
|
-
function dt(
|
|
700
|
-
if (typeof
|
|
701
|
-
var t =
|
|
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(
|
|
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)(
|
|
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:
|
|
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(
|
|
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(), [, , , ,
|
|
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 +
|
|
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(
|
|
861
|
+
function fe(o, e, t, a, r, n, i) {
|
|
862
862
|
try {
|
|
863
|
-
var s =
|
|
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
|
|
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 =
|
|
874
|
-
function
|
|
875
|
-
fe(n, a, r,
|
|
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,
|
|
878
|
+
fe(n, a, r, i, s, "throw", c);
|
|
879
879
|
}
|
|
880
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
1025
|
-
|
|
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 =
|
|
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(
|
|
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 =
|
|
1060
|
-
function
|
|
1061
|
-
Me(n, a, r,
|
|
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,
|
|
1056
|
+
Me(n, a, r, i, s, "throw", c);
|
|
1065
1057
|
}
|
|
1066
|
-
|
|
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:
|
|
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
|
-
}),
|
|
1117
|
-
type:
|
|
1108
|
+
}), v = yield g.blob({
|
|
1109
|
+
type: i,
|
|
1118
1110
|
quality: 1
|
|
1119
1111
|
});
|
|
1120
|
-
d = URL.createObjectURL(
|
|
1112
|
+
d = URL.createObjectURL(v);
|
|
1121
1113
|
} else
|
|
1122
1114
|
throw new Error("ImportImage. Неверный тип источника изображения. Ожидается URL или объект File.");
|
|
1123
1115
|
t._createdBlobUrls.push(d);
|
|
1124
|
-
var
|
|
1125
|
-
if (
|
|
1126
|
-
var j = yield
|
|
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:
|
|
1134
|
-
height:
|
|
1125
|
+
width: f,
|
|
1126
|
+
height: p
|
|
1135
1127
|
} = h;
|
|
1136
|
-
if (
|
|
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",
|
|
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 =
|
|
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" && (
|
|
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(
|
|
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
|
|
1181
|
+
var i = yield a.editor.workerManager.post("resizeImage", {
|
|
1191
1182
|
dataURL: e,
|
|
1192
|
-
maxWidth:
|
|
1193
|
-
maxHeight:
|
|
1183
|
+
maxWidth: N,
|
|
1184
|
+
maxHeight: D,
|
|
1194
1185
|
sizeType: r
|
|
1195
1186
|
});
|
|
1196
|
-
return
|
|
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:
|
|
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:
|
|
1227
|
-
width:
|
|
1217
|
+
top: v,
|
|
1218
|
+
width: m,
|
|
1228
1219
|
height: j
|
|
1229
|
-
} = c.getBoundingRect(),
|
|
1230
|
-
["image/jpg", "image/jpeg"].includes(d) && (
|
|
1231
|
-
var
|
|
1232
|
-
|
|
1233
|
-
width:
|
|
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
|
-
}),
|
|
1238
|
-
var y =
|
|
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 =
|
|
1241
|
-
|
|
1231
|
+
var S = f.toSVG();
|
|
1232
|
+
f.dispose();
|
|
1242
1233
|
var O = L._exportSVGStringAsFile(S, {
|
|
1243
1234
|
exportAsBase64: n,
|
|
1244
|
-
exportAsBlob:
|
|
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((
|
|
1255
|
-
|
|
1245
|
+
var w = yield new Promise((C) => {
|
|
1246
|
+
f.getElement().toBlob(C);
|
|
1256
1247
|
});
|
|
1257
|
-
if (
|
|
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,
|
|
1273
|
-
orientation:
|
|
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: [
|
|
1266
|
+
format: [H, W]
|
|
1276
1267
|
});
|
|
1277
|
-
if (
|
|
1278
|
-
var
|
|
1279
|
-
image:
|
|
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
|
|
1277
|
+
var Ne = _.output("blob"), De = new File([Ne], a, {
|
|
1287
1278
|
type: "application/pdf"
|
|
1288
1279
|
}), oe = {
|
|
1289
|
-
image:
|
|
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:
|
|
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:
|
|
1338
|
+
exportAsBase64: i,
|
|
1348
1339
|
exportAsBlob: s,
|
|
1349
1340
|
fileName: r
|
|
1350
|
-
}),
|
|
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",
|
|
1347
|
+
return c.fire("editor:object-exported", v), v;
|
|
1357
1348
|
}
|
|
1358
|
-
if (
|
|
1359
|
-
var
|
|
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:
|
|
1363
|
-
}, [
|
|
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",
|
|
1360
|
+
return c.fire("editor:object-exported", f), f;
|
|
1370
1361
|
}
|
|
1371
|
-
var
|
|
1372
|
-
|
|
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
|
|
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:
|
|
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
|
-
} =
|
|
1472
|
-
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(l),
|
|
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:
|
|
1484
|
-
} = this.getObjectDefaultCoords(
|
|
1485
|
-
n.setViewportTransform([
|
|
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:
|
|
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
|
-
} =
|
|
1515
|
-
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(l),
|
|
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:
|
|
1527
|
-
} = this.getObjectDefaultCoords(
|
|
1528
|
-
n.setViewportTransform([
|
|
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(),
|
|
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 -
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1598
|
-
console.log("adaptCanvasToContainer newWidth", n), console.log("adaptCanvasToContainer newHeight",
|
|
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:
|
|
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,
|
|
1709
|
+
} = this.editor, i = [];
|
|
1699
1710
|
switch (e) {
|
|
1700
1711
|
case "canvas":
|
|
1701
|
-
|
|
1712
|
+
i.push(r.lowerCanvasEl, r.upperCanvasEl);
|
|
1702
1713
|
break;
|
|
1703
1714
|
case "wrapper":
|
|
1704
|
-
|
|
1715
|
+
i.push(r.wrapperEl);
|
|
1705
1716
|
break;
|
|
1706
1717
|
case "container":
|
|
1707
|
-
|
|
1718
|
+
i.push(n);
|
|
1708
1719
|
break;
|
|
1709
1720
|
default:
|
|
1710
|
-
|
|
1721
|
+
i.push(r.lowerCanvasEl, r.upperCanvasEl);
|
|
1711
1722
|
}
|
|
1712
1723
|
var s = t === "width" ? "width" : "height";
|
|
1713
1724
|
if (typeof a == "string") {
|
|
1714
|
-
|
|
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
|
-
|
|
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:
|
|
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,
|
|
1775
|
+
var g = Math.min(l, N), v = Math.min(d, D);
|
|
1765
1776
|
if (t) {
|
|
1766
1777
|
var {
|
|
1767
|
-
width:
|
|
1778
|
+
width: m,
|
|
1768
1779
|
height: j
|
|
1769
|
-
} = n,
|
|
1770
|
-
g =
|
|
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(
|
|
1785
|
+
}), this.setResolutionHeight(v, {
|
|
1775
1786
|
withoutSave: !0
|
|
1776
|
-
}), (l > s || d > c) &&
|
|
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:
|
|
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:
|
|
1822
|
+
montageAreaHeight: i
|
|
1812
1823
|
}
|
|
1813
1824
|
} = this.editor;
|
|
1814
1825
|
a.resetZoom(), this.setResolutionWidth(n, {
|
|
1815
1826
|
withoutSave: !0
|
|
1816
|
-
}), this.setResolutionHeight(
|
|
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
|
|
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,
|
|
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] :
|
|
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,
|
|
1891
|
+
} = this.editor, i = a.getZoom(), {
|
|
1881
1892
|
x: s = t.pointX,
|
|
1882
1893
|
y: c = t.pointY
|
|
1883
|
-
} = a.getCenterPoint(), u = Number((
|
|
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:
|
|
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(
|
|
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:
|
|
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] :
|
|
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
|
|
1954
|
-
n.rotate(
|
|
1955
|
-
angle:
|
|
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,
|
|
2003
|
-
|
|
2013
|
+
} = this.editor, i = e || r.getActiveObject();
|
|
2014
|
+
i && (i.type === "activeselection" ? i.getObjects().forEach((s) => {
|
|
2004
2015
|
s.set("opacity", t);
|
|
2005
|
-
}) :
|
|
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:
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
imageObject:
|
|
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
|
-
|
|
2049
|
+
g.scale(v), n.centerObject(g);
|
|
2039
2050
|
});
|
|
2040
|
-
var
|
|
2051
|
+
var d = new Z(l, {
|
|
2041
2052
|
canvas: n
|
|
2042
2053
|
});
|
|
2043
|
-
n.setActiveObject(
|
|
2054
|
+
n.setActiveObject(d);
|
|
2044
2055
|
} else {
|
|
2045
|
-
var
|
|
2046
|
-
|
|
2047
|
-
imageObject: c,
|
|
2056
|
+
var h = s.calculateScaleFactor({
|
|
2057
|
+
imageObject: u,
|
|
2048
2058
|
scaleType: t
|
|
2049
2059
|
});
|
|
2050
|
-
|
|
2060
|
+
u.scale(h), n.centerObject(u);
|
|
2051
2061
|
}
|
|
2052
|
-
n.renderAll(), a ||
|
|
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
|
-
|
|
2089
|
+
imageManager: i,
|
|
2090
|
+
historyManager: s,
|
|
2080
2091
|
options: {
|
|
2081
|
-
scaleType:
|
|
2092
|
+
scaleType: c
|
|
2082
2093
|
}
|
|
2083
|
-
} = this.editor,
|
|
2084
|
-
if (!(!
|
|
2085
|
-
if (
|
|
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(
|
|
2102
|
+
}), r.centerObject(u), r.renderAll()), t)
|
|
2092
2103
|
this.fitObject({
|
|
2093
|
-
object:
|
|
2104
|
+
object: u,
|
|
2094
2105
|
withoutSave: !0
|
|
2095
2106
|
});
|
|
2096
2107
|
else {
|
|
2097
2108
|
var {
|
|
2098
|
-
width:
|
|
2099
|
-
height:
|
|
2109
|
+
width: l,
|
|
2110
|
+
height: d
|
|
2100
2111
|
} = n, {
|
|
2101
|
-
width:
|
|
2102
|
-
height:
|
|
2103
|
-
} =
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
scaleType: s
|
|
2112
|
+
width: h,
|
|
2113
|
+
height: g
|
|
2114
|
+
} = u, v = i.calculateScaleFactor({
|
|
2115
|
+
imageObject: u,
|
|
2116
|
+
scaleType: c
|
|
2107
2117
|
});
|
|
2108
|
-
|
|
2109
|
-
object:
|
|
2118
|
+
c === "contain" && v < 1 || c === "cover" && (h > l || g > d) ? this.fitObject({
|
|
2119
|
+
object: u,
|
|
2110
2120
|
withoutSave: !0
|
|
2111
|
-
}) :
|
|
2121
|
+
}) : u.set({
|
|
2112
2122
|
scaleX: 1,
|
|
2113
2123
|
scaleY: 1
|
|
2114
2124
|
});
|
|
2115
2125
|
}
|
|
2116
|
-
|
|
2126
|
+
u.set({
|
|
2117
2127
|
flipX: !1,
|
|
2118
2128
|
flipY: !1,
|
|
2119
2129
|
angle: 0
|
|
2120
|
-
}), r.centerObject(
|
|
2130
|
+
}), r.centerObject(u), r.renderAll(), s.resumeHistory(), a || s.saveState(), r.fire("editor:object-reset");
|
|
2121
2131
|
}
|
|
2122
2132
|
}
|
|
2123
2133
|
}
|
|
2124
|
-
class
|
|
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:
|
|
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:
|
|
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
|
|
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((
|
|
2252
|
-
a.bringObjectToFront(
|
|
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" ?
|
|
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:
|
|
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(
|
|
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:
|
|
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" ?
|
|
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)),
|
|
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
|
|
2344
|
+
return i = d, 1;
|
|
2335
2345
|
}, c = 0; c < a.length && !s(c); c += 1)
|
|
2336
2346
|
;
|
|
2337
|
-
if (
|
|
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 <
|
|
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))),
|
|
2357
|
-
e.moveObjectTo(r[
|
|
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"],
|
|
2361
|
-
function je(
|
|
2362
|
-
var t = Object.keys(
|
|
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(
|
|
2374
|
+
var a = Object.getOwnPropertySymbols(o);
|
|
2365
2375
|
e && (a = a.filter(function(r) {
|
|
2366
|
-
return Object.getOwnPropertyDescriptor(
|
|
2376
|
+
return Object.getOwnPropertyDescriptor(o, r).enumerable;
|
|
2367
2377
|
})), t.push.apply(t, a);
|
|
2368
2378
|
}
|
|
2369
2379
|
return t;
|
|
2370
2380
|
}
|
|
2371
|
-
function
|
|
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
|
-
|
|
2376
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(
|
|
2377
|
-
Object.defineProperty(
|
|
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
|
|
2390
|
+
return o;
|
|
2381
2391
|
}
|
|
2382
|
-
function
|
|
2383
|
-
return (e =
|
|
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
|
|
2386
|
-
var e =
|
|
2395
|
+
function At(o) {
|
|
2396
|
+
var e = wt(o, "string");
|
|
2387
2397
|
return typeof e == "symbol" ? e : e + "";
|
|
2388
2398
|
}
|
|
2389
|
-
function
|
|
2390
|
-
if (typeof
|
|
2391
|
-
var t =
|
|
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(
|
|
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)(
|
|
2407
|
+
return (e === "string" ? String : Number)(o);
|
|
2398
2408
|
}
|
|
2399
|
-
function
|
|
2400
|
-
if (
|
|
2401
|
-
var t, a, r =
|
|
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(
|
|
2404
|
-
for (a = 0; a < n.length; a++) t = n[a], e.indexOf(t) === -1 && {}.propertyIsEnumerable.call(
|
|
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
|
|
2409
|
-
if (
|
|
2418
|
+
function Ct(o, e) {
|
|
2419
|
+
if (o == null) return {};
|
|
2410
2420
|
var t = {};
|
|
2411
|
-
for (var a in
|
|
2421
|
+
for (var a in o) if ({}.hasOwnProperty.call(o, a)) {
|
|
2412
2422
|
if (e.indexOf(a) !== -1) continue;
|
|
2413
|
-
t[a] =
|
|
2423
|
+
t[a] = o[a];
|
|
2414
2424
|
}
|
|
2415
2425
|
return t;
|
|
2416
2426
|
}
|
|
2417
|
-
class
|
|
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:
|
|
2459
|
+
height: i = 100,
|
|
2450
2460
|
fill: s = "blue"
|
|
2451
|
-
} = e, c =
|
|
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
|
|
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:
|
|
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:
|
|
2487
|
-
} = e, s =
|
|
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
|
|
2502
|
+
} = this.editor, d = new Be(V({
|
|
2493
2503
|
id: t,
|
|
2494
2504
|
left: a,
|
|
2495
2505
|
top: r,
|
|
2496
|
-
fill:
|
|
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:
|
|
2532
|
+
height: i = 100,
|
|
2523
2533
|
fill: s = "yellow"
|
|
2524
|
-
} = e, c =
|
|
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
|
|
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:
|
|
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(
|
|
2550
|
+
function ye(o, e, t, a, r, n, i) {
|
|
2541
2551
|
try {
|
|
2542
|
-
var s =
|
|
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
|
|
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 =
|
|
2553
|
-
function
|
|
2554
|
-
ye(n, a, r,
|
|
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,
|
|
2567
|
+
ye(n, a, r, i, s, "throw", c);
|
|
2558
2568
|
}
|
|
2559
|
-
|
|
2569
|
+
i(void 0);
|
|
2560
2570
|
});
|
|
2561
2571
|
};
|
|
2562
2572
|
}
|
|
2563
|
-
class
|
|
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
|
|
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(),
|
|
2612
|
+
var n = r.toCanvasElement(), i = yield new Promise((u) => {
|
|
2603
2613
|
n.toBlob(u);
|
|
2604
2614
|
}), s = new ClipboardItem({
|
|
2605
|
-
[
|
|
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
|
|
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
|
|
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,
|
|
2672
|
-
if (!(!
|
|
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
|
-
|
|
2684
|
-
var c = !t && ["activeselection", "group"].includes(
|
|
2685
|
-
c &&
|
|
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:
|
|
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
|
|
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(
|
|
2720
|
-
s.set(
|
|
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
|
|
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
|
|
2757
|
-
|
|
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
|
|
2779
|
-
a.remove(n),
|
|
2780
|
-
var s = new Z(
|
|
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
|
|
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),
|
|
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:
|
|
2823
|
+
object: i,
|
|
2814
2824
|
skipInnerObjects: !0,
|
|
2815
2825
|
withoutSave: !0
|
|
2816
|
-
}), e.setActiveObject(
|
|
2817
|
-
selected:
|
|
2826
|
+
}), e.setActiveObject(i), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
|
|
2827
|
+
selected: i
|
|
2818
2828
|
});
|
|
2819
2829
|
}
|
|
2820
2830
|
}
|
|
2821
|
-
class
|
|
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((
|
|
2847
|
-
n != null && n.length && (r.suspendHistory(), n.forEach((
|
|
2848
|
-
if (
|
|
2849
|
-
this.ungroup(
|
|
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(
|
|
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
|
|
2866
|
+
function pe(o, e, t, a, r, n, i) {
|
|
2857
2867
|
try {
|
|
2858
|
-
var s =
|
|
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
|
|
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 =
|
|
2869
|
-
function
|
|
2870
|
-
|
|
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
|
-
|
|
2883
|
+
pe(n, a, r, i, s, "throw", c);
|
|
2874
2884
|
}
|
|
2875
|
-
|
|
2885
|
+
i(void 0);
|
|
2876
2886
|
});
|
|
2877
2887
|
};
|
|
2878
2888
|
}
|
|
2879
|
-
class
|
|
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 ||
|
|
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
|
|
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:
|
|
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
|
|
2919
|
+
}), e.transformManager = new jt({
|
|
2910
2920
|
editor: e
|
|
2911
|
-
}), e.canvasManager = new
|
|
2921
|
+
}), e.canvasManager = new Mt({
|
|
2912
2922
|
editor: e
|
|
2913
2923
|
}), e.imageManager = new L({
|
|
2914
2924
|
editor: e
|
|
2915
|
-
}), e.layerManager = new
|
|
2925
|
+
}), e.layerManager = new Y({
|
|
2916
2926
|
editor: e
|
|
2917
|
-
}), e.shapeManager = new
|
|
2927
|
+
}), e.shapeManager = new Nt({
|
|
2918
2928
|
editor: e
|
|
2919
|
-
}), e.interactionBlocker = new
|
|
2929
|
+
}), e.interactionBlocker = new yt({
|
|
2920
2930
|
editor: e
|
|
2921
|
-
}), e.clipboardManager = new
|
|
2931
|
+
}), e.clipboardManager = new Dt({
|
|
2922
2932
|
editor: e
|
|
2923
|
-
}), e.objectLockManager = new
|
|
2933
|
+
}), e.objectLockManager = new Lt({
|
|
2924
2934
|
editor: e
|
|
2925
|
-
}), e.groupingManager = new
|
|
2935
|
+
}), e.groupingManager = new Ot({
|
|
2926
2936
|
editor: e
|
|
2927
|
-
}), e.selectionManager = new
|
|
2937
|
+
}), e.selectionManager = new Tt({
|
|
2928
2938
|
editor: e
|
|
2929
|
-
}), e.deletionManager = new
|
|
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(
|
|
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:
|
|
2939
|
-
contentType:
|
|
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:
|
|
2945
|
-
contentType:
|
|
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:
|
|
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
|
|
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(
|
|
3126
|
-
var t = Object.keys(
|
|
3148
|
+
function Ie(o, e) {
|
|
3149
|
+
var t = Object.keys(o);
|
|
3127
3150
|
if (Object.getOwnPropertySymbols) {
|
|
3128
|
-
var a = Object.getOwnPropertySymbols(
|
|
3151
|
+
var a = Object.getOwnPropertySymbols(o);
|
|
3129
3152
|
e && (a = a.filter(function(r) {
|
|
3130
|
-
return Object.getOwnPropertyDescriptor(
|
|
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(
|
|
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
|
-
|
|
3140
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(
|
|
3141
|
-
Object.defineProperty(
|
|
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
|
|
3167
|
+
return o;
|
|
3145
3168
|
}
|
|
3146
|
-
function
|
|
3147
|
-
return (e =
|
|
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
|
|
3150
|
-
var e =
|
|
3172
|
+
function Zt(o) {
|
|
3173
|
+
var e = zt(o, "string");
|
|
3151
3174
|
return typeof e == "symbol" ? e : e + "";
|
|
3152
3175
|
}
|
|
3153
|
-
function
|
|
3154
|
-
if (typeof
|
|
3155
|
-
var t =
|
|
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(
|
|
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)(
|
|
3184
|
+
return (e === "string" ? String : Number)(o);
|
|
3162
3185
|
}
|
|
3163
|
-
function
|
|
3164
|
-
var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, t = Se(Se({},
|
|
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(
|
|
3189
|
+
return Promise.reject(new Error('Контейнер с ID "'.concat(o, '" не найден.')));
|
|
3167
3190
|
var r = document.createElement("canvas");
|
|
3168
|
-
return r.id = "".concat(
|
|
3191
|
+
return r.id = "".concat(o, "-canvas"), a.appendChild(r), t.editorContainer = a, new Promise((n) => {
|
|
3169
3192
|
t._onReadyCallback = n;
|
|
3170
|
-
var
|
|
3171
|
-
window[
|
|
3193
|
+
var i = new te(r.id, t);
|
|
3194
|
+
window[o] = i;
|
|
3172
3195
|
});
|
|
3173
3196
|
}
|
|
3174
3197
|
export {
|
|
3175
|
-
|
|
3198
|
+
Yt as default
|
|
3176
3199
|
};
|
|
3177
3200
|
//# sourceMappingURL=main.js.map
|