@@ -28,15 +28,27 @@ htmx.defineExtension('client-side-templates', {
2828 var handlebarsTemplate = htmx . closest ( elt , "[handlebars-template]" ) ;
2929 if ( handlebarsTemplate ) {
3030 var data = JSON . parse ( text ) ;
31- var templateName = handlebarsTemplate . getAttribute ( 'handlebars-template' ) ;
32- return Handlebars . partials [ templateName ] ( data ) ;
31+ var templateId = handlebarsTemplate . getAttribute ( 'handlebars-template' ) ;
32+ var templateElement = htmx . find ( '#' + templateId ) . innerHTML ;
33+ var renderTemplate = Handlebars . compile ( templateElement ) ;
34+ if ( renderTemplate ) {
35+ return renderTemplate ( data ) ;
36+ } else {
37+ throw "Unknown handlebars template: " + templateId ;
38+ }
3339 }
3440
3541 var handlebarsArrayTemplate = htmx . closest ( elt , "[handlebars-array-template]" ) ;
3642 if ( handlebarsArrayTemplate ) {
3743 var data = JSON . parse ( text ) ;
38- var templateName = handlebarsArrayTemplate . getAttribute ( 'handlebars-array-template' ) ;
39- return Handlebars . partials [ templateName ] ( { "data" : data } ) ;
44+ var templateId = handlebarsArrayTemplate . getAttribute ( 'handlebars-array-template' ) ;
45+ var templateElement = htmx . find ( '#' + templateId ) . innerHTML ;
46+ var renderTemplate = Handlebars . compile ( templateElement ) ;
47+ if ( renderTemplate ) {
48+ return renderTemplate ( data ) ;
49+ } else {
50+ throw "Unknown handlebars template: " + templateId ;
51+ }
4052 }
4153
4254 var nunjucksTemplate = htmx . closest ( elt , "[nunjucks-template]" ) ;
@@ -50,7 +62,7 @@ htmx.defineExtension('client-side-templates', {
5062 return nunjucks . render ( templateName , data ) ;
5163 }
5264 }
53-
65+
5466 var xsltTemplate = htmx . closest ( elt , "[xslt-template]" ) ;
5567 if ( xsltTemplate ) {
5668 var templateId = xsltTemplate . getAttribute ( 'xslt-template' ) ;
0 commit comments