@oh-just-another/state 0.59.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 +91 -0
- package/README.md +2 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/actions/actionArrange.js +4 -4
- package/dist/actions/actionArrange.js.map +1 -1
- package/dist/actions/actionClipboard.d.ts.map +1 -1
- package/dist/actions/actionClipboard.js +5 -0
- 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/actionView.d.ts +6 -0
- package/dist/actions/actionView.d.ts.map +1 -1
- package/dist/actions/actionView.js +19 -1
- 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 +3 -3
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +3 -3
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/registry.d.ts.map +1 -1
- package/dist/actions/registry.js +13 -0
- package/dist/actions/registry.js.map +1 -1
- package/dist/actions/types.d.ts +9 -0
- package/dist/actions/types.d.ts.map +1 -1
- package/dist/actions/types.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 +160 -18
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +162 -2
- package/dist/constants.js.map +1 -1
- package/dist/dom-events.d.ts +1 -2
- package/dist/dom-events.d.ts.map +1 -1
- package/dist/dom-events.js.map +1 -1
- package/dist/editor/animation-scene.d.ts +15 -0
- package/dist/editor/animation-scene.d.ts.map +1 -1
- package/dist/editor/animation-scene.js +123 -0
- package/dist/editor/animation-scene.js.map +1 -1
- 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/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/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/pointer-binding.d.ts +9 -11
- package/dist/editor/pointer-binding.d.ts.map +1 -1
- package/dist/editor/pointer-binding.js +1185 -901
- package/dist/editor/pointer-binding.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/cursor.d.ts +1 -15
- package/dist/editor/public/cursor.d.ts.map +1 -1
- package/dist/editor/public/cursor.js +14 -3
- package/dist/editor/public/cursor.js.map +1 -1
- 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/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/placement.d.ts.map +1 -1
- package/dist/editor/public/placement.js +9 -1
- package/dist/editor/public/placement.js.map +1 -1
- package/dist/editor/public/selection-ops.d.ts +12 -0
- package/dist/editor/public/selection-ops.d.ts.map +1 -1
- package/dist/editor/public/selection-ops.js +19 -1
- 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/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 +1 -1
- package/dist/editor/public/z-order.js.map +1 -1
- package/dist/editor/public/zoom-pan.d.ts +9 -0
- package/dist/editor/public/zoom-pan.d.ts.map +1 -1
- package/dist/editor/public/zoom-pan.js +31 -0
- 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 +517 -351
- package/dist/editor/render-orchestrator.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.d.ts +504 -239
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +1557 -706
- package/dist/editor.js.map +1 -1
- package/dist/handle.d.ts +0 -2
- package/dist/handle.d.ts.map +1 -1
- package/dist/handle.js +0 -6
- package/dist/handle.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.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 +91 -2
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +450 -93
- 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/package.json +4 -4
|
@@ -68,4 +68,127 @@ export const rehydrateAnimatedImages = (editor) => {
|
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
|
+
/**
|
|
72
|
+
* DOM/bitmap constructors that `ctx.drawImage` / `gl.texImage2D` accept as a
|
|
73
|
+
* live image source. Probed by name so a missing global (SSR / worker) is a
|
|
74
|
+
* plain "not live" rather than a throw.
|
|
75
|
+
*/
|
|
76
|
+
const DRAWABLE_CTOR_NAMES = [
|
|
77
|
+
"HTMLImageElement",
|
|
78
|
+
"HTMLCanvasElement",
|
|
79
|
+
"HTMLVideoElement",
|
|
80
|
+
"ImageBitmap",
|
|
81
|
+
"OffscreenCanvas",
|
|
82
|
+
"SVGImageElement",
|
|
83
|
+
"VideoFrame",
|
|
84
|
+
];
|
|
85
|
+
/**
|
|
86
|
+
* True when `value` is a live, drawable image handle (not a `{}` left behind
|
|
87
|
+
* by a serialised `<img>` nor an absent handle). A freshly inserted image
|
|
88
|
+
* already carries one, so rehydration can skip it.
|
|
89
|
+
*/
|
|
90
|
+
const isLiveImageHandle = (value) => {
|
|
91
|
+
if (typeof value !== "object" || value === null)
|
|
92
|
+
return false;
|
|
93
|
+
const g = globalThis;
|
|
94
|
+
for (const name of DRAWABLE_CTOR_NAMES) {
|
|
95
|
+
const ctor = g[name];
|
|
96
|
+
if (typeof ctor === "function" &&
|
|
97
|
+
value instanceof ctor) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Decode raw image bytes into a live drawable handle. Prefers `ImageBitmap`
|
|
105
|
+
* (every backend draws it, incl. the OffscreenCanvas worker); falls back to a
|
|
106
|
+
* decoded `<img>` via an object-URL where `createImageBitmap` is unavailable.
|
|
107
|
+
* Resolves `null` when neither path works (SSR / decode failure).
|
|
108
|
+
*/
|
|
109
|
+
const decodeImageHandle = async (data, mime) => {
|
|
110
|
+
if (typeof Blob === "undefined")
|
|
111
|
+
return null;
|
|
112
|
+
const blob = new Blob([data], { type: mime || "application/octet-stream" });
|
|
113
|
+
if (typeof createImageBitmap === "function") {
|
|
114
|
+
try {
|
|
115
|
+
return await createImageBitmap(blob);
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
/* fall through to the <img> path (e.g. some SVGs) */
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (typeof Image !== "undefined" &&
|
|
122
|
+
typeof URL !== "undefined" &&
|
|
123
|
+
typeof URL.createObjectURL === "function") {
|
|
124
|
+
const url = URL.createObjectURL(blob);
|
|
125
|
+
return new Promise((resolve) => {
|
|
126
|
+
const img = new Image();
|
|
127
|
+
img.onload = () => {
|
|
128
|
+
resolve(img);
|
|
129
|
+
};
|
|
130
|
+
img.onerror = () => {
|
|
131
|
+
URL.revokeObjectURL(url);
|
|
132
|
+
resolve(null);
|
|
133
|
+
};
|
|
134
|
+
img.src = url;
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Restore live image handles for *static* image shapes after a scene load.
|
|
141
|
+
*
|
|
142
|
+
* A live `<img>` / `ImageBitmap` in `metadata.image` does not survive
|
|
143
|
+
* serialisation (the serializer drops it) and the shape's `src` is a dead
|
|
144
|
+
* `blob:` URL once the page reloads — so a restored static image has no
|
|
145
|
+
* drawable handle and the renderer skips it (the "dead-blob-url" warning).
|
|
146
|
+
* The bytes still live in `Scene.files` via `fileId`, so decode them back into
|
|
147
|
+
* a live handle and re-attach it to `metadata.image` before the next paint.
|
|
148
|
+
*
|
|
149
|
+
* Async (decode is async) and applied directly to `_scene` with no history
|
|
150
|
+
* entry — a transient runtime handle, not user data. Repaints once when done.
|
|
151
|
+
* Animated shapes are handled by {@link rehydrateAnimatedImages}.
|
|
152
|
+
*/
|
|
153
|
+
export const rehydrateStaticImages = async (editor) => {
|
|
154
|
+
const targets = [];
|
|
155
|
+
for (const shape of editor._scene.elements.values()) {
|
|
156
|
+
if (!isImage(shape))
|
|
157
|
+
continue;
|
|
158
|
+
if (shape.animationKind)
|
|
159
|
+
continue; // animated path rebuilds via animationData
|
|
160
|
+
if (isLiveImageHandle(shape.metadata?.image))
|
|
161
|
+
continue; // freshly inserted — already live
|
|
162
|
+
if (!shape.fileId)
|
|
163
|
+
continue;
|
|
164
|
+
const file = getBinaryFile(editor._scene, shape.fileId);
|
|
165
|
+
if (!file)
|
|
166
|
+
continue;
|
|
167
|
+
targets.push({ id: shape.id, data: file.data, mime: file.mime });
|
|
168
|
+
}
|
|
169
|
+
if (targets.length === 0)
|
|
170
|
+
return;
|
|
171
|
+
let changed = false;
|
|
172
|
+
for (const target of targets) {
|
|
173
|
+
const handle = await decodeImageHandle(target.data, target.mime);
|
|
174
|
+
if (!handle)
|
|
175
|
+
continue;
|
|
176
|
+
// The scene may have mutated while decoding — re-read the current shape
|
|
177
|
+
// and skip if it vanished or already regained a live handle.
|
|
178
|
+
const shape = editor._scene.elements.get(target.id);
|
|
179
|
+
if (!shape || !isImage(shape))
|
|
180
|
+
continue;
|
|
181
|
+
if (isLiveImageHandle(shape.metadata?.image))
|
|
182
|
+
continue;
|
|
183
|
+
editor._scene = apply(editor._scene, {
|
|
184
|
+
kind: "element",
|
|
185
|
+
id: shape.id,
|
|
186
|
+
before: shape,
|
|
187
|
+
after: { ...shape, metadata: { ...shape.metadata, image: handle } },
|
|
188
|
+
});
|
|
189
|
+
changed = true;
|
|
190
|
+
}
|
|
191
|
+
if (changed)
|
|
192
|
+
editor.forceRender();
|
|
193
|
+
};
|
|
71
194
|
//# sourceMappingURL=animation-scene.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation-scene.js","sourceRoot":"","sources":["../../src/editor/animation-scene.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAc,EAAW,EAAE;IACnE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;IAC/C,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,mCAAmC;IAC/D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI;YAAE,SAAS;QAChD,IAAI,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAQ,EAAE;IACxD,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QAC9B,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,SAAS;QACnC,MAAM,KAAK,GACT,KAAK,CAAC,aAAa,YAAY,WAAW;YAC1C,KAAK,CAAC,aAAa,CAAC,UAAU,GAAG,eAAe,CAAC;QACnD,IAAI,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAQ,EAAE;IAC9D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QAC9B,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,SAAS;QACnC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,SAAS;QAC5B,IAAI,KAAK,CAAC,aAAa,YAAY,WAAW;YAAE,SAAS,CAAC,eAAe;QACzE,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;YACnC,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"animation-scene.js","sourceRoot":"","sources":["../../src/editor/animation-scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,6 @@ import type { Bounds, LinkId, LayerId, ElementId, Vec2 } from "@oh-just-another/
|
|
|
9
9
|
* stack as usual.
|
|
10
10
|
*/
|
|
11
11
|
export declare const buildElementForCreate: (scene: Scene, kind: "rect" | "ellipse" | "frame", bounds: Bounds, id: ElementId, layerId: LayerId, nextFrameName: () => string) => Element;
|
|
12
|
-
/**
|
|
13
|
-
* Build the `Link` object for a CREATE_EDGE emit. Endpoints are
|
|
14
|
-
* pre-resolved (snapped) by the caller — we just compose them with the
|
|
15
|
-
* layer / order / style boilerplate.
|
|
16
|
-
*/
|
|
17
|
-
export declare const buildLinkForCreate: (scene: Scene, from: LinkEndpoint, to: LinkEndpoint, id: LinkId, layerId: LayerId) => Link;
|
|
18
12
|
/**
|
|
19
13
|
* Build the throwaway `Link` for the live draw-edge connector preview.
|
|
20
14
|
* Same default object as {@link buildLinkForCreate} (so the dragged preview is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAevF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,KAAK,EACZ,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,EAClC,QAAQ,MAAM,EACd,IAAI,SAAS,EACb,SAAS,OAAO,EAChB,eAAe,MAAM,MAAM,KAC1B,OAwBF,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAevF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,KAAK,EACZ,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,EAClC,QAAQ,MAAM,EACd,IAAI,SAAS,EACb,SAAS,OAAO,EAChB,eAAe,MAAM,MAAM,KAC1B,OAwBF,CAAC;AA+BF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,KAAK,EACZ,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,IAAI,EAAE,CAAA;CAAE,EACtF,IAAI,MAAM,EACV,SAAS,OAAO,KACf,IAWF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,KAAK,EACZ,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,EAClC,QAAQ,MAAM,EACd,IAAI,SAAS,EACb,SAAS,OAAO,EAChB,eAAe,MAAM,MAAM,KAC1B;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAI/E,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,KAAK,EACZ,MAAM,YAAY,EAClB,IAAI,YAAY,EAChB,IAAI,MAAM,EACV,SAAS,OAAO,KACf;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAIzE,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,SACa,CAAC;AAE1D,sEAAsE;AACtE,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MACY,CAAC"}
|
|
@@ -46,7 +46,7 @@ export const buildElementForCreate = (scene, kind, bounds, id, layerId, nextFram
|
|
|
46
46
|
* pre-resolved (snapped) by the caller — we just compose them with the
|
|
47
47
|
* layer / order / style boilerplate.
|
|
48
48
|
*/
|
|
49
|
-
|
|
49
|
+
const buildLinkForCreate = (scene, from, to, id, layerId) => {
|
|
50
50
|
const order = orderForTop(Array.from(scene.links.values())
|
|
51
51
|
.filter((e) => e.layerId === layerId)
|
|
52
52
|
.map((e) => e.order));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/editor/applies/create.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,UAAU,EACV,cAAc,EACd,WAAW,GAMZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAErF,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,SAAS,CAAC;AAC5D,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,OAAO,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAY,EACZ,IAAkC,EAClC,MAAc,EACd,EAAa,EACb,OAAgB,EAChB,aAA2B,EAClB,EAAE;IACX,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SAC/C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG;QACb,EAAE;QACF,OAAO;QACP,QAAQ,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE;QACtC,QAAQ,EAAE,CAAC;QACX,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACrB,KAAK;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;IACF,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,GAAG,kBAAkB,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,qBAAqB,EAAE,EAAE,CAAC;IAC7E,CAAC;IACD,uEAAuE;IACvE,+BAA+B;IAC/B,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC;AAClG,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/editor/applies/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,14 +11,6 @@ export declare const linkMovesRigidly: (link: Link, moved: ReadonlySet<ElementId
|
|
|
11
11
|
* after the route re-flows.
|
|
12
12
|
*/
|
|
13
13
|
export declare const translateLinkGeometry: (link: Link, delta: Vec2) => Pick<Link, "waypoints" | "fixedSegments" | "routedPoints"> | null;
|
|
14
|
-
/**
|
|
15
|
-
* Translate a link for a DRAG: its geometry (waypoints / fixedSegments /
|
|
16
|
-
* routedPoints) PLUS any free `point` endpoints, by `delta`. Bound
|
|
17
|
-
* endpoints (anchor / outline / floating) are left alone — they re-resolve
|
|
18
|
-
* from their (also-moving) elements. Returns the changed fields, or `null`
|
|
19
|
-
* when there's nothing to move (a pure auto-routed bound link).
|
|
20
|
-
*/
|
|
21
|
-
export declare const translateLinkForDrag: (link: Link, delta: Vec2) => Partial<Link> | null;
|
|
22
14
|
/**
|
|
23
15
|
* Scale a link for a GROUP RESIZE: its geometry (waypoints / fixedSegments /
|
|
24
16
|
* routedPoints) and any free `point` endpoints scale about the anchor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-move.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/link-move.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAoBtE,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,GAAI,MAAM,IAAI,EAAE,OAAO,WAAW,CAAC,SAAS,CAAC,KAAG,OACX,CAAC;AAWnE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,IAAI,EACV,OAAO,IAAI,KACV,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC,GAAG,IAqB/D,CAAC;
|
|
1
|
+
{"version":3,"file":"link-move.d.ts","sourceRoot":"","sources":["../../../src/editor/applies/link-move.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAoBtE,6EAA6E;AAC7E,eAAO,MAAM,gBAAgB,GAAI,MAAM,IAAI,EAAE,OAAO,WAAW,CAAC,SAAS,CAAC,KAAG,OACX,CAAC;AAWnE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,IAAI,EACV,OAAO,IAAI,KACV,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC,GAAG,IAqB/D,CAAC;AA0BF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,IAAI,EACV,IAAI,MAAM,EACV,IAAI,MAAM,EACV,IAAI,MAAM,EACV,IAAI,MAAM,KACT,OAAO,CAAC,IAAI,CAAC,GAAG,IAoBlB,CAAC;AASF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,KAAK,EACZ,OAAO,WAAW,CAAC,SAAS,CAAC,EAC7B,UAAU,WAAW,CAAC,MAAM,CAAC,KAC5B,GAAG,CAAC,MAAM,EAAE,IAAI,CAWlB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,OAAO,KAAK,EACZ,aAAa,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,EACtC,OAAO,IAAI,KACV,KAAK,EAUP,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,OAAO,KAAK,EACZ,OAAO,WAAW,CAAC,SAAS,CAAC,EAC7B,UAAU,WAAW,CAAC,MAAM,CAAC,EAC7B,OAAO,IAAI,KACV;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;CAYpD,CAAC"}
|
|
@@ -57,7 +57,7 @@ const shiftEndpoint = (ep, delta) => ep.kind === "point"
|
|
|
57
57
|
* from their (also-moving) elements. Returns the changed fields, or `null`
|
|
58
58
|
* when there's nothing to move (a pure auto-routed bound link).
|
|
59
59
|
*/
|
|
60
|
-
|
|
60
|
+
const translateLinkForDrag = (link, delta) => {
|
|
61
61
|
const geom = translateLinkGeometry(link, delta);
|
|
62
62
|
const fromMoves = link.from.kind === "point";
|
|
63
63
|
const toMoves = link.to.kind === "point";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-move.js","sourceRoot":"","sources":["../../../src/editor/applies/link-move.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"link-move.js","sourceRoot":"","sources":["../../../src/editor/applies/link-move.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAqC,MAAM,wBAAwB,CAAC;AAGhG;;;;;;;;;;;;GAYG;AAEH,4EAA4E;AAC5E,MAAM,aAAa,GAAG,CAAC,EAAgB,EAAE,KAA6B,EAAW,EAAE,CACjF,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEjD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,KAA6B,EAAW,EAAE,CACrF,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAEnE,4EAA4E;AAC5E,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAW,EAAE,CACjD,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;IACjC,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;IACrC,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAEvC,MAAM,QAAQ,GAAG,CAAC,GAAoB,EAAE,CAAO,EAAU,EAAE,CACzD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAU,EACV,KAAW,EACwD,EAAE;IACrE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,GAAG,GAQL,EAAE,CAAC;IACP,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM;QAAE,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QAC/B,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACjD,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SAChD,CAAC,CAAC,CAAC;IACN,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM;QAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACrF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,aAAa,GAAG,CAAC,EAAgB,EAAE,KAAW,EAAgB,EAAE,CACpE,EAAE,CAAC,IAAI,KAAK,OAAO;IACjB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE;IACzF,CAAC,CAAC,EAAE,CAAC;AAET;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAE,KAAW,EAAwB,EAAE;IAC7E,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,GAAG,GAA8C,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3E,IAAI,SAAS;QAAE,GAAG,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,OAAO;QAAE,GAAG,CAAC,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACY,EAAE;IACxB,MAAM,EAAE,GAAG,CAAC,CAAO,EAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC;IACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACrE,MAAM,GAAG,GAA8C,EAAE,CAAC;IAC1D,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM;QAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;QAC/B,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,kEAAkE;YAClE,qEAAqE;YACrE,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE;YACrE,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;SACnE,CAAC,CAAC,CAAC;IACN,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM;QAAE,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC/F,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO;QAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzF,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,sFAAsF;AACtF,MAAM,iBAAiB,GAAG,CACxB,IAAU,EACV,KAA6B,EAC7B,QAA6B,EACpB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAErE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,KAAY,EACZ,KAA6B,EAC7B,QAA6B,EACV,EAAE;IACrB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgB,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,IACE,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;YACxC,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EACnD,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,KAAY,EACZ,WAAsC,EACtC,KAAW,EACF,EAAE;IACX,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,KAAY,EACZ,KAA6B,EAC7B,QAA6B,EAC7B,KAAW,EAC2C,EAAE;IACxD,IAAI,CAAC,GAAG,KAAK,CAAC;IACd,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;YAAE,SAAS;QACxD,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import type { Bounds, ElementId, Vec2 } from "@oh-just-another/types";
|
|
2
|
+
import type { AnnotationId, LinkId } from "@oh-just-another/types";
|
|
3
|
+
import type { Element, Link } from "@oh-just-another/scene";
|
|
4
|
+
import type { BrushStrokeState } from "./public/brush.js";
|
|
5
|
+
import type { EraseStrokeState } from "./public/eraser.js";
|
|
6
|
+
import type { LaserStroke } from "./public/laser.js";
|
|
7
|
+
import type * as Selection from "../selection.js";
|
|
8
|
+
import type * as LinkSelection from "../link-selection.js";
|
|
9
|
+
/** Live preview of an edge being drawn (draw-edge mode / anchor drag). */
|
|
10
|
+
export interface EdgePreview {
|
|
11
|
+
from: Vec2;
|
|
12
|
+
to: Vec2;
|
|
13
|
+
points?: readonly Vec2[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Active "drag a link from a start-anchor" gesture. `fromWorld` is the true
|
|
17
|
+
* anchor world point (link origin, un-offset); `origin` is the press point
|
|
18
|
+
* (for the drag threshold).
|
|
19
|
+
*/
|
|
20
|
+
export interface LinkDragFromAnchor {
|
|
21
|
+
fromElement: ElementId;
|
|
22
|
+
fromWorld: Vec2;
|
|
23
|
+
/** Named anchor the gesture started on — drives click-to-create direction. */
|
|
24
|
+
anchorName: string;
|
|
25
|
+
origin: Vec2;
|
|
26
|
+
moved: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Element hovered while draw-edge mode is active. `mode` mirrors
|
|
30
|
+
* `snapLinkEndpoint`: an anchor within threshold → `"point"`, otherwise
|
|
31
|
+
* floating `"element"`.
|
|
32
|
+
*/
|
|
33
|
+
export interface HoveredLinkTarget {
|
|
34
|
+
elementId: ElementId;
|
|
35
|
+
activeAnchor: string | null;
|
|
36
|
+
outlinePoint?: Vec2 | undefined;
|
|
37
|
+
mode: "point" | "element";
|
|
38
|
+
}
|
|
39
|
+
/** Snapshot of an in-progress annotation-pin drag. */
|
|
40
|
+
export interface AnnotationDrag {
|
|
41
|
+
id: AnnotationId;
|
|
42
|
+
originPosition: Vec2;
|
|
43
|
+
originWorldPoint: Vec2;
|
|
44
|
+
moved: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Pending shape-picker after a link end was dropped on empty canvas —
|
|
48
|
+
* records where so the host can pop a mini picker at that spot.
|
|
49
|
+
*/
|
|
50
|
+
export interface PendingLinkDropMenu {
|
|
51
|
+
linkId: LinkId;
|
|
52
|
+
side: "from" | "to";
|
|
53
|
+
world: Vec2;
|
|
54
|
+
}
|
|
55
|
+
/** Per-shape snapshot for a group-resize gesture (world AABB at press-down). */
|
|
56
|
+
export interface GroupResizeOrigin {
|
|
57
|
+
readonly combined: Bounds;
|
|
58
|
+
readonly elements: ReadonlyMap<ElementId, {
|
|
59
|
+
readonly position: Vec2;
|
|
60
|
+
readonly bounds: Bounds;
|
|
61
|
+
readonly scale: Vec2;
|
|
62
|
+
}>;
|
|
63
|
+
readonly links: ReadonlyMap<LinkId, Link>;
|
|
64
|
+
}
|
|
65
|
+
/** Press-time snapshot for a rotate gesture (pivot + pristine per-member state). */
|
|
66
|
+
export interface RotateGestureOrigin {
|
|
67
|
+
readonly pivot: Vec2;
|
|
68
|
+
readonly origin: ReadonlyMap<ElementId, {
|
|
69
|
+
readonly position: Vec2;
|
|
70
|
+
readonly rotation: number;
|
|
71
|
+
}>;
|
|
72
|
+
}
|
|
73
|
+
/** Live container-drop highlight during a drag. */
|
|
74
|
+
export interface ContainerHover {
|
|
75
|
+
id: ElementId;
|
|
76
|
+
dropZone: Bounds;
|
|
77
|
+
}
|
|
78
|
+
/** Active pan gesture (right-click drag or Space + left drag). */
|
|
79
|
+
export interface PanGesture {
|
|
80
|
+
pointerId: number;
|
|
81
|
+
button: number;
|
|
82
|
+
startPoint: Vec2;
|
|
83
|
+
lastPoint: Vec2;
|
|
84
|
+
moved: boolean;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Ephemeral interaction / gesture state for a single {@link Editor}.
|
|
88
|
+
*
|
|
89
|
+
* Collects the short-lived preview and gesture-origin fields that the pointer
|
|
90
|
+
* handlers, render orchestrator and container-ops helpers read and write while
|
|
91
|
+
* a gesture is in flight. Long-lived state (scene, selection, history,
|
|
92
|
+
* viewport, mode) lives on the editor itself — never here.
|
|
93
|
+
*
|
|
94
|
+
* The editor owns one instance and exposes thin delegate accessors for the
|
|
95
|
+
* fields external writers already reference by name, so this consolidation is
|
|
96
|
+
* behaviour-preserving.
|
|
97
|
+
*/
|
|
98
|
+
export declare class InteractionState {
|
|
99
|
+
/** Live preview while drawing a new shape; null when not drawing. */
|
|
100
|
+
drawingPreview: Bounds | null;
|
|
101
|
+
/** Live preview of an edge being drawn. */
|
|
102
|
+
edgePreview: EdgePreview | null;
|
|
103
|
+
/** Live lasso bounds during a rubber-band select gesture. */
|
|
104
|
+
lassoPreview: Bounds | null;
|
|
105
|
+
/** Element hovered in draw-edge mode (drives the port overlay). */
|
|
106
|
+
hoveredLinkTarget: HoveredLinkTarget | null;
|
|
107
|
+
/** Last idle cursor position (world) in select mode — grows the nearest dot. */
|
|
108
|
+
hoverCursorWorld: Vec2 | null;
|
|
109
|
+
/** In-progress annotation-pin drag. */
|
|
110
|
+
annotationDrag: AnnotationDrag | null;
|
|
111
|
+
/** Active drag-a-link-from-anchor gesture. */
|
|
112
|
+
linkDragFromAnchor: LinkDragFromAnchor | null;
|
|
113
|
+
/** Pending link-drop shape-picker. */
|
|
114
|
+
pendingLinkDropMenu: PendingLinkDropMenu | null;
|
|
115
|
+
/**
|
|
116
|
+
* Selection captured at lasso-press time — lets `add`-mode marquee start
|
|
117
|
+
* from the pre-press selection instead of empty.
|
|
118
|
+
*/
|
|
119
|
+
lassoBaseSelection: Selection.Selection | null;
|
|
120
|
+
/** Link-selection counterpart of `lassoBaseSelection`. */
|
|
121
|
+
lassoBaseLinks: LinkSelection.LinkSelection | null;
|
|
122
|
+
/** Per-shape `position` snapshot at press-down for a multi-shape drag. */
|
|
123
|
+
groupMoveOrigin: ReadonlyMap<ElementId, Vec2> | null;
|
|
124
|
+
/** Press-time snapshot of connectors that follow a multi-element drag rigidly. */
|
|
125
|
+
groupLinkMoveOrigin: ReadonlyMap<LinkId, Link> | null;
|
|
126
|
+
/** Per-shape snapshot for a group-resize gesture. */
|
|
127
|
+
groupResizeOrigin: GroupResizeOrigin | null;
|
|
128
|
+
/** Press-time snapshot for a rotate gesture. */
|
|
129
|
+
rotateGestureOrigin: RotateGestureOrigin | null;
|
|
130
|
+
/** Pristine shape snapshot for a single-shape text resize. */
|
|
131
|
+
resizeOriginElement: Element | null;
|
|
132
|
+
/** Host-mirrored snap-suppress modifier (Cmd/Ctrl) held during a drag. */
|
|
133
|
+
snapSuppressed: boolean;
|
|
134
|
+
/** Host-mirrored transform-modifier: symmetric resize about centre. */
|
|
135
|
+
transformAltKey: boolean;
|
|
136
|
+
/** Host-mirrored transform-modifier: aspect-lock resize / axis-lock move. */
|
|
137
|
+
transformShiftKey: boolean;
|
|
138
|
+
/** Timestamp of the last non-drag pointer-up (double-click detection). */
|
|
139
|
+
lastClickAt: number;
|
|
140
|
+
/** World point of the last non-drag pointer-up (double-click detection). */
|
|
141
|
+
lastClickWorldPoint: Vec2 | null;
|
|
142
|
+
/** In-progress brush stroke (live overlay preview). */
|
|
143
|
+
brushStroke: BrushStrokeState | null;
|
|
144
|
+
/** In-progress eraser stroke (pending-delete set + last sample point). */
|
|
145
|
+
eraseStroke: EraseStrokeState | null;
|
|
146
|
+
/** Ephemeral laser-pointer trails — fade by TTL, never touch the scene. */
|
|
147
|
+
laserStrokes: LaserStroke[];
|
|
148
|
+
/**
|
|
149
|
+
* Ephemeral eraser drag trail — a laser-style fading trail laid while an
|
|
150
|
+
* erase stroke is active. Reuses {@link LaserStroke} so the same TTL fade /
|
|
151
|
+
* prune tick drives it; painted in a neutral grey, never the laser red.
|
|
152
|
+
*/
|
|
153
|
+
eraserTrail: LaserStroke[];
|
|
154
|
+
/** True only while the pointer is DOWN in laser mode (a trail is being laid). */
|
|
155
|
+
laserDrawing: boolean;
|
|
156
|
+
/** Last world-space pointer position observed by the host's onMove handler. */
|
|
157
|
+
lastPointerWorld: Vec2 | null;
|
|
158
|
+
/** Element id the user started dragging on press-down. */
|
|
159
|
+
dragElementId: ElementId | null;
|
|
160
|
+
/** Element the current press added to the selection additively. */
|
|
161
|
+
additivePressAdded: ElementId | null;
|
|
162
|
+
/** Live container highlight for the shape being dragged. */
|
|
163
|
+
containerHover: ContainerHover | null;
|
|
164
|
+
/** Active screen-space pointer positions keyed by `pointerId`. */
|
|
165
|
+
readonly activePointers: Map<number, Vec2>;
|
|
166
|
+
/** One-finger-pan candidate (screen-space origin) set at touch press-down. */
|
|
167
|
+
touchPanCandidate: Vec2 | null;
|
|
168
|
+
/** Space-bar held → next pointer drag pans the canvas. */
|
|
169
|
+
spaceHeld: boolean;
|
|
170
|
+
/** Active pan gesture, or null between gestures. */
|
|
171
|
+
panGesture: PanGesture | null;
|
|
172
|
+
/** Set on right-click pointerdown so the next native contextmenu is suppressed. */
|
|
173
|
+
suppressNextContextMenu: boolean;
|
|
174
|
+
/** Link whose caption is being inline-edited, or null. */
|
|
175
|
+
editingLinkCaption: LinkId | null;
|
|
176
|
+
/**
|
|
177
|
+
* Reset ONLY the visual-preview fields (draw / edge / lasso previews and the
|
|
178
|
+
* draw-edge hover overlay). Leaves gesture origins and modifier state intact.
|
|
179
|
+
*/
|
|
180
|
+
resetPreviews(): void;
|
|
181
|
+
/** Full teardown — return every ephemeral field to its default. */
|
|
182
|
+
reset(): void;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=interaction-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction-state.d.ts","sourceRoot":"","sources":["../../src/editor/interaction-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ephemeral interaction / gesture state for a single {@link Editor}.
|
|
3
|
+
*
|
|
4
|
+
* Collects the short-lived preview and gesture-origin fields that the pointer
|
|
5
|
+
* handlers, render orchestrator and container-ops helpers read and write while
|
|
6
|
+
* a gesture is in flight. Long-lived state (scene, selection, history,
|
|
7
|
+
* viewport, mode) lives on the editor itself — never here.
|
|
8
|
+
*
|
|
9
|
+
* The editor owns one instance and exposes thin delegate accessors for the
|
|
10
|
+
* fields external writers already reference by name, so this consolidation is
|
|
11
|
+
* behaviour-preserving.
|
|
12
|
+
*/
|
|
13
|
+
export class InteractionState {
|
|
14
|
+
// --- Visual previews (cleared by resetPreviews) ---
|
|
15
|
+
/** Live preview while drawing a new shape; null when not drawing. */
|
|
16
|
+
drawingPreview = null;
|
|
17
|
+
/** Live preview of an edge being drawn. */
|
|
18
|
+
edgePreview = null;
|
|
19
|
+
/** Live lasso bounds during a rubber-band select gesture. */
|
|
20
|
+
lassoPreview = null;
|
|
21
|
+
/** Element hovered in draw-edge mode (drives the port overlay). */
|
|
22
|
+
hoveredLinkTarget = null;
|
|
23
|
+
/** Last idle cursor position (world) in select mode — grows the nearest dot. */
|
|
24
|
+
hoverCursorWorld = null;
|
|
25
|
+
// --- Other gesture / interaction state ---
|
|
26
|
+
/** In-progress annotation-pin drag. */
|
|
27
|
+
annotationDrag = null;
|
|
28
|
+
/** Active drag-a-link-from-anchor gesture. */
|
|
29
|
+
linkDragFromAnchor = null;
|
|
30
|
+
/** Pending link-drop shape-picker. */
|
|
31
|
+
pendingLinkDropMenu = null;
|
|
32
|
+
/**
|
|
33
|
+
* Selection captured at lasso-press time — lets `add`-mode marquee start
|
|
34
|
+
* from the pre-press selection instead of empty.
|
|
35
|
+
*/
|
|
36
|
+
lassoBaseSelection = null;
|
|
37
|
+
/** Link-selection counterpart of `lassoBaseSelection`. */
|
|
38
|
+
lassoBaseLinks = null;
|
|
39
|
+
/** Per-shape `position` snapshot at press-down for a multi-shape drag. */
|
|
40
|
+
groupMoveOrigin = null;
|
|
41
|
+
/** Press-time snapshot of connectors that follow a multi-element drag rigidly. */
|
|
42
|
+
groupLinkMoveOrigin = null;
|
|
43
|
+
/** Per-shape snapshot for a group-resize gesture. */
|
|
44
|
+
groupResizeOrigin = null;
|
|
45
|
+
/** Press-time snapshot for a rotate gesture. */
|
|
46
|
+
rotateGestureOrigin = null;
|
|
47
|
+
/** Pristine shape snapshot for a single-shape text resize. */
|
|
48
|
+
resizeOriginElement = null;
|
|
49
|
+
/** Host-mirrored snap-suppress modifier (Cmd/Ctrl) held during a drag. */
|
|
50
|
+
snapSuppressed = false;
|
|
51
|
+
/** Host-mirrored transform-modifier: symmetric resize about centre. */
|
|
52
|
+
transformAltKey = false;
|
|
53
|
+
/** Host-mirrored transform-modifier: aspect-lock resize / axis-lock move. */
|
|
54
|
+
transformShiftKey = false;
|
|
55
|
+
/** Timestamp of the last non-drag pointer-up (double-click detection). */
|
|
56
|
+
lastClickAt = 0;
|
|
57
|
+
/** World point of the last non-drag pointer-up (double-click detection). */
|
|
58
|
+
lastClickWorldPoint = null;
|
|
59
|
+
/** In-progress brush stroke (live overlay preview). */
|
|
60
|
+
brushStroke = null;
|
|
61
|
+
/** In-progress eraser stroke (pending-delete set + last sample point). */
|
|
62
|
+
eraseStroke = null;
|
|
63
|
+
/** Ephemeral laser-pointer trails — fade by TTL, never touch the scene. */
|
|
64
|
+
laserStrokes = [];
|
|
65
|
+
/**
|
|
66
|
+
* Ephemeral eraser drag trail — a laser-style fading trail laid while an
|
|
67
|
+
* erase stroke is active. Reuses {@link LaserStroke} so the same TTL fade /
|
|
68
|
+
* prune tick drives it; painted in a neutral grey, never the laser red.
|
|
69
|
+
*/
|
|
70
|
+
eraserTrail = [];
|
|
71
|
+
/** True only while the pointer is DOWN in laser mode (a trail is being laid). */
|
|
72
|
+
laserDrawing = false;
|
|
73
|
+
/** Last world-space pointer position observed by the host's onMove handler. */
|
|
74
|
+
lastPointerWorld = null;
|
|
75
|
+
/** Element id the user started dragging on press-down. */
|
|
76
|
+
dragElementId = null;
|
|
77
|
+
/** Element the current press added to the selection additively. */
|
|
78
|
+
additivePressAdded = null;
|
|
79
|
+
/** Live container highlight for the shape being dragged. */
|
|
80
|
+
containerHover = null;
|
|
81
|
+
/** Active screen-space pointer positions keyed by `pointerId`. */
|
|
82
|
+
activePointers = new Map();
|
|
83
|
+
/** One-finger-pan candidate (screen-space origin) set at touch press-down. */
|
|
84
|
+
touchPanCandidate = null;
|
|
85
|
+
/** Space-bar held → next pointer drag pans the canvas. */
|
|
86
|
+
spaceHeld = false;
|
|
87
|
+
/** Active pan gesture, or null between gestures. */
|
|
88
|
+
panGesture = null;
|
|
89
|
+
/** Set on right-click pointerdown so the next native contextmenu is suppressed. */
|
|
90
|
+
suppressNextContextMenu = false;
|
|
91
|
+
/** Link whose caption is being inline-edited, or null. */
|
|
92
|
+
editingLinkCaption = null;
|
|
93
|
+
/**
|
|
94
|
+
* Reset ONLY the visual-preview fields (draw / edge / lasso previews and the
|
|
95
|
+
* draw-edge hover overlay). Leaves gesture origins and modifier state intact.
|
|
96
|
+
*/
|
|
97
|
+
resetPreviews() {
|
|
98
|
+
this.drawingPreview = null;
|
|
99
|
+
this.edgePreview = null;
|
|
100
|
+
this.lassoPreview = null;
|
|
101
|
+
this.hoveredLinkTarget = null;
|
|
102
|
+
this.hoverCursorWorld = null;
|
|
103
|
+
}
|
|
104
|
+
/** Full teardown — return every ephemeral field to its default. */
|
|
105
|
+
reset() {
|
|
106
|
+
this.resetPreviews();
|
|
107
|
+
this.annotationDrag = null;
|
|
108
|
+
this.linkDragFromAnchor = null;
|
|
109
|
+
this.pendingLinkDropMenu = null;
|
|
110
|
+
this.lassoBaseSelection = null;
|
|
111
|
+
this.lassoBaseLinks = null;
|
|
112
|
+
this.groupMoveOrigin = null;
|
|
113
|
+
this.groupLinkMoveOrigin = null;
|
|
114
|
+
this.groupResizeOrigin = null;
|
|
115
|
+
this.rotateGestureOrigin = null;
|
|
116
|
+
this.resizeOriginElement = null;
|
|
117
|
+
this.snapSuppressed = false;
|
|
118
|
+
this.transformAltKey = false;
|
|
119
|
+
this.transformShiftKey = false;
|
|
120
|
+
this.lastClickAt = 0;
|
|
121
|
+
this.lastClickWorldPoint = null;
|
|
122
|
+
this.brushStroke = null;
|
|
123
|
+
this.eraseStroke = null;
|
|
124
|
+
this.laserStrokes = [];
|
|
125
|
+
this.eraserTrail = [];
|
|
126
|
+
this.laserDrawing = false;
|
|
127
|
+
this.lastPointerWorld = null;
|
|
128
|
+
this.dragElementId = null;
|
|
129
|
+
this.additivePressAdded = null;
|
|
130
|
+
this.containerHover = null;
|
|
131
|
+
this.activePointers.clear();
|
|
132
|
+
this.touchPanCandidate = null;
|
|
133
|
+
this.spaceHeld = false;
|
|
134
|
+
this.panGesture = null;
|
|
135
|
+
this.suppressNextContextMenu = false;
|
|
136
|
+
this.editingLinkCaption = null;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=interaction-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction-state.js","sourceRoot":"","sources":["../../src/editor/interaction-state.ts"],"names":[],"mappings":"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"}
|