]> BookStack Code Mirror - bookstack/blob - resources/js/services/vdom.ts
Tests: Updated comment test to account for new editor usage
[bookstack] / resources / js / services / vdom.ts
1 import {
2     init,
3     attributesModule,
4     toVNode,
5 } from 'snabbdom';
6 import {VNode} from "snabbdom/build/vnode";
7
8 type vDomPatcher = (oldVnode: VNode | Element | DocumentFragment, vnode: VNode) => VNode;
9
10 let patcher: vDomPatcher;
11
12 function getPatcher(): vDomPatcher {
13     if (patcher) return patcher;
14
15     patcher = init([
16         attributesModule,
17     ]);
18
19     return patcher;
20 }
21
22 export function patchDomFromHtmlString(domTarget: Element, html: string): void {
23     const contentDom = document.createElement('div');
24     contentDom.innerHTML = html;
25     getPatcher()(toVNode(domTarget), toVNode(contentDom));
26 }