import assert from "node:assert/strict"; import test from "node:test"; import { defaultOpenFileSheetSectionIds, fileSheetSectionIdsWithOpenSection, renderedFileSheetSectionIds, shouldOpenFileSheetForSelectionReveal } from "./fileSheetSections.js"; test("file sheet section defaults match current sheet behavior", () => { assert.deepEqual(defaultOpenFileSheetSectionIds("dxf"), ["dxf"]); assert.deepEqual(defaultOpenFileSheetSectionIds("gcode"), ["toolpath"]); assert.deepEqual(defaultOpenFileSheetSectionIds("step"), ["tree"]); assert.deepEqual(defaultOpenFileSheetSectionIds("step", { hasFileStatus: true }), ["status", "tree"]); assert.deepEqual(defaultOpenFileSheetSectionIds("step", { hasStepModulePanel: true }), ["tree", "parameters"]); assert.deepEqual(defaultOpenFileSheetSectionIds("mesh", { hasFileStatus: true }), ["status"]); assert.deepEqual(defaultOpenFileSheetSectionIds("implicit", { hasFileStatus: true }), ["status"]); assert.deepEqual(defaultOpenFileSheetSectionIds("implicit"), []); assert.deepEqual(defaultOpenFileSheetSectionIds("implicit", { hasImplicitParameterPanel: true }), ["parameters"]); assert.deepEqual(defaultOpenFileSheetSectionIds("srdf"), ["joints"]); assert.deepEqual(defaultOpenFileSheetSectionIds("srdf", { motionEnabled: true }), ["motion", "joints"]); assert.deepEqual(defaultOpenFileSheetSectionIds("sdf"), ["sdf", "joints"]); }); test("rendered file sheet sections include closed-by-default sections", () => { assert.deepEqual(renderedFileSheetSectionIds("dxf", { hasFileStatus: true }), [ "status", "dxf", "display", "appearance", "metadata" ]); assert.deepEqual(renderedFileSheetSectionIds("gcode", { hasFileStatus: true }), [ "status", "toolpath", "features", "stats", "bounds", "display", "appearance", "metadata" ]); assert.deepEqual(renderedFileSheetSectionIds("step", { hasFileStatus: true, hasStepModulePanel: true }), [ "status", "tree", "parameters", "display", "appearance", "metadata" ]); assert.deepEqual(renderedFileSheetSectionIds("srdf"), ["joints", "display", "appearance", "metadata"]); assert.deepEqual(renderedFileSheetSectionIds("mesh"), ["display", "appearance", "metadata"]); assert.deepEqual(renderedFileSheetSectionIds("implicit"), ["graphics", "display", "appearance", "metadata"]); assert.deepEqual(renderedFileSheetSectionIds("implicit", { hasImplicitParameterPanel: true }), ["parameters", "graphics", "display", "appearance", "metadata"]); }); test("file sheet section helper opens only rendered sections", () => { assert.deepEqual( fileSheetSectionIdsWithOpenSection(["plate", "bends"], ["dxf", "metadata"], "metadata"), ["dxf", "metadata"] ); assert.deepEqual( fileSheetSectionIdsWithOpenSection(["tree"], ["status", "tree", "metadata"], "status"), ["tree", "status"] ); assert.deepEqual( fileSheetSectionIdsWithOpenSection(["status", "tree"], ["status", "tree"], "status"), ["status", "tree"] ); assert.deepEqual( fileSheetSectionIdsWithOpenSection(["tree"], ["tree", "metadata"], "status"), ["tree"] ); assert.deepEqual( fileSheetSectionIdsWithOpenSection(["tree", "unknown"], ["status", "tree"], ""), ["tree"] ); }); test("viewer-origin selection reveals do not open the file sheet on mobile", () => { assert.equal(shouldOpenFileSheetForSelectionReveal({ isDesktop: true, source: "viewer" }), true); assert.equal(shouldOpenFileSheetForSelectionReveal({ isDesktop: false, source: "viewer" }), false); assert.equal(shouldOpenFileSheetForSelectionReveal({ isDesktop: false, source: "tree" }), true); });