1
1
import { Inject , Injectable } from 'angular2/src/core/di' ;
2
+ import { RenderComponentTemplate } from 'angular2/src/core/render/api' ;
2
3
import { DOCUMENT } from 'angular2/src/core/render/dom/dom_tokens' ;
3
4
import { createRenderView , NodeFactory } from 'angular2/src/core/render/view_factory' ;
4
5
import {
@@ -11,14 +12,14 @@ import {
11
12
RenderViewWithFragments ,
12
13
RenderTemplateCmd
13
14
} from 'angular2/src/core/render/api' ;
14
- import { isBlank } from 'angular2/src/core/ facade/lang' ;
15
+ import { isBlank } from 'angular2/src/facade/lang' ;
15
16
import {
16
17
DefaultProtoViewRef ,
17
18
DefaultRenderView ,
18
19
DefaultRenderFragmentRef
19
20
} from 'angular2/src/core/render/view' ;
20
21
import { DOM } from 'angular2/src/core/dom/dom_adapter' ;
21
- import { ViewNode , DummyViewNode } from 'nativescript-angular /view_node' ;
22
+ import { ViewNode , DummyViewNode } from '. /view_node' ;
22
23
23
24
//var console = {log: function(msg) {}}
24
25
@@ -32,9 +33,9 @@ export class NativeScriptRenderer extends Renderer implements NodeFactory<ViewNo
32
33
this . _document = document ;
33
34
}
34
35
35
- public createProtoView ( cmds : RenderTemplateCmd [ ] ) : RenderProtoViewRef {
36
+ public createProtoView ( componentTemplateId : string , cmds : RenderTemplateCmd [ ] ) : RenderProtoViewRef {
36
37
console . log ( 'NativeScriptRenderer.createProtoView: ' + cmds ) ;
37
- return new DefaultProtoViewRef ( cmds ) ;
38
+ return new DefaultProtoViewRef ( this . _componentTemplates . get ( componentTemplateId ) , cmds ) ;
38
39
}
39
40
40
41
public createRootHostView (
@@ -59,7 +60,8 @@ export class NativeScriptRenderer extends Renderer implements NodeFactory<ViewNo
59
60
}
60
61
61
62
private _createView ( protoViewRef : RenderProtoViewRef , inplaceElement : HTMLElement ) : RenderViewWithFragments {
62
- var view = createRenderView ( ( < DefaultProtoViewRef > protoViewRef ) . cmds , inplaceElement , this ) ;
63
+ var dpvr = < DefaultProtoViewRef > protoViewRef ;
64
+ var view = createRenderView ( dpvr . template , dpvr . cmds , inplaceElement , this ) ;
63
65
return new RenderViewWithFragments ( view , view . fragments ) ;
64
66
}
65
67
@@ -87,9 +89,8 @@ export class NativeScriptRenderer extends Renderer implements NodeFactory<ViewNo
87
89
public attachFragmentAfterElement ( location : RenderElementRef , fragmentRef : RenderFragmentRef ) {
88
90
console . log ( "NativeScriptRenderer.attachFragmentAfterElement" ) ;
89
91
90
- var parentView = resolveInternalDomView ( location . renderView ) ;
91
- var element = parentView . boundElements [ location . boundElementIndex ] ;
92
- var nodes = resolveInternalDomFragment ( fragmentRef ) ;
92
+ let element = resolveBoundNode ( location ) ;
93
+ let nodes = resolveInternalDomFragment ( fragmentRef ) ;
93
94
this . attachFragmentAfter ( element , nodes ) ;
94
95
}
95
96
@@ -127,8 +128,7 @@ export class NativeScriptRenderer extends Renderer implements NodeFactory<ViewNo
127
128
setElementProperty ( location : RenderElementRef , propertyName : string , propertyValue : any ) {
128
129
console . log ( "NativeScriptRenderer.setElementProperty " + propertyName + " = " + propertyValue ) ;
129
130
130
- var view = resolveInternalDomView ( location . renderView ) ;
131
- var node = view . boundElements [ location . boundElementIndex ] ;
131
+ let node = resolveBoundNode ( location ) ;
132
132
node . setProperty ( propertyName , propertyValue ) ;
133
133
}
134
134
@@ -140,8 +140,7 @@ export class NativeScriptRenderer extends Renderer implements NodeFactory<ViewNo
140
140
setElementClass ( location : RenderElementRef , className : string , isAdd : boolean ) : void {
141
141
console . log ( "NativeScriptRenderer.setElementClass " + className + " - " + isAdd ) ;
142
142
143
- var view = resolveInternalDomView ( location . renderView ) ;
144
- var node = view . boundElements [ location . boundElementIndex ] ;
143
+ let node = resolveBoundNode ( location ) ;
145
144
if ( isAdd ) {
146
145
node . addClass ( className ) ;
147
146
} else {
@@ -150,16 +149,14 @@ export class NativeScriptRenderer extends Renderer implements NodeFactory<ViewNo
150
149
}
151
150
152
151
setElementStyle ( location : RenderElementRef , styleName : string , styleValue : string ) : void {
153
- var view = resolveInternalDomView ( location . renderView ) ;
154
- var node = view . boundElements [ location . boundElementIndex ] ;
152
+ let node = resolveBoundNode ( location ) ;
155
153
node . setStyleProperty ( styleName , styleValue ) ;
156
154
}
157
155
158
156
getNativeElementSync ( location : RenderElementRef ) : any {
159
157
console . log ( "NativeScriptRenderer.getNativeElementSync" ) ;
160
158
161
- var view = resolveInternalDomView ( location . renderView ) ;
162
- var node = view . boundElements [ location . boundElementIndex ] ;
159
+ let node = resolveBoundNode ( location ) ;
163
160
return node . nativeView ;
164
161
}
165
162
@@ -180,21 +177,16 @@ export class NativeScriptRenderer extends Renderer implements NodeFactory<ViewNo
180
177
view . eventDispatcher = dispatcher ;
181
178
}
182
179
183
- private _componentCmds : Map < number , RenderTemplateCmd [ ] > = new Map < number , RenderTemplateCmd [ ] > ( ) ;
180
+ private _componentTemplates : Map < string , RenderComponentTemplate > = new Map < string , RenderComponentTemplate > ( ) ;
184
181
185
- public registerComponentTemplate (
186
- templateId : number ,
187
- commands : RenderTemplateCmd [ ] ,
188
- styles : string [ ] ,
189
- nativeShadow : boolean
190
- ) {
191
- console . log ( 'NativeScriptRenderer.registerComponentTemplate: ' + templateId ) ;
192
- this . _componentCmds . set ( templateId , commands ) ;
182
+ public registerComponentTemplate ( template : RenderComponentTemplate ) {
183
+ console . log ( 'NativeScriptRenderer.registerComponentTemplate: ' + template . id ) ;
184
+ this . _componentTemplates . set ( template . id , template ) ;
193
185
}
194
186
195
- public resolveComponentTemplate ( templateId : number ) : RenderTemplateCmd [ ] {
187
+ public resolveComponentTemplate ( templateId : string ) : RenderComponentTemplate {
196
188
console . log ( 'NativeScriptRenderer.resolveComponentTemplate: ' + templateId ) ;
197
- return this . _componentCmds . get ( templateId ) ;
189
+ return this . _componentTemplates . get ( templateId ) ;
198
190
}
199
191
200
192
public createRootContentInsertionPoint ( ) : ViewNode {
@@ -217,7 +209,7 @@ export class NativeScriptRenderer extends Renderer implements NodeFactory<ViewNo
217
209
existing . setAttributeValues ( attrNameAndValues ) ;
218
210
}
219
211
220
- public createShadowRoot ( host : ViewNode , templateId : number ) : ViewNode {
212
+ public createShadowRoot ( host : ViewNode , templateId : string ) : ViewNode {
221
213
throw new Error ( 'Not implemented.' ) ;
222
214
}
223
215
@@ -246,6 +238,13 @@ function resolveInternalDomView(viewRef: RenderViewRef): DefaultRenderView<ViewN
246
238
return < DefaultRenderView < ViewNode > > viewRef ;
247
239
}
248
240
241
+ function resolveBoundNode ( elementRef : RenderElementRef ) : ViewNode {
242
+ let view = resolveInternalDomView ( elementRef . renderView ) ;
243
+ //Using an Angular internal API to get the index of the bound element.
244
+ let internalBoundIndex = ( < any > elementRef ) . boundElementIndex ;
245
+ return view . boundElements [ internalBoundIndex ]
246
+ }
247
+
249
248
function resolveInternalDomFragment ( fragmentRef : RenderFragmentRef ) : ViewNode [ ] {
250
249
return ( < DefaultRenderFragmentRef < ViewNode > > fragmentRef ) . nodes ;
251
250
}
0 commit comments