@anywhichway/lazui
Version:
Single page apps and lazy loading sites with minimal JavaScript or client build processes.
21 lines (20 loc) • 1.08 kB
JavaScript
function showsource({el,attribute,root,args,lazui}) {
const {replaceBetween} = lazui,
where = attribute.value ||= "beforeBegin",
inline = args.includes("inline"),
inner = args.includes("inner");
el.removeAttribute(attribute.name);
const html = args.includes("inner") ? el.innerHTML : el.outerHTML;
let content = replaceBetween(replaceBetween(`${inline ? html.replaceAll(/\\n/g,"") : html}`,'"','"',(text) => text.replaceAll(/"/g,'\"')),"`","`",(text) =>text.replaceAll(/</g,"<"))
if(inner && content[0]==="\n") content = content.slice(1);
const language = inner ? "html" : undefined,
pre = document.createElement("pre"),
code = document.createElement("code");
code.innerHTML = content;
pre.append(code);
if(window.highlight) window.highlight(code,inner ? ["html"] : undefined);
if(where==="beforeBegin") el.before(pre);
else if(where==="afterEnd") el.after(pre)
else root.querySelectorAll(where).forEach((el) => el.replaceChildren(pre));
}
export {showsource};