Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 2x 2x 2x 1712x 17x 7x 7x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 1712x | import type { NodeTransform } from '../transform' import { findDir } from '../utils' import { type ElementNode, type ForNode, type IfNode, NodeTypes } from '../ast' import { SET_BLOCK_TRACKING } from '../runtimeHelpers' const seen = new WeakSet() export const transformOnce: NodeTransform = (node, context) => { if (node.type === NodeTypes.ELEMENT && findDir(node, 'once', true)) { if (seen.has(node) || context.inVOnce || context.inSSR) { return } seen.add(node) context.inVOnce = true context.helper(SET_BLOCK_TRACKING) return () => { context.inVOnce = false const cur = context.currentNode as ElementNode | IfNode | ForNode if (cur.codegenNode) { cur.codegenNode = context.cache( cur.codegenNode, true /* isVNode */, true /* inVOnce */, ) } } } } |