@@ -14,34 +14,52 @@ function createRenderer(component, template, TemplatizerClass = Templatizer) {
1414 } ;
1515
1616 template . __templatizer = templatizer ;
17+ renderer . __templatized = true ;
1718
1819 return renderer ;
1920}
2021
22+ function assignRenderer ( component , rendererName , renderer ) {
23+ const oldRenderer = component [ rendererName ] ;
24+
25+ if ( oldRenderer && ! oldRenderer . __templatized ) {
26+ const tag = component . localName ;
27+
28+ throw new Error ( `Cannot use both a template and a renderer for <${ tag } />.` ) ;
29+ }
30+
31+ component [ rendererName ] = renderer ;
32+ }
33+
2134function processGridTemplate ( grid , template ) {
2235 if ( template . matches ( '.row-details' ) ) {
23- grid . rowDetailsRenderer = createRenderer ( grid , template , GridTemplatizer ) ;
36+ const renderer = createRenderer ( grid , template , GridTemplatizer ) ;
37+ assignRenderer ( grid , 'rowDetailsRenderer' , renderer ) ;
2438 return ;
2539 }
2640}
2741
2842function processGridColumnTemplate ( column , template ) {
2943 if ( template . matches ( '.header' ) ) {
30- column . headerRenderer = createRenderer ( column , template ) ;
44+ const renderer = createRenderer ( column , template ) ;
45+ assignRenderer ( column , 'headerRenderer' , renderer ) ;
3146 return ;
3247 }
3348
3449 if ( template . matches ( '.footer' ) ) {
35- column . footerRenderer = createRenderer ( column , template ) ;
50+ const renderer = createRenderer ( column , template ) ;
51+ assignRenderer ( column , 'footerRenderer' , renderer ) ;
3652 return ;
3753 }
3854
3955 if ( template . matches ( '.editor' ) ) {
40- column . editModeRenderer = createRenderer ( column , template , GridTemplatizer ) ;
56+ const renderer = createRenderer ( column , template , GridTemplatizer ) ;
57+ assignRenderer ( column , 'editModeRenderer' , renderer ) ;
4158 return ;
4259 }
4360
44- column . renderer = createRenderer ( column , template , GridTemplatizer ) ;
61+ const renderer = createRenderer ( column , template , GridTemplatizer ) ;
62+ assignRenderer ( column , 'renderer' , renderer ) ;
4563}
4664
4765function processTemplate ( component , template ) {
@@ -55,7 +73,8 @@ function processTemplate(component, template) {
5573 return ;
5674 }
5775
58- component . renderer = createRenderer ( component , template ) ;
76+ const renderer = createRenderer ( component , template ) ;
77+ assignRenderer ( component , 'renderer' , renderer ) ;
5978}
6079
6180function processTemplates ( component ) {
0 commit comments