feat(canvas): 画布工作台 - 新增生成副本并修复大型画布性能、素材同步与删除校验
统一图片与视频副本的生成落点并保留参考连接。\n优化大型画布节点虚拟化、媒体懒加载、拖拽与详情进入路径。\n修复素材主版本 ID 同步及删除时的画布独立引用校验。
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, test } from "bun:test";
|
||||
|
||||
import { applyFrameDrop, canFolderContain, canLinkedFolderArchive, findFrameDropTarget, isCanvasFolderNode } from "@/lib/canvas/canvas-frame";
|
||||
import { applyFrameDrop, buildCanvasFrameDropIndex, canFolderContain, canLinkedFolderArchive, findFrameDropTarget, findFrameDropTargetFromIndex, isCanvasFolderNode } from "@/lib/canvas/canvas-frame";
|
||||
import { resolveCanvasFolderTheme, resolveCanvasFolderThemeCover } from "@/lib/canvas/canvas-folder-theme";
|
||||
import { CanvasNodeType, type CanvasNodeData } from "@/types/canvas";
|
||||
|
||||
@@ -66,6 +66,16 @@ describe("canvas folders", () => {
|
||||
expect(nextFolder.metadata?.frame?.expandedHeight).toBeGreaterThan(dragged.height);
|
||||
});
|
||||
|
||||
test("空间索引画框落点与常规落点一致", () => {
|
||||
const target = folder("folder");
|
||||
const dragged = image("image");
|
||||
const nodes = [target, dragged];
|
||||
const index = buildCanvasFrameDropIndex(nodes);
|
||||
|
||||
expect(findFrameDropTargetFromIndex(index, [dragged], new Set([dragged.id]), { x: 0, y: 0 })).toBe(findFrameDropTarget(nodes, new Set([dragged.id])));
|
||||
expect(findFrameDropTargetFromIndex(index, [dragged], new Set([dragged.id]), { x: 400, y: 400 })).toBeNull();
|
||||
});
|
||||
|
||||
test("素材库链接文件夹只接收可归档的真实内容节点", () => {
|
||||
const target = folder("linked", true);
|
||||
const ready = image("ready");
|
||||
|
||||
Reference in New Issue
Block a user