@idraw/core 0.4.0-beta.9 → 0.4.0

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.
Files changed (101) hide show
  1. package/dist/esm/board/index.d.ts +44 -0
  2. package/dist/esm/board/index.js +366 -0
  3. package/dist/esm/board/sharer.d.ts +21 -0
  4. package/dist/esm/board/sharer.js +101 -0
  5. package/dist/esm/board/viewer.d.ts +32 -0
  6. package/dist/esm/board/viewer.js +165 -0
  7. package/dist/esm/board/watcher.d.ts +15 -0
  8. package/dist/esm/board/watcher.js +218 -0
  9. package/dist/esm/config.d.ts +28 -0
  10. package/dist/esm/config.js +34 -0
  11. package/dist/esm/{lib → cursor}/cursor-image.d.ts +1 -0
  12. package/dist/esm/{lib → cursor}/cursor-image.js +1 -0
  13. package/dist/esm/cursor/cursor.d.ts +7 -0
  14. package/dist/esm/cursor/cursor.js +154 -0
  15. package/dist/esm/index.d.ts +39 -10
  16. package/dist/esm/index.js +296 -17
  17. package/dist/esm/middlewares/dragger/index.d.ts +7 -0
  18. package/dist/esm/{middleware → middlewares}/dragger/index.js +4 -3
  19. package/dist/esm/middlewares/info/config.d.ts +5 -0
  20. package/dist/esm/middlewares/info/config.js +9 -0
  21. package/dist/esm/middlewares/info/draw-info.d.ts +29 -0
  22. package/dist/esm/middlewares/info/draw-info.js +113 -0
  23. package/dist/esm/middlewares/info/index.d.ts +9 -0
  24. package/dist/esm/middlewares/info/index.js +131 -0
  25. package/dist/esm/middlewares/info/types.d.ts +3 -0
  26. package/dist/esm/middlewares/info/types.js +1 -0
  27. package/dist/esm/middlewares/layout-selector/config.d.ts +11 -0
  28. package/dist/esm/middlewares/layout-selector/config.js +12 -0
  29. package/dist/esm/middlewares/layout-selector/index.d.ts +5 -0
  30. package/dist/esm/middlewares/layout-selector/index.js +371 -0
  31. package/dist/esm/middlewares/layout-selector/types.d.ts +17 -0
  32. package/dist/esm/middlewares/layout-selector/types.js +2 -0
  33. package/dist/esm/middlewares/layout-selector/util.d.ts +9 -0
  34. package/dist/esm/middlewares/layout-selector/util.js +78 -0
  35. package/dist/esm/middlewares/pointer/index.d.ts +3 -0
  36. package/dist/esm/middlewares/pointer/index.js +42 -0
  37. package/dist/esm/middlewares/pointer/types.d.ts +3 -0
  38. package/dist/esm/middlewares/pointer/types.js +1 -0
  39. package/dist/esm/middlewares/ruler/config.d.ts +7 -0
  40. package/dist/esm/middlewares/ruler/config.js +21 -0
  41. package/dist/esm/middlewares/ruler/index.d.ts +3 -0
  42. package/dist/esm/middlewares/ruler/index.js +66 -0
  43. package/dist/esm/middlewares/ruler/types.d.ts +3 -0
  44. package/dist/esm/middlewares/ruler/types.js +1 -0
  45. package/dist/esm/{middleware → middlewares}/ruler/util.d.ts +20 -4
  46. package/dist/esm/{middleware → middlewares}/ruler/util.js +99 -26
  47. package/dist/esm/middlewares/scaler/index.d.ts +2 -0
  48. package/dist/esm/{middleware → middlewares}/scaler/index.js +2 -2
  49. package/dist/esm/{middleware → middlewares}/scroller/config.d.ts +4 -0
  50. package/dist/esm/middlewares/scroller/config.js +16 -0
  51. package/dist/esm/middlewares/scroller/index.d.ts +3 -0
  52. package/dist/esm/{middleware → middlewares}/scroller/index.js +47 -6
  53. package/dist/esm/middlewares/scroller/types.d.ts +11 -0
  54. package/dist/esm/middlewares/scroller/types.js +1 -0
  55. package/dist/esm/{middleware → middlewares}/scroller/util.d.ts +3 -2
  56. package/dist/esm/{middleware → middlewares}/scroller/util.js +33 -44
  57. package/dist/esm/{middleware → middlewares}/selector/config.d.ts +9 -1
  58. package/dist/esm/{middleware → middlewares}/selector/config.js +17 -1
  59. package/dist/esm/middlewares/selector/draw-auxiliary.d.ts +1 -0
  60. package/dist/esm/middlewares/selector/draw-auxiliary.js +12 -0
  61. package/dist/esm/middlewares/selector/draw-base.d.ts +30 -0
  62. package/dist/esm/middlewares/selector/draw-base.js +100 -0
  63. package/dist/esm/middlewares/selector/draw-debug.d.ts +5 -0
  64. package/dist/esm/middlewares/selector/draw-debug.js +30 -0
  65. package/dist/esm/middlewares/selector/draw-reference.d.ts +7 -0
  66. package/dist/esm/middlewares/selector/draw-reference.js +31 -0
  67. package/dist/esm/{middleware → middlewares}/selector/draw-wrapper.d.ts +16 -1
  68. package/dist/esm/middlewares/selector/draw-wrapper.js +139 -0
  69. package/dist/esm/middlewares/selector/index.d.ts +11 -0
  70. package/dist/esm/middlewares/selector/index.js +879 -0
  71. package/dist/esm/middlewares/selector/pattern/icon-rotate.d.ts +4 -0
  72. package/dist/esm/middlewares/selector/pattern/icon-rotate.js +88 -0
  73. package/dist/esm/middlewares/selector/pattern/index.d.ts +8 -0
  74. package/dist/esm/middlewares/selector/pattern/index.js +38 -0
  75. package/dist/esm/middlewares/selector/reference.d.ts +13 -0
  76. package/dist/esm/middlewares/selector/reference.js +267 -0
  77. package/dist/esm/{middleware → middlewares}/selector/types.d.ts +11 -5
  78. package/dist/esm/middlewares/selector/types.js +2 -0
  79. package/dist/esm/{middleware → middlewares}/selector/util.d.ts +14 -7
  80. package/dist/esm/{middleware → middlewares}/selector/util.js +46 -43
  81. package/dist/esm/middlewares/text-editor/index.d.ts +20 -0
  82. package/dist/esm/middlewares/text-editor/index.js +286 -0
  83. package/dist/esm/record.d.ts +5 -0
  84. package/dist/esm/record.js +38 -0
  85. package/dist/index.global.js +5740 -1632
  86. package/dist/index.global.min.js +1 -1
  87. package/package.json +5 -6
  88. package/dist/esm/lib/cursor.d.ts +0 -16
  89. package/dist/esm/lib/cursor.js +0 -129
  90. package/dist/esm/middleware/dragger/index.d.ts +0 -7
  91. package/dist/esm/middleware/ruler/index.d.ts +0 -3
  92. package/dist/esm/middleware/ruler/index.js +0 -48
  93. package/dist/esm/middleware/scaler/index.d.ts +0 -3
  94. package/dist/esm/middleware/scroller/config.js +0 -6
  95. package/dist/esm/middleware/scroller/index.d.ts +0 -2
  96. package/dist/esm/middleware/selector/draw-wrapper.js +0 -107
  97. package/dist/esm/middleware/selector/index.d.ts +0 -5
  98. package/dist/esm/middleware/selector/index.js +0 -510
  99. package/dist/esm/middleware/selector/types.js +0 -1
  100. package/dist/esm/middleware/text-editor/index.d.ts +0 -3
  101. package/dist/esm/middleware/text-editor/index.js +0 -147
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idraw/core",
3
- "version": "0.4.0-beta.9",
3
+ "version": "0.4.0",
4
4
  "description": "",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -18,16 +18,15 @@
