merge-hook.ts — vue Source File
Architecture documentation for merge-hook.ts, a typescript file in the vue codebase. 5 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 1d9d4118_665c_f6c2_cd3e_e1c7a7b6e252["merge-hook.ts"] a13b4a2c_7af7_bcfd_03a9_13286f908ca0["vnode.ts"] 1d9d4118_665c_f6c2_cd3e_e1c7a7b6e252 --> a13b4a2c_7af7_bcfd_03a9_13286f908ca0 6a05321e_c7cd_43ad_21be_69c7e5fd4488["VNode"] 1d9d4118_665c_f6c2_cd3e_e1c7a7b6e252 --> 6a05321e_c7cd_43ad_21be_69c7e5fd4488 a11c2d0a_9676_19da_3fd8_66e9ef25e812["update-listeners.ts"] 1d9d4118_665c_f6c2_cd3e_e1c7a7b6e252 --> a11c2d0a_9676_19da_3fd8_66e9ef25e812 72dc3fd8_ab45_fab8_4ee3_ade3f6e39143["createFnInvoker"] 1d9d4118_665c_f6c2_cd3e_e1c7a7b6e252 --> 72dc3fd8_ab45_fab8_4ee3_ade3f6e39143 156bf2e1_8a13_f22d_5437_54f14bcef8fa["util"] 1d9d4118_665c_f6c2_cd3e_e1c7a7b6e252 --> 156bf2e1_8a13_f22d_5437_54f14bcef8fa style 1d9d4118_665c_f6c2_cd3e_e1c7a7b6e252 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import VNode from '../vnode'
import { createFnInvoker } from './update-listeners'
import { remove, isDef, isUndef, isTrue } from 'shared/util'
export function mergeVNodeHook(
def: Record<string, any>,
hookKey: string,
hook: Function
) {
if (def instanceof VNode) {
def = def.data!.hook || (def.data!.hook = {})
}
let invoker
const oldHook = def[hookKey]
function wrappedHook() {
hook.apply(this, arguments)
// important: remove merged hook to ensure it's called only once
// and prevent memory leak
remove(invoker.fns, wrappedHook)
}
if (isUndef(oldHook)) {
// no existing hook
invoker = createFnInvoker([wrappedHook])
} else {
/* istanbul ignore if */
if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {
// already a merged invoker
invoker = oldHook
invoker.fns.push(wrappedHook)
} else {
// existing plain hook
invoker = createFnInvoker([oldHook, wrappedHook])
}
}
invoker.merged = true
def[hookKey] = invoker
}
Domain
Subdomains
Functions
Dependencies
Source
Frequently Asked Questions
What does merge-hook.ts do?
merge-hook.ts is a source file in the vue codebase, written in typescript. It belongs to the CoreRuntime domain, VirtualDOM subdomain.
What functions are defined in merge-hook.ts?
merge-hook.ts defines 1 function(s): mergeVNodeHook.
What does merge-hook.ts depend on?
merge-hook.ts imports 5 module(s): VNode, createFnInvoker, update-listeners.ts, util, vnode.ts.
Where is merge-hook.ts in the architecture?
merge-hook.ts is located at src/core/vdom/helpers/merge-hook.ts (domain: CoreRuntime, subdomain: VirtualDOM, directory: src/core/vdom/helpers).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free