@idraw/core 0.4.0-alpha.5 → 0.4.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.d.ts +15 -5
- package/dist/esm/index.js +18 -3
- package/dist/esm/middleware/ruler/util.js +2 -2
- package/dist/esm/middleware/scroller/index.js +6 -11
- package/dist/esm/middleware/selector/index.js +9 -3
- package/dist/esm/middleware/text-editor/index.js +16 -5
- package/dist/index.global.js +355 -192
- package/dist/index.global.min.js +1 -1
- package/package.json +5 -5
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { Data, PointSize, CoreOptions, BoardMiddleware, ViewSizeInfo, CoreEvent } from '@idraw/types';
|
|
1
|
+
import type { Data, PointSize, CoreOptions, BoardMiddleware, ViewSizeInfo, CoreEvent, ViewScaleInfo } from '@idraw/types';
|
|
2
2
|
export { MiddlewareSelector, middlewareEventSelect } from './middleware/selector';
|
|
3
3
|
export { MiddlewareScroller } from './middleware/scroller';
|
|
4
4
|
export { MiddlewareScaler, middlewareEventScale } from './middleware/scaler';
|
|
5
5
|
export { MiddlewareRuler, middlewareEventRuler } from './middleware/ruler';
|
|
6
6
|
export { MiddlewareTextEditor, middlewareEventTextEdit } from './middleware/text-editor';
|
|
7
|
-
export declare class Core {
|
|
7
|
+
export declare class Core<E extends CoreEvent = CoreEvent> {
|
|
8
8
|
#private;
|
|
9
9
|
constructor(container: HTMLDivElement, opts: CoreOptions);
|
|
10
10
|
use(middleware: BoardMiddleware<any, any>): void;
|
|
@@ -16,7 +16,17 @@ export declare class Core {
|
|
|
16
16
|
}): void;
|
|
17
17
|
resize(newViewSize: Partial<ViewSizeInfo>): void;
|
|
18
18
|
clear(): void;
|
|
19
|
-
on<T extends keyof
|
|
20
|
-
off<T extends keyof
|
|
21
|
-
trigger<T extends keyof
|
|
19
|
+
on<T extends keyof E>(name: T, callback: (e: E[T]) => void): void;
|
|
20
|
+
off<T extends keyof E>(name: T, callback: (e: E[T]) => void): void;
|
|
21
|
+
trigger<T extends keyof E>(name: T, e: E[T]): void;
|
|
22
|
+
getViewInfo(): {
|
|
23
|
+
viewSizeInfo: ViewSizeInfo;
|
|
24
|
+
viewScaleInfo: ViewScaleInfo;
|
|
25
|
+
};
|
|
26
|
+
refresh(): void;
|
|
27
|
+
setViewScale(opts: {
|
|
28
|
+
scale: number;
|
|
29
|
+
offsetX: number;
|
|
30
|
+
offsetY: number;
|
|
31
|
+
}): void;
|
|
22
32
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -11,7 +11,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
11
11
|
};
|
|
12
12
|
var _Core_instances, _Core_board, _Core_container, _Core_initContainer;
|
|
13
13
|
import { Board } from '@idraw/board';
|
|
14
|
-
import {
|
|
14
|
+
import { createViewContent, validateElements } from '@idraw/util';
|
|
15
15
|
import { Cursor } from './lib/cursor';
|
|
16
16
|
export { MiddlewareSelector, middlewareEventSelect } from './middleware/selector';
|
|
17
17
|
export { MiddlewareScroller } from './middleware/scroller';
|
|
@@ -28,8 +28,7 @@ export class Core {
|
|
|
28
28
|
const canvas = document.createElement('canvas');
|
|
29
29
|
__classPrivateFieldGet(this, _Core_instances, "m", _Core_initContainer).call(this);
|
|
30
30
|
container.appendChild(canvas);
|
|
31
|
-
const
|
|
32
|
-
const viewContent = createBoardContexts(ctx, { devicePixelRatio });
|
|
31
|
+
const viewContent = createViewContent(canvas, { width, height, devicePixelRatio, offscreen: true });
|
|
33
32
|
const board = new Board({ viewContent, container });
|
|
34
33
|
const sharer = board.getSharer();
|
|
35
34
|
sharer.setActiveViewSizeInfo({
|
|
@@ -82,6 +81,22 @@ export class Core {
|
|
|
82
81
|
const eventHub = __classPrivateFieldGet(this, _Core_board, "f").getEventHub();
|
|
83
82
|
eventHub.trigger(name, e);
|
|
84
83
|
}
|
|
84
|
+
getViewInfo() {
|
|
85
|
+
const board = __classPrivateFieldGet(this, _Core_board, "f");
|
|
86
|
+
const sharer = board.getSharer();
|
|
87
|
+
const viewSizeInfo = sharer.getActiveViewSizeInfo();
|
|
88
|
+
const viewScaleInfo = sharer.getActiveViewScaleInfo();
|
|
89
|
+
return {
|
|
90
|
+
viewSizeInfo,
|
|
91
|
+
viewScaleInfo
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
refresh() {
|
|
95
|
+
__classPrivateFieldGet(this, _Core_board, "f").getViewer().drawFrame();
|
|
96
|
+
}
|
|
97
|
+
setViewScale(opts) {
|
|
98
|
+
__classPrivateFieldGet(this, _Core_board, "f").updateViewScaleInfo(opts);
|
|
99
|
+
}
|
|
85
100
|
}
|
|
86
101
|
_Core_board = new WeakMap(), _Core_container = new WeakMap(), _Core_instances = new WeakSet(), _Core_initContainer = function _Core_initContainer() {
|
|
87
102
|
const container = __classPrivateFieldGet(this, _Core_container, "f");
|
|
@@ -7,8 +7,8 @@ const textColor = '#00000080';
|
|
|
7
7
|
const fontFamily = 'monospace';
|
|
8
8
|
const fontSize = 10;
|
|
9
9
|
const fontWeight = 100;
|
|
10
|
-
const gridColor = '#
|
|
11
|
-
const gridKeyColor = '#
|
|
10
|
+
const gridColor = '#AAAAAA20';
|
|
11
|
+
const gridKeyColor = '#AAAAAA40';
|
|
12
12
|
const lineSize = 1;
|
|
13
13
|
function calcRulerScaleList(opts) {
|
|
14
14
|
const { scale, viewLength, viewOffset } = opts;
|
|
@@ -43,17 +43,12 @@ export const MiddlewareScroller = (opts) => {
|
|
|
43
43
|
};
|
|
44
44
|
return {
|
|
45
45
|
mode: key,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
wheelY: (e) => {
|
|
53
|
-
if (e.deltaY >= 0 || e.deltaY < 0) {
|
|
54
|
-
viewer.scroll({ moveY: 0 - e.deltaY });
|
|
55
|
-
viewer.drawFrame();
|
|
56
|
-
}
|
|
46
|
+
wheel: (e) => {
|
|
47
|
+
viewer.scroll({
|
|
48
|
+
moveX: 0 - e.deltaX,
|
|
49
|
+
moveY: 0 - e.deltaY
|
|
50
|
+
});
|
|
51
|
+
viewer.drawFrame();
|
|
57
52
|
},
|
|
58
53
|
pointStart: (e) => {
|
|
59
54
|
const { point } = e;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, rotatePointInGroup, getGroupQueueFromList, findElementsFromList } from '@idraw/util';
|
|
1
|
+
import { calcElementsViewInfo, calcElementVertexesInGroup, calcElementQueueVertexesQueueInGroup, calcElementSizeController, rotatePointInGroup, getGroupQueueFromList, findElementsFromList, findElementsFromListByPositions } from '@idraw/util';
|
|
2
2
|
import { drawHoverVertexesWrapper, drawArea, drawListArea, drawGroupQueueVertexesWrappers, drawSelectedElementControllersVertexes } from './draw-wrapper';
|
|
3
3
|
import { getPointTarget, resizeElement, getSelectedListArea, calcSelectedElementsArea, isElementInGroup, isPointInViewActiveGroup, calcMoveInGroup } from './util';
|
|
4
4
|
import { key, keyActionType, keyResizeType, keyAreaStart, keyAreaEnd, keyGroupQueue, keyGroupQueueVertexesList, keyHoverElement, keyHoverElementVertexes, keySelectedElementList, keySelectedElementListVertexes, keySelectedElementController } from './config';
|
|
@@ -9,10 +9,16 @@ export const MiddlewareSelector = (opts) => {
|
|
|
9
9
|
const { helperContext } = viewContent;
|
|
10
10
|
let prevPoint = null;
|
|
11
11
|
let inBusyMode = null;
|
|
12
|
-
eventHub.on(middlewareEventSelect, ({ uuids }) => {
|
|
12
|
+
eventHub.on(middlewareEventSelect, ({ uuids, positions }) => {
|
|
13
|
+
let elements = [];
|
|
13
14
|
const actionType = sharer.getSharedStorage(keyActionType);
|
|
14
15
|
const data = sharer.getActiveStorage('data');
|
|
15
|
-
|
|
16
|
+
if (positions && Array.isArray(positions)) {
|
|
17
|
+
elements = findElementsFromListByPositions(positions, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
elements = findElementsFromList(uuids, (data === null || data === void 0 ? void 0 : data.elements) || []);
|
|
21
|
+
}
|
|
16
22
|
let needRefresh = false;
|
|
17
23
|
if (!actionType && elements.length === 1) {
|
|
18
24
|
sharer.setSharedStorage(keyActionType, 'select');
|
|
@@ -75,13 +75,24 @@ export const MiddlewareTextEditor = (opts) => {
|
|
|
75
75
|
parent = createBox({ size, parent });
|
|
76
76
|
}
|
|
77
77
|
const detail = Object.assign(Object.assign({}, defaultElementDetail), element.detail);
|
|
78
|
+
let elemX = element.x * scale + offsetLeft;
|
|
79
|
+
let elemY = element.y * scale + offsetTop;
|
|
80
|
+
let elemW = element.w * scale;
|
|
81
|
+
let elemH = element.h * scale;
|
|
82
|
+
if (groupQueue.length > 0) {
|
|
83
|
+
elemX = element.x * scale;
|
|
84
|
+
elemY = element.y * scale;
|
|
85
|
+
elemW = element.w * scale;
|
|
86
|
+
elemH = element.h * scale;
|
|
87
|
+
}
|
|
78
88
|
textarea.style.position = 'absolute';
|
|
79
|
-
textarea.style.left = `${
|
|
80
|
-
textarea.style.top = `${
|
|
81
|
-
textarea.style.width = `${
|
|
82
|
-
textarea.style.height = `${
|
|
89
|
+
textarea.style.left = `${elemX}px`;
|
|
90
|
+
textarea.style.top = `${elemY}px`;
|
|
91
|
+
textarea.style.width = `${elemW}px`;
|
|
92
|
+
textarea.style.height = `${elemH}px`;
|
|
83
93
|
textarea.style.transform = `rotate(${limitAngle(element.angle || 0)}deg)`;
|
|
84
|
-
textarea.style.
|
|
94
|
+
textarea.style.boxSizing = 'border-box';
|
|
95
|
+
textarea.style.border = '1px solid #1973ba';
|
|
85
96
|
textarea.style.resize = 'none';
|
|
86
97
|
textarea.style.overflow = 'hidden';
|
|
87
98
|
textarea.style.wordBreak = 'break-all';
|