@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CanvasEditor } from '../editor.js';
|
|
2
|
+
import { type KeyBinding } from './keymap.js';
|
|
3
|
+
export declare class KeyboardDispatcher {
|
|
4
|
+
private editor;
|
|
5
|
+
private keymap;
|
|
6
|
+
private target;
|
|
7
|
+
constructor(editor: CanvasEditor, customKeymap?: readonly KeyBinding[]);
|
|
8
|
+
attach(target?: HTMLElement | Window): void;
|
|
9
|
+
detach(): void;
|
|
10
|
+
private onKeyDown;
|
|
11
|
+
private matches;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=keyboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../src/input/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9D,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,MAAM,CAAqC;IAEnD,YAAY,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,SAAS,UAAU,EAAE,EAGrE;IAED,MAAM,CAAC,MAAM,GAAE,WAAW,GAAG,MAAe,GAAG,IAAI,CAGlD;IAED,MAAM,IAAI,IAAI,CAKb;IAED,OAAO,CAAC,SAAS,CAkDf;IAEF,OAAO,CAAC,OAAO;CAYhB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { executeCommand } from './commands.js';
|
|
2
|
+
import { DEFAULT_KEYMAP } from './keymap.js';
|
|
3
|
+
import { isMod } from './utils.js';
|
|
4
|
+
export class KeyboardDispatcher {
|
|
5
|
+
editor;
|
|
6
|
+
keymap;
|
|
7
|
+
target = null;
|
|
8
|
+
constructor(editor, customKeymap) {
|
|
9
|
+
this.editor = editor;
|
|
10
|
+
this.keymap = customKeymap ?? DEFAULT_KEYMAP;
|
|
11
|
+
}
|
|
12
|
+
attach(target = window) {
|
|
13
|
+
this.target = target;
|
|
14
|
+
target.addEventListener('keydown', this.onKeyDown);
|
|
15
|
+
}
|
|
16
|
+
detach() {
|
|
17
|
+
if (this.target) {
|
|
18
|
+
this.target.removeEventListener('keydown', this.onKeyDown);
|
|
19
|
+
this.target = null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
onKeyDown = (e) => {
|
|
23
|
+
// 1. Editing mode suspends all canvas shortcuts except Escape
|
|
24
|
+
if (this.editor.mode === 'editing') {
|
|
25
|
+
if (e.key === 'Escape') {
|
|
26
|
+
e.preventDefault();
|
|
27
|
+
this.editor.textEditing.commit();
|
|
28
|
+
}
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// 2. Ignore canvas shortcuts if an input, textarea, or contenteditable element has focus
|
|
32
|
+
const activeEl = typeof document !== 'undefined' ? document.activeElement : null;
|
|
33
|
+
if (activeEl &&
|
|
34
|
+
(activeEl.tagName === 'INPUT' ||
|
|
35
|
+
activeEl.tagName === 'TEXTAREA' ||
|
|
36
|
+
activeEl.isContentEditable)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// 3. Enter / Space selects focused shape wrapper (from keyboard navigation)
|
|
40
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
41
|
+
const shapeWrapper = activeEl?.classList?.contains('od-shape')
|
|
42
|
+
? activeEl
|
|
43
|
+
: (activeEl?.closest('.od-shape') ?? null);
|
|
44
|
+
const shapeId = shapeWrapper?.getAttribute('data-id');
|
|
45
|
+
if (shapeId) {
|
|
46
|
+
e.preventDefault();
|
|
47
|
+
this.editor.selectShape(shapeId);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// 4. Match against keymap
|
|
52
|
+
const eventMod = isMod(e);
|
|
53
|
+
for (const binding of this.keymap) {
|
|
54
|
+
if (this.matches(binding, e, eventMod)) {
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
executeCommand(binding.command, this.editor);
|
|
57
|
+
if (binding.command === 'cycle-forward' || binding.command === 'cycle-backward') {
|
|
58
|
+
const sel = this.editor.selection;
|
|
59
|
+
if (sel.length > 0) {
|
|
60
|
+
const wrapper = this.editor.getShapeWrapper(sel[sel.length - 1]);
|
|
61
|
+
wrapper?.focus();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
matches(b, e, eventMod) {
|
|
69
|
+
const keyMatches = b.key.length === 1
|
|
70
|
+
? e.key.toLowerCase() === b.key.toLowerCase()
|
|
71
|
+
: e.key === b.key;
|
|
72
|
+
if (!keyMatches)
|
|
73
|
+
return false;
|
|
74
|
+
if (b.mod !== undefined && b.mod !== eventMod)
|
|
75
|
+
return false;
|
|
76
|
+
if (b.shift !== undefined && b.shift !== e.shiftKey)
|
|
77
|
+
return false;
|
|
78
|
+
if (b.alt !== undefined && b.alt !== e.altKey)
|
|
79
|
+
return false;
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=keyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/input/keyboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type CommandId = 'select-all' | 'clear-selection' | 'cycle-forward' | 'cycle-backward' | 'nudge-up' | 'nudge-down' | 'nudge-left' | 'nudge-right' | 'nudge-up-big' | 'nudge-down-big' | 'nudge-left-big' | 'nudge-right-big' | 'delete' | 'duplicate' | 'clipboard-copy' | 'clipboard-cut' | 'clipboard-paste' | 'undo' | 'redo' | 'zoom-reset' | 'zoom-fit' | 'zoom-selection' | 'tool-select' | 'tool-rect' | 'tool-ellipse' | 'tool-text' | 'tool-frame' | 'tool-note' | 'tool-arrow' | 'tool-ink' | 'tool-eraser' | 'tool-pan' | 'tool-image' | 'bring-to-front' | 'send-to-back' | 'bring-forward' | 'send-backward';
|
|
2
|
+
export interface KeyBinding {
|
|
3
|
+
readonly key: string;
|
|
4
|
+
readonly mod?: boolean;
|
|
5
|
+
readonly shift?: boolean;
|
|
6
|
+
readonly alt?: boolean;
|
|
7
|
+
readonly command: CommandId;
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_KEYMAP: readonly KeyBinding[];
|
|
10
|
+
//# sourceMappingURL=keymap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keymap.d.ts","sourceRoot":"","sources":["../../src/input/keymap.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,QAAQ,GACR,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,MAAM,GACN,MAAM,GACN,YAAY,GACZ,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,WAAW,GACX,cAAc,GACd,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,UAAU,GACV,aAAa,GACb,UAAU,GACV,YAAY,GACZ,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,eAAe,CAAC;AAEpB,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,UAAU,EAgF/C,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export const DEFAULT_KEYMAP = [
|
|
2
|
+
// Selection
|
|
3
|
+
{ key: 'Tab', shift: false, command: 'cycle-forward' },
|
|
4
|
+
{ key: 'Tab', shift: true, command: 'cycle-backward' },
|
|
5
|
+
{ key: 'Escape', command: 'clear-selection' },
|
|
6
|
+
{ key: 'a', mod: true, command: 'select-all' },
|
|
7
|
+
{ key: 'A', mod: true, command: 'select-all' },
|
|
8
|
+
// Nudge
|
|
9
|
+
{ key: 'ArrowUp', shift: false, command: 'nudge-up' },
|
|
10
|
+
{ key: 'ArrowDown', shift: false, command: 'nudge-down' },
|
|
11
|
+
{ key: 'ArrowLeft', shift: false, command: 'nudge-left' },
|
|
12
|
+
{ key: 'ArrowRight', shift: false, command: 'nudge-right' },
|
|
13
|
+
{ key: 'ArrowUp', shift: true, command: 'nudge-up-big' },
|
|
14
|
+
{ key: 'ArrowDown', shift: true, command: 'nudge-down-big' },
|
|
15
|
+
{ key: 'ArrowLeft', shift: true, command: 'nudge-left-big' },
|
|
16
|
+
{ key: 'ArrowRight', shift: true, command: 'nudge-right-big' },
|
|
17
|
+
// Edit / Delete / Duplicate
|
|
18
|
+
{ key: 'Delete', command: 'delete' },
|
|
19
|
+
{ key: 'Backspace', command: 'delete' },
|
|
20
|
+
{ key: 'd', mod: true, command: 'duplicate' },
|
|
21
|
+
{ key: 'D', mod: true, command: 'duplicate' },
|
|
22
|
+
// Clipboard
|
|
23
|
+
{ key: 'c', mod: true, command: 'clipboard-copy' },
|
|
24
|
+
{ key: 'C', mod: true, command: 'clipboard-copy' },
|
|
25
|
+
{ key: 'x', mod: true, command: 'clipboard-cut' },
|
|
26
|
+
{ key: 'X', mod: true, command: 'clipboard-cut' },
|
|
27
|
+
{ key: 'v', mod: true, command: 'clipboard-paste' },
|
|
28
|
+
{ key: 'V', mod: true, command: 'clipboard-paste' },
|
|
29
|
+
// Undo / Redo
|
|
30
|
+
{ key: 'z', mod: true, shift: false, command: 'undo' },
|
|
31
|
+
{ key: 'Z', mod: true, shift: false, command: 'undo' },
|
|
32
|
+
{ key: 'z', mod: true, shift: true, command: 'redo' },
|
|
33
|
+
{ key: 'Z', mod: true, shift: true, command: 'redo' },
|
|
34
|
+
{ key: 'y', mod: true, command: 'redo' },
|
|
35
|
+
{ key: 'Y', mod: true, command: 'redo' },
|
|
36
|
+
// Zoom
|
|
37
|
+
{ key: '0', mod: true, command: 'zoom-reset' },
|
|
38
|
+
{ key: '1', shift: true, command: 'zoom-fit' },
|
|
39
|
+
{ key: '!', shift: true, command: 'zoom-fit' },
|
|
40
|
+
{ key: '2', shift: true, command: 'zoom-selection' },
|
|
41
|
+
{ key: '@', shift: true, command: 'zoom-selection' },
|
|
42
|
+
// Tools
|
|
43
|
+
{ key: 'v', mod: false, shift: false, alt: false, command: 'tool-select' },
|
|
44
|
+
{ key: 'V', mod: false, shift: false, alt: false, command: 'tool-select' },
|
|
45
|
+
{ key: 'r', mod: false, shift: false, alt: false, command: 'tool-rect' },
|
|
46
|
+
{ key: 'R', mod: false, shift: false, alt: false, command: 'tool-rect' },
|
|
47
|
+
{ key: 'o', mod: false, shift: false, alt: false, command: 'tool-ellipse' },
|
|
48
|
+
{ key: 'O', mod: false, shift: false, alt: false, command: 'tool-ellipse' },
|
|
49
|
+
{ key: 't', mod: false, shift: false, alt: false, command: 'tool-text' },
|
|
50
|
+
{ key: 'T', mod: false, shift: false, alt: false, command: 'tool-text' },
|
|
51
|
+
{ key: 'f', mod: false, shift: false, alt: false, command: 'tool-frame' },
|
|
52
|
+
{ key: 'F', mod: false, shift: false, alt: false, command: 'tool-frame' },
|
|
53
|
+
{ key: 'n', mod: false, shift: false, alt: false, command: 'tool-note' },
|
|
54
|
+
{ key: 'N', mod: false, shift: false, alt: false, command: 'tool-note' },
|
|
55
|
+
{ key: 'a', mod: false, shift: false, alt: false, command: 'tool-arrow' },
|
|
56
|
+
{ key: 'A', mod: false, shift: false, alt: false, command: 'tool-arrow' },
|
|
57
|
+
{ key: 'd', mod: false, shift: false, alt: false, command: 'tool-ink' },
|
|
58
|
+
{ key: 'D', mod: false, shift: false, alt: false, command: 'tool-ink' },
|
|
59
|
+
{ key: 'p', mod: false, shift: false, alt: false, command: 'tool-ink' },
|
|
60
|
+
{ key: 'P', mod: false, shift: false, alt: false, command: 'tool-ink' },
|
|
61
|
+
{ key: 'e', mod: false, shift: false, alt: false, command: 'tool-eraser' },
|
|
62
|
+
{ key: 'E', mod: false, shift: false, alt: false, command: 'tool-eraser' },
|
|
63
|
+
{ key: 'h', mod: false, shift: false, alt: false, command: 'tool-pan' },
|
|
64
|
+
{ key: 'H', mod: false, shift: false, alt: false, command: 'tool-pan' },
|
|
65
|
+
{ key: 'i', mod: false, shift: false, alt: false, command: 'tool-image' },
|
|
66
|
+
{ key: 'I', mod: false, shift: false, alt: false, command: 'tool-image' },
|
|
67
|
+
// Z-Order
|
|
68
|
+
{ key: ']', mod: true, shift: true, command: 'bring-to-front' },
|
|
69
|
+
{ key: '}', mod: true, shift: true, command: 'bring-to-front' },
|
|
70
|
+
{ key: '[', mod: true, shift: true, command: 'send-to-back' },
|
|
71
|
+
{ key: '{', mod: true, shift: true, command: 'send-to-back' },
|
|
72
|
+
{ key: ']', alt: true, command: 'bring-forward' },
|
|
73
|
+
{ key: '[', alt: true, command: 'send-backward' },
|
|
74
|
+
];
|
|
75
|
+
//# sourceMappingURL=keymap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keymap.js","sourceRoot":"","sources":["../../src/input/keymap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/input/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,CAAC,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAExE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/input/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,CAAyC;IAC7D,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CanvasEditor } from './editor.js';
|
|
2
|
+
export declare class PointerInteractionController {
|
|
3
|
+
private editor;
|
|
4
|
+
private container;
|
|
5
|
+
private eraser;
|
|
6
|
+
private clickedShapeId;
|
|
7
|
+
private lastPointerDownShift;
|
|
8
|
+
private cachedContainerRect;
|
|
9
|
+
private pendingPointerMove;
|
|
10
|
+
private rafMoveId;
|
|
11
|
+
private isMarquee;
|
|
12
|
+
private marqueeStart;
|
|
13
|
+
private isShiftMarquee;
|
|
14
|
+
private initialSelectionBeforeMarquee;
|
|
15
|
+
private marqueeOverlay;
|
|
16
|
+
private isDrawing;
|
|
17
|
+
private currentInkShapeId;
|
|
18
|
+
private currentInkPts;
|
|
19
|
+
constructor(editor: CanvasEditor);
|
|
20
|
+
attach(container: HTMLElement): void;
|
|
21
|
+
detach(): void;
|
|
22
|
+
private onPointerDown;
|
|
23
|
+
private onSelectPointerDown;
|
|
24
|
+
private onInkPointerDown;
|
|
25
|
+
private onShapeCreatePointerDown;
|
|
26
|
+
private onPointerMove;
|
|
27
|
+
private onPointerUp;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=interaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../src/interaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAShD,qBAAa,4BAA4B;IACvC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,MAAM,CAAyB;IAEvC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,mBAAmB,CAA8C;IACzE,OAAO,CAAC,kBAAkB,CAAuD;IACjF,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,6BAA6B,CAA0B;IAC/D,OAAO,CAAC,cAAc,CAAwB;IAE9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAAwB;IACjD,OAAO,CAAC,aAAa,CAAgB;IAErC,YAAY,MAAM,EAAE,YAAY,EAG/B;IAED,MAAM,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAKnC;IAED,MAAM,IAAI,IAAI,CAcb;IAED,OAAO,CAAC,aAAa,CAoBnB;IAEF,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,aAAa,CAiDnB;IAEF,OAAO,CAAC,WAAW,CA+CjB;CACH"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { findSuggestedParent } from './capabilities/clipping/index.js';
|
|
2
|
+
import { simplifyRDP } from './shapes/ink/index.js';
|
|
3
|
+
import { isMod } from './input/utils.js';
|
|
4
|
+
import { findGroupForMember } from './selection/group.js';
|
|
5
|
+
import { computeMarqueeBounds, findIntersectingShapes, MarqueeOverlay } from './selection/marquee.js';
|
|
6
|
+
import { StrokeEraserController } from './eraser/index.js';
|
|
7
|
+
export class PointerInteractionController {
|
|
8
|
+
editor;
|
|
9
|
+
container = null;
|
|
10
|
+
eraser;
|
|
11
|
+
clickedShapeId = null;
|
|
12
|
+
lastPointerDownShift = false;
|
|
13
|
+
cachedContainerRect = null;
|
|
14
|
+
pendingPointerMove = null;
|
|
15
|
+
rafMoveId = null;
|
|
16
|
+
isMarquee = false;
|
|
17
|
+
marqueeStart = null;
|
|
18
|
+
isShiftMarquee = false;
|
|
19
|
+
initialSelectionBeforeMarquee = [];
|
|
20
|
+
marqueeOverlay = new MarqueeOverlay();
|
|
21
|
+
isDrawing = false;
|
|
22
|
+
currentInkShapeId = null;
|
|
23
|
+
currentInkPts = [];
|
|
24
|
+
constructor(editor) {
|
|
25
|
+
this.editor = editor;
|
|
26
|
+
this.eraser = new StrokeEraserController(editor);
|
|
27
|
+
}
|
|
28
|
+
attach(container) {
|
|
29
|
+
this.container = container;
|
|
30
|
+
container.addEventListener('pointerdown', this.onPointerDown);
|
|
31
|
+
window.addEventListener('pointermove', this.onPointerMove);
|
|
32
|
+
window.addEventListener('pointerup', this.onPointerUp);
|
|
33
|
+
}
|
|
34
|
+
detach() {
|
|
35
|
+
if (this.container) {
|
|
36
|
+
this.container.removeEventListener('pointerdown', this.onPointerDown);
|
|
37
|
+
this.container = null;
|
|
38
|
+
}
|
|
39
|
+
window.removeEventListener('pointermove', this.onPointerMove);
|
|
40
|
+
window.removeEventListener('pointerup', this.onPointerUp);
|
|
41
|
+
if (this.rafMoveId !== null && typeof cancelAnimationFrame !== 'undefined') {
|
|
42
|
+
cancelAnimationFrame(this.rafMoveId);
|
|
43
|
+
this.rafMoveId = null;
|
|
44
|
+
}
|
|
45
|
+
this.pendingPointerMove = null;
|
|
46
|
+
this.cachedContainerRect = null;
|
|
47
|
+
this.marqueeOverlay.hide();
|
|
48
|
+
}
|
|
49
|
+
onPointerDown = (e) => {
|
|
50
|
+
if (this.editor.mode === 'editing') {
|
|
51
|
+
this.editor.textEditing.commit();
|
|
52
|
+
}
|
|
53
|
+
const r = this.container?.getBoundingClientRect() ?? { left: 0, top: 0 };
|
|
54
|
+
this.cachedContainerRect = { left: r.left, top: r.top };
|
|
55
|
+
const screenPt = { x: e.clientX - r.left, y: e.clientY - r.top };
|
|
56
|
+
const pagePt = this.editor.camera.screenToPage(screenPt);
|
|
57
|
+
const activeTool = this.editor.getTool();
|
|
58
|
+
if (activeTool === 'select') {
|
|
59
|
+
this.onSelectPointerDown(e, pagePt);
|
|
60
|
+
}
|
|
61
|
+
else if (activeTool === 'eraser') {
|
|
62
|
+
this.eraser.start(pagePt);
|
|
63
|
+
}
|
|
64
|
+
else if (activeTool === 'ink' || activeTool === 'draw' || activeTool === 'highlighter') {
|
|
65
|
+
this.onInkPointerDown(activeTool, pagePt);
|
|
66
|
+
}
|
|
67
|
+
else if (this.editor.registry.has(activeTool)) {
|
|
68
|
+
this.onShapeCreatePointerDown(activeTool, pagePt);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
onSelectPointerDown(e, pagePt) {
|
|
72
|
+
this.lastPointerDownShift = e.shiftKey;
|
|
73
|
+
const target = e.target;
|
|
74
|
+
const handleEl = target?.closest('.od-handle');
|
|
75
|
+
if (handleEl && this.editor.selection.length === 1) {
|
|
76
|
+
const handleType = handleEl.getAttribute('data-handle');
|
|
77
|
+
if (handleType) {
|
|
78
|
+
if (handleType === 'rotate') {
|
|
79
|
+
if (this.editor.gesture.startRotate(this.editor.selection[0], pagePt))
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
if (this.editor.gesture.startResize(handleType, this.editor.selection[0], pagePt))
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const shapeWrapper = target?.closest('.od-shape');
|
|
89
|
+
const shapeId = shapeWrapper?.getAttribute('data-id');
|
|
90
|
+
if (!shapeId) {
|
|
91
|
+
if (!e.shiftKey) {
|
|
92
|
+
this.editor.clearSelection();
|
|
93
|
+
}
|
|
94
|
+
this.isMarquee = true;
|
|
95
|
+
this.marqueeStart = pagePt;
|
|
96
|
+
this.isShiftMarquee = e.shiftKey;
|
|
97
|
+
this.initialSelectionBeforeMarquee = e.shiftKey ? [...this.editor.selection] : [];
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
let targetId = shapeId;
|
|
101
|
+
if (!isMod(e)) {
|
|
102
|
+
const group = findGroupForMember(shapeId, this.editor.store, this.editor.registry);
|
|
103
|
+
if (group && !e.shiftKey) {
|
|
104
|
+
targetId = group.id;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this.clickedShapeId = targetId;
|
|
108
|
+
if (e.shiftKey) {
|
|
109
|
+
this.editor.toggleSelection(targetId);
|
|
110
|
+
}
|
|
111
|
+
else if (!this.editor.isSelected(targetId)) {
|
|
112
|
+
this.editor.selectShape(targetId);
|
|
113
|
+
}
|
|
114
|
+
if (this.editor.isSelected(targetId)) {
|
|
115
|
+
this.editor.gesture.startMove(targetId, pagePt);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
onInkPointerDown(tool, pagePt) {
|
|
119
|
+
const shapeType = tool === 'highlighter' ? 'highlighter' : 'ink';
|
|
120
|
+
const def = this.editor.registry.get(shapeType);
|
|
121
|
+
if (!def)
|
|
122
|
+
return;
|
|
123
|
+
this.isDrawing = true;
|
|
124
|
+
this.currentInkPts = [pagePt.x, pagePt.y];
|
|
125
|
+
this.editor.store.beginTransaction();
|
|
126
|
+
const shape = this.editor.createShape({
|
|
127
|
+
type: shapeType,
|
|
128
|
+
x: pagePt.x,
|
|
129
|
+
y: pagePt.y,
|
|
130
|
+
props: { ...def.defaultProps(), pts: [pagePt.x, pagePt.y] },
|
|
131
|
+
});
|
|
132
|
+
this.currentInkShapeId = shape.id;
|
|
133
|
+
this.editor.selectShape(shape.id);
|
|
134
|
+
}
|
|
135
|
+
onShapeCreatePointerDown(tool, pagePt) {
|
|
136
|
+
const def = this.editor.registry.get(tool);
|
|
137
|
+
if (!def)
|
|
138
|
+
return;
|
|
139
|
+
this.editor.store.transact(() => {
|
|
140
|
+
const shape = this.editor.createShape({
|
|
141
|
+
type: tool,
|
|
142
|
+
x: pagePt.x,
|
|
143
|
+
y: pagePt.y,
|
|
144
|
+
props: def.defaultProps(),
|
|
145
|
+
});
|
|
146
|
+
const bounds = def.geometry.bounds(shape);
|
|
147
|
+
const suggested = findSuggestedParent(bounds, this.editor.store.listShapes(), this.editor.registry, shape.id);
|
|
148
|
+
if (suggested) {
|
|
149
|
+
this.editor.store.updateShape(shape.id, { meta: { ...shape.meta, parent: suggested.id } });
|
|
150
|
+
}
|
|
151
|
+
this.editor.selectShape(shape.id);
|
|
152
|
+
});
|
|
153
|
+
this.editor.setTool('select');
|
|
154
|
+
}
|
|
155
|
+
onPointerMove = (e) => {
|
|
156
|
+
this.editor.telemetry.recordInput(e.timeStamp || performance.now());
|
|
157
|
+
const r = this.cachedContainerRect ?? (this.container?.getBoundingClientRect() ?? { left: 0, top: 0 });
|
|
158
|
+
const screenPt = { x: e.clientX - r.left, y: e.clientY - r.top };
|
|
159
|
+
const currentPagePt = this.editor.camera.screenToPage(screenPt);
|
|
160
|
+
if (this.editor.gesture.isActive) {
|
|
161
|
+
this.pendingPointerMove = { pagePt: currentPagePt, event: e };
|
|
162
|
+
if (this.rafMoveId === null && typeof requestAnimationFrame !== 'undefined') {
|
|
163
|
+
this.rafMoveId = requestAnimationFrame(() => {
|
|
164
|
+
this.rafMoveId = null;
|
|
165
|
+
if (this.pendingPointerMove && this.editor.gesture.isActive) {
|
|
166
|
+
const { pagePt, event } = this.pendingPointerMove;
|
|
167
|
+
this.pendingPointerMove = null;
|
|
168
|
+
this.editor.gesture.move(pagePt, event);
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
else if (typeof requestAnimationFrame === 'undefined') {
|
|
173
|
+
this.editor.gesture.move(currentPagePt, e);
|
|
174
|
+
}
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (this.eraser.isActive) {
|
|
178
|
+
this.eraser.move(currentPagePt);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (this.isDrawing && this.currentInkShapeId) {
|
|
182
|
+
this.currentInkPts.push(currentPagePt.x, currentPagePt.y);
|
|
183
|
+
const shape = this.editor.store.getShape(this.currentInkShapeId);
|
|
184
|
+
if (shape) {
|
|
185
|
+
this.editor.store.updateShape(this.currentInkShapeId, {
|
|
186
|
+
props: { ...shape.props, pts: [...this.currentInkPts] },
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (this.isMarquee && this.marqueeStart && this.container) {
|
|
192
|
+
const box = computeMarqueeBounds(this.marqueeStart, currentPagePt);
|
|
193
|
+
this.marqueeOverlay.show(this.container, box);
|
|
194
|
+
const hitIds = findIntersectingShapes(box, this.editor.store, this.editor.registry);
|
|
195
|
+
if (this.isShiftMarquee) {
|
|
196
|
+
this.editor.setSelection(Array.from(new Set([...this.initialSelectionBeforeMarquee, ...hitIds])));
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
this.editor.setSelection(hitIds);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
onPointerUp = () => {
|
|
204
|
+
if (this.rafMoveId !== null && typeof cancelAnimationFrame !== 'undefined') {
|
|
205
|
+
cancelAnimationFrame(this.rafMoveId);
|
|
206
|
+
this.rafMoveId = null;
|
|
207
|
+
}
|
|
208
|
+
if (this.pendingPointerMove && this.editor.gesture.isActive) {
|
|
209
|
+
const { pagePt, event } = this.pendingPointerMove;
|
|
210
|
+
this.pendingPointerMove = null;
|
|
211
|
+
this.editor.gesture.move(pagePt, event);
|
|
212
|
+
}
|
|
213
|
+
this.cachedContainerRect = null;
|
|
214
|
+
if (this.editor.gesture.isActive) {
|
|
215
|
+
const didMove = this.editor.gesture.didMove;
|
|
216
|
+
this.editor.gesture.commit();
|
|
217
|
+
if (!didMove && this.clickedShapeId && !this.lastPointerDownShift) {
|
|
218
|
+
this.editor.selectShape(this.clickedShapeId);
|
|
219
|
+
}
|
|
220
|
+
this.clickedShapeId = null;
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (this.eraser.isActive) {
|
|
224
|
+
this.eraser.end();
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (this.isDrawing && this.currentInkShapeId) {
|
|
228
|
+
const simplified = simplifyRDP(this.currentInkPts, 1.5);
|
|
229
|
+
const shape = this.editor.store.getShape(this.currentInkShapeId);
|
|
230
|
+
if (shape) {
|
|
231
|
+
this.editor.store.updateShape(this.currentInkShapeId, { props: { ...shape.props, pts: simplified } });
|
|
232
|
+
}
|
|
233
|
+
this.isDrawing = false;
|
|
234
|
+
this.currentInkShapeId = null;
|
|
235
|
+
this.currentInkPts = [];
|
|
236
|
+
this.editor.store.commitTransaction();
|
|
237
|
+
this.editor.setTool('select');
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (this.isMarquee) {
|
|
241
|
+
this.marqueeOverlay.hide();
|
|
242
|
+
this.isMarquee = false;
|
|
243
|
+
this.marqueeStart = null;
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=interaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../src/interaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/perf/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/perf/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance and Frame-rate Telemetry (§1)
|
|
3
|
+
* Measures input -> paint latency and frame rate over a sliding window.
|
|
4
|
+
*/
|
|
5
|
+
export interface TelemetryMetrics {
|
|
6
|
+
readonly fps: number;
|
|
7
|
+
readonly p50LatencyMs: number;
|
|
8
|
+
readonly p95LatencyMs: number;
|
|
9
|
+
readonly p99LatencyMs: number;
|
|
10
|
+
readonly droppedFrames: number;
|
|
11
|
+
readonly sampleCount: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class FrameTelemetry {
|
|
14
|
+
private windowSize;
|
|
15
|
+
private latencies;
|
|
16
|
+
private frameTimestamps;
|
|
17
|
+
private droppedFrames;
|
|
18
|
+
private lastInputTime;
|
|
19
|
+
private rafId;
|
|
20
|
+
private overlayEl;
|
|
21
|
+
private isEnabled;
|
|
22
|
+
constructor(windowSize?: number);
|
|
23
|
+
enable(container?: HTMLElement): void;
|
|
24
|
+
disable(): void;
|
|
25
|
+
reset(): void;
|
|
26
|
+
recordInput(time?: number): void;
|
|
27
|
+
recordPaint(time?: number): void;
|
|
28
|
+
getMetrics(): TelemetryMetrics;
|
|
29
|
+
private _startLoop;
|
|
30
|
+
private _createOverlay;
|
|
31
|
+
private _updateOverlay;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/perf/telemetry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAAS;IAE1B,YAAY,UAAU,SAAK,EAE1B;IAED,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,CAQpC;IAED,OAAO,IAAI,IAAI,CAUd;IAED,KAAK,IAAI,IAAI,CAKZ;IAED,WAAW,CAAC,IAAI,GAAE,MAA0B,GAAG,IAAI,CAGlD;IAED,WAAW,CAAC,IAAI,GAAE,MAA0B,GAAG,IAAI,CAyBlD;IAED,UAAU,IAAI,gBAAgB,CAkC7B;IAED,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,cAAc;CAKvB"}
|