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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | 47x 47x 10x 10x 10x 21x 8x 10x 17x 17x 17x 10x 10x 10x 10x 10x 37x 3x 3x 3x 1x 1x 37x 8x 37x 23x 14x 19x 3x 1x 1x 2x 2x 1x 33x 33x 33x 33x | import { getCurrentInstance, warn, VNode, Fragment, Static, watchPostEffect, onMounted, onUnmounted } from '@vue/runtime-core' import { ShapeFlags } from '@vue/shared' /** * Runtime helper for SFC's CSS variable injection feature. * @private */ export function useCssVars(getter: (ctx: any) => Record<string, string>) { Iif (!__BROWSER__ && !__TEST__) return const instance = getCurrentInstance() /* istanbul ignore next */ if (!instance) { __DEV__ && warn(`useCssVars is called without current active component instance.`) return } const updateTeleports = (instance.ut = (vars = getter(instance.proxy)) => { Array.from( document.querySelectorAll(`[data-v-owner="${instance.uid}"]`) ).forEach(node => setVarsOnNode(node, vars)) }) const setVars = () => { const vars = getter(instance.proxy) setVarsOnVNode(instance.subTree, vars) updateTeleports(vars) } watchPostEffect(setVars) onMounted(() => { const ob = new MutationObserver(setVars) ob.observe(instance.subTree.el!.parentNode, { childList: true }) onUnmounted(() => ob.disconnect()) }) } function setVarsOnVNode(vnode: VNode, vars: Record<string, string>) { if (__FEATURE_SUSPENSE__ && vnode.shapeFlag & ShapeFlags.SUSPENSE) { const suspense = vnode.suspense! vnode = suspense.activeBranch! if (suspense.pendingBranch && !suspense.isHydrating) { suspense.effects.push(() => { setVarsOnVNode(suspense.activeBranch!, vars) }) } } // drill down HOCs until it's a non-component vnode while (vnode.component) { vnode = vnode.component.subTree } if (vnode.shapeFlag & ShapeFlags.ELEMENT && vnode.el) { setVarsOnNode(vnode.el as Node, vars) } else if (vnode.type === Fragment) { ;(vnode.children as VNode[]).forEach(c => setVarsOnVNode(c, vars)) } else if (vnode.type === Static) { let { el, anchor } = vnode while (el) { setVarsOnNode(el as Node, vars) if (el === anchor) break el = el.nextSibling } } } function setVarsOnNode(el: Node, vars: Record<string, string>) { if (el.nodeType === 1) { const style = (el as HTMLElement).style for (const key in vars) { style.setProperty(`--${key}`, vars[key]) } } } |