@anu3ev/fabric-image-editor 0.1.8 → 0.1.10

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