@nodegui/svelte-nodegui
Version:
Svelte integration for NodeGUI
37 lines (36 loc) • 1.81 kB
TypeScript
import { NSVElement, NSVViewFlags, NativeView } from './nodes';
export declare type NSVElementResolver<T extends NativeView = NativeView> = () => T;
export declare type NSVModelDescriptor = {
prop: string;
event: string;
};
export interface NSVViewMeta<T extends NativeView = NativeView, Props extends {} = {}> {
viewFlags: NSVViewFlags;
nodeOps?: {
setProps?(newProps: Props, oldProps: Props): void;
insert?(child: NSVElement, parent: NSVElement<T>, atIndex?: number): void | "defer";
remove?(child: NSVElement, parent: NSVElement<T>): void | "defer";
};
model?: NSVModelDescriptor;
overwriteExisting?: boolean;
}
export interface NSVElementDescriptor<T extends NativeView = NativeView> {
meta: NSVViewMeta;
resolver?: NSVElementResolver<T>;
}
export declare let defaultViewMeta: NSVViewMeta;
export declare function getViewMeta(elementName: string): NSVViewMeta;
/**
* @param elementName The name of the element registered into the elementMap.
* @returns The nativeView associated with this element name. May be undefined
* (e.g. for virtual elements like head and style).
*/
export declare function getViewClass(elementName: string): any | undefined;
export declare function normalizeElementName(elementName: string): string;
export declare function registerElement<T extends NativeView = NativeView, Props extends {} = {}>(elementName: string, resolver?: NSVElementResolver<T>, meta?: Partial<NSVViewMeta<T>>): void;
export declare function isKnownView(elementName: string): boolean;
/**
* I had thought that all of these would extend NodeWidget, but it appears that many extend Component instead.
* I'll improve the typings later.
*/
export declare function registerNativeElements(): void;