@idraw/core 0.4.0-beta.14 → 0.4.0-beta.16
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 +3 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/lib/cursor.d.ts +2 -2
- package/dist/esm/middleware/dragger/index.d.ts +2 -2
- package/dist/esm/middleware/ruler/index.d.ts +2 -2
- package/dist/esm/middleware/scaler/index.d.ts +2 -2
- package/dist/esm/middleware/selector/auxiliary.d.ts +5 -0
- package/dist/esm/middleware/selector/auxiliary.js +10 -0
- package/dist/esm/middleware/selector/config.d.ts +2 -0
- package/dist/esm/middleware/selector/config.js +2 -0
- package/dist/esm/middleware/selector/draw-auxiliary.d.ts +7 -0
- package/dist/esm/middleware/selector/draw-auxiliary.js +31 -0
- package/dist/esm/middleware/selector/draw-base.d.ts +30 -0
- package/dist/esm/middleware/selector/draw-base.js +100 -0
- package/dist/esm/middleware/selector/draw-wrapper.d.ts +3 -0
- package/dist/esm/middleware/selector/draw-wrapper.js +10 -77
- package/dist/esm/middleware/selector/index.d.ts +2 -2
- package/dist/esm/middleware/selector/index.js +10 -5
- package/dist/esm/middleware/selector/types.d.ts +2 -1
- package/dist/esm/middleware/selector/types.js +1 -1
- package/dist/esm/middleware/text-editor/index.d.ts +20 -2
- package/dist/esm/middleware/text-editor/index.js +61 -6
- package/dist/index.global.js +229 -127
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -5
package/dist/index.global.js
CHANGED
|
@@ -23,18 +23,6 @@ var __privateMethod = (obj, member, method) => {
|
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
var _eventHub, _container, _cursorType, _resizeCursorBaseImage, _cursorImageMap, _init, init_fn, _loadResizeCursorBaseImage, loadResizeCursorBaseImage_fn, _resetCursor, resetCursor_fn, _setCursorResize, setCursorResize_fn, _appendRotateResizeImage, appendRotateResizeImage_fn, _board, _canvas, _container2, _initContainer, initContainer_fn;
|
|
26
|
-
function throttle(fn, timeout) {
|
|
27
|
-
let timer = -1;
|
|
28
|
-
return function(...args) {
|
|
29
|
-
if (timer >= 0) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
timer = setTimeout(() => {
|
|
33
|
-
fn(...args);
|
|
34
|
-
timer = -1;
|
|
35
|
-
}, timeout);
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
26
|
function isColorStr(color2) {
|
|
39
27
|
return typeof color2 === "string" && (/^\#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(color2) || /^[a-z]{1,}$/i.test(color2));
|
|
40
28
|
}
|
|
@@ -378,12 +366,16 @@ var __privateMethod = (obj, member, method) => {
|
|
|
378
366
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
379
367
|
};
|
|
380
368
|
var _Context2D_ctx, _Context2D_opts;
|
|
369
|
+
const defaultFontSize = 12;
|
|
370
|
+
const defaultFontWeight = "400";
|
|
371
|
+
const defaultFontFamily = `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'`;
|
|
381
372
|
class Context2D {
|
|
382
373
|
constructor(ctx, opts) {
|
|
383
374
|
_Context2D_ctx.set(this, void 0);
|
|
384
375
|
_Context2D_opts.set(this, void 0);
|
|
385
376
|
__classPrivateFieldSet$9(this, _Context2D_ctx, ctx, "f");
|
|
386
377
|
__classPrivateFieldSet$9(this, _Context2D_opts, Object.assign({ devicePixelRatio: 1, offscreenCanvas: null }, opts), "f");
|
|
378
|
+
this.$resetFont();
|
|
387
379
|
}
|
|
388
380
|
$undoPixelRatio(num) {
|
|
389
381
|
return num / __classPrivateFieldGet$9(this, _Context2D_opts, "f").devicePixelRatio;
|
|
@@ -406,6 +398,13 @@ var __privateMethod = (obj, member, method) => {
|
|
|
406
398
|
strList.push(`${opts.fontFamily || "sans-serif"}`);
|
|
407
399
|
__classPrivateFieldGet$9(this, _Context2D_ctx, "f").font = `${strList.join(" ")}`;
|
|
408
400
|
}
|
|
401
|
+
$resetFont() {
|
|
402
|
+
this.$setFont({
|
|
403
|
+
fontSize: defaultFontSize,
|
|
404
|
+
fontFamily: defaultFontFamily,
|
|
405
|
+
fontWeight: defaultFontWeight
|
|
406
|
+
});
|
|
407
|
+
}
|
|
409
408
|
$getOffscreenCanvas() {
|
|
410
409
|
return __classPrivateFieldGet$9(this, _Context2D_opts, "f").offscreenCanvas;
|
|
411
410
|
}
|
|
@@ -841,7 +840,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
841
840
|
return __classPrivateFieldGet$7(this, _Store_temp, "f")[name];
|
|
842
841
|
}
|
|
843
842
|
getSnapshot() {
|
|
844
|
-
return
|
|
843
|
+
return __classPrivateFieldGet$7(this, _Store_temp, "f");
|
|
845
844
|
}
|
|
846
845
|
clear() {
|
|
847
846
|
__classPrivateFieldSet$7(this, _Store_temp, __classPrivateFieldGet$7(this, _Store_instances, "m", _Store_createTempStorage).call(this), "f");
|
|
@@ -1215,6 +1214,32 @@ var __privateMethod = (obj, member, method) => {
|
|
|
1215
1214
|
}
|
|
1216
1215
|
return result;
|
|
1217
1216
|
}
|
|
1217
|
+
function getElementPositionFromList(uuid, elements) {
|
|
1218
|
+
const result = [];
|
|
1219
|
+
let over = false;
|
|
1220
|
+
const _loop = (list) => {
|
|
1221
|
+
var _a;
|
|
1222
|
+
for (let i = 0; i < list.length; i++) {
|
|
1223
|
+
if (over === true) {
|
|
1224
|
+
break;
|
|
1225
|
+
}
|
|
1226
|
+
result.push(i);
|
|
1227
|
+
const elem = list[i];
|
|
1228
|
+
if (elem.uuid === uuid) {
|
|
1229
|
+
over = true;
|
|
1230
|
+
break;
|
|
1231
|
+
} else if (elem.type === "group") {
|
|
1232
|
+
_loop(((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children) || []);
|
|
1233
|
+
}
|
|
1234
|
+
if (over) {
|
|
1235
|
+
break;
|
|
1236
|
+
}
|
|
1237
|
+
result.pop();
|
|
1238
|
+
}
|
|
1239
|
+
};
|
|
1240
|
+
_loop(elements);
|
|
1241
|
+
return result;
|
|
1242
|
+
}
|
|
1218
1243
|
function checkRectIntersect(rect1, rect2) {
|
|
1219
1244
|
const react1MinX = rect1.x;
|
|
1220
1245
|
const react1MinY = rect1.y;
|
|
@@ -1226,6 +1251,77 @@ var __privateMethod = (obj, member, method) => {
|
|
|
1226
1251
|
const react2MaxY = rect2.y + rect2.h;
|
|
1227
1252
|
return react1MinX <= react2MaxX && react1MaxX >= react2MinX && react1MinY <= react2MaxY && react1MaxY >= react2MinY;
|
|
1228
1253
|
}
|
|
1254
|
+
function getElementVertexes(elemSize) {
|
|
1255
|
+
const { x: x2, y: y2, h: h2, w: w2 } = elemSize;
|
|
1256
|
+
return [
|
|
1257
|
+
{ x: x2, y: y2 },
|
|
1258
|
+
{ x: x2 + w2, y: y2 },
|
|
1259
|
+
{ x: x2 + w2, y: y2 + h2 },
|
|
1260
|
+
{ x: x2, y: y2 + h2 }
|
|
1261
|
+
];
|
|
1262
|
+
}
|
|
1263
|
+
function calcElementVertexes(elemSize) {
|
|
1264
|
+
const { x: x2, y: y2, w: w2, h: h2, angle: angle2 = 0 } = elemSize;
|
|
1265
|
+
if (angle2 === 0) {
|
|
1266
|
+
return getElementVertexes(elemSize);
|
|
1267
|
+
}
|
|
1268
|
+
return getElementRotateVertexes(elemSize, calcElementCenter({ x: x2, y: y2, w: w2, h: h2, angle: angle2 }), angle2);
|
|
1269
|
+
}
|
|
1270
|
+
function calcElementQueueVertexesQueueInGroup(groupQueue) {
|
|
1271
|
+
const vesList = [];
|
|
1272
|
+
let totalX = 0;
|
|
1273
|
+
let totalY = 0;
|
|
1274
|
+
const rotateActionList = [];
|
|
1275
|
+
const elemQueue = [...groupQueue];
|
|
1276
|
+
for (let i = 0; i < elemQueue.length; i++) {
|
|
1277
|
+
const { x: x2, y: y2, w: w2, h: h2, angle: angle2 = 0 } = elemQueue[i];
|
|
1278
|
+
totalX += x2;
|
|
1279
|
+
totalY += y2;
|
|
1280
|
+
let ves;
|
|
1281
|
+
if (i === 0) {
|
|
1282
|
+
const elemSize = { x: totalX, y: totalY, w: w2, h: h2, angle: angle2 };
|
|
1283
|
+
ves = calcElementVertexes({ x: x2, y: y2, w: w2, h: h2, angle: angle2 });
|
|
1284
|
+
rotateActionList.push({
|
|
1285
|
+
center: calcElementCenter(elemSize),
|
|
1286
|
+
angle: angle2,
|
|
1287
|
+
radian: parseAngleToRadian(angle2)
|
|
1288
|
+
});
|
|
1289
|
+
} else {
|
|
1290
|
+
const elemSize = { x: totalX, y: totalY, w: w2, h: h2, angle: angle2 };
|
|
1291
|
+
ves = getElementVertexes(elemSize);
|
|
1292
|
+
for (let aIdx = 0; aIdx < rotateActionList.length; aIdx++) {
|
|
1293
|
+
const { center, radian } = rotateActionList[aIdx];
|
|
1294
|
+
ves = rotateVertexes(center, ves, radian);
|
|
1295
|
+
}
|
|
1296
|
+
const vesCenter = calcElementCenterFromVertexes(ves);
|
|
1297
|
+
if (angle2 > 0 || angle2 < 0) {
|
|
1298
|
+
const radian = parseAngleToRadian(angle2);
|
|
1299
|
+
ves = rotateVertexes(vesCenter, ves, radian);
|
|
1300
|
+
}
|
|
1301
|
+
rotateActionList.push({
|
|
1302
|
+
center: vesCenter,
|
|
1303
|
+
angle: angle2,
|
|
1304
|
+
radian: parseAngleToRadian(angle2)
|
|
1305
|
+
});
|
|
1306
|
+
}
|
|
1307
|
+
vesList.push(ves);
|
|
1308
|
+
}
|
|
1309
|
+
return vesList;
|
|
1310
|
+
}
|
|
1311
|
+
function calcElementVertexesQueueInGroup(targetElem, opts) {
|
|
1312
|
+
const { groupQueue } = opts;
|
|
1313
|
+
if (!(groupQueue.length > 0)) {
|
|
1314
|
+
return [calcElementVertexes(targetElem)];
|
|
1315
|
+
}
|
|
1316
|
+
const elemQueue = [...groupQueue, ...[targetElem]];
|
|
1317
|
+
const vesList = calcElementQueueVertexesQueueInGroup(elemQueue);
|
|
1318
|
+
return vesList;
|
|
1319
|
+
}
|
|
1320
|
+
function calcElementVertexesInGroup(targetElem, opts) {
|
|
1321
|
+
const vesList = calcElementVertexesQueueInGroup(targetElem, opts);
|
|
1322
|
+
const ves = vesList.pop();
|
|
1323
|
+
return ves || null;
|
|
1324
|
+
}
|
|
1229
1325
|
function calcViewScaleInfo(info, opts) {
|
|
1230
1326
|
const { scale, offsetX, offsetY } = info;
|
|
1231
1327
|
const { viewSizeInfo } = opts;
|
|
@@ -1409,77 +1505,6 @@ var __privateMethod = (obj, member, method) => {
|
|
|
1409
1505
|
const elemSize = { x: elemStartX, y: elemStartY, w: elemEndX - elemStartX, h: elemEndY - elemStartY };
|
|
1410
1506
|
return checkRectIntersect(viewSize, elemSize);
|
|
1411
1507
|
}
|
|
1412
|
-
function getElementVertexes(elemSize) {
|
|
1413
|
-
const { x: x2, y: y2, h: h2, w: w2 } = elemSize;
|
|
1414
|
-
return [
|
|
1415
|
-
{ x: x2, y: y2 },
|
|
1416
|
-
{ x: x2 + w2, y: y2 },
|
|
1417
|
-
{ x: x2 + w2, y: y2 + h2 },
|
|
1418
|
-
{ x: x2, y: y2 + h2 }
|
|
1419
|
-
];
|
|
1420
|
-
}
|
|
1421
|
-
function calcElementVertexes(elemSize) {
|
|
1422
|
-
const { x: x2, y: y2, w: w2, h: h2, angle: angle2 = 0 } = elemSize;
|
|
1423
|
-
if (angle2 === 0) {
|
|
1424
|
-
return getElementVertexes(elemSize);
|
|
1425
|
-
}
|
|
1426
|
-
return getElementRotateVertexes(elemSize, calcElementCenter({ x: x2, y: y2, w: w2, h: h2, angle: angle2 }), angle2);
|
|
1427
|
-
}
|
|
1428
|
-
function calcElementQueueVertexesQueueInGroup(groupQueue) {
|
|
1429
|
-
const vesList = [];
|
|
1430
|
-
let totalX = 0;
|
|
1431
|
-
let totalY = 0;
|
|
1432
|
-
const rotateActionList = [];
|
|
1433
|
-
const elemQueue = [...groupQueue];
|
|
1434
|
-
for (let i = 0; i < elemQueue.length; i++) {
|
|
1435
|
-
const { x: x2, y: y2, w: w2, h: h2, angle: angle2 = 0 } = elemQueue[i];
|
|
1436
|
-
totalX += x2;
|
|
1437
|
-
totalY += y2;
|
|
1438
|
-
let ves;
|
|
1439
|
-
if (i === 0) {
|
|
1440
|
-
const elemSize = { x: totalX, y: totalY, w: w2, h: h2, angle: angle2 };
|
|
1441
|
-
ves = calcElementVertexes({ x: x2, y: y2, w: w2, h: h2, angle: angle2 });
|
|
1442
|
-
rotateActionList.push({
|
|
1443
|
-
center: calcElementCenter(elemSize),
|
|
1444
|
-
angle: angle2,
|
|
1445
|
-
radian: parseAngleToRadian(angle2)
|
|
1446
|
-
});
|
|
1447
|
-
} else {
|
|
1448
|
-
const elemSize = { x: totalX, y: totalY, w: w2, h: h2, angle: angle2 };
|
|
1449
|
-
ves = getElementVertexes(elemSize);
|
|
1450
|
-
for (let aIdx = 0; aIdx < rotateActionList.length; aIdx++) {
|
|
1451
|
-
const { center, radian } = rotateActionList[aIdx];
|
|
1452
|
-
ves = rotateVertexes(center, ves, radian);
|
|
1453
|
-
}
|
|
1454
|
-
const vesCenter = calcElementCenterFromVertexes(ves);
|
|
1455
|
-
if (angle2 > 0 || angle2 < 0) {
|
|
1456
|
-
const radian = parseAngleToRadian(angle2);
|
|
1457
|
-
ves = rotateVertexes(vesCenter, ves, radian);
|
|
1458
|
-
}
|
|
1459
|
-
rotateActionList.push({
|
|
1460
|
-
center: vesCenter,
|
|
1461
|
-
angle: angle2,
|
|
1462
|
-
radian: parseAngleToRadian(angle2)
|
|
1463
|
-
});
|
|
1464
|
-
}
|
|
1465
|
-
vesList.push(ves);
|
|
1466
|
-
}
|
|
1467
|
-
return vesList;
|
|
1468
|
-
}
|
|
1469
|
-
function calcElementVertexesQueueInGroup(targetElem, opts) {
|
|
1470
|
-
const { groupQueue } = opts;
|
|
1471
|
-
if (!(groupQueue.length > 0)) {
|
|
1472
|
-
return [calcElementVertexes(targetElem)];
|
|
1473
|
-
}
|
|
1474
|
-
const elemQueue = [...groupQueue, ...[targetElem]];
|
|
1475
|
-
const vesList = calcElementQueueVertexesQueueInGroup(elemQueue);
|
|
1476
|
-
return vesList;
|
|
1477
|
-
}
|
|
1478
|
-
function calcElementVertexesInGroup(targetElem, opts) {
|
|
1479
|
-
const vesList = calcElementVertexesQueueInGroup(targetElem, opts);
|
|
1480
|
-
const ves = vesList.pop();
|
|
1481
|
-
return ves || null;
|
|
1482
|
-
}
|
|
1483
1508
|
function createControllerElementSizeFromCenter(center, opts) {
|
|
1484
1509
|
const { x: x2, y: y2 } = center;
|
|
1485
1510
|
const { size, angle: angle2 } = opts;
|
|
@@ -2107,11 +2132,18 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2107
2132
|
renderContent();
|
|
2108
2133
|
ctx.restore();
|
|
2109
2134
|
} else {
|
|
2135
|
+
ctx.save();
|
|
2136
|
+
ctx.shadowColor = "transparent";
|
|
2137
|
+
ctx.shadowOffsetX = 0;
|
|
2138
|
+
ctx.shadowOffsetY = 0;
|
|
2139
|
+
ctx.shadowBlur = 0;
|
|
2110
2140
|
renderContent();
|
|
2141
|
+
ctx.restore();
|
|
2111
2142
|
}
|
|
2112
2143
|
}
|
|
2113
2144
|
function drawCircle(ctx, elem, opts) {
|
|
2114
2145
|
const { detail, angle: angle2 } = elem;
|
|
2146
|
+
const { calculator, viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
|
|
2115
2147
|
const { background: background2 = "#000000", borderColor: borderColor2 = "#000000", boxSizing, borderWidth: borderWidth2 = 0 } = detail;
|
|
2116
2148
|
let bw = 0;
|
|
2117
2149
|
if (typeof borderWidth2 === "number" && borderWidth2 > 0) {
|
|
@@ -2119,7 +2151,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2119
2151
|
} else if (Array.isArray(borderWidth2) && typeof borderWidth2[0] === "number" && borderWidth2[0] > 0) {
|
|
2120
2152
|
bw = borderWidth2[0];
|
|
2121
2153
|
}
|
|
2122
|
-
|
|
2154
|
+
bw = bw * viewScaleInfo.scale;
|
|
2123
2155
|
const { x: x2, y: y2, w: w2, h: h2 } = (calculator === null || calculator === void 0 ? void 0 : calculator.elementSize({ x: elem.x, y: elem.y, w: elem.w, h: elem.h }, viewScaleInfo, viewSizeInfo)) || elem;
|
|
2124
2156
|
const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
|
|
2125
2157
|
rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
|
|
@@ -2146,12 +2178,12 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2146
2178
|
if (a >= 0 && b >= 0) {
|
|
2147
2179
|
const opacity = getOpacity(viewElem) * parentOpacity;
|
|
2148
2180
|
ctx.globalAlpha = opacity;
|
|
2149
|
-
if (typeof
|
|
2150
|
-
const ba =
|
|
2151
|
-
const bb =
|
|
2181
|
+
if (typeof bw === "number" && bw > 0) {
|
|
2182
|
+
const ba = bw / 2 + a;
|
|
2183
|
+
const bb = bw / 2 + b;
|
|
2152
2184
|
ctx.beginPath();
|
|
2153
2185
|
ctx.strokeStyle = borderColor2;
|
|
2154
|
-
ctx.lineWidth =
|
|
2186
|
+
ctx.lineWidth = bw;
|
|
2155
2187
|
ctx.circle(centerX, centerY, ba, bb, 0, 0, 2 * Math.PI);
|
|
2156
2188
|
ctx.closePath();
|
|
2157
2189
|
ctx.stroke();
|
|
@@ -2786,6 +2818,9 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2786
2818
|
}, _Loader_loadResource = function _Loader_loadResource2(element, assets) {
|
|
2787
2819
|
const item = __classPrivateFieldGet$6(this, _Loader_instances, "m", _Loader_createLoadItem).call(this, element);
|
|
2788
2820
|
const assetId = getAssetIdFromElement(element);
|
|
2821
|
+
if (__classPrivateFieldGet$6(this, _Loader_currentLoadItemMap, "f")[assetId]) {
|
|
2822
|
+
return;
|
|
2823
|
+
}
|
|
2789
2824
|
__classPrivateFieldGet$6(this, _Loader_currentLoadItemMap, "f")[assetId] = item;
|
|
2790
2825
|
const loadFunc = __classPrivateFieldGet$6(this, _Loader_loadFuncMap, "f")[element.type];
|
|
2791
2826
|
if (typeof loadFunc === "function" && !__classPrivateFieldGet$6(this, _Loader_hasDestroyed, "f")) {
|
|
@@ -2921,7 +2956,8 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2921
2956
|
loader.on("load", (e) => {
|
|
2922
2957
|
this.trigger("load", e);
|
|
2923
2958
|
});
|
|
2924
|
-
loader.on("error", () => {
|
|
2959
|
+
loader.on("error", (e) => {
|
|
2960
|
+
console.error(e);
|
|
2925
2961
|
});
|
|
2926
2962
|
};
|
|
2927
2963
|
var __classPrivateFieldSet$4 = function(receiver, state, value, kind, f) {
|
|
@@ -3416,7 +3452,6 @@ var __privateMethod = (obj, member, method) => {
|
|
|
3416
3452
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
3417
3453
|
};
|
|
3418
3454
|
var _Board_instances, _Board_opts, _Board_middlewareMap, _Board_middlewares, _Board_activeMiddlewareObjs, _Board_watcher, _Board_renderer, _Board_sharer, _Board_viewer, _Board_calculator, _Board_eventHub, _Board_hasDestroyed, _Board_init, _Board_handlePointStart, _Board_handlePointEnd, _Board_handlePointMove, _Board_handleHover, _Board_handleDoubleClick, _Board_handleWheel, _Board_handleWheelScale, _Board_handleScrollX, _Board_handleScrollY, _Board_handleResize, _Board_handleClear, _Board_handleBeforeDrawFrame, _Board_handleAfterDrawFrame, _Board_resetActiveMiddlewareObjs;
|
|
3419
|
-
const throttleTime = 10;
|
|
3420
3455
|
class Board {
|
|
3421
3456
|
constructor(opts) {
|
|
3422
3457
|
_Board_instances.add(this);
|
|
@@ -3582,22 +3617,17 @@ var __privateMethod = (obj, member, method) => {
|
|
|
3582
3617
|
_Board_opts = /* @__PURE__ */ new WeakMap(), _Board_middlewareMap = /* @__PURE__ */ new WeakMap(), _Board_middlewares = /* @__PURE__ */ new WeakMap(), _Board_activeMiddlewareObjs = /* @__PURE__ */ new WeakMap(), _Board_watcher = /* @__PURE__ */ new WeakMap(), _Board_renderer = /* @__PURE__ */ new WeakMap(), _Board_sharer = /* @__PURE__ */ new WeakMap(), _Board_viewer = /* @__PURE__ */ new WeakMap(), _Board_calculator = /* @__PURE__ */ new WeakMap(), _Board_eventHub = /* @__PURE__ */ new WeakMap(), _Board_hasDestroyed = /* @__PURE__ */ new WeakMap(), _Board_instances = /* @__PURE__ */ new WeakSet(), _Board_init = function _Board_init2() {
|
|
3583
3618
|
__classPrivateFieldGet(this, _Board_watcher, "f").on("pointStart", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handlePointStart).bind(this));
|
|
3584
3619
|
__classPrivateFieldGet(this, _Board_watcher, "f").on("pointEnd", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handlePointEnd).bind(this));
|
|
3585
|
-
__classPrivateFieldGet(this, _Board_watcher, "f").on("pointMove",
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
__classPrivateFieldGet(this, _Board_watcher, "f").on("
|
|
3589
|
-
__classPrivateFieldGet(this, _Board_instances, "m", _Board_handleHover).call(this, e);
|
|
3590
|
-
}, throttleTime));
|
|
3591
|
-
__classPrivateFieldGet(this, _Board_watcher, "f").on("wheel", throttle((e) => {
|
|
3592
|
-
__classPrivateFieldGet(this, _Board_instances, "m", _Board_handleWheel).call(this, e);
|
|
3593
|
-
}, throttleTime));
|
|
3594
|
-
__classPrivateFieldGet(this, _Board_watcher, "f").on("wheelScale", throttle((e) => {
|
|
3595
|
-
__classPrivateFieldGet(this, _Board_instances, "m", _Board_handleWheelScale).call(this, e);
|
|
3596
|
-
}, throttleTime));
|
|
3620
|
+
__classPrivateFieldGet(this, _Board_watcher, "f").on("pointMove", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handlePointMove).bind(this));
|
|
3621
|
+
__classPrivateFieldGet(this, _Board_watcher, "f").on("hover", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleHover).bind(this));
|
|
3622
|
+
__classPrivateFieldGet(this, _Board_watcher, "f").on("wheel", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleWheel).bind(this));
|
|
3623
|
+
__classPrivateFieldGet(this, _Board_watcher, "f").on("wheelScale", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleWheelScale).bind(this));
|
|
3597
3624
|
__classPrivateFieldGet(this, _Board_watcher, "f").on("scrollX", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleScrollX).bind(this));
|
|
3598
3625
|
__classPrivateFieldGet(this, _Board_watcher, "f").on("scrollY", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleScrollY).bind(this));
|
|
3599
3626
|
__classPrivateFieldGet(this, _Board_watcher, "f").on("resize", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleResize).bind(this));
|
|
3600
3627
|
__classPrivateFieldGet(this, _Board_watcher, "f").on("doubleClick", __classPrivateFieldGet(this, _Board_instances, "m", _Board_handleDoubleClick).bind(this));
|
|
3628
|
+
__classPrivateFieldGet(this, _Board_renderer, "f").on("load", () => {
|
|
3629
|
+
__classPrivateFieldGet(this, _Board_eventHub, "f").trigger("loadResource");
|
|
3630
|
+
});
|
|
3601
3631
|
}, _Board_handlePointStart = function _Board_handlePointStart2(e) {
|
|
3602
3632
|
var _a;
|
|
3603
3633
|
for (let i = 0; i < __classPrivateFieldGet(this, _Board_activeMiddlewareObjs, "f").length; i++) {
|
|
@@ -3884,6 +3914,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
3884
3914
|
const keySelectedElementController = Symbol(`${key$2}_selectedElementController`);
|
|
3885
3915
|
const keyGroupQueue = Symbol(`${key$2}_groupQueue`);
|
|
3886
3916
|
const keyGroupQueueVertexesList = Symbol(`${key$2}_groupQueueVertexesList`);
|
|
3917
|
+
const keyIsMoving = Symbol(`${key$2}_isMoving`);
|
|
3887
3918
|
const selectWrapperBorderWidth = 2;
|
|
3888
3919
|
const resizeControllerBorderWidth = 4;
|
|
3889
3920
|
const areaBorderWidth = 1;
|
|
@@ -3943,19 +3974,11 @@ var __privateMethod = (obj, member, method) => {
|
|
|
3943
3974
|
ctx.fill();
|
|
3944
3975
|
}
|
|
3945
3976
|
}
|
|
3946
|
-
function drawHoverVertexesWrapper(ctx, vertexes, opts) {
|
|
3947
|
-
if (!vertexes) {
|
|
3948
|
-
return;
|
|
3949
|
-
}
|
|
3950
|
-
const wrapperOpts = { borderColor: wrapperColor, borderWidth: 1, background: "transparent", lineDash: [] };
|
|
3951
|
-
drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
|
|
3952
|
-
}
|
|
3953
3977
|
function drawCrossVertexes(ctx, vertexes, opts) {
|
|
3954
|
-
const { borderColor: borderColor2, borderWidth: borderWidth2,
|
|
3978
|
+
const { borderColor: borderColor2, borderWidth: borderWidth2, lineDash } = opts;
|
|
3955
3979
|
ctx.setLineDash([]);
|
|
3956
3980
|
ctx.lineWidth = borderWidth2;
|
|
3957
3981
|
ctx.strokeStyle = borderColor2;
|
|
3958
|
-
ctx.fillStyle = background2;
|
|
3959
3982
|
ctx.setLineDash(lineDash);
|
|
3960
3983
|
ctx.beginPath();
|
|
3961
3984
|
ctx.moveTo(vertexes[0].x, vertexes[0].y);
|
|
@@ -3968,6 +3991,13 @@ var __privateMethod = (obj, member, method) => {
|
|
|
3968
3991
|
ctx.closePath();
|
|
3969
3992
|
ctx.stroke();
|
|
3970
3993
|
}
|
|
3994
|
+
function drawHoverVertexesWrapper(ctx, vertexes, opts) {
|
|
3995
|
+
if (!vertexes) {
|
|
3996
|
+
return;
|
|
3997
|
+
}
|
|
3998
|
+
const wrapperOpts = { borderColor: wrapperColor, borderWidth: 1, background: "transparent", lineDash: [] };
|
|
3999
|
+
drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
|
|
4000
|
+
}
|
|
3971
4001
|
function drawLockVertexesWrapper(ctx, vertexes, opts) {
|
|
3972
4002
|
if (!vertexes) {
|
|
3973
4003
|
return;
|
|
@@ -3992,16 +4022,19 @@ var __privateMethod = (obj, member, method) => {
|
|
|
3992
4022
|
if (!controller) {
|
|
3993
4023
|
return;
|
|
3994
4024
|
}
|
|
4025
|
+
const { hideControllers } = opts;
|
|
3995
4026
|
const { elementWrapper, topLeft, topRight, bottomLeft, bottomRight, top, rotate } = controller;
|
|
3996
4027
|
const wrapperOpts = { borderColor: wrapperColor, borderWidth: selectWrapperBorderWidth, background: "transparent", lineDash: [] };
|
|
3997
4028
|
const ctrlOpts = { ...wrapperOpts, borderWidth: resizeControllerBorderWidth, background: "#FFFFFF" };
|
|
3998
|
-
drawLine(ctx, calcViewPointSize(top.center, opts), calcViewPointSize(rotate.center, opts), { ...ctrlOpts, borderWidth: 2 });
|
|
3999
4029
|
drawVertexes(ctx, calcViewVertexes(elementWrapper, opts), wrapperOpts);
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4030
|
+
if (!hideControllers) {
|
|
4031
|
+
drawLine(ctx, calcViewPointSize(top.center, opts), calcViewPointSize(rotate.center, opts), { ...ctrlOpts, borderWidth: 2 });
|
|
4032
|
+
drawVertexes(ctx, calcViewVertexes(topLeft.vertexes, opts), ctrlOpts);
|
|
4033
|
+
drawVertexes(ctx, calcViewVertexes(topRight.vertexes, opts), ctrlOpts);
|
|
4034
|
+
drawVertexes(ctx, calcViewVertexes(bottomLeft.vertexes, opts), ctrlOpts);
|
|
4035
|
+
drawVertexes(ctx, calcViewVertexes(bottomRight.vertexes, opts), ctrlOpts);
|
|
4036
|
+
drawCircleController(ctx, calcViewPointSize(rotate.center, opts), { ...ctrlOpts, size: controllerSize, borderWidth: 2 });
|
|
4037
|
+
}
|
|
4005
4038
|
}
|
|
4006
4039
|
function drawArea(ctx, opts) {
|
|
4007
4040
|
const { start, end } = opts;
|
|
@@ -4811,15 +4844,18 @@ var __privateMethod = (obj, member, method) => {
|
|
|
4811
4844
|
};
|
|
4812
4845
|
}
|
|
4813
4846
|
const middlewareEventTextEdit = "@middleware/text-edit";
|
|
4847
|
+
const middlewareEventTextChange = "@middleware/text-change";
|
|
4814
4848
|
const defaultElementDetail = getDefaultElementDetailConfig();
|
|
4815
4849
|
const MiddlewareTextEditor = (opts) => {
|
|
4816
4850
|
const { eventHub, boardContent, viewer } = opts;
|
|
4817
4851
|
const canvas = boardContent.boardContext.canvas;
|
|
4818
|
-
const textarea = document.createElement("
|
|
4852
|
+
const textarea = document.createElement("div");
|
|
4853
|
+
textarea.setAttribute("contenteditable", "true");
|
|
4819
4854
|
const canvasWrapper = document.createElement("div");
|
|
4820
4855
|
const container = opts.container || document.body;
|
|
4821
4856
|
const mask = document.createElement("div");
|
|
4822
4857
|
let activeElem = null;
|
|
4858
|
+
let activePosition = [];
|
|
4823
4859
|
canvasWrapper.appendChild(textarea);
|
|
4824
4860
|
canvasWrapper.style.position = "absolute";
|
|
4825
4861
|
mask.appendChild(canvasWrapper);
|
|
@@ -4838,6 +4874,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
4838
4874
|
const hideTextArea = () => {
|
|
4839
4875
|
mask.style.display = "none";
|
|
4840
4876
|
activeElem = null;
|
|
4877
|
+
activePosition = [];
|
|
4841
4878
|
};
|
|
4842
4879
|
const getCanvasRect = () => {
|
|
4843
4880
|
const clientRect = canvas.getBoundingClientRect();
|
|
@@ -4898,6 +4935,21 @@ var __privateMethod = (obj, member, method) => {
|
|
|
4898
4935
|
elemW = element.w * scale;
|
|
4899
4936
|
elemH = element.h * scale;
|
|
4900
4937
|
}
|
|
4938
|
+
let justifyContent = "center";
|
|
4939
|
+
let alignItems = "center";
|
|
4940
|
+
if (detail.textAlign === "left") {
|
|
4941
|
+
justifyContent = "start";
|
|
4942
|
+
} else if (detail.textAlign === "right") {
|
|
4943
|
+
justifyContent = "end";
|
|
4944
|
+
}
|
|
4945
|
+
if (detail.verticalAlign === "top") {
|
|
4946
|
+
alignItems = "start";
|
|
4947
|
+
} else if (detail.verticalAlign === "bottom") {
|
|
4948
|
+
alignItems = "end";
|
|
4949
|
+
}
|
|
4950
|
+
textarea.style.display = "inline-flex";
|
|
4951
|
+
textarea.style.justifyContent = justifyContent;
|
|
4952
|
+
textarea.style.alignItems = alignItems;
|
|
4901
4953
|
textarea.style.position = "absolute";
|
|
4902
4954
|
textarea.style.left = `${elemX - 1}px`;
|
|
4903
4955
|
textarea.style.top = `${elemY - 1}px`;
|
|
@@ -4918,7 +4970,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
4918
4970
|
textarea.style.padding = "0";
|
|
4919
4971
|
textarea.style.margin = "0";
|
|
4920
4972
|
textarea.style.outline = "none";
|
|
4921
|
-
textarea.
|
|
4973
|
+
textarea.innerText = detail.text || "";
|
|
4922
4974
|
parent.appendChild(textarea);
|
|
4923
4975
|
};
|
|
4924
4976
|
const resetCanvasWrapper = () => {
|
|
@@ -4936,19 +4988,53 @@ var __privateMethod = (obj, member, method) => {
|
|
|
4936
4988
|
textarea.addEventListener("click", (e) => {
|
|
4937
4989
|
e.stopPropagation();
|
|
4938
4990
|
});
|
|
4939
|
-
textarea.addEventListener("input", (
|
|
4940
|
-
if (activeElem) {
|
|
4941
|
-
activeElem.detail.text =
|
|
4991
|
+
textarea.addEventListener("input", () => {
|
|
4992
|
+
if (activeElem && activePosition) {
|
|
4993
|
+
activeElem.detail.text = textarea.innerText || "";
|
|
4994
|
+
eventHub.trigger(middlewareEventTextChange, {
|
|
4995
|
+
element: {
|
|
4996
|
+
uuid: activeElem.uuid,
|
|
4997
|
+
detail: {
|
|
4998
|
+
text: activeElem.detail.text
|
|
4999
|
+
}
|
|
5000
|
+
},
|
|
5001
|
+
position: [...activePosition || []]
|
|
5002
|
+
});
|
|
4942
5003
|
viewer.drawFrame();
|
|
4943
5004
|
}
|
|
4944
5005
|
});
|
|
4945
5006
|
textarea.addEventListener("blur", () => {
|
|
5007
|
+
if (activeElem && activePosition) {
|
|
5008
|
+
eventHub.trigger(middlewareEventTextChange, {
|
|
5009
|
+
element: {
|
|
5010
|
+
uuid: activeElem.uuid,
|
|
5011
|
+
detail: {
|
|
5012
|
+
text: activeElem.detail.text
|
|
5013
|
+
}
|
|
5014
|
+
},
|
|
5015
|
+
position: [...activePosition]
|
|
5016
|
+
});
|
|
5017
|
+
}
|
|
4946
5018
|
hideTextArea();
|
|
4947
5019
|
});
|
|
5020
|
+
textarea.addEventListener("keydown", (e) => {
|
|
5021
|
+
e.stopPropagation();
|
|
5022
|
+
});
|
|
5023
|
+
textarea.addEventListener("keypress", (e) => {
|
|
5024
|
+
e.stopPropagation();
|
|
5025
|
+
});
|
|
5026
|
+
textarea.addEventListener("keyup", (e) => {
|
|
5027
|
+
e.stopPropagation();
|
|
5028
|
+
});
|
|
5029
|
+
textarea.addEventListener("wheel", (e) => {
|
|
5030
|
+
e.stopPropagation();
|
|
5031
|
+
e.preventDefault();
|
|
5032
|
+
});
|
|
4948
5033
|
const textEditCallback = (e) => {
|
|
4949
5034
|
var _a;
|
|
4950
|
-
if ((e == null ? void 0 : e.element) && ((_a = e == null ? void 0 : e.element) == null ? void 0 : _a.type) === "text") {
|
|
5035
|
+
if ((e == null ? void 0 : e.position) && (e == null ? void 0 : e.element) && ((_a = e == null ? void 0 : e.element) == null ? void 0 : _a.type) === "text") {
|
|
4951
5036
|
activeElem = e.element;
|
|
5037
|
+
activePosition = e.position;
|
|
4952
5038
|
}
|
|
4953
5039
|
showTextArea(e);
|
|
4954
5040
|
};
|
|
@@ -5043,6 +5129,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
5043
5129
|
sharer.setSharedStorage(keySelectedElementList, []);
|
|
5044
5130
|
sharer.setSharedStorage(keySelectedElementListVertexes, null);
|
|
5045
5131
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
5132
|
+
sharer.setSharedStorage(keyIsMoving, null);
|
|
5046
5133
|
};
|
|
5047
5134
|
clear();
|
|
5048
5135
|
const selectCallback = ({ uuids, positions }) => {
|
|
@@ -5231,6 +5318,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
5231
5318
|
},
|
|
5232
5319
|
pointMove: (e) => {
|
|
5233
5320
|
var _a, _b, _c;
|
|
5321
|
+
sharer.setSharedStorage(keyIsMoving, true);
|
|
5234
5322
|
const data = sharer.getActiveStorage("data");
|
|
5235
5323
|
const elems = getActiveElements();
|
|
5236
5324
|
const scale = sharer.getActiveStorage("scale") || 1;
|
|
@@ -5330,6 +5418,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
5330
5418
|
},
|
|
5331
5419
|
pointEnd(e) {
|
|
5332
5420
|
inBusyMode = null;
|
|
5421
|
+
sharer.setSharedStorage(keyIsMoving, false);
|
|
5333
5422
|
const data = sharer.getActiveStorage("data");
|
|
5334
5423
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
5335
5424
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
@@ -5402,7 +5491,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
5402
5491
|
viewer.drawFrame();
|
|
5403
5492
|
},
|
|
5404
5493
|
doubleClick(e) {
|
|
5405
|
-
var _a, _b, _c, _d;
|
|
5494
|
+
var _a, _b, _c, _d, _e, _f;
|
|
5406
5495
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
5407
5496
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
5408
5497
|
sharer.setSharedStorage(keySelectedElementList, []);
|
|
@@ -5420,6 +5509,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
5420
5509
|
eventHub.trigger(middlewareEventTextEdit, {
|
|
5421
5510
|
element: target.elements[0],
|
|
5422
5511
|
groupQueue: sharer.getSharedStorage(keyGroupQueue) || [],
|
|
5512
|
+
position: getElementPositionFromList((_e = target.elements[0]) == null ? void 0 : _e.uuid, ((_f = sharer.getActiveStorage("data")) == null ? void 0 : _f.elements) || []),
|
|
5423
5513
|
viewScaleInfo: sharer.getActiveViewScaleInfo()
|
|
5424
5514
|
});
|
|
5425
5515
|
}
|
|
@@ -5441,6 +5531,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
5441
5531
|
const areaEnd = sharedStore[keyAreaEnd];
|
|
5442
5532
|
const groupQueue = sharedStore[keyGroupQueue];
|
|
5443
5533
|
const groupQueueVertexesList = sharedStore[keyGroupQueueVertexesList];
|
|
5534
|
+
const isMoving = sharedStore[keyIsMoving];
|
|
5444
5535
|
const drawBaseOpts = { calculator, viewScaleInfo, viewSizeInfo };
|
|
5445
5536
|
const selectedElementController = elem ? calcElementSizeController(elem, {
|
|
5446
5537
|
groupQueue,
|
|
@@ -5465,7 +5556,12 @@ var __privateMethod = (obj, member, method) => {
|
|
|
5465
5556
|
}
|
|
5466
5557
|
}
|
|
5467
5558
|
if (!isLock && elem && ["select", "drag", "resize"].includes(actionType)) {
|
|
5468
|
-
drawSelectedElementControllersVertexes(helperContext, selectedElementController, {
|
|
5559
|
+
drawSelectedElementControllersVertexes(helperContext, selectedElementController, {
|
|
5560
|
+
...drawBaseOpts,
|
|
5561
|
+
element: elem,
|
|
5562
|
+
groupQueue,
|
|
5563
|
+
hideControllers: !!isMoving && actionType === "drag"
|
|
5564
|
+
});
|
|
5469
5565
|
}
|
|
5470
5566
|
} else {
|
|
5471
5567
|
if (hoverElement && actionType !== "drag") {
|
|
@@ -5483,7 +5579,12 @@ var __privateMethod = (obj, member, method) => {
|
|
|
5483
5579
|
}
|
|
5484
5580
|
}
|
|
5485
5581
|
if (!isLock && elem && ["select", "drag", "resize"].includes(actionType)) {
|
|
5486
|
-
drawSelectedElementControllersVertexes(helperContext, selectedElementController, {
|
|
5582
|
+
drawSelectedElementControllersVertexes(helperContext, selectedElementController, {
|
|
5583
|
+
...drawBaseOpts,
|
|
5584
|
+
element: elem,
|
|
5585
|
+
groupQueue,
|
|
5586
|
+
hideControllers: !!isMoving && actionType === "drag"
|
|
5587
|
+
});
|
|
5487
5588
|
} else if (actionType === "area" && areaStart && areaEnd) {
|
|
5488
5589
|
drawArea(helperContext, { start: areaStart, end: areaEnd });
|
|
5489
5590
|
} else if (["drag-list", "drag-list-end"].includes(actionType)) {
|
|
@@ -6210,6 +6311,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
6210
6311
|
exports.middlewareEventScale = middlewareEventScale;
|
|
6211
6312
|
exports.middlewareEventSelect = middlewareEventSelect;
|
|
6212
6313
|
exports.middlewareEventSelectClear = middlewareEventSelectClear;
|
|
6314
|
+
exports.middlewareEventTextChange = middlewareEventTextChange;
|
|
6213
6315
|
exports.middlewareEventTextEdit = middlewareEventTextEdit;
|
|
6214
6316
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
6215
6317
|
return exports;
|