Skip to content

Commit 3db5cd1

Browse files
author
Alexander Vakrilov
authored
Removed NgElement (#962)
* Removed NgElement * fix: TestProject does not compile
1 parent 8f6e2a3 commit 3db5cd1

File tree

5 files changed

+47
-48
lines changed

5 files changed

+47
-48
lines changed

nativescript-angular/element-registry.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,35 @@ import { View } from "tns-core-modules/ui/core/view";
22
import { LayoutBase } from "tns-core-modules/ui/layouts/layout-base";
33

44
export type NgView = (View & ViewExtensions);
5-
export type NgElement = NgView | InvisibleNode;
65

76
export interface ViewExtensions {
87
meta: ViewClassMeta;
98
nodeType: number;
109
nodeName: string;
1110
templateParent: NgView;
12-
nextSibling: NgElement;
13-
firstChild: NgElement;
14-
lastChild: NgElement;
11+
nextSibling: NgView;
12+
firstChild: NgView;
13+
lastChild: NgView;
1514
ngCssClasses: Map<string, boolean>;
1615
}
1716

1817
export interface ElementReference {
19-
previous: NgElement;
20-
next: NgElement;
18+
previous: NgView;
19+
next: NgView;
2120
}
2221

2322
export interface ViewClass {
2423
new (): View;
2524
}
2625

27-
export abstract class InvisibleNode extends View implements ViewExtensions {
26+
export abstract class InvisibleNode extends View implements NgView {
2827
meta: { skipAddToDom: boolean };
2928
nodeType: number;
3029
nodeName: string;
3130
templateParent: NgView;
32-
nextSibling: NgElement;
33-
firstChild: NgElement;
34-
lastChild: NgElement;
31+
nextSibling: NgView;
32+
firstChild: NgView;
33+
lastChild: NgView;
3534
ngCssClasses: Map<string, boolean>;
3635

3736
constructor() {

nativescript-angular/renderer.ts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { profile } from "tns-core-modules/profiling";
1313
import { APP_ROOT_VIEW, DEVICE, getRootPage } from "./platform-providers";
1414
import { isBlank } from "./lang-facade";
1515
import { ViewUtil } from "./view-util";
16-
import { NgView, NgElement, InvisibleNode, ElementReference, isDetachedElement } from "./element-registry";
16+
import { NgView, InvisibleNode, ElementReference, isDetachedElement } from "./element-registry";
1717
import { rendererLog as traceLog } from "./trace";
1818

1919
// CONTENT_ATTR not exported from NativeScript_renderer - we need it for styles application.
@@ -76,7 +76,7 @@ export class NativeScriptRenderer extends Renderer2 {
7676
data: { [key: string]: any } = Object.create(null);
7777

7878
constructor(
79-
private rootView: NgElement,
79+
private rootView: NgView,
8080
private zone: NgZone,
8181
private viewUtil: ViewUtil
8282
) {
@@ -85,20 +85,20 @@ export class NativeScriptRenderer extends Renderer2 {
8585
}
8686

8787
@profile
88-
appendChild(parent: NgElement, newChild: NgElement): void {
88+
appendChild(parent: NgView, newChild: NgView): void {
8989
traceLog(`NativeScriptRenderer.appendChild child: ${newChild} parent: ${parent}`);
9090
this.viewUtil.insertChild(parent, newChild);
9191
}
9292

9393
@profile
94-
insertBefore(parent: NgElement, newChild: NgElement, { previous, next }: ElementReference): void {
94+
insertBefore(parent: NgView, newChild: NgView, { previous, next }: ElementReference): void {
9595
traceLog(`NativeScriptRenderer.insertBefore child: ${newChild} ` +
9696
`parent: ${parent} previous: ${previous} next: ${next}`);
9797
this.viewUtil.insertChild(parent, newChild, previous, next);
9898
}
9999

100100
@profile
101-
removeChild(parent: any, oldChild: NgElement): void {
101+
removeChild(parent: any, oldChild: NgView): void {
102102
traceLog(`NativeScriptRenderer.removeChild child: ${oldChild} parent: ${parent}`);
103103
this.viewUtil.removeChild(parent, oldChild);
104104
}
@@ -116,7 +116,7 @@ export class NativeScriptRenderer extends Renderer2 {
116116
}
117117

118118
@profile
119-
nextSibling(node: NgElement): ElementReference {
119+
nextSibling(node: NgView): ElementReference {
120120
traceLog(`NativeScriptRenderer.nextSibling of ${node} is ${node.nextSibling}`);
121121

122122
let next = node.nextSibling;
@@ -137,7 +137,7 @@ export class NativeScriptRenderer extends Renderer2 {
137137
}
138138

139139
@profile
140-
createElement(name: any, _namespace: string): NgElement {
140+
createElement(name: any, _namespace: string): NgView {
141141
traceLog(`NativeScriptRenderer.createElement: ${name}`);
142142
return this.viewUtil.createView(name);
143143
}
@@ -155,7 +155,7 @@ export class NativeScriptRenderer extends Renderer2 {
155155
}
156156

157157
@profile
158-
projectNodes(parentElement: NgElement, nodes: NgElement[]): void {
158+
projectNodes(parentElement: NgView, nodes: NgView[]): void {
159159
traceLog("NativeScriptRenderer.projectNodes");
160160
nodes.forEach((node) => this.viewUtil.insertChild(parentElement, node));
161161
}
@@ -168,13 +168,13 @@ export class NativeScriptRenderer extends Renderer2 {
168168
}
169169

170170
@profile
171-
setAttribute(view: NgElement, name: string, value: string, namespace?: string) {
171+
setAttribute(view: NgView, name: string, value: string, namespace?: string) {
172172
traceLog(`NativeScriptRenderer.setAttribute ${view} : ${name} = ${value}, namespace: ${namespace}`);
173173
return this.viewUtil.setProperty(view, name, value, namespace);
174174
}
175175

176176
@profile
177-
removeAttribute(_el: NgElement, _name: string): void {
177+
removeAttribute(_el: NgView, _name: string): void {
178178
traceLog(`NativeScriptRenderer.removeAttribute ${_el}: ${_name}`);
179179
}
180180

@@ -185,33 +185,33 @@ export class NativeScriptRenderer extends Renderer2 {
185185
}
186186

187187
@profile
188-
addClass(view: NgElement, name: string): void {
188+
addClass(view: NgView, name: string): void {
189189
traceLog(`NativeScriptRenderer.addClass ${name}`);
190190
this.viewUtil.addClass(view, name);
191191
}
192192

193193
@profile
194-
removeClass(view: NgElement, name: string): void {
194+
removeClass(view: NgView, name: string): void {
195195
traceLog(`NativeScriptRenderer.removeClass ${name}`);
196196
this.viewUtil.removeClass(view, name);
197197
}
198198

199199
@profile
200-
setStyle(view: NgElement, styleName: string, value: any, _flags?: RendererStyleFlags2): void {
200+
setStyle(view: NgView, styleName: string, value: any, _flags?: RendererStyleFlags2): void {
201201
traceLog(`NativeScriptRenderer.setStyle: ${styleName} = ${value}`);
202202
this.viewUtil.setStyle(view, styleName, value);
203203
}
204204

205205
@profile
206-
removeStyle(view: NgElement, styleName: string, _flags?: RendererStyleFlags2): void {
206+
removeStyle(view: NgView, styleName: string, _flags?: RendererStyleFlags2): void {
207207
traceLog("NativeScriptRenderer.removeStyle: ${styleName}");
208208
this.viewUtil.removeStyle(view, styleName);
209209
}
210210

211211
// Used only in debug mode to serialize property changes to comment nodes,
212212
// such as <template> placeholders.
213213
@profile
214-
setBindingDebugInfo(renderElement: NgElement, propertyName: string, propertyValue: string): void {
214+
setBindingDebugInfo(renderElement: NgView, propertyName: string, propertyValue: string): void {
215215
traceLog("NativeScriptRenderer.setBindingDebugInfo: " + renderElement + ", " +
216216
propertyName + " = " + propertyValue);
217217
}
@@ -222,7 +222,7 @@ export class NativeScriptRenderer extends Renderer2 {
222222
}
223223

224224
@profile
225-
invokeElementMethod(_renderElement: NgElement, methodName: string, args: Array<any>) {
225+
invokeElementMethod(_renderElement: NgView, methodName: string, args: Array<any>) {
226226
traceLog("NativeScriptRenderer.invokeElementMethod " + methodName + " " + args);
227227
}
228228

@@ -272,15 +272,15 @@ class EmulatedRenderer extends NativeScriptRenderer {
272272
this.addStyles(component.styles, componentId);
273273
}
274274

275-
applyToHost(view: NgElement) {
275+
applyToHost(view: NgView) {
276276
super.setAttribute(view, this.hostAttr, "");
277277
}
278278

279-
appendChild(parent: any, newChild: NgElement): void {
279+
appendChild(parent: any, newChild: NgView): void {
280280
super.appendChild(parent, newChild);
281281
}
282282

283-
createElement(parent: any, name: string): NgElement {
283+
createElement(parent: any, name: string): NgView {
284284
const view = super.createElement(parent, name);
285285

286286
// Set an attribute to the view to scope component-specific css.

nativescript-angular/view-util.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { LayoutBase } from "tns-core-modules/ui/layouts/layout-base";
66
import {
77
CommentNode,
88
InvisibleNode,
9-
NgElement,
109
NgView,
1110
TextNode,
1211
ViewExtensions,
@@ -55,9 +54,9 @@ export class ViewUtil {
5554

5655
public insertChild(
5756
parent: NgView,
58-
child: NgElement,
59-
previous: NgElement = parent.lastChild,
60-
next?: NgElement
57+
child: NgView,
58+
previous: NgView = parent.lastChild,
59+
next?: NgView
6160
) {
6261
if (!parent) {
6362
return;
@@ -75,10 +74,10 @@ export class ViewUtil {
7574
}
7675

7776
private addToQueue(
78-
parent: NgElement,
79-
child: NgElement,
80-
previous: NgElement,
81-
next: NgElement
77+
parent: NgView,
78+
child: NgView,
79+
previous: NgView,
80+
next: NgView
8281
): void {
8382
if (previous) {
8483
previous.nextSibling = child;
@@ -93,7 +92,7 @@ export class ViewUtil {
9392
}
9493
}
9594

96-
private appendToQueue(parent: NgElement, view: NgElement) {
95+
private appendToQueue(parent: NgView, view: NgView) {
9796
traceLog(`ViewUtil.appendToQueue parent: ${parent} view: ${view}`);
9897
if (parent.lastChild) {
9998
parent.lastChild.nextSibling = view;
@@ -131,7 +130,7 @@ export class ViewUtil {
131130
}
132131
}
133132

134-
public removeChild(parent: NgView, child: NgElement) {
133+
public removeChild(parent: NgView, child: NgView) {
135134
if (!parent) {
136135
return;
137136
}
@@ -183,7 +182,8 @@ export class ViewUtil {
183182
}
184183
}
185184

186-
private findPreviousElement(parent: NgLayoutBase, child: NgView, elementIndex: number): NgElement {
185+
// NOTE: This one is O(n) - use carefully
186+
private findPreviousElement(parent: NgLayoutBase, child: NgView, elementIndex: number): NgView {
187187
const previousVisual = this.getPreviousVisualElement(parent, elementIndex);
188188
let previous = previousVisual || parent.firstChild;
189189

@@ -197,12 +197,13 @@ export class ViewUtil {
197197
return previous;
198198
}
199199

200-
private getPreviousVisualElement(parent: NgLayoutBase, elementIndex: number): NgElement {
200+
private getPreviousVisualElement(parent: NgLayoutBase, elementIndex: number): NgView {
201201
if (elementIndex > 0) {
202-
return parent.getChildAt(elementIndex - 1) as NgElement;
202+
return parent.getChildAt(elementIndex - 1) as NgView;
203203
}
204204
}
205205

206+
// NOTE: This one is O(n) - use carefully
206207
public getChildIndex(parent: any, child: NgView) {
207208
if (isLayout(parent)) {
208209
return parent.getChildIndex(child);

tests/app/tests/ns-location-strategy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class FakeFrame extends View implements Frame {
1919
}
2020
}
2121

22-
navigate(entry: NavigationEntry) { }
22+
navigate(entry: any) { }
2323

2424
constructor(private backCB?: () => void) {
2525
super();

tests/app/tests/property-sets.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,19 @@ import {
66
NgView,
77
ViewExtensions,
88
ViewClassMeta,
9-
NgElement,
109
} from "nativescript-angular/element-registry";
1110
import {Red} from "color/known-colors";
1211
import {device, platformNames} from "platform";
1312
import {createDevice} from "./test-utils";
1413

15-
class TestView extends View implements ViewExtensions {
14+
class TestView extends View implements NgView {
1615
public meta: ViewClassMeta = { skipAddToDom: false };
1716
public nodeType: number = 1;
1817
public nodeName: string = "TestView";
1918
public templateParent: NgView = null;
20-
public nextSibling: NgElement;
21-
public firstChild: NgElement;
22-
public lastChild: NgElement;
19+
public nextSibling: NgView;
20+
public firstChild: NgView;
21+
public lastChild: NgView;
2322
public ngCssClasses: Map<string, boolean> = new Map<string, boolean>();
2423

2524
public stringValue: string = "";

0 commit comments

Comments
 (0)