@oh-just-another/state 0.58.0 → 0.59.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 +67 -0
- package/README.md +76 -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 +27 -1
- package/dist/actions/actionClipboard.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.js +1 -1
- package/dist/actions/index.d.ts +3 -1
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +3 -1
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/registry.d.ts.map +1 -1
- package/dist/actions/registry.js +4 -0
- package/dist/actions/registry.js.map +1 -1
- package/dist/actions/types.d.ts +1 -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/constants.d.ts +48 -23
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +48 -23
- package/dist/constants.js.map +1 -1
- package/dist/dom-events.d.ts +7 -0
- 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 +21 -0
- package/dist/editor/animation-scene.d.ts.map +1 -0
- package/dist/editor/animation-scene.js +71 -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/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/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/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.map +1 -1
- package/dist/editor/pointer-binding.js +42 -25
- 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/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 +43 -0
- package/dist/editor/public/cursor.d.ts.map +1 -0
- package/dist/editor/public/cursor.js +135 -0
- package/dist/editor/public/cursor.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/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 +185 -2
- package/dist/editor/public/placement.js.map +1 -1
- package/dist/editor/public/selection-ops.d.ts +23 -1
- package/dist/editor/public/selection-ops.d.ts.map +1 -1
- package/dist/editor/public/selection-ops.js +79 -2
- package/dist/editor/public/selection-ops.js.map +1 -1
- 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/z-order.d.ts.map +1 -1
- package/dist/editor/public/z-order.js +4 -4
- package/dist/editor/public/z-order.js.map +1 -1
- package/dist/editor/public/zoom-pan.d.ts +6 -4
- package/dist/editor/public/zoom-pan.d.ts.map +1 -1
- package/dist/editor/public/zoom-pan.js +8 -7
- package/dist/editor/public/zoom-pan.js.map +1 -1
- package/dist/editor/render-orchestrator.d.ts.map +1 -1
- package/dist/editor/render-orchestrator.js +4 -9
- 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/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 +125 -133
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +351 -989
- 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 +61 -6
- package/dist/handle.d.ts.map +1 -1
- package/dist/handle.js +105 -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 +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- 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/overlay.d.ts +1 -4
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +136 -36
- package/dist/overlay.js.map +1 -1
- 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
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { bounds as B } from "@oh-just-another/math";
|
|
2
|
+
import { getElement, getElementWorldBounds, } from "@oh-just-another/scene";
|
|
3
|
+
/** Collect the live elements for `ids`, skipping any that no longer exist. */
|
|
4
|
+
const collect = (scene, ids) => {
|
|
5
|
+
const out = [];
|
|
6
|
+
for (const id of ids) {
|
|
7
|
+
const el = getElement(scene, id);
|
|
8
|
+
if (el)
|
|
9
|
+
out.push(el);
|
|
10
|
+
}
|
|
11
|
+
return out;
|
|
12
|
+
};
|
|
13
|
+
/** World-space AABB enclosing every element in `elements` (assumed non-empty). */
|
|
14
|
+
const enclosingBounds = (elements) => elements.map((el) => getElementWorldBounds(el)).reduce((acc, b) => B.union(acc, b));
|
|
15
|
+
/**
|
|
16
|
+
* Pure: mirror every selected element about the combined selection's centre on
|
|
17
|
+
* the given axis. Each element's position reflects across the centre and its
|
|
18
|
+
* scale sign flips on that axis, so the content mirrors in place; size is
|
|
19
|
+
* unchanged. Mirroring a single element flips it about its own centre. Edges
|
|
20
|
+
* bound to the moved elements re-route from their endpoints; free links are
|
|
21
|
+
* left untouched.
|
|
22
|
+
*/
|
|
23
|
+
export const computeFlipPatches = (scene, ids, axis) => {
|
|
24
|
+
const elements = collect(scene, ids);
|
|
25
|
+
if (elements.length === 0)
|
|
26
|
+
return [];
|
|
27
|
+
const box = enclosingBounds(elements);
|
|
28
|
+
const cx = box.x + box.width / 2;
|
|
29
|
+
const cy = box.y + box.height / 2;
|
|
30
|
+
const horizontal = axis === "horizontal";
|
|
31
|
+
const patches = [];
|
|
32
|
+
for (const el of elements) {
|
|
33
|
+
const after = horizontal
|
|
34
|
+
? {
|
|
35
|
+
...el,
|
|
36
|
+
position: { x: 2 * cx - el.position.x, y: el.position.y },
|
|
37
|
+
scale: { x: -el.scale.x, y: el.scale.y },
|
|
38
|
+
}
|
|
39
|
+
: {
|
|
40
|
+
...el,
|
|
41
|
+
position: { x: el.position.x, y: 2 * cy - el.position.y },
|
|
42
|
+
scale: { x: el.scale.x, y: -el.scale.y },
|
|
43
|
+
};
|
|
44
|
+
patches.push({ kind: "element", id: el.id, before: el, after });
|
|
45
|
+
}
|
|
46
|
+
return patches;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Pure: align every selected element to the given edge / centre line of the
|
|
50
|
+
* combined selection's bounding box (e.g. `left` moves each shape so its left
|
|
51
|
+
* edge meets the box's left edge; `h-center` lines up horizontal centres).
|
|
52
|
+
* Only the relevant axis moves; sizes are unchanged. A no-op below two
|
|
53
|
+
* elements.
|
|
54
|
+
*/
|
|
55
|
+
export const computeAlignPatches = (scene, ids, edge) => {
|
|
56
|
+
const elements = collect(scene, ids);
|
|
57
|
+
if (elements.length < 2)
|
|
58
|
+
return [];
|
|
59
|
+
const box = enclosingBounds(elements);
|
|
60
|
+
const patches = [];
|
|
61
|
+
for (const el of elements) {
|
|
62
|
+
const b = getElementWorldBounds(el);
|
|
63
|
+
let dx = 0;
|
|
64
|
+
let dy = 0;
|
|
65
|
+
switch (edge) {
|
|
66
|
+
case "left":
|
|
67
|
+
dx = box.x - b.x;
|
|
68
|
+
break;
|
|
69
|
+
case "right":
|
|
70
|
+
dx = box.x + box.width - (b.x + b.width);
|
|
71
|
+
break;
|
|
72
|
+
case "h-center":
|
|
73
|
+
dx = box.x + box.width / 2 - (b.x + b.width / 2);
|
|
74
|
+
break;
|
|
75
|
+
case "top":
|
|
76
|
+
dy = box.y - b.y;
|
|
77
|
+
break;
|
|
78
|
+
case "bottom":
|
|
79
|
+
dy = box.y + box.height - (b.y + b.height);
|
|
80
|
+
break;
|
|
81
|
+
case "v-center":
|
|
82
|
+
dy = box.y + box.height / 2 - (b.y + b.height / 2);
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
if (dx === 0 && dy === 0)
|
|
86
|
+
continue;
|
|
87
|
+
const after = { ...el, position: { x: el.position.x + dx, y: el.position.y + dy } };
|
|
88
|
+
patches.push({ kind: "element", id: el.id, before: el, after });
|
|
89
|
+
}
|
|
90
|
+
return patches;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Pure: evenly space the selection along the given axis so the gaps between
|
|
94
|
+
* adjacent elements are equal. The outermost two elements stay put; the rest
|
|
95
|
+
* shift to balance the gaps (accounting for differing sizes). A no-op below
|
|
96
|
+
* three elements.
|
|
97
|
+
*/
|
|
98
|
+
export const computeDistributePatches = (scene, ids, axis) => {
|
|
99
|
+
const elements = collect(scene, ids);
|
|
100
|
+
if (elements.length < 3)
|
|
101
|
+
return [];
|
|
102
|
+
const horizontal = axis === "horizontal";
|
|
103
|
+
const start = (b) => (horizontal ? b.x : b.y);
|
|
104
|
+
const size = (b) => (horizontal ? b.width : b.height);
|
|
105
|
+
const sorted = elements
|
|
106
|
+
.map((el) => ({ el, b: getElementWorldBounds(el) }))
|
|
107
|
+
.sort((p, q) => start(p.b) - start(q.b));
|
|
108
|
+
const first = sorted[0];
|
|
109
|
+
const last = sorted[sorted.length - 1];
|
|
110
|
+
if (!first || !last)
|
|
111
|
+
return [];
|
|
112
|
+
const span = start(last.b) + size(last.b) - start(first.b);
|
|
113
|
+
const totalSize = sorted.reduce((acc, p) => acc + size(p.b), 0);
|
|
114
|
+
const gap = (span - totalSize) / (sorted.length - 1);
|
|
115
|
+
const patches = [];
|
|
116
|
+
let cursor = start(first.b) + size(first.b) + gap;
|
|
117
|
+
for (let i = 1; i < sorted.length - 1; i++) {
|
|
118
|
+
const p = sorted[i];
|
|
119
|
+
if (!p)
|
|
120
|
+
continue;
|
|
121
|
+
const delta = cursor - start(p.b);
|
|
122
|
+
if (delta !== 0) {
|
|
123
|
+
const after = horizontal
|
|
124
|
+
? { ...p.el, position: { x: p.el.position.x + delta, y: p.el.position.y } }
|
|
125
|
+
: { ...p.el, position: { x: p.el.position.x, y: p.el.position.y + delta } };
|
|
126
|
+
patches.push({ kind: "element", id: p.el.id, before: p.el, after });
|
|
127
|
+
}
|
|
128
|
+
cursor += size(p.b) + gap;
|
|
129
|
+
}
|
|
130
|
+
return patches;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Pure: rotate the snapshotted elements by `delta` radians about `pivot`. Each
|
|
134
|
+
* element orbits the pivot (its `position` rotates around it) and its own
|
|
135
|
+
* `rotation` advances by `delta`, so the whole selection turns rigidly. Driven
|
|
136
|
+
* from a press-time {@link RotateOrigin} so the cumulative angle never drifts.
|
|
137
|
+
*/
|
|
138
|
+
export const computeRotatePatches = (scene, origin, pivot, delta) => {
|
|
139
|
+
const cos = Math.cos(delta);
|
|
140
|
+
const sin = Math.sin(delta);
|
|
141
|
+
const patches = [];
|
|
142
|
+
for (const [id, snap] of origin) {
|
|
143
|
+
const el = getElement(scene, id);
|
|
144
|
+
if (!el)
|
|
145
|
+
continue;
|
|
146
|
+
const dx = snap.position.x - pivot.x;
|
|
147
|
+
const dy = snap.position.y - pivot.y;
|
|
148
|
+
const after = {
|
|
149
|
+
...el,
|
|
150
|
+
position: { x: pivot.x + (dx * cos - dy * sin), y: pivot.y + (dx * sin + dy * cos) },
|
|
151
|
+
rotation: snap.rotation + delta,
|
|
152
|
+
};
|
|
153
|
+
patches.push({ kind: "element", id, before: el, after });
|
|
154
|
+
}
|
|
155
|
+
return patches;
|
|
156
|
+
};
|
|
157
|
+
/** Centre of the world AABB enclosing `elements` — the natural rotation pivot. */
|
|
158
|
+
export const selectionCenter = (elements) => {
|
|
159
|
+
const box = enclosingBounds(elements);
|
|
160
|
+
return { x: box.x + box.width / 2, y: box.y + box.height / 2 };
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=arrange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrange.js","sourceRoot":"","sources":["../../../src/editor/applies/arrange.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type LinkEndpoint, type Scene, type Patch } from "@oh-just-another/scene";
|
|
1
|
+
import { type Link, type LinkEndpoint, type Scene, type Patch } from "@oh-just-another/scene";
|
|
2
2
|
import type { ElementId, Vec2 } from "@oh-just-another/types";
|
|
3
3
|
import type { LinkId } from "@oh-just-another/types";
|
|
4
4
|
import type { InteractionEmit } from "../../machine.js";
|
|
@@ -29,4 +29,11 @@ export declare const computeLinkEndpointUpdate: (scene: Scene, emit: Extract<Int
|
|
|
29
29
|
readonly patch: Patch;
|
|
30
30
|
readonly linkId: LinkId;
|
|
31
31
|
} | null;
|
|
32
|
+
/**
|
|
33
|
+
* Per-link signature of the inputs that determine an elbow route (endpoint refs
|
|
34
|
+
* + bound-shape bounds + fixedSegments). When unchanged between frames the A*
|
|
35
|
+
* route is reused. Avoid-obstacles links also fold a digest of every shape's
|
|
36
|
+
* bbox in, so their route invalidates when any obstacle moves.
|
|
37
|
+
*/
|
|
38
|
+
export declare const elbowSignature: (scene: Scene, edge: Link) => string;
|
|
32
39
|
//# sourceMappingURL=edge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/edge.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,KAAK,EACZ,aAAa,SAAS,GAAG,IAAI,EAC7B,WAAW,IAAI,EACf,SAAS,IAAI,KACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;CAc1C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACpC,OAAO,KAAK,EACZ,MAAM,OAAO,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAAC,EAChE,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,YAAY,KACjE;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAS9E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,EAAE,MAAM,IAAI,KAAG,MAuBzD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { findNearestAnchor, getLink, getElement, getElementAt, snapExcludedAnchors, updateLink, } from "@oh-just-another/scene";
|
|
1
|
+
import { findNearestAnchor, getLink, getElement, getElementAt, getElementWorldBounds, snapExcludedAnchors, updateLink, } from "@oh-just-another/scene";
|
|
2
2
|
/**
|
|
3
3
|
* Compute the visible (snapped) endpoints for an in-progress
|
|
4
4
|
* draw-edge preview. Both ends snap to the nearest anchor on
|
|
@@ -41,4 +41,34 @@ export const computeLinkEndpointUpdate = (scene, emit, snap) => {
|
|
|
41
41
|
}));
|
|
42
42
|
return { scene: result.scene, patch: result.patch, linkId: edge.id };
|
|
43
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* Per-link signature of the inputs that determine an elbow route (endpoint refs
|
|
46
|
+
* + bound-shape bounds + fixedSegments). When unchanged between frames the A*
|
|
47
|
+
* route is reused. Avoid-obstacles links also fold a digest of every shape's
|
|
48
|
+
* bbox in, so their route invalidates when any obstacle moves.
|
|
49
|
+
*/
|
|
50
|
+
export const elbowSignature = (scene, edge) => {
|
|
51
|
+
const part = (ep) => {
|
|
52
|
+
if (ep.kind === "point")
|
|
53
|
+
return `p:${ep.position.x},${ep.position.y}`;
|
|
54
|
+
const s = getElement(scene, ep.elementId);
|
|
55
|
+
const b = s ? getElementWorldBounds(s) : null;
|
|
56
|
+
const ref = ep.kind === "anchor"
|
|
57
|
+
? JSON.stringify(ep.anchor)
|
|
58
|
+
: ep.kind === "outline"
|
|
59
|
+
? `o:${ep.ratio}`
|
|
60
|
+
: "f";
|
|
61
|
+
return `${ep.kind}:${ep.elementId}:${ref}:${b ? `${b.x},${b.y},${b.width},${b.height}` : "x"}`;
|
|
62
|
+
};
|
|
63
|
+
const base = `${part(edge.from)}|${part(edge.to)}|${JSON.stringify(edge.fixedSegments ?? null)}`;
|
|
64
|
+
if (edge.avoidObstacles === true) {
|
|
65
|
+
let digest = "|avoid:";
|
|
66
|
+
for (const el of scene.elements.values()) {
|
|
67
|
+
const bb = getElementWorldBounds(el);
|
|
68
|
+
digest += `${el.id},${bb.x},${bb.y},${bb.width},${bb.height};`;
|
|
69
|
+
}
|
|
70
|
+
return base + digest;
|
|
71
|
+
}
|
|
72
|
+
return base;
|
|
73
|
+
};
|
|
44
74
|
//# sourceMappingURL=edge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../src/editor/applies/edge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,UAAU,
|
|
1
|
+
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../src/editor/applies/edge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { type Scene, type Patch } from "@oh-just-another/scene";
|
|
2
2
|
import type { AnnotationId, Bounds, ElementId, Vec2 } from "@oh-just-another/types";
|
|
3
|
+
/**
|
|
4
|
+
* Pure: constrain a drag delta to a single axis — the component with the
|
|
5
|
+
* larger magnitude is kept, the other is zeroed. Lets a held modifier pin a
|
|
6
|
+
* move to be purely horizontal or vertical.
|
|
7
|
+
*/
|
|
8
|
+
export declare const constrainDeltaToAxis: (delta: Vec2) => Vec2;
|
|
3
9
|
/**
|
|
4
10
|
* Pure: compute the patch that moves shape `id` by `delta` from
|
|
5
11
|
* the press-down state captured in `originalBounds`. Returns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/move.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,KAAK,EAEV,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEpF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,KAAK,EACZ,IAAI,SAAS,EACb,OAAO,IAAI,EACX,gBAAgB,MAAM,KACrB,KAAK,GAAG,IAcV,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,KAAK,EACZ,iBAAiB,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,EAC7C,OAAO,IAAI,KACV,KAAK,EAaP,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,GACrC,OAAO,KAAK,EACZ,IAAI,YAAY,EAChB,OAAO,IAAI,EACX,QAAQ,IAAI,KACX;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAiBrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/move.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,KAAK,EAEV,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEpF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,IAAI,KAAG,IACmC,CAAC;AAEvF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,KAAK,EACZ,IAAI,SAAS,EACb,OAAO,IAAI,EACX,gBAAgB,MAAM,KACrB,KAAK,GAAG,IAcV,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,KAAK,EACZ,iBAAiB,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,EAC7C,OAAO,IAAI,KACV,KAAK,EAaP,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,GACrC,OAAO,KAAK,EACZ,IAAI,YAAY,EAChB,OAAO,IAAI,EACX,QAAQ,IAAI,KACX;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAiBrD,CAAC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { getElement, getElementWorldBounds, updateAnnotation, } from "@oh-just-another/scene";
|
|
2
|
+
/**
|
|
3
|
+
* Pure: constrain a drag delta to a single axis — the component with the
|
|
4
|
+
* larger magnitude is kept, the other is zeroed. Lets a held modifier pin a
|
|
5
|
+
* move to be purely horizontal or vertical.
|
|
6
|
+
*/
|
|
7
|
+
export const constrainDeltaToAxis = (delta) => Math.abs(delta.x) >= Math.abs(delta.y) ? { x: delta.x, y: 0 } : { x: 0, y: delta.y };
|
|
2
8
|
/**
|
|
3
9
|
* Pure: compute the patch that moves shape `id` by `delta` from
|
|
4
10
|
* the press-down state captured in `originalBounds`. Returns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move.js","sourceRoot":"","sources":["../../../src/editor/applies/move.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"move.js","sourceRoot":"","sources":["../../../src/editor/applies/move.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Scene, type Element, type Link, type Patch, type TextElement } from "@oh-just-another/scene";
|
|
2
2
|
import type { Bounds, ElementId, LinkId, Vec2 } from "@oh-just-another/types";
|
|
3
|
-
import type
|
|
3
|
+
import { type HandleId } from "../../handle.js";
|
|
4
4
|
/**
|
|
5
5
|
* Pure: compute the patch + new scene for a single-shape resize.
|
|
6
6
|
*
|
|
@@ -13,7 +13,28 @@ import type { HandleId } from "../../handle.js";
|
|
|
13
13
|
* Returns `null` when the shape no longer exists or doesn't
|
|
14
14
|
* qualify for in-place resize.
|
|
15
15
|
*/
|
|
16
|
-
export declare const computeElementResize: (scene: Scene, id: ElementId, handle: HandleId, delta: Vec2, originalBounds: Bounds, clampContainer: (shape: Element, raw: Bounds, handle: HandleId) => Bounds) => {
|
|
16
|
+
export declare const computeElementResize: (scene: Scene, id: ElementId, handle: HandleId, delta: Vec2, originalBounds: Bounds, clampContainer: (shape: Element, raw: Bounds, handle: HandleId) => Bounds, lockAspect?: boolean, fromCenter?: boolean) => {
|
|
17
|
+
readonly scene: Scene;
|
|
18
|
+
readonly patch: Patch;
|
|
19
|
+
} | null;
|
|
20
|
+
/**
|
|
21
|
+
* Pure: resize a single ROTATED shape, keeping the corner opposite the dragged
|
|
22
|
+
* handle fixed in world (the natural "the other side stays put" feel).
|
|
23
|
+
*
|
|
24
|
+
* The axis-aligned resize helpers (`resizeFromHandle` + constraints) can't run
|
|
25
|
+
* in world space here — the shape's box is tilted. So we work in the shape's
|
|
26
|
+
* own un-rotated frame: project the world drag onto the box's local axes, run
|
|
27
|
+
* the exact same pipeline as {@link computeElementResize} on the local AABB,
|
|
28
|
+
* then map the resulting box back to world via the basis `(O, u, v)` — where
|
|
29
|
+
* `O` is the box's NW corner and `u` / `v` are its width / height directions.
|
|
30
|
+
* Because the new shape is emitted at `scale: 1` with the same `rotation`, its
|
|
31
|
+
* render basis is exactly `(u, v)`, so the box lands pixel-exact.
|
|
32
|
+
*
|
|
33
|
+
* `original` is the pristine shape snapshotted at the gesture's first tick;
|
|
34
|
+
* `worldDelta` is the cumulative pointer displacement since press. Returns
|
|
35
|
+
* `null` when the shape vanished or can't carry a width/height resize.
|
|
36
|
+
*/
|
|
37
|
+
export declare const computeRotatedElementResize: (scene: Scene, original: Element, handle: HandleId, worldDelta: Vec2, lockAspect?: boolean, fromCenter?: boolean) => {
|
|
17
38
|
readonly scene: Scene;
|
|
18
39
|
readonly patch: Patch;
|
|
19
40
|
} | null;
|
|
@@ -31,7 +52,7 @@ export declare const computeElementResize: (scene: Scene, id: ElementId, handle:
|
|
|
31
52
|
* - **Left/right edges** (`e/w`) change only the wrap width: the text
|
|
32
53
|
* reflows onto new lines (sets `maxWidth`, no font change).
|
|
33
54
|
*/
|
|
34
|
-
export declare const computeTextResize: (scene: Scene, original: TextElement, handle: HandleId, delta: Vec2, originalBounds: Bounds) => {
|
|
55
|
+
export declare const computeTextResize: (scene: Scene, original: TextElement, handle: HandleId, delta: Vec2, originalBounds: Bounds, fromCenter?: boolean) => {
|
|
35
56
|
readonly scene: Scene;
|
|
36
57
|
readonly patch: Patch;
|
|
37
58
|
} | null;
|
|
@@ -56,12 +77,12 @@ export interface GroupResizeOrigin {
|
|
|
56
77
|
/**
|
|
57
78
|
* Press-time snapshot of links that scale with the box: selected links
|
|
58
79
|
* (whole, incl. free endpoints) ∪ connectors bound on both ends to resized
|
|
59
|
-
* elements (geometry follows). Optional
|
|
80
|
+
* elements (geometry follows). Optional: omitted by callers that
|
|
60
81
|
* don't resize links.
|
|
61
82
|
*/
|
|
62
83
|
readonly links?: ReadonlyMap<LinkId, Link>;
|
|
63
84
|
}
|
|
64
|
-
export declare const computeGroupResizePatches: (scene: Scene, origin: GroupResizeOrigin, handle: HandleId, delta: Vec2, originalBounds: Bounds, isAspectLocked: boolean) => {
|
|
85
|
+
export declare const computeGroupResizePatches: (scene: Scene, origin: GroupResizeOrigin, handle: HandleId, delta: Vec2, originalBounds: Bounds, isAspectLocked: boolean, fromCenter?: boolean) => {
|
|
65
86
|
scene: Scene;
|
|
66
87
|
patches: Patch[];
|
|
67
88
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/resize.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/resize.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAWnF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,KAAK,EACZ,IAAI,SAAS,EACb,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,gBAAgB,MAAM,EACtB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,KAAK,MAAM,EACzE,oBAAkB,EAClB,oBAAkB,KACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAgCrD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,KAAK,EACZ,UAAU,OAAO,EACjB,QAAQ,QAAQ,EAChB,YAAY,IAAI,EAChB,oBAAkB,EAClB,oBAAkB,KACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IA2CrD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,KAAK,EACZ,UAAU,WAAW,EACrB,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,gBAAgB,MAAM,EACtB,oBAAkB,KACjB;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAgDrD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAC5B,SAAS,EACT;QACE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;QACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,CACF,CAAC;IACF;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,yBAAyB,GACpC,OAAO,KAAK,EACZ,QAAQ,iBAAiB,EACzB,QAAQ,QAAQ,EAChB,OAAO,IAAI,EACX,gBAAgB,MAAM,EACtB,gBAAgB,OAAO,EACvB,oBAAkB,KACjB;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,KAAK,EAAE,CAAA;CAwGlC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { apply, getAutoLayoutSpec, getElement, getLink, } from "@oh-just-another/scene";
|
|
2
|
-
import {
|
|
2
|
+
import { frameCorners, shapeSelectionFrame } from "../../handle.js";
|
|
3
|
+
import { applyResizeConstraints, lockAspectRatio, resizeFromCenter, resizeFromHandle, } from "../resize-helpers.js";
|
|
3
4
|
import { hasWidthHeight } from "../shape-traits.js";
|
|
4
5
|
import { scaleLinkAround } from "./link-move.js";
|
|
5
6
|
import { TEXT_RESIZE_MIN_FONT_SIZE } from "../../constants.js";
|
|
@@ -15,13 +16,15 @@ import { TEXT_RESIZE_MIN_FONT_SIZE } from "../../constants.js";
|
|
|
15
16
|
* Returns `null` when the shape no longer exists or doesn't
|
|
16
17
|
* qualify for in-place resize.
|
|
17
18
|
*/
|
|
18
|
-
export const computeElementResize = (scene, id, handle, delta, originalBounds, clampContainer) => {
|
|
19
|
+
export const computeElementResize = (scene, id, handle, delta, originalBounds, clampContainer, lockAspect = false, fromCenter = false) => {
|
|
19
20
|
const shape = getElement(scene, id);
|
|
20
21
|
if (!shape)
|
|
21
22
|
return null;
|
|
22
23
|
if (!hasWidthHeight(shape))
|
|
23
24
|
return null;
|
|
24
|
-
const
|
|
25
|
+
const free = resizeFromHandle(originalBounds, handle, delta);
|
|
26
|
+
const shaped = lockAspect ? lockAspectRatio(originalBounds, free) : free;
|
|
27
|
+
const raw = fromCenter ? resizeFromCenter(originalBounds, shaped) : shaped;
|
|
25
28
|
// An auto-layout container (a box holding laid-out children) must NEVER
|
|
26
29
|
// mirror through its own body: dragging an edge inward past the opposite
|
|
27
30
|
// edge would otherwise hand control to that opposite edge ("flip through
|
|
@@ -29,7 +32,7 @@ export const computeElementResize = (scene, id, handle, delta, originalBounds, c
|
|
|
29
32
|
// instances that lack it behave the same.
|
|
30
33
|
const noFlip = shape.noFlip === true || getAutoLayoutSpec(shape) !== null;
|
|
31
34
|
const constraints = noFlip ? { ...shape, noFlip: true } : shape;
|
|
32
|
-
const intermediate = applyResizeConstraints(originalBounds, raw, handle, constraints);
|
|
35
|
+
const intermediate = applyResizeConstraints(originalBounds, raw, handle, constraints, fromCenter);
|
|
33
36
|
const constrained = clampContainer(shape, intermediate, handle);
|
|
34
37
|
// `constrained` is in world units (originalBounds was world AABB).
|
|
35
38
|
// For shapes with a width/height field, persist that directly and
|
|
@@ -46,6 +49,65 @@ export const computeElementResize = (scene, id, handle, delta, originalBounds, c
|
|
|
46
49
|
const patch = { kind: "element", id, before: shape, after: next };
|
|
47
50
|
return { scene: apply(scene, patch), patch };
|
|
48
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* Pure: resize a single ROTATED shape, keeping the corner opposite the dragged
|
|
54
|
+
* handle fixed in world (the natural "the other side stays put" feel).
|
|
55
|
+
*
|
|
56
|
+
* The axis-aligned resize helpers (`resizeFromHandle` + constraints) can't run
|
|
57
|
+
* in world space here — the shape's box is tilted. So we work in the shape's
|
|
58
|
+
* own un-rotated frame: project the world drag onto the box's local axes, run
|
|
59
|
+
* the exact same pipeline as {@link computeElementResize} on the local AABB,
|
|
60
|
+
* then map the resulting box back to world via the basis `(O, u, v)` — where
|
|
61
|
+
* `O` is the box's NW corner and `u` / `v` are its width / height directions.
|
|
62
|
+
* Because the new shape is emitted at `scale: 1` with the same `rotation`, its
|
|
63
|
+
* render basis is exactly `(u, v)`, so the box lands pixel-exact.
|
|
64
|
+
*
|
|
65
|
+
* `original` is the pristine shape snapshotted at the gesture's first tick;
|
|
66
|
+
* `worldDelta` is the cumulative pointer displacement since press. Returns
|
|
67
|
+
* `null` when the shape vanished or can't carry a width/height resize.
|
|
68
|
+
*/
|
|
69
|
+
export const computeRotatedElementResize = (scene, original, handle, worldDelta, lockAspect = false, fromCenter = false) => {
|
|
70
|
+
const current = getElement(scene, original.id);
|
|
71
|
+
if (!current)
|
|
72
|
+
return null;
|
|
73
|
+
if (!hasWidthHeight(original))
|
|
74
|
+
return null;
|
|
75
|
+
// Box basis: NW corner `O` (world) + unit width/height axes `u` / `v`.
|
|
76
|
+
const frame = shapeSelectionFrame(original);
|
|
77
|
+
const [O] = frameCorners(frame);
|
|
78
|
+
const cos = Math.cos(frame.rotation);
|
|
79
|
+
const sin = Math.sin(frame.rotation);
|
|
80
|
+
const u = { x: cos, y: sin };
|
|
81
|
+
const v = { x: -sin, y: cos };
|
|
82
|
+
// Drag projected onto the box axes → a delta in the local (un-rotated) frame.
|
|
83
|
+
const localDelta = {
|
|
84
|
+
x: worldDelta.x * u.x + worldDelta.y * u.y,
|
|
85
|
+
y: worldDelta.x * v.x + worldDelta.y * v.y,
|
|
86
|
+
};
|
|
87
|
+
// Same pipeline as the unrotated path, on the local AABB anchored at (0,0).
|
|
88
|
+
const base = { x: 0, y: 0, width: frame.bounds.width, height: frame.bounds.height };
|
|
89
|
+
const free = resizeFromHandle(base, handle, localDelta);
|
|
90
|
+
const shaped = lockAspect ? lockAspectRatio(base, free) : free;
|
|
91
|
+
const raw = fromCenter ? resizeFromCenter(base, shaped) : shaped;
|
|
92
|
+
const noFlip = original.noFlip === true || getAutoLayoutSpec(original) !== null;
|
|
93
|
+
const constraints = noFlip ? { ...original, noFlip: true } : original;
|
|
94
|
+
const constrained = applyResizeConstraints(base, raw, handle, constraints, fromCenter);
|
|
95
|
+
// Map the new local box back to world through the basis. The new NW corner is
|
|
96
|
+
// the shape's local origin (rotation pivot), so it becomes `position`.
|
|
97
|
+
const position = {
|
|
98
|
+
x: O.x + constrained.x * u.x + constrained.y * v.x,
|
|
99
|
+
y: O.y + constrained.x * u.y + constrained.y * v.y,
|
|
100
|
+
};
|
|
101
|
+
const next = {
|
|
102
|
+
...original,
|
|
103
|
+
position,
|
|
104
|
+
scale: { x: 1, y: 1 },
|
|
105
|
+
width: constrained.width,
|
|
106
|
+
height: constrained.height,
|
|
107
|
+
};
|
|
108
|
+
const patch = { kind: "element", id: original.id, before: current, after: next };
|
|
109
|
+
return { scene: apply(scene, patch), patch };
|
|
110
|
+
};
|
|
49
111
|
/**
|
|
50
112
|
* Pure: resize a single text shape.
|
|
51
113
|
*
|
|
@@ -60,16 +122,18 @@ export const computeElementResize = (scene, id, handle, delta, originalBounds, c
|
|
|
60
122
|
* - **Left/right edges** (`e/w`) change only the wrap width: the text
|
|
61
123
|
* reflows onto new lines (sets `maxWidth`, no font change).
|
|
62
124
|
*/
|
|
63
|
-
export const computeTextResize = (scene, original, handle, delta, originalBounds) => {
|
|
125
|
+
export const computeTextResize = (scene, original, handle, delta, originalBounds, fromCenter = false) => {
|
|
64
126
|
const current = getElement(scene, original.id);
|
|
65
127
|
if (!current)
|
|
66
128
|
return null;
|
|
67
129
|
const raw = resizeFromHandle(originalBounds, handle, delta);
|
|
130
|
+
const cx = originalBounds.x + originalBounds.width / 2;
|
|
131
|
+
const cy = originalBounds.y + originalBounds.height / 2;
|
|
68
132
|
// Left / right edges → wrap-width only (no scale).
|
|
69
133
|
if (handle === "e" || handle === "w") {
|
|
70
134
|
const newMaxWidth = Math.max(original.fontSize, Math.abs(raw.width));
|
|
71
135
|
const anchorX = handle === "w" ? originalBounds.x + originalBounds.width : originalBounds.x;
|
|
72
|
-
const nx = handle === "w" ? anchorX - newMaxWidth : anchorX;
|
|
136
|
+
const nx = fromCenter ? cx - newMaxWidth / 2 : handle === "w" ? anchorX - newMaxWidth : anchorX;
|
|
73
137
|
const next = {
|
|
74
138
|
...original,
|
|
75
139
|
position: { x: nx, y: originalBounds.y },
|
|
@@ -94,8 +158,8 @@ export const computeTextResize = (scene, original, handle, delta, originalBounds
|
|
|
94
158
|
// n/s the horizontal position pins to the left edge.
|
|
95
159
|
const ax = handle.includes("w") ? originalBounds.x + originalBounds.width : originalBounds.x;
|
|
96
160
|
const ay = handle.includes("n") ? originalBounds.y + originalBounds.height : originalBounds.y;
|
|
97
|
-
const nx = handle.includes("w") ? ax - newW : ax;
|
|
98
|
-
const ny = handle.includes("n") ? ay - newH : ay;
|
|
161
|
+
const nx = fromCenter ? cx - newW / 2 : handle.includes("w") ? ax - newW : ax;
|
|
162
|
+
const ny = fromCenter ? cy - newH / 2 : handle.includes("n") ? ay - newH : ay;
|
|
99
163
|
const next = {
|
|
100
164
|
...original,
|
|
101
165
|
position: { x: nx, y: ny },
|
|
@@ -106,7 +170,7 @@ export const computeTextResize = (scene, original, handle, delta, originalBounds
|
|
|
106
170
|
const patch = { kind: "element", id: original.id, before: current, after: next };
|
|
107
171
|
return { scene: apply(scene, patch), patch };
|
|
108
172
|
};
|
|
109
|
-
export const computeGroupResizePatches = (scene, origin, handle, delta, originalBounds, isAspectLocked) => {
|
|
173
|
+
export const computeGroupResizePatches = (scene, origin, handle, delta, originalBounds, isAspectLocked, fromCenter = false) => {
|
|
110
174
|
const next = resizeFromHandle(originalBounds, handle, delta);
|
|
111
175
|
const minDim = 1;
|
|
112
176
|
let sx = originalBounds.width > 0 ? next.width / originalBounds.width : 1;
|
|
@@ -120,6 +184,12 @@ export const computeGroupResizePatches = (scene, origin, handle, delta, original
|
|
|
120
184
|
sx = locked * (sx >= 0 ? 1 : -1);
|
|
121
185
|
sy = locked * (sy >= 0 ? 1 : -1);
|
|
122
186
|
}
|
|
187
|
+
// Centre-anchored resize: the dragged side moves while the opposite side
|
|
188
|
+
// mirrors, so the scale deviation from 1 doubles about the centre.
|
|
189
|
+
if (fromCenter) {
|
|
190
|
+
sx = 1 + 2 * (sx - 1);
|
|
191
|
+
sy = 1 + 2 * (sy - 1);
|
|
192
|
+
}
|
|
123
193
|
// Uniform factor for aspect-locked members (images) inside a mixed
|
|
124
194
|
// selection: an image must only *scale*, never distort, even while
|
|
125
195
|
// its neighbours follow the box's independent sx/sy (images are
|
|
@@ -129,10 +199,18 @@ export const computeGroupResizePatches = (scene, origin, handle, delta, original
|
|
|
129
199
|
// two. Position still tracks the box via (sx, sy) below, so the image
|
|
130
200
|
// stays put in the group's layout — only its size stays proportional.
|
|
131
201
|
const imgScale = Math.abs(sx - 1) >= Math.abs(sy - 1) ? sx : sy;
|
|
132
|
-
// Anchor for the scale
|
|
133
|
-
//
|
|
134
|
-
const ax =
|
|
135
|
-
|
|
202
|
+
// Anchor for the scale: the original centre when resizing from centre,
|
|
203
|
+
// otherwise the unchanging corner / edge midpoint opposite the dragged handle.
|
|
204
|
+
const ax = fromCenter
|
|
205
|
+
? originalBounds.x + originalBounds.width / 2
|
|
206
|
+
: handle.includes("w")
|
|
207
|
+
? originalBounds.x + originalBounds.width
|
|
208
|
+
: originalBounds.x;
|
|
209
|
+
const ay = fromCenter
|
|
210
|
+
? originalBounds.y + originalBounds.height / 2
|
|
211
|
+
: handle.includes("n")
|
|
212
|
+
? originalBounds.y + originalBounds.height
|
|
213
|
+
: originalBounds.y;
|
|
136
214
|
let runningScene = scene;
|
|
137
215
|
const patches = [];
|
|
138
216
|
for (const [id, snap] of origin.elements) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/editor/applies/resize.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/editor/applies/resize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns the text-edit caret blink (solid/clear toggle on a DOM interval).
|
|
3
|
+
* Extracted from the Editor god-class. `onTick` is the Editor's `notify` so a
|
|
4
|
+
* blink repaints the overlay; the controller never touches the scene.
|
|
5
|
+
*/
|
|
6
|
+
export declare class CaretBlinkController {
|
|
7
|
+
private readonly onTick;
|
|
8
|
+
private _on;
|
|
9
|
+
private timer;
|
|
10
|
+
constructor(onTick: () => void);
|
|
11
|
+
get on(): boolean;
|
|
12
|
+
/** Restart blinking from a solid caret. */
|
|
13
|
+
start(): void;
|
|
14
|
+
stop(): void;
|
|
15
|
+
/** Reset the caret to solid (called on type / move so it never blinks off mid-action). */
|
|
16
|
+
wake(): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=caret-blink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caret-blink.d.ts","sourceRoot":"","sources":["../../src/editor/caret-blink.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,qBAAa,oBAAoB;IAInB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,KAAK,CAA+C;gBAE/B,MAAM,EAAE,MAAM,IAAI;IAE/C,IAAI,EAAE,IAAI,OAAO,CAEhB;IAED,2CAA2C;IAC3C,KAAK,IAAI,IAAI;IAab,IAAI,IAAI,IAAI;IAOZ,0FAA0F;IAC1F,IAAI,IAAI,IAAI;CAGb"}
|