import { AutoSubscriber, ResourceStore } from "./store.js"; import { DynamicFragment } from "./dynamic-fragment.js"; export class DynamicIsland extends EventTarget implements AutoSubscriber { constructor(setup: () => T, renderFunction: (state: T) => DynamicFragment) readonly pendingUpdate: Promise | null invalidate(): Promise storeChanged: (store: ResourceStore) => void subscriptions: Set> set state(state: T['state']) get state(): T['state'] mount(container: HTMLElement): void get container(): HTMLElement | null hydrate(container: HTMLElement): void get hydratable(): string unmount(cacheFragment?: boolean): void } export function island( render: () => DynamicFragment ): DynamicIsland<{}> export function island( setup: () => T, render: (state: T) => DynamicFragment ): DynamicIsland export function island( setupOrRender: () => DynamicFragment | (() => T), renderFunction?: (state: T) => DynamicFragment ): DynamicIsland