import { type MaybePromise } from '@augment-vir/common'; import { type PartInfo } from '../../lit-exports/all-lit-exports.js'; /** * Callback called by the {@link onResize} directive. * * @category Internal */ export type OnResizeCallback = (size: Readonly>, element: Element) => MaybePromise; /** * A directive that fires its listener any time the element that it's attached to is resized. This * uses the [built-in `ResizeObserver` * API](https://developer.mozilla.org/docs/Web/API/ResizeObserver), so it is very efficient. * * @category Directives * @example * * ```ts * import {html, defineElement, onResize} from 'element-vir'; * * const MyElement = defineElement()({ * tagName: 'my-element', * render() { * return html` *
{ * console.log('resized!', element, size); * })} * > * Some div *
* `; * }, * }); * ``` */ export declare const onResize: (callback: OnResizeCallback) => import("lit-html/directive.js").DirectiveResult<{ new (partInfo: PartInfo): { element: Element | undefined; readonly resizeObserver: ResizeObserver; callback: OnResizeCallback | undefined; update(partInfo: PartInfo, [callback]: [OnResizeCallback]): undefined; render(callback: OnResizeCallback): undefined; get _$isConnected(): boolean; }; }>; /** * A function that attaches a * [`ResizeObserver`](https://developer.mozilla.org/docs/Web/API/ResizeObserver) to any given * element, so it is very efficient. * * @category Directives * @example * * ```ts * import {html, defineElement, attachOnResize} from 'element-vir'; * * const MyElement = defineElement()({ * tagName: 'my-element', * render({host}) { * attachOnResize(host, (size, element) => { * console.log('resized!', element, size); * }); * * return ''; * }, * }); * ``` */ export declare function attachOnResize(element: Element, callback: OnResizeCallback): { resizeObserver: ResizeObserver; element: Element; };