@idraw/core 0.4.0-beta.8 → 0.4.0-rc.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 +5770 -1646
  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 -495
  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
@@ -0,0 +1,165 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _Viewer_instances, _Viewer_opts, _Viewer_drawFrameSnapshotQueue, _Viewer_drawFrameStatus, _Viewer_init, _Viewer_drawAnimationFrame;
13
+ import { EventEmitter, viewScale, viewScroll, calcViewScaleInfo } from '@idraw/util';
14
+ const { requestAnimationFrame } = window;
15
+ export class Viewer extends EventEmitter {
16
+ constructor(opts) {
17
+ super();
18
+ _Viewer_instances.add(this);
19
+ _Viewer_opts.set(this, void 0);
20
+ _Viewer_drawFrameSnapshotQueue.set(this, []);
21
+ _Viewer_drawFrameStatus.set(this, 'FREE');
22
+ __classPrivateFieldSet(this, _Viewer_opts, opts, "f");
23
+ __classPrivateFieldGet(this, _Viewer_instances, "m", _Viewer_init).call(this);
24
+ }
25
+ resetVirtualFlatItemMap(data, opts) {
26
+ if (data) {
27
+ __classPrivateFieldGet(this, _Viewer_opts, "f").calculator.resetVirtualFlatItemMap(data, opts);
28
+ }
29
+ }
30
+ drawFrame() {
31
+ const { sharer } = __classPrivateFieldGet(this, _Viewer_opts, "f");
32
+ const activeStore = sharer.getActiveStoreSnapshot();
33
+ const sharedStore = sharer.getSharedStoreSnapshot();
34
+ __classPrivateFieldGet(this, _Viewer_drawFrameSnapshotQueue, "f").push({
35
+ activeStore,
36
+ sharedStore
37
+ });
38
+ __classPrivateFieldGet(this, _Viewer_instances, "m", _Viewer_drawAnimationFrame).call(this);
39
+ }
40
+ scale(opts) {
41
+ const { scale, point, ignoreUpdateVisibleStatus } = opts;
42
+ const { sharer } = __classPrivateFieldGet(this, _Viewer_opts, "f");
43
+ const { moveX, moveY } = viewScale({
44
+ scale,
45
+ point,
46
+ viewScaleInfo: sharer.getActiveViewScaleInfo(),
47
+ viewSizeInfo: sharer.getActiveViewSizeInfo()
48
+ });
49
+ sharer.setActiveStorage('scale', scale);
50
+ if (!ignoreUpdateVisibleStatus) {
51
+ __classPrivateFieldGet(this, _Viewer_opts, "f").calculator.updateVisiableStatus({
52
+ viewScaleInfo: sharer.getActiveViewScaleInfo(),
53
+ viewSizeInfo: sharer.getActiveViewSizeInfo()
54
+ });
55
+ }
56
+ return { moveX, moveY };
57
+ }
58
+ scroll(opts) {
59
+ const { sharer } = __classPrivateFieldGet(this, _Viewer_opts, "f");
60
+ const prevViewScaleInfo = sharer.getActiveViewScaleInfo();
61
+ const { moveX, moveY, ignoreUpdateVisibleStatus } = opts;
62
+ const viewSizeInfo = sharer.getActiveViewSizeInfo();
63
+ const viewScaleInfo = viewScroll({
64
+ moveX,
65
+ moveY,
66
+ viewScaleInfo: prevViewScaleInfo,
67
+ viewSizeInfo
68
+ });
69
+ sharer.setActiveViewScaleInfo(viewScaleInfo);
70
+ if (!ignoreUpdateVisibleStatus) {
71
+ __classPrivateFieldGet(this, _Viewer_opts, "f").calculator.updateVisiableStatus({
72
+ viewScaleInfo: sharer.getActiveViewScaleInfo(),
73
+ viewSizeInfo: sharer.getActiveViewSizeInfo()
74
+ });
75
+ }
76
+ return viewScaleInfo;
77
+ }
78
+ updateViewScaleInfo(opts) {
79
+ const { sharer } = __classPrivateFieldGet(this, _Viewer_opts, "f");
80
+ const viewScaleInfo = calcViewScaleInfo(opts, {
81
+ viewSizeInfo: sharer.getActiveViewSizeInfo()
82
+ });
83
+ sharer.setActiveViewScaleInfo(viewScaleInfo);
84
+ __classPrivateFieldGet(this, _Viewer_opts, "f").calculator.updateVisiableStatus({
85
+ viewScaleInfo: sharer.getActiveViewScaleInfo(),
86
+ viewSizeInfo: sharer.getActiveViewSizeInfo()
87
+ });
88
+ return viewScaleInfo;
89
+ }
90
+ resize(viewSize = {}, opts) {
91
+ const { sharer } = __classPrivateFieldGet(this, _Viewer_opts, "f");
92
+ const originViewSize = sharer.getActiveViewSizeInfo();
93
+ const newViewSize = Object.assign(Object.assign({}, originViewSize), viewSize);
94
+ const { width, height, devicePixelRatio } = newViewSize;
95
+ const { underlayContext, boardContext, overlayContext, viewContext } = __classPrivateFieldGet(this, _Viewer_opts, "f").boardContent;
96
+ boardContext.canvas.width = width * devicePixelRatio;
97
+ boardContext.canvas.height = height * devicePixelRatio;
98
+ boardContext.canvas.style.width = `${width}px`;
99
+ boardContext.canvas.style.height = `${height}px`;
100
+ underlayContext.canvas.width = width * devicePixelRatio;
101
+ underlayContext.canvas.height = height * devicePixelRatio;
102
+ overlayContext.canvas.width = width * devicePixelRatio;
103
+ overlayContext.canvas.height = height * devicePixelRatio;
104
+ viewContext.canvas.width = width * devicePixelRatio;
105
+ viewContext.canvas.height = height * devicePixelRatio;
106
+ sharer.setActiveViewSizeInfo(newViewSize);
107
+ if (!(opts === null || opts === void 0 ? void 0 : opts.ignoreUpdateVisibleStatus)) {
108
+ __classPrivateFieldGet(this, _Viewer_opts, "f").calculator.updateVisiableStatus({
109
+ viewScaleInfo: sharer.getActiveViewScaleInfo(),
110
+ viewSizeInfo: sharer.getActiveViewSizeInfo()
111
+ });
112
+ }
113
+ return newViewSize;
114
+ }
115
+ }
116
+ _Viewer_opts = new WeakMap(), _Viewer_drawFrameSnapshotQueue = new WeakMap(), _Viewer_drawFrameStatus = new WeakMap(), _Viewer_instances = new WeakSet(), _Viewer_init = function _Viewer_init() {
117
+ const { renderer } = __classPrivateFieldGet(this, _Viewer_opts, "f");
118
+ renderer.on('load', () => {
119
+ this.drawFrame();
120
+ });
121
+ }, _Viewer_drawAnimationFrame = function _Viewer_drawAnimationFrame() {
122
+ if (__classPrivateFieldGet(this, _Viewer_drawFrameStatus, "f") === 'DRAWING' || __classPrivateFieldGet(this, _Viewer_drawFrameSnapshotQueue, "f").length === 0) {
123
+ return;
124
+ }
125
+ else {
126
+ __classPrivateFieldSet(this, _Viewer_drawFrameStatus, 'DRAWING', "f");
127
+ }
128
+ const snapshot = __classPrivateFieldGet(this, _Viewer_drawFrameSnapshotQueue, "f").shift();
129
+ const { renderer, boardContent, beforeDrawFrame, afterDrawFrame } = __classPrivateFieldGet(this, _Viewer_opts, "f");
130
+ if (snapshot) {
131
+ const { scale, offsetTop, offsetBottom, offsetLeft, offsetRight, width, height, contextHeight, contextWidth, devicePixelRatio } = snapshot.activeStore;
132
+ const viewScaleInfo = {
133
+ scale,
134
+ offsetTop,
135
+ offsetBottom,
136
+ offsetLeft,
137
+ offsetRight
138
+ };
139
+ const viewSizeInfo = {
140
+ width,
141
+ height,
142
+ contextHeight,
143
+ contextWidth,
144
+ devicePixelRatio
145
+ };
146
+ if (snapshot === null || snapshot === void 0 ? void 0 : snapshot.activeStore.data) {
147
+ renderer.drawData(snapshot.activeStore.data, {
148
+ viewScaleInfo,
149
+ viewSizeInfo
150
+ });
151
+ }
152
+ beforeDrawFrame({ snapshot });
153
+ boardContent.drawView();
154
+ afterDrawFrame({ snapshot });
155
+ }
156
+ if (__classPrivateFieldGet(this, _Viewer_drawFrameSnapshotQueue, "f").length === 0) {
157
+ __classPrivateFieldSet(this, _Viewer_drawFrameStatus, 'COMPLETE', "f");
158
+ return;
159
+ }
160
+ if (__classPrivateFieldGet(this, _Viewer_drawFrameStatus, "f") === 'DRAWING') {
161
+ requestAnimationFrame(() => {
162
+ __classPrivateFieldGet(this, _Viewer_instances, "m", _Viewer_drawAnimationFrame).call(this);
163
+ });
164
+ }
165
+ };
@@ -0,0 +1,15 @@
1
+ import type { Point, BoardWatcherEventMap, Data, Element, ElementType, BoardWatcherOptions } from '@idraw/types';
2
+ import { EventEmitter } from '@idraw/util';
3
+ export declare class BoardWatcher extends EventEmitter<BoardWatcherEventMap> {
4
+ #private;
5
+ constructor(opts: BoardWatcherOptions);
6
+ onEvents(): void;
7
+ offEvents(): void;
8
+ destroy(): void;
9
+ }
10
+ interface PointResult {
11
+ index: number;
12
+ element: Element<ElementType> | null;
13
+ }
14
+ export declare function getPointResult(p: Point, data: Data): PointResult;
15
+ export {};
@@ -0,0 +1,218 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _BoardWatcher_instances, _BoardWatcher_opts, _BoardWatcher_store, _BoardWatcher_hasDestroyed, _BoardWatcher_init, _BoardWatcher_onWheel, _BoardWatcher_onContextMenu, _BoardWatcher_onClick, _BoardWatcher_onPointLeave, _BoardWatcher_onPointEnd, _BoardWatcher_onPointMove, _BoardWatcher_onPointStart, _BoardWatcher_onHover, _BoardWatcher_isInTarget, _BoardWatcher_getPoint, _BoardWatcher_isVaildPoint;
13
+ import { EventEmitter, Store } from '@idraw/util';
14
+ function isBoardAvailableNum(num) {
15
+ return num > 0 || num < 0 || num === 0;
16
+ }
17
+ export class BoardWatcher extends EventEmitter {
18
+ constructor(opts) {
19
+ super();
20
+ _BoardWatcher_instances.add(this);
21
+ _BoardWatcher_opts.set(this, void 0);
22
+ _BoardWatcher_store.set(this, void 0);
23
+ _BoardWatcher_hasDestroyed.set(this, false);
24
+ _BoardWatcher_onWheel.set(this, (e) => {
25
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
26
+ return;
27
+ }
28
+ const point = __classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_getPoint).call(this, e);
29
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isVaildPoint).call(this, point)) {
30
+ return;
31
+ }
32
+ e.preventDefault();
33
+ e.stopPropagation();
34
+ const deltaX = e.deltaX > 0 || e.deltaX < 0 ? e.deltaX : 0;
35
+ const deltaY = e.deltaY > 0 || e.deltaY < 0 ? e.deltaY : 0;
36
+ if (e.ctrlKey === true && this.has('wheelScale')) {
37
+ this.trigger('wheelScale', { deltaX, deltaY, point });
38
+ }
39
+ else if (this.has('wheel')) {
40
+ this.trigger('wheel', { deltaX, deltaY, point });
41
+ }
42
+ });
43
+ _BoardWatcher_onContextMenu.set(this, (e) => {
44
+ if (e.button !== 2) {
45
+ return;
46
+ }
47
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
48
+ return;
49
+ }
50
+ e.preventDefault();
51
+ const point = __classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_getPoint).call(this, e);
52
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isVaildPoint).call(this, point)) {
53
+ return;
54
+ }
55
+ this.trigger('contextMenu', { point });
56
+ });
57
+ _BoardWatcher_onClick.set(this, (e) => {
58
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
59
+ return;
60
+ }
61
+ e.preventDefault();
62
+ const point = __classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_getPoint).call(this, e);
63
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isVaildPoint).call(this, point)) {
64
+ return;
65
+ }
66
+ const maxLimitTime = 500;
67
+ const t = Date.now();
68
+ const preClickPoint = __classPrivateFieldGet(this, _BoardWatcher_store, "f").get('prevClickPoint');
69
+ if (preClickPoint &&
70
+ t - preClickPoint.t <= maxLimitTime &&
71
+ Math.abs(preClickPoint.x - point.x) <= 5 &&
72
+ Math.abs(preClickPoint.y - point.y) <= 5) {
73
+ this.trigger('doubleClick', { point });
74
+ }
75
+ else {
76
+ __classPrivateFieldGet(this, _BoardWatcher_store, "f").set('prevClickPoint', point);
77
+ }
78
+ });
79
+ _BoardWatcher_onPointLeave.set(this, (e) => {
80
+ __classPrivateFieldGet(this, _BoardWatcher_store, "f").set('hasPointDown', false);
81
+ e.preventDefault();
82
+ const point = __classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_getPoint).call(this, e);
83
+ this.trigger('pointLeave', { point });
84
+ });
85
+ _BoardWatcher_onPointEnd.set(this, (e) => {
86
+ __classPrivateFieldGet(this, _BoardWatcher_store, "f").set('hasPointDown', false);
87
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
88
+ return;
89
+ }
90
+ e.preventDefault();
91
+ const point = __classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_getPoint).call(this, e);
92
+ this.trigger('pointEnd', { point });
93
+ });
94
+ _BoardWatcher_onPointMove.set(this, (e) => {
95
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
96
+ return;
97
+ }
98
+ e.preventDefault();
99
+ e.stopPropagation();
100
+ const point = __classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_getPoint).call(this, e);
101
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isVaildPoint).call(this, point)) {
102
+ if (__classPrivateFieldGet(this, _BoardWatcher_store, "f").get('hasPointDown')) {
103
+ this.trigger('pointLeave', { point });
104
+ __classPrivateFieldGet(this, _BoardWatcher_store, "f").set('hasPointDown', false);
105
+ }
106
+ return;
107
+ }
108
+ if (__classPrivateFieldGet(this, _BoardWatcher_store, "f").get('hasPointDown') !== true) {
109
+ return;
110
+ }
111
+ this.trigger('pointMove', { point });
112
+ });
113
+ _BoardWatcher_onPointStart.set(this, (e) => {
114
+ if (e.button !== 0) {
115
+ return;
116
+ }
117
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
118
+ return;
119
+ }
120
+ e.preventDefault();
121
+ const point = __classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_getPoint).call(this, e);
122
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isVaildPoint).call(this, point)) {
123
+ return;
124
+ }
125
+ __classPrivateFieldGet(this, _BoardWatcher_store, "f").set('hasPointDown', true);
126
+ this.trigger('pointStart', { point });
127
+ });
128
+ _BoardWatcher_onHover.set(this, (e) => {
129
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isInTarget).call(this, e)) {
130
+ if (__classPrivateFieldGet(this, _BoardWatcher_store, "f").get('inCanvas') === true) {
131
+ __classPrivateFieldGet(this, _BoardWatcher_store, "f").set('inCanvas', false);
132
+ __classPrivateFieldGet(this, _BoardWatcher_onPointLeave, "f").call(this, e);
133
+ }
134
+ return;
135
+ }
136
+ __classPrivateFieldGet(this, _BoardWatcher_store, "f").set('inCanvas', true);
137
+ e.preventDefault();
138
+ const point = __classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_getPoint).call(this, e);
139
+ if (!__classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_isVaildPoint).call(this, point)) {
140
+ return;
141
+ }
142
+ this.trigger('hover', { point });
143
+ });
144
+ const store = new Store({
145
+ defaultStorage: { hasPointDown: false, prevClickPoint: null, inCanvas: true }
146
+ });
147
+ __classPrivateFieldSet(this, _BoardWatcher_store, store, "f");
148
+ __classPrivateFieldSet(this, _BoardWatcher_opts, opts, "f");
149
+ __classPrivateFieldGet(this, _BoardWatcher_instances, "m", _BoardWatcher_init).call(this);
150
+ }
151
+ onEvents() {
152
+ if (__classPrivateFieldGet(this, _BoardWatcher_hasDestroyed, "f")) {
153
+ return;
154
+ }
155
+ const canvas = __classPrivateFieldGet(this, _BoardWatcher_opts, "f").boardContent.boardContext.canvas;
156
+ const container = window;
157
+ container.addEventListener('mousemove', __classPrivateFieldGet(this, _BoardWatcher_onHover, "f"));
158
+ container.addEventListener('mousedown', __classPrivateFieldGet(this, _BoardWatcher_onPointStart, "f"));
159
+ container.addEventListener('mousemove', __classPrivateFieldGet(this, _BoardWatcher_onPointMove, "f"));
160
+ container.addEventListener('mouseup', __classPrivateFieldGet(this, _BoardWatcher_onPointEnd, "f"));
161
+ canvas.addEventListener('wheel', __classPrivateFieldGet(this, _BoardWatcher_onWheel, "f"), { passive: false });
162
+ container.addEventListener('click', __classPrivateFieldGet(this, _BoardWatcher_onClick, "f"));
163
+ container.addEventListener('contextmenu', __classPrivateFieldGet(this, _BoardWatcher_onContextMenu, "f"));
164
+ }
165
+ offEvents() {
166
+ const container = window;
167
+ const canvas = __classPrivateFieldGet(this, _BoardWatcher_opts, "f").boardContent.boardContext.canvas;
168
+ container.removeEventListener('mousemove', __classPrivateFieldGet(this, _BoardWatcher_onHover, "f"));
169
+ container.removeEventListener('mousedown', __classPrivateFieldGet(this, _BoardWatcher_onPointStart, "f"));
170
+ container.removeEventListener('mousemove', __classPrivateFieldGet(this, _BoardWatcher_onPointMove, "f"));
171
+ container.removeEventListener('mouseup', __classPrivateFieldGet(this, _BoardWatcher_onPointEnd, "f"));
172
+ container.removeEventListener('mouseleave', __classPrivateFieldGet(this, _BoardWatcher_onPointLeave, "f"));
173
+ canvas.removeEventListener('wheel', __classPrivateFieldGet(this, _BoardWatcher_onWheel, "f"));
174
+ container.removeEventListener('click', __classPrivateFieldGet(this, _BoardWatcher_onClick, "f"));
175
+ container.removeEventListener('contextmenu', __classPrivateFieldGet(this, _BoardWatcher_onContextMenu, "f"));
176
+ }
177
+ destroy() {
178
+ this.offEvents();
179
+ __classPrivateFieldGet(this, _BoardWatcher_store, "f").destroy();
180
+ __classPrivateFieldSet(this, _BoardWatcher_hasDestroyed, true, "f");
181
+ }
182
+ }
183
+ _BoardWatcher_opts = new WeakMap(), _BoardWatcher_store = new WeakMap(), _BoardWatcher_hasDestroyed = new WeakMap(), _BoardWatcher_onWheel = new WeakMap(), _BoardWatcher_onContextMenu = new WeakMap(), _BoardWatcher_onClick = new WeakMap(), _BoardWatcher_onPointLeave = new WeakMap(), _BoardWatcher_onPointEnd = new WeakMap(), _BoardWatcher_onPointMove = new WeakMap(), _BoardWatcher_onPointStart = new WeakMap(), _BoardWatcher_onHover = new WeakMap(), _BoardWatcher_instances = new WeakSet(), _BoardWatcher_init = function _BoardWatcher_init() {
184
+ this.onEvents();
185
+ }, _BoardWatcher_isInTarget = function _BoardWatcher_isInTarget(e) {
186
+ return e.target === __classPrivateFieldGet(this, _BoardWatcher_opts, "f").boardContent.boardContext.canvas;
187
+ }, _BoardWatcher_getPoint = function _BoardWatcher_getPoint(e) {
188
+ const boardCanvas = __classPrivateFieldGet(this, _BoardWatcher_opts, "f").boardContent.boardContext.canvas;
189
+ const rect = boardCanvas.getBoundingClientRect();
190
+ const p = {
191
+ x: e.clientX - rect.left,
192
+ y: e.clientY - rect.top,
193
+ t: Date.now()
194
+ };
195
+ return p;
196
+ }, _BoardWatcher_isVaildPoint = function _BoardWatcher_isVaildPoint(p) {
197
+ const viewSize = __classPrivateFieldGet(this, _BoardWatcher_opts, "f").sharer.getActiveViewSizeInfo();
198
+ const { width, height } = viewSize;
199
+ if (isBoardAvailableNum(p.x) && isBoardAvailableNum(p.y) && p.x <= width && p.y <= height) {
200
+ return true;
201
+ }
202
+ return false;
203
+ };
204
+ export function getPointResult(p, data) {
205
+ const result = {
206
+ index: -1,
207
+ element: null
208
+ };
209
+ for (let i = 0; i < data.elements.length; i++) {
210
+ const elem = data.elements[i];
211
+ if (p.x >= elem.x && p.x <= elem.x + elem.w && p.y >= elem.y && p.y <= elem.y + elem.h) {
212
+ result.index = i;
213
+ result.element = elem;
214
+ break;
215
+ }
216
+ }
217
+ return result;
218
+ }
@@ -0,0 +1,28 @@
1
+ export declare const EVENT_KEY_CHANGE = "change";
2
+ export declare const EVENT_KEY_CURSOR = "cursor";
3
+ export declare const EVENT_KEY_RULER = "ruler";
4
+ export declare const EVENT_KEY_SCALE = "scale";
5
+ export declare const EVENT_KEY_SELECT = "select";
6
+ export declare const EVENT_KEY_SELECT_LAYOUT = "selectLayout";
7
+ export declare const EVENT_KEY_CLEAR_SELECT = "clearSelect";
8
+ export declare const EVENT_KEY_TEXT_EDIT = "textEdit";
9
+ export declare const EVENT_KEY_TEXT_CHANGE = "textChange";
10
+ export declare const EVENT_KEY_CONTEXT_MENU = "contextMenu";
11
+ export declare const EVENT_KEY_SELECT_IN_GROUP = "selectInGroup";
12
+ export declare const EVENT_KEY_SNAP_TO_GRID = "snapToGrid";
13
+ export type CoreEventKeys = {
14
+ CURSOR: typeof EVENT_KEY_CURSOR;
15
+ CHANGE: typeof EVENT_KEY_CHANGE;
16
+ RULER: typeof EVENT_KEY_RULER;
17
+ SCALE: typeof EVENT_KEY_SCALE;
18
+ SELECT: typeof EVENT_KEY_SELECT;
19
+ SELECT_LAYOUT: typeof EVENT_KEY_SELECT_LAYOUT;
20
+ CLEAR_SELECT: typeof EVENT_KEY_CLEAR_SELECT;
21
+ TEXT_EDIT: typeof EVENT_KEY_TEXT_EDIT;
22
+ TEXT_CHANGE: typeof EVENT_KEY_TEXT_CHANGE;
23
+ CONTEXT_MENU: typeof EVENT_KEY_CONTEXT_MENU;
24
+ SELECT_IN_GROUP: typeof EVENT_KEY_SELECT_IN_GROUP;
25
+ SNAP_TO_GRID: typeof EVENT_KEY_SELECT_IN_GROUP;
26
+ };
27
+ declare const coreEventKeys: CoreEventKeys;
28
+ export { coreEventKeys };
@@ -0,0 +1,34 @@
1
+ export const EVENT_KEY_CHANGE = 'change';
2
+ export const EVENT_KEY_CURSOR = 'cursor';
3
+ export const EVENT_KEY_RULER = 'ruler';
4
+ export const EVENT_KEY_SCALE = 'scale';
5
+ export const EVENT_KEY_SELECT = 'select';
6
+ export const EVENT_KEY_SELECT_LAYOUT = 'selectLayout';
7
+ export const EVENT_KEY_CLEAR_SELECT = 'clearSelect';
8
+ export const EVENT_KEY_TEXT_EDIT = 'textEdit';
9
+ export const EVENT_KEY_TEXT_CHANGE = 'textChange';
10
+ export const EVENT_KEY_CONTEXT_MENU = 'contextMenu';
11
+ export const EVENT_KEY_SELECT_IN_GROUP = 'selectInGroup';
12
+ export const EVENT_KEY_SNAP_TO_GRID = 'snapToGrid';
13
+ const innerEventKeys = {
14
+ CURSOR: EVENT_KEY_CURSOR,
15
+ CHANGE: EVENT_KEY_CHANGE,
16
+ RULER: EVENT_KEY_RULER,
17
+ SCALE: EVENT_KEY_SCALE,
18
+ SELECT_LAYOUT: EVENT_KEY_SELECT_LAYOUT,
19
+ SELECT: EVENT_KEY_SELECT,
20
+ CLEAR_SELECT: EVENT_KEY_CLEAR_SELECT,
21
+ TEXT_EDIT: EVENT_KEY_TEXT_EDIT,
22
+ TEXT_CHANGE: EVENT_KEY_TEXT_CHANGE,
23
+ CONTEXT_MENU: EVENT_KEY_CONTEXT_MENU,
24
+ SELECT_IN_GROUP: EVENT_KEY_SELECT_IN_GROUP,
25
+ SNAP_TO_GRID: EVENT_KEY_SELECT_IN_GROUP
26
+ };
27
+ const coreEventKeys = {};
28
+ Object.keys(innerEventKeys).forEach((keyName) => {
29
+ Object.defineProperty(coreEventKeys, keyName, {
30
+ value: innerEventKeys[keyName],
31
+ writable: false
32
+ });
33
+ });
34
+ export { coreEventKeys };
@@ -2,3 +2,4 @@ export declare const CURSOR = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACg
2
2
  export declare const CURSOR_RESIZE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAApCAYAAABHomvIAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF92lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NzUzLCAyMDIxLzAyLzE1LTExOjUyOjEzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDktMTdUMTY6MzE6MjMrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIzLTA5LTE3VDE2OjQ0OjIyKzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTA5LTE3VDE2OjQ0OjIyKzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjY0MTBhYjUzLWM0ZjEtNDVhNS04MjhkLTIxOTczOWFjOTk3MSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjBkMDNmNjM5LTE5MzctY2Y0MC1hMTg0LTIyMjg0NzczNWNmYSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjgyYjQwZGRmLWE0ZGEtNDY3MC1iYzc2LTBhYjY3ZmI5M2I0ZSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ODJiNDBkZGYtYTRkYS00NjcwLWJjNzYtMGFiNjdmYjkzYjRlIiBzdEV2dDp3aGVuPSIyMDIzLTA5LTE3VDE2OjMxOjIzKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NjQxMGFiNTMtYzRmMS00NWE1LTgyOGQtMjE5NzM5YWM5OTcxIiBzdEV2dDp3aGVuPSIyMDIzLTA5LTE3VDE2OjQ0OjIyKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz57vRudAAAEk0lEQVRYhe3ZW0jbVxzA8e8/MX+NYnG9uI4xE3bvoLt0FzradRfGBtsYo32YdAhb6WQyBqV7KOylpYjzZShDGfjmyxgbgjjwyRm16SYMhgiNKDhbL3VtNF4xJOnf3x7+59i/Wf4aTbInf3AwJMdzPjnnf/n9/jFEhGzDMIxMb3uAIsDs6ek5urS05Dtz5syE+uwekAQS6u89YD19gC0NIpJ1c8GZQHlXV9fJRCIxGo/HxxoaGj4CngWOAEGgEihXfT07MeQC3MB1dna+lkgkRkXF6urq3xcuXPgUOAE8DzwGPOiGLARwEy4ej4+JiITD4elr167NiIgsLi7eqq2trQPeBI4Bj7sh8w10xZmmeds0zdn+/v5/RERisdjUuXPnvgLeAl50Q+YTaAA+oKy7u/uE3laNAwSQ4uLiu6FQ6G4G5DG13YeAMjWWkU+gBygJhULHNe769etTTpwDGXUiz58//yXwujp5qoAHgBLAk0+gNxKJHEulUiMKN2ma5gwgPp/vjhOXjlxYWJisq6urBV5RW30IKAW8eQPGYrGjlmXdEBEZHBy8aZrmFCCmac729fVtAHt7e6MO5N2+vr47IiJLS0s3L126dBZ4Sh2LZUBRwVdwYGBgVuwOYh/zsoF0bnPBVzDTMRgOh6dFhROokSIi8/Pz0+pEeaPQx+DGWdzV1XVSX2LcgCIic3NzMzU1NV8D7wIvq9WrLNRZvOk62NHRccqJTAdGo9Hb1dXV3wAfYt9VjgAPFfI66EQWAxU9PT0fuwEvXrzYBJwF3gFeAAJAhfrfrO4k/7lxZxnr2JlJqry8POnWyePx6H4JR0vhktVkHGOXQI20SkpKLLcOhmGsA5YCaZiVLS5XoADi9XpdkznDMERhnE0fCgUHZhvOW+CO4/8A5hR7wFxjD5hr7AFzjZyBlmVlrOYdYaS1HUUuQA/gWV9fd51URDyqn1c1j6MVFGjoidfW1oq2ABrYj0V82OmVzwHNajVdB88C5wOKTdM87NaxsrKyQsFKHC2BnTDo+/TWt8Bd5INeVC44NDT0xXYZdXNz8w/AaeyS8yjwCPdzQu92ht2m/OUjIyOfS1pkAoqItLS0fA+8D7wKPA0cxs6qC1O4T0xMfKYnb21tnXEDNjc3z+nXbW1t3wFvYz9dCAL7KUThHovFPtGTNjU1jQFSX18/lg68cuXKLUAaGxs3vkB7e/u3wHHgCQpUdnpTqdQvesJgMDisUVevXh3Xry9fvnxTv66qqprQ/cfHx/vVNj/J/couv0DAv7q6+pMDeYPNSalkwkUikX7s4ukl4FHgAODPN1CXnPsWFxd/dCAjW+GGhoZCwAfYpeczwMPAPjVW3gv3IvXN98disZ8dyBGNCwQC4/r94eHhfuy6+JS6zATUCeJXY+W9cNfIUuDAwsLCr05kIBDYeBQ8Ojr6h8Lpx25BtbWlGpfv62BG5PLy8m+SFpOTk38C76mVe84NVyhgOvLgysrK7xoXjUb/Uqt2XG1rEDiYCbcd0MgwsWtk+J1EI03An0wmw5Zlefx+/2n1eRKIO5r+rWTTpFsZ/gWFrGMmeObuqwAAAABJRU5ErkJggg==";
