MCPcopy Create free account
hub / github.com/TruthHun/BookStack / mergeVNodeHook

Function mergeVNodeHook

static/vuejs/vue.js:1708–1736  ·  view source on GitHub ↗
(def, hookKey, hook)

Source from the content-addressed store, hash-verified

1706/* */
1707
1708function mergeVNodeHook (def, hookKey, hook) {
1709 var invoker;
1710 var oldHook = def[hookKey];
1711
1712 function wrappedHook () {
1713 hook.apply(this, arguments);
1714 // important: remove merged hook to ensure it's called only once
1715 // and prevent memory leak
1716 remove(invoker.fns, wrappedHook);
1717 }
1718
1719 if (!oldHook) {
1720 // no existing hook
1721 invoker = createFnInvoker([wrappedHook]);
1722 } else {
1723 /* istanbul ignore if */
1724 if (oldHook.fns && oldHook.merged) {
1725 // already a merged invoker
1726 invoker = oldHook;
1727 invoker.fns.push(wrappedHook);
1728 } else {
1729 // existing plain hook
1730 invoker = createFnInvoker([oldHook, wrappedHook]);
1731 }
1732 }
1733
1734 invoker.merged = true;
1735 def[hookKey] = invoker;
1736}
1737
1738/* */
1739

Callers 3

_updateFunction · 0.70
enterFunction · 0.70
vue.jsFile · 0.70

Calls 1

createFnInvokerFunction · 0.70

Tested by

no test coverage detected