import { describe, expect, it } from "vitest"; import type { ToolcraftLayer } from "../../state/types"; import { getLayerInsertIndicatorTarget, getNearestLayerInsertTarget, } from "./layers-panel-insert-targets"; const nestedLayers: ToolcraftLayer[] = [ { collapsed: false, displayName: "Group", id: "group-1", kind: "group", name: "group-1", visible: true, }, { displayName: "Layer 1", id: "layer-1", kind: "layer", name: "layer-1", parentGroupId: "group-1", visible: true, }, { displayName: "Layer 2", id: "layer-2", kind: "layer", name: "layer-2", parentGroupId: "group-1", visible: true, }, { displayName: "Layer 3", id: "layer-3", kind: "layer", name: "layer-3", visible: true, }, ]; describe("layers-panel insert targets", () => { it("moves a nested layer outside its parent group when pointer depth is shallower", () => { const target = getNearestLayerInsertTarget({ clientX: 0, dropRatio: 0.75, layer: nestedLayers[2]!, layers: nestedLayers, listLeft: 0, visibleLayers: nestedLayers, }); expect(target).toEqual({ layerId: "layer-3", placement: "before", }); }); it("keeps a nested after-target inside its parent group when pointer depth is nested", () => { const target = getNearestLayerInsertTarget({ clientX: 40, dropRatio: 0.75, layer: nestedLayers[2]!, layers: nestedLayers, listLeft: 0, visibleLayers: nestedLayers, }); expect(target).toEqual({ layerId: "layer-2", placement: "after", }); }); it("draws before-child insert indicators after the parent group row", () => { const target = getLayerInsertIndicatorTarget({ target: { layerId: "layer-1", placement: "before" }, visibleLayers: nestedLayers, }); expect(target).toEqual({ layerId: "group-1", placement: "after", }); }); });