import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';export type LyraZoomableFrameLoading='eager'|'lazy';export interface LyraZoomableFrameEventMap{load:Event;error:Event;blur:FocusEvent;focus:FocusEvent;} /** * `` — a sandboxed iframe preview with discrete zoom controls. Its public * surface mirrors Web Awesome's `wa-zoomable-frame`; Lyra's former slotted/image inspection * surface now lives at ``. * * Security defaults are deliberately restrictive: iframe navigation accepts only relative, * `http:`, `https:`, `blob:`, and exact `about:blank` URLs; the iframe always carries a sandbox; and the default * `allow-same-origin` token supports same-origin `contentDocument`/theme synchronization while * scripts, forms, popups, downloads, and top navigation remain blocked. Consumer-provided sandbox * tokens are allowlisted, and `allow-scripts` is never combined with `allow-same-origin`. * * The scaled iframe is a physical pixel canvas, so its origin stays at physical top-left in both * directions. The zoom-control group remains logical interface chrome and therefore appears at * inline-end (physical left in RTL). Its two native buttons remain independent Tab stops; the * group does not claim the roving-arrow-key contract of an ARIA toolbar. * `withoutInteraction` makes the browsing context genuinely unavailable: the iframe is native * `inert`, leaves sequential focus, refuses pointer and programmatic activation, and carries no * unsupported `aria-disabled` claim. Focus entry through Tab, pointer, or `focus()` is tracked on * the host as `data-frame-focused` so the shared focus ring remains visible across the browsing- * context boundary. Zoom-control focus does not enter that browsing context; transitions between * a zoom control and the iframe retain one balanced native focus/blur relay pair. * * @customElement lr-zoomable-frame * @slot zoom-in-icon - Override for the decorative zoom-in glyph. Its flattened subtree is inert * and hidden from assistive technology; the native zoom-in button remains the sole action. * @slot zoom-out-icon - Override for the decorative zoom-out glyph. Its flattened subtree is inert * and hidden from assistive technology; the native zoom-out button remains the sole action. * @event load - Relayed native iframe load event; non-bubbling and non-composed. * @event error - Relayed native iframe error event; non-bubbling and non-composed. * @event {FocusEvent} focus - Relayed once from the internal iframe as a bubbling, composed native * event. * @event {FocusEvent} blur - Relayed once from the internal iframe as a bubbling, composed native * event. * @csspart iframe - The internal `