diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-06-12 14:51:08 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-06-12 14:51:08 -0300 |
commit | f12890facba502805f03a64c76f386c4531abbcc (patch) | |
tree | 2709849226850f0781098bf4e1c2d467ebdb3266 /src/util | |
parent | c8fabb4ad0e13758c13d58c86b9859c63ff127b0 (diff) |
html: new Stationery class for instantiating Templates
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/html.js | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/util/html.js b/src/util/html.js index f5c1dee0..b75820e8 100644 --- a/src/util/html.js +++ b/src/util/html.js @@ -489,7 +489,10 @@ export class Template { #slotValues = {}; constructor(description) { - Template.validateDescription(description); + if (!description[Stationery.validated]) { + Template.validateDescription(description); + } + this.#description = description; } @@ -779,3 +782,23 @@ export class Template { return this.content.toString(); } } + +export function stationery(description) { + return new Stationery(description); +} + +export class Stationery { + #templateDescription = null; + + static validated = Symbol('Stationery.validated'); + + constructor(templateDescription) { + Template.validateDescription(templateDescription); + templateDescription[Stationery.validated] = true; + this.#templateDescription = templateDescription; + } + + template() { + return new Template(this.#templateDescription); + } +} |