diff --git a/packages/runtime-vapor/src/block.ts b/packages/runtime-vapor/src/block.ts index fb82eb68c..44fee9a55 100644 --- a/packages/runtime-vapor/src/block.ts +++ b/packages/runtime-vapor/src/block.ts @@ -24,6 +24,7 @@ export function isBlock(val: NonNullable): val is Block { } /*! #__NO_SIDE_EFFECTS__ */ +// TODO this should be optimized away export function normalizeBlock(block: Block): Node[] { const nodes: Node[] = [] if (block instanceof Node) { diff --git a/packages/runtime-vapor/src/componentMetadata.ts b/packages/runtime-vapor/src/componentMetadata.ts index ab2ad0bc6..557b6ff4f 100644 --- a/packages/runtime-vapor/src/componentMetadata.ts +++ b/packages/runtime-vapor/src/componentMetadata.ts @@ -1,6 +1,5 @@ import { remove } from '@vue/shared' import type { DelegatedHandler } from './dom/event' -import type { Data } from '@vue/runtime-shared' export enum MetadataKind { prop, @@ -8,7 +7,7 @@ export enum MetadataKind { } export type ComponentMetadata = [ - props: Data, + props: Record, events: Record, ] diff --git a/packages/runtime-vapor/src/dom/element.ts b/packages/runtime-vapor/src/dom/element.ts index 6c8f795b3..1df04b8a7 100644 --- a/packages/runtime-vapor/src/dom/element.ts +++ b/packages/runtime-vapor/src/dom/element.ts @@ -4,17 +4,6 @@ import { setText } from './prop' import { type Block, normalizeBlock } from '../block' import { isVaporComponent } from '../component' -// export function insert( -// block: Block, -// parent: ParentNode, -// anchor: Node | null = null, -// ): void { -// const nodes = normalizeBlock(block) -// for (let i = 0; i < nodes.length; i++) { -// parent.insertBefore(nodes[i], anchor) -// } -// } - export function insert( block: Block, parent: ParentNode, @@ -28,15 +17,18 @@ export function insert( for (let i = 0; i < block.length; i++) { insert(block[i], parent, anchor) } - } else if (block) { + } else { + // fragment insert(block.nodes, parent, anchor) } } export function prepend(parent: ParentNode, ...blocks: Block[]): void { - parent.prepend(...normalizeBlock(blocks)) + const anchor = parent.firstChild + for (const b of blocks) insert(b, parent, anchor) } +// TODO optimize export function remove(block: Block, parent: ParentNode): void { const nodes = normalizeBlock(block) for (let i = 0; i < nodes.length; i++) { @@ -44,6 +36,7 @@ export function remove(block: Block, parent: ParentNode): void { } } +// TODO optimize export function createTextNode(values?: any[] | (() => any[])): Text { // eslint-disable-next-line no-restricted-globals const node = document.createTextNode('')