@adpt/core
Version:
AdaptJS core library
41 lines • 1.97 kB
TypeScript
import { AdaptElement, AdaptMountedElement, ElementPredicate, GenericInstance, GenericInstanceMethods, KeyPath } from "./jsx";
export interface Handle<I extends object = GenericInstance> extends Readonly<Partial<BuildId>> {
readonly associated: boolean;
readonly target: AdaptElement | null | undefined;
readonly origTarget: AdaptElement | null | undefined;
readonly mountedOrig: AdaptMountedElement | null | undefined;
readonly name?: string;
nextMounted(pred?: ElementPredicate): AdaptMountedElement | null | undefined;
replaceTarget(child: AdaptElement | null, buildId: BuildId): void;
}
/**
* Extracts the instance type associated with a {@link Handle}.
* @public
*/
export declare type HandleInstanceType<H extends Handle> = H extends Handle<infer I> ? I : never;
export declare function isHandle<I extends object = GenericInstance>(val: unknown): val is Handle<I>;
export interface HandleInternal<I extends object = GenericInstance> extends Handle<I> {
unresolvedTarget?: KeyPath | null;
associate(el: AdaptElement): void;
targetReplaced(buildId: BuildId): boolean;
}
export interface BuildId {
buildNum: number;
}
export declare function isHandleInternal<I extends object = GenericInstance>(val: unknown): val is HandleInternal<I>;
export declare function getInternalHandle<I extends object = GenericInstance>(el: AdaptElement): HandleInternal<I>;
export declare const handleSignature: string;
export interface HandleObj {
__adaptIsHandle: string;
name?: string;
target: string[] | null;
urn: string;
}
export declare function isHandleObj(val: object): val is HandleObj;
/**
* User-facing API for creating a Handle
* @param name - Name to associate with the handle for debugging/display purposes
*/
export declare function handle<I extends object = GenericInstance>(name?: string): Handle<I & GenericInstanceMethods>;
export declare const handleUrn: string;
//# sourceMappingURL=handle.d.ts.map