import { HF_AUDIO_GROUP_TAG } from "../audioGroups.js"; /** * Pure, DOM-free editing-affordance resolution. Single source of truth for what * the studio's edit panel (and any SDK consumer) surfaces per selected element: * capability flags + which section types apply. No getComputedStyle, no DOM — * the caller supplies normalized facts (live or static). See the SDK adapter * (browser-only) and the studio mapper for the two fact extractors. */ export interface DomEditCapabilities { canSelect: boolean; canEditStyles: boolean; /** Can take a non-destructive `clip-path: inset()` crop. Broader than * canEditStyles: a sub-composition host can be cropped from the parent view * (the crop is a viewport clip that persists on the host in the parent * source), even though its internal styles are edited by drilling in. */ canCrop: boolean; /** Directly editable authored left/top style fields. Canvas drag uses manual edits instead. */ canMove: boolean; /** Directly editable authored width/height style fields. Canvas resize uses manual edits instead. */ canResize: boolean; canApplyManualOffset: boolean; canApplyManualSize: boolean; canApplyManualRotation: boolean; reasonIfDisabled?: string; } export interface EditingSectionApplicability { text: boolean; media: boolean; /** Element-level only — the consumer still ANDs its own feature flag. */ colorGrading: boolean; timing: boolean; animation: boolean; /** Position/size/rotation/stacking — meaningless on an element with no * rendered box (e.g. `