@oh-just-another/state 0.57.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/CHANGELOG.md +18 -0
- package/LICENSE +21 -0
- package/README.md +60 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/actions/actionClipboard.d.ts +6 -0
- package/dist/actions/actionClipboard.d.ts.map +1 -0
- package/dist/actions/actionClipboard.js +26 -0
- package/dist/actions/actionClipboard.js.map +1 -0
- package/dist/actions/actionGrouping.d.ts +5 -0
- package/dist/actions/actionGrouping.d.ts.map +1 -0
- package/dist/actions/actionGrouping.js +26 -0
- package/dist/actions/actionGrouping.js.map +1 -0
- package/dist/actions/actionHistory.d.ts +5 -0
- package/dist/actions/actionHistory.d.ts.map +1 -0
- package/dist/actions/actionHistory.js +25 -0
- package/dist/actions/actionHistory.js.map +1 -0
- package/dist/actions/actionKeyboard.d.ts +3 -0
- package/dist/actions/actionKeyboard.d.ts.map +1 -0
- package/dist/actions/actionKeyboard.js +130 -0
- package/dist/actions/actionKeyboard.js.map +1 -0
- package/dist/actions/actionLayout.d.ts +3 -0
- package/dist/actions/actionLayout.d.ts.map +1 -0
- package/dist/actions/actionLayout.js +65 -0
- package/dist/actions/actionLayout.js.map +1 -0
- package/dist/actions/actionMode.d.ts +13 -0
- package/dist/actions/actionMode.d.ts.map +1 -0
- package/dist/actions/actionMode.js +116 -0
- package/dist/actions/actionMode.js.map +1 -0
- package/dist/actions/actionSelection.d.ts +9 -0
- package/dist/actions/actionSelection.d.ts.map +1 -0
- package/dist/actions/actionSelection.js +57 -0
- package/dist/actions/actionSelection.js.map +1 -0
- package/dist/actions/actionView.d.ts +7 -0
- package/dist/actions/actionView.d.ts.map +1 -0
- package/dist/actions/actionView.js +14 -0
- package/dist/actions/actionView.js.map +1 -0
- package/dist/actions/actionZOrder.d.ts +7 -0
- package/dist/actions/actionZOrder.d.ts.map +1 -0
- package/dist/actions/actionZOrder.js +42 -0
- package/dist/actions/actionZOrder.js.map +1 -0
- package/dist/actions/actionZoom.d.ts +8 -0
- package/dist/actions/actionZoom.d.ts.map +1 -0
- package/dist/actions/actionZoom.js +61 -0
- package/dist/actions/actionZoom.js.map +1 -0
- package/dist/actions/index.d.ts +12 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +11 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/registry.d.ts +68 -0
- package/dist/actions/registry.d.ts.map +1 -0
- package/dist/actions/registry.js +300 -0
- package/dist/actions/registry.js.map +1 -0
- package/dist/actions/types.d.ts +103 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/actions/types.js +10 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/animation-tick.d.ts +28 -0
- package/dist/animation-tick.d.ts.map +1 -0
- package/dist/animation-tick.js +50 -0
- package/dist/animation-tick.js.map +1 -0
- package/dist/auto-compact.d.ts +27 -0
- package/dist/auto-compact.d.ts.map +1 -0
- package/dist/auto-compact.js +46 -0
- package/dist/auto-compact.js.map +1 -0
- package/dist/auto-layout-scheduler.d.ts +50 -0
- package/dist/auto-layout-scheduler.d.ts.map +1 -0
- package/dist/auto-layout-scheduler.js +94 -0
- package/dist/auto-layout-scheduler.js.map +1 -0
- package/dist/built-in-handlers.d.ts +24 -0
- package/dist/built-in-handlers.d.ts.map +1 -0
- package/dist/built-in-handlers.js +210 -0
- package/dist/built-in-handlers.js.map +1 -0
- package/dist/clipboard.d.ts +51 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +105 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/constants.d.ts +544 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +537 -0
- package/dist/constants.js.map +1 -0
- package/dist/dom-events.d.ts +13 -0
- package/dist/dom-events.d.ts.map +1 -0
- package/dist/dom-events.js +70 -0
- package/dist/dom-events.js.map +1 -0
- package/dist/editor/anchor-points.d.ts +22 -0
- package/dist/editor/anchor-points.d.ts.map +1 -0
- package/dist/editor/anchor-points.js +28 -0
- package/dist/editor/anchor-points.js.map +1 -0
- package/dist/editor/applies/create.d.ts +60 -0
- package/dist/editor/applies/create.d.ts.map +1 -0
- package/dist/editor/applies/create.js +107 -0
- package/dist/editor/applies/create.js.map +1 -0
- package/dist/editor/applies/edge.d.ts +32 -0
- package/dist/editor/applies/edge.d.ts.map +1 -0
- package/dist/editor/applies/edge.js +44 -0
- package/dist/editor/applies/edge.js.map +1 -0
- package/dist/editor/applies/link-move.d.ts +53 -0
- package/dist/editor/applies/link-move.d.ts.map +1 -0
- package/dist/editor/applies/link-move.js +160 -0
- package/dist/editor/applies/link-move.js.map +1 -0
- package/dist/editor/applies/move.d.ts +38 -0
- package/dist/editor/applies/move.d.ts.map +1 -0
- package/dist/editor/applies/move.js +83 -0
- package/dist/editor/applies/move.js.map +1 -0
- package/dist/editor/applies/resize.d.ts +68 -0
- package/dist/editor/applies/resize.d.ts.map +1 -0
- package/dist/editor/applies/resize.js +199 -0
- package/dist/editor/applies/resize.js.map +1 -0
- package/dist/editor/applies/selection.d.ts +34 -0
- package/dist/editor/applies/selection.d.ts.map +1 -0
- package/dist/editor/applies/selection.js +65 -0
- package/dist/editor/applies/selection.js.map +1 -0
- package/dist/editor/applies/snap-grid.d.ts +45 -0
- package/dist/editor/applies/snap-grid.d.ts.map +1 -0
- package/dist/editor/applies/snap-grid.js +90 -0
- package/dist/editor/applies/snap-grid.js.map +1 -0
- package/dist/editor/container-ops.d.ts +74 -0
- package/dist/editor/container-ops.d.ts.map +1 -0
- package/dist/editor/container-ops.js +262 -0
- package/dist/editor/container-ops.js.map +1 -0
- package/dist/editor/event-fanout.d.ts +48 -0
- package/dist/editor/event-fanout.d.ts.map +1 -0
- package/dist/editor/event-fanout.js +53 -0
- package/dist/editor/event-fanout.js.map +1 -0
- package/dist/editor/gesture-tx.d.ts +77 -0
- package/dist/editor/gesture-tx.d.ts.map +1 -0
- package/dist/editor/gesture-tx.js +93 -0
- package/dist/editor/gesture-tx.js.map +1 -0
- package/dist/editor/hit-test.d.ts +178 -0
- package/dist/editor/hit-test.d.ts.map +1 -0
- package/dist/editor/hit-test.js +460 -0
- package/dist/editor/hit-test.js.map +1 -0
- package/dist/editor/long-press.d.ts +34 -0
- package/dist/editor/long-press.d.ts.map +1 -0
- package/dist/editor/long-press.js +58 -0
- package/dist/editor/long-press.js.map +1 -0
- package/dist/editor/pinch.d.ts +37 -0
- package/dist/editor/pinch.d.ts.map +1 -0
- package/dist/editor/pinch.js +90 -0
- package/dist/editor/pinch.js.map +1 -0
- package/dist/editor/pointer-binding.d.ts +18 -0
- package/dist/editor/pointer-binding.d.ts.map +1 -0
- package/dist/editor/pointer-binding.js +1087 -0
- package/dist/editor/pointer-binding.js.map +1 -0
- package/dist/editor/public/annotations.d.ts +54 -0
- package/dist/editor/public/annotations.d.ts.map +1 -0
- package/dist/editor/public/annotations.js +106 -0
- package/dist/editor/public/annotations.js.map +1 -0
- package/dist/editor/public/arrange-group.d.ts +81 -0
- package/dist/editor/public/arrange-group.d.ts.map +1 -0
- package/dist/editor/public/arrange-group.js +193 -0
- package/dist/editor/public/arrange-group.js.map +1 -0
- package/dist/editor/public/brush.d.ts +33 -0
- package/dist/editor/public/brush.d.ts.map +1 -0
- package/dist/editor/public/brush.js +54 -0
- package/dist/editor/public/brush.js.map +1 -0
- package/dist/editor/public/clipboard.d.ts +31 -0
- package/dist/editor/public/clipboard.d.ts.map +1 -0
- package/dist/editor/public/clipboard.js +35 -0
- package/dist/editor/public/clipboard.js.map +1 -0
- package/dist/editor/public/image-insert.d.ts +30 -0
- package/dist/editor/public/image-insert.d.ts.map +1 -0
- package/dist/editor/public/image-insert.js +57 -0
- package/dist/editor/public/image-insert.js.map +1 -0
- package/dist/editor/public/layers.d.ts +56 -0
- package/dist/editor/public/layers.d.ts.map +1 -0
- package/dist/editor/public/layers.js +104 -0
- package/dist/editor/public/layers.js.map +1 -0
- package/dist/editor/public/link.d.ts +25 -0
- package/dist/editor/public/link.d.ts.map +1 -0
- package/dist/editor/public/link.js +74 -0
- package/dist/editor/public/link.js.map +1 -0
- package/dist/editor/public/placement.d.ts +60 -0
- package/dist/editor/public/placement.d.ts.map +1 -0
- package/dist/editor/public/placement.js +111 -0
- package/dist/editor/public/placement.js.map +1 -0
- package/dist/editor/public/selection-ops.d.ts +78 -0
- package/dist/editor/public/selection-ops.d.ts.map +1 -0
- package/dist/editor/public/selection-ops.js +226 -0
- package/dist/editor/public/selection-ops.js.map +1 -0
- package/dist/editor/public/text-edit.d.ts +17 -0
- package/dist/editor/public/text-edit.d.ts.map +1 -0
- package/dist/editor/public/text-edit.js +28 -0
- package/dist/editor/public/text-edit.js.map +1 -0
- package/dist/editor/public/z-order.d.ts +47 -0
- package/dist/editor/public/z-order.d.ts.map +1 -0
- package/dist/editor/public/z-order.js +151 -0
- package/dist/editor/public/z-order.js.map +1 -0
- package/dist/editor/public/zoom-pan.d.ts +44 -0
- package/dist/editor/public/zoom-pan.d.ts.map +1 -0
- package/dist/editor/public/zoom-pan.js +116 -0
- package/dist/editor/public/zoom-pan.js.map +1 -0
- package/dist/editor/render-orchestrator.d.ts +11 -0
- package/dist/editor/render-orchestrator.d.ts.map +1 -0
- package/dist/editor/render-orchestrator.js +473 -0
- package/dist/editor/render-orchestrator.js.map +1 -0
- package/dist/editor/resize-helpers.d.ts +30 -0
- package/dist/editor/resize-helpers.d.ts.map +1 -0
- package/dist/editor/resize-helpers.js +121 -0
- package/dist/editor/resize-helpers.js.map +1 -0
- package/dist/editor/shape-filters.d.ts +11 -0
- package/dist/editor/shape-filters.d.ts.map +1 -0
- package/dist/editor/shape-filters.js +19 -0
- package/dist/editor/shape-filters.js.map +1 -0
- package/dist/editor/shape-traits.d.ts +16 -0
- package/dist/editor/shape-traits.d.ts.map +1 -0
- package/dist/editor/shape-traits.js +29 -0
- package/dist/editor/shape-traits.js.map +1 -0
- package/dist/editor/viewport-helpers.d.ts +24 -0
- package/dist/editor/viewport-helpers.d.ts.map +1 -0
- package/dist/editor/viewport-helpers.js +63 -0
- package/dist/editor/viewport-helpers.js.map +1 -0
- package/dist/editor-events.d.ts +33 -0
- package/dist/editor-events.d.ts.map +1 -0
- package/dist/editor-events.js +2 -0
- package/dist/editor-events.js.map +1 -0
- package/dist/editor.d.ts +1841 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +4803 -0
- package/dist/editor.js.map +1 -0
- package/dist/file-drop.d.ts +99 -0
- package/dist/file-drop.d.ts.map +1 -0
- package/dist/file-drop.js +198 -0
- package/dist/file-drop.js.map +1 -0
- package/dist/frame-helpers.d.ts +30 -0
- package/dist/frame-helpers.d.ts.map +1 -0
- package/dist/frame-helpers.js +105 -0
- package/dist/frame-helpers.js.map +1 -0
- package/dist/group-helpers.d.ts +39 -0
- package/dist/group-helpers.d.ts.map +1 -0
- package/dist/group-helpers.js +116 -0
- package/dist/group-helpers.js.map +1 -0
- package/dist/handle.d.ts +73 -0
- package/dist/handle.d.ts.map +1 -0
- package/dist/handle.js +184 -0
- package/dist/handle.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive.d.ts +21 -0
- package/dist/interactive.d.ts.map +1 -0
- package/dist/interactive.js +11 -0
- package/dist/interactive.js.map +1 -0
- package/dist/link-selection.d.ts +21 -0
- package/dist/link-selection.d.ts.map +1 -0
- package/dist/link-selection.js +37 -0
- package/dist/link-selection.js.map +1 -0
- package/dist/machine.d.ts +322 -0
- package/dist/machine.d.ts.map +1 -0
- package/dist/machine.js +568 -0
- package/dist/machine.js.map +1 -0
- package/dist/modes.d.ts +24 -0
- package/dist/modes.d.ts.map +1 -0
- package/dist/modes.js +2 -0
- package/dist/modes.js.map +1 -0
- package/dist/overlay.d.ts +262 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +673 -0
- package/dist/overlay.js.map +1 -0
- package/dist/platform.d.ts +70 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +115 -0
- package/dist/platform.js.map +1 -0
- package/dist/selection.d.ts +18 -0
- package/dist/selection.d.ts.map +1 -0
- package/dist/selection.js +31 -0
- package/dist/selection.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ElementBase } from "@oh-just-another/scene";
|
|
2
|
+
import type { Vec2 } from "@oh-just-another/types";
|
|
3
|
+
import type { InteractionEmit } from "./machine.js";
|
|
4
|
+
/**
|
|
5
|
+
* Per-shape-type hit-tester for interactive sub-elements (buttons inside a
|
|
6
|
+
* rich template, drop-zones, etc). Returns an emit that the editor should fire
|
|
7
|
+
* instead of a normal selection / drag press.
|
|
8
|
+
*
|
|
9
|
+
* `localPoint` is the pointer in the shape's local coordinate space (after the
|
|
10
|
+
* shape's `position` / `rotation` / `scale` are removed). Returning `null`
|
|
11
|
+
* means "no interactive element here — fall back to default press".
|
|
12
|
+
*/
|
|
13
|
+
export type InteractiveHitTester = (shape: ElementBase, localPoint: Vec2) => InteractionEmit | null;
|
|
14
|
+
/**
|
|
15
|
+
* Register an interactive hit-tester for a shape `type`. Plugins call this
|
|
16
|
+
* once at module load. The kernel ships nothing here — `@templates` registers
|
|
17
|
+
* the rich-template tester via `installTemplateShapeRenderer()`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const registerInteractiveHitTester: (type: string, fn: InteractiveHitTester) => void;
|
|
20
|
+
export declare const getInteractiveHitTester: (type: string) => InteractiveHitTester | undefined;
|
|
21
|
+
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,KAAK,eAAe,GAAG,IAAI,CAAC;AAIpG;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAI,MAAM,MAAM,EAAE,IAAI,oBAAoB,KAAG,IAErF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,oBAAoB,GAAG,SAC1D,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const registry = new Map();
|
|
2
|
+
/**
|
|
3
|
+
* Register an interactive hit-tester for a shape `type`. Plugins call this
|
|
4
|
+
* once at module load. The kernel ships nothing here — `@templates` registers
|
|
5
|
+
* the rich-template tester via `installTemplateShapeRenderer()`.
|
|
6
|
+
*/
|
|
7
|
+
export const registerInteractiveHitTester = (type, fn) => {
|
|
8
|
+
registry.set(type, fn);
|
|
9
|
+
};
|
|
10
|
+
export const getInteractiveHitTester = (type) => registry.get(type);
|
|
11
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAeA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAAY,EAAE,EAAwB,EAAQ,EAAE;IAC3F,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAoC,EAAE,CACxF,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { LinkId } from "@oh-just-another/types";
|
|
2
|
+
/**
|
|
3
|
+
* Set of currently selected link (connector) ids. A parallel set to the
|
|
4
|
+
* element selection, kept separate so the element-selection code is untouched
|
|
5
|
+
* while links become first-class members of the overall selection (Cmd+A,
|
|
6
|
+
* marquee, multi-select, delete).
|
|
7
|
+
*
|
|
8
|
+
* Immutable — operations return new sets. Sets (not arrays) give O(1)
|
|
9
|
+
* membership checks during overlay rendering and hit-testing.
|
|
10
|
+
*/
|
|
11
|
+
export type LinkSelection = ReadonlySet<LinkId>;
|
|
12
|
+
export declare const EMPTY: LinkSelection;
|
|
13
|
+
export declare const single: (id: LinkId) => LinkSelection;
|
|
14
|
+
export declare const has: (sel: LinkSelection, id: LinkId) => boolean;
|
|
15
|
+
export declare const add: (sel: LinkSelection, id: LinkId) => LinkSelection;
|
|
16
|
+
export declare const remove: (sel: LinkSelection, id: LinkId) => LinkSelection;
|
|
17
|
+
export declare const toggle: (sel: LinkSelection, id: LinkId) => LinkSelection;
|
|
18
|
+
export declare const equals: (a: LinkSelection, b: LinkSelection) => boolean;
|
|
19
|
+
/** The sole selected link, or null unless exactly one is selected. */
|
|
20
|
+
export declare const sole: (sel: LinkSelection) => LinkId | null;
|
|
21
|
+
//# sourceMappingURL=link-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-selection.d.ts","sourceRoot":"","sources":["../src/link-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAEhD,eAAO,MAAM,KAAK,EAAE,aAAgD,CAAC;AAErE,eAAO,MAAM,MAAM,GAAI,IAAI,MAAM,KAAG,aAA8B,CAAC;AAEnE,eAAO,MAAM,GAAG,GAAI,KAAK,aAAa,EAAE,IAAI,MAAM,KAAG,OAAsB,CAAC;AAE5E,eAAO,MAAM,GAAG,GAAI,KAAK,aAAa,EAAE,IAAI,MAAM,KAAG,aAKpD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,KAAK,aAAa,EAAE,IAAI,MAAM,KAAG,aAKvD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,KAAK,aAAa,EAAE,IAAI,MAAM,KAAG,aACV,CAAC;AAE/C,eAAO,MAAM,MAAM,GAAI,GAAG,aAAa,EAAE,GAAG,aAAa,KAAG,OAK3D,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,IAAI,GAAI,KAAK,aAAa,KAAG,MAAM,GAAG,IAIlD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const EMPTY = Object.freeze(new Set());
|
|
2
|
+
export const single = (id) => new Set([id]);
|
|
3
|
+
export const has = (sel, id) => sel.has(id);
|
|
4
|
+
export const add = (sel, id) => {
|
|
5
|
+
if (sel.has(id))
|
|
6
|
+
return sel;
|
|
7
|
+
const next = new Set(sel);
|
|
8
|
+
next.add(id);
|
|
9
|
+
return next;
|
|
10
|
+
};
|
|
11
|
+
export const remove = (sel, id) => {
|
|
12
|
+
if (!sel.has(id))
|
|
13
|
+
return sel;
|
|
14
|
+
const next = new Set(sel);
|
|
15
|
+
next.delete(id);
|
|
16
|
+
return next;
|
|
17
|
+
};
|
|
18
|
+
export const toggle = (sel, id) => sel.has(id) ? remove(sel, id) : add(sel, id);
|
|
19
|
+
export const equals = (a, b) => {
|
|
20
|
+
if (a === b)
|
|
21
|
+
return true;
|
|
22
|
+
if (a.size !== b.size)
|
|
23
|
+
return false;
|
|
24
|
+
for (const id of a)
|
|
25
|
+
if (!b.has(id))
|
|
26
|
+
return false;
|
|
27
|
+
return true;
|
|
28
|
+
};
|
|
29
|
+
/** The sole selected link, or null unless exactly one is selected. */
|
|
30
|
+
export const sole = (sel) => {
|
|
31
|
+
if (sel.size !== 1)
|
|
32
|
+
return null;
|
|
33
|
+
for (const id of sel)
|
|
34
|
+
return id;
|
|
35
|
+
return null;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=link-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-selection.js","sourceRoot":"","sources":["../src/link-selection.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,KAAK,GAAkB,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,EAAU,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAkB,EAAE,EAAU,EAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,GAAkB,EAAE,EAAU,EAAiB,EAAE;IACnE,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,GAAG,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACb,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAE,EAAU,EAAiB,EAAE;IACtE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAO,GAAG,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAE,EAAU,EAAiB,EAAE,CACtE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAgB,EAAE,CAAgB,EAAW,EAAE;IACpE,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAkB,EAAiB,EAAE;IACxD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,GAAG;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import type { AnnotationId, Bounds, LinkId, Modifiers, ElementId, Vec2 } from "@oh-just-another/types";
|
|
2
|
+
import type { HandleId } from "./handle.js";
|
|
3
|
+
import { type Mode } from "./modes.js";
|
|
4
|
+
/**
|
|
5
|
+
* What the pointer landed on when the user pressed it down. The host computes
|
|
6
|
+
* this synchronously on POINTER_DOWN (via scene queries + handle hit-test) and
|
|
7
|
+
* hands it to the machine, which decides how to interpret the gesture from
|
|
8
|
+
* that point on.
|
|
9
|
+
*/
|
|
10
|
+
export type PressTarget = {
|
|
11
|
+
readonly kind: "element";
|
|
12
|
+
readonly id: ElementId;
|
|
13
|
+
readonly bounds: Bounds;
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: "handle";
|
|
16
|
+
readonly elementId: ElementId;
|
|
17
|
+
readonly handle: HandleId;
|
|
18
|
+
readonly bounds: Bounds;
|
|
19
|
+
} | {
|
|
20
|
+
/**
|
|
21
|
+
* Handle on the combined bounding box of a multi-selection. The
|
|
22
|
+
* editor uses it to drive a group resize gesture; the machine
|
|
23
|
+
* treats it the same as `handle` (per-frame RESIZE_SHAPE emits) and
|
|
24
|
+
* the editor's emit handler fans out the scaling to every member.
|
|
25
|
+
*/
|
|
26
|
+
readonly kind: "group-handle";
|
|
27
|
+
readonly handle: HandleId;
|
|
28
|
+
readonly bounds: Bounds;
|
|
29
|
+
} | {
|
|
30
|
+
readonly kind: "link";
|
|
31
|
+
readonly id: LinkId;
|
|
32
|
+
} | {
|
|
33
|
+
readonly kind: "edge-endpoint";
|
|
34
|
+
readonly linkId: LinkId;
|
|
35
|
+
readonly side: "from" | "to";
|
|
36
|
+
} | {
|
|
37
|
+
/**
|
|
38
|
+
* Annotation pin under the cursor. The gesture machine treats it
|
|
39
|
+
* like a one-axis-free shape drag: every POINTER_MOVE emits
|
|
40
|
+
* `MOVE_ANNOTATION` with the world-space delta from press-down;
|
|
41
|
+
* POINTER_UP closes the gesture. Anchored annotations
|
|
42
|
+
* (shape-relative) and free annotations both move via `position`;
|
|
43
|
+
* the editor's apply handler preserves the anchor semantics.
|
|
44
|
+
*/
|
|
45
|
+
readonly kind: "annotation";
|
|
46
|
+
readonly id: AnnotationId;
|
|
47
|
+
readonly origin: Vec2;
|
|
48
|
+
} | {
|
|
49
|
+
readonly kind: "empty";
|
|
50
|
+
};
|
|
51
|
+
export interface InteractionContext {
|
|
52
|
+
readonly mode: Mode;
|
|
53
|
+
readonly pressOrigin: Vec2 | null;
|
|
54
|
+
readonly pressLast: Vec2 | null;
|
|
55
|
+
readonly pressTarget: PressTarget | null;
|
|
56
|
+
readonly drawingType: "rect" | "ellipse" | "frame" | null;
|
|
57
|
+
/** Keyboard state captured at POINTER_DOWN. */
|
|
58
|
+
readonly pressModifiers: Modifiers | null;
|
|
59
|
+
}
|
|
60
|
+
export interface PointerDownEvent {
|
|
61
|
+
readonly type: "POINTER_DOWN";
|
|
62
|
+
readonly point: Vec2;
|
|
63
|
+
readonly target: PressTarget;
|
|
64
|
+
/**
|
|
65
|
+
* Keyboard state at press-down time. `interpretPressEnd` reads the
|
|
66
|
+
* modifiers to decide between SELECT_REPLACE (plain click) and
|
|
67
|
+
* SELECT_TOGGLE (shift / meta click) when the gesture is a tap.
|
|
68
|
+
*/
|
|
69
|
+
readonly modifiers?: Modifiers;
|
|
70
|
+
}
|
|
71
|
+
export interface PointerMoveEvent {
|
|
72
|
+
readonly type: "POINTER_MOVE";
|
|
73
|
+
readonly point: Vec2;
|
|
74
|
+
}
|
|
75
|
+
export interface PointerUpEvent {
|
|
76
|
+
readonly type: "POINTER_UP";
|
|
77
|
+
readonly point: Vec2;
|
|
78
|
+
/**
|
|
79
|
+
* Optional hit-test of the element under the pointer at release time.
|
|
80
|
+
* Hosts that want edge-creation to land on a shape provide this. When
|
|
81
|
+
* omitted the machine treats the release as happening on empty canvas.
|
|
82
|
+
*/
|
|
83
|
+
readonly target?: PressTarget;
|
|
84
|
+
}
|
|
85
|
+
export interface PointerCancelEvent {
|
|
86
|
+
readonly type: "POINTER_CANCEL";
|
|
87
|
+
}
|
|
88
|
+
export interface SetModeEvent {
|
|
89
|
+
readonly type: "SET_MODE";
|
|
90
|
+
readonly mode: Mode;
|
|
91
|
+
}
|
|
92
|
+
export type InteractionEvent = PointerDownEvent | PointerMoveEvent | PointerUpEvent | PointerCancelEvent | SetModeEvent;
|
|
93
|
+
/**
|
|
94
|
+
* Effects emitted to the host (Editor). The machine never mutates the scene;
|
|
95
|
+
* it only describes what should happen.
|
|
96
|
+
*/
|
|
97
|
+
export type InteractionEmit = {
|
|
98
|
+
readonly type: "SELECT_REPLACE";
|
|
99
|
+
readonly id: ElementId;
|
|
100
|
+
} | {
|
|
101
|
+
readonly type: "SELECT_TOGGLE";
|
|
102
|
+
readonly id: ElementId;
|
|
103
|
+
} | {
|
|
104
|
+
readonly type: "SELECT_CLEAR";
|
|
105
|
+
} | {
|
|
106
|
+
readonly type: "LASSO_PROGRESS";
|
|
107
|
+
readonly bounds: Bounds;
|
|
108
|
+
/** Same modifier semantics as `SELECT_BY_BOUNDS.mode` — lets the
|
|
109
|
+
* editor preview the additive variant of the lasso while the
|
|
110
|
+
* gesture is still in progress. */
|
|
111
|
+
readonly mode: "replace" | "add";
|
|
112
|
+
} | {
|
|
113
|
+
readonly type: "LASSO_CLEAR";
|
|
114
|
+
} | {
|
|
115
|
+
readonly type: "SELECT_BY_BOUNDS";
|
|
116
|
+
readonly bounds: Bounds;
|
|
117
|
+
/** Add to existing selection (Shift/Cmd lasso) or replace. */
|
|
118
|
+
readonly mode: "replace" | "add";
|
|
119
|
+
} | {
|
|
120
|
+
readonly type: "SELECT_EDGE_REPLACE";
|
|
121
|
+
readonly id: LinkId;
|
|
122
|
+
} | {
|
|
123
|
+
readonly type: "SELECT_EDGE_TOGGLE";
|
|
124
|
+
readonly id: LinkId;
|
|
125
|
+
} | {
|
|
126
|
+
readonly type: "SELECT_EDGE_CLEAR";
|
|
127
|
+
} | {
|
|
128
|
+
readonly type: "UPDATE_EDGE_ENDPOINT_PREVIEW";
|
|
129
|
+
readonly linkId: LinkId;
|
|
130
|
+
readonly side: "from" | "to";
|
|
131
|
+
readonly toPoint: Vec2;
|
|
132
|
+
} | {
|
|
133
|
+
readonly type: "UPDATE_EDGE_ENDPOINT";
|
|
134
|
+
readonly linkId: LinkId;
|
|
135
|
+
readonly side: "from" | "to";
|
|
136
|
+
readonly toPoint: Vec2;
|
|
137
|
+
readonly toElement: ElementId | null;
|
|
138
|
+
} | {
|
|
139
|
+
readonly type: "MOVE_SHAPE";
|
|
140
|
+
readonly id: ElementId;
|
|
141
|
+
readonly delta: Vec2;
|
|
142
|
+
readonly originalBounds: Bounds;
|
|
143
|
+
} | {
|
|
144
|
+
readonly type: "MOVE_ANNOTATION";
|
|
145
|
+
readonly id: AnnotationId;
|
|
146
|
+
readonly delta: Vec2;
|
|
147
|
+
readonly originalPosition: Vec2;
|
|
148
|
+
} | {
|
|
149
|
+
readonly type: "COMMIT_ANNOTATION_DRAG";
|
|
150
|
+
readonly id: AnnotationId;
|
|
151
|
+
} | {
|
|
152
|
+
readonly type: "RESIZE_SHAPE";
|
|
153
|
+
readonly id: ElementId;
|
|
154
|
+
readonly handle: HandleId;
|
|
155
|
+
readonly delta: Vec2;
|
|
156
|
+
readonly originalBounds: Bounds;
|
|
157
|
+
} | {
|
|
158
|
+
/**
|
|
159
|
+
* Resize emit for a multi-selection's combined bounding box.
|
|
160
|
+
* Editor reads the press-down snapshot it kept and rescales every
|
|
161
|
+
* member proportionally. Single per-frame emit regardless of group
|
|
162
|
+
* size — the math is host-side.
|
|
163
|
+
*/
|
|
164
|
+
readonly type: "RESIZE_GROUP";
|
|
165
|
+
readonly handle: HandleId;
|
|
166
|
+
readonly delta: Vec2;
|
|
167
|
+
readonly originalBounds: Bounds;
|
|
168
|
+
} | {
|
|
169
|
+
readonly type: "CREATE_SHAPE";
|
|
170
|
+
readonly shapeType: "rect" | "ellipse" | "frame";
|
|
171
|
+
readonly bounds: Bounds;
|
|
172
|
+
} | {
|
|
173
|
+
readonly type: "CREATE_EDGE";
|
|
174
|
+
/** Element the edge starts on, or `null` for a free-floating point. */
|
|
175
|
+
readonly fromElement: ElementId | null;
|
|
176
|
+
/** Element the edge lands on, or `null` for a free-floating point. */
|
|
177
|
+
readonly toElement: ElementId | null;
|
|
178
|
+
/** Press-down world point — used as the fallback when `fromElement` is null. */
|
|
179
|
+
readonly fromPoint: Vec2;
|
|
180
|
+
/** Pointer-up world point — used as the fallback when `toElement` is null. */
|
|
181
|
+
readonly toPoint: Vec2;
|
|
182
|
+
} | {
|
|
183
|
+
readonly type: "DRAW_EDGE_PREVIEW";
|
|
184
|
+
readonly fromElement: ElementId | null;
|
|
185
|
+
readonly fromPoint: Vec2;
|
|
186
|
+
readonly toPoint: Vec2;
|
|
187
|
+
} | {
|
|
188
|
+
readonly type: "DRAW_EDGE_PREVIEW_CLEAR";
|
|
189
|
+
} | {
|
|
190
|
+
readonly type: "TEMPLATE_TAP";
|
|
191
|
+
readonly elementId: ElementId;
|
|
192
|
+
/** Action identifier from the tapped node (e.g. button `action`). */
|
|
193
|
+
readonly action: string;
|
|
194
|
+
/** Optional node id from the template tree. */
|
|
195
|
+
readonly nodeId?: string;
|
|
196
|
+
} | {
|
|
197
|
+
readonly type: "TEMPLATE_DROP";
|
|
198
|
+
/** Template shape that owns the drop-zone. */
|
|
199
|
+
readonly elementId: ElementId;
|
|
200
|
+
/** Id of the drop-zone node within the template tree. */
|
|
201
|
+
readonly nodeId?: string;
|
|
202
|
+
/** Template-id from the DOM `application/x-template-id` payload, if any. */
|
|
203
|
+
readonly templateId: string | null;
|
|
204
|
+
/** World coordinates where the drop happened. */
|
|
205
|
+
readonly point: Vec2;
|
|
206
|
+
};
|
|
207
|
+
/** Pixels of pointer travel before a press becomes a drag. */
|
|
208
|
+
export declare const DRAG_THRESHOLD = 4;
|
|
209
|
+
declare const boundsFromPoints: (a: Vec2, b: Vec2) => Bounds;
|
|
210
|
+
export declare const interactionMachine: import("xstate").StateMachine<InteractionContext, InteractionEvent, {}, never, {
|
|
211
|
+
type: "startPress";
|
|
212
|
+
params: {
|
|
213
|
+
point: Vec2;
|
|
214
|
+
target: PressTarget;
|
|
215
|
+
modifiers: Modifiers | null;
|
|
216
|
+
};
|
|
217
|
+
} | {
|
|
218
|
+
type: "updateLast";
|
|
219
|
+
params: {
|
|
220
|
+
point: Vec2;
|
|
221
|
+
};
|
|
222
|
+
} | {
|
|
223
|
+
type: "setDrawingType";
|
|
224
|
+
params: {
|
|
225
|
+
kind: "rect" | "ellipse" | "frame";
|
|
226
|
+
};
|
|
227
|
+
} | {
|
|
228
|
+
type: "resetGesture";
|
|
229
|
+
params: import("xstate").NonReducibleUnknown;
|
|
230
|
+
} | {
|
|
231
|
+
type: "setMode";
|
|
232
|
+
params: {
|
|
233
|
+
mode: Mode;
|
|
234
|
+
};
|
|
235
|
+
} | {
|
|
236
|
+
type: "emitMoveElement";
|
|
237
|
+
params: import("xstate").NonReducibleUnknown;
|
|
238
|
+
} | {
|
|
239
|
+
type: "emitMoveAnnotation";
|
|
240
|
+
params: import("xstate").NonReducibleUnknown;
|
|
241
|
+
} | {
|
|
242
|
+
type: "emitCommitAnnotationDrag";
|
|
243
|
+
params: import("xstate").NonReducibleUnknown;
|
|
244
|
+
} | {
|
|
245
|
+
type: "emitResizeElement";
|
|
246
|
+
params: import("xstate").NonReducibleUnknown;
|
|
247
|
+
} | {
|
|
248
|
+
type: "emitResizeGroup";
|
|
249
|
+
params: import("xstate").NonReducibleUnknown;
|
|
250
|
+
} | {
|
|
251
|
+
type: "maybeEmitCreate";
|
|
252
|
+
params: import("xstate").NonReducibleUnknown;
|
|
253
|
+
} | {
|
|
254
|
+
type: "emitLinkPreview";
|
|
255
|
+
params: import("xstate").NonReducibleUnknown;
|
|
256
|
+
} | {
|
|
257
|
+
type: "emitLinkPreviewClear";
|
|
258
|
+
params: import("xstate").NonReducibleUnknown;
|
|
259
|
+
} | {
|
|
260
|
+
type: "emitLinkEndpointPreview";
|
|
261
|
+
params: import("xstate").NonReducibleUnknown;
|
|
262
|
+
} | {
|
|
263
|
+
type: "emitLinkEndpointUpdate";
|
|
264
|
+
params: import("xstate").NonReducibleUnknown;
|
|
265
|
+
} | {
|
|
266
|
+
type: "emitLassoProgress";
|
|
267
|
+
params: import("xstate").NonReducibleUnknown;
|
|
268
|
+
} | {
|
|
269
|
+
type: "emitLassoCommit";
|
|
270
|
+
params: import("xstate").NonReducibleUnknown;
|
|
271
|
+
} | {
|
|
272
|
+
type: "emitCreateLink";
|
|
273
|
+
params: import("xstate").NonReducibleUnknown;
|
|
274
|
+
}, {
|
|
275
|
+
type: "movedAndOnElement";
|
|
276
|
+
params: unknown;
|
|
277
|
+
} | {
|
|
278
|
+
type: "movedAndOnHandle";
|
|
279
|
+
params: unknown;
|
|
280
|
+
} | {
|
|
281
|
+
type: "movedAndOnGroupHandle";
|
|
282
|
+
params: unknown;
|
|
283
|
+
} | {
|
|
284
|
+
type: "movedAndDrawing";
|
|
285
|
+
params: unknown;
|
|
286
|
+
} | {
|
|
287
|
+
type: "movedAndDrawingLink";
|
|
288
|
+
params: unknown;
|
|
289
|
+
} | {
|
|
290
|
+
type: "movedAndOnLinkEndpoint";
|
|
291
|
+
params: unknown;
|
|
292
|
+
} | {
|
|
293
|
+
type: "movedAndOnAnnotation";
|
|
294
|
+
params: unknown;
|
|
295
|
+
} | {
|
|
296
|
+
type: "movedAndLasso";
|
|
297
|
+
params: unknown;
|
|
298
|
+
}, never, "idle" | "pressing" | "draggingHandle" | "draggingGroupHandle" | "draggingElement" | "drawing" | "drawingLink" | "draggingLinkEndpoint" | "draggingAnnotation" | "lassoing", string, import("xstate").NonReducibleUnknown, import("xstate").NonReducibleUnknown, InteractionEmit, import("xstate").MetaObject, {
|
|
299
|
+
id: "interaction";
|
|
300
|
+
states: {
|
|
301
|
+
readonly idle: {};
|
|
302
|
+
readonly pressing: {};
|
|
303
|
+
readonly draggingElement: {};
|
|
304
|
+
readonly draggingHandle: {};
|
|
305
|
+
readonly draggingGroupHandle: {};
|
|
306
|
+
readonly drawing: {};
|
|
307
|
+
readonly drawingLink: {};
|
|
308
|
+
readonly draggingLinkEndpoint: {};
|
|
309
|
+
readonly draggingAnnotation: {};
|
|
310
|
+
readonly lassoing: {};
|
|
311
|
+
};
|
|
312
|
+
}>;
|
|
313
|
+
/**
|
|
314
|
+
* Host-side helper: decide whether POINTER_UP from `pressing` should produce
|
|
315
|
+
* a click-style effect (SELECT_REPLACE / SELECT_CLEAR). The machine emits
|
|
316
|
+
* dragging-effects directly; click effects are handled here because they
|
|
317
|
+
* depend on the up-point relative to the press origin, which the host
|
|
318
|
+
* computes the same way for both branches.
|
|
319
|
+
*/
|
|
320
|
+
export declare const interpretPressEnd: (ctx: InteractionContext, upPoint: Vec2) => InteractionEmit | null;
|
|
321
|
+
export { boundsFromPoints };
|
|
322
|
+
//# sourceMappingURL=machine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"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"}
|