@idraw/core 0.4.0-beta.32 → 0.4.0-beta.33
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/middleware/info/index.js +4 -2
- package/dist/esm/middleware/info/types.d.ts +2 -2
- package/dist/esm/middleware/selector/draw-wrapper.d.ts +3 -3
- package/dist/esm/middleware/selector/draw-wrapper.js +1 -1
- package/dist/esm/middleware/selector/index.js +60 -40
- package/dist/esm/middleware/selector/util.d.ts +2 -2
- package/dist/esm/middleware/selector/util.js +4 -4
- package/dist/index.global.js +69 -42
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formatNumber, getViewScaleInfoFromSnapshot, getViewSizeInfoFromSnapshot, createUUID, limitAngle, rotatePoint, parseAngleToRadian } from '@idraw/util';
|
|
2
|
-
import { keySelectedElementList, keyActionType, keyGroupQueue } from '../selector';
|
|
2
|
+
import { keySelectedElementList, keyHoverElement, keyActionType, keyGroupQueue } from '../selector';
|
|
3
3
|
import { drawSizeInfoText, drawPositionInfoText, drawAngleInfoText } from './draw-info';
|
|
4
4
|
import { defaltStyle } from './config';
|
|
5
5
|
const infoFontSize = 10;
|
|
@@ -16,11 +16,13 @@ export const MiddlewareInfo = (opts, config) => {
|
|
|
16
16
|
return {
|
|
17
17
|
name: '@middleware/info',
|
|
18
18
|
beforeDrawFrame({ snapshot }) {
|
|
19
|
+
var _a;
|
|
19
20
|
const { sharedStore } = snapshot;
|
|
20
21
|
const selectedElementList = sharedStore[keySelectedElementList];
|
|
22
|
+
const hoverElement = sharedStore[keyHoverElement];
|
|
21
23
|
const actionType = sharedStore[keyActionType];
|
|
22
24
|
const groupQueue = sharedStore[keyGroupQueue] || [];
|
|
23
|
-
if (selectedElementList.length === 1) {
|
|
25
|
+
if (selectedElementList.length === 1 && !((_a = hoverElement === null || hoverElement === void 0 ? void 0 : hoverElement.operations) === null || _a === void 0 ? void 0 : _a.locked)) {
|
|
24
26
|
const elem = selectedElementList[0];
|
|
25
27
|
if (elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
26
28
|
const viewScaleInfo = getViewScaleInfoFromSnapshot(snapshot);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { keySelectedElementList, keyActionType, keyGroupQueue } from '../selector';
|
|
1
|
+
import { keySelectedElementList, keyHoverElement, keyActionType, keyGroupQueue } from '../selector';
|
|
2
2
|
import type { DeepSelectorSharedStorage } from '../selector';
|
|
3
|
-
export type DeepInfoSharedStorage = Pick<DeepSelectorSharedStorage, typeof keySelectedElementList | typeof keyActionType | typeof keyGroupQueue>;
|
|
3
|
+
export type DeepInfoSharedStorage = Pick<DeepSelectorSharedStorage, typeof keySelectedElementList | typeof keyHoverElement | typeof keyActionType | typeof keyGroupQueue>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { Element, ElementType, PointSize, RendererDrawElementOptions, ViewContext2D, ViewRectVertexes, ViewScaleInfo, ViewSizeInfo, ElementSizeController, ViewCalculator } from '@idraw/types';
|
|
2
|
-
import type { AreaSize
|
|
1
|
+
import type { Element, ElementType, PointSize, RendererDrawElementOptions, ViewContext2D, ViewRectVertexes, ViewScaleInfo, ViewSizeInfo, ElementSizeController, ViewCalculator, MiddlewareSelectorStyle } from '@idraw/types';
|
|
2
|
+
import type { AreaSize } from './types';
|
|
3
3
|
export declare function drawHoverVertexesWrapper(ctx: ViewContext2D, vertexes: ViewRectVertexes | null, opts: {
|
|
4
4
|
viewScaleInfo: ViewScaleInfo;
|
|
5
5
|
viewSizeInfo: ViewSizeInfo;
|
|
6
6
|
style: MiddlewareSelectorStyle;
|
|
7
7
|
}): void;
|
|
8
|
-
export declare function
|
|
8
|
+
export declare function drawLockedVertexesWrapper(ctx: ViewContext2D, vertexes: ViewRectVertexes | null, opts: {
|
|
9
9
|
viewScaleInfo: ViewScaleInfo;
|
|
10
10
|
viewSizeInfo: ViewSizeInfo;
|
|
11
11
|
controller?: ElementSizeController | null;
|
|
@@ -10,7 +10,7 @@ export function drawHoverVertexesWrapper(ctx, vertexes, opts) {
|
|
|
10
10
|
const wrapperOpts = { borderColor: activeColor, borderWidth: 1, background: 'transparent', lineDash: [] };
|
|
11
11
|
drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
|
|
12
12
|
}
|
|
13
|
-
export function
|
|
13
|
+
export function drawLockedVertexesWrapper(ctx, vertexes, opts) {
|
|
14
14
|
if (!vertexes) {
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, deepResizeGroupElement } from '@idraw/util';
|
|
2
|
-
import { drawHoverVertexesWrapper,
|
|
1
|
+
import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, deepResizeGroupElement, getElementSize } from '@idraw/util';
|
|
2
|
+
import { drawHoverVertexesWrapper, drawLockedVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
|
|
3
3
|
import { drawReferenceLines } from './draw-reference';
|
|
4
4
|
import { getPointTarget, resizeElement, rotateElement, getSelectedListArea, calcSelectedElementsArea, isElementInGroup, isPointInViewActiveGroup, calcMoveInGroup } from './util';
|
|
5
5
|
import { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid, keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keyIsMoving, keyEnableSelectInGroup, keyEnableSnapToGrid, controllerSize, defaultStyle } from './config';
|
|
@@ -16,6 +16,8 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
16
16
|
const { viewer, sharer, boardContent, calculator, eventHub } = opts;
|
|
17
17
|
const { overlayContext } = boardContent;
|
|
18
18
|
let prevPoint = null;
|
|
19
|
+
let moveOriginalStartPoint = null;
|
|
20
|
+
let moveOriginalStartElementSize = null;
|
|
19
21
|
let inBusyMode = null;
|
|
20
22
|
sharer.setSharedStorage(keyActionType, null);
|
|
21
23
|
sharer.setSharedStorage(keyEnableSnapToGrid, true);
|
|
@@ -249,8 +251,9 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
249
251
|
}
|
|
250
252
|
},
|
|
251
253
|
pointStart: (e) => {
|
|
252
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
254
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
253
255
|
prevPoint = e.point;
|
|
256
|
+
moveOriginalStartPoint = e.point;
|
|
254
257
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
255
258
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
256
259
|
if (isPointInViewActiveGroup(e.point, {
|
|
@@ -260,17 +263,20 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
260
263
|
groupQueue
|
|
261
264
|
})) {
|
|
262
265
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
263
|
-
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.
|
|
266
|
+
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.locked) === true) {
|
|
264
267
|
return;
|
|
265
268
|
}
|
|
266
269
|
else {
|
|
267
270
|
updateHoverElement(null);
|
|
268
271
|
}
|
|
269
|
-
if (
|
|
272
|
+
if (((_d = target === null || target === void 0 ? void 0 : target.elements) === null || _d === void 0 ? void 0 : _d.length) === 1) {
|
|
273
|
+
moveOriginalStartElementSize = getElementSize(target === null || target === void 0 ? void 0 : target.elements[0]);
|
|
274
|
+
}
|
|
275
|
+
if (target.type === 'over-element' && ((_e = target === null || target === void 0 ? void 0 : target.elements) === null || _e === void 0 ? void 0 : _e.length) === 1) {
|
|
270
276
|
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
271
277
|
sharer.setSharedStorage(keyActionType, 'drag');
|
|
272
278
|
}
|
|
273
|
-
else if ((
|
|
279
|
+
else if ((_f = target.type) === null || _f === void 0 ? void 0 : _f.startsWith('resize-')) {
|
|
274
280
|
sharer.setSharedStorage(keyResizeType, target.type);
|
|
275
281
|
sharer.setSharedStorage(keyActionType, 'resize');
|
|
276
282
|
}
|
|
@@ -290,22 +296,31 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
290
296
|
calculator
|
|
291
297
|
});
|
|
292
298
|
const target = getPointTarget(e.point, Object.assign(Object.assign({}, pointTargetBaseOptions()), { areaSize: listAreaSize, groupQueue: [] }));
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
299
|
+
const isLockedElement = ((_g = target === null || target === void 0 ? void 0 : target.elements) === null || _g === void 0 ? void 0 : _g.length) === 1 && ((_j = (_h = target.elements[0]) === null || _h === void 0 ? void 0 : _h.operations) === null || _j === void 0 ? void 0 : _j.locked) === true;
|
|
300
|
+
if (!isLockedElement) {
|
|
297
301
|
updateHoverElement(null);
|
|
298
302
|
}
|
|
299
|
-
if (target.
|
|
300
|
-
|
|
301
|
-
}
|
|
302
|
-
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) {
|
|
303
|
-
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
304
|
-
sharer.setSharedStorage(keyActionType, 'drag');
|
|
303
|
+
if (((_k = target === null || target === void 0 ? void 0 : target.elements) === null || _k === void 0 ? void 0 : _k.length) === 1) {
|
|
304
|
+
moveOriginalStartElementSize = getElementSize(target === null || target === void 0 ? void 0 : target.elements[0]);
|
|
305
305
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
306
|
+
if (!isLockedElement) {
|
|
307
|
+
if (target.type === 'list-area') {
|
|
308
|
+
sharer.setSharedStorage(keyActionType, 'drag-list');
|
|
309
|
+
}
|
|
310
|
+
else if (target.type === 'over-element' && ((_l = target === null || target === void 0 ? void 0 : target.elements) === null || _l === void 0 ? void 0 : _l.length) === 1) {
|
|
311
|
+
updateSelectedElementList([target.elements[0]], { triggerEvent: true });
|
|
312
|
+
sharer.setSharedStorage(keyActionType, 'drag');
|
|
313
|
+
}
|
|
314
|
+
else if ((_m = target.type) === null || _m === void 0 ? void 0 : _m.startsWith('resize-')) {
|
|
315
|
+
sharer.setSharedStorage(keyResizeType, target.type);
|
|
316
|
+
sharer.setSharedStorage(keyActionType, 'resize');
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
clear();
|
|
320
|
+
sharer.setSharedStorage(keyActionType, 'area');
|
|
321
|
+
sharer.setSharedStorage(keyAreaStart, e.point);
|
|
322
|
+
updateSelectedElementList([], { triggerEvent: true });
|
|
323
|
+
}
|
|
309
324
|
}
|
|
310
325
|
else {
|
|
311
326
|
clear();
|
|
@@ -324,6 +339,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
324
339
|
const viewScaleInfo = sharer.getActiveViewScaleInfo();
|
|
325
340
|
const viewSizeInfo = sharer.getActiveViewSizeInfo();
|
|
326
341
|
const start = prevPoint;
|
|
342
|
+
const originalStart = moveOriginalStartPoint;
|
|
327
343
|
const end = e.point;
|
|
328
344
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
329
345
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
@@ -331,8 +347,8 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
331
347
|
const enableSnapToGrid = sharer.getSharedStorage(keyEnableSnapToGrid);
|
|
332
348
|
if (actionType === 'drag') {
|
|
333
349
|
inBusyMode = 'drag';
|
|
334
|
-
if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 &&
|
|
335
|
-
const { moveX, moveY } = calcMoveInGroup(
|
|
350
|
+
if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && moveOriginalStartElementSize && originalStart && end && ((_b = (_a = elems[0]) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.locked) !== true) {
|
|
351
|
+
const { moveX, moveY } = calcMoveInGroup(originalStart, end, groupQueue);
|
|
336
352
|
let totalMoveX = calculator.toGridNum(moveX / scale);
|
|
337
353
|
let totalMoveY = calculator.toGridNum(moveY / scale);
|
|
338
354
|
if (enableSnapToGrid === true) {
|
|
@@ -357,8 +373,8 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
357
373
|
console.error(err);
|
|
358
374
|
}
|
|
359
375
|
}
|
|
360
|
-
elems[0].x = calculator.toGridNum(
|
|
361
|
-
elems[0].y = calculator.toGridNum(
|
|
376
|
+
elems[0].x = calculator.toGridNum(moveOriginalStartElementSize.x + totalMoveX);
|
|
377
|
+
elems[0].y = calculator.toGridNum(moveOriginalStartElementSize.y + totalMoveY);
|
|
362
378
|
updateSelectedElementList([elems[0]]);
|
|
363
379
|
calculator.modifyViewVisibleInfoMap(data, {
|
|
364
380
|
modifyOptions: {
|
|
@@ -376,12 +392,12 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
376
392
|
}
|
|
377
393
|
else if (actionType === 'drag-list') {
|
|
378
394
|
inBusyMode = 'drag-list';
|
|
379
|
-
if (data && start && end && (elems === null || elems === void 0 ? void 0 : elems.length) > 1) {
|
|
395
|
+
if (data && originalStart && start && end && (elems === null || elems === void 0 ? void 0 : elems.length) > 1) {
|
|
380
396
|
const moveX = (end.x - start.x) / scale;
|
|
381
397
|
const moveY = (end.y - start.y) / scale;
|
|
382
398
|
elems.forEach((elem) => {
|
|
383
399
|
var _a;
|
|
384
|
-
if (elem && ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.
|
|
400
|
+
if (elem && ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.locked) !== true) {
|
|
385
401
|
elem.x = calculator.toGridNum(elem.x + moveX);
|
|
386
402
|
elem.y = calculator.toGridNum(elem.y + moveY);
|
|
387
403
|
calculator.modifyViewVisibleInfoMap(data, {
|
|
@@ -402,7 +418,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
402
418
|
viewer.drawFrame();
|
|
403
419
|
}
|
|
404
420
|
else if (actionType === 'resize') {
|
|
405
|
-
if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 &&
|
|
421
|
+
if (data && (elems === null || elems === void 0 ? void 0 : elems.length) === 1 && originalStart && moveOriginalStartElementSize && (resizeType === null || resizeType === void 0 ? void 0 : resizeType.startsWith('resize-'))) {
|
|
406
422
|
inBusyMode = 'resize';
|
|
407
423
|
const pointGroupQueue = [];
|
|
408
424
|
groupQueue.forEach((group) => {
|
|
@@ -415,10 +431,10 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
415
431
|
angle: 0 - angle
|
|
416
432
|
});
|
|
417
433
|
});
|
|
418
|
-
let resizeStart =
|
|
434
|
+
let resizeStart = originalStart;
|
|
419
435
|
let resizeEnd = end;
|
|
420
436
|
if (groupQueue.length > 0) {
|
|
421
|
-
resizeStart = rotatePointInGroup(
|
|
437
|
+
resizeStart = rotatePointInGroup(originalStart, pointGroupQueue);
|
|
422
438
|
resizeEnd = rotatePointInGroup(end, pointGroupQueue);
|
|
423
439
|
}
|
|
424
440
|
if (resizeType === 'resize-rotate') {
|
|
@@ -430,11 +446,11 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
430
446
|
controller.bottomRight.center
|
|
431
447
|
];
|
|
432
448
|
const viewCenter = calcElementCenterFromVertexes(viewVertexes);
|
|
433
|
-
const resizedElemSize = rotateElement(
|
|
449
|
+
const resizedElemSize = rotateElement(moveOriginalStartElementSize, {
|
|
434
450
|
center: viewCenter,
|
|
435
451
|
viewScaleInfo,
|
|
436
452
|
viewSizeInfo,
|
|
437
|
-
start,
|
|
453
|
+
start: originalStart,
|
|
438
454
|
end,
|
|
439
455
|
resizeType,
|
|
440
456
|
sharer
|
|
@@ -442,8 +458,8 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
442
458
|
elems[0].angle = calculator.toGridNum(resizedElemSize.angle || 0);
|
|
443
459
|
}
|
|
444
460
|
else {
|
|
445
|
-
const resizedElemSize = resizeElement(
|
|
446
|
-
const calcOpts = { ignore: !!
|
|
461
|
+
const resizedElemSize = resizeElement(moveOriginalStartElementSize, { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
|
|
462
|
+
const calcOpts = { ignore: !!moveOriginalStartElementSize.angle };
|
|
447
463
|
elems[0].x = calculator.toGridNum(resizedElemSize.x, calcOpts);
|
|
448
464
|
elems[0].y = calculator.toGridNum(resizedElemSize.y, calcOpts);
|
|
449
465
|
if (elems[0].type === 'group' && ((_c = elems[0].operations) === null || _c === void 0 ? void 0 : _c.deepResize) === true) {
|
|
@@ -490,6 +506,8 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
490
506
|
const viewSizeInfo = sharer.getActiveViewSizeInfo();
|
|
491
507
|
let needDrawFrame = false;
|
|
492
508
|
prevPoint = null;
|
|
509
|
+
moveOriginalStartPoint = null;
|
|
510
|
+
moveOriginalStartElementSize = null;
|
|
493
511
|
if (actionType === 'resize' && resizeType) {
|
|
494
512
|
sharer.setSharedStorage(keyResizeType, null);
|
|
495
513
|
needDrawFrame = true;
|
|
@@ -559,6 +577,8 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
559
577
|
},
|
|
560
578
|
pointLeave() {
|
|
561
579
|
prevPoint = null;
|
|
580
|
+
moveOriginalStartPoint = null;
|
|
581
|
+
moveOriginalStartElementSize = null;
|
|
562
582
|
clear();
|
|
563
583
|
viewer.drawFrame();
|
|
564
584
|
},
|
|
@@ -570,7 +590,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
570
590
|
const target = getPointTarget(e.point, pointTargetBaseOptions());
|
|
571
591
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
572
592
|
sharer.setSharedStorage(keySelectedElementList, []);
|
|
573
|
-
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.
|
|
593
|
+
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.locked) === true) {
|
|
574
594
|
return;
|
|
575
595
|
}
|
|
576
596
|
if (target.elements.length === 1 && ((_c = target.elements[0]) === null || _c === void 0 ? void 0 : _c.type) === 'group') {
|
|
@@ -617,12 +637,12 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
617
637
|
viewScaleInfo
|
|
618
638
|
})
|
|
619
639
|
: null;
|
|
620
|
-
const
|
|
640
|
+
const isLocked = !!((_a = hoverElement === null || hoverElement === void 0 ? void 0 : hoverElement.operations) === null || _a === void 0 ? void 0 : _a.locked);
|
|
621
641
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
622
642
|
drawGroupQueueVertexesWrappers(overlayContext, groupQueueVertexesList, drawBaseOpts);
|
|
623
643
|
if (hoverElement && actionType !== 'drag') {
|
|
624
|
-
if (
|
|
625
|
-
|
|
644
|
+
if (isLocked) {
|
|
645
|
+
drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
|
|
626
646
|
groupQueue,
|
|
627
647
|
controllerSize: 10,
|
|
628
648
|
viewScaleInfo
|
|
@@ -632,7 +652,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
632
652
|
drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
|
|
633
653
|
}
|
|
634
654
|
}
|
|
635
|
-
if (!
|
|
655
|
+
if (!isLocked && elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
636
656
|
drawSelectedElementControllersVertexes(overlayContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag', style }));
|
|
637
657
|
if (actionType === 'drag') {
|
|
638
658
|
if (enableSnapToGrid === true) {
|
|
@@ -659,8 +679,8 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
659
679
|
}
|
|
660
680
|
else {
|
|
661
681
|
if (hoverElement && actionType !== 'drag') {
|
|
662
|
-
if (
|
|
663
|
-
|
|
682
|
+
if (isLocked) {
|
|
683
|
+
drawLockedVertexesWrapper(overlayContext, hoverElementVertexes, Object.assign(Object.assign({}, drawBaseOpts), { controller: calcElementSizeController(hoverElement, {
|
|
664
684
|
groupQueue,
|
|
665
685
|
controllerSize: 10,
|
|
666
686
|
viewScaleInfo
|
|
@@ -670,7 +690,7 @@ export const MiddlewareSelector = (opts, config) => {
|
|
|
670
690
|
drawHoverVertexesWrapper(overlayContext, hoverElementVertexes, drawBaseOpts);
|
|
671
691
|
}
|
|
672
692
|
}
|
|
673
|
-
if (!
|
|
693
|
+
if (!isLocked && elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
674
694
|
drawSelectedElementControllersVertexes(overlayContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag', style }));
|
|
675
695
|
if (actionType === 'drag') {
|
|
676
696
|
if (enableSnapToGrid === true) {
|
|
@@ -23,14 +23,14 @@ export declare function getPointTarget(p: PointSize, opts: {
|
|
|
23
23
|
groupQueue: Element<'group'>[] | null;
|
|
24
24
|
selectedElementController: ElementSizeController | null;
|
|
25
25
|
}): PointTarget;
|
|
26
|
-
export declare function resizeElement(elem:
|
|
26
|
+
export declare function resizeElement(elem: ElementSize, opts: {
|
|
27
27
|
start: PointSize;
|
|
28
28
|
end: PointSize;
|
|
29
29
|
resizeType: ResizeType;
|
|
30
30
|
scale: number;
|
|
31
31
|
sharer: StoreSharer;
|
|
32
32
|
}): ElementSize;
|
|
33
|
-
export declare function rotateElement(elem:
|
|
33
|
+
export declare function rotateElement(elem: ElementSize, opts: {
|
|
34
34
|
center: PointSize;
|
|
35
35
|
start: PointSize;
|
|
36
36
|
end: PointSize;
|
|
@@ -703,10 +703,10 @@ export function getSelectedListArea(data, opts) {
|
|
|
703
703
|
const endY = Math.max(start.y, end.y);
|
|
704
704
|
for (let idx = 0; idx < data.elements.length; idx++) {
|
|
705
705
|
const elem = data.elements[idx];
|
|
706
|
-
if (((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.
|
|
706
|
+
if (((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.locked) === true) {
|
|
707
707
|
continue;
|
|
708
708
|
}
|
|
709
|
-
const elemSize = calcViewElementSize(elem, { viewScaleInfo
|
|
709
|
+
const elemSize = calcViewElementSize(elem, { viewScaleInfo });
|
|
710
710
|
const center = calcElementCenter(elemSize);
|
|
711
711
|
if (center.x >= startX && center.x <= endX && center.y >= startY && center.y <= endY) {
|
|
712
712
|
indexes.push(idx);
|
|
@@ -733,14 +733,14 @@ export function calcSelectedElementsArea(elements, opts) {
|
|
|
733
733
|
return null;
|
|
734
734
|
}
|
|
735
735
|
const area = { x: 0, y: 0, w: 0, h: 0 };
|
|
736
|
-
const { viewScaleInfo
|
|
736
|
+
const { viewScaleInfo } = opts;
|
|
737
737
|
let prevElemSize = null;
|
|
738
738
|
for (let i = 0; i < elements.length; i++) {
|
|
739
739
|
const elem = elements[i];
|
|
740
740
|
if ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.invisible) {
|
|
741
741
|
continue;
|
|
742
742
|
}
|
|
743
|
-
const elemSize = calcViewElementSize(elem, { viewScaleInfo
|
|
743
|
+
const elemSize = calcViewElementSize(elem, { viewScaleInfo });
|
|
744
744
|
if (elemSize.angle && (elemSize.angle > 0 || elemSize.angle < 0)) {
|
|
745
745
|
const ves = rotateElementVertexes(elemSize);
|
|
746
746
|
if (ves.length === 4) {
|