@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,13 +1,13 @@
|
|
|
1
|
-
import type { Data,
|
|
2
|
-
export declare function calcReferenceInfo(
|
|
1
|
+
import type { Data, StrictMaterial, Point, ViewScaleInfo, ViewSizeInfo, ViewCalculator } from '@idraw/types';
|
|
2
|
+
export declare function calcReferenceInfo(id: string, opts: {
|
|
3
3
|
data: Data;
|
|
4
|
-
groupQueue:
|
|
4
|
+
groupQueue: StrictMaterial<'group'>[];
|
|
5
5
|
calculator: ViewCalculator;
|
|
6
6
|
viewScaleInfo: ViewScaleInfo;
|
|
7
7
|
viewSizeInfo: ViewSizeInfo;
|
|
8
8
|
}): {
|
|
9
9
|
offsetX: number | null;
|
|
10
10
|
offsetY: number | null;
|
|
11
|
-
yLines:
|
|
12
|
-
xLines:
|
|
11
|
+
yLines: Point[][];
|
|
12
|
+
xLines: Point[][];
|
|
13
13
|
} | null;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { is } from '@idraw/util';
|
|
2
2
|
const unitSize = 2;
|
|
3
|
-
function getViewBoxInfo(
|
|
3
|
+
function getViewBoxInfo(boundingBox) {
|
|
4
4
|
const boxInfo = {
|
|
5
|
-
minX:
|
|
6
|
-
minY:
|
|
7
|
-
maxX:
|
|
8
|
-
maxY:
|
|
9
|
-
midX:
|
|
10
|
-
midY:
|
|
5
|
+
minX: boundingBox.topLeft.x,
|
|
6
|
+
minY: boundingBox.topLeft.y,
|
|
7
|
+
maxX: boundingBox.bottomRight.x,
|
|
8
|
+
maxY: boundingBox.bottomRight.y,
|
|
9
|
+
midX: boundingBox.center.x,
|
|
10
|
+
midY: boundingBox.center.y,
|
|
11
11
|
};
|
|
12
12
|
return boxInfo;
|
|
13
13
|
}
|
|
@@ -38,27 +38,33 @@ const getClosestNumInSortedKeys = (sortedKeys, target) => {
|
|
|
38
38
|
if (right < 0) {
|
|
39
39
|
return sortedKeys[left];
|
|
40
40
|
}
|
|
41
|
-
return Math.abs(sortedKeys[right] - target) <= Math.abs(sortedKeys[left] - target)
|
|
41
|
+
return Math.abs(sortedKeys[right] - target) <= Math.abs(sortedKeys[left] - target)
|
|
42
|
+
? sortedKeys[right]
|
|
43
|
+
: sortedKeys[left];
|
|
42
44
|
};
|
|
43
45
|
const isEqualNum = (a, b) => Math.abs(a - b) < 0.00001;
|
|
44
|
-
export function calcReferenceInfo(
|
|
45
|
-
var _a
|
|
46
|
+
export function calcReferenceInfo(id, opts) {
|
|
47
|
+
var _a;
|
|
46
48
|
const { data, groupQueue, calculator, viewScaleInfo, viewSizeInfo } = opts;
|
|
47
|
-
let
|
|
49
|
+
let targetMaterials = data.materials || [];
|
|
48
50
|
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
49
|
-
|
|
51
|
+
targetMaterials = ((_a = groupQueue[groupQueue.length - 1]) === null || _a === void 0 ? void 0 : _a.children) || [];
|
|
50
52
|
}
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
const info = calculator.
|
|
53
|
+
const siblingBoundingInfoList = [];
|
|
54
|
+
targetMaterials.forEach((mtrl) => {
|
|
55
|
+
if (mtrl.id !== id) {
|
|
56
|
+
const info = calculator.calcViewBoundingInfoFromRange(mtrl.id, {
|
|
57
|
+
checkVisible: true,
|
|
58
|
+
viewScaleInfo,
|
|
59
|
+
viewSizeInfo,
|
|
60
|
+
});
|
|
55
61
|
if (info) {
|
|
56
|
-
|
|
62
|
+
siblingBoundingInfoList.push(info);
|
|
57
63
|
}
|
|
58
64
|
}
|
|
59
65
|
});
|
|
60
|
-
const
|
|
61
|
-
if (!
|
|
66
|
+
const targetBoundingBox = calculator.calcViewBoundingInfoFromRange(id, { viewScaleInfo, viewSizeInfo });
|
|
67
|
+
if (!targetBoundingBox) {
|
|
62
68
|
return null;
|
|
63
69
|
}
|
|
64
70
|
const vTargetLineDotMap = {};
|
|
@@ -69,14 +75,14 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
69
75
|
const hHelperLineDotMapList = [];
|
|
70
76
|
let sortedRefXKeys = [];
|
|
71
77
|
let sortedRefYKeys = [];
|
|
72
|
-
const targetBox = getViewBoxInfo(
|
|
78
|
+
const targetBox = getViewBoxInfo(targetBoundingBox);
|
|
73
79
|
vTargetLineDotMap[targetBox.minX] = [targetBox.minY, targetBox.midY, targetBox.maxY];
|
|
74
80
|
vTargetLineDotMap[targetBox.midX] = [targetBox.minY, targetBox.midY, targetBox.maxY];
|
|
75
81
|
vTargetLineDotMap[targetBox.maxX] = [targetBox.minY, targetBox.midY, targetBox.maxY];
|
|
76
82
|
hTargetLineDotMap[targetBox.minY] = [targetBox.minX, targetBox.midX, targetBox.maxX];
|
|
77
83
|
hTargetLineDotMap[targetBox.midY] = [targetBox.minX, targetBox.midX, targetBox.maxX];
|
|
78
84
|
hTargetLineDotMap[targetBox.maxY] = [targetBox.minX, targetBox.midX, targetBox.maxX];
|
|
79
|
-
|
|
85
|
+
siblingBoundingInfoList.forEach((info) => {
|
|
80
86
|
const box = getViewBoxInfo(info);
|
|
81
87
|
if (!vRefLineDotMap[box.minX]) {
|
|
82
88
|
vRefLineDotMap[box.minX] = [];
|
|
@@ -174,7 +180,7 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
174
180
|
if (isEqualNum(offsetX, closestMinX - targetBox.minX)) {
|
|
175
181
|
const vLine = {
|
|
176
182
|
x: closestMinX,
|
|
177
|
-
yList: []
|
|
183
|
+
yList: [],
|
|
178
184
|
};
|
|
179
185
|
vLine.yList.push(newTargetBox.minY);
|
|
180
186
|
vLine.yList.push(newTargetBox.maxY);
|
|
@@ -184,7 +190,7 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
184
190
|
if (isEqualNum(offsetX, closestMidX - targetBox.minX)) {
|
|
185
191
|
const vLine = {
|
|
186
192
|
x: closestMidX,
|
|
187
|
-
yList: []
|
|
193
|
+
yList: [],
|
|
188
194
|
};
|
|
189
195
|
vLine.yList.push(newTargetBox.minY);
|
|
190
196
|
vLine.yList.push(newTargetBox.maxY);
|
|
@@ -194,7 +200,7 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
194
200
|
if (isEqualNum(offsetX, closestMaxX - targetBox.minX)) {
|
|
195
201
|
const vLine = {
|
|
196
202
|
x: closestMaxX,
|
|
197
|
-
yList: []
|
|
203
|
+
yList: [],
|
|
198
204
|
};
|
|
199
205
|
vLine.yList.push(newTargetBox.minY);
|
|
200
206
|
vLine.yList.push(newTargetBox.maxY);
|
|
@@ -206,7 +212,7 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
206
212
|
if (isEqualNum(offsetY, closestMinY - targetBox.minY)) {
|
|
207
213
|
const hLine = {
|
|
208
214
|
y: closestMinY,
|
|
209
|
-
xList: []
|
|
215
|
+
xList: [],
|
|
210
216
|
};
|
|
211
217
|
hLine.xList.push(newTargetBox.minX);
|
|
212
218
|
hLine.xList.push(newTargetBox.maxX);
|
|
@@ -216,7 +222,7 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
216
222
|
if (isEqualNum(offsetY, closestMidY - targetBox.midY)) {
|
|
217
223
|
const hLine = {
|
|
218
224
|
y: closestMidY,
|
|
219
|
-
xList: []
|
|
225
|
+
xList: [],
|
|
220
226
|
};
|
|
221
227
|
hLine.xList.push(newTargetBox.minX);
|
|
222
228
|
hLine.xList.push(newTargetBox.maxX);
|
|
@@ -226,7 +232,7 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
226
232
|
if (isEqualNum(offsetY, closestMaxY - targetBox.maxY)) {
|
|
227
233
|
const hLine = {
|
|
228
234
|
y: closestMaxY,
|
|
229
|
-
xList: []
|
|
235
|
+
xList: [],
|
|
230
236
|
};
|
|
231
237
|
hLine.xList.push(newTargetBox.minX);
|
|
232
238
|
hLine.xList.push(newTargetBox.maxX);
|
|
@@ -241,7 +247,7 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
241
247
|
item.yList.forEach((y) => {
|
|
242
248
|
yLines[i].push({
|
|
243
249
|
x: item.x,
|
|
244
|
-
y
|
|
250
|
+
y,
|
|
245
251
|
});
|
|
246
252
|
});
|
|
247
253
|
});
|
|
@@ -253,7 +259,7 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
253
259
|
item.xList.forEach((x) => {
|
|
254
260
|
xLines[i].push({
|
|
255
261
|
x,
|
|
256
|
-
y: item.y
|
|
262
|
+
y: item.y,
|
|
257
263
|
});
|
|
258
264
|
});
|
|
259
265
|
});
|
|
@@ -262,6 +268,6 @@ export function calcReferenceInfo(uuid, opts) {
|
|
|
262
268
|
offsetX,
|
|
263
269
|
offsetY,
|
|
264
270
|
yLines,
|
|
265
|
-
xLines
|
|
271
|
+
xLines,
|
|
266
272
|
};
|
|
267
273
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BoardViewerFrameSnapshot, BoardMiddlewareOptions, MiddlewareSelectorStyles } from '@idraw/types';
|
|
2
|
+
import type { ActionType, DeepSelectorSharedStorage } from './types';
|
|
3
|
+
import { keyActionType, keyResizeType, keyGroupQueue, keyHoverMaterial, keySelectedMaterialList } from './static';
|
|
4
|
+
export { keySelectedMaterialList, keyHoverMaterial, keyActionType, keyResizeType, keyGroupQueue };
|
|
5
|
+
export type { DeepSelectorSharedStorage, ActionType };
|
|
6
|
+
export type RenderFrameOptions = Pick<BoardMiddlewareOptions<DeepSelectorSharedStorage>, 'sharer' | 'calculator' | 'boardContent'> & {
|
|
7
|
+
snapshot: BoardViewerFrameSnapshot<DeepSelectorSharedStorage>;
|
|
8
|
+
$root: HTMLDivElement | null;
|
|
9
|
+
styles: MiddlewareSelectorStyles;
|
|
10
|
+
};
|
|
11
|
+
export declare function renderFrame({ $root, styles, snapshot, sharer, calculator, boardContent }: RenderFrameOptions): void;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { drawReferenceLines } from './draw-reference';
|
|
2
|
+
import { calcSelectedMaterialsArea } from './util';
|
|
3
|
+
import { keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyHoverMaterial, keySelectedMaterialList, keyEnableSnapToGrid, } from './static';
|
|
4
|
+
import { calcReferenceInfo } from './reference';
|
|
5
|
+
import { renderMaterialHoverBox, clearMaterialHoverBox, renderMaterialLockedBox, clearMaterialLockedBox, resetMaterialNestedBox, resetMaterialSelectedBox, resetMaterialSelectionAreaBox, } from './dom';
|
|
6
|
+
export { keySelectedMaterialList, keyHoverMaterial, keyActionType, keyResizeType, keyGroupQueue };
|
|
7
|
+
export function renderFrame({ $root, styles, snapshot, sharer, calculator, boardContent }) {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
const { activeStore, sharedStore } = snapshot;
|
|
10
|
+
const { overlayContext } = boardContent;
|
|
11
|
+
const { scale, offsetLeft, offsetTop, offsetRight, offsetBottom, width, height, contextHeight, contextWidth, devicePixelRatio, } = activeStore;
|
|
12
|
+
const viewScaleInfo = { scale, offsetLeft, offsetTop, offsetRight, offsetBottom };
|
|
13
|
+
const viewSizeInfo = { width, height, contextHeight, contextWidth, devicePixelRatio };
|
|
14
|
+
const selectedMaterials = sharedStore[keySelectedMaterialList];
|
|
15
|
+
const mtrl = selectedMaterials[0];
|
|
16
|
+
const hoverMaterial = sharedStore[keyHoverMaterial];
|
|
17
|
+
const actionType = sharedStore[keyActionType];
|
|
18
|
+
const areaStart = sharedStore[keyAreaStart];
|
|
19
|
+
const areaEnd = sharedStore[keyAreaEnd];
|
|
20
|
+
const groupQueue = sharedStore[keyGroupQueue];
|
|
21
|
+
const enableSnapToGrid = sharedStore[keyEnableSnapToGrid];
|
|
22
|
+
const isHoverLocked = !!((_a = hoverMaterial === null || hoverMaterial === void 0 ? void 0 : hoverMaterial.operations) === null || _a === void 0 ? void 0 : _a.locked);
|
|
23
|
+
const helperOpts = {
|
|
24
|
+
material: null,
|
|
25
|
+
groupQueue: groupQueue || [],
|
|
26
|
+
viewScaleInfo,
|
|
27
|
+
viewSizeInfo,
|
|
28
|
+
calculator,
|
|
29
|
+
};
|
|
30
|
+
resetMaterialNestedBox($root, helperOpts);
|
|
31
|
+
clearMaterialHoverBox($root);
|
|
32
|
+
clearMaterialLockedBox($root);
|
|
33
|
+
if (hoverMaterial && (hoverMaterial === null || hoverMaterial === void 0 ? void 0 : hoverMaterial.id) !== ((_b = selectedMaterials[0]) === null || _b === void 0 ? void 0 : _b.id)) {
|
|
34
|
+
helperOpts.material = hoverMaterial;
|
|
35
|
+
if (isHoverLocked) {
|
|
36
|
+
renderMaterialLockedBox($root, helperOpts);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
renderMaterialHoverBox($root, helperOpts);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
resetMaterialSelectedBox($root, Object.assign(Object.assign({}, helperOpts), { material: selectedMaterials.length === 1 ? selectedMaterials[0] : null }));
|
|
43
|
+
resetMaterialSelectionAreaBox($root, Object.assign(Object.assign({}, helperOpts), { areaStart,
|
|
44
|
+
areaEnd,
|
|
45
|
+
selectedMaterials }));
|
|
46
|
+
if ((groupQueue === null || groupQueue === void 0 ? void 0 : groupQueue.length) > 0) {
|
|
47
|
+
if (mtrl && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
48
|
+
if (actionType === 'drag') {
|
|
49
|
+
if (enableSnapToGrid === true) {
|
|
50
|
+
const referenceInfo = calcReferenceInfo(mtrl.id, {
|
|
51
|
+
calculator,
|
|
52
|
+
data: activeStore.data,
|
|
53
|
+
groupQueue,
|
|
54
|
+
viewScaleInfo,
|
|
55
|
+
viewSizeInfo,
|
|
56
|
+
});
|
|
57
|
+
if (referenceInfo) {
|
|
58
|
+
const { offsetX, offsetY, xLines, yLines } = referenceInfo;
|
|
59
|
+
if (offsetX === 0 || offsetY === 0) {
|
|
60
|
+
drawReferenceLines(overlayContext, {
|
|
61
|
+
xLines,
|
|
62
|
+
yLines,
|
|
63
|
+
styles,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (mtrl && ['select', 'drag', 'resize'].includes(actionType)) {
|
|
73
|
+
if (actionType === 'drag') {
|
|
74
|
+
if (enableSnapToGrid === true) {
|
|
75
|
+
const referenceInfo = calcReferenceInfo(mtrl.id, {
|
|
76
|
+
calculator,
|
|
77
|
+
data: activeStore.data,
|
|
78
|
+
groupQueue,
|
|
79
|
+
viewScaleInfo,
|
|
80
|
+
viewSizeInfo,
|
|
81
|
+
});
|
|
82
|
+
if (referenceInfo) {
|
|
83
|
+
const { offsetX, offsetY, xLines, yLines } = referenceInfo;
|
|
84
|
+
if (offsetX === 0 || offsetY === 0) {
|
|
85
|
+
drawReferenceLines(overlayContext, {
|
|
86
|
+
xLines,
|
|
87
|
+
yLines,
|
|
88
|
+
styles,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else if (actionType === 'area' && areaStart && areaEnd) {
|
|
96
|
+
}
|
|
97
|
+
else if (['drag-list', 'drag-list-end'].includes(actionType)) {
|
|
98
|
+
const listAreaSize = calcSelectedMaterialsArea(sharer.getSharedStorage(keySelectedMaterialList), {
|
|
99
|
+
viewScaleInfo: sharer.getActiveViewScaleInfo(),
|
|
100
|
+
viewSizeInfo: sharer.getActiveViewSizeInfo(),
|
|
101
|
+
calculator,
|
|
102
|
+
});
|
|
103
|
+
if (listAreaSize) {
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { scalePathCommands } from '@idraw/util';
|
|
2
|
+
export const dragAndResizeMaterial = (mtrl, opts) => {
|
|
3
|
+
const { x, y, width, height } = opts;
|
|
4
|
+
const prevWidth = mtrl.width;
|
|
5
|
+
const prevHeight = mtrl.height;
|
|
6
|
+
mtrl.x = x;
|
|
7
|
+
mtrl.y = y;
|
|
8
|
+
mtrl.width = width;
|
|
9
|
+
mtrl.height = height;
|
|
10
|
+
if (mtrl.type === 'circle') {
|
|
11
|
+
mtrl.cx = x + width / 2;
|
|
12
|
+
mtrl.cy = y + height / 2;
|
|
13
|
+
mtrl.r = Math.min(width, height) / 2;
|
|
14
|
+
}
|
|
15
|
+
else if (mtrl.type === 'ellipse') {
|
|
16
|
+
mtrl.cx = x + width / 2;
|
|
17
|
+
mtrl.cy = y + height / 2;
|
|
18
|
+
mtrl.rx = width / 2;
|
|
19
|
+
mtrl.ry = height / 2;
|
|
20
|
+
}
|
|
21
|
+
else if (mtrl.type === 'path') {
|
|
22
|
+
const scaleW = width / prevWidth;
|
|
23
|
+
const scaleH = height / prevHeight;
|
|
24
|
+
const svgMtrl = mtrl;
|
|
25
|
+
svgMtrl.commands = scalePathCommands(svgMtrl.commands, scaleW, scaleH);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { MiddlewareSelectorStyles, StoreSharer } from '@idraw/types';
|
|
2
|
+
import type { DeepSelectorSharedStorage } from './types';
|
|
3
|
+
export declare const key = "SELECTOR";
|
|
4
|
+
export declare const prefix = "idraw-middleware-selector";
|
|
5
|
+
export declare const getRootClassName: () => string;
|
|
6
|
+
export declare const ATTR_BOX_TYPE = "data-idraw-box-type";
|
|
7
|
+
export declare const ATTR_MATERIAL_ID = "data-idraw-material-id";
|
|
8
|
+
export declare const ATTR_HANDLER_TYPE = "data-idraw-handler-type";
|
|
9
|
+
export declare const BOX_GROUP = "box-group";
|
|
10
|
+
export declare const BOX_TARGET = "box-material";
|
|
11
|
+
export declare const classNameMap: {
|
|
12
|
+
materialBox: string;
|
|
13
|
+
groupBox: string;
|
|
14
|
+
nestedBox: string;
|
|
15
|
+
nestedTargetBox: string;
|
|
16
|
+
hoverBox: string;
|
|
17
|
+
hoverTargetBox: string;
|
|
18
|
+
lockedBox: string;
|
|
19
|
+
lockedTargetBox: string;
|
|
20
|
+
selectedBox: string;
|
|
21
|
+
selectedTargetBox: string;
|
|
22
|
+
hideHandler: string;
|
|
23
|
+
edgeHandler: string;
|
|
24
|
+
edgeTopHandler: string;
|
|
25
|
+
edgeRightHandler: string;
|
|
26
|
+
edgeBottomHandler: string;
|
|
27
|
+
edgeLeftHandler: string;
|
|
28
|
+
cornerHandler: string;
|
|
29
|
+
cornerTopLeftHandler: string;
|
|
30
|
+
cornerTopRightHandler: string;
|
|
31
|
+
cornerBottomLeftHandler: string;
|
|
32
|
+
cornerBottomRightHandler: string;
|
|
33
|
+
rotateHandler: string;
|
|
34
|
+
selectionAreaBox: string;
|
|
35
|
+
};
|
|
36
|
+
export declare const keyPrevPoint: unique symbol;
|
|
37
|
+
export declare const keyPointStartMaterialSizeList: unique symbol;
|
|
38
|
+
export declare const keyMoveOriginalStartPoint: unique symbol;
|
|
39
|
+
export declare const keyMoveOriginalStartMaterialSize: unique symbol;
|
|
40
|
+
export declare const keyInBusyMode: unique symbol;
|
|
41
|
+
export declare const keyHasChangedData: unique symbol;
|
|
42
|
+
export declare const keyStartResizeGroupRecord: unique symbol;
|
|
43
|
+
export declare const keyEndResizeGroupRecord: unique symbol;
|
|
44
|
+
export declare const keyActionType: unique symbol;
|
|
45
|
+
export declare const keyResizeType: unique symbol;
|
|
46
|
+
export declare const keyAreaStart: unique symbol;
|
|
47
|
+
export declare const keyAreaEnd: unique symbol;
|
|
48
|
+
export declare const keyHoverMaterial: unique symbol;
|
|
49
|
+
export declare const keySelectedMaterialList: unique symbol;
|
|
50
|
+
export declare const keySelectedMaterialListVertexes: unique symbol;
|
|
51
|
+
export declare const keySelectedMaterialPosition: unique symbol;
|
|
52
|
+
export declare const keyGroupQueue: unique symbol;
|
|
53
|
+
export declare const keyIsMoving: unique symbol;
|
|
54
|
+
export declare const keyEnableSelectInGroup: unique symbol;
|
|
55
|
+
export declare const keyEnableSnapToGrid: unique symbol;
|
|
56
|
+
export declare const selectedBoxBorderWidth = 1.5;
|
|
57
|
+
export declare const selectedNestedBoxBorderWidth = 2;
|
|
58
|
+
export declare const hoverBoxBorderWidth = 1;
|
|
59
|
+
export declare const lockedBoxBorderWidth = 2;
|
|
60
|
+
export declare const cornerHandlerSize = 10;
|
|
61
|
+
export declare const cornerHandlerBorderWidth = 1.5;
|
|
62
|
+
export declare const edgeHandlerSize = 10;
|
|
63
|
+
export declare const selectionAreaBorderWidth = 1;
|
|
64
|
+
export declare const rotateHandlerSize = 20;
|
|
65
|
+
export declare const defaultStyle: MiddlewareSelectorStyles;
|
|
66
|
+
export declare const getSvgRotate: (currentColor: string) => string;
|
|
67
|
+
export declare const clearStorage: (sharer: StoreSharer<DeepSelectorSharedStorage>) => void;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createId } from '@idraw/util';
|
|
2
|
+
export const key = 'SELECTOR';
|
|
3
|
+
export const prefix = `idraw-middleware-selector`;
|
|
4
|
+
export const getRootClassName = () => `${prefix}-${createId()}`;
|
|
5
|
+
export const ATTR_BOX_TYPE = 'data-idraw-box-type';
|
|
6
|
+
export const ATTR_MATERIAL_ID = 'data-idraw-material-id';
|
|
7
|
+
export const ATTR_HANDLER_TYPE = 'data-idraw-handler-type';
|
|
8
|
+
export const BOX_GROUP = 'box-group';
|
|
9
|
+
export const BOX_TARGET = 'box-material';
|
|
10
|
+
export const classNameMap = {
|
|
11
|
+
materialBox: `${prefix}-materialBox`,
|
|
12
|
+
groupBox: `${prefix}-groupBox`,
|
|
13
|
+
nestedBox: `${prefix}-nestedBox`,
|
|
14
|
+
nestedTargetBox: `${prefix}-nestedTargetBox`,
|
|
15
|
+
hoverBox: `${prefix}-hoverBox`,
|
|
16
|
+
hoverTargetBox: `${prefix}-hoverTargetBox`,
|
|
17
|
+
lockedBox: `${prefix}-lockedBox`,
|
|
18
|
+
lockedTargetBox: `${prefix}-lockedTargetBox`,
|
|
19
|
+
selectedBox: `${prefix}-selectedBox`,
|
|
20
|
+
selectedTargetBox: `${prefix}-selectedTargetBox`,
|
|
21
|
+
hideHandler: `${prefix}-hideHandler`,
|
|
22
|
+
edgeHandler: `${prefix}-edgeHandler`,
|
|
23
|
+
edgeTopHandler: `${prefix}-edgeTopHandler`,
|
|
24
|
+
edgeRightHandler: `${prefix}-edgeRightandler`,
|
|
25
|
+
edgeBottomHandler: `${prefix}-edgeBottomHandler`,
|
|
26
|
+
edgeLeftHandler: `${prefix}-edgeLeftHandler`,
|
|
27
|
+
cornerHandler: `${prefix}-cornerHandler`,
|
|
28
|
+
cornerTopLeftHandler: `${prefix}-cornerTopLeftHandler`,
|
|
29
|
+
cornerTopRightHandler: `${prefix}-cornerTopRightHandler`,
|
|
30
|
+
cornerBottomLeftHandler: `${prefix}-cornerBottomLeftHandler`,
|
|
31
|
+
cornerBottomRightHandler: `${prefix}-cornerBottomRightHandler`,
|
|
32
|
+
rotateHandler: `${prefix}-rotateHandler`,
|
|
33
|
+
selectionAreaBox: `${prefix}-selectionAreaBox`,
|
|
34
|
+
};
|
|
35
|
+
export const keyPrevPoint = Symbol(`${key}_prevPoint`);
|
|
36
|
+
export const keyPointStartMaterialSizeList = Symbol(`${key}_pointStartMaterialSizeList`);
|
|
37
|
+
export const keyMoveOriginalStartPoint = Symbol(`${key}_moveOriginalStartPoint`);
|
|
38
|
+
export const keyMoveOriginalStartMaterialSize = Symbol(`${key}_moveOriginalStartMaterialSize`);
|
|
39
|
+
export const keyInBusyMode = Symbol(`${key}_inBusyMode`);
|
|
40
|
+
export const keyHasChangedData = Symbol(`${key}_hasChangedData`);
|
|
41
|
+
export const keyStartResizeGroupRecord = Symbol(`${key}_startResizeGroupRecord`);
|
|
42
|
+
export const keyEndResizeGroupRecord = Symbol(`${key}_endResizeGroupRecord`);
|
|
43
|
+
export const keyActionType = Symbol(`${key}_actionType`);
|
|
44
|
+
export const keyResizeType = Symbol(`${key}_resizeType`);
|
|
45
|
+
export const keyAreaStart = Symbol(`${key}_areaStart`);
|
|
46
|
+
export const keyAreaEnd = Symbol(`${key}_areaEnd`);
|
|
47
|
+
export const keyHoverMaterial = Symbol(`${key}_hoverMaterial`);
|
|
48
|
+
export const keySelectedMaterialList = Symbol(`${key}_selectedMaterialList`);
|
|
49
|
+
export const keySelectedMaterialListVertexes = Symbol(`${key}_selectedMaterialListVertexes`);
|
|
50
|
+
export const keySelectedMaterialPosition = Symbol(`${key}_selectedMaterialPosition`);
|
|
51
|
+
export const keyGroupQueue = Symbol(`${key}_groupQueue`);
|
|
52
|
+
export const keyIsMoving = Symbol(`${key}_isMoving`);
|
|
53
|
+
export const keyEnableSelectInGroup = Symbol(`${key}_enableSelectInGroup`);
|
|
54
|
+
export const keyEnableSnapToGrid = Symbol(`${key}_enableSnapToGrid`);
|
|
55
|
+
export const selectedBoxBorderWidth = 1.5;
|
|
56
|
+
export const selectedNestedBoxBorderWidth = 2;
|
|
57
|
+
export const hoverBoxBorderWidth = 1;
|
|
58
|
+
export const lockedBoxBorderWidth = 2;
|
|
59
|
+
export const cornerHandlerSize = 10;
|
|
60
|
+
export const cornerHandlerBorderWidth = 1.5;
|
|
61
|
+
export const edgeHandlerSize = 10;
|
|
62
|
+
export const selectionAreaBorderWidth = 1;
|
|
63
|
+
export const rotateHandlerSize = 20;
|
|
64
|
+
export const defaultStyle = {
|
|
65
|
+
zIndex: 1,
|
|
66
|
+
activeColor: '#1973ba',
|
|
67
|
+
handlerBorderColor: '#1973ba',
|
|
68
|
+
handlerBackground: '#ffffff',
|
|
69
|
+
handlerHoverBackground: '#aad4f6',
|
|
70
|
+
handlerActiveBackground: '#63b8f8',
|
|
71
|
+
selectionAreaBorderColor: '#1973ba',
|
|
72
|
+
selectionAreaBackground: '#1973ba3f',
|
|
73
|
+
lockedColor: '#5b5959b5',
|
|
74
|
+
referenceColor: '#f7276e',
|
|
75
|
+
};
|
|
76
|
+
export const getSvgRotate = (currentColor) => `<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200" fill="${currentColor}" >
|
|
77
|
+
<path d="M512 0c282.8 0 512 229.2 512 512s-229.2 512 -512 512S0 794.8 0 512 229.2 0 512 0zm309.8 253.8c0 -10.5 -6.5 -19.8 -15.7 -23.8 -9.7 -4 -21 -2 -28.2 5.6l-52.5 52c-56.9 -53.7 -133.9 -85.5 -213.4 -85.5 -170.7 0 -309.8 139.2 -309.8 309.8 0 170.6 139.2 309.8 309.8 309.8 92.4 0 179.5 -40.8 238.4 -111.8 4 -5.2 4 -12.9 -0.8 -17.3L694.3 637c-2.8 -2.4 -6.5 -3.6 -10.1 -3.6 -3.6 0.4 -7.3 2 -9.3 4.8 -39.5 51.2 -98.8 80.3 -163 80.3 -113.8 0 -206.5 -92.8 -206.5 -206.5 0 -113.8 92.8 -206.5 206.5 -206.5 52.8 0 102.9 20.2 140.8 55.3L597 416.5c-7.7 7.3 -9.7 18.6 -5.6 27.9 4 9.7 13.3 16.1 23.8 16.1H796c14.1 0 25.8 -11.7 25.8 -25.8V253.8z" />
|
|
78
|
+
</svg>`;
|
|
79
|
+
export const clearStorage = (sharer) => {
|
|
80
|
+
sharer.setSharedStorage(keyStartResizeGroupRecord, null);
|
|
81
|
+
sharer.setSharedStorage(keyEndResizeGroupRecord, null);
|
|
82
|
+
sharer.setSharedStorage(keyActionType, null);
|
|
83
|
+
sharer.setSharedStorage(keyResizeType, null);
|
|
84
|
+
sharer.setSharedStorage(keyAreaStart, null);
|
|
85
|
+
sharer.setSharedStorage(keyAreaEnd, null);
|
|
86
|
+
sharer.setSharedStorage(keyGroupQueue, []);
|
|
87
|
+
sharer.setSharedStorage(keyHoverMaterial, null);
|
|
88
|
+
sharer.setSharedStorage(keySelectedMaterialList, []);
|
|
89
|
+
sharer.setSharedStorage(keySelectedMaterialListVertexes, null);
|
|
90
|
+
sharer.setSharedStorage(keySelectedMaterialPosition, []);
|
|
91
|
+
sharer.setSharedStorage(keyIsMoving, null);
|
|
92
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MiddlewareSelectorStyles, MiddlewareSelectorConfig } from '@idraw/types';
|
|
2
|
+
export declare function initStyles(rootClassName: string, styles: MiddlewareSelectorStyles): void;
|
|
3
|
+
export declare function destroyStyles(rootClassName: string): void;
|
|
4
|
+
export declare function getMiddlewareSelectorStyles<C = MiddlewareSelectorConfig, S = MiddlewareSelectorStyles>(config: C): S;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { injectStyles, removeStyles, getMiddlewareValidStyles } from '@idraw/util';
|
|
2
|
+
import { classNameMap, getSvgRotate, selectedBoxBorderWidth, selectedNestedBoxBorderWidth, hoverBoxBorderWidth, lockedBoxBorderWidth, edgeHandlerSize, cornerHandlerSize, cornerHandlerBorderWidth, selectionAreaBorderWidth, rotateHandlerSize, } from './static';
|
|
3
|
+
export function initStyles(rootClassName, styles) {
|
|
4
|
+
const cls = (str) => `.${str}`;
|
|
5
|
+
const stylesProps = {
|
|
6
|
+
display: 'flex',
|
|
7
|
+
position: 'absolute',
|
|
8
|
+
zIndex: styles.zIndex,
|
|
9
|
+
top: 0,
|
|
10
|
+
left: 0,
|
|
11
|
+
right: 0,
|
|
12
|
+
bottom: 0,
|
|
13
|
+
overflow: 'hidden',
|
|
14
|
+
[cls(classNameMap.hoverTargetBox)]: {
|
|
15
|
+
position: 'absolute',
|
|
16
|
+
outline: `${hoverBoxBorderWidth}px solid ${styles.activeColor}`,
|
|
17
|
+
},
|
|
18
|
+
[cls(classNameMap.nestedBox)]: {
|
|
19
|
+
position: 'absolute',
|
|
20
|
+
[`&${cls(classNameMap.groupBox)}`]: {
|
|
21
|
+
outline: `${selectedNestedBoxBorderWidth}px dashed ${styles.activeColor}`,
|
|
22
|
+
},
|
|
23
|
+
[cls(classNameMap.groupBox)]: {
|
|
24
|
+
outline: `${selectedNestedBoxBorderWidth}px dashed ${styles.activeColor}`,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
[cls(classNameMap.lockedTargetBox)]: {
|
|
28
|
+
position: 'absolute',
|
|
29
|
+
outline: `${lockedBoxBorderWidth}px solid ${styles.lockedColor}`,
|
|
30
|
+
},
|
|
31
|
+
[cls(classNameMap.selectedBox)]: {
|
|
32
|
+
position: 'absolute',
|
|
33
|
+
[`&${cls(classNameMap.hideHandler)}`]: {
|
|
34
|
+
[cls(classNameMap.cornerHandler)]: {
|
|
35
|
+
display: 'none',
|
|
36
|
+
},
|
|
37
|
+
[cls(classNameMap.edgeHandler)]: {
|
|
38
|
+
display: 'none',
|
|
39
|
+
},
|
|
40
|
+
[cls(classNameMap.rotateHandler)]: {
|
|
41
|
+
display: 'none',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
[cls(classNameMap.selectedTargetBox)]: {
|
|
46
|
+
position: 'absolute',
|
|
47
|
+
outline: `${selectedBoxBorderWidth}px solid ${styles.handlerBorderColor}`,
|
|
48
|
+
[cls(classNameMap.cornerHandler)]: {
|
|
49
|
+
position: 'absolute',
|
|
50
|
+
outline: `${cornerHandlerBorderWidth}px solid ${styles.handlerBorderColor}`,
|
|
51
|
+
background: styles.handlerBackground,
|
|
52
|
+
width: `${cornerHandlerSize}px`,
|
|
53
|
+
height: `${cornerHandlerSize}px`,
|
|
54
|
+
['&:hover']: {
|
|
55
|
+
background: styles.handlerHoverBackground,
|
|
56
|
+
},
|
|
57
|
+
['&:active']: {
|
|
58
|
+
background: styles.handlerActiveBackground,
|
|
59
|
+
},
|
|
60
|
+
[`&${cls(classNameMap.cornerTopLeftHandler)}`]: {
|
|
61
|
+
top: `${-cornerHandlerSize / 2}px`,
|
|
62
|
+
left: `${-cornerHandlerSize / 2}px`,
|
|
63
|
+
},
|
|
64
|
+
[`&${cls(classNameMap.cornerTopRightHandler)}`]: {
|
|
65
|
+
top: `${-cornerHandlerSize / 2}px`,
|
|
66
|
+
right: `${-cornerHandlerSize / 2}px`,
|
|
67
|
+
},
|
|
68
|
+
[`&${cls(classNameMap.cornerBottomLeftHandler)}`]: {
|
|
69
|
+
bottom: `${-cornerHandlerSize / 2}px`,
|
|
70
|
+
left: `${-cornerHandlerSize / 2}px`,
|
|
71
|
+
},
|
|
72
|
+
[`&${cls(classNameMap.cornerBottomRightHandler)}`]: {
|
|
73
|
+
bottom: `${-cornerHandlerSize / 2}px`,
|
|
74
|
+
right: `${-cornerHandlerSize / 2}px`,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
[cls(classNameMap.rotateHandler)]: {
|
|
78
|
+
position: 'absolute',
|
|
79
|
+
top: -40,
|
|
80
|
+
left: `50%`,
|
|
81
|
+
transform: `translateX(-50%)`,
|
|
82
|
+
width: rotateHandlerSize,
|
|
83
|
+
height: rotateHandlerSize,
|
|
84
|
+
background: '#FFFFFF',
|
|
85
|
+
borderRadius: `${rotateHandlerSize / 2}px`,
|
|
86
|
+
['&::after']: {
|
|
87
|
+
display: 'inline-block',
|
|
88
|
+
content: '""',
|
|
89
|
+
position: 'absolute',
|
|
90
|
+
top: 0,
|
|
91
|
+
bottom: 0,
|
|
92
|
+
left: 0,
|
|
93
|
+
right: 0,
|
|
94
|
+
backgroundImage: `url(data:image/svg+xml,${encodeURIComponent(getSvgRotate(styles.activeColor))})`,
|
|
95
|
+
backgroundPosition: 'center',
|
|
96
|
+
backgroundSize: `${rotateHandlerSize}px`,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
[cls(classNameMap.edgeHandler)]: {
|
|
100
|
+
position: 'absolute',
|
|
101
|
+
background: 'transparent',
|
|
102
|
+
[`&${cls(classNameMap.edgeLeftHandler)}`]: {
|
|
103
|
+
width: `${edgeHandlerSize}px`,
|
|
104
|
+
top: `${edgeHandlerSize / 2}px`,
|
|
105
|
+
left: `${-edgeHandlerSize / 2}px`,
|
|
106
|
+
bottom: `${edgeHandlerSize / 2}px`,
|
|
107
|
+
},
|
|
108
|
+
[`&${cls(classNameMap.edgeRightHandler)}`]: {
|
|
109
|
+
width: `${edgeHandlerSize}px`,
|
|
110
|
+
top: `${edgeHandlerSize / 2}px`,
|
|
111
|
+
right: `${-edgeHandlerSize / 2}px`,
|
|
112
|
+
bottom: `${edgeHandlerSize / 2}px`,
|
|
113
|
+
},
|
|
114
|
+
[`&${cls(classNameMap.edgeTopHandler)}`]: {
|
|
115
|
+
height: `${edgeHandlerSize}px`,
|
|
116
|
+
top: `${-edgeHandlerSize / 2}px`,
|
|
117
|
+
left: `${edgeHandlerSize / 2}px`,
|
|
118
|
+
right: `${edgeHandlerSize / 2}px`,
|
|
119
|
+
},
|
|
120
|
+
[`&${cls(classNameMap.edgeBottomHandler)}`]: {
|
|
121
|
+
height: `${edgeHandlerSize}px`,
|
|
122
|
+
bottom: `${-edgeHandlerSize / 2}px`,
|
|
123
|
+
left: `${edgeHandlerSize / 2}px`,
|
|
124
|
+
right: `${edgeHandlerSize / 2}px`,
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
[cls(classNameMap.selectionAreaBox)]: {
|
|
129
|
+
position: 'absolute',
|
|
130
|
+
outline: `${selectionAreaBorderWidth}px solid ${styles.selectionAreaBorderColor}`,
|
|
131
|
+
background: styles.selectionAreaBackground,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
injectStyles({ styles: stylesProps, rootClassName, type: 'element' });
|
|
135
|
+
}
|
|
136
|
+
export function destroyStyles(rootClassName) {
|
|
137
|
+
removeStyles({ rootClassName, type: 'element' });
|
|
138
|
+
}
|
|
139
|
+
export function getMiddlewareSelectorStyles(config) {
|
|
140
|
+
const styles = getMiddlewareValidStyles(config, [
|
|
141
|
+
'zIndex',
|
|
142
|
+
'activeColor',
|
|
143
|
+
'handlerBorderColor',
|
|
144
|
+
'handlerBackground',
|
|
145
|
+
'handlerHoverBackground',
|
|
146
|
+
'handlerActiveBackground',
|
|
147
|
+
'selectionAreaBackground',
|
|
148
|
+
'selectionAreaBorderColor',
|
|
149
|
+
'lockedColor',
|
|
150
|
+
'referenceColor',
|
|
151
|
+
]);
|
|
152
|
+
return styles;
|
|
153
|
+
}
|