@idraw/util 0.4.0-beta.1 → 0.4.0-beta.11
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/esm/index.d.ts +7 -5
- package/dist/esm/index.js +7 -5
- package/dist/esm/lib/canvas.d.ts +8 -3
- package/dist/esm/lib/canvas.js +27 -4
- package/dist/esm/lib/config.d.ts +5 -10
- package/dist/esm/lib/config.js +7 -8
- package/dist/esm/lib/context2d.d.ts +1 -0
- package/dist/esm/lib/context2d.js +3 -0
- package/dist/esm/lib/controller.js +28 -0
- package/dist/esm/lib/data.d.ts +6 -2
- package/dist/esm/lib/data.js +95 -2
- package/dist/esm/lib/element.d.ts +2 -0
- package/dist/esm/lib/element.js +75 -1
- package/dist/esm/lib/event.d.ts +4 -2
- package/dist/esm/lib/event.js +31 -11
- package/dist/esm/lib/file.d.ts +7 -2
- package/dist/esm/lib/file.js +26 -7
- package/dist/esm/lib/handle-element.js +34 -31
- package/dist/esm/lib/html.d.ts +1 -1
- package/dist/esm/lib/resize-element.d.ts +2 -0
- package/dist/esm/lib/resize-element.js +101 -0
- package/dist/esm/lib/store.d.ts +3 -4
- package/dist/esm/lib/store.js +26 -8
- package/dist/esm/lib/time.d.ts +1 -0
- package/dist/esm/lib/time.js +13 -1
- package/dist/esm/lib/view-box.js +3 -2
- package/dist/esm/lib/view-content.d.ts +14 -0
- package/dist/esm/lib/view-content.js +70 -0
- package/dist/index.global.js +513 -73
- package/dist/index.global.min.js +1 -1
- package/package.json +1 -1
package/dist/index.global.js
CHANGED
|
@@ -17,8 +17,12 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
17
17
|
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
18
18
|
return value;
|
|
19
19
|
};
|
|
20
|
+
var __privateMethod = (obj, member, method) => {
|
|
21
|
+
__accessCheck(obj, member, "access private method");
|
|
22
|
+
return method;
|
|
23
|
+
};
|
|
20
24
|
|
|
21
|
-
var _ctx, _opts;
|
|
25
|
+
var _ctx, _opts, _listeners, _temp, _backUpDefaultStorage, _createTempStorage, createTempStorage_fn;
|
|
22
26
|
function compose(middleware) {
|
|
23
27
|
return function(context, next) {
|
|
24
28
|
return dispatch(0);
|
|
@@ -47,7 +51,7 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
47
51
|
function throttle(fn, timeout) {
|
|
48
52
|
let timer = -1;
|
|
49
53
|
return function(...args) {
|
|
50
|
-
if (timer
|
|
54
|
+
if (timer >= 0) {
|
|
51
55
|
return;
|
|
52
56
|
}
|
|
53
57
|
timer = setTimeout(() => {
|
|
@@ -56,20 +60,34 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
56
60
|
}, timeout);
|
|
57
61
|
};
|
|
58
62
|
}
|
|
63
|
+
function debounce(fn, timeout) {
|
|
64
|
+
let timer = -1;
|
|
65
|
+
return function(...args) {
|
|
66
|
+
if (timer >= 0) {
|
|
67
|
+
window.clearTimeout(timer);
|
|
68
|
+
}
|
|
69
|
+
timer = setTimeout(() => {
|
|
70
|
+
fn(...args);
|
|
71
|
+
timer = -1;
|
|
72
|
+
}, timeout);
|
|
73
|
+
};
|
|
74
|
+
}
|
|
59
75
|
function downloadImageFromCanvas(canvas, opts) {
|
|
60
|
-
const {
|
|
76
|
+
const { fileName, type = "image/jpeg" } = opts;
|
|
61
77
|
const stream = canvas.toDataURL(type);
|
|
62
|
-
|
|
78
|
+
let downloadLink = document.createElement("a");
|
|
63
79
|
downloadLink.href = stream;
|
|
64
|
-
downloadLink.download =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
downloadLink.dispatchEvent(downloadClickEvent);
|
|
80
|
+
downloadLink.download = fileName;
|
|
81
|
+
downloadLink.click();
|
|
82
|
+
downloadLink = null;
|
|
68
83
|
}
|
|
69
84
|
function pickFile(opts) {
|
|
70
|
-
const { success, error } = opts;
|
|
85
|
+
const { accept, success, error } = opts;
|
|
71
86
|
let input = document.createElement("input");
|
|
72
87
|
input.type = "file";
|
|
88
|
+
if (accept) {
|
|
89
|
+
input.accept = accept;
|
|
90
|
+
}
|
|
73
91
|
input.addEventListener("change", function() {
|
|
74
92
|
var _a;
|
|
75
93
|
const file = (_a = input.files) == null ? void 0 : _a[0];
|
|
@@ -122,6 +140,23 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
122
140
|
reader.readAsText(file);
|
|
123
141
|
});
|
|
124
142
|
}
|
|
143
|
+
function parseTextToBlobURL(text2) {
|
|
144
|
+
const bytes = new TextEncoder().encode(text2);
|
|
145
|
+
const blob = new Blob([bytes], {
|
|
146
|
+
type: "text/plain;charset=utf-8"
|
|
147
|
+
});
|
|
148
|
+
const blobURL = window.URL.createObjectURL(blob);
|
|
149
|
+
return blobURL;
|
|
150
|
+
}
|
|
151
|
+
function downloadFileFromText(text2, opts) {
|
|
152
|
+
const { fileName } = opts;
|
|
153
|
+
const blobURL = parseTextToBlobURL(text2);
|
|
154
|
+
let downloadLink = document.createElement("a");
|
|
155
|
+
downloadLink.href = blobURL;
|
|
156
|
+
downloadLink.download = fileName;
|
|
157
|
+
downloadLink.click();
|
|
158
|
+
downloadLink = null;
|
|
159
|
+
}
|
|
125
160
|
function toColorHexNum(color2) {
|
|
126
161
|
return parseInt(color2.replace(/^\#/, "0x"));
|
|
127
162
|
}
|
|
@@ -406,6 +441,19 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
406
441
|
}
|
|
407
442
|
return _clone(target);
|
|
408
443
|
}
|
|
444
|
+
function deepCloneElement(element) {
|
|
445
|
+
const elem = deepClone(element);
|
|
446
|
+
const _resetUUID = (e) => {
|
|
447
|
+
e.uuid = createUUID();
|
|
448
|
+
if (e.type === "group" && e.detail.children) {
|
|
449
|
+
e.detail.children.forEach((child) => {
|
|
450
|
+
_resetUUID(child);
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
_resetUUID(elem);
|
|
455
|
+
return elem;
|
|
456
|
+
}
|
|
409
457
|
function is$1(target) {
|
|
410
458
|
return Object.prototype.toString.call(target).replace(/[\]|\[]{1,1}/gi, "").split(" ")[1];
|
|
411
459
|
}
|
|
@@ -442,7 +490,7 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
442
490
|
const assetUUID = createAssetId(html2);
|
|
443
491
|
if (!assets[assetUUID]) {
|
|
444
492
|
assets[assetUUID] = {
|
|
445
|
-
type: "
|
|
493
|
+
type: "html",
|
|
446
494
|
value: html2
|
|
447
495
|
};
|
|
448
496
|
}
|
|
@@ -463,6 +511,80 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
463
511
|
sortedData.assets = assets;
|
|
464
512
|
return sortedData;
|
|
465
513
|
}
|
|
514
|
+
function filterCompactData(data, opts) {
|
|
515
|
+
const assets = data.assets || {};
|
|
516
|
+
const sortedData = deepClone(data);
|
|
517
|
+
const loadItemMap = (opts == null ? void 0 : opts.loadItemMap) || {};
|
|
518
|
+
const _scanElements = (elems) => {
|
|
519
|
+
elems.forEach((elem) => {
|
|
520
|
+
var _a, _b, _c;
|
|
521
|
+
if (elem.type === "image" && elem.detail.src) {
|
|
522
|
+
const src = elem.detail.src;
|
|
523
|
+
if (isAssetId(src) && !assets[src] && loadItemMap[src] && typeof ((_a = loadItemMap[src]) == null ? void 0 : _a.source) === "string") {
|
|
524
|
+
assets[src] = {
|
|
525
|
+
type: "image",
|
|
526
|
+
value: loadItemMap[src].source
|
|
527
|
+
};
|
|
528
|
+
} else if (!assets[src]) {
|
|
529
|
+
const assetUUID = createAssetId(src);
|
|
530
|
+
if (!assets[assetUUID]) {
|
|
531
|
+
assets[assetUUID] = {
|
|
532
|
+
type: "image",
|
|
533
|
+
value: src
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
elem.detail.src = assetUUID;
|
|
537
|
+
}
|
|
538
|
+
} else if (elem.type === "svg") {
|
|
539
|
+
const svg2 = elem.detail.svg;
|
|
540
|
+
if (isAssetId(svg2) && !assets[svg2] && loadItemMap[svg2] && typeof ((_b = loadItemMap[svg2]) == null ? void 0 : _b.source) === "string") {
|
|
541
|
+
assets[svg2] = {
|
|
542
|
+
type: "svg",
|
|
543
|
+
value: loadItemMap[svg2].source
|
|
544
|
+
};
|
|
545
|
+
} else if (!assets[svg2]) {
|
|
546
|
+
const assetUUID = createAssetId(svg2);
|
|
547
|
+
if (!assets[assetUUID]) {
|
|
548
|
+
assets[assetUUID] = {
|
|
549
|
+
type: "svg",
|
|
550
|
+
value: svg2
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
elem.detail.svg = assetUUID;
|
|
554
|
+
}
|
|
555
|
+
} else if (elem.type === "html") {
|
|
556
|
+
const html2 = elem.detail.html;
|
|
557
|
+
if (isAssetId(html2) && !assets[html2] && loadItemMap[html2] && typeof ((_c = loadItemMap[html2]) == null ? void 0 : _c.source) === "string") {
|
|
558
|
+
assets[html2] = {
|
|
559
|
+
type: "html",
|
|
560
|
+
value: loadItemMap[html2].source
|
|
561
|
+
};
|
|
562
|
+
} else if (!assets[html2]) {
|
|
563
|
+
const assetUUID = createAssetId(html2);
|
|
564
|
+
if (!assets[assetUUID]) {
|
|
565
|
+
assets[assetUUID] = {
|
|
566
|
+
type: "html",
|
|
567
|
+
value: html2
|
|
568
|
+
};
|
|
569
|
+
}
|
|
570
|
+
elem.detail.html = assetUUID;
|
|
571
|
+
}
|
|
572
|
+
} else if (elem.type === "group" && Array.isArray(elem.detail.children)) {
|
|
573
|
+
const groupAssets = elem.detail.assets || {};
|
|
574
|
+
Object.keys(groupAssets).forEach((assetId) => {
|
|
575
|
+
if (!assets[assetId]) {
|
|
576
|
+
assets[assetId] = groupAssets[assetId];
|
|
577
|
+
}
|
|
578
|
+
});
|
|
579
|
+
delete elem.detail.assets;
|
|
580
|
+
_scanElements(elem.detail.children);
|
|
581
|
+
}
|
|
582
|
+
});
|
|
583
|
+
};
|
|
584
|
+
_scanElements(sortedData.elements);
|
|
585
|
+
sortedData.assets = assets;
|
|
586
|
+
return sortedData;
|
|
587
|
+
}
|
|
466
588
|
function parsePrototype(data) {
|
|
467
589
|
const typeStr = Object.prototype.toString.call(data) || "";
|
|
468
590
|
const result = typeStr.replace(/(\[object|\])/gi, "").trim();
|
|
@@ -808,6 +930,9 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
808
930
|
$getContext() {
|
|
809
931
|
return __privateGet(this, _ctx);
|
|
810
932
|
}
|
|
933
|
+
$setContext(ctx) {
|
|
934
|
+
__privateSet(this, _ctx, ctx);
|
|
935
|
+
}
|
|
811
936
|
$setFont(opts) {
|
|
812
937
|
const strList = [];
|
|
813
938
|
if (opts.fontWeight) {
|
|
@@ -1090,15 +1215,39 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1090
1215
|
});
|
|
1091
1216
|
return context2d;
|
|
1092
1217
|
}
|
|
1093
|
-
function
|
|
1094
|
-
const { width, height, devicePixelRatio, offscreen } = opts;
|
|
1218
|
+
function createBoardContent(canvas, opts) {
|
|
1219
|
+
const { width, height, devicePixelRatio, offscreen, createCustomContext2D } = opts;
|
|
1095
1220
|
const ctxOpts = {
|
|
1096
1221
|
width,
|
|
1097
1222
|
height,
|
|
1098
1223
|
devicePixelRatio
|
|
1099
1224
|
};
|
|
1225
|
+
const ctx = canvas.getContext("2d");
|
|
1226
|
+
if (createCustomContext2D) {
|
|
1227
|
+
const viewContext = createCustomContext2D(ctxOpts);
|
|
1228
|
+
const helperContext = createCustomContext2D(ctxOpts);
|
|
1229
|
+
const underContext = createCustomContext2D(ctxOpts);
|
|
1230
|
+
const boardContext = createContext2D({ ctx, ...ctxOpts });
|
|
1231
|
+
const drawView = () => {
|
|
1232
|
+
const { width: w2, height: h2 } = viewContext.$getSize();
|
|
1233
|
+
boardContext.clearRect(0, 0, w2, h2);
|
|
1234
|
+
boardContext.drawImage(underContext.canvas, 0, 0, w2, h2);
|
|
1235
|
+
boardContext.drawImage(viewContext.canvas, 0, 0, w2, h2);
|
|
1236
|
+
boardContext.drawImage(helperContext.canvas, 0, 0, w2, h2);
|
|
1237
|
+
underContext.clearRect(0, 0, w2, h2);
|
|
1238
|
+
viewContext.clearRect(0, 0, w2, h2);
|
|
1239
|
+
helperContext.clearRect(0, 0, w2, h2);
|
|
1240
|
+
};
|
|
1241
|
+
const content = {
|
|
1242
|
+
underContext,
|
|
1243
|
+
viewContext,
|
|
1244
|
+
helperContext,
|
|
1245
|
+
boardContext,
|
|
1246
|
+
drawView
|
|
1247
|
+
};
|
|
1248
|
+
return content;
|
|
1249
|
+
}
|
|
1100
1250
|
if (offscreen === true) {
|
|
1101
|
-
const ctx = canvas.getContext("2d");
|
|
1102
1251
|
const viewContext = createOffscreenContext2D(ctxOpts);
|
|
1103
1252
|
const helperContext = createOffscreenContext2D(ctxOpts);
|
|
1104
1253
|
const underContext = createOffscreenContext2D(ctxOpts);
|
|
@@ -1122,7 +1271,6 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1122
1271
|
};
|
|
1123
1272
|
return content;
|
|
1124
1273
|
} else {
|
|
1125
|
-
const ctx = canvas.getContext("2d");
|
|
1126
1274
|
const viewContext = createContext2D(ctxOpts);
|
|
1127
1275
|
const helperContext = createContext2D(ctxOpts);
|
|
1128
1276
|
const underContext = createContext2D(ctxOpts);
|
|
@@ -1148,20 +1296,21 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1148
1296
|
}
|
|
1149
1297
|
class EventEmitter {
|
|
1150
1298
|
constructor() {
|
|
1151
|
-
this
|
|
1299
|
+
__privateAdd(this, _listeners, void 0);
|
|
1300
|
+
__privateSet(this, _listeners, /* @__PURE__ */ new Map());
|
|
1152
1301
|
}
|
|
1153
1302
|
on(eventKey, callback) {
|
|
1154
|
-
if (this
|
|
1155
|
-
const callbacks = this
|
|
1303
|
+
if (__privateGet(this, _listeners).has(eventKey)) {
|
|
1304
|
+
const callbacks = __privateGet(this, _listeners).get(eventKey) || [];
|
|
1156
1305
|
callbacks == null ? void 0 : callbacks.push(callback);
|
|
1157
|
-
this
|
|
1306
|
+
__privateGet(this, _listeners).set(eventKey, callbacks);
|
|
1158
1307
|
} else {
|
|
1159
|
-
this
|
|
1308
|
+
__privateGet(this, _listeners).set(eventKey, [callback]);
|
|
1160
1309
|
}
|
|
1161
1310
|
}
|
|
1162
1311
|
off(eventKey, callback) {
|
|
1163
|
-
if (this
|
|
1164
|
-
const callbacks = this
|
|
1312
|
+
if (__privateGet(this, _listeners).has(eventKey)) {
|
|
1313
|
+
const callbacks = __privateGet(this, _listeners).get(eventKey);
|
|
1165
1314
|
if (Array.isArray(callbacks)) {
|
|
1166
1315
|
for (let i = 0; i < (callbacks == null ? void 0 : callbacks.length); i++) {
|
|
1167
1316
|
if (callbacks[i] === callback) {
|
|
@@ -1170,11 +1319,11 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1170
1319
|
}
|
|
1171
1320
|
}
|
|
1172
1321
|
}
|
|
1173
|
-
this
|
|
1322
|
+
__privateGet(this, _listeners).set(eventKey, callbacks || []);
|
|
1174
1323
|
}
|
|
1175
1324
|
}
|
|
1176
1325
|
trigger(eventKey, e) {
|
|
1177
|
-
const callbacks = this
|
|
1326
|
+
const callbacks = __privateGet(this, _listeners).get(eventKey);
|
|
1178
1327
|
if (Array.isArray(callbacks)) {
|
|
1179
1328
|
callbacks.forEach((cb) => {
|
|
1180
1329
|
cb(e);
|
|
@@ -1185,15 +1334,22 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1185
1334
|
}
|
|
1186
1335
|
}
|
|
1187
1336
|
has(name) {
|
|
1188
|
-
if (this
|
|
1189
|
-
const list = this
|
|
1337
|
+
if (__privateGet(this, _listeners).has(name)) {
|
|
1338
|
+
const list = __privateGet(this, _listeners).get(name);
|
|
1190
1339
|
if (Array.isArray(list) && list.length > 0) {
|
|
1191
1340
|
return true;
|
|
1192
1341
|
}
|
|
1193
1342
|
}
|
|
1194
1343
|
return false;
|
|
1195
1344
|
}
|
|
1345
|
+
destroy() {
|
|
1346
|
+
this.clear();
|
|
1347
|
+
}
|
|
1348
|
+
clear() {
|
|
1349
|
+
__privateGet(this, _listeners).clear();
|
|
1350
|
+
}
|
|
1196
1351
|
}
|
|
1352
|
+
_listeners = new WeakMap();
|
|
1197
1353
|
function calcDistance(start, end) {
|
|
1198
1354
|
const distance = (start.x - end.x) * (start.x - end.x) + (start.y - end.y) * (start.y - end.y);
|
|
1199
1355
|
return distance === 0 ? distance : Math.sqrt(distance);
|
|
@@ -1226,25 +1382,34 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1226
1382
|
}
|
|
1227
1383
|
class Store {
|
|
1228
1384
|
constructor(opts) {
|
|
1229
|
-
this
|
|
1230
|
-
this
|
|
1385
|
+
__privateAdd(this, _createTempStorage);
|
|
1386
|
+
__privateAdd(this, _temp, void 0);
|
|
1387
|
+
__privateAdd(this, _backUpDefaultStorage, void 0);
|
|
1388
|
+
__privateSet(this, _backUpDefaultStorage, deepClone(opts.defaultStorage));
|
|
1389
|
+
__privateSet(this, _temp, __privateMethod(this, _createTempStorage, createTempStorage_fn).call(this));
|
|
1231
1390
|
}
|
|
1232
1391
|
set(name, value) {
|
|
1233
|
-
this
|
|
1392
|
+
__privateGet(this, _temp)[name] = value;
|
|
1234
1393
|
}
|
|
1235
1394
|
get(name) {
|
|
1236
|
-
return this
|
|
1395
|
+
return __privateGet(this, _temp)[name];
|
|
1237
1396
|
}
|
|
1238
1397
|
getSnapshot() {
|
|
1239
|
-
return deepClone(this
|
|
1398
|
+
return deepClone(__privateGet(this, _temp));
|
|
1240
1399
|
}
|
|
1241
1400
|
clear() {
|
|
1242
|
-
this
|
|
1401
|
+
__privateSet(this, _temp, __privateMethod(this, _createTempStorage, createTempStorage_fn).call(this));
|
|
1243
1402
|
}
|
|
1244
|
-
|
|
1245
|
-
|
|
1403
|
+
destroy() {
|
|
1404
|
+
__privateSet(this, _temp, null);
|
|
1246
1405
|
}
|
|
1247
1406
|
}
|
|
1407
|
+
_temp = new WeakMap();
|
|
1408
|
+
_backUpDefaultStorage = new WeakMap();
|
|
1409
|
+
_createTempStorage = new WeakSet();
|
|
1410
|
+
createTempStorage_fn = function() {
|
|
1411
|
+
return deepClone(__privateGet(this, _backUpDefaultStorage));
|
|
1412
|
+
};
|
|
1248
1413
|
function getViewScaleInfoFromSnapshot(snapshot) {
|
|
1249
1414
|
const { activeStore } = snapshot;
|
|
1250
1415
|
const sacelInfo = {
|
|
@@ -1505,6 +1670,58 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1505
1670
|
}
|
|
1506
1671
|
return isValid;
|
|
1507
1672
|
}
|
|
1673
|
+
function calcElementListSize(list) {
|
|
1674
|
+
var _a;
|
|
1675
|
+
const area = { x: 0, y: 0, w: 0, h: 0 };
|
|
1676
|
+
let prevElemSize = null;
|
|
1677
|
+
for (let i = 0; i < list.length; i++) {
|
|
1678
|
+
const elem = list[i];
|
|
1679
|
+
if ((_a = elem == null ? void 0 : elem.operations) == null ? void 0 : _a.invisible) {
|
|
1680
|
+
continue;
|
|
1681
|
+
}
|
|
1682
|
+
const elemSize = {
|
|
1683
|
+
x: elem.x,
|
|
1684
|
+
y: elem.y,
|
|
1685
|
+
w: elem.w,
|
|
1686
|
+
h: elem.h,
|
|
1687
|
+
angle: elem.angle || 0
|
|
1688
|
+
};
|
|
1689
|
+
if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
|
|
1690
|
+
const ves = rotateElementVertexes(elemSize);
|
|
1691
|
+
if (ves.length === 4) {
|
|
1692
|
+
const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
|
|
1693
|
+
const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
|
|
1694
|
+
elemSize.x = Math.min(...xList);
|
|
1695
|
+
elemSize.y = Math.min(...yList);
|
|
1696
|
+
elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
|
|
1697
|
+
elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
|
|
1698
|
+
}
|
|
1699
|
+
}
|
|
1700
|
+
if (prevElemSize) {
|
|
1701
|
+
const areaStartX = Math.min(elemSize.x, area.x);
|
|
1702
|
+
const areaStartY = Math.min(elemSize.y, area.y);
|
|
1703
|
+
const areaEndX = Math.max(elemSize.x + elemSize.w, area.x + area.w);
|
|
1704
|
+
const areaEndY = Math.max(elemSize.y + elemSize.h, area.y + area.h);
|
|
1705
|
+
area.x = areaStartX;
|
|
1706
|
+
area.y = areaStartY;
|
|
1707
|
+
area.w = Math.abs(areaEndX - areaStartX);
|
|
1708
|
+
area.h = Math.abs(areaEndY - areaStartY);
|
|
1709
|
+
} else {
|
|
1710
|
+
area.x = elemSize.x;
|
|
1711
|
+
area.y = elemSize.y;
|
|
1712
|
+
area.w = elemSize.w;
|
|
1713
|
+
area.h = elemSize.h;
|
|
1714
|
+
}
|
|
1715
|
+
prevElemSize = elemSize;
|
|
1716
|
+
}
|
|
1717
|
+
const listSize = {
|
|
1718
|
+
x: Math.floor(area.x),
|
|
1719
|
+
y: Math.floor(area.y),
|
|
1720
|
+
w: Math.ceil(area.w),
|
|
1721
|
+
h: Math.ceil(area.h)
|
|
1722
|
+
};
|
|
1723
|
+
return listSize;
|
|
1724
|
+
}
|
|
1508
1725
|
function calcElementsContextSize(elements, opts) {
|
|
1509
1726
|
const area = { x: 0, y: 0, w: 0, h: 0 };
|
|
1510
1727
|
elements.forEach((elem) => {
|
|
@@ -1730,8 +1947,27 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1730
1947
|
}
|
|
1731
1948
|
return result;
|
|
1732
1949
|
}
|
|
1950
|
+
function findElementQueueFromListByPosition(position, list) {
|
|
1951
|
+
const result = [];
|
|
1952
|
+
let tempList = list;
|
|
1953
|
+
for (let i = 0; i < position.length; i++) {
|
|
1954
|
+
const pos = position[i];
|
|
1955
|
+
const item = tempList[pos];
|
|
1956
|
+
if (item) {
|
|
1957
|
+
result.push(item);
|
|
1958
|
+
} else {
|
|
1959
|
+
break;
|
|
1960
|
+
}
|
|
1961
|
+
if (i < position.length - 1 && item.type === "group") {
|
|
1962
|
+
tempList = item.detail.children;
|
|
1963
|
+
} else {
|
|
1964
|
+
break;
|
|
1965
|
+
}
|
|
1966
|
+
}
|
|
1967
|
+
return result;
|
|
1968
|
+
}
|
|
1733
1969
|
function getElementPositionFromList(uuid, elements) {
|
|
1734
|
-
|
|
1970
|
+
const result = [];
|
|
1735
1971
|
let over = false;
|
|
1736
1972
|
const _loop = (list) => {
|
|
1737
1973
|
var _a;
|
|
@@ -2064,6 +2300,10 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2064
2300
|
const topRightCenter = vertexes[1];
|
|
2065
2301
|
const bottomRightCenter = vertexes[2];
|
|
2066
2302
|
const bottomLeftCenter = vertexes[3];
|
|
2303
|
+
const topMiddleSize = createControllerElementSizeFromCenter(topCenter, { size: ctrlSize, angle: totalAngle });
|
|
2304
|
+
const rightMiddleSize = createControllerElementSizeFromCenter(rightCenter, { size: ctrlSize, angle: totalAngle });
|
|
2305
|
+
const bottomMiddleSize = createControllerElementSizeFromCenter(bottomCenter, { size: ctrlSize, angle: totalAngle });
|
|
2306
|
+
const leftMiddleSize = createControllerElementSizeFromCenter(leftCenter, { size: ctrlSize, angle: totalAngle });
|
|
2067
2307
|
const topLeftSize = createControllerElementSizeFromCenter(topLeftCenter, { size: ctrlSize, angle: totalAngle });
|
|
2068
2308
|
const topRightSize = createControllerElementSizeFromCenter(topRightCenter, { size: ctrlSize, angle: totalAngle });
|
|
2069
2309
|
const bottomLeftSize = createControllerElementSizeFromCenter(bottomLeftCenter, { size: ctrlSize, angle: totalAngle });
|
|
@@ -2076,6 +2316,10 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2076
2316
|
const rightVertexes = [topRightVertexes[3], topRightVertexes[2], bottomRightVertexes[1], bottomRightVertexes[0]];
|
|
2077
2317
|
const bottomVertexes = [bottomLeftVertexes[1], bottomRightVertexes[0], bottomRightVertexes[3], bottomLeftVertexes[2]];
|
|
2078
2318
|
const leftVertexes = [topLeftVertexes[3], topLeftVertexes[2], bottomLeftVertexes[1], bottomLeftVertexes[0]];
|
|
2319
|
+
const topMiddleVertexes = calcElementVertexes(topMiddleSize);
|
|
2320
|
+
const rightMiddleVertexes = calcElementVertexes(rightMiddleSize);
|
|
2321
|
+
const bottomMiddleVertexes = calcElementVertexes(bottomMiddleSize);
|
|
2322
|
+
const leftMiddleVertexes = calcElementVertexes(leftMiddleSize);
|
|
2079
2323
|
const sizeController = {
|
|
2080
2324
|
elementWrapper: vertexes,
|
|
2081
2325
|
left: {
|
|
@@ -2117,6 +2361,26 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2117
2361
|
type: "bottom-right",
|
|
2118
2362
|
vertexes: bottomRightVertexes,
|
|
2119
2363
|
center: bottomRightCenter
|
|
2364
|
+
},
|
|
2365
|
+
leftMiddle: {
|
|
2366
|
+
type: "left-middle",
|
|
2367
|
+
vertexes: leftMiddleVertexes,
|
|
2368
|
+
center: leftCenter
|
|
2369
|
+
},
|
|
2370
|
+
rightMiddle: {
|
|
2371
|
+
type: "right-middle",
|
|
2372
|
+
vertexes: rightMiddleVertexes,
|
|
2373
|
+
center: rightCenter
|
|
2374
|
+
},
|
|
2375
|
+
topMiddle: {
|
|
2376
|
+
type: "top-middle",
|
|
2377
|
+
vertexes: topMiddleVertexes,
|
|
2378
|
+
center: topCenter
|
|
2379
|
+
},
|
|
2380
|
+
bottomMiddle: {
|
|
2381
|
+
type: "bottom-middle",
|
|
2382
|
+
vertexes: bottomMiddleVertexes,
|
|
2383
|
+
center: bottomCenter
|
|
2120
2384
|
}
|
|
2121
2385
|
};
|
|
2122
2386
|
return sizeController;
|
|
@@ -2354,6 +2618,7 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2354
2618
|
}
|
|
2355
2619
|
return radian;
|
|
2356
2620
|
}
|
|
2621
|
+
const defaultText = "Text Element";
|
|
2357
2622
|
function getDefaultElementDetailConfig() {
|
|
2358
2623
|
const config = {
|
|
2359
2624
|
boxSizing: "border-box",
|
|
@@ -2383,24 +2648,22 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2383
2648
|
};
|
|
2384
2649
|
return detail;
|
|
2385
2650
|
}
|
|
2386
|
-
function getDefaultElementCircleDetail(
|
|
2651
|
+
function getDefaultElementCircleDetail() {
|
|
2387
2652
|
const detail = {
|
|
2388
2653
|
background: "#D9D9D9",
|
|
2389
2654
|
radius: 0
|
|
2390
2655
|
};
|
|
2391
2656
|
return detail;
|
|
2392
2657
|
}
|
|
2393
|
-
function getDefaultElementTextDetail(
|
|
2394
|
-
var _a;
|
|
2658
|
+
function getDefaultElementTextDetail(elementSize) {
|
|
2395
2659
|
const detailConfig = getDefaultElementDetailConfig();
|
|
2396
|
-
const scale = ((_a = opts == null ? void 0 : opts.viewScaleInfo) == null ? void 0 : _a.scale) || 1;
|
|
2397
2660
|
const detail = {
|
|
2398
|
-
text:
|
|
2661
|
+
text: defaultText,
|
|
2399
2662
|
color: detailConfig.color,
|
|
2400
2663
|
fontFamily: detailConfig.fontFamily,
|
|
2401
2664
|
fontWeight: detailConfig.fontWeight,
|
|
2402
|
-
lineHeight:
|
|
2403
|
-
fontSize:
|
|
2665
|
+
lineHeight: elementSize.w / defaultText.length,
|
|
2666
|
+
fontSize: elementSize.w / defaultText.length,
|
|
2404
2667
|
textAlign: "center",
|
|
2405
2668
|
verticalAlign: "middle"
|
|
2406
2669
|
};
|
|
@@ -2418,7 +2681,7 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2418
2681
|
};
|
|
2419
2682
|
return detail;
|
|
2420
2683
|
}
|
|
2421
|
-
function getDefaultElementGroupDetail(
|
|
2684
|
+
function getDefaultElementGroupDetail() {
|
|
2422
2685
|
const detail = {
|
|
2423
2686
|
children: [],
|
|
2424
2687
|
background: "#D9D9D9",
|
|
@@ -2430,8 +2693,9 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2430
2693
|
function calcViewBoxSize(viewElem, opts) {
|
|
2431
2694
|
const { viewScaleInfo } = opts;
|
|
2432
2695
|
const { scale } = viewScaleInfo;
|
|
2433
|
-
let { borderRadius: borderRadius2
|
|
2434
|
-
|
|
2696
|
+
let { borderRadius: borderRadius2 } = viewElem.detail;
|
|
2697
|
+
const { boxSizing = defaultElemConfig.boxSizing, borderWidth: borderWidth2 } = viewElem.detail;
|
|
2698
|
+
if (Array.isArray(borderWidth2)) {
|
|
2435
2699
|
borderRadius2 = 0;
|
|
2436
2700
|
}
|
|
2437
2701
|
let { x: x2, y: y2, w: w2, h: h2 } = viewElem;
|
|
@@ -2475,9 +2739,105 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2475
2739
|
radiusList
|
|
2476
2740
|
};
|
|
2477
2741
|
}
|
|
2742
|
+
const doNum = (n) => {
|
|
2743
|
+
return formatNumber(n, { decimalPlaces: 4 });
|
|
2744
|
+
};
|
|
2745
|
+
function resizeElementBaseDetail(elem, opts) {
|
|
2746
|
+
const { detail } = elem;
|
|
2747
|
+
const { xRatio, yRatio, maxRatio } = opts;
|
|
2748
|
+
const middleRatio = (xRatio + yRatio) / 2;
|
|
2749
|
+
const { borderWidth: borderWidth2, borderRadius: borderRadius2, borderDash, shadowOffsetX, shadowOffsetY, shadowBlur } = detail;
|
|
2750
|
+
if (typeof borderWidth2 === "number") {
|
|
2751
|
+
detail.borderWidth = doNum(borderWidth2 * middleRatio);
|
|
2752
|
+
} else if (Array.isArray(detail.borderWidth)) {
|
|
2753
|
+
const bw = borderWidth2;
|
|
2754
|
+
detail.borderWidth = [doNum(bw[0] * yRatio), doNum(bw[1] * xRatio), doNum(bw[2] * yRatio), doNum(bw[3] * xRatio)];
|
|
2755
|
+
}
|
|
2756
|
+
if (typeof borderRadius2 === "number") {
|
|
2757
|
+
detail.borderRadius = doNum(borderRadius2 * middleRatio);
|
|
2758
|
+
} else if (Array.isArray(detail.borderRadius)) {
|
|
2759
|
+
const br = borderRadius2;
|
|
2760
|
+
detail.borderRadius = [br[0] * xRatio, br[1] * xRatio, br[2] * yRatio, br[3] * yRatio];
|
|
2761
|
+
}
|
|
2762
|
+
if (Array.isArray(borderDash)) {
|
|
2763
|
+
borderDash.forEach((dash, i) => {
|
|
2764
|
+
detail.borderDash[i] = doNum(dash * maxRatio);
|
|
2765
|
+
});
|
|
2766
|
+
}
|
|
2767
|
+
if (typeof shadowOffsetX === "number") {
|
|
2768
|
+
detail.shadowOffsetX = doNum(shadowOffsetX * maxRatio);
|
|
2769
|
+
}
|
|
2770
|
+
if (typeof shadowOffsetY === "number") {
|
|
2771
|
+
detail.shadowOffsetX = doNum(shadowOffsetY * maxRatio);
|
|
2772
|
+
}
|
|
2773
|
+
if (typeof shadowBlur === "number") {
|
|
2774
|
+
detail.shadowOffsetX = doNum(shadowBlur * maxRatio);
|
|
2775
|
+
}
|
|
2776
|
+
}
|
|
2777
|
+
function resizeElementBase(elem, opts) {
|
|
2778
|
+
const { xRatio, yRatio } = opts;
|
|
2779
|
+
const { x: x2, y: y2, w: w2, h: h2 } = elem;
|
|
2780
|
+
elem.x = doNum(x2 * xRatio);
|
|
2781
|
+
elem.y = doNum(y2 * yRatio);
|
|
2782
|
+
elem.w = doNum(w2 * xRatio);
|
|
2783
|
+
elem.h = doNum(h2 * yRatio);
|
|
2784
|
+
resizeElementBaseDetail(elem, opts);
|
|
2785
|
+
}
|
|
2786
|
+
function resizeTextElementDetail(elem, opts) {
|
|
2787
|
+
const { minRatio, maxRatio } = opts;
|
|
2788
|
+
const { fontSize: fontSize2, lineHeight: lineHeight2 } = elem.detail;
|
|
2789
|
+
const ratio = (minRatio + maxRatio) / 2;
|
|
2790
|
+
if (fontSize2 && fontSize2 > 0) {
|
|
2791
|
+
elem.detail.fontSize = doNum(fontSize2 * ratio);
|
|
2792
|
+
}
|
|
2793
|
+
if (lineHeight2 && lineHeight2 > 0) {
|
|
2794
|
+
elem.detail.lineHeight = doNum(lineHeight2 * ratio);
|
|
2795
|
+
}
|
|
2796
|
+
}
|
|
2797
|
+
function resizeElement(elem, opts) {
|
|
2798
|
+
const { type } = elem;
|
|
2799
|
+
resizeElementBase(elem, opts);
|
|
2800
|
+
if (type === "circle")
|
|
2801
|
+
;
|
|
2802
|
+
else if (type === "text") {
|
|
2803
|
+
resizeTextElementDetail(elem, opts);
|
|
2804
|
+
} else if (type === "image")
|
|
2805
|
+
;
|
|
2806
|
+
else if (type === "svg")
|
|
2807
|
+
;
|
|
2808
|
+
else if (type === "html")
|
|
2809
|
+
;
|
|
2810
|
+
else if (type === "path")
|
|
2811
|
+
;
|
|
2812
|
+
else if (type === "group" && Array.isArray(elem.detail.children)) {
|
|
2813
|
+
elem.detail.children.forEach((child) => {
|
|
2814
|
+
resizeElement(child, opts);
|
|
2815
|
+
});
|
|
2816
|
+
}
|
|
2817
|
+
}
|
|
2818
|
+
function deepResizeGroupElement(elem, size) {
|
|
2819
|
+
const resizeW = size.w && size.w > 0 ? size.w : elem.w;
|
|
2820
|
+
const resizeH = size.h && size.h > 0 ? size.h : elem.h;
|
|
2821
|
+
const xRatio = resizeW / elem.w;
|
|
2822
|
+
const yRatio = resizeH / elem.h;
|
|
2823
|
+
if (xRatio === yRatio && xRatio === 1) {
|
|
2824
|
+
return elem;
|
|
2825
|
+
}
|
|
2826
|
+
const minRatio = Math.min(xRatio, yRatio);
|
|
2827
|
+
const maxRatio = Math.max(xRatio, yRatio);
|
|
2828
|
+
elem.w = resizeW;
|
|
2829
|
+
elem.h = resizeH;
|
|
2830
|
+
const opts = { xRatio, yRatio, minRatio, maxRatio };
|
|
2831
|
+
if (elem.type === "group" && Array.isArray(elem.detail.children)) {
|
|
2832
|
+
elem.detail.children.forEach((child) => {
|
|
2833
|
+
resizeElement(child, opts);
|
|
2834
|
+
});
|
|
2835
|
+
}
|
|
2836
|
+
resizeElementBaseDetail(elem, opts);
|
|
2837
|
+
return elem;
|
|
2838
|
+
}
|
|
2478
2839
|
const defaultViewWidth = 200;
|
|
2479
2840
|
const defaultViewHeight = 200;
|
|
2480
|
-
const defaultDetail = getDefaultElementDetailConfig();
|
|
2481
2841
|
function createElementSize(type, opts) {
|
|
2482
2842
|
let x2 = 0;
|
|
2483
2843
|
let y2 = 0;
|
|
@@ -2487,26 +2847,23 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2487
2847
|
const { viewScaleInfo, viewSizeInfo } = opts;
|
|
2488
2848
|
const { scale, offsetLeft, offsetTop } = viewScaleInfo;
|
|
2489
2849
|
const { width, height } = viewSizeInfo;
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2850
|
+
const limitViewWidth = width / 4;
|
|
2851
|
+
const limitViewHeight = height / 4;
|
|
2852
|
+
if (defaultViewWidth >= limitViewWidth) {
|
|
2853
|
+
w2 = limitViewWidth / scale;
|
|
2494
2854
|
} else {
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
if (["circle", "svg", "image"].includes(type)) {
|
|
2508
|
-
w2 = h2 = Math.max(w2, h2);
|
|
2509
|
-
}
|
|
2855
|
+
w2 = defaultViewWidth / scale;
|
|
2856
|
+
}
|
|
2857
|
+
if (defaultViewHeight >= limitViewHeight) {
|
|
2858
|
+
h2 = limitViewHeight / scale;
|
|
2859
|
+
} else {
|
|
2860
|
+
h2 = defaultViewHeight / scale;
|
|
2861
|
+
}
|
|
2862
|
+
if (["circle", "svg", "image"].includes(type)) {
|
|
2863
|
+
w2 = h2 = Math.max(w2, h2);
|
|
2864
|
+
} else if (type === "text") {
|
|
2865
|
+
const fontSize2 = w2 / defaultText.length;
|
|
2866
|
+
h2 = fontSize2 * 2;
|
|
2510
2867
|
}
|
|
2511
2868
|
x2 = (0 - offsetLeft + width / 2 - w2 * scale / 2) / scale;
|
|
2512
2869
|
y2 = (0 - offsetTop + height / 2 - h2 * scale / 2) / scale;
|
|
@@ -2520,16 +2877,14 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2520
2877
|
return elemSize;
|
|
2521
2878
|
}
|
|
2522
2879
|
function createElement(type, baseElem, opts) {
|
|
2523
|
-
const
|
|
2880
|
+
const elementSize = createElementSize(type, opts);
|
|
2524
2881
|
let detail = {};
|
|
2525
2882
|
if (type === "rect") {
|
|
2526
2883
|
detail = getDefaultElementRectDetail();
|
|
2527
2884
|
} else if (type === "circle") {
|
|
2528
|
-
detail = getDefaultElementCircleDetail(
|
|
2529
|
-
radius: elemSize.w
|
|
2530
|
-
});
|
|
2885
|
+
detail = getDefaultElementCircleDetail();
|
|
2531
2886
|
} else if (type === "text") {
|
|
2532
|
-
detail = getDefaultElementTextDetail(
|
|
2887
|
+
detail = getDefaultElementTextDetail(elementSize);
|
|
2533
2888
|
} else if (type === "svg") {
|
|
2534
2889
|
detail = getDefaultElementSVGDetail();
|
|
2535
2890
|
} else if (type === "image") {
|
|
@@ -2538,7 +2893,7 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2538
2893
|
detail = getDefaultElementGroupDetail();
|
|
2539
2894
|
}
|
|
2540
2895
|
const elem = {
|
|
2541
|
-
...
|
|
2896
|
+
...elementSize,
|
|
2542
2897
|
...baseElem,
|
|
2543
2898
|
uuid: createUUID(),
|
|
2544
2899
|
type,
|
|
@@ -2674,26 +3029,103 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2674
3029
|
return originElem;
|
|
2675
3030
|
}
|
|
2676
3031
|
function updateElementInList(uuid, updateContent, elements) {
|
|
2677
|
-
var _a;
|
|
3032
|
+
var _a, _b;
|
|
2678
3033
|
let targetElement = null;
|
|
2679
3034
|
for (let i = 0; i < elements.length; i++) {
|
|
2680
3035
|
const elem = elements[i];
|
|
2681
3036
|
if (elem.uuid === uuid) {
|
|
3037
|
+
if (elem.type === "group" && ((_a = elem.operations) == null ? void 0 : _a.deepResize) === true) {
|
|
3038
|
+
if (updateContent.w && updateContent.w > 0 || updateContent.h && updateContent.h > 0) {
|
|
3039
|
+
deepResizeGroupElement(elem, {
|
|
3040
|
+
w: updateContent.w,
|
|
3041
|
+
h: updateContent.h
|
|
3042
|
+
});
|
|
3043
|
+
}
|
|
3044
|
+
}
|
|
2682
3045
|
mergeElement(elem, updateContent);
|
|
2683
3046
|
targetElement = elem;
|
|
2684
3047
|
break;
|
|
2685
3048
|
} else if (elem.type === "group") {
|
|
2686
|
-
targetElement = updateElementInList(uuid, updateContent, ((
|
|
3049
|
+
targetElement = updateElementInList(uuid, updateContent, ((_b = elem == null ? void 0 : elem.detail) == null ? void 0 : _b.children) || []);
|
|
2687
3050
|
}
|
|
2688
3051
|
}
|
|
2689
3052
|
return targetElement;
|
|
2690
3053
|
}
|
|
3054
|
+
function calcViewCenterContent(data, opts) {
|
|
3055
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
3056
|
+
let offsetX = 0;
|
|
3057
|
+
let offsetY = 0;
|
|
3058
|
+
let scale = 1;
|
|
3059
|
+
let contentX = ((_b = (_a = data == null ? void 0 : data.elements) == null ? void 0 : _a[0]) == null ? void 0 : _b.x) || 0;
|
|
3060
|
+
let contentY = ((_d = (_c = data == null ? void 0 : data.elements) == null ? void 0 : _c[0]) == null ? void 0 : _d.y) || 0;
|
|
3061
|
+
let contentW = ((_f = (_e = data == null ? void 0 : data.elements) == null ? void 0 : _e[0]) == null ? void 0 : _f.w) || 0;
|
|
3062
|
+
let contentH = ((_h = (_g = data == null ? void 0 : data.elements) == null ? void 0 : _g[0]) == null ? void 0 : _h.h) || 0;
|
|
3063
|
+
const { width, height } = opts.viewSizeInfo;
|
|
3064
|
+
data.elements.forEach((elem) => {
|
|
3065
|
+
const elemSize = {
|
|
3066
|
+
x: elem.x,
|
|
3067
|
+
y: elem.y,
|
|
3068
|
+
w: elem.w,
|
|
3069
|
+
h: elem.h,
|
|
3070
|
+
angle: elem.angle
|
|
3071
|
+
};
|
|
3072
|
+
if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
|
|
3073
|
+
const ves = rotateElementVertexes(elemSize);
|
|
3074
|
+
if (ves.length === 4) {
|
|
3075
|
+
const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
|
|
3076
|
+
const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
|
|
3077
|
+
elemSize.x = Math.min(...xList);
|
|
3078
|
+
elemSize.y = Math.min(...yList);
|
|
3079
|
+
elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
|
|
3080
|
+
elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
|
|
3081
|
+
}
|
|
3082
|
+
}
|
|
3083
|
+
const areaStartX = Math.min(elemSize.x, contentX);
|
|
3084
|
+
const areaStartY = Math.min(elemSize.y, contentY);
|
|
3085
|
+
const areaEndX = Math.max(elemSize.x + elemSize.w, contentX + contentW);
|
|
3086
|
+
const areaEndY = Math.max(elemSize.y + elemSize.h, contentY + contentH);
|
|
3087
|
+
contentX = areaStartX;
|
|
3088
|
+
contentY = areaStartY;
|
|
3089
|
+
contentW = Math.abs(areaEndX - areaStartX);
|
|
3090
|
+
contentH = Math.abs(areaEndY - areaStartY);
|
|
3091
|
+
});
|
|
3092
|
+
if (contentW > 0 && contentH > 0) {
|
|
3093
|
+
const scaleW = formatNumber(width / contentW, { decimalPlaces: 4 });
|
|
3094
|
+
const scaleH = formatNumber(height / contentH, { decimalPlaces: 4 });
|
|
3095
|
+
scale = Math.min(scaleW, scaleH, 1);
|
|
3096
|
+
offsetX = (contentW * scale - width) / 2 / scale + contentX;
|
|
3097
|
+
offsetY = (contentH * scale - height) / 2 / scale + contentY;
|
|
3098
|
+
}
|
|
3099
|
+
const result = {
|
|
3100
|
+
offsetX: formatNumber(offsetX, { decimalPlaces: 0 }),
|
|
3101
|
+
offsetY: formatNumber(offsetY, { decimalPlaces: 0 }),
|
|
3102
|
+
scale
|
|
3103
|
+
};
|
|
3104
|
+
return result;
|
|
3105
|
+
}
|
|
3106
|
+
function calcViewCenter(opts) {
|
|
3107
|
+
let x2 = 0;
|
|
3108
|
+
let y2 = 0;
|
|
3109
|
+
if (opts) {
|
|
3110
|
+
const { viewScaleInfo, viewSizeInfo } = opts;
|
|
3111
|
+
const { offsetLeft, offsetTop, scale } = viewScaleInfo;
|
|
3112
|
+
const { width, height } = viewSizeInfo;
|
|
3113
|
+
x2 = 0 - offsetLeft + width / scale / 2;
|
|
3114
|
+
y2 = 0 - offsetTop + height / scale / 2;
|
|
3115
|
+
}
|
|
3116
|
+
const p = {
|
|
3117
|
+
x: x2,
|
|
3118
|
+
y: y2
|
|
3119
|
+
};
|
|
3120
|
+
return p;
|
|
3121
|
+
}
|
|
2691
3122
|
exports.Context2D = Context2D;
|
|
2692
3123
|
exports.EventEmitter = EventEmitter;
|
|
2693
3124
|
exports.Store = Store;
|
|
2694
3125
|
exports.calcDistance = calcDistance;
|
|
2695
3126
|
exports.calcElementCenter = calcElementCenter;
|
|
2696
3127
|
exports.calcElementCenterFromVertexes = calcElementCenterFromVertexes;
|
|
3128
|
+
exports.calcElementListSize = calcElementListSize;
|
|
2697
3129
|
exports.calcElementQueueVertexesQueueInGroup = calcElementQueueVertexesQueueInGroup;
|
|
2698
3130
|
exports.calcElementSizeController = calcElementSizeController;
|
|
2699
3131
|
exports.calcElementVertexesInGroup = calcElementVertexesInGroup;
|
|
@@ -2702,6 +3134,8 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2702
3134
|
exports.calcElementsViewInfo = calcElementsViewInfo;
|
|
2703
3135
|
exports.calcSpeed = calcSpeed;
|
|
2704
3136
|
exports.calcViewBoxSize = calcViewBoxSize;
|
|
3137
|
+
exports.calcViewCenter = calcViewCenter;
|
|
3138
|
+
exports.calcViewCenterContent = calcViewCenterContent;
|
|
2705
3139
|
exports.calcViewElementSize = calcViewElementSize;
|
|
2706
3140
|
exports.calcViewPointSize = calcViewPointSize;
|
|
2707
3141
|
exports.calcViewScaleInfo = calcViewScaleInfo;
|
|
@@ -2714,21 +3148,27 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2714
3148
|
exports.compose = compose;
|
|
2715
3149
|
exports.compressImage = compressImage;
|
|
2716
3150
|
exports.createAssetId = createAssetId;
|
|
3151
|
+
exports.createBoardContent = createBoardContent;
|
|
2717
3152
|
exports.createContext2D = createContext2D;
|
|
2718
3153
|
exports.createElement = createElement;
|
|
2719
3154
|
exports.createOffscreenContext2D = createOffscreenContext2D;
|
|
2720
3155
|
exports.createUUID = createUUID;
|
|
2721
|
-
exports.
|
|
3156
|
+
exports.debounce = debounce;
|
|
2722
3157
|
exports.deepClone = deepClone;
|
|
3158
|
+
exports.deepCloneElement = deepCloneElement;
|
|
3159
|
+
exports.deepResizeGroupElement = deepResizeGroupElement;
|
|
2723
3160
|
exports.delay = delay;
|
|
2724
3161
|
exports.deleteElementInList = deleteElementInList;
|
|
2725
3162
|
exports.deleteElementInListByPosition = deleteElementInListByPosition;
|
|
3163
|
+
exports.downloadFileFromText = downloadFileFromText;
|
|
2726
3164
|
exports.downloadImageFromCanvas = downloadImageFromCanvas;
|
|
2727
3165
|
exports.equalPoint = equalPoint;
|
|
2728
3166
|
exports.equalTouchPoint = equalTouchPoint;
|
|
3167
|
+
exports.filterCompactData = filterCompactData;
|
|
2729
3168
|
exports.filterElementAsset = filterElementAsset;
|
|
2730
3169
|
exports.findElementFromList = findElementFromList;
|
|
2731
3170
|
exports.findElementFromListByPosition = findElementFromListByPosition;
|
|
3171
|
+
exports.findElementQueueFromListByPosition = findElementQueueFromListByPosition;
|
|
2732
3172
|
exports.findElementsFromList = findElementsFromList;
|
|
2733
3173
|
exports.findElementsFromListByPositions = findElementsFromListByPositions;
|
|
2734
3174
|
exports.formatNumber = formatNumber;
|