2022-06-07 16:07:28 +01:00
|
|
|
import {
|
|
|
|
init,
|
|
|
|
attributesModule,
|
2023-04-18 22:20:02 +01:00
|
|
|
toVNode,
|
|
|
|
} from 'snabbdom';
|
2024-10-04 14:36:20 +01:00
|
|
|
import {VNode} from "snabbdom/build/vnode";
|
2022-06-07 16:07:28 +01:00
|
|
|
|
2024-10-04 14:36:20 +01:00
|
|
|
type vDomPatcher = (oldVnode: VNode | Element | DocumentFragment, vnode: VNode) => VNode;
|
2022-06-07 16:07:28 +01:00
|
|
|
|
2024-10-04 14:36:20 +01:00
|
|
|
let patcher: vDomPatcher;
|
|
|
|
|
|
|
|
function getPatcher(): vDomPatcher {
|
2022-06-07 16:07:28 +01:00
|
|
|
if (patcher) return patcher;
|
|
|
|
|
|
|
|
patcher = init([
|
|
|
|
attributesModule,
|
|
|
|
]);
|
|
|
|
|
|
|
|
return patcher;
|
|
|
|
}
|
|
|
|
|
2024-10-04 14:36:20 +01:00
|
|
|
export function patchDomFromHtmlString(domTarget: Element, html: string): void {
|
2022-06-07 16:07:28 +01:00
|
|
|
const contentDom = document.createElement('div');
|
|
|
|
contentDom.innerHTML = html;
|
|
|
|
getPatcher()(toVNode(domTarget), toVNode(contentDom));
|
2023-04-18 22:20:02 +01:00
|
|
|
}
|