Skip to content

Commit 24161e7

Browse files
committed
refactor: move NgView, NgElement and similar to separate module
1 parent 7a86de7 commit 24161e7

16 files changed

Lines changed: 104 additions & 90 deletions

File tree

nativescript-angular/animations/animation-driver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { AnimationPlayer } from "@angular/animations";
2-
import { NgView } from "../element-registry";
32

3+
import { NgView } from "../element-types";
44
import { NativeScriptAnimationPlayer } from "./animation-player";
55
import { Keyframe } from "./utils";
66

nativescript-angular/animations/animation-engine.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ɵDomAnimationEngine as DomAnimationEngine } from "@angular/animations/browser";
22
import { AnimationEvent, AnimationPlayer } from "@angular/animations";
33

4-
import { NgView } from "../element-registry";
4+
import { NgView } from "../element-types";
55
import {
66
copyArray,
77
cssClasses,

nativescript-angular/animations/animation-player.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
KeyframeAnimationInfo,
55
} from "tns-core-modules/ui/animation/keyframe-animation";
66

7-
import { NgView } from "../element-registry";
7+
import { NgView } from "../element-types";
88
import { Keyframe, getAnimationCurve, parseAnimationKeyframe } from "./utils";
99

1010
export class NativeScriptAnimationPlayer implements AnimationPlayer {

nativescript-angular/animations/dom-utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from "@angular/animations";
88
import { unsetValue } from "tns-core-modules/ui/core/view";
99

10-
import { NgView } from "../element-registry";
10+
import { NgView } from "../element-types";
1111

1212
// overriden to use the default 'unsetValue'
1313
// instead of empty string ''

nativescript-angular/directives/action-bar.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { Directive, Component, ElementRef, Optional, OnDestroy } from "@angular/core";
22
import { ActionItem, ActionBar, NavigationButton } from "tns-core-modules/ui/action-bar";
3-
import { isBlank } from "../lang-facade";
43
import { Page } from "tns-core-modules/ui/page";
54
import { View } from "tns-core-modules/ui/core/view";
6-
import { registerElement, ViewClassMeta, NgView } from "../element-registry";
5+
6+
import { isBlank } from "../lang-facade";
7+
import { registerElement } from "../element-registry";
8+
import { ViewClassMeta, NgView } from "../element-types";
79

810
const actionBarMeta: ViewClassMeta = {
911
skipAddToDom: true,

nativescript-angular/directives/list-view-comp.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import { View, KeyedTemplate } from "tns-core-modules/ui/core/view";
2424
import { ObservableArray } from "tns-core-modules/data/observable-array";
2525
import { LayoutBase } from "tns-core-modules/ui/layouts/layout-base";
2626

27-
import { DetachedElement } from "../element-registry";
27+
import { CommentNode } from "../element-types";
2828
import { isListLikeIterable } from "../collection-facade";
2929
import { listViewLog, listViewError } from "../trace";
3030

@@ -214,7 +214,7 @@ export class ListViewComponent implements DoCheck, OnDestroy, AfterContentInit {
214214
}
215215

216216
function getSingleViewRecursive(nodes: Array<any>, nestLevel: number): View {
217-
const actualNodes = nodes.filter(node => !(node instanceof DetachedElement));
217+
const actualNodes = nodes.filter(node => !(node instanceof CommentNode));
218218

219219
if (actualNodes.length === 0) {
220220
throw new Error(`No suitable views found in list template! ` +

nativescript-angular/directives/tab-view.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
} from "@angular/core";
1010
import { TabView, TabViewItem } from "tns-core-modules/ui/tab-view";
1111

12-
import { DetachedElement } from "../element-registry";
12+
import { CommentNode } from "../element-types";
1313
import { convertToInt } from "../common/utils";
1414
import { rendererLog } from "../trace";
1515
import { isBlank } from "../lang-facade";
@@ -106,7 +106,7 @@ export class TabViewItemDirective implements OnInit {
106106
const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
107107
// Filter out text nodes and comments
108108
const realViews = viewRef.rootNodes.filter(node =>
109-
!(node instanceof DetachedElement));
109+
!(node instanceof CommentNode));
110110

111111
if (realViews.length > 0) {
112112
this.item.view = realViews[0];

nativescript-angular/element-registry.ts

Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,10 @@
1-
import { View } from "tns-core-modules/ui/core/view";
1+
import { ViewClass, ViewClassMeta } from "./element-types";
22

33
export type ViewResolver = () => ViewClass;
4-
export type NgView = (View & ViewExtensions);
5-
export type NgElement = NgView | DetachedElement;
6-
export interface ViewClassMeta {
7-
skipAddToDom?: boolean;
8-
insertChild?: (parent: NgView, child: NgView, atIndex: number) => void;
9-
removeChild?: (parent: NgView, child: NgView) => void;
10-
}
11-
12-
export interface ViewExtensions {
13-
nodeType: number;
14-
nodeName: string;
15-
templateParent: NgView;
16-
ngCssClasses: Map<string, boolean>;
17-
meta: ViewClassMeta;
18-
}
19-
20-
export interface ViewClass {
21-
new (): View;
22-
}
23-
24-
export class DetachedElement {
25-
templateParent: NgView;
26-
meta: { skipAddToDom: true };
27-
}
28-
29-
const defaultViewMeta: ViewClassMeta = {
30-
skipAddToDom: false,
31-
};
324

335
const elementMap = new Map<string, { resolver: ViewResolver, meta?: ViewClassMeta }>();
346
const camelCaseSplit = /([a-z0-9])([A-Z])/g;
7+
const defaultViewMeta: ViewClassMeta = { skipAddToDom: false };
358

369
export function registerElement(
3710
elementName: string,
@@ -54,6 +27,7 @@ export function getViewClass(elementName: string): ViewClass {
5427
if (!entry) {
5528
throw new TypeError(`No known component for element ${elementName}.`);
5629
}
30+
5731
try {
5832
return entry.resolver();
5933
} catch (e) {
@@ -62,12 +36,8 @@ export function getViewClass(elementName: string): ViewClass {
6236
}
6337

6438
export function getViewMeta(nodeName: string): ViewClassMeta {
65-
let meta = defaultViewMeta;
6639
const entry = elementMap.get(nodeName) || elementMap.get(nodeName.toLowerCase());
67-
if (entry && entry.meta) {
68-
meta = entry.meta;
69-
}
70-
return meta;
40+
return (entry && entry.meta) || defaultViewMeta;
7141
}
7242

7343
export function isKnownView(elementName: string): boolean {
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { View } from "tns-core-modules/ui/core/view";
2+
3+
export type NgView = (View & ViewExtensions);
4+
export type NgElement = NgView | DetachedElement;
5+
6+
export class DetachedElement {
7+
meta: { skipAddToDom: true };
8+
}
9+
10+
export interface ViewExtensions {
11+
nodeType: number;
12+
nodeName: string;
13+
templateParent: NgView;
14+
ngCssClasses: Map<string, boolean>;
15+
meta: ViewClassMeta;
16+
}
17+
18+
export interface ViewClass {
19+
new (): View;
20+
}
21+
22+
// used for creating comments and text nodes in the renderer
23+
export class CommentNode extends DetachedElement {
24+
templateParent: NgView;
25+
}
26+
27+
export interface ViewClassMeta {
28+
skipAddToDom?: boolean;
29+
insertChild?: (parent: NgView, child: NgView, atIndex: number) => void;
30+
removeChild?: (parent: NgView, child: NgView) => void;
31+
}

nativescript-angular/index.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import "application";
1+
import "tns-core-modules/application";
22

33
export * from "./platform-common";
44
export * from "./platform";
@@ -15,13 +15,18 @@ export * from "./modal-dialog";
1515
export * from "./renderer";
1616
export * from "./view-util";
1717
export * from "./resource-loader";
18+
1819
export {
1920
ViewResolver,
20-
ViewClass,
21-
ViewClassMeta,
2221
registerElement,
2322
getViewClass,
2423
getViewMeta,
2524
isKnownView,
2625
} from "./element-registry";
26+
27+
export {
28+
ViewClass,
29+
ViewClassMeta,
30+
} from "./element-types";
31+
2732
export * from "./value-accessors/base-value-accessor";

0 commit comments

Comments
 (0)