@anu3ev/fabric-image-editor 0.1.30 → 0.1.32

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.
@@ -1,34 +1,38 @@
1
- import { ActiveSelection as P, util as U, controlsUtils as Oe, InteractiveFabricObject as Te, loadSVGFromURL as ke, FabricImage as le, Point as xe, Rect as Be, Circle as Ze, Triangle as ze, Group as Pe, Pattern as Ue, Canvas as Ye } from "fabric";
2
- import { create as He } from "jsondiffpatch";
3
- var _e = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", w = function() {
1
+ var Oe = Object.defineProperty;
2
+ var ge = Object.getOwnPropertySymbols;
3
+ var Te = Object.prototype.hasOwnProperty, ke = Object.prototype.propertyIsEnumerable;
4
+ var ve = (s, e, t) => e in s ? Oe(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, X = (s, e) => {
5
+ for (var t in e || (e = {}))
6
+ Te.call(e, t) && ve(s, t, e[t]);
7
+ if (ge)
8
+ for (var t of ge(e))
9
+ ke.call(e, t) && ve(s, t, e[t]);
10
+ return s;
11
+ };
12
+ var Q = (s, e, t) => new Promise((a, r) => {
13
+ var i = (c) => {
14
+ try {
15
+ o(t.next(c));
16
+ } catch (u) {
17
+ r(u);
18
+ }
19
+ }, n = (c) => {
20
+ try {
21
+ o(t.throw(c));
22
+ } catch (u) {
23
+ r(u);
24
+ }
25
+ }, o = (c) => c.done ? a(c.value) : Promise.resolve(c.value).then(i, n);
26
+ o((t = t.apply(s, e)).next());
27
+ });
28
+ import { ActiveSelection as Y, util as P, controlsUtils as xe, InteractiveFabricObject as Be, loadSVGFromURL as Ze, FabricImage as me, Point as ze, Rect as Ue, Circle as Ye, Triangle as Pe, Group as He, Canvas as _e, Pattern as Re } from "fabric";
29
+ import { create as We } from "jsondiffpatch";
30
+ var Fe = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", w = function() {
4
31
  for (var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 21, t = "", a = crypto.getRandomValues(new Uint8Array(e |= 0)); e--; )
5
- t += _e[a[e] & 63];
32
+ t += Fe[a[e] & 63];
6
33
  return t;
7
34
  };
