@idraw/util 0.4.0-beta.1 → 0.4.0-beta.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/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 +90 -1
- package/dist/esm/lib/element.d.ts +2 -0
- package/dist/esm/lib/element.js +75 -1
- package/dist/esm/lib/event.d.ts +3 -2
- package/dist/esm/lib/event.js +28 -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/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 +10 -0
- package/dist/esm/lib/view-content.js +53 -0
- package/dist/index.global.js +487 -72
- 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
|
}
|
|
@@ -441,8 +489,78 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
441
489
|
const html2 = elem.detail.html;
|
|
442
490
|
const assetUUID = createAssetId(html2);
|
|
443
491
|
if (!assets[assetUUID]) {
|
|
492
|
+
assets[assetUUID] = {
|
|
493
|
+
type: "html",
|
|
494
|
+
value: html2
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
elem.detail.html = assetUUID;
|
|
498
|
+
} else if (elem.type === "group" && Array.isArray(elem.detail.children)) {
|
|
499
|
+
const groupAssets = elem.detail.assets || {};
|
|
500
|
+
Object.keys(groupAssets).forEach((assetId) => {
|
|
501
|
+
if (!assets[assetId]) {
|
|
502
|
+
assets[assetId] = groupAssets[assetId];
|
|
503
|
+
}
|
|
504
|
+
});
|
|
505
|
+
delete elem.detail.assets;
|
|
506
|
+
_scanElements(elem.detail.children);
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
};
|
|
510
|
+
_scanElements(sortedData.elements);
|
|
511
|
+
sortedData.assets = assets;
|
|
512
|
+
return sortedData;
|
|
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 {
|
|
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
|
+
const assetUUID = createAssetId(svg2);
|
|
541
|
+
if (isAssetId(svg2) && !assets[svg2] && loadItemMap[svg2] && typeof ((_b = loadItemMap[svg2]) == null ? void 0 : _b.source) === "string") {
|
|
542
|
+
assets[svg2] = {
|
|
543
|
+
type: "svg",
|
|
544
|
+
value: loadItemMap[svg2].source
|
|
545
|
+
};
|
|
546
|
+
} else if (!assets[assetUUID]) {
|
|
444
547
|
assets[assetUUID] = {
|
|
445
548
|
type: "svg",
|
|
549
|
+
value: svg2
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
elem.detail.svg = assetUUID;
|
|
553
|
+
} else if (elem.type === "html") {
|
|
554
|
+
const html2 = elem.detail.html;
|
|
555
|
+
const assetUUID = createAssetId(html2);
|
|
556
|
+
if (isAssetId(html2) && !assets[html2] && loadItemMap[html2] && typeof ((_c = loadItemMap[html2]) == null ? void 0 : _c.source) === "string") {
|
|
557
|
+
assets[html2] = {
|
|
558
|
+
type: "html",
|
|
559
|
+
value: loadItemMap[html2].source
|
|
560
|
+
};
|
|
561
|
+
} else if (!assets[assetUUID]) {
|
|
562
|
+
assets[assetUUID] = {
|
|
563
|
+
type: "html",
|
|
446
564
|
value: html2
|
|
447
565
|
};
|
|
448
566
|
}
|
|
@@ -808,6 +926,9 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
808
926
|
$getContext() {
|
|
809
927
|
return __privateGet(this, _ctx);
|
|
810
928
|
}
|
|
929
|
+
$setContext(ctx) {
|
|
930
|
+
__privateSet(this, _ctx, ctx);
|
|
931
|
+
}
|
|
811
932
|
$setFont(opts) {
|
|
812
933
|
const strList = [];
|
|
813
934
|
if (opts.fontWeight) {
|
|
@@ -1090,15 +1211,39 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1090
1211
|
});
|
|
1091
1212
|
return context2d;
|
|
1092
1213
|
}
|
|
1093
|
-
function
|
|
1094
|
-
const { width, height, devicePixelRatio, offscreen } = opts;
|
|
1214
|
+
function createBoardContent(canvas, opts) {
|
|
1215
|
+
const { width, height, devicePixelRatio, offscreen, createCustomContext2D } = opts;
|
|
1095
1216
|
const ctxOpts = {
|
|
1096
1217
|
width,
|
|
1097
1218
|
height,
|
|
1098
1219
|
devicePixelRatio
|
|
1099
1220
|
};
|
|
1221
|
+
const ctx = canvas.getContext("2d");
|
|
1222
|
+
if (createCustomContext2D) {
|
|
1223
|
+
const viewContext = createCustomContext2D(ctxOpts);
|
|
1224
|
+
const helperContext = createCustomContext2D(ctxOpts);
|
|
1225
|
+
const underContext = createCustomContext2D(ctxOpts);
|
|
1226
|
+
const boardContext = createContext2D({ ctx, ...ctxOpts });
|
|
1227
|
+
const drawView = () => {
|
|
1228
|
+
const { width: w2, height: h2 } = viewContext.$getSize();
|
|
1229
|
+
boardContext.clearRect(0, 0, w2, h2);
|
|
1230
|
+
boardContext.drawImage(underContext.canvas, 0, 0, w2, h2);
|
|
1231
|
+
boardContext.drawImage(viewContext.canvas, 0, 0, w2, h2);
|
|
1232
|
+
boardContext.drawImage(helperContext.canvas, 0, 0, w2, h2);
|
|
1233
|
+
underContext.clearRect(0, 0, w2, h2);
|
|
1234
|
+
viewContext.clearRect(0, 0, w2, h2);
|
|
1235
|
+
helperContext.clearRect(0, 0, w2, h2);
|
|
1236
|
+
};
|
|
1237
|
+
const content = {
|
|
1238
|
+
underContext,
|
|
1239
|
+
viewContext,
|
|
1240
|
+
helperContext,
|
|
1241
|
+
boardContext,
|
|
1242
|
+
drawView
|
|
1243
|
+
};
|
|
1244
|
+
return content;
|
|
1245
|
+
}
|
|
1100
1246
|
if (offscreen === true) {
|
|
1101
|
-
const ctx = canvas.getContext("2d");
|
|
1102
1247
|
const viewContext = createOffscreenContext2D(ctxOpts);
|
|
1103
1248
|
const helperContext = createOffscreenContext2D(ctxOpts);
|
|
1104
1249
|
const underContext = createOffscreenContext2D(ctxOpts);
|
|
@@ -1122,7 +1267,6 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1122
1267
|
};
|
|
1123
1268
|
return content;
|
|
1124
1269
|
} else {
|
|
1125
|
-
const ctx = canvas.getContext("2d");
|
|
1126
1270
|
const viewContext = createContext2D(ctxOpts);
|
|
1127
1271
|
const helperContext = createContext2D(ctxOpts);
|
|
1128
1272
|
const underContext = createContext2D(ctxOpts);
|
|
@@ -1148,20 +1292,21 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1148
1292
|
}
|
|
1149
1293
|
class EventEmitter {
|
|
1150
1294
|
constructor() {
|
|
1151
|
-
this
|
|
1295
|
+
__privateAdd(this, _listeners, void 0);
|
|
1296
|
+
__privateSet(this, _listeners, /* @__PURE__ */ new Map());
|
|
1152
1297
|
}
|
|
1153
1298
|
on(eventKey, callback) {
|
|
1154
|
-
if (this
|
|
1155
|
-
const callbacks = this
|
|
1299
|
+
if (__privateGet(this, _listeners).has(eventKey)) {
|
|
1300
|
+
const callbacks = __privateGet(this, _listeners).get(eventKey) || [];
|
|
1156
1301
|
callbacks == null ? void 0 : callbacks.push(callback);
|
|
1157
|
-
this
|
|
1302
|
+
__privateGet(this, _listeners).set(eventKey, callbacks);
|
|
1158
1303
|
} else {
|
|
1159
|
-
this
|
|
1304
|
+
__privateGet(this, _listeners).set(eventKey, [callback]);
|
|
1160
1305
|
}
|
|
1161
1306
|
}
|
|
1162
1307
|
off(eventKey, callback) {
|
|
1163
|
-
if (this
|
|
1164
|
-
const callbacks = this
|
|
1308
|
+
if (__privateGet(this, _listeners).has(eventKey)) {
|
|
1309
|
+
const callbacks = __privateGet(this, _listeners).get(eventKey);
|
|
1165
1310
|
if (Array.isArray(callbacks)) {
|
|
1166
1311
|
for (let i = 0; i < (callbacks == null ? void 0 : callbacks.length); i++) {
|
|
1167
1312
|
if (callbacks[i] === callback) {
|
|
@@ -1170,11 +1315,11 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1170
1315
|
}
|
|
1171
1316
|
}
|
|
1172
1317
|
}
|
|
1173
|
-
this
|
|
1318
|
+
__privateGet(this, _listeners).set(eventKey, callbacks || []);
|
|
1174
1319
|
}
|
|
1175
1320
|
}
|
|
1176
1321
|
trigger(eventKey, e) {
|
|
1177
|
-
const callbacks = this
|
|
1322
|
+
const callbacks = __privateGet(this, _listeners).get(eventKey);
|
|
1178
1323
|
if (Array.isArray(callbacks)) {
|
|
1179
1324
|
callbacks.forEach((cb) => {
|
|
1180
1325
|
cb(e);
|
|
@@ -1185,15 +1330,19 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1185
1330
|
}
|
|
1186
1331
|
}
|
|
1187
1332
|
has(name) {
|
|
1188
|
-
if (this
|
|
1189
|
-
const list = this
|
|
1333
|
+
if (__privateGet(this, _listeners).has(name)) {
|
|
1334
|
+
const list = __privateGet(this, _listeners).get(name);
|
|
1190
1335
|
if (Array.isArray(list) && list.length > 0) {
|
|
1191
1336
|
return true;
|
|
1192
1337
|
}
|
|
1193
1338
|
}
|
|
1194
1339
|
return false;
|
|
1195
1340
|
}
|
|
1341
|
+
destroy() {
|
|
1342
|
+
__privateGet(this, _listeners).clear();
|
|
1343
|
+
}
|
|
1196
1344
|
}
|
|
1345
|
+
_listeners = new WeakMap();
|
|
1197
1346
|
function calcDistance(start, end) {
|
|
1198
1347
|
const distance = (start.x - end.x) * (start.x - end.x) + (start.y - end.y) * (start.y - end.y);
|
|
1199
1348
|
return distance === 0 ? distance : Math.sqrt(distance);
|
|
@@ -1226,25 +1375,34 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1226
1375
|
}
|
|
1227
1376
|
class Store {
|
|
1228
1377
|
constructor(opts) {
|
|
1229
|
-
this
|
|
1230
|
-
this
|
|
1378
|
+
__privateAdd(this, _createTempStorage);
|
|
1379
|
+
__privateAdd(this, _temp, void 0);
|
|
1380
|
+
__privateAdd(this, _backUpDefaultStorage, void 0);
|
|
1381
|
+
__privateSet(this, _backUpDefaultStorage, deepClone(opts.defaultStorage));
|
|
1382
|
+
__privateSet(this, _temp, __privateMethod(this, _createTempStorage, createTempStorage_fn).call(this));
|
|
1231
1383
|
}
|
|
1232
1384
|
set(name, value) {
|
|
1233
|
-
this
|
|
1385
|
+
__privateGet(this, _temp)[name] = value;
|
|
1234
1386
|
}
|
|
1235
1387
|
get(name) {
|
|
1236
|
-
return this
|
|
1388
|
+
return __privateGet(this, _temp)[name];
|
|
1237
1389
|
}
|
|
1238
1390
|
getSnapshot() {
|
|
1239
|
-
return deepClone(this
|
|
1391
|
+
return deepClone(__privateGet(this, _temp));
|
|
1240
1392
|
}
|
|
1241
1393
|
clear() {
|
|
1242
|
-
this
|
|
1394
|
+
__privateSet(this, _temp, __privateMethod(this, _createTempStorage, createTempStorage_fn).call(this));
|
|
1243
1395
|
}
|
|
1244
|
-
|
|
1245
|
-
|
|
1396
|
+
destroy() {
|
|
1397
|
+
__privateSet(this, _temp, null);
|
|
1246
1398
|
}
|
|
1247
1399
|
}
|
|
1400
|
+
_temp = new WeakMap();
|
|
1401
|
+
_backUpDefaultStorage = new WeakMap();
|
|
1402
|
+
_createTempStorage = new WeakSet();
|
|
1403
|
+
createTempStorage_fn = function() {
|
|
1404
|
+
return deepClone(__privateGet(this, _backUpDefaultStorage));
|
|
1405
|
+
};
|
|
1248
1406
|
function getViewScaleInfoFromSnapshot(snapshot) {
|
|
1249
1407
|
const { activeStore } = snapshot;
|
|
1250
1408
|
const sacelInfo = {
|
|
@@ -1505,6 +1663,58 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1505
1663
|
}
|
|
1506
1664
|
return isValid;
|
|
1507
1665
|
}
|
|
1666
|
+
function calcElementListSize(list) {
|
|
1667
|
+
var _a;
|
|
1668
|
+
const area = { x: 0, y: 0, w: 0, h: 0 };
|
|
1669
|
+
let prevElemSize = null;
|
|
1670
|
+
for (let i = 0; i < list.length; i++) {
|
|
1671
|
+
const elem = list[i];
|
|
1672
|
+
if ((_a = elem == null ? void 0 : elem.operations) == null ? void 0 : _a.invisible) {
|
|
1673
|
+
continue;
|
|
1674
|
+
}
|
|
1675
|
+
const elemSize = {
|
|
1676
|
+
x: elem.x,
|
|
1677
|
+
y: elem.y,
|
|
1678
|
+
w: elem.w,
|
|
1679
|
+
h: elem.h,
|
|
1680
|
+
angle: elem.angle || 0
|
|
1681
|
+
};
|
|
1682
|
+
if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
|
|
1683
|
+
const ves = rotateElementVertexes(elemSize);
|
|
1684
|
+
if (ves.length === 4) {
|
|
1685
|
+
const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
|
|
1686
|
+
const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
|
|
1687
|
+
elemSize.x = Math.min(...xList);
|
|
1688
|
+
elemSize.y = Math.min(...yList);
|
|
1689
|
+
elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
|
|
1690
|
+
elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
|
|
1691
|
+
}
|
|
1692
|
+
}
|
|
1693
|
+
if (prevElemSize) {
|
|
1694
|
+
const areaStartX = Math.min(elemSize.x, area.x);
|
|
1695
|
+
const areaStartY = Math.min(elemSize.y, area.y);
|
|
1696
|
+
const areaEndX = Math.max(elemSize.x + elemSize.w, area.x + area.w);
|
|
1697
|
+
const areaEndY = Math.max(elemSize.y + elemSize.h, area.y + area.h);
|
|
1698
|
+
area.x = areaStartX;
|
|
1699
|
+
area.y = areaStartY;
|
|
1700
|
+
area.w = Math.abs(areaEndX - areaStartX);
|
|
1701
|
+
area.h = Math.abs(areaEndY - areaStartY);
|
|
1702
|
+
} else {
|
|
1703
|
+
area.x = elemSize.x;
|
|
1704
|
+
area.y = elemSize.y;
|
|
1705
|
+
area.w = elemSize.w;
|
|
1706
|
+
area.h = elemSize.h;
|
|
1707
|
+
}
|
|
1708
|
+
prevElemSize = elemSize;
|
|
1709
|
+
}
|
|
1710
|
+
const listSize = {
|
|
1711
|
+
x: Math.floor(area.x),
|
|
1712
|
+
y: Math.floor(area.y),
|
|
1713
|
+
w: Math.ceil(area.w),
|
|
1714
|
+
h: Math.ceil(area.h)
|
|
1715
|
+
};
|
|
1716
|
+
return listSize;
|
|
1717
|
+
}
|
|
1508
1718
|
function calcElementsContextSize(elements, opts) {
|
|
1509
1719
|
const area = { x: 0, y: 0, w: 0, h: 0 };
|
|
1510
1720
|
elements.forEach((elem) => {
|
|
@@ -1730,8 +1940,27 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
1730
1940
|
}
|
|
1731
1941
|
return result;
|
|
1732
1942
|
}
|
|
1943
|
+
function findElementQueueFromListByPosition(position, list) {
|
|
1944
|
+
const result = [];
|
|
1945
|
+
let tempList = list;
|
|
1946
|
+
for (let i = 0; i < position.length; i++) {
|
|
1947
|
+
const pos = position[i];
|
|
1948
|
+
const item = tempList[pos];
|
|
1949
|
+
if (item) {
|
|
1950
|
+
result.push(item);
|
|
1951
|
+
} else {
|
|
1952
|
+
break;
|
|
1953
|
+
}
|
|
1954
|
+
if (i < position.length - 1 && item.type === "group") {
|
|
1955
|
+
tempList = item.detail.children;
|
|
1956
|
+
} else {
|
|
1957
|
+
break;
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
return result;
|
|
1961
|
+
}
|
|
1733
1962
|
function getElementPositionFromList(uuid, elements) {
|
|
1734
|
-
|
|
1963
|
+
const result = [];
|
|
1735
1964
|
let over = false;
|
|
1736
1965
|
const _loop = (list) => {
|
|
1737
1966
|
var _a;
|
|
@@ -2064,6 +2293,10 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2064
2293
|
const topRightCenter = vertexes[1];
|
|
2065
2294
|
const bottomRightCenter = vertexes[2];
|
|
2066
2295
|
const bottomLeftCenter = vertexes[3];
|
|
2296
|
+
const topMiddleSize = createControllerElementSizeFromCenter(topCenter, { size: ctrlSize, angle: totalAngle });
|
|
2297
|
+
const rightMiddleSize = createControllerElementSizeFromCenter(rightCenter, { size: ctrlSize, angle: totalAngle });
|
|
2298
|
+
const bottomMiddleSize = createControllerElementSizeFromCenter(bottomCenter, { size: ctrlSize, angle: totalAngle });
|
|
2299
|
+
const leftMiddleSize = createControllerElementSizeFromCenter(leftCenter, { size: ctrlSize, angle: totalAngle });
|
|
2067
2300
|
const topLeftSize = createControllerElementSizeFromCenter(topLeftCenter, { size: ctrlSize, angle: totalAngle });
|
|
2068
2301
|
const topRightSize = createControllerElementSizeFromCenter(topRightCenter, { size: ctrlSize, angle: totalAngle });
|
|
2069
2302
|
const bottomLeftSize = createControllerElementSizeFromCenter(bottomLeftCenter, { size: ctrlSize, angle: totalAngle });
|
|
@@ -2076,6 +2309,10 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2076
2309
|
const rightVertexes = [topRightVertexes[3], topRightVertexes[2], bottomRightVertexes[1], bottomRightVertexes[0]];
|
|
2077
2310
|
const bottomVertexes = [bottomLeftVertexes[1], bottomRightVertexes[0], bottomRightVertexes[3], bottomLeftVertexes[2]];
|
|
2078
2311
|
const leftVertexes = [topLeftVertexes[3], topLeftVertexes[2], bottomLeftVertexes[1], bottomLeftVertexes[0]];
|
|
2312
|
+
const topMiddleVertexes = calcElementVertexes(topMiddleSize);
|
|
2313
|
+
const rightMiddleVertexes = calcElementVertexes(rightMiddleSize);
|
|
2314
|
+
const bottomMiddleVertexes = calcElementVertexes(bottomMiddleSize);
|
|
2315
|
+
const leftMiddleVertexes = calcElementVertexes(leftMiddleSize);
|
|
2079
2316
|
const sizeController = {
|
|
2080
2317
|
elementWrapper: vertexes,
|
|
2081
2318
|
left: {
|
|
@@ -2117,6 +2354,26 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2117
2354
|
type: "bottom-right",
|
|
2118
2355
|
vertexes: bottomRightVertexes,
|
|
2119
2356
|
center: bottomRightCenter
|
|
2357
|
+
},
|
|
2358
|
+
leftMiddle: {
|
|
2359
|
+
type: "left-middle",
|
|
2360
|
+
vertexes: leftMiddleVertexes,
|
|
2361
|
+
center: leftCenter
|
|
2362
|
+
},
|
|
2363
|
+
rightMiddle: {
|
|
2364
|
+
type: "right-middle",
|
|
2365
|
+
vertexes: rightMiddleVertexes,
|
|
2366
|
+
center: rightCenter
|
|
2367
|
+
},
|
|
2368
|
+
topMiddle: {
|
|
2369
|
+
type: "top-middle",
|
|
2370
|
+
vertexes: topMiddleVertexes,
|
|
2371
|
+
center: topCenter
|
|
2372
|
+
},
|
|
2373
|
+
bottomMiddle: {
|
|
2374
|
+
type: "bottom-middle",
|
|
2375
|
+
vertexes: bottomMiddleVertexes,
|
|
2376
|
+
center: bottomCenter
|
|
2120
2377
|
}
|
|
2121
2378
|
};
|
|
2122
2379
|
return sizeController;
|
|
@@ -2354,6 +2611,7 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2354
2611
|
}
|
|
2355
2612
|
return radian;
|
|
2356
2613
|
}
|
|
2614
|
+
const defaultText = "Text Element";
|
|
2357
2615
|
function getDefaultElementDetailConfig() {
|
|
2358
2616
|
const config = {
|
|
2359
2617
|
boxSizing: "border-box",
|
|
@@ -2383,24 +2641,22 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2383
2641
|
};
|
|
2384
2642
|
return detail;
|
|
2385
2643
|
}
|
|
2386
|
-
function getDefaultElementCircleDetail(
|
|
2644
|
+
function getDefaultElementCircleDetail() {
|
|
2387
2645
|
const detail = {
|
|
2388
2646
|
background: "#D9D9D9",
|
|
2389
2647
|
radius: 0
|
|
2390
2648
|
};
|
|
2391
2649
|
return detail;
|
|
2392
2650
|
}
|
|
2393
|
-
function getDefaultElementTextDetail(
|
|
2394
|
-
var _a;
|
|
2651
|
+
function getDefaultElementTextDetail(elementSize) {
|
|
2395
2652
|
const detailConfig = getDefaultElementDetailConfig();
|
|
2396
|
-
const scale = ((_a = opts == null ? void 0 : opts.viewScaleInfo) == null ? void 0 : _a.scale) || 1;
|
|
2397
2653
|
const detail = {
|
|
2398
|
-
text:
|
|
2654
|
+
text: defaultText,
|
|
2399
2655
|
color: detailConfig.color,
|
|
2400
2656
|
fontFamily: detailConfig.fontFamily,
|
|
2401
2657
|
fontWeight: detailConfig.fontWeight,
|
|
2402
|
-
lineHeight:
|
|
2403
|
-
fontSize:
|
|
2658
|
+
lineHeight: elementSize.w / defaultText.length,
|
|
2659
|
+
fontSize: elementSize.w / defaultText.length,
|
|
2404
2660
|
textAlign: "center",
|
|
2405
2661
|
verticalAlign: "middle"
|
|
2406
2662
|
};
|
|
@@ -2418,7 +2674,7 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2418
2674
|
};
|
|
2419
2675
|
return detail;
|
|
2420
2676
|
}
|
|
2421
|
-
function getDefaultElementGroupDetail(
|
|
2677
|
+
function getDefaultElementGroupDetail() {
|
|
2422
2678
|
const detail = {
|
|
2423
2679
|
children: [],
|
|
2424
2680
|
background: "#D9D9D9",
|
|
@@ -2430,8 +2686,9 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2430
2686
|
function calcViewBoxSize(viewElem, opts) {
|
|
2431
2687
|
const { viewScaleInfo } = opts;
|
|
2432
2688
|
const { scale } = viewScaleInfo;
|
|
2433
|
-
let { borderRadius: borderRadius2
|
|
2434
|
-
|
|
2689
|
+
let { borderRadius: borderRadius2 } = viewElem.detail;
|
|
2690
|
+
const { boxSizing = defaultElemConfig.boxSizing, borderWidth: borderWidth2 } = viewElem.detail;
|
|
2691
|
+
if (Array.isArray(borderWidth2)) {
|
|
2435
2692
|
borderRadius2 = 0;
|
|
2436
2693
|
}
|
|
2437
2694
|
let { x: x2, y: y2, w: w2, h: h2 } = viewElem;
|
|
@@ -2475,9 +2732,105 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2475
2732
|
radiusList
|
|
2476
2733
|
};
|
|
2477
2734
|
}
|
|
2735
|
+
const doNum = (n) => {
|
|
2736
|
+
return formatNumber(n, { decimalPlaces: 4 });
|
|
2737
|
+
};
|
|
2738
|
+
function resizeElementBaseDetail(elem, opts) {
|
|
2739
|
+
const { detail } = elem;
|
|
2740
|
+
const { xRatio, yRatio, maxRatio } = opts;
|
|
2741
|
+
const middleRatio = (xRatio + yRatio) / 2;
|
|
2742
|
+
const { borderWidth: borderWidth2, borderRadius: borderRadius2, borderDash, shadowOffsetX, shadowOffsetY, shadowBlur } = detail;
|
|
2743
|
+
if (typeof borderWidth2 === "number") {
|
|
2744
|
+
detail.borderWidth = doNum(borderWidth2 * middleRatio);
|
|
2745
|
+
} else if (Array.isArray(detail.borderWidth)) {
|
|
2746
|
+
const bw = borderWidth2;
|
|
2747
|
+
detail.borderWidth = [doNum(bw[0] * yRatio), doNum(bw[1] * xRatio), doNum(bw[2] * yRatio), doNum(bw[3] * xRatio)];
|
|
2748
|
+
}
|
|
2749
|
+
if (typeof borderRadius2 === "number") {
|
|
2750
|
+
detail.borderRadius = doNum(borderRadius2 * middleRatio);
|
|
2751
|
+
} else if (Array.isArray(detail.borderRadius)) {
|
|
2752
|
+
const br = borderRadius2;
|
|
2753
|
+
detail.borderRadius = [br[0] * xRatio, br[1] * xRatio, br[2] * yRatio, br[3] * yRatio];
|
|
2754
|
+
}
|
|
2755
|
+
if (Array.isArray(borderDash)) {
|
|
2756
|
+
borderDash.forEach((dash, i) => {
|
|
2757
|
+
detail.borderDash[i] = doNum(dash * maxRatio);
|
|
2758
|
+
});
|
|
2759
|
+
}
|
|
2760
|
+
if (typeof shadowOffsetX === "number") {
|
|
2761
|
+
detail.shadowOffsetX = doNum(shadowOffsetX * maxRatio);
|
|
2762
|
+
}
|
|
2763
|
+
if (typeof shadowOffsetY === "number") {
|
|
2764
|
+
detail.shadowOffsetX = doNum(shadowOffsetY * maxRatio);
|
|
2765
|
+
}
|
|
2766
|
+
if (typeof shadowBlur === "number") {
|
|
2767
|
+
detail.shadowOffsetX = doNum(shadowBlur * maxRatio);
|
|
2768
|
+
}
|
|
2769
|
+
}
|
|
2770
|
+
function resizeElementBase(elem, opts) {
|
|
2771
|
+
const { xRatio, yRatio } = opts;
|
|
2772
|
+
const { x: x2, y: y2, w: w2, h: h2 } = elem;
|
|
2773
|
+
elem.x = doNum(x2 * xRatio);
|
|
2774
|
+
elem.y = doNum(y2 * yRatio);
|
|
2775
|
+
elem.w = doNum(w2 * xRatio);
|
|
2776
|
+
elem.h = doNum(h2 * yRatio);
|
|
2777
|
+
resizeElementBaseDetail(elem, opts);
|
|
2778
|
+
}
|
|
2779
|
+
function resizeTextElementDetail(elem, opts) {
|
|
2780
|
+
const { minRatio, maxRatio } = opts;
|
|
2781
|
+
const { fontSize: fontSize2, lineHeight: lineHeight2 } = elem.detail;
|
|
2782
|
+
const ratio = (minRatio + maxRatio) / 2;
|
|
2783
|
+
if (fontSize2 && fontSize2 > 0) {
|
|
2784
|
+
elem.detail.fontSize = doNum(fontSize2 * ratio);
|
|
2785
|
+
}
|
|
2786
|
+
if (lineHeight2 && lineHeight2 > 0) {
|
|
2787
|
+
elem.detail.lineHeight = doNum(lineHeight2 * ratio);
|
|
2788
|
+
}
|
|
2789
|
+
}
|
|
2790
|
+
function resizeElement(elem, opts) {
|
|
2791
|
+
const { type } = elem;
|
|
2792
|
+
resizeElementBase(elem, opts);
|
|
2793
|
+
if (type === "circle")
|
|
2794
|
+
;
|
|
2795
|
+
else if (type === "text") {
|
|
2796
|
+
resizeTextElementDetail(elem, opts);
|
|
2797
|
+
} else if (type === "image")
|
|
2798
|
+
;
|
|
2799
|
+
else if (type === "svg")
|
|
2800
|
+
;
|
|
2801
|
+
else if (type === "html")
|
|
2802
|
+
;
|
|
2803
|
+
else if (type === "path")
|
|
2804
|
+
;
|
|
2805
|
+
else if (type === "group" && Array.isArray(elem.detail.children)) {
|
|
2806
|
+
elem.detail.children.forEach((child) => {
|
|
2807
|
+
resizeElement(child, opts);
|
|
2808
|
+
});
|
|
2809
|
+
}
|
|
2810
|
+
}
|
|
2811
|
+
function deepResizeGroupElement(elem, size) {
|
|
2812
|
+
const resizeW = size.w && size.w > 0 ? size.w : elem.w;
|
|
2813
|
+
const resizeH = size.h && size.h > 0 ? size.h : elem.h;
|
|
2814
|
+
const xRatio = resizeW / elem.w;
|
|
2815
|
+
const yRatio = resizeH / elem.h;
|
|
2816
|
+
if (xRatio === yRatio && xRatio === 1) {
|
|
2817
|
+
return elem;
|
|
2818
|
+
}
|
|
2819
|
+
const minRatio = Math.min(xRatio, yRatio);
|
|
2820
|
+
const maxRatio = Math.max(xRatio, yRatio);
|
|
2821
|
+
elem.w = resizeW;
|
|
2822
|
+
elem.h = resizeH;
|
|
2823
|
+
const opts = { xRatio, yRatio, minRatio, maxRatio };
|
|
2824
|
+
if (elem.type === "group" && Array.isArray(elem.detail.children)) {
|
|
2825
|
+
elem.detail.children.forEach((child) => {
|
|
2826
|
+
resizeElement(child, opts);
|
|
2827
|
+
});
|
|
2828
|
+
}
|
|
2829
|
+
resizeElementBaseDetail(elem, opts);
|
|
2830
|
+
return elem;
|
|
2831
|
+
}
|
|
2478
2832
|
const defaultViewWidth = 200;
|
|
2479
2833
|
const defaultViewHeight = 200;
|
|
2480
|
-
const defaultDetail = getDefaultElementDetailConfig();
|
|
2481
2834
|
function createElementSize(type, opts) {
|
|
2482
2835
|
let x2 = 0;
|
|
2483
2836
|
let y2 = 0;
|
|
@@ -2487,26 +2840,23 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2487
2840
|
const { viewScaleInfo, viewSizeInfo } = opts;
|
|
2488
2841
|
const { scale, offsetLeft, offsetTop } = viewScaleInfo;
|
|
2489
2842
|
const { width, height } = viewSizeInfo;
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2843
|
+
const limitViewWidth = width / 4;
|
|
2844
|
+
const limitViewHeight = height / 4;
|
|
2845
|
+
if (defaultViewWidth >= limitViewWidth) {
|
|
2846
|
+
w2 = limitViewWidth / scale;
|
|
2494
2847
|
} 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
|
-
}
|
|
2848
|
+
w2 = defaultViewWidth / scale;
|
|
2849
|
+
}
|
|
2850
|
+
if (defaultViewHeight >= limitViewHeight) {
|
|
2851
|
+
h2 = limitViewHeight / scale;
|
|
2852
|
+
} else {
|
|
2853
|
+
h2 = defaultViewHeight / scale;
|
|
2854
|
+
}
|
|
2855
|
+
if (["circle", "svg", "image"].includes(type)) {
|
|
2856
|
+
w2 = h2 = Math.max(w2, h2);
|
|
2857
|
+
} else if (type === "text") {
|
|
2858
|
+
const fontSize2 = w2 / defaultText.length;
|
|
2859
|
+
h2 = fontSize2 * 2;
|
|
2510
2860
|
}
|
|
2511
2861
|
x2 = (0 - offsetLeft + width / 2 - w2 * scale / 2) / scale;
|
|
2512
2862
|
y2 = (0 - offsetTop + height / 2 - h2 * scale / 2) / scale;
|
|
@@ -2520,16 +2870,14 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2520
2870
|
return elemSize;
|
|
2521
2871
|
}
|
|
2522
2872
|
function createElement(type, baseElem, opts) {
|
|
2523
|
-
const
|
|
2873
|
+
const elementSize = createElementSize(type, opts);
|
|
2524
2874
|
let detail = {};
|
|
2525
2875
|
if (type === "rect") {
|
|
2526
2876
|
detail = getDefaultElementRectDetail();
|
|
2527
2877
|
} else if (type === "circle") {
|
|
2528
|
-
detail = getDefaultElementCircleDetail(
|
|
2529
|
-
radius: elemSize.w
|
|
2530
|
-
});
|
|
2878
|
+
detail = getDefaultElementCircleDetail();
|
|
2531
2879
|
} else if (type === "text") {
|
|
2532
|
-
detail = getDefaultElementTextDetail(
|
|
2880
|
+
detail = getDefaultElementTextDetail(elementSize);
|
|
2533
2881
|
} else if (type === "svg") {
|
|
2534
2882
|
detail = getDefaultElementSVGDetail();
|
|
2535
2883
|
} else if (type === "image") {
|
|
@@ -2538,7 +2886,7 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2538
2886
|
detail = getDefaultElementGroupDetail();
|
|
2539
2887
|
}
|
|
2540
2888
|
const elem = {
|
|
2541
|
-
...
|
|
2889
|
+
...elementSize,
|
|
2542
2890
|
...baseElem,
|
|
2543
2891
|
uuid: createUUID(),
|
|
2544
2892
|
type,
|
|
@@ -2674,26 +3022,86 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2674
3022
|
return originElem;
|
|
2675
3023
|
}
|
|
2676
3024
|
function updateElementInList(uuid, updateContent, elements) {
|
|
2677
|
-
var _a;
|
|
3025
|
+
var _a, _b;
|
|
2678
3026
|
let targetElement = null;
|
|
2679
3027
|
for (let i = 0; i < elements.length; i++) {
|
|
2680
3028
|
const elem = elements[i];
|
|
2681
3029
|
if (elem.uuid === uuid) {
|
|
3030
|
+
if (elem.type === "group" && ((_a = elem.operations) == null ? void 0 : _a.deepResize) === true) {
|
|
3031
|
+
if (updateContent.w && updateContent.w > 0 || updateContent.h && updateContent.h > 0) {
|
|
3032
|
+
deepResizeGroupElement(elem, {
|
|
3033
|
+
w: updateContent.w,
|
|
3034
|
+
h: updateContent.h
|
|
3035
|
+
});
|
|
3036
|
+
}
|
|
3037
|
+
}
|
|
2682
3038
|
mergeElement(elem, updateContent);
|
|
2683
3039
|
targetElement = elem;
|
|
2684
3040
|
break;
|
|
2685
3041
|
} else if (elem.type === "group") {
|
|
2686
|
-
targetElement = updateElementInList(uuid, updateContent, ((
|
|
3042
|
+
targetElement = updateElementInList(uuid, updateContent, ((_b = elem == null ? void 0 : elem.detail) == null ? void 0 : _b.children) || []);
|
|
2687
3043
|
}
|
|
2688
3044
|
}
|
|
2689
3045
|
return targetElement;
|
|
2690
3046
|
}
|
|
3047
|
+
function calcViewCenterContent(data, opts) {
|
|
3048
|
+
let offsetX = 0;
|
|
3049
|
+
let offsetY = 0;
|
|
3050
|
+
let scale = 0;
|
|
3051
|
+
let contentX = 0;
|
|
3052
|
+
let contentY = 0;
|
|
3053
|
+
let contentW = 0;
|
|
3054
|
+
let contentH = 0;
|
|
3055
|
+
const { width, height } = opts.viewSizeInfo;
|
|
3056
|
+
data.elements.forEach((elem) => {
|
|
3057
|
+
const elemSize = {
|
|
3058
|
+
x: elem.x,
|
|
3059
|
+
y: elem.y,
|
|
3060
|
+
w: elem.w,
|
|
3061
|
+
h: elem.h,
|
|
3062
|
+
angle: elem.angle
|
|
3063
|
+
};
|
|
3064
|
+
if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
|
|
3065
|
+
const ves = rotateElementVertexes(elemSize);
|
|
3066
|
+
if (ves.length === 4) {
|
|
3067
|
+
const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
|
|
3068
|
+
const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
|
|
3069
|
+
elemSize.x = Math.min(...xList);
|
|
3070
|
+
elemSize.y = Math.min(...yList);
|
|
3071
|
+
elemSize.w = Math.abs(Math.max(...xList) - Math.min(...xList));
|
|
3072
|
+
elemSize.h = Math.abs(Math.max(...yList) - Math.min(...yList));
|
|
3073
|
+
}
|
|
3074
|
+
}
|
|
3075
|
+
const areaStartX = Math.min(elemSize.x, contentX);
|
|
3076
|
+
const areaStartY = Math.min(elemSize.y, contentY);
|
|
3077
|
+
const areaEndX = Math.max(elemSize.x + elemSize.w, contentX + contentW);
|
|
3078
|
+
const areaEndY = Math.max(elemSize.y + elemSize.h, contentY + contentH);
|
|
3079
|
+
contentX = areaStartX;
|
|
3080
|
+
contentY = areaStartY;
|
|
3081
|
+
contentW = Math.abs(areaEndX - areaStartX);
|
|
3082
|
+
contentH = Math.abs(areaEndY - areaStartY);
|
|
3083
|
+
});
|
|
3084
|
+
if (contentW > 0 && contentH > 0) {
|
|
3085
|
+
const scaleW = formatNumber(width / contentW, { decimalPlaces: 4 });
|
|
3086
|
+
const scaleH = formatNumber(height / contentH, { decimalPlaces: 4 });
|
|
3087
|
+
scale = Math.min(scaleW, scaleH, 1);
|
|
3088
|
+
offsetX = (contentW * scale - width) / 2 / scale;
|
|
3089
|
+
offsetY = (contentH * scale - height) / 2 / scale;
|
|
3090
|
+
}
|
|
3091
|
+
const result = {
|
|
3092
|
+
offsetX: formatNumber(offsetX, { decimalPlaces: 0 }),
|
|
3093
|
+
offsetY: formatNumber(offsetY, { decimalPlaces: 0 }),
|
|
3094
|
+
scale
|
|
3095
|
+
};
|
|
3096
|
+
return result;
|
|
3097
|
+
}
|
|
2691
3098
|
exports.Context2D = Context2D;
|
|
2692
3099
|
exports.EventEmitter = EventEmitter;
|
|
2693
3100
|
exports.Store = Store;
|
|
2694
3101
|
exports.calcDistance = calcDistance;
|
|
2695
3102
|
exports.calcElementCenter = calcElementCenter;
|
|
2696
3103
|
exports.calcElementCenterFromVertexes = calcElementCenterFromVertexes;
|
|
3104
|
+
exports.calcElementListSize = calcElementListSize;
|
|
2697
3105
|
exports.calcElementQueueVertexesQueueInGroup = calcElementQueueVertexesQueueInGroup;
|
|
2698
3106
|
exports.calcElementSizeController = calcElementSizeController;
|
|
2699
3107
|
exports.calcElementVertexesInGroup = calcElementVertexesInGroup;
|
|
@@ -2702,6 +3110,7 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2702
3110
|
exports.calcElementsViewInfo = calcElementsViewInfo;
|
|
2703
3111
|
exports.calcSpeed = calcSpeed;
|
|
2704
3112
|
exports.calcViewBoxSize = calcViewBoxSize;
|
|
3113
|
+
exports.calcViewCenterContent = calcViewCenterContent;
|
|
2705
3114
|
exports.calcViewElementSize = calcViewElementSize;
|
|
2706
3115
|
exports.calcViewPointSize = calcViewPointSize;
|
|
2707
3116
|
exports.calcViewScaleInfo = calcViewScaleInfo;
|
|
@@ -2714,21 +3123,27 @@ var __privateSet = (obj, member, value, setter) => {
|
|
|
2714
3123
|
exports.compose = compose;
|
|
2715
3124
|
exports.compressImage = compressImage;
|
|
2716
3125
|
exports.createAssetId = createAssetId;
|
|
3126
|
+
exports.createBoardContent = createBoardContent;
|
|
2717
3127
|
exports.createContext2D = createContext2D;
|
|
2718
3128
|
exports.createElement = createElement;
|
|
2719
3129
|
exports.createOffscreenContext2D = createOffscreenContext2D;
|
|
2720
3130
|
exports.createUUID = createUUID;
|
|
2721
|
-
exports.
|
|
3131
|
+
exports.debounce = debounce;
|
|
2722
3132
|
exports.deepClone = deepClone;
|
|
3133
|
+
exports.deepCloneElement = deepCloneElement;
|
|
3134
|
+
exports.deepResizeGroupElement = deepResizeGroupElement;
|
|
2723
3135
|
exports.delay = delay;
|
|
2724
3136
|
exports.deleteElementInList = deleteElementInList;
|
|
2725
3137
|
exports.deleteElementInListByPosition = deleteElementInListByPosition;
|
|
3138
|
+
exports.downloadFileFromText = downloadFileFromText;
|
|
2726
3139
|
exports.downloadImageFromCanvas = downloadImageFromCanvas;
|
|
2727
3140
|
exports.equalPoint = equalPoint;
|
|
2728
3141
|
exports.equalTouchPoint = equalTouchPoint;
|
|
3142
|
+
exports.filterCompactData = filterCompactData;
|
|
2729
3143
|
exports.filterElementAsset = filterElementAsset;
|
|
2730
3144
|
exports.findElementFromList = findElementFromList;
|
|
2731
3145
|
exports.findElementFromListByPosition = findElementFromListByPosition;
|
|
3146
|
+
exports.findElementQueueFromListByPosition = findElementQueueFromListByPosition;
|
|
2732
3147
|
exports.findElementsFromList = findElementsFromList;
|
|
2733
3148
|
exports.findElementsFromListByPositions = findElementsFromListByPositions;
|
|
2734
3149
|
exports.formatNumber = formatNumber;
|