@anu3ev/fabric-image-editor 0.1.35 → 0.1.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/main.js +122 -131
  2. package/package.json +2 -1
package/dist/main.js CHANGED
@@ -1,7 +1,7 @@
1
1
  var Te = Object.defineProperty;
2
2
  var G = Object.getOwnPropertySymbols;
3
3
  var Me = Object.prototype.hasOwnProperty, fe = Object.prototype.propertyIsEnumerable;
4
- var me = (o, e, t) => e in o ? Te(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t, T = (o, e) => {
4
+ var me = (o, e, t) => e in o ? Te(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t, A = (o, e) => {
5
5
  for (var t in e || (e = {}))
6
6
  Me.call(e, t) && me(o, t, e[t]);
7
7
  if (G)
@@ -34,11 +34,11 @@ var $ = (o, e, t) => new Promise((a, r) => {
34
34
  }, s = (c) => c.done ? a(c.value) : Promise.resolve(c.value).then(i, n);
35
35
  s((t = t.apply(o, e)).next());
36
36
  });
37
- import { ActiveSelection as R, util as W, controlsUtils as Oe, InteractiveFabricObject as ke, loadSVGFromURL as xe, FabricImage as q, Point as Be, Rect as Ze, Circle as ze, Triangle as Ue, Group as Ye, Canvas as He, Pattern as Pe } from "fabric";
38
- import { create as Re } from "jsondiffpatch";
39
- var We = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", C = function() {
37
+ import { ActiveSelection as _, util as R, controlsUtils as Oe, InteractiveFabricObject as ke, loadSVGFromURL as xe, FabricImage as q, Point as Be, Rect as Ze, Circle as ze, Triangle as Ue, Group as Ye, Canvas as He, Pattern as Pe } from "fabric";
38
+ import { create as _e } from "jsondiffpatch";
39
+ var Re = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict", D = function() {
40
40
  for (var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 21, t = "", a = crypto.getRandomValues(new Uint8Array(e |= 0)); e--; )
41
- t += We[a[e] & 63];
41
+ t += Re[a[e] & 63];
42
42
  return t;
43
43
  };
44
44
  class P {
@@ -95,7 +95,7 @@ class P {
95
95
  this.canvas.setActiveObject(r[0]);
96
96
  return;
97
97
  }
98
- const i = new R(r, {
98
+ const i = new _(r, {
99
99
  canvas: this.canvas
100
100
  });
101
101
  this.canvas.setActiveObject(i), this.canvas.requestRenderAll();
@@ -329,7 +329,7 @@ class P {
329
329
  };
330
330
  }
331
331
  }
332
- class _e {
332
+ class We {
333
333
  /**
334
334
  * @description Класс для динамической загрузки внешних модулей.
335
335
  */
@@ -387,7 +387,7 @@ class Fe {
387
387
  * @returns {Promise<any>}
388
388
  */
389
389
  post(e, t) {
390
- var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [], r = "".concat(e, ":").concat(C(8));
390
+ var a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [], r = "".concat(e, ":").concat(D(8));
391
391
  return new Promise((i, n) => {
392
392
  this._callbacks.set(r, {
393
393
  resolve: i,
@@ -409,21 +409,21 @@ class Fe {
409
409
  var I = 12, Ve = 2, te = 8, ae = 20, Ge = 100, re = 20, ie = 8, Xe = 100, ne = 32, se = 1, Qe = "#2B2D33", oe = "#3D8BF4", ce = "#FFFFFF";
410
410
  function Q(o, e, t, a, r) {
411
411
  var i = I, n = Ve;
412
- o.save(), o.translate(e, t), o.rotate(W.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-12 / 2, -12 / 2, i, i, n), o.fill(), o.stroke(), o.restore();
412
+ o.save(), o.translate(e, t), o.rotate(R.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-12 / 2, -12 / 2, i, i, n), o.fill(), o.stroke(), o.restore();
413
413
  }
414
414
  function je(o, e, t, a, r) {
415
415
  var i = te, n = ae, s = Ge;
416
- o.save(), o.translate(e, t), o.rotate(W.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-8 / 2, -20 / 2, i, n, s), o.fill(), o.stroke(), o.restore();
416
+ o.save(), o.translate(e, t), o.rotate(R.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-8 / 2, -20 / 2, i, n, s), o.fill(), o.stroke(), o.restore();
417
417
  }
418
418
  function ye(o, e, t, a, r) {
419
419
  var i = re, n = ie, s = Xe;
420
- o.save(), o.translate(e, t), o.rotate(W.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-20 / 2, -8 / 2, i, n, s), o.fill(), o.stroke(), o.restore();
420
+ o.save(), o.translate(e, t), o.rotate(R.degreesToRadians(r.angle)), o.fillStyle = ce, o.strokeStyle = oe, o.lineWidth = se, o.beginPath(), o.roundRect(-20 / 2, -8 / 2, i, n, s), o.fill(), o.stroke(), o.restore();
421
421
  }
422
- var Je = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", Ne = new Image();
423
- Ne.src = Je;
422
+ var Je = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTE4Ljc1IDQuMzc1djMuNzVhLjYyNS42MjUgMCAwIDEtLjYyNS42MjVoLTMuNzVhLjYyNS42MjUgMCAwIDEgMC0xLjI1aDIuMTRsLTIuMDc3LTEuOTAzLS4wMi0uMDE5YTYuMjUgNi4yNSAwIDEgMC0uMTMgOC45NjcuNjI2LjYyNiAwIDAgMSAuODYuOTA5QTcuNDU2IDcuNDU2IDAgMCAxIDEwIDE3LjVoLS4xMDNhNy41IDcuNSAwIDEgMSA1LjM5Ni0xMi44MTJMMTcuNSA2LjcwM1Y0LjM3NWEuNjI1LjYyNSAwIDAgMSAxLjI1IDBaIi8+PC9zdmc+", De = new Image();
423
+ De.src = Je;
424
424
  function Ke(o, e, t, a, r) {
425
425
  var i = ne, n = i / 2;
426
- o.save(), o.translate(e, t), o.rotate(W.degreesToRadians(r.angle)), o.fillStyle = Qe, o.beginPath(), o.arc(0, 0, n, 0, 2 * Math.PI), o.fill(), o.drawImage(Ne, -16 / 2, -16 / 2, n, n), o.restore();
426
+ o.save(), o.translate(e, t), o.rotate(R.degreesToRadians(r.angle)), o.fillStyle = Qe, o.beginPath(), o.arc(0, 0, n, 0, 2 * Math.PI), o.fill(), o.drawImage(De, -16 / 2, -16 / 2, n, n), o.restore();
427
427
  }
428
428
  var $e = {
429
429
  // Угловые точки
@@ -505,6 +505,9 @@ class qe {
505
505
  sizeY: r.sizeY,
506
506
  offsetX: r.offsetX,
507
507
  offsetY: r.offsetY
508
+ }), a === "mtr" && (e[a].cursorStyle = "grab", e[a].mouseDownHandler = (i, n, s, c) => {
509
+ var u = n.target;
510
+ u.canvas.setCursor("grabbing");
508
511
  });
509
512
  }), ke.ownDefaults.controls = e;
510
513
  }
@@ -863,7 +866,7 @@ class gt {
863
866
  return this._historySuspendCount > 0;
864
867
  }
865
868
  _createDiffPatcher() {
866
- this.diffPatcher = Re({
869
+ this.diffPatcher = _e({
867
870
  objectHash(e) {
868
871
  return [e.id, e.format, e.locked, e.left, e.top, e.width, e.height, e.flipX, e.flipY, e.scaleX, e.scaleY, e.angle, e.opacity].join("-");
869
872
  },
@@ -1001,7 +1004,7 @@ class gt {
1001
1004
  })();
1002
1005
  }
1003
1006
  }
1004
- const vt = 0.1, mt = 2, Mt = 0.1, ft = 90, k = 16, x = 16, L = 4096, E = 4096;
1007
+ const vt = 0.1, mt = 2, Mt = 0.1, ft = 90, k = 16, x = 16, E = 4096, T = 4096;
1005
1008
  function Se(o, e, t, a, r, i, n) {
1006
1009
  try {
1007
1010
  var s = o[i](n), c = s.value;
@@ -1025,7 +1028,7 @@ function O(o) {
1025
1028
  });
1026
1029
  };
1027
1030
  }
1028
- class A {
1031
+ class C {
1029
1032
  /**
1030
1033
  * @param {object} options
1031
1034
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -1063,7 +1066,7 @@ class A {
1063
1066
  transformManager: c,
1064
1067
  historyManager: u,
1065
1068
  errorManager: l
1066
- } = t.editor, d = yield t.getContentType(a), h = A.getFormatFromContentType(d), {
1069
+ } = t.editor, d = yield t.getContentType(a), h = C.getFormatFromContentType(d), {
1067
1070
  acceptContentTypes: g,
1068
1071
  acceptFormats: m
1069
1072
  } = t;
@@ -1111,28 +1114,28 @@ class A {
1111
1114
  }
1112
1115
  }), null;
1113
1116
  if (t._createdBlobUrls.push(f), h === "svg") {
1114
- var D = yield xe(f);
1115
- v = W.groupSVGElements(D.objects, D.options);
1117
+ var w = yield xe(f);
1118
+ v = R.groupSVGElements(w.objects, w.options);
1116
1119
  } else
1117
1120
  v = yield q.fromURL(f, {
1118
1121
  crossOrigin: "anonymous"
1119
1122
  });
1120
1123
  var {
1121
- width: w,
1124
+ width: L,
1122
1125
  height: y
1123
1126
  } = v;
1124
- if (y > E || w > L) {
1127
+ if (y > T || L > E) {
1125
1128
  var p = yield t.resizeImageToBoundaries(v._element.src, "max"), B = URL.createObjectURL(p);
1126
1129
  t._createdBlobUrls.push(B), v = yield q.fromURL(B, {
1127
1130
  crossOrigin: "anonymous"
1128
1131
  });
1129
- } else if (y < x || w < k) {
1130
- var _ = yield t.resizeImageToBoundaries(v._element.src, "min"), Z = URL.createObjectURL(_);
1132
+ } else if (y < x || L < k) {
1133
+ var W = yield t.resizeImageToBoundaries(v._element.src, "min"), Z = URL.createObjectURL(W);
1131
1134
  t._createdBlobUrls.push(Z), v = yield q.fromURL(Z, {
1132
1135
  crossOrigin: "anonymous"
1133
1136
  });
1134
1137
  }
1135
- if (v.set("id", "".concat(v.type, "-").concat(C())), v.set("format", h), r === "scale-montage")
1138
+ if (v.set("id", "".concat(v.type, "-").concat(D())), v.set("format", h), r === "scale-montage")
1136
1139
  t.editor.canvasManager.scaleMontageAreaToImage({
1137
1140
  object: v,
1138
1141
  withoutSave: !0
@@ -1149,7 +1152,7 @@ class A {
1149
1152
  object: v,
1150
1153
  type: "contain",
1151
1154
  withoutSave: !0
1152
- }) : r === "image-cover" && (w > F || y > z) && c.fitObject({
1155
+ }) : r === "image-cover" && (L > F || y > z) && c.fitObject({
1153
1156
  object: v,
1154
1157
  type: "cover",
1155
1158
  withoutSave: !0
@@ -1193,13 +1196,13 @@ class A {
1193
1196
  resizeImageToBoundaries(e) {
1194
1197
  var t = arguments, a = this;
1195
1198
  return O(function* () {
1196
- var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", i = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров c сохранением пропорций: ".concat(L, "x").concat(E);
1199
+ var r = t.length > 1 && t[1] !== void 0 ? t[1] : "max", i = "Размер изображения больше максимального размера канваса, поэтому оно будет уменьшено до максимальных размеров c сохранением пропорций: ".concat(E, "x").concat(T);
1197
1200
  r === "min" && (i = "Размер изображения меньше минимального размера канваса, поэтому оно будет увеличено до минимальных размеров c сохранением пропорций: ".concat(k, "x").concat(x));
1198
1201
  var n = {
1199
1202
  dataURL: e,
1200
1203
  sizeType: r,
1201
- maxWidth: L,
1202
- maxHeight: E,
1204
+ maxWidth: E,
1205
+ maxHeight: T,
1203
1206
  minWidth: k,
1204
1207
  minHeight: x
1205
1208
  };
@@ -1237,7 +1240,7 @@ class A {
1237
1240
  workerManager: u
1238
1241
  } = t.editor;
1239
1242
  try {
1240
- var l = r === "application/pdf", d = l ? "image/jpg" : r, h = A.getFormatFromContentType(d);
1243
+ var l = r === "application/pdf", d = l ? "image/jpg" : r, h = C.getFormatFromContentType(d);
1241
1244
  c.setCoords();
1242
1245
  var {
1243
1246
  left: g,
@@ -1255,14 +1258,14 @@ class A {
1255
1258
  }), v.renderAll();
1256
1259
  var N = v.getObjects().filter((b) => b.format).every((b) => b.format === "svg");
1257
1260
  if (h === "svg" && N) {
1258
- var D = v.toSVG();
1261
+ var w = v.toSVG();
1259
1262
  v.dispose();
1260
- var w = A._exportSVGStringAsFile(D, {
1263
+ var L = C._exportSVGStringAsFile(w, {
1261
1264
  exportAsBase64: i,
1262
1265
  exportAsBlob: n,
1263
1266
  fileName: a
1264
1267
  }), y = {
1265
- image: w,
1268
+ image: L,
1266
1269
  format: "svg",
1267
1270
  contentType: "image/svg+xml",
1268
1271
  fileName: a.replace(/\.[^/.]+$/, ".svg")
@@ -1281,11 +1284,11 @@ class A {
1281
1284
  };
1282
1285
  return s.fire("editor:canvas-exported", B), B;
1283
1286
  }
1284
- var _ = yield createImageBitmap(p), Z = yield u.post("toDataURL", {
1287
+ var W = yield createImageBitmap(p), Z = yield u.post("toDataURL", {
1285
1288
  format: h,
1286
1289
  quality: 1,
1287
- bitmap: _
1288
- }, [_]);
1290
+ bitmap: W
1291
+ }, [W]);
1289
1292
  if (l) {
1290
1293
  var F = 0.264583, z = M * F, U = f * F, V = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, Y = new V({
1291
1294
  orientation: z > U ? "landscape" : "portrait",
@@ -1293,8 +1296,8 @@ class A {
1293
1296
  format: [z, U]
1294
1297
  });
1295
1298
  if (Y.addImage(Z, "JPG", 0, 0, z, U), i) {
1296
- var De = Y.output("datauristring"), de = {
1297
- image: De,
1299
+ var Ne = Y.output("datauristring"), de = {
1300
+ image: Ne,
1298
1301
  format: "pdf",
1299
1302
  contentType: "application/pdf",
1300
1303
  fileName: a
@@ -1383,7 +1386,7 @@ class A {
1383
1386
  }
1384
1387
  }), "";
1385
1388
  try {
1386
- var d = A.getFormatFromContentType(i);
1389
+ var d = C.getFormatFromContentType(i);
1387
1390
  if (d === "svg") {
1388
1391
  var h = l.toSVG(), g = t._exportSVGStringAsFile(h, {
1389
1392
  exportAsBase64: n,
@@ -1414,18 +1417,18 @@ class A {
1414
1417
  S.toBlob(p);
1415
1418
  });
1416
1419
  if (s) {
1417
- var D = {
1420
+ var w = {
1418
1421
  image: N,
1419
1422
  format: d,
1420
1423
  contentType: i,
1421
1424
  fileName: r
1422
1425
  };
1423
- return c.fire("editor:object-exported", D), D;
1426
+ return c.fire("editor:object-exported", w), w;
1424
1427
  }
1425
- var w = new File([N], r, {
1428
+ var L = new File([N], r, {
1426
1429
  type: i
1427
1430
  }), y = {
1428
- image: w,
1431
+ image: L,
1429
1432
  format: d,
1430
1433
  contentType: i,
1431
1434
  fileName: r
@@ -1482,7 +1485,7 @@ class A {
1482
1485
  * @returns {string[]} - массив допустимых форматов изображений
1483
1486
  */
1484
1487
  getAllowedFormatsFromContentTypes() {
1485
- return this.acceptContentTypes.map((e) => A.getFormatFromContentType(e)).filter((e) => e);
1488
+ return this.acceptContentTypes.map((e) => C.getFormatFromContentType(e)).filter((e) => e);
1486
1489
  }
1487
1490
  /**
1488
1491
  * Извлекает чистый формат (subtype) из contentType,
@@ -1551,7 +1554,7 @@ class A {
1551
1554
  try {
1552
1555
  var t, a = new URL(e), r = (t = a.pathname.split(".").pop()) === null || t === void 0 ? void 0 : t.toLowerCase(), i = {};
1553
1556
  return this.acceptContentTypes.forEach((n) => {
1554
- var s = A.getFormatFromContentType(n);
1557
+ var s = C.getFormatFromContentType(n);
1555
1558
  s && (i[s] = n);
1556
1559
  }), i[r] || "application/octet-stream";
1557
1560
  } catch (n) {
@@ -1615,7 +1618,7 @@ class jt {
1615
1618
  } = this.editor, {
1616
1619
  width: c,
1617
1620
  height: u
1618
- } = n, l = Number(Math.max(Math.min(e, L), k));
1621
+ } = n, l = Number(Math.max(Math.min(e, E), k));
1619
1622
  if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(l), n.set({
1620
1623
  width: l
1621
1624
  }), i.clipPath.set({
@@ -1659,7 +1662,7 @@ class jt {
1659
1662
  } = this.editor, {
1660
1663
  width: c,
1661
1664
  height: u
1662
- } = n, l = Number(Math.max(Math.min(e, E), x));
1665
+ } = n, l = Number(Math.max(Math.min(e, T), x));
1663
1666
  if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(l), n.set({
1664
1667
  height: l
1665
1668
  }), i.clipPath.set({
@@ -1721,7 +1724,7 @@ class jt {
1721
1724
  }
1722
1725
  setCanvasBackstoreWidth(e) {
1723
1726
  if (!(!e || typeof e != "number")) {
1724
- var t = Math.max(Math.min(e, L), k);
1727
+ var t = Math.max(Math.min(e, E), k);
1725
1728
  this.editor.canvas.setDimensions({
1726
1729
  width: t
1727
1730
  }, {
@@ -1731,7 +1734,7 @@ class jt {
1731
1734
  }
1732
1735
  setCanvasBackstoreHeight(e) {
1733
1736
  if (!(!e || typeof e != "number")) {
1734
- var t = Math.max(Math.min(e, E), x);
1737
+ var t = Math.max(Math.min(e, T), x);
1735
1738
  this.editor.canvas.setDimensions({
1736
1739
  height: t
1737
1740
  }, {
@@ -1742,7 +1745,7 @@ class jt {
1742
1745
  adaptCanvasToContainer() {
1743
1746
  var {
1744
1747
  canvas: e
1745
- } = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, i = Math.max(Math.min(a, L), k), n = Math.max(Math.min(r, E), x);
1748
+ } = this.editor, t = e.editorContainer, a = t.clientWidth, r = t.clientHeight, i = Math.max(Math.min(a, E), k), n = Math.max(Math.min(r, T), x);
1746
1749
  console.log("adaptCanvasToContainer newWidth", i), console.log("adaptCanvasToContainer newHeight", n), e.setDimensions({
1747
1750
  width: i,
1748
1751
  height: n
@@ -1925,7 +1928,7 @@ class jt {
1925
1928
  var {
1926
1929
  width: l,
1927
1930
  height: d
1928
- } = u, h = Math.min(l, L), g = Math.min(d, E);
1931
+ } = u, h = Math.min(l, E), g = Math.min(d, T);
1929
1932
  if (t) {
1930
1933
  var {
1931
1934
  width: m,
@@ -2200,7 +2203,7 @@ class yt {
2200
2203
  });
2201
2204
  h.scale(g), i.centerObject(h);
2202
2205
  });
2203
- var l = new R(u, {
2206
+ var l = new _(u, {
2204
2207
  canvas: i
2205
2208
  });
2206
2209
  i.setActiveObject(l);
@@ -2545,7 +2548,7 @@ class bt {
2545
2548
  */
2546
2549
  addRectangle(l = {}, { withoutSelection: c, withoutAdding: u } = {}) {
2547
2550
  var d = l, {
2548
- id: e = `rect-${C()}`,
2551
+ id: e = `rect-${D()}`,
2549
2552
  left: t,
2550
2553
  top: a,
2551
2554
  width: r = 100,
@@ -2559,7 +2562,7 @@ class bt {
2559
2562
  "height",
2560
2563
  "fill"
2561
2564
  ]);
2562
- const { canvas: h } = this.editor, g = new Ze(T({
2565
+ const { canvas: h } = this.editor, g = new Ze(A({
2563
2566
  id: e,
2564
2567
  left: t,
2565
2568
  top: a,
@@ -2587,7 +2590,7 @@ class bt {
2587
2590
  */
2588
2591
  addCircle(u = {}, { withoutSelection: s, withoutAdding: c } = {}) {
2589
2592
  var l = u, {
2590
- id: e = `circle-${C()}`,
2593
+ id: e = `circle-${D()}`,
2591
2594
  left: t,
2592
2595
  top: a,
2593
2596
  radius: r = 50,
@@ -2599,7 +2602,7 @@ class bt {
2599
2602
  "radius",
2600
2603
  "fill"
2601
2604
  ]);
2602
- const { canvas: d } = this.editor, h = new ze(T({
2605
+ const { canvas: d } = this.editor, h = new ze(A({
2603
2606
  id: e,
2604
2607
  left: t,
2605
2608
  top: a,
@@ -2627,7 +2630,7 @@ class bt {
2627
2630
  */
2628
2631
  addTriangle(l = {}, { withoutSelection: c, withoutAdding: u } = {}) {
2629
2632
  var d = l, {
2630
- id: e = `triangle-${C()}`,
2633
+ id: e = `triangle-${D()}`,
2631
2634
  left: t,
2632
2635
  top: a,
2633
2636
  width: r = 100,
@@ -2641,7 +2644,7 @@ class bt {
2641
2644
  "height",
2642
2645
  "fill"
2643
2646
  ]);
2644
- const { canvas: h } = this.editor, g = new Ue(T({
2647
+ const { canvas: h } = this.editor, g = new Ue(A({
2645
2648
  id: e,
2646
2649
  left: t,
2647
2650
  top: a,
@@ -2743,11 +2746,11 @@ class It {
2743
2746
  if (e.clipboard) {
2744
2747
  var a = yield e.clipboard.clone(["format"]);
2745
2748
  t.discardActiveObject(), a.set({
2746
- id: "".concat(a.type, "-").concat(C()),
2749
+ id: "".concat(a.type, "-").concat(D()),
2747
2750
  left: a.left + 10,
2748
2751
  top: a.top + 10,
2749
2752
  evented: !0
2750
- }), a instanceof R ? (a.canvas = t, a.forEachObject((r) => {
2753
+ }), a instanceof _ ? (a.canvas = t, a.forEachObject((r) => {
2751
2754
  t.add(r);
2752
2755
  })) : t.add(a), t.setActiveObject(a), t.requestRenderAll(), t.fire("editor:object-pasted", {
2753
2756
  object: a
@@ -2869,7 +2872,7 @@ class At {
2869
2872
  var i = e || a.getActiveObject();
2870
2873
  if (i && i.type === "activeselection") {
2871
2874
  var n = i.getObjects(), s = new Ye(n);
2872
- n.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(C())), a.add(s), a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped");
2875
+ n.forEach((c) => a.remove(c)), s.set("id", "".concat(s.type, "-").concat(D())), a.add(s), a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-grouped");
2873
2876
  }
2874
2877
  }
2875
2878
  /**
@@ -2892,7 +2895,7 @@ class At {
2892
2895
  if (!(!i || i.type !== "group")) {
2893
2896
  var n = i.removeAll();
2894
2897
  a.remove(i), n.forEach((c) => a.add(c));
2895
- var s = new R(n, {
2898
+ var s = new _(n, {
2896
2899
  canvas: a
2897
2900
  });
2898
2901
  a.setActiveObject(s), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-ungrouped");
@@ -2921,7 +2924,7 @@ class Ct {
2921
2924
  objectLockManager: a
2922
2925
  } = this.editor;
2923
2926
  e.discardActiveObject();
2924
- var r = t.getObjects(), i = r.some((s) => s.locked), n = r.length > 1 ? new R(t.getObjects(), {
2927
+ var r = t.getObjects(), i = r.some((s) => s.locked), n = r.length > 1 ? new _(t.getObjects(), {
2925
2928
  canvas: e
2926
2929
  }) : r[0];
2927
2930
  i && a.lockObject({
@@ -2933,7 +2936,7 @@ class Ct {
2933
2936
  });
2934
2937
  }
2935
2938
  }
2936
- class Nt {
2939
+ class Dt {
2937
2940
  /**
2938
2941
  * @param {object} options
2939
2942
  * @param {ImageEditor} options.editor - экземпляр редактора с доступом к canvas
@@ -2969,7 +2972,7 @@ class Nt {
2969
2972
  }), a.discardActiveObject(), a.renderAll(), r.resumeHistory(), t || r.saveState(), a.fire("editor:objects-deleted"));
2970
2973
  }
2971
2974
  }
2972
- var Dt = {
2975
+ var Nt = {
2973
2976
  IMAGE_MANAGER: {
2974
2977
  /**
2975
2978
  * Некорректный Content-Type изображения
@@ -2998,86 +3001,74 @@ var Dt = {
2998
3001
  }
2999
3002
  };
3000
3003
  class K {
3001
- constructor(e) {
3002
- var {
3003
- editor: t
3004
- } = e;
3005
- this.editor = t;
3004
+ constructor({ editor: e }) {
3005
+ this._buffer = [], this.editor = e;
3006
+ }
3007
+ get buffer() {
3008
+ return this._buffer;
3009
+ }
3010
+ cleanBuffer() {
3011
+ this._buffer.length = 0;
3006
3012
  }
3007
3013
  /**
3008
3014
  * Эмитит событие ошибки через fabricjs
3009
3015
  * @param {object} options
3010
- * @param {string} [origin='ImageEditor'] — источник ошибки (по умолчанию 'ImageEditor')
3011
- * @param {string} [method='Unknown Method'] — метод, вызвавший ошибку (по умолчанию 'Unknown Method')
3012
- * @param {string} code — код ошибки (из errorCodes)
3013
- * @param {object} [data] — доп. данные (опционально)
3014
- * @param {string} [message] — текст ошибки (опционально, если не передан, то используется код ошибки)
3016
+ * @param {string} [options.origin='ImageEditor'] — источник ошибки (по умолчанию 'ImageEditor')
3017
+ * @param {string} [options.method='Unknown Method'] — метод, вызвавший ошибку (по умолчанию 'Unknown Method')
3018
+ * @param {string} options.code — код ошибки (из errorCodes)
3019
+ * @param {object} [options.data] — доп. данные (опционально)
3020
+ * @param {string} [options.message] — текст ошибки (опционально, если не передан, то используется код ошибки)
3015
3021
  * @fires editor:error
3016
3022
  */
3017
- emitError(e) {
3018
- var {
3019
- origin: t = "ImageEditor",
3020
- method: a = "Unknown Method",
3021
- code: r,
3022
- data: i,
3023
- message: n
3024
- } = e;
3025
- if (!K.isValidErrorCode(r)) {
3026
- console.warn("Неизвестный код ошибки: ", {
3027
- code: r,
3028
- origin: t,
3029
- method: a
3030
- });
3023
+ emitError({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, data: r, message: i }) {
3024
+ if (!K.isValidErrorCode(a)) {
3025
+ console.warn("Неизвестный код ошибки: ", { code: a, origin: e, method: t });
3031
3026
  return;
3032
3027
  }
3033
- if (r) {
3034
- var s = n || r;
3035
- console.error("".concat(t, ". ").concat(a, ". ").concat(r, ". ").concat(s), i), this.editor.canvas.fire("editor:error", {
3036
- code: r,
3037
- origin: t,
3038
- method: a,
3039
- message: s,
3040
- data: i
3041
- });
3042
- }
3028
+ if (!a) return;
3029
+ const n = i || a;
3030
+ console.error(`${e}. ${t}. ${a}. ${n}`, r);
3031
+ const s = {
3032
+ code: a,
3033
+ origin: e,
3034
+ method: t,
3035
+ message: n,
3036
+ data: r
3037
+ };
3038
+ this._buffer.push(A({
3039
+ type: "editor:error"
3040
+ }, s)), this.editor.canvas.fire("editor:error", s);
3043
3041
  }
3044
3042
  /**
3045
3043
  * Эмитит предупреждение через fabricjs
3046
3044
  * @param {object} options
3047
- * @param {string} [origin='ImageEditor'] — источник предупреждения (по умолчанию 'ImageEditor')
3048
- * @param {string} [method='Unknown Method'] — метод, вызвавший предупреждение (по умолчанию 'Unknown Method')
3049
- * @param {string} code — код предупреждения (из errorCodes)
3050
- * @param {object} [data] — доп. данные (опционально)
3051
- * @param {string} [message] — текст предупреждения (опционально, если не передан, то используется код предупреждения)
3045
+ * @param {string} [options.origin='ImageEditor'] — источник предупреждения (по умолчанию 'ImageEditor')
3046
+ * @param {string} [options.method='Unknown Method'] — метод, вызвавший предупреждение (по умолчанию 'Unknown Method')
3047
+ * @param {string} options.code — код предупреждения (из errorCodes)
3048
+ * @param {object} [options.data] — доп. данные (опционально)
3049
+ * @param {string} [options.message] — текст предупреждения (опционально, если не передан, то используется код предупреждения)
3052
3050
  * @fires editor:warning
3053
3051
  */
3054
- emitWarning(e) {
3055
- var {
3056
- origin: t = "ImageEditor",
3057
- method: a = "Unknown Method",
3058
- code: r,
3059
- message: i,
3060
- data: n
3061
- } = e;
3062
- if (!K.isValidErrorCode(r)) {
3063
- console.warn("Неизвестный код ошибки: ", {
3064
- code: r,
3065
- origin: t,
3066
- method: a
3067
- });
3052
+ emitWarning({ origin: e = "ImageEditor", method: t = "Unknown Method", code: a, message: r, data: i }) {
3053
+ if (!K.isValidErrorCode(a)) {
3054
+ console.warn("Неизвестный код предупреждения: ", { code: a, origin: e, method: t });
3068
3055
  return;
3069
3056
  }
3070
- var s = i || r;
3071
- console.warn("".concat(t, ". ").concat(a, ". ").concat(r, ". ").concat(s), n), this.editor.canvas.fire("editor:warning", {
3072
- code: r,
3073
- origin: t,
3074
- method: a,
3075
- message: i,
3076
- data: n
3077
- });
3057
+ const n = r || a;
3058
+ console.warn(`${e}. ${t}. ${a}. ${n}`, i);
3059
+ const s = {
3060
+ code: a,
3061
+ origin: e,
3062
+ method: t,
3063
+ message: n,
3064
+ data: i
3065
+ };
3066
+ this._buffer.push(A({
3067
+ type: "editor:warning"
3068
+ }, s)), this.editor.canvas.fire("editor:warning", s);
3078
3069
  }
3079
3070
  static isValidErrorCode(e) {
3080
- return e ? Object.values(Dt).some((t) => Object.values(t).includes(e)) : !1;
3071
+ return e ? Object.values(Nt).some((t) => Object.values(t).includes(e)) : !1;
3081
3072
  }
3082
3073
  }
3083
3074
  class ue {
@@ -3089,7 +3080,7 @@ class ue {
3089
3080
  constructor(e, t) {
3090
3081
  this.options = t;
3091
3082
  const { defaultScale: a, minZoom: r, maxZoom: i } = t;
3092
- this.containerId = e, this.editorId = `${e}-${C()}`, this.clipboard = null, this.defaultZoom = a, this.minZoom = r || vt, this.maxZoom = i || mt, this.init();
3083
+ this.containerId = e, this.editorId = `${e}-${D()}`, this.clipboard = null, this.defaultZoom = a, this.minZoom = r || vt, this.maxZoom = i || mt, this.init();
3093
3084
  }
3094
3085
  init() {
3095
3086
  return $(this, null, function* () {
@@ -3105,7 +3096,7 @@ class ue {
3105
3096
  scaleType: u,
3106
3097
  _onReadyCallback: l
3107
3098
  } = this.options;
3108
- if (qe.apply(), this.canvas = new He(this.containerId, this.options), this.moduleLoader = new _e(), this.workerManager = new Fe(), this.errorManager = new K({ editor: this }), this.historyManager = new gt({ editor: this }), this.toolbar = new ht({ editor: this }), this.transformManager = new yt({ editor: this }), this.canvasManager = new jt({ editor: this }), this.imageManager = new A({ editor: this }), this.layerManager = new J({ editor: this }), this.shapeManager = new bt({ editor: this }), this.interactionBlocker = new pt({ editor: this }), this.clipboardManager = new It({ editor: this }), this.objectLockManager = new St({ editor: this }), this.groupingManager = new At({ editor: this }), this.selectionManager = new Ct({ editor: this }), this.deletionManager = new Nt({ editor: this }), this._createMontageArea(), this._createClippingArea(), this.listeners = new P({ editor: this, options: this.options }), this.canvasManager.setEditorContainerWidth(e), this.canvasManager.setEditorContainerHeight(t), this.canvasManager.setCanvasWrapperWidth(a), this.canvasManager.setCanvasWrapperHeight(r), this.canvasManager.setCanvasCSSWidth(i), this.canvasManager.setCanvasCSSHeight(n), s != null && s.source) {
3099
+ if (qe.apply(), this.canvas = new He(this.containerId, this.options), this.moduleLoader = new We(), this.workerManager = new Fe(), this.errorManager = new K({ editor: this }), this.historyManager = new gt({ editor: this }), this.toolbar = new ht({ editor: this }), this.transformManager = new yt({ editor: this }), this.canvasManager = new jt({ editor: this }), this.imageManager = new C({ editor: this }), this.layerManager = new J({ editor: this }), this.shapeManager = new bt({ editor: this }), this.interactionBlocker = new pt({ editor: this }), this.clipboardManager = new It({ editor: this }), this.objectLockManager = new St({ editor: this }), this.groupingManager = new At({ editor: this }), this.selectionManager = new Ct({ editor: this }), this.deletionManager = new Dt({ editor: this }), this._createMontageArea(), this._createClippingArea(), this.listeners = new P({ editor: this, options: this.options }), this.canvasManager.setEditorContainerWidth(e), this.canvasManager.setEditorContainerHeight(t), this.canvasManager.setCanvasWrapperWidth(a), this.canvasManager.setCanvasWrapperHeight(r), this.canvasManager.setCanvasCSSWidth(i), this.canvasManager.setCanvasCSSHeight(n), s != null && s.source) {
3109
3100
  const {
3110
3101
  source: d,
3111
3102
  scale: h = `image-${u}`,
@@ -3159,7 +3150,7 @@ class ue {
3159
3150
  }, { withoutSelection: !0, withoutAdding: !0 });
3160
3151
  }
3161
3152
  destroy() {
3162
- this.listeners.destroy(), this.toolbar.destroy(), this.canvas.dispose(), this.workerManager.worker.terminate(), this.imageManager.revokeBlobUrls();
3153
+ this.listeners.destroy(), this.toolbar.destroy(), this.canvas.dispose(), this.workerManager.worker.terminate(), this.imageManager.revokeBlobUrls(), this.errorManager.cleanBuffer();
3163
3154
  }
3164
3155
  /**
3165
3156
  * Создает паттерн мозаики.
@@ -3265,7 +3256,7 @@ const wt = {
3265
3256
  resetObjectFitByDoubleClick: !0
3266
3257
  };
3267
3258
  function Ot(o, e = {}) {
3268
- const t = T(T({}, wt), e), a = document.getElementById(o);
3259
+ const t = A(A({}, wt), e), a = document.getElementById(o);
3269
3260
  if (!a)
3270
3261
  return Promise.reject(new Error(`Контейнер с ID "${o}" не найден.`));
3271
3262
  const r = document.createElement("canvas");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anu3ev/fabric-image-editor",
3
- "version": "0.1.35",
3
+ "version": "0.1.36",
4
4
  "description": "JavaScript image editor built on FabricJS, allowing you to create instances with an integrated montage area and providing an API to modify and manage state.",
5
5
  "module": "dist/main.js",
6
6
  "files": [
@@ -10,6 +10,7 @@
10
10
  "scripts": {
11
11
  "dev": "vite",
12
12
  "dev:build": "vite build --watch --mode development --config vite.config.dev.js",
13
+ "prebuild": "npm install",
13
14
  "build": "vite build --config vite.config.prod.js",
14
15
  "preview": "vite preview",
15
16
  "lint": "eslint ."