@idraw/core 0.4.0-beta.25 → 0.4.0-beta.27
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 +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/middleware/selector/config.d.ts +2 -0
- package/dist/esm/middleware/selector/config.js +3 -1
- package/dist/esm/middleware/selector/index.d.ts +2 -2
- package/dist/esm/middleware/selector/index.js +43 -29
- package/dist/esm/middleware/selector/types.d.ts +2 -1
- package/dist/esm/middleware/selector/types.js +1 -1
- package/dist/index.global.js +89 -32
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -5
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Data, PointSize, CoreOptions, BoardMiddleware, ViewSizeInfo, CoreEventMap, ViewScaleInfo, LoadItemMap, ModifyOptions } from '@idraw/types';
|
|
2
2
|
export { eventChange } from './config';
|
|
3
|
-
export { MiddlewareSelector, middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup } from './middleware/selector';
|
|
3
|
+
export { MiddlewareSelector, middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid } from './middleware/selector';
|
|
4
4
|
export { MiddlewareScroller } from './middleware/scroller';
|
|
5
5
|
export { MiddlewareScaler, middlewareEventScale } from './middleware/scaler';
|
|
6
6
|
export { MiddlewareRuler, middlewareEventRuler } from './middleware/ruler';
|
package/dist/esm/index.js
CHANGED
|
@@ -14,7 +14,7 @@ import { Board } from '@idraw/board';
|
|
|
14
14
|
import { createBoardContent, validateElements } from '@idraw/util';
|
|
15
15
|
import { Cursor } from './lib/cursor';
|
|
16
16
|
export { eventChange } from './config';
|
|
17
|
-
export { MiddlewareSelector, middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup } from './middleware/selector';
|
|
17
|
+
export { MiddlewareSelector, middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid } from './middleware/selector';
|
|
18
18
|
export { MiddlewareScroller } from './middleware/scroller';
|
|
19
19
|
export { MiddlewareScaler, middlewareEventScale } from './middleware/scaler';
|
|
20
20
|
export { MiddlewareRuler, middlewareEventRuler } from './middleware/ruler';
|
|
@@ -15,6 +15,7 @@ export declare const keyGroupQueue: unique symbol;
|
|
|
15
15
|
export declare const keyGroupQueueVertexesList: unique symbol;
|
|
16
16
|
export declare const keyIsMoving: unique symbol;
|
|
17
17
|
export declare const keyEnableSelectInGroup: unique symbol;
|
|
18
|
+
export declare const keyEnableSnapToGrid: unique symbol;
|
|
18
19
|
export declare const keyDebugElemCenter: unique symbol;
|
|
19
20
|
export declare const keyDebugStartVertical: unique symbol;
|
|
20
21
|
export declare const keyDebugEndVertical: unique symbol;
|
|
@@ -32,3 +33,4 @@ export declare const referenceColor = "#f7276e";
|
|
|
32
33
|
export declare const middlewareEventSelect: string;
|
|
33
34
|
export declare const middlewareEventSelectClear: string;
|
|
34
35
|
export declare const middlewareEventSelectInGroup: string;
|
|
36
|
+
export declare const middlewareEventSnapToGrid: string;
|
|
@@ -14,7 +14,8 @@ export const keySelectedReferenceYLines = Symbol(`${key}_selectedReferenceYLines
|
|
|
14
14
|
export const keyGroupQueue = Symbol(`${key}_groupQueue`);
|
|
15
15
|
export const keyGroupQueueVertexesList = Symbol(`${key}_groupQueueVertexesList`);
|
|
16
16
|
export const keyIsMoving = Symbol(`${key}_isMoving`);
|
|
17
|
-
export const keyEnableSelectInGroup = Symbol(`${key}
|
|
17
|
+
export const keyEnableSelectInGroup = Symbol(`${key}_enableSelectInGroup`);
|
|
18
|
+
export const keyEnableSnapToGrid = Symbol(`${key}_enableSnapToGrid`);
|
|
18
19
|
export const keyDebugElemCenter = Symbol(`${key}_debug_elemCenter`);
|
|
19
20
|
export const keyDebugStartVertical = Symbol(`${key}_debug_startVertical`);
|
|
20
21
|
export const keyDebugEndVertical = Symbol(`${key}_debug_endVertical`);
|
|
@@ -32,3 +33,4 @@ export const referenceColor = '#f7276e';
|
|
|
32
33
|
export const middlewareEventSelect = '@middleware/select';
|
|
33
34
|
export const middlewareEventSelectClear = '@middleware/select-clear';
|
|
34
35
|
export const middlewareEventSelectInGroup = '@middleware/select-in-group';
|
|
36
|
+
export const middlewareEventSnapToGrid = '@middleware/snap-to-grid';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CoreEventMap } from '@idraw/types';
|
|
2
2
|
import type { BoardMiddleware, ActionType, DeepSelectorSharedStorage } from './types';
|
|
3
|
-
import { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, keyActionType, keyResizeType, keyGroupQueue, keySelectedElementList } from './config';
|
|
3
|
+
import { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid, keyActionType, keyResizeType, keyGroupQueue, keySelectedElementList } from './config';
|
|
4
4
|
export { keySelectedElementList, keyActionType, keyResizeType, keyGroupQueue };
|
|
5
5
|
export type { DeepSelectorSharedStorage, ActionType };
|
|
6
|
-
export { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup };
|
|
6
|
+
export { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid };
|
|
7
7
|
export declare const MiddlewareSelector: BoardMiddleware<DeepSelectorSharedStorage, CoreEventMap>;
|
|
@@ -2,18 +2,19 @@ import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueV
|
|
|
2
2
|
import { drawHoverVertexesWrapper, drawLockVertexesWrapper, 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
|
-
import { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keySelectedReferenceXLines, keySelectedReferenceYLines, keyIsMoving, keyEnableSelectInGroup, controllerSize } from './config';
|
|
5
|
+
import { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid, keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keySelectedReferenceXLines, keySelectedReferenceYLines, keyIsMoving, keyEnableSelectInGroup, keyEnableSnapToGrid, controllerSize } from './config';
|
|
6
6
|
import { calcReferenceInfo } from './reference';
|
|
7
7
|
import { middlewareEventTextEdit } from '../text-editor';
|
|
8
8
|
import { eventChange } from '../../config';
|
|
9
9
|
export { keySelectedElementList, keyActionType, keyResizeType, keyGroupQueue };
|
|
10
|
-
export { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup };
|
|
10
|
+
export { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid };
|
|
11
11
|
export const MiddlewareSelector = (opts) => {
|
|
12
12
|
const { viewer, sharer, boardContent, calculator, eventHub } = opts;
|
|
13
13
|
const { overlayContext } = boardContent;
|
|
14
14
|
let prevPoint = null;
|
|
15
15
|
let inBusyMode = null;
|
|
16
16
|
sharer.setSharedStorage(keyActionType, null);
|
|
17
|
+
sharer.setSharedStorage(keyEnableSnapToGrid, true);
|
|
17
18
|
const getActiveElements = () => {
|
|
18
19
|
return sharer.getSharedStorage(keySelectedElementList);
|
|
19
20
|
};
|
|
@@ -131,6 +132,9 @@ export const MiddlewareSelector = (opts) => {
|
|
|
131
132
|
clear();
|
|
132
133
|
viewer.drawFrame();
|
|
133
134
|
};
|
|
135
|
+
const setSnapToSnapCallback = (e) => {
|
|
136
|
+
sharer.setSharedStorage(keyEnableSnapToGrid, !!e.enable);
|
|
137
|
+
};
|
|
134
138
|
const selectInGroupCallback = (e) => {
|
|
135
139
|
sharer.setSharedStorage(keyEnableSelectInGroup, !!e.enable);
|
|
136
140
|
};
|
|
@@ -140,11 +144,13 @@ export const MiddlewareSelector = (opts) => {
|
|
|
140
144
|
eventHub.on(middlewareEventSelect, selectCallback);
|
|
141
145
|
eventHub.on(middlewareEventSelectClear, selectClearCallback);
|
|
142
146
|
eventHub.on(middlewareEventSelectInGroup, selectInGroupCallback);
|
|
147
|
+
eventHub.on(middlewareEventSnapToGrid, setSnapToSnapCallback);
|
|
143
148
|
},
|
|
144
149
|
disuse() {
|
|
145
150
|
eventHub.off(middlewareEventSelect, selectCallback);
|
|
146
151
|
eventHub.off(middlewareEventSelectClear, selectClearCallback);
|
|
147
152
|
eventHub.off(middlewareEventSelectInGroup, selectInGroupCallback);
|
|
153
|
+
eventHub.off(middlewareEventSnapToGrid, setSnapToSnapCallback);
|
|
148
154
|
},
|
|
149
155
|
hover: (e) => {
|
|
150
156
|
var _a, _b, _c, _d, _e;
|
|
@@ -319,33 +325,36 @@ export const MiddlewareSelector = (opts) => {
|
|
|
319
325
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
320
326
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
321
327
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
328
|
+
const enableSnapToGrid = sharer.getSharedStorage(keyEnableSnapToGrid);
|
|
322
329
|
if (actionType === 'drag') {
|
|
323
330
|
inBusyMode = 'drag';
|
|
324
331
|
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) {
|
|
325
332
|
const { moveX, moveY } = calcMoveInGroup(start, end, groupQueue);
|
|
326
333
|
let totalMoveX = calculator.toGridNum(moveX / scale);
|
|
327
334
|
let totalMoveY = calculator.toGridNum(moveY / scale);
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
if (
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
335
|
+
if (enableSnapToGrid === true) {
|
|
336
|
+
const referenceInfo = calcReferenceInfo(elems[0].uuid, {
|
|
337
|
+
calculator,
|
|
338
|
+
data,
|
|
339
|
+
groupQueue,
|
|
340
|
+
viewScaleInfo,
|
|
341
|
+
viewSizeInfo
|
|
342
|
+
});
|
|
343
|
+
try {
|
|
344
|
+
if (referenceInfo) {
|
|
345
|
+
if (is.x(referenceInfo.offsetX) && referenceInfo.offsetX !== null) {
|
|
346
|
+
totalMoveX = calculator.toGridNum(totalMoveX + referenceInfo.offsetX);
|
|
347
|
+
}
|
|
348
|
+
if (is.y(referenceInfo.offsetY) && referenceInfo.offsetY !== null) {
|
|
349
|
+
totalMoveY = calculator.toGridNum(totalMoveY + referenceInfo.offsetY);
|
|
350
|
+
}
|
|
351
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, referenceInfo.xLines);
|
|
352
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, referenceInfo.yLines);
|
|
342
353
|
}
|
|
343
|
-
sharer.setSharedStorage(keySelectedReferenceXLines, referenceInfo.xLines);
|
|
344
|
-
sharer.setSharedStorage(keySelectedReferenceYLines, referenceInfo.yLines);
|
|
345
354
|
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
355
|
+
catch (err) {
|
|
356
|
+
console.error(err);
|
|
357
|
+
}
|
|
349
358
|
}
|
|
350
359
|
elems[0].x = calculator.toGridNum(elems[0].x + totalMoveX);
|
|
351
360
|
elems[0].y = calculator.toGridNum(elems[0].y + totalMoveY);
|
|
@@ -598,6 +607,7 @@ export const MiddlewareSelector = (opts) => {
|
|
|
598
607
|
const groupQueue = sharedStore[keyGroupQueue];
|
|
599
608
|
const groupQueueVertexesList = sharedStore[keyGroupQueueVertexesList];
|
|
600
609
|
const isMoving = sharedStore[keyIsMoving];
|
|
610
|
+
const enableSnapToGrid = sharedStore[keyEnableSnapToGrid];
|
|
601
611
|
const drawBaseOpts = { calculator, viewScaleInfo, viewSizeInfo };
|
|
602
612
|
const selectedElementController = elem
|
|
603
613
|
? calcElementSizeController(elem, {
|
|
@@ -626,10 +636,12 @@ export const MiddlewareSelector = (opts) => {
|
|
|
626
636
|
if (actionType === 'drag') {
|
|
627
637
|
const xLines = sharer.getSharedStorage(keySelectedReferenceXLines);
|
|
628
638
|
const yLines = sharer.getSharedStorage(keySelectedReferenceYLines);
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
639
|
+
if (enableSnapToGrid === true) {
|
|
640
|
+
drawReferenceLines(overlayContext, {
|
|
641
|
+
xLines,
|
|
642
|
+
yLines
|
|
643
|
+
});
|
|
644
|
+
}
|
|
633
645
|
}
|
|
634
646
|
}
|
|
635
647
|
}
|
|
@@ -651,10 +663,12 @@ export const MiddlewareSelector = (opts) => {
|
|
|
651
663
|
if (actionType === 'drag') {
|
|
652
664
|
const xLines = sharer.getSharedStorage(keySelectedReferenceXLines);
|
|
653
665
|
const yLines = sharer.getSharedStorage(keySelectedReferenceYLines);
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
666
|
+
if (enableSnapToGrid === true) {
|
|
667
|
+
drawReferenceLines(overlayContext, {
|
|
668
|
+
xLines,
|
|
669
|
+
yLines
|
|
670
|
+
});
|
|
671
|
+
}
|
|
658
672
|
}
|
|
659
673
|
}
|
|
660
674
|
else if (actionType === 'area' && areaStart && areaEnd) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Data, ElementSize, ElementType, Element, ViewContext2D, Point, PointSize, ViewScaleInfo, ViewSizeInfo, ViewCalculator, PointWatcherEvent, BoardMiddleware, ViewRectVertexes, ElementSizeController, ElementPosition } from '@idraw/types';
|
|
2
|
-
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keySelectedReferenceXLines, keySelectedReferenceYLines, keyIsMoving, keyEnableSelectInGroup, keyDebugElemCenter, keyDebugEnd0, keyDebugEndHorizontal, keyDebugEndVertical, keyDebugStartHorizontal, keyDebugStartVertical } from './config';
|
|
2
|
+
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keySelectedReferenceXLines, keySelectedReferenceYLines, keyIsMoving, keyEnableSelectInGroup, keyEnableSnapToGrid, keyDebugElemCenter, keyDebugEnd0, keyDebugEndHorizontal, keyDebugEndVertical, keyDebugStartHorizontal, keyDebugStartVertical } from './config';
|
|
3
3
|
export { Data, ElementType, Element, ElementSize, ViewContext2D, Point, PointSize, ViewScaleInfo, ViewSizeInfo, ViewCalculator, PointWatcherEvent, BoardMiddleware };
|
|
4
4
|
export type ControllerStyle = ElementSize & {
|
|
5
5
|
borderWidth: number;
|
|
@@ -35,6 +35,7 @@ export type DeepSelectorSharedStorage = {
|
|
|
35
35
|
[keySelectedReferenceYLines]: Array<PointSize[]>;
|
|
36
36
|
[keyIsMoving]: boolean | null;
|
|
37
37
|
[keyEnableSelectInGroup]: boolean | null;
|
|
38
|
+
[keyEnableSnapToGrid]: boolean | null;
|
|
38
39
|
[keyDebugElemCenter]: PointSize | null;
|
|
39
40
|
[keyDebugEnd0]: PointSize | null;
|
|
40
41
|
[keyDebugEndHorizontal]: PointSize | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keySelectedReferenceXLines, keySelectedReferenceYLines, keyIsMoving, keyEnableSelectInGroup, keyDebugElemCenter, keyDebugEnd0, keyDebugEndHorizontal, keyDebugEndVertical, keyDebugStartHorizontal, keyDebugStartVertical } from './config';
|
|
1
|
+
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keySelectedReferenceXLines, keySelectedReferenceYLines, keyIsMoving, keyEnableSelectInGroup, keyEnableSnapToGrid, keyDebugElemCenter, keyDebugEnd0, keyDebugEndHorizontal, keyDebugEndVertical, keyDebugStartHorizontal, keyDebugStartVertical } from './config';
|
package/dist/index.global.js
CHANGED
|
@@ -2520,7 +2520,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2520
2520
|
}
|
|
2521
2521
|
function drawRect(ctx, elem, opts) {
|
|
2522
2522
|
const { viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
|
|
2523
|
-
const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calcViewElementSize(elem, { viewScaleInfo
|
|
2523
|
+
const { x: x2, y: y2, w: w2, h: h2, angle: angle2 } = calcViewElementSize(elem, { viewScaleInfo }) || elem;
|
|
2524
2524
|
const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
|
|
2525
2525
|
rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
|
|
2526
2526
|
drawBoxShadow(ctx, viewElem, {
|
|
@@ -2805,7 +2805,20 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2805
2805
|
});
|
|
2806
2806
|
});
|
|
2807
2807
|
}
|
|
2808
|
+
var __rest = function(s, e) {
|
|
2809
|
+
var t = {};
|
|
2810
|
+
for (var p in s)
|
|
2811
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
2812
|
+
t[p] = s[p];
|
|
2813
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
2814
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
2815
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
2816
|
+
t[p[i]] = s[p[i]];
|
|
2817
|
+
}
|
|
2818
|
+
return t;
|
|
2819
|
+
};
|
|
2808
2820
|
function drawPath(ctx, elem, opts) {
|
|
2821
|
+
var _a, _b;
|
|
2809
2822
|
const { detail } = elem;
|
|
2810
2823
|
const { originX, originY, originW, originH, fillRule } = detail;
|
|
2811
2824
|
const { viewScaleInfo, viewSizeInfo, parentOpacity } = opts;
|
|
@@ -2816,11 +2829,31 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2816
2829
|
const viewOriginY = originY * scaleH;
|
|
2817
2830
|
const internalX = x2 - viewOriginX;
|
|
2818
2831
|
const internalY = y2 - viewOriginY;
|
|
2832
|
+
const _c = elem.detail, restDetail = __rest(_c, ["clipPath", "clipPathStrokeColor", "clipPathStrokeWidth"]);
|
|
2819
2833
|
const scaleNum = viewScaleInfo.scale * viewSizeInfo.devicePixelRatio;
|
|
2820
2834
|
const viewElem = Object.assign(Object.assign({}, elem), { x: x2, y: y2, w: w2, h: h2, angle: angle2 });
|
|
2835
|
+
let boxViewElem = Object.assign({}, viewElem);
|
|
2836
|
+
boxViewElem.detail = restDetail;
|
|
2837
|
+
let boxOriginElem = Object.assign({}, elem);
|
|
2838
|
+
boxOriginElem.detail = restDetail;
|
|
2839
|
+
if (detail.fill && detail.fill !== "string" && ((_b = (_a = detail.fill) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.includes("gradient"))) {
|
|
2840
|
+
boxViewElem = Object.assign(Object.assign({}, viewElem), {
|
|
2841
|
+
detail: Object.assign(Object.assign({}, viewElem.detail), {
|
|
2842
|
+
background: detail.fill,
|
|
2843
|
+
clipPath: {
|
|
2844
|
+
commands: detail.commands,
|
|
2845
|
+
originX,
|
|
2846
|
+
originY,
|
|
2847
|
+
originW,
|
|
2848
|
+
originH
|
|
2849
|
+
}
|
|
2850
|
+
})
|
|
2851
|
+
});
|
|
2852
|
+
boxOriginElem.detail = Object.assign({}, boxViewElem.detail);
|
|
2853
|
+
}
|
|
2821
2854
|
rotateElement$1(ctx, { x: x2, y: y2, w: w2, h: h2, angle: angle2 }, () => {
|
|
2822
|
-
drawBox(ctx,
|
|
2823
|
-
originElem:
|
|
2855
|
+
drawBox(ctx, boxViewElem, {
|
|
2856
|
+
originElem: boxOriginElem,
|
|
2824
2857
|
calcElemSize: { x: x2, y: y2, w: w2, h: h2, angle: angle2 },
|
|
2825
2858
|
viewScaleInfo,
|
|
2826
2859
|
viewSizeInfo,
|
|
@@ -2836,7 +2869,13 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2836
2869
|
const pathStr = generateSVGPath(detail.commands || []);
|
|
2837
2870
|
const path2d = new Path2D(pathStr);
|
|
2838
2871
|
if (detail.fill) {
|
|
2839
|
-
|
|
2872
|
+
if (typeof detail.fill === "string") {
|
|
2873
|
+
ctx.fillStyle = detail.fill;
|
|
2874
|
+
} else {
|
|
2875
|
+
ctx.fillStyle = "transparent";
|
|
2876
|
+
}
|
|
2877
|
+
}
|
|
2878
|
+
if (detail.fill) {
|
|
2840
2879
|
ctx.fill(path2d, fillRule);
|
|
2841
2880
|
}
|
|
2842
2881
|
if (detail.stroke && detail.strokeWidth !== 0) {
|
|
@@ -2853,6 +2892,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2853
2892
|
});
|
|
2854
2893
|
});
|
|
2855
2894
|
}
|
|
2895
|
+
const visiableMinSize = 0.4;
|
|
2856
2896
|
function drawElement(ctx, elem, opts) {
|
|
2857
2897
|
var _a, _b, _c;
|
|
2858
2898
|
if (((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.invisible) === true) {
|
|
@@ -2860,7 +2900,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
2860
2900
|
}
|
|
2861
2901
|
const { w: w2, h: h2 } = elem;
|
|
2862
2902
|
const { scale } = opts.viewScaleInfo;
|
|
2863
|
-
if (scale < 1 && (w2 * scale <
|
|
2903
|
+
if (scale < 1 && (w2 * scale < visiableMinSize || h2 * scale < visiableMinSize) || opts.parentOpacity === 0) {
|
|
2864
2904
|
return;
|
|
2865
2905
|
}
|
|
2866
2906
|
const { overrideElementMap } = opts;
|
|
@@ -4515,7 +4555,8 @@ var __privateMethod = (obj, member, method) => {
|
|
|
4515
4555
|
const keyGroupQueue = Symbol(`${key$3}_groupQueue`);
|
|
4516
4556
|
const keyGroupQueueVertexesList = Symbol(`${key$3}_groupQueueVertexesList`);
|
|
4517
4557
|
const keyIsMoving = Symbol(`${key$3}_isMoving`);
|
|
4518
|
-
const keyEnableSelectInGroup = Symbol(`${key$3}
|
|
4558
|
+
const keyEnableSelectInGroup = Symbol(`${key$3}_enableSelectInGroup`);
|
|
4559
|
+
const keyEnableSnapToGrid = Symbol(`${key$3}_enableSnapToGrid`);
|
|
4519
4560
|
const selectWrapperBorderWidth = 2;
|
|
4520
4561
|
const resizeControllerBorderWidth = 4;
|
|
4521
4562
|
const areaBorderWidth = 1;
|
|
@@ -4526,6 +4567,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
4526
4567
|
const middlewareEventSelect = "@middleware/select";
|
|
4527
4568
|
const middlewareEventSelectClear = "@middleware/select-clear";
|
|
4528
4569
|
const middlewareEventSelectInGroup = "@middleware/select-in-group";
|
|
4570
|
+
const middlewareEventSnapToGrid = "@middleware/snap-to-grid";
|
|
4529
4571
|
function drawVertexes(ctx, vertexes, opts) {
|
|
4530
4572
|
const { borderColor: borderColor2, borderWidth: borderWidth2, background: background2, lineDash } = opts;
|
|
4531
4573
|
ctx.setLineDash([]);
|
|
@@ -6002,6 +6044,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
6002
6044
|
let prevPoint = null;
|
|
6003
6045
|
let inBusyMode = null;
|
|
6004
6046
|
sharer.setSharedStorage(keyActionType, null);
|
|
6047
|
+
sharer.setSharedStorage(keyEnableSnapToGrid, true);
|
|
6005
6048
|
const getActiveElements = () => {
|
|
6006
6049
|
return sharer.getSharedStorage(keySelectedElementList);
|
|
6007
6050
|
};
|
|
@@ -6114,6 +6157,9 @@ var __privateMethod = (obj, member, method) => {
|
|
|
6114
6157
|
clear();
|
|
6115
6158
|
viewer.drawFrame();
|
|
6116
6159
|
};
|
|
6160
|
+
const setSnapToSnapCallback = (e) => {
|
|
6161
|
+
sharer.setSharedStorage(keyEnableSnapToGrid, !!e.enable);
|
|
6162
|
+
};
|
|
6117
6163
|
const selectInGroupCallback = (e) => {
|
|
6118
6164
|
sharer.setSharedStorage(keyEnableSelectInGroup, !!e.enable);
|
|
6119
6165
|
};
|
|
@@ -6123,11 +6169,13 @@ var __privateMethod = (obj, member, method) => {
|
|
|
6123
6169
|
eventHub.on(middlewareEventSelect, selectCallback);
|
|
6124
6170
|
eventHub.on(middlewareEventSelectClear, selectClearCallback);
|
|
6125
6171
|
eventHub.on(middlewareEventSelectInGroup, selectInGroupCallback);
|
|
6172
|
+
eventHub.on(middlewareEventSnapToGrid, setSnapToSnapCallback);
|
|
6126
6173
|
},
|
|
6127
6174
|
disuse() {
|
|
6128
6175
|
eventHub.off(middlewareEventSelect, selectCallback);
|
|
6129
6176
|
eventHub.off(middlewareEventSelectClear, selectClearCallback);
|
|
6130
6177
|
eventHub.off(middlewareEventSelectInGroup, selectInGroupCallback);
|
|
6178
|
+
eventHub.off(middlewareEventSnapToGrid, setSnapToSnapCallback);
|
|
6131
6179
|
},
|
|
6132
6180
|
hover: (e) => {
|
|
6133
6181
|
var _a, _b, _c, _d, _e;
|
|
@@ -6295,32 +6343,35 @@ var __privateMethod = (obj, member, method) => {
|
|
|
6295
6343
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
6296
6344
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
6297
6345
|
const groupQueue = sharer.getSharedStorage(keyGroupQueue);
|
|
6346
|
+
const enableSnapToGrid = sharer.getSharedStorage(keyEnableSnapToGrid);
|
|
6298
6347
|
if (actionType === "drag") {
|
|
6299
6348
|
inBusyMode = "drag";
|
|
6300
6349
|
if (data && (elems == null ? void 0 : elems.length) === 1 && start && end && ((_b = (_a = elems[0]) == null ? void 0 : _a.operations) == null ? void 0 : _b.lock) !== true) {
|
|
6301
6350
|
const { moveX, moveY } = calcMoveInGroup(start, end, groupQueue);
|
|
6302
6351
|
let totalMoveX = calculator.toGridNum(moveX / scale);
|
|
6303
6352
|
let totalMoveY = calculator.toGridNum(moveY / scale);
|
|
6304
|
-
|
|
6305
|
-
|
|
6306
|
-
|
|
6307
|
-
|
|
6308
|
-
|
|
6309
|
-
|
|
6310
|
-
|
|
6311
|
-
|
|
6312
|
-
|
|
6313
|
-
if (
|
|
6314
|
-
|
|
6315
|
-
|
|
6316
|
-
|
|
6317
|
-
|
|
6353
|
+
if (enableSnapToGrid === true) {
|
|
6354
|
+
const referenceInfo = calcReferenceInfo(elems[0].uuid, {
|
|
6355
|
+
calculator,
|
|
6356
|
+
data,
|
|
6357
|
+
groupQueue,
|
|
6358
|
+
viewScaleInfo,
|
|
6359
|
+
viewSizeInfo
|
|
6360
|
+
});
|
|
6361
|
+
try {
|
|
6362
|
+
if (referenceInfo) {
|
|
6363
|
+
if (is.x(referenceInfo.offsetX) && referenceInfo.offsetX !== null) {
|
|
6364
|
+
totalMoveX = calculator.toGridNum(totalMoveX + referenceInfo.offsetX);
|
|
6365
|
+
}
|
|
6366
|
+
if (is.y(referenceInfo.offsetY) && referenceInfo.offsetY !== null) {
|
|
6367
|
+
totalMoveY = calculator.toGridNum(totalMoveY + referenceInfo.offsetY);
|
|
6368
|
+
}
|
|
6369
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, referenceInfo.xLines);
|
|
6370
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, referenceInfo.yLines);
|
|
6318
6371
|
}
|
|
6319
|
-
|
|
6320
|
-
|
|
6372
|
+
} catch (err) {
|
|
6373
|
+
console.error(err);
|
|
6321
6374
|
}
|
|
6322
|
-
} catch (err) {
|
|
6323
|
-
console.error(err);
|
|
6324
6375
|
}
|
|
6325
6376
|
elems[0].x = calculator.toGridNum(elems[0].x + totalMoveX);
|
|
6326
6377
|
elems[0].y = calculator.toGridNum(elems[0].y + totalMoveY);
|
|
@@ -6560,6 +6611,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
6560
6611
|
const groupQueue = sharedStore[keyGroupQueue];
|
|
6561
6612
|
const groupQueueVertexesList = sharedStore[keyGroupQueueVertexesList];
|
|
6562
6613
|
const isMoving = sharedStore[keyIsMoving];
|
|
6614
|
+
const enableSnapToGrid = sharedStore[keyEnableSnapToGrid];
|
|
6563
6615
|
const drawBaseOpts = { calculator, viewScaleInfo, viewSizeInfo };
|
|
6564
6616
|
const selectedElementController = elem ? calcElementSizeController(elem, {
|
|
6565
6617
|
groupQueue,
|
|
@@ -6593,10 +6645,12 @@ var __privateMethod = (obj, member, method) => {
|
|
|
6593
6645
|
if (actionType === "drag") {
|
|
6594
6646
|
const xLines = sharer2.getSharedStorage(keySelectedReferenceXLines);
|
|
6595
6647
|
const yLines = sharer2.getSharedStorage(keySelectedReferenceYLines);
|
|
6596
|
-
|
|
6597
|
-
|
|
6598
|
-
|
|
6599
|
-
|
|
6648
|
+
if (enableSnapToGrid === true) {
|
|
6649
|
+
drawReferenceLines(overlayContext, {
|
|
6650
|
+
xLines,
|
|
6651
|
+
yLines
|
|
6652
|
+
});
|
|
6653
|
+
}
|
|
6600
6654
|
}
|
|
6601
6655
|
}
|
|
6602
6656
|
} else {
|
|
@@ -6624,10 +6678,12 @@ var __privateMethod = (obj, member, method) => {
|
|
|
6624
6678
|
if (actionType === "drag") {
|
|
6625
6679
|
const xLines = sharer2.getSharedStorage(keySelectedReferenceXLines);
|
|
6626
6680
|
const yLines = sharer2.getSharedStorage(keySelectedReferenceYLines);
|
|
6627
|
-
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
6681
|
+
if (enableSnapToGrid === true) {
|
|
6682
|
+
drawReferenceLines(overlayContext, {
|
|
6683
|
+
xLines,
|
|
6684
|
+
yLines
|
|
6685
|
+
});
|
|
6686
|
+
}
|
|
6631
6687
|
}
|
|
6632
6688
|
} else if (actionType === "area" && areaStart && areaEnd) {
|
|
6633
6689
|
drawArea(overlayContext, { start: areaStart, end: areaEnd });
|
|
@@ -7984,6 +8040,7 @@ var __privateMethod = (obj, member, method) => {
|
|
|
7984
8040
|
exports.middlewareEventSelect = middlewareEventSelect;
|
|
7985
8041
|
exports.middlewareEventSelectClear = middlewareEventSelectClear;
|
|
7986
8042
|
exports.middlewareEventSelectInGroup = middlewareEventSelectInGroup;
|
|
8043
|
+
exports.middlewareEventSnapToGrid = middlewareEventSnapToGrid;
|
|
7987
8044
|
exports.middlewareEventTextChange = middlewareEventTextChange;
|
|
7988
8045
|
exports.middlewareEventTextEdit = middlewareEventTextEdit;
|
|
7989
8046
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|