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 2fe22abf_9073_15d3_f856_f421b0fe047a["merge-hook.ts"] 5164a61d_92b2_9c7f_8acb_b18093afdb59["vnode.ts"] 2fe22abf_9073_15d3_f856_f421b0fe047a --> 5164a61d_92b2_9c7f_8acb_b18093afdb59 5ad3a184_20dd_3738_991b_41d3120e21c9["VNode"] 2fe22abf_9073_15d3_f856_f421b0fe047a --> 5ad3a184_20dd_3738_991b_41d3120e21c9 53936bdc_c7c5_5f72_336a_062133943169["update-listeners.ts"] 2fe22abf_9073_15d3_f856_f421b0fe047a --> 53936bdc_c7c5_5f72_336a_062133943169 d9d418b5_5caf_d879_89fa_46602272fa33["createFnInvoker"] 2fe22abf_9073_15d3_f856_f421b0fe047a --> d9d418b5_5caf_d879_89fa_46602272fa33 09aa5370_2caa_6b33_3f44_6ac5211bd11b["util"] 2fe22abf_9073_15d3_f856_f421b0fe047a --> 09aa5370_2caa_6b33_3f44_6ac5211bd11b style 2fe22abf_9073_15d3_f856_f421b0fe047a 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 VueCore domain, VDom 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: VueCore, subdomain: VDom, 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