(runtime2, tokenizer2, Parser2, kernel2, reactivity2)
| 10121 | } |
| 10122 | var LIVE_SELECTOR = 'script[type="text/hyperscript-template"][live]'; |
| 10123 | function initLiveTemplates(runtime2, tokenizer2, Parser2, kernel2, reactivity2) { |
| 10124 | var processed = /* @__PURE__ */ new WeakSet(); |
| 10125 | runtime2.addBeforeProcessHook(function(elt) { |
| 10126 | if (!elt || !elt.querySelectorAll) return; |
| 10127 | elt.querySelectorAll(LIVE_SELECTOR).forEach(function(tmpl) { |
| 10128 | if (processed.has(tmpl)) return; |
| 10129 | processed.add(tmpl); |
| 10130 | var source = getTemplateSource(tmpl); |
| 10131 | var script = tmpl.getAttribute("_") || tmpl.getAttribute("data-script") || ""; |
| 10132 | tmpl.removeAttribute("_"); |
| 10133 | tmpl.removeAttribute("data-script"); |
| 10134 | var wrapper = document.createElement("div"); |
| 10135 | wrapper.style.display = "contents"; |
| 10136 | wrapper.setAttribute("data-live-template", ""); |
| 10137 | tmpl.after(wrapper); |
| 10138 | if (script) { |
| 10139 | wrapper.setAttribute("_", script); |
| 10140 | runtime2.processNode(wrapper); |
| 10141 | } |
| 10142 | var stamped = false; |
| 10143 | function stamp(html) { |
| 10144 | if (!stamped) { |
| 10145 | wrapper.innerHTML = html; |
| 10146 | runtime2.processNode(wrapper); |
| 10147 | stamped = true; |
| 10148 | } else { |
| 10149 | runtime2.morph(wrapper, html); |
| 10150 | } |
| 10151 | } |
| 10152 | function render() { |
| 10153 | var ctx = runtime2.makeContext(wrapper, null, wrapper, null); |
| 10154 | var buf = []; |
| 10155 | ctx.meta.__ht_template_result = buf; |
| 10156 | var tokens = tokenizer2.tokenize(source, "lines"); |
| 10157 | var parser = new Parser2(kernel2, tokens); |
| 10158 | var cmds; |
| 10159 | try { |
| 10160 | cmds = parser.parseElement("commandList"); |
| 10161 | parser.ensureTerminated(cmds); |
| 10162 | } catch (e) { |
| 10163 | console.error("live-template parse error:", e.message || e); |
| 10164 | return ""; |
| 10165 | } |
| 10166 | cmds.execute(ctx); |
| 10167 | wrapper.__hs_scopes = ctx.meta.__ht_scopes || null; |
| 10168 | if (ctx.meta.returned || !ctx.meta.resolve) return buf.join(""); |
| 10169 | var resolve; |
| 10170 | var promise = new Promise(function(r) { |
| 10171 | resolve = r; |
| 10172 | }); |
| 10173 | ctx.meta.resolve = resolve; |
| 10174 | return promise.then(function() { |
| 10175 | return buf.join(""); |
| 10176 | }); |
| 10177 | } |
| 10178 | queueMicrotask(function() { |
| 10179 | var result = render(); |
| 10180 | if (result && result.then) { |
no test coverage detected