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 | 84x 84x 84x 84x 1160x 15x 5x 10x 10x 10x 10x 10x 10x 10x 10x | import { NodeTransform } from '../transform' import { findDir } from '../utils' import { ElementNode, ForNode, 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) { 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 */) } } } } |