@joshuafcole/fluorine
Version:
A highly reactive, optionally compiled, and strongly typed view layer for TypeScript.
93 lines (92 loc) • 3.08 kB
TypeScript
export { Renderer, PropType, FElement, FElem, FNode, FChild } from "./renderer";
export { handle, get, handlers, EventBinder, Compilable } from "./catalyst";
export { stasis } from "./stasis";
import { Renderer, FElement, FElem, FSVGElement } from "./renderer";
declare global {
type PARRArray<T> = PARRLabel<T> & [any, ...(string | number)[]];
interface PARRLabel<T> {
__type: T;
slice(end?: number): PARRArray<T>;
slice(start?: number, end?: number): PARRArray<T>;
}
function PARR<T>(x: T): PARRArray<T>;
}
export declare let renderer: Renderer;
declare let _handlers: {
[id: string]: (event: Event, elem: FElement) => unknown;
};
declare global {
namespace React {
let renderer: Renderer;
let handlers: typeof _handlers;
function createElement(tagname: string, props?: FElement, ...children: (FElem | string | undefined)[]): FElem;
}
namespace JSX {
interface ElementChildrenAttribute {
children: {};
}
interface IntrinsicElements {
[tag: string]: FElement;
div: FElement;
section: FElement;
span: FElement;
button: FElement;
a: FElement;
nav: FElement;
ul: FElement;
ol: FElement;
li: FElement;
input: FElement;
textarea: FElement;
svg: FSVGElement & {
viewBox: string;
height?: number | string;
width?: number | string;
preserveAspectRatio?: string;
x?: number | string;
y?: number | string;
};
g: FSVGElement;
circle: FSVGElement & {
cx: number | string;
cy: number | string;
r: number | string;
pathLength?: number | string;
};
ellipse: FSVGElement & {
cx: number | string;
cy: number | string;
rx: number | string;
ry: number | string;
pathLength?: number | string;
};
line: FSVGElement & {
x1: number | string;
y1: number | string;
x2: number | string;
y2: number | string;
pathLength?: number | string;
};
polygon: FSVGElement & {
points: string;
pathLength?: number | string;
};
polyline: FSVGElement & {
points: string;
pathLength?: number | string;
};
path: FSVGElement & {
d: string;
};
rect: FSVGElement & {
x: number | string;
y: number | string;
width: number | string;
height: number | string;
rx?: number | string;
ry?: number | string;
pathLength?: number | string;
};
}
}
}