18
18
  "url": "https://github.com/idrawjs/idraw/issues"
19
19
  },
20
20
  "homepage": "https://github.com/idrawjs/idraw#readme",
21
- "author": "chenshenhai",
21
+ "author": "idrawjs",
22
22
  "license": "MIT",
23
23
  "devDependencies": {
24
- "@idraw/types": "^0.4.0-beta.9"
24
+ "@idraw/types": "^0.4.0"
25
25
  },
26
26
  "dependencies": {},
27
27
  "peerDependencies": {
28
- "@idraw/board": "^0.4.0-beta.9",
29
- "@idraw/renderer": "^0.4.0-beta.9",
30
- "@idraw/util": "^0.4.0-beta.9"
28
+ "@idraw/renderer": "^0.4.0",
29
+ "@idraw/util": "^0.4.0"
31
30
  },
32
31
  "publishConfig": {
33
32
  "access": "public",
@@ -1,16 +0,0 @@
1
- import type { UtilEventEmitter, CoreEvent } from '@idraw/types';
2
- export declare class Cursor {
3
- private _eventHub;
4
- private _container;
5
- private _cursorType;
6
- private _resizeCursorBaseImage;
7
- private _cursorImageMap;
8
- constructor(container: HTMLDivElement, opts: {
9
- eventHub: UtilEventEmitter<CoreEvent>;
10
- });
11
- private _init;
12
- private _loadResizeCursorBaseImage;
13
- private _resetCursor;
14
- private _setCursorResize;
15
- private _appendRotateResizeImage;
16
- }
@@ -1,129 +0,0 @@
1
- import { limitAngle, loadImage, parseAngleToRadian } from '@idraw/util';
2
- import { CURSOR, CURSOR_RESIZE, CURSOR_DRAG_DEFAULT, CURSOR_DRAG_ACTIVE } from './cursor-image';
3
- export class Cursor {
4
- constructor(container, opts) {
5
- this._cursorType = null;
6
- this._resizeCursorBaseImage = null;
7
- this._cursorImageMap = {
8
- auto: CURSOR,
9
- 'drag-default': CURSOR_DRAG_DEFAULT,
10
- 'drag-active': CURSOR_DRAG_ACTIVE,
11
- 'rotate-0': CURSOR_RESIZE
12
- };
13
- this._container = container;
14
- this._eventHub = opts.eventHub;
15
- this._init();
16
- this._loadResizeCursorBaseImage();
17
- }
18
- _init() {
19
- const { _eventHub: eventHub } = this;
20
- this._resetCursor('auto');
21
- eventHub.on('cursor', (e) => {
22
- var _a;
23
- if (e.type === 'over-element' || !e.type) {
24
- this._resetCursor('auto');
25
- }
26
- else if (typeof e.type === 'string' && ((_a = e.type) === null || _a === void 0 ? void 0 : _a.startsWith('resize-'))) {
27
- this._setCursorResize(e);
28
- }
29
- else if (e.type === 'drag-default') {
30
- this._resetCursor('drag-default');
31
- }
32
- else if (e.type === 'drag-active') {
33
- this._resetCursor('drag-active');
34
- }
35
- else {
36
- this._resetCursor('auto');
37
- }
38
- });
39
- }
40
- _loadResizeCursorBaseImage() {
41
- loadImage(CURSOR_RESIZE)
42
- .then((img) => {
43
- this._resizeCursorBaseImage = img;
44
- })
45
- .catch((err) => {
46
- console.error(err);
47
- });
48
- }
49
- _resetCursor(cursorKey) {
50
- if (this._cursorType === cursorKey) {
51
- return;
52
- }
53
- this._cursorType = cursorKey;
54
- const image = this._cursorImageMap[this._cursorType] || this._cursorImageMap['auto'];
55
- let offsetX = 0;
56
- let offsetY = 0;
57
- if (cursorKey.startsWith('rotate-') && this._cursorImageMap[this._cursorType]) {
58
- offsetX = 10;
59
- offsetY = 10;
60
- }
61
- this._container.style.cursor = `image-set(url(${image})2x) ${offsetX} ${offsetY}, auto`;
62
- }
63
- _setCursorResize(e) {
64
- var _a;
65
- let totalAngle = 0;
66
- if (e.type === 'resize-top') {
67
- totalAngle += 0;
68
- }
69
- else if (e.type === 'resize-top-right') {
70
- totalAngle += 45;
71
- }
72
- else if (e.type === 'resize-right') {
73
- totalAngle += 90;
74
- }
75
- else if (e.type === 'resize-bottom-right') {
76
- totalAngle += 135;
77
- }
78
- else if (e.type === 'resize-bottom') {
79
- totalAngle += 180;
80
- }
81
- else if (e.type === 'resize-bottom-left') {
82
- totalAngle += 225;
83
- }
84
- else if (e.type === 'resize-left') {
85
- totalAngle += 270;
86
- }
87
- else if (e.type === 'resize-top-left') {
88
- totalAngle += 315;
89
- }
90
- totalAngle += limitAngle(((_a = e === null || e === void 0 ? void 0 : e.element) === null || _a === void 0 ? void 0 : _a.angle) || 0);
91
- if (Array.isArray(e.groupQueue) && e.groupQueue.length > 0) {
92
- e.groupQueue.forEach((group) => {
93
- totalAngle += limitAngle(group.angle || 0);
94
- });
95
- }
96
- totalAngle = limitAngle(totalAngle);
97
- const cursorKey = this._appendRotateResizeImage(totalAngle);
98
- this._resetCursor(cursorKey);
99
- }
100
- _appendRotateResizeImage(angle) {
101
- const key = `rotate-${angle}`;
102
- if (!this._cursorImageMap[key]) {
103
- const baseImage = this._resizeCursorBaseImage;
104
- if (baseImage) {
105
- const canvas = document.createElement('canvas');
106
- const w = baseImage.width;
107
- const h = baseImage.height;
108
- const center = {
109
- x: w / 2,
110
- y: h / 2
111
- };
112
- canvas.width = w;
113
- canvas.height = h;
114
- const ctx = canvas.getContext('2d');
115
- const radian = parseAngleToRadian(angle);
116
- ctx.translate(center.x, center.y);
117
- ctx.rotate(radian);
118
- ctx.translate(-center.x, -center.y);
119
- ctx.drawImage(baseImage, 0, 0, w, h);
120
- ctx.translate(center.x, center.y);
121
- ctx.rotate(-radian);
122
- ctx.translate(-center.x, -center.y);
123
- const base = canvas.toDataURL('image/png');
124
- this._cursorImageMap[key] = base;
125
- }
126
- }
127
- return key;
128
- }
129
- }
@@ -1,7 +0,0 @@
1
- import type { BoardMiddleware, CoreEvent, Point } from '@idraw/types';
2
- declare const keyPrevPoint: unique symbol;
3
- type DraggerSharedStorage = {
4
- [keyPrevPoint]: Point | null;
5
- };
6
- export declare const MiddlewareDragger: BoardMiddleware<DraggerSharedStorage, CoreEvent>;
7
- export {};
@@ -1,3 +0,0 @@
1
- import type { BoardMiddleware, CoreEvent } from '@idraw/types';
2
- export declare const middlewareEventRuler = "@middleware/show-ruler";
3
- export declare const MiddlewareRuler: BoardMiddleware<Record<string, any>, CoreEvent>;
@@ -1,48 +0,0 @@
1
- import { getViewScaleInfoFromSnapshot, getViewSizeInfoFromSnapshot } from '@idraw/util';
2
- import { drawRulerBackground, drawXRuler, drawYRuler, calcXRulerScaleList, calcYRulerScaleList, drawUnderGrid } from './util';
3
- export const middlewareEventRuler = '@middleware/show-ruler';
4
- export const MiddlewareRuler = (opts) => {
5
- const { boardContent, viewer, eventHub } = opts;
6
- const { helperContext, underContext } = boardContent;
7
- let show = true;
8
- let showGrid = true;
9
- const rulerCallback = (e) => {
10
- if (typeof (e === null || e === void 0 ? void 0 : e.show) === 'boolean') {
11
- show = e.show;
12
- }
13
- if (typeof (e === null || e === void 0 ? void 0 : e.showGrid) === 'boolean') {
14
- showGrid = e.showGrid;
15
- }
16
- if (typeof (e === null || e === void 0 ? void 0 : e.show) === 'boolean' || typeof (e === null || e === void 0 ? void 0 : e.showGrid) === 'boolean') {
17
- viewer.drawFrame();
18
- }
19
- };
20
- return {
21
- name: '@middleware/ruler',
22
- use() {
23
- eventHub.on(middlewareEventRuler, rulerCallback);
24
- },
25
- disuse() {
26
- eventHub.off(middlewareEventRuler, rulerCallback);
27
- },
28
- beforeDrawFrame: ({ snapshot }) => {
29
- if (show === true) {
30
- const viewScaleInfo = getViewScaleInfoFromSnapshot(snapshot);
31
- const viewSizeInfo = getViewSizeInfoFromSnapshot(snapshot);
32
- drawRulerBackground(helperContext, { viewScaleInfo, viewSizeInfo });
33
- const xList = calcXRulerScaleList({ viewScaleInfo, viewSizeInfo });
34
- drawXRuler(helperContext, { scaleList: xList });
35
- const yList = calcYRulerScaleList({ viewScaleInfo, viewSizeInfo });
36
- drawYRuler(helperContext, { scaleList: yList });
37
- if (showGrid === true) {
38
- drawUnderGrid(underContext, {
39
- xList,
40
- yList,
41
- viewScaleInfo,
42
- viewSizeInfo
43
- });
44
- }
45
- }
46
- }
47
- };
48
- };
@@ -1,3 +0,0 @@
1
- import type { BoardMiddleware, CoreEvent } from '@idraw/types';
2
- export declare const middlewareEventScale = "@middleware/scale";
3
- export declare const MiddlewareScaler: BoardMiddleware<Record<string, any>, CoreEvent>;
@@ -1,6 +0,0 @@
1
- export const key = 'SCROLL';
2
- export const keyXThumbRect = Symbol(`${key}_xThumbRect`);
3
- export const keyYThumbRect = Symbol(`${key}_yThumbRect`);
4
- export const keyPrevPoint = Symbol(`${key}_prevPoint`);
5
- export const keyActivePoint = Symbol(`${key}_activePoint`);
6
- export const keyActiveThumbType = Symbol(`${key}_activeThumbType`);
@@ -1,2 +0,0 @@
1
- import type { BoardMiddleware } from '@idraw/types';
2
- export declare const MiddlewareScroller: BoardMiddleware;
@@ -1,107 +0,0 @@
1
- import { rotateElementVertexes, calcViewVertexes } from '@idraw/util';
2
- import { resizeControllerBorderWidth, areaBorderWidth, wrapperColor, selectWrapperBorderWidth } from './config';
3
- function drawVertexes(ctx, vertexes, opts) {
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
- }
20
- export function drawHoverVertexesWrapper(ctx, vertexes, opts) {
21
- if (!vertexes) {
22
- return;
23
- }
24
- const wrapperOpts = { borderColor: wrapperColor, borderWidth: 1, background: 'transparent', lineDash: [] };
25
- drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
26
- }
27
- export function drawSelectedElementControllersVertexes(ctx, controller, opts) {
28
- if (!controller) {
29
- return;
30
- }
31
- const { elementWrapper, topLeft, topRight, bottomLeft, bottomRight } = controller;
32
- const wrapperOpts = { borderColor: wrapperColor, borderWidth: selectWrapperBorderWidth, background: 'transparent', lineDash: [] };
33
- const ctrlOpts = Object.assign(Object.assign({}, wrapperOpts), { borderWidth: resizeControllerBorderWidth, background: '#FFFFFF' });
34
- drawVertexes(ctx, calcViewVertexes(elementWrapper, opts), wrapperOpts);
35
- drawVertexes(ctx, calcViewVertexes(topLeft.vertexes, opts), ctrlOpts);
36
- drawVertexes(ctx, calcViewVertexes(topRight.vertexes, opts), ctrlOpts);
37
- drawVertexes(ctx, calcViewVertexes(bottomLeft.vertexes, opts), ctrlOpts);
38
- drawVertexes(ctx, calcViewVertexes(bottomRight.vertexes, opts), ctrlOpts);
39
- }
40
- export function drawElementListShadows(ctx, elements, opts) {
41
- elements.forEach((elem) => {
42
- let { x, y, w, h } = elem;
43
- const { angle = 0 } = elem;
44
- if (opts === null || opts === void 0 ? void 0 : opts.calculator) {
45
- const { calculator } = opts;
46
- const size = calculator.elementSize({ x, y, w, h }, opts.viewScaleInfo, opts.viewSizeInfo);
47
- x = size.x;
48
- y = size.y;
49
- w = size.w;
50
- h = size.h;
51
- }
52
- const vertexes = rotateElementVertexes({ x, y, w, h, angle });
53
- if (vertexes.length >= 2) {
54
- ctx.setLineDash([]);
55
- ctx.lineWidth = 1;
56
- ctx.strokeStyle = '#aaaaaa';
57
- ctx.fillStyle = '#0000001A';
58
- ctx.beginPath();
59
- ctx.moveTo(vertexes[0].x, vertexes[0].y);
60
- for (let i = 0; i < vertexes.length; i++) {
61
- const p = vertexes[i];
62
- ctx.lineTo(p.x, p.y);
63
- }
64
- ctx.closePath();
65
- ctx.stroke();
66
- ctx.fill();
67
- }
68
- });
69
- }
70
- export function drawArea(ctx, opts) {
71
- const { start, end } = opts;
72
- ctx.setLineDash([]);
73
- ctx.lineWidth = areaBorderWidth;
74
- ctx.strokeStyle = wrapperColor;
75
- ctx.fillStyle = '#1976d24f';
76
- ctx.beginPath();
77
- ctx.moveTo(start.x, start.y);
78
- ctx.lineTo(end.x, start.y);
79
- ctx.lineTo(end.x, end.y);
80
- ctx.lineTo(start.x, end.y);
81
- ctx.closePath();
82
- ctx.stroke();
83
- ctx.fill();
84
- }
85
- export function drawListArea(ctx, opts) {
86
- const { areaSize } = opts;
87
- const { x, y, w, h } = areaSize;
88
- ctx.setLineDash([]);
89
- ctx.lineWidth = areaBorderWidth;
90
- ctx.strokeStyle = wrapperColor;
91
- ctx.fillStyle = '#1976d21c';
92
- ctx.beginPath();
93
- ctx.moveTo(x, y);
94
- ctx.lineTo(x + w, y);
95
- ctx.lineTo(x + w, y + h);
96
- ctx.lineTo(x, y + h);
97
- ctx.closePath();
98
- ctx.stroke();
99
- ctx.fill();
100
- }
101
- export function drawGroupQueueVertexesWrappers(ctx, vertexesList, opts) {
102
- for (let i = 0; i < vertexesList.length; i++) {
103
- const vertexes = vertexesList[i];
104
- const wrapperOpts = { borderColor: wrapperColor, borderWidth: selectWrapperBorderWidth, background: 'transparent', lineDash: [4, 4] };
105
- drawVertexes(ctx, calcViewVertexes(vertexes, opts), wrapperOpts);
106
- }
107
- }
@@ -1,5 +0,0 @@
1
- import type { CoreEvent } from '@idraw/types';
2
- import type { BoardMiddleware, DeepSelectorSharedStorage } from './types';
3
- export declare const middlewareEventSelect: string;
4
- export declare const middlewareEventSelectClear: string;
5
- export declare const MiddlewareSelector: BoardMiddleware<DeepSelectorSharedStorage, CoreEvent>;