@anu3ev/fabric-image-editor 0.1.8 → 0.1.9

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 +117 -100
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -65,9 +65,9 @@ class B {
65
65
  undoRedoByHotKeys: s,
66
66
  selectAllByHotkey: c,
67
67
  deleteObjectsByHotkey: u,
68
- resetObjectFitByDoubleClick: h
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)), a && this.canvas.on("mouse:wheel", this.handleMouseWheelZoomBound), r && (this.canvas.on("selection:created", this.handleBringToFrontBound), this.canvas.on("selection:updated", this.handleBringToFrontBound)), h && this.canvas.on("mouse:dblclick", this.handleResetObjectFitBound), e && window.addEventListener("resize", this.handleAdaptCanvasToContainerBound, {
70
+ t && (this.canvas.on("mouse:down", this.handleCanvasDragStartBound), this.canvas.on("mouse:move", this.handleCanvasDraggingBound), this.canvas.on("mouse:up", this.handleCanvasDragEndBound)), 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, {
71
71
  capture: !0
72
72
  }), n && document.addEventListener("keydown", this.handleCopyEventBound, {
73
73
  capture: !0
@@ -151,7 +151,7 @@ class B {
151
151
  }), this.editor.canvasManager.setResolutionHeight(t, {
152
152
  adaptCanvasToContainer: !0,
153
153
  withoutSave: !0
154
- }), this.editor.canvasManager.centerMontageArea(), this.editor.transformManager.resetObjects();
154
+ }), this.editor.canvasManager.centerMontageArea();
155
155
  }
