/** * HTML escape * * @param {string} sz * @return {string} */ export function hesc(sz: string): string { return sz .replace(/&/g,'&') .replace(//g,'>') .replace(/"/g,'"') .replace(/'/g,'''); } /** * html is a no-op function for ES6 literals. * Install the `lit-html` extension in VSCode to use this as a syntax-highlighted string literal. * * @param strings {TemplateStringsArray} * @param keys {string[]} */ export function html(strings: TemplateStringsArray, ...keys: string[]): string { let ret = []; for (let i = 0; i < strings.length - 1; ++i) { ret.push(strings[i], keys[i]); } ret.push(strings[strings.length - 1]); return ret.join(""); }; /** * toast shows a mini temporary informational popup, using bootstrap's toast library. * * @param titleHtml {string} * @param bodyHtml {string} * @param colorClass {string} One of 'info', 'success', 'danger' */ export function toast(titleHtml: string, bodyHtml: string, colorClass: string = "info") { const template = html` `; let $t = $(template); $(".toast-container").append($t); $t.toast('show'); $t.on('hidden.bs.toast', function () { $t.remove(); }) }