8
- function he(o, e, t, a, r, n, i) {
9
- try {
10
- var s = o[n](i), c = s.value;
11
- } catch (u) {
12
- return void t(u);
13
- }
14
- s.done ? e(c) : Promise.resolve(c).then(a, r);
15
- }
16
- function Re(o) {
17
- return function() {
18
- var e = this, t = arguments;
19
- return new Promise(function(a, r) {
20
- var n = o.apply(e, t);
21
- function i(c) {
22
- he(n, a, r, i, s, "next", c);
23
- }
24
- function s(c) {
25
- he(n, a, r, i, s, "throw", c);
26
- }
27
- i(void 0);
28
- });
29
- };
30
- }
31
- class z {
35
+ class U {
32
36
  /**
33
37
  * Конструктор принимает редактор и опции.
34
38
  * @param {Object} params
@@ -44,75 +48,48 @@ class z {
44
48
  * @param {Boolean} [params.options.deleteObjectsByHotkey] — удаление объектов по Delete
45
49
  * @param {Boolean} [params.options.resetObjectFitByDoubleClick] — сброс фита объекта по двойному клику
46
50
  */
47
- constructor(e) {
48
- var {
49
- editor: t,
50
- options: a = {}
51
- } = e;
52
- this.editor = t, this.canvas = t.canvas, this.options = a, this.isUndoRedoKeyPressed = !1, this.isSpacePressed = !1, this.handleAdaptCanvasToContainerBound = z.debounce(this.handleAdaptCanvasToContainer.bind(this), 500), this.handleCopyEventBound = this.handleCopyEvent.bind(this), this.handlePasteEventBound = this.handlePasteEvent.bind(this), this.handleUndoRedoEventBound = this.handleUndoRedoEvent.bind(this), this.handleUndoRedoKeyUpBound = this.handleUndoRedoKeyUp.bind(this), this.handleSelectAllEventBound = this.handleSelectAllEvent.bind(this), this.handleDeleteObjectsEventBound = this.handleDeleteObjectsEvent.bind(this), this.handleSpaceKeyDownBound = this.handleSpaceKeyDown.bind(this), this.handleSpaceKeyUpBound = this.handleSpaceKeyUp.bind(this), this.handleObjectModifiedHistoryBound = z.debounce(this.handleObjectModifiedHistory.bind(this), 300), this.handleObjectRotatingHistoryBound = z.debounce(this.handleObjectRotatingHistory.bind(this), 300), this.handleObjectAddedHistoryBound = this.handleObjectAddedHistory.bind(this), this.handleObjectRemovedHistoryBound = this.handleObjectRemovedHistory.bind(this), this.handleOverlayUpdateBound = this.handleOverlayUpdate.bind(this), this.handleCanvasDragStartBound = this.handleCanvasDragStart.bind(this), this.handleCanvasDraggingBound = this.handleCanvasDragging.bind(this), this.handleCanvasDragEndBound = this.handleCanvasDragEnd.bind(this), this.handleMouseWheelZoomBound = this.handleMouseWheelZoom.bind(this), this.handleBringToFrontBound = this.handleBringToFront.bind(this), this.handleResetObjectFitBound = this.handleResetObjectFit.bind(this), this.handleLockedSelectionBound = this._filterLockedSelection.bind(this), this.init();
51
+ constructor({ editor: e, options: t = {} }) {
52
+ this.isDragging = !1, this.lastMouseX = 0, this.lastMouseY = 0, this.isUndoRedoKeyPressed = !1, this.isSpacePressed = !1, this.canvasDragging = !1, this.mouseWheelZooming = !1, this.bringToFrontOnSelection = !1, this.resetObjectFitByDoubleClick = !1, this.copyObjectsByHotkey = !1, this.pasteImageFromClipboard = !1, this.undoRedoByHotKeys = !1, this.selectAllByHotkey = !1, this.deleteObjectsByHotkey = !1, this.adaptCanvasToContainer = !1, this.editor = e, this.canvas = e.canvas, this.options = t, this.handleAdaptCanvasToContainerBound = U.debounce(this.handleAdaptCanvasToContainer.bind(this), 500), this.handleCopyEventBound = this.handleCopyEvent.bind(this), this.handlePasteEventBound = this.handlePasteEvent.bind(this), this.handleUndoRedoEventBound = this.handleUndoRedoEvent.bind(this), this.handleUndoRedoKeyUpBound = this.handleUndoRedoKeyUp.bind(this), this.handleSelectAllEventBound = this.handleSelectAllEvent.bind(this), this.handleDeleteObjectsEventBound = this.handleDeleteObjectsEvent.bind(this), this.handleSpaceKeyDownBound = this.handleSpaceKeyDown.bind(this), this.handleSpaceKeyUpBound = this.handleSpaceKeyUp.bind(this), this.handleObjectModifiedHistoryBound = U.debounce(this.handleObjectModifiedHistory.bind(this), 300), this.handleObjectRotatingHistoryBound = U.debounce(this.handleObjectRotatingHistory.bind(this), 300), this.handleObjectAddedHistoryBound = this.handleObjectAddedHistory.bind(this), this.handleObjectRemovedHistoryBound = this.handleObjectRemovedHistory.bind(this), this.handleOverlayUpdateBound = this.handleOverlayUpdate.bind(this), this.handleCanvasDragStartBound = this.handleCanvasDragStart.bind(this), this.handleCanvasDraggingBound = this.handleCanvasDragging.bind(this), this.handleCanvasDragEndBound = this.handleCanvasDragEnd.bind(this), this.handleMouseWheelZoomBound = this.handleMouseWheelZoom.bind(this), this.handleBringToFrontBound = this.handleBringToFront.bind(this), this.handleResetObjectFitBound = this.handleResetObjectFit.bind(this), this.handleLockedSelectionBound = this._filterLockedSelection.bind(this), this.init();
53
53
  }
54
54
  /**
55
55
  * Инициализация всех обработчиков согласно опциям.
56
56
  */
57
57
  init() {
58
- var {
58
+ const {
59
59
  adaptCanvasToContainer: e,
60
60
  canvasDragging: t,
61
61
  mouseWheelZooming: a,
62
62
  bringToFrontOnSelection: r,
63
- copyObjectsByHotkey: n,
64
- pasteImageFromClipboard: i,
65
- undoRedoByHotKeys: s,
63
+ copyObjectsByHotkey: i,
64
+ pasteImageFromClipboard: n,
65
+ undoRedoByHotKeys: o,
66
66
  selectAllByHotkey: c,
67
67
  deleteObjectsByHotkey: u,
68
68
  resetObjectFitByDoubleClick: l
69
69
  } = this.options;
70
- t && (this.canvas.on("mouse:down", this.handleCanvasDragStartBound), this.canvas.on("mouse:move", this.handleCanvasDraggingBound), this.canvas.on("mouse:up", this.handleCanvasDragEndBound), document.addEventListener("keydown", this.handleSpaceKeyDownBound, {
71
- capture: !0
72
- }), document.addEventListener("keyup", this.handleSpaceKeyUpBound, {
73
- capture: !0
74
- })), a && this.canvas.on("mouse:wheel", this.handleMouseWheelZoomBound), r && (this.canvas.on("selection:created", this.handleBringToFrontBound), this.canvas.on("selection:updated", this.handleBringToFrontBound)), l && this.canvas.on("mouse:dblclick", this.handleResetObjectFitBound), e && window.addEventListener("resize", this.handleAdaptCanvasToContainerBound, {
75
- capture: !0
76
- }), n && document.addEventListener("keydown", this.handleCopyEventBound, {
77
- capture: !0
78
- }), i && document.addEventListener("paste", this.handlePasteEventBound, {
79
- capture: !0
80
- }), s && (document.addEventListener("keydown", this.handleUndoRedoEventBound, {
81
- capture: !0
82
- }), document.addEventListener("keyup", this.handleUndoRedoKeyUpBound, {
83
- capture: !0
84
- })), c && document.addEventListener("keydown", this.handleSelectAllEventBound, {
85
- capture: !0
86
- }), u && document.addEventListener("keydown", this.handleDeleteObjectsEventBound, {
87
- capture: !0
88
- }), this.canvas.on("object:modified", this.handleObjectModifiedHistoryBound), this.canvas.on("object:rotating", this.handleObjectRotatingHistoryBound), this.canvas.on("object:added", this.handleObjectAddedHistoryBound), this.canvas.on("object:removed", this.handleObjectRemovedHistoryBound), this.canvas.on("object:added", this.handleOverlayUpdateBound), this.canvas.on("selection:created", this.handleOverlayUpdateBound), this.canvas.on("selection:created", this.handleLockedSelectionBound.bind(this)), this.canvas.on("selection:updated", this.handleLockedSelectionBound.bind(this));
70
+ t && (this.canvas.on("mouse:down", this.handleCanvasDragStartBound), this.canvas.on("mouse:move", this.handleCanvasDraggingBound), this.canvas.on("mouse:up", this.handleCanvasDragEndBound), document.addEventListener("keydown", this.handleSpaceKeyDownBound, { capture: !0 }), document.addEventListener("keyup", this.handleSpaceKeyUpBound, { capture: !0 })), a && this.canvas.on("mouse:wheel", this.handleMouseWheelZoomBound), r && (this.canvas.on("selection:created", this.handleBringToFrontBound), this.canvas.on("selection:updated", this.handleBringToFrontBound)), l && this.canvas.on("mouse:dblclick", this.handleResetObjectFitBound), e && window.addEventListener("resize", this.handleAdaptCanvasToContainerBound, { capture: !0 }), i && document.addEventListener("keydown", this.handleCopyEventBound, { capture: !0 }), n && document.addEventListener("paste", this.handlePasteEventBound, { capture: !0 }), o && (document.addEventListener("keydown", this.handleUndoRedoEventBound, { capture: !0 }), document.addEventListener("keyup", this.handleUndoRedoKeyUpBound, { capture: !0 })), c && document.addEventListener("keydown", this.handleSelectAllEventBound, { capture: !0 }), u && document.addEventListener("keydown", this.handleDeleteObjectsEventBound, { capture: !0 }), this.canvas.on("object:modified", this.handleObjectModifiedHistoryBound), this.canvas.on("object:rotating", this.handleObjectRotatingHistoryBound), this.canvas.on("object:added", this.handleObjectAddedHistoryBound), this.canvas.on("object:removed", this.handleObjectRemovedHistoryBound), this.canvas.on("object:added", this.handleOverlayUpdateBound), this.canvas.on("selection:created", this.handleOverlayUpdateBound), this.canvas.on("selection:created", this.handleLockedSelectionBound.bind(this)), this.canvas.on("selection:updated", this.handleLockedSelectionBound.bind(this));
89
71
  }
90
72
  /**
91
73
  * При массовом выделении объектов удаляем из него залоченные.
92
- */
93
- _filterLockedSelection(e) {
94
- var {
95
- selected: t,
96
- e: a
97
- } = e;
98
- if (!(!(t != null && t.length) || !(a instanceof MouseEvent)) && t.length !== 1) {
99
- var r = t.some((s) => s.locked);
100
- if (r) {
101
- var n = t.filter((s) => !s.locked);
102
- if (n.length === 0) {
103
- this.canvas.discardActiveObject();
104
- return;
105
- }
106
- if (n.length === 1) {
107
- this.canvas.setActiveObject(n[0]);
108
- return;
109
- }
110
- var i = new P(n, {
111
- canvas: this.canvas
112
- });
113
- this.canvas.setActiveObject(i), this.canvas.requestRenderAll();
114
- }
74
+ * @param {{ selected: FabricObject[], e?: TPointerEvent }} params - параметры события
75
+ * @param {FabricObject[]} params.selected - массив выделенных объектов
76
+ * @param {TPointerEvent} [params.e] - событие указателя (опционально)
77
+ */
78
+ _filterLockedSelection({ selected: e, e: t }) {
79
+ if (!(e != null && e.length) || !(t instanceof MouseEvent) || e.length === 1 || !e.some((n) => n.locked)) return;
80
+ const r = e.filter((n) => !n.locked);
81
+ if (r.length === 0) {
82
+ this.canvas.discardActiveObject();
83
+ return;
84
+ }
85
+ if (r.length === 1) {
86
+ this.canvas.setActiveObject(r[0]);
87
+ return;
115
88
  }
89
+ const i = new Y(r, {
90
+ canvas: this.canvas
91
+ });
92
+ this.canvas.setActiveObject(i), this.canvas.requestRenderAll();
116
93
  }
117
94
  /**
118
95
  * Обработчики для сохранения состояния редактора в истории.
@@ -134,9 +111,7 @@ class z {
134
111
  * Обновление overlayMask при добавлении объектов или выделении.
135
112
  */
136
113
  handleOverlayUpdate() {
137
- var {
138
- interactionBlocker: e
139
- } = this.editor;
114
+ const { interactionBlocker: e } = this.editor;
140
115
  !e.isBlocked || !e.overlayMask || this.editor.interactionBlocker.refresh();
141
116
  }
142
117
  // --- Глобальные DOM-обработчики ---
@@ -145,34 +120,18 @@ class z {
145
120
  * Адаптирует канвас к размерам контейнера.
146
121
  */
147
122
  handleAdaptCanvasToContainer() {
148
- var {
149
- width: e,
150
- height: t
151
- } = this.editor.montageArea;
152
- this.editor.canvasManager.setResolutionWidth(e, {
153
- adaptCanvasToContainer: !0,
154
- withoutSave: !0
155
- }), this.editor.canvasManager.setResolutionHeight(t, {
156
- adaptCanvasToContainer: !0,
157
- withoutSave: !0
158
- }), this.editor.canvasManager.centerMontageArea(), this.editor.selectionManager.selectAll(), this.editor.transformManager.fitObject({
159
- fitAsOneObject: !0,
160
- withoutSave: !0
161
- });
123
+ const { width: e, height: t } = this.editor.montageArea;
124
+ this.editor.canvasManager.setResolutionWidth(e, { adaptCanvasToContainer: !0, withoutSave: !0 }), this.editor.canvasManager.setResolutionHeight(t, { adaptCanvasToContainer: !0, withoutSave: !0 }), this.editor.canvasManager.centerMontageArea(), this.editor.selectionManager.selectAll(), this.editor.transformManager.fitObject({ fitAsOneObject: !0, withoutSave: !0 });
162
125
  }
163
126
  /**
164
127
  * Обработчик для Ctrl+C (копирование).
165
- * @param {Object} event — объект события
128
+ * @param {KeyboardEvent} event — объект события
166
129
  * @param {Boolean} event.ctrlKey — зажата ли клавиша Ctrl
167
130
  * @param {Boolean} event.metaKey — зажата ли клавиша Cmd (для Mac)
168
131
  * @param {String} event.code — код клавиши
169
132
  */
170
133
  handleCopyEvent(e) {
171
- var {
172
- ctrlKey: t,
173
- metaKey: a,
174
- code: r
175
- } = e;
134
+ const { ctrlKey: t, metaKey: a, code: r } = e;
176
135
  !t && !a || r !== "KeyC" || (e.preventDefault(), this.editor.clipboardManager.copy());
177
136
  }
178
137
  /**
@@ -183,39 +142,28 @@ class z {
183
142
  *
184
143
  * TODO: Попробовать вынести методы в классы-менеджеры.
185
144
  */
186
- handlePasteEvent(e) {
187
- var t, {
188
- clipboardData: a
189
- } = e;
190
- if (a != null && (t = a.items) !== null && t !== void 0 && t.length) {
191
- var {
192
- imageManager: r
193
- } = this.editor, {
194
- items: n
195
- } = a, i = n[n.length - 1];
196
- if (i.type.indexOf("image") !== -1) {
197
- var s = i.getAsFile();
198
- if (!s) return;
199
- var c = new FileReader();
200
- c.onload = (v) => {
201
- this.editor.imageManager.importImage({
202
- source: v.target.result
203
- });
204
- }, c.readAsDataURL(s);
145
+ handlePasteEvent({ clipboardData: e }) {
146
+ var n;
147
+ if (!((n = e == null ? void 0 : e.items) != null && n.length)) return;
148
+ const { imageManager: t } = this.editor, { items: a } = e, r = a[a.length - 1];
149
+ if (r.type.indexOf("image") !== -1) {
150
+ const o = r.getAsFile();
151
+ if (!o) return;
152
+ const c = new FileReader();
153
+ c.onload = (u) => {
154
+ u.target && this.editor.imageManager.importImage({ source: u.target.result });
155
+ }, c.readAsDataURL(o);
156
+ return;
157
+ }
158
+ const i = e.getData("text/html");
159
+ if (i) {
160
+ const u = new DOMParser().parseFromString(i, "text/html").querySelector("img");
161
+ if (u != null && u.src) {
162
+ t.importImage({ source: u.src });
205
163
  return;
206
164
  }
207
- var u = a.getData("text/html");
208
- if (u) {
209
- var l = new DOMParser(), d = l.parseFromString(u, "text/html"), h = d.querySelector("img");
210
- if (h != null && h.src) {
211
- r.importImage({
212
- source: h.src
213
- });
214
- return;
215
- }
216
- }
217
- this.editor.clipboardManager.paste();
218
165
  }
166
+ this.editor.clipboardManager.paste();
219
167
  }
220
168
  /**
221
169
  * Обработчик для отмены/повтора (Ctrl+Z/Ctrl+Y).
@@ -225,27 +173,18 @@ class z {
225
173
  * @param {String} event.code — код клавиши
226
174
  */
227
175
  handleUndoRedoEvent(e) {
228
- var t = this;
229
- return Re(function* () {
230
- var {
231
- ctrlKey: a,
232
- metaKey: r,
233
- code: n,
234
- repeat: i
235
- } = e;
236
- !a && !r || i || t.isUndoRedoKeyPressed || (n === "KeyZ" ? (e.preventDefault(), t.isUndoRedoKeyPressed = !0, yield t.editor.historyManager.undo()) : n === "KeyY" && (e.preventDefault(), t.isUndoRedoKeyPressed = !0, yield t.editor.historyManager.redo()));
237
- })();
176
+ return Q(this, null, function* () {
177
+ const { ctrlKey: t, metaKey: a, code: r, repeat: i } = e;
178
+ !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
+ });
238
180
  }
239
181
  /**
240
182
  * Обработчик для отпускания клавиш Ctrl+Z/Ctrl+Y.
241
183
  * @param {Object} event — объект события
242
184
  * @param {String} event.code — код клавиши
243
185
  */
244
- handleUndoRedoKeyUp(e) {
245
- var {
246
- code: t
247
- } = e;
248
- (t === "KeyZ" || t === "KeyY") && (this.isUndoRedoKeyPressed = !1);
186
+ handleUndoRedoKeyUp({ code: e }) {
187
+ (e === "KeyZ" || e === "KeyY") && (this.isUndoRedoKeyPressed = !1);
249
188
  }
250
189
  /**
251
190
  * Обработчик для выделения всех объектов (Ctrl+A).
@@ -255,11 +194,7 @@ class z {
255
194
  * @param {String} event.code — код клавиши
256
195
  */
257
196
  handleSelectAllEvent(e) {
258
- var {
259
- ctrlKey: t,
260
- metaKey: a,
261
- code: r
262
- } = e;
197
+ const { ctrlKey: t, metaKey: a, code: r } = e;
263
198
  !t && !a || r !== "KeyA" || (e.preventDefault(), this.editor.selectionManager.selectAll());
264
199
  }
265
200
  /**
@@ -277,23 +212,17 @@ class z {
277
212
  * @param {String} event.code — код клавиши
278
213
  */
279
214
  handleSpaceKeyDown(e) {
280
- if (e.code === "Space") {
281
- var {
282
- canvas: t,
283
- editor: a,
284
- isSpacePressed: r,
285
- isDragging: n
286
- } = this;
287
- r || n || (this.isSpacePressed = !0, e.preventDefault(), t.set({
288
- selection: !1,
289
- defaultCursor: "grab"
290
- }), t.setCursor("grab"), a.canvasManager.getObjects().forEach((i) => {
291
- i.set({
292
- selectable: !1,
293
- evented: !1
294
- });
295
- }));
296
- }
215
+ if (e.code !== "Space") return;
216
+ const { canvas: t, editor: a, isSpacePressed: r, isDragging: i } = this;
217
+ r || i || (this.isSpacePressed = !0, e.preventDefault(), t.set({
218
+ selection: !1,
219
+ defaultCursor: "grab"
220
+ }), t.setCursor("grab"), a.canvasManager.getObjects().forEach((n) => {
221
+ n.set({
222
+ selectable: !1,
223
+ evented: !1
224
+ });
225
+ }));
297
226
  }
298
227
  /**
299
228
  * Обработчик для отпускания пробела.
@@ -303,7 +232,7 @@ class z {
303
232
  * @param {String} event.code — код клавиши
304
233
  */
305
234
  handleSpaceKeyUp(e) {
306
- e.code === "Space" && (this.isSpacePressed = !1, this.canvas.isDragging && this.handleCanvasDragEnd(), this.canvas.set({
235
+ e.code === "Space" && (this.isSpacePressed = !1, this.isDragging && this.handleCanvasDragEnd(), this.canvas.set({
307
236
  defaultCursor: "default",
308
237
  selection: !0
309
238
  }), this.canvas.setCursor("default"), this.editor.canvasManager.getObjects().forEach((t) => {
@@ -316,115 +245,82 @@ class z {
316
245
  // --- Обработчики для событий canvas (Fabric) ---
317
246
  /**
318
247
  * Начало перетаскивания канваса (срабатывает при mouse:down и зажатом пробеле).
319
- * @param {Object} options
320
- * @param {Object} options.e — объект события
248
+ * @param {TPointerEventInfo<TPointerEvent>} options - событие указателя
249
+ * @param {TPointerEvent} options.e — объект события (MouseEvent или TouchEvent)
321
250
  */
322
- handleCanvasDragStart(e) {
323
- var {
324
- e: t
325
- } = e;
326
- this.isSpacePressed && (this.canvas.set({
327
- isDragging: !0,
328
- defaultCursor: "grabbing"
329
- }), this.canvas.setCursor("grabbing"), this.canvas.lastPosX = t.clientX, this.canvas.lastPosY = t.clientY);
251
+ handleCanvasDragStart({ e }) {
252
+ !this.isSpacePressed || !(e instanceof MouseEvent) || (this.isDragging = !0, this.lastMouseX = e.clientX, this.lastMouseY = e.clientY, this.canvas.setCursor("grabbing"));
330
253
  }
331
254
  /**
332
255
  * Перетаскивание канваса (mouse:move).
333
- * @param {Object} options
334
- * @param {Object} options.e — объект события
256
+ * @param {TPointerEventInfo<TPointerEvent>} options
257
+ * @param {MouseEvent} options.e — объект события
335
258
  *
336
259
  * TODO: Надо как-то ограничить область перетаскивания, чтобы канвас не уходил сильно далеко за пределы экрана
337
260
  */
338
- handleCanvasDragging(e) {
339
- var {
340
- e: t
341
- } = e;
342
- if (!(!this.canvas.isDragging || !this.isSpacePressed)) {
343
- var a = this.canvas.viewportTransform;
344
- a[4] += t.clientX - this.canvas.lastPosX, a[5] += t.clientY - this.canvas.lastPosY, this.canvas.requestRenderAll(), this.canvas.lastPosX = t.clientX, this.canvas.lastPosY = t.clientY;
345
- }
261
+ handleCanvasDragging({ e }) {
262
+ if (!this.isDragging || !this.isSpacePressed || !(e instanceof MouseEvent)) return;
263
+ const t = this.canvas.viewportTransform;
264
+ t[4] += e.clientX - this.lastMouseX, t[5] += e.clientY - this.lastMouseY, this.canvas.requestRenderAll(), this.lastMouseX = e.clientX, this.lastMouseY = e.clientY;
346
265
  }
347
266
  /**
348
267
  * Завершение перетаскивания канваса (mouse:up).
349
268
  * Сохраняет новое положение канваса.
350
269
  */
351
270
  handleCanvasDragEnd() {
352
- this.canvas.isDragging && (this.canvas.setViewportTransform(this.canvas.viewportTransform), this.canvas.set("isDragging", !1), this.isSpacePressed && (this.canvas.set("defaultCursor", "grab"), this.canvas.setCursor("grab")));
271
+ this.isDragging && (this.canvas.setViewportTransform(this.canvas.viewportTransform), this.isDragging = !1, this.isSpacePressed && (this.canvas.set("defaultCursor", "grab"), this.canvas.setCursor("grab")));
353
272
  }
354
273
  /**
355
274
  * Обработчик зума колесиком мыши. Работает при зажатом Ctrl или Cmd.
356
- * @param {Object} options
357
- * @param {Object} options.e — объект события
275
+ * @param {TPointerEventInfo<WheelEvent>} options - правильно!
276
+ * @param {WheelEvent} options.e — объект события
358
277
  */
359
- handleMouseWheelZoom(e) {
360
- var {
361
- e: t
362
- } = e;
363
- if (!(!t.ctrlKey && !t.metaKey)) {
364
- var a = 1e-3, r = -t.deltaY * a;
365
- this.editor.transformManager.zoom(r), t.preventDefault(), t.stopPropagation();
366
- }
278
+ handleMouseWheelZoom({ e }) {
279
+ if (!e.ctrlKey && !e.metaKey) return;
280
+ const a = -e.deltaY * 1e-3;
281
+ this.editor.transformManager.zoom(a), e.preventDefault(), e.stopPropagation();
367
282
  }
368
283
  /**
369
284
  * Обработчик, поднимающий выделенные объекты на передний план.
370
- * @param {Object} event - объект события Fabric
371
- * @param {Array} event.selected - массив выбранных объектов
285
+ * @param {{ selected: FabricObject[] }} event - объект события выделения
286
+ * @param {FabricObject[]} event.selected - массив выбранных объектов
372
287
  */
373
- handleBringToFront(e) {
374
- var {
375
- selected: t
376
- } = e;
377
- t != null && t.length && t.forEach((a) => {
378
- this.editor.layerManager.bringToFront(a);
288
+ handleBringToFront({ selected: e }) {
289
+ e != null && e.length && e.forEach((t) => {
290
+ this.editor.layerManager.bringToFront(t);
379
291
  });
380
292
  }
381
293
  /**
382
294
  * Обработчик сброса объекта по двойному клику.
295
+ * @param {TPointerEventInfo<TPointerEvent>} options - объект события fabric
383
296
  */
384
297
  handleResetObjectFit(e) {
385
- var {
386
- target: t
387
- } = e;
298
+ const t = e == null ? void 0 : e.target;
388
299
  t && this.editor.transformManager.resetObject(t);
389
300
  }
390
301
  /**
391
302
  * Метод для удаления всех слушателей
392
303
  */
393
304
  destroy() {
394
- window.removeEventListener("resize", this.handleAdaptCanvasToContainerBound, {
395
- capture: !0
396
- }), document.removeEventListener("keydown", this.handleCopyEventBound, {
397
- capture: !0
398
- }), document.removeEventListener("paste", this.handlePasteEventBound, {
399
- capture: !0
400
- }), document.removeEventListener("keydown", this.handleUndoRedoEventBound, {
401
- capture: !0
402
- }), document.removeEventListener("keyup", this.handleUndoRedoKeyUpBound, {
403
- capture: !0
404
- }), document.removeEventListener("keydown", this.handleSelectAllEventBound, {
405
- capture: !0
406
- }), document.removeEventListener("keydown", this.handleDeleteObjectsEventBound, {
407
- capture: !0
408
- }), this.options.canvasDragging && (this.canvas.off("mouse:down", this.handleCanvasDragStartBound), this.canvas.off("mouse:move", this.handleCanvasDraggingBound), this.canvas.off("mouse:up", this.handleCanvasDragEndBound), document.removeEventListener("keydown", this.handleSpaceKeyDownBound, {
409
- capture: !0
410
- }), document.removeEventListener("keyup", this.handleSpaceKeyUpBound, {
411
- capture: !0
412
- })), this.options.mouseWheelZooming && this.canvas.off("mouse:wheel", this.handleMouseWheelZoomBound), this.options.bringToFrontOnSelection && (this.canvas.off("selection:created", this.handleBringToFrontBound), this.canvas.off("selection:updated", this.handleBringToFrontBound)), this.options.resetObjectFitByDoubleClick && this.canvas.off("mouse:dblclick", this.handleResetObjectFitBound), this.canvas.off("object:modified", this.handleObjectModifiedHistoryBound), this.canvas.off("object:rotating", this.handleObjectRotatingHistoryBound), this.canvas.off("object:added", this.handleObjectAddedHistoryBound), this.canvas.off("object:removed", this.handleObjectRemovedHistoryBound), this.canvas.off("object:added", this.handleOverlayUpdateBound), this.canvas.off("selection:created", this.handleOverlayUpdateBound), this.canvas.off("selection:created", this.handleLockedSelectionBound.bind(this)), this.canvas.off("selection:updated", this.handleLockedSelectionBound.bind(this));
413
- }
414
- // Дебаунс для снижения частоты сохранения состояния
305
+ window.removeEventListener("resize", this.handleAdaptCanvasToContainerBound, { capture: !0 }), document.removeEventListener("keydown", this.handleCopyEventBound, { capture: !0 }), document.removeEventListener("paste", this.handlePasteEventBound, { capture: !0 }), document.removeEventListener("keydown", this.handleUndoRedoEventBound, { capture: !0 }), document.removeEventListener("keyup", this.handleUndoRedoKeyUpBound, { capture: !0 }), document.removeEventListener("keydown", this.handleSelectAllEventBound, { capture: !0 }), document.removeEventListener("keydown", this.handleDeleteObjectsEventBound, { capture: !0 }), this.options.canvasDragging && (this.canvas.off("mouse:down", this.handleCanvasDragStartBound), this.canvas.off("mouse:move", this.handleCanvasDraggingBound), this.canvas.off("mouse:up", this.handleCanvasDragEndBound), document.removeEventListener("keydown", this.handleSpaceKeyDownBound, { capture: !0 }), document.removeEventListener("keyup", this.handleSpaceKeyUpBound, { capture: !0 })), this.options.mouseWheelZooming && this.canvas.off("mouse:wheel", this.handleMouseWheelZoomBound), this.options.bringToFrontOnSelection && (this.canvas.off("selection:created", this.handleBringToFrontBound), this.canvas.off("selection:updated", this.handleBringToFrontBound)), this.options.resetObjectFitByDoubleClick && this.canvas.off("mouse:dblclick", this.handleResetObjectFitBound), this.canvas.off("object:modified", this.handleObjectModifiedHistoryBound), this.canvas.off("object:rotating", this.handleObjectRotatingHistoryBound), this.canvas.off("object:added", this.handleObjectAddedHistoryBound), this.canvas.off("object:removed", this.handleObjectRemovedHistoryBound), this.canvas.off("object:added", this.handleOverlayUpdateBound), this.canvas.off("selection:created", this.handleOverlayUpdateBound), this.canvas.off("selection:created", this.handleLockedSelectionBound.bind(this)), this.canvas.off("selection:updated", this.handleLockedSelectionBound.bind(this));
306
+ }
307
+ /**
308
+ * Дебаунс для снижения частоты вызова функции.
309
+ * @param fn — функция-обработчик
310
+ * @param delay — задержка в миллисекундах
311
+ * @returns новую обёртку-обработчик
312
+ */
415
313
  static debounce(e, t) {
416
- var a = null;
417
- return function() {
418
- for (var r = arguments.length, n = new Array(r), i = 0; i < r; i++)
419
- n[i] = arguments[i];
420
- var s = this;
421
- clearTimeout(a), a = setTimeout(() => {
422
- e.apply(s, n);
314
+ let a = null;
315
+ return function(...r) {
316
+ const i = this;
317
+ a && clearTimeout(a), a = setTimeout(() => {
318
+ e.apply(i, r);
423
319
  }, t);
424
320
  };
425
321
  }
426
322
  }
427
- class We {
323
+ class Ve {
428
324
  /**
429
325
  * @description Класс для динамической загрузки внешних модулей.
430
326
  */
@@ -442,7 +338,7 @@ class We {
442
338
  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, '"')));
443
339
  }
444
340
  }
445
- class Fe {
341
+ class Ge {
446
342
  /**
447
343
  * @param {string|URL} [scriptUrl] — URL скрипта воркера.
448
344
  * По-умолчанию использует файл рядом с этим модулем
@@ -469,10 +365,10 @@ class Fe {
469
365
  } = e, {
470
366
  requestId: a,
471
367
  success: r,
472
- data: n,
473
- error: i
474
- } = t, s = this._callbacks.get(a);
475
- s && (r ? s.resolve(n) : s.reject(new Error(i)), this._callbacks.delete(a));
368
+ data: i,
369
+ error: n
370
+ } = t, o = this._callbacks.get(a);
371
+ o && (r ? o.resolve(i) : o.reject(new Error(n)), this._callbacks.delete(a));
476
372
  }
477
373
  /**
478
374
  * Универсальный метод отправки команды в воркер
@@ -483,10 +379,10 @@ class Fe {
483
379
  */
484
380
  post(e, t) {
485
381
  var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [], r = "".concat(e, ":").concat(w(8));
486
- return new Promise((n, i) => {
382
+ return new Promise((i, n) => {
487
383
  this._callbacks.set(r, {
488
- resolve: n,
489
- reject: i
384
+ resolve: i,
385
+ reject: n
490
386
  }), this.worker.postMessage({
491
387
  action: e,
492
388
  payload: t,
@@ -501,50 +397,50 @@ class Fe {
501
397
  this.worker.terminate();
502
398
  }
503
399
  }
504
- var I = 12, Ve = 2, K = 8, $ = 20, Ge = 100, q = 20, ee = 8, Xe = 100, te = 32, ae = 1, Qe = "#2B2D33", re = "#3D8BF4", ne = "#FFFFFF";
505
- function R(o, e, t, a, r) {
506
- var n = I, i = Ve;
507
- o.save(), o.translate(e, t), o.rotate(U.degreesToRadians(r.angle)), o.fillStyle = ne, o.strokeStyle = re, o.lineWidth = ae, o.beginPath(), o.roundRect(-12 / 2, -12 / 2, n, n, i), o.fill(), o.stroke(), o.restore();
400
+ var I = 12, Xe = 2, q = 8, ee = 20, Qe = 100, te = 20, ae = 8, Je = 100, re = 32, ie = 1, Ke = "#2B2D33", ne = "#3D8BF4", se = "#FFFFFF";
401
+ function W(s, e, t, a, r) {
402
+ var i = I, n = Xe;
403
+ s.save(), s.translate(e, t), s.rotate(P.degreesToRadians(r.angle)), s.fillStyle = se, s.strokeStyle = ne, s.lineWidth = ie, s.beginPath(), s.roundRect(-12 / 2, -12 / 2, i, i, n), s.fill(), s.stroke(), s.restore();
508
404
  }
509
- function ge(o, e, t, a, r) {
510
- var n = K, i = $, s = Ge;
511
- o.save(), o.translate(e, t), o.rotate(U.degreesToRadians(r.angle)), o.fillStyle = ne, o.strokeStyle = re, o.lineWidth = ae, o.beginPath(), o.roundRect(-8 / 2, -20 / 2, n, i, s), o.fill(), o.stroke(), o.restore();
405
+ function fe(s, e, t, a, r) {
406
+ var i = q, n = ee, o = Qe;
407
+ s.save(), s.translate(e, t), s.rotate(P.degreesToRadians(r.angle)), s.fillStyle = se, s.strokeStyle = ne, s.lineWidth = ie, s.beginPath(), s.roundRect(-8 / 2, -20 / 2, i, n, o), s.fill(), s.stroke(), s.restore();
512
408
  }
513
- function ve(o, e, t, a, r) {
514
- var n = q, i = ee, s = Xe;
515
- o.save(), o.translate(e, t), o.rotate(U.degreesToRadians(r.angle)), o.fillStyle = ne, o.strokeStyle = re, o.lineWidth = ae, o.beginPath(), o.roundRect(-20 / 2, -8 / 2, n, i, s), o.fill(), o.stroke(), o.restore();
409
+ function Me(s, e, t, a, r) {
410
+ var i = te, n = ae, o = Je;
411
+ s.save(), s.translate(e, t), s.rotate(P.degreesToRadians(r.angle)), s.fillStyle = se, s.strokeStyle = ne, s.lineWidth = ie, s.beginPath(), s.roundRect(-20 / 2, -8 / 2, i, n, o), s.fill(), s.stroke(), s.restore();
516
412
  }
517
- var Je = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", we = new Image();
518
- we.src = Je;
519
- function Ke(o, e, t, a, r) {
520
- var n = te, i = n / 2;
521
- o.save(), o.translate(e, t), o.rotate(U.degreesToRadians(r.angle)), o.fillStyle = Qe, o.beginPath(), o.arc(0, 0, i, 0, 2 * Math.PI), o.fill(), o.drawImage(we, -16 / 2, -16 / 2, i, i), o.restore();
413
+ var $e = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", we = new Image();
414
+ we.src = $e;
415
+ function qe(s, e, t, a, r) {
416
+ var i = re, n = i / 2;
417
+ s.save(), s.translate(e, t), s.rotate(P.degreesToRadians(r.angle)), s.fillStyle = Ke, s.beginPath(), s.arc(0, 0, n, 0, 2 * Math.PI), s.fill(), s.drawImage(we, -16 / 2, -16 / 2, n, n), s.restore();
522
418
  }
523
- var $e = {
419
+ var et = {
524
420
  // Угловые точки
525
421
  tl: {
526
- render: R,
422
+ render: W,
527
423
  sizeX: I,
528
424
  sizeY: I,
529
425
  offsetX: 0,
530
426
  offsetY: 0
531
427
  },
532
428
  tr: {
533
- render: R,
429
+ render: W,
534
430
  sizeX: I,
535
431
  sizeY: I,
536
432
  offsetX: 0,
537
433
  offsetY: 0
538
434
  },
539
435
  bl: {
540
- render: R,
436
+ render: W,
541
437
  sizeX: I,
542
438
  sizeY: I,
543
439
  offsetX: 0,
544
440
  offsetY: 0
545
441
  },
546
442
  br: {
547
- render: R,
443
+ render: W,
548
444
  sizeX: I,
549
445
  sizeY: I,
550
446
  offsetX: 0,
@@ -552,47 +448,47 @@ var $e = {
552
448
  },
553
449
  // Середина вертикалей
554
450
  ml: {
555
- render: ge,
556
- sizeX: K,
557
- sizeY: $,
451
+ render: fe,
452
+ sizeX: q,
453
+ sizeY: ee,
558
454
  offsetX: 0,
559
455
  offsetY: 0
560
456
  },
561
457
  mr: {
562
- render: ge,
563
- sizeX: K,
564
- sizeY: $,
458
+ render: fe,
459
+ sizeX: q,
460
+ sizeY: ee,
565
461
  offsetX: 0,
566
462
  offsetY: 0
567
463
  },
568
464
  // Середина горизонталей
569
465
  mt: {
570
- render: ve,
571
- sizeX: q,
572
- sizeY: ee,
466
+ render: Me,
467
+ sizeX: te,
468
+ sizeY: ae,
573
469
  offsetX: 0,
574
470
  offsetY: 0
575
471
  },
576
472
  mb: {
577
- render: ve,
578
- sizeX: q,
579
- sizeY: ee,
473
+ render: Me,
474
+ sizeX: te,
475
+ sizeY: ae,
580
476
  offsetX: 0,
581
477
  offsetY: 0
582
478
  },
583
479
  // Специальный «rotate» контрол
584
480
  mtr: {
585
- render: Ke,
586
- sizeX: te,
587
- sizeY: te,
481
+ render: qe,
482
+ sizeX: re,
483
+ sizeY: re,
588
484
  offsetX: 0,
589
485
  offsetY: -32
590
486
  }
591
487
  };
592
- class qe {
488
+ class tt {
593
489
  static apply() {
594
- var e = Oe.createObjectDefaultControls();
595
- Object.entries($e).forEach((t) => {
490
+ var e = xe.createObjectDefaultControls();
491
+ Object.entries(et).forEach((t) => {
596
492
  var [a, r] = t;
597
493
  Object.assign(e[a], {
598
494
  render: r.render,
@@ -601,34 +497,34 @@ class qe {
601
497
  offsetX: r.offsetX,
602
498
  offsetY: r.offsetY
603
499
  });
604
- }), Te.ownDefaults.controls = e;
500
+ }), Be.ownDefaults.controls = e;
605
501
  }
606
502
  }
607
- 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==", nt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMy4yMWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDguMTI1IDEwIDExLjc3Nmw2LjI2LTMuNjUxTDEwIDQuNDc0IDMuNzQgOC4xMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjcxNCAxMCAxMCAxMi41bDQuMjg2LTIuNSAzLjIxNCAxLjg3NUwxMCAxNi4yNWwtNy41LTQuMzc1TDUuNzE0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDkuNDZhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgMTEuNzc2bDMuOTctMi4zMTZhLjYyNS42MjUgMCAwIDEgLjYzIDBsMy4yMTUgMS44NzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhMNS40IDkuNDZabS0xLjY2IDIuNDE1TDEwIDE1LjUyNmw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2LTEuOTc1IDEuMTUxWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", it = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTIuNSA2LjI1IDcuNSA0LjM3NSA3LjUtNC4zNzVMMTAgMS44NzUgMi41IDYuMjVaIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMS4zMzVhLjYyNS42MjUgMCAwIDEgLjYzIDBsNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4bDcuNS00LjM3NVpNMy43NCA2LjI1IDEwIDkuOTAxbDYuMjYtMy42NTFMMTAgMi41OTkgMy43NCA2LjI1WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDExLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCAxMy42NTFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgMTEuMzM1Wk0zLjc0IDEzLjc1IDEwIDE3LjQwMWw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTMuNzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgNy41ODVhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgOS45MDFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgNy41ODVaTTMuNzQgMTAgMTAgMTMuNjUxIDE2LjI2IDEwbC0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNkwzLjc0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", ot = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMS45NiAxMy40MzVhLjYyNS42MjUgMCAwIDEgLjg1NS0uMjI1TDEwIDE3LjQwMWw3LjE4NS00LjE5YS42MjUuNjI1IDAgMCAxIC42MyAxLjA3OWwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEtLjIyNS0uODU1Wk05LjY4NSAxLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDYuMjUgMTAgOS45MDFsNi4yNi0zLjY1MUwxMCAyLjU5OSAzLjc0IDYuMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im01LjcxNCAxMS44NzUgNC4yODYgMi41IDQuMjg2LTIuNUwxNy41IDEzLjc1IDEwIDE4LjEyNSAyLjUgMTMuNzVsMy4yMTQtMS44NzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgMTEuMzM1YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDEzLjY1MWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCAxMS4zMzVaTTMuNzQgMTMuNzUgMTAgMTcuNDAxbDYuMjYtMy42NTEtMS45NzQtMS4xNTEtMy45NzEgMi4zMTZhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTMuOTctMi4zMTZMMy43NCAxMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA3LjU4NWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCA5LjkwMWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA3LjU4NVpNMy43NCAxMCAxMCAxMy42NTEgMTYuMjYgMTBsLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTBaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=", st = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0VDNEU0MCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4xMjUgMS4yNUExLjg3NSAxLjg3NSAwIDAgMCA2LjI1IDMuMTI1di42MjVIMy4xMjVhLjYyNS42MjUgMCAwIDAgMCAxLjI1aC42MjV2MTEuMjVBMS4yNSAxLjI1IDAgMCAwIDUgMTcuNWgxMGExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjVoLjYyNWEuNjI1LjYyNSAwIDAgMCAwLTEuMjVIMTMuNzV2LS42MjVhMS44NzUgMS44NzUgMCAwIDAtMS44NzUtMS44NzVoLTMuNzVabTQuMzc1IDIuNXYtLjYyNWEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2LjYyNWg1Wk01IDE2LjI1VjVoMTB2MTEuMjVINVpNOC4xMjUgNy41Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NWEuNjI1LjYyNSAwIDEgMS0xLjI1IDB2LTVjMC0uMzQ1LjI4LS42MjUuNjI1LS42MjVabTQuMzc1IDUuNjI1di01YS42MjUuNjI1IDAgMCAwLTEuMjUgMHY1YS42MjUuNjI1IDAgMSAwIDEuMjUgMFoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==";
608
- function me(o, e, t, a, r, n, i) {
503
+ var at = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNi44NzUgMi41YS42MjUuNjI1IDAgMCAwLS42MjUuNjI0VjYuMjVIMy4xMjVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2MTBjMCAuMzQ1LjI4LjYyNS42MjUuNjI1aDEwYy4zNDUgMCAuNjI1LS4yOC42MjUtLjYyNXYtMy4xMjZoMy4xMjVjLjM0NSAwIC42MjUtLjI4LjYyNS0uNjI1di0xMGEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTEwWm02Ljg3NSAxMGgyLjVWMy43NUg3LjV2Mi41aDUuNjI1Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NS42MjRabS0xMCAzLjc1VjcuNWg4Ljc1djguNzVIMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", rt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDcuNWMwLS42OS41Ni0xLjI1IDEuMjUtMS4yNWgxMi41Yy42OSAwIDEuMjUuNTYgMS4yNSAxLjI1djguNzVjMCAuNjktLjU2IDEuMjUtMS4yNSAxLjI1SDMuNzVjLS42OSAwLTEuMjUtLjU2LTEuMjUtMS4yNVY3LjVabTEzLjc1IDBIMy43NXY4Ljc1aDEyLjVWNy41WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMS44NzVhMi4xODggMi4xODggMCAwIDAtMi4xODggMi4xODh2Mi44MTJhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyYTMuNDM3IDMuNDM3IDAgMSAxIDYuODc1IDB2Mi44MTNhLjYyNS42MjUgMCAxIDEtMS4yNSAwVjQuMDYyQTIuMTg4IDIuMTg4IDAgMCAwIDEwIDEuODc2WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTEwIDEyLjgxM2EuOTM3LjkzNyAwIDEgMCAwLTEuODc1LjkzNy45MzcgMCAwIDAgMCAxLjg3NFoiLz48L3N2Zz4=", it = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE2LjI1IDYuMjVINy41VjQuMzc1YTIuNSAyLjUgMCAwIDEgMi41LTIuNWMxLjIgMCAyLjI4MS44NiAyLjUxMiAyYS42MjUuNjI1IDAgMCAwIDEuMjI2LS4yNWMtLjM1NC0xLjczOC0xLjkyNS0zLTMuNzM4LTNhMy43NTQgMy43NTQgMCAwIDAtMy43NSAzLjc1VjYuMjVoLTIuNUExLjI1IDEuMjUgMCAwIDAgMi41IDcuNXY4Ljc1YTEuMjUgMS4yNSAwIDAgMCAxLjI1IDEuMjVoMTIuNWExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjcuNWExLjI1IDEuMjUgMCAwIDAtMS4yNS0xLjI1Wm0wIDEwSDMuNzVWNy41aDEyLjV2OC43NVptLTUuMzEzLTQuMzc1YS45MzcuOTM3IDAgMSAxLTEuODc0IDAgLjkzNy45MzcgMCAwIDEgMS44NzQgMFoiLz48L3N2Zz4K", nt = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTIuNSA4LjEyNSAxMCAxMi41bDcuNS00LjM3NUwxMCAzLjc1IDIuNSA4LjEyNVoiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjY4NSAzLjIxYS42MjUuNjI1IDAgMCAxIC42MyAwbDcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOGw3LjUtNC4zNzVaTTMuNzQgOC4xMjUgMTAgMTEuNzc2bDYuMjYtMy42NTFMMTAgNC40NzQgMy43NCA4LjEyNVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA5LjQ2YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDExLjc3NmwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA5LjQ2Wm0tMS42NiAyLjQxNUwxMCAxNS41MjZsNi4yNi0zLjY1MS0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNi0xLjk3NSAxLjE1MVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==", st = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMy4yMWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDguMTI1IDEwIDExLjc3Nmw2LjI2LTMuNjUxTDEwIDQuNDc0IDMuNzQgOC4xMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjcxNCAxMCAxMCAxMi41bDQuMjg2LTIuNSAzLjIxNCAxLjg3NUwxMCAxNi4yNWwtNy41LTQuMzc1TDUuNzE0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDkuNDZhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgMTEuNzc2bDMuOTctMi4zMTZhLjYyNS42MjUgMCAwIDEgLjYzIDBsMy4yMTUgMS44NzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhMNS40IDkuNDZabS0xLjY2IDIuNDE1TDEwIDE1LjUyNmw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2LTEuOTc1IDEuMTUxWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", ot = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTIuNSA2LjI1IDcuNSA0LjM3NSA3LjUtNC4zNzVMMTAgMS44NzUgMi41IDYuMjVaIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS42ODUgMS4zMzVhLjYyNS42MjUgMCAwIDEgLjYzIDBsNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4bDcuNS00LjM3NVpNMy43NCA2LjI1IDEwIDkuOTAxbDYuMjYtMy42NTFMMTAgMi41OTkgMy43NCA2LjI1WiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNS40IDExLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCAxMy42NTFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgMTEuMzM1Wk0zLjc0IDEzLjc1IDEwIDE3LjQwMWw2LjI2LTMuNjUxLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTMuNzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgNy41ODVhLjYyNS42MjUgMCAwIDEgLjYzIDBMMTAgOS45MDFsMy45Ny0yLjMxNmEuNjI1LjYyNSAwIDAgMSAuNjMgMGwzLjIxNSAxLjg3NWEuNjI1LjYyNSAwIDAgMSAwIDEuMDhsLTcuNSA0LjM3NWEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtNy41LTQuMzc1YS42MjUuNjI1IDAgMCAxIDAtMS4wOEw1LjQgNy41ODVaTTMuNzQgMTAgMTAgMTMuNjUxIDE2LjI2IDEwbC0xLjk3NC0xLjE1MS0zLjk3MSAyLjMxNmEuNjI1LjYyNSAwIDAgMS0uNjMgMGwtMy45Ny0yLjMxNkwzLjc0IDEwWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+", ct = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMS45NiAxMy40MzVhLjYyNS42MjUgMCAwIDEgLjg1NS0uMjI1TDEwIDE3LjQwMWw3LjE4NS00LjE5YS42MjUuNjI1IDAgMCAxIC42MyAxLjA3OWwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEtLjIyNS0uODU1Wk05LjY4NSAxLjMzNWEuNjI1LjYyNSAwIDAgMSAuNjMgMGw3LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEgMCAxLjA4bC03LjUgNC4zNzVhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTcuNS00LjM3NWEuNjI1LjYyNSAwIDAgMSAwLTEuMDhsNy41LTQuMzc1Wk0zLjc0IDYuMjUgMTAgOS45MDFsNi4yNi0zLjY1MUwxMCAyLjU5OSAzLjc0IDYuMjVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im01LjcxNCAxMS44NzUgNC4yODYgMi41IDQuMjg2LTIuNUwxNy41IDEzLjc1IDEwIDE4LjEyNSAyLjUgMTMuNzVsMy4yMTQtMS44NzVaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjQgMTEuMzM1YS42MjUuNjI1IDAgMCAxIC42MyAwTDEwIDEzLjY1MWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCAxMS4zMzVaTTMuNzQgMTMuNzUgMTAgMTcuNDAxbDYuMjYtMy42NTEtMS45NzQtMS4xNTEtMy45NzEgMi4zMTZhLjYyNS42MjUgMCAwIDEtLjYzIDBsLTMuOTctMi4zMTZMMy43NCAxMy43NVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTUuNCA3LjU4NWEuNjI1LjYyNSAwIDAgMSAuNjMgMEwxMCA5LjkwMWwzLjk3LTIuMzE2YS42MjUuNjI1IDAgMCAxIC42MyAwbDMuMjE1IDEuODc1YS42MjUuNjI1IDAgMCAxIDAgMS4wOGwtNy41IDQuMzc1YS42MjUuNjI1IDAgMCAxLS42MyAwbC03LjUtNC4zNzVhLjYyNS42MjUgMCAwIDEgMC0xLjA4TDUuNCA3LjU4NVpNMy43NCAxMCAxMCAxMy42NTEgMTYuMjYgMTBsLTEuOTc0LTEuMTUxLTMuOTcxIDIuMzE2YS42MjUuNjI1IDAgMCAxLS42MyAwbC0zLjk3LTIuMzE2TDMuNzQgMTBaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=", ut = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI0VDNEU0MCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4xMjUgMS4yNUExLjg3NSAxLjg3NSAwIDAgMCA2LjI1IDMuMTI1di42MjVIMy4xMjVhLjYyNS42MjUgMCAwIDAgMCAxLjI1aC42MjV2MTEuMjVBMS4yNSAxLjI1IDAgMCAwIDUgMTcuNWgxMGExLjI1IDEuMjUgMCAwIDAgMS4yNS0xLjI1VjVoLjYyNWEuNjI1LjYyNSAwIDAgMCAwLTEuMjVIMTMuNzV2LS42MjVhMS44NzUgMS44NzUgMCAwIDAtMS44NzUtMS44NzVoLTMuNzVabTQuMzc1IDIuNXYtLjYyNWEuNjI1LjYyNSAwIDAgMC0uNjI1LS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDAtLjYyNS42MjV2LjYyNWg1Wk01IDE2LjI1VjVoMTB2MTEuMjVINVpNOC4xMjUgNy41Yy4zNDUgMCAuNjI1LjI4LjYyNS42MjV2NWEuNjI1LjYyNSAwIDEgMS0xLjI1IDB2LTVjMC0uMzQ1LjI4LS42MjUuNjI1LS42MjVabTQuMzc1IDUuNjI1di01YS42MjUuNjI1IDAgMCAwLTEuMjUgMHY1YS42MjUuNjI1IDAgMSAwIDEuMjUgMFoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==";
504
+ function je(s, e, t, a, r, i, n) {
609
505
  try {
610
- var s = o[n](i), c = s.value;
506
+ var o = s[i](n), c = o.value;
611
507
  } catch (u) {
612
508
  return void t(u);
613
509
  }
614
- s.done ? e(c) : Promise.resolve(c).then(a, r);
510
+ o.done ? e(c) : Promise.resolve(c).then(a, r);
615
511
  }
616
- function ct(o) {
512
+ function dt(s) {
617
513
  return function() {
618
514
  var e = this, t = arguments;
619
515
  return new Promise(function(a, r) {
620
- var n = o.apply(e, t);
621
- function i(c) {
622
- me(n, a, r, i, s, "next", c);
516
+ var i = s.apply(e, t);
517
+ function n(c) {
518
+ je(i, a, r, n, o, "next", c);
623
519
  }
624
- function s(c) {
625
- me(n, a, r, i, s, "throw", c);
520
+ function o(c) {
521
+ je(i, a, r, n, o, "throw", c);
626
522
  }
627
- i(void 0);
523
+ n(void 0);
628
524
  });
629
525
  };
630
526
  }
631
- const x = {
527
+ const B = {
632
528
  style: {
633
529
  position: "absolute",
634
530
  display: "none",
@@ -687,87 +583,87 @@ const x = {
687
583
  }],
688
584
  offsetTop: 50,
689
585
  icons: {
690
- copyPaste: et,
691
- delete: st,
692
- lock: tt,
693
- unlock: at,
694
- bringToFront: it,
695
- sendToBack: ot,
696
- bringForward: rt,
697
- sendBackwards: nt
586
+ copyPaste: at,
587
+ delete: ut,
588
+ lock: rt,
589
+ unlock: it,
590
+ bringToFront: ot,
591
+ sendToBack: ct,
592
+ bringForward: nt,
593
+ sendBackwards: st
698
594
  },
699
595
  handlers: {
700
596
  copyPaste: function() {
701
- var o = ct(function* (t) {
597
+ var s = dt(function* (t) {
702
598
  yield t.clipboardManager.copy(), yield t.clipboardManager.paste();
703
599
  });
704
600
  function e(t) {
705
- return o.apply(this, arguments);
601
+ return s.apply(this, arguments);
706
602
  }
707
603
  return e;
708
604
  }(),
709
- delete: (o) => {
710
- o.deletionManager.deleteSelectedObjects();
605
+ delete: (s) => {
606
+ s.deletionManager.deleteSelectedObjects();
711
607
  },
712
- lock: (o) => {
713
- o.objectLockManager.lockObject();
608
+ lock: (s) => {
609
+ s.objectLockManager.lockObject();
714
610
  },
715
- unlock: (o) => {
716
- o.objectLockManager.unlockObject();
611
+ unlock: (s) => {
612
+ s.objectLockManager.unlockObject();
717
613
  },
718
- bringForward: (o) => {
719
- o.layerManager.bringForward();
614
+ bringForward: (s) => {
615
+ s.layerManager.bringForward();
720
616
  },
721
- bringToFront: (o) => {
722
- o.layerManager.bringToFront();
617
+ bringToFront: (s) => {
618
+ s.layerManager.bringToFront();
723
619
  },
724
- sendToBack: (o) => {
725
- o.layerManager.sendToBack();
620
+ sendToBack: (s) => {
621
+ s.layerManager.sendToBack();
726
622
  },
727
- sendBackwards: (o) => {
728
- o.layerManager.sendBackwards();
623
+ sendBackwards: (s) => {
624
+ s.layerManager.sendBackwards();
729
625
  }
730
626
  }
731
627
  };
732
- function fe(o, e) {
733
- var t = Object.keys(o);
628
+ function ye(s, e) {
629
+ var t = Object.keys(s);
734
630
  if (Object.getOwnPropertySymbols) {
735
- var a = Object.getOwnPropertySymbols(o);
631
+ var a = Object.getOwnPropertySymbols(s);
736
632
  e && (a = a.filter(function(r) {
737
- return Object.getOwnPropertyDescriptor(o, r).enumerable;
633
+ return Object.getOwnPropertyDescriptor(s, r).enumerable;
738
634
  })), t.push.apply(t, a);
739
635
  }
740
636
  return t;
741
637
  }
742
- function j(o) {
638
+ function j(s) {
743
639
  for (var e = 1; e < arguments.length; e++) {
744
640
  var t = arguments[e] != null ? arguments[e] : {};
745
- e % 2 ? fe(Object(t), !0).forEach(function(a) {
746
- ut(o, a, t[a]);
747
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : fe(Object(t)).forEach(function(a) {
748
- Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
641
+ e % 2 ? ye(Object(t), !0).forEach(function(a) {
642
+ lt(s, a, t[a]);
643
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(s, Object.getOwnPropertyDescriptors(t)) : ye(Object(t)).forEach(function(a) {
644
+ Object.defineProperty(s, a, Object.getOwnPropertyDescriptor(t, a));
749
645
  });
750
646
  }
751
- return o;
647
+ return s;
752
648
  }
753
- function ut(o, e, t) {
754
- return (e = dt(e)) in o ? Object.defineProperty(o, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : o[e] = t, o;
649
+ function lt(s, e, t) {
650
+ return (e = ht(e)) in s ? Object.defineProperty(s, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : s[e] = t, s;
755
651
  }
756
- function dt(o) {
757
- var e = lt(o, "string");
652
+ function ht(s) {
653
+ var e = gt(s, "string");
758
654
  return typeof e == "symbol" ? e : e + "";
759
655
  }
760
- function lt(o, e) {
761
- if (typeof o != "object" || !o) return o;
762
- var t = o[Symbol.toPrimitive];
656
+ function gt(s, e) {
657
+ if (typeof s != "object" || !s) return s;
658
+ var t = s[Symbol.toPrimitive];
763
659
  if (t !== void 0) {
764
- var a = t.call(o, e);
660
+ var a = t.call(s, e);
765
661
  if (typeof a != "object") return a;
766
662
  throw new TypeError("@@toPrimitive must return a primitive value.");
767
663
  }
768
- return (e === "string" ? String : Number)(o);
664
+ return (e === "string" ? String : Number)(s);
769
665
  }
770
- class ht {
666
+ class vt {
771
667
  /**
772
668
  * @param {object} options
773
669
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -779,11 +675,11 @@ class ht {
779
675
  if (this.options = t.options, !!this.options.showToolbar) {
780
676
  this.editor = t, this.canvas = t.canvas;
781
677
  var a = this.options.toolbar || {};
782
- this.config = j(j(j({}, x), a), {}, {
783
- style: j(j({}, x.style), a.style || {}),
784
- btnStyle: j(j({}, x.btnStyle), a.btnStyle || {}),
785
- icons: j(j({}, x.icons), a.icons || {}),
786
- handlers: j(j({}, x.handlers), a.handlers || {})
678
+ this.config = j(j(j({}, B), a), {}, {
679
+ style: j(j({}, B.style), a.style || {}),
680
+ btnStyle: j(j({}, B.btnStyle), a.btnStyle || {}),
681
+ icons: j(j({}, B.icons), a.icons || {}),
682
+ handlers: j(j({}, B.handlers), a.handlers || {})
787
683
  }), 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 = () => {
788
684
  this.el.style.display = "none";
789
685
  }, this._createDOM(), this._bindEvents();
@@ -817,16 +713,16 @@ class ht {
817
713
  this.el.innerHTML = "";
818
714
  var a = function() {
819
715
  var {
820
- name: i,
821
- handle: s
716
+ name: n,
717
+ handle: o
822
718
  } = r, {
823
719
  icons: c,
824
720
  btnStyle: u,
825
721
  handlers: l
826
722
  } = t.config, d = document.createElement("button");
827
- d.innerHTML = c[s] ? '<img src="'.concat(c[s], '" title="').concat(i, '" />') : i, Object.assign(d.style, u), d.onclick = () => {
723
+ d.innerHTML = c[o] ? '<img src="'.concat(c[o], '" title="').concat(n, '" />') : n, Object.assign(d.style, u), d.onclick = () => {
828
724
  var h;
829
- return (h = l[s]) === null || h === void 0 ? void 0 : h.call(l, t.editor);
725
+ return (h = l[o]) === null || h === void 0 ? void 0 : h.call(l, t.editor);
830
726
  }, t.el.appendChild(d);
831
727
  };
832
728
  for (var r of e)
@@ -899,12 +795,12 @@ class ht {
899
795
  canvas: r
900
796
  } = this;
901
797
  e.setCoords();
902
- var n = r.getZoom(), [, , , , i, s] = r.viewportTransform, {
798
+ var i = r.getZoom(), [, , , , n, o] = r.viewportTransform, {
903
799
  x: c
904
800
  } = e.getCenterPoint(), {
905
801
  top: u,
906
802
  height: l
907
- } = e.getBoundingRect(!1, !0), d = c * n + i, h = d - t.offsetWidth / 2, v = (u + l) * n + s + a.offsetTop;
803
+ } = e.getBoundingRect(!1, !0), d = c * i + n, h = d - t.offsetWidth / 2, v = (u + l) * i + o + a.offsetTop;
908
804
  Object.assign(t.style, {
909
805
  left: "".concat(h, "px"),
910
806
  top: "".concat(v, "px"),
@@ -919,30 +815,30 @@ class ht {
919
815
  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();
920
816
  }
921
817
  }
922
- function Me(o, e, t, a, r, n, i) {
818
+ function pe(s, e, t, a, r, i, n) {
923
819
  try {
924
- var s = o[n](i), c = s.value;
820
+ var o = s[i](n), c = o.value;
925
821
  } catch (u) {
926
822
  return void t(u);
927
823
  }
928
- s.done ? e(c) : Promise.resolve(c).then(a, r);
824
+ o.done ? e(c) : Promise.resolve(c).then(a, r);
929
825
  }
930
- function X(o) {
826
+ function J(s) {
931
827
  return function() {
932
828
  var e = this, t = arguments;
933
829
  return new Promise(function(a, r) {
934
- var n = o.apply(e, t);
935
- function i(c) {
936
- Me(n, a, r, i, s, "next", c);
830
+ var i = s.apply(e, t);
831
+ function n(c) {
832
+ pe(i, a, r, n, o, "next", c);
937
833
  }
938
- function s(c) {
939
- Me(n, a, r, i, s, "throw", c);
834
+ function o(c) {
835
+ pe(i, a, r, n, o, "throw", c);
940
836
  }
941
- i(void 0);
837
+ n(void 0);
942
838
  });
943
839
  };
944
840
  }
945
- class gt {
841
+ class mt {
946
842
  /**
947
843
  * @param {object} options
948
844
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -958,7 +854,7 @@ class gt {
958
854
  return this._historySuspendCount > 0;
959
855
  }
960
856
  _createDiffPatcher() {
961
- this.diffPatcher = He({
857
+ this.diffPatcher = We({
962
858
  objectHash(e) {
963
859
  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("-");
964
860
  },
@@ -1001,8 +897,8 @@ class gt {
1001
897
  baseState: e,
1002
898
  currentIndex: t,
1003
899
  patches: a
1004
- } = this, r = JSON.parse(JSON.stringify(e)), n = 0; n < t; n += 1)
1005
- r = this.diffPatcher.patch(r, a[n]);
900
+ } = this, r = JSON.parse(JSON.stringify(e)), i = 0; i < t; i += 1)
901
+ r = this.diffPatcher.patch(r, a[i]);
1006
902
  return console.log("getFullState state", r), r;
1007
903
  }
1008
904
  /**
@@ -1031,12 +927,12 @@ class gt {
1031
927
  */
1032
928
  loadStateFromFullState(e) {
1033
929
  var t = this;
1034
- return X(function* () {
930
+ return J(function* () {
1035
931
  if (e) {
1036
932
  console.log("loadStateFromFullState fullState", e), yield t.canvas.loadFromJSON(e);
1037
- var a = t.canvas.getObjects().find((n) => n.id === "montage-area");
933
+ var a = t.canvas.getObjects().find((i) => i.id === "montage-area");
1038
934
  a && (t.editor.montageArea = a);
1039
- var r = t.canvas.getObjects().find((n) => n.id === "overlay-mask");
935
+ var r = t.canvas.getObjects().find((i) => i.id === "overlay-mask");
1040
936
  r && (t.editor.interactionBlocker.overlayMask = r, t.editor.interactionBlocker.overlayMask.visible = !1), t.canvas.renderAll(), t.canvas.fire("editor:history-state-loaded");
1041
937
  }
1042
938
  })();
@@ -1047,7 +943,7 @@ class gt {
1047
943
  */
1048
944
  undo() {
1049
945
  var e = this;
1050
- return X(function* () {
946
+ return J(function* () {
1051
947
  if (!e.skipHistory) {
1052
948
  if (e.currentIndex <= 0) {
1053
949
  console.log("Нет предыдущих состояний для отмены.");
@@ -1074,7 +970,7 @@ class gt {
1074
970
  */
1075
971
  redo() {
1076
972
  var e = this;
1077
- return X(function* () {
973
+ return J(function* () {
1078
974
  if (!e.skipHistory) {
1079
975
  if (e.currentIndex >= e.patches.length) {
1080
976
  console.log("Нет состояний для повтора.");
@@ -1096,27 +992,27 @@ class gt {
1096
992
  })();
1097
993
  }
1098
994
  }
1099
- var vt = 0.1, mt = 2, ft = 0.1, Mt = 90, B = 16, Z = 16, N = 4096, L = 4096;
1100
- function je(o, e, t, a, r, n, i) {
995
+ const ft = 0.1, Mt = 2, jt = 0.1, yt = 90, Z = 16, z = 16, D = 4096, L = 4096;
996
+ function be(s, e, t, a, r, i, n) {
1101
997
  try {
1102
- var s = o[n](i), c = s.value;
998
+ var o = s[i](n), c = o.value;
1103
999
  } catch (u) {
1104
1000
  return void t(u);
1105
1001
  }
1106
- s.done ? e(c) : Promise.resolve(c).then(a, r);
1002
+ o.done ? e(c) : Promise.resolve(c).then(a, r);
1107
1003
  }
1108
- function O(o) {
1004
+ function T(s) {
1109
1005
  return function() {
1110
1006
  var e = this, t = arguments;
1111
1007
  return new Promise(function(a, r) {
1112
- var n = o.apply(e, t);
1113
- function i(c) {
1114
- je(n, a, r, i, s, "next", c);
1008
+ var i = s.apply(e, t);
1009
+ function n(c) {
1010
+ be(i, a, r, n, o, "next", c);
1115
1011
  }
1116
- function s(c) {
1117
- je(n, a, r, i, s, "throw", c);
1012
+ function o(c) {
1013
+ be(i, a, r, n, o, "throw", c);
1118
1014
  }
1119
- i(void 0);
1015
+ n(void 0);
1120
1016
  });
1121
1017
  };
1122
1018
  }
@@ -1141,33 +1037,62 @@ class A {
1141
1037
  * 'scale-montage' - Обновляет backstore-резолюцию монтажной области (масштабирует
1142
1038
  * экспортный размер канваса под размер изображения)
1143
1039
  * @param {Boolean} [options.withoutSave] - Не сохранять в историю изменений
1040
+ * @returns {Promise<Object|null>} - возвращает Promise с объектом изображения или null в случае ошибки
1144
1041
  */
1145
1042
  importImage(e) {
1146
1043
  var t = this;
1147
- return O(function* () {
1044
+ return T(function* () {
1148
1045
  var {
1149
1046
  source: a,
1150
1047
  scale: r = "image-".concat(t.options.scaleType),
1151
- withoutSave: n = !1
1048
+ withoutSave: i = !1
1152
1049
  } = e;
1153
- if (a) {
1154
- var {
1155
- canvas: i,
1156
- montageArea: s,
1157
- transformManager: c,
1158
- historyManager: u,
1159
- errorManager: l
1160
- } = t.editor, d = yield t.getContentType(a), h = A.getFormatFromContentType(d), {
1161
- acceptContentTypes: v,
1162
- acceptFormats: m
1163
- } = t;
1164
- if (!t.isAllowedContentType(d)) {
1165
- var f = "Неверный contentType для изображения: ".concat(d, ". Ожидается один из: ").concat(t.acceptContentTypes.join(", "), ".");
1166
- l.emitError({
1050
+ if (!a) return null;
1051
+ var {
1052
+ canvas: n,
1053
+ montageArea: o,
1054
+ transformManager: c,
1055
+ historyManager: u,
1056
+ errorManager: l
1057
+ } = t.editor, d = yield t.getContentType(a), h = A.getFormatFromContentType(d), {
1058
+ acceptContentTypes: v,
1059
+ acceptFormats: m
1060
+ } = t;
1061
+ if (!t.isAllowedContentType(d)) {
1062
+ var f = "Неверный contentType для изображения: ".concat(d, ". Ожидается один из: ").concat(t.acceptContentTypes.join(", "), ".");
1063
+ return l.emitError({
1064
+ origin: "ImageManager",
1065
+ method: "importImage",
1066
+ code: "INVALID_CONTENT_TYPE",
1067
+ message: f,
1068
+ data: {
1069
+ source: a,
1070
+ format: h,
1071
+ contentType: d,
1072
+ acceptContentTypes: v,
1073
+ acceptFormats: m
1074
+ }
1075
+ }), null;
1076
+ }
1077
+ u.suspendHistory();
1078
+ try {
1079
+ var M, g;
1080
+ if (a instanceof File)
1081
+ M = URL.createObjectURL(a);
1082
+ else if (typeof a == "string") {
1083
+ var C = yield fetch(a, {
1084
+ mode: "cors"
1085
+ }), y = yield C.blob({
1086
+ type: d,
1087
+ quality: 1
1088
+ });
1089
+ M = URL.createObjectURL(y);
1090
+ } else
1091
+ return l.emitError({
1167
1092
  origin: "ImageManager",
1168
1093
  method: "importImage",
1169
- code: "INVALID_CONTENT_TYPE",
1170
- message: f,
1094
+ code: "INVALID_SOURCE_TYPE",
1095
+ message: "Неверный тип источника изображения. Ожидается URL или объект File.",
1171
1096
  data: {
1172
1097
  source: a,
1173
1098
  format: h,
@@ -1175,101 +1100,71 @@ class A {
1175
1100
  acceptContentTypes: v,
1176
1101
  acceptFormats: m
1177
1102
  }
1103
+ }), null;
1104
+ if (t._createdBlobUrls.push(M), h === "svg") {
1105
+ var N = yield Ze(M);
1106
+ g = P.groupSVGElements(N.objects, N.options);
1107
+ } else
1108
+ g = yield me.fromURL(M, {
1109
+ crossOrigin: "anonymous"
1110
+ });
1111
+ var {
1112
+ width: E,
1113
+ height: S
1114
+ } = g;
1115
+ if (S > L || E > D) {
1116
+ var p = yield t.resizeImageToBoundaries(g._element.src, "max"), k = URL.createObjectURL(p);
1117
+ t._createdBlobUrls.push(k), g = yield me.fromURL(k, {
1118
+ crossOrigin: "anonymous"
1178
1119
  });
1179
- return;
1180
1120
  }
1181
- u.suspendHistory();
1182
- try {
1183
- var M, g;
1184
- if (a instanceof File)
1185
- M = URL.createObjectURL(a);
1186
- else if (typeof a == "string") {
1187
- var C = yield fetch(a, {
1188
- mode: "cors"
1189
- }), y = yield C.blob({
1190
- type: d,
1191
- quality: 1
1192
- });
1193
- M = URL.createObjectURL(y);
1194
- } else {
1195
- l.emitError({
1196
- origin: "ImageManager",
1197
- method: "importImage",
1198
- code: "INVALID_SOURCE_TYPE",
1199
- message: "Неверный тип источника изображения. Ожидается URL или объект File.",
1200
- data: {
1201
- source: a,
1202
- format: h,
1203
- contentType: d,
1204
- acceptContentTypes: v,
1205
- acceptFormats: m
1206
- }
1207
- });
1208
- return;
1209
- }
1210
- if (t._createdBlobUrls.push(M), h === "svg") {
1211
- var D = yield ke(M);
1212
- g = U.groupSVGElements(D.objects, D.options);
1213
- } else
1214
- g = yield le.fromURL(M, {
1215
- crossOrigin: "anonymous"
1216
- });
1121
+ if (g.set("id", "".concat(g.type, "-").concat(w())), g.set("format", h), r === "scale-montage")
1122
+ t.editor.canvasManager.scaleMontageAreaToImage({
1123
+ object: g,
1124
+ withoutSave: !0
1125
+ });
1126
+ else {
1217
1127
  var {
1218
- width: E,
1219
- height: S
1220
- } = g;
1221
- if (S > L || E > N) {
1222
- var p = yield t.resizeImageToBoundaries(g._element.src, "max"), T = URL.createObjectURL(p);
1223
- t._createdBlobUrls.push(T), g = yield le.fromURL(T, {
1224
- crossOrigin: "anonymous"
1225
- });
1226
- }
1227
- if (g.set("id", "".concat(g.type, "-").concat(w())), g.set("format", h), r === "scale-montage")
1228
- t.editor.canvasManager.scaleMontageAreaToImage({
1229
- object: g,
1230
- withoutSave: !0
1231
- });
1232
- else {
1233
- var {
1234
- width: Y,
1235
- height: H
1236
- } = s, _ = t.calculateScaleFactor({
1237
- imageObject: g,
1238
- scaleType: r
1239
- });
1240
- r === "image-contain" && _ < 1 ? c.fitObject({
1241
- object: g,
1242
- type: "contain",
1243
- withoutSave: !0
1244
- }) : r === "image-cover" && (E > Y || S > H) && c.fitObject({
1245
- object: g,
1246
- type: "cover",
1247
- withoutSave: !0
1248
- });
1249
- }
1250
- i.add(g), i.centerObject(g), i.setActiveObject(g), i.renderAll(), u.resumeHistory(), n || u.saveState(), i.fire("editor:image-imported", {
1251
- image: g,
1128
+ width: H,
1129
+ height: _
1130
+ } = o, R = t.calculateScaleFactor({
1131
+ imageObject: g,
1132
+ scaleType: r
1133
+ });
1134
+ r === "image-contain" && R < 1 ? c.fitObject({
1135
+ object: g,
1136
+ type: "contain",
1137
+ withoutSave: !0
1138
+ }) : r === "image-cover" && (E > H || S > _) && c.fitObject({
1139
+ object: g,
1140
+ type: "cover",
1141
+ withoutSave: !0
1142
+ });
1143
+ }
1144
+ n.add(g), n.centerObject(g), n.setActiveObject(g), n.renderAll(), u.resumeHistory(), i || u.saveState();
1145
+ var O = {
1146
+ image: g,
1147
+ format: h,
1148
+ contentType: d,
1149
+ scale: r,
1150
+ withoutSave: i,
1151
+ source: a
1152
+ };
1153
+ return n.fire("editor:image-imported", O), O;
1154
+ } catch (x) {
1155
+ return l.emitError({
1156
+ origin: "ImageManager",
1157
+ method: "importImage",
1158
+ code: "IMPORT_FAILED",
1159
+ message: "Ошибка импорта изображения: ".concat(x.message),
1160
+ data: {
1161
+ source: a,
1252
1162
  format: h,
1253
1163
  contentType: d,
1254
1164
  scale: r,
1255
- withoutSave: n,
1256
- source: a
1257
- });
1258
- } catch (k) {
1259
- l.emitError({
1260
- origin: "ImageManager",
1261
- method: "importImage",
1262
- code: "IMPORT_FAILED",
1263
- message: "Ошибка импорта изображения: ".concat(k.message),
1264
- data: {
1265
- source: a,
1266
- format: h,
1267
- contentType: d,
1268
- scale: r,
1269
- withoutSave: n
1270
- }
1271
- }), u.resumeHistory();
1272
- }
1165
+ withoutSave: i
1166
+ }
1167
+ }), u.resumeHistory(), null;
1273
1168
  }
1274
1169
  })();
1275
1170
  }
@@ -1283,25 +1178,25 @@ class A {
1283
1178
  */
1284
1179
  resizeImageToBoundaries(e) {
1285
1180
  var t = arguments, a = this;
1286
- return O(function* () {
1287
- var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", n = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров: ".concat(N, "x").concat(L);
1181
+ return T(function* () {
1182
+ var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", i = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров: ".concat(D, "x").concat(L);
1288
1183
  a.editor.errorManager.emitWarning({
1289
1184
  origin: "ImageManager",
1290
1185
  method: "resizeImageToBoundaries",
1291
1186
  code: "IMAGE_RESIZE_WARNING",
1292
- message: n,
1187
+ message: i,
1293
1188
  data: {
1294
1189
  dataURL: e,
1295
1190
  size: r
1296
1191
  }
1297
1192
  });
1298
- var i = yield a.editor.workerManager.post("resizeImage", {
1193
+ var n = yield a.editor.workerManager.post("resizeImage", {
1299
1194
  dataURL: e,
1300
- maxWidth: N,
1195
+ maxWidth: D,
1301
1196
  maxHeight: L,
1302
1197
  sizeType: r
1303
1198
  });
1304
- return i;
1199
+ return n;
1305
1200
  })();
1306
1201
  }
1307
1202
  /**
@@ -1317,14 +1212,14 @@ class A {
1317
1212
  */
1318
1213
  exportCanvasAsImageFile() {
1319
1214
  var e = arguments, t = this;
1320
- return O(function* () {
1215
+ return T(function* () {
1321
1216
  var {
1322
1217
  fileName: a = "image.png",
1323
1218
  contentType: r = "image/png",
1324
- exportAsBase64: n = !1,
1325
- exportAsBlob: i = !1
1219
+ exportAsBase64: i = !1,
1220
+ exportAsBlob: n = !1
1326
1221
  } = e.length > 0 && e[0] !== void 0 ? e[0] : {}, {
1327
- canvas: s,
1222
+ canvas: o,
1328
1223
  montageArea: c,
1329
1224
  workerManager: u
1330
1225
  } = t.editor;
@@ -1336,7 +1231,7 @@ class A {
1336
1231
  top: m,
1337
1232
  width: f,
1338
1233
  height: M
1339
- } = c.getBoundingRect(), g = yield s.clone(["id", "format", "locked"]);
1234
+ } = c.getBoundingRect(), g = yield o.clone(["id", "format", "locked"]);
1340
1235
  ["image/jpg", "image/jpeg"].includes(d) && (g.backgroundColor = "#ffffff");
1341
1236
  var C = g.getObjects().find((b) => b.id === c.id);
1342
1237
  C.visible = !1, g.viewportTransform = [1, 0, 0, 1, -v, -m], g.setDimensions({
@@ -1347,11 +1242,11 @@ class A {
1347
1242
  }), g.renderAll();
1348
1243
  var y = g.getObjects().filter((b) => b.format).every((b) => b.format === "svg");
1349
1244
  if (h === "svg" && y) {
1350
- var D = g.toSVG();
1245
+ var N = g.toSVG();
1351
1246
  g.dispose();
1352
- var E = A._exportSVGStringAsFile(D, {
1353
- exportAsBase64: n,
1354
- exportAsBlob: i,
1247
+ var E = A._exportSVGStringAsFile(N, {
1248
+ exportAsBase64: i,
1249
+ exportAsBlob: n,
1355
1250
  fileName: a
1356
1251
  }), S = {
1357
1252
  image: E,
@@ -1359,68 +1254,68 @@ class A {
1359
1254
  contentType: "image/svg+xml",
1360
1255
  fileName: a.replace(/\.[^/.]+$/, ".svg")
1361
1256
  };
1362
- return s.fire("editor:canvas-exported", S), S;
1257
+ return o.fire("editor:canvas-exported", S), S;
1363
1258
  }
1364
1259
  var p = yield new Promise((b) => {
1365
1260
  g.getElement().toBlob(b);
1366
1261
  });
1367
- if (g.dispose(), i) {
1368
- var T = {
1262
+ if (g.dispose(), n) {
1263
+ var k = {
1369
1264
  image: p,
1370
1265
  format: h,
1371
1266
  contentType: d,
1372
1267
  fileName: a
1373
1268
  };
1374
- return s.fire("editor:canvas-exported", T), T;
1269
+ return o.fire("editor:canvas-exported", k), k;
1375
1270
  }
1376
- var Y = yield createImageBitmap(p), H = yield u.post("toDataURL", {
1271
+ var H = yield createImageBitmap(p), _ = yield u.post("toDataURL", {
1377
1272
  format: h,
1378
1273
  quality: 1,
1379
- bitmap: Y
1380
- }, [Y]);
1274
+ bitmap: H
1275
+ }, [H]);
1381
1276
  if (l) {
1382
- var _ = 0.264583, k = f * _, V = M * _, Ce = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, G = new Ce({
1383
- orientation: k > V ? "landscape" : "portrait",
1277
+ var R = 0.264583, O = f * R, x = M * R, Ce = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, G = new Ce({
1278
+ orientation: O > x ? "landscape" : "portrait",
1384
1279
  unit: "mm",
1385
- format: [k, V]
1280
+ format: [O, x]
1386
1281
  });
1387
- if (G.addImage(H, "JPG", 0, 0, k, V), n) {
1388
- var De = G.output("datauristring"), oe = {
1389
- image: De,
1282
+ if (G.addImage(_, "JPG", 0, 0, O, x), i) {
1283
+ var Ne = G.output("datauristring"), ce = {
1284
+ image: Ne,
1390
1285
  format: "pdf",
1391
1286
  contentType: "application/pdf",
1392
1287
  fileName: a
1393
1288
  };
1394
- return s.fire("editor:canvas-exported", oe), oe;
1289
+ return o.fire("editor:canvas-exported", ce), ce;
1395
1290
  }
1396
- var Ne = G.output("blob"), Le = new File([Ne], a, {
1291
+ var De = G.output("blob"), Le = new File([De], a, {
1397
1292
  type: "application/pdf"
1398
- }), se = {
1293
+ }), ue = {
1399
1294
  image: Le,
1400
1295
  format: "pdf",
1401
1296
  contentType: "application/pdf",
1402
1297
  fileName: a
1403
1298
  };
1404
- return s.fire("editor:canvas-exported", se), se;
1299
+ return o.fire("editor:canvas-exported", ue), ue;
1405
1300
  }
1406
- if (n) {
1407
- var ce = {
1408
- image: H,
1301
+ if (i) {
1302
+ var de = {
1303
+ image: _,
1409
1304
  format: h,
1410
1305
  contentType: d,
1411
1306
  fileName: a
1412
1307
  };
1413
- return s.fire("editor:canvas-exported", ce), ce;
1308
+ return o.fire("editor:canvas-exported", de), de;
1414
1309
  }
1415
- var ue = h === "svg" && !y ? a.replace(/\.[^/.]+$/, ".png") : a, Ee = new File([p], ue, {
1310
+ var le = h === "svg" && !y ? a.replace(/\.[^/.]+$/, ".png") : a, Ee = new File([p], le, {
1416
1311
  type: d
1417
- }), de = {
1312
+ }), he = {
1418
1313
  image: Ee,
1419
1314
  format: h,
1420
1315
  contentType: d,
1421
- fileName: ue
1316
+ fileName: le
1422
1317
  };
1423
- return s.fire("editor:canvas-exported", de), de;
1318
+ return o.fire("editor:canvas-exported", he), he;
1424
1319
  } catch (b) {
1425
1320
  return t.editor.errorManager.emitError({
1426
1321
  origin: "ImageManager",
@@ -1430,8 +1325,8 @@ class A {
1430
1325
  data: {
1431
1326
  contentType: r,
1432
1327
  fileName: a,
1433
- exportAsBase64: n,
1434
- exportAsBlob: i
1328
+ exportAsBase64: i,
1329
+ exportAsBlob: n
1435
1330
  }
1436
1331
  }), "";
1437
1332
  }
@@ -1450,13 +1345,13 @@ class A {
1450
1345
  */
1451
1346
  exportObjectAsImageFile() {
1452
1347
  var e = arguments, t = this;
1453
- return O(function* () {
1348
+ return T(function* () {
1454
1349
  var {
1455
1350
  object: a,
1456
1351
  fileName: r = "image.png",
1457
- contentType: n = "image/png",
1458
- exportAsBase64: i = !1,
1459
- exportAsBlob: s = !1
1352
+ contentType: i = "image/png",
1353
+ exportAsBase64: n = !1,
1354
+ exportAsBlob: o = !1
1460
1355
  } = e.length > 0 && e[0] !== void 0 ? e[0] : {}, {
1461
1356
  canvas: c,
1462
1357
  workerManager: u
@@ -1468,18 +1363,18 @@ class A {
1468
1363
  code: "NO_OBJECT_SELECTED",
1469
1364
  message: "Не выбран объект для экспорта",
1470
1365
  data: {
1471
- contentType: n,
1366
+ contentType: i,
1472
1367
  fileName: r,
1473
- exportAsBase64: i,
1474
- exportAsBlob: s
1368
+ exportAsBase64: n,
1369
+ exportAsBlob: o
1475
1370
  }
1476
1371
  }), "";
1477
1372
  try {
1478
- var d = A.getFormatFromContentType(n);
1373
+ var d = A.getFormatFromContentType(i);
1479
1374
  if (d === "svg") {
1480
1375
  var h = l.toSVG(), v = t._exportSVGStringAsFile(h, {
1481
- exportAsBase64: i,
1482
- exportAsBlob: s,
1376
+ exportAsBase64: n,
1377
+ exportAsBlob: o,
1483
1378
  fileName: r
1484
1379
  }), m = {
1485
1380
  image: v,
@@ -1489,7 +1384,7 @@ class A {
1489
1384
  };
1490
1385
  return c.fire("editor:object-exported", m), m;
1491
1386
  }
1492
- if (i) {
1387
+ if (n) {
1493
1388
  var f = yield createImageBitmap(l._element), M = yield u.post("toDataURL", {
1494
1389
  format: d,
1495
1390
  quality: 1,
@@ -1497,7 +1392,7 @@ class A {
1497
1392
  }, [f]), g = {
1498
1393
  image: M,
1499
1394
  format: d,
1500
- contentType: n,
1395
+ contentType: i,
1501
1396
  fileName: r
1502
1397
  };
1503
1398
  return c.fire("editor:object-exported", g), g;
@@ -1505,21 +1400,21 @@ class A {
1505
1400
  var C = l.toCanvasElement(), y = yield new Promise((p) => {
1506
1401
  C.toBlob(p);
1507
1402
  });
1508
- if (s) {
1509
- var D = {
1403
+ if (o) {
1404
+ var N = {
1510
1405
  image: y,
1511
1406
  format: d,
1512
- contentType: n,
1407
+ contentType: i,
1513
1408
  fileName: r
1514
1409
  };
1515
- return c.fire("editor:object-exported", D), D;
1410
+ return c.fire("editor:object-exported", N), N;
1516
1411
  }
1517
1412
  var E = new File([y], r, {
1518
- type: n
1413
+ type: i
1519
1414
  }), S = {
1520
1415
  image: E,
1521
1416
  format: d,
1522
- contentType: n,
1417
+ contentType: i,
1523
1418
  fileName: r
1524
1419
  };
1525
1420
  return c.fire("editor:object-exported", S), S;
@@ -1530,10 +1425,10 @@ class A {
1530
1425
  code: "IMAGE_EXPORT_FAILED",
1531
1426
  message: "Ошибка экспорта объекта: ".concat(p.message),
1532
1427
  data: {
1533
- contentType: n,
1428
+ contentType: i,
1534
1429
  fileName: r,
1535
- exportAsBase64: i,
1536
- exportAsBlob: s
1430
+ exportAsBase64: n,
1431
+ exportAsBlob: o
1537
1432
  }
1538
1433
  }), "";
1539
1434
  }
@@ -1604,7 +1499,7 @@ class A {
1604
1499
  */
1605
1500
  getContentType(e) {
1606
1501
  var t = this;
1607
- return O(function* () {
1502
+ return T(function* () {
1608
1503
  return typeof e == "string" ? t.getContentTypeFromUrl(e) : e.type || "application/octet-stream";
1609
1504
  })();
1610
1505
  }
@@ -1616,7 +1511,7 @@ class A {
1616
1511
  */
1617
1512
  getContentTypeFromUrl(e) {
1618
1513
  var t = this;
1619
- return O(function* () {
1514
+ return T(function* () {
1620
1515
  if (e.startsWith("data:")) {
1621
1516
  var a = e.match(/^data:([^;]+)/);
1622
1517
  return a ? a[1] : "application/octet-stream";
@@ -1624,11 +1519,11 @@ class A {
1624
1519
  try {
1625
1520
  var r = yield fetch(e, {
1626
1521
  method: "HEAD"
1627
- }), n = r.headers.get("content-type");
1628
- if (n && n.startsWith("image/"))
1629
- return n.split(";")[0];
1630
- } catch (i) {
1631
- console.warn("HEAD запрос неудачен, определяем тип по расширению:", i);
1522
+ }), i = r.headers.get("content-type");
1523
+ if (i && i.startsWith("image/"))
1524
+ return i.split(";")[0];
1525
+ } catch (n) {
1526
+ console.warn("HEAD запрос неудачен, определяем тип по расширению:", n);
1632
1527
  }
1633
1528
  return t.getContentTypeFromExtension(e);
1634
1529
  })();
@@ -1641,13 +1536,13 @@ class A {
1641
1536
  */
1642
1537
  getContentTypeFromExtension(e) {
1643
1538
  try {
1644
- var t, a = new URL(e), r = (t = a.pathname.split(".").pop()) === null || t === void 0 ? void 0 : t.toLowerCase(), n = {};
1645
- return this.acceptContentTypes.forEach((i) => {
1646
- var s = A.getFormatFromContentType(i);
1647
- s && (n[s] = i);
1648
- }), n[r] || "application/octet-stream";
1649
- } catch (i) {
1650
- return console.warn("Не удалось определить расширение из URL:", e, i), "application/octet-stream";
1539
+ var t, a = new URL(e), r = (t = a.pathname.split(".").pop()) === null || t === void 0 ? void 0 : t.toLowerCase(), i = {};
1540
+ return this.acceptContentTypes.forEach((n) => {
1541
+ var o = A.getFormatFromContentType(n);
1542
+ o && (i[o] = n);
1543
+ }), i[r] || "application/octet-stream";
1544
+ } catch (n) {
1545
+ return console.warn("Не удалось определить расширение из URL:", e, n), "application/octet-stream";
1651
1546
  }
1652
1547
  }
1653
1548
  /**
@@ -1664,14 +1559,14 @@ class A {
1664
1559
  montageArea: r
1665
1560
  } = this.editor;
1666
1561
  if (!r || !t) return 1;
1667
- var n = r.width, i = r.height, {
1668
- width: s,
1562
+ var i = r.width, n = r.height, {
1563
+ width: o,
1669
1564
  height: c
1670
1565
  } = t;
1671
- return a === "contain" || a === "image-contain" ? Math.min(n / s, i / c) : a === "cover" || a === "image-cover" ? Math.max(n / s, i / c) : 1;
1566
+ return a === "contain" || a === "image-contain" ? Math.min(i / o, n / c) : a === "cover" || a === "image-cover" ? Math.max(i / o, n / c) : 1;
1672
1567
  }
1673
1568
  }
1674
- class jt {
1569
+ class pt {
1675
1570
  /**
1676
1571
  * @param {object} options
1677
1572
  * @param {ImageEditor} options.editor – экземпляр редактора
@@ -1684,10 +1579,11 @@ class jt {
1684
1579
  }
1685
1580
  /**
1686
1581
  * Устанавливаем внутреннюю ширину канваса (для экспорта)
1687
- * @param {String} width
1688
- * @param {Object} options
1689
- * @param {Boolean} options.preserveProportional - Сохранить пропорции
1690
- * @param {Boolean} options.withoutSave - Не сохранять состояние
1582
+ * @param {String|Number} width
1583
+ * @param {Object} [options={}]
1584
+ * @param {Boolean} [options.preserveProportional] - Сохранить пропорции
1585
+ * @param {Boolean} [options.withoutSave] - Не сохранять состояние
1586
+ * @param {Boolean} [options.adaptCanvasToContainer] - Адаптировать канвас к контейнеру
1691
1587
  * @fires editor:resolution-width-changed
1692
1588
  */
1693
1589
  setResolutionWidth(e) {
@@ -1698,18 +1594,18 @@ class jt {
1698
1594
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1699
1595
  if (e) {
1700
1596
  var {
1701
- canvas: n,
1702
- montageArea: i,
1597
+ canvas: i,
1598
+ montageArea: n,
1703
1599
  options: {
1704
- canvasBackstoreWidth: s
1600
+ canvasBackstoreWidth: o
1705
1601
  }
1706
1602
  } = this.editor, {
1707
1603
  width: c,
1708
1604
  height: u
1709
- } = i, l = Number(Math.max(Math.min(e, N), B));
1710
- if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(l), i.set({
1605
+ } = n, l = Number(Math.max(Math.min(e, D), Z));
1606
+ if (!o || o === "auto" || r ? this.adaptCanvasToContainer() : o ? this.setCanvasBackstoreWidth(o) : this.setCanvasBackstoreWidth(l), n.set({
1711
1607
  width: l
1712
- }), n.clipPath.set({
1608
+ }), i.clipPath.set({
1713
1609
  width: l
1714
1610
  }), t) {
1715
1611
  var d = l / c, h = u * d;
@@ -1719,18 +1615,19 @@ class jt {
1719
1615
  var {
1720
1616
  left: v,
1721
1617
  top: m
1722
- } = this.getObjectDefaultCoords(i), f = n.getZoom();
1723
- n.setViewportTransform([f, 0, 0, f, v, m]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), n == null || n.fire("editor:resolution-width-changed", {
1618
+ } = this.getObjectDefaultCoords(n), f = i.getZoom();
1619
+ i.setViewportTransform([f, 0, 0, f, v, m]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i == null || i.fire("editor:resolution-width-changed", {
1724
1620
  width: e
1725
1621
  });
1726
1622
  }
1727
1623
  }
1728
1624
  /**
1729
1625
  * Устанавливаем внутреннюю высоту канваса (для экспорта)
1730
- * @param {String} height
1731
- * @param {Object} options
1732
- * @param {Boolean} options.preserveProportional - Сохранить пропорции
1733
- * @param {Boolean} options.withoutSave - Не сохранять состояние
1626
+ * @param {String|Number} height
1627
+ * @param {Object} [options={}]
1628
+ * @param {Boolean} [options.preserveProportional] - Сохранить пропорции
1629
+ * @param {Boolean} [options.withoutSave] - Не сохранять состояние
1630
+ * @param {Boolean} [options.adaptCanvasToContainer] - Адаптировать канвас к контейнеру
1734
1631
  * @fires editor:resolution-height-changed
1735
1632
  */
1736
1633
  setResolutionHeight(e) {
@@ -1741,18 +1638,18 @@ class jt {
1741
1638
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1742
1639
  if (e) {
1743
1640
  var {
1744
- canvas: n,
1745
- montageArea: i,
1641
+ canvas: i,
1642
+ montageArea: n,
1746
1643
  options: {
1747
- canvasBackstoreHeight: s
1644
+ canvasBackstoreHeight: o
1748
1645
  }
1749
1646
  } = this.editor, {
1750
1647
  width: c,
1751
1648
  height: u
1752
- } = i, l = Number(Math.max(Math.min(e, L), Z));
1753
- if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(l), i.set({
1649
+ } = n, l = Number(Math.max(Math.min(e, L), z));
1650
+ if (!o || o === "auto" || r ? this.adaptCanvasToContainer() : o ? this.setCanvasBackstoreHeight(o) : this.setCanvasBackstoreHeight(l), n.set({
1754
1651
  height: l
1755
- }), n.clipPath.set({
1652
+ }), i.clipPath.set({
1756
1653
  height: l
1757
1654
  }), t) {
1758
1655
  var d = l / u, h = c * d;
@@ -1762,8 +1659,8 @@ class jt {
1762
1659
  var {
1763
1660
  left: v,
1764
1661
  top: m
1765
- } = this.getObjectDefaultCoords(i), f = n.getZoom();
1766
- n.setViewportTransform([f, 0, 0, f, v, m]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), n == null || n.fire("editor:resolution-height-changed", {
1662
+ } = this.getObjectDefaultCoords(n), f = i.getZoom();
1663
+ i.setViewportTransform([f, 0, 0, f, v, m]), this.centerMontageArea(), a || this.editor.historyManager.saveState(), i == null || i.fire("editor:resolution-height-changed", {
1767
1664
  height: e
1768
1665
  });
1769
1666
  }
@@ -1776,7 +1673,7 @@ class jt {
1776
1673
  var {
1777
1674
  canvas: e,
1778
1675
  montageArea: t
1779
- } = this.editor, a = e.getWidth(), r = e.getHeight(), n = e.getZoom(), i = new xe(a / 2, r / 2);
1676
+ } = this.editor, a = e.getWidth(), r = e.getHeight(), i = e.getZoom(), n = new ze(a / 2, r / 2);
1780
1677
  t.set({
1781
1678
  left: a / 2,
1782
1679
  top: r / 2
@@ -1784,8 +1681,8 @@ class jt {
1784
1681
  left: a / 2,
1785
1682
  top: r / 2
1786
1683
  }), e.renderAll();
1787
- var s = e.viewportTransform;
1788
- s[4] = a / 2 - i.x * n, s[5] = r / 2 - i.y * n, e.setViewportTransform(s), e.renderAll();
1684
+ var o = e.viewportTransform;
1685
+ o[4] = a / 2 - n.x * i, o[5] = r / 2 - n.y * i, e.setViewportTransform(o), e.renderAll();
1789
1686
  }
1790
1687
  /**
1791
1688
  * Метод для получения координат объекта с учетом текущего зума
@@ -1802,16 +1699,16 @@ class jt {
1802
1699
  }), {};
1803
1700
  var {
1804
1701
  width: r,
1805
- height: n
1806
- } = a, i = t.getZoom(), s = (r - r * i) / 2, c = (n - n * i) / 2;
1702
+ height: i
1703
+ } = a, n = t.getZoom(), o = (r - r * n) / 2, c = (i - i * n) / 2;
1807
1704
  return {
1808
- left: s,
1705
+ left: o,
1809
1706
  top: c
1810
1707
  };
1811
1708
  }
1812
1709
  setCanvasBackstoreWidth(e) {
1813
1710
  if (!(!e || typeof e != "number")) {
1814
- var t = Math.max(Math.min(e, N), B);
1711
+ var t = Math.max(Math.min(e, D), Z);
1815
1712
  this.editor.canvas.setDimensions({
1816
1713
  width: t
1817
1714
  }, {
@@ -1821,7 +1718,7 @@ class jt {
1821
1718
  }
1822
1719
  setCanvasBackstoreHeight(e) {
1823
1720
  if (!(!e || typeof e != "number")) {
1824
- var t = Math.max(Math.min(e, L), Z);
1721
+ var t = Math.max(Math.min(e, L), z);
1825
1722
  this.editor.canvas.setDimensions({
1826
1723
  height: t
1827
1724
  }, {
@@ -1832,10 +1729,10 @@ class jt {
1832
1729
  adaptCanvasToContainer() {
1833
1730
  var {
1834
1731
  canvas: e
1835
- } = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, n = Math.max(Math.min(a, N), B), i = Math.max(Math.min(r, L), Z);
1836
- console.log("adaptCanvasToContainer newWidth", n), console.log("adaptCanvasToContainer newHeight", i), e.setDimensions({
1837
- width: n,
1838
- height: i
1732
+ } = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, i = Math.max(Math.min(a, D), Z), n = Math.max(Math.min(r, L), z);
1733
+ console.log("adaptCanvasToContainer newWidth", i), console.log("adaptCanvasToContainer newHeight", n), e.setDimensions({
1734
+ width: i,
1735
+ height: n
1839
1736
  }, {
1840
1737
  backstoreOnly: !0
1841
1738
  });
@@ -1855,9 +1752,9 @@ class jt {
1855
1752
  var {
1856
1753
  canvas: t,
1857
1754
  montageArea: a
1858
- } = this.editor, r = a.width * e, n = a.height * e, i = t.wrapperEl.parentNode, s = r <= i.clientWidth ? "100%" : r, c = n <= i.clientHeight ? "100%" : n;
1755
+ } = this.editor, r = a.width * e, i = a.height * e, n = t.wrapperEl.parentNode, o = r <= n.clientWidth ? "100%" : r, c = i <= n.clientHeight ? "100%" : i;
1859
1756
  t.setDimensions({
1860
- width: s,
1757
+ width: o,
1861
1758
  height: c
1862
1759
  }, {
1863
1760
  cssOnly: !0
@@ -1954,35 +1851,35 @@ class jt {
1954
1851
  var {
1955
1852
  canvas: r,
1956
1853
  options: {
1957
- editorContainer: n
1854
+ editorContainer: i
1958
1855
  }
1959
- } = this.editor, i = [];
1856
+ } = this.editor, n = [];
1960
1857
  switch (e) {
1961
1858
  case "canvas":
1962
- i.push(r.lowerCanvasEl, r.upperCanvasEl);
1859
+ n.push(r.lowerCanvasEl, r.upperCanvasEl);
1963
1860
  break;
1964
1861
  case "wrapper":
1965
- i.push(r.wrapperEl);
1862
+ n.push(r.wrapperEl);
1966
1863
  break;
1967
1864
  case "container":
1968
- i.push(n);
1865
+ n.push(i);
1969
1866
  break;
1970
1867
  default:
1971
- i.push(r.lowerCanvasEl, r.upperCanvasEl);
1868
+ n.push(r.lowerCanvasEl, r.upperCanvasEl);
1972
1869
  }
1973
- var s = t === "width" ? "width" : "height";
1870
+ var o = t === "width" ? "width" : "height";
1974
1871
  if (typeof a == "string") {
1975
- i.forEach((l) => {
1976
- l.style[s] = a;
1872
+ n.forEach((l) => {
1873
+ l.style[o] = a;
1977
1874
  });
1978
1875
  return;
1979
1876
  }
1980
1877
  var c = parseFloat(a);
1981
1878
  if (!isNaN(c)) {
1982
1879
  var u = "".concat(c, "px");
1983
- i.forEach((l) => {
1984
- l.style[s] = u;
1985
- }), r.fire("editor:display-".concat(e, "-").concat(s, "-changed"), {
1880
+ n.forEach((l) => {
1881
+ l.style[o] = u;
1882
+ }), r.fire("editor:display-".concat(e, "-").concat(o, "-changed"), {
1986
1883
  element: e,
1987
1884
  value: a
1988
1885
  });
@@ -2004,10 +1901,10 @@ class jt {
2004
1901
  withoutSave: a
2005
1902
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2006
1903
  canvas: r,
2007
- montageArea: n,
2008
- transformManager: i,
1904
+ montageArea: i,
1905
+ transformManager: n,
2009
1906
  options: {
2010
- montageAreaWidth: s,
1907
+ montageAreaWidth: o,
2011
1908
  montageAreaHeight: c
2012
1909
  }
2013
1910
  } = this.editor, u = e || r.getActiveObject();
@@ -2016,25 +1913,25 @@ class jt {
2016
1913
  width: l,
2017
1914
  height: d
2018
1915
  } = u;
2019
- if (l < B || d < Z) {
2020
- var h = "Размер изображения меньше минимального размера канваса, поэтому оно будет растянуто до минимальных размеров: ".concat(B, "x").concat(Z);
1916
+ if (l < Z || d < z) {
1917
+ var h = "Размер изображения меньше минимального размера канваса, поэтому оно будет растянуто до минимальных размеров: ".concat(Z, "x").concat(z);
2021
1918
  console.warn("scaleMontageAreaToImage. ".concat(h)), r.fire("editor:warning", {
2022
1919
  message: h
2023
1920
  });
2024
1921
  }
2025
- var v = Math.min(l, N), m = Math.min(d, L);
1922
+ var v = Math.min(l, D), m = Math.min(d, L);
2026
1923
  if (t) {
2027
1924
  var {
2028
1925
  width: f,
2029
1926
  height: M
2030
- } = n, g = l / f, C = d / M, y = Math.max(g, C);
1927
+ } = i, g = l / f, C = d / M, y = Math.max(g, C);
2031
1928
  v = f * y, m = M * y;
2032
1929
  }
2033
1930
  this.setResolutionWidth(v, {
2034
1931
  withoutSave: !0
2035
1932
  }), this.setResolutionHeight(m, {
2036
1933
  withoutSave: !0
2037
- }), (l > s || d > c) && i.calculateAndApplyDefaultZoom(s, c), i.resetObject(u, {
1934
+ }), (l > o || d > c) && n.calculateAndApplyDefaultZoom(o, c), n.resetObject(u, {
2038
1935
  withoutSave: !0
2039
1936
  }), r.centerObject(u), r.renderAll(), a || this.editor.historyManager.saveState(), r.fire("editor:canvas-scaled", {
2040
1937
  width: v,
@@ -2068,13 +1965,13 @@ class jt {
2068
1965
  transformManager: a,
2069
1966
  historyManager: r,
2070
1967
  options: {
2071
- montageAreaWidth: n,
2072
- montageAreaHeight: i
1968
+ montageAreaWidth: i,
1969
+ montageAreaHeight: n
2073
1970
  }
2074
1971
  } = this.editor;
2075
- a.resetZoom(), this.setResolutionWidth(n, {
1972
+ a.resetZoom(), this.setResolutionWidth(i, {
2076
1973
  withoutSave: !0
2077
- }), this.setResolutionHeight(i, {
1974
+ }), this.setResolutionHeight(n, {
2078
1975
  withoutSave: !0
2079
1976
  }), t.renderAll(), a.resetObjects(), e || r.saveState(), t.fire("editor:default-scale-set");
2080
1977
  }
@@ -2090,10 +1987,10 @@ class jt {
2090
1987
  overlayMask: a
2091
1988
  }
2092
1989
  } = this.editor, r = e.getObjects();
2093
- return r.filter((n) => n.id !== t.id && n.id !== a.id);
1990
+ return r.filter((i) => i.id !== t.id && i.id !== a.id);
2094
1991
  }
2095
1992
  }
2096
- class yt {
1993
+ class bt {
2097
1994
  /**
2098
1995
  * @param {object} options
2099
1996
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2115,12 +2012,12 @@ class yt {
2115
2012
  var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.options.montageAreaWidth, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.options.montageAreaHeight, {
2116
2013
  width: a,
2117
2014
  height: r
2118
- } = this.editor.montageArea, n = e / a, i = t / r, s = Math.min(n, i), {
2015
+ } = this.editor.montageArea, i = e / a, n = t / r, o = Math.min(i, n), {
2119
2016
  minZoom: c,
2120
2017
  maxZoom: u,
2121
2018
  maxZoomFactor: l
2122
2019
  } = this.options;
2123
- this.minZoom = Math.min(s / l, c), this.maxZoom = Math.max(s * l, u), this.defaultZoom = s, this.setZoom(s);
2020
+ this.minZoom = Math.min(o / l, c), this.maxZoom = Math.max(o * l, u), this.defaultZoom = o, this.setZoom(o);
2124
2021
  }
2125
2022
  /**
2126
2023
  * Увеличение/уменьшение масштаба
@@ -2132,23 +2029,23 @@ class yt {
2132
2029
  * Если передавать координаты курсора, то нужно быть аккуратнее, так как юзер может выйти за пределы рабочей области
2133
2030
  */
2134
2031
  zoom() {
2135
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ft, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
2032
+ var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : jt, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
2136
2033
  if (e) {
2137
2034
  var {
2138
2035
  canvas: a,
2139
2036
  minZoom: r,
2140
- maxZoom: n
2141
- } = this.editor, i = a.getZoom(), {
2142
- x: s = t.pointX,
2037
+ maxZoom: i
2038
+ } = this.editor, n = a.getZoom(), {
2039
+ x: o = t.pointX,
2143
2040
  y: c = t.pointY
2144
- } = a.getCenterPoint(), u = Number((i + Number(e)).toFixed(2));
2145
- u > n && (u = n), u < r && (u = r), a.zoomToPoint({
2146
- x: Number(s),
2041
+ } = a.getCenterPoint(), u = Number((n + Number(e)).toFixed(2));
2042
+ u > i && (u = i), u < r && (u = r), a.zoomToPoint({
2043
+ x: Number(o),
2147
2044
  y: Number(c)
2148
2045
  }, u), a.fire("editor:zoom-changed", {
2149
2046
  currentZoom: a.getZoom(),
2150
2047
  zoom: u,
2151
- pointX: s,
2048
+ pointX: o,
2152
2049
  pointY: c
2153
2050
  });
2154
2051
  }
@@ -2164,17 +2061,17 @@ class yt {
2164
2061
  minZoom: a,
2165
2062
  maxZoom: r
2166
2063
  } = this.editor, {
2167
- x: n,
2168
- y: i
2169
- } = t.getCenterPoint(), s = e;
2170
- e > r && (s = r), e < a && (s = a), t.zoomToPoint({
2171
- x: Number(n),
2172
- y: Number(i)
2173
- }, s), t.fire("editor:zoom-changed", {
2064
+ x: i,
2065
+ y: n
2066
+ } = t.getCenterPoint(), o = e;
2067
+ e > r && (o = r), e < a && (o = a), t.zoomToPoint({
2068
+ x: Number(i),
2069
+ y: Number(n)
2070
+ }, o), t.fire("editor:zoom-changed", {
2174
2071
  currentZoom: t.getZoom(),
2175
- zoom: s,
2176
- pointX: n,
2177
- pointY: i
2072
+ zoom: o,
2073
+ pointX: i,
2074
+ pointY: n
2178
2075
  });
2179
2076
  }
2180
2077
  /**
@@ -2204,16 +2101,16 @@ class yt {
2204
2101
  * @fires editor:object-rotated
2205
2102
  */
2206
2103
  rotate() {
2207
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Mt, {
2104
+ var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : yt, {
2208
2105
  withoutSave: t
2209
2106
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2210
2107
  canvas: a,
2211
2108
  historyManager: r
2212
- } = this.editor, n = a.getActiveObject();
2213
- if (n) {
2214
- var i = n.angle + e;
2215
- n.rotate(i), n.setCoords(), a.renderAll(), t || r.saveState(), a.fire("editor:object-rotated", {
2216
- angle: i
2109
+ } = this.editor, i = a.getActiveObject();
2110
+ if (i) {
2111
+ var n = i.angle + e;
2112
+ i.rotate(n), i.setCoords(), a.renderAll(), t || r.saveState(), a.fire("editor:object-rotated", {
2113
+ angle: n
2217
2114
  });
2218
2115
  }
2219
2116
  }
@@ -2259,11 +2156,11 @@ class yt {
2259
2156
  withoutSave: a
2260
2157
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2261
2158
  canvas: r,
2262
- historyManager: n
2263
- } = this.editor, i = e || r.getActiveObject();
2264
- i && (i.type === "activeselection" ? i.getObjects().forEach((s) => {
2265
- s.set("opacity", t);
2266
- }) : i.set("opacity", t), r.renderAll(), a || n.saveState(), r.fire("editor:object-opacity-changed", t));
2159
+ historyManager: i
2160
+ } = this.editor, n = e || r.getActiveObject();
2161
+ n && (n.type === "activeselection" ? n.getObjects().forEach((o) => {
2162
+ o.set("opacity", t);
2163
+ }) : n.set("opacity", t), r.renderAll(), a || i.saveState(), r.fire("editor:object-opacity-changed", t));
2267
2164
  }
2268
2165
  /**
2269
2166
  * Масштабирование изображения
@@ -2283,32 +2180,32 @@ class yt {
2283
2180
  withoutSave: a,
2284
2181
  fitAsOneObject: r
2285
2182
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2286
- canvas: n,
2287
- imageManager: i,
2288
- historyManager: s
2289
- } = this.editor, c = e || n.getActiveObject();
2183
+ canvas: i,
2184
+ imageManager: n,
2185
+ historyManager: o
2186
+ } = this.editor, c = e || i.getActiveObject();
2290
2187
  if (c) {
2291
2188
  if (["activeselection"].includes(c.type) && !r) {
2292
2189
  var u = c.getObjects();
2293
- n.discardActiveObject(), u.forEach((h) => {
2294
- var v = i.calculateScaleFactor({
2190
+ i.discardActiveObject(), u.forEach((h) => {
2191
+ var v = n.calculateScaleFactor({
2295
2192
  imageObject: h,
2296
2193
  scaleType: t
2297
2194
  });
2298
- h.scale(v), n.centerObject(h);
2195
+ h.scale(v), i.centerObject(h);
2299
2196
  });
2300
- var l = new P(u, {
2301
- canvas: n
2197
+ var l = new Y(u, {
2198
+ canvas: i
2302
2199
  });
2303
- n.setActiveObject(l);
2200
+ i.setActiveObject(l);
2304
2201
  } else {
2305
- var d = i.calculateScaleFactor({
2202
+ var d = n.calculateScaleFactor({
2306
2203
  imageObject: c,
2307
2204
  scaleType: t
2308
2205
  });
2309
- c.scale(d), n.centerObject(c);
2206
+ c.scale(d), i.centerObject(c);
2310
2207
  }
2311
- n.renderAll(), a || s.saveState(), n.fire("editor:image-fitted", {
2208
+ i.renderAll(), a || o.saveState(), i.fire("editor:image-fitted", {
2312
2209
  type: t
2313
2210
  });
2314
2211
  }
@@ -2334,15 +2231,15 @@ class yt {
2334
2231
  withoutSave: a = !1
2335
2232
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2336
2233
  canvas: r,
2337
- montageArea: n,
2338
- imageManager: i,
2339
- historyManager: s,
2234
+ montageArea: i,
2235
+ imageManager: n,
2236
+ historyManager: o,
2340
2237
  options: {
2341
2238
  scaleType: c
2342
2239
  }
2343
2240
  } = this.editor, u = e || r.getActiveObject();
2344
2241
  if (!(!u || u.locked)) {
2345
- if (s.suspendHistory(), u.type !== "image" && u.format !== "svg" && (u.set({
2242
+ if (o.suspendHistory(), u.type !== "image" && u.format !== "svg" && (u.set({
2346
2243
  scaleX: 1,
2347
2244
  scaleY: 1,
2348
2245
  flipX: !1,
@@ -2357,10 +2254,10 @@ class yt {
2357
2254
  var {
2358
2255
  width: l,
2359
2256
  height: d
2360
- } = n, {
2257
+ } = i, {
2361
2258
  width: h,
2362
2259
  height: v
2363
- } = u, m = i.calculateScaleFactor({
2260
+ } = u, m = n.calculateScaleFactor({
2364
2261
  imageObject: u,
2365
2262
  scaleType: c
2366
2263
  });
@@ -2376,11 +2273,11 @@ class yt {
2376
2273
  flipX: !1,
2377
2274
  flipY: !1,
2378
2275
  angle: 0
2379
- }), r.centerObject(u), r.renderAll(), s.resumeHistory(), a || s.saveState(), r.fire("editor:object-reset");
2276
+ }), r.centerObject(u), r.renderAll(), o.resumeHistory(), a || o.saveState(), r.fire("editor:object-reset");
2380
2277
  }
2381
2278
  }
2382
2279
  }
2383
- class pt {
2280
+ class It {
2384
2281
  /**
2385
2282
  * @param {object} options
2386
2283
  * @param {ImageEditor} options.editor – экземпляр редактора
@@ -2430,15 +2327,15 @@ class pt {
2430
2327
  a.suspendHistory(), t.setCoords();
2431
2328
  var {
2432
2329
  left: r,
2433
- top: n,
2434
- width: i,
2435
- height: s
2330
+ top: i,
2331
+ width: n,
2332
+ height: o
2436
2333
  } = t.getBoundingRect();
2437
2334
  this.overlayMask.set({
2438
2335
  left: r,
2439
- top: n,
2440
- width: i,
2441
- height: s
2336
+ top: i,
2337
+ width: n,
2338
+ height: o
2442
2339
  }), e.discardActiveObject(), this.editor.layerManager.bringToFront(this.overlayMask, {
2443
2340
  withoutSave: !0
2444
2341
  }), a.resumeHistory();
@@ -2480,7 +2377,7 @@ class pt {
2480
2377
  }
2481
2378
  }
2482
2379
  }
2483
- class W {
2380
+ class F {
2484
2381
  /**
2485
2382
  * @param {object} options
2486
2383
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2506,10 +2403,10 @@ class W {
2506
2403
  historyManager: r
2507
2404
  } = this.editor;
2508
2405
  r.suspendHistory();
2509
- var n = e || a.getActiveObject();
2510
- n && (n.type === "activeselection" ? n.getObjects().forEach((i) => {
2511
- a.bringObjectToFront(i);
2512
- }) : a.bringObjectToFront(n), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-to-front"));
2406
+ var i = e || a.getActiveObject();
2407
+ i && (i.type === "activeselection" ? i.getObjects().forEach((n) => {
2408
+ a.bringObjectToFront(n);
2409
+ }) : a.bringObjectToFront(i), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-to-front"));
2513
2410
  }
2514
2411
  /**
2515
2412
  * Поднять объект на один уровень вверх по оси Z
@@ -2526,8 +2423,8 @@ class W {
2526
2423
  historyManager: r
2527
2424
  } = this.editor;
2528
2425
  r.suspendHistory();
2529
- var n = e || a.getActiveObject();
2530
- n && (n.type === "activeselection" ? W._moveSelectionForward(a, n) : a.bringObjectForward(n), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-forward"));
2426
+ var i = e || a.getActiveObject();
2427
+ i && (i.type === "activeselection" ? F._moveSelectionForward(a, i) : a.bringObjectForward(i), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:object-bring-forward"));
2531
2428
  }
2532
2429
  /**
2533
2430
  * Отправить объект на задний план по оси Z
@@ -2542,20 +2439,20 @@ class W {
2542
2439
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2543
2440
  canvas: a,
2544
2441
  montageArea: r,
2545
- historyManager: n,
2442
+ historyManager: i,
2546
2443
  interactionBlocker: {
2547
- overlayMask: i
2444
+ overlayMask: n
2548
2445
  }
2549
2446
  } = this.editor;
2550
- n.suspendHistory();
2551
- var s = e || a.getActiveObject();
2552
- if (s) {
2553
- if (s.type === "activeselection")
2554
- for (var c = s.getObjects(), u = c.length - 1; u >= 0; u -= 1)
2447
+ i.suspendHistory();
2448
+ var o = e || a.getActiveObject();
2449
+ if (o) {
2450
+ if (o.type === "activeselection")
2451
+ for (var c = o.getObjects(), u = c.length - 1; u >= 0; u -= 1)
2555
2452
  a.sendObjectToBack(c[u]);
2556
2453
  else
2557
- a.sendObjectToBack(s);
2558
- a.sendObjectToBack(r), a.sendObjectToBack(i), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-send-to-back");
2454
+ a.sendObjectToBack(o);
2455
+ a.sendObjectToBack(r), a.sendObjectToBack(n), a.renderAll(), i.resumeHistory(), t || i.saveState(), a.fire("editor:object-send-to-back");
2559
2456
  }
2560
2457
  }
2561
2458
  /**
@@ -2570,14 +2467,14 @@ class W {
2570
2467
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2571
2468
  canvas: a,
2572
2469
  montageArea: r,
2573
- historyManager: n,
2470
+ historyManager: i,
2574
2471
  interactionBlocker: {
2575
- overlayMask: i
2472
+ overlayMask: n
2576
2473
  }
2577
2474
  } = this.editor;
2578
- n.suspendHistory();
2579
- var s = e || a.getActiveObject();
2580
- s && (s.type === "activeselection" ? W._moveSelectionBackwards(a, s) : a.sendObjectBackwards(s), a.sendObjectToBack(r), a.sendObjectToBack(i), a.renderAll(), n.resumeHistory(), t || n.saveState(), a.fire("editor:object-send-backwards"));
2475
+ i.suspendHistory();
2476
+ var o = e || a.getActiveObject();
2477
+ o && (o.type === "activeselection" ? F._moveSelectionBackwards(a, o) : a.sendObjectBackwards(o), a.sendObjectToBack(r), a.sendObjectToBack(n), a.renderAll(), i.resumeHistory(), t || i.saveState(), a.fire("editor:object-send-backwards"));
2581
2478
  }
2582
2479
  /**
2583
2480
  * Сдвигает выделенные объекты на один уровень вверх относительно ближайшего верхнего объекта
@@ -2587,20 +2484,20 @@ class W {
2587
2484
  * @private
2588
2485
  */
2589
2486
  static _moveSelectionForward(e, t) {
2590
- for (var a = e.getObjects(), r = t.getObjects(), n = r.map((l) => a.indexOf(l)), i = -1, s = function(d) {
2487
+ for (var a = e.getObjects(), r = t.getObjects(), i = r.map((l) => a.indexOf(l)), n = -1, o = function(d) {
2591
2488
  var h = a[d];
2592
- if (!r.includes(h) && n.some((v) => d > v))
2593
- return i = d, 1;
2594
- }, c = 0; c < a.length && !s(c); c += 1)
2489
+ if (!r.includes(h) && i.some((v) => d > v))
2490
+ return n = d, 1;
2491
+ }, c = 0; c < a.length && !o(c); c += 1)
2595
2492
  ;
2596
- if (i !== -1) {
2493
+ if (n !== -1) {
2597
2494
  var u = r.map((l) => ({
2598
2495
  obj: l,
2599
2496
  index: a.indexOf(l)
2600
2497
  })).sort((l, d) => d.index - l.index);
2601
2498
  u.forEach((l) => {
2602
2499
  var d = a.indexOf(l.obj);
2603
- d < i && (e.moveObjectTo(l.obj, i), i = d);
2500
+ d < n && (e.moveObjectTo(l.obj, n), n = d);
2604
2501
  });
2605
2502
  }
2606
2503
  }
@@ -2612,68 +2509,68 @@ class W {
2612
2509
  * @private
2613
2510
  */
2614
2511
  static _moveSelectionBackwards(e, t) {
2615
- for (var a = e.getObjects(), r = t.getObjects(), n = Math.min(...r.map((s) => a.indexOf(s))), i = r.length - 1; i >= 0; i -= 1)
2616
- e.moveObjectTo(r[i], n - 1);
2512
+ for (var a = e.getObjects(), r = t.getObjects(), i = Math.min(...r.map((o) => a.indexOf(o))), n = r.length - 1; n >= 0; n -= 1)
2513
+ e.moveObjectTo(r[n], i - 1);
2617
2514
  }
2618
2515
  }
2619
- var bt = ["id", "left", "top", "width", "height", "fill"], It = ["id", "left", "top", "radius", "fill"], St = ["id", "left", "top", "width", "height", "fill"];
2620
- function ye(o, e) {
2621
- var t = Object.keys(o);
2516
+ var St = ["id", "left", "top", "width", "height", "fill"], At = ["id", "left", "top", "radius", "fill"], wt = ["id", "left", "top", "width", "height", "fill"];
2517
+ function Ie(s, e) {
2518
+ var t = Object.keys(s);
2622
2519
  if (Object.getOwnPropertySymbols) {
2623
- var a = Object.getOwnPropertySymbols(o);
2520
+ var a = Object.getOwnPropertySymbols(s);
2624
2521
  e && (a = a.filter(function(r) {
2625
- return Object.getOwnPropertyDescriptor(o, r).enumerable;
2522
+ return Object.getOwnPropertyDescriptor(s, r).enumerable;
2626
2523
  })), t.push.apply(t, a);
2627
2524
  }
2628
2525
  return t;
2629
2526
  }
2630
- function Q(o) {
2527
+ function K(s) {
2631
2528
  for (var e = 1; e < arguments.length; e++) {
2632
2529
  var t = arguments[e] != null ? arguments[e] : {};
2633
- e % 2 ? ye(Object(t), !0).forEach(function(a) {
2634
- At(o, a, t[a]);
2635
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : ye(Object(t)).forEach(function(a) {
2636
- Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
2530
+ e % 2 ? Ie(Object(t), !0).forEach(function(a) {
2531
+ Ct(s, a, t[a]);
2532
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(s, Object.getOwnPropertyDescriptors(t)) : Ie(Object(t)).forEach(function(a) {
2533
+ Object.defineProperty(s, a, Object.getOwnPropertyDescriptor(t, a));
2637
2534
  });
2638
2535
  }
2639
- return o;
2536
+ return s;
2640
2537
  }
2641
- function At(o, e, t) {
2642
- return (e = wt(e)) in o ? Object.defineProperty(o, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : o[e] = t, o;
2538
+ function Ct(s, e, t) {
2539
+ return (e = Nt(e)) in s ? Object.defineProperty(s, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : s[e] = t, s;
2643
2540
  }
2644
- function wt(o) {
2645
- var e = Ct(o, "string");
2541
+ function Nt(s) {
2542
+ var e = Dt(s, "string");
2646
2543
  return typeof e == "symbol" ? e : e + "";
2647
2544
  }
2648
- function Ct(o, e) {
2649
- if (typeof o != "object" || !o) return o;
2650
- var t = o[Symbol.toPrimitive];
2545
+ function Dt(s, e) {
2546
+ if (typeof s != "object" || !s) return s;
2547
+ var t = s[Symbol.toPrimitive];
2651
2548
  if (t !== void 0) {
2652
- var a = t.call(o, e);
2549
+ var a = t.call(s, e);
2653
2550
  if (typeof a != "object") return a;
2654
2551
  throw new TypeError("@@toPrimitive must return a primitive value.");
2655
2552
  }
2656
- return (e === "string" ? String : Number)(o);
2553
+ return (e === "string" ? String : Number)(s);
2657
2554
  }
2658
- function J(o, e) {
2659
- if (o == null) return {};
2660
- var t, a, r = Dt(o, e);
2555
+ function $(s, e) {
2556
+ if (s == null) return {};
2557
+ var t, a, r = Lt(s, e);
2661
2558
  if (Object.getOwnPropertySymbols) {
2662
- var n = Object.getOwnPropertySymbols(o);
2663
- for (a = 0; a < n.length; a++) t = n[a], e.indexOf(t) === -1 && {}.propertyIsEnumerable.call(o, t) && (r[t] = o[t]);
2559
+ var i = Object.getOwnPropertySymbols(s);
2560
+ for (a = 0; a < i.length; a++) t = i[a], e.indexOf(t) === -1 && {}.propertyIsEnumerable.call(s, t) && (r[t] = s[t]);
2664
2561
  }
2665
2562
  return r;
2666
2563
  }
2667
- function Dt(o, e) {
2668
- if (o == null) return {};
2564
+ function Lt(s, e) {
2565
+ if (s == null) return {};
2669
2566
  var t = {};
2670
- for (var a in o) if ({}.hasOwnProperty.call(o, a)) {
2567
+ for (var a in s) if ({}.hasOwnProperty.call(s, a)) {
2671
2568
  if (e.indexOf(a) !== -1) continue;
2672
- t[a] = o[a];
2569
+ t[a] = s[a];
2673
2570
  }
2674
2571
  return t;
2675
2572
  }
2676
- class Nt {
2573
+ class Et {
2677
2574
  /**
2678
2575
  * @param {object} options
2679
2576
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2704,21 +2601,21 @@ class Nt {
2704
2601
  id: t = "rect-".concat(w()),
2705
2602
  left: a,
2706
2603
  top: r,
2707
- width: n = 100,
2708
- height: i = 100,
2709
- fill: s = "blue"
2710
- } = e, c = J(e, bt), {
2604
+ width: i = 100,
2605
+ height: n = 100,
2606
+ fill: o = "blue"
2607
+ } = e, c = $(e, St), {
2711
2608
  withoutSelection: u,
2712
2609
  withoutAdding: l
2713
2610
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2714
2611
  canvas: d
2715
- } = this.editor, h = new Be(Q({
2612
+ } = this.editor, h = new Ue(K({
2716
2613
  id: t,
2717
2614
  left: a,
2718
2615
  top: r,
2719
- width: n,
2720
- height: i,
2721
- fill: s
2616
+ width: i,
2617
+ height: n,
2618
+ fill: o
2722
2619
  }, c));
2723
2620
  return !a && !r && d.centerObject(h), l || (d.add(h), u || d.setActiveObject(h), d.renderAll()), h;
2724
2621
  }
@@ -2741,20 +2638,20 @@ class Nt {
2741
2638
  id: t = "circle-".concat(w()),
2742
2639
  left: a,
2743
2640
  top: r,
2744
- radius: n = 50,
2745
- fill: i = "green"
2746
- } = e, s = J(e, It), {
2641
+ radius: i = 50,
2642
+ fill: n = "green"
2643
+ } = e, o = $(e, At), {
2747
2644
  withoutSelection: c,
2748
2645
  withoutAdding: u
2749
2646
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2750
2647
  canvas: l
2751
- } = this.editor, d = new Ze(Q({
2648
+ } = this.editor, d = new Ye(K({
2752
2649
  id: t,
2753
2650
  left: a,
2754
2651
  top: r,
2755
- fill: i,
2756
- radius: n
2757
- }, s));
2652
+ fill: n,
2653
+ radius: i
2654
+ }, o));
2758
2655
  return !a && !r && l.centerObject(d), u || (l.add(d), c || l.setActiveObject(d), l.renderAll()), d;
2759
2656
  }
2760
2657
  /**
@@ -2777,49 +2674,49 @@ class Nt {
2777
2674
  id: t = "triangle-".concat(w()),
2778
2675
  left: a,
2779
2676
  top: r,
2780
- width: n = 100,
2781
- height: i = 100,
2782
- fill: s = "yellow"
2783
- } = e, c = J(e, St), {
2677
+ width: i = 100,
2678
+ height: n = 100,
2679
+ fill: o = "yellow"
2680
+ } = e, c = $(e, wt), {
2784
2681
  withoutSelection: u,
2785
2682
  withoutAdding: l
2786
2683
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2787
2684
  canvas: d
2788
- } = this.editor, h = new ze(Q({
2685
+ } = this.editor, h = new Pe(K({
2789
2686
  id: t,
2790
2687
  left: a,
2791
2688
  top: r,
2792
- fill: s,
2793
- width: n,
2794
- height: i
2689
+ fill: o,
2690
+ width: i,
2691
+ height: n
2795
2692
  }, c));
2796
2693
  return !a && !r && d.centerObject(h), l || (d.add(h), u || d.setActiveObject(h), d.renderAll()), h;
2797
2694
  }
2798
2695
  }
2799
- function pe(o, e, t, a, r, n, i) {
2696
+ function Se(s, e, t, a, r, i, n) {
2800
2697
  try {
2801
- var s = o[n](i), c = s.value;
2698
+ var o = s[i](n), c = o.value;
2802
2699
  } catch (u) {
2803
2700
  return void t(u);
2804
2701
  }
2805
- s.done ? e(c) : Promise.resolve(c).then(a, r);
2702
+ o.done ? e(c) : Promise.resolve(c).then(a, r);
2806
2703
  }
2807
- function be(o) {
2704
+ function Ae(s) {
2808
2705
  return function() {
2809
2706
  var e = this, t = arguments;
2810
2707
  return new Promise(function(a, r) {
2811
- var n = o.apply(e, t);
2812
- function i(c) {
2813
- pe(n, a, r, i, s, "next", c);
2708
+ var i = s.apply(e, t);
2709
+ function n(c) {
2710
+ Se(i, a, r, n, o, "next", c);
2814
2711
  }
2815
- function s(c) {
2816
- pe(n, a, r, i, s, "throw", c);
2712
+ function o(c) {
2713
+ Se(i, a, r, n, o, "throw", c);
2817
2714
  }
2818
- i(void 0);
2715
+ n(void 0);
2819
2716
  });
2820
2717
  };
2821
2718
  }
2822
- class Lt {
2719
+ class Ot {
2823
2720
  /**
2824
2721
  * @param {object} options
2825
2722
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2836,7 +2733,7 @@ class Lt {
2836
2733
  */
2837
2734
  copy() {
2838
2735
  var e = this;
2839
- return be(function* () {
2736
+ return Ae(function* () {
2840
2737
  var {
2841
2738
  canvas: t
2842
2739
  } = e.editor, a = t.getActiveObject();
@@ -2858,12 +2755,12 @@ class Lt {
2858
2755
  });
2859
2756
  return;
2860
2757
  }
2861
- var n = r.toCanvasElement(), i = yield new Promise((u) => {
2862
- n.toBlob(u);
2863
- }), s = new ClipboardItem({
2864
- [i.type]: i
2758
+ var i = r.toCanvasElement(), n = yield new Promise((u) => {
2759
+ i.toBlob(u);
2760
+ }), o = new ClipboardItem({
2761
+ [n.type]: n
2865
2762
  });
2866
- yield navigator.clipboard.write([s]), t.fire("editor:object-copied", {
2763
+ yield navigator.clipboard.write([o]), t.fire("editor:object-copied", {
2867
2764
  object: r
2868
2765
  });
2869
2766
  } catch (u) {
@@ -2880,7 +2777,7 @@ class Lt {
2880
2777
  */
2881
2778
  paste() {
2882
2779
  var e = this;
2883
- return be(function* () {
2780
+ return Ae(function* () {
2884
2781
  var {
2885
2782
  canvas: t
2886
2783
  } = e.editor;
@@ -2891,7 +2788,7 @@ class Lt {
2891
2788
  left: a.left + 10,
2892
2789
  top: a.top + 10,
2893
2790
  evented: !0
2894
- }), a instanceof P ? (a.canvas = t, a.forEachObject((r) => {
2791
+ }), a instanceof Y ? (a.canvas = t, a.forEachObject((r) => {
2895
2792
  t.add(r);
2896
2793
  })) : t.add(a), t.setActiveObject(a), t.requestRenderAll(), t.fire("editor:object-pasted", {
2897
2794
  object: a
@@ -2900,7 +2797,7 @@ class Lt {
2900
2797
  })();
2901
2798
  }
2902
2799
  }
2903
- class Et {
2800
+ class Tt {
2904
2801
  /**
2905
2802
  * @param {object} options
2906
2803
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2926,10 +2823,10 @@ class Et {
2926
2823
  withoutSave: a
2927
2824
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2928
2825
  canvas: r,
2929
- historyManager: n
2930
- } = this.editor, i = e || r.getActiveObject();
2931
- if (!(!i || i.locked)) {
2932
- var s = {
2826
+ historyManager: i
2827
+ } = this.editor, n = e || r.getActiveObject();
2828
+ if (!(!n || n.locked)) {
2829
+ var o = {
2933
2830
  lockMovementX: !0,
2934
2831
  lockMovementY: !0,
2935
2832
  lockRotation: !0,
@@ -2939,12 +2836,12 @@ class Et {
2939
2836
  lockSkewingY: !0,
2940
2837
  locked: !0
2941
2838
  };
2942
- i.set(s);
2943
- var c = !t && ["activeselection", "group"].includes(i.type);
2944
- c && i.getObjects().forEach((u) => {
2945
- u.set(s);
2946
- }), r.renderAll(), a || n.saveState(), r.fire("editor:object-locked", {
2947
- object: i
2839
+ n.set(o);
2840
+ var c = !t && ["activeselection", "group"].includes(n.type);
2841
+ c && n.getObjects().forEach((u) => {
2842
+ u.set(o);
2843
+ }), r.renderAll(), a || i.saveState(), r.fire("editor:object-locked", {
2844
+ object: n
2948
2845
  });
2949
2846
  }
2950
2847
  }
@@ -2963,9 +2860,9 @@ class Et {
2963
2860
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2964
2861
  canvas: a,
2965
2862
  historyManager: r
2966
- } = this.editor, n = e || a.getActiveObject();
2967
- if (n) {
2968
- var i = {
2863
+ } = this.editor, i = e || a.getActiveObject();
2864
+ if (i) {
2865
+ var n = {
2969
2866
  lockMovementX: !1,
2970
2867
  lockMovementY: !1,
2971
2868
  lockRotation: !1,
@@ -2975,15 +2872,15 @@ class Et {
2975
2872
  lockSkewingY: !1,
2976
2873
  locked: !1
2977
2874
  };
2978
- n.set(i), ["activeselection", "group"].includes(n.type) && n.getObjects().forEach((s) => {
2979
- s.set(i);
2875
+ i.set(n), ["activeselection", "group"].includes(i.type) && i.getObjects().forEach((o) => {
2876
+ o.set(n);
2980
2877
  }), a.renderAll(), t || r.saveState(), a.fire("editor:object-unlocked", {
2981
- object: n
2878
+ object: i
2982
2879
  });
2983
2880
  }
2984
2881
  }
2985
2882
  }
2986
- class Ot {
2883
+ class kt {
2987
2884
  /**
2988
2885
  * @param {object} options
2989
2886
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -3010,10 +2907,10 @@ class Ot {
3010
2907
  historyManager: r
3011
2908
  } = this.editor;
3012
2909
  r.suspendHistory();
3013
- var n = e || a.getActiveObject();
3014
- if (n && n.type === "activeselection") {
3015
- var i = n.getObjects(), s = new Pe(i);
3016
- i.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(w())), a.add(s), a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped");
2910
+ var i = e || a.getActiveObject();
2911
+ if (i && i.type === "activeselection") {
2912
+ var n = i.getObjects(), o = new He(n);
2913
+ n.forEach((c) => a.remove(c)), o.set("id", "".concat(o.type, "-").concat(w())), a.add(o), a.setActiveObject(o), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped");
3017
2914
  }
3018
2915
  }
3019
2916
  /**
@@ -3032,18 +2929,18 @@ class Ot {
3032
2929
  historyManager: r
3033
2930
  } = this.editor;
3034
2931
  r.suspendHistory();
3035
- var n = e || a.getActiveObject();
3036
- if (!(!n || n.type !== "group")) {
3037
- var i = n.removeAll();
3038
- a.remove(n), i.forEach((c) => a.add(c));
3039
- var s = new P(i, {
2932
+ var i = e || a.getActiveObject();
2933
+ if (!(!i || i.type !== "group")) {
2934
+ var n = i.removeAll();
2935
+ a.remove(i), n.forEach((c) => a.add(c));
2936
+ var o = new Y(n, {
3040
2937
  canvas: a
3041
2938
  });
3042
- a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-ungrouped");
2939
+ a.setActiveObject(o), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-ungrouped");
3043
2940
  }
3044
2941
  }
3045
2942
  }
3046
- class Tt {
2943
+ class xt {
3047
2944
  /**
3048
2945
  * @param {object} options
3049
2946
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -3065,19 +2962,19 @@ class Tt {
3065
2962
  objectLockManager: a
3066
2963
  } = this.editor;
3067
2964
  e.discardActiveObject();
3068
- var r = t.getObjects(), n = r.some((s) => s.locked), i = r.length > 1 ? new P(t.getObjects(), {
2965
+ var r = t.getObjects(), i = r.some((o) => o.locked), n = r.length > 1 ? new Y(t.getObjects(), {
3069
2966
  canvas: e
3070
2967
  }) : r[0];
3071
- n && a.lockObject({
3072
- object: i,
2968
+ i && a.lockObject({
2969
+ object: n,
3073
2970
  skipInnerObjects: !0,
3074
2971
  withoutSave: !0
3075
- }), e.setActiveObject(i), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
3076
- selected: i
2972
+ }), e.setActiveObject(n), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
2973
+ selected: n
3077
2974
  });
3078
2975
  }
3079
2976
  }
3080
- class kt {
2977
+ class Bt {
3081
2978
  /**
3082
2979
  * @param {object} options
3083
2980
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -3102,17 +2999,17 @@ class kt {
3102
2999
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
3103
3000
  canvas: a,
3104
3001
  historyManager: r
3105
- } = this.editor, n = (e || a.getActiveObjects()).filter((i) => !i.locked);
3106
- n != null && n.length && (r.suspendHistory(), n.forEach((i) => {
3107
- if (i.type === "group" && i.format !== "svg") {
3108
- this.ungroup(i), this.deleteSelectedObjects();
3002
+ } = this.editor, i = (e || a.getActiveObjects()).filter((n) => !n.locked);
3003
+ i != null && i.length && (r.suspendHistory(), i.forEach((n) => {
3004
+ if (n.type === "group" && n.format !== "svg") {
3005
+ this.ungroup(n), this.deleteSelectedObjects();
3109
3006
  return;
3110
3007
  }
3111
- a.remove(i);
3008
+ a.remove(n);
3112
3009
  }), a.discardActiveObject(), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-deleted"));
3113
3010
  }
3114
3011
  }
3115
- var xt = {
3012
+ var Zt = {
3116
3013
  IMAGE_MANAGER: {
3117
3014
  /**
3118
3015
  * Некорректный Content-Type изображения
@@ -3140,7 +3037,7 @@ var xt = {
3140
3037
  IMAGE_EXPORT_FAILED: "IMAGE_EXPORT_FAILED"
3141
3038
  }
3142
3039
  };
3143
- class F {
3040
+ class V {
3144
3041
  constructor(e) {
3145
3042
  var {
3146
3043
  editor: t
@@ -3162,10 +3059,10 @@ class F {
3162
3059
  origin: t = "ImageEditor",
3163
3060
  method: a = "Unknown Method",
3164
3061
  code: r,
3165
- data: n,
3166
- message: i
3062
+ data: i,
3063
+ message: n
3167
3064
  } = e;
3168
- if (!F.isValidErrorCode(r)) {
3065
+ if (!V.isValidErrorCode(r)) {
3169
3066
  console.warn("Неизвестный код ошибки: ", {
3170
3067
  code: r,
3171
3068
  origin: t,
@@ -3174,13 +3071,13 @@ class F {
3174
3071
  return;
3175
3072
  }
3176
3073
  if (r) {
3177
- var s = i || r;
3178
- console.error("".concat(t, ". ").concat(a, ". ").concat(r, ". ").concat(s), n), this.editor.canvas.fire("editor:error", {
3074
+ var o = n || r;
3075
+ console.error("".concat(t, ". ").concat(a, ". ").concat(r, ". ").concat(o), i), this.editor.canvas.fire("editor:error", {
3179
3076
  code: r,
3180
3077
  origin: t,
3181
3078
  method: a,
3182
- message: s,
3183
- data: n
3079
+ message: o,
3080
+ data: i
3184
3081
  });
3185
3082
  }
3186
3083
  }
@@ -3199,10 +3096,10 @@ class F {
3199
3096
  origin: t = "ImageEditor",
3200
3097
  method: a = "Unknown Method",
3201
3098
  code: r,
3202
- message: n,
3203
- data: i
3099
+ message: i,
3100
+ data: n
3204
3101
  } = e;
3205
- if (!F.isValidErrorCode(r)) {
3102
+ if (!V.isValidErrorCode(r)) {
3206
3103
  console.warn("Неизвестный код ошибки: ", {
3207
3104
  code: r,
3208
3105
  origin: t,
@@ -3210,131 +3107,65 @@ class F {
3210
3107
  });
3211
3108
  return;
3212
3109
  }
3213
- var s = n || r;
3214
- console.warn("".concat(t, ". ").concat(a, ". ").concat(r, ". ").concat(s), i), this.editor.canvas.fire("editor:warning", {
3110
+ var o = i || r;
3111
+ console.warn("".concat(t, ". ").concat(a, ". ").concat(r, ". ").concat(o), n), this.editor.canvas.fire("editor:warning", {
3215
3112
  code: r,
3216
3113
  origin: t,
3217
3114
  method: a,
3218
- message: n,
3219
- data: i
3115
+ message: i,
3116
+ data: n
3220
3117
  });
3221
3118
  }
3222
3119
  static isValidErrorCode(e) {
3223
- return e ? Object.values(xt).some((t) => Object.values(t).includes(e)) : !1;
3120
+ return e ? Object.values(Zt).some((t) => Object.values(t).includes(e)) : !1;
3224
3121
  }
3225
3122
  }
3226
- function Ie(o, e, t, a, r, n, i) {
3227
- try {
3228
- var s = o[n](i), c = s.value;
3229
- } catch (u) {
3230
- return void t(u);
3231
- }
3232
- s.done ? e(c) : Promise.resolve(c).then(a, r);
3233
- }
3234
- function Bt(o) {
3235
- return function() {
3236
- var e = this, t = arguments;
3237
- return new Promise(function(a, r) {
3238
- var n = o.apply(e, t);
3239
- function i(c) {
3240
- Ie(n, a, r, i, s, "next", c);
3241
- }
3242
- function s(c) {
3243
- Ie(n, a, r, i, s, "throw", c);
3244
- }
3245
- i(void 0);
3246
- });
3247
- };
3248
- }
3249
- class ie {
3250
- constructor(e) {
3251
- var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
3123
+ class oe {
3124
+ /**
3125
+ * Конструктор класса ImageEditor.
3126
+ * @param {string} canvasId - идентификатор канваса, в котором будет создан редактор
3127
+ * @param {IEditorOptions} options - опции и настройки редактора
3128
+ */
3129
+ constructor(e, t) {
3252
3130
  this.options = t;
3253
- var {
3254
- defaultScale: a,
3255
- minZoom: r,
3256
- maxZoom: n
3257
- } = t;
3258
- this.containerId = e, this.editorId = "".concat(e, "-").concat(w()), this.clipboard = null, this.defaultZoom = a, this.minZoom = r || vt, this.maxZoom = n || mt, this.init();
3131
+ const { defaultScale: a, minZoom: r, maxZoom: i } = t;
3132
+ this.containerId = e, this.editorId = `${e}-${w()}`, this.clipboard = null, this.defaultZoom = a, this.minZoom = r || ft, this.maxZoom = i || Mt, this.init();
3259
3133
  }
3260
3134
  init() {
3261
- var e = this;
3262
- return Bt(function* () {
3263
- var {
3264
- editorContainerWidth: t,
3265
- editorContainerHeight: a,
3266
- canvasWrapperWidth: r,
3267
- canvasWrapperHeight: n,
3135
+ return Q(this, null, function* () {
3136
+ const {
3137
+ editorContainerWidth: e,
3138
+ editorContainerHeight: t,
3139
+ canvasWrapperWidth: a,
3140
+ canvasWrapperHeight: r,
3268
3141
  canvasCSSWidth: i,
3269
- canvasCSSHeight: s,
3270
- initialImage: c,
3271
- initialStateJSON: u,
3272
- scaleType: l,
3273
- _onReadyCallback: d
3274
- } = e.options;
3275
- if (qe.apply(), e.canvas = new Ye(e.containerId, e.options), e.moduleLoader = new We(), e.workerManager = new Fe(), e.errorManager = new F({
3276
- editor: e
3277
- }), e.historyManager = new gt({
3278
- editor: e
3279
- }), e.toolbar = new ht({
3280
- editor: e
3281
- }), e.transformManager = new yt({
3282
- editor: e
3283
- }), e.canvasManager = new jt({
3284
- editor: e
3285
- }), e.imageManager = new A({
3286
- editor: e
3287
- }), e.layerManager = new W({
3288
- editor: e
3289
- }), e.shapeManager = new Nt({
3290
- editor: e
3291
- }), e.interactionBlocker = new pt({
3292
- editor: e
3293
- }), e.clipboardManager = new Lt({
3294
- editor: e
3295
- }), e.objectLockManager = new Et({
3296
- editor: e
3297
- }), e.groupingManager = new Ot({
3298
- editor: e
3299
- }), e.selectionManager = new Tt({
3300
- editor: e
3301
- }), e.deletionManager = new kt({
3302
- editor: e
3303
- }), e._createMonageArea(), e._createClippingArea(), e.listeners = new z({
3304
- editor: e,
3305
- options: e.options
3306
- }), e.canvasManager.setEditorContainerWidth(t), e.canvasManager.setEditorContainerHeight(a), e.canvasManager.setCanvasWrapperWidth(r), e.canvasManager.setCanvasWrapperHeight(n), e.canvasManager.setCanvasCSSWidth(i), e.canvasManager.setCanvasCSSHeight(s), c != null && c.source) {
3307
- var {
3308
- source: h,
3309
- scale: v = "image-".concat(l),
3310
- withoutSave: m = !0
3311
- } = c;
3312
- yield e.imageManager.importImage({
3313
- source: h,
3314
- scale: v,
3315
- withoutSave: m
3316
- });
3142
+ canvasCSSHeight: n,
3143
+ initialImage: o,
3144
+ initialStateJSON: c,
3145
+ scaleType: u,
3146
+ _onReadyCallback: l
3147
+ } = this.options;
3148
+ if (tt.apply(), this.canvas = new _e(this.containerId, this.options), this.moduleLoader = new Ve(), this.workerManager = new Ge(), this.errorManager = new V({ editor: this }), this.historyManager = new mt({ editor: this }), this.toolbar = new vt({ editor: this }), this.transformManager = new bt({ editor: this }), this.canvasManager = new pt({ editor: this }), this.imageManager = new A({ editor: this }), this.layerManager = new F({ editor: this }), this.shapeManager = new Et({ editor: this }), this.interactionBlocker = new It({ editor: this }), this.clipboardManager = new Ot({ editor: this }), this.objectLockManager = new Tt({ editor: this }), this.groupingManager = new kt({ editor: this }), this.selectionManager = new xt({ editor: this }), this.deletionManager = new Bt({ editor: this }), this._createMonageArea(), this._createClippingArea(), this.listeners = new U({ 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), o != null && o.source) {
3149
+ const {
3150
+ source: d,
3151
+ scale: h = `image-${u}`,
3152
+ withoutSave: v = !0
3153
+ } = o;
3154
+ yield this.imageManager.importImage({ source: d, scale: h, withoutSave: v });
3317
3155
  } else
3318
- e.canvasManager.setDefaultScale({
3319
- withoutSave: !0
3320
- });
3321
- u && e.historyManager.loadStateFromFullState(u), e.historyManager.saveState(), console.log("editor:ready"), e.canvas.fire("editor:ready", e), typeof d == "function" && d(e);
3322
- })();
3156
+ this.canvasManager.setDefaultScale({ withoutSave: !0 });
3157
+ c && this.historyManager.loadStateFromFullState(c), this.historyManager.saveState(), console.log("editor:ready"), this.canvas.fire("editor:ready", this), typeof l == "function" && l(this);
3158
+ });
3323
3159
  }
3324
- /**
3325
- * Создаёт монтажную область
3326
- * @private
3327
- * @returns {void}
3328
- */
3329
3160
  _createMonageArea() {
3330
- var {
3161
+ const {
3331
3162
  montageAreaWidth: e,
3332
3163
  montageAreaHeight: t
3333
3164
  } = this.options;
3334
3165
  this.montageArea = this.shapeManager.addRectangle({
3335
3166
  width: e,
3336
3167
  height: t,
3337
- fill: ie._createMosaicPattern(),
3168
+ fill: oe._createMosaicPattern(),
3338
3169
  stroke: null,
3339
3170
  strokeWidth: 0,
3340
3171
  selectable: !1,
@@ -3346,17 +3177,10 @@ class ie {
3346
3177
  originY: "center",
3347
3178
  objectCaching: !1,
3348
3179
  noScaleCache: !0
3349
- }, {
3350
- withoutSelection: !0
3351
- });
3180
+ }, { withoutSelection: !0 });
3352
3181
  }
3353
- /**
3354
- * Создаёт область клиппинга
3355
- * @private
3356
- * @returns {void}
3357
- */
3358
3182
  _createClippingArea() {
3359
- var {
3183
+ const {
3360
3184
  montageAreaWidth: e,
3361
3185
  montageAreaHeight: t
3362
3186
  } = this.options;
@@ -3365,7 +3189,6 @@ class ie {
3365
3189
  width: e,
3366
3190
  height: t,
3367
3191
  stroke: null,
3368
- fill: null,
3369
3192
  strokeWidth: 0,
3370
3193
  hasBorders: !1,
3371
3194
  hasControls: !1,
@@ -3373,32 +3196,26 @@ class ie {
3373
3196
  evented: !1,
3374
3197
  originX: "center",
3375
3198
  originY: "center"
3376
- }, {
3377
- withoutSelection: !0,
3378
- withoutAdding: !0
3379
- });
3199
+ }, { withoutSelection: !0, withoutAdding: !0 });
3380
3200
  }
3381
- /**
3382
- * Метод для удаления редактора и всех слушателей.
3383
- */
3384
3201
  destroy() {
3385
3202
  this.listeners.destroy(), this.toolbar.destroy(), this.canvas.dispose(), this.workerManager.worker.terminate(), this.imageManager.revokeBlobUrls();
3386
3203
  }
3387
3204
  /**
3388
3205
  * Создает паттерн мозаики.
3389
- * @returns {object} паттерн мозаики
3206
+ * @returns {Pattern} паттерн мозаики
3390
3207
  */
3391
3208
  static _createMosaicPattern() {
3392
- var e = document.createElement("canvas");
3209
+ const e = document.createElement("canvas");
3393
3210
  e.width = 20, e.height = 20;
3394
- var t = e.getContext("2d");
3395
- return t.fillStyle = "#ddd", t.fillRect(0, 0, 40, 40), t.fillStyle = "#ccc", t.fillRect(0, 0, 10, 10), t.fillRect(10, 10, 10, 10), new Ue({
3211
+ const t = e.getContext("2d");
3212
+ 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 Re({
3396
3213
  source: e,
3397
3214
  repeat: "repeat"
3398
3215
  });
3399
3216
  }
3400
3217
  }
3401
- const Zt = {
3218
+ const zt = {
3402
3219
  // Cохраняют ли объекты свой текущий порядок (z-index) при выделении
3403
3220
  preserveObjectStacking: !0,
3404
3221
  // Возможность взаимодействия с объектом за пределами монтажной области
@@ -3432,7 +3249,13 @@ const Zt = {
3432
3249
  /**
3433
3250
  * Массив допустимых форматов изображений для загрузки в редактор.
3434
3251
  */
3435
- acceptContentTypes: ["image/png", "image/jpeg", "image/jpg", "image/svg+xml", "image/webp"],
3252
+ acceptContentTypes: [
3253
+ "image/png",
3254
+ "image/jpeg",
3255
+ "image/jpg",
3256
+ "image/svg+xml",
3257
+ "image/webp"
3258
+ ],
3436
3259
  // Показывать панель инструментов для выделенного объекта
3437
3260
  showToolbar: !0,
3438
3261
  // Настройки панели инструментов выделенного объекта.
@@ -3443,28 +3266,36 @@ const Zt = {
3443
3266
  name: "Разблокировать",
3444
3267
  handle: "unlock"
3445
3268
  }],
3446
- actions: [{
3447
- name: "Создать копию",
3448
- handle: "copyPaste"
3449
- }, {
3450
- name: "Заблокировать",
3451
- handle: "lock"
3452
- }, {
3453
- name: "На передний план",
3454
- handle: "bringToFront"
3455
- }, {
3456
- name: "На задний план",
3457
- handle: "sendToBack"
3458
- }, {
3459
- name: "На один уровень вверх",
3460
- handle: "bringForward"
3461
- }, {
3462
- name: "На один уровень вниз",
3463
- handle: "sendBackwards"
3464
- }, {
3465
- name: "Удалить",
3466
- handle: "delete"
3467
- }]
3269
+ actions: [
3270
+ {
3271
+ name: "Создать копию",
3272
+ handle: "copyPaste"
3273
+ },
3274
+ {
3275
+ name: "Заблокировать",
3276
+ handle: "lock"
3277
+ },
3278
+ {
3279
+ name: "На передний план",
3280
+ handle: "bringToFront"
3281
+ },
3282
+ {
3283
+ name: "На задний план",
3284
+ handle: "sendToBack"
3285
+ },
3286
+ {
3287
+ name: "На один уровень вверх",
3288
+ handle: "bringForward"
3289
+ },
3290
+ {
3291
+ name: "На один уровень вниз",
3292
+ handle: "sendBackwards"
3293
+ },
3294
+ {
3295
+ name: "Удалить",
3296
+ handle: "delete"
3297
+ }
3298
+ ]
3468
3299
  },
3469
3300
  // Можно передать JSON объект в виде строки для инициализации редактора
3470
3301
  initialStateJSON: null,
@@ -3495,7 +3326,7 @@ const Zt = {
3495
3326
  // Зум по колесику мыши
3496
3327
  mouseWheelZooming: !0,
3497
3328
  // Перемещение канваса при зажатой кнопке ALT
3498
- canvasDragging: !1,
3329
+ canvasDragging: !0,
3499
3330
  // Копирование объектов (Ctrl + C, Ctrl + V)
3500
3331
  copyObjectsByHotkey: !0,
3501
3332
  // Вставка изображения из буфера обмена
@@ -3509,56 +3340,18 @@ const Zt = {
3509
3340
  // Сброс параметров объекта по двойному клику
3510
3341
  resetObjectFitByDoubleClick: !0
3511
3342
  };
3512
- function Se(o, e) {
3513
- var t = Object.keys(o);
3514
- if (Object.getOwnPropertySymbols) {
3515
- var a = Object.getOwnPropertySymbols(o);
3516
- e && (a = a.filter(function(r) {
3517
- return Object.getOwnPropertyDescriptor(o, r).enumerable;
3518
- })), t.push.apply(t, a);
3519
- }
3520
- return t;
3521
- }
3522
- function Ae(o) {
3523
- for (var e = 1; e < arguments.length; e++) {
3524
- var t = arguments[e] != null ? arguments[e] : {};
3525
- e % 2 ? Se(Object(t), !0).forEach(function(a) {
3526
- zt(o, a, t[a]);
3527
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o, Object.getOwnPropertyDescriptors(t)) : Se(Object(t)).forEach(function(a) {
3528
- Object.defineProperty(o, a, Object.getOwnPropertyDescriptor(t, a));
3529
- });
3530
- }
3531
- return o;
3532
- }
3533
- function zt(o, e, t) {
3534
- return (e = Pt(e)) in o ? Object.defineProperty(o, e, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : o[e] = t, o;
3535
- }
3536
- function Pt(o) {
3537
- var e = Ut(o, "string");
3538
- return typeof e == "symbol" ? e : e + "";
3539
- }
3540
- function Ut(o, e) {
3541
- if (typeof o != "object" || !o) return o;
3542
- var t = o[Symbol.toPrimitive];
3543
- if (t !== void 0) {
3544
- var a = t.call(o, e);
3545
- if (typeof a != "object") return a;
3546
- throw new TypeError("@@toPrimitive must return a primitive value.");
3547
- }
3548
- return (e === "string" ? String : Number)(o);
3549
- }
3550
- function _t(o) {
3551
- var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, t = Ae(Ae({}, Zt), e), a = document.getElementById(o);
3343
+ function Ht(s, e = {}) {
3344
+ const t = X(X({}, zt), e), a = document.getElementById(s);
3552
3345
  if (!a)
3553
- return Promise.reject(new Error('Контейнер с ID "'.concat(o, '" не найден.')));
3554
- var r = document.createElement("canvas");
3555
- return r.id = "".concat(o, "-canvas"), a.appendChild(r), t.editorContainer = a, new Promise((n) => {
3556
- t._onReadyCallback = n;
3557
- var i = new ie(r.id, t);
3558
- window[o] = i;
3346
+ return Promise.reject(new Error(`Контейнер с ID "${s}" не найден.`));
3347
+ const r = document.createElement("canvas");
3348
+ return r.id = `${s}-canvas`, a.appendChild(r), t.editorContainer = a, new Promise((i) => {
3349
+ t._onReadyCallback = i;
3350
+ const n = new oe(r.id, t);
3351
+ window[s] = n;
3559
3352
  });
3560
3353
  }
3561
3354
  export {
3562
- _t as default
3355
+ Ht as default
3563
3356
  };
3564
- //# sourceMappingURL=main.js.map
3357
+ //# sourceMappingURL=main.map