chore: better types

pull/18058/head
paoloricciuti 4 months ago
parent 203d22b9cd
commit 23e52db4e0

@ -1,9 +1,34 @@
import { branch, effect_root } from "../reactivity/effects";
import { push_renderer } from "./state";
import { branch, effect_root } from '../reactivity/effects';
import { push_renderer } from './state';
/**
* @param {*} renderer
* @returns
* @template [TFragment=any]
* @template [TElement=any]
* @template [TTextNode=any]
* @template [TComment=any]
* @template [TNode=TElement | TTextNode | TComment | TFragment]
* @typedef {Object} Renderer
* @property {()=>TFragment} createFragment
* @property {(name: string)=>TElement} createElement
* @property {(data: string)=>TTextNode} createTextNode
* @property {(element: TElement, key: string, value: any)=>void} setAttribute
* @property {(node: TNode, text: string)=>void} setText
* @property {(data: string)=>TComment} createComment
* @property {(element: TNode)=>TNode} getFirstChild
* @property {(element: TNode)=>TNode} getLastChild
* @property {(element: TNode)=>TNode} getNextSibling
* @property {(parent: TNode, element: TNode, anchor: TNode | null)=>void} insert
* @property {(node: TNode)=>void} remove
* @property {(element: TNode)=>TNode} getParent
*/
/**
* @template [const TFragment=unknown]
* @template [const TElement=unknown]
* @template [const TTextNode=unknown]
* @template [const TComment=unknown]
* @param {Renderer<TFragment, TElement, TTextNode, TComment>} renderer
* @returns {Renderer<TFragment, TElement, TTextNode, TComment> & { render: (Component: any, options: { target: TNode, props?: any }) => () => void }}
*/
export function createRenderer(renderer) {
return {
@ -25,4 +50,4 @@ export function createRenderer(renderer) {
return unmount;
}
};
}
}

@ -1,15 +1,23 @@
/**
* @type {any}
* @import { Renderer } from ".";
*/
/**
* @type {Renderer | null}
*/
let renderer = null;
/**
*
* @returns {Renderer | null}
*/
export function get_renderer() {
return renderer;
}
/**
*
* @param {any} $renderer
* @param {Renderer} $renderer
*/
export function push_renderer($renderer) {
let old_renderer = renderer;
@ -17,4 +25,4 @@ export function push_renderer($renderer) {
return () => {
renderer = old_renderer;
};
}
}

Loading…
Cancel
Save