@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.
- package/dist/main.js +120 -100
- 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:
|
|
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)),
|
|
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.
|
|
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 = (
|
|
192
|
+
s.onload = (h) => {
|
|
190
193
|
this.editor.imageManager.importImage({
|
|
191
|
-
source:
|
|
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(),
|
|
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:
|
|
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
|
|
765
|
-
return (
|
|
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:
|
|
843
|
-
} = e.getBoundingRect(!1, !0), d = c * n + o,
|
|
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(
|
|
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:
|
|
1106
|
+
historyManager: l
|
|
1104
1107
|
} = t.editor;
|
|
1105
|
-
|
|
1108
|
+
l.suspendHistory();
|
|
1106
1109
|
try {
|
|
1107
|
-
var d,
|
|
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
|
-
|
|
1127
|
+
h = z.groupSVGElements(j.objects, j.options);
|
|
1125
1128
|
} else
|
|
1126
|
-
|
|
1129
|
+
h = yield de.fromURL(d, {
|
|
1127
1130
|
crossOrigin: "anonymous"
|
|
1128
1131
|
});
|
|
1129
1132
|
var {
|
|
1130
1133
|
width: m,
|
|
1131
1134
|
height: b
|
|
1132
|
-
} =
|
|
1135
|
+
} = h;
|
|
1133
1136
|
if (b > C || m > D) {
|
|
1134
|
-
var y = yield t.resizeImageToBoundaries(
|
|
1135
|
-
t._createdBlobUrls.push(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 (
|
|
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:
|
|
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:
|
|
1153
|
+
imageObject: h,
|
|
1151
1154
|
scaleType: r
|
|
1152
1155
|
});
|
|
1153
1156
|
r === "image-contain" && w < 1 ? u.fitObject({
|
|
1154
|
-
object:
|
|
1157
|
+
object: h,
|
|
1155
1158
|
type: "contain",
|
|
1156
1159
|
withoutSave: !0
|
|
1157
1160
|
}) : r === "image-cover" && (m > O || b > A) && u.fitObject({
|
|
1158
|
-
object:
|
|
1161
|
+
object: h,
|
|
1159
1162
|
type: "cover",
|
|
1160
1163
|
withoutSave: !0
|
|
1161
1164
|
});
|
|
1162
1165
|
}
|
|
1163
|
-
s.add(
|
|
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
|
-
}),
|
|
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,
|
|
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 (
|
|
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:
|
|
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:
|
|
1267
|
+
format: h,
|
|
1265
1268
|
quality: 1,
|
|
1266
1269
|
bitmap: ae
|
|
1267
1270
|
}, [ae]);
|
|
1268
|
-
if (
|
|
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:
|
|
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 =
|
|
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:
|
|
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,
|
|
1337
|
-
if (!
|
|
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
|
|
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(
|
|
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 =
|
|
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,
|
|
1469
|
-
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(
|
|
1470
|
-
width:
|
|
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:
|
|
1475
|
+
width: l
|
|
1473
1476
|
}), t) {
|
|
1474
|
-
var d =
|
|
1475
|
-
this.setResolutionHeight(
|
|
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,
|
|
1512
|
-
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(
|
|
1513
|
-
height:
|
|
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:
|
|
1518
|
+
height: l
|
|
1516
1519
|
}), t) {
|
|
1517
|
-
var d =
|
|
1518
|
-
this.setResolutionWidth(
|
|
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((
|
|
1712
|
-
|
|
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((
|
|
1720
|
-
|
|
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:
|
|
1755
|
+
width: l,
|
|
1753
1756
|
height: d
|
|
1754
1757
|
} = u;
|
|
1755
|
-
if (
|
|
1756
|
-
var
|
|
1757
|
-
console.warn("scaleMontageAreaToImage. ".concat(
|
|
1758
|
-
message:
|
|
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(
|
|
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 =
|
|
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
|
-
}), (
|
|
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:
|
|
1860
|
+
maxZoomFactor: l
|
|
1858
1861
|
} = this.options;
|
|
1859
|
-
this.minZoom = Math.min(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((
|
|
2032
|
+
n.discardActiveObject(), u.forEach((h) => {
|
|
2030
2033
|
var g = Y({
|
|
2031
2034
|
montageArea: o,
|
|
2032
|
-
imageObject:
|
|
2035
|
+
imageObject: h,
|
|
2033
2036
|
scaleType: t
|
|
2034
2037
|
});
|
|
2035
|
-
|
|
2038
|
+
h.scale(g), n.centerObject(h);
|
|
2036
2039
|
});
|
|
2037
|
-
var
|
|
2040
|
+
var l = new Z(u, {
|
|
2038
2041
|
canvas: n
|
|
2039
2042
|
});
|
|
2040
|
-
n.setActiveObject(
|
|
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:
|
|
2099
|
+
height: l
|
|
2097
2100
|
} = n, {
|
|
2098
2101
|
width: d,
|
|
2099
|
-
height:
|
|
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 ||
|
|
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.
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
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:
|
|
2453
|
+
withoutAdding: l
|
|
2440
2454
|
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
|
|
2441
2455
|
canvas: d
|
|
2442
|
-
} = this.editor,
|
|
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(
|
|
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:
|
|
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 &&
|
|
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:
|
|
2526
|
+
withoutAdding: l
|
|
2513
2527
|
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
|
|
2514
2528
|
canvas: d
|
|
2515
|
-
} = this.editor,
|
|
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(
|
|
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
|
-
|
|
2666
|
+
skipInnerObjects: t,
|
|
2667
|
+
withoutSave: a
|
|
2653
2668
|
} = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
|
|
2654
|
-
canvas:
|
|
2655
|
-
historyManager:
|
|
2656
|
-
} = this.editor,
|
|
2657
|
-
if (!(!
|
|
2658
|
-
var
|
|
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
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
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:
|
|
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:
|
|
2919
|
-
scale: g = "image-".concat(
|
|
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:
|
|
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.
|
|
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": [
|