mirror of
				https://github.com/BookStackApp/BookStack.git
				synced 2025-11-03 02:13:16 +03:00 
			
		
		
		
	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));
 | 
						|
} |