import { getWebEngineCommandCapability, type WebEngineCommandType } from "./web-engine-capabilities"; export const WORKBENCH_COMMAND_GROUPS = Object.freeze({ OBJECT: ["createPrimitive", "duplicateObject", "deleteObject", "setObjectTransform", "setParent", "createCollection", "moveObjectToCollection", "renameId", "applyObjectTransform", "setObjectOrigin"], MESH: ["meshEdit", "translateMeshVertices", "createUVMap", "setActiveUVMap", "unwrapUV", "setVertexColors", "setVertexWeights"], ANIMATION: ["setFrame", "insertObjectKeyframe", "deleteObjectKeyframe", "setFCurveInterpolation", "setConstraint", "setNLAStack"], RENDER: ["setCameraProperties", "setLightProperties", "setWorldProperties", "setSceneProperties", "setSceneRenderSettings", "setSceneAudioSettings", "setSceneUnitSettings", "setSceneTimelineSettings", "setScenePipelineSettings", "setSceneBindings", "setSceneViewLayerSettings", "setSceneCollectionSettings", "setSceneBorderSettings", "setSceneSimplifySettings", "setSceneColorManagement"], IO: ["importImage", "importVFont", "setMaterialImageNode"], } as const satisfies Record); export function isWorkbenchCommandAvailable(type: unknown): type is WebEngineCommandType { return getWebEngineCommandCapability(type)?.route !== "MAIN_GUARDED"; } export function workbenchCommandCount(): number { return Object.values(WORKBENCH_COMMAND_GROUPS).reduce((count, group) => count + group.filter(isWorkbenchCommandAvailable).length, 0); }