import { SplitValue, TNode, Value } from '../types/domain'; export type ReferrerPolicy = 'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url'; export interface IFrameOptions { /** * The URL of the page to embed in the iframe. */ src?: Value; /** * The name of the iframe. */ name?: Value; /** * The width of the iframe. */ width?: SplitValue; /** * The height of the iframe. */ height?: SplitValue; /** * The sandbox attribute for the iframe. */ sandbox?: Value; /** * The allow attribute for the iframe. */ allow?: Value; /** * The referrerpolicy attribute for the iframe. */ referrerpolicy?: Value; /** * The loading attribute for the iframe. */ loading?: Value<'eager' | 'lazy'>; /** * Callback function that is called when the iframe is loaded. * Receives the iframe element and its contentDocument. */ onLoad?: (iframe: HTMLIFrameElement) => void; /** * Content to attach directly to the iframe's element, not the document body. */ iframeChild?: TNode; } /** * Creates an iframe element and optionally renders content into its document. * * When children are provided, they are rendered into the iframe's contentDocument. * This allows you to create isolated DOM contexts with their own styles and scripts. * * @example * ```typescript * // Simple iframe with src * IFrame({ src: 'https://example.com', width: 800, height: 600 }) * ``` * * @example * ```typescript * // Iframe with rendered content * IFrame( * { width: 800, height: 600 }, * html.div( * html.style('body { font-family: sans-serif; }'), * html.h1('Hello from iframe!'), * html.p('This content is rendered inside the iframe') * ) * ) * ``` * * @example * ```typescript * // Iframe with onLoad callback * IFrame( * { * width: 800, * height: 600, * onLoad: (iframe, doc) => { * console.log('Iframe loaded:', doc.title) * } * }, * html.div('Content') * ) * ``` * * @param options - Configuration options for the iframe * @param children - Optional content to render inside the iframe's document * @returns A renderable that creates and manages the iframe * @public */ export declare function IFrame({ src, name, width, height, sandbox, allow, referrerpolicy, loading, iframeChild, onLoad, }?: IFrameOptions, ...children: TNode[]): import('..').Renderable;