156
156
  /**
157
157
  * Обработчик для Ctrl+C (копирование).
@@ -186,16 +186,16 @@ class B {
186
186
  var o = n.getAsFile();
187
187
  if (!o) return;
188
188
  var s = new FileReader();
189
- s.onload = (l) => {
189
+ s.onload = (h) => {
190
190
  this.editor.imageManager.importImage({
191
- source: l.target.result
191
+ source: h.target.result
192
192
  });
193
193
  }, s.readAsDataURL(o);
194
194
  return;
195
195
  }
196
196
  var c = a.getData("text/html");
197
197
  if (c) {
198
- var u = new DOMParser(), h = u.parseFromString(c, "text/html"), d = h.querySelector("img");
198
+ var u = new DOMParser(), l = u.parseFromString(c, "text/html"), d = l.querySelector("img");
199
199
  if (d != null && d.src) {
200
200
  this.editor.imageManager.importImage({
201
201
  source: d.src
@@ -758,11 +758,11 @@ class lt {
758
758
  } = r, {
759
759
  icons: c,
760
760
  btnStyle: u,
761
- handlers: h
761
+ handlers: l
762
762
  } = t.config, d = document.createElement("button");
763
763
  d.innerHTML = c[s] ? '<img src="'.concat(c[s], '" title="').concat(o, '" />') : o, Object.assign(d.style, u), d.onclick = () => {
764
- var l;
765
- return (l = h[s]) === null || l === void 0 ? void 0 : l.call(h, t.editor);
764
+ var h;
765
+ return (h = l[s]) === null || h === void 0 ? void 0 : h.call(l, t.editor);
766
766
  }, t.el.appendChild(d);
767
767
  };
768
768
  for (var r of e)
@@ -839,10 +839,10 @@ class lt {
839
839
  x: c
840
840
  } = e.getCenterPoint(), {
841
841
  top: u,
842
- height: h
843
- } = e.getBoundingRect(!1, !0), d = c * n + o, l = d - t.offsetWidth / 2, g = (u + h) * n + s + a.offsetTop;
842
+ height: l
843
+ } = e.getBoundingRect(!1, !0), d = c * n + o, h = d - t.offsetWidth / 2, g = (u + l) * n + s + a.offsetTop;
844
844
  Object.assign(t.style, {
845
- left: "".concat(l, "px"),
845
+ left: "".concat(h, "px"),
846
846
  top: "".concat(g, "px"),
847
847
  display: "flex"
848
848
  });
@@ -1100,11 +1100,11 @@ class L {
1100
1100
  canvas: s,
1101
1101
  montageArea: c,
1102
1102
  transformManager: u,
1103
- historyManager: h
1103
+ historyManager: l
1104
1104
  } = t.editor;
1105
- h.suspendHistory();
1105
+ l.suspendHistory();
1106
1106
  try {
1107
- var d, l;
1107
+ var d, h;
1108
1108
  if (a instanceof File)
1109
1109
  d = URL.createObjectURL(a);
1110
1110
  else if (typeof a == "string") {
@@ -1121,24 +1121,24 @@ class L {
1121
1121
  var v = L.getFormatFromContentType(o);
1122
1122
  if (v === "svg") {
1123
1123
  var j = yield ke(d);
1124
- l = z.groupSVGElements(j.objects, j.options);
1124
+ h = z.groupSVGElements(j.objects, j.options);
1125
1125
  } else
1126
- l = yield de.fromURL(d, {
1126
+ h = yield de.fromURL(d, {
1127
1127
  crossOrigin: "anonymous"
1128
1128
  });
1129
1129
  var {
1130
1130
  width: m,
1131
1131
  height: b
1132
- } = l;
1132
+ } = h;
1133
1133
  if (b > C || m > D) {
1134
- var y = yield t.resizeImageToBoundaries(l._element.src, "max"), S = URL.createObjectURL(y);
1135
- t._createdBlobUrls.push(S), l = yield de.fromURL(S, {
1134
+ var y = yield t.resizeImageToBoundaries(h._element.src, "max"), S = URL.createObjectURL(y);
1135
+ t._createdBlobUrls.push(S), h = yield de.fromURL(S, {
1136
1136
  crossOrigin: "anonymous"
1137
1137
  });
1138
1138
  }
1139
- if (l.set("id", "".concat(l.type, "-").concat(I())), l.set("format", v), r === "scale-montage")
1139
+ if (h.set("id", "".concat(h.type, "-").concat(I())), h.set("format", v), r === "scale-montage")
1140
1140
  t.editor.canvasManager.scaleMontageAreaToImage({
1141
- object: l,
1141
+ object: h,
1142
1142
  withoutSave: !0
1143
1143
  });
1144
1144
  else {
@@ -1147,24 +1147,24 @@ class L {
1147
1147
  height: A
1148
1148
  } = c, w = Y({
1149
1149
  montageArea: c,
1150
- imageObject: l,
1150
+ imageObject: h,
1151
1151
  scaleType: r
1152
1152
  });
1153
1153
  r === "image-contain" && w < 1 ? u.fitObject({
1154
- object: l,
1154
+ object: h,
1155
1155
  type: "contain",
1156
1156
  withoutSave: !0
1157
1157
  }) : r === "image-cover" && (m > O || b > A) && u.fitObject({
1158
- object: l,
1158
+ object: h,
1159
1159
  type: "cover",
1160
1160
  withoutSave: !0
1161
1161
  });
1162
1162
  }
1163
- s.add(l), s.centerObject(l), s.setActiveObject(l), s.renderAll(), h.resumeHistory(), n || h.saveState();
1163
+ s.add(h), s.centerObject(h), s.setActiveObject(h), s.renderAll(), l.resumeHistory(), n || l.saveState();
1164
1164
  } catch (T) {
1165
1165
  console.error("importImage. Ошибка импорта изображения: ", T), s.fire("editor:error", {
1166
1166
  message: "Ошибка импорта изображения: ".concat(T.message)
1167
- }), h.resumeHistory();
1167
+ }), l.resumeHistory();
1168
1168
  }
1169
1169
  }
1170
1170
  })();
@@ -1216,7 +1216,7 @@ class L {
1216
1216
  canvas: s,
1217
1217
  montageArea: c,
1218
1218
  workerManager: u
1219
- } = t.editor, h = r === "application/pdf", d = h ? "image/jpg" : r, l = L.getFormatFromContentType(d);
1219
+ } = t.editor, l = r === "application/pdf", d = l ? "image/jpg" : r, h = L.getFormatFromContentType(d);
1220
1220
  c.setCoords();
1221
1221
  var {
1222
1222
  left: g,
@@ -1233,7 +1233,7 @@ class L {
1233
1233
  backstoreOnly: !0
1234
1234
  }), m.renderAll();
1235
1235
  var y = m.getObjects().filter((N) => N.format).every((N) => N.format === "svg");
1236
- if (l === "svg" && y) {
1236
+ if (h === "svg" && y) {
1237
1237
  var S = m.toSVG();
1238
1238
  m.dispose();
1239
1239
  var O = L._exportSVGStringAsFile(S, {
@@ -1254,18 +1254,18 @@ class L {
1254
1254
  if (m.dispose(), o) {
1255
1255
  var T = {
1256
1256
  image: w,
1257
- format: l,
1257
+ format: h,
1258
1258
  contentType: d,
1259
1259
  fileName: a
1260
1260
  };
1261
1261
  return s.fire("editor:canvas-exported", T), T;
1262
1262
  }
1263
1263
  var ae = yield createImageBitmap(w), re = yield u.post("toDataURL", {
1264
- format: l,
1264
+ format: h,
1265
1265
  quality: 1,
1266
1266
  bitmap: ae
1267
1267
  }, [ae]);
1268
- if (h) {
1268
+ if (l) {
1269
1269
  var ne = 0.264583, W = v * ne, _ = j * ne, we = (yield t.editor.moduleLoader.loadModule("jspdf")).jsPDF, R = new we({
1270
1270
  orientation: W > _ ? "landscape" : "portrait",
1271
1271
  unit: "mm",
@@ -1293,17 +1293,17 @@ class L {
1293
1293
  if (n) {
1294
1294
  var se = {
1295
1295
  image: re,
1296
- format: l,
1296
+ format: h,
1297
1297
  contentType: d,
1298
1298
  fileName: a
1299
1299
  };
1300
1300
  return s.fire("editor:canvas-exported", se), se;
1301
1301
  }
1302
- var ce = l === "svg" && !y ? a.replace(/\.[^/.]+$/, ".png") : a, Le = new File([w], ce, {
1302
+ var ce = h === "svg" && !y ? a.replace(/\.[^/.]+$/, ".png") : a, Le = new File([w], ce, {
1303
1303
  type: d
1304
1304
  }), ue = {
1305
1305
  image: Le,
1306
- format: l,
1306
+ format: h,
1307
1307
  contentType: d,
1308
1308
  fileName: ce
1309
1309
  };
@@ -1333,14 +1333,14 @@ class L {
1333
1333
  } = e.length > 0 && e[0] !== void 0 ? e[0] : {}, {
1334
1334
  canvas: c,
1335
1335
  workerManager: u
1336
- } = t.editor, h = a || c.getActiveObject();
1337
- if (!h)
1336
+ } = t.editor, l = a || c.getActiveObject();
1337
+ if (!l)
1338
1338
  return console.error("exportObjectAsDataURL. Не выбран объект"), c.fire("editor:error", {
1339
1339
  message: "Не выбран объект для экспорта"
1340
1340
  }), "";
1341
1341
  var d = L.getFormatFromContentType(n);
1342
1342
  if (d === "svg") {
1343
- var l = h.toSVG(), g = t._exportSVGStringAsFile(l, {
1343
+ var h = l.toSVG(), g = t._exportSVGStringAsFile(h, {
1344
1344
  exportAsBase64: o,
1345
1345
  exportAsBlob: s,
1346
1346
  fileName: r
@@ -1353,7 +1353,7 @@ class L {
1353
1353
  return c.fire("editor:object-exported", f), f;
1354
1354
  }
1355
1355
  if (o) {
1356
- var v = yield createImageBitmap(h._element), j = yield u.post("toDataURL", {
1356
+ var v = yield createImageBitmap(l._element), j = yield u.post("toDataURL", {
1357
1357
  format: d,
1358
1358
  quality: 1,
1359
1359
  bitmap: v
@@ -1365,7 +1365,7 @@ class L {
1365
1365
  };
1366
1366
  return c.fire("editor:object-exported", m), m;
1367
1367
  }
1368
- var b = h.toCanvasElement(), y = yield new Promise((w) => {
1368
+ var b = l.toCanvasElement(), y = yield new Promise((w) => {
1369
1369
  b.toBlob(w);
1370
1370
  });
1371
1371
  if (s) {
@@ -1465,14 +1465,14 @@ class jt {
1465
1465
  } = this.editor, {
1466
1466
  width: c,
1467
1467
  height: u
1468
- } = o, h = Number(Math.max(Math.min(e, D), k));
1469
- if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(h), o.set({
1470
- width: h
1468
+ } = o, l = Number(Math.max(Math.min(e, D), k));
1469
+ if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(l), o.set({
1470
+ width: l
1471
1471
  }), n.clipPath.set({
1472
- width: h
1472
+ width: l
1473
1473
  }), t) {
1474
- var d = h / c, l = u * d;
1475
- this.setResolutionHeight(l);
1474
+ var d = l / c, h = u * d;
1475
+ this.setResolutionHeight(h);
1476
1476
  return;
1477
1477
  }
1478
1478
  var {
@@ -1508,14 +1508,14 @@ class jt {
1508
1508
  } = this.editor, {
1509
1509
  width: c,
1510
1510
  height: u
1511
- } = o, h = Number(Math.max(Math.min(e, C), x));
1512
- if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(h), o.set({
1513
- height: h
1511
+ } = o, l = Number(Math.max(Math.min(e, C), x));
1512
+ if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(l), o.set({
1513
+ height: l
1514
1514
  }), n.clipPath.set({
1515
- height: h
1515
+ height: l
1516
1516
  }), t) {
1517
- var d = h / u, l = c * d;
1518
- this.setResolutionWidth(l);
1517
+ var d = l / u, h = c * d;
1518
+ this.setResolutionWidth(h);
1519
1519
  return;
1520
1520
  }
1521
1521
  var {
@@ -1708,16 +1708,16 @@ class jt {
1708
1708
  }
1709
1709
  var s = t === "width" ? "width" : "height";
1710
1710
  if (typeof a == "string") {
1711
- o.forEach((h) => {
1712
- h.style[s] = a;
1711
+ o.forEach((l) => {
1712
+ l.style[s] = a;
1713
1713
  });
1714
1714
  return;
1715
1715
  }
1716
1716
  var c = parseFloat(a);
1717
1717
  if (!isNaN(c)) {
1718
1718
  var u = "".concat(c, "px");
1719
- o.forEach((h) => {
1720
- h.style[s] = u;
1719
+ o.forEach((l) => {
1720
+ l.style[s] = u;
1721
1721
  }), r.fire("editor:display-".concat(e, "-").concat(s, "-changed"), {
1722
1722
  element: e,
1723
1723
  value: a
@@ -1749,28 +1749,28 @@ class jt {
1749
1749
  } = this.editor, u = e || r.getActiveObject();
1750
1750
  if (!(!u || u.type !== "image" && u.format !== "svg")) {
1751
1751
  var {
1752
- width: h,
1752
+ width: l,
1753
1753
  height: d
1754
1754
  } = u;
1755
- if (h < k || d < x) {
1756
- var l = "Размер изображения меньше минимального размера канваса, поэтому оно будет растянуто до минимальных размеров: ".concat(k, "x").concat(x);
1757
- console.warn("scaleMontageAreaToImage. ".concat(l)), r.fire("editor:warning", {
1758
- message: l
1755
+ if (l < k || d < x) {
1756
+ var h = "Размер изображения меньше минимального размера канваса, поэтому оно будет растянуто до минимальных размеров: ".concat(k, "x").concat(x);
1757
+ console.warn("scaleMontageAreaToImage. ".concat(h)), r.fire("editor:warning", {
1758
+ message: h
1759
1759
  });
1760
1760
  }
1761
- var g = Math.min(h, D), f = Math.min(d, C);
1761
+ var g = Math.min(l, D), f = Math.min(d, C);
1762
1762
  if (t) {
1763
1763
  var {
1764
1764
  width: v,
1765
1765
  height: j
1766
- } = n, m = h / v, b = d / j, y = Math.max(m, b);
1766
+ } = n, m = l / v, b = d / j, y = Math.max(m, b);
1767
1767
  g = v * y, f = j * y;
1768
1768
  }
1769
1769
  this.setResolutionWidth(g, {
1770
1770
  withoutSave: !0
1771
1771
  }), this.setResolutionHeight(f, {
1772
1772
  withoutSave: !0
1773
- }), (h > s || d > c) && o.calculateAndApplyDefaultZoom(s, c), o.resetObject(u, {
1773
+ }), (l > s || d > c) && o.calculateAndApplyDefaultZoom(s, c), o.resetObject(u, {
1774
1774
  withoutSave: !0
1775
1775
  }), r.centerObject(u), r.renderAll(), a || this.editor.historyManager.saveState(), r.fire("editor:canvas-scaled", {
1776
1776
  width: g,
@@ -1854,9 +1854,9 @@ class yt {
1854
1854
  } = this.editor.montageArea, n = e / a, o = t / r, s = Math.min(n, o), {
1855
1855
  minZoom: c,
1856
1856
  maxZoom: u,
1857
- maxZoomFactor: h
1857
+ maxZoomFactor: l
1858
1858
  } = this.options;
1859
- this.minZoom = Math.min(s / h, c), this.maxZoom = Math.max(s * h, u), this.defaultZoom = s, this.setZoom(s);
1859
+ this.minZoom = Math.min(s / l, c), this.maxZoom = Math.max(s * l, u), this.defaultZoom = s, this.setZoom(s);
1860
1860
  }
1861
1861
  /**
1862
1862
  * Увеличение/уменьшение масштаба
@@ -2026,18 +2026,18 @@ class yt {
2026
2026
  if (c) {
2027
2027
  if (["activeselection"].includes(c.type) && !r) {
2028
2028
  var u = c.getObjects();
2029
- n.discardActiveObject(), u.forEach((l) => {
2029
+ n.discardActiveObject(), u.forEach((h) => {
2030
2030
  var g = Y({
2031
2031
  montageArea: o,
2032
- imageObject: l,
2032
+ imageObject: h,
2033
2033
  scaleType: t
2034
2034
  });
2035
- l.scale(g), n.centerObject(l);
2035
+ h.scale(g), n.centerObject(h);
2036
2036
  });
2037
- var h = new Z(u, {
2037
+ var l = new Z(u, {
2038
2038
  canvas: n
2039
2039
  });
2040
- n.setActiveObject(h);
2040
+ n.setActiveObject(l);
2041
2041
  } else {
2042
2042
  var d = Y({
2043
2043
  montageArea: o,
@@ -2093,16 +2093,16 @@ class yt {
2093
2093
  else {
2094
2094
  var {
2095
2095
  width: u,
2096
- height: h
2096
+ height: l
2097
2097
  } = n, {
2098
2098
  width: d,
2099
- height: l
2099
+ height: h
2100
2100
  } = c, g = Y({
2101
2101
  montageArea: n,
2102
2102
  imageObject: c,
2103
2103
  scaleType: s
2104
2104
  });
2105
- s === "contain" && g < 1 || s === "cover" && (d > u || l > h) ? this.fitObject({
2105
+ s === "contain" && g < 1 || s === "cover" && (d > u || h > l) ? this.fitObject({
2106
2106
  object: c,
2107
2107
  withoutSave: !0
2108
2108
  }) : c.set({
@@ -2325,10 +2325,21 @@ class H {
2325
2325
  * @private
2326
2326
  */
