import { Comment, Fragment, Text, createBlock, createCommentVNode, isVNode, openBlock } from 'vue'; import { camelize, isArray } from '@vue/shared'; import { hasOwn } from '../objects'; import { debugWarn } from '../error'; import type { VNode, VNodeArrayChildren, VNodeChild, VNodeNormalizedChildren } from 'vue'; const SCOPE = 'utils/vue/vnode'; export enum PatchFlags { TEXT = 1, CLASS = 2, STYLE = 4, PROPS = 8, FULL_PROPS = 16, HYDRATE_EVENTS = 32, STABLE_FRAGMENT = 64, KEYED_FRAGMENT = 128, UNKEYED_FRAGMENT = 256, NEED_PATCH = 512, DYNAMIC_SLOTS = 1024, HOISTED = -1, BAIL = -2, } export type VNodeChildAtom = Exclude>; export type RawSlots = Exclude | null | string>; export function isFragment(node: VNode): boolean; export function isFragment(node: unknown): node is VNode; export function isFragment(node: unknown): node is VNode { return isVNode(node) && node.type === Fragment; } export function isText(node: VNode): boolean; export function isText(node: unknown): node is VNode; export function isText(node: unknown): node is VNode { return isVNode(node) && node.type === Text; } export function isComment(node: VNode): boolean; export function isComment(node: unknown): node is VNode; export function isComment(node: unknown): node is VNode { return isVNode(node) && node.type === Comment; } const TEMPLATE = 'template'; export function isTemplate(node: VNode): boolean; export function isTemplate(node: unknown): node is VNode; export function isTemplate(node: unknown): node is VNode { return isVNode(node) && node.type === TEMPLATE; } /** * determine if the element is a valid element type rather than fragments and comment e.g.