(pieces: TemplateStringsArray | React.ReactNode, ...substitutions: Substitution[] | boolean[])
| 37 | export function tpl<T extends boolean = false>(node: React.ReactNode, reactive?: T): T extends true ? HTMLDivElement : string; |
| 38 | export function tpl(pieces: TemplateStringsArray, ...substitutions: Substitution[]): string; |
| 39 | export function tpl(pieces: TemplateStringsArray | React.ReactNode, ...substitutions: Substitution[] | boolean[]) { |
| 40 | if (React.isValidElement(pieces)) { |
| 41 | if (substitutions[0]) { |
| 42 | const div = document.createElement('div'); |
| 43 | ReactDOM.createRoot(div).render(pieces); |
| 44 | return div; |
| 45 | } |
| 46 | return DOMServer.renderToStaticMarkup(pieces); |
| 47 | } |
| 48 | let result = pieces[0]; |
| 49 | for (let i = 0; i < substitutions.length; ++i) { |
| 50 | const subst = substitutions[i]; |
| 51 | let substHtml: string; |
| 52 | if (subst && typeof subst === 'object' && subst.templateRaw) { |
| 53 | substHtml = subst.html; |
| 54 | } else substHtml = _.escape(String(subst)); |
| 55 | result += substHtml + pieces[i + 1]; |
| 56 | } |
| 57 | return result; |
| 58 | } |
| 59 | |
| 60 | tpl.typoMsg = function (msg: string, raw = false) { |
| 61 | if (raw) return `<div class="typo"><p>${msg}</p></div>`; |
no test coverage detected