@gedit/editor-2d 0.1.115 → 0.2.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.
- package/lib/browser/editor2d-context-key-service.js.map +1 -1
- package/lib/browser/editor2d-contribution.js.map +1 -1
- package/lib/browser/editor2d-label-provider.js.map +1 -1
- package/lib/browser/editor2d-model-provider.js.map +1 -1
- package/lib/browser/editor2d-ref-provider-contribution.d.ts +1 -1
- package/lib/browser/editor2d-ref-provider-contribution.d.ts.map +1 -1
- package/lib/browser/editor2d-ref-provider-contribution.js +8 -8
- package/lib/browser/editor2d-ref-provider-contribution.js.map +1 -1
- package/lib/browser/editor2d-service.js.map +1 -1
- package/lib/browser/model/editor2d-document.d.ts +45 -19
- package/lib/browser/model/editor2d-document.d.ts.map +1 -1
- package/lib/browser/model/editor2d-document.js +291 -70
- package/lib/browser/model/editor2d-document.js.map +1 -1
- package/lib/browser/model/editor2d-model.js.map +1 -1
- package/lib/browser/model/editor2d-selection.js.map +1 -1
- package/lib/browser/model/editor2d-widget.js.map +1 -1
- package/lib/browser/model/editor2d.d.ts +8 -4
- package/lib/browser/model/editor2d.d.ts.map +1 -1
- package/lib/browser/model/editor2d.js +23 -4
- package/lib/browser/model/editor2d.js.map +1 -1
- package/lib/browser/model/utils/anim.utils.d.ts +3 -0
- package/lib/browser/model/utils/anim.utils.d.ts.map +1 -1
- package/lib/browser/model/utils/anim.utils.js +10 -4
- package/lib/browser/model/utils/anim.utils.js.map +1 -1
- package/lib/browser/playground/canvas-draw.d.ts +8 -0
- package/lib/browser/playground/canvas-draw.d.ts.map +1 -1
- package/lib/browser/playground/canvas-draw.js +29 -15
- package/lib/browser/playground/canvas-draw.js.map +1 -1
- package/lib/browser/playground/canvas-layer.d.ts +10 -2
- package/lib/browser/playground/canvas-layer.d.ts.map +1 -1
- package/lib/browser/playground/canvas-layer.js +25 -2
- package/lib/browser/playground/canvas-layer.js.map +1 -1
- package/lib/browser/playground/entities/extend-entity.d.ts +10 -0
- package/lib/browser/playground/entities/extend-entity.d.ts.map +1 -0
- package/lib/browser/playground/entities/extend-entity.js +34 -0
- package/lib/browser/playground/entities/extend-entity.js.map +1 -0
- package/lib/browser/playground/entities/index.d.ts +1 -0
- package/lib/browser/playground/entities/index.d.ts.map +1 -1
- package/lib/browser/playground/entities/index.js +1 -0
- package/lib/browser/playground/entities/index.js.map +1 -1
- package/lib/browser/playground/extend-edit-layer-point-event.d.ts +30 -0
- package/lib/browser/playground/extend-edit-layer-point-event.d.ts.map +1 -0
- package/lib/browser/playground/extend-edit-layer-point-event.js +50 -0
- package/lib/browser/playground/extend-edit-layer-point-event.js.map +1 -0
- package/lib/browser/playground/extend-edit-layer.d.ts +38 -0
- package/lib/browser/playground/extend-edit-layer.d.ts.map +1 -0
- package/lib/browser/playground/extend-edit-layer.js +335 -0
- package/lib/browser/playground/extend-edit-layer.js.map +1 -0
- package/lib/browser/playground/index.d.ts +1 -0
- package/lib/browser/playground/index.d.ts.map +1 -1
- package/lib/browser/playground/index.js +1 -0
- package/lib/browser/playground/index.js.map +1 -1
- package/lib/browser/playground/path-edit-layer-move-point.d.ts +15 -0
- package/lib/browser/playground/path-edit-layer-move-point.d.ts.map +1 -0
- package/lib/browser/playground/path-edit-layer-move-point.js +47 -0
- package/lib/browser/playground/path-edit-layer-move-point.js.map +1 -0
- package/lib/browser/playground/path-edit-layer-svg-path.d.ts +11 -0
- package/lib/browser/playground/path-edit-layer-svg-path.d.ts.map +1 -0
- package/lib/browser/playground/path-edit-layer-svg-path.js +21 -0
- package/lib/browser/playground/path-edit-layer-svg-path.js.map +1 -0
- package/lib/browser/playground/path-edit-layer.d.ts +36 -0
- package/lib/browser/playground/path-edit-layer.d.ts.map +1 -0
- package/lib/browser/playground/path-edit-layer.js +257 -0
- package/lib/browser/playground/path-edit-layer.js.map +1 -0
- package/lib/browser/playground/playground-context.js.map +1 -1
- package/lib/browser/playground/playground-contribution.d.ts +2 -0
- package/lib/browser/playground/playground-contribution.d.ts.map +1 -1
- package/lib/browser/playground/playground-contribution.js +40 -3
- package/lib/browser/playground/playground-contribution.js.map +1 -1
- package/lib/browser/utils/snapshot.d.ts.map +1 -1
- package/lib/browser/utils/snapshot.js +1 -1
- package/lib/browser/utils/snapshot.js.map +1 -1
- package/package.json +9 -7
- package/src/browser/editor2d-ref-provider-contribution.ts +8 -8
- package/src/browser/model/editor2d-document.ts +278 -49
- package/src/browser/model/editor2d.ts +21 -5
- package/src/browser/model/utils/anim.utils.ts +9 -2
- package/src/browser/playground/canvas-draw.ts +31 -17
- package/src/browser/playground/canvas-layer.ts +25 -3
- package/src/browser/playground/entities/extend-entity.ts +37 -0
- package/src/browser/playground/entities/index.ts +1 -0
- package/src/browser/playground/extend-edit-layer-point-event.tsx +71 -0
- package/src/browser/playground/extend-edit-layer.tsx +442 -0
- package/src/browser/playground/index.ts +1 -0
- package/src/browser/playground/path-edit-layer-move-point.tsx +71 -0
- package/src/browser/playground/path-edit-layer-svg-path.tsx +50 -0
- package/src/browser/playground/path-edit-layer.tsx +330 -0
- package/src/browser/playground/playground-contribution.ts +37 -3
- package/src/browser/style/canvas-layer.css +16 -0
- package/src/browser/style/extend-edit-layer.less +127 -0
- package/src/browser/style/index.less +2 -1
- package/src/browser/style/path-edit-layer.less +72 -0
- package/src/browser/svg/pen+.svg +24 -0
- package/src/browser/utils/snapshot.ts +1 -0
- package/lib/browser/playground/canvas-draw-layer.d.ts +0 -22
- package/lib/browser/playground/canvas-draw-layer.d.ts.map +0 -1
- package/lib/browser/playground/canvas-draw-layer.js +0 -102
- package/lib/browser/playground/canvas-draw-layer.js.map +0 -1
- package/src/browser/playground/canvas-draw-layer.tsx +0 -88
- package/src/browser/style/canvas-draw-layer.less +0 -24
|
@@ -17,6 +17,7 @@ export interface CanvasDrawOpts {
|
|
|
17
17
|
renderEngine: RenderEngineIDEService,
|
|
18
18
|
assetsURI: string, // 资源地址
|
|
19
19
|
getComponentContent: (compId: string, parentNode: Editor2dNode) => Editor2dNode[] | undefined
|
|
20
|
+
isSnapshot?: boolean
|
|
20
21
|
isTemplate?: boolean
|
|
21
22
|
}
|
|
22
23
|
export interface CanvasDrawData {
|
|
@@ -86,6 +87,7 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
86
87
|
protected onDrawEmitter = new Emitter<GameConfig.SceneSizeConfig>();
|
|
87
88
|
protected onLoadingEmitter = new Emitter<CanvasDrawLoadingState>();
|
|
88
89
|
protected onGameObjectChangeEmitter = new Emitter<GameObjectChangeEvent>();
|
|
90
|
+
protected onRenderWidgetCreateEmitter = new Emitter<GameWidgetIDE>();
|
|
89
91
|
protected data?: CanvasDrawData;
|
|
90
92
|
private booted: boolean = false;
|
|
91
93
|
private libLoaded = false;
|
|
@@ -95,6 +97,7 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
95
97
|
readonly gameObjectCache: Map<string, GameObject> = new Map();
|
|
96
98
|
readonly nodeCache: Map<string, Editor2dNode> = new Map();
|
|
97
99
|
protected nodeVersionCache: Map<string, string> = new Map();
|
|
100
|
+
protected maskCache: Map<string, {mask?: string; isMask?: boolean; ignoreMask?: boolean }> = new Map();
|
|
98
101
|
protected lastRenderKeys: string[] = [];
|
|
99
102
|
protected renderWidgetDispose: Disposable | undefined;
|
|
100
103
|
protected pixelArt: boolean;
|
|
@@ -103,6 +106,7 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
103
106
|
readonly onDraw = this.onDrawEmitter.event;
|
|
104
107
|
readonly onLoading = this.onLoadingEmitter.event;
|
|
105
108
|
readonly onGameObjectChange = this.onGameObjectChangeEmitter.event;
|
|
109
|
+
readonly onRenderWidgetCreate = this.onRenderWidgetCreateEmitter.event;
|
|
106
110
|
loading = true;
|
|
107
111
|
constructor(
|
|
108
112
|
protected opts: CanvasDrawOpts,
|
|
@@ -112,6 +116,7 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
112
116
|
this.onDrawEmitter,
|
|
113
117
|
this.onLoadingEmitter,
|
|
114
118
|
this.onGameObjectChangeEmitter,
|
|
119
|
+
this.onRenderWidgetCreateEmitter,
|
|
115
120
|
]);
|
|
116
121
|
}
|
|
117
122
|
protected async startLoadLibs(): Promise<void> {
|
|
@@ -154,6 +159,7 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
154
159
|
canvas: element,
|
|
155
160
|
backgroundColor,
|
|
156
161
|
assetsURI: this.opts.assetsURI, // 资源路径
|
|
162
|
+
isSnapshot: this.opts.isSnapshot,
|
|
157
163
|
isIDE: true,
|
|
158
164
|
});
|
|
159
165
|
this.renderWidget.toDispose.push(Disposable.create(() => {
|
|
@@ -161,7 +167,8 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
161
167
|
this.renderWidgetDispose.dispose();
|
|
162
168
|
this.renderWidgetDispose = undefined;
|
|
163
169
|
}
|
|
164
|
-
|
|
170
|
+
element.remove();
|
|
171
|
+
// this.opts.host.removeChild(element);
|
|
165
172
|
this.renderWidget = undefined;
|
|
166
173
|
this.booted = false;
|
|
167
174
|
this.loading = true;
|
|
@@ -173,7 +180,8 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
173
180
|
});
|
|
174
181
|
}));
|
|
175
182
|
this.renderWidgetDispose = this.toDispose.push(this.renderWidget);
|
|
176
|
-
this.renderWidget.start().then(() => {
|
|
183
|
+
Promise.resolve(this.renderWidget.start()).then(() => {
|
|
184
|
+
this.onRenderWidgetCreateEmitter.fire(this.renderWidget!);
|
|
177
185
|
this.booted = true;
|
|
178
186
|
this.draw();
|
|
179
187
|
});
|
|
@@ -250,9 +258,11 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
250
258
|
if (!gameObject) {
|
|
251
259
|
const gameObjectChildren = children ? children.map(c => gameObjectCache.get(Editor2dNode.getNodePath(c))!) : [];
|
|
252
260
|
try {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
261
|
+
const d = { ...nodeData, id: nodePath, depth: currentDepth, parentId };
|
|
262
|
+
if (d.mask) {
|
|
263
|
+
d.mask = `${parentId}/${d.mask}`;
|
|
264
|
+
}
|
|
265
|
+
gameObject = scene.createAuto(d, gameObjectChildren);
|
|
256
266
|
} catch (e) {
|
|
257
267
|
console.error(e);
|
|
258
268
|
return depth;
|
|
@@ -262,6 +272,7 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
262
272
|
this.gameObjectCache.delete(nodePath);
|
|
263
273
|
this.nodeVersionCache.delete(nodePath);
|
|
264
274
|
this.nodeCache.delete(nodePath);
|
|
275
|
+
this.maskCache.delete(nodePath);
|
|
265
276
|
this.onGameObjectChangeEmitter.fire({ type: GameObjectEventType.DESTROY, gameObject: gameObject!, node: this.nodeCache.get(nodePath)! });
|
|
266
277
|
});
|
|
267
278
|
scene.onGameObjectUpdate(gameObject, () => {
|
|
@@ -273,6 +284,7 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
273
284
|
});
|
|
274
285
|
scene.onGameObjectCreate(gameObject, () => {
|
|
275
286
|
this.nodeVersionCache.set(nodePath, newVersion);
|
|
287
|
+
this.maskCache.set(nodePath, { mask: node.mask, isMask: node.isMask, ignoreMask: node.ignoreMask });
|
|
276
288
|
// 根节点创建完成则代表加载完成
|
|
277
289
|
this.fireLoading(Editor2dNode.isRootNode(this.nodeCache.get(nodePath)!));
|
|
278
290
|
});
|
|
@@ -292,11 +304,11 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
292
304
|
});
|
|
293
305
|
firstCreate = true;
|
|
294
306
|
}
|
|
295
|
-
if (gameObject && gameObject.
|
|
296
|
-
const oldTexture = gameObject.
|
|
297
|
-
const newTexture = nodeData.textureId;
|
|
307
|
+
if (gameObject && gameObject.needResource) {
|
|
308
|
+
const oldTexture = gameObject.data.textureId! || '';
|
|
309
|
+
const newTexture = nodeData.textureId || '';
|
|
298
310
|
// 素材更新则销毁重新创建
|
|
299
|
-
if (oldTexture !== newTexture) {
|
|
311
|
+
if (oldTexture.toString() !== newTexture.toString()) {
|
|
300
312
|
gameObject.dispose();
|
|
301
313
|
this.nodeCache.set(nodePath, node);
|
|
302
314
|
return this.updateGameObject(scene, node, currentDepth, renderKeys, isInside, parentId);
|
|
@@ -304,15 +316,22 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
304
316
|
}
|
|
305
317
|
const update = () => {
|
|
306
318
|
const oldVersion = this.nodeVersionCache.get(nodePath);
|
|
307
|
-
|
|
308
|
-
|
|
319
|
+
const oldMask = this.maskCache.get(nodePath);
|
|
320
|
+
const maskChange = oldMask?.mask !== node.mask || oldMask?.isMask !== node.isMask || oldMask?.ignoreMask !== node.ignoreMask;
|
|
321
|
+
if (nodeChanged || maskChange || oldVersion !== newVersion) {
|
|
322
|
+
const d = {
|
|
309
323
|
...nodeData,
|
|
310
324
|
parentId,
|
|
311
325
|
id: nodePath,
|
|
312
326
|
textureId: nodeData.textureId,
|
|
313
327
|
depth: currentDepth,
|
|
314
|
-
}
|
|
328
|
+
};
|
|
329
|
+
if (d.mask) {
|
|
330
|
+
d.mask = `${parentId}/${d.mask}`;
|
|
331
|
+
}
|
|
332
|
+
gameObject!.update(d);
|
|
315
333
|
this.nodeVersionCache.set(nodePath, newVersion);
|
|
334
|
+
this.maskCache.set(nodePath, { mask: node.mask, isMask: node.isMask, ignoreMask: node.ignoreMask });
|
|
316
335
|
}
|
|
317
336
|
};
|
|
318
337
|
if (!firstCreate && gameObject.created) {
|
|
@@ -388,11 +407,6 @@ export class CanvasDraw extends DisposableImpl {
|
|
|
388
407
|
* 加载scene的资源文件并渲染
|
|
389
408
|
*/
|
|
390
409
|
this.renderWidget.loadCurrentScene();
|
|
391
|
-
/**
|
|
392
|
-
* 动态计算画布宽高
|
|
393
|
-
*/
|
|
394
|
-
// const enlargeBounds = this.selectionEntityManager.getEntityEnlargeBounds(CANVAS_MIN_WIDTH, CANVAS_MIN_HEIGHT);
|
|
395
|
-
// this.renderWidget.updateCanvasBounds(enlargeBounds);
|
|
396
410
|
this.onDrawEmitter.fire(size);
|
|
397
411
|
}
|
|
398
412
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { entity, Layer } from '@gedit/playground';
|
|
1
|
+
import { entity, Layer, PipelineDimension } from '@gedit/playground';
|
|
2
2
|
import { DocumentEntity } from './entities';
|
|
3
3
|
import { domUtils } from '@gedit/utils/lib/browser';
|
|
4
4
|
import { PlaygroundContext2d } from './playground-context';
|
|
@@ -6,6 +6,8 @@ import { Editor2dDocument } from '../model';
|
|
|
6
6
|
import { Rectangle } from '@gedit/math';
|
|
7
7
|
import { SelectionEntityManager } from './selection-entity-manager';
|
|
8
8
|
import { CanvasDraw, CanvasDrawLoadingState, GameObjectChangeEvent, GameObjectEventType } from './canvas-draw';
|
|
9
|
+
import { debounce } from '@gedit/utils';
|
|
10
|
+
import { GameWidgetIDE } from '@gedit/render-engine-ide';
|
|
9
11
|
|
|
10
12
|
export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
11
13
|
@entity(DocumentEntity) documentEntity: DocumentEntity;
|
|
@@ -30,6 +32,7 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
30
32
|
});
|
|
31
33
|
this.toDispose.pushAll([
|
|
32
34
|
this.canvasDrawer,
|
|
35
|
+
this.canvasDrawer.onRenderWidgetCreate(this.onWidgetUpdate.bind(this)),
|
|
33
36
|
this.canvasDrawer.onGameObjectChange(this.onGameObjectChange.bind(this)),
|
|
34
37
|
this.canvasDrawer.onLoading(this.updateLoading.bind(this)),
|
|
35
38
|
this.listenPlaygroundEvent('mousedown', () => {
|
|
@@ -101,11 +104,30 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
101
104
|
}
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
|
-
|
|
105
|
-
onZoom(): void {
|
|
107
|
+
protected onWidgetUpdate(renderWidget: GameWidgetIDE): void {
|
|
106
108
|
const config = this.config.config;
|
|
107
109
|
this.canvasDrawer?.refreshScale(true, config.zoom);
|
|
110
|
+
renderWidget.onPlaygroundResize?.(config, config.scrollX, config.scrollY);
|
|
108
111
|
}
|
|
112
|
+
|
|
113
|
+
onZoom = debounce(() => {
|
|
114
|
+
const config = this.config.config;
|
|
115
|
+
this.canvasDrawer?.refreshScale(true, config.zoom);
|
|
116
|
+
});
|
|
117
|
+
onResize = debounce((size: PipelineDimension) => {
|
|
118
|
+
const renderWidget = this.canvasDrawer?.renderWidget;
|
|
119
|
+
if (renderWidget) {
|
|
120
|
+
const config = this.config.config;
|
|
121
|
+
renderWidget.onPlaygroundResize?.(size, config.scrollX, config.scrollY);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
onScroll = debounce((scroll: { scrollX: number; scrollY: number }) => {
|
|
125
|
+
const renderWidget = this.canvasDrawer?.renderWidget;
|
|
126
|
+
if (renderWidget) {
|
|
127
|
+
renderWidget.onPlaygroundScroll?.(scroll.scrollX, scroll.scrollY);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
109
131
|
private currentRectangle: Rectangle | undefined;
|
|
110
132
|
// private currentResolution = 1;
|
|
111
133
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ConfigEntity, EntityJSON } from '@gedit/playground';
|
|
2
|
+
|
|
3
|
+
export interface ExtendData {
|
|
4
|
+
selectColorUUid?: string
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export class ExtendEntity extends ConfigEntity<ExtendData> {
|
|
8
|
+
static type = 'ExtendConfigEntity';
|
|
9
|
+
getDefaultConfig(): ExtendData {
|
|
10
|
+
return {
|
|
11
|
+
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/*
|
|
15
|
+
/!**
|
|
16
|
+
* 会触发CanvasLayer刷新
|
|
17
|
+
* @param oldData
|
|
18
|
+
* @param newData
|
|
19
|
+
*!/
|
|
20
|
+
checkChanged(oldData: DocumentData, newData: Partial<DocumentData>): boolean {
|
|
21
|
+
// 只判断version变化
|
|
22
|
+
if (newData.document) {
|
|
23
|
+
return oldData.document !== newData.document || oldData.version !== newData.version;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
toJSON(): EntityJSON {
|
|
30
|
+
return {
|
|
31
|
+
type: this.type,
|
|
32
|
+
id: this.id,
|
|
33
|
+
ableList: this.ables.toJSON(),
|
|
34
|
+
dataList: []
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
export interface DifferProps {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
current: { x: number; y: number };
|
|
7
|
+
start: { x: number; y: number };
|
|
8
|
+
prev?: { x: number; y: number };
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface Props {
|
|
12
|
+
className?: string;
|
|
13
|
+
active?: boolean;
|
|
14
|
+
pointClassName?: string;
|
|
15
|
+
style?: React.CSSProperties;
|
|
16
|
+
pointStyle?: React.CSSProperties;
|
|
17
|
+
onChange?: (differ: DifferProps) => void;
|
|
18
|
+
onMouseDown?: (e: React.MouseEvent) => void;
|
|
19
|
+
onMouseUp?: (e: MouseEvent) => void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default (props: Props) => {
|
|
23
|
+
const startPoint = React.useRef<{ x: number; y: number }>();
|
|
24
|
+
const prevPoint = React.useRef<{ x: number; y: number }>();
|
|
25
|
+
const onMouseUp = (e: MouseEvent) => {
|
|
26
|
+
startPoint.current = undefined;
|
|
27
|
+
prevPoint.current = undefined;
|
|
28
|
+
window.removeEventListener('mousemove', onMouseMove);
|
|
29
|
+
window.removeEventListener('mouseup', onMouseUp);
|
|
30
|
+
props.onMouseUp?.(e);
|
|
31
|
+
};
|
|
32
|
+
const onMouseMove = (e: MouseEvent) => {
|
|
33
|
+
if (startPoint.current) {
|
|
34
|
+
const x = e.clientX;
|
|
35
|
+
const y = e.clientY;
|
|
36
|
+
props.onChange?.({
|
|
37
|
+
x: x - startPoint.current.x,
|
|
38
|
+
y: y - startPoint.current.y,
|
|
39
|
+
current: { x, y },
|
|
40
|
+
prev: prevPoint.current,
|
|
41
|
+
start: startPoint.current,
|
|
42
|
+
});
|
|
43
|
+
prevPoint.current = {
|
|
44
|
+
x: e.clientX,
|
|
45
|
+
y: e.clientY,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const onMouseDown = (e: React.MouseEvent) => {
|
|
50
|
+
startPoint.current = {
|
|
51
|
+
x: e.clientX,
|
|
52
|
+
y: e.clientY,
|
|
53
|
+
};
|
|
54
|
+
prevPoint.current = {
|
|
55
|
+
x: e.clientX,
|
|
56
|
+
y: e.clientY,
|
|
57
|
+
};
|
|
58
|
+
props.onMouseDown?.(e);
|
|
59
|
+
window.addEventListener('mousemove', onMouseMove);
|
|
60
|
+
window.addEventListener('mouseup', onMouseUp);
|
|
61
|
+
};
|
|
62
|
+
return (
|
|
63
|
+
<div className={props.className} style={props.style}>
|
|
64
|
+
<div
|
|
65
|
+
className={props.pointClassName}
|
|
66
|
+
style={props.pointStyle}
|
|
67
|
+
onMouseDown={onMouseDown}
|
|
68
|
+
/>
|
|
69
|
+
</div>
|
|
70
|
+
);
|
|
71
|
+
};
|