UNPKG

1.43 kBJavaScriptView Raw
1htmx.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});