chore: better types

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

@ -1,9 +1,34 @@
import { branch, effect_root } from "../reactivity/effects"; import { branch, effect_root } from '../reactivity/effects';
import { push_renderer } from "./state"; import { push_renderer } from './state';
/** /**
* @param {*} renderer * @template [TFragment=any]
* @returns * @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) { export function createRenderer(renderer) {
return { return {

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

Loading…
Cancel
Save