3
3
  export declare const CURSOR_DRAG_DEFAULT = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAApCAYAAABHomvIAAAEvUlEQVRYhc2Y20/cVRDHP8v+uKzAWkpDCtZq8BYhJkq8PBoJxgj7I2m0ryaSyFN9IT74pI8+8WJiggRj/APApFkSTGRJ+qKGUiyxbGPEWsUSuVhYC12Wy8+HmeMeYPe3d3WSye/k/M7le+bMzJkZ+J9ToEJreGVYN+vihcytstjQocUlAw0WCSoIVCv3Ae8CXwIt+u8XHVeOG8qLqgAHqAFCQCNwGugCthBJGd7S/tM6LqTzHI5KuqzgaoAHgEvAtwrkG2AG8FzXvep5nue67lX9N6P/PR1/SefXlBtkFXKNDUA/RyX1D9uUbYzOb9D1ygbSQU7eDMxhSSsSiVz3AxiJRK57nuf19/fPad8coqONFCBJPyUOIKc1OvcbgiY9ICDT8+0DHge2gR0gBeyTtviM5HeKAGlrrfMZVwhdAVaAr4F3KNF4gkA9cBbowOc68+3LwDn1Mhdy4/OcYk54nPr6+m54nofruvPa9SFQ6wfQTweNgTwInAGuQWk6mEUvHwb+Au4Dexx7ffK9+0q+CHWIBIOZ9skHYKWfK9tQ8gZoLDjIyWCg3ORY+2T8aYOyg4EaRIFrkCs4QU1NTSvabC20zyIDzuyfkYzEahHX8jHwE/LwXwHeJ4P7KIVIu5ouxFDC+HgLAy4MfEF2v1UpgOezATSiNVf6EvAWsD01NXVtdnb2bk9Pz81sp/q3KIi8t83Ae4DX0tJy0z7t8PDwD4FAYIX/WILVwKMAzc3Nu/agoaGhzmg0ugcsV0hIvlSNoH8IuIiebHJycrls4sotwaxGYvueAPAjEg3jum79yMjIr5WUjFLOxMpBIopWoBN4GfhOJ+4NDg4ulVt6i4uLm7r+BvAscA4fCXrAAfJQJ5Fg8gPgMuCMjo62d3V1LW1sbKRKlpXSxMTEmjZ/5qQrOwHwUAGmkIjiHhJdfKrM/Pz8Y+3t7RvT09Ob5QAYi8X2tbmke2cEZwAaCdoAt5QvIzEbiUSitbe3tyoej++UCnBhYSGkzdu6d1aQxkgOkfwgieQMCeCu8iwSnpNKpcIdHR3BZDJ5UCy4SCSyvL6+/giiSou67wE+eYmhAKKkIaAJUdynkdflNcQF3dFTpooxjmg0aozDAz4DXkB8bxPy1OYM7QzIOuAU0AY8pQu9CrwJ3AK8UCj0RyHgZmZmli1w3wOvAM/oHo1kiZiygbSDh7PAE8DzQA/wBqKnnuM4a2NjY7dygbtw4cICRy31deBFJA09o7eWsU7kJ1KTLJmyRyOSn5zS70fAkwBtbW2/DwwMHHR3d9d3dnY2rK6u7o2Pj2/GYrH9eDzurK2tndM1vwI+QXT7T2BTD5skQz6SCyAcLRoZkGEFGQbeRqpbubK+BPA5MI14h00L3I6Cy2h4+eQbJsKuRa6iQcGFFfB5oBt4DpFsI+Ky7iDBxW3gBhBH/GtC+R7i1lKk3UxRAG2QpvxWr0AbtB3SA5jkx36djH/dVlDbyibN3M8GDvJPyI2PSulixm/u6kZ1OQCaJ/S+tndJX6tvsFBIxcCUdA3vW5ubxMrObc0hDMhd/Rqp5QQHxeW8dubnHGM7tzVv/IECMlxQ/bpcRfRMqaNRheNcUGG9XFWDACfzWs/6Fl3t/xtO//8gpbCORQAAAABJRU5ErkJggg==";
