(ctx, { template, templateArgs, target })
| 10320 | return cmd; |
| 10321 | } |
| 10322 | resolve(ctx, { template, templateArgs, target }) { |
| 10323 | if (!(template instanceof Element)) throw new Error(this.template_.sourceFor() + " is not an element"); |
| 10324 | var buf = []; |
| 10325 | var runtime2 = ctx.meta.runtime; |
| 10326 | var renderCtx = runtime2.makeContext(ctx.me, null, ctx.me, null); |
| 10327 | renderCtx.locals = Object.assign({}, ctx.locals, templateArgs); |
| 10328 | renderCtx.meta.__ht_template_result = buf; |
| 10329 | var tokens = new Tokenizer().tokenize(getTemplateSource(template), "lines"); |
| 10330 | var parser = this._parser.createChildParser(tokens); |
| 10331 | var commandList; |
| 10332 | try { |
| 10333 | commandList = parser.parseElement("commandList"); |
| 10334 | parser.ensureTerminated(commandList); |
| 10335 | } catch (e) { |
| 10336 | console.error("hyperscript template parse error:", e.parseError?.message || e.message || e); |
| 10337 | ctx.result = ""; |
| 10338 | return runtime2.findNext(this, ctx); |
| 10339 | } |
| 10340 | var errors = commandList.collectErrors(); |
| 10341 | if (errors.length) { |
| 10342 | for (var err of errors) { |
| 10343 | console.error("hyperscript template error (line " + err.line + "): " + err.message + (err.expr ? " in ${" + err.expr + "}" : "")); |
| 10344 | } |
| 10345 | } |
| 10346 | var resolve, reject; |
| 10347 | var promise = new Promise(function(res, rej) { |
| 10348 | resolve = res; |
| 10349 | reject = rej; |
| 10350 | }); |
| 10351 | commandList.execute(renderCtx); |
| 10352 | var scopes = renderCtx.meta.__ht_scopes || null; |
| 10353 | var SCOPE_MARKER_RE = /<!--hs-scope:[^>]*-->/g; |
| 10354 | var finish = (result) => { |
| 10355 | ctx.result = result.replace(SCOPE_MARKER_RE, ""); |
| 10356 | if (this.insertHere) { |
| 10357 | ctx.me.__hs_scopes = scopes; |
| 10358 | ctx.me.innerHTML = result; |
| 10359 | } |
| 10360 | if (target) { |
| 10361 | target.__hs_scopes = scopes; |
| 10362 | target.innerHTML = result; |
| 10363 | } |
| 10364 | return runtime2.findNext(this, ctx); |
| 10365 | }; |
| 10366 | if (renderCtx.meta.returned) { |
| 10367 | return finish(buf.join("")); |
| 10368 | } |
| 10369 | renderCtx.meta.resolve = resolve; |
| 10370 | renderCtx.meta.reject = reject; |
| 10371 | return promise.then(() => finish(buf.join(""))); |
| 10372 | } |
| 10373 | }; |
| 10374 | var EscapeExpression = class _EscapeExpression extends Expression { |
| 10375 | static grammarName = "escape"; |
nothing calls this directly
no test coverage detected