@idraw/core 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 +6 -2
- package/dist/esm/index.js +20 -7
- package/dist/esm/lib/cursor-image.d.ts +2 -0
- package/dist/esm/lib/cursor-image.js +2 -0
- package/dist/esm/lib/cursor.js +9 -1
- package/dist/esm/middleware/dragger/index.d.ts +7 -0
- package/dist/esm/middleware/dragger/index.js +43 -0
- package/dist/esm/middleware/ruler/index.js +11 -7
- package/dist/esm/middleware/scaler/index.js +1 -3
- package/dist/esm/middleware/scroller/index.js +5 -5
- package/dist/esm/middleware/selector/config.d.ts +1 -0
- package/dist/esm/middleware/selector/config.js +1 -0
- package/dist/esm/middleware/selector/draw-wrapper.d.ts +5 -0
- package/dist/esm/middleware/selector/draw-wrapper.js +39 -1
- package/dist/esm/middleware/selector/index.d.ts +1 -0
- package/dist/esm/middleware/selector/index.js +131 -55
- package/dist/esm/middleware/selector/util.js +7 -2
- package/dist/esm/middleware/text-editor/index.js +11 -7
- package/dist/index.global.js +1437 -791
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -5
|
@@ -1,40 +1,15 @@
|
|
|
1
|
-
import { calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions } from '@idraw/util';
|
|
2
|
-
import { drawHoverVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
|
|
1
|
+
import { calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, deepResizeGroupElement } from '@idraw/util';
|
|
2
|
+
import { drawHoverVertexesWrapper, drawLockVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
|
|
3
3
|
import { getPointTarget, resizeElement, getSelectedListArea, calcSelectedElementsArea, isElementInGroup, isPointInViewActiveGroup, calcMoveInGroup } from './util';
|
|
4
|
-
import {
|
|
4
|
+
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController } from './config';
|
|
5
5
|
import { middlewareEventTextEdit } from '../text-editor';
|
|
6
6
|
export const middlewareEventSelect = '@middleware/select';
|
|
7
|
+
export const middlewareEventSelectClear = '@middleware/select-clear';
|
|
7
8
|
export const MiddlewareSelector = (opts) => {
|
|
8
|
-
const { viewer, sharer,
|
|
9
|
-
const { helperContext } =
|
|
9
|
+
const { viewer, sharer, boardContent, calculator, eventHub } = opts;
|
|
10
|
+
const { helperContext } = boardContent;
|
|
10
11
|
let prevPoint = null;
|
|
11
12
|
let inBusyMode = null;
|
|
12
|
-
eventHub.on(middlewareEventSelect, ({ uuids, positions }) => {
|
|
13
|
-
let elements = [];
|
|
14
|
-
const actionType = sharer.getSharedStorage(keyActionType);
|
|
15
|
-
const data = sharer.getActiveStorage('data');
|
|
16
|
-
if (positions && Array.isArray(positions)) {
|
|
17
|
-
elements = findElementsFromListByPositions(positions, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
elements = findElementsFromList(uuids, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
21
|
-
}
|
|
22
|
-
let needRefresh = false;
|
|
23
|
-
if (!actionType && elements.length === 1) {
|
|
24
|
-
sharer.setSharedStorage(keyActionType, 'select');
|
|
25
|
-
needRefresh = true;
|
|
26
|
-
}
|
|
27
|
-
else if (actionType === 'select' && elements.length === 1) {
|
|
28
|
-
needRefresh = true;
|
|
29
|
-
}
|
|
30
|
-
if (needRefresh) {
|
|
31
|
-
const elem = elements[0];
|
|
32
|
-
const groupQueue = getGroupQueueFromList(elem.uuid, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
33
|
-
sharer.setSharedStorage(keyGroupQueue, groupQueue);
|
|
34
|
-
updateSelectedElementList(elements);
|
|
35
|
-
viewer.drawFrame();
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
13
|
sharer.setSharedStorage(keyActionType, null);
|
|
39
14
|
const getActiveElements = () => {
|
|
40
15
|
return sharer.getSharedStorage(keySelectedElementList);
|
|
@@ -114,15 +89,53 @@ export const MiddlewareSelector = (opts) => {
|
|
|
114
89
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
115
90
|
};
|
|
116
91
|
clear();
|
|
92
|
+
const selectCallback = ({ uuids, positions }) => {
|
|
93
|
+
let elements = [];
|
|
94
|
+
const actionType = sharer.getSharedStorage(keyActionType);
|
|
95
|
+
const data = sharer.getActiveStorage('data');
|
|
96
|
+
if (positions && Array.isArray(positions)) {
|
|
97
|
+
elements = findElementsFromListByPositions(positions, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
elements = findElementsFromList(uuids, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
101
|
+
}
|
|
102
|
+
let needRefresh = false;
|
|
103
|
+
if (!actionType && elements.length === 1) {
|
|
104
|
+
sharer.setSharedStorage(keyActionType, 'select');
|
|
105
|
+
needRefresh = true;
|
|
106
|
+
}
|
|
107
|
+
else if (actionType === 'select' && elements.length === 1) {
|
|
108
|
+
needRefresh = true;
|
|
109
|
+
}
|
|
110
|
+
if (needRefresh) {
|
|
111
|
+
const elem = elements[0];
|
|
112
|
+
const groupQueue = getGroupQueueFromList(elem.uuid, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
113
|
+
sharer.setSharedStorage(keyGroupQueue, groupQueue);
|
|
114
|
+
updateSelectedElementList(elements);
|
|
115
|
+
viewer.drawFrame();
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
const selectClearCallback = () => {
|
|
119
|
+
clear();
|
|
120
|
+
viewer.drawFrame();
|
|
121
|
+
};
|
|
117
122
|
return {
|
|
118
|
-
|
|
123
|
+
name: '@middleware/selector',
|
|
124
|
+
use() {
|
|
125
|
+
eventHub.on(middlewareEventSelect, selectCallback);
|
|
126
|
+
eventHub.on(middlewareEventSelectClear, selectClearCallback);
|
|
127
|
+
},
|
|
128
|
+
disuse() {
|
|
129
|
+
eventHub.off(middlewareEventSelect, selectCallback);
|
|
130
|
+
eventHub.off(middlewareEventSelectClear, selectClearCallback);
|
|
131
|
+
},
|
|
119
132
|
hover: (e) => {
|
|
120
|
-
var _a, _b;
|
|
133
|
+
var _a, _b, _c, _d, _e;
|
|
121
134
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
122
135
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
123
136
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
124
137
|
const triggerCursor = (target) => {
|
|
125
|
-
|
|
138
|
+
const cursor = target.type;
|
|
126
139
|
if (inBusyMode === null) {
|
|
127
140
|
eventHub.trigger('cursor', {
|
|
128
141
|
type: cursor,
|
|
@@ -176,8 +189,22 @@ export const MiddlewareSelector = (opts) => {
|
|
|
176
189
|
calculator
|
|
177
190
|
}) }));
|
|
178
191
|
triggerCursor(target);
|
|
179
|
-
if (target.type ===
|
|
180
|
-
|
|
192
|
+
if (target.type === null) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (target.type === 'over-element' &&
|
|
196
|
+
sharer.getSharedStorage(keyActionType) === 'select' &&
|
|
197
|
+
target.elements.length === 1 &&
|
|
198
|
+
target.elements[0].uuid === ((_c = (_b = getActiveElements()) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.uuid)) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (target.type === 'over-element' &&
|
|
202
|
+
sharer.getSharedStorage(keyActionType) === null &&
|
|
203
|
+
target.elements.length === 1 &&
|
|
204
|
+
target.elements[0].uuid === ((_d = sharer.getSharedStorage(keyHoverElement)) === null || _d === void 0 ? void 0 : _d.uuid)) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if (target.type === 'over-element' && ((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1) {
|
|
181
208
|
updateHoverElement(target.elements[0]);
|
|
182
209
|
viewer.drawFrame();
|
|
183
210
|
return;
|
|
@@ -189,9 +216,8 @@ export const MiddlewareSelector = (opts) => {
|
|
|
189
216
|
}
|
|
190
217
|
},
|
|
191
218
|
pointStart: (e) => {
|
|
192
|
-
var _a, _b, _c, _d;
|
|
219
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
193
220
|
prevPoint = e.point;
|
|
194
|
-
updateHoverElement(null);
|
|
195
221
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
196
222
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
197
223
|
if (isPointInViewActiveGroup(e.point, {
|
|
@@ -201,12 +227,17 @@ export const MiddlewareSelector = (opts) => {
|
|
|
201
227
|
groupQueue
|
|
202
228
|
})) {
|
|
203
229
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
204
|
-
|
|
205
|
-
|
|
230
|
+
if (((_a = target === null || target === void 0 ? void 0 : target.elements) === null || _a === void 0 ? void 0 : _a.length) === 1 && ((_c = (_b = target.elements[0]) === null || _b === void 0 ? void 0 : _b.operations) === null || _c === void 0 ? void 0 : _c.lock) === true) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
updateHoverElement(null);
|
|
235
|
+
}
|
|
236
|
+
if (target.type === 'over-element' && ((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length) === 1) {
|
|
206
237
|
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
207
238
|
sharer.setSharedStorage(keyActionType, 'drag');
|
|
208
239
|
}
|
|
209
|
-
else if ((
|
|
240
|
+
else if ((_e = target.type) === null || _e === void 0 ? void 0 : _e.startsWith('resize-')) {
|
|
210
241
|
sharer.setSharedStorage(keyResizeType, target.type);
|
|
211
242
|
sharer.setSharedStorage(keyActionType, 'resize');
|
|
212
243
|
}
|
|
@@ -226,14 +257,20 @@ export const MiddlewareSelector = (opts) => {
|
|
|
226
257
|
calculator
|
|
227
258
|
});
|
|
228
259
|
const target = getPointTarget(e.point, Object.assign(Object.assign({}, pointTargetBaseOptions()), { areaSize: listAreaSize, groupQueue: [] }));
|
|
260
|
+
if (((_f = target === null || target === void 0 ? void 0 : target.elements) === null || _f === void 0 ? void 0 : _f.length) === 1 && ((_h = (_g = target.elements[0]) === null || _g === void 0 ? void 0 : _g.operations) === null || _h === void 0 ? void 0 : _h.lock) === true) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
updateHoverElement(null);
|
|
265
|
+
}
|
|
229
266
|
if (target.type === 'list-area') {
|
|
230
267
|
sharer.setSharedStorage(keyActionType, 'drag-list');
|
|
231
268
|
}
|
|
232
|
-
else if (target.type === 'over-element' && ((
|
|
269
|
+
else if (target.type === 'over-element' && ((_j = target === null || target === void 0 ? void 0 : target.elements) === null || _j === void 0 ? void 0 : _j.length) === 1) {
|
|
233
270
|
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
234
271
|
sharer.setSharedStorage(keyActionType, 'drag');
|
|
235
272
|
}
|
|
236
|
-
else if ((
|
|
273
|
+
else if ((_k = target.type) === null || _k === void 0 ? void 0 : _k.startsWith('resize-')) {
|
|
237
274
|
sharer.setSharedStorage(keyResizeType, target.type);
|
|
238
275
|
sharer.setSharedStorage(keyActionType, 'resize');
|
|
239
276
|
}
|
|
@@ -246,6 +283,7 @@ export const MiddlewareSelector = (opts) => {
|
|
|
246
283
|
viewer.drawFrame();
|
|
247
284
|
},
|
|
248
285
|
pointMove: (e) => {
|
|
286
|
+
var _a, _b, _c;
|
|
249
287
|
const data = sharer.getActiveStorage('data');
|
|
250
288
|
const elems = getActiveElements();
|
|
251
289
|
const scale = sharer.getActiveStorage('scale') || 1;
|
|
@@ -256,7 +294,7 @@ export const MiddlewareSelector = (opts) => {
|
|
|
256
294
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
257
295
|
if (actionType === 'drag') {
|
|
258
296
|
inBusyMode = 'drag';
|
|
259
|
-
if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && start && end) {
|
|
297
|
+
if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && start && end && ((_b = (_a = elems[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.lock) !== true) {
|
|
260
298
|
const { moveX, moveY } = calcMoveInGroup(start, end, groupQueue);
|
|
261
299
|
elems[0].x += moveX / scale;
|
|
262
300
|
elems[0].y += moveY / scale;
|
|
@@ -270,7 +308,8 @@ export const MiddlewareSelector = (opts) => {
|
|
|
270
308
|
const moveX = (end.x - start.x) / scale;
|
|
271
309
|
const moveY = (end.y - start.y) / scale;
|
|
272
310
|
elems.forEach((elem) => {
|
|
273
|
-
|
|
311
|
+
var _a;
|
|
312
|
+
if (elem && ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.lock) !== true) {
|
|
274
313
|
elem.x += moveX;
|
|
275
314
|
elem.y += moveY;
|
|
276
315
|
}
|
|
@@ -302,8 +341,16 @@ export const MiddlewareSelector = (opts) => {
|
|
|
302
341
|
const resizedElemSize = resizeElement(elems[0], { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
|
|
303
342
|
elems[0].x = resizedElemSize.x;
|
|
304
343
|
elems[0].y = resizedElemSize.y;
|
|
305
|
-
elems[0].
|
|
306
|
-
|
|
344
|
+
if (elems[0].type === 'group' && ((_c = elems[0].operations) === null || _c === void 0 ? void 0 : _c.deepResize) === true) {
|
|
345
|
+
deepResizeGroupElement(elems[0], {
|
|
346
|
+
w: resizedElemSize.w,
|
|
347
|
+
h: resizedElemSize.h
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
elems[0].w = resizedElemSize.w;
|
|
352
|
+
elems[0].h = resizedElemSize.h;
|
|
353
|
+
}
|
|
307
354
|
updateSelectedElementList([elems[0]]);
|
|
308
355
|
viewer.drawFrame();
|
|
309
356
|
}
|
|
@@ -380,7 +427,11 @@ export const MiddlewareSelector = (opts) => {
|
|
|
380
427
|
sharer.setActiveStorage('contextWidth', viewInfo.contextSize.contextWidth);
|
|
381
428
|
}
|
|
382
429
|
if (data && ['drag', 'drag-list', 'drag-list-end', 'resize'].includes(actionType)) {
|
|
383
|
-
|
|
430
|
+
let type = 'drag-element';
|
|
431
|
+
if (type === 'resize') {
|
|
432
|
+
type = 'resize-element';
|
|
433
|
+
}
|
|
434
|
+
eventHub.trigger('change', { data, type });
|
|
384
435
|
}
|
|
385
436
|
viewer.drawFrame();
|
|
386
437
|
};
|
|
@@ -392,9 +443,14 @@ export const MiddlewareSelector = (opts) => {
|
|
|
392
443
|
viewer.drawFrame();
|
|
393
444
|
},
|
|
394
445
|
doubleClick(e) {
|
|
395
|
-
var _a, _b;
|
|
446
|
+
var _a, _b, _c, _d;
|
|
396
447
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
397
|
-
|
|
448
|
+
sharer.setSharedStorage(keySelectedElementController, null);
|
|
449
|
+
sharer.setSharedStorage(keySelectedElementList, []);
|
|
450
|
+
if (target.elements.length === 1 && ((_b = (_a = target.elements[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.lock) === true) {
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
if (target.elements.length === 1 && ((_c = target.elements[0]) === null || _c === void 0 ? void 0 : _c.type) === 'group') {
|
|
398
454
|
const pushResult = pushGroupQueue(target.elements[0]);
|
|
399
455
|
if (pushResult === true) {
|
|
400
456
|
sharer.setSharedStorage(keyActionType, null);
|
|
@@ -402,7 +458,7 @@ export const MiddlewareSelector = (opts) => {
|
|
|
402
458
|
return;
|
|
403
459
|
}
|
|
404
460
|
}
|
|
405
|
-
else if (target.elements.length === 1 && ((
|
|
461
|
+
else if (target.elements.length === 1 && ((_d = target.elements[0]) === null || _d === void 0 ? void 0 : _d.type) === 'text') {
|
|
406
462
|
eventHub.trigger(middlewareEventTextEdit, {
|
|
407
463
|
element: target.elements[0],
|
|
408
464
|
groupQueue: sharer.getSharedStorage(keyGroupQueue) || [],
|
|
@@ -412,6 +468,7 @@ export const MiddlewareSelector = (opts) => {
|
|
|
412
468
|
sharer.setSharedStorage(keyActionType, null);
|
|
413
469
|
},
|
|
414
470
|
beforeDrawFrame({ snapshot }) {
|
|
471
|
+
var _a;
|
|
415
472
|
const { activeStore, sharedStore } = snapshot;
|
|
416
473
|
const { scale, offsetLeft, offsetTop, offsetRight, offsetBottom, width, height, contextHeight, contextWidth, devicePixelRatio } = activeStore;
|
|
417
474
|
const sharer = opts.sharer;
|
|
@@ -434,20 +491,39 @@ export const MiddlewareSelector = (opts) => {
|
|
|
434
491
|
viewScaleInfo
|
|
435
492
|
})
|
|
436
493
|
: null;
|
|
494
|
+
const isLock = !!((_a = hoverElement === null || hoverElement === void 0 ? void 0 : hoverElement.operations) === null || _a === void 0 ? void 0 : _a.lock);
|
|
437
495
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
438
496
|
drawGroupQueueVertexesWrappers(helperContext, groupQueueVertexesList, drawBaseOpts);
|
|
439
497
|
if (hoverElement && actionType !== 'drag') {
|
|
440
|
-
|
|
498
|
+
if (isLock) {
|
|
499
|
+
drawLockVertexesWrapper(helperContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
|
|
500
|
+
groupQueue,
|
|
501
|
+
controllerSize: 10,
|
|
502
|
+
viewScaleInfo
|
|
503
|
+
}) }));
|
|
504
|
+
}
|
|
505
|
+
else {
|
|
506
|
+
drawHoverVertexesWrapper(helperContext, hoverElementVertexes, drawBaseOpts);
|
|
507
|
+
}
|
|
441
508
|
}
|
|
442
|
-
if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
509
|
+
if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
443
510
|
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign({}, drawBaseOpts));
|
|
444
511
|
}
|
|
445
512
|
}
|
|
446
513
|
else {
|
|
447
514
|
if (hoverElement && actionType !== 'drag') {
|
|
448
|
-
|
|
515
|
+
if (isLock) {
|
|
516
|
+
drawLockVertexesWrapper(helperContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
|
|
517
|
+
groupQueue,
|
|
518
|
+
controllerSize: 10,
|
|
519
|
+
viewScaleInfo
|
|
520
|
+
}) }));
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
drawHoverVertexesWrapper(helperContext, hoverElementVertexes, drawBaseOpts);
|
|
524
|
+
}
|
|
449
525
|
}
|
|
450
|
-
if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
526
|
+
if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
451
527
|
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign({}, drawBaseOpts));
|
|
452
528
|
}
|
|
453
529
|
else if (actionType === 'area' && areaStart && areaEnd) {
|
|
@@ -672,6 +672,7 @@ export function resizeElement(elem, opts) {
|
|
|
672
672
|
return { x, y, w, h, angle: elem.angle };
|
|
673
673
|
}
|
|
674
674
|
export function getSelectedListArea(data, opts) {
|
|
675
|
+
var _a;
|
|
675
676
|
const indexes = [];
|
|
676
677
|
const uuids = [];
|
|
677
678
|
const elements = [];
|
|
@@ -683,7 +684,11 @@ export function getSelectedListArea(data, opts) {
|
|
|
683
684
|
const endX = Math.max(start.x, end.x);
|
|
684
685
|
const startY = Math.min(start.y, end.y);
|
|
685
686
|
const endY = Math.max(start.y, end.y);
|
|
686
|
-
data.elements.
|
|
687
|
+
for (let idx = 0; idx < data.elements.length; idx++) {
|
|
688
|
+
const elem = data.elements[idx];
|
|
689
|
+
if (((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.lock) === true) {
|
|
690
|
+
continue;
|
|
691
|
+
}
|
|
687
692
|
const elemSize = calculator.elementSize(elem, viewScaleInfo, viewSizeInfo);
|
|
688
693
|
const center = calcElementCenter(elemSize);
|
|
689
694
|
if (center.x >= startX && center.x <= endX && center.y >= startY && center.y <= endY) {
|
|
@@ -702,7 +707,7 @@ export function getSelectedListArea(data, opts) {
|
|
|
702
707
|
}
|
|
703
708
|
}
|
|
704
709
|
}
|
|
705
|
-
}
|
|
710
|
+
}
|
|
706
711
|
return { indexes, uuids, elements };
|
|
707
712
|
}
|
|
708
713
|
export function calcSelectedElementsArea(elements, opts) {
|
|
@@ -2,9 +2,8 @@ import { limitAngle, getDefaultElementDetailConfig } from '@idraw/util';
|
|
|
2
2
|
export const middlewareEventTextEdit = '@middleware/text-edit';
|
|
3
3
|
const defaultElementDetail = getDefaultElementDetailConfig();
|
|
4
4
|
export const MiddlewareTextEditor = (opts) => {
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const canvas = viewContent.boardContext.canvas;
|
|
5
|
+
const { eventHub, boardContent, viewer } = opts;
|
|
6
|
+
const canvas = boardContent.boardContext.canvas;
|
|
8
7
|
const textarea = document.createElement('textarea');
|
|
9
8
|
const canvasWrapper = document.createElement('div');
|
|
10
9
|
const container = opts.container || document.body;
|
|
@@ -129,15 +128,20 @@ export const MiddlewareTextEditor = (opts) => {
|
|
|
129
128
|
textarea.addEventListener('blur', () => {
|
|
130
129
|
hideTextArea();
|
|
131
130
|
});
|
|
132
|
-
|
|
131
|
+
const textEditCallback = (e) => {
|
|
133
132
|
var _a;
|
|
134
133
|
if ((e === null || e === void 0 ? void 0 : e.element) && ((_a = e === null || e === void 0 ? void 0 : e.element) === null || _a === void 0 ? void 0 : _a.type) === 'text') {
|
|
135
134
|
activeElem = e.element;
|
|
136
135
|
}
|
|
137
136
|
showTextArea(e);
|
|
138
|
-
}
|
|
137
|
+
};
|
|
139
138
|
return {
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
name: '@middleware/text-editor',
|
|
140
|
+
use() {
|
|
141
|
+
eventHub.on(middlewareEventTextEdit, textEditCallback);
|
|
142
|
+
},
|
|
143
|
+
disuse() {
|
|
144
|
+
eventHub.off(middlewareEventTextEdit, textEditCallback);
|
|
145
|
+
}
|
|
142
146
|
};
|
|
143
147
|
};
|