import { PptxElement } from 'pptx-viewer-core'; import { ShapeAdjustmentHandleDescriptor } from 'pptx-viewer-shared'; /** * What the selection overlay is allowed to offer, given the authored * `a:spLocks` on the selected element(s). * * The lock composition itself is NOT decided here: `canInteractWithElement` in * `pptx-viewer-shared` is the one decision function all five bindings consult, * and this module only folds its per-element verdict into the collective one an * overlay drawn around N elements needs. Keeping it in a plain `.ts` module * (rather than inside `EditorController` or the overlay SFC) keeps both of * those within the repo's file-size budget and makes the rule unit-testable * without a component mount. * * @module editor/editor-selection-interactivity */ /** The chrome the overlay may draw for the current selection. */ export interface SelectionInteractivity { /** Draw (and honour) the eight resize handles. */ resizable: boolean; /** Draw (and honour) the rotate stem + knob. */ rotatable: boolean; /** * The amber adjustment diamonds, one per `a:avLst` guide. Empty when there * is none to draw; PowerPoint shows several on most presets (`quadArrow` * three, `callout3` four), and offering only the first left the rest * unreachable. */ adjust: ShapeAdjustmentHandleDescriptor[]; } /** * What an unlocked, non-adjustable selection resolves to. The overlay's prop * default, so a caller that does not pass a verdict gets the pre-lock chrome. */ export declare const DEFAULT_SELECTION_INTERACTIVITY: SelectionInteractivity; /** * The collective verdict for `elements`. * * A collective box takes the STRICTEST member: one pinned shape in a * rubber-banded pair is enough to withdraw the resize handles, because a * collective resize would otherwise silently skip it and distort the group. * The adjustment diamond belongs to a single shape's own `a:avLst`, so it is * only ever offered for a selection of one. */ export declare function selectionInteractivity(elements: readonly PptxElement[]): SelectionInteractivity; /** May a pointer-down on `element` arm a move gesture? */ export declare function canMoveElement(element: PptxElement | undefined): boolean; //# sourceMappingURL=editor-selection-interactivity.d.ts.map