feat(canvas): fix rotation, clarify frame membership and load icons on demand
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { test } from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
import { canvasReducer, decodeCanvas, emptyCanvas, makeCanvasNode } from "../src/lib/canvas.ts";
|
||||
import { assignFrameMembership } from "../src/lib/canvas-frames.ts";
|
||||
import { assignFrameMembership, frameDropFeedback } from "../src/lib/canvas-frames.ts";
|
||||
|
||||
function seeded() {
|
||||
const frame = makeCanvasNode("frame", { x: 100, y: 100 });
|
||||
@@ -11,6 +11,21 @@ function seeded() {
|
||||
}
|
||||
function state(document) { return { past: [], present: document, future: [] }; }
|
||||
|
||||
test("drop previews match actual assignment for every content type, exits and overlapping frames", () => {
|
||||
const { frame } = seeded();
|
||||
const smaller = makeCanvasNode("frame", { x: 120, y: 120 }); smaller.width = 300; smaller.height = 240;
|
||||
for (const kind of ["text", "script", "image", "plain-text", "plain-image", "icon"]) {
|
||||
const node = makeCanvasNode(kind, { x: 140, y: 140 });
|
||||
const nodes = [frame, smaller, node];
|
||||
let preview = frameDropFeedback(nodes, [node.id, frame.id]);
|
||||
assert.equal(preview.length, 1); assert.equal(preview[0].to, smaller.id);
|
||||
assert.equal(preview[0].to, assignFrameMembership(nodes, [node.id])[2].data.frameId);
|
||||
node.data.frameId = smaller.id; node.position = { x: 2000, y: 2000 };
|
||||
preview = frameDropFeedback(nodes, [node.id]); assert.equal(preview[0].from, smaller.id); assert.equal(preview[0].to, undefined);
|
||||
assert.equal(assignFrameMembership(nodes, [node.id])[2].data.frameId, undefined);
|
||||
}
|
||||
});
|
||||
|
||||
test("only dropped content joins a frame; pre-existing overlapping content stays outside", () => {
|
||||
const { frame, member, outsider, document } = seeded();
|
||||
assert.equal(document.nodes[1].data.frameId, undefined);
|
||||
|
||||
Reference in New Issue
Block a user