2327
2327
  static _moveSelectionForward(e, t) {
2328
- for (var a = e.getObjects(), r = t.getObjects(), n = r.length - 1; n >= 0; n -= 1) {
2329
- for (var o = r[n], s = a.indexOf(o), c = s + 1; c < a.length && r.includes(a[c]); )
2330
- c += 1;
2331
- c < a.length && e.moveObjectTo(o, c);
2328
+ for (var a = e.getObjects(), r = t.getObjects(), n = r.map((l) => a.indexOf(l)), o = -1, s = function(d) {
2329
+ var h = a[d];
2330
+ if (!r.includes(h) && n.some((g) => d > g))
2331
+ return o = d, 1;
2332
+ }, c = 0; c < a.length && !s(c); c++)
2333
+ ;
2334
+ if (o !== -1) {
2335
+ var u = r.map((l) => ({
2336
+ obj: l,
2337
+ index: a.indexOf(l)
2338
+ })).sort((l, d) => d.index - l.index);
2339
+ u.forEach((l) => {
2340
+ var d = a.indexOf(l.obj);
2341
+ d < o && (e.moveObjectTo(l.obj, o), o = d);
2342
+ });
2332
2343
  }
2333
2344
  }
2334
2345
  /**
@@ -2436,10 +2447,10 @@ class Ct {
2436
2447
  fill: s = "blue"
2437
2448
  } = e, c = G(e, bt), {
2438
2449
  withoutSelection: u,
2439
- withoutAdding: h
2450
+ withoutAdding: l
2440
2451
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2441
2452
  canvas: d
2442
- } = this.editor, l = new Be(F({
2453
+ } = this.editor, h = new Be(F({
2443
2454
  id: t,
2444
2455
  left: a,
2445
2456
  top: r,
@@ -2447,7 +2458,7 @@ class Ct {
2447
2458
  height: o,
2448
2459
  fill: s
2449
2460
  }, c));
2450
- return !a && !r && d.centerObject(l), h || (d.add(l), u || d.setActiveObject(l), d.renderAll()), l;
2461
+ return !a && !r && d.centerObject(h), l || (d.add(h), u || d.setActiveObject(h), d.renderAll()), h;
2451
2462
  }
2452
2463
  /**
2453
2464
  * Добавление круга
@@ -2474,7 +2485,7 @@ class Ct {
2474
2485
  withoutSelection: c,
2475
2486
  withoutAdding: u
2476
2487
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2477
- canvas: h
2488
+ canvas: l
2478
2489
  } = this.editor, d = new Ze(F({
2479
2490
  id: t,
2480
2491
  left: a,
@@ -2482,7 +2493,7 @@ class Ct {
2482
2493
  fill: o,
2483
2494
  radius: n
2484
2495
  }, s));
2485
- return !a && !r && h.centerObject(d), u || (h.add(d), c || h.setActiveObject(d), h.renderAll()), d;
2496
+ return !a && !r && l.centerObject(d), u || (l.add(d), c || l.setActiveObject(d), l.renderAll()), d;
2486
2497
  }
2487
2498
  /**
2488
2499
  * Добавление треугольника
@@ -2509,10 +2520,10 @@ class Ct {
2509
2520
  fill: s = "yellow"
2510
2521
  } = e, c = G(e, St), {
2511
2522
  withoutSelection: u,
2512
- withoutAdding: h
2523
+ withoutAdding: l
2513
2524
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
2514
2525
  canvas: d
2515
- } = this.editor, l = new ze(F({
2526
+ } = this.editor, h = new ze(F({
2516
2527
  id: t,
2517
2528
  left: a,
2518
2529
  top: r,
@@ -2520,7 +2531,7 @@ class Ct {
2520
2531
  width: n,
2521
2532
  height: o
2522
2533
  }, c));
2523
- return !a && !r && d.centerObject(l), h || (d.add(l), u || d.setActiveObject(l), d.renderAll()), l;
2534
+ return !a && !r && d.centerObject(h), l || (d.add(h), u || d.setActiveObject(h), d.renderAll()), h;
2524
2535
  }
2525
2536
  }
2526
2537
  function ye(i, e, t, a, r, n, o) {
@@ -2649,13 +2660,14 @@ class Ot {
2649
2660
  lockObject() {
2650
2661
  var {
2651
2662
  object: e,
2652
- withoutSave: t
2663
+ skipInnerObjects: t,
2664
+ withoutSave: a
2653
2665
  } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
2654
- canvas: a,
2655
- historyManager: r
2656
- } = this.editor, n = e || a.getActiveObject();
2657
- if (!(!n || n.locked)) {
2658
- var o = {
2666
+ canvas: r,
2667
+ historyManager: n
2668
+ } = this.editor, o = e || r.getActiveObject();
2669
+ if (!(!o || o.locked)) {
2670
+ var s = {
2659
2671
  lockMovementX: !0,
2660
2672
  lockMovementY: !0,
2661
2673
  lockRotation: !0,
@@ -2665,10 +2677,12 @@ class Ot {
2665
2677
  lockSkewingY: !0,
2666
2678
  locked: !0
2667
2679
  };
2668
- n.set(o), ["activeselection", "group"].includes(n.type) && n.getObjects().forEach((s) => {
2669
- s.set(o);
2670
- }), a.renderAll(), t || r.saveState(), a.fire("editor:object-locked", {
2671
- object: n
2680
+ o.set(s);
2681
+ var c = !t && ["activeselection", "group"].includes(o.type);
2682
+ c && o.getObjects().forEach((u) => {
2683
+ u.set(s);
2684
+ }), r.renderAll(), a || n.saveState(), r.fire("editor:object-locked", {
2685
+ object: o
2672
2686
  });
2673
2687
  }
2674
2688
  }
@@ -2794,6 +2808,7 @@ class Et {
2794
2808
  }) : r[0];
2795
2809
  n && a.lockObject({
2796
2810
  object: o,
2811
+ skipInnerObjects: !0,
2797
2812
  withoutSave: !0
2798
2813
  }), e.setActiveObject(o), e.requestRenderAll(), e.fire("editor:all-objects-selected", {
2799
2814
  selected: o
@@ -2881,7 +2896,7 @@ class Bt {
2881
2896
  canvasCSSHeight: s,
2882
2897
  initialImage: c,
2883
2898
  initialStateJSON: u,
2884
- scaleType: h,
2899
+ scaleType: l,
2885
2900
  _onReadyCallback: d
2886
2901
  } = e.options;
2887
2902
  if ($e.apply(), e.canvas = new Pe(e.containerId, e.options), e.moduleLoader = new _e(), e.workerManager = new Re(), e.historyManager = new ht({
@@ -2915,13 +2930,13 @@ class Bt {
2915
2930
  options: e.options
2916
2931
  }), e.canvasManager.setEditorContainerWidth(t), e.canvasManager.setEditorContainerHeight(a), e.canvasManager.setCanvasWrapperWidth(r), e.canvasManager.setCanvasWrapperHeight(n), e.canvasManager.setCanvasCSSWidth(o), e.canvasManager.setCanvasCSSHeight(s), c != null && c.source) {
2917
2932
  var {
2918
- source: l,
2919
- scale: g = "image-".concat(h),
2933
+ source: h,
2934
+ scale: g = "image-".concat(l),
2920
2935
  withoutSave: f = !0,
2921
2936
  contentType: v
2922
2937
  } = c;
2923
2938
  yield e.imageManager.importImage({
2924
- source: l,
2939
+ source: h,
2925
2940
  scale: g,
2926
2941
  withoutSave: f,
2927
2942
  contentType: v
@@ -3024,6 +3039,8 @@ const Zt = {
3024
3039
  // Container CSS width and height
3025
3040
  editorContainerWidth: "fit-content",
3026
3041
  editorContainerHeight: "100%",
3042
+ // Максимальная длина истории действий
3043
+ maxHistoryLength: 50,
3027
3044
  // Дефолтный тип скейлинга для объектов (cotain/cover)
3028
3045
  scaleType: "contain",
3029
3046
  // Показывать панель инструментов для выделенного объекта
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anu3ev/fabric-image-editor",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
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": [