Updated markdown preview to update on diff-basis

Uses vdom system to diff and update the current markdown preview view
instead of requiring a full HTML replace change.
This should provide better performance, expecially where dynamically
loaded content such as iframes were in use.

Closes #3454
This commit is contained in:
Dan Brown
2022-06-07 16:07:28 +01:00
parent 3fe666f36a
commit e00d88f45d
4 changed files with 61 additions and 2 deletions

View File

@ -0,0 +1,31 @@
import {
init,
attributesModule,
toVNode
} from "snabbdom";
let patcher;
/**
* @returns {Function}
*/
function getPatcher() {
if (patcher) return patcher;
patcher = init([
attributesModule,
]);
return patcher;
}
/**
* @param {Element} domTarget
* @param {String} html
*/
export function patchDomFromHtmlString(domTarget, html) {
const contentDom = document.createElement('div');
contentDom.innerHTML = html;
getPatcher()(toVNode(domTarget), toVNode(contentDom));
}