mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-12-01 21:35:16 +08:00
e00d88f45d
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
31 lines
523 B
JavaScript
31 lines
523 B
JavaScript
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));
|
|
} |