4
4
  export declare const CURSOR_DRAG_ACTIVE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAER0lEQVRYhe2YT2hjRRjAf8lL22xsNsm6EWKrSKvuIkIh+O9QRFxEW18KUsoe7FHoRaWCN1FPetOrIHgVKS0q9P5OxaJbodkalgVrtVZjS7Ntd02z6abPw3yzmaT585q+elj2g2HmvZn35jffN/PNNwP35R6XgM/fuif4n+dO2klQvgsaZRc4NJJvoJbHdhrIAkJAN2ADHwFfAw9J3ZoB/b9I0AA6A0SBc0Aa2EVpSqddeZ+QdmfkO+u0gIPSQQR4HfhRQH4AHMDNZDJXXNd1M5nMFalzdB3wJTAOPAD0yEB9066G6wXepVZTd5MpTdporZ6jVqsatmMJoTR3HvgJQ1u2bS+3ArRte9l1XXdsbGyJo1pdBN6Wf3d3ChlAmSQO9LeC8fquQRpDWaerHWSjSr1iu4BkJyOsF9u2s67rkslkluTVxygltAVsJBZqdCngEj5osIlW+4EYytRNF04jeu3vulCT+7QkLH20dEOhumft97pQI4s3+iiRSPwtxVSbd39J8eEGvzFXc1NAs8KSFAZeBt4AHgNeBFDWObkEAne7HAK2gT2gCFQatdca1GbtBj4E3veFprVYVLXXcg4GqM6588BbAMlkcm1qamqzr6/v6ikBet5RgiizJoDPAXdgYGDZXHkzMzPrrk9CdRWngUeAsxxdCzVwpgZ/BigWiz1mo4mJif7jqMajeJrU5hywgGvAej6fvzA0NLThN1Eul9uT4g5VTbYFNKUIfAbsZ7PZvuHh4Wt+As7Ozu5IcY2j219TQB0NV4A7qODgO4CFhYWLg4ODOb8AHccpG4A68m6pRQ1YAQ6A28A+8BXwBcDq6upTqVTquh+AuVyuW4q/opRRaQdZD1gCbgE3ge+BT4HdfD7/ZDwe/z2bzRY6hRsfH1/e3Nx8FDX/sgbgoZfvg6jo4ixqW7oIPA+8CrwHrAJuJBLJd+JaHMf5k6qmPgGeQe1SCenXk0/U21xcIC8AzwGvAJPAEuAmEon1xcXFba9w8/Pz5oqdB14CnpY+oij35km0qwmjwqAU8ISM9hIwBeQA17KsG9PT07+1gxsZGdmgdqW+BjwLDAAPoo4ALU+W9arVwWoIpXp9kouKZpPAO8AwQCwW+2d0dLQ0OTkZSafT0UKhUJ6bm9t2HKeysrIS3tra0g7+KvABUJC0g5rrJdRcbLpImtleRzYashc1P2OSXwbebDVykX3gW+Ab1AHqhuQ3pe6AJlFMO0CoPROHDcio5I8DL1A9C8dQbmod+APYAK4DvwjQnsDdErgyVTfTEaCG1GFYGHXG7TVSo2OkdvhlAflXoHSuNdfStFqaRhEi2kfdprrj6M5LAt0I8EDaaMdflPal48CB95hMr3Bt8h4jD0kyL5E0pN6dysZzW7N2AqjbmhdIZjJvufTOpE19x3g+9s1XJ/ck5tVbfdhu+rxDfLiSO+lFToCjZwrXyH2/0Lwv95z8B1jAqXmDnj4YAAAAAElFTkSuQmCC";
