-
-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Description
Using the documentations readme example
<template name=developer>
<!-- `{nickname}` will bind to `context` property `nickname` -->
<h1>{nickname}</h1>
</template>const
template = Template `developer`
, context = { nickname: 'That Beast' }
template.bind (context)Is failing in current build in Chrome 110
snugsi.js:1 Uncaught TypeError: Failed to execute 'selectNodeContents' on 'Range': parameter 1 is not of type 'Node'.I believe this is because the parameters returned to the Template Literal is actually an array so the typeof == 'string' condition never occurs.
Line 286 in 88242cc
| = typeof template === 'string' |
If you inspect with a breakpoint you can see the parameter actually looks like this
['developer', raw: Array(1)]
This is because it is also being passed the raw strings
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#raw_strings
As pointed out in #222 this can also be solved by changing the syntax to
const
template = Template(`developer`)However this would require updating the readme if you want to require the parens.
Alternatively the logic could be updated to ducktype like
if (t.raw) {
t = document.querySelector("template[name=" + t[0] + "]")
}snuggs