@idraw/core 0.4.0-beta.3 → 0.4.0-beta.30
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/config.d.ts +1 -0
- package/dist/esm/config.js +1 -0
- package/dist/esm/index.d.ts +15 -5
- package/dist/esm/index.js +29 -8
- package/dist/esm/lib/cursor-image.d.ts +1 -0
- package/dist/esm/lib/cursor-image.js +1 -0
- package/dist/esm/lib/cursor.d.ts +3 -12
- package/dist/esm/lib/cursor.js +136 -112
- package/dist/esm/middleware/dragger/index.d.ts +2 -2
- package/dist/esm/middleware/dragger/index.js +1 -0
- package/dist/esm/middleware/info/draw-info.d.ts +31 -0
- package/dist/esm/middleware/info/draw-info.js +110 -0
- package/dist/esm/middleware/info/index.d.ts +3 -0
- package/dist/esm/middleware/info/index.js +110 -0
- package/dist/esm/middleware/info/types.d.ts +3 -0
- package/dist/esm/middleware/info/types.js +1 -0
- package/dist/esm/middleware/layout-selector/config.d.ts +9 -0
- package/dist/esm/middleware/layout-selector/config.js +9 -0
- package/dist/esm/middleware/layout-selector/index.d.ts +5 -0
- package/dist/esm/middleware/layout-selector/index.js +332 -0
- package/dist/esm/middleware/layout-selector/types.d.ts +15 -0
- package/dist/esm/middleware/layout-selector/types.js +2 -0
- package/dist/esm/middleware/layout-selector/util.d.ts +8 -0
- package/dist/esm/middleware/layout-selector/util.js +108 -0
- package/dist/esm/middleware/ruler/index.d.ts +3 -2
- package/dist/esm/middleware/ruler/index.js +12 -9
- package/dist/esm/middleware/ruler/types.d.ts +3 -0
- package/dist/esm/middleware/ruler/types.js +1 -0
- package/dist/esm/middleware/ruler/util.d.ts +15 -4
- package/dist/esm/middleware/ruler/util.js +81 -4
- package/dist/esm/middleware/scaler/index.d.ts +2 -2
- package/dist/esm/middleware/scaler/index.js +1 -0
- package/dist/esm/middleware/scroller/config.d.ts +2 -0
- package/dist/esm/middleware/scroller/config.js +2 -0
- package/dist/esm/middleware/scroller/index.d.ts +2 -1
- package/dist/esm/middleware/scroller/index.js +33 -5
- package/dist/esm/middleware/scroller/types.d.ts +11 -0
- package/dist/esm/middleware/scroller/types.js +1 -0
- package/dist/esm/middleware/scroller/util.d.ts +1 -1
- package/dist/esm/middleware/scroller/util.js +22 -17
- package/dist/esm/middleware/selector/config.d.ts +12 -0
- package/dist/esm/middleware/selector/config.js +12 -0
- package/dist/esm/middleware/selector/draw-auxiliary.d.ts +7 -0
- package/dist/esm/middleware/selector/draw-auxiliary.js +46 -0
- package/dist/esm/middleware/selector/draw-base.d.ts +30 -0
- package/dist/esm/middleware/selector/draw-base.js +100 -0
- 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 +9 -1
- package/dist/esm/middleware/selector/draw-wrapper.js +34 -26
- package/dist/esm/middleware/selector/index.d.ts +7 -4
- package/dist/esm/middleware/selector/index.js +280 -45
- package/dist/esm/middleware/selector/reference.d.ts +13 -0
- package/dist/esm/middleware/selector/reference.js +267 -0
- package/dist/esm/middleware/selector/types.d.ts +9 -4
- package/dist/esm/middleware/selector/types.js +2 -1
- package/dist/esm/middleware/selector/util.d.ts +11 -2
- package/dist/esm/middleware/selector/util.js +36 -14
- package/dist/esm/middleware/text-editor/index.d.ts +20 -2
- package/dist/esm/middleware/text-editor/index.js +92 -16
- package/dist/index.global.js +3685 -953
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -5
|
@@ -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,12 +1,20 @@
|
|
|
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;
|
|
5
5
|
viewSizeInfo: ViewSizeInfo;
|
|
6
6
|
}): void;
|
|
7
|
+
export declare function drawLockVertexesWrapper(ctx: ViewContext2D, vertexes: ViewRectVertexes | null, opts: {
|
|
8
|
+
viewScaleInfo: ViewScaleInfo;
|
|
9
|
+
viewSizeInfo: ViewSizeInfo;
|
|
10
|
+
controller?: ElementSizeController | null;
|
|
11
|
+
}): void;
|
|
7
12
|
export declare function drawSelectedElementControllersVertexes(ctx: ViewContext2D, controller: ElementSizeController | null, opts: {
|
|
13
|
+
hideControllers: boolean;
|
|
8
14
|
viewScaleInfo: ViewScaleInfo;
|
|
9
15
|
viewSizeInfo: ViewSizeInfo;
|
|
16
|
+
element: Element | null;
|
|
17
|
+
calculator: ViewCalculator;
|
|
10
18
|
}): void;
|
|
11
19
|
export declare function drawElementListShadows(ctx: ViewContext2D, elements: Element<ElementType>[], opts?: Omit<RendererDrawElementOptions, 'loader'>): void;
|
|
12
20
|
export declare function drawArea(ctx: ViewContext2D, opts: {
|
|
@@ -1,22 +1,6 @@
|
|
|
1
|
-
import { rotateElementVertexes, calcViewVertexes } from '@idraw/util';
|
|
2
|
-
import { resizeControllerBorderWidth, areaBorderWidth, wrapperColor, selectWrapperBorderWidth } from './config';
|
|
3
|
-
|
|
4
|
-
const { borderColor, borderWidth, background, lineDash } = opts;
|
|
5
|
-
ctx.setLineDash([]);
|
|
6
|
-
ctx.lineWidth = borderWidth;
|
|
7
|
-
ctx.strokeStyle = borderColor;
|
|
8
|
-
ctx.fillStyle = background;
|
|
9
|
-
ctx.setLineDash(lineDash);
|
|
10
|
-
ctx.beginPath();
|
|
11
|
-
ctx.moveTo(vertexes[0].x, vertexes[0].y);
|
|
12
|
-
ctx.lineTo(vertexes[1].x, vertexes[1].y);
|
|
13
|
-
ctx.lineTo(vertexes[2].x, vertexes[2].y);
|
|
14
|
-
ctx.lineTo(vertexes[3].x, vertexes[3].y);
|
|
15
|
-
ctx.lineTo(vertexes[0].x, vertexes[0].y);
|
|
16
|
-
ctx.closePath();
|
|
17
|
-
ctx.stroke();
|
|
18
|
-
ctx.fill();
|
|
19
|
-
}
|
|
1
|
+
import { rotateElementVertexes, calcViewPointSize, calcViewVertexes, calcViewElementSize } from '@idraw/util';
|
|
2
|
+
import { resizeControllerBorderWidth, areaBorderWidth, wrapperColor, selectWrapperBorderWidth, lockColor, controllerSize } from './config';
|
|
3
|
+
import { drawVertexes, drawLine, drawCircleController, drawCrossVertexes } from './draw-base';
|
|
20
4
|
export function drawHoverVertexesWrapper(ctx, vertexes, opts) {
|
|
21
5
|
if (!vertexes) {
|
|
22
6
|
return;
|
|
@@ -24,26 +8,50 @@ export function drawHoverVertexesWrapper(ctx, vertexes, opts) {
|
|
|
24
8
|
const wrapperOpts = { borderColor: wrapperColor, borderWidth: 1, background: 'transparent', lineDash: [] };
|
|
25
9
|
drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
|
|
26
10
|
}
|
|
11
|
+
export function drawLockVertexesWrapper(ctx, vertexes, opts) {
|
|
12
|
+
if (!vertexes) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const wrapperOpts = { borderColor: lockColor, borderWidth: 1, background: 'transparent', lineDash: [] };
|
|
16
|
+
drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
|
|
17
|
+
const { controller } = opts;
|
|
18
|
+
if (controller) {
|
|
19
|
+
const { topLeft, topRight, bottomLeft, bottomRight, topMiddle, bottomMiddle, leftMiddle, rightMiddle } = controller;
|
|
20
|
+
const ctrlOpts = Object.assign(Object.assign({}, wrapperOpts), { borderWidth: 1, background: lockColor });
|
|
21
|
+
drawCrossVertexes(ctx, calcViewVertexes(topMiddle.vertexes, opts), ctrlOpts);
|
|
22
|
+
drawCrossVertexes(ctx, calcViewVertexes(bottomMiddle.vertexes, opts), ctrlOpts);
|
|
23
|
+
drawCrossVertexes(ctx, calcViewVertexes(leftMiddle.vertexes, opts), ctrlOpts);
|
|
24
|
+
drawCrossVertexes(ctx, calcViewVertexes(rightMiddle.vertexes, opts), ctrlOpts);
|
|
25
|
+
drawCrossVertexes(ctx, calcViewVertexes(topLeft.vertexes, opts), ctrlOpts);
|
|
26
|
+
drawCrossVertexes(ctx, calcViewVertexes(topRight.vertexes, opts), ctrlOpts);
|
|
27
|
+
drawCrossVertexes(ctx, calcViewVertexes(bottomLeft.vertexes, opts), ctrlOpts);
|
|
28
|
+
drawCrossVertexes(ctx, calcViewVertexes(bottomRight.vertexes, opts), ctrlOpts);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
27
31
|
export function drawSelectedElementControllersVertexes(ctx, controller, opts) {
|
|
28
32
|
if (!controller) {
|
|
29
33
|
return;
|
|
30
34
|
}
|
|
31
|
-
const {
|
|
35
|
+
const { hideControllers } = opts;
|
|
36
|
+
const { elementWrapper, topLeft, topRight, bottomLeft, bottomRight, top, rotate } = controller;
|
|
32
37
|
const wrapperOpts = { borderColor: wrapperColor, borderWidth: selectWrapperBorderWidth, background: 'transparent', lineDash: [] };
|
|
33
38
|
const ctrlOpts = Object.assign(Object.assign({}, wrapperOpts), { borderWidth: resizeControllerBorderWidth, background: '#FFFFFF' });
|
|
34
39
|
drawVertexes(ctx, calcViewVertexes(elementWrapper, opts), wrapperOpts);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
if (!hideControllers) {
|
|
41
|
+
drawLine(ctx, calcViewPointSize(top.center, opts), calcViewPointSize(rotate.center, opts), Object.assign(Object.assign({}, ctrlOpts), { borderWidth: 2 }));
|
|
42
|
+
drawVertexes(ctx, calcViewVertexes(topLeft.vertexes, opts), ctrlOpts);
|
|
43
|
+
drawVertexes(ctx, calcViewVertexes(topRight.vertexes, opts), ctrlOpts);
|
|
44
|
+
drawVertexes(ctx, calcViewVertexes(bottomLeft.vertexes, opts), ctrlOpts);
|
|
45
|
+
drawVertexes(ctx, calcViewVertexes(bottomRight.vertexes, opts), ctrlOpts);
|
|
46
|
+
drawCircleController(ctx, calcViewPointSize(rotate.center, opts), Object.assign(Object.assign({}, ctrlOpts), { size: controllerSize, borderWidth: 2 }));
|
|
47
|
+
}
|
|
39
48
|
}
|
|
40
49
|
export function drawElementListShadows(ctx, elements, opts) {
|
|
41
50
|
elements.forEach((elem) => {
|
|
42
51
|
let { x, y, w, h } = elem;
|
|
43
52
|
const { angle = 0 } = elem;
|
|
44
53
|
if (opts === null || opts === void 0 ? void 0 : opts.calculator) {
|
|
45
|
-
const {
|
|
46
|
-
const size = calculator.elementSize({ x, y, w, h }, opts.viewScaleInfo, opts.viewSizeInfo);
|
|
54
|
+
const size = calcViewElementSize({ x, y, w, h }, opts);
|
|
47
55
|
x = size.x;
|
|
48
56
|
y = size.y;
|
|
49
57
|
w = size.w;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { BoardMiddleware, DeepSelectorSharedStorage } from './types';
|
|
3
|
-
|
|
4
|
-
export
|
|
1
|
+
import type { CoreEventMap } from '@idraw/types';
|
|
2
|
+
import type { BoardMiddleware, ActionType, DeepSelectorSharedStorage } from './types';
|
|
3
|
+
import { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid, keyActionType, keyResizeType, keyGroupQueue, keyHoverElement, keySelectedElementList } from './config';
|
|
4
|
+
export { keySelectedElementList, keyHoverElement, keyActionType, keyResizeType, keyGroupQueue };
|
|
5
|
+
export type { DeepSelectorSharedStorage, ActionType };
|
|
6
|
+
export { middlewareEventSelect, middlewareEventSelectClear, middlewareEventSelectInGroup, middlewareEventSnapToGrid };
|
|
7
|
+
export declare const MiddlewareSelector: BoardMiddleware<DeepSelectorSharedStorage, CoreEventMap>;
|