5
+ export declare const CURSOR_RESIZE_ROTATE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAIiklEQVRYhe2YW2yUxxmGn7W96zXGNnZsr2FJHQyYBHNIU1ttAqVUVjlJUAtxQyUXhKgQktUDdSUkuEDtBVJ9UQXRC0RJRblrq/SCIARpFImWQ8VBIZQinJpQYozNyWaxiw/rfXsx3+z+6xNOe9tPGv2nOTzzffPPvDMhSXwJC1nKAXIDV/9ellLAqF1T9o5A2Ry7J5A/Fbh3mUMh8qYJ5kHCQATID6QIkBcAHAVGgKFAStq33EB53/ao5Rm064i9g0CmqcDyrNICYCZQBJTYdaa9j1jelDUwCAwAz4F+ex61DhZauXzr1CDwDHhq1wFg2Do1KWAo0NsCAyoDKoGYXcuBWdZY1PKnzAsDQB/wBOg1yKTVN8vqmoHz6nOgC7gHdFrbCasrNRFgyMCj5qVXgDlANfAaMA/4ir2rMI+MtSHgEdAN9BjsiNVZYR0sNq8+AtqB69Z2MuDBcYA+pAXW0yoDWgTUWXrd8k1l+cBcSxjIIBlPB63G8uUB/8Z57znwAkgGAX1YC4BSK7QIWA7UWwoDJJNJzp49y4ULF2hvb6e7u5tEIkFhYSGVlZXMmzePhoYGNmzYQElJCVZv2tPt7e3s2bOHvr4+9u3bx/r16+PWjg/zQ9x4BEk+5UkqklQt6ZuSdkn6jaRbMhsYGFBbW5uWLVvmp5MpU3V1tVpbW9XV1aWgbdy4MZ2npqbGvx6W9DtJ35e0RFJREDBX0gxJcUnfkPQDScck3fGlz549q7q6ummBjU2xWEzvvfdeGvCtt95Kf6uoqAiyfyBpt6SvSZrlAUOSIpLKJS2X9D1Jv5Z025d69913FQqFJmy8rKxMS5YsUUNDg5YvX67Zs2dPCrpjxw6NjIxoxYoV6XdVVVVBwI8l/UTS1yWVesBcC+18SRsk/ULS33yJtra2CRtramrSiRMn1NXVpWQyKUlKpVJ6+vSpTp48qZ07dyo/P39cua1bt6q+vn4ywL9IapX0tqQyDxiRFDPq3ZL+JCklSadOnRrXwMKFC3X69GlNx65du6aVK1eOqyMYjTGAf50IsNC8t1FSm6TPJOn+/fuKxWJZFb/zzjvjBvx0bO/evQqHwxNG4mUe9MtYMZk5bwHA4cOH6enpSc9BixYt4uTJk5SVlflXfcBN4DFuapoHLPQfz58/z9WrVwmFQsTjceLxOHfv3uUlNlZcpFeMEtzsXg2QSCQ4duxYulQoFOLQoUNBuE7gvAE+x82b/VZHyblz52hsbCSZTL4MCGWrqUECq0gQsBi3ts4B+PDDD3n48GG61OrVq1mzZo1/fGZw54HbVmGV1bMAWPbRRx9NC24CwD7cajLiAXNwIS7ELW3lAGfOnMmqZPv27cHHvwM3gH8AnwH/wnn0C+AuwLZt25g/f/5L4cLhMNu2bfOPnbh1+xkZ9UMebvmKGmQEoLOzM11JQUEBK1eu9I/JAFAPTqnk4hTNY9xS1V5TU1N7+fJlOjo6SKXS+jPLJFFUVMTixYsxmJtW/inOi2nAXDI/C0BWeMvKyojFYv6xz1LCKhnCRSEBPMCFfBaQKi0tfb2+vn5qFzp7AnwCXAM+t45mAUJGfgMwOpoWtIRCWZ/89BB8TuJ+lG5cNEatkXYgjtN+BYG2ktaxBE4U3AP+iRsud3EeHCTwk6Ss0IhvtaKiIk3Q19dHb28vhYWF4H6mYtxwiBrQIE4aPTHgIVzoO3E/TzlOV4YD3/stj9eMPj2xzg4HAYMSPQnkxePxNGB/fz+XLl1iy5Yt4HTeq+aZTtyA9h18Yb33G6aRQBqyDiUNLihmH1q54LAZ9ZHKISPRn1loaGxsJGjHjx8PPi6xtAgnNufgVHcRmf1J2DpTiJsjvYout3c5gQ49Ns89s3fpOdB70I+Hx7iBXrV27VqKi4tJJBKAm3auXLmCDfpy4G3rZSHur/aSPg83BCpx24MFuNUlbnkHcGMubEDdxpG0lBn8AcBBsgfsVysqKti6dStHjhwBYGRkhJaWFs6dO0ckEgGYj9v0xIA71rkha7jUgBYCb5hHGRoaIj8/f4Z5s8jafUpmN/diLBwAkmZKWiipSdKvJN2VpI6ODhUVFWUt7Js2bdLAwMBYLdAt6VNJlyV9IumLsRkOHjyo2tparVixQrdvp2Xmn00YrJI0R05VBRV+GjAiqcoUxA8lnfI1HD16dJz6WLVqla5fvz4tFdPZ2anm5uas8s3Nzf7zp5J+LmmNpFcl5U8GmCupWFKtpO9K+qWkG76W3bt3j4OMRqNqaWnRhQsXNDQ0lAWVTCZ169YtHThwQFVVVePKtrS0+Kw3pgsYso+Vkuol7ZD0W0ldvsHW1tZJZXxtba0aGxvV1NSkdevWaenSpYpGoxPmXb9+vXp6ejzgx5J+ZiGeLSk8GaD34ky5Hd23JP1I0h8kPQmGu7y8/L/aNEUiEe3fv1/Dw8Pp6Es6KqlZ0puSXpHbVU4KiPVglqQFkr4j6aeSfi/pvq/13r172rVrlyorK6cFFo1GtXnzZl25ciU4Ch5J+qOkH0v6tqTXzDk5EwGGlNFjOWQOd8px4vUN4E3cpn2pz/jgwQPef/99Ll68yJ07d+jt7WVwcJBIJEJJSQlz586loaGBTZs2UVdXF5w0OoDLwFWcbPsct6r04+bRLHEYCoWyAD1kBDfHleHmsxrccccS3NFHNV/eenBy6iZwCycMOnHz5wBuDh2nyyY6H0zhFmoF7vtxk+l9q3ieQfrDo8msF7cy3cN56g7ZWnKcep7IxnrQmz+wHKu2K3EKJWbPpWSUTQ4ZtRJc23sC6ZGB9ZM52JwcboIQjzUvZvNxYfeHlyVkZFcBbux6wKA6ShjoM5yM8uH0Xpuy8ekAQuZc2W8P8nEei9p9mMmPgAfJHO0O27e0lHppw9MEDJo//A4eoE91iB48SJ80lFMB/t/+V/sPGZfTmtMFR4EAAAAASUVORK5CYII=";
@@ -2,3 +2,4 @@ export const CURSOR = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAY
2
2
  export const CURSOR_RESIZE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAApCAYAAABHomvIAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF92lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NzUzLCAyMDIxLzAyLzE1LTExOjUyOjEzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDktMTdUMTY6MzE6MjMrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIzLTA5LTE3VDE2OjQ0OjIyKzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTA5LTE3VDE2OjQ0OjIyKzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjY0MTBhYjUzLWM0ZjEtNDVhNS04MjhkLTIxOTczOWFjOTk3MSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjBkMDNmNjM5LTE5MzctY2Y0MC1hMTg0LTIyMjg0NzczNWNmYSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjgyYjQwZGRmLWE0ZGEtNDY3MC1iYzc2LTBhYjY3ZmI5M2I0ZSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ODJiNDBkZGYtYTRkYS00NjcwLWJjNzYtMGFiNjdmYjkzYjRlIiBzdEV2dDp3aGVuPSIyMDIzLTA5LTE3VDE2OjMxOjIzKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NjQxMGFiNTMtYzRmMS00NWE1LTgyOGQtMjE5NzM5YWM5OTcxIiBzdEV2dDp3aGVuPSIyMDIzLTA5LTE3VDE2OjQ0OjIyKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz57vRudAAAEk0lEQVRYhe3ZW0jbVxzA8e8/MX+NYnG9uI4xE3bvoLt0FzradRfGBtsYo32YdAhb6WQyBqV7KOylpYjzZShDGfjmyxgbgjjwyRm16SYMhgiNKDhbL3VtNF4xJOnf3x7+59i/Wf4aTbInf3AwJMdzPjnnf/n9/jFEhGzDMIxMb3uAIsDs6ek5urS05Dtz5syE+uwekAQS6u89YD19gC0NIpJ1c8GZQHlXV9fJRCIxGo/HxxoaGj4CngWOAEGgEihXfT07MeQC3MB1dna+lkgkRkXF6urq3xcuXPgUOAE8DzwGPOiGLARwEy4ej4+JiITD4elr167NiIgsLi7eqq2trQPeBI4Bj7sh8w10xZmmeds0zdn+/v5/RERisdjUuXPnvgLeAl50Q+YTaAA+oKy7u/uE3laNAwSQ4uLiu6FQ6G4G5DG13YeAMjWWkU+gBygJhULHNe769etTTpwDGXUiz58//yXwujp5qoAHgBLAk0+gNxKJHEulUiMKN2ma5gwgPp/vjhOXjlxYWJisq6urBV5RW30IKAW8eQPGYrGjlmXdEBEZHBy8aZrmFCCmac729fVtAHt7e6MO5N2+vr47IiJLS0s3L126dBZ4Sh2LZUBRwVdwYGBgVuwOYh/zsoF0bnPBVzDTMRgOh6dFhROokSIi8/Pz0+pEeaPQx+DGWdzV1XVSX2LcgCIic3NzMzU1NV8D7wIvq9WrLNRZvOk62NHRccqJTAdGo9Hb1dXV3wAfYt9VjgAPFfI66EQWAxU9PT0fuwEvXrzYBJwF3gFeAAJAhfrfrO4k/7lxZxnr2JlJqry8POnWyePx6H4JR0vhktVkHGOXQI20SkpKLLcOhmGsA5YCaZiVLS5XoADi9XpdkznDMERhnE0fCgUHZhvOW+CO4/8A5hR7wFxjD5hr7AFzjZyBlmVlrOYdYaS1HUUuQA/gWV9fd51URDyqn1c1j6MVFGjoidfW1oq2ABrYj0V82OmVzwHNajVdB88C5wOKTdM87NaxsrKyQsFKHC2BnTDo+/TWt8Bd5INeVC44NDT0xXYZdXNz8w/AaeyS8yjwCPdzQu92ht2m/OUjIyOfS1pkAoqItLS0fA+8D7wKPA0cxs6qC1O4T0xMfKYnb21tnXEDNjc3z+nXbW1t3wFvYz9dCAL7KUThHovFPtGTNjU1jQFSX18/lg68cuXKLUAaGxs3vkB7e/u3wHHgCQpUdnpTqdQvesJgMDisUVevXh3Xry9fvnxTv66qqprQ/cfHx/vVNj/J/couv0DAv7q6+pMDeYPNSalkwkUikX7s4ukl4FHgAODPN1CXnPsWFxd/dCAjW+GGhoZCwAfYpeczwMPAPjVW3gv3IvXN98disZ8dyBGNCwQC4/r94eHhfuy6+JS6zATUCeJXY+W9cNfIUuDAwsLCr05kIBDYeBQ8Ojr6h8Lpx25BtbWlGpfv62BG5PLy8m+SFpOTk38C76mVe84NVyhgOvLgysrK7xoXjUb/Uqt2XG1rEDiYCbcd0MgwsWtk+J1EI03An0wmw5Zlefx+/2n1eRKIO5r+rWTTpFsZ/gWFrGMmeObuqwAAAABJRU5ErkJggg==';
