@idraw/core 0.4.3 → 1.0.0-alpha.1
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/board/index.d.ts +2 -2
- package/dist/esm/board/index.js +23 -12
- package/dist/esm/board/sharer.d.ts +3 -3
- package/dist/esm/board/sharer.js +10 -10
- package/dist/esm/board/viewer.d.ts +3 -3
- package/dist/esm/board/viewer.js +14 -14
- package/dist/esm/board/watcher.d.ts +3 -3
- package/dist/esm/board/watcher.js +68 -43
- package/dist/esm/core.d.ts +52 -0
- package/dist/esm/core.js +393 -0
- package/dist/esm/cursor/cursor-image.d.ts +2 -0
- package/dist/esm/cursor/cursor-image.js +2 -0
- package/dist/esm/cursor/cursor.js +60 -24
- package/dist/esm/index.d.ts +12 -61
- package/dist/esm/index.js +11 -389
- package/dist/esm/middlewares/common.d.ts +4 -0
- package/dist/esm/middlewares/common.js +13 -0
- package/dist/esm/middlewares/creator/dom.d.ts +11 -0
- package/dist/esm/middlewares/creator/dom.js +52 -0
- package/dist/esm/middlewares/creator/index.d.ts +5 -0
- package/dist/esm/middlewares/creator/index.js +136 -0
- package/dist/esm/middlewares/creator/static.d.ts +14 -0
- package/dist/esm/middlewares/creator/static.js +19 -0
- package/dist/esm/middlewares/creator/styles.d.ts +4 -0
- package/dist/esm/middlewares/creator/styles.js +32 -0
- package/dist/esm/middlewares/creator/types.d.ts +7 -0
- package/dist/esm/middlewares/creator/types.js +1 -0
- package/dist/esm/middlewares/creator/util.d.ts +10 -0
- package/dist/esm/middlewares/creator/util.js +52 -0
- package/dist/esm/middlewares/dragger/index.js +5 -5
- package/dist/esm/middlewares/info/draw-info.d.ts +11 -11
- package/dist/esm/middlewares/info/draw-info.js +18 -18
- package/dist/esm/middlewares/info/index.d.ts +2 -1
- package/dist/esm/middlewares/info/index.js +48 -51
- package/dist/esm/middlewares/info/static.d.ts +6 -0
- package/dist/esm/middlewares/info/{config.js → static.js} +6 -1
- package/dist/esm/middlewares/info/types.d.ts +2 -2
- package/dist/esm/middlewares/layout-selector/dom.d.ts +10 -0
- package/dist/esm/middlewares/layout-selector/dom.js +108 -0
- package/dist/esm/middlewares/layout-selector/index.d.ts +1 -1
- package/dist/esm/middlewares/layout-selector/index.js +89 -141
- package/dist/esm/middlewares/layout-selector/static.d.ts +32 -0
- package/dist/esm/middlewares/layout-selector/static.js +39 -0
- package/dist/esm/middlewares/layout-selector/styles.d.ts +4 -0
- package/dist/esm/middlewares/layout-selector/styles.js +127 -0
- package/dist/esm/middlewares/layout-selector/types.d.ts +6 -6
- package/dist/esm/middlewares/layout-selector/types.js +2 -2
- package/dist/esm/middlewares/layout-selector/util.d.ts +4 -4
- package/dist/esm/middlewares/layout-selector/util.js +19 -19
- package/dist/esm/middlewares/path-creator/dom.d.ts +29 -0
- package/dist/esm/middlewares/path-creator/dom.js +145 -0
- package/dist/esm/middlewares/path-creator/index.d.ts +5 -0
- package/dist/esm/middlewares/path-creator/index.js +203 -0
- package/dist/esm/middlewares/path-creator/static.d.ts +23 -0
- package/dist/esm/middlewares/path-creator/static.js +49 -0
- package/dist/esm/middlewares/path-creator/types.d.ts +1 -0
- package/dist/esm/middlewares/path-editor/calc.d.ts +6 -0
- package/dist/esm/middlewares/path-editor/calc.js +51 -0
- package/dist/esm/middlewares/path-editor/dom.d.ts +32 -0
- package/dist/esm/middlewares/path-editor/dom.js +575 -0
- package/dist/esm/middlewares/path-editor/draw.d.ts +7 -0
- package/dist/esm/middlewares/path-editor/draw.js +113 -0
- package/dist/esm/middlewares/path-editor/index.d.ts +5 -0
- package/dist/esm/middlewares/path-editor/index.js +312 -0
- package/dist/esm/middlewares/path-editor/parse.d.ts +5 -0
- package/dist/esm/middlewares/path-editor/parse.js +37 -0
- package/dist/esm/middlewares/path-editor/static.d.ts +34 -0
- package/dist/esm/middlewares/path-editor/static.js +82 -0
- package/dist/esm/middlewares/path-editor/types.d.ts +26 -0
- package/dist/esm/middlewares/path-editor/types.js +1 -0
- package/dist/esm/middlewares/path-editor/util.d.ts +5 -0
- package/dist/esm/middlewares/path-editor/util.js +21 -0
- package/dist/esm/middlewares/pointer/index.js +5 -5
- package/dist/esm/middlewares/pointer/types.d.ts +2 -2
- package/dist/esm/middlewares/ruler/index.d.ts +2 -0
- package/dist/esm/middlewares/ruler/index.js +12 -19
- package/dist/esm/middlewares/ruler/static.d.ts +8 -0
- package/dist/esm/middlewares/ruler/{config.js → static.js} +16 -3
- package/dist/esm/middlewares/ruler/types.d.ts +2 -2
- package/dist/esm/middlewares/ruler/util.d.ts +6 -6
- package/dist/esm/middlewares/ruler/util.js +31 -31
- package/dist/esm/middlewares/scaler/index.js +2 -2
- package/dist/esm/middlewares/scroller/dom.d.ts +14 -0
- package/dist/esm/middlewares/scroller/dom.js +53 -0
- package/dist/esm/middlewares/scroller/index.d.ts +2 -0
- package/dist/esm/middlewares/scroller/index.js +111 -46
- package/dist/esm/middlewares/scroller/static.d.ts +21 -0
- package/dist/esm/middlewares/scroller/static.js +29 -0
- package/dist/esm/middlewares/scroller/styles.d.ts +4 -0
- package/dist/esm/middlewares/scroller/styles.js +73 -0
- package/dist/esm/middlewares/scroller/types.d.ts +8 -6
- package/dist/esm/middlewares/scroller/types.js +1 -1
- package/dist/esm/middlewares/scroller/util.d.ts +6 -13
- package/dist/esm/middlewares/scroller/util.js +15 -144
- package/dist/esm/middlewares/selector/dom.d.ts +21 -0
- package/dist/esm/middlewares/selector/dom.js +395 -0
- package/dist/esm/middlewares/selector/draw-base.d.ts +9 -21
- package/dist/esm/middlewares/selector/draw-base.js +19 -43
- package/dist/esm/middlewares/selector/draw-reference.d.ts +4 -5
- package/dist/esm/middlewares/selector/draw-reference.js +5 -5
- package/dist/esm/middlewares/selector/index.d.ts +4 -2
- package/dist/esm/middlewares/selector/index.js +315 -439
- package/dist/esm/middlewares/selector/reference.d.ts +5 -5
- package/dist/esm/middlewares/selector/reference.js +36 -30
- package/dist/esm/middlewares/selector/render-frame.d.ts +11 -0
- package/dist/esm/middlewares/selector/render-frame.js +107 -0
- package/dist/esm/middlewares/selector/resize.d.ts +7 -0
- package/dist/esm/middlewares/selector/resize.js +27 -0
- package/dist/esm/middlewares/selector/static.d.ts +67 -0
- package/dist/esm/middlewares/selector/static.js +92 -0
- package/dist/esm/middlewares/selector/styles.d.ts +4 -0
- package/dist/esm/middlewares/selector/styles.js +153 -0
- package/dist/esm/middlewares/selector/types.d.ts +27 -27
- package/dist/esm/middlewares/selector/types.js +1 -1
- package/dist/esm/middlewares/selector/util.d.ts +22 -32
- package/dist/esm/middlewares/selector/util.js +226 -243
- package/dist/esm/middlewares/text-editor/dom.d.ts +5 -0
- package/dist/esm/middlewares/text-editor/dom.js +135 -0
- package/dist/esm/middlewares/text-editor/index.d.ts +5 -20
- package/dist/esm/middlewares/text-editor/index.js +201 -208
- package/dist/esm/middlewares/text-editor/static.d.ts +10 -0
- package/dist/esm/middlewares/text-editor/static.js +17 -0
- package/dist/esm/middlewares/text-editor/types.d.ts +21 -0
- package/dist/esm/middlewares/text-editor/types.js +1 -0
- package/dist/esm/record.d.ts +5 -5
- package/dist/esm/record.js +14 -14
- package/dist/esm/{config.d.ts → static.d.ts} +16 -0
- package/dist/esm/{config.js → static.js} +18 -2
- package/dist/index.global.js +8934 -5647
- package/dist/index.global.min.js +1 -1
- package/package.json +4 -4
- package/dist/esm/middlewares/info/config.d.ts +0 -5
- package/dist/esm/middlewares/layout-selector/config.d.ts +0 -11
- package/dist/esm/middlewares/layout-selector/config.js +0 -12
- package/dist/esm/middlewares/ruler/config.d.ts +0 -7
- package/dist/esm/middlewares/scroller/config.d.ts +0 -10
- package/dist/esm/middlewares/scroller/config.js +0 -16
- package/dist/esm/middlewares/selector/config.d.ts +0 -30
- package/dist/esm/middlewares/selector/config.js +0 -38
- package/dist/esm/middlewares/selector/draw-auxiliary.js +0 -12
- package/dist/esm/middlewares/selector/draw-debug.d.ts +0 -5
- package/dist/esm/middlewares/selector/draw-debug.js +0 -30
- package/dist/esm/middlewares/selector/draw-wrapper.d.ts +0 -37
- package/dist/esm/middlewares/selector/draw-wrapper.js +0 -139
- package/dist/esm/middlewares/selector/pattern/icon-rotate.d.ts +0 -4
- package/dist/esm/middlewares/selector/pattern/icon-rotate.js +0 -88
- package/dist/esm/middlewares/selector/pattern/index.d.ts +0 -8
- package/dist/esm/middlewares/selector/pattern/index.js +0 -38
- /package/dist/esm/middlewares/{selector/draw-auxiliary.d.ts → path-creator/types.js} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { calcMaterialCenter, rotateMaterialVertexes, calcMaterialVertexesInGroup, calcViewPoint, calcViewMaterialSize, rotatePoint, parseAngleToRadian, parseRadianToAngle, limitAngle, calcRadian, } from '@idraw/util';
|
|
2
|
+
import { ATTR_HANDLER_TYPE } from './static';
|
|
2
3
|
function parseRadian(angle) {
|
|
3
4
|
return (angle * Math.PI) / 180;
|
|
4
5
|
}
|
|
@@ -8,12 +9,12 @@ function calcMoveDist(moveX, moveY) {
|
|
|
8
9
|
function changeMoveDistDirect(moveDist, moveDirect) {
|
|
9
10
|
return moveDirect > 0 ? Math.abs(moveDist) : 0 - Math.abs(moveDist);
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
+
function isPointInViewActiveVertexes(p, opts) {
|
|
12
13
|
const { ctx, viewScaleInfo, vertexes } = opts;
|
|
13
|
-
const v0 =
|
|
14
|
-
const v1 =
|
|
15
|
-
const v2 =
|
|
16
|
-
const v3 =
|
|
14
|
+
const v0 = calcViewPoint(vertexes[0], { viewScaleInfo });
|
|
15
|
+
const v1 = calcViewPoint(vertexes[1], { viewScaleInfo });
|
|
16
|
+
const v2 = calcViewPoint(vertexes[2], { viewScaleInfo });
|
|
17
|
+
const v3 = calcViewPoint(vertexes[3], { viewScaleInfo });
|
|
17
18
|
ctx.beginPath();
|
|
18
19
|
ctx.moveTo(v0.x, v0.y);
|
|
19
20
|
ctx.lineTo(v1.x, v1.y);
|
|
@@ -26,59 +27,40 @@ export function isPointInViewActiveVertexes(p, opts) {
|
|
|
26
27
|
}
|
|
27
28
|
return false;
|
|
28
29
|
}
|
|
29
|
-
export function isPointInViewActiveGroup(p, opts) {
|
|
30
|
-
const { ctx, viewScaleInfo, viewSizeInfo, groupQueue } = opts;
|
|
31
|
-
if (!groupQueue || !((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0)) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
const vesQueue = calcElementQueueVertexesQueueInGroup(groupQueue);
|
|
35
|
-
const vertexes = vesQueue[vesQueue.length - 1];
|
|
36
|
-
if (!vertexes) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
return isPointInViewActiveVertexes(p, { ctx, vertexes, viewScaleInfo, viewSizeInfo });
|
|
40
|
-
}
|
|
41
30
|
export function getPointTarget(p, opts) {
|
|
42
|
-
var _a
|
|
31
|
+
var _a;
|
|
43
32
|
const target = {
|
|
44
33
|
type: null,
|
|
45
|
-
|
|
46
|
-
|
|
34
|
+
materials: [],
|
|
35
|
+
materialVertexesList: [],
|
|
47
36
|
groupQueue: [],
|
|
48
|
-
groupQueueVertexesList: []
|
|
49
37
|
};
|
|
50
|
-
const { ctx, data, calculator,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
target
|
|
61
|
-
if (selectedElements && (selectedElements === null || selectedElements === void 0 ? void 0 : selectedElements.length) > 0) {
|
|
62
|
-
target.groupQueue = groupQueue || [];
|
|
63
|
-
target.elements = [selectedElements[0]];
|
|
64
|
-
return target;
|
|
65
|
-
}
|
|
66
|
-
break;
|
|
38
|
+
const { ctx, data, calculator, selectedMaterials, viewScaleInfo, viewSizeInfo, areaSize, groupQueue, nativeEvent } = opts;
|
|
39
|
+
const $targetElement = nativeEvent.target;
|
|
40
|
+
if (selectedMaterials && (selectedMaterials === null || selectedMaterials === void 0 ? void 0 : selectedMaterials.length) === 1 && $targetElement) {
|
|
41
|
+
const $elem = $targetElement;
|
|
42
|
+
if ($elem === null || $elem === void 0 ? void 0 : $elem.hasAttribute(ATTR_HANDLER_TYPE)) {
|
|
43
|
+
const handlerType = $elem.getAttribute(ATTR_HANDLER_TYPE);
|
|
44
|
+
if (typeof handlerType === 'string') {
|
|
45
|
+
target.type = `resize-${handlerType}`;
|
|
46
|
+
target.groupQueue = groupQueue || [];
|
|
47
|
+
target.materials = [selectedMaterials[0]];
|
|
48
|
+
return target;
|
|
67
49
|
}
|
|
68
50
|
}
|
|
69
51
|
}
|
|
70
52
|
if (groupQueue && Array.isArray(groupQueue) && groupQueue.length > 0) {
|
|
71
53
|
const lastGroup = groupQueue[groupQueue.length - 1];
|
|
72
|
-
if ((
|
|
73
|
-
for (let i = lastGroup.
|
|
74
|
-
const child = lastGroup.
|
|
75
|
-
const vertexes =
|
|
54
|
+
if ((lastGroup === null || lastGroup === void 0 ? void 0 : lastGroup.children) && Array.isArray(lastGroup === null || lastGroup === void 0 ? void 0 : lastGroup.children)) {
|
|
55
|
+
for (let i = lastGroup.children.length - 1; i >= 0; i--) {
|
|
56
|
+
const child = lastGroup.children[i];
|
|
57
|
+
const vertexes = calcMaterialVertexesInGroup(child, { groupQueue });
|
|
76
58
|
if (vertexes && isPointInViewActiveVertexes(p, { ctx, vertexes, viewScaleInfo, viewSizeInfo })) {
|
|
77
59
|
if (!target.type) {
|
|
78
|
-
target.type = 'over-
|
|
60
|
+
target.type = 'over-material';
|
|
79
61
|
}
|
|
80
62
|
target.groupQueue = groupQueue;
|
|
81
|
-
target.
|
|
63
|
+
target.materials = [child];
|
|
82
64
|
return target;
|
|
83
65
|
}
|
|
84
66
|
}
|
|
@@ -88,71 +70,67 @@ export function getPointTarget(p, opts) {
|
|
|
88
70
|
if (target.type !== null) {
|
|
89
71
|
return target;
|
|
90
72
|
}
|
|
91
|
-
if (areaSize && Array.isArray(
|
|
92
|
-
const { x, y,
|
|
93
|
-
if (p.x >= x && p.x <= x +
|
|
73
|
+
if (areaSize && Array.isArray(selectedMaterials) && (selectedMaterials === null || selectedMaterials === void 0 ? void 0 : selectedMaterials.length) > 1) {
|
|
74
|
+
const { x, y, width, height } = areaSize;
|
|
75
|
+
if (p.x >= x && p.x <= x + width && p.y >= y && p.y <= y + height) {
|
|
94
76
|
target.type = 'list-area';
|
|
95
|
-
target.
|
|
77
|
+
target.materials = selectedMaterials;
|
|
96
78
|
return target;
|
|
97
79
|
}
|
|
98
80
|
}
|
|
99
81
|
if (data) {
|
|
100
|
-
const { index,
|
|
101
|
-
if (index >= 0 &&
|
|
102
|
-
target.
|
|
103
|
-
target.type = 'over-
|
|
82
|
+
const { index, material } = calculator.getPointMaterial(p, { data, viewScaleInfo, viewSizeInfo });
|
|
83
|
+
if (index >= 0 && material && ((_a = material === null || material === void 0 ? void 0 : material.operations) === null || _a === void 0 ? void 0 : _a.invisible) !== true) {
|
|
84
|
+
target.materials = [material];
|
|
85
|
+
target.type = 'over-material';
|
|
104
86
|
return target;
|
|
105
87
|
}
|
|
106
88
|
}
|
|
107
89
|
return target;
|
|
108
90
|
}
|
|
109
|
-
export function
|
|
91
|
+
export function resizeMaterial(mtrl, opts) {
|
|
110
92
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
111
|
-
let { x, y,
|
|
112
|
-
const
|
|
93
|
+
let { x, y, width, height, angle = 0 } = mtrl;
|
|
94
|
+
const mtrlCenter = calcMaterialCenter({ x, y, width, height, angle });
|
|
113
95
|
angle = limitAngle(angle);
|
|
114
96
|
const radian = parseAngleToRadian(angle);
|
|
115
|
-
const limitRatio = !!((_a =
|
|
116
|
-
const { start, end, resizeType, scale } = opts;
|
|
97
|
+
const limitRatio = !!((_a = mtrl === null || mtrl === void 0 ? void 0 : mtrl.operations) === null || _a === void 0 ? void 0 : _a.limitRatio);
|
|
98
|
+
const { start, end, resizeType, scale, calculator } = opts;
|
|
117
99
|
let start0 = Object.assign({}, start);
|
|
118
100
|
let end0 = Object.assign({}, end);
|
|
119
|
-
let startHorizontal0 = { x: start0.x, y:
|
|
120
|
-
let endHorizontal0 = { x: end0.x, y:
|
|
101
|
+
let startHorizontal0 = { x: start0.x, y: mtrlCenter.y };
|
|
102
|
+
let endHorizontal0 = { x: end0.x, y: mtrlCenter.y };
|
|
121
103
|
let startHorizontal = Object.assign({}, startHorizontal0);
|
|
122
104
|
let endHorizontal = Object.assign({}, endHorizontal0);
|
|
123
|
-
let startVertical0 = { x:
|
|
124
|
-
let endVertical0 = { x:
|
|
105
|
+
let startVertical0 = { x: mtrlCenter.x, y: start0.y };
|
|
106
|
+
let endVertical0 = { x: mtrlCenter.x, y: end0.y };
|
|
125
107
|
let startVertical = Object.assign({}, startVertical0);
|
|
126
108
|
let endVertical = Object.assign({}, endVertical0);
|
|
127
109
|
let moveHorizontalX = (endHorizontal.x - startHorizontal.x) / scale;
|
|
128
110
|
let moveHorizontalY = (endHorizontal.y - startHorizontal.y) / scale;
|
|
129
111
|
let moveHorizontalDist = calcMoveDist(moveHorizontalX, moveHorizontalY);
|
|
130
|
-
let centerMoveHorizontalDist = 0;
|
|
131
112
|
let moveVerticalX = (endVertical.x - startVertical.x) / scale;
|
|
132
113
|
let moveVerticalY = (endVertical.y - startVertical.y) / scale;
|
|
133
114
|
let moveVerticalDist = calcMoveDist(moveVerticalX, moveVerticalY);
|
|
134
|
-
let centerMoveVerticalDist = 0;
|
|
135
115
|
if (angle > 0 || angle < 0) {
|
|
136
|
-
start0 = rotatePoint(
|
|
137
|
-
end0 = rotatePoint(
|
|
138
|
-
startHorizontal0 = { x: start0.x, y:
|
|
139
|
-
endHorizontal0 = { x: end0.x, y:
|
|
140
|
-
startHorizontal = rotatePoint(
|
|
141
|
-
endHorizontal = rotatePoint(
|
|
142
|
-
startVertical0 = { x:
|
|
143
|
-
endVertical0 = { x:
|
|
144
|
-
startVertical = rotatePoint(
|
|
145
|
-
endVertical = rotatePoint(
|
|
116
|
+
start0 = rotatePoint(mtrlCenter, start, 0 - radian);
|
|
117
|
+
end0 = rotatePoint(mtrlCenter, end, 0 - radian);
|
|
118
|
+
startHorizontal0 = { x: start0.x, y: mtrlCenter.y };
|
|
119
|
+
endHorizontal0 = { x: end0.x, y: mtrlCenter.y };
|
|
120
|
+
startHorizontal = rotatePoint(mtrlCenter, startHorizontal0, radian);
|
|
121
|
+
endHorizontal = rotatePoint(mtrlCenter, endHorizontal0, radian);
|
|
122
|
+
startVertical0 = { x: mtrlCenter.x, y: start0.y };
|
|
123
|
+
endVertical0 = { x: mtrlCenter.x, y: end0.y };
|
|
124
|
+
startVertical = rotatePoint(mtrlCenter, startVertical0, radian);
|
|
125
|
+
endVertical = rotatePoint(mtrlCenter, endVertical0, radian);
|
|
146
126
|
moveHorizontalX = (endHorizontal.x - startHorizontal.x) / scale;
|
|
147
127
|
moveHorizontalY = (endHorizontal.y - startHorizontal.y) / scale;
|
|
148
128
|
moveHorizontalDist = calcMoveDist(moveHorizontalX, moveHorizontalY);
|
|
149
129
|
moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, moveHorizontalY);
|
|
150
|
-
centerMoveHorizontalDist = moveHorizontalDist / 2;
|
|
151
130
|
moveVerticalX = (endVertical.x - startVertical.x) / scale;
|
|
152
131
|
moveVerticalY = (endVertical.y - startVertical.y) / scale;
|
|
153
132
|
moveVerticalDist = calcMoveDist(moveVerticalX, moveVerticalY);
|
|
154
133
|
moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY);
|
|
155
|
-
centerMoveVerticalDist = moveVerticalDist / 2;
|
|
156
134
|
}
|
|
157
135
|
let moveX = (end.x - start.x) / scale;
|
|
158
136
|
let moveY = (end.y - start.y) / scale;
|
|
@@ -160,19 +138,19 @@ export function resizeElement(elem, opts) {
|
|
|
160
138
|
if (['resize-top', 'resize-bottom', 'resize-left', 'resize-right'].includes(resizeType)) {
|
|
161
139
|
const maxDist = Math.max(Math.abs(moveX), Math.abs(moveY));
|
|
162
140
|
moveX = (moveX >= 0 ? 1 : -1) * maxDist;
|
|
163
|
-
moveY = (((moveY >= 0 ? 1 : -1) * maxDist) /
|
|
141
|
+
moveY = (((moveY >= 0 ? 1 : -1) * maxDist) / mtrl.width) * mtrl.height;
|
|
164
142
|
const maxVerticalDist = Math.max(Math.abs(moveVerticalX), Math.abs(moveVerticalY));
|
|
165
143
|
moveVerticalX = (moveVerticalX >= 0 ? 1 : -1) * maxVerticalDist;
|
|
166
|
-
moveVerticalY = (((moveVerticalY >= 0 ? 1 : -1) * maxVerticalDist) /
|
|
144
|
+
moveVerticalY = (((moveVerticalY >= 0 ? 1 : -1) * maxVerticalDist) / mtrl.width) * mtrl.height;
|
|
167
145
|
const maxHorizontalDist = Math.max(Math.abs(moveHorizontalX), Math.abs(moveHorizontalY));
|
|
168
146
|
moveHorizontalX = (moveHorizontalX >= 0 ? 1 : -1) * maxHorizontalDist;
|
|
169
|
-
moveHorizontalY = (((moveHorizontalY >= 0 ? 1 : -1) * maxHorizontalDist) /
|
|
147
|
+
moveHorizontalY = (((moveHorizontalY >= 0 ? 1 : -1) * maxHorizontalDist) / mtrl.width) * mtrl.height;
|
|
170
148
|
}
|
|
171
149
|
else if (['resize-top-left', 'resize-top-right', 'resize-bottom-left', 'resize-bottom-right'].includes(resizeType)) {
|
|
172
150
|
{
|
|
173
151
|
const maxDist = Math.abs(moveX);
|
|
174
152
|
moveX = (moveX >= 0 ? 1 : -1) * maxDist;
|
|
175
|
-
const moveYLeng = (maxDist /
|
|
153
|
+
const moveYLeng = (maxDist / mtrl.width) * mtrl.height;
|
|
176
154
|
if (resizeType === 'resize-top-left' || resizeType === 'resize-bottom-right') {
|
|
177
155
|
moveY = moveX > 0 ? moveYLeng : -moveYLeng;
|
|
178
156
|
}
|
|
@@ -182,25 +160,25 @@ export function resizeElement(elem, opts) {
|
|
|
182
160
|
}
|
|
183
161
|
{
|
|
184
162
|
moveHorizontalDist = Math.abs(moveHorizontalDist);
|
|
185
|
-
moveVerticalDist = (moveHorizontalDist /
|
|
163
|
+
moveVerticalDist = (moveHorizontalDist / mtrl.width) * mtrl.height;
|
|
186
164
|
}
|
|
187
165
|
}
|
|
188
166
|
}
|
|
189
167
|
switch (resizeType) {
|
|
190
168
|
case 'resize-top': {
|
|
191
169
|
if (angle === 0) {
|
|
192
|
-
if (
|
|
170
|
+
if (height - moveY > 0) {
|
|
193
171
|
y += moveY;
|
|
194
|
-
|
|
195
|
-
if (((_b =
|
|
196
|
-
x += ((moveY /
|
|
197
|
-
|
|
172
|
+
height -= moveY;
|
|
173
|
+
if (((_b = mtrl.operations) === null || _b === void 0 ? void 0 : _b.limitRatio) === true) {
|
|
174
|
+
x += ((moveY / mtrl.height) * mtrl.width) / 2;
|
|
175
|
+
width -= (moveY / mtrl.height) * mtrl.width;
|
|
198
176
|
}
|
|
199
177
|
}
|
|
200
178
|
}
|
|
201
179
|
else if (angle > 0 || angle < 0) {
|
|
202
|
-
let centerX =
|
|
203
|
-
let centerY =
|
|
180
|
+
let centerX = mtrlCenter.x;
|
|
181
|
+
let centerY = mtrlCenter.y;
|
|
204
182
|
if (angle < 90) {
|
|
205
183
|
moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalY);
|
|
206
184
|
const radian = parseRadian(angle);
|
|
@@ -229,30 +207,30 @@ export function resizeElement(elem, opts) {
|
|
|
229
207
|
centerX = centerX - centerMoveVerticalDist * Math.cos(radian);
|
|
230
208
|
centerY = centerY - centerMoveVerticalDist * Math.sin(radian);
|
|
231
209
|
}
|
|
232
|
-
if (
|
|
233
|
-
if (((_c =
|
|
234
|
-
|
|
210
|
+
if (height + moveVerticalDist > 0) {
|
|
211
|
+
if (((_c = mtrl.operations) === null || _c === void 0 ? void 0 : _c.limitRatio) === true) {
|
|
212
|
+
width = width + (moveVerticalDist / mtrl.height) * mtrl.width;
|
|
235
213
|
}
|
|
236
|
-
|
|
237
|
-
x = centerX -
|
|
238
|
-
y = centerY -
|
|
214
|
+
height = height + moveVerticalDist;
|
|
215
|
+
x = centerX - width / 2;
|
|
216
|
+
y = centerY - height / 2;
|
|
239
217
|
}
|
|
240
218
|
}
|
|
241
219
|
break;
|
|
242
220
|
}
|
|
243
221
|
case 'resize-bottom': {
|
|
244
222
|
if (angle === 0) {
|
|
245
|
-
if (
|
|
246
|
-
|
|
247
|
-
if (((_d =
|
|
248
|
-
x -= ((moveY /
|
|
249
|
-
|
|
223
|
+
if (mtrl.height + moveY > 0) {
|
|
224
|
+
height += moveY;
|
|
225
|
+
if (((_d = mtrl.operations) === null || _d === void 0 ? void 0 : _d.limitRatio) === true) {
|
|
226
|
+
x -= ((moveY / mtrl.height) * mtrl.width) / 2;
|
|
227
|
+
width += (moveY / mtrl.height) * mtrl.width;
|
|
250
228
|
}
|
|
251
229
|
}
|
|
252
230
|
}
|
|
253
231
|
else if (angle > 0 || angle < 0) {
|
|
254
|
-
let centerX =
|
|
255
|
-
let centerY =
|
|
232
|
+
let centerX = mtrlCenter.x;
|
|
233
|
+
let centerY = mtrlCenter.y;
|
|
256
234
|
if (angle < 90) {
|
|
257
235
|
moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY);
|
|
258
236
|
const radian = parseRadian(angle);
|
|
@@ -281,31 +259,31 @@ export function resizeElement(elem, opts) {
|
|
|
281
259
|
centerX = centerX + centerMoveDist * Math.cos(radian);
|
|
282
260
|
centerY = centerY + centerMoveDist * Math.sin(radian);
|
|
283
261
|
}
|
|
284
|
-
if (
|
|
285
|
-
if (((_e =
|
|
286
|
-
|
|
262
|
+
if (height + moveVerticalDist > 0) {
|
|
263
|
+
if (((_e = mtrl.operations) === null || _e === void 0 ? void 0 : _e.limitRatio) === true) {
|
|
264
|
+
width = width + (moveVerticalDist / mtrl.height) * mtrl.width;
|
|
287
265
|
}
|
|
288
|
-
|
|
289
|
-
x = centerX -
|
|
290
|
-
y = centerY -
|
|
266
|
+
height = height + moveVerticalDist;
|
|
267
|
+
x = centerX - width / 2;
|
|
268
|
+
y = centerY - height / 2;
|
|
291
269
|
}
|
|
292
270
|
}
|
|
293
271
|
break;
|
|
294
272
|
}
|
|
295
273
|
case 'resize-left': {
|
|
296
274
|
if (angle === 0) {
|
|
297
|
-
if (
|
|
275
|
+
if (mtrl.width - moveX > 0) {
|
|
298
276
|
x += moveX;
|
|
299
|
-
|
|
300
|
-
if (((_f =
|
|
301
|
-
|
|
302
|
-
y += ((moveX /
|
|
277
|
+
width -= moveX;
|
|
278
|
+
if (((_f = mtrl.operations) === null || _f === void 0 ? void 0 : _f.limitRatio) === true) {
|
|
279
|
+
height -= (moveX / mtrl.width) * mtrl.height;
|
|
280
|
+
y += ((moveX / mtrl.width) * mtrl.height) / 2;
|
|
303
281
|
}
|
|
304
282
|
}
|
|
305
283
|
}
|
|
306
284
|
else if (angle > 0 || angle < 0) {
|
|
307
|
-
let centerX =
|
|
308
|
-
let centerY =
|
|
285
|
+
let centerX = mtrlCenter.x;
|
|
286
|
+
let centerY = mtrlCenter.y;
|
|
309
287
|
if (angle < 90) {
|
|
310
288
|
moveHorizontalDist = 0 - changeMoveDistDirect(moveHorizontalDist, moveHorizontalX);
|
|
311
289
|
const radian = parseRadian(angle);
|
|
@@ -334,30 +312,30 @@ export function resizeElement(elem, opts) {
|
|
|
334
312
|
centerX = centerX - centerMoveHorizontalDist * Math.sin(radian);
|
|
335
313
|
centerY = centerY + centerMoveHorizontalDist * Math.cos(radian);
|
|
336
314
|
}
|
|
337
|
-
if (
|
|
338
|
-
if (((_g =
|
|
339
|
-
|
|
315
|
+
if (width + moveHorizontalDist > 0) {
|
|
316
|
+
if (((_g = mtrl.operations) === null || _g === void 0 ? void 0 : _g.limitRatio) === true) {
|
|
317
|
+
height = height + (moveHorizontalDist / mtrl.width) * mtrl.height;
|
|
340
318
|
}
|
|
341
|
-
|
|
342
|
-
x = centerX -
|
|
343
|
-
y = centerY -
|
|
319
|
+
width = width + moveHorizontalDist;
|
|
320
|
+
x = centerX - width / 2;
|
|
321
|
+
y = centerY - height / 2;
|
|
344
322
|
}
|
|
345
323
|
}
|
|
346
324
|
break;
|
|
347
325
|
}
|
|
348
326
|
case 'resize-right': {
|
|
349
327
|
if (angle === 0) {
|
|
350
|
-
if (
|
|
351
|
-
|
|
352
|
-
if (((_h =
|
|
353
|
-
y -= (moveX *
|
|
354
|
-
|
|
328
|
+
if (mtrl.width + moveX > 0) {
|
|
329
|
+
width += moveX;
|
|
330
|
+
if (((_h = mtrl.operations) === null || _h === void 0 ? void 0 : _h.limitRatio) === true) {
|
|
331
|
+
y -= (moveX * mtrl.height) / mtrl.width / 2;
|
|
332
|
+
height += (moveX * mtrl.height) / mtrl.width;
|
|
355
333
|
}
|
|
356
334
|
}
|
|
357
335
|
}
|
|
358
336
|
else if (angle > 0 || angle < 0) {
|
|
359
|
-
let centerX =
|
|
360
|
-
let centerY =
|
|
337
|
+
let centerX = mtrlCenter.x;
|
|
338
|
+
let centerY = mtrlCenter.y;
|
|
361
339
|
if (angle < 90) {
|
|
362
340
|
moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, moveHorizontalY);
|
|
363
341
|
const radian = parseRadian(angle);
|
|
@@ -387,31 +365,31 @@ export function resizeElement(elem, opts) {
|
|
|
387
365
|
centerX = centerX + centerMoveHorizontalDist * Math.sin(radian);
|
|
388
366
|
centerY = centerY - centerMoveHorizontalDist * Math.cos(radian);
|
|
389
367
|
}
|
|
390
|
-
if (
|
|
391
|
-
if (((_j =
|
|
392
|
-
|
|
368
|
+
if (width + moveHorizontalDist > 0) {
|
|
369
|
+
if (((_j = mtrl.operations) === null || _j === void 0 ? void 0 : _j.limitRatio) === true) {
|
|
370
|
+
height = height + (moveHorizontalDist / mtrl.width) * mtrl.height;
|
|
393
371
|
}
|
|
394
|
-
|
|
395
|
-
x = centerX -
|
|
396
|
-
y = centerY -
|
|
372
|
+
width = width + moveHorizontalDist;
|
|
373
|
+
x = centerX - width / 2;
|
|
374
|
+
y = centerY - height / 2;
|
|
397
375
|
}
|
|
398
376
|
}
|
|
399
377
|
break;
|
|
400
378
|
}
|
|
401
379
|
case 'resize-top-left': {
|
|
402
380
|
if (angle === 0) {
|
|
403
|
-
if (
|
|
381
|
+
if (width - moveX > 0) {
|
|
404
382
|
x += moveX;
|
|
405
|
-
|
|
383
|
+
width -= moveX;
|
|
406
384
|
}
|
|
407
|
-
if (
|
|
385
|
+
if (height - moveY > 0) {
|
|
408
386
|
y += moveY;
|
|
409
|
-
|
|
387
|
+
height -= moveY;
|
|
410
388
|
}
|
|
411
389
|
}
|
|
412
390
|
else if (angle > 0 || angle < 0) {
|
|
413
|
-
let centerX =
|
|
414
|
-
let centerY =
|
|
391
|
+
let centerX = mtrlCenter.x;
|
|
392
|
+
let centerY = mtrlCenter.y;
|
|
415
393
|
if (angle < 90) {
|
|
416
394
|
moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalY);
|
|
417
395
|
moveHorizontalDist =
|
|
@@ -456,30 +434,30 @@ export function resizeElement(elem, opts) {
|
|
|
456
434
|
centerX = centerX - centerMoveHorizontalDist * Math.sin(radian);
|
|
457
435
|
centerY = centerY + centerMoveHorizontalDist * Math.cos(radian);
|
|
458
436
|
}
|
|
459
|
-
if (
|
|
460
|
-
|
|
437
|
+
if (height + moveVerticalDist > 0) {
|
|
438
|
+
height = height + moveVerticalDist;
|
|
461
439
|
}
|
|
462
|
-
if (
|
|
463
|
-
|
|
440
|
+
if (width + moveHorizontalDist > 0) {
|
|
441
|
+
width = width + moveHorizontalDist;
|
|
464
442
|
}
|
|
465
|
-
x = centerX -
|
|
466
|
-
y = centerY -
|
|
443
|
+
x = centerX - width / 2;
|
|
444
|
+
y = centerY - height / 2;
|
|
467
445
|
}
|
|
468
446
|
break;
|
|
469
447
|
}
|
|
470
448
|
case 'resize-top-right': {
|
|
471
449
|
if (angle === 0) {
|
|
472
|
-
if (
|
|
473
|
-
|
|
450
|
+
if (width + moveX > 0) {
|
|
451
|
+
width += moveX;
|
|
474
452
|
}
|
|
475
|
-
if (
|
|
453
|
+
if (height - moveY > 0) {
|
|
476
454
|
y += moveY;
|
|
477
|
-
|
|
455
|
+
height -= moveY;
|
|
478
456
|
}
|
|
479
457
|
}
|
|
480
458
|
else if (angle > 0 || angle < 0) {
|
|
481
|
-
let centerX =
|
|
482
|
-
let centerY =
|
|
459
|
+
let centerX = mtrlCenter.x;
|
|
460
|
+
let centerY = mtrlCenter.y;
|
|
483
461
|
if (angle < 90) {
|
|
484
462
|
moveVerticalDist = 0 - changeMoveDistDirect(moveVerticalDist, moveVerticalY);
|
|
485
463
|
moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY);
|
|
@@ -524,30 +502,30 @@ export function resizeElement(elem, opts) {
|
|
|
524
502
|
centerX = centerX + centerMoveHorizontalDist * Math.sin(radian);
|
|
525
503
|
centerY = centerY - centerMoveHorizontalDist * Math.cos(radian);
|
|
526
504
|
}
|
|
527
|
-
if (
|
|
528
|
-
|
|
505
|
+
if (height + moveVerticalDist > 0) {
|
|
506
|
+
height = height + moveVerticalDist;
|
|
529
507
|
}
|
|
530
|
-
if (
|
|
531
|
-
|
|
508
|
+
if (width + moveHorizontalDist > 0) {
|
|
509
|
+
width = width + moveHorizontalDist;
|
|
532
510
|
}
|
|
533
|
-
x = centerX -
|
|
534
|
-
y = centerY -
|
|
511
|
+
x = centerX - width / 2;
|
|
512
|
+
y = centerY - height / 2;
|
|
535
513
|
}
|
|
536
514
|
break;
|
|
537
515
|
}
|
|
538
516
|
case 'resize-bottom-left': {
|
|
539
517
|
if (angle === 0) {
|
|
540
|
-
if (
|
|
541
|
-
|
|
518
|
+
if (mtrl.height + moveY > 0) {
|
|
519
|
+
height += moveY;
|
|
542
520
|
}
|
|
543
|
-
if (
|
|
521
|
+
if (mtrl.width - moveX > 0) {
|
|
544
522
|
x += moveX;
|
|
545
|
-
|
|
523
|
+
width -= moveX;
|
|
546
524
|
}
|
|
547
525
|
}
|
|
548
526
|
else if (angle > 0 || angle < 0) {
|
|
549
|
-
let centerX =
|
|
550
|
-
let centerY =
|
|
527
|
+
let centerX = mtrlCenter.x;
|
|
528
|
+
let centerY = mtrlCenter.y;
|
|
551
529
|
if (angle < 90) {
|
|
552
530
|
moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY);
|
|
553
531
|
moveHorizontalDist =
|
|
@@ -593,29 +571,29 @@ export function resizeElement(elem, opts) {
|
|
|
593
571
|
centerX = centerX - centerMoveHorizontalDist * Math.sin(radian);
|
|
594
572
|
centerY = centerY + centerMoveHorizontalDist * Math.cos(radian);
|
|
595
573
|
}
|
|
596
|
-
if (
|
|
597
|
-
|
|
574
|
+
if (height + moveVerticalDist > 0) {
|
|
575
|
+
height = height + moveVerticalDist;
|
|
598
576
|
}
|
|
599
|
-
if (
|
|
600
|
-
|
|
577
|
+
if (width + moveHorizontalDist > 0) {
|
|
578
|
+
width = width + moveHorizontalDist;
|
|
601
579
|
}
|
|
602
|
-
x = centerX -
|
|
603
|
-
y = centerY -
|
|
580
|
+
x = centerX - width / 2;
|
|
581
|
+
y = centerY - height / 2;
|
|
604
582
|
}
|
|
605
583
|
break;
|
|
606
584
|
}
|
|
607
585
|
case 'resize-bottom-right': {
|
|
608
586
|
if (angle === 0) {
|
|
609
|
-
if (
|
|
610
|
-
|
|
587
|
+
if (mtrl.height + moveY > 0) {
|
|
588
|
+
height += moveY;
|
|
611
589
|
}
|
|
612
|
-
if (
|
|
613
|
-
|
|
590
|
+
if (mtrl.width + moveX > 0) {
|
|
591
|
+
width += moveX;
|
|
614
592
|
}
|
|
615
593
|
}
|
|
616
594
|
else if (angle > 0 || angle < 0) {
|
|
617
|
-
let centerX =
|
|
618
|
-
let centerY =
|
|
595
|
+
let centerX = mtrlCenter.x;
|
|
596
|
+
let centerY = mtrlCenter.y;
|
|
619
597
|
if (angle < 90) {
|
|
620
598
|
moveVerticalDist = changeMoveDistDirect(moveVerticalDist, moveVerticalY);
|
|
621
599
|
moveHorizontalDist = changeMoveDistDirect(moveHorizontalDist, limitRatio ? moveVerticalDist : moveHorizontalY);
|
|
@@ -660,14 +638,14 @@ export function resizeElement(elem, opts) {
|
|
|
660
638
|
centerX = centerX + centerMoveHorizontalDist * Math.sin(radian);
|
|
661
639
|
centerY = centerY - centerMoveHorizontalDist * Math.cos(radian);
|
|
662
640
|
}
|
|
663
|
-
if (
|
|
664
|
-
|
|
641
|
+
if (height + moveVerticalDist > 0) {
|
|
642
|
+
height = height + moveVerticalDist;
|
|
665
643
|
}
|
|
666
|
-
if (
|
|
667
|
-
|
|
644
|
+
if (width + moveHorizontalDist > 0) {
|
|
645
|
+
width = width + moveHorizontalDist;
|
|
668
646
|
}
|
|
669
|
-
x = centerX -
|
|
670
|
-
y = centerY -
|
|
647
|
+
x = centerX - width / 2;
|
|
648
|
+
y = centerY - height / 2;
|
|
671
649
|
}
|
|
672
650
|
break;
|
|
673
651
|
}
|
|
@@ -675,115 +653,120 @@ export function resizeElement(elem, opts) {
|
|
|
675
653
|
break;
|
|
676
654
|
}
|
|
677
655
|
}
|
|
678
|
-
return {
|
|
656
|
+
return {
|
|
657
|
+
x: calculator.toGridNum(x),
|
|
658
|
+
y: calculator.toGridNum(y),
|
|
659
|
+
width: calculator.toGridNum(width),
|
|
660
|
+
height: calculator.toGridNum(height),
|
|
661
|
+
angle: calculator.toGridNum(mtrl.angle || 0),
|
|
662
|
+
};
|
|
679
663
|
}
|
|
680
|
-
export function
|
|
681
|
-
const { x, y,
|
|
682
|
-
const { center, start, end, viewScaleInfo } = opts;
|
|
683
|
-
const
|
|
684
|
-
viewScaleInfo
|
|
664
|
+
export function rotateMaterial(mtrl, opts) {
|
|
665
|
+
const { x, y, width, height, angle = 0 } = mtrl;
|
|
666
|
+
const { center, start, end, viewScaleInfo, calculator } = opts;
|
|
667
|
+
const mtrlCenter = calcViewPoint(center, {
|
|
668
|
+
viewScaleInfo,
|
|
685
669
|
});
|
|
686
670
|
const startAngle = limitAngle(angle);
|
|
687
|
-
const changedRadian = calcRadian(
|
|
671
|
+
const changedRadian = calcRadian(mtrlCenter, start, end);
|
|
688
672
|
const endAngle = limitAngle(startAngle + parseRadianToAngle(changedRadian));
|
|
689
673
|
return {
|
|
690
|
-
x,
|
|
691
|
-
y,
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
angle: endAngle
|
|
674
|
+
x: calculator.toGridNum(x),
|
|
675
|
+
y: calculator.toGridNum(y),
|
|
676
|
+
width: calculator.toGridNum(width),
|
|
677
|
+
height: calculator.toGridNum(height),
|
|
678
|
+
angle: calculator.toGridNum(endAngle),
|
|
695
679
|
};
|
|
696
680
|
}
|
|
697
681
|
export function getSelectedListArea(data, opts) {
|
|
698
682
|
var _a;
|
|
699
683
|
const indexes = [];
|
|
700
|
-
const
|
|
701
|
-
const
|
|
684
|
+
const ids = [];
|
|
685
|
+
const materials = [];
|
|
702
686
|
const { viewScaleInfo, start, end } = opts;
|
|
703
|
-
if (!(Array.isArray(data.
|
|
704
|
-
return { indexes,
|
|
687
|
+
if (!(Array.isArray(data.materials) && start && end)) {
|
|
688
|
+
return { indexes, ids, materials };
|
|
705
689
|
}
|
|
706
690
|
const startX = Math.min(start.x, end.x);
|
|
707
691
|
const endX = Math.max(start.x, end.x);
|
|
708
692
|
const startY = Math.min(start.y, end.y);
|
|
709
693
|
const endY = Math.max(start.y, end.y);
|
|
710
|
-
for (let idx = 0; idx < data.
|
|
711
|
-
const
|
|
712
|
-
if (((_a =
|
|
694
|
+
for (let idx = 0; idx < data.materials.length; idx++) {
|
|
695
|
+
const mtrl = data.materials[idx];
|
|
696
|
+
if (((_a = mtrl === null || mtrl === void 0 ? void 0 : mtrl.operations) === null || _a === void 0 ? void 0 : _a.locked) === true) {
|
|
713
697
|
continue;
|
|
714
698
|
}
|
|
715
|
-
const
|
|
716
|
-
const center =
|
|
699
|
+
const mtrlSize = calcViewMaterialSize(mtrl, { viewScaleInfo });
|
|
700
|
+
const center = calcMaterialCenter(mtrlSize);
|
|
717
701
|
if (center.x >= startX && center.x <= endX && center.y >= startY && center.y <= endY) {
|
|
718
702
|
indexes.push(idx);
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
if (
|
|
722
|
-
const ves =
|
|
703
|
+
ids.push(mtrl.id);
|
|
704
|
+
materials.push(mtrl);
|
|
705
|
+
if (mtrlSize.angle && (mtrlSize.angle > 0 || mtrlSize.angle < 0)) {
|
|
706
|
+
const ves = rotateMaterialVertexes(mtrlSize);
|
|
723
707
|
if (ves.length === 4) {
|
|
724
708
|
const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
|
|
725
709
|
const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
710
|
+
mtrlSize.x = Math.min(...xList);
|
|
711
|
+
mtrlSize.y = Math.min(...yList);
|
|
712
|
+
mtrlSize.width = Math.abs(Math.max(...xList) - Math.min(...xList));
|
|
713
|
+
mtrlSize.height = Math.abs(Math.max(...yList) - Math.min(...yList));
|
|
730
714
|
}
|
|
731
715
|
}
|
|
732
716
|
}
|
|
733
717
|
}
|
|
734
|
-
return { indexes,
|
|
718
|
+
return { indexes, ids, materials };
|
|
735
719
|
}
|
|
736
|
-
export function
|
|
720
|
+
export function calcSelectedMaterialsArea(materials, opts) {
|
|
737
721
|
var _a;
|
|
738
|
-
if (!Array.isArray(
|
|
722
|
+
if (!Array.isArray(materials)) {
|
|
739
723
|
return null;
|
|
740
724
|
}
|
|
741
|
-
const area = { x: 0, y: 0,
|
|
725
|
+
const area = { x: 0, y: 0, width: 0, height: 0 };
|
|
742
726
|
const { viewScaleInfo } = opts;
|
|
743
|
-
let
|
|
744
|
-
for (let i = 0; i <
|
|
745
|
-
const
|
|
746
|
-
if ((_a =
|
|
727
|
+
let prevMtrlSize = null;
|
|
728
|
+
for (let i = 0; i < materials.length; i++) {
|
|
729
|
+
const mtrl = materials[i];
|
|
730
|
+
if ((_a = mtrl === null || mtrl === void 0 ? void 0 : mtrl.operations) === null || _a === void 0 ? void 0 : _a.invisible) {
|
|
747
731
|
continue;
|
|
748
732
|
}
|
|
749
|
-
const
|
|
750
|
-
if (
|
|
751
|
-
const ves =
|
|
733
|
+
const mtrlSize = calcViewMaterialSize(mtrl, { viewScaleInfo });
|
|
734
|
+
if (mtrlSize.angle && (mtrlSize.angle > 0 || mtrlSize.angle < 0)) {
|
|
735
|
+
const ves = rotateMaterialVertexes(mtrlSize);
|
|
752
736
|
if (ves.length === 4) {
|
|
753
737
|
const xList = [ves[0].x, ves[1].x, ves[2].x, ves[3].x];
|
|
754
738
|
const yList = [ves[0].y, ves[1].y, ves[2].y, ves[3].y];
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
739
|
+
mtrlSize.x = Math.min(...xList);
|
|
740
|
+
mtrlSize.y = Math.min(...yList);
|
|
741
|
+
mtrlSize.width = Math.abs(Math.max(...xList) - Math.min(...xList));
|
|
742
|
+
mtrlSize.height = Math.abs(Math.max(...yList) - Math.min(...yList));
|
|
759
743
|
}
|
|
760
744
|
}
|
|
761
|
-
if (
|
|
762
|
-
const areaStartX = Math.min(
|
|
763
|
-
const areaStartY = Math.min(
|
|
764
|
-
const areaEndX = Math.max(
|
|
765
|
-
const areaEndY = Math.max(
|
|
745
|
+
if (prevMtrlSize) {
|
|
746
|
+
const areaStartX = Math.min(mtrlSize.x, area.x);
|
|
747
|
+
const areaStartY = Math.min(mtrlSize.y, area.y);
|
|
748
|
+
const areaEndX = Math.max(mtrlSize.x + mtrlSize.width, area.x + area.width);
|
|
749
|
+
const areaEndY = Math.max(mtrlSize.y + mtrlSize.height, area.y + area.height);
|
|
766
750
|
area.x = areaStartX;
|
|
767
751
|
area.y = areaStartY;
|
|
768
|
-
area.
|
|
769
|
-
area.
|
|
752
|
+
area.width = Math.abs(areaEndX - areaStartX);
|
|
753
|
+
area.height = Math.abs(areaEndY - areaStartY);
|
|
770
754
|
}
|
|
771
755
|
else {
|
|
772
|
-
area.x =
|
|
773
|
-
area.y =
|
|
774
|
-
area.
|
|
775
|
-
area.
|
|
756
|
+
area.x = mtrlSize.x;
|
|
757
|
+
area.y = mtrlSize.y;
|
|
758
|
+
area.width = mtrlSize.width;
|
|
759
|
+
area.height = mtrlSize.height;
|
|
776
760
|
}
|
|
777
|
-
|
|
761
|
+
prevMtrlSize = mtrlSize;
|
|
778
762
|
}
|
|
779
763
|
return area;
|
|
780
764
|
}
|
|
781
|
-
export function
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
if (elem.uuid === child.uuid) {
|
|
765
|
+
export function isMaterialInGroup(mtrl, group) {
|
|
766
|
+
if ((group === null || group === void 0 ? void 0 : group.type) === 'group' && Array.isArray(group === null || group === void 0 ? void 0 : group.children)) {
|
|
767
|
+
for (let i = 0; i < group.children.length; i++) {
|
|
768
|
+
const child = group.children[i];
|
|
769
|
+
if (mtrl.id === child.id) {
|
|
787
770
|
return true;
|
|
788
771
|
}
|
|
789
772
|
}
|