@anu3ev/fabric-image-editor 0.1.34 → 0.1.35
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 +326 -400
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var
|
|
1
|
+
var Te = Object.defineProperty;
|
|
2
|
+
var G = Object.getOwnPropertySymbols;
|
|
3
|
+
var Me = Object.prototype.hasOwnProperty, fe = Object.prototype.propertyIsEnumerable;
|
|
4
|
+
var me = (o, e, t) => e in o ? Te(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t, T = (o, e) => {
|
|
5
5
|
for (var t in e || (e = {}))
|
|
6
|
-
|
|
7
|
-
if (
|
|
8
|
-
for (var t of
|
|
9
|
-
|
|
6
|
+
Me.call(e, t) && me(o, t, e[t]);
|
|
7
|
+
if (G)
|
|
8
|
+
for (var t of G(e))
|
|
9
|
+
fe.call(e, t) && me(o, t, e[t]);
|
|
10
10
|
return o;
|
|
11
11
|
};
|
|
12
|
-
var
|
|
12
|
+
var X = (o, e) => {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var a in o)
|
|
15
|
+
Me.call(o, a) && e.indexOf(a) < 0 && (t[a] = o[a]);
|
|
16
|
+
if (o != null && G)
|
|
17
|
+
for (var a of G(o))
|
|
18
|
+
e.indexOf(a) < 0 && fe.call(o, a) && (t[a] = o[a]);
|
|
19
|
+
return t;
|
|
20
|
+
};
|
|
21
|
+
var $ = (o, e, t) => new Promise((a, r) => {
|
|
13
22
|
var i = (c) => {
|
|
14
23
|
try {
|
|
15
24
|
s(t.next(c));
|
|
@@ -25,11 +34,11 @@ var J = (o, e, t) => new Promise((a, r) => {
|
|
|
25
34
|
}, s = (c) => c.done ? a(c.value) : Promise.resolve(c.value).then(i, n);
|
|
26
35
|
s((t = t.apply(o, e)).next());
|
|
27
36
|
});
|
|
28
|
-
import { ActiveSelection as
|
|
29
|
-
import { create as
|
|
30
|
-
var
|
|
37
|
+
import { ActiveSelection as R, util as W, controlsUtils as Oe, InteractiveFabricObject as ke, loadSVGFromURL as xe, FabricImage as q, Point as Be, Rect as Ze, Circle as ze, Triangle as Ue, Group as Ye, Canvas as He, Pattern as Pe } from "fabric";
|
|
38
|
+
import { create as Re } from "jsondiffpatch";
|
|
39
|
+
var We = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", C = function() {
|
|
31
40
|
for (var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 21, t = "", a = crypto.getRandomValues(new Uint8Array(e |= 0)); e--; )
|
|
32
|
-
t +=
|
|
41
|
+
t += We[a[e] & 63];
|
|
33
42
|
return t;
|
|
34
43
|
};
|
|
35
44
|
class P {
|
|
@@ -86,7 +95,7 @@ class P {
|
|
|
86
95
|
this.canvas.setActiveObject(r[0]);
|
|
87
96
|
return;
|
|
88
97
|
}
|
|
89
|
-
const i = new
|
|
98
|
+
const i = new R(r, {
|
|
90
99
|
canvas: this.canvas
|
|
91
100
|
});
|
|
92
101
|
this.canvas.setActiveObject(i), this.canvas.requestRenderAll();
|
|
@@ -173,7 +182,7 @@ class P {
|
|
|
173
182
|
* @param {String} event.code — код клавиши
|
|
174
183
|
*/
|
|
175
184
|
handleUndoRedoEvent(e) {
|
|
176
|
-
return
|
|
185
|
+
return $(this, null, function* () {
|
|
177
186
|
const { ctrlKey: t, metaKey: a, code: r, repeat: i } = e;
|
|
178
187
|
!t && !a || i || this.isUndoRedoKeyPressed || (r === "KeyZ" ? (e.preventDefault(), this.isUndoRedoKeyPressed = !0, yield this.editor.historyManager.undo()) : r === "KeyY" && (e.preventDefault(), this.isUndoRedoKeyPressed = !0, yield this.editor.historyManager.redo()));
|
|
179
188
|
});
|
|
@@ -320,7 +329,7 @@ class P {
|
|
|
320
329
|
};
|
|
321
330
|
}
|
|
322
331
|
}
|
|
323
|
-
class
|
|
332
|
+
class _e {
|
|
324
333
|
/**
|
|
325
334
|
* @description Класс для динамической загрузки внешних модулей.
|
|
326
335
|
*/
|
|
@@ -338,7 +347,7 @@ class Ve {
|
|
|
338
347
|
return this.loaders[e] ? (this.cache.has(e) || this.cache.set(e, this.loaders[e]()), this.cache.get(e)) : Promise.reject(new Error('Unknown module "'.concat(e, '"')));
|
|
339
348
|
}
|
|
340
349
|
}
|
|
341
|
-
class
|
|
350
|
+
class Fe {
|
|
342
351
|
/**
|
|
343
352
|
* @param {string|URL} [scriptUrl] — URL скрипта воркера.
|
|
344
353
|
* По-умолчанию использует файл рядом с этим модулем
|
|
@@ -397,50 +406,50 @@ class Ge {
|
|
|
397
406
|
this.worker.terminate();
|
|
398
407
|
}
|
|
399
408
|
}
|
|
400
|
-
var I = 12,
|
|
401
|
-
function
|
|
402
|
-
var i = I, n =
|
|
403
|
-
o.save(), o.translate(e, t), o.rotate(
|
|
404
|
-
}
|
|
405
|
-
function Me(o, e, t, a, r) {
|
|
406
|
-
var i = te, n = ae, s = Qe;
|
|
407
|
-
o.save(), o.translate(e, t), o.rotate(_.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-8 / 2, -20 / 2, i, n, s), o.fill(), o.stroke(), o.restore();
|
|
409
|
+
var I = 12, Ve = 2, te = 8, ae = 20, Ge = 100, re = 20, ie = 8, Xe = 100, ne = 32, se = 1, Qe = "#2B2D33", oe = "#3D8BF4", ce = "#FFFFFF";
|
|
410
|
+
function Q(o, e, t, a, r) {
|
|
411
|
+
var i = I, n = Ve;
|
|
412
|
+
o.save(), o.translate(e, t), o.rotate(W.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-12 / 2, -12 / 2, i, i, n), o.fill(), o.stroke(), o.restore();
|
|
408
413
|
}
|
|
409
414
|
function je(o, e, t, a, r) {
|
|
410
|
-
var i =
|
|
411
|
-
o.save(), o.translate(e, t), o.rotate(
|
|
415
|
+
var i = te, n = ae, s = Ge;
|
|
416
|
+
o.save(), o.translate(e, t), o.rotate(W.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-8 / 2, -20 / 2, i, n, s), o.fill(), o.stroke(), o.restore();
|
|
412
417
|
}
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
418
|
+
function ye(o, e, t, a, r) {
|
|
419
|
+
var i = re, n = ie, s = Xe;
|
|
420
|
+
o.save(), o.translate(e, t), o.rotate(W.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-20 / 2, -8 / 2, i, n, s), o.fill(), o.stroke(), o.restore();
|
|
421
|
+
}
|
|
422
|
+
var Je = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", Ne = new Image();
|
|
423
|
+
Ne.src = Je;
|
|
424
|
+
function Ke(o, e, t, a, r) {
|
|
416
425
|
var i = ne, n = i / 2;
|
|
417
|
-
o.save(), o.translate(e, t), o.rotate(
|
|
426
|
+
o.save(), o.translate(e, t), o.rotate(W.degreesToRadians(r.angle)), o.fillStyle = Qe, o.beginPath(), o.arc(0, 0, n, 0, 2 * Math.PI), o.fill(), o.drawImage(Ne, -16 / 2, -16 / 2, n, n), o.restore();
|
|
418
427
|
}
|
|
419
|
-
var
|
|
428
|
+
var $e = {
|
|
420
429
|
// Угловые точки
|
|
421
430
|
tl: {
|
|
422
|
-
render:
|
|
431
|
+
render: Q,
|
|
423
432
|
sizeX: I,
|
|
424
433
|
sizeY: I,
|
|
425
434
|
offsetX: 0,
|
|
426
435
|
offsetY: 0
|
|
427
436
|
},
|
|
428
437
|
tr: {
|
|
429
|
-
render:
|
|
438
|
+
render: Q,
|
|
430
439
|
sizeX: I,
|
|
431
440
|
sizeY: I,
|
|
432
441
|
offsetX: 0,
|
|
433
442
|
offsetY: 0
|
|
434
443
|
},
|
|
435
444
|
bl: {
|
|
436
|
-
render:
|
|
445
|
+
render: Q,
|
|
437
446
|
sizeX: I,
|
|
438
447
|
sizeY: I,
|
|
439
448
|
offsetX: 0,
|
|
440
449
|
offsetY: 0
|
|
441
450
|
},
|
|
442
451
|
br: {
|
|
443
|
-
render:
|
|
452
|
+
render: Q,
|
|
444
453
|
sizeX: I,
|
|
445
454
|
sizeY: I,
|
|
446
455
|
offsetX: 0,
|
|
@@ -448,14 +457,14 @@ var et = {
|
|
|
448
457
|
},
|
|
449
458
|
// Середина вертикалей
|
|
450
459
|
ml: {
|
|
451
|
-
render:
|
|
460
|
+
render: je,
|
|
452
461
|
sizeX: te,
|
|
453
462
|
sizeY: ae,
|
|
454
463
|
offsetX: 0,
|
|
455
464
|
offsetY: 0
|
|
456
465
|
},
|
|
457
466
|
mr: {
|
|
458
|
-
render:
|
|
467
|
+
render: je,
|
|
459
468
|
sizeX: te,
|
|
460
469
|
sizeY: ae,
|
|
461
470
|
offsetX: 0,
|
|
@@ -463,14 +472,14 @@ var et = {
|
|
|
463
472
|
},
|
|
464
473
|
// Середина горизонталей
|
|
465
474
|
mt: {
|
|
466
|
-
render:
|
|
475
|
+
render: ye,
|
|
467
476
|
sizeX: re,
|
|
468
477
|
sizeY: ie,
|
|
469
478
|
offsetX: 0,
|
|
470
479
|
offsetY: 0
|
|
471
480
|
},
|
|
472
481
|
mb: {
|
|
473
|
-
render:
|
|
482
|
+
render: ye,
|
|
474
483
|
sizeX: re,
|
|
475
484
|
sizeY: ie,
|
|
476
485
|
offsetX: 0,
|
|
@@ -478,17 +487,17 @@ var et = {
|
|
|
478
487
|
},
|
|
479
488
|
// Специальный «rotate» контрол
|
|
480
489
|
mtr: {
|
|
481
|
-
render:
|
|
490
|
+
render: Ke,
|
|
482
491
|
sizeX: ne,
|
|
483
492
|
sizeY: ne,
|
|
484
493
|
offsetX: 0,
|
|
485
494
|
offsetY: -32
|
|
486
495
|
}
|
|
487
496
|
};
|
|
488
|
-
class
|
|
497
|
+
class qe {
|
|
489
498
|
static apply() {
|
|
490
|
-
var e =
|
|
491
|
-
Object.entries(
|
|
499
|
+
var e = Oe.createObjectDefaultControls();
|
|
500
|
+
Object.entries($e).forEach((t) => {
|
|
492
501
|
var [a, r] = t;
|
|
493
502
|
Object.assign(e[a], {
|
|
494
503
|
render: r.render,
|
|
@@ -497,11 +506,11 @@ class tt {
|
|
|
497
506
|
offsetX: r.offsetX,
|
|
498
507
|
offsetY: r.offsetY
|
|
499
508
|
});
|
|
500
|
-
}),
|
|
509
|
+
}), ke.ownDefaults.controls = e;
|
|
501
510
|
}
|
|
502
511
|
}
|
|
503
|
-
var
|
|
504
|
-
function
|
|
512
|
+
var et = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNi44NzUgMi41YS42MjUuNjI1IDAgMCAwLS42MjUuNjI0VjYuMjVIMy4xMjVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2MTBjMCAuMzQ1LjI4LjYyNS42MjUuNjI1aDEwYy4zNDUgMCAuNjI1LS4yOC42MjUtLjYyNXYtMy4xMjZoMy4xMjVjLjM0NSAwIC42MjUtLjI4LjYyNS0uNjI1di0xMGEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTEwWm02Ljg3NSAxMGgyLjVWMy43NUg3LjV2Mi41aDUuNjI1Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NS42MjRabS0xMCAzLjc1VjcuNWg4Ljc1djguNzVIMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", tt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDcuNWMwLS42OS41Ni0xLjI1IDEuMjUtMS4yNWgxMi41Yy42OSAwIDEuMjUuNTYgMS4yNSAxLjI1djguNzVjMCAuNjktLjU2IDEuMjUtMS4yNSAxLjI1SDMuNzVjLS42OSAwLTEuMjUtLjU2LTEuMjUtMS4yNVY3LjVabTEzLjc1IDBIMy43NXY4Ljc1aDEyLjVWNy41WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMS44NzVhMi4xODggMi4xODggMCAwIDAtMi4xODggMi4xODh2Mi44MTJhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyYTMuNDM3IDMuNDM3IDAgMSAxIDYuODc1IDB2Mi44MTNhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyQTIuMTg4IDIuMTg4IDAgMCAwIDEwIDEuODc2WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEwIDEyLjgxM2EuOTM3LjkzNyAwIDEgMCAwLTEuODc1LjkzNy45MzcgMCAwIDAgMCAxLjg3NFoiLz48L3N2Zz4=", at = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE2LjI1IDYuMjVINy41VjQuMzc1YTIuNSAyLjUgMCAwIDEgMi41LTIuNWMxLjIgMCAyLjI4MS44NiAyLjUxMiAyYS42MjUuNjI1IDAgMCAwIDEuMjI2LS4yNWMtLjM1NC0xLjczOC0xLjkyNS0zLTMuNzM4LTNhMy43NTQgMy43NTQgMCAwIDAtMy43NSAzLjc1VjYuMjVoLTIuNUExLjI1IDEuMjUgMCAwIDAgMi41IDcuNXY4Ljc1YTEuMjUgMS4yNSAwIDAgMCAxLjI1IDEuMjVoMTIuNWExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjcuNWExLjI1IDEuMjUgMCAwIDAtMS4yNS0xLjI1Wm0wIDEwSDMuNzVWNy41aDEyLjV2OC43NVptLTUuMzEzLTQuMzc1YS45MzcuOTM3IDAgMSAxLTEuODc0IDAgLjkzNy45MzcgMCAwIDEgMS44NzQgMFoiLz48L3N2Zz4K", rt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTIuNSA4LjEyNSAxMCAxMi41bDcuNS00LjM3NUwxMCAzLjc1IDIuNSA4LjEyNVoiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjY4NSAzLjIxYS42MjUuNjI1IDAgMCAxIC42MyAwbDcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOGw3LjUtNC4zNzVaTTMuNzQgOC4xMjUgMTAgMTEuNzc2bDYuMjYtMy42NTFMMTAgNC40NzQgMy43NCA4LjEyNVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA5LjQ2YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDExLjc3NmwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA5LjQ2Wm0tMS42NiAyLjQxNUwxMCAxNS41MjZsNi4yNi0zLjY1MS0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNi0xLjk3NSAxLjE1MVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", it = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMy4yMWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDguMTI1IDEwIDExLjc3Nmw2LjI2LTMuNjUxTDEwIDQuNDc0IDMuNzQgOC4xMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjcxNCAxMCAxMCAxMi41bDQuMjg2LTIuNSAzLjIxNCAxLjg3NUwxMCAxNi4yNWwtNy41LTQuMzc1TDUuNzE0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDkuNDZhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgMTEuNzc2bDMuOTctMi4zMTZhLjYyNS42MjUgMCAwIDEgLjYzIDBsMy4yMTUgMS44NzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhMNS40IDkuNDZabS0xLjY2IDIuNDE1TDEwIDE1LjUyNmw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2LTEuOTc1IDEuMTUxWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", nt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTIuNSA2LjI1IDcuNSA0LjM3NSA3LjUtNC4zNzVMMTAgMS44NzUgMi41IDYuMjVaIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMS4zMzVhLjYyNS42MjUgMCAwIDEgLjYzIDBsNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4bDcuNS00LjM3NVpNMy43NCA2LjI1IDEwIDkuOTAxbDYuMjYtMy42NTFMMTAgMi41OTkgMy43NCA2LjI1WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDExLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCAxMy42NTFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgMTEuMzM1Wk0zLjc0IDEzLjc1IDEwIDE3LjQwMWw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTMuNzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgNy41ODVhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgOS45MDFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgNy41ODVaTTMuNzQgMTAgMTAgMTMuNjUxIDE2LjI2IDEwbC0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNkwzLjc0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", st = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMS45NiAxMy40MzVhLjYyNS42MjUgMCAwIDEgLjg1NS0uMjI1TDEwIDE3LjQwMWw3LjE4NS00LjE5YS42MjUuNjI1IDAgMCAxIC42MyAxLjA3OWwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEtLjIyNS0uODU1Wk05LjY4NSAxLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDYuMjUgMTAgOS45MDFsNi4yNi0zLjY1MUwxMCAyLjU5OSAzLjc0IDYuMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im01LjcxNCAxMS44NzUgNC4yODYgMi41IDQuMjg2LTIuNUwxNy41IDEzLjc1IDEwIDE4LjEyNSAyLjUgMTMuNzVsMy4yMTQtMS44NzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgMTEuMzM1YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDEzLjY1MWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCAxMS4zMzVaTTMuNzQgMTMuNzUgMTAgMTcuNDAxbDYuMjYtMy42NTEtMS45NzQtMS4xNTEtMy45NzEgMi4zMTZhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTMuOTctMi4zMTZMMy43NCAxMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA3LjU4NWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCA5LjkwMWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA3LjU4NVpNMy43NCAxMCAxMCAxMy42NTEgMTYuMjYgMTBsLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTBaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=", ot = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0VDNEU0MCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4xMjUgMS4yNUExLjg3NSAxLjg3NSAwIDAgMCA2LjI1IDMuMTI1di42MjVIMy4xMjVhLjYyNS42MjUgMCAwIDAgMCAxLjI1aC42MjV2MTEuMjVBMS4yNSAxLjI1IDAgMCAwIDUgMTcuNWgxMGExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjVoLjYyNWEuNjI1LjYyNSAwIDAgMCAwLTEuMjVIMTMuNzV2LS42MjVhMS44NzUgMS44NzUgMCAwIDAtMS44NzUtMS44NzVoLTMuNzVabTQuMzc1IDIuNXYtLjYyNWEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2LjYyNWg1Wk01IDE2LjI1VjVoMTB2MTEuMjVINVpNOC4xMjUgNy41Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NWEuNjI1LjYyNSAwIDEgMS0xLjI1IDB2LTVjMC0uMzQ1LjI4LS42MjUuNjI1LS42MjVabTQuMzc1IDUuNjI1di01YS42MjUuNjI1IDAgMCAwLTEuMjUgMHY1YS42MjUuNjI1IDAgMSAwIDEuMjUgMFoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==";
|
|
513
|
+
function pe(o, e, t, a, r, i, n) {
|
|
505
514
|
try {
|
|
506
515
|
var s = o[i](n), c = s.value;
|
|
507
516
|
} catch (u) {
|
|
@@ -509,22 +518,22 @@ function ye(o, e, t, a, r, i, n) {
|
|
|
509
518
|
}
|
|
510
519
|
s.done ? e(c) : Promise.resolve(c).then(a, r);
|
|
511
520
|
}
|
|
512
|
-
function
|
|
521
|
+
function ct(o) {
|
|
513
522
|
return function() {
|
|
514
523
|
var e = this, t = arguments;
|
|
515
524
|
return new Promise(function(a, r) {
|
|
516
525
|
var i = o.apply(e, t);
|
|
517
526
|
function n(c) {
|
|
518
|
-
|
|
527
|
+
pe(i, a, r, n, s, "next", c);
|
|
519
528
|
}
|
|
520
529
|
function s(c) {
|
|
521
|
-
|
|
530
|
+
pe(i, a, r, n, s, "throw", c);
|
|
522
531
|
}
|
|
523
532
|
n(void 0);
|
|
524
533
|
});
|
|
525
534
|
};
|
|
526
535
|
}
|
|
527
|
-
const
|
|
536
|
+
const H = {
|
|
528
537
|
style: {
|
|
529
538
|
position: "absolute",
|
|
530
539
|
display: "none",
|
|
@@ -583,18 +592,18 @@ const Y = {
|
|
|
583
592
|
}],
|
|
584
593
|
offsetTop: 50,
|
|
585
594
|
icons: {
|
|
586
|
-
copyPaste:
|
|
587
|
-
delete:
|
|
588
|
-
lock:
|
|
589
|
-
unlock:
|
|
590
|
-
bringToFront:
|
|
591
|
-
sendToBack:
|
|
592
|
-
bringForward:
|
|
593
|
-
sendBackwards:
|
|
595
|
+
copyPaste: et,
|
|
596
|
+
delete: ot,
|
|
597
|
+
lock: tt,
|
|
598
|
+
unlock: at,
|
|
599
|
+
bringToFront: nt,
|
|
600
|
+
sendToBack: st,
|
|
601
|
+
bringForward: rt,
|
|
602
|
+
sendBackwards: it
|
|
594
603
|
},
|
|
595
604
|
handlers: {
|
|
596
605
|
copyPaste: function() {
|
|
597
|
-
var o =
|
|
606
|
+
var o = ct(function* (t) {
|
|
598
607
|
yield t.clipboardManager.copy(), yield t.clipboardManager.paste();
|
|
599
608
|
});
|
|
600
609
|
function e(t) {
|
|
@@ -625,7 +634,7 @@ const Y = {
|
|
|
625
634
|
}
|
|
626
635
|
}
|
|
627
636
|
};
|
|
628
|
-
function
|
|
637
|
+
function be(o, e) {
|
|
629
638
|
var t = Object.keys(o);
|
|
630
639
|
if (Object.getOwnPropertySymbols) {
|
|
631
640
|
var a = Object.getOwnPropertySymbols(o);
|
|
@@ -638,22 +647,22 @@ function pe(o, e) {
|
|
|
638
647
|
function j(o) {
|
|
639
648
|
for (var e = 1; e < arguments.length; e++) {
|
|
640
649
|
var t = arguments[e] != null ? arguments[e] : {};
|
|
641
|
-
e % 2 ?
|
|
642
|
-
|
|
643
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) :
|
|
650
|
+
e % 2 ? be(Object(t), !0).forEach(function(a) {
|
|
651
|
+
ut(o, a, t[a]);
|
|
652
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : be(Object(t)).forEach(function(a) {
|
|
644
653
|
Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
|
|
645
654
|
});
|
|
646
655
|
}
|
|
647
656
|
return o;
|
|
648
657
|
}
|
|
649
|
-
function
|
|
650
|
-
return (e =
|
|
658
|
+
function ut(o, e, t) {
|
|
659
|
+
return (e = dt(e)) in o ? Object.defineProperty(o, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : o[e] = t, o;
|
|
651
660
|
}
|
|
652
|
-
function
|
|
653
|
-
var e =
|
|
661
|
+
function dt(o) {
|
|
662
|
+
var e = lt(o, "string");
|
|
654
663
|
return typeof e == "symbol" ? e : e + "";
|
|
655
664
|
}
|
|
656
|
-
function
|
|
665
|
+
function lt(o, e) {
|
|
657
666
|
if (typeof o != "object" || !o) return o;
|
|
658
667
|
var t = o[Symbol.toPrimitive];
|
|
659
668
|
if (t !== void 0) {
|
|
@@ -663,7 +672,7 @@ function gt(o, e) {
|
|
|
663
672
|
}
|
|
664
673
|
return (e === "string" ? String : Number)(o);
|
|
665
674
|
}
|
|
666
|
-
class
|
|
675
|
+
class ht {
|
|
667
676
|
/**
|
|
668
677
|
* @param {object} options
|
|
669
678
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -675,11 +684,11 @@ class vt {
|
|
|
675
684
|
if (this.options = t.options, !!this.options.showToolbar) {
|
|
676
685
|
this.editor = t, this.canvas = t.canvas;
|
|
677
686
|
var a = this.options.toolbar || {};
|
|
678
|
-
this.config = j(j(j({},
|
|
679
|
-
style: j(j({},
|
|
680
|
-
btnStyle: j(j({},
|
|
681
|
-
icons: j(j({},
|
|
682
|
-
handlers: j(j({},
|
|
687
|
+
this.config = j(j(j({}, H), a), {}, {
|
|
688
|
+
style: j(j({}, H.style), a.style || {}),
|
|
689
|
+
btnStyle: j(j({}, H.btnStyle), a.btnStyle || {}),
|
|
690
|
+
icons: j(j({}, H.icons), a.icons || {}),
|
|
691
|
+
handlers: j(j({}, H.handlers), a.handlers || {})
|
|
683
692
|
}), this.currentTarget = null, this.currentLocked = null, this.isTransforming = !1, this._onMouseDown = this._handleMouseDown.bind(this), this._onObjectMoving = this._startTransform.bind(this), this._onObjectScaling = this._startTransform.bind(this), this._onObjectRotating = this._startTransform.bind(this), this._onMouseUp = this._endTransform.bind(this), this._onObjectModified = this._endTransform.bind(this), this._onSelectionChange = this._updateToolbar.bind(this), this._onSelectionClear = () => {
|
|
684
693
|
this.el.style.display = "none";
|
|
685
694
|
}, this._createDOM(), this._bindEvents();
|
|
@@ -800,10 +809,10 @@ class vt {
|
|
|
800
809
|
} = e.getCenterPoint(), {
|
|
801
810
|
top: u,
|
|
802
811
|
height: l
|
|
803
|
-
} = e.getBoundingRect(!1, !0), d = c * i + n, h = d - t.offsetWidth / 2,
|
|
812
|
+
} = e.getBoundingRect(!1, !0), d = c * i + n, h = d - t.offsetWidth / 2, g = (u + l) * i + s + a.offsetTop;
|
|
804
813
|
Object.assign(t.style, {
|
|
805
814
|
left: "".concat(h, "px"),
|
|
806
|
-
top: "".concat(
|
|
815
|
+
top: "".concat(g, "px"),
|
|
807
816
|
display: "flex"
|
|
808
817
|
});
|
|
809
818
|
}
|
|
@@ -815,7 +824,7 @@ class vt {
|
|
|
815
824
|
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();
|
|
816
825
|
}
|
|
817
826
|
}
|
|
818
|
-
function
|
|
827
|
+
function Ie(o, e, t, a, r, i, n) {
|
|
819
828
|
try {
|
|
820
829
|
var s = o[i](n), c = s.value;
|
|
821
830
|
} catch (u) {
|
|
@@ -823,22 +832,22 @@ function be(o, e, t, a, r, i, n) {
|
|
|
823
832
|
}
|
|
824
833
|
s.done ? e(c) : Promise.resolve(c).then(a, r);
|
|
825
834
|
}
|
|
826
|
-
function
|
|
835
|
+
function ee(o) {
|
|
827
836
|
return function() {
|
|
828
837
|
var e = this, t = arguments;
|
|
829
838
|
return new Promise(function(a, r) {
|
|
830
839
|
var i = o.apply(e, t);
|
|
831
840
|
function n(c) {
|
|
832
|
-
|
|
841
|
+
Ie(i, a, r, n, s, "next", c);
|
|
833
842
|
}
|
|
834
843
|
function s(c) {
|
|
835
|
-
|
|
844
|
+
Ie(i, a, r, n, s, "throw", c);
|
|
836
845
|
}
|
|
837
846
|
n(void 0);
|
|
838
847
|
});
|
|
839
848
|
};
|
|
840
849
|
}
|
|
841
|
-
class
|
|
850
|
+
class gt {
|
|
842
851
|
/**
|
|
843
852
|
* @param {object} options
|
|
844
853
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -854,7 +863,7 @@ class mt {
|
|
|
854
863
|
return this._historySuspendCount > 0;
|
|
855
864
|
}
|
|
856
865
|
_createDiffPatcher() {
|
|
857
|
-
this.diffPatcher =
|
|
866
|
+
this.diffPatcher = Re({
|
|
858
867
|
objectHash(e) {
|
|
859
868
|
return [e.id, e.format, e.locked, e.left, e.top, e.width, e.height, e.flipX, e.flipY, e.scaleX, e.scaleY, e.angle, e.opacity].join("-");
|
|
860
869
|
},
|
|
@@ -927,7 +936,7 @@ class mt {
|
|
|
927
936
|
*/
|
|
928
937
|
loadStateFromFullState(e) {
|
|
929
938
|
var t = this;
|
|
930
|
-
return
|
|
939
|
+
return ee(function* () {
|
|
931
940
|
if (e) {
|
|
932
941
|
console.log("loadStateFromFullState fullState", e), yield t.canvas.loadFromJSON(e);
|
|
933
942
|
var a = t.canvas.getObjects().find((i) => i.id === "montage-area");
|
|
@@ -943,7 +952,7 @@ class mt {
|
|
|
943
952
|
*/
|
|
944
953
|
undo() {
|
|
945
954
|
var e = this;
|
|
946
|
-
return
|
|
955
|
+
return ee(function* () {
|
|
947
956
|
if (!e.skipHistory) {
|
|
948
957
|
if (e.currentIndex <= 0) {
|
|
949
958
|
console.log("Нет предыдущих состояний для отмены.");
|
|
@@ -970,7 +979,7 @@ class mt {
|
|
|
970
979
|
*/
|
|
971
980
|
redo() {
|
|
972
981
|
var e = this;
|
|
973
|
-
return
|
|
982
|
+
return ee(function* () {
|
|
974
983
|
if (!e.skipHistory) {
|
|
975
984
|
if (e.currentIndex >= e.patches.length) {
|
|
976
985
|
console.log("Нет состояний для повтора.");
|
|
@@ -992,8 +1001,8 @@ class mt {
|
|
|
992
1001
|
})();
|
|
993
1002
|
}
|
|
994
1003
|
}
|
|
995
|
-
const
|
|
996
|
-
function
|
|
1004
|
+
const vt = 0.1, mt = 2, Mt = 0.1, ft = 90, k = 16, x = 16, L = 4096, E = 4096;
|
|
1005
|
+
function Se(o, e, t, a, r, i, n) {
|
|
997
1006
|
try {
|
|
998
1007
|
var s = o[i](n), c = s.value;
|
|
999
1008
|
} catch (u) {
|
|
@@ -1007,10 +1016,10 @@ function O(o) {
|
|
|
1007
1016
|
return new Promise(function(a, r) {
|
|
1008
1017
|
var i = o.apply(e, t);
|
|
1009
1018
|
function n(c) {
|
|
1010
|
-
|
|
1019
|
+
Se(i, a, r, n, s, "next", c);
|
|
1011
1020
|
}
|
|
1012
1021
|
function s(c) {
|
|
1013
|
-
|
|
1022
|
+
Se(i, a, r, n, s, "throw", c);
|
|
1014
1023
|
}
|
|
1015
1024
|
n(void 0);
|
|
1016
1025
|
});
|
|
@@ -1055,38 +1064,38 @@ class A {
|
|
|
1055
1064
|
historyManager: u,
|
|
1056
1065
|
errorManager: l
|
|
1057
1066
|
} = t.editor, d = yield t.getContentType(a), h = A.getFormatFromContentType(d), {
|
|
1058
|
-
acceptContentTypes:
|
|
1067
|
+
acceptContentTypes: g,
|
|
1059
1068
|
acceptFormats: m
|
|
1060
1069
|
} = t;
|
|
1061
1070
|
if (!t.isAllowedContentType(d)) {
|
|
1062
|
-
var
|
|
1071
|
+
var M = "Неверный contentType для изображения: ".concat(d, ". Ожидается один из: ").concat(t.acceptContentTypes.join(", "), ".");
|
|
1063
1072
|
return l.emitError({
|
|
1064
1073
|
origin: "ImageManager",
|
|
1065
1074
|
method: "importImage",
|
|
1066
1075
|
code: "INVALID_CONTENT_TYPE",
|
|
1067
|
-
message:
|
|
1076
|
+
message: M,
|
|
1068
1077
|
data: {
|
|
1069
1078
|
source: a,
|
|
1070
1079
|
format: h,
|
|
1071
1080
|
contentType: d,
|
|
1072
|
-
acceptContentTypes:
|
|
1081
|
+
acceptContentTypes: g,
|
|
1073
1082
|
acceptFormats: m
|
|
1074
1083
|
}
|
|
1075
1084
|
}), null;
|
|
1076
1085
|
}
|
|
1077
1086
|
u.suspendHistory();
|
|
1078
1087
|
try {
|
|
1079
|
-
var
|
|
1088
|
+
var f, v;
|
|
1080
1089
|
if (a instanceof File)
|
|
1081
|
-
|
|
1090
|
+
f = URL.createObjectURL(a);
|
|
1082
1091
|
else if (typeof a == "string") {
|
|
1083
1092
|
var S = yield fetch(a, {
|
|
1084
1093
|
mode: "cors"
|
|
1085
|
-
}),
|
|
1094
|
+
}), N = yield S.blob({
|
|
1086
1095
|
type: d,
|
|
1087
1096
|
quality: 1
|
|
1088
1097
|
});
|
|
1089
|
-
|
|
1098
|
+
f = URL.createObjectURL(N);
|
|
1090
1099
|
} else
|
|
1091
1100
|
return l.emitError({
|
|
1092
1101
|
origin: "ImageManager",
|
|
@@ -1097,71 +1106,71 @@ class A {
|
|
|
1097
1106
|
source: a,
|
|
1098
1107
|
format: h,
|
|
1099
1108
|
contentType: d,
|
|
1100
|
-
acceptContentTypes:
|
|
1109
|
+
acceptContentTypes: g,
|
|
1101
1110
|
acceptFormats: m
|
|
1102
1111
|
}
|
|
1103
1112
|
}), null;
|
|
1104
|
-
if (t._createdBlobUrls.push(
|
|
1105
|
-
var D = yield
|
|
1106
|
-
|
|
1113
|
+
if (t._createdBlobUrls.push(f), h === "svg") {
|
|
1114
|
+
var D = yield xe(f);
|
|
1115
|
+
v = W.groupSVGElements(D.objects, D.options);
|
|
1107
1116
|
} else
|
|
1108
|
-
|
|
1117
|
+
v = yield q.fromURL(f, {
|
|
1109
1118
|
crossOrigin: "anonymous"
|
|
1110
1119
|
});
|
|
1111
1120
|
var {
|
|
1112
|
-
width:
|
|
1121
|
+
width: w,
|
|
1113
1122
|
height: y
|
|
1114
|
-
} =
|
|
1115
|
-
if (y > E ||
|
|
1116
|
-
var p = yield t.resizeImageToBoundaries(
|
|
1117
|
-
t._createdBlobUrls.push(
|
|
1123
|
+
} = v;
|
|
1124
|
+
if (y > E || w > L) {
|
|
1125
|
+
var p = yield t.resizeImageToBoundaries(v._element.src, "max"), B = URL.createObjectURL(p);
|
|
1126
|
+
t._createdBlobUrls.push(B), v = yield q.fromURL(B, {
|
|
1118
1127
|
crossOrigin: "anonymous"
|
|
1119
1128
|
});
|
|
1120
|
-
} else if (y <
|
|
1121
|
-
var
|
|
1122
|
-
t._createdBlobUrls.push(
|
|
1129
|
+
} else if (y < x || w < k) {
|
|
1130
|
+
var _ = yield t.resizeImageToBoundaries(v._element.src, "min"), Z = URL.createObjectURL(_);
|
|
1131
|
+
t._createdBlobUrls.push(Z), v = yield q.fromURL(Z, {
|
|
1123
1132
|
crossOrigin: "anonymous"
|
|
1124
1133
|
});
|
|
1125
1134
|
}
|
|
1126
|
-
if (
|
|
1135
|
+
if (v.set("id", "".concat(v.type, "-").concat(C())), v.set("format", h), r === "scale-montage")
|
|
1127
1136
|
t.editor.canvasManager.scaleMontageAreaToImage({
|
|
1128
|
-
object:
|
|
1137
|
+
object: v,
|
|
1129
1138
|
withoutSave: !0
|
|
1130
1139
|
});
|
|
1131
1140
|
else {
|
|
1132
1141
|
var {
|
|
1133
|
-
width:
|
|
1134
|
-
height:
|
|
1135
|
-
} = s,
|
|
1136
|
-
imageObject:
|
|
1142
|
+
width: F,
|
|
1143
|
+
height: z
|
|
1144
|
+
} = s, U = t.calculateScaleFactor({
|
|
1145
|
+
imageObject: v,
|
|
1137
1146
|
scaleType: r
|
|
1138
1147
|
});
|
|
1139
|
-
r === "image-contain" &&
|
|
1140
|
-
object:
|
|
1148
|
+
r === "image-contain" && U < 1 ? c.fitObject({
|
|
1149
|
+
object: v,
|
|
1141
1150
|
type: "contain",
|
|
1142
1151
|
withoutSave: !0
|
|
1143
|
-
}) : r === "image-cover" && (
|
|
1144
|
-
object:
|
|
1152
|
+
}) : r === "image-cover" && (w > F || y > z) && c.fitObject({
|
|
1153
|
+
object: v,
|
|
1145
1154
|
type: "cover",
|
|
1146
1155
|
withoutSave: !0
|
|
1147
1156
|
});
|
|
1148
1157
|
}
|
|
1149
|
-
n.add(
|
|
1150
|
-
var
|
|
1151
|
-
image:
|
|
1158
|
+
n.add(v), n.centerObject(v), n.setActiveObject(v), n.renderAll(), u.resumeHistory(), i || u.saveState();
|
|
1159
|
+
var V = {
|
|
1160
|
+
image: v,
|
|
1152
1161
|
format: h,
|
|
1153
1162
|
contentType: d,
|
|
1154
1163
|
scale: r,
|
|
1155
1164
|
withoutSave: i,
|
|
1156
1165
|
source: a
|
|
1157
1166
|
};
|
|
1158
|
-
return n.fire("editor:image-imported",
|
|
1159
|
-
} catch (
|
|
1167
|
+
return n.fire("editor:image-imported", V), V;
|
|
1168
|
+
} catch (Y) {
|
|
1160
1169
|
return l.emitError({
|
|
1161
1170
|
origin: "ImageManager",
|
|
1162
1171
|
method: "importImage",
|
|
1163
1172
|
code: "IMPORT_FAILED",
|
|
1164
|
-
message: "Ошибка импорта изображения: ".concat(
|
|
1173
|
+
message: "Ошибка импорта изображения: ".concat(Y.message),
|
|
1165
1174
|
data: {
|
|
1166
1175
|
source: a,
|
|
1167
1176
|
format: h,
|
|
@@ -1185,14 +1194,14 @@ class A {
|
|
|
1185
1194
|
var t = arguments, a = this;
|
|
1186
1195
|
return O(function* () {
|
|
1187
1196
|
var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", i = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров c сохранением пропорций: ".concat(L, "x").concat(E);
|
|
1188
|
-
r === "min" && (i = "Размер изображения меньше минимального размера канваса, поэтому оно будет увеличено до минимальных размеров c сохранением пропорций: ".concat(
|
|
1197
|
+
r === "min" && (i = "Размер изображения меньше минимального размера канваса, поэтому оно будет увеличено до минимальных размеров c сохранением пропорций: ".concat(k, "x").concat(x));
|
|
1189
1198
|
var n = {
|
|
1190
1199
|
dataURL: e,
|
|
1191
1200
|
sizeType: r,
|
|
1192
1201
|
maxWidth: L,
|
|
1193
1202
|
maxHeight: E,
|
|
1194
|
-
minWidth:
|
|
1195
|
-
minHeight:
|
|
1203
|
+
minWidth: k,
|
|
1204
|
+
minHeight: x
|
|
1196
1205
|
};
|
|
1197
1206
|
return a.editor.errorManager.emitWarning({
|
|
1198
1207
|
origin: "ImageManager",
|
|
@@ -1231,29 +1240,29 @@ class A {
|
|
|
1231
1240
|
var l = r === "application/pdf", d = l ? "image/jpg" : r, h = A.getFormatFromContentType(d);
|
|
1232
1241
|
c.setCoords();
|
|
1233
1242
|
var {
|
|
1234
|
-
left:
|
|
1243
|
+
left: g,
|
|
1235
1244
|
top: m,
|
|
1236
|
-
width:
|
|
1237
|
-
height:
|
|
1238
|
-
} = c.getBoundingRect(),
|
|
1239
|
-
["image/jpg", "image/jpeg"].includes(d) && (
|
|
1240
|
-
var S =
|
|
1241
|
-
S.visible = !1,
|
|
1242
|
-
width:
|
|
1243
|
-
height:
|
|
1245
|
+
width: M,
|
|
1246
|
+
height: f
|
|
1247
|
+
} = c.getBoundingRect(), v = yield s.clone(["id", "format", "locked"]);
|
|
1248
|
+
["image/jpg", "image/jpeg"].includes(d) && (v.backgroundColor = "#ffffff");
|
|
1249
|
+
var S = v.getObjects().find((b) => b.id === c.id);
|
|
1250
|
+
S.visible = !1, v.viewportTransform = [1, 0, 0, 1, -g, -m], v.setDimensions({
|
|
1251
|
+
width: M,
|
|
1252
|
+
height: f
|
|
1244
1253
|
}, {
|
|
1245
1254
|
backstoreOnly: !0
|
|
1246
|
-
}),
|
|
1247
|
-
var
|
|
1248
|
-
if (h === "svg" &&
|
|
1249
|
-
var D =
|
|
1250
|
-
|
|
1251
|
-
var
|
|
1255
|
+
}), v.renderAll();
|
|
1256
|
+
var N = v.getObjects().filter((b) => b.format).every((b) => b.format === "svg");
|
|
1257
|
+
if (h === "svg" && N) {
|
|
1258
|
+
var D = v.toSVG();
|
|
1259
|
+
v.dispose();
|
|
1260
|
+
var w = A._exportSVGStringAsFile(D, {
|
|
1252
1261
|
exportAsBase64: i,
|
|
1253
1262
|
exportAsBlob: n,
|
|
1254
1263
|
fileName: a
|
|
1255
1264
|
}), y = {
|
|
1256
|
-
image:
|
|
1265
|
+
image: w,
|
|
1257
1266
|
format: "svg",
|
|
1258
1267
|
contentType: "image/svg+xml",
|
|
1259
1268
|
fileName: a.replace(/\.[^/.]+$/, ".svg")
|
|
@@ -1261,30 +1270,30 @@ class A {
|
|
|
1261
1270
|
return s.fire("editor:canvas-exported", y), y;
|
|
1262
1271
|
}
|
|
1263
1272
|
var p = yield new Promise((b) => {
|
|
1264
|
-
|
|
1273
|
+
v.getElement().toBlob(b);
|
|
1265
1274
|
});
|
|
1266
|
-
if (
|
|
1267
|
-
var
|
|
1275
|
+
if (v.dispose(), n) {
|
|
1276
|
+
var B = {
|
|
1268
1277
|
image: p,
|
|
1269
1278
|
format: h,
|
|
1270
1279
|
contentType: d,
|
|
1271
1280
|
fileName: a
|
|
1272
1281
|
};
|
|
1273
|
-
return s.fire("editor:canvas-exported",
|
|
1282
|
+
return s.fire("editor:canvas-exported", B), B;
|
|
1274
1283
|
}
|
|
1275
|
-
var
|
|
1284
|
+
var _ = yield createImageBitmap(p), Z = yield u.post("toDataURL", {
|
|
1276
1285
|
format: h,
|
|
1277
1286
|
quality: 1,
|
|
1278
|
-
bitmap:
|
|
1279
|
-
}, [
|
|
1287
|
+
bitmap: _
|
|
1288
|
+
}, [_]);
|
|
1280
1289
|
if (l) {
|
|
1281
|
-
var
|
|
1282
|
-
orientation:
|
|
1290
|
+
var F = 0.264583, z = M * F, U = f * F, V = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, Y = new V({
|
|
1291
|
+
orientation: z > U ? "landscape" : "portrait",
|
|
1283
1292
|
unit: "mm",
|
|
1284
|
-
format: [
|
|
1293
|
+
format: [z, U]
|
|
1285
1294
|
});
|
|
1286
|
-
if (
|
|
1287
|
-
var De =
|
|
1295
|
+
if (Y.addImage(Z, "JPG", 0, 0, z, U), i) {
|
|
1296
|
+
var De = Y.output("datauristring"), de = {
|
|
1288
1297
|
image: De,
|
|
1289
1298
|
format: "pdf",
|
|
1290
1299
|
contentType: "application/pdf",
|
|
@@ -1292,7 +1301,7 @@ class A {
|
|
|
1292
1301
|
};
|
|
1293
1302
|
return s.fire("editor:canvas-exported", de), de;
|
|
1294
1303
|
}
|
|
1295
|
-
var
|
|
1304
|
+
var we = Y.output("blob"), Le = new File([we], a, {
|
|
1296
1305
|
type: "application/pdf"
|
|
1297
1306
|
}), le = {
|
|
1298
1307
|
image: Le,
|
|
@@ -1304,14 +1313,14 @@ class A {
|
|
|
1304
1313
|
}
|
|
1305
1314
|
if (i) {
|
|
1306
1315
|
var he = {
|
|
1307
|
-
image:
|
|
1316
|
+
image: Z,
|
|
1308
1317
|
format: h,
|
|
1309
1318
|
contentType: d,
|
|
1310
1319
|
fileName: a
|
|
1311
1320
|
};
|
|
1312
1321
|
return s.fire("editor:canvas-exported", he), he;
|
|
1313
1322
|
}
|
|
1314
|
-
var ge = h === "svg" && !
|
|
1323
|
+
var ge = h === "svg" && !N ? a.replace(/\.[^/.]+$/, ".png") : a, Ee = new File([p], ge, {
|
|
1315
1324
|
type: d
|
|
1316
1325
|
}), ve = {
|
|
1317
1326
|
image: Ee,
|
|
@@ -1376,12 +1385,12 @@ class A {
|
|
|
1376
1385
|
try {
|
|
1377
1386
|
var d = A.getFormatFromContentType(i);
|
|
1378
1387
|
if (d === "svg") {
|
|
1379
|
-
var h = l.toSVG(),
|
|
1388
|
+
var h = l.toSVG(), g = t._exportSVGStringAsFile(h, {
|
|
1380
1389
|
exportAsBase64: n,
|
|
1381
1390
|
exportAsBlob: s,
|
|
1382
1391
|
fileName: r
|
|
1383
1392
|
}), m = {
|
|
1384
|
-
image:
|
|
1393
|
+
image: g,
|
|
1385
1394
|
format: d,
|
|
1386
1395
|
contentType: "image/svg+xml",
|
|
1387
1396
|
fileName: r.replace(/\.[^/.]+$/, ".svg")
|
|
@@ -1389,34 +1398,34 @@ class A {
|
|
|
1389
1398
|
return c.fire("editor:object-exported", m), m;
|
|
1390
1399
|
}
|
|
1391
1400
|
if (n) {
|
|
1392
|
-
var
|
|
1401
|
+
var M = yield createImageBitmap(l._element), f = yield u.post("toDataURL", {
|
|
1393
1402
|
format: d,
|
|
1394
1403
|
quality: 1,
|
|
1395
|
-
bitmap:
|
|
1396
|
-
}, [
|
|
1397
|
-
image:
|
|
1404
|
+
bitmap: M
|
|
1405
|
+
}, [M]), v = {
|
|
1406
|
+
image: f,
|
|
1398
1407
|
format: d,
|
|
1399
1408
|
contentType: i,
|
|
1400
1409
|
fileName: r
|
|
1401
1410
|
};
|
|
1402
|
-
return c.fire("editor:object-exported",
|
|
1411
|
+
return c.fire("editor:object-exported", v), v;
|
|
1403
1412
|
}
|
|
1404
|
-
var S = l.toCanvasElement(),
|
|
1413
|
+
var S = l.toCanvasElement(), N = yield new Promise((p) => {
|
|
1405
1414
|
S.toBlob(p);
|
|
1406
1415
|
});
|
|
1407
1416
|
if (s) {
|
|
1408
1417
|
var D = {
|
|
1409
|
-
image:
|
|
1418
|
+
image: N,
|
|
1410
1419
|
format: d,
|
|
1411
1420
|
contentType: i,
|
|
1412
1421
|
fileName: r
|
|
1413
1422
|
};
|
|
1414
1423
|
return c.fire("editor:object-exported", D), D;
|
|
1415
1424
|
}
|
|
1416
|
-
var
|
|
1425
|
+
var w = new File([N], r, {
|
|
1417
1426
|
type: i
|
|
1418
1427
|
}), y = {
|
|
1419
|
-
image:
|
|
1428
|
+
image: w,
|
|
1420
1429
|
format: d,
|
|
1421
1430
|
contentType: i,
|
|
1422
1431
|
fileName: r
|
|
@@ -1570,7 +1579,7 @@ class A {
|
|
|
1570
1579
|
return a === "contain" || a === "image-contain" ? Math.min(i / s, n / c) : a === "cover" || a === "image-cover" ? Math.max(i / s, n / c) : 1;
|
|
1571
1580
|
}
|
|
1572
1581
|
}
|
|
1573
|
-
class
|
|
1582
|
+
class jt {
|
|
1574
1583
|
/**
|
|
1575
1584
|
* @param {object} options
|
|
1576
1585
|
* @param {ImageEditor} options.editor – экземпляр редактора
|
|
@@ -1606,7 +1615,7 @@ class pt {
|
|
|
1606
1615
|
} = this.editor, {
|
|
1607
1616
|
width: c,
|
|
1608
1617
|
height: u
|
|
1609
|
-
} = n, l = Number(Math.max(Math.min(e, L),
|
|
1618
|
+
} = n, l = Number(Math.max(Math.min(e, L), k));
|
|
1610
1619
|
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(l), n.set({
|
|
1611
1620
|
width: l
|
|
1612
1621
|
}), i.clipPath.set({
|
|
@@ -1617,10 +1626,10 @@ class pt {
|
|
|
1617
1626
|
return;
|
|
1618
1627
|
}
|
|
1619
1628
|
var {
|
|
1620
|
-
left:
|
|
1629
|
+
left: g,
|
|
1621
1630
|
top: m
|
|
1622
|
-
} = this.getObjectDefaultCoords(n),
|
|
1623
|
-
i.setViewportTransform([
|
|
1631
|
+
} = this.getObjectDefaultCoords(n), M = i.getZoom();
|
|
1632
|
+
i.setViewportTransform([M, 0, 0, M, g, m]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i == null || i.fire("editor:resolution-width-changed", {
|
|
1624
1633
|
width: e
|
|
1625
1634
|
});
|
|
1626
1635
|
}
|
|
@@ -1650,7 +1659,7 @@ class pt {
|
|
|
1650
1659
|
} = this.editor, {
|
|
1651
1660
|
width: c,
|
|
1652
1661
|
height: u
|
|
1653
|
-
} = n, l = Number(Math.max(Math.min(e, E),
|
|
1662
|
+
} = n, l = Number(Math.max(Math.min(e, E), x));
|
|
1654
1663
|
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(l), n.set({
|
|
1655
1664
|
height: l
|
|
1656
1665
|
}), i.clipPath.set({
|
|
@@ -1661,10 +1670,10 @@ class pt {
|
|
|
1661
1670
|
return;
|
|
1662
1671
|
}
|
|
1663
1672
|
var {
|
|
1664
|
-
left:
|
|
1673
|
+
left: g,
|
|
1665
1674
|
top: m
|
|
1666
|
-
} = this.getObjectDefaultCoords(n),
|
|
1667
|
-
i.setViewportTransform([
|
|
1675
|
+
} = this.getObjectDefaultCoords(n), M = i.getZoom();
|
|
1676
|
+
i.setViewportTransform([M, 0, 0, M, g, m]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i == null || i.fire("editor:resolution-height-changed", {
|
|
1668
1677
|
height: e
|
|
1669
1678
|
});
|
|
1670
1679
|
}
|
|
@@ -1677,7 +1686,7 @@ class pt {
|
|
|
1677
1686
|
var {
|
|
1678
1687
|
canvas: e,
|
|
1679
1688
|
montageArea: t
|
|
1680
|
-
} = this.editor, a = e.getWidth(), r = e.getHeight(), i = e.getZoom(), n = new
|
|
1689
|
+
} = this.editor, a = e.getWidth(), r = e.getHeight(), i = e.getZoom(), n = new Be(a / 2, r / 2);
|
|
1681
1690
|
t.set({
|
|
1682
1691
|
left: a / 2,
|
|
1683
1692
|
top: r / 2
|
|
@@ -1712,7 +1721,7 @@ class pt {
|
|
|
1712
1721
|
}
|
|
1713
1722
|
setCanvasBackstoreWidth(e) {
|
|
1714
1723
|
if (!(!e || typeof e != "number")) {
|
|
1715
|
-
var t = Math.max(Math.min(e, L),
|
|
1724
|
+
var t = Math.max(Math.min(e, L), k);
|
|
1716
1725
|
this.editor.canvas.setDimensions({
|
|
1717
1726
|
width: t
|
|
1718
1727
|
}, {
|
|
@@ -1722,7 +1731,7 @@ class pt {
|
|
|
1722
1731
|
}
|
|
1723
1732
|
setCanvasBackstoreHeight(e) {
|
|
1724
1733
|
if (!(!e || typeof e != "number")) {
|
|
1725
|
-
var t = Math.max(Math.min(e, E),
|
|
1734
|
+
var t = Math.max(Math.min(e, E), x);
|
|
1726
1735
|
this.editor.canvas.setDimensions({
|
|
1727
1736
|
height: t
|
|
1728
1737
|
}, {
|
|
@@ -1733,7 +1742,7 @@ class pt {
|
|
|
1733
1742
|
adaptCanvasToContainer() {
|
|
1734
1743
|
var {
|
|
1735
1744
|
canvas: e
|
|
1736
|
-
} = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, i = Math.max(Math.min(a, L),
|
|
1745
|
+
} = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, i = Math.max(Math.min(a, L), k), n = Math.max(Math.min(r, E), x);
|
|
1737
1746
|
console.log("adaptCanvasToContainer newWidth", i), console.log("adaptCanvasToContainer newHeight", n), e.setDimensions({
|
|
1738
1747
|
width: i,
|
|
1739
1748
|
height: n
|
|
@@ -1916,23 +1925,23 @@ class pt {
|
|
|
1916
1925
|
var {
|
|
1917
1926
|
width: l,
|
|
1918
1927
|
height: d
|
|
1919
|
-
} = u, h = Math.min(l, L),
|
|
1928
|
+
} = u, h = Math.min(l, L), g = Math.min(d, E);
|
|
1920
1929
|
if (t) {
|
|
1921
1930
|
var {
|
|
1922
1931
|
width: m,
|
|
1923
|
-
height:
|
|
1924
|
-
} = i,
|
|
1925
|
-
h = m * S,
|
|
1932
|
+
height: M
|
|
1933
|
+
} = i, f = l / m, v = d / M, S = Math.max(f, v);
|
|
1934
|
+
h = m * S, g = M * S;
|
|
1926
1935
|
}
|
|
1927
1936
|
this.setResolutionWidth(h, {
|
|
1928
1937
|
withoutSave: !0
|
|
1929
|
-
}), this.setResolutionHeight(
|
|
1938
|
+
}), this.setResolutionHeight(g, {
|
|
1930
1939
|
withoutSave: !0
|
|
1931
1940
|
}), (l > s || d > c) && n.calculateAndApplyDefaultZoom(s, c), n.resetObject(u, {
|
|
1932
1941
|
withoutSave: !0
|
|
1933
1942
|
}), r.centerObject(u), r.renderAll(), a || this.editor.historyManager.saveState(), r.fire("editor:canvas-scaled", {
|
|
1934
1943
|
width: h,
|
|
1935
|
-
height:
|
|
1944
|
+
height: g
|
|
1936
1945
|
});
|
|
1937
1946
|
}
|
|
1938
1947
|
}
|
|
@@ -1987,7 +1996,7 @@ class pt {
|
|
|
1987
1996
|
return r.filter((i) => i.id !== t.id && i.id !== a.id);
|
|
1988
1997
|
}
|
|
1989
1998
|
}
|
|
1990
|
-
class
|
|
1999
|
+
class yt {
|
|
1991
2000
|
/**
|
|
1992
2001
|
* @param {object} options
|
|
1993
2002
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2026,7 +2035,7 @@ class bt {
|
|
|
2026
2035
|
* Если передавать координаты курсора, то нужно быть аккуратнее, так как юзер может выйти за пределы рабочей области
|
|
2027
2036
|
*/
|
|
2028
2037
|
zoom() {
|
|
2029
|
-
var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] :
|
|
2038
|
+
var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Mt, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
2030
2039
|
if (e) {
|
|
2031
2040
|
var {
|
|
2032
2041
|
canvas: a,
|
|
@@ -2098,7 +2107,7 @@ class bt {
|
|
|
2098
2107
|
* @fires editor:object-rotated
|
|
2099
2108
|
*/
|
|
2100
2109
|
rotate() {
|
|
2101
|
-
var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] :
|
|
2110
|
+
var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ft, {
|
|
2102
2111
|
withoutSave: t
|
|
2103
2112
|
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
|
|
2104
2113
|
canvas: a,
|
|
@@ -2185,13 +2194,13 @@ class bt {
|
|
|
2185
2194
|
if (["activeselection"].includes(c.type) && !r) {
|
|
2186
2195
|
var u = c.getObjects();
|
|
2187
2196
|
i.discardActiveObject(), u.forEach((h) => {
|
|
2188
|
-
var
|
|
2197
|
+
var g = n.calculateScaleFactor({
|
|
2189
2198
|
imageObject: h,
|
|
2190
2199
|
scaleType: t
|
|
2191
2200
|
});
|
|
2192
|
-
h.scale(
|
|
2201
|
+
h.scale(g), i.centerObject(h);
|
|
2193
2202
|
});
|
|
2194
|
-
var l = new
|
|
2203
|
+
var l = new R(u, {
|
|
2195
2204
|
canvas: i
|
|
2196
2205
|
});
|
|
2197
2206
|
i.setActiveObject(l);
|
|
@@ -2253,12 +2262,12 @@ class bt {
|
|
|
2253
2262
|
height: d
|
|
2254
2263
|
} = i, {
|
|
2255
2264
|
width: h,
|
|
2256
|
-
height:
|
|
2265
|
+
height: g
|
|
2257
2266
|
} = u, m = n.calculateScaleFactor({
|
|
2258
2267
|
imageObject: u,
|
|
2259
2268
|
scaleType: c
|
|
2260
2269
|
});
|
|
2261
|
-
c === "contain" && m < 1 || c === "cover" && (h > l ||
|
|
2270
|
+
c === "contain" && m < 1 || c === "cover" && (h > l || g > d) ? this.fitObject({
|
|
2262
2271
|
object: u,
|
|
2263
2272
|
withoutSave: !0
|
|
2264
2273
|
}) : u.set({
|
|
@@ -2274,7 +2283,7 @@ class bt {
|
|
|
2274
2283
|
}
|
|
2275
2284
|
}
|
|
2276
2285
|
}
|
|
2277
|
-
class
|
|
2286
|
+
class pt {
|
|
2278
2287
|
/**
|
|
2279
2288
|
* @param {object} options
|
|
2280
2289
|
* @param {ImageEditor} options.editor – экземпляр редактора
|
|
@@ -2374,7 +2383,7 @@ class It {
|
|
|
2374
2383
|
}
|
|
2375
2384
|
}
|
|
2376
2385
|
}
|
|
2377
|
-
class
|
|
2386
|
+
class J {
|
|
2378
2387
|
/**
|
|
2379
2388
|
* @param {object} options
|
|
2380
2389
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2421,7 +2430,7 @@ class G {
|
|
|
2421
2430
|
} = this.editor;
|
|
2422
2431
|
r.suspendHistory();
|
|
2423
2432
|
var i = e || a.getActiveObject();
|
|
2424
|
-
i && (i.type === "activeselection" ?
|
|
2433
|
+
i && (i.type === "activeselection" ? J._moveSelectionForward(a, i) : a.bringObjectForward(i), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-forward"));
|
|
2425
2434
|
}
|
|
2426
2435
|
/**
|
|
2427
2436
|
* Отправить объект на задний план по оси Z
|
|
@@ -2471,7 +2480,7 @@ class G {
|
|
|
2471
2480
|
} = this.editor;
|
|
2472
2481
|
i.suspendHistory();
|
|
2473
2482
|
var s = e || a.getActiveObject();
|
|
2474
|
-
s && (s.type === "activeselection" ?
|
|
2483
|
+
s && (s.type === "activeselection" ? J._moveSelectionBackwards(a, s) : a.sendObjectBackwards(s), a.sendObjectToBack(r), a.sendObjectToBack(n), a.renderAll(), i.resumeHistory(), t || i.saveState(), a.fire("editor:object-send-backwards"));
|
|
2475
2484
|
}
|
|
2476
2485
|
/**
|
|
2477
2486
|
* Сдвигает выделенные объекты на один уровень вверх относительно ближайшего верхнего объекта
|
|
@@ -2483,7 +2492,7 @@ class G {
|
|
|
2483
2492
|
static _moveSelectionForward(e, t) {
|
|
2484
2493
|
for (var a = e.getObjects(), r = t.getObjects(), i = r.map((l) => a.indexOf(l)), n = -1, s = function(d) {
|
|
2485
2494
|
var h = a[d];
|
|
2486
|
-
if (!r.includes(h) && i.some((
|
|
2495
|
+
if (!r.includes(h) && i.some((g) => d > g))
|
|
2487
2496
|
return n = d, 1;
|
|
2488
2497
|
}, c = 0; c < a.length && !s(c); c += 1)
|
|
2489
2498
|
;
|
|
@@ -2510,115 +2519,60 @@ class G {
|
|
|
2510
2519
|
e.moveObjectTo(r[n], i - 1);
|
|
2511
2520
|
}
|
|
2512
2521
|
}
|
|
2513
|
-
|
|
2514
|
-
function Se(o, e) {
|
|
2515
|
-
var t = Object.keys(o);
|
|
2516
|
-
if (Object.getOwnPropertySymbols) {
|
|
2517
|
-
var a = Object.getOwnPropertySymbols(o);
|
|
2518
|
-
e && (a = a.filter(function(r) {
|
|
2519
|
-
return Object.getOwnPropertyDescriptor(o, r).enumerable;
|
|
2520
|
-
})), t.push.apply(t, a);
|
|
2521
|
-
}
|
|
2522
|
-
return t;
|
|
2523
|
-
}
|
|
2524
|
-
function q(o) {
|
|
2525
|
-
for (var e = 1; e < arguments.length; e++) {
|
|
2526
|
-
var t = arguments[e] != null ? arguments[e] : {};
|
|
2527
|
-
e % 2 ? Se(Object(t), !0).forEach(function(a) {
|
|
2528
|
-
wt(o, a, t[a]);
|
|
2529
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : Se(Object(t)).forEach(function(a) {
|
|
2530
|
-
Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
|
|
2531
|
-
});
|
|
2532
|
-
}
|
|
2533
|
-
return o;
|
|
2534
|
-
}
|
|
2535
|
-
function wt(o, e, t) {
|
|
2536
|
-
return (e = Dt(e)) in o ? Object.defineProperty(o, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : o[e] = t, o;
|
|
2537
|
-
}
|
|
2538
|
-
function Dt(o) {
|
|
2539
|
-
var e = Nt(o, "string");
|
|
2540
|
-
return typeof e == "symbol" ? e : e + "";
|
|
2541
|
-
}
|
|
2542
|
-
function Nt(o, e) {
|
|
2543
|
-
if (typeof o != "object" || !o) return o;
|
|
2544
|
-
var t = o[Symbol.toPrimitive];
|
|
2545
|
-
if (t !== void 0) {
|
|
2546
|
-
var a = t.call(o, e);
|
|
2547
|
-
if (typeof a != "object") return a;
|
|
2548
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
2549
|
-
}
|
|
2550
|
-
return (e === "string" ? String : Number)(o);
|
|
2551
|
-
}
|
|
2552
|
-
function ee(o, e) {
|
|
2553
|
-
if (o == null) return {};
|
|
2554
|
-
var t, a, r = Lt(o, e);
|
|
2555
|
-
if (Object.getOwnPropertySymbols) {
|
|
2556
|
-
var i = Object.getOwnPropertySymbols(o);
|
|
2557
|
-
for (a = 0; a < i.length; a++) t = i[a], e.indexOf(t) === -1 && {}.propertyIsEnumerable.call(o, t) && (r[t] = o[t]);
|
|
2558
|
-
}
|
|
2559
|
-
return r;
|
|
2560
|
-
}
|
|
2561
|
-
function Lt(o, e) {
|
|
2562
|
-
if (o == null) return {};
|
|
2563
|
-
var t = {};
|
|
2564
|
-
for (var a in o) if ({}.hasOwnProperty.call(o, a)) {
|
|
2565
|
-
if (e.indexOf(a) !== -1) continue;
|
|
2566
|
-
t[a] = o[a];
|
|
2567
|
-
}
|
|
2568
|
-
return t;
|
|
2569
|
-
}
|
|
2570
|
-
class Et {
|
|
2522
|
+
class bt {
|
|
2571
2523
|
/**
|
|
2572
|
-
*
|
|
2573
|
-
* @param {
|
|
2524
|
+
* Менеджер фигур для редактора.
|
|
2525
|
+
* @param {Object} options - Опции и настройки менеджера фигур.
|
|
2526
|
+
* @param {ImageEditor} options.editor - Ссылка на экземпляр редактора.
|
|
2574
2527
|
*/
|
|
2575
|
-
constructor(e) {
|
|
2576
|
-
|
|
2577
|
-
editor: t
|
|
2578
|
-
} = e;
|
|
2579
|
-
this.editor = t;
|
|
2528
|
+
constructor({ editor: e }) {
|
|
2529
|
+
this.editor = e;
|
|
2580
2530
|
}
|
|
2581
2531
|
/**
|
|
2582
2532
|
* Добавление прямоугольника
|
|
2583
2533
|
* @param {Object} shapeOptions
|
|
2534
|
+
* @param {String} shapeOptions.id - Уникальный идентификатор фигуры
|
|
2584
2535
|
* @param {Number} shapeOptions.left - Координата X
|
|
2585
2536
|
* @param {Number} shapeOptions.top - Координата Y
|
|
2586
2537
|
* @param {Number} shapeOptions.width - Ширина
|
|
2587
2538
|
* @param {Number} shapeOptions.height - Высота
|
|
2588
2539
|
* @param {String} shapeOptions.fill - Цвет заливки
|
|
2589
|
-
* @param {String} shapeOptions.originX - Ориентация по X
|
|
2590
|
-
* @param {String} shapeOptions.originY - Ориентация по Y
|
|
2591
2540
|
* @param {Rect} shapeOptions.rest - Остальные параметры
|
|
2592
2541
|
*
|
|
2542
|
+
* @param {Object} flags - Флаги для управления поведением
|
|
2593
2543
|
* @param {Object} flags.withoutSelection - Не выделять объект
|
|
2594
2544
|
* @param {Object} flags.withoutAdding - Не добавлять объект в canvas
|
|
2595
2545
|
*/
|
|
2596
|
-
addRectangle() {
|
|
2597
|
-
var
|
|
2598
|
-
id:
|
|
2599
|
-
left:
|
|
2600
|
-
top:
|
|
2601
|
-
width:
|
|
2602
|
-
height:
|
|
2603
|
-
fill:
|
|
2604
|
-
} =
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2546
|
+
addRectangle(l = {}, { withoutSelection: c, withoutAdding: u } = {}) {
|
|
2547
|
+
var d = l, {
|
|
2548
|
+
id: e = `rect-${C()}`,
|
|
2549
|
+
left: t,
|
|
2550
|
+
top: a,
|
|
2551
|
+
width: r = 100,
|
|
2552
|
+
height: i = 100,
|
|
2553
|
+
fill: n = "blue"
|
|
2554
|
+
} = d, s = X(d, [
|
|
2555
|
+
"id",
|
|
2556
|
+
"left",
|
|
2557
|
+
"top",
|
|
2558
|
+
"width",
|
|
2559
|
+
"height",
|
|
2560
|
+
"fill"
|
|
2561
|
+
]);
|
|
2562
|
+
const { canvas: h } = this.editor, g = new Ze(T({
|
|
2563
|
+
id: e,
|
|
2564
|
+
left: t,
|
|
2565
|
+
top: a,
|
|
2566
|
+
width: r,
|
|
2567
|
+
height: i,
|
|
2568
|
+
fill: n
|
|
2569
|
+
}, s));
|
|
2570
|
+
return !t && !a && h.centerObject(g), u || (h.add(g), c || h.setActiveObject(g), h.renderAll()), g;
|
|
2618
2571
|
}
|
|
2619
2572
|
/**
|
|
2620
2573
|
* Добавление круга
|
|
2621
2574
|
* @param {Object} shapeOptions
|
|
2575
|
+
* @param {String} shapeOptions.id - Уникальный идентификатор фигуры
|
|
2622
2576
|
* @param {Number} shapeOptions.left - Координата X
|
|
2623
2577
|
* @param {Number} shapeOptions.top - Координата Y
|
|
2624
2578
|
* @param {Number} shapeOptions.radius - Радиус
|
|
@@ -2627,33 +2581,37 @@ class Et {
|
|
|
2627
2581
|
* @param {String} shapeOptions.originY - Ориентация по Y
|
|
2628
2582
|
* @param {Circle} shapeOptions.rest - Остальные параметры
|
|
2629
2583
|
*
|
|
2584
|
+
* @param {Object} flags - Флаги для управления поведением
|
|
2630
2585
|
* @param {Object} flags.withoutSelection - Не выделять объект
|
|
2631
2586
|
* @param {Object} flags.withoutAdding - Не добавлять объект в canvas
|
|
2632
2587
|
*/
|
|
2633
|
-
addCircle() {
|
|
2634
|
-
var
|
|
2635
|
-
id:
|
|
2636
|
-
left:
|
|
2637
|
-
top:
|
|
2638
|
-
radius:
|
|
2639
|
-
fill:
|
|
2640
|
-
} =
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2588
|
+
addCircle(u = {}, { withoutSelection: s, withoutAdding: c } = {}) {
|
|
2589
|
+
var l = u, {
|
|
2590
|
+
id: e = `circle-${C()}`,
|
|
2591
|
+
left: t,
|
|
2592
|
+
top: a,
|
|
2593
|
+
radius: r = 50,
|
|
2594
|
+
fill: i = "green"
|
|
2595
|
+
} = l, n = X(l, [
|
|
2596
|
+
"id",
|
|
2597
|
+
"left",
|
|
2598
|
+
"top",
|
|
2599
|
+
"radius",
|
|
2600
|
+
"fill"
|
|
2601
|
+
]);
|
|
2602
|
+
const { canvas: d } = this.editor, h = new ze(T({
|
|
2603
|
+
id: e,
|
|
2604
|
+
left: t,
|
|
2605
|
+
top: a,
|
|
2606
|
+
fill: i,
|
|
2607
|
+
radius: r
|
|
2608
|
+
}, n));
|
|
2609
|
+
return !t && !a && d.centerObject(h), c || (d.add(h), s || d.setActiveObject(h), d.renderAll()), h;
|
|
2653
2610
|
}
|
|
2654
2611
|
/**
|
|
2655
2612
|
* Добавление треугольника
|
|
2656
2613
|
* @param {Object} shapeOptions
|
|
2614
|
+
* @param {String} shapeOptions.id - Уникальный идентификатор фигуры
|
|
2657
2615
|
* @param {Number} shapeOptions.left - Координата X
|
|
2658
2616
|
* @param {Number} shapeOptions.top - Координата Y
|
|
2659
2617
|
* @param {Number} shapeOptions.width - Ширина
|
|
@@ -2663,31 +2621,35 @@ class Et {
|
|
|
2663
2621
|
* @param {String} shapeOptions.fill - Цвет заливки
|
|
2664
2622
|
* @param {Triangle} shapeOptions.rest - Остальные параметры
|
|
2665
2623
|
*
|
|
2624
|
+
* @param {Object} flags - Флаги для управления поведением
|
|
2666
2625
|
* @param {Object} flags.withoutSelection - Не выделять объект
|
|
2667
2626
|
* @param {Object} flags.withoutAdding - Не добавлять объект в canvas
|
|
2668
2627
|
*/
|
|
2669
|
-
addTriangle() {
|
|
2670
|
-
var
|
|
2671
|
-
id:
|
|
2672
|
-
left:
|
|
2673
|
-
top:
|
|
2674
|
-
width:
|
|
2675
|
-
height:
|
|
2676
|
-
fill:
|
|
2677
|
-
} =
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2628
|
+
addTriangle(l = {}, { withoutSelection: c, withoutAdding: u } = {}) {
|
|
2629
|
+
var d = l, {
|
|
2630
|
+
id: e = `triangle-${C()}`,
|
|
2631
|
+
left: t,
|
|
2632
|
+
top: a,
|
|
2633
|
+
width: r = 100,
|
|
2634
|
+
height: i = 100,
|
|
2635
|
+
fill: n = "yellow"
|
|
2636
|
+
} = d, s = X(d, [
|
|
2637
|
+
"id",
|
|
2638
|
+
"left",
|
|
2639
|
+
"top",
|
|
2640
|
+
"width",
|
|
2641
|
+
"height",
|
|
2642
|
+
"fill"
|
|
2643
|
+
]);
|
|
2644
|
+
const { canvas: h } = this.editor, g = new Ue(T({
|
|
2645
|
+
id: e,
|
|
2646
|
+
left: t,
|
|
2647
|
+
top: a,
|
|
2648
|
+
fill: n,
|
|
2649
|
+
width: r,
|
|
2650
|
+
height: i
|
|
2651
|
+
}, s));
|
|
2652
|
+
return !t && !a && h.centerObject(g), u || (h.add(g), c || h.setActiveObject(g), h.renderAll()), g;
|
|
2691
2653
|
}
|
|
2692
2654
|
}
|
|
2693
2655
|
function Ae(o, e, t, a, r, i, n) {
|
|
@@ -2713,7 +2675,7 @@ function Ce(o) {
|
|
|
2713
2675
|
});
|
|
2714
2676
|
};
|
|
2715
2677
|
}
|
|
2716
|
-
class
|
|
2678
|
+
class It {
|
|
2717
2679
|
/**
|
|
2718
2680
|
* @param {object} options
|
|
2719
2681
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2785,7 +2747,7 @@ class Ot {
|
|
|
2785
2747
|
left: a.left + 10,
|
|
2786
2748
|
top: a.top + 10,
|
|
2787
2749
|
evented: !0
|
|
2788
|
-
}), a instanceof
|
|
2750
|
+
}), a instanceof R ? (a.canvas = t, a.forEachObject((r) => {
|
|
2789
2751
|
t.add(r);
|
|
2790
2752
|
})) : t.add(a), t.setActiveObject(a), t.requestRenderAll(), t.fire("editor:object-pasted", {
|
|
2791
2753
|
object: a
|
|
@@ -2794,7 +2756,7 @@ class Ot {
|
|
|
2794
2756
|
})();
|
|
2795
2757
|
}
|
|
2796
2758
|
}
|
|
2797
|
-
class
|
|
2759
|
+
class St {
|
|
2798
2760
|
/**
|
|
2799
2761
|
* @param {object} options
|
|
2800
2762
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2877,7 +2839,7 @@ class Tt {
|
|
|
2877
2839
|
}
|
|
2878
2840
|
}
|
|
2879
2841
|
}
|
|
2880
|
-
class
|
|
2842
|
+
class At {
|
|
2881
2843
|
/**
|
|
2882
2844
|
* @param {object} options
|
|
2883
2845
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2906,7 +2868,7 @@ class kt {
|
|
|
2906
2868
|
r.suspendHistory();
|
|
2907
2869
|
var i = e || a.getActiveObject();
|
|
2908
2870
|
if (i && i.type === "activeselection") {
|
|
2909
|
-
var n = i.getObjects(), s = new
|
|
2871
|
+
var n = i.getObjects(), s = new Ye(n);
|
|
2910
2872
|
n.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(C())), a.add(s), a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped");
|
|
2911
2873
|
}
|
|
2912
2874
|
}
|
|
@@ -2930,14 +2892,14 @@ class kt {
|
|
|
2930
2892
|
if (!(!i || i.type !== "group")) {
|
|
2931
2893
|
var n = i.removeAll();
|
|
2932
2894
|
a.remove(i), n.forEach((c) => a.add(c));
|
|
2933
|
-
var s = new
|
|
2895
|
+
var s = new R(n, {
|
|
2934
2896
|
canvas: a
|
|
2935
2897
|
});
|
|
2936
2898
|
a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-ungrouped");
|
|
2937
2899
|
}
|
|
2938
2900
|
}
|
|
2939
2901
|
}
|
|
2940
|
-
class
|
|
2902
|
+
class Ct {
|
|
2941
2903
|
/**
|
|
2942
2904
|
* @param {object} options
|
|
2943
2905
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2959,7 +2921,7 @@ class xt {
|
|
|
2959
2921
|
objectLockManager: a
|
|
2960
2922
|
} = this.editor;
|
|
2961
2923
|
e.discardActiveObject();
|
|
2962
|
-
var r = t.getObjects(), i = r.some((s) => s.locked), n = r.length > 1 ? new
|
|
2924
|
+
var r = t.getObjects(), i = r.some((s) => s.locked), n = r.length > 1 ? new R(t.getObjects(), {
|
|
2963
2925
|
canvas: e
|
|
2964
2926
|
}) : r[0];
|
|
2965
2927
|
i && a.lockObject({
|
|
@@ -2971,7 +2933,7 @@ class xt {
|
|
|
2971
2933
|
});
|
|
2972
2934
|
}
|
|
2973
2935
|
}
|
|
2974
|
-
class
|
|
2936
|
+
class Nt {
|
|
2975
2937
|
/**
|
|
2976
2938
|
* @param {object} options
|
|
2977
2939
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -3007,7 +2969,7 @@ class Bt {
|
|
|
3007
2969
|
}), a.discardActiveObject(), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-deleted"));
|
|
3008
2970
|
}
|
|
3009
2971
|
}
|
|
3010
|
-
var
|
|
2972
|
+
var Dt = {
|
|
3011
2973
|
IMAGE_MANAGER: {
|
|
3012
2974
|
/**
|
|
3013
2975
|
* Некорректный Content-Type изображения
|
|
@@ -3035,7 +2997,7 @@ var Zt = {
|
|
|
3035
2997
|
IMAGE_EXPORT_FAILED: "IMAGE_EXPORT_FAILED"
|
|
3036
2998
|
}
|
|
3037
2999
|
};
|
|
3038
|
-
class
|
|
3000
|
+
class K {
|
|
3039
3001
|
constructor(e) {
|
|
3040
3002
|
var {
|
|
3041
3003
|
editor: t
|
|
@@ -3060,7 +3022,7 @@ class X {
|
|
|
3060
3022
|
data: i,
|
|
3061
3023
|
message: n
|
|
3062
3024
|
} = e;
|
|
3063
|
-
if (!
|
|
3025
|
+
if (!K.isValidErrorCode(r)) {
|
|
3064
3026
|
console.warn("Неизвестный код ошибки: ", {
|
|
3065
3027
|
code: r,
|
|
3066
3028
|
origin: t,
|
|
@@ -3097,7 +3059,7 @@ class X {
|
|
|
3097
3059
|
message: i,
|
|
3098
3060
|
data: n
|
|
3099
3061
|
} = e;
|
|
3100
|
-
if (!
|
|
3062
|
+
if (!K.isValidErrorCode(r)) {
|
|
3101
3063
|
console.warn("Неизвестный код ошибки: ", {
|
|
3102
3064
|
code: r,
|
|
3103
3065
|
origin: t,
|
|
@@ -3115,7 +3077,7 @@ class X {
|
|
|
3115
3077
|
});
|
|
3116
3078
|
}
|
|
3117
3079
|
static isValidErrorCode(e) {
|
|
3118
|
-
return e ? Object.values(
|
|
3080
|
+
return e ? Object.values(Dt).some((t) => Object.values(t).includes(e)) : !1;
|
|
3119
3081
|
}
|
|
3120
3082
|
}
|
|
3121
3083
|
class ue {
|
|
@@ -3127,10 +3089,10 @@ class ue {
|
|
|
3127
3089
|
constructor(e, t) {
|
|
3128
3090
|
this.options = t;
|
|
3129
3091
|
const { defaultScale: a, minZoom: r, maxZoom: i } = t;
|
|
3130
|
-
this.containerId = e, this.editorId = `${e}-${C()}`, this.clipboard = null, this.defaultZoom = a, this.minZoom = r ||
|
|
3092
|
+
this.containerId = e, this.editorId = `${e}-${C()}`, this.clipboard = null, this.defaultZoom = a, this.minZoom = r || vt, this.maxZoom = i || mt, this.init();
|
|
3131
3093
|
}
|
|
3132
3094
|
init() {
|
|
3133
|
-
return
|
|
3095
|
+
return $(this, null, function* () {
|
|
3134
3096
|
const {
|
|
3135
3097
|
editorContainerWidth: e,
|
|
3136
3098
|
editorContainerHeight: t,
|
|
@@ -3143,13 +3105,13 @@ class ue {
|
|
|
3143
3105
|
scaleType: u,
|
|
3144
3106
|
_onReadyCallback: l
|
|
3145
3107
|
} = this.options;
|
|
3146
|
-
if (
|
|
3108
|
+
if (qe.apply(), this.canvas = new He(this.containerId, this.options), this.moduleLoader = new _e(), this.workerManager = new Fe(), this.errorManager = new K({ editor: this }), this.historyManager = new gt({ editor: this }), this.toolbar = new ht({ editor: this }), this.transformManager = new yt({ editor: this }), this.canvasManager = new jt({ editor: this }), this.imageManager = new A({ editor: this }), this.layerManager = new J({ editor: this }), this.shapeManager = new bt({ editor: this }), this.interactionBlocker = new pt({ editor: this }), this.clipboardManager = new It({ editor: this }), this.objectLockManager = new St({ editor: this }), this.groupingManager = new At({ editor: this }), this.selectionManager = new Ct({ editor: this }), this.deletionManager = new Nt({ editor: this }), this._createMontageArea(), this._createClippingArea(), this.listeners = new P({ editor: this, options: this.options }), this.canvasManager.setEditorContainerWidth(e), this.canvasManager.setEditorContainerHeight(t), this.canvasManager.setCanvasWrapperWidth(a), this.canvasManager.setCanvasWrapperHeight(r), this.canvasManager.setCanvasCSSWidth(i), this.canvasManager.setCanvasCSSHeight(n), s != null && s.source) {
|
|
3147
3109
|
const {
|
|
3148
3110
|
source: d,
|
|
3149
3111
|
scale: h = `image-${u}`,
|
|
3150
|
-
withoutSave:
|
|
3112
|
+
withoutSave: g = !0
|
|
3151
3113
|
} = s;
|
|
3152
|
-
yield this.imageManager.importImage({ source: d, scale: h, withoutSave:
|
|
3114
|
+
yield this.imageManager.importImage({ source: d, scale: h, withoutSave: g });
|
|
3153
3115
|
} else
|
|
3154
3116
|
this.canvasManager.setDefaultScale({ withoutSave: !0 });
|
|
3155
3117
|
c && this.historyManager.loadStateFromFullState(c), this.historyManager.saveState(), console.log("editor:ready"), this.canvas.fire("editor:ready", this), typeof l == "function" && l(this);
|
|
@@ -3207,46 +3169,35 @@ class ue {
|
|
|
3207
3169
|
const e = document.createElement("canvas");
|
|
3208
3170
|
e.width = 20, e.height = 20;
|
|
3209
3171
|
const t = e.getContext("2d");
|
|
3210
|
-
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
|
|
3172
|
+
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 Pe({
|
|
3211
3173
|
source: e,
|
|
3212
3174
|
repeat: "repeat"
|
|
3213
3175
|
});
|
|
3214
3176
|
}
|
|
3215
3177
|
}
|
|
3216
|
-
const
|
|
3217
|
-
|
|
3178
|
+
const wt = {
|
|
3179
|
+
/**
|
|
3180
|
+
* Опции редактора
|
|
3181
|
+
*/
|
|
3218
3182
|
preserveObjectStacking: !0,
|
|
3219
|
-
// Возможность взаимодействия с объектом за пределами монтажной области
|
|
3220
3183
|
controlsAboveOverlay: !0,
|
|
3221
|
-
// Зум по центру
|
|
3222
3184
|
centeredScaling: !0,
|
|
3223
|
-
// Поворот объекта по центру
|
|
3224
3185
|
centeredRotation: !0,
|
|
3225
3186
|
/*
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
// Canvas Montage Area width and height
|
|
3187
|
+
* Кастомные опции
|
|
3188
|
+
*/
|
|
3229
3189
|
montageAreaWidth: 512,
|
|
3230
3190
|
montageAreaHeight: 512,
|
|
3231
|
-
// Canvas backstore width and height
|
|
3232
3191
|
canvasBackstoreWidth: "auto",
|
|
3233
3192
|
canvasBackstoreHeight: "auto",
|
|
3234
|
-
// Canvas (upper & lower) CSS width and height
|
|
3235
3193
|
canvasCSSWidth: "100%",
|
|
3236
3194
|
canvasCSSHeight: "100%",
|
|
3237
|
-
// Wrapper CSS width and height
|
|
3238
3195
|
canvasWrapperWidth: "100%",
|
|
3239
3196
|
canvasWrapperHeight: "100%",
|
|
3240
|
-
// Container CSS width and height
|
|
3241
3197
|
editorContainerWidth: "fit-content",
|
|
3242
3198
|
editorContainerHeight: "100%",
|
|
3243
|
-
// Максимальная длина истории действий
|
|
3244
3199
|
maxHistoryLength: 50,
|
|
3245
|
-
// Дефолтный тип скейлинга для объектов (cotain/cover)
|
|
3246
3200
|
scaleType: "contain",
|
|
3247
|
-
/**
|
|
3248
|
-
* Массив допустимых форматов изображений для загрузки в редактор.
|
|
3249
|
-
*/
|
|
3250
3201
|
acceptContentTypes: [
|
|
3251
3202
|
"image/png",
|
|
3252
3203
|
"image/jpeg",
|
|
@@ -3254,11 +3205,7 @@ const zt = {
|
|
|
3254
3205
|
"image/svg+xml",
|
|
3255
3206
|
"image/webp"
|
|
3256
3207
|
],
|
|
3257
|
-
// Показывать панель инструментов для выделенного объекта
|
|
3258
3208
|
showToolbar: !0,
|
|
3259
|
-
// Настройки панели инструментов выделенного объекта.
|
|
3260
|
-
// Можно передать массив с названиями действий или объект с настройками, кастомными иконками и обработчиками
|
|
3261
|
-
// ui/toolbar-manager/default-config.js
|
|
3262
3209
|
toolbar: {
|
|
3263
3210
|
lockedActions: [{
|
|
3264
3211
|
name: "Разблокировать",
|
|
@@ -3295,51 +3242,30 @@ const zt = {
|
|
|
3295
3242
|
}
|
|
3296
3243
|
]
|
|
3297
3244
|
},
|
|
3298
|
-
// Можно передать JSON объект в виде строки для инициализации редактора
|
|
3299
3245
|
initialStateJSON: null,
|
|
3300
|
-
/*
|
|
3301
|
-
* Объект изображения с которым редактор будет инициализирован. Может содержать:
|
|
3302
|
-
* - {String} url - URL изображения (обязательный)
|
|
3303
|
-
* - {String} scaleType - Тип скейлинга (image-contain/image-cover/scale-montage)
|
|
3304
|
-
* - {Boolean} withoutSave - Не сохранять состояние редактора (по умолчанию false)
|
|
3305
|
-
*/
|
|
3306
3246
|
initialImage: null,
|
|
3307
|
-
// Дефолтный масштаб
|
|
3308
3247
|
defaultScale: 1,
|
|
3309
|
-
// Минимальный и максимальный зум
|
|
3310
3248
|
minZoom: 0.1,
|
|
3311
3249
|
maxZoom: 2,
|
|
3312
|
-
// Максимальная кратность зума относительно текущего defaultZoom
|
|
3313
3250
|
maxZoomFactor: 2,
|
|
3314
|
-
// Шаг зума
|
|
3315
3251
|
zoomRatio: 0.1,
|
|
3316
3252
|
overlayMaskColor: "rgba(136, 136, 136, 0.6)",
|
|
3317
3253
|
/*
|
|
3318
3254
|
* Настройки слушателей событий
|
|
3319
3255
|
*/
|
|
3320
|
-
// Адаптировать канвас при изменении размеров контейнера (например, при изменении размеров окна браузера)
|
|
3321
3256
|
adaptCanvasToContainer: !0,
|
|
3322
|
-
// Поднимать объект на передний план по оси Z при выделении
|
|
3323
3257
|
bringToFrontOnSelection: !1,
|
|
3324
|
-
// Зум по колесику мыши
|
|
3325
3258
|
mouseWheelZooming: !0,
|
|
3326
|
-
// Перемещение канваса при зажатой кнопке ALT
|
|
3327
3259
|
canvasDragging: !0,
|
|
3328
|
-
// Копирование объектов (Ctrl + C, Ctrl + V)
|
|
3329
3260
|
copyObjectsByHotkey: !0,
|
|
3330
|
-
// Вставка изображения из буфера обмена
|
|
3331
3261
|
pasteImageFromClipboard: !0,
|
|
3332
|
-
// Отмена/повтор действия по сочетанию клавиш (Ctrl + Z, Ctrl + Y)
|
|
3333
3262
|
undoRedoByHotKeys: !0,
|
|
3334
|
-
// Выделение всех объектов по сочетанию клавиш (Ctrl + A)
|
|
3335
3263
|
selectAllByHotkey: !0,
|
|
3336
|
-
// Удаление объектов по сочетанию клавиш (Delete)
|
|
3337
3264
|
deleteObjectsByHotkey: !0,
|
|
3338
|
-
// Сброс параметров объекта по двойному клику
|
|
3339
3265
|
resetObjectFitByDoubleClick: !0
|
|
3340
3266
|
};
|
|
3341
|
-
function
|
|
3342
|
-
const t =
|
|
3267
|
+
function Ot(o, e = {}) {
|
|
3268
|
+
const t = T(T({}, wt), e), a = document.getElementById(o);
|
|
3343
3269
|
if (!a)
|
|
3344
3270
|
return Promise.reject(new Error(`Контейнер с ID "${o}" не найден.`));
|
|
3345
3271
|
const r = document.createElement("canvas");
|
|
@@ -3350,6 +3276,6 @@ function Ht(o, e = {}) {
|
|
|
3350
3276
|
});
|
|
3351
3277
|
}
|
|
3352
3278
|
export {
|
|
3353
|
-
|
|
3279
|
+
Ot as default
|
|
3354
3280
|
};
|
|
3355
3281
|
//# sourceMappingURL=main.js.map
|