1 | htmx.defineExtension('client-side-templates', {
|
2 | transformResponse : function(text, xhr, elt) {
|
3 |
|
4 | var mustacheTemplate = htmx.closest(elt, "[mustache-template]");
|
5 | if (mustacheTemplate) {
|
6 | var data = JSON.parse(text);
|
7 | var templateId = mustacheTemplate.getAttribute('mustache-template');
|
8 | var template = htmx.find("#" + templateId);
|
9 | if (template) {
|
10 | return Mustache.render(template.innerHTML, data);
|
11 | } else {
|
12 | throw "Unknown mustache template: " + templateId;
|
13 | }
|
14 | }
|
15 |
|
16 | var handlebarsTemplate = htmx.closest(elt, "[handlebars-template]");
|
17 | if (handlebarsTemplate) {
|
18 | var data = JSON.parse(text);
|
19 | var templateName = handlebarsTemplate.getAttribute('handlebars-template');
|
20 | return Handlebars.partials[templateName](data);
|
21 | }
|
22 |
|
23 | var nunjucksTemplate = htmx.closest(elt, "[nunjucks-template]");
|
24 | if (nunjucksTemplate) {
|
25 | var data = JSON.parse(text);
|
26 | var templateName = nunjucksTemplate.getAttribute('nunjucks-template');
|
27 | var template = htmx.find('#' + templateName);
|
28 | if (template) {
|
29 | return nunjucks.renderString(template.innerHTML, data);
|
30 | } else {
|
31 | return nunjucks.render(templateName, data);
|
32 | }
|
33 | }
|
34 |
|
35 | return text;
|
36 | }
|
37 | });
|