@idraw/core 0.4.0-beta.15 → 0.4.0-beta.17
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 +4 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/middleware/selector/config.d.ts +5 -0
- package/dist/esm/middleware/selector/config.js +5 -0
- package/dist/esm/middleware/selector/draw-auxiliary.d.ts +5 -4
- package/dist/esm/middleware/selector/draw-auxiliary.js +40 -13
- package/dist/esm/middleware/selector/draw-base.d.ts +6 -1
- package/dist/esm/middleware/selector/draw-base.js +31 -2
- package/dist/esm/middleware/selector/draw-reference.d.ts +5 -0
- package/dist/esm/middleware/selector/draw-reference.js +31 -0
- package/dist/esm/middleware/selector/draw-wrapper.d.ts +2 -2
- package/dist/esm/middleware/selector/draw-wrapper.js +2 -3
- package/dist/esm/middleware/selector/index.js +101 -15
- package/dist/esm/middleware/selector/reference.d.ts +13 -0
- package/dist/esm/middleware/selector/reference.js +273 -0
- package/dist/esm/middleware/selector/types.d.ts +5 -3
- package/dist/esm/middleware/selector/types.js +1 -1
- package/dist/esm/middleware/selector/util.js +12 -13
- package/dist/esm/middleware/text-editor/index.js +13 -0
- package/dist/index.global.js +883 -170
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -5
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Data, PointSize, CoreOptions, BoardMiddleware, ViewSizeInfo, CoreEventMap, ViewScaleInfo, LoadItemMap } from '@idraw/types';
|
|
1
|
+
import type { Data, PointSize, CoreOptions, BoardMiddleware, ViewSizeInfo, CoreEventMap, ViewScaleInfo, LoadItemMap, ModifyOptions } from '@idraw/types';
|
|
2
2
|
export { MiddlewareSelector, middlewareEventSelect, middlewareEventSelectClear } from './middleware/selector';
|
|
3
3
|
export { MiddlewareScroller } from './middleware/scroller';
|
|
4
4
|
export { MiddlewareScaler, middlewareEventScale } from './middleware/scaler';
|
|
@@ -12,7 +12,9 @@ export declare class Core<E extends CoreEventMap = CoreEventMap> {
|
|
|
12
12
|
destroy(): void;
|
|
13
13
|
use(middleware: BoardMiddleware<any, any>): void;
|
|
14
14
|
disuse(middleware: BoardMiddleware<any, any>): void;
|
|
15
|
-
setData(data: Data
|
|
15
|
+
setData(data: Data, opts?: {
|
|
16
|
+
modifiedOptions?: ModifyOptions;
|
|
17
|
+
}): void;
|
|
16
18
|
getData(): Data | null;
|
|
17
19
|
scale(opts: {
|
|
18
20
|
scale: number;
|
package/dist/esm/index.js
CHANGED
|
@@ -61,9 +61,9 @@ export class Core {
|
|
|
61
61
|
disuse(middleware) {
|
|
62
62
|
__classPrivateFieldGet(this, _Core_board, "f").disuse(middleware);
|
|
63
63
|
}
|
|
64
|
-
setData(data) {
|
|
64
|
+
setData(data, opts) {
|
|
65
65
|
validateElements((data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
66
|
-
__classPrivateFieldGet(this, _Core_board, "f").setData(data);
|
|
66
|
+
__classPrivateFieldGet(this, _Core_board, "f").setData(data, opts);
|
|
67
67
|
}
|
|
68
68
|
getData() {
|
|
69
69
|
return __classPrivateFieldGet(this, _Core_board, "f").getData();
|
|
@@ -8,6 +8,9 @@ export declare const keyHoverElementVertexes: unique symbol;
|
|
|
8
8
|
export declare const keySelectedElementList: unique symbol;
|
|
9
9
|
export declare const keySelectedElementListVertexes: unique symbol;
|
|
10
10
|
export declare const keySelectedElementController: unique symbol;
|
|
11
|
+
export declare const keySelectedElementPosition: unique symbol;
|
|
12
|
+
export declare const keySelectedReferenceXLines: unique symbol;
|
|
13
|
+
export declare const keySelectedReferenceYLines: unique symbol;
|
|
11
14
|
export declare const keyGroupQueue: unique symbol;
|
|
12
15
|
export declare const keyGroupQueueVertexesList: unique symbol;
|
|
13
16
|
export declare const keyIsMoving: unique symbol;
|
|
@@ -23,3 +26,5 @@ export declare const areaBorderWidth = 1;
|
|
|
23
26
|
export declare const wrapperColor = "#1973ba";
|
|
24
27
|
export declare const lockColor = "#5b5959b5";
|
|
25
28
|
export declare const controllerSize = 10;
|
|
29
|
+
export declare const auxiliaryColor = "#f7276e";
|
|
30
|
+
export declare const referenceColor = "#f7276e";
|
|
@@ -8,6 +8,9 @@ export const keyHoverElementVertexes = Symbol(`${key}_hoverElementVertexes`);
|
|
|
8
8
|
export const keySelectedElementList = Symbol(`${key}_selectedElementList`);
|
|
9
9
|
export const keySelectedElementListVertexes = Symbol(`${key}_selectedElementListVertexes`);
|
|
10
10
|
export const keySelectedElementController = Symbol(`${key}_selectedElementController`);
|
|
11
|
+
export const keySelectedElementPosition = Symbol(`${key}_selectedElementPosition`);
|
|
12
|
+
export const keySelectedReferenceXLines = Symbol(`${key}_selectedReferenceXLines`);
|
|
13
|
+
export const keySelectedReferenceYLines = Symbol(`${key}_selectedReferenceYLines`);
|
|
11
14
|
export const keyGroupQueue = Symbol(`${key}_groupQueue`);
|
|
12
15
|
export const keyGroupQueueVertexesList = Symbol(`${key}_groupQueueVertexesList`);
|
|
13
16
|
export const keyIsMoving = Symbol(`${key}_isMoving`);
|
|
@@ -23,3 +26,5 @@ export const areaBorderWidth = 1;
|
|
|
23
26
|
export const wrapperColor = '#1973ba';
|
|
24
27
|
export const lockColor = '#5b5959b5';
|
|
25
28
|
export const controllerSize = 10;
|
|
29
|
+
export const auxiliaryColor = '#f7276e';
|
|
30
|
+
export const referenceColor = '#f7276e';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { ViewContext2D,
|
|
2
|
-
export declare function
|
|
3
|
-
|
|
1
|
+
import type { ViewContext2D, Element, ViewScaleInfo, ViewSizeInfo, ViewCalculator } from '@idraw/types';
|
|
2
|
+
export declare function drawAuxiliaryExperimentBox(ctx: ViewContext2D, opts: {
|
|
3
|
+
calculator: ViewCalculator;
|
|
4
4
|
element: Element | null;
|
|
5
|
-
|
|
5
|
+
viewScaleInfo: ViewScaleInfo;
|
|
6
|
+
viewSizeInfo: ViewSizeInfo;
|
|
6
7
|
}): void;
|
|
@@ -1,19 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
1
|
+
import { auxiliaryColor } from './config';
|
|
2
|
+
import { drawLine, drawCrossByCenter } from './draw-base';
|
|
3
|
+
function getViewBoxInfo(rectInfo) {
|
|
4
|
+
const boxInfo = {
|
|
5
|
+
minX: rectInfo.topLeft.x,
|
|
6
|
+
minY: rectInfo.topLeft.y,
|
|
7
|
+
maxX: rectInfo.bottomRight.x,
|
|
8
|
+
maxY: rectInfo.bottomRight.y,
|
|
9
|
+
midX: rectInfo.center.x,
|
|
10
|
+
midY: rectInfo.center.y
|
|
11
|
+
};
|
|
12
|
+
return boxInfo;
|
|
13
|
+
}
|
|
14
|
+
export function drawAuxiliaryExperimentBox(ctx, opts) {
|
|
15
|
+
const { element, viewScaleInfo, viewSizeInfo, calculator } = opts;
|
|
16
|
+
if (!element) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const viewRectInfo = calculator.calcViewRectInfoFromRange(element.uuid, { viewScaleInfo, viewSizeInfo });
|
|
20
|
+
if (!viewRectInfo) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
6
23
|
const lineOpts = {
|
|
7
24
|
borderColor: auxiliaryColor,
|
|
8
25
|
borderWidth: 1,
|
|
9
26
|
lineDash: []
|
|
10
27
|
};
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
28
|
+
const boxInfo = getViewBoxInfo(viewRectInfo);
|
|
29
|
+
const { width, height } = viewSizeInfo;
|
|
30
|
+
drawLine(ctx, { x: boxInfo.minX, y: 0 }, { x: boxInfo.minX, y: height }, lineOpts);
|
|
31
|
+
drawLine(ctx, { x: boxInfo.midX, y: 0 }, { x: boxInfo.midX, y: height }, lineOpts);
|
|
32
|
+
drawLine(ctx, { x: boxInfo.maxX, y: 0 }, { x: boxInfo.maxX, y: height }, lineOpts);
|
|
33
|
+
drawLine(ctx, { x: 0, y: boxInfo.minY }, { x: width, y: boxInfo.minY }, lineOpts);
|
|
34
|
+
drawLine(ctx, { x: 0, y: boxInfo.midY }, { x: width, y: boxInfo.midY }, lineOpts);
|
|
35
|
+
drawLine(ctx, { x: 0, y: boxInfo.maxY }, { x: width, y: boxInfo.maxY }, lineOpts);
|
|
36
|
+
const crossOpts = Object.assign(Object.assign({}, lineOpts), { size: 6 });
|
|
37
|
+
drawCrossByCenter(ctx, viewRectInfo.center, crossOpts);
|
|
38
|
+
drawCrossByCenter(ctx, viewRectInfo.topLeft, crossOpts);
|
|
39
|
+
drawCrossByCenter(ctx, viewRectInfo.topRight, crossOpts);
|
|
40
|
+
drawCrossByCenter(ctx, viewRectInfo.bottomLeft, crossOpts);
|
|
41
|
+
drawCrossByCenter(ctx, viewRectInfo.bottomRight, crossOpts);
|
|
42
|
+
drawCrossByCenter(ctx, viewRectInfo.top, crossOpts);
|
|
43
|
+
drawCrossByCenter(ctx, viewRectInfo.right, crossOpts);
|
|
44
|
+
drawCrossByCenter(ctx, viewRectInfo.bottom, crossOpts);
|
|
45
|
+
drawCrossByCenter(ctx, viewRectInfo.left, crossOpts);
|
|
19
46
|
}
|
|
@@ -20,6 +20,11 @@ export declare function drawCircleController(ctx: ViewContext2D, circleCenter: P
|
|
|
20
20
|
export declare function drawCrossVertexes(ctx: ViewContext2D, vertexes: ViewRectVertexes, opts: {
|
|
21
21
|
borderColor: string;
|
|
22
22
|
borderWidth: number;
|
|
23
|
-
|
|
23
|
+
lineDash: number[];
|
|
24
|
+
}): void;
|
|
25
|
+
export declare function drawCrossByCenter(ctx: ViewContext2D, center: PointSize, opts: {
|
|
26
|
+
size: number;
|
|
27
|
+
borderColor: string;
|
|
28
|
+
borderWidth: number;
|
|
24
29
|
lineDash: number[];
|
|
25
30
|
}): void;
|
|
@@ -52,11 +52,10 @@ export function drawCircleController(ctx, circleCenter, opts) {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
export function drawCrossVertexes(ctx, vertexes, opts) {
|
|
55
|
-
const { borderColor, borderWidth,
|
|
55
|
+
const { borderColor, borderWidth, lineDash } = opts;
|
|
56
56
|
ctx.setLineDash([]);
|
|
57
57
|
ctx.lineWidth = borderWidth;
|
|
58
58
|
ctx.strokeStyle = borderColor;
|
|
59
|
-
ctx.fillStyle = background;
|
|
60
59
|
ctx.setLineDash(lineDash);
|
|
61
60
|
ctx.beginPath();
|
|
62
61
|
ctx.moveTo(vertexes[0].x, vertexes[0].y);
|
|
@@ -69,3 +68,33 @@ export function drawCrossVertexes(ctx, vertexes, opts) {
|
|
|
69
68
|
ctx.closePath();
|
|
70
69
|
ctx.stroke();
|
|
71
70
|
}
|
|
71
|
+
export function drawCrossByCenter(ctx, center, opts) {
|
|
72
|
+
const { size, borderColor, borderWidth, lineDash } = opts;
|
|
73
|
+
const minX = center.x - size / 2;
|
|
74
|
+
const maxX = center.x + size / 2;
|
|
75
|
+
const minY = center.y - size / 2;
|
|
76
|
+
const maxY = center.y + size / 2;
|
|
77
|
+
const vertexes = [
|
|
78
|
+
{
|
|
79
|
+
x: minX,
|
|
80
|
+
y: minY
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
x: maxX,
|
|
84
|
+
y: minY
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
x: maxX,
|
|
88
|
+
y: maxY
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
x: minX,
|
|
92
|
+
y: maxY
|
|
93
|
+
}
|
|
94
|
+
];
|
|
95
|
+
drawCrossVertexes(ctx, vertexes, {
|
|
96
|
+
borderColor,
|
|
97
|
+
borderWidth,
|
|
98
|
+
lineDash
|
|
99
|
+
});
|
|
100
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { referenceColor } from './config';
|
|
2
|
+
import { drawLine, drawCrossByCenter } from './draw-base';
|
|
3
|
+
export function drawReferenceLines(ctx, opts) {
|
|
4
|
+
const { xLines, yLines } = opts;
|
|
5
|
+
const lineOpts = {
|
|
6
|
+
borderColor: referenceColor,
|
|
7
|
+
borderWidth: 1,
|
|
8
|
+
lineDash: []
|
|
9
|
+
};
|
|
10
|
+
const crossOpts = Object.assign(Object.assign({}, lineOpts), { size: 6 });
|
|
11
|
+
if (xLines) {
|
|
12
|
+
xLines.forEach((line) => {
|
|
13
|
+
line.forEach((p, pIdx) => {
|
|
14
|
+
drawCrossByCenter(ctx, p, crossOpts);
|
|
15
|
+
if (line[pIdx + 1]) {
|
|
16
|
+
drawLine(ctx, line[pIdx], line[pIdx + 1], lineOpts);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
if (yLines) {
|
|
22
|
+
yLines.forEach((line) => {
|
|
23
|
+
line.forEach((p, pIdx) => {
|
|
24
|
+
drawCrossByCenter(ctx, p, crossOpts);
|
|
25
|
+
if (line[pIdx + 1]) {
|
|
26
|
+
drawLine(ctx, line[pIdx], line[pIdx + 1], lineOpts);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Element, ElementType, PointSize, RendererDrawElementOptions, ViewContext2D, ViewRectVertexes, ViewScaleInfo, ViewSizeInfo, ElementSizeController } from '@idraw/types';
|
|
1
|
+
import type { Element, ElementType, PointSize, RendererDrawElementOptions, ViewContext2D, ViewRectVertexes, ViewScaleInfo, ViewSizeInfo, ElementSizeController, ViewCalculator } from '@idraw/types';
|
|
2
2
|
import type { AreaSize } from './types';
|
|
3
3
|
export declare function drawHoverVertexesWrapper(ctx: ViewContext2D, vertexes: ViewRectVertexes | null, opts: {
|
|
4
4
|
viewScaleInfo: ViewScaleInfo;
|
|
@@ -14,7 +14,7 @@ export declare function drawSelectedElementControllersVertexes(ctx: ViewContext2
|
|
|
14
14
|
viewScaleInfo: ViewScaleInfo;
|
|
15
15
|
viewSizeInfo: ViewSizeInfo;
|
|
16
16
|
element: Element | null;
|
|
17
|
-
|
|
17
|
+
calculator: ViewCalculator;
|
|
18
18
|
}): void;
|
|
19
19
|
export declare function drawElementListShadows(ctx: ViewContext2D, elements: Element<ElementType>[], opts?: Omit<RendererDrawElementOptions, 'loader'>): void;
|
|
20
20
|
export declare function drawArea(ctx: ViewContext2D, opts: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { rotateElementVertexes, calcViewPointSize, calcViewVertexes } from '@idraw/util';
|
|
1
|
+
import { rotateElementVertexes, calcViewPointSize, calcViewVertexes, calcViewElementSize } from '@idraw/util';
|
|
2
2
|
import { resizeControllerBorderWidth, areaBorderWidth, wrapperColor, selectWrapperBorderWidth, lockColor, controllerSize } from './config';
|
|
3
3
|
import { drawVertexes, drawLine, drawCircleController, drawCrossVertexes } from './draw-base';
|
|
4
4
|
export function drawHoverVertexesWrapper(ctx, vertexes, opts) {
|
|
@@ -51,8 +51,7 @@ export function drawElementListShadows(ctx, elements, opts) {
|
|
|
51
51
|
let { x, y, w, h } = elem;
|
|
52
52
|
const { angle = 0 } = elem;
|
|
53
53
|
if (opts === null || opts === void 0 ? void 0 : opts.calculator) {
|
|
54
|
-
const {
|
|
55
|
-
const size = calculator.elementSize({ x, y, w, h }, opts.viewScaleInfo, opts.viewSizeInfo);
|
|
54
|
+
const size = calcViewElementSize({ x, y, w, h }, opts);
|
|
56
55
|
x = size.x;
|
|
57
56
|
y = size.y;
|
|
58
57
|
w = size.w;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, deepResizeGroupElement } from '@idraw/util';
|
|
1
|
+
import { is, calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, calcElementCenterFromVertexes, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions, getElementPositionFromList, deepResizeGroupElement } from '@idraw/util';
|
|
2
2
|
import { drawHoverVertexesWrapper, drawLockVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
|
|
3
|
+
import { drawReferenceLines } from './draw-reference';
|
|
3
4
|
import { getPointTarget, resizeElement, rotateElement, getSelectedListArea, calcSelectedElementsArea, isElementInGroup, isPointInViewActiveGroup, calcMoveInGroup } from './util';
|
|
4
|
-
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keyIsMoving, controllerSize } from './config';
|
|
5
|
+
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController, keySelectedElementPosition, keySelectedReferenceXLines, keySelectedReferenceYLines, keyIsMoving, controllerSize } from './config';
|
|
6
|
+
import { calcReferenceInfo } from './reference';
|
|
5
7
|
import { middlewareEventTextEdit } from '../text-editor';
|
|
6
8
|
export const middlewareEventSelect = '@middleware/select';
|
|
7
9
|
export const middlewareEventSelectClear = '@middleware/select-clear';
|
|
@@ -46,6 +48,7 @@ export const MiddlewareSelector = (opts) => {
|
|
|
46
48
|
sharer.setSharedStorage(keyHoverElementVertexes, vertexes);
|
|
47
49
|
};
|
|
48
50
|
const updateSelectedElementList = (list, opts) => {
|
|
51
|
+
var _a;
|
|
49
52
|
sharer.setSharedStorage(keySelectedElementList, list);
|
|
50
53
|
if (list.length === 1) {
|
|
51
54
|
const controller = calcElementSizeController(list[0], {
|
|
@@ -54,9 +57,11 @@ export const MiddlewareSelector = (opts) => {
|
|
|
54
57
|
viewScaleInfo: sharer.getActiveViewScaleInfo()
|
|
55
58
|
});
|
|
56
59
|
sharer.setSharedStorage(keySelectedElementController, controller);
|
|
60
|
+
sharer.setSharedStorage(keySelectedElementPosition, getElementPositionFromList(list[0].uuid, ((_a = sharer.getActiveStorage('data')) === null || _a === void 0 ? void 0 : _a.elements) || []));
|
|
57
61
|
}
|
|
58
62
|
else {
|
|
59
63
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
64
|
+
sharer.setSharedStorage(keySelectedElementPosition, []);
|
|
60
65
|
}
|
|
61
66
|
if ((opts === null || opts === void 0 ? void 0 : opts.triggerEvent) === true) {
|
|
62
67
|
eventHub.trigger(middlewareEventSelect, { uuids: list.map((elem) => elem.uuid) });
|
|
@@ -72,7 +77,8 @@ export const MiddlewareSelector = (opts) => {
|
|
|
72
77
|
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
73
78
|
groupQueue: sharer.getSharedStorage(keyGroupQueue),
|
|
74
79
|
areaSize: null,
|
|
75
|
-
selectedElementController: sharer.getSharedStorage(keySelectedElementController)
|
|
80
|
+
selectedElementController: sharer.getSharedStorage(keySelectedElementController),
|
|
81
|
+
selectedElementPosition: sharer.getSharedStorage(keySelectedElementPosition)
|
|
76
82
|
};
|
|
77
83
|
};
|
|
78
84
|
const clear = () => {
|
|
@@ -87,6 +93,9 @@ export const MiddlewareSelector = (opts) => {
|
|
|
87
93
|
sharer.setSharedStorage(keySelectedElementList, []);
|
|
88
94
|
sharer.setSharedStorage(keySelectedElementListVertexes, null);
|
|
89
95
|
sharer.setSharedStorage(keySelectedElementController, null);
|
|
96
|
+
sharer.setSharedStorage(keySelectedElementPosition, []);
|
|
97
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, []);
|
|
98
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, []);
|
|
90
99
|
sharer.setSharedStorage(keyIsMoving, null);
|
|
91
100
|
};
|
|
92
101
|
clear();
|
|
@@ -285,6 +294,8 @@ export const MiddlewareSelector = (opts) => {
|
|
|
285
294
|
},
|
|
286
295
|
pointMove: (e) => {
|
|
287
296
|
var _a, _b, _c;
|
|
297
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, []);
|
|
298
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, []);
|
|
288
299
|
sharer.setSharedStorage(keyIsMoving, true);
|
|
289
300
|
const data = sharer.getActiveStorage('data');
|
|
290
301
|
const elems = getActiveElements();
|
|
@@ -300,9 +311,44 @@ export const MiddlewareSelector = (opts) => {
|
|
|
300
311
|
inBusyMode = 'drag';
|
|
301
312
|
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) {
|
|
302
313
|
const { moveX, moveY } = calcMoveInGroup(start, end, groupQueue);
|
|
303
|
-
|
|
304
|
-
|
|
314
|
+
let totalMoveX = calculator.toGridNum(moveX / scale);
|
|
315
|
+
let totalMoveY = calculator.toGridNum(moveY / scale);
|
|
316
|
+
const referenceInfo = calcReferenceInfo(elems[0].uuid, {
|
|
317
|
+
calculator,
|
|
318
|
+
data,
|
|
319
|
+
groupQueue,
|
|
320
|
+
viewScaleInfo,
|
|
321
|
+
viewSizeInfo
|
|
322
|
+
});
|
|
323
|
+
try {
|
|
324
|
+
if (referenceInfo) {
|
|
325
|
+
if (is.x(referenceInfo.offsetX) && referenceInfo.offsetX !== null) {
|
|
326
|
+
totalMoveX = calculator.toGridNum(totalMoveX + referenceInfo.offsetX);
|
|
327
|
+
}
|
|
328
|
+
if (is.y(referenceInfo.offsetY) && referenceInfo.offsetY !== null) {
|
|
329
|
+
totalMoveY = calculator.toGridNum(totalMoveY + referenceInfo.offsetY);
|
|
330
|
+
}
|
|
331
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, referenceInfo.xLines);
|
|
332
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, referenceInfo.yLines);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
catch (err) {
|
|
336
|
+
console.error(err);
|
|
337
|
+
}
|
|
338
|
+
elems[0].x = calculator.toGridNum(elems[0].x + totalMoveX);
|
|
339
|
+
elems[0].y = calculator.toGridNum(elems[0].y + totalMoveY);
|
|
305
340
|
updateSelectedElementList([elems[0]]);
|
|
341
|
+
calculator.modifyViewVisibleInfoMap(data, {
|
|
342
|
+
modifyOptions: {
|
|
343
|
+
type: 'updateElement',
|
|
344
|
+
content: {
|
|
345
|
+
element: elems[0],
|
|
346
|
+
position: sharer.getSharedStorage(keySelectedElementPosition) || []
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
viewSizeInfo,
|
|
350
|
+
viewScaleInfo
|
|
351
|
+
});
|
|
306
352
|
}
|
|
307
353
|
viewer.drawFrame();
|
|
308
354
|
}
|
|
@@ -314,8 +360,19 @@ export const MiddlewareSelector = (opts) => {
|
|
|
314
360
|
elems.forEach((elem) => {
|
|
315
361
|
var _a;
|
|
316
362
|
if (elem && ((_a = elem === null || elem === void 0 ? void 0 : elem.operations) === null || _a === void 0 ? void 0 : _a.lock) !== true) {
|
|
317
|
-
elem.x
|
|
318
|
-
elem.y
|
|
363
|
+
elem.x = calculator.toGridNum(elem.x + moveX);
|
|
364
|
+
elem.y = calculator.toGridNum(elem.y + moveY);
|
|
365
|
+
calculator.modifyViewVisibleInfoMap(data, {
|
|
366
|
+
modifyOptions: {
|
|
367
|
+
type: 'updateElement',
|
|
368
|
+
content: {
|
|
369
|
+
element: elem,
|
|
370
|
+
position: sharer.getSharedStorage(keySelectedElementPosition) || []
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
viewSizeInfo,
|
|
374
|
+
viewScaleInfo
|
|
375
|
+
});
|
|
319
376
|
}
|
|
320
377
|
});
|
|
321
378
|
sharer.setActiveStorage('data', data);
|
|
@@ -364,20 +421,31 @@ export const MiddlewareSelector = (opts) => {
|
|
|
364
421
|
}
|
|
365
422
|
else {
|
|
366
423
|
const resizedElemSize = resizeElement(elems[0], { scale, start: resizeStart, end: resizeEnd, resizeType, sharer });
|
|
367
|
-
elems[0].x = resizedElemSize.x;
|
|
368
|
-
elems[0].y = resizedElemSize.y;
|
|
424
|
+
elems[0].x = calculator.toGridNum(resizedElemSize.x);
|
|
425
|
+
elems[0].y = calculator.toGridNum(resizedElemSize.y);
|
|
369
426
|
if (elems[0].type === 'group' && ((_c = elems[0].operations) === null || _c === void 0 ? void 0 : _c.deepResize) === true) {
|
|
370
427
|
deepResizeGroupElement(elems[0], {
|
|
371
|
-
w: resizedElemSize.w,
|
|
372
|
-
h: resizedElemSize.h
|
|
428
|
+
w: calculator.toGridNum(resizedElemSize.w),
|
|
429
|
+
h: calculator.toGridNum(resizedElemSize.h)
|
|
373
430
|
});
|
|
374
431
|
}
|
|
375
432
|
else {
|
|
376
|
-
elems[0].w = resizedElemSize.w;
|
|
377
|
-
elems[0].h = resizedElemSize.h;
|
|
433
|
+
elems[0].w = calculator.toGridNum(resizedElemSize.w);
|
|
434
|
+
elems[0].h = calculator.toGridNum(resizedElemSize.h);
|
|
378
435
|
}
|
|
379
436
|
}
|
|
380
437
|
updateSelectedElementList([elems[0]]);
|
|
438
|
+
calculator.modifyViewVisibleInfoMap(data, {
|
|
439
|
+
modifyOptions: {
|
|
440
|
+
type: 'updateElement',
|
|
441
|
+
content: {
|
|
442
|
+
element: elems[0],
|
|
443
|
+
position: sharer.getSharedStorage(keySelectedElementPosition) || []
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
viewSizeInfo,
|
|
447
|
+
viewScaleInfo
|
|
448
|
+
});
|
|
381
449
|
viewer.drawFrame();
|
|
382
450
|
}
|
|
383
451
|
}
|
|
@@ -390,6 +458,8 @@ export const MiddlewareSelector = (opts) => {
|
|
|
390
458
|
},
|
|
391
459
|
pointEnd(e) {
|
|
392
460
|
inBusyMode = null;
|
|
461
|
+
sharer.setSharedStorage(keySelectedReferenceXLines, []);
|
|
462
|
+
sharer.setSharedStorage(keySelectedReferenceYLines, []);
|
|
393
463
|
sharer.setSharedStorage(keyIsMoving, false);
|
|
394
464
|
const data = sharer.getActiveStorage('data');
|
|
395
465
|
const resizeType = sharer.getSharedStorage(keyResizeType);
|
|
@@ -536,7 +606,15 @@ export const MiddlewareSelector = (opts) => {
|
|
|
536
606
|
}
|
|
537
607
|
}
|
|
538
608
|
if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
539
|
-
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem,
|
|
609
|
+
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag' }));
|
|
610
|
+
if (actionType === 'drag') {
|
|
611
|
+
const xLines = sharer.getSharedStorage(keySelectedReferenceXLines);
|
|
612
|
+
const yLines = sharer.getSharedStorage(keySelectedReferenceYLines);
|
|
613
|
+
drawReferenceLines(helperContext, {
|
|
614
|
+
xLines,
|
|
615
|
+
yLines
|
|
616
|
+
});
|
|
617
|
+
}
|
|
540
618
|
}
|
|
541
619
|
}
|
|
542
620
|
else {
|
|
@@ -553,7 +631,15 @@ export const MiddlewareSelector = (opts) => {
|
|
|
553
631
|
}
|
|
554
632
|
}
|
|
555
633
|
if (!isLock && elem && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
556
|
-
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem,
|
|
634
|
+
drawSelectedElementControllersVertexes(helperContext, selectedElementController, Object.assign(Object.assign({}, drawBaseOpts), { element: elem, calculator, hideControllers: !!isMoving && actionType === 'drag' }));
|
|
635
|
+
if (actionType === 'drag') {
|
|
636
|
+
const xLines = sharer.getSharedStorage(keySelectedReferenceXLines);
|
|
637
|
+
const yLines = sharer.getSharedStorage(keySelectedReferenceYLines);
|
|
638
|
+
drawReferenceLines(helperContext, {
|
|
639
|
+
xLines,
|
|
640
|
+
yLines
|
|
641
|
+
});
|
|
642
|
+
}
|
|
557
643
|
}
|
|
558
644
|
else if (actionType === 'area' && areaStart && areaEnd) {
|
|
559
645
|
drawArea(helperContext, { start: areaStart, end: areaEnd });
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Data, Element, PointSize, ViewScaleInfo, ViewSizeInfo, ViewCalculator } from '@idraw/types';
|
|
2
|
+
export declare function calcReferenceInfo(uuid: string, opts: {
|
|
3
|
+
data: Data;
|
|
4
|
+
groupQueue: Element<'group'>[];
|
|
5
|
+
calculator: ViewCalculator;
|
|
6
|
+
viewScaleInfo: ViewScaleInfo;
|
|
7
|
+
viewSizeInfo: ViewSizeInfo;
|
|
8
|
+
}): {
|
|
9
|
+
offsetX: number | null;
|
|
10
|
+
offsetY: number | null;
|
|
11
|
+
yLines: PointSize[][];
|
|
12
|
+
xLines: PointSize[][];
|
|
13
|
+
} | null;
|