@open-draw/canvas 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +77 -2
- package/dist/a11y.d.ts +13 -0
- package/dist/a11y.d.ts.map +1 -0
- package/dist/a11y.js +41 -0
- package/dist/a11y.js.map +1 -0
- package/dist/camera.d.ts +96 -0
- package/dist/camera.d.ts.map +1 -0
- package/dist/camera.js +208 -0
- package/dist/camera.js.map +1 -0
- package/dist/capabilities/clipping/defs.d.ts +7 -0
- package/dist/capabilities/clipping/defs.d.ts.map +1 -0
- package/dist/capabilities/clipping/defs.js +2 -0
- package/dist/capabilities/clipping/defs.js.map +1 -0
- package/dist/capabilities/clipping/index.d.ts +3 -0
- package/dist/capabilities/clipping/index.d.ts.map +1 -0
- package/dist/capabilities/clipping/index.js +3 -0
- package/dist/capabilities/clipping/index.js.map +1 -0
- package/dist/capabilities/clipping/manager.d.ts +14 -0
- package/dist/capabilities/clipping/manager.d.ts.map +1 -0
- package/dist/capabilities/clipping/manager.js +75 -0
- package/dist/capabilities/clipping/manager.js.map +1 -0
- package/dist/capabilities/connector/defs.d.ts +9 -0
- package/dist/capabilities/connector/defs.d.ts.map +1 -0
- package/dist/capabilities/connector/defs.js +2 -0
- package/dist/capabilities/connector/defs.js.map +1 -0
- package/dist/capabilities/connector/index.d.ts +3 -0
- package/dist/capabilities/connector/index.d.ts.map +1 -0
- package/dist/capabilities/connector/index.js +3 -0
- package/dist/capabilities/connector/index.js.map +1 -0
- package/dist/capabilities/connector/manager.d.ts +19 -0
- package/dist/capabilities/connector/manager.d.ts.map +1 -0
- package/dist/capabilities/connector/manager.js +108 -0
- package/dist/capabilities/connector/manager.js.map +1 -0
- package/dist/capabilities/text-editing/defs.d.ts +2 -0
- package/dist/capabilities/text-editing/defs.d.ts.map +1 -0
- package/dist/capabilities/text-editing/defs.js +2 -0
- package/dist/capabilities/text-editing/defs.js.map +1 -0
- package/dist/capabilities/text-editing/index.d.ts +3 -0
- package/dist/capabilities/text-editing/index.d.ts.map +1 -0
- package/dist/capabilities/text-editing/index.js +3 -0
- package/dist/capabilities/text-editing/index.js.map +1 -0
- package/dist/capabilities/text-editing/manager.d.ts +20 -0
- package/dist/capabilities/text-editing/manager.d.ts.map +1 -0
- package/dist/capabilities/text-editing/manager.js +153 -0
- package/dist/capabilities/text-editing/manager.js.map +1 -0
- package/dist/editor.d.ts +94 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +241 -0
- package/dist/editor.js.map +1 -0
- package/dist/eraser/eraser.d.ts +21 -0
- package/dist/eraser/eraser.d.ts.map +1 -0
- package/dist/eraser/eraser.js +147 -0
- package/dist/eraser/eraser.js.map +1 -0
- package/dist/eraser/index.d.ts +2 -0
- package/dist/eraser/index.d.ts.map +1 -0
- package/dist/eraser/index.js +2 -0
- package/dist/eraser/index.js.map +1 -0
- package/dist/export/index.d.ts +2 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +2 -0
- package/dist/export/index.js.map +1 -0
- package/dist/export/png.d.ts +17 -0
- package/dist/export/png.d.ts.map +1 -0
- package/dist/export/png.js +130 -0
- package/dist/export/png.js.map +1 -0
- package/dist/gesture/gesture.d.ts +36 -0
- package/dist/gesture/gesture.d.ts.map +1 -0
- package/dist/gesture/gesture.js +268 -0
- package/dist/gesture/gesture.js.map +1 -0
- package/dist/gesture/index.d.ts +2 -0
- package/dist/gesture/index.d.ts.map +1 -0
- package/dist/gesture/index.js +2 -0
- package/dist/gesture/index.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/input/commands.d.ts +12 -0
- package/dist/input/commands.d.ts.map +1 -0
- package/dist/input/commands.js +195 -0
- package/dist/input/commands.js.map +1 -0
- package/dist/input/index.d.ts +5 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +5 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/keyboard.d.ts +13 -0
- package/dist/input/keyboard.d.ts.map +1 -0
- package/dist/input/keyboard.js +83 -0
- package/dist/input/keyboard.js.map +1 -0
- package/dist/input/keymap.d.ts +10 -0
- package/dist/input/keymap.d.ts.map +1 -0
- package/dist/input/keymap.js +75 -0
- package/dist/input/keymap.js.map +1 -0
- package/dist/input/utils.d.ts +5 -0
- package/dist/input/utils.d.ts.map +1 -0
- package/dist/input/utils.js +4 -0
- package/dist/input/utils.js.map +1 -0
- package/dist/interaction.d.ts +29 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +248 -0
- package/dist/interaction.js.map +1 -0
- package/dist/perf/index.d.ts +2 -0
- package/dist/perf/index.d.ts.map +1 -0
- package/dist/perf/index.js +2 -0
- package/dist/perf/index.js.map +1 -0
- package/dist/perf/telemetry.d.ts +33 -0
- package/dist/perf/telemetry.d.ts.map +1 -0
- package/dist/perf/telemetry.js +145 -0
- package/dist/perf/telemetry.js.map +1 -0
- package/dist/registry.d.ts +68 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +34 -0
- package/dist/registry.js.map +1 -0
- package/dist/renderer.d.ts +29 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +257 -0
- package/dist/renderer.js.map +1 -0
- package/dist/selection/defs.d.ts +6 -0
- package/dist/selection/defs.d.ts.map +1 -0
- package/dist/selection/defs.js +2 -0
- package/dist/selection/defs.js.map +1 -0
- package/dist/selection/group.d.ts +7 -0
- package/dist/selection/group.d.ts.map +1 -0
- package/dist/selection/group.js +25 -0
- package/dist/selection/group.js.map +1 -0
- package/dist/selection/handles.d.ts +9 -0
- package/dist/selection/handles.d.ts.map +1 -0
- package/dist/selection/handles.js +19 -0
- package/dist/selection/handles.js.map +1 -0
- package/dist/selection/handlesView.d.ts +4 -0
- package/dist/selection/handlesView.d.ts.map +1 -0
- package/dist/selection/handlesView.js +98 -0
- package/dist/selection/handlesView.js.map +1 -0
- package/dist/selection/index.d.ts +10 -0
- package/dist/selection/index.d.ts.map +1 -0
- package/dist/selection/index.js +10 -0
- package/dist/selection/index.js.map +1 -0
- package/dist/selection/manager.d.ts +29 -0
- package/dist/selection/manager.d.ts.map +1 -0
- package/dist/selection/manager.js +195 -0
- package/dist/selection/manager.js.map +1 -0
- package/dist/selection/marquee.d.ts +11 -0
- package/dist/selection/marquee.d.ts.map +1 -0
- package/dist/selection/marquee.js +52 -0
- package/dist/selection/marquee.js.map +1 -0
- package/dist/selection/reparent.d.ts +12 -0
- package/dist/selection/reparent.d.ts.map +1 -0
- package/dist/selection/reparent.js +57 -0
- package/dist/selection/reparent.js.map +1 -0
- package/dist/selection/resize.d.ts +10 -0
- package/dist/selection/resize.d.ts.map +1 -0
- package/dist/selection/resize.js +66 -0
- package/dist/selection/resize.js.map +1 -0
- package/dist/selection/rotate.d.ts +18 -0
- package/dist/selection/rotate.d.ts.map +1 -0
- package/dist/selection/rotate.js +39 -0
- package/dist/selection/rotate.js.map +1 -0
- package/dist/shapes/arrow/defs.d.ts +17 -0
- package/dist/shapes/arrow/defs.d.ts.map +1 -0
- package/dist/shapes/arrow/defs.js +7 -0
- package/dist/shapes/arrow/defs.js.map +1 -0
- package/dist/shapes/arrow/geometry.d.ts +11 -0
- package/dist/shapes/arrow/geometry.d.ts.map +1 -0
- package/dist/shapes/arrow/geometry.js +77 -0
- package/dist/shapes/arrow/geometry.js.map +1 -0
- package/dist/shapes/arrow/index.d.ts +7 -0
- package/dist/shapes/arrow/index.d.ts.map +1 -0
- package/dist/shapes/arrow/index.js +23 -0
- package/dist/shapes/arrow/index.js.map +1 -0
- package/dist/shapes/arrow/render.d.ts +6 -0
- package/dist/shapes/arrow/render.d.ts.map +1 -0
- package/dist/shapes/arrow/render.js +84 -0
- package/dist/shapes/arrow/render.js.map +1 -0
- package/dist/shapes/ellipse/defs.d.ts +8 -0
- package/dist/shapes/ellipse/defs.d.ts.map +1 -0
- package/dist/shapes/ellipse/defs.js +2 -0
- package/dist/shapes/ellipse/defs.js.map +1 -0
- package/dist/shapes/ellipse/geometry.d.ts +9 -0
- package/dist/shapes/ellipse/geometry.d.ts.map +1 -0
- package/dist/shapes/ellipse/geometry.js +74 -0
- package/dist/shapes/ellipse/geometry.js.map +1 -0
- package/dist/shapes/ellipse/index.d.ts +7 -0
- package/dist/shapes/ellipse/index.d.ts.map +1 -0
- package/dist/shapes/ellipse/index.js +21 -0
- package/dist/shapes/ellipse/index.js.map +1 -0
- package/dist/shapes/ellipse/render.d.ts +6 -0
- package/dist/shapes/ellipse/render.d.ts.map +1 -0
- package/dist/shapes/ellipse/render.js +39 -0
- package/dist/shapes/ellipse/render.js.map +1 -0
- package/dist/shapes/frame/defs.d.ts +9 -0
- package/dist/shapes/frame/defs.d.ts.map +1 -0
- package/dist/shapes/frame/defs.js +8 -0
- package/dist/shapes/frame/defs.js.map +1 -0
- package/dist/shapes/frame/geometry.d.ts +4 -0
- package/dist/shapes/frame/geometry.d.ts.map +1 -0
- package/dist/shapes/frame/geometry.js +66 -0
- package/dist/shapes/frame/geometry.js.map +1 -0
- package/dist/shapes/frame/index.d.ts +7 -0
- package/dist/shapes/frame/index.d.ts.map +1 -0
- package/dist/shapes/frame/index.js +20 -0
- package/dist/shapes/frame/index.js.map +1 -0
- package/dist/shapes/frame/render.d.ts +6 -0
- package/dist/shapes/frame/render.d.ts.map +1 -0
- package/dist/shapes/frame/render.js +73 -0
- package/dist/shapes/frame/render.js.map +1 -0
- package/dist/shapes/group/defs.d.ts +6 -0
- package/dist/shapes/group/defs.d.ts.map +1 -0
- package/dist/shapes/group/defs.js +2 -0
- package/dist/shapes/group/defs.js.map +1 -0
- package/dist/shapes/group/geometry.d.ts +8 -0
- package/dist/shapes/group/geometry.d.ts.map +1 -0
- package/dist/shapes/group/geometry.js +19 -0
- package/dist/shapes/group/geometry.js.map +1 -0
- package/dist/shapes/group/index.d.ts +7 -0
- package/dist/shapes/group/index.d.ts.map +1 -0
- package/dist/shapes/group/index.js +23 -0
- package/dist/shapes/group/index.js.map +1 -0
- package/dist/shapes/group/render.d.ts +6 -0
- package/dist/shapes/group/render.d.ts.map +1 -0
- package/dist/shapes/group/render.js +9 -0
- package/dist/shapes/group/render.js.map +1 -0
- package/dist/shapes/image/defs.d.ts +10 -0
- package/dist/shapes/image/defs.d.ts.map +1 -0
- package/dist/shapes/image/defs.js +2 -0
- package/dist/shapes/image/defs.js.map +1 -0
- package/dist/shapes/image/geometry.d.ts +21 -0
- package/dist/shapes/image/geometry.d.ts.map +1 -0
- package/dist/shapes/image/geometry.js +79 -0
- package/dist/shapes/image/geometry.js.map +1 -0
- package/dist/shapes/image/handlers.d.ts +10 -0
- package/dist/shapes/image/handlers.d.ts.map +1 -0
- package/dist/shapes/image/handlers.js +85 -0
- package/dist/shapes/image/handlers.js.map +1 -0
- package/dist/shapes/image/index.d.ts +8 -0
- package/dist/shapes/image/index.d.ts.map +1 -0
- package/dist/shapes/image/index.js +21 -0
- package/dist/shapes/image/index.js.map +1 -0
- package/dist/shapes/image/render.d.ts +6 -0
- package/dist/shapes/image/render.d.ts.map +1 -0
- package/dist/shapes/image/render.js +28 -0
- package/dist/shapes/image/render.js.map +1 -0
- package/dist/shapes/ink/defs.d.ts +10 -0
- package/dist/shapes/ink/defs.d.ts.map +1 -0
- package/dist/shapes/ink/defs.js +13 -0
- package/dist/shapes/ink/defs.js.map +1 -0
- package/dist/shapes/ink/geometry.d.ts +4 -0
- package/dist/shapes/ink/geometry.d.ts.map +1 -0
- package/dist/shapes/ink/geometry.js +67 -0
- package/dist/shapes/ink/geometry.js.map +1 -0
- package/dist/shapes/ink/index.d.ts +9 -0
- package/dist/shapes/ink/index.d.ts.map +1 -0
- package/dist/shapes/ink/index.js +22 -0
- package/dist/shapes/ink/index.js.map +1 -0
- package/dist/shapes/ink/rdp.d.ts +2 -0
- package/dist/shapes/ink/rdp.d.ts.map +1 -0
- package/dist/shapes/ink/rdp.js +37 -0
- package/dist/shapes/ink/rdp.js.map +1 -0
- package/dist/shapes/ink/render.d.ts +7 -0
- package/dist/shapes/ink/render.d.ts.map +1 -0
- package/dist/shapes/ink/render.js +81 -0
- package/dist/shapes/ink/render.js.map +1 -0
- package/dist/shapes/note/defs.d.ts +7 -0
- package/dist/shapes/note/defs.d.ts.map +1 -0
- package/dist/shapes/note/defs.js +2 -0
- package/dist/shapes/note/defs.js.map +1 -0
- package/dist/shapes/note/geometry.d.ts +11 -0
- package/dist/shapes/note/geometry.d.ts.map +1 -0
- package/dist/shapes/note/geometry.js +70 -0
- package/dist/shapes/note/geometry.js.map +1 -0
- package/dist/shapes/note/index.d.ts +7 -0
- package/dist/shapes/note/index.d.ts.map +1 -0
- package/dist/shapes/note/index.js +41 -0
- package/dist/shapes/note/index.js.map +1 -0
- package/dist/shapes/note/render.d.ts +6 -0
- package/dist/shapes/note/render.d.ts.map +1 -0
- package/dist/shapes/note/render.js +38 -0
- package/dist/shapes/note/render.js.map +1 -0
- package/dist/shapes/rect/defs.d.ts +9 -0
- package/dist/shapes/rect/defs.d.ts.map +1 -0
- package/dist/shapes/rect/defs.js +2 -0
- package/dist/shapes/rect/defs.js.map +1 -0
- package/dist/shapes/rect/geometry.d.ts +9 -0
- package/dist/shapes/rect/geometry.d.ts.map +1 -0
- package/dist/shapes/rect/geometry.js +68 -0
- package/dist/shapes/rect/geometry.js.map +1 -0
- package/dist/shapes/rect/index.d.ts +7 -0
- package/dist/shapes/rect/index.d.ts.map +1 -0
- package/dist/shapes/rect/index.js +22 -0
- package/dist/shapes/rect/index.js.map +1 -0
- package/dist/shapes/rect/render.d.ts +6 -0
- package/dist/shapes/rect/render.d.ts.map +1 -0
- package/dist/shapes/rect/render.js +42 -0
- package/dist/shapes/rect/render.js.map +1 -0
- package/dist/shapes/text/defs.d.ts +9 -0
- package/dist/shapes/text/defs.d.ts.map +1 -0
- package/dist/shapes/text/defs.js +2 -0
- package/dist/shapes/text/defs.js.map +1 -0
- package/dist/shapes/text/geometry.d.ts +9 -0
- package/dist/shapes/text/geometry.d.ts.map +1 -0
- package/dist/shapes/text/geometry.js +68 -0
- package/dist/shapes/text/geometry.js.map +1 -0
- package/dist/shapes/text/index.d.ts +7 -0
- package/dist/shapes/text/index.d.ts.map +1 -0
- package/dist/shapes/text/index.js +43 -0
- package/dist/shapes/text/index.js.map +1 -0
- package/dist/shapes/text/render.d.ts +6 -0
- package/dist/shapes/text/render.d.ts.map +1 -0
- package/dist/shapes/text/render.js +23 -0
- package/dist/shapes/text/render.js.map +1 -0
- package/dist/store/index.d.ts +5 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +5 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/snapshot.d.ts +5 -0
- package/dist/store/snapshot.d.ts.map +1 -0
- package/dist/store/snapshot.js +76 -0
- package/dist/store/snapshot.js.map +1 -0
- package/dist/store/store.d.ts +52 -0
- package/dist/store/store.d.ts.map +1 -0
- package/dist/store/store.js +252 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/types.d.ts +13 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +2 -0
- package/dist/store/types.js.map +1 -0
- package/dist/store/zorder.d.ts +4 -0
- package/dist/store/zorder.d.ts.map +1 -0
- package/dist/store/zorder.js +53 -0
- package/dist/store/zorder.js.map +1 -0
- package/package.json +29 -4
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Point, ShapeId, ShapeRecord } from '@open-draw/schema';
|
|
2
|
+
import type { CanvasEditor } from '../editor.js';
|
|
3
|
+
import type { HandleType } from '../selection/handles.js';
|
|
4
|
+
export type GestureType = 'none' | 'move' | 'resize' | 'rotate';
|
|
5
|
+
export declare class GestureController {
|
|
6
|
+
private editor;
|
|
7
|
+
private currentType;
|
|
8
|
+
private targetShapeId;
|
|
9
|
+
private handleType;
|
|
10
|
+
private startPointer;
|
|
11
|
+
private initialBounds;
|
|
12
|
+
private initialShapes;
|
|
13
|
+
private previewShapes;
|
|
14
|
+
private candidateFrameId;
|
|
15
|
+
private hasMoved;
|
|
16
|
+
constructor(editor: CanvasEditor);
|
|
17
|
+
get isActive(): boolean;
|
|
18
|
+
get type(): GestureType;
|
|
19
|
+
get didMove(): boolean;
|
|
20
|
+
getPreviewShape(id: ShapeId): ShapeRecord | undefined;
|
|
21
|
+
startMove(clickedShapeId: ShapeId, startPointer: Point): boolean;
|
|
22
|
+
startResize(handleType: HandleType, shapeId: ShapeId, startPointer: Point): boolean;
|
|
23
|
+
startRotate(shapeId: ShapeId, startPointer: Point): boolean;
|
|
24
|
+
move(currentPointer: Point, e: PointerEvent | MouseEvent): void;
|
|
25
|
+
commit(): void;
|
|
26
|
+
cancel(): void;
|
|
27
|
+
private _moveShapes;
|
|
28
|
+
private _resizeShape;
|
|
29
|
+
private _rotateShape;
|
|
30
|
+
private _updateCandidateFrameHighlight;
|
|
31
|
+
private _clearFrameHighlight;
|
|
32
|
+
private _applyWillChange;
|
|
33
|
+
private _clearWillChange;
|
|
34
|
+
private _reset;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=gesture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gesture.d.ts","sourceRoot":"","sources":["../../src/gesture/gesture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAO1D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,MAAM,EAAE,YAAY,EAE/B;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAEpD;IAED,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,GAAG,OAAO,CAgC/D;IAED,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,GAAG,OAAO,CAkBlF;IAED,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,GAAG,OAAO,CAiB1D;IAED,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI,CA0B9D;IAED,MAAM,IAAI,IAAI,CA4Bb;IAED,MAAM,IAAI,IAAI,CAQb;IAED,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,8BAA8B;IAuBtC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,MAAM;CAWf"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { boundsCenter } from '@open-draw/schema';
|
|
2
|
+
import { resizeBounds } from '../selection/resize.js';
|
|
3
|
+
import { computeRotationAngle } from '../selection/rotate.js';
|
|
4
|
+
import { handleGestureReparent } from '../selection/reparent.js';
|
|
5
|
+
import { findSuggestedParent } from '../capabilities/clipping/index.js';
|
|
6
|
+
import { isGroupShape, getGroupMembers } from '../selection/group.js';
|
|
7
|
+
export class GestureController {
|
|
8
|
+
editor;
|
|
9
|
+
currentType = 'none';
|
|
10
|
+
targetShapeId = null;
|
|
11
|
+
handleType = null;
|
|
12
|
+
startPointer = null;
|
|
13
|
+
initialBounds = null;
|
|
14
|
+
initialShapes = new Map();
|
|
15
|
+
previewShapes = new Map();
|
|
16
|
+
candidateFrameId = null;
|
|
17
|
+
hasMoved = false;
|
|
18
|
+
constructor(editor) {
|
|
19
|
+
this.editor = editor;
|
|
20
|
+
}
|
|
21
|
+
get isActive() {
|
|
22
|
+
return this.currentType !== 'none';
|
|
23
|
+
}
|
|
24
|
+
get type() {
|
|
25
|
+
return this.currentType;
|
|
26
|
+
}
|
|
27
|
+
get didMove() {
|
|
28
|
+
return this.hasMoved;
|
|
29
|
+
}
|
|
30
|
+
getPreviewShape(id) {
|
|
31
|
+
return this.previewShapes.get(id);
|
|
32
|
+
}
|
|
33
|
+
startMove(clickedShapeId, startPointer) {
|
|
34
|
+
this._reset();
|
|
35
|
+
const shapesToMove = new Set();
|
|
36
|
+
for (const selId of this.editor.selection) {
|
|
37
|
+
shapesToMove.add(selId);
|
|
38
|
+
const shape = this.editor.store.getShape(selId);
|
|
39
|
+
if (shape && isGroupShape(shape, this.editor.registry)) {
|
|
40
|
+
for (const m of getGroupMembers(shape, this.editor.registry))
|
|
41
|
+
shapesToMove.add(m);
|
|
42
|
+
}
|
|
43
|
+
for (const candidate of this.editor.store.listShapes()) {
|
|
44
|
+
if (candidate.meta['parent'] === selId || candidate.meta['parentId'] === selId) {
|
|
45
|
+
shapesToMove.add(candidate.id);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (!shapesToMove.has(clickedShapeId))
|
|
50
|
+
shapesToMove.add(clickedShapeId);
|
|
51
|
+
for (const id of shapesToMove) {
|
|
52
|
+
const shape = this.editor.store.getShape(id);
|
|
53
|
+
if (shape) {
|
|
54
|
+
this.initialShapes.set(id, shape);
|
|
55
|
+
this.previewShapes.set(id, shape);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
this.currentType = 'move';
|
|
59
|
+
this.targetShapeId = clickedShapeId;
|
|
60
|
+
this.startPointer = startPointer;
|
|
61
|
+
this.hasMoved = false;
|
|
62
|
+
this._applyWillChange();
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
startResize(handleType, shapeId, startPointer) {
|
|
66
|
+
if (handleType === 'rotate')
|
|
67
|
+
return this.startRotate(shapeId, startPointer);
|
|
68
|
+
this._reset();
|
|
69
|
+
const shape = this.editor.store.getShape(shapeId);
|
|
70
|
+
if (!shape)
|
|
71
|
+
return false;
|
|
72
|
+
const def = this.editor.registry.get(shape.type);
|
|
73
|
+
if (!def)
|
|
74
|
+
return false;
|
|
75
|
+
this.initialShapes.set(shapeId, shape);
|
|
76
|
+
this.previewShapes.set(shapeId, shape);
|
|
77
|
+
this.initialBounds = def.geometry.bounds(shape);
|
|
78
|
+
this.handleType = handleType;
|
|
79
|
+
this.targetShapeId = shapeId;
|
|
80
|
+
this.startPointer = startPointer;
|
|
81
|
+
this.currentType = 'resize';
|
|
82
|
+
this.hasMoved = false;
|
|
83
|
+
this._applyWillChange();
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
startRotate(shapeId, startPointer) {
|
|
87
|
+
this._reset();
|
|
88
|
+
const shape = this.editor.store.getShape(shapeId);
|
|
89
|
+
if (!shape)
|
|
90
|
+
return false;
|
|
91
|
+
const def = this.editor.registry.get(shape.type);
|
|
92
|
+
if (!def)
|
|
93
|
+
return false;
|
|
94
|
+
this.initialShapes.set(shapeId, shape);
|
|
95
|
+
this.previewShapes.set(shapeId, shape);
|
|
96
|
+
this.initialBounds = def.geometry.bounds(shape);
|
|
97
|
+
this.handleType = 'rotate';
|
|
98
|
+
this.targetShapeId = shapeId;
|
|
99
|
+
this.startPointer = startPointer;
|
|
100
|
+
this.currentType = 'rotate';
|
|
101
|
+
this.hasMoved = false;
|
|
102
|
+
this._applyWillChange();
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
move(currentPointer, e) {
|
|
106
|
+
if (!this.isActive || !this.startPointer)
|
|
107
|
+
return;
|
|
108
|
+
const dx = currentPointer.x - this.startPointer.x;
|
|
109
|
+
const dy = currentPointer.y - this.startPointer.y;
|
|
110
|
+
if (this.currentType === 'rotate') {
|
|
111
|
+
this.hasMoved = true;
|
|
112
|
+
if (this.targetShapeId && this.initialBounds) {
|
|
113
|
+
this._rotateShape(currentPointer, e);
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (!this.hasMoved) {
|
|
118
|
+
if (Math.abs(dx) > 1 || Math.abs(dy) > 1) {
|
|
119
|
+
this.hasMoved = true;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (this.currentType === 'move') {
|
|
126
|
+
this._moveShapes(dx, dy);
|
|
127
|
+
}
|
|
128
|
+
else if (this.currentType === 'resize' && this.targetShapeId && this.initialBounds && this.handleType) {
|
|
129
|
+
this._resizeShape(dx, dy, e);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
commit() {
|
|
133
|
+
if (!this.isActive)
|
|
134
|
+
return;
|
|
135
|
+
this._clearFrameHighlight();
|
|
136
|
+
if (this.hasMoved && this.previewShapes.size > 0) {
|
|
137
|
+
const patches = new Map(this.previewShapes);
|
|
138
|
+
const gestureType = this.currentType;
|
|
139
|
+
const targetId = this.targetShapeId;
|
|
140
|
+
this.editor.store.transact(() => {
|
|
141
|
+
if (gestureType === 'move') {
|
|
142
|
+
for (const [id, preview] of patches) {
|
|
143
|
+
this.editor.store.updateShape(id, { x: preview.x, y: preview.y });
|
|
144
|
+
}
|
|
145
|
+
for (const id of this.editor.selection) {
|
|
146
|
+
handleGestureReparent(id, this.editor.store, this.editor.registry, this.editor.camera);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else if (gestureType === 'resize' && targetId) {
|
|
150
|
+
const p = patches.get(targetId);
|
|
151
|
+
if (p)
|
|
152
|
+
this.editor.store.updateShape(targetId, { x: p.x, y: p.y, rotation: p.rotation, props: p.props });
|
|
153
|
+
}
|
|
154
|
+
else if (gestureType === 'rotate' && targetId) {
|
|
155
|
+
const p = patches.get(targetId);
|
|
156
|
+
if (p)
|
|
157
|
+
this.editor.store.updateShape(targetId, { rotation: p.rotation });
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
this._reset();
|
|
162
|
+
}
|
|
163
|
+
cancel() {
|
|
164
|
+
if (!this.isActive)
|
|
165
|
+
return;
|
|
166
|
+
this._clearFrameHighlight();
|
|
167
|
+
for (const [id, initial] of this.initialShapes) {
|
|
168
|
+
this.editor.renderer.updatePreview(initial);
|
|
169
|
+
}
|
|
170
|
+
this._reset();
|
|
171
|
+
this.editor.selectionManager.updateVisuals(this.editor.renderer, this.editor.store, this.editor.registry, this.editor.camera.camera);
|
|
172
|
+
}
|
|
173
|
+
_moveShapes(dx, dy) {
|
|
174
|
+
for (const [id, initial] of this.initialShapes) {
|
|
175
|
+
const preview = { ...initial, x: initial.x + dx, y: initial.y + dy };
|
|
176
|
+
this.previewShapes.set(id, preview);
|
|
177
|
+
this.editor.renderer.updatePreview(preview);
|
|
178
|
+
}
|
|
179
|
+
this.editor.selectionManager.updateVisuals(this.editor.renderer, this.editor.store, this.editor.registry, this.editor.camera.camera);
|
|
180
|
+
this._updateCandidateFrameHighlight();
|
|
181
|
+
}
|
|
182
|
+
_resizeShape(dx, dy, e) {
|
|
183
|
+
const shape = this.initialShapes.get(this.targetShapeId);
|
|
184
|
+
const newBounds = resizeBounds(this.initialBounds, this.handleType, dx, dy, {
|
|
185
|
+
aspect: e.shiftKey,
|
|
186
|
+
fromCenter: e.altKey,
|
|
187
|
+
});
|
|
188
|
+
const def = this.editor.registry.get(shape.type);
|
|
189
|
+
if (!def)
|
|
190
|
+
return;
|
|
191
|
+
const patch = def.geometry.resize(shape, newBounds);
|
|
192
|
+
const preview = { ...shape, ...patch };
|
|
193
|
+
this.previewShapes.set(shape.id, preview);
|
|
194
|
+
this.editor.renderer.updatePreview(preview);
|
|
195
|
+
this.editor.selectionManager.updateVisuals(this.editor.renderer, this.editor.store, this.editor.registry, this.editor.camera.camera);
|
|
196
|
+
}
|
|
197
|
+
_rotateShape(currentPointer, e) {
|
|
198
|
+
const shape = this.initialShapes.get(this.targetShapeId);
|
|
199
|
+
const center = boundsCenter(this.initialBounds);
|
|
200
|
+
const snap = !e.shiftKey;
|
|
201
|
+
const angle = computeRotationAngle(center, currentPointer, { snap });
|
|
202
|
+
const preview = { ...shape, rotation: angle };
|
|
203
|
+
this.previewShapes.set(shape.id, preview);
|
|
204
|
+
this.editor.renderer.updatePreview(preview);
|
|
205
|
+
this.editor.selectionManager.updateVisuals(this.editor.renderer, this.editor.store, this.editor.registry, this.editor.camera.camera);
|
|
206
|
+
}
|
|
207
|
+
_updateCandidateFrameHighlight() {
|
|
208
|
+
if (this.currentType !== 'move' || this.editor.selection.length !== 1) {
|
|
209
|
+
this._clearFrameHighlight();
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
const selId = this.editor.selection[0];
|
|
213
|
+
const preview = this.previewShapes.get(selId);
|
|
214
|
+
if (!preview)
|
|
215
|
+
return;
|
|
216
|
+
const def = this.editor.registry.get(preview.type);
|
|
217
|
+
if (!def)
|
|
218
|
+
return;
|
|
219
|
+
const bounds = def.geometry.bounds(preview);
|
|
220
|
+
const suggested = findSuggestedParent(bounds, this.editor.store.listShapes(), this.editor.registry, selId);
|
|
221
|
+
const nextId = suggested?.id ?? null;
|
|
222
|
+
if (this.candidateFrameId !== nextId) {
|
|
223
|
+
this._clearFrameHighlight();
|
|
224
|
+
this.candidateFrameId = nextId;
|
|
225
|
+
if (this.candidateFrameId) {
|
|
226
|
+
this.editor.renderer.getShapeWrapper(this.candidateFrameId)?.classList.add('od-frame-target');
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
_clearFrameHighlight() {
|
|
231
|
+
if (this.candidateFrameId) {
|
|
232
|
+
this.editor.renderer.getShapeWrapper(this.candidateFrameId)?.classList.remove('od-frame-target');
|
|
233
|
+
this.candidateFrameId = null;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
_applyWillChange() {
|
|
237
|
+
for (const id of this.initialShapes.keys()) {
|
|
238
|
+
const el = this.editor.renderer.getShapeWrapper(id);
|
|
239
|
+
if (el)
|
|
240
|
+
el.style.willChange = 'transform';
|
|
241
|
+
const slot = this.editor.renderer.getOverlaySlot(id);
|
|
242
|
+
if (slot)
|
|
243
|
+
slot.style.willChange = 'transform';
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
_clearWillChange() {
|
|
247
|
+
for (const id of this.initialShapes.keys()) {
|
|
248
|
+
const el = this.editor.renderer.getShapeWrapper(id);
|
|
249
|
+
if (el)
|
|
250
|
+
el.style.willChange = '';
|
|
251
|
+
const slot = this.editor.renderer.getOverlaySlot(id);
|
|
252
|
+
if (slot)
|
|
253
|
+
slot.style.willChange = '';
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
_reset() {
|
|
257
|
+
this._clearWillChange();
|
|
258
|
+
this.currentType = 'none';
|
|
259
|
+
this.targetShapeId = null;
|
|
260
|
+
this.handleType = null;
|
|
261
|
+
this.startPointer = null;
|
|
262
|
+
this.initialBounds = null;
|
|
263
|
+
this.initialShapes.clear();
|
|
264
|
+
this.previewShapes.clear();
|
|
265
|
+
this.hasMoved = false;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=gesture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gesture.js","sourceRoot":"","sources":["../../src/gesture/gesture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gesture/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gesture/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @open-draw/canvas
|
|
3
|
+
* DOM Canvas engine — every shape a real SVG/DOM element.
|
|
4
|
+
*/
|
|
5
|
+
export * from './store/index.js';
|
|
6
|
+
export * from './camera.js';
|
|
7
|
+
export * from './editor.js';
|
|
8
|
+
export * from './renderer.js';
|
|
9
|
+
export * from './registry.js';
|
|
10
|
+
export * from './shapes/rect/index.js';
|
|
11
|
+
export * from './shapes/ellipse/index.js';
|
|
12
|
+
export * from './shapes/note/index.js';
|
|
13
|
+
export * from './shapes/image/index.js';
|
|
14
|
+
export * from './shapes/text/index.js';
|
|
15
|
+
export * from './shapes/frame/index.js';
|
|
16
|
+
export * from './shapes/arrow/index.js';
|
|
17
|
+
export * from './shapes/ink/index.js';
|
|
18
|
+
export * from './shapes/group/index.js';
|
|
19
|
+
export * from './capabilities/text-editing/index.js';
|
|
20
|
+
export * from './capabilities/clipping/index.js';
|
|
21
|
+
export * from './capabilities/connector/index.js';
|
|
22
|
+
export * from './selection/index.js';
|
|
23
|
+
export * from './input/index.js';
|
|
24
|
+
export * from './eraser/index.js';
|
|
25
|
+
export * from './gesture/index.js';
|
|
26
|
+
export * from './perf/index.js';
|
|
27
|
+
export * from './export/index.js';
|
|
28
|
+
export interface CanvasEngineOptions {
|
|
29
|
+
readonly readonly?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare class DOMCanvasEngine {
|
|
32
|
+
readonly options: CanvasEngineOptions;
|
|
33
|
+
constructor(options?: CanvasEngineOptions);
|
|
34
|
+
isReady(): boolean;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAElC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,eAAe;IAC1B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAEtC,YAAY,OAAO,GAAE,mBAAwB,EAE5C;IAED,OAAO,IAAI,OAAO,CAEjB;CACF"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @open-draw/canvas
|
|
3
|
+
* DOM Canvas engine — every shape a real SVG/DOM element.
|
|
4
|
+
*/
|
|
5
|
+
export * from './store/index.js';
|
|
6
|
+
export * from './camera.js';
|
|
7
|
+
export * from './editor.js';
|
|
8
|
+
export * from './renderer.js';
|
|
9
|
+
export * from './registry.js';
|
|
10
|
+
export * from './shapes/rect/index.js';
|
|
11
|
+
export * from './shapes/ellipse/index.js';
|
|
12
|
+
export * from './shapes/note/index.js';
|
|
13
|
+
export * from './shapes/image/index.js';
|
|
14
|
+
export * from './shapes/text/index.js';
|
|
15
|
+
export * from './shapes/frame/index.js';
|
|
16
|
+
export * from './shapes/arrow/index.js';
|
|
17
|
+
export * from './shapes/ink/index.js';
|
|
18
|
+
export * from './shapes/group/index.js';
|
|
19
|
+
export * from './capabilities/text-editing/index.js';
|
|
20
|
+
export * from './capabilities/clipping/index.js';
|
|
21
|
+
export * from './capabilities/connector/index.js';
|
|
22
|
+
export * from './selection/index.js';
|
|
23
|
+
export * from './input/index.js';
|
|
24
|
+
export * from './eraser/index.js';
|
|
25
|
+
export * from './gesture/index.js';
|
|
26
|
+
export * from './perf/index.js';
|
|
27
|
+
export * from './export/index.js';
|
|
28
|
+
export class DOMCanvasEngine {
|
|
29
|
+
options;
|
|
30
|
+
constructor(options = {}) {
|
|
31
|
+
this.options = options;
|
|
32
|
+
}
|
|
33
|
+
isReady() {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAMlC,MAAM,OAAO,eAAe;IACjB,OAAO,CAAsB;IAEtC,YAAY,OAAO,GAAwB,EAAE;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CanvasEditor } from '../editor.js';
|
|
2
|
+
import type { CommandId } from './keymap.js';
|
|
3
|
+
export declare function nudge(editor: CanvasEditor, dir: 'up' | 'down' | 'left' | 'right', amount: number): void;
|
|
4
|
+
export declare function deleteSelection(editor: CanvasEditor): void;
|
|
5
|
+
export declare function duplicateSelection(editor: CanvasEditor): void;
|
|
6
|
+
export declare function clipboardCopy(editor: CanvasEditor): void;
|
|
7
|
+
export declare function clipboardCut(editor: CanvasEditor): void;
|
|
8
|
+
export declare function clipboardPaste(editor: CanvasEditor): void;
|
|
9
|
+
export declare function zoomFit(editor: CanvasEditor): void;
|
|
10
|
+
export declare function zoomSelection(editor: CanvasEditor): void;
|
|
11
|
+
export declare function executeCommand(command: CommandId, editor: CanvasEditor): void;
|
|
12
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/input/commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAiC7C,wBAAgB,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA+BvG;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAU1D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAsB7D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAKxD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAGvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAkBzD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAKlD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAMxD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAkC7E"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
let lastNudgeTime = 0;
|
|
2
|
+
let lastNudgeDir = '';
|
|
3
|
+
let clipboard = [];
|
|
4
|
+
function computeUnionBounds(shapes, registry) {
|
|
5
|
+
let minX = Infinity;
|
|
6
|
+
let minY = Infinity;
|
|
7
|
+
let maxX = -Infinity;
|
|
8
|
+
let maxY = -Infinity;
|
|
9
|
+
for (const s of shapes) {
|
|
10
|
+
if (s.hidden)
|
|
11
|
+
continue;
|
|
12
|
+
const def = registry.get(s.type);
|
|
13
|
+
if (!def)
|
|
14
|
+
continue;
|
|
15
|
+
const b = def.geometry.bounds(s);
|
|
16
|
+
minX = Math.min(minX, b.x);
|
|
17
|
+
minY = Math.min(minY, b.y);
|
|
18
|
+
maxX = Math.max(maxX, b.x + b.width);
|
|
19
|
+
maxY = Math.max(maxY, b.y + b.height);
|
|
20
|
+
}
|
|
21
|
+
if (minX === Infinity)
|
|
22
|
+
return null;
|
|
23
|
+
return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };
|
|
24
|
+
}
|
|
25
|
+
function getViewportSize(editor) {
|
|
26
|
+
const container = editor.getShapeWrapper(editor.selection[0] ?? '')?.closest('.od-canvas-root') ?? null;
|
|
27
|
+
const rect = container?.getBoundingClientRect();
|
|
28
|
+
return { width: rect?.width || 800, height: rect?.height || 600 };
|
|
29
|
+
}
|
|
30
|
+
export function nudge(editor, dir, amount) {
|
|
31
|
+
const sel = editor.selection;
|
|
32
|
+
if (sel.length === 0)
|
|
33
|
+
return;
|
|
34
|
+
const screenDelta = {
|
|
35
|
+
x: dir === 'left' ? -amount : dir === 'right' ? amount : 0,
|
|
36
|
+
y: dir === 'up' ? -amount : dir === 'down' ? amount : 0,
|
|
37
|
+
};
|
|
38
|
+
const p0 = editor.camera.screenToPage({ x: 0, y: 0 });
|
|
39
|
+
const p1 = editor.camera.screenToPage(screenDelta);
|
|
40
|
+
const dx = p1.x - p0.x;
|
|
41
|
+
const dy = p1.y - p0.y;
|
|
42
|
+
const now = Date.now();
|
|
43
|
+
const shouldMerge = dir === lastNudgeDir && now - lastNudgeTime < 500;
|
|
44
|
+
lastNudgeTime = now;
|
|
45
|
+
lastNudgeDir = dir;
|
|
46
|
+
editor.store.transact(() => {
|
|
47
|
+
for (const id of sel) {
|
|
48
|
+
const s = editor.store.getShape(id);
|
|
49
|
+
if (s) {
|
|
50
|
+
editor.store.updateShape(id, { x: s.x + dx, y: s.y + dy });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
if (shouldMerge) {
|
|
55
|
+
editor.store.mergeLastHistoryEntry();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function deleteSelection(editor) {
|
|
59
|
+
const sel = [...editor.selection];
|
|
60
|
+
if (sel.length === 0)
|
|
61
|
+
return;
|
|
62
|
+
editor.store.transact(() => {
|
|
63
|
+
for (const id of sel) {
|
|
64
|
+
editor.deleteShape(id);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
editor.clearSelection();
|
|
68
|
+
}
|
|
69
|
+
export function duplicateSelection(editor) {
|
|
70
|
+
const sel = editor.selection;
|
|
71
|
+
if (sel.length === 0)
|
|
72
|
+
return;
|
|
73
|
+
const newIds = [];
|
|
74
|
+
editor.store.transact(() => {
|
|
75
|
+
for (const id of sel) {
|
|
76
|
+
const s = editor.store.getShape(id);
|
|
77
|
+
if (s) {
|
|
78
|
+
const copy = editor.createShape({
|
|
79
|
+
type: s.type,
|
|
80
|
+
x: s.x + 10,
|
|
81
|
+
y: s.y + 10,
|
|
82
|
+
rotation: s.rotation,
|
|
83
|
+
props: s.props,
|
|
84
|
+
meta: s.meta,
|
|
85
|
+
});
|
|
86
|
+
newIds.push(copy.id);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
editor.setSelection(newIds);
|
|
91
|
+
}
|
|
92
|
+
export function clipboardCopy(editor) {
|
|
93
|
+
clipboard = editor.selection
|
|
94
|
+
.map((id) => editor.store.getShape(id))
|
|
95
|
+
.filter(Boolean)
|
|
96
|
+
.map((s) => JSON.parse(JSON.stringify(s)));
|
|
97
|
+
}
|
|
98
|
+
export function clipboardCut(editor) {
|
|
99
|
+
clipboardCopy(editor);
|
|
100
|
+
deleteSelection(editor);
|
|
101
|
+
}
|
|
102
|
+
export function clipboardPaste(editor) {
|
|
103
|
+
if (clipboard.length === 0)
|
|
104
|
+
return;
|
|
105
|
+
const newIds = [];
|
|
106
|
+
editor.store.transact(() => {
|
|
107
|
+
for (const s of clipboard) {
|
|
108
|
+
const copy = editor.createShape({
|
|
109
|
+
type: s.type,
|
|
110
|
+
x: s.x + 10,
|
|
111
|
+
y: s.y + 10,
|
|
112
|
+
rotation: s.rotation,
|
|
113
|
+
props: s.props,
|
|
114
|
+
meta: s.meta,
|
|
115
|
+
});
|
|
116
|
+
newIds.push(copy.id);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
editor.setSelection(newIds);
|
|
120
|
+
}
|
|
121
|
+
export function zoomFit(editor) {
|
|
122
|
+
const bounds = computeUnionBounds(editor.store.listShapes(), editor.registry);
|
|
123
|
+
if (bounds) {
|
|
124
|
+
editor.camera.fitToBounds(bounds, getViewportSize(editor));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export function zoomSelection(editor) {
|
|
128
|
+
const shapes = editor.selection.map((id) => editor.store.getShape(id)).filter(Boolean);
|
|
129
|
+
const bounds = computeUnionBounds(shapes, editor.registry);
|
|
130
|
+
if (bounds) {
|
|
131
|
+
editor.camera.fitToBounds(bounds, getViewportSize(editor));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
export function executeCommand(command, editor) {
|
|
135
|
+
if (command === 'select-all')
|
|
136
|
+
return editor.selectAll();
|
|
137
|
+
if (command === 'clear-selection') {
|
|
138
|
+
if (editor.gesture.isActive) {
|
|
139
|
+
editor.gesture.cancel();
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
return editor.clearSelection();
|
|
143
|
+
}
|
|
144
|
+
if (command === 'cycle-forward')
|
|
145
|
+
return editor.cycleSelection('forward');
|
|
146
|
+
if (command === 'cycle-backward')
|
|
147
|
+
return editor.cycleSelection('backward');
|
|
148
|
+
if (command === 'nudge-up')
|
|
149
|
+
return nudge(editor, 'up', 1);
|
|
150
|
+
if (command === 'nudge-down')
|
|
151
|
+
return nudge(editor, 'down', 1);
|
|
152
|
+
if (command === 'nudge-left')
|
|
153
|
+
return nudge(editor, 'left', 1);
|
|
154
|
+
if (command === 'nudge-right')
|
|
155
|
+
return nudge(editor, 'right', 1);
|
|
156
|
+
if (command === 'nudge-up-big')
|
|
157
|
+
return nudge(editor, 'up', 10);
|
|
158
|
+
if (command === 'nudge-down-big')
|
|
159
|
+
return nudge(editor, 'down', 10);
|
|
160
|
+
if (command === 'nudge-left-big')
|
|
161
|
+
return nudge(editor, 'left', 10);
|
|
162
|
+
if (command === 'nudge-right-big')
|
|
163
|
+
return nudge(editor, 'right', 10);
|
|
164
|
+
if (command === 'delete')
|
|
165
|
+
return deleteSelection(editor);
|
|
166
|
+
if (command === 'duplicate')
|
|
167
|
+
return duplicateSelection(editor);
|
|
168
|
+
if (command === 'clipboard-copy')
|
|
169
|
+
return clipboardCopy(editor);
|
|
170
|
+
if (command === 'clipboard-cut')
|
|
171
|
+
return clipboardCut(editor);
|
|
172
|
+
if (command === 'clipboard-paste')
|
|
173
|
+
return clipboardPaste(editor);
|
|
174
|
+
if (command === 'undo')
|
|
175
|
+
return void editor.undo();
|
|
176
|
+
if (command === 'redo')
|
|
177
|
+
return void editor.redo();
|
|
178
|
+
if (command === 'zoom-reset')
|
|
179
|
+
return void editor.camera.reset();
|
|
180
|
+
if (command === 'zoom-fit')
|
|
181
|
+
return zoomFit(editor);
|
|
182
|
+
if (command === 'zoom-selection')
|
|
183
|
+
return zoomSelection(editor);
|
|
184
|
+
if (command === 'bring-to-front')
|
|
185
|
+
return editor.store.reorderShapes('front', editor.selection);
|
|
186
|
+
if (command === 'send-to-back')
|
|
187
|
+
return editor.store.reorderShapes('back', editor.selection);
|
|
188
|
+
if (command === 'bring-forward')
|
|
189
|
+
return editor.store.reorderShapes('forward', editor.selection);
|
|
190
|
+
if (command === 'send-backward')
|
|
191
|
+
return editor.store.reorderShapes('backward', editor.selection);
|
|
192
|
+
if (command.startsWith('tool-'))
|
|
193
|
+
return editor.setTool(command.slice(5));
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/input/commands.ts"],"names":[],"mappings":"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"}
|