@nodegui/svelte-nodegui
Version:
Svelte integration for NodeGUI
73 lines (72 loc) • 5.47 kB
TypeScript
declare namespace svelteNodeGUI.JSX {
interface ElementClass {
$$prop_def: any;
}
interface ElementAttributesProperty {
$$prop_def: any;
}
type SvelteElement = {};
type SvelteText = string | number;
type SvelteChild = SvelteElement | SvelteText;
interface SvelteNodeArray extends Array<SvelteNode> {
}
type SvelteFragment = {} | SvelteNodeArray;
type SvelteNode = SvelteChild | SvelteFragment | boolean | null | undefined;
interface SvelteNodeGUIAttributes<T extends import("@nodegui/nodegui").Component = import("@nodegui/nodegui").Component> extends SvelteElement {
nodeRole?: string;
}
/**
* Known issues:
* 1) None of the event handlers are filled in. Consequently, all event handlers provoke edit-time errors.
* Of interest: `on:clicked` in HTMLX becomes `onclicked` in JSX.
* Most likely, it follows a rule of `on${Lowercase<T>}` for a given event name.
*
* 2) All attributes written in HTMLX are forced to lowercase (both at edit-time and runtime, by different
* tooling). Thus, `windowTitle="Hi"` becomes `windowtitle="Hi"`.
*
* In both cases, the latest stable TypeScript isn't expressive enough to express a remapping of types to lower case.
* However, once TypeScript 4.1 lands, it should be (provided they can sort out intrinsic types like Lowercase<T>).
* @see https://github.com/microsoft/TypeScript/pull/40336
* @see https://github.com/microsoft/TypeScript/pull/40580
*
* In any case, a change coming to core would hopefully solve this.
* @see https://github.com/sveltejs/svelte/pull/5652
*
* For now, particularly until Svelte tooling supports TypeScript 4.1, the best we can do to prevent frustration is
* fall back to any type (which we do with the final type intersection).
*/
type SvelteNodeGUIProps<Props extends {} = {}, T extends import("@nodegui/nodegui").Component = import("@nodegui/nodegui").Component> = SvelteNodeGUIAttributes<T> & Props & {
[name: string]: any;
};
interface IntrinsicAttributes {
}
interface IntrinsicElements {
[name: string]: {
[name: string]: any;
};
image: SvelteNodeGUIProps<import("./dom/react-nodegui/src").ImageProps, import("./dom/react-nodegui/src").RNImage>;
animatedImage: SvelteNodeGUIProps<import("./dom/react-nodegui/src").AnimatedImageProps, import("./dom/react-nodegui/src").RNAnimatedImage>;
view: SvelteNodeGUIProps<import("./dom/react-nodegui/src").ViewProps<any>, import("./dom/react-nodegui/src").RNView>;
checkBox: SvelteNodeGUIProps<import("./dom/react-nodegui/src").CheckBoxProps, import("./dom/react-nodegui/src").RNCheckBox>;
text: SvelteNodeGUIProps<import("./dom/react-nodegui/src").TextProps, import("./dom/react-nodegui/src").RNText>;
dial: SvelteNodeGUIProps<import("./dom/react-nodegui/src").DialProps, import("./dom/react-nodegui/src").RNDial>;
lineEdit: SvelteNodeGUIProps<import("./dom/react-nodegui/src").LineEditProps, import("./dom/react-nodegui/src").RNLineEdit>;
window: SvelteNodeGUIProps<import("./dom/react-nodegui/src").WindowProps, import("./dom/react-nodegui/src").RNWindow>;
progressBar: SvelteNodeGUIProps<import("./dom/react-nodegui/src").ProgressBarProps, import("./dom/react-nodegui/src").RNProgressBar>;
comboBox: SvelteNodeGUIProps<import("./dom/react-nodegui/src").ComboBoxProps, import("./dom/react-nodegui/src").RNComboBox>;
button: SvelteNodeGUIProps<import("./dom/react-nodegui/src").ButtonProps, import("./dom/react-nodegui/src").RNButton>;
spinBox: SvelteNodeGUIProps<import("./dom/react-nodegui/src").SpinBoxProps, import("./dom/react-nodegui/src").RNSpinBox>;
radioButton: SvelteNodeGUIProps<import("./dom/react-nodegui/src").RadioButtonProps, import("./dom/react-nodegui/src").RNRadioButton>;
tab: SvelteNodeGUIProps<import("./dom/react-nodegui/src").TabProps, import("./dom/react-nodegui/src").RNTab>;
menu: SvelteNodeGUIProps<import("./dom/react-nodegui/src").MenuProps, import("./dom/react-nodegui/src").RNMenu>;
menuBar: SvelteNodeGUIProps<import("./dom/react-nodegui/src").MenuBarProps, import("./dom/react-nodegui/src").RNMenuBar>;
plainTextEdit: SvelteNodeGUIProps<import("./dom/react-nodegui/src").PlainTextEditProps, import("./dom/react-nodegui/src").RNPlainTextEdit>;
slider: SvelteNodeGUIProps<import("./dom/react-nodegui/src").SliderProps, import("./dom/react-nodegui/src").RNSlider>;
systemTrayIcon: SvelteNodeGUIProps<import("./dom/react-nodegui/src").SystemTrayIconProps, import("./dom/react-nodegui/src").RNSystemTrayIcon>;
svg: SvelteNodeGUIProps<import("./dom/react-nodegui/src").SvgProps, import("./dom/react-nodegui/src").RNSvg>;
action: SvelteNodeGUIProps<import("./dom/react-nodegui/src").ActionProps, import("./dom/react-nodegui/src").RNAction>;
boxView: SvelteNodeGUIProps<import("./dom/react-nodegui/src").BoxViewProps, import("./dom/react-nodegui/src").RNBoxView>;
gridView: SvelteNodeGUIProps<import("./dom/react-nodegui/src").GridViewProps, import("./dom/react-nodegui/src").RNGridView>;
scrollArea: SvelteNodeGUIProps<import("./dom/react-nodegui/src").ScrollAreaProps, import("./dom/react-nodegui/src").RNScrollArea>;
}
}