@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.
- package/dist/main.js +117 -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,7 @@ class B {
|
|
|
151
151
|
}), this.editor.canvasManager.setResolutionHeight(t, {
|
|
152
152
|
adaptCanvasToContainer: !0,
|
|
153
153
|
withoutSave: !0
|
|
154
|
-
}), this.editor.canvasManager.centerMontageArea()
|
|
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 = (
|
|
189
|
+
s.onload = (h) => {
|
|
190
190
|
this.editor.imageManager.importImage({
|
|
191
|
-
source:
|
|
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(),
|
|
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:
|
|
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
|
|
765
|
-
return (
|
|
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:
|
|
843
|
-
} = e.getBoundingRect(!1, !0), d = c * n + o,
|
|
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(
|
|
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:
|
|
1103
|
+
historyManager: l
|
|
1104
1104
|
} = t.editor;
|
|
1105
|
-
|
|
1105
|
+
l.suspendHistory();
|
|
1106
1106
|
try {
|
|
1107
|
-
var d,
|
|
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
|
-
|
|
1124
|
+
h = z.groupSVGElements(j.objects, j.options);
|
|
1125
1125
|
} else
|
|
1126
|
-
|
|
1126
|
+
h = yield de.fromURL(d, {
|
|
1127
1127
|
crossOrigin: "anonymous"
|
|
1128
1128
|
});
|
|
1129
1129
|
var {
|
|
1130
1130
|
width: m,
|
|
1131
1131
|
height: b
|
|
1132
|
-
} =
|
|
1132
|
+
} = h;
|
|
1133
1133
|
if (b > C || m > D) {
|
|
1134
|
-
var y = yield t.resizeImageToBoundaries(
|
|
1135
|
-
t._createdBlobUrls.push(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 (
|
|
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:
|
|
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:
|
|
1150
|
+
imageObject: h,
|
|
1151
1151
|
scaleType: r
|
|
1152
1152
|
});
|
|
1153
1153
|
r === "image-contain" && w < 1 ? u.fitObject({
|
|
1154
|
-
object:
|
|
1154
|
+
object: h,
|
|
1155
1155
|
type: "contain",
|
|
1156
1156
|
withoutSave: !0
|
|
1157
1157
|
}) : r === "image-cover" && (m > O || b > A) && u.fitObject({
|
|
1158
|
-
object:
|
|
1158
|
+
object: h,
|
|
1159
1159
|
type: "cover",
|
|
1160
1160
|
withoutSave: !0
|
|
1161
1161
|
});
|
|
1162
1162
|
}
|
|
1163
|
-
s.add(
|
|
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
|
-
}),
|
|
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,
|
|
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 (
|
|
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:
|
|
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:
|
|
1264
|
+
format: h,
|
|
1265
1265
|
quality: 1,
|
|
1266
1266
|
bitmap: ae
|
|
1267
1267
|
}, [ae]);
|
|
1268
|
-
if (
|
|
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:
|
|
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 =
|
|
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:
|
|
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,
|
|
1337
|
-
if (!
|
|
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
|
|
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(
|
|
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 =
|
|
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,
|
|
1469
|
-
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreWidth(s) : this.setCanvasBackstoreWidth(
|
|
1470
|
-
width:
|
|
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:
|
|
1472
|
+
width: l
|
|
1473
1473
|
}), t) {
|
|
1474
|
-
var d =
|
|
1475
|
-
this.setResolutionHeight(
|
|
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,
|
|
1512
|
-
if (!s || s === "auto" || r ? this.adaptCanvasToContainer() : s ? this.setCanvasBackstoreHeight(s) : this.setCanvasBackstoreHeight(
|
|
1513
|
-
height:
|
|
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:
|
|
1515
|
+
height: l
|
|
1516
1516
|
}), t) {
|
|
1517
|
-
var d =
|
|
1518
|
-
this.setResolutionWidth(
|
|
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((
|
|
1712
|
-
|
|
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((
|
|
1720
|
-
|
|
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:
|
|
1752
|
+
width: l,
|
|
1753
1753
|
height: d
|
|
1754
1754
|
} = u;
|
|
1755
|
-
if (
|
|
1756
|
-
var
|
|
1757
|
-
console.warn("scaleMontageAreaToImage. ".concat(
|
|
1758
|
-
message:
|
|
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(
|
|
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 =
|
|
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
|
-
}), (
|
|
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:
|
|
1857
|
+
maxZoomFactor: l
|
|
1858
1858
|
} = this.options;
|
|
1859
|
-
this.minZoom = Math.min(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((
|
|
2029
|
+
n.discardActiveObject(), u.forEach((h) => {
|
|
2030
2030
|
var g = Y({
|
|
2031
2031
|
montageArea: o,
|
|
2032
|
-
imageObject:
|
|
2032
|
+
imageObject: h,
|
|
2033
2033
|
scaleType: t
|
|
2034
2034
|
});
|
|
2035
|
-
|
|
2035
|
+
h.scale(g), n.centerObject(h);
|
|
2036
2036
|
});
|
|
2037
|
-
var
|
|
2037
|
+
var l = new Z(u, {
|
|
2038
2038
|
canvas: n
|
|
2039
2039
|
});
|
|
2040
|
-
n.setActiveObject(
|
|
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:
|
|
2096
|
+
height: l
|
|
2097
2097
|
} = n, {
|
|
2098
2098
|
width: d,
|
|
2099
|
-
height:
|
|
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 ||
|
|
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.
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
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:
|
|
2450
|
+
withoutAdding: l
|
|
2440
2451
|
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
|
|
2441
2452
|
canvas: d
|
|
2442
|
-
} = this.editor,
|
|
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(
|
|
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:
|
|
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 &&
|
|
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:
|
|
2523
|
+
withoutAdding: l
|
|
2513
2524
|
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, {
|
|
2514
2525
|
canvas: d
|
|
2515
|
-
} = this.editor,
|
|
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(
|
|
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
|
-
|
|
2663
|
+
skipInnerObjects: t,
|
|
2664
|
+
withoutSave: a
|
|
2653
2665
|
} = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, {
|
|
2654
|
-
canvas:
|
|
2655
|
-
historyManager:
|
|
2656
|
-
} = this.editor,
|
|
2657
|
-
if (!(!
|
|
2658
|
-
var
|
|
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
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
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:
|
|
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:
|
|
2919
|
-
scale: g = "image-".concat(
|
|
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:
|
|
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.
|
|
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": [
|