@anu3ev/fabric-image-editor 0.1.34 → 0.1.36
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 +392 -475
- package/package.json +2 -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, A = (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 _, util as R, 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 _e } from "jsondiffpatch";
|
|
39
|
+
var Re = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", D = 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 += Re[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, {
|
|
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 We {
|
|
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
|
* По-умолчанию использует файл рядом с этим модулем
|
|
@@ -378,7 +387,7 @@ class Ge {
|
|
|
378
387
|
* @returns {Promise<any>}
|
|
379
388
|
*/
|
|
380
389
|
post(e, t) {
|
|
381
|
-
var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [], r = "".concat(e, ":").concat(
|
|
390
|
+
var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [], r = "".concat(e, ":").concat(D(8));
|
|
382
391
|
return new Promise((i, n) => {
|
|
383
392
|
this._callbacks.set(r, {
|
|
384
393
|
resolve: i,
|
|
@@ -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(R.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(R.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(R.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+", De = new Image();
|
|
423
|
+
De.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(R.degreesToRadians(r.angle)), o.fillStyle = Qe, o.beginPath(), o.arc(0, 0, n, 0, 2 * Math.PI), o.fill(), o.drawImage(De, -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,
|
|
@@ -496,12 +505,15 @@ class tt {
|
|
|
496
505
|
sizeY: r.sizeY,
|
|
497
506
|
offsetX: r.offsetX,
|
|
498
507
|
offsetY: r.offsetY
|
|
508
|
+
}), a === "mtr" && (e[a].cursorStyle = "grab", e[a].mouseDownHandler = (i, n, s, c) => {
|
|
509
|
+
var u = n.target;
|
|
510
|
+
u.canvas.setCursor("grabbing");
|
|
499
511
|
});
|
|
500
|
-
}),
|
|
512
|
+
}), ke.ownDefaults.controls = e;
|
|
501
513
|
}
|
|
502
514
|
}
|
|
503
|
-
var
|
|
504
|
-
function
|
|
515
|
+
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==";
|
|
516
|
+
function pe(o, e, t, a, r, i, n) {
|
|
505
517
|
try {
|
|
506
518
|
var s = o[i](n), c = s.value;
|
|
507
519
|
} catch (u) {
|
|
@@ -509,22 +521,22 @@ function ye(o, e, t, a, r, i, n) {
|
|
|
509
521
|
}
|
|
510
522
|
s.done ? e(c) : Promise.resolve(c).then(a, r);
|
|
511
523
|
}
|
|
512
|
-
function
|
|
524
|
+
function ct(o) {
|
|
513
525
|
return function() {
|
|
514
526
|
var e = this, t = arguments;
|
|
515
527
|
return new Promise(function(a, r) {
|
|
516
528
|
var i = o.apply(e, t);
|
|
517
529
|
function n(c) {
|
|
518
|
-
|
|
530
|
+
pe(i, a, r, n, s, "next", c);
|
|
519
531
|
}
|
|
520
532
|
function s(c) {
|
|
521
|
-
|
|
533
|
+
pe(i, a, r, n, s, "throw", c);
|
|
522
534
|
}
|
|
523
535
|
n(void 0);
|
|
524
536
|
});
|
|
525
537
|
};
|
|
526
538
|
}
|
|
527
|
-
const
|
|
539
|
+
const H = {
|
|
528
540
|
style: {
|
|
529
541
|
position: "absolute",
|
|
530
542
|
display: "none",
|
|
@@ -583,18 +595,18 @@ const Y = {
|
|
|
583
595
|
}],
|
|
584
596
|
offsetTop: 50,
|
|
585
597
|
icons: {
|
|
586
|
-
copyPaste:
|
|
587
|
-
delete:
|
|
588
|
-
lock:
|
|
589
|
-
unlock:
|
|
590
|
-
bringToFront:
|
|
591
|
-
sendToBack:
|
|
592
|
-
bringForward:
|
|
593
|
-
sendBackwards:
|
|
598
|
+
copyPaste: et,
|
|
599
|
+
delete: ot,
|
|
600
|
+
lock: tt,
|
|
601
|
+
unlock: at,
|
|
602
|
+
bringToFront: nt,
|
|
603
|
+
sendToBack: st,
|
|
604
|
+
bringForward: rt,
|
|
605
|
+
sendBackwards: it
|
|
594
606
|
},
|
|
595
607
|
handlers: {
|
|
596
608
|
copyPaste: function() {
|
|
597
|
-
var o =
|
|
609
|
+
var o = ct(function* (t) {
|
|
598
610
|
yield t.clipboardManager.copy(), yield t.clipboardManager.paste();
|
|
599
611
|
});
|
|
600
612
|
function e(t) {
|
|
@@ -625,7 +637,7 @@ const Y = {
|
|
|
625
637
|
}
|
|
626
638
|
}
|
|
627
639
|
};
|
|
628
|
-
function
|
|
640
|
+
function be(o, e) {
|
|
629
641
|
var t = Object.keys(o);
|
|
630
642
|
if (Object.getOwnPropertySymbols) {
|
|
631
643
|
var a = Object.getOwnPropertySymbols(o);
|
|
@@ -638,22 +650,22 @@ function pe(o, e) {
|
|
|
638
650
|
function j(o) {
|
|
639
651
|
for (var e = 1; e < arguments.length; e++) {
|
|
640
652
|
var t = arguments[e] != null ? arguments[e] : {};
|
|
641
|
-
e % 2 ?
|
|
642
|
-
|
|
643
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) :
|
|
653
|
+
e % 2 ? be(Object(t), !0).forEach(function(a) {
|
|
654
|
+
ut(o, a, t[a]);
|
|
655
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : be(Object(t)).forEach(function(a) {
|
|
644
656
|
Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
|
|
645
657
|
});
|
|
646
658
|
}
|
|
647
659
|
return o;
|
|
648
660
|
}
|
|
649
|
-
function
|
|
650
|
-
return (e =
|
|
661
|
+
function ut(o, e, t) {
|
|
662
|
+
return (e = dt(e)) in o ? Object.defineProperty(o, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : o[e] = t, o;
|
|
651
663
|
}
|
|
652
|
-
function
|
|
653
|
-
var e =
|
|
664
|
+
function dt(o) {
|
|
665
|
+
var e = lt(o, "string");
|
|
654
666
|
return typeof e == "symbol" ? e : e + "";
|
|
655
667
|
}
|
|
656
|
-
function
|
|
668
|
+
function lt(o, e) {
|
|
657
669
|
if (typeof o != "object" || !o) return o;
|
|
658
670
|
var t = o[Symbol.toPrimitive];
|
|
659
671
|
if (t !== void 0) {
|
|
@@ -663,7 +675,7 @@ function gt(o, e) {
|
|
|
663
675
|
}
|
|
664
676
|
return (e === "string" ? String : Number)(o);
|
|
665
677
|
}
|
|
666
|
-
class
|
|
678
|
+
class ht {
|
|
667
679
|
/**
|
|
668
680
|
* @param {object} options
|
|
669
681
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -675,11 +687,11 @@ class vt {
|
|
|
675
687
|
if (this.options = t.options, !!this.options.showToolbar) {
|
|
676
688
|
this.editor = t, this.canvas = t.canvas;
|
|
677
689
|
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({},
|
|
690
|
+
this.config = j(j(j({}, H), a), {}, {
|
|
691
|
+
style: j(j({}, H.style), a.style || {}),
|
|
692
|
+
btnStyle: j(j({}, H.btnStyle), a.btnStyle || {}),
|
|
693
|
+
icons: j(j({}, H.icons), a.icons || {}),
|
|
694
|
+
handlers: j(j({}, H.handlers), a.handlers || {})
|
|
683
695
|
}), 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
696
|
this.el.style.display = "none";
|
|
685
697
|
}, this._createDOM(), this._bindEvents();
|
|
@@ -800,10 +812,10 @@ class vt {
|
|
|
800
812
|
} = e.getCenterPoint(), {
|
|
801
813
|
top: u,
|
|
802
814
|
height: l
|
|
803
|
-
} = e.getBoundingRect(!1, !0), d = c * i + n, h = d - t.offsetWidth / 2,
|
|
815
|
+
} = e.getBoundingRect(!1, !0), d = c * i + n, h = d - t.offsetWidth / 2, g = (u + l) * i + s + a.offsetTop;
|
|
804
816
|
Object.assign(t.style, {
|
|
805
817
|
left: "".concat(h, "px"),
|
|
806
|
-
top: "".concat(
|
|
818
|
+
top: "".concat(g, "px"),
|
|
807
819
|
display: "flex"
|
|
808
820
|
});
|
|
809
821
|
}
|
|
@@ -815,7 +827,7 @@ class vt {
|
|
|
815
827
|
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
828
|
}
|
|
817
829
|
}
|
|
818
|
-
function
|
|
830
|
+
function Ie(o, e, t, a, r, i, n) {
|
|
819
831
|
try {
|
|
820
832
|
var s = o[i](n), c = s.value;
|
|
821
833
|
} catch (u) {
|
|
@@ -823,22 +835,22 @@ function be(o, e, t, a, r, i, n) {
|
|
|
823
835
|
}
|
|
824
836
|
s.done ? e(c) : Promise.resolve(c).then(a, r);
|
|
825
837
|
}
|
|
826
|
-
function
|
|
838
|
+
function ee(o) {
|
|
827
839
|
return function() {
|
|
828
840
|
var e = this, t = arguments;
|
|
829
841
|
return new Promise(function(a, r) {
|
|
830
842
|
var i = o.apply(e, t);
|
|
831
843
|
function n(c) {
|
|
832
|
-
|
|
844
|
+
Ie(i, a, r, n, s, "next", c);
|
|
833
845
|
}
|
|
834
846
|
function s(c) {
|
|
835
|
-
|
|
847
|
+
Ie(i, a, r, n, s, "throw", c);
|
|
836
848
|
}
|
|
837
849
|
n(void 0);
|
|
838
850
|
});
|
|
839
851
|
};
|
|
840
852
|
}
|
|
841
|
-
class
|
|
853
|
+
class gt {
|
|
842
854
|
/**
|
|
843
855
|
* @param {object} options
|
|
844
856
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -854,7 +866,7 @@ class mt {
|
|
|
854
866
|
return this._historySuspendCount > 0;
|
|
855
867
|
}
|
|
856
868
|
_createDiffPatcher() {
|
|
857
|
-
this.diffPatcher =
|
|
869
|
+
this.diffPatcher = _e({
|
|
858
870
|
objectHash(e) {
|
|
859
871
|
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
872
|
},
|
|
@@ -927,7 +939,7 @@ class mt {
|
|
|
927
939
|
*/
|
|
928
940
|
loadStateFromFullState(e) {
|
|
929
941
|
var t = this;
|
|
930
|
-
return
|
|
942
|
+
return ee(function* () {
|
|
931
943
|
if (e) {
|
|
932
944
|
console.log("loadStateFromFullState fullState", e), yield t.canvas.loadFromJSON(e);
|
|
933
945
|
var a = t.canvas.getObjects().find((i) => i.id === "montage-area");
|
|
@@ -943,7 +955,7 @@ class mt {
|
|
|
943
955
|
*/
|
|
944
956
|
undo() {
|
|
945
957
|
var e = this;
|
|
946
|
-
return
|
|
958
|
+
return ee(function* () {
|
|
947
959
|
if (!e.skipHistory) {
|
|
948
960
|
if (e.currentIndex <= 0) {
|
|
949
961
|
console.log("Нет предыдущих состояний для отмены.");
|
|
@@ -970,7 +982,7 @@ class mt {
|
|
|
970
982
|
*/
|
|
971
983
|
redo() {
|
|
972
984
|
var e = this;
|
|
973
|
-
return
|
|
985
|
+
return ee(function* () {
|
|
974
986
|
if (!e.skipHistory) {
|
|
975
987
|
if (e.currentIndex >= e.patches.length) {
|
|
976
988
|
console.log("Нет состояний для повтора.");
|
|
@@ -992,8 +1004,8 @@ class mt {
|
|
|
992
1004
|
})();
|
|
993
1005
|
}
|
|
994
1006
|
}
|
|
995
|
-
const
|
|
996
|
-
function
|
|
1007
|
+
const vt = 0.1, mt = 2, Mt = 0.1, ft = 90, k = 16, x = 16, E = 4096, T = 4096;
|
|
1008
|
+
function Se(o, e, t, a, r, i, n) {
|
|
997
1009
|
try {
|
|
998
1010
|
var s = o[i](n), c = s.value;
|
|
999
1011
|
} catch (u) {
|
|
@@ -1007,16 +1019,16 @@ function O(o) {
|
|
|
1007
1019
|
return new Promise(function(a, r) {
|
|
1008
1020
|
var i = o.apply(e, t);
|
|
1009
1021
|
function n(c) {
|
|
1010
|
-
|
|
1022
|
+
Se(i, a, r, n, s, "next", c);
|
|
1011
1023
|
}
|
|
1012
1024
|
function s(c) {
|
|
1013
|
-
|
|
1025
|
+
Se(i, a, r, n, s, "throw", c);
|
|
1014
1026
|
}
|
|
1015
1027
|
n(void 0);
|
|
1016
1028
|
});
|
|
1017
1029
|
};
|
|
1018
1030
|
}
|
|
1019
|
-
class
|
|
1031
|
+
class C {
|
|
1020
1032
|
/**
|
|
1021
1033
|
* @param {object} options
|
|
1022
1034
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -1054,39 +1066,39 @@ class A {
|
|
|
1054
1066
|
transformManager: c,
|
|
1055
1067
|
historyManager: u,
|
|
1056
1068
|
errorManager: l
|
|
1057
|
-
} = t.editor, d = yield t.getContentType(a), h =
|
|
1058
|
-
acceptContentTypes:
|
|
1069
|
+
} = t.editor, d = yield t.getContentType(a), h = C.getFormatFromContentType(d), {
|
|
1070
|
+
acceptContentTypes: g,
|
|
1059
1071
|
acceptFormats: m
|
|
1060
1072
|
} = t;
|
|
1061
1073
|
if (!t.isAllowedContentType(d)) {
|
|
1062
|
-
var
|
|
1074
|
+
var M = "Неверный contentType для изображения: ".concat(d, ". Ожидается один из: ").concat(t.acceptContentTypes.join(", "), ".");
|
|
1063
1075
|
return l.emitError({
|
|
1064
1076
|
origin: "ImageManager",
|
|
1065
1077
|
method: "importImage",
|
|
1066
1078
|
code: "INVALID_CONTENT_TYPE",
|
|
1067
|
-
message:
|
|
1079
|
+
message: M,
|
|
1068
1080
|
data: {
|
|
1069
1081
|
source: a,
|
|
1070
1082
|
format: h,
|
|
1071
1083
|
contentType: d,
|
|
1072
|
-
acceptContentTypes:
|
|
1084
|
+
acceptContentTypes: g,
|
|
1073
1085
|
acceptFormats: m
|
|
1074
1086
|
}
|
|
1075
1087
|
}), null;
|
|
1076
1088
|
}
|
|
1077
1089
|
u.suspendHistory();
|
|
1078
1090
|
try {
|
|
1079
|
-
var
|
|
1091
|
+
var f, v;
|
|
1080
1092
|
if (a instanceof File)
|
|
1081
|
-
|
|
1093
|
+
f = URL.createObjectURL(a);
|
|
1082
1094
|
else if (typeof a == "string") {
|
|
1083
1095
|
var S = yield fetch(a, {
|
|
1084
1096
|
mode: "cors"
|
|
1085
|
-
}),
|
|
1097
|
+
}), N = yield S.blob({
|
|
1086
1098
|
type: d,
|
|
1087
1099
|
quality: 1
|
|
1088
1100
|
});
|
|
1089
|
-
|
|
1101
|
+
f = URL.createObjectURL(N);
|
|
1090
1102
|
} else
|
|
1091
1103
|
return l.emitError({
|
|
1092
1104
|
origin: "ImageManager",
|
|
@@ -1097,71 +1109,71 @@ class A {
|
|
|
1097
1109
|
source: a,
|
|
1098
1110
|
format: h,
|
|
1099
1111
|
contentType: d,
|
|
1100
|
-
acceptContentTypes:
|
|
1112
|
+
acceptContentTypes: g,
|
|
1101
1113
|
acceptFormats: m
|
|
1102
1114
|
}
|
|
1103
1115
|
}), null;
|
|
1104
|
-
if (t._createdBlobUrls.push(
|
|
1105
|
-
var
|
|
1106
|
-
|
|
1116
|
+
if (t._createdBlobUrls.push(f), h === "svg") {
|
|
1117
|
+
var w = yield xe(f);
|
|
1118
|
+
v = R.groupSVGElements(w.objects, w.options);
|
|
1107
1119
|
} else
|
|
1108
|
-
|
|
1120
|
+
v = yield q.fromURL(f, {
|
|
1109
1121
|
crossOrigin: "anonymous"
|
|
1110
1122
|
});
|
|
1111
1123
|
var {
|
|
1112
|
-
width:
|
|
1124
|
+
width: L,
|
|
1113
1125
|
height: y
|
|
1114
|
-
} =
|
|
1115
|
-
if (y >
|
|
1116
|
-
var p = yield t.resizeImageToBoundaries(
|
|
1117
|
-
t._createdBlobUrls.push(
|
|
1126
|
+
} = v;
|
|
1127
|
+
if (y > T || L > E) {
|
|
1128
|
+
var p = yield t.resizeImageToBoundaries(v._element.src, "max"), B = URL.createObjectURL(p);
|
|
1129
|
+
t._createdBlobUrls.push(B), v = yield q.fromURL(B, {
|
|
1118
1130
|
crossOrigin: "anonymous"
|
|
1119
1131
|
});
|
|
1120
|
-
} else if (y <
|
|
1121
|
-
var
|
|
1122
|
-
t._createdBlobUrls.push(
|
|
1132
|
+
} else if (y < x || L < k) {
|
|
1133
|
+
var W = yield t.resizeImageToBoundaries(v._element.src, "min"), Z = URL.createObjectURL(W);
|
|
1134
|
+
t._createdBlobUrls.push(Z), v = yield q.fromURL(Z, {
|
|
1123
1135
|
crossOrigin: "anonymous"
|
|
1124
1136
|
});
|
|
1125
1137
|
}
|
|
1126
|
-
if (
|
|
1138
|
+
if (v.set("id", "".concat(v.type, "-").concat(D())), v.set("format", h), r === "scale-montage")
|
|
1127
1139
|
t.editor.canvasManager.scaleMontageAreaToImage({
|
|
1128
|
-
object:
|
|
1140
|
+
object: v,
|
|
1129
1141
|
withoutSave: !0
|
|
1130
1142
|
});
|
|
1131
1143
|
else {
|
|
1132
1144
|
var {
|
|
1133
|
-
width:
|
|
1134
|
-
height:
|
|
1135
|
-
} = s,
|
|
1136
|
-
imageObject:
|
|
1145
|
+
width: F,
|
|
1146
|
+
height: z
|
|
1147
|
+
} = s, U = t.calculateScaleFactor({
|
|
1148
|
+
imageObject: v,
|
|
1137
1149
|
scaleType: r
|
|
1138
1150
|
});
|
|
1139
|
-
r === "image-contain" &&
|
|
1140
|
-
object:
|
|
1151
|
+
r === "image-contain" && U < 1 ? c.fitObject({
|
|
1152
|
+
object: v,
|
|
1141
1153
|
type: "contain",
|
|
1142
1154
|
withoutSave: !0
|
|
1143
|
-
}) : r === "image-cover" && (
|
|
1144
|
-
object:
|
|
1155
|
+
}) : r === "image-cover" && (L > F || y > z) && c.fitObject({
|
|
1156
|
+
object: v,
|
|
1145
1157
|
type: "cover",
|
|
1146
1158
|
withoutSave: !0
|
|
1147
1159
|
});
|
|
1148
1160
|
}
|
|
1149
|
-
n.add(
|
|
1150
|
-
var
|
|
1151
|
-
image:
|
|
1161
|
+
n.add(v), n.centerObject(v), n.setActiveObject(v), n.renderAll(), u.resumeHistory(), i || u.saveState();
|
|
1162
|
+
var V = {
|
|
1163
|
+
image: v,
|
|
1152
1164
|
format: h,
|
|
1153
1165
|
contentType: d,
|
|
1154
1166
|
scale: r,
|
|
1155
1167
|
withoutSave: i,
|
|
1156
1168
|
source: a
|
|
1157
1169
|
};
|
|
1158
|
-
return n.fire("editor:image-imported",
|
|
1159
|
-
} catch (
|
|
1170
|
+
return n.fire("editor:image-imported", V), V;
|
|
1171
|
+
} catch (Y) {
|
|
1160
1172
|
return l.emitError({
|
|
1161
1173
|
origin: "ImageManager",
|
|
1162
1174
|
method: "importImage",
|
|
1163
1175
|
code: "IMPORT_FAILED",
|
|
1164
|
-
message: "Ошибка импорта изображения: ".concat(
|
|
1176
|
+
message: "Ошибка импорта изображения: ".concat(Y.message),
|
|
1165
1177
|
data: {
|
|
1166
1178
|
source: a,
|
|
1167
1179
|
format: h,
|
|
@@ -1184,15 +1196,15 @@ class A {
|
|
|
1184
1196
|
resizeImageToBoundaries(e) {
|
|
1185
1197
|
var t = arguments, a = this;
|
|
1186
1198
|
return O(function* () {
|
|
1187
|
-
var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", i = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров c сохранением пропорций: ".concat(
|
|
1188
|
-
r === "min" && (i = "Размер изображения меньше минимального размера канваса, поэтому оно будет увеличено до минимальных размеров c сохранением пропорций: ".concat(
|
|
1199
|
+
var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", i = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров c сохранением пропорций: ".concat(E, "x").concat(T);
|
|
1200
|
+
r === "min" && (i = "Размер изображения меньше минимального размера канваса, поэтому оно будет увеличено до минимальных размеров c сохранением пропорций: ".concat(k, "x").concat(x));
|
|
1189
1201
|
var n = {
|
|
1190
1202
|
dataURL: e,
|
|
1191
1203
|
sizeType: r,
|
|
1192
|
-
maxWidth:
|
|
1193
|
-
maxHeight:
|
|
1194
|
-
minWidth:
|
|
1195
|
-
minHeight:
|
|
1204
|
+
maxWidth: E,
|
|
1205
|
+
maxHeight: T,
|
|
1206
|
+
minWidth: k,
|
|
1207
|
+
minHeight: x
|
|
1196
1208
|
};
|
|
1197
1209
|
return a.editor.errorManager.emitWarning({
|
|
1198
1210
|
origin: "ImageManager",
|
|
@@ -1228,32 +1240,32 @@ class A {
|
|
|
1228
1240
|
workerManager: u
|
|
1229
1241
|
} = t.editor;
|
|
1230
1242
|
try {
|
|
1231
|
-
var l = r === "application/pdf", d = l ? "image/jpg" : r, h =
|
|
1243
|
+
var l = r === "application/pdf", d = l ? "image/jpg" : r, h = C.getFormatFromContentType(d);
|
|
1232
1244
|
c.setCoords();
|
|
1233
1245
|
var {
|
|
1234
|
-
left:
|
|
1246
|
+
left: g,
|
|
1235
1247
|
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:
|
|
1248
|
+
width: M,
|
|
1249
|
+
height: f
|
|
1250
|
+
} = c.getBoundingRect(), v = yield s.clone(["id", "format", "locked"]);
|
|
1251
|
+
["image/jpg", "image/jpeg"].includes(d) && (v.backgroundColor = "#ffffff");
|
|
1252
|
+
var S = v.getObjects().find((b) => b.id === c.id);
|
|
1253
|
+
S.visible = !1, v.viewportTransform = [1, 0, 0, 1, -g, -m], v.setDimensions({
|
|
1254
|
+
width: M,
|
|
1255
|
+
height: f
|
|
1244
1256
|
}, {
|
|
1245
1257
|
backstoreOnly: !0
|
|
1246
|
-
}),
|
|
1247
|
-
var
|
|
1248
|
-
if (h === "svg" &&
|
|
1249
|
-
var
|
|
1250
|
-
|
|
1251
|
-
var
|
|
1258
|
+
}), v.renderAll();
|
|
1259
|
+
var N = v.getObjects().filter((b) => b.format).every((b) => b.format === "svg");
|
|
1260
|
+
if (h === "svg" && N) {
|
|
1261
|
+
var w = v.toSVG();
|
|
1262
|
+
v.dispose();
|
|
1263
|
+
var L = C._exportSVGStringAsFile(w, {
|
|
1252
1264
|
exportAsBase64: i,
|
|
1253
1265
|
exportAsBlob: n,
|
|
1254
1266
|
fileName: a
|
|
1255
1267
|
}), y = {
|
|
1256
|
-
image:
|
|
1268
|
+
image: L,
|
|
1257
1269
|
format: "svg",
|
|
1258
1270
|
contentType: "image/svg+xml",
|
|
1259
1271
|
fileName: a.replace(/\.[^/.]+$/, ".svg")
|
|
@@ -1261,38 +1273,38 @@ class A {
|
|
|
1261
1273
|
return s.fire("editor:canvas-exported", y), y;
|
|
1262
1274
|
}
|
|
1263
1275
|
var p = yield new Promise((b) => {
|
|
1264
|
-
|
|
1276
|
+
v.getElement().toBlob(b);
|
|
1265
1277
|
});
|
|
1266
|
-
if (
|
|
1267
|
-
var
|
|
1278
|
+
if (v.dispose(), n) {
|
|
1279
|
+
var B = {
|
|
1268
1280
|
image: p,
|
|
1269
1281
|
format: h,
|
|
1270
1282
|
contentType: d,
|
|
1271
1283
|
fileName: a
|
|
1272
1284
|
};
|
|
1273
|
-
return s.fire("editor:canvas-exported",
|
|
1285
|
+
return s.fire("editor:canvas-exported", B), B;
|
|
1274
1286
|
}
|
|
1275
|
-
var
|
|
1287
|
+
var W = yield createImageBitmap(p), Z = yield u.post("toDataURL", {
|
|
1276
1288
|
format: h,
|
|
1277
1289
|
quality: 1,
|
|
1278
|
-
bitmap:
|
|
1279
|
-
}, [
|
|
1290
|
+
bitmap: W
|
|
1291
|
+
}, [W]);
|
|
1280
1292
|
if (l) {
|
|
1281
|
-
var
|
|
1282
|
-
orientation:
|
|
1293
|
+
var F = 0.264583, z = M * F, U = f * F, V = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, Y = new V({
|
|
1294
|
+
orientation: z > U ? "landscape" : "portrait",
|
|
1283
1295
|
unit: "mm",
|
|
1284
|
-
format: [
|
|
1296
|
+
format: [z, U]
|
|
1285
1297
|
});
|
|
1286
|
-
if (
|
|
1287
|
-
var
|
|
1288
|
-
image:
|
|
1298
|
+
if (Y.addImage(Z, "JPG", 0, 0, z, U), i) {
|
|
1299
|
+
var Ne = Y.output("datauristring"), de = {
|
|
1300
|
+
image: Ne,
|
|
1289
1301
|
format: "pdf",
|
|
1290
1302
|
contentType: "application/pdf",
|
|
1291
1303
|
fileName: a
|
|
1292
1304
|
};
|
|
1293
1305
|
return s.fire("editor:canvas-exported", de), de;
|
|
1294
1306
|
}
|
|
1295
|
-
var
|
|
1307
|
+
var we = Y.output("blob"), Le = new File([we], a, {
|
|
1296
1308
|
type: "application/pdf"
|
|
1297
1309
|
}), le = {
|
|
1298
1310
|
image: Le,
|
|
@@ -1304,14 +1316,14 @@ class A {
|
|
|
1304
1316
|
}
|
|
1305
1317
|
if (i) {
|
|
1306
1318
|
var he = {
|
|
1307
|
-
image:
|
|
1319
|
+
image: Z,
|
|
1308
1320
|
format: h,
|
|
1309
1321
|
contentType: d,
|
|
1310
1322
|
fileName: a
|
|
1311
1323
|
};
|
|
1312
1324
|
return s.fire("editor:canvas-exported", he), he;
|
|
1313
1325
|
}
|
|
1314
|
-
var ge = h === "svg" && !
|
|
1326
|
+
var ge = h === "svg" && !N ? a.replace(/\.[^/.]+$/, ".png") : a, Ee = new File([p], ge, {
|
|
1315
1327
|
type: d
|
|
1316
1328
|
}), ve = {
|
|
1317
1329
|
image: Ee,
|
|
@@ -1374,14 +1386,14 @@ class A {
|
|
|
1374
1386
|
}
|
|
1375
1387
|
}), "";
|
|
1376
1388
|
try {
|
|
1377
|
-
var d =
|
|
1389
|
+
var d = C.getFormatFromContentType(i);
|
|
1378
1390
|
if (d === "svg") {
|
|
1379
|
-
var h = l.toSVG(),
|
|
1391
|
+
var h = l.toSVG(), g = t._exportSVGStringAsFile(h, {
|
|
1380
1392
|
exportAsBase64: n,
|
|
1381
1393
|
exportAsBlob: s,
|
|
1382
1394
|
fileName: r
|
|
1383
1395
|
}), m = {
|
|
1384
|
-
image:
|
|
1396
|
+
image: g,
|
|
1385
1397
|
format: d,
|
|
1386
1398
|
contentType: "image/svg+xml",
|
|
1387
1399
|
fileName: r.replace(/\.[^/.]+$/, ".svg")
|
|
@@ -1389,34 +1401,34 @@ class A {
|
|
|
1389
1401
|
return c.fire("editor:object-exported", m), m;
|
|
1390
1402
|
}
|
|
1391
1403
|
if (n) {
|
|
1392
|
-
var
|
|
1404
|
+
var M = yield createImageBitmap(l._element), f = yield u.post("toDataURL", {
|
|
1393
1405
|
format: d,
|
|
1394
1406
|
quality: 1,
|
|
1395
|
-
bitmap:
|
|
1396
|
-
}, [
|
|
1397
|
-
image:
|
|
1407
|
+
bitmap: M
|
|
1408
|
+
}, [M]), v = {
|
|
1409
|
+
image: f,
|
|
1398
1410
|
format: d,
|
|
1399
1411
|
contentType: i,
|
|
1400
1412
|
fileName: r
|
|
1401
1413
|
};
|
|
1402
|
-
return c.fire("editor:object-exported",
|
|
1414
|
+
return c.fire("editor:object-exported", v), v;
|
|
1403
1415
|
}
|
|
1404
|
-
var S = l.toCanvasElement(),
|
|
1416
|
+
var S = l.toCanvasElement(), N = yield new Promise((p) => {
|
|
1405
1417
|
S.toBlob(p);
|
|
1406
1418
|
});
|
|
1407
1419
|
if (s) {
|
|
1408
|
-
var
|
|
1409
|
-
image:
|
|
1420
|
+
var w = {
|
|
1421
|
+
image: N,
|
|
1410
1422
|
format: d,
|
|
1411
1423
|
contentType: i,
|
|
1412
1424
|
fileName: r
|
|
1413
1425
|
};
|
|
1414
|
-
return c.fire("editor:object-exported",
|
|
1426
|
+
return c.fire("editor:object-exported", w), w;
|
|
1415
1427
|
}
|
|
1416
|
-
var
|
|
1428
|
+
var L = new File([N], r, {
|
|
1417
1429
|
type: i
|
|
1418
1430
|
}), y = {
|
|
1419
|
-
image:
|
|
1431
|
+
image: L,
|
|
1420
1432
|
format: d,
|
|
1421
1433
|
contentType: i,
|
|
1422
1434
|
fileName: r
|
|
@@ -1473,7 +1485,7 @@ class A {
|
|
|
1473
1485
|
* @returns {string[]} - массив допустимых форматов изображений
|
|
1474
1486
|
*/
|
|
1475
1487
|
getAllowedFormatsFromContentTypes() {
|
|
1476
|
-
return this.acceptContentTypes.map((e) =>
|
|
1488
|
+
return this.acceptContentTypes.map((e) => C.getFormatFromContentType(e)).filter((e) => e);
|
|
1477
1489
|
}
|
|
1478
1490
|
/**
|
|
1479
1491
|
* Извлекает чистый формат (subtype) из contentType,
|
|
@@ -1542,7 +1554,7 @@ class A {
|
|
|
1542
1554
|
try {
|
|
1543
1555
|
var t, a = new URL(e), r = (t = a.pathname.split(".").pop()) === null || t === void 0 ? void 0 : t.toLowerCase(), i = {};
|
|
1544
1556
|
return this.acceptContentTypes.forEach((n) => {
|
|
1545
|
-
var s =
|
|
1557
|
+
var s = C.getFormatFromContentType(n);
|
|
1546
1558
|
s && (i[s] = n);
|
|
1547
1559
|
}), i[r] || "application/octet-stream";
|
|
1548
1560
|
} catch (n) {
|
|
@@ -1570,7 +1582,7 @@ class A {
|
|
|
1570
1582
|
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
1583
|
}
|
|
1572
1584
|
}
|
|
1573
|
-
class
|
|
1585
|
+
class jt {
|
|
1574
1586
|
/**
|
|
1575
1587
|
* @param {object} options
|
|
1576
1588
|
* @param {ImageEditor} options.editor – экземпляр редактора
|
|
@@ -1606,7 +1618,7 @@ class pt {
|
|
|
1606
1618
|
} = this.editor, {
|
|
1607
1619
|
width: c,
|
|
1608
1620
|
height: u
|
|
1609
|
-
} = n, l = Number(Math.max(Math.min(e,
|
|
1621
|
+
} = n, l = Number(Math.max(Math.min(e, E), k));
|
|
1610
1622
|
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(l), n.set({
|
|
1611
1623
|
width: l
|
|
1612
1624
|
}), i.clipPath.set({
|
|
@@ -1617,10 +1629,10 @@ class pt {
|
|
|
1617
1629
|
return;
|
|
1618
1630
|
}
|
|
1619
1631
|
var {
|
|
1620
|
-
left:
|
|
1632
|
+
left: g,
|
|
1621
1633
|
top: m
|
|
1622
|
-
} = this.getObjectDefaultCoords(n),
|
|
1623
|
-
i.setViewportTransform([
|
|
1634
|
+
} = this.getObjectDefaultCoords(n), M = i.getZoom();
|
|
1635
|
+
i.setViewportTransform([M, 0, 0, M, g, m]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i == null || i.fire("editor:resolution-width-changed", {
|
|
1624
1636
|
width: e
|
|
1625
1637
|
});
|
|
1626
1638
|
}
|
|
@@ -1650,7 +1662,7 @@ class pt {
|
|
|
1650
1662
|
} = this.editor, {
|
|
1651
1663
|
width: c,
|
|
1652
1664
|
height: u
|
|
1653
|
-
} = n, l = Number(Math.max(Math.min(e,
|
|
1665
|
+
} = n, l = Number(Math.max(Math.min(e, T), x));
|
|
1654
1666
|
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(l), n.set({
|
|
1655
1667
|
height: l
|
|
1656
1668
|
}), i.clipPath.set({
|
|
@@ -1661,10 +1673,10 @@ class pt {
|
|
|
1661
1673
|
return;
|
|
1662
1674
|
}
|
|
1663
1675
|
var {
|
|
1664
|
-
left:
|
|
1676
|
+
left: g,
|
|
1665
1677
|
top: m
|
|
1666
|
-
} = this.getObjectDefaultCoords(n),
|
|
1667
|
-
i.setViewportTransform([
|
|
1678
|
+
} = this.getObjectDefaultCoords(n), M = i.getZoom();
|
|
1679
|
+
i.setViewportTransform([M, 0, 0, M, g, m]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i == null || i.fire("editor:resolution-height-changed", {
|
|
1668
1680
|
height: e
|
|
1669
1681
|
});
|
|
1670
1682
|
}
|
|
@@ -1677,7 +1689,7 @@ class pt {
|
|
|
1677
1689
|
var {
|
|
1678
1690
|
canvas: e,
|
|
1679
1691
|
montageArea: t
|
|
1680
|
-
} = this.editor, a = e.getWidth(), r = e.getHeight(), i = e.getZoom(), n = new
|
|
1692
|
+
} = this.editor, a = e.getWidth(), r = e.getHeight(), i = e.getZoom(), n = new Be(a / 2, r / 2);
|
|
1681
1693
|
t.set({
|
|
1682
1694
|
left: a / 2,
|
|
1683
1695
|
top: r / 2
|
|
@@ -1712,7 +1724,7 @@ class pt {
|
|
|
1712
1724
|
}
|
|
1713
1725
|
setCanvasBackstoreWidth(e) {
|
|
1714
1726
|
if (!(!e || typeof e != "number")) {
|
|
1715
|
-
var t = Math.max(Math.min(e,
|
|
1727
|
+
var t = Math.max(Math.min(e, E), k);
|
|
1716
1728
|
this.editor.canvas.setDimensions({
|
|
1717
1729
|
width: t
|
|
1718
1730
|
}, {
|
|
@@ -1722,7 +1734,7 @@ class pt {
|
|
|
1722
1734
|
}
|
|
1723
1735
|
setCanvasBackstoreHeight(e) {
|
|
1724
1736
|
if (!(!e || typeof e != "number")) {
|
|
1725
|
-
var t = Math.max(Math.min(e,
|
|
1737
|
+
var t = Math.max(Math.min(e, T), x);
|
|
1726
1738
|
this.editor.canvas.setDimensions({
|
|
1727
1739
|
height: t
|
|
1728
1740
|
}, {
|
|
@@ -1733,7 +1745,7 @@ class pt {
|
|
|
1733
1745
|
adaptCanvasToContainer() {
|
|
1734
1746
|
var {
|
|
1735
1747
|
canvas: e
|
|
1736
|
-
} = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, i = Math.max(Math.min(a,
|
|
1748
|
+
} = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, i = Math.max(Math.min(a, E), k), n = Math.max(Math.min(r, T), x);
|
|
1737
1749
|
console.log("adaptCanvasToContainer newWidth", i), console.log("adaptCanvasToContainer newHeight", n), e.setDimensions({
|
|
1738
1750
|
width: i,
|
|
1739
1751
|
height: n
|
|
@@ -1916,23 +1928,23 @@ class pt {
|
|
|
1916
1928
|
var {
|
|
1917
1929
|
width: l,
|
|
1918
1930
|
height: d
|
|
1919
|
-
} = u, h = Math.min(l,
|
|
1931
|
+
} = u, h = Math.min(l, E), g = Math.min(d, T);
|
|
1920
1932
|
if (t) {
|
|
1921
1933
|
var {
|
|
1922
1934
|
width: m,
|
|
1923
|
-
height:
|
|
1924
|
-
} = i,
|
|
1925
|
-
h = m * S,
|
|
1935
|
+
height: M
|
|
1936
|
+
} = i, f = l / m, v = d / M, S = Math.max(f, v);
|
|
1937
|
+
h = m * S, g = M * S;
|
|
1926
1938
|
}
|
|
1927
1939
|
this.setResolutionWidth(h, {
|
|
1928
1940
|
withoutSave: !0
|
|
1929
|
-
}), this.setResolutionHeight(
|
|
1941
|
+
}), this.setResolutionHeight(g, {
|
|
1930
1942
|
withoutSave: !0
|
|
1931
1943
|
}), (l > s || d > c) && n.calculateAndApplyDefaultZoom(s, c), n.resetObject(u, {
|
|
1932
1944
|
withoutSave: !0
|
|
1933
1945
|
}), r.centerObject(u), r.renderAll(), a || this.editor.historyManager.saveState(), r.fire("editor:canvas-scaled", {
|
|
1934
1946
|
width: h,
|
|
1935
|
-
height:
|
|
1947
|
+
height: g
|
|
1936
1948
|
});
|
|
1937
1949
|
}
|
|
1938
1950
|
}
|
|
@@ -1987,7 +1999,7 @@ class pt {
|
|
|
1987
1999
|
return r.filter((i) => i.id !== t.id && i.id !== a.id);
|
|
1988
2000
|
}
|
|
1989
2001
|
}
|
|
1990
|
-
class
|
|
2002
|
+
class yt {
|
|
1991
2003
|
/**
|
|
1992
2004
|
* @param {object} options
|
|
1993
2005
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2026,7 +2038,7 @@ class bt {
|
|
|
2026
2038
|
* Если передавать координаты курсора, то нужно быть аккуратнее, так как юзер может выйти за пределы рабочей области
|
|
2027
2039
|
*/
|
|
2028
2040
|
zoom() {
|
|
2029
|
-
var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] :
|
|
2041
|
+
var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Mt, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
2030
2042
|
if (e) {
|
|
2031
2043
|
var {
|
|
2032
2044
|
canvas: a,
|
|
@@ -2098,7 +2110,7 @@ class bt {
|
|
|
2098
2110
|
* @fires editor:object-rotated
|
|
2099
2111
|
*/
|
|
2100
2112
|
rotate() {
|
|
2101
|
-
var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] :
|
|
2113
|
+
var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ft, {
|
|
2102
2114
|
withoutSave: t
|
|
2103
2115
|
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
|
|
2104
2116
|
canvas: a,
|
|
@@ -2185,13 +2197,13 @@ class bt {
|
|
|
2185
2197
|
if (["activeselection"].includes(c.type) && !r) {
|
|
2186
2198
|
var u = c.getObjects();
|
|
2187
2199
|
i.discardActiveObject(), u.forEach((h) => {
|
|
2188
|
-
var
|
|
2200
|
+
var g = n.calculateScaleFactor({
|
|
2189
2201
|
imageObject: h,
|
|
2190
2202
|
scaleType: t
|
|
2191
2203
|
});
|
|
2192
|
-
h.scale(
|
|
2204
|
+
h.scale(g), i.centerObject(h);
|
|
2193
2205
|
});
|
|
2194
|
-
var l = new
|
|
2206
|
+
var l = new _(u, {
|
|
2195
2207
|
canvas: i
|
|
2196
2208
|
});
|
|
2197
2209
|
i.setActiveObject(l);
|
|
@@ -2253,12 +2265,12 @@ class bt {
|
|
|
2253
2265
|
height: d
|
|
2254
2266
|
} = i, {
|
|
2255
2267
|
width: h,
|
|
2256
|
-
height:
|
|
2268
|
+
height: g
|
|
2257
2269
|
} = u, m = n.calculateScaleFactor({
|
|
2258
2270
|
imageObject: u,
|
|
2259
2271
|
scaleType: c
|
|
2260
2272
|
});
|
|
2261
|
-
c === "contain" && m < 1 || c === "cover" && (h > l ||
|
|
2273
|
+
c === "contain" && m < 1 || c === "cover" && (h > l || g > d) ? this.fitObject({
|
|
2262
2274
|
object: u,
|
|
2263
2275
|
withoutSave: !0
|
|
2264
2276
|
}) : u.set({
|
|
@@ -2274,7 +2286,7 @@ class bt {
|
|
|
2274
2286
|
}
|
|
2275
2287
|
}
|
|
2276
2288
|
}
|
|
2277
|
-
class
|
|
2289
|
+
class pt {
|
|
2278
2290
|
/**
|
|
2279
2291
|
* @param {object} options
|
|
2280
2292
|
* @param {ImageEditor} options.editor – экземпляр редактора
|
|
@@ -2374,7 +2386,7 @@ class It {
|
|
|
2374
2386
|
}
|
|
2375
2387
|
}
|
|
2376
2388
|
}
|
|
2377
|
-
class
|
|
2389
|
+
class J {
|
|
2378
2390
|
/**
|
|
2379
2391
|
* @param {object} options
|
|
2380
2392
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2421,7 +2433,7 @@ class G {
|
|
|
2421
2433
|
} = this.editor;
|
|
2422
2434
|
r.suspendHistory();
|
|
2423
2435
|
var i = e || a.getActiveObject();
|
|
2424
|
-
i && (i.type === "activeselection" ?
|
|
2436
|
+
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
2437
|
}
|
|
2426
2438
|
/**
|
|
2427
2439
|
* Отправить объект на задний план по оси Z
|
|
@@ -2471,7 +2483,7 @@ class G {
|
|
|
2471
2483
|
} = this.editor;
|
|
2472
2484
|
i.suspendHistory();
|
|
2473
2485
|
var s = e || a.getActiveObject();
|
|
2474
|
-
s && (s.type === "activeselection" ?
|
|
2486
|
+
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
2487
|
}
|
|
2476
2488
|
/**
|
|
2477
2489
|
* Сдвигает выделенные объекты на один уровень вверх относительно ближайшего верхнего объекта
|
|
@@ -2483,7 +2495,7 @@ class G {
|
|
|
2483
2495
|
static _moveSelectionForward(e, t) {
|
|
2484
2496
|
for (var a = e.getObjects(), r = t.getObjects(), i = r.map((l) => a.indexOf(l)), n = -1, s = function(d) {
|
|
2485
2497
|
var h = a[d];
|
|
2486
|
-
if (!r.includes(h) && i.some((
|
|
2498
|
+
if (!r.includes(h) && i.some((g) => d > g))
|
|
2487
2499
|
return n = d, 1;
|
|
2488
2500
|
}, c = 0; c < a.length && !s(c); c += 1)
|
|
2489
2501
|
;
|
|
@@ -2510,115 +2522,60 @@ class G {
|
|
|
2510
2522
|
e.moveObjectTo(r[n], i - 1);
|
|
2511
2523
|
}
|
|
2512
2524
|
}
|
|
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 {
|
|
2525
|
+
class bt {
|
|
2571
2526
|
/**
|
|
2572
|
-
*
|
|
2573
|
-
* @param {
|
|
2527
|
+
* Менеджер фигур для редактора.
|
|
2528
|
+
* @param {Object} options - Опции и настройки менеджера фигур.
|
|
2529
|
+
* @param {ImageEditor} options.editor - Ссылка на экземпляр редактора.
|
|
2574
2530
|
*/
|
|
2575
|
-
constructor(e) {
|
|
2576
|
-
|
|
2577
|
-
editor: t
|
|
2578
|
-
} = e;
|
|
2579
|
-
this.editor = t;
|
|
2531
|
+
constructor({ editor: e }) {
|
|
2532
|
+
this.editor = e;
|
|
2580
2533
|
}
|
|
2581
2534
|
/**
|
|
2582
2535
|
* Добавление прямоугольника
|
|
2583
2536
|
* @param {Object} shapeOptions
|
|
2537
|
+
* @param {String} shapeOptions.id - Уникальный идентификатор фигуры
|
|
2584
2538
|
* @param {Number} shapeOptions.left - Координата X
|
|
2585
2539
|
* @param {Number} shapeOptions.top - Координата Y
|
|
2586
2540
|
* @param {Number} shapeOptions.width - Ширина
|
|
2587
2541
|
* @param {Number} shapeOptions.height - Высота
|
|
2588
2542
|
* @param {String} shapeOptions.fill - Цвет заливки
|
|
2589
|
-
* @param {String} shapeOptions.originX - Ориентация по X
|
|
2590
|
-
* @param {String} shapeOptions.originY - Ориентация по Y
|
|
2591
2543
|
* @param {Rect} shapeOptions.rest - Остальные параметры
|
|
2592
2544
|
*
|
|
2545
|
+
* @param {Object} flags - Флаги для управления поведением
|
|
2593
2546
|
* @param {Object} flags.withoutSelection - Не выделять объект
|
|
2594
2547
|
* @param {Object} flags.withoutAdding - Не добавлять объект в canvas
|
|
2595
2548
|
*/
|
|
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
|
-
|
|
2549
|
+
addRectangle(l = {}, { withoutSelection: c, withoutAdding: u } = {}) {
|
|
2550
|
+
var d = l, {
|
|
2551
|
+
id: e = `rect-${D()}`,
|
|
2552
|
+
left: t,
|
|
2553
|
+
top: a,
|
|
2554
|
+
width: r = 100,
|
|
2555
|
+
height: i = 100,
|
|
2556
|
+
fill: n = "blue"
|
|
2557
|
+
} = d, s = X(d, [
|
|
2558
|
+
"id",
|
|
2559
|
+
"left",
|
|
2560
|
+
"top",
|
|
2561
|
+
"width",
|
|
2562
|
+
"height",
|
|
2563
|
+
"fill"
|
|
2564
|
+
]);
|
|
2565
|
+
const { canvas: h } = this.editor, g = new Ze(A({
|
|
2566
|
+
id: e,
|
|
2567
|
+
left: t,
|
|
2568
|
+
top: a,
|
|
2569
|
+
width: r,
|
|
2570
|
+
height: i,
|
|
2571
|
+
fill: n
|
|
2572
|
+
}, s));
|
|
2573
|
+
return !t && !a && h.centerObject(g), u || (h.add(g), c || h.setActiveObject(g), h.renderAll()), g;
|
|
2618
2574
|
}
|
|
2619
2575
|
/**
|
|
2620
2576
|
* Добавление круга
|
|
2621
2577
|
* @param {Object} shapeOptions
|
|
2578
|
+
* @param {String} shapeOptions.id - Уникальный идентификатор фигуры
|
|
2622
2579
|
* @param {Number} shapeOptions.left - Координата X
|
|
2623
2580
|
* @param {Number} shapeOptions.top - Координата Y
|
|
2624
2581
|
* @param {Number} shapeOptions.radius - Радиус
|
|
@@ -2627,33 +2584,37 @@ class Et {
|
|
|
2627
2584
|
* @param {String} shapeOptions.originY - Ориентация по Y
|
|
2628
2585
|
* @param {Circle} shapeOptions.rest - Остальные параметры
|
|
2629
2586
|
*
|
|
2587
|
+
* @param {Object} flags - Флаги для управления поведением
|
|
2630
2588
|
* @param {Object} flags.withoutSelection - Не выделять объект
|
|
2631
2589
|
* @param {Object} flags.withoutAdding - Не добавлять объект в canvas
|
|
2632
2590
|
*/
|
|
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
|
-
|
|
2591
|
+
addCircle(u = {}, { withoutSelection: s, withoutAdding: c } = {}) {
|
|
2592
|
+
var l = u, {
|
|
2593
|
+
id: e = `circle-${D()}`,
|
|
2594
|
+
left: t,
|
|
2595
|
+
top: a,
|
|
2596
|
+
radius: r = 50,
|
|
2597
|
+
fill: i = "green"
|
|
2598
|
+
} = l, n = X(l, [
|
|
2599
|
+
"id",
|
|
2600
|
+
"left",
|
|
2601
|
+
"top",
|
|
2602
|
+
"radius",
|
|
2603
|
+
"fill"
|
|
2604
|
+
]);
|
|
2605
|
+
const { canvas: d } = this.editor, h = new ze(A({
|
|
2606
|
+
id: e,
|
|
2607
|
+
left: t,
|
|
2608
|
+
top: a,
|
|
2609
|
+
fill: i,
|
|
2610
|
+
radius: r
|
|
2611
|
+
}, n));
|
|
2612
|
+
return !t && !a && d.centerObject(h), c || (d.add(h), s || d.setActiveObject(h), d.renderAll()), h;
|
|
2653
2613
|
}
|
|
2654
2614
|
/**
|
|
2655
2615
|
* Добавление треугольника
|
|
2656
2616
|
* @param {Object} shapeOptions
|
|
2617
|
+
* @param {String} shapeOptions.id - Уникальный идентификатор фигуры
|
|
2657
2618
|
* @param {Number} shapeOptions.left - Координата X
|
|
2658
2619
|
* @param {Number} shapeOptions.top - Координата Y
|
|
2659
2620
|
* @param {Number} shapeOptions.width - Ширина
|
|
@@ -2663,31 +2624,35 @@ class Et {
|
|
|
2663
2624
|
* @param {String} shapeOptions.fill - Цвет заливки
|
|
2664
2625
|
* @param {Triangle} shapeOptions.rest - Остальные параметры
|
|
2665
2626
|
*
|
|
2627
|
+
* @param {Object} flags - Флаги для управления поведением
|
|
2666
2628
|
* @param {Object} flags.withoutSelection - Не выделять объект
|
|
2667
2629
|
* @param {Object} flags.withoutAdding - Не добавлять объект в canvas
|
|
2668
2630
|
*/
|
|
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
|
-
|
|
2631
|
+
addTriangle(l = {}, { withoutSelection: c, withoutAdding: u } = {}) {
|
|
2632
|
+
var d = l, {
|
|
2633
|
+
id: e = `triangle-${D()}`,
|
|
2634
|
+
left: t,
|
|
2635
|
+
top: a,
|
|
2636
|
+
width: r = 100,
|
|
2637
|
+
height: i = 100,
|
|
2638
|
+
fill: n = "yellow"
|
|
2639
|
+
} = d, s = X(d, [
|
|
2640
|
+
"id",
|
|
2641
|
+
"left",
|
|
2642
|
+
"top",
|
|
2643
|
+
"width",
|
|
2644
|
+
"height",
|
|
2645
|
+
"fill"
|
|
2646
|
+
]);
|
|
2647
|
+
const { canvas: h } = this.editor, g = new Ue(A({
|
|
2648
|
+
id: e,
|
|
2649
|
+
left: t,
|
|
2650
|
+
top: a,
|
|
2651
|
+
fill: n,
|
|
2652
|
+
width: r,
|
|
2653
|
+
height: i
|
|
2654
|
+
}, s));
|
|
2655
|
+
return !t && !a && h.centerObject(g), u || (h.add(g), c || h.setActiveObject(g), h.renderAll()), g;
|
|
2691
2656
|
}
|
|
2692
2657
|
}
|
|
2693
2658
|
function Ae(o, e, t, a, r, i, n) {
|
|
@@ -2713,7 +2678,7 @@ function Ce(o) {
|
|
|
2713
2678
|
});
|
|
2714
2679
|
};
|
|
2715
2680
|
}
|
|
2716
|
-
class
|
|
2681
|
+
class It {
|
|
2717
2682
|
/**
|
|
2718
2683
|
* @param {object} options
|
|
2719
2684
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2781,11 +2746,11 @@ class Ot {
|
|
|
2781
2746
|
if (e.clipboard) {
|
|
2782
2747
|
var a = yield e.clipboard.clone(["format"]);
|
|
2783
2748
|
t.discardActiveObject(), a.set({
|
|
2784
|
-
id: "".concat(a.type, "-").concat(
|
|
2749
|
+
id: "".concat(a.type, "-").concat(D()),
|
|
2785
2750
|
left: a.left + 10,
|
|
2786
2751
|
top: a.top + 10,
|
|
2787
2752
|
evented: !0
|
|
2788
|
-
}), a instanceof
|
|
2753
|
+
}), a instanceof _ ? (a.canvas = t, a.forEachObject((r) => {
|
|
2789
2754
|
t.add(r);
|
|
2790
2755
|
})) : t.add(a), t.setActiveObject(a), t.requestRenderAll(), t.fire("editor:object-pasted", {
|
|
2791
2756
|
object: a
|
|
@@ -2794,7 +2759,7 @@ class Ot {
|
|
|
2794
2759
|
})();
|
|
2795
2760
|
}
|
|
2796
2761
|
}
|
|
2797
|
-
class
|
|
2762
|
+
class St {
|
|
2798
2763
|
/**
|
|
2799
2764
|
* @param {object} options
|
|
2800
2765
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2877,7 +2842,7 @@ class Tt {
|
|
|
2877
2842
|
}
|
|
2878
2843
|
}
|
|
2879
2844
|
}
|
|
2880
|
-
class
|
|
2845
|
+
class At {
|
|
2881
2846
|
/**
|
|
2882
2847
|
* @param {object} options
|
|
2883
2848
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2906,8 +2871,8 @@ class kt {
|
|
|
2906
2871
|
r.suspendHistory();
|
|
2907
2872
|
var i = e || a.getActiveObject();
|
|
2908
2873
|
if (i && i.type === "activeselection") {
|
|
2909
|
-
var n = i.getObjects(), s = new
|
|
2910
|
-
n.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(
|
|
2874
|
+
var n = i.getObjects(), s = new Ye(n);
|
|
2875
|
+
n.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(D())), a.add(s), a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped");
|
|
2911
2876
|
}
|
|
2912
2877
|
}
|
|
2913
2878
|
/**
|
|
@@ -2930,14 +2895,14 @@ class kt {
|
|
|
2930
2895
|
if (!(!i || i.type !== "group")) {
|
|
2931
2896
|
var n = i.removeAll();
|
|
2932
2897
|
a.remove(i), n.forEach((c) => a.add(c));
|
|
2933
|
-
var s = new
|
|
2898
|
+
var s = new _(n, {
|
|
2934
2899
|
canvas: a
|
|
2935
2900
|
});
|
|
2936
2901
|
a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-ungrouped");
|
|
2937
2902
|
}
|
|
2938
2903
|
}
|
|
2939
2904
|
}
|
|
2940
|
-
class
|
|
2905
|
+
class Ct {
|
|
2941
2906
|
/**
|
|
2942
2907
|
* @param {object} options
|
|
2943
2908
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -2959,7 +2924,7 @@ class xt {
|
|
|
2959
2924
|
objectLockManager: a
|
|
2960
2925
|
} = this.editor;
|
|
2961
2926
|
e.discardActiveObject();
|
|
2962
|
-
var r = t.getObjects(), i = r.some((s) => s.locked), n = r.length > 1 ? new
|
|
2927
|
+
var r = t.getObjects(), i = r.some((s) => s.locked), n = r.length > 1 ? new _(t.getObjects(), {
|
|
2963
2928
|
canvas: e
|
|
2964
2929
|
}) : r[0];
|
|
2965
2930
|
i && a.lockObject({
|
|
@@ -2971,7 +2936,7 @@ class xt {
|
|
|
2971
2936
|
});
|
|
2972
2937
|
}
|
|
2973
2938
|
}
|
|
2974
|
-
class
|
|
2939
|
+
class Dt {
|
|
2975
2940
|
/**
|
|
2976
2941
|
* @param {object} options
|
|
2977
2942
|
* @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
|
|
@@ -3007,7 +2972,7 @@ class Bt {
|
|
|
3007
2972
|
}), a.discardActiveObject(), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-deleted"));
|
|
3008
2973
|
}
|
|
3009
2974
|
}
|
|
3010
|
-
var
|
|
2975
|
+
var Nt = {
|
|
3011
2976
|
IMAGE_MANAGER: {
|
|
3012
2977
|
/**
|
|
3013
2978
|
* Некорректный Content-Type изображения
|
|
@@ -3035,87 +3000,75 @@ var Zt = {
|
|
|
3035
3000
|
IMAGE_EXPORT_FAILED: "IMAGE_EXPORT_FAILED"
|
|
3036
3001
|
}
|
|
3037
3002
|
};
|
|
3038
|
-
class
|
|
3039
|
-
constructor(e) {
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
this.
|
|
3003
|
+
class K {
|
|
3004
|
+
constructor({ editor: e }) {
|
|
3005
|
+
this._buffer = [], this.editor = e;
|
|
3006
|
+
}
|
|
3007
|
+
get buffer() {
|
|
3008
|
+
return this._buffer;
|
|
3009
|
+
}
|
|
3010
|
+
cleanBuffer() {
|
|
3011
|
+
this._buffer.length = 0;
|
|
3044
3012
|
}
|
|
3045
3013
|
/**
|
|
3046
3014
|
* Эмитит событие ошибки через fabricjs
|
|
3047
3015
|
* @param {object} options
|
|
3048
|
-
* @param {string} [origin='ImageEditor'] — источник ошибки (по умолчанию 'ImageEditor')
|
|
3049
|
-
* @param {string} [method='Unknown Method'] — метод, вызвавший ошибку (по умолчанию 'Unknown Method')
|
|
3050
|
-
* @param {string} code — код ошибки (из errorCodes)
|
|
3051
|
-
* @param {object} [data] — доп. данные (опционально)
|
|
3052
|
-
* @param {string} [message] — текст ошибки (опционально, если не передан, то используется код ошибки)
|
|
3016
|
+
* @param {string} [options.origin='ImageEditor'] — источник ошибки (по умолчанию 'ImageEditor')
|
|
3017
|
+
* @param {string} [options.method='Unknown Method'] — метод, вызвавший ошибку (по умолчанию 'Unknown Method')
|
|
3018
|
+
* @param {string} options.code — код ошибки (из errorCodes)
|
|
3019
|
+
* @param {object} [options.data] — доп. данные (опционально)
|
|
3020
|
+
* @param {string} [options.message] — текст ошибки (опционально, если не передан, то используется код ошибки)
|
|
3053
3021
|
* @fires editor:error
|
|
3054
3022
|
*/
|
|
3055
|
-
emitError(e) {
|
|
3056
|
-
|
|
3057
|
-
origin: t
|
|
3058
|
-
method: a = "Unknown Method",
|
|
3059
|
-
code: r,
|
|
3060
|
-
data: i,
|
|
3061
|
-
message: n
|
|
3062
|
-
} = e;
|
|
3063
|
-
if (!X.isValidErrorCode(r)) {
|
|
3064
|
-
console.warn("Неизвестный код ошибки: ", {
|
|
3065
|
-
code: r,
|
|
3066
|
-
origin: t,
|
|
3067
|
-
method: a
|
|
3068
|
-
});
|
|
3023
|
+
emitError({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, data: r, message: i }) {
|
|
3024
|
+
if (!K.isValidErrorCode(a)) {
|
|
3025
|
+
console.warn("Неизвестный код ошибки: ", { code: a, origin: e, method: t });
|
|
3069
3026
|
return;
|
|
3070
3027
|
}
|
|
3071
|
-
if (
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
}
|
|
3028
|
+
if (!a) return;
|
|
3029
|
+
const n = i || a;
|
|
3030
|
+
console.error(`${e}. ${t}. ${a}. ${n}`, r);
|
|
3031
|
+
const s = {
|
|
3032
|
+
code: a,
|
|
3033
|
+
origin: e,
|
|
3034
|
+
method: t,
|
|
3035
|
+
message: n,
|
|
3036
|
+
data: r
|
|
3037
|
+
};
|
|
3038
|
+
this._buffer.push(A({
|
|
3039
|
+
type: "editor:error"
|
|
3040
|
+
}, s)), this.editor.canvas.fire("editor:error", s);
|
|
3081
3041
|
}
|
|
3082
3042
|
/**
|
|
3083
3043
|
* Эмитит предупреждение через fabricjs
|
|
3084
3044
|
* @param {object} options
|
|
3085
|
-
* @param {string} [origin='ImageEditor'] — источник предупреждения (по умолчанию 'ImageEditor')
|
|
3086
|
-
* @param {string} [method='Unknown Method'] — метод, вызвавший предупреждение (по умолчанию 'Unknown Method')
|
|
3087
|
-
* @param {string} code — код предупреждения (из errorCodes)
|
|
3088
|
-
* @param {object} [data] — доп. данные (опционально)
|
|
3089
|
-
* @param {string} [message] — текст предупреждения (опционально, если не передан, то используется код предупреждения)
|
|
3045
|
+
* @param {string} [options.origin='ImageEditor'] — источник предупреждения (по умолчанию 'ImageEditor')
|
|
3046
|
+
* @param {string} [options.method='Unknown Method'] — метод, вызвавший предупреждение (по умолчанию 'Unknown Method')
|
|
3047
|
+
* @param {string} options.code — код предупреждения (из errorCodes)
|
|
3048
|
+
* @param {object} [options.data] — доп. данные (опционально)
|
|
3049
|
+
* @param {string} [options.message] — текст предупреждения (опционально, если не передан, то используется код предупреждения)
|
|
3090
3050
|
* @fires editor:warning
|
|
3091
3051
|
*/
|
|
3092
|
-
emitWarning(e) {
|
|
3093
|
-
|
|
3094
|
-
origin: t
|
|
3095
|
-
method: a = "Unknown Method",
|
|
3096
|
-
code: r,
|
|
3097
|
-
message: i,
|
|
3098
|
-
data: n
|
|
3099
|
-
} = e;
|
|
3100
|
-
if (!X.isValidErrorCode(r)) {
|
|
3101
|
-
console.warn("Неизвестный код ошибки: ", {
|
|
3102
|
-
code: r,
|
|
3103
|
-
origin: t,
|
|
3104
|
-
method: a
|
|
3105
|
-
});
|
|
3052
|
+
emitWarning({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, message: r, data: i }) {
|
|
3053
|
+
if (!K.isValidErrorCode(a)) {
|
|
3054
|
+
console.warn("Неизвестный код предупреждения: ", { code: a, origin: e, method: t });
|
|
3106
3055
|
return;
|
|
3107
3056
|
}
|
|
3108
|
-
|
|
3109
|
-
console.warn(
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3057
|
+
const n = r || a;
|
|
3058
|
+
console.warn(`${e}. ${t}. ${a}. ${n}`, i);
|
|
3059
|
+
const s = {
|
|
3060
|
+
code: a,
|
|
3061
|
+
origin: e,
|
|
3062
|
+
method: t,
|
|
3063
|
+
message: n,
|
|
3064
|
+
data: i
|
|
3065
|
+
};
|
|
3066
|
+
this._buffer.push(A({
|
|
3067
|
+
type: "editor:warning"
|
|
3068
|
+
}, s)), this.editor.canvas.fire("editor:warning", s);
|
|
3116
3069
|
}
|
|
3117
3070
|
static isValidErrorCode(e) {
|
|
3118
|
-
return e ? Object.values(
|
|
3071
|
+
return e ? Object.values(Nt).some((t) => Object.values(t).includes(e)) : !1;
|
|
3119
3072
|
}
|
|
3120
3073
|
}
|
|
3121
3074
|
class ue {
|
|
@@ -3127,10 +3080,10 @@ class ue {
|
|
|
3127
3080
|
constructor(e, t) {
|
|
3128
3081
|
this.options = t;
|
|
3129
3082
|
const { defaultScale: a, minZoom: r, maxZoom: i } = t;
|
|
3130
|
-
this.containerId = e, this.editorId = `${e}-${
|
|
3083
|
+
this.containerId = e, this.editorId = `${e}-${D()}`, this.clipboard = null, this.defaultZoom = a, this.minZoom = r || vt, this.maxZoom = i || mt, this.init();
|
|
3131
3084
|
}
|
|
3132
3085
|
init() {
|
|
3133
|
-
return
|
|
3086
|
+
return $(this, null, function* () {
|
|
3134
3087
|
const {
|
|
3135
3088
|
editorContainerWidth: e,
|
|
3136
3089
|
editorContainerHeight: t,
|
|
@@ -3143,13 +3096,13 @@ class ue {
|
|
|
3143
3096
|
scaleType: u,
|
|
3144
3097
|
_onReadyCallback: l
|
|
3145
3098
|
} = this.options;
|
|
3146
|
-
if (
|
|
3099
|
+
if (qe.apply(), this.canvas = new He(this.containerId, this.options), this.moduleLoader = new We(), 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 C({ 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 Dt({ 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
3100
|
const {
|
|
3148
3101
|
source: d,
|
|
3149
3102
|
scale: h = `image-${u}`,
|
|
3150
|
-
withoutSave:
|
|
3103
|
+
withoutSave: g = !0
|
|
3151
3104
|
} = s;
|
|
3152
|
-
yield this.imageManager.importImage({ source: d, scale: h, withoutSave:
|
|
3105
|
+
yield this.imageManager.importImage({ source: d, scale: h, withoutSave: g });
|
|
3153
3106
|
} else
|
|
3154
3107
|
this.canvasManager.setDefaultScale({ withoutSave: !0 });
|
|
3155
3108
|
c && this.historyManager.loadStateFromFullState(c), this.historyManager.saveState(), console.log("editor:ready"), this.canvas.fire("editor:ready", this), typeof l == "function" && l(this);
|
|
@@ -3197,7 +3150,7 @@ class ue {
|
|
|
3197
3150
|
}, { withoutSelection: !0, withoutAdding: !0 });
|
|
3198
3151
|
}
|
|
3199
3152
|
destroy() {
|
|
3200
|
-
this.listeners.destroy(), this.toolbar.destroy(), this.canvas.dispose(), this.workerManager.worker.terminate(), this.imageManager.revokeBlobUrls();
|
|
3153
|
+
this.listeners.destroy(), this.toolbar.destroy(), this.canvas.dispose(), this.workerManager.worker.terminate(), this.imageManager.revokeBlobUrls(), this.errorManager.cleanBuffer();
|
|
3201
3154
|
}
|
|
3202
3155
|
/**
|
|
3203
3156
|
* Создает паттерн мозаики.
|
|
@@ -3207,46 +3160,35 @@ class ue {
|
|
|
3207
3160
|
const e = document.createElement("canvas");
|
|
3208
3161
|
e.width = 20, e.height = 20;
|
|
3209
3162
|
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
|
|
3163
|
+
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
3164
|
source: e,
|
|
3212
3165
|
repeat: "repeat"
|
|
3213
3166
|
});
|
|
3214
3167
|
}
|
|
3215
3168
|
}
|
|
3216
|
-
const
|
|
3217
|
-
|
|
3169
|
+
const wt = {
|
|
3170
|
+
/**
|
|
3171
|
+
* Опции редактора
|
|
3172
|
+
*/
|
|
3218
3173
|
preserveObjectStacking: !0,
|
|
3219
|
-
// Возможность взаимодействия с объектом за пределами монтажной области
|
|
3220
3174
|
controlsAboveOverlay: !0,
|
|
3221
|
-
// Зум по центру
|
|
3222
3175
|
centeredScaling: !0,
|
|
3223
|
-
// Поворот объекта по центру
|
|
3224
3176
|
centeredRotation: !0,
|
|
3225
3177
|
/*
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
// Canvas Montage Area width and height
|
|
3178
|
+
* Кастомные опции
|
|
3179
|
+
*/
|
|
3229
3180
|
montageAreaWidth: 512,
|
|
3230
3181
|
montageAreaHeight: 512,
|
|
3231
|
-
// Canvas backstore width and height
|
|
3232
3182
|
canvasBackstoreWidth: "auto",
|
|
3233
3183
|
canvasBackstoreHeight: "auto",
|
|
3234
|
-
// Canvas (upper & lower) CSS width and height
|
|
3235
3184
|
canvasCSSWidth: "100%",
|
|
3236
3185
|
canvasCSSHeight: "100%",
|
|
3237
|
-
// Wrapper CSS width and height
|
|
3238
3186
|
canvasWrapperWidth: "100%",
|
|
3239
3187
|
canvasWrapperHeight: "100%",
|
|
3240
|
-
// Container CSS width and height
|
|
3241
3188
|
editorContainerWidth: "fit-content",
|
|
3242
3189
|
editorContainerHeight: "100%",
|
|
3243
|
-
// Максимальная длина истории действий
|
|
3244
3190
|
maxHistoryLength: 50,
|
|
3245
|
-
// Дефолтный тип скейлинга для объектов (cotain/cover)
|
|
3246
3191
|
scaleType: "contain",
|
|
3247
|
-
/**
|
|
3248
|
-
* Массив допустимых форматов изображений для загрузки в редактор.
|
|
3249
|
-
*/
|
|
3250
3192
|
acceptContentTypes: [
|
|
3251
3193
|
"image/png",
|
|
3252
3194
|
"image/jpeg",
|
|
@@ -3254,11 +3196,7 @@ const zt = {
|
|
|
3254
3196
|
"image/svg+xml",
|
|
3255
3197
|
"image/webp"
|
|
3256
3198
|
],
|
|
3257
|
-
// Показывать панель инструментов для выделенного объекта
|
|
3258
3199
|
showToolbar: !0,
|
|
3259
|
-
// Настройки панели инструментов выделенного объекта.
|
|
3260
|
-
// Можно передать массив с названиями действий или объект с настройками, кастомными иконками и обработчиками
|
|
3261
|
-
// ui/toolbar-manager/default-config.js
|
|
3262
3200
|
toolbar: {
|
|
3263
3201
|
lockedActions: [{
|
|
3264
3202
|
name: "Разблокировать",
|
|
@@ -3295,51 +3233,30 @@ const zt = {
|
|
|
3295
3233
|
}
|
|
3296
3234
|
]
|
|
3297
3235
|
},
|
|
3298
|
-
// Можно передать JSON объект в виде строки для инициализации редактора
|
|
3299
3236
|
initialStateJSON: null,
|
|
3300
|
-
/*
|
|
3301
|
-
* Объект изображения с которым редактор будет инициализирован. Может содержать:
|
|
3302
|
-
* - {String} url - URL изображения (обязательный)
|
|
3303
|
-
* - {String} scaleType - Тип скейлинга (image-contain/image-cover/scale-montage)
|
|
3304
|
-
* - {Boolean} withoutSave - Не сохранять состояние редактора (по умолчанию false)
|
|
3305
|
-
*/
|
|
3306
3237
|
initialImage: null,
|
|
3307
|
-
// Дефолтный масштаб
|
|
3308
3238
|
defaultScale: 1,
|
|
3309
|
-
// Минимальный и максимальный зум
|
|
3310
3239
|
minZoom: 0.1,
|
|
3311
3240
|
maxZoom: 2,
|
|
3312
|
-
// Максимальная кратность зума относительно текущего defaultZoom
|
|
3313
3241
|
maxZoomFactor: 2,
|
|
3314
|
-
// Шаг зума
|
|
3315
3242
|
zoomRatio: 0.1,
|
|
3316
3243
|
overlayMaskColor: "rgba(136, 136, 136, 0.6)",
|
|
3317
3244
|
/*
|
|
3318
3245
|
* Настройки слушателей событий
|
|
3319
3246
|
*/
|
|
3320
|
-
// Адаптировать канвас при изменении размеров контейнера (например, при изменении размеров окна браузера)
|
|
3321
3247
|
adaptCanvasToContainer: !0,
|
|
3322
|
-
// Поднимать объект на передний план по оси Z при выделении
|
|
3323
3248
|
bringToFrontOnSelection: !1,
|
|
3324
|
-
// Зум по колесику мыши
|
|
3325
3249
|
mouseWheelZooming: !0,
|
|
3326
|
-
// Перемещение канваса при зажатой кнопке ALT
|
|
3327
3250
|
canvasDragging: !0,
|
|
3328
|
-
// Копирование объектов (Ctrl + C, Ctrl + V)
|
|
3329
3251
|
copyObjectsByHotkey: !0,
|
|
3330
|
-
// Вставка изображения из буфера обмена
|
|
3331
3252
|
pasteImageFromClipboard: !0,
|
|
3332
|
-
// Отмена/повтор действия по сочетанию клавиш (Ctrl + Z, Ctrl + Y)
|
|
3333
3253
|
undoRedoByHotKeys: !0,
|
|
3334
|
-
// Выделение всех объектов по сочетанию клавиш (Ctrl + A)
|
|
3335
3254
|
selectAllByHotkey: !0,
|
|
3336
|
-
// Удаление объектов по сочетанию клавиш (Delete)
|
|
3337
3255
|
deleteObjectsByHotkey: !0,
|
|
3338
|
-
// Сброс параметров объекта по двойному клику
|
|
3339
3256
|
resetObjectFitByDoubleClick: !0
|
|
3340
3257
|
};
|
|
3341
|
-
function
|
|
3342
|
-
const t =
|
|
3258
|
+
function Ot(o, e = {}) {
|
|
3259
|
+
const t = A(A({}, wt), e), a = document.getElementById(o);
|
|
3343
3260
|
if (!a)
|
|
3344
3261
|
return Promise.reject(new Error(`Контейнер с ID "${o}" не найден.`));
|
|
3345
3262
|
const r = document.createElement("canvas");
|
|
@@ -3350,6 +3267,6 @@ function Ht(o, e = {}) {
|
|
|
3350
3267
|
});
|
|
3351
3268
|
}
|
|
3352
3269
|
export {
|
|
3353
|
-
|
|
3270
|
+
Ot as default
|
|
3354
3271
|
};
|
|
3355
3272
|
//# sourceMappingURL=main.js.map
|