import { Base } from '@studiometa/js-toolkit'; import type { BaseProps, BaseConfig } from '@studiometa/js-toolkit'; import { FrameAnchor } from './FrameAnchor.js'; import { FrameForm } from './FrameForm.js'; import { FrameTarget } from './FrameTarget.js'; import { FrameLoader } from './FrameLoader.js'; import type { FrameRequestInit, FrameTriggerEvent } from './types.js'; export interface FrameProps extends BaseProps { $children: { FrameAnchor: FrameAnchor[]; FrameForm: FrameForm[]; FrameTarget: FrameTarget[]; FrameLoader: FrameLoader[]; }; $options: { history: boolean; requestInit: RequestInit; headers: Record; }; } /** * Frame class. * @link https://ui.studiometa.dev/components/Frame/ */ export declare class Frame extends Base { /** * Config. */ static config: BaseConfig; /** * DOM Parser to parse the new content to be injected. */ domParser: DOMParser; /** * Abort controller to prevent multiple simultaneous fetches. */ abortController: AbortController; /** * Header names. */ headerNames: { readonly ACCEPT: 'accept'; readonly X_REQUESTED_BY: 'x-requested-by'; readonly X_TRIGGERED_BY: 'x-triggered-by'; readonly USER_AGENT: 'user-agent'; }; /** * Get uniq id. */ get id(): string; /** * The client used for the fetch request. */ get client(): typeof fetch; /** * Default request init. */ get requestInit(): RequestInit; /** * Get chidlren limited to the current instance. */ getDirectChildren(name: keyof FrameProps['$children']): any[]; /** * Fetch new content on frame-trigger. */ onFrameAnchorFrameTrigger({ args: [url, requestInit] }: { args: FrameTriggerEvent['detail']; }): void; /** * Fetch new content on frame-trigger. */ onFrameFormFrameTrigger({ args: [url, requestInit] }: { args: [URL, FrameRequestInit]; }): void; /** * Update content on history back/forward navigation. */ onWindowPopstate(): void; /** * Trigger FrameLoaders enter. */ onFrameFetchBefore(): void; /** * Trigger FrameLoaders leave. */ onFrameFetchAfter(): void; emitSync(event: string, trigger?: FrameForm | FrameAnchor, ...args: any[]): void; /** * Fetch given url. */ fetch(url: URL, requestInit?: FrameRequestInit): Promise; /** * Dispatch the contents to update to their matching FrameTarget. */ content(url: URL, requestInit: FrameRequestInit, content: string): Promise; /** * Handle errors. */ error(url: URL, requestInit: FrameRequestInit, error: Error): Promise; }