import { AnyObject, VueNode } from "./type.js"; import { VNodeChild } from "vue"; import { isFragment } from "@v-c/util/dist/Children/isFragment"; //#region src/_util/vueNode.d.ts type RenderProps = AnyObject | ((originProps: AnyObject) => AnyObject | undefined); declare function replaceElement(element: VNodeChild, replacement: VNodeChild, props?: RenderProps): VNodeChild; declare function cloneElement(element: VNodeChild, props?: RenderProps): VNodeChild; /** * 当传入值是 VNode 时返回一个全新的克隆,数组会逐项处理,其余值原样返回。 * * 用于模块级共享的默认 vnode(图标 / 图片等)。一旦原始 vnode 被真正挂载, * Vue 会把 el / component 写回它身上;而模块级常量是常驻的 GC Root,Vue 在 * unmount 时又不会清空这些字段,于是这条引用会把已卸载页面的整条实例链一直 * 保留下来,造成内存泄漏。渲染前克隆可让模块原始 vnode 永远保持未挂载 * (el 恒为 null),从而彻底切断该引用链。 */ declare function cloneIfVNode(node: T): T; declare function getVNode(node: VueNode): VNodeChild; declare function checkRenderNode(node: any): any; declare function getTextByNode(node: any): any; declare function getTextNodeArr(nodes: any[]): any[]; type EmitToProps> = { [K in keyof T as `on${Capitalize}`]: T[K]; }; //#endregion export { EmitToProps, checkRenderNode, cloneElement, cloneIfVNode, getTextByNode, getTextNodeArr, getVNode, isFragment, replaceElement };