3
3
  export const CURSOR_DRAG_DEFAULT = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAApCAYAAABHomvIAAAEvUlEQVRYhc2Y20/cVRDHP8v+uKzAWkpDCtZq8BYhJkq8PBoJxgj7I2m0ryaSyFN9IT74pI8+8WJiggRj/APApFkSTGRJ+qKGUiyxbGPEWsUSuVhYC12Wy8+HmeMeYPe3d3WSye/k/M7le+bMzJkZ+J9ToEJreGVYN+vihcytstjQocUlAw0WCSoIVCv3Ae8CXwIt+u8XHVeOG8qLqgAHqAFCQCNwGugCthBJGd7S/tM6LqTzHI5KuqzgaoAHgEvAtwrkG2AG8FzXvep5nue67lX9N6P/PR1/SefXlBtkFXKNDUA/RyX1D9uUbYzOb9D1ygbSQU7eDMxhSSsSiVz3AxiJRK57nuf19/fPad8coqONFCBJPyUOIKc1OvcbgiY9ICDT8+0DHge2gR0gBeyTtviM5HeKAGlrrfMZVwhdAVaAr4F3KNF4gkA9cBbowOc68+3LwDn1Mhdy4/OcYk54nPr6+m54nofruvPa9SFQ6wfQTweNgTwInAGuQWk6mEUvHwb+Au4Dexx7ffK9+0q+CHWIBIOZ9skHYKWfK9tQ8gZoLDjIyWCg3ORY+2T8aYOyg4EaRIFrkCs4QU1NTSvabC20zyIDzuyfkYzEahHX8jHwE/LwXwHeJ4P7KIVIu5ouxFDC+HgLAy4MfEF2v1UpgOezATSiNVf6EvAWsD01NXVtdnb2bk9Pz81sp/q3KIi8t83Ae4DX0tJy0z7t8PDwD4FAYIX/WILVwKMAzc3Nu/agoaGhzmg0ugcsV0hIvlSNoH8IuIiebHJycrls4sotwaxGYvueAPAjEg3jum79yMjIr5WUjFLOxMpBIopWoBN4GfhOJ+4NDg4ulVt6i4uLm7r+BvAscA4fCXrAAfJQJ5Fg8gPgMuCMjo62d3V1LW1sbKRKlpXSxMTEmjZ/5qQrOwHwUAGmkIjiHhJdfKrM/Pz8Y+3t7RvT09Ob5QAYi8X2tbmke2cEZwAaCdoAt5QvIzEbiUSitbe3tyoej++UCnBhYSGkzdu6d1aQxkgOkfwgieQMCeCu8iwSnpNKpcIdHR3BZDJ5UCy4SCSyvL6+/giiSou67wE+eYmhAKKkIaAJUdynkdflNcQF3dFTpooxjmg0aozDAz4DXkB8bxPy1OYM7QzIOuAU0AY8pQu9CrwJ3AK8UCj0RyHgZmZmli1w3wOvAM/oHo1kiZiygbSDh7PAE8DzQA/wBqKnnuM4a2NjY7dygbtw4cICRy31deBFJA09o7eWsU7kJ1KTLJmyRyOSn5zS70fAkwBtbW2/DwwMHHR3d9d3dnY2rK6u7o2Pj2/GYrH9eDzurK2tndM1vwI+QXT7T2BTD5skQz6SCyAcLRoZkGEFGQbeRqpbubK+BPA5MI14h00L3I6Cy2h4+eQbJsKuRa6iQcGFFfB5oBt4DpFsI+Ky7iDBxW3gBhBH/GtC+R7i1lKk3UxRAG2QpvxWr0AbtB3SA5jkx36djH/dVlDbyibN3M8GDvJPyI2PSulixm/u6kZ1OQCaJ/S+tndJX6tvsFBIxcCUdA3vW5ubxMrObc0hDMhd/Rqp5QQHxeW8dubnHGM7tzVv/IECMlxQ/bpcRfRMqaNRheNcUGG9XFWDACfzWs/6Fl3t/xtO//8gpbCORQAAAABJRU5ErkJggg==`;
