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