@oh-just-another/state 0.58.0 → 0.60.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 +158 -0
- package/README.md +78 -27
- package/dist/.tsbuildinfo +1 -1
- package/dist/actions/actionArrange.d.ts +13 -0
- package/dist/actions/actionArrange.d.ts.map +1 -0
- package/dist/actions/actionArrange.js +130 -0
- package/dist/actions/actionArrange.js.map +1 -0
- package/dist/actions/actionClipboard.d.ts +2 -0
- package/dist/actions/actionClipboard.d.ts.map +1 -1
- package/dist/actions/actionClipboard.js +32 -1
- package/dist/actions/actionClipboard.js.map +1 -1
- package/dist/actions/actionKeyboard.d.ts.map +1 -1
- package/dist/actions/actionKeyboard.js +77 -9
- package/dist/actions/actionKeyboard.js.map +1 -1
- package/dist/actions/actionMode.d.ts +4 -0
- package/dist/actions/actionMode.d.ts.map +1 -1
- package/dist/actions/actionMode.js +54 -0
- package/dist/actions/actionMode.js.map +1 -1
- package/dist/actions/actionSelection.d.ts.map +1 -1
- package/dist/actions/actionSelection.js +1 -0
- package/dist/actions/actionSelection.js.map +1 -1
- package/dist/actions/actionText.d.ts +5 -0
- package/dist/actions/actionText.d.ts.map +1 -0
- package/dist/actions/actionText.js +37 -0
- package/dist/actions/actionText.js.map +1 -0
- package/dist/actions/actionView.d.ts +6 -0
- package/dist/actions/actionView.d.ts.map +1 -1
- package/dist/actions/actionView.js +20 -2
- package/dist/actions/actionView.js.map +1 -1
- package/dist/actions/actionZoom.d.ts.map +1 -1
- package/dist/actions/actionZoom.js +5 -0
- package/dist/actions/actionZoom.js.map +1 -1
- package/dist/actions/index.d.ts +6 -4
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +6 -4
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/registry.d.ts.map +1 -1
- package/dist/actions/registry.js +17 -0
- package/dist/actions/registry.js.map +1 -1
- package/dist/actions/types.d.ts +10 -1
- package/dist/actions/types.d.ts.map +1 -1
- package/dist/actions/types.js.map +1 -1
- package/dist/auto-layout-scheduler.d.ts +1 -3
- package/dist/auto-layout-scheduler.d.ts.map +1 -1
- package/dist/auto-layout-scheduler.js +1 -2
- package/dist/auto-layout-scheduler.js.map +1 -1
- package/dist/built-in-handlers.d.ts.map +1 -1
- package/dist/built-in-handlers.js +14 -1
- package/dist/built-in-handlers.js.map +1 -1
- package/dist/clipboard.d.ts +0 -14
- package/dist/clipboard.d.ts.map +1 -1
- package/dist/clipboard.js +1 -1
- package/dist/clipboard.js.map +1 -1
- package/dist/constants.d.ts +208 -41
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +210 -25
- package/dist/constants.js.map +1 -1
- package/dist/dom-events.d.ts +8 -2
- package/dist/dom-events.d.ts.map +1 -1
- package/dist/dom-events.js +12 -0
- package/dist/dom-events.js.map +1 -1
- package/dist/editor/animation-scene.d.ts +36 -0
- package/dist/editor/animation-scene.d.ts.map +1 -0
- package/dist/editor/animation-scene.js +194 -0
- package/dist/editor/animation-scene.js.map +1 -0
- package/dist/editor/animation.d.ts +43 -0
- package/dist/editor/animation.d.ts.map +1 -0
- package/dist/editor/animation.js +80 -0
- package/dist/editor/animation.js.map +1 -0
- package/dist/editor/applies/arrange.d.ts +46 -0
- package/dist/editor/applies/arrange.d.ts.map +1 -0
- package/dist/editor/applies/arrange.js +162 -0
- package/dist/editor/applies/arrange.js.map +1 -0
- package/dist/editor/applies/create.d.ts +0 -6
- package/dist/editor/applies/create.d.ts.map +1 -1
- package/dist/editor/applies/create.js +1 -1
- package/dist/editor/applies/create.js.map +1 -1
- package/dist/editor/applies/edge.d.ts +8 -1
- package/dist/editor/applies/edge.d.ts.map +1 -1
- package/dist/editor/applies/edge.js +31 -1
- package/dist/editor/applies/edge.js.map +1 -1
- package/dist/editor/applies/link-move.d.ts +0 -8
- package/dist/editor/applies/link-move.d.ts.map +1 -1
- package/dist/editor/applies/link-move.js +1 -1
- package/dist/editor/applies/link-move.js.map +1 -1
- package/dist/editor/applies/move.d.ts +6 -0
- package/dist/editor/applies/move.d.ts.map +1 -1
- package/dist/editor/applies/move.js +6 -0
- package/dist/editor/applies/move.js.map +1 -1
- package/dist/editor/applies/resize.d.ts +26 -5
- package/dist/editor/applies/resize.d.ts.map +1 -1
- package/dist/editor/applies/resize.js +91 -13
- package/dist/editor/applies/resize.js.map +1 -1
- package/dist/editor/caret-blink.d.ts +18 -0
- package/dist/editor/caret-blink.d.ts.map +1 -0
- package/dist/editor/caret-blink.js +42 -0
- package/dist/editor/caret-blink.js.map +1 -0
- package/dist/editor/container-ops.d.ts.map +1 -1
- package/dist/editor/container-ops.js +2 -2
- package/dist/editor/container-ops.js.map +1 -1
- package/dist/editor/dirty-rect.d.ts +23 -0
- package/dist/editor/dirty-rect.d.ts.map +1 -0
- package/dist/editor/dirty-rect.js +115 -0
- package/dist/editor/dirty-rect.js.map +1 -0
- package/dist/editor/gif-playback.d.ts +45 -0
- package/dist/editor/gif-playback.d.ts.map +1 -0
- package/dist/editor/gif-playback.js +125 -0
- package/dist/editor/gif-playback.js.map +1 -0
- package/dist/editor/hit-test.d.ts +3 -3
- package/dist/editor/hit-test.d.ts.map +1 -1
- package/dist/editor/hit-test.js +40 -15
- package/dist/editor/hit-test.js.map +1 -1
- package/dist/editor/interaction-state.d.ts +184 -0
- package/dist/editor/interaction-state.d.ts.map +1 -0
- package/dist/editor/interaction-state.js +139 -0
- package/dist/editor/interaction-state.js.map +1 -0
- package/dist/editor/link-handle-drag.d.ts +152 -0
- package/dist/editor/link-handle-drag.d.ts.map +1 -0
- package/dist/editor/link-handle-drag.js +300 -0
- package/dist/editor/link-handle-drag.js.map +1 -0
- package/dist/editor/long-press.d.ts.map +1 -1
- package/dist/editor/long-press.js +2 -2
- package/dist/editor/long-press.js.map +1 -1
- package/dist/editor/pinch.d.ts.map +1 -1
- package/dist/editor/pinch.js +6 -6
- package/dist/editor/pinch.js.map +1 -1
- package/dist/editor/pointer-binding.d.ts +9 -11
- package/dist/editor/pointer-binding.d.ts.map +1 -1
- package/dist/editor/pointer-binding.js +1191 -890
- package/dist/editor/pointer-binding.js.map +1 -1
- package/dist/editor/public/arrange-group.d.ts +3 -9
- package/dist/editor/public/arrange-group.d.ts.map +1 -1
- package/dist/editor/public/arrange-group.js +4 -6
- package/dist/editor/public/arrange-group.js.map +1 -1
- package/dist/editor/public/brush.d.ts +31 -12
- package/dist/editor/public/brush.d.ts.map +1 -1
- package/dist/editor/public/brush.js +66 -17
- package/dist/editor/public/brush.js.map +1 -1
- package/dist/editor/public/clipboard.d.ts +2 -4
- package/dist/editor/public/clipboard.d.ts.map +1 -1
- package/dist/editor/public/clipboard.js +2 -4
- package/dist/editor/public/clipboard.js.map +1 -1
- package/dist/editor/public/cursor.d.ts +29 -0
- package/dist/editor/public/cursor.d.ts.map +1 -0
- package/dist/editor/public/cursor.js +146 -0
- package/dist/editor/public/cursor.js.map +1 -0
- package/dist/editor/public/eraser.d.ts +55 -0
- package/dist/editor/public/eraser.d.ts.map +1 -0
- package/dist/editor/public/eraser.js +65 -0
- package/dist/editor/public/eraser.js.map +1 -0
- package/dist/editor/public/frame-name.d.ts +20 -0
- package/dist/editor/public/frame-name.d.ts.map +1 -0
- package/dist/editor/public/frame-name.js +54 -0
- package/dist/editor/public/frame-name.js.map +1 -0
- package/dist/editor/public/image-insert.d.ts +1 -1
- package/dist/editor/public/image-insert.d.ts.map +1 -1
- package/dist/editor/public/laser.d.ts +38 -0
- package/dist/editor/public/laser.d.ts.map +1 -0
- package/dist/editor/public/laser.js +42 -0
- package/dist/editor/public/laser.js.map +1 -0
- package/dist/editor/public/layers.d.ts.map +1 -1
- package/dist/editor/public/layers.js +2 -2
- package/dist/editor/public/layers.js.map +1 -1
- package/dist/editor/public/link.d.ts +11 -2
- package/dist/editor/public/link.d.ts.map +1 -1
- package/dist/editor/public/link.js +70 -2
- package/dist/editor/public/link.js.map +1 -1
- package/dist/editor/public/placement.d.ts +60 -2
- package/dist/editor/public/placement.d.ts.map +1 -1
- package/dist/editor/public/placement.js +193 -2
- package/dist/editor/public/placement.js.map +1 -1
- package/dist/editor/public/selection-ops.d.ts +35 -1
- package/dist/editor/public/selection-ops.d.ts.map +1 -1
- package/dist/editor/public/selection-ops.js +97 -2
- package/dist/editor/public/selection-ops.js.map +1 -1
- package/dist/editor/public/stroke-eraser-coverage.d.ts +37 -0
- package/dist/editor/public/stroke-eraser-coverage.d.ts.map +1 -0
- package/dist/editor/public/stroke-eraser-coverage.js +168 -0
- package/dist/editor/public/stroke-eraser-coverage.js.map +1 -0
- package/dist/editor/public/stroke-eraser.d.ts +50 -0
- package/dist/editor/public/stroke-eraser.d.ts.map +1 -0
- package/dist/editor/public/stroke-eraser.js +176 -0
- package/dist/editor/public/stroke-eraser.js.map +1 -0
- package/dist/editor/public/stroke-smoothing.d.ts +21 -0
- package/dist/editor/public/stroke-smoothing.d.ts.map +1 -0
- package/dist/editor/public/stroke-smoothing.js +37 -0
- package/dist/editor/public/stroke-smoothing.js.map +1 -0
- package/dist/editor/public/text-edit.d.ts +1 -10
- package/dist/editor/public/text-edit.d.ts.map +1 -1
- package/dist/editor/public/text-edit.js +2 -16
- package/dist/editor/public/text-edit.js.map +1 -1
- package/dist/editor/public/tool-ops.d.ts +130 -0
- package/dist/editor/public/tool-ops.d.ts.map +1 -0
- package/dist/editor/public/tool-ops.js +392 -0
- package/dist/editor/public/tool-ops.js.map +1 -0
- package/dist/editor/public/z-order.d.ts +1 -12
- package/dist/editor/public/z-order.d.ts.map +1 -1
- package/dist/editor/public/z-order.js +5 -5
- package/dist/editor/public/z-order.js.map +1 -1
- package/dist/editor/public/zoom-pan.d.ts +15 -4
- package/dist/editor/public/zoom-pan.d.ts.map +1 -1
- package/dist/editor/public/zoom-pan.js +39 -7
- package/dist/editor/public/zoom-pan.js.map +1 -1
- package/dist/editor/render-orchestrator.d.ts +177 -5
- package/dist/editor/render-orchestrator.d.ts.map +1 -1
- package/dist/editor/render-orchestrator.js +519 -358
- package/dist/editor/render-orchestrator.js.map +1 -1
- package/dist/editor/resize-helpers.d.ts +21 -5
- package/dist/editor/resize-helpers.d.ts.map +1 -1
- package/dist/editor/resize-helpers.js +59 -19
- package/dist/editor/resize-helpers.js.map +1 -1
- package/dist/editor/text-edit.d.ts +136 -0
- package/dist/editor/text-edit.d.ts.map +1 -0
- package/dist/editor/text-edit.js +328 -0
- package/dist/editor/text-edit.js.map +1 -0
- package/dist/editor/viewport-helpers.d.ts.map +1 -1
- package/dist/editor/viewport-helpers.js +3 -3
- package/dist/editor/viewport-helpers.js.map +1 -1
- package/dist/editor-events.d.ts +1 -1
- package/dist/editor-events.d.ts.map +1 -1
- package/dist/editor.d.ts +603 -346
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +1843 -1630
- package/dist/editor.js.map +1 -1
- package/dist/file-drop.d.ts.map +1 -1
- package/dist/file-drop.js +1 -2
- package/dist/file-drop.js.map +1 -1
- package/dist/frame-helpers.d.ts.map +1 -1
- package/dist/frame-helpers.js +5 -5
- package/dist/frame-helpers.js.map +1 -1
- package/dist/group-helpers.d.ts.map +1 -1
- package/dist/group-helpers.js +4 -4
- package/dist/group-helpers.js.map +1 -1
- package/dist/handle.d.ts +59 -6
- package/dist/handle.d.ts.map +1 -1
- package/dist/handle.js +99 -7
- package/dist/handle.js.map +1 -1
- package/dist/hotkeys-binding.d.ts +26 -0
- package/dist/hotkeys-binding.d.ts.map +1 -0
- package/dist/hotkeys-binding.js +35 -0
- package/dist/hotkeys-binding.js.map +1 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/link-selection.d.ts +3 -5
- package/dist/link-selection.d.ts.map +1 -1
- package/dist/link-selection.js +3 -12
- package/dist/link-selection.js.map +1 -1
- package/dist/machine.d.ts +27 -1
- package/dist/machine.d.ts.map +1 -1
- package/dist/machine.js +38 -0
- package/dist/machine.js.map +1 -1
- package/dist/modes.d.ts +15 -1
- package/dist/modes.d.ts.map +1 -1
- package/dist/modes.js.map +1 -1
- package/dist/overlay.d.ts +92 -6
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +582 -125
- package/dist/overlay.js.map +1 -1
- package/dist/search.d.ts +37 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +45 -0
- package/dist/search.js.map +1 -0
- package/dist/selection.d.ts.map +1 -1
- package/dist/selection.js +2 -10
- package/dist/selection.js.map +1 -1
- package/dist/util.d.ts +8 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +17 -0
- package/dist/util.js.map +1 -0
- package/package.json +7 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getElement, orderBetween, orderBetweenMany, orderForBottom, orderForTop, updateLink, updateElement, } from "@oh-just-another/scene";
|
|
1
|
+
import { byOrderAsc, byOrderDesc, getElement, orderBetween, orderBetweenMany, orderForBottom, orderForTop, updateLink, updateElement, } from "@oh-just-another/scene";
|
|
2
2
|
/**
|
|
3
3
|
* Pick the target shape for a single-shape z-order command. Defaults
|
|
4
4
|
* to the lone selected shape when `id` is omitted; null when neither
|
|
@@ -57,7 +57,7 @@ export const computeBringForward = (scene, id, selection) => {
|
|
|
57
57
|
// Siblings on the same layer, sorted bottom → top.
|
|
58
58
|
const siblings = [...scene.elements.values()]
|
|
59
59
|
.filter((s) => s.layerId === shape.layerId && s.id !== shape.id)
|
|
60
|
-
.sort(
|
|
60
|
+
.sort(byOrderAsc);
|
|
61
61
|
// Neighbour directly above = smallest order strictly greater than
|
|
62
62
|
// the shape's own. Anything above the neighbour follows.
|
|
63
63
|
const above = siblings.find((s) => s.order > shape.order) ?? null;
|
|
@@ -90,7 +90,7 @@ export const computeSendBackward = (scene, id, selection) => {
|
|
|
90
90
|
// (largest order strictly less than the shape's own).
|
|
91
91
|
const siblings = [...scene.elements.values()]
|
|
92
92
|
.filter((s) => s.layerId === shape.layerId && s.id !== shape.id)
|
|
93
|
-
.sort(
|
|
93
|
+
.sort(byOrderDesc);
|
|
94
94
|
const below = siblings.find((s) => s.order < shape.order) ?? null;
|
|
95
95
|
if (!below)
|
|
96
96
|
return null; // already bottom-most
|
|
@@ -111,10 +111,10 @@ export const computeSendBackward = (scene, id, selection) => {
|
|
|
111
111
|
* `apply` is the side-effect callback — the caller threads scene + tx
|
|
112
112
|
* through it.
|
|
113
113
|
*/
|
|
114
|
-
|
|
114
|
+
const rewriteOrders = (entities, apply) => {
|
|
115
115
|
if (entities.length === 0)
|
|
116
116
|
return 0;
|
|
117
|
-
const sorted = [...entities].sort(
|
|
117
|
+
const sorted = [...entities].sort(byOrderAsc);
|
|
118
118
|
const fresh = orderBetweenMany(null, null, sorted.length);
|
|
119
119
|
let changed = 0;
|
|
120
120
|
sorted.forEach((entity, i) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"z-order.js","sourceRoot":"","sources":["../../../src/editor/public/z-order.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"z-order.js","sourceRoot":"","sources":["../../../src/editor/public/z-order.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type GridStyle, type Scene } from "@oh-just-another/scene";
|
|
2
2
|
import type { Bounds, Vec2 } from "@oh-just-another/types";
|
|
3
|
+
/** Clamp a zoom factor to the editor's `[MIN_ZOOM, MAX_ZOOM]` range. */
|
|
4
|
+
export declare const clampZoom: (z: number) => number;
|
|
3
5
|
/**
|
|
4
6
|
* Shift the camera by a screen-space delta. Returns the next scene, or
|
|
5
7
|
* `null` for a zero-delta no-op. Viewport state is editor-local —
|
|
@@ -25,6 +27,15 @@ export declare const computeResetZoom: (scene: Scene) => Scene | null;
|
|
|
25
27
|
* zoom-to-selection.
|
|
26
28
|
*/
|
|
27
29
|
export declare const computeZoomToBounds: (scene: Scene, bounds: Bounds, padding: number) => Scene | null;
|
|
30
|
+
/**
|
|
31
|
+
* Center the camera on `bounds` for a "reveal / jump-to" (search navigation,
|
|
32
|
+
* go-to-element), WITHOUT filling the screen. Unlike {@link computeZoomToBounds}
|
|
33
|
+
* (fit-to-fill), this never zooms IN past the current zoom — a small match
|
|
34
|
+
* keeps its on-screen size and is merely centered; the zoom only drops to fit
|
|
35
|
+
* when `bounds` is too large for the viewport (minus `padding`). Returns `null`
|
|
36
|
+
* on a degenerate viewport / bounds.
|
|
37
|
+
*/
|
|
38
|
+
export declare const computeRevealBounds: (scene: Scene, bounds: Bounds, padding: number) => Scene | null;
|
|
28
39
|
export declare const computeZoomToFit: (scene: Scene, padding: number) => Scene | null;
|
|
29
40
|
/**
|
|
30
41
|
* Update the camera's screen-pixel size. Returns `null` when size is
|
|
@@ -32,12 +43,12 @@ export declare const computeZoomToFit: (scene: Scene, padding: number) => Scene
|
|
|
32
43
|
*/
|
|
33
44
|
export declare const computeViewportResize: (scene: Scene, width: number, height: number) => Scene | null;
|
|
34
45
|
/**
|
|
35
|
-
* Merge a partial grid update (`
|
|
36
|
-
* when nothing actually changed. Grid settings are view
|
|
37
|
-
* caller doesn't touch history.
|
|
46
|
+
* Merge a partial grid update (`enabled` and/or `style` and/or `snap`).
|
|
47
|
+
* Returns `null` when nothing actually changed. Grid settings are view
|
|
48
|
+
* preferences — caller doesn't touch history.
|
|
38
49
|
*/
|
|
39
50
|
export declare const computeSetGrid: (scene: Scene, patch: {
|
|
40
|
-
|
|
51
|
+
enabled?: boolean;
|
|
41
52
|
style?: GridStyle;
|
|
42
53
|
snap?: boolean;
|
|
43
54
|
}) => Scene | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoom-pan.d.ts","sourceRoot":"","sources":["../../../src/editor/public/zoom-pan.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"zoom-pan.d.ts","sourceRoot":"","sources":["../../../src/editor/public/zoom-pan.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG3D,wEAAwE;AACxE,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,KAAG,MAAmD,CAAC;AAE1F;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,KAAK,EAAE,aAAa,IAAI,KAAG,KAAK,GAAG,IAGpE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,EAAE,aAAa,IAAI,KAAG,KAAK,GAAG,IASvF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,KAAG,KAAK,GAAG,IAQvD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,KAAK,EACZ,QAAQ,MAAM,EACd,SAAS,MAAM,KACd,KAAK,GAAG,IAiBV,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,KAAK,EACZ,QAAQ,MAAM,EACd,SAAS,MAAM,KACd,KAAK,GAAG,IAmBV,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,EAAE,SAAS,MAAM,KAAG,KAAK,GAAG,IASxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,KAAK,EACZ,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,KAAK,GAAG,IAIV,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,KAAK,EACZ,OAAO;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,KAC9D,KAAK,GAAG,IAeV,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { bounds as B } from "@oh-just-another/math";
|
|
2
2
|
import { getElementWorldBounds, panBy as viewportPanBy, resize as viewportResize, zoomAt as viewportZoomAt, } from "@oh-just-another/scene";
|
|
3
3
|
import { MAX_ZOOM, MIN_ZOOM } from "../../constants.js";
|
|
4
|
-
|
|
4
|
+
/** Clamp a zoom factor to the editor's `[MIN_ZOOM, MAX_ZOOM]` range. */
|
|
5
|
+
export const clampZoom = (z) => Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, z));
|
|
5
6
|
/**
|
|
6
7
|
* Shift the camera by a screen-space delta. Returns the next scene, or
|
|
7
8
|
* `null` for a zero-delta no-op. Viewport state is editor-local —
|
|
@@ -70,6 +71,37 @@ export const computeZoomToBounds = (scene, bounds, padding) => {
|
|
|
70
71
|
};
|
|
71
72
|
return { ...scene, viewport: { ...vp, zoom, pan } };
|
|
72
73
|
};
|
|
74
|
+
/**
|
|
75
|
+
* Center the camera on `bounds` for a "reveal / jump-to" (search navigation,
|
|
76
|
+
* go-to-element), WITHOUT filling the screen. Unlike {@link computeZoomToBounds}
|
|
77
|
+
* (fit-to-fill), this never zooms IN past the current zoom — a small match
|
|
78
|
+
* keeps its on-screen size and is merely centered; the zoom only drops to fit
|
|
79
|
+
* when `bounds` is too large for the viewport (minus `padding`). Returns `null`
|
|
80
|
+
* on a degenerate viewport / bounds.
|
|
81
|
+
*/
|
|
82
|
+
export const computeRevealBounds = (scene, bounds, padding) => {
|
|
83
|
+
const vp = scene.viewport;
|
|
84
|
+
if (vp.size.width <= 0 || vp.size.height <= 0)
|
|
85
|
+
return null;
|
|
86
|
+
if (bounds.width <= 0 || bounds.height <= 0)
|
|
87
|
+
return null;
|
|
88
|
+
const availW = vp.size.width - padding * 2;
|
|
89
|
+
const availH = vp.size.height - padding * 2;
|
|
90
|
+
if (availW <= 0 || availH <= 0)
|
|
91
|
+
return null;
|
|
92
|
+
const fitZoom = Math.min(availW / bounds.width, availH / bounds.height);
|
|
93
|
+
// Keep the current zoom unless the match doesn't fit — then zoom out only.
|
|
94
|
+
const zoom = clampZoom(Math.min(vp.zoom, fitZoom));
|
|
95
|
+
const centerWorld = {
|
|
96
|
+
x: bounds.x + bounds.width / 2,
|
|
97
|
+
y: bounds.y + bounds.height / 2,
|
|
98
|
+
};
|
|
99
|
+
const pan = {
|
|
100
|
+
x: centerWorld.x - vp.size.width / 2 / zoom,
|
|
101
|
+
y: centerWorld.y - vp.size.height / 2 / zoom,
|
|
102
|
+
};
|
|
103
|
+
return { ...scene, viewport: { ...vp, zoom, pan } };
|
|
104
|
+
};
|
|
73
105
|
export const computeZoomToFit = (scene, padding) => {
|
|
74
106
|
if (scene.elements.size === 0)
|
|
75
107
|
return null;
|
|
@@ -93,21 +125,21 @@ export const computeViewportResize = (scene, width, height) => {
|
|
|
93
125
|
return { ...scene, viewport: viewportResize(vp, width, height) };
|
|
94
126
|
};
|
|
95
127
|
/**
|
|
96
|
-
* Merge a partial grid update (`
|
|
97
|
-
* when nothing actually changed. Grid settings are view
|
|
98
|
-
* caller doesn't touch history.
|
|
128
|
+
* Merge a partial grid update (`enabled` and/or `style` and/or `snap`).
|
|
129
|
+
* Returns `null` when nothing actually changed. Grid settings are view
|
|
130
|
+
* preferences — caller doesn't touch history.
|
|
99
131
|
*/
|
|
100
132
|
export const computeSetGrid = (scene, patch) => {
|
|
101
133
|
const vp = scene.viewport;
|
|
102
|
-
const
|
|
134
|
+
const nextEnabled = patch.enabled ?? vp.gridEnabled;
|
|
103
135
|
const nextStyle = patch.style ?? vp.gridStyle;
|
|
104
136
|
const nextSnap = patch.snap ?? vp.snapToGrid;
|
|
105
|
-
if (
|
|
137
|
+
if (nextEnabled === vp.gridEnabled && nextStyle === vp.gridStyle && nextSnap === vp.snapToGrid) {
|
|
106
138
|
return null;
|
|
107
139
|
}
|
|
108
140
|
const nextViewport = {
|
|
109
141
|
...vp,
|
|
110
|
-
|
|
142
|
+
gridEnabled: nextEnabled,
|
|
111
143
|
...(nextStyle === undefined ? {} : { gridStyle: nextStyle }),
|
|
112
144
|
...(nextSnap === undefined ? {} : { snapToGrid: nextSnap }),
|
|
113
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoom-pan.js","sourceRoot":"","sources":["../../../src/editor/public/zoom-pan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,KAAK,IAAI,aAAa,EACtB,MAAM,IAAI,cAAc,EACxB,MAAM,IAAI,cAAc,GAGzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"zoom-pan.js","sourceRoot":"","sources":["../../../src/editor/public/zoom-pan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,183 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Scene, type Element, type Link, type SpatialGrid } from "@oh-just-another/scene";
|
|
2
|
+
import { type AnimationClock, type RenderTarget, type ElementCache } from "@oh-just-another/renderer-core";
|
|
3
|
+
import { type PeerCursor, type PeerSelection } from "../overlay.js";
|
|
4
|
+
import type { Bounds, ElementId, LinkId, LayerId, AnnotationId, Vec2 } from "@oh-just-another/types";
|
|
5
|
+
import type { Mode } from "../modes.js";
|
|
6
|
+
import type { ContainerHover, EdgePreview, HoveredLinkTarget, LinkDragFromAnchor, PanGesture } from "./interaction-state.js";
|
|
7
|
+
import type { BrushStrokeState } from "./public/brush.js";
|
|
8
|
+
import type { LaserStroke } from "./public/laser.js";
|
|
9
|
+
import type { TileComposeFn } from "../editor.js";
|
|
10
|
+
/**
|
|
11
|
+
* Live brush-stroke preview: the in-progress stroke's smoothed geometry plus the
|
|
12
|
+
* paint colour and opacity it will commit with, so the overlay preview matches
|
|
13
|
+
* the committed stroke exactly (no colour / opacity snap on release).
|
|
14
|
+
*/
|
|
15
|
+
export interface BrushPreview extends BrushStrokeState {
|
|
16
|
+
readonly fill: string;
|
|
17
|
+
readonly opacity: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Flat, self-contained data bag the {@link renderEditor} orchestrator paints
|
|
21
|
+
* from — every field the render pass reads, precomputed by the Editor. Breaks
|
|
22
|
+
* the Editor ↔ orchestrator import cycle: the orchestrator no longer imports
|
|
23
|
+
* (nor reaches into) the `Editor` class, it just consumes this snapshot.
|
|
24
|
+
*
|
|
25
|
+
* All derived viewport/dirty/dim/hide inputs and the shared spatial index are
|
|
26
|
+
* resolved up front (same call order as before) so painting is side-effect
|
|
27
|
+
* free. The two runtime-parameterised lookups the overlay path still needs —
|
|
28
|
+
* click-create preview and GIF playback state — come in as narrow callbacks.
|
|
29
|
+
*/
|
|
30
|
+
export interface RenderSnapshot {
|
|
31
|
+
readonly mainTarget: RenderTarget;
|
|
32
|
+
readonly overlayTarget: RenderTarget;
|
|
33
|
+
readonly backgroundTarget: RenderTarget | null;
|
|
34
|
+
readonly scene: Scene;
|
|
35
|
+
readonly selection: ReadonlySet<ElementId>;
|
|
36
|
+
readonly selectedLinks: ReadonlySet<LinkId>;
|
|
37
|
+
/** Sole selected link (handles shown) or `null` for multi/mixed/none. */
|
|
38
|
+
readonly selectedLink: LinkId | null;
|
|
39
|
+
readonly selectedAnnotation: AnnotationId | null;
|
|
40
|
+
readonly enteredGroup: ElementId | null;
|
|
41
|
+
readonly gridEnabled: boolean;
|
|
42
|
+
readonly viewportWorld: Bounds | null;
|
|
43
|
+
readonly dirtyWorld: Bounds | null;
|
|
44
|
+
readonly dimElements: ReadonlySet<ElementId> | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* `true` while an eraser sweep has marked shapes for deletion — the dim set
|
|
47
|
+
* then fades at {@link ERASE_DIM_OPACITY} (strong "about to delete") instead
|
|
48
|
+
* of the gentler group-isolation {@link ISOLATION_DIM_OPACITY}.
|
|
49
|
+
*/
|
|
50
|
+
readonly eraseActive: boolean;
|
|
51
|
+
readonly hideElements: ReadonlySet<ElementId> | undefined;
|
|
52
|
+
readonly sharedIndex: SpatialGrid | null;
|
|
53
|
+
readonly boundsCache: ElementCache<Bounds>;
|
|
54
|
+
/**
|
|
55
|
+
* Per-instance animated-content playback clock. Threaded into `renderScene`
|
|
56
|
+
* via {@link RenderSceneOptions.clock} so this editor's per-shape GIF
|
|
57
|
+
* playback (pause / offset) doesn't leak through the process-global
|
|
58
|
+
* `setAnimationClock`. The tile path can't carry a render context, so it
|
|
59
|
+
* bridges this onto the module fallback right before compositing.
|
|
60
|
+
*/
|
|
61
|
+
readonly animationClock: AnimationClock;
|
|
62
|
+
readonly tileComposeFn: TileComposeFn | null;
|
|
63
|
+
readonly tileDirtyElements: Map<ElementId, {
|
|
64
|
+
before: Bounds | null;
|
|
65
|
+
after: Bounds | null;
|
|
66
|
+
}>;
|
|
67
|
+
readonly mode: Mode;
|
|
68
|
+
readonly activeLayerId: LayerId;
|
|
69
|
+
/** World-space corners of the pending image-crop frame, or null. */
|
|
70
|
+
readonly cropFrame: readonly Vec2[] | null;
|
|
71
|
+
/**
|
|
72
|
+
* Crop-mode ghost: the original image element (transform + live bitmap
|
|
73
|
+
* handle via `metadata.image`) and the virtual full-image LOCAL rect. The
|
|
74
|
+
* overlay paints the full bitmap faintly over this rect so hidden parts stay
|
|
75
|
+
* visible while cropping. `null` when not cropping.
|
|
76
|
+
*/
|
|
77
|
+
readonly cropGhost: {
|
|
78
|
+
readonly element: Element;
|
|
79
|
+
readonly fullRect: Bounds;
|
|
80
|
+
} | null;
|
|
81
|
+
/**
|
|
82
|
+
* Pending flowchart-create preview: the not-yet-committed nodes + links drawn
|
|
83
|
+
* faintly on the overlay while a `Cmd/Ctrl+Arrow` grow session is open.
|
|
84
|
+
* `null` when no session is active.
|
|
85
|
+
*/
|
|
86
|
+
readonly flowchartPreview: {
|
|
87
|
+
readonly elements: readonly Element[];
|
|
88
|
+
readonly links: readonly Link[];
|
|
89
|
+
} | null;
|
|
90
|
+
/**
|
|
91
|
+
* Pending stroke-erase preview: the fragments each touched brush would be cut
|
|
92
|
+
* into while a Shift-held eraser gesture drags. Drawn on the overlay; the
|
|
93
|
+
* touched originals are already in `hideElements`. `null` when no such
|
|
94
|
+
* gesture is active. Fragment ids are ephemeral (never enter history).
|
|
95
|
+
*/
|
|
96
|
+
readonly strokeErasePreview: {
|
|
97
|
+
readonly elements: readonly Element[];
|
|
98
|
+
readonly hidden: ReadonlySet<ElementId>;
|
|
99
|
+
} | null;
|
|
100
|
+
readonly lassoPreview: Bounds | null;
|
|
101
|
+
readonly drawingPreview: Bounds | null;
|
|
102
|
+
readonly edgePreview: EdgePreview | null;
|
|
103
|
+
readonly linkDragFromAnchor: LinkDragFromAnchor | null;
|
|
104
|
+
readonly hoveredLinkTarget: HoveredLinkTarget | null;
|
|
105
|
+
readonly panGesture: PanGesture | null;
|
|
106
|
+
readonly pinchActive: boolean;
|
|
107
|
+
readonly gestureActive: boolean;
|
|
108
|
+
readonly linkEndpointDrag: {
|
|
109
|
+
linkId: LinkId;
|
|
110
|
+
side: "from" | "to";
|
|
111
|
+
toPoint: Vec2;
|
|
112
|
+
} | null;
|
|
113
|
+
readonly linkSegmentDrag: {
|
|
114
|
+
linkId: LinkId;
|
|
115
|
+
axis: "h" | "v";
|
|
116
|
+
at: number;
|
|
117
|
+
} | null;
|
|
118
|
+
readonly linkWaypointDrag: {
|
|
119
|
+
linkId: LinkId;
|
|
120
|
+
index: number;
|
|
121
|
+
pendingInsert: boolean;
|
|
122
|
+
} | null;
|
|
123
|
+
readonly hoverCursorWorld: Vec2 | null;
|
|
124
|
+
readonly anchorStartHitSlop: number;
|
|
125
|
+
readonly anchorClickRadius: number;
|
|
126
|
+
readonly containerHover: ContainerHover | null;
|
|
127
|
+
readonly brushStroke: BrushPreview | null;
|
|
128
|
+
readonly laserStrokes: readonly LaserStroke[];
|
|
129
|
+
/** Fading eraser drag trail (laser-style), painted in neutral grey. */
|
|
130
|
+
readonly eraserTrail: readonly LaserStroke[];
|
|
131
|
+
/**
|
|
132
|
+
* Eraser cursor ring: the world-space hover centre and its SCREEN-px radius
|
|
133
|
+
* (the panel's eraser width). `null` unless the erase tool is active with a
|
|
134
|
+
* live hover point and the editor is editable. The overlay hides the OS
|
|
135
|
+
* cursor in erase mode and paints this ring in its place.
|
|
136
|
+
*/
|
|
137
|
+
readonly eraserCursor: {
|
|
138
|
+
readonly center: Vec2;
|
|
139
|
+
readonly radius: number;
|
|
140
|
+
} | null;
|
|
141
|
+
readonly peerCursors: readonly PeerCursor[];
|
|
142
|
+
readonly peerSelections: readonly PeerSelection[];
|
|
143
|
+
readonly debugHitZones: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Read-only / view mode. When true the overlay paints selection outlines
|
|
146
|
+
* (halo) but suppresses every interactive handle — resize / rotate grips,
|
|
147
|
+
* group-bounds handles and link endpoint/bend handles — so a viewer can't
|
|
148
|
+
* grab an affordance that would mutate the scene.
|
|
149
|
+
*/
|
|
150
|
+
readonly readOnly: boolean;
|
|
151
|
+
readonly groupMoveOrigin: ReadonlyMap<ElementId, Vec2> | null;
|
|
152
|
+
readonly aspectLocked: boolean;
|
|
153
|
+
readonly combinedSelectionBounds: Bounds | null;
|
|
154
|
+
readonly editingText: {
|
|
155
|
+
caret: {
|
|
156
|
+
x: number;
|
|
157
|
+
y: number;
|
|
158
|
+
height: number;
|
|
159
|
+
} | null;
|
|
160
|
+
caretColor: string;
|
|
161
|
+
selectionRects: readonly Bounds[];
|
|
162
|
+
} | null;
|
|
163
|
+
readonly previewClickCreate: (fromElement: ElementId, anchorName: string) => {
|
|
164
|
+
bounds: Bounds;
|
|
165
|
+
path: readonly Vec2[];
|
|
166
|
+
element: Element;
|
|
167
|
+
ghostScene: Scene;
|
|
168
|
+
ghostLinkId: LinkId;
|
|
169
|
+
} | null;
|
|
170
|
+
readonly isPlaybackPaused: (id: ElementId) => boolean;
|
|
171
|
+
}
|
|
2
172
|
/**
|
|
3
173
|
* Render orchestrator: background grid pass, tile-cache vs full renderScene
|
|
4
174
|
* path, and the overlay options builder (drawing / lasso preview, edge
|
|
5
175
|
* preview, hovered ports, group handles, container drop zone, brush stroke,
|
|
6
|
-
* edge endpoint drag, peer cursors, annotations).
|
|
7
|
-
*
|
|
8
|
-
* site is editor.ts's own private `render()`
|
|
176
|
+
* edge endpoint drag, peer cursors, annotations). Consumes a flat
|
|
177
|
+
* {@link RenderSnapshot} the Editor builds each frame — no coupling to the
|
|
178
|
+
* `Editor` class. The single call site is editor.ts's own private `render()`
|
|
179
|
+
* wrapper. Side-effect free apart from the paint itself: the caller owns the
|
|
180
|
+
* `lastRendered*` bookkeeping and the tile-dirty reset.
|
|
9
181
|
*/
|
|
10
|
-
export declare const renderEditor: (editor:
|
|
182
|
+
export declare const renderEditor: (editor: RenderSnapshot) => void;
|
|
11
183
|
//# sourceMappingURL=render-orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-orchestrator.d.ts","sourceRoot":"","sources":["../../src/editor/render-orchestrator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render-orchestrator.d.ts","sourceRoot":"","sources":["../../src/editor/render-orchestrator.ts"],"names":[],"mappings":"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"}
|