4
4
  export const CURSOR_DRAG_ACTIVE = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAER0lEQVRYhe2YT2hjRRjAf8lL22xsNsm6EWKrSKvuIkIh+O9QRFxEW18KUsoe7FHoRaWCN1FPetOrIHgVKS0q9P5OxaJbodkalgVrtVZjS7Ntd02z6abPw3yzmaT585q+elj2g2HmvZn35jffN/PNNwP35R6XgM/fuif4n+dO2klQvgsaZRc4NJJvoJbHdhrIAkJAN2ADHwFfAw9J3ZoB/b9I0AA6A0SBc0Aa2EVpSqddeZ+QdmfkO+u0gIPSQQR4HfhRQH4AHMDNZDJXXNd1M5nMFalzdB3wJTAOPAD0yEB9066G6wXepVZTd5MpTdporZ6jVqsatmMJoTR3HvgJQ1u2bS+3ArRte9l1XXdsbGyJo1pdBN6Wf3d3ChlAmSQO9LeC8fquQRpDWaerHWSjSr1iu4BkJyOsF9u2s67rkslkluTVxygltAVsJBZqdCngEj5osIlW+4EYytRNF04jeu3vulCT+7QkLH20dEOhumft97pQI4s3+iiRSPwtxVSbd39J8eEGvzFXc1NAs8KSFAZeBt4AHgNeBFDWObkEAne7HAK2gT2gCFQatdca1GbtBj4E3veFprVYVLXXcg4GqM6588BbAMlkcm1qamqzr6/v6ikBet5RgiizJoDPAXdgYGDZXHkzMzPrrk9CdRWngUeAsxxdCzVwpgZ/BigWiz1mo4mJif7jqMajeJrU5hywgGvAej6fvzA0NLThN1Eul9uT4g5VTbYFNKUIfAbsZ7PZvuHh4Wt+As7Ozu5IcY2j219TQB0NV4A7qODgO4CFhYWLg4ODOb8AHccpG4A68m6pRQ1YAQ6A28A+8BXwBcDq6upTqVTquh+AuVyuW4q/opRRaQdZD1gCbgE3ge+BT4HdfD7/ZDwe/z2bzRY6hRsfH1/e3Nx8FDX/sgbgoZfvg6jo4ixqW7oIPA+8CrwHrAJuJBLJd+JaHMf5k6qmPgGeQe1SCenXk0/U21xcIC8AzwGvAJPAEuAmEon1xcXFba9w8/Pz5oqdB14CnpY+oij35km0qwmjwqAU8ISM9hIwBeQA17KsG9PT07+1gxsZGdmgdqW+BjwLDAAPoo4ALU+W9arVwWoIpXp9kouKZpPAO8AwQCwW+2d0dLQ0OTkZSafT0UKhUJ6bm9t2HKeysrIS3tra0g7+KvABUJC0g5rrJdRcbLpImtleRzYashc1P2OSXwbebDVykX3gW+Ab1AHqhuQ3pe6AJlFMO0CoPROHDcio5I8DL1A9C8dQbmod+APYAK4DvwjQnsDdErgyVTfTEaCG1GFYGHXG7TVSo2OkdvhlAflXoHSuNdfStFqaRhEi2kfdprrj6M5LAt0I8EDaaMdflPal48CB95hMr3Bt8h4jD0kyL5E0pN6dysZzW7N2AqjbmhdIZjJvufTOpE19x3g+9s1XJ/ck5tVbfdhu+rxDfLiSO+lFToCjZwrXyH2/0Lwv95z8B1jAqXmDnj4YAAAAAElFTkSuQmCC`;
5
+ export const CURSOR_RESIZE_ROTATE = `data:image/png;base64,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`;
@@ -0,0 +1,7 @@
1
+ import type { UtilEventEmitter, CoreEventMap } from '@idraw/types';
2
+ export declare class Cursor {
3
+ #private;
4
+ constructor(container: HTMLDivElement, opts: {
5
+ eventHub: UtilEventEmitter<CoreEventMap>;
6
+ });
7
+ }