chore: add more type annotations
This commit is contained in:
parent
e23004df52
commit
f7f06c5ad4
|
@ -6,7 +6,7 @@ export class AST {
|
||||||
throw new BaseException("Not supported");
|
throw new BaseException("Not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
get isAssignable() {
|
get isAssignable():boolean {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ export class AccessMember extends AST {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get isAssignable() {
|
get isAssignable():boolean {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ export class KeyedAccess extends AST {
|
||||||
return obj[key];
|
return obj[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
get isAssignable() {
|
get isAssignable():boolean {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,7 +397,7 @@ export class ASTWithSource extends AST {
|
||||||
return this.ast.eval(context, locals);
|
return this.ast.eval(context, locals);
|
||||||
}
|
}
|
||||||
|
|
||||||
get isAssignable() {
|
get isAssignable():boolean {
|
||||||
return this.ast.isAssignable;
|
return this.ast.isAssignable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ export class Locals {
|
||||||
throw new BaseException(`Cannot find '${name}'`);
|
throw new BaseException(`Cannot find '${name}'`);
|
||||||
}
|
}
|
||||||
|
|
||||||
set(name:string, value) {
|
set(name:string, value):void {
|
||||||
// TODO(rado): consider removing this check if we can guarantee this is not
|
// TODO(rado): consider removing this check if we can guarantee this is not
|
||||||
// exposed to the public API.
|
// exposed to the public API.
|
||||||
// TODO: vsavkin maybe it should check only the local map
|
// TODO: vsavkin maybe it should check only the local map
|
||||||
|
@ -45,7 +45,7 @@ export class Locals {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clearValues() {
|
clearValues():void {
|
||||||
MapWrapper.clearValues(this.current);
|
MapWrapper.clearValues(this.current);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -38,14 +38,14 @@ export class View {
|
||||||
*
|
*
|
||||||
* NOTE: either `templateURL` or `template` should be used, but not both.
|
* NOTE: either `templateURL` or `template` should be used, but not both.
|
||||||
*/
|
*/
|
||||||
templateUrl:any; //string;
|
templateUrl:string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specifies an inline template for an angular component.
|
* Specifies an inline template for an angular component.
|
||||||
*
|
*
|
||||||
* NOTE: either `templateURL` or `template` should be used, but not both.
|
* NOTE: either `templateURL` or `template` should be used, but not both.
|
||||||
*/
|
*/
|
||||||
template:any; //string;
|
template:string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specifies a list of directives that can be used within a template.
|
* Specifies a list of directives that can be used within a template.
|
||||||
|
@ -69,7 +69,7 @@ export class View {
|
||||||
* }
|
* }
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
directives:any; //List<Type>;
|
directives:List<Type>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specify a custom renderer for this View.
|
* Specify a custom renderer for this View.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import {OpaqueToken} from 'angular2/di';
|
import {OpaqueToken} from 'angular2/di';
|
||||||
|
|
||||||
export var appComponentRefToken = new OpaqueToken('ComponentRef');
|
export var appComponentRefToken:OpaqueToken = new OpaqueToken('ComponentRef');
|
||||||
export var appChangeDetectorToken = new OpaqueToken('AppChangeDetector');
|
export var appChangeDetectorToken:OpaqueToken = new OpaqueToken('AppChangeDetector');
|
||||||
export var appElementToken = new OpaqueToken('AppElement');
|
export var appElementToken:OpaqueToken = new OpaqueToken('AppElement');
|
||||||
export var appComponentAnnotatedTypeToken = new OpaqueToken('AppComponentAnnotatedType');
|
export var appComponentAnnotatedTypeToken:OpaqueToken = new OpaqueToken('AppComponentAnnotatedType');
|
||||||
export var appDocumentToken = new OpaqueToken('AppDocument');
|
export var appDocumentToken:OpaqueToken = new OpaqueToken('AppDocument');
|
||||||
|
|
|
@ -26,7 +26,7 @@ export class CompilerCache {
|
||||||
this._cache = MapWrapper.create();
|
this._cache = MapWrapper.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
set(component:Type, protoView:AppProtoView) {
|
set(component:Type, protoView:AppProtoView):void {
|
||||||
MapWrapper.set(this._cache, component, protoView);
|
MapWrapper.set(this._cache, component, protoView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ export class CompilerCache {
|
||||||
return normalizeBlank(result);
|
return normalizeBlank(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
clear() {
|
clear():void {
|
||||||
MapWrapper.clear(this._cache);
|
MapWrapper.clear(this._cache);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ export class Compiler {
|
||||||
this._protoViewFactory = protoViewFactory;
|
this._protoViewFactory = protoViewFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
_bindDirective(directiveTypeOrBinding) {
|
_bindDirective(directiveTypeOrBinding):DirectiveBinding {
|
||||||
if (directiveTypeOrBinding instanceof DirectiveBinding) {
|
if (directiveTypeOrBinding instanceof DirectiveBinding) {
|
||||||
return directiveTypeOrBinding;
|
return directiveTypeOrBinding;
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ export class Compiler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_buildRenderTemplate(component, view, directives) {
|
_buildRenderTemplate(component, view, directives): renderApi.ViewDefinition {
|
||||||
var componentUrl = this._urlResolver.resolve(
|
var componentUrl = this._urlResolver.resolve(
|
||||||
this._appUrl, this._componentUrlMapper.getUrl(component)
|
this._appUrl, this._componentUrlMapper.getUrl(component)
|
||||||
);
|
);
|
||||||
|
@ -211,7 +211,7 @@ export class Compiler {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static buildRenderDirective(directiveBinding) {
|
static buildRenderDirective(directiveBinding):renderApi.DirectiveMetadata {
|
||||||
var ann = directiveBinding.annotation;
|
var ann = directiveBinding.annotation;
|
||||||
var renderType;
|
var renderType;
|
||||||
var compileChildren = true;
|
var compileChildren = true;
|
||||||
|
@ -254,7 +254,7 @@ export class Compiler {
|
||||||
return directives;
|
return directives;
|
||||||
}
|
}
|
||||||
|
|
||||||
_flattenList(tree:List<any>, out:List<Type>) {
|
_flattenList(tree:List<any>, out:List<Type>):void {
|
||||||
for (var i = 0; i < tree.length; i++) {
|
for (var i = 0; i < tree.length; i++) {
|
||||||
var item = tree[i];
|
var item = tree[i];
|
||||||
if (ListWrapper.isList(item)) {
|
if (ListWrapper.isList(item)) {
|
||||||
|
|
|
@ -123,7 +123,7 @@ export class DynamicComponentLoader {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Asserts that the type being dynamically instantiated is a Component. */
|
/** Asserts that the type being dynamically instantiated is a Component. */
|
||||||
_assertTypeIsComponent(type:Type) {
|
_assertTypeIsComponent(type:Type):void {
|
||||||
var annotation = this._directiveMetadataReader.read(type).annotation;
|
var annotation = this._directiveMetadataReader.read(type).annotation;
|
||||||
if (!(annotation instanceof Component)) {
|
if (!(annotation instanceof Component)) {
|
||||||
throw new BaseException(`Could not load '${stringify(type)}' because it is not a component.`);
|
throw new BaseException(`Could not load '${stringify(type)}' because it is not a component.`);
|
||||||
|
|
|
@ -59,7 +59,7 @@ class StaticKeys {
|
||||||
this.elementRefId = Key.get(ElementRef).id;
|
this.elementRefId = Key.get(ElementRef).id;
|
||||||
}
|
}
|
||||||
|
|
||||||
static instance() {
|
static instance():StaticKeys {
|
||||||
if (isBlank(_staticKeys)) _staticKeys = new StaticKeys();
|
if (isBlank(_staticKeys)) _staticKeys = new StaticKeys();
|
||||||
return _staticKeys;
|
return _staticKeys;
|
||||||
}
|
}
|
||||||
|
@ -77,17 +77,17 @@ export class TreeNode {
|
||||||
if (isPresent(parent)) parent.addChild(this);
|
if (isPresent(parent)) parent.addChild(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
_assertConsistency() {
|
_assertConsistency():void {
|
||||||
this._assertHeadBeforeTail();
|
this._assertHeadBeforeTail();
|
||||||
this._assertTailReachable();
|
this._assertTailReachable();
|
||||||
this._assertPresentInParentList();
|
this._assertPresentInParentList();
|
||||||
}
|
}
|
||||||
|
|
||||||
_assertHeadBeforeTail() {
|
_assertHeadBeforeTail():void {
|
||||||
if (isBlank(this._tail) && isPresent(this._head)) throw new BaseException('null tail but non-null head');
|
if (isBlank(this._tail) && isPresent(this._head)) throw new BaseException('null tail but non-null head');
|
||||||
}
|
}
|
||||||
|
|
||||||
_assertTailReachable() {
|
_assertTailReachable():void {
|
||||||
if (isBlank(this._tail)) return;
|
if (isBlank(this._tail)) return;
|
||||||
if (isPresent(this._tail._next)) throw new BaseException('node after tail');
|
if (isPresent(this._tail._next)) throw new BaseException('node after tail');
|
||||||
var p = this._head;
|
var p = this._head;
|
||||||
|
@ -95,7 +95,7 @@ export class TreeNode {
|
||||||
if (isBlank(p) && isPresent(this._tail)) throw new BaseException('tail not reachable.')
|
if (isBlank(p) && isPresent(this._tail)) throw new BaseException('tail not reachable.')
|
||||||
}
|
}
|
||||||
|
|
||||||
_assertPresentInParentList() {
|
_assertPresentInParentList():void {
|
||||||
var p = this._parent;
|
var p = this._parent;
|
||||||
if (isBlank(p)) {
|
if (isBlank(p)) {
|
||||||
return;
|
return;
|
||||||
|
@ -108,7 +108,7 @@ export class TreeNode {
|
||||||
/**
|
/**
|
||||||
* Adds a child to the parent node. The child MUST NOT be a part of a tree.
|
* Adds a child to the parent node. The child MUST NOT be a part of a tree.
|
||||||
*/
|
*/
|
||||||
addChild(child:TreeNode) {
|
addChild(child:TreeNode):void {
|
||||||
if (isPresent(this._tail)) {
|
if (isPresent(this._tail)) {
|
||||||
this._tail._next = child;
|
this._tail._next = child;
|
||||||
this._tail = child;
|
this._tail = child;
|
||||||
|
@ -124,7 +124,7 @@ export class TreeNode {
|
||||||
* Adds a child to the parent node after a given sibling.
|
* Adds a child to the parent node after a given sibling.
|
||||||
* The child MUST NOT be a part of a tree and the sibling must be present.
|
* The child MUST NOT be a part of a tree and the sibling must be present.
|
||||||
*/
|
*/
|
||||||
addChildAfter(child:TreeNode, prevSibling:TreeNode) {
|
addChildAfter(child:TreeNode, prevSibling:TreeNode):void {
|
||||||
this._assertConsistency();
|
this._assertConsistency();
|
||||||
if (isBlank(prevSibling)) {
|
if (isBlank(prevSibling)) {
|
||||||
var prevHead = this._head;
|
var prevHead = this._head;
|
||||||
|
@ -146,7 +146,7 @@ export class TreeNode {
|
||||||
/**
|
/**
|
||||||
* Detaches a node from the parent's tree.
|
* Detaches a node from the parent's tree.
|
||||||
*/
|
*/
|
||||||
remove() {
|
remove():void {
|
||||||
this._assertConsistency();
|
this._assertConsistency();
|
||||||
if (isBlank(this.parent)) return;
|
if (isBlank(this.parent)) return;
|
||||||
var nextSibling = this._next;
|
var nextSibling = this._next;
|
||||||
|
@ -209,7 +209,7 @@ export class DirectiveDependency extends Dependency {
|
||||||
this._verify();
|
this._verify();
|
||||||
}
|
}
|
||||||
|
|
||||||
_verify() {
|
_verify():void {
|
||||||
var count = 0;
|
var count = 0;
|
||||||
if (isPresent(this.propSetterName)) count++;
|
if (isPresent(this.propSetterName)) count++;
|
||||||
if (isPresent(this.queryDirective)) count++;
|
if (isPresent(this.queryDirective)) count++;
|
||||||
|
|
|
@ -28,7 +28,7 @@ export class NgElement {
|
||||||
return domViewRef.delegate.boundElements[this._boundElementIndex];
|
return domViewRef.delegate.boundElements[this._boundElementIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
getAttribute(name:string) {
|
getAttribute(name:string):string {
|
||||||
return normalizeBlank(DOM.getAttribute(this.domElement, name));
|
return normalizeBlank(DOM.getAttribute(this.domElement, name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ export class AppView {
|
||||||
this.componentChildViews = componentChildViews;
|
this.componentChildViews = componentChildViews;
|
||||||
}
|
}
|
||||||
|
|
||||||
getOrCreateViewContainer(boundElementIndex:number) {
|
getOrCreateViewContainer(boundElementIndex:number):ViewContainer {
|
||||||
var viewContainer = this.viewContainers[boundElementIndex];
|
var viewContainer = this.viewContainers[boundElementIndex];
|
||||||
if (isBlank(viewContainer)) {
|
if (isBlank(viewContainer)) {
|
||||||
viewContainer = new ViewContainer(this, this.proto.elementBinders[boundElementIndex].nestedProtoView, this.elementInjectors[boundElementIndex]);
|
viewContainer = new ViewContainer(this, this.proto.elementBinders[boundElementIndex].nestedProtoView, this.elementInjectors[boundElementIndex]);
|
||||||
|
@ -84,7 +84,7 @@ export class AppView {
|
||||||
return viewContainer;
|
return viewContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
setLocal(contextName: string, value) {
|
setLocal(contextName: string, value):void {
|
||||||
if (!this.hydrated()) throw new BaseException('Cannot set locals on dehydrated view.');
|
if (!this.hydrated()) throw new BaseException('Cannot set locals on dehydrated view.');
|
||||||
if (!MapWrapper.contains(this.proto.variableBindings, contextName)) {
|
if (!MapWrapper.contains(this.proto.variableBindings, contextName)) {
|
||||||
return;
|
return;
|
||||||
|
@ -93,7 +93,7 @@ export class AppView {
|
||||||
this.locals.set(templateName, value);
|
this.locals.set(templateName, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
hydrated() {
|
hydrated():boolean {
|
||||||
return isPresent(this.context);
|
return isPresent(this.context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,14 +106,14 @@ export class AppView {
|
||||||
* @param {*} eventObj
|
* @param {*} eventObj
|
||||||
* @param {int} binderIndex
|
* @param {int} binderIndex
|
||||||
*/
|
*/
|
||||||
triggerEventHandlers(eventName: string, eventObj, binderIndex: int) {
|
triggerEventHandlers(eventName: string, eventObj, binderIndex: int): void {
|
||||||
var locals = MapWrapper.create();
|
var locals = MapWrapper.create();
|
||||||
MapWrapper.set(locals, '$event', eventObj);
|
MapWrapper.set(locals, '$event', eventObj);
|
||||||
this.dispatchEvent(binderIndex, eventName, locals);
|
this.dispatchEvent(binderIndex, eventName, locals);
|
||||||
}
|
}
|
||||||
|
|
||||||
// dispatch to element injector or text nodes based on context
|
// dispatch to element injector or text nodes based on context
|
||||||
notifyOnBinding(b:BindingRecord, currentValue:any) {
|
notifyOnBinding(b:BindingRecord, currentValue:any): void {
|
||||||
if (b.isElement()) {
|
if (b.isElement()) {
|
||||||
this.renderer.setElementProperty(
|
this.renderer.setElementProperty(
|
||||||
this.render, b.elementIndex, b.propertyName, currentValue
|
this.render, b.elementIndex, b.propertyName, currentValue
|
||||||
|
@ -199,7 +199,7 @@ export class AppProtoView {
|
||||||
//TODO: Tobias or Victor. Moving it into the constructor.
|
//TODO: Tobias or Victor. Moving it into the constructor.
|
||||||
// this work should be done the constructor of AppProtoView once we separate
|
// this work should be done the constructor of AppProtoView once we separate
|
||||||
// AppProtoView and ProtoViewBuilder
|
// AppProtoView and ProtoViewBuilder
|
||||||
getVariableBindings() {
|
getVariableBindings(): List {
|
||||||
if (isPresent(this._variableBindings)) {
|
if (isPresent(this._variableBindings)) {
|
||||||
return this._variableBindings;
|
return this._variableBindings;
|
||||||
}
|
}
|
||||||
|
@ -217,7 +217,7 @@ export class AppProtoView {
|
||||||
//TODO: Tobias or Victor. Moving it into the constructor.
|
//TODO: Tobias or Victor. Moving it into the constructor.
|
||||||
// this work should be done the constructor of ProtoView once we separate
|
// this work should be done the constructor of ProtoView once we separate
|
||||||
// AppProtoView and ProtoViewBuilder
|
// AppProtoView and ProtoViewBuilder
|
||||||
getdirectiveRecords() {
|
getdirectiveRecords(): List {
|
||||||
if (isPresent(this._directiveRecords)) {
|
if (isPresent(this._directiveRecords)) {
|
||||||
return this._directiveRecords;
|
return this._directiveRecords;
|
||||||
}
|
}
|
||||||
|
@ -236,7 +236,7 @@ export class AppProtoView {
|
||||||
return this._directiveRecords;
|
return this._directiveRecords;
|
||||||
}
|
}
|
||||||
|
|
||||||
bindVariable(contextName:string, templateName:string) {
|
bindVariable(contextName:string, templateName:string): void {
|
||||||
MapWrapper.set(this.variableBindings, contextName, templateName);
|
MapWrapper.set(this.variableBindings, contextName, templateName);
|
||||||
MapWrapper.set(this.protoLocals, templateName, null);
|
MapWrapper.set(this.protoLocals, templateName, null);
|
||||||
}
|
}
|
||||||
|
@ -252,7 +252,7 @@ export class AppProtoView {
|
||||||
/**
|
/**
|
||||||
* Adds a text node binding for the last created ElementBinder via bindElement
|
* Adds a text node binding for the last created ElementBinder via bindElement
|
||||||
*/
|
*/
|
||||||
bindTextNode(expression:AST) {
|
bindTextNode(expression:AST):void {
|
||||||
var textNodeIndex = this.textNodesWithBindingCount++;
|
var textNodeIndex = this.textNodesWithBindingCount++;
|
||||||
var b = BindingRecord.createForTextNode(expression, textNodeIndex);
|
var b = BindingRecord.createForTextNode(expression, textNodeIndex);
|
||||||
ListWrapper.push(this.bindings, b);
|
ListWrapper.push(this.bindings, b);
|
||||||
|
@ -261,7 +261,7 @@ export class AppProtoView {
|
||||||
/**
|
/**
|
||||||
* Adds an element property binding for the last created ElementBinder via bindElement
|
* Adds an element property binding for the last created ElementBinder via bindElement
|
||||||
*/
|
*/
|
||||||
bindElementProperty(expression:AST, setterName:string) {
|
bindElementProperty(expression:AST, setterName:string):void {
|
||||||
var elementIndex = this.elementBinders.length-1;
|
var elementIndex = this.elementBinders.length-1;
|
||||||
var b = BindingRecord.createForElement(expression, elementIndex, setterName);
|
var b = BindingRecord.createForElement(expression, elementIndex, setterName);
|
||||||
ListWrapper.push(this.bindings, b);
|
ListWrapper.push(this.bindings, b);
|
||||||
|
@ -280,7 +280,7 @@ export class AppProtoView {
|
||||||
* @param {int} directiveIndex The directive index in the binder or -1 when the event is not bound
|
* @param {int} directiveIndex The directive index in the binder or -1 when the event is not bound
|
||||||
* to a directive
|
* to a directive
|
||||||
*/
|
*/
|
||||||
bindEvent(eventBindings: List<renderApi.EventBinding>, directiveIndex: int = -1) {
|
bindEvent(eventBindings: List<renderApi.EventBinding>, directiveIndex: int = -1): void {
|
||||||
var elBinder = this.elementBinders[this.elementBinders.length - 1];
|
var elBinder = this.elementBinders[this.elementBinders.length - 1];
|
||||||
var events = elBinder.hostListeners;
|
var events = elBinder.hostListeners;
|
||||||
if (isBlank(events)) {
|
if (isBlank(events)) {
|
||||||
|
@ -306,7 +306,7 @@ export class AppProtoView {
|
||||||
directiveIndex:number,
|
directiveIndex:number,
|
||||||
expression:AST,
|
expression:AST,
|
||||||
setterName:string,
|
setterName:string,
|
||||||
setter:SetterFn) {
|
setter:SetterFn): void {
|
||||||
|
|
||||||
var elementIndex = this.elementBinders.length-1;
|
var elementIndex = this.elementBinders.length-1;
|
||||||
var directiveRecord = this._getDirectiveRecord(elementIndex, directiveIndex);
|
var directiveRecord = this._getDirectiveRecord(elementIndex, directiveIndex);
|
||||||
|
@ -314,7 +314,7 @@ export class AppProtoView {
|
||||||
ListWrapper.push(this.bindings, b);
|
ListWrapper.push(this.bindings, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
_getDirectiveRecord(elementInjectorIndex:number, directiveIndex:number) {
|
_getDirectiveRecord(elementInjectorIndex:number, directiveIndex:number): DirectiveRecord {
|
||||||
var id = elementInjectorIndex * 100 + directiveIndex;
|
var id = elementInjectorIndex * 100 + directiveIndex;
|
||||||
var protoElementInjector = this.elementBinders[elementInjectorIndex].protoElementInjector;
|
var protoElementInjector = this.elementBinders[elementInjectorIndex].protoElementInjector;
|
||||||
|
|
||||||
|
|
|
@ -27,17 +27,17 @@ export class ViewContainer {
|
||||||
this._views = [];
|
this._views = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
getRender() {
|
getRender():ViewContainerRef {
|
||||||
return new ViewContainerRef(this.parentView.render, this.elementInjector.getBoundElementIndex());
|
return new ViewContainerRef(this.parentView.render, this.elementInjector.getBoundElementIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
internalClearWithoutRender() {
|
internalClearWithoutRender():void {
|
||||||
for (var i = this._views.length - 1; i >= 0; i--) {
|
for (var i = this._views.length - 1; i >= 0; i--) {
|
||||||
this._detachInjectors(i);
|
this._detachInjectors(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
clear() {
|
clear():void {
|
||||||
for (var i = this._views.length - 1; i >= 0; i--) {
|
for (var i = this._views.length - 1; i >= 0; i--) {
|
||||||
this.remove(i);
|
this.remove(i);
|
||||||
}
|
}
|
||||||
|
@ -47,22 +47,22 @@ export class ViewContainer {
|
||||||
return this._views[index];
|
return this._views[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
get length() {
|
get length() /* :int */ {
|
||||||
return this._views.length;
|
return this._views.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
_siblingInjectorToLinkAfter(index: number) {
|
_siblingInjectorToLinkAfter(index: number):eiModule.ElementInjector {
|
||||||
if (index == 0) return null;
|
if (index == 0) return null;
|
||||||
return ListWrapper.last(this._views[index - 1].rootElementInjectors)
|
return ListWrapper.last(this._views[index - 1].rootElementInjectors)
|
||||||
}
|
}
|
||||||
|
|
||||||
hydrated() {
|
hydrated():boolean {
|
||||||
return this.parentView.hydrated();
|
return this.parentView.hydrated();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(rado): profile and decide whether bounds checks should be added
|
// TODO(rado): profile and decide whether bounds checks should be added
|
||||||
// to the methods below.
|
// to the methods below.
|
||||||
create(atIndex=-1, protoView:viewModule.AppProtoView = null, injector:Injector = null): viewModule.AppView {
|
create(atIndex:number=-1, protoView:viewModule.AppProtoView = null, injector:Injector = null): viewModule.AppView {
|
||||||
if (atIndex == -1) atIndex = this._views.length;
|
if (atIndex == -1) atIndex = this._views.length;
|
||||||
if (!this.hydrated()) throw new BaseException(
|
if (!this.hydrated()) throw new BaseException(
|
||||||
'Cannot create views on a dehydrated ViewContainer');
|
'Cannot create views on a dehydrated ViewContainer');
|
||||||
|
@ -77,7 +77,7 @@ export class ViewContainer {
|
||||||
return newView;
|
return newView;
|
||||||
}
|
}
|
||||||
|
|
||||||
insert(view, atIndex=-1): viewModule.AppView {
|
insert(view:viewModule.AppView, atIndex:number=-1): viewModule.AppView {
|
||||||
if (atIndex == -1) atIndex = this._views.length;
|
if (atIndex == -1) atIndex = this._views.length;
|
||||||
this._insertInjectors(view, atIndex);
|
this._insertInjectors(view, atIndex);
|
||||||
this.parentView.changeDetector.addChild(view.changeDetector);
|
this.parentView.changeDetector.addChild(view.changeDetector);
|
||||||
|
@ -85,7 +85,7 @@ export class ViewContainer {
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
_insertInjectors(view, atIndex): viewModule.AppView {
|
_insertInjectors(view:viewModule.AppView, atIndex:number): viewModule.AppView {
|
||||||
ListWrapper.insert(this._views, atIndex, view);
|
ListWrapper.insert(this._views, atIndex, view);
|
||||||
this._linkElementInjectors(this._siblingInjectorToLinkAfter(atIndex), view);
|
this._linkElementInjectors(this._siblingInjectorToLinkAfter(atIndex), view);
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ export class ViewContainer {
|
||||||
return ListWrapper.indexOf(this._views, view);
|
return ListWrapper.indexOf(this._views, view);
|
||||||
}
|
}
|
||||||
|
|
||||||
remove(atIndex=-1) {
|
remove(atIndex:number=-1):void {
|
||||||
if (atIndex == -1) atIndex = this._views.length - 1;
|
if (atIndex == -1) atIndex = this._views.length - 1;
|
||||||
var view = this._views[atIndex];
|
var view = this._views[atIndex];
|
||||||
// opposite order as in create
|
// opposite order as in create
|
||||||
|
@ -110,7 +110,7 @@ export class ViewContainer {
|
||||||
* The method can be used together with insert to implement a view move, i.e.
|
* The method can be used together with insert to implement a view move, i.e.
|
||||||
* moving the dom nodes while the directives in the view stay intact.
|
* moving the dom nodes while the directives in the view stay intact.
|
||||||
*/
|
*/
|
||||||
detach(atIndex=-1): viewModule.AppView {
|
detach(atIndex:number=-1): viewModule.AppView {
|
||||||
if (atIndex == -1) atIndex = this._views.length - 1;
|
if (atIndex == -1) atIndex = this._views.length - 1;
|
||||||
var detachedView = this._detachInjectors(atIndex);
|
var detachedView = this._detachInjectors(atIndex);
|
||||||
detachedView.changeDetector.remove();
|
detachedView.changeDetector.remove();
|
||||||
|
@ -118,20 +118,20 @@ export class ViewContainer {
|
||||||
return detachedView;
|
return detachedView;
|
||||||
}
|
}
|
||||||
|
|
||||||
_detachInjectors(atIndex): viewModule.AppView {
|
_detachInjectors(atIndex:number): viewModule.AppView {
|
||||||
var detachedView = this.get(atIndex);
|
var detachedView = this.get(atIndex);
|
||||||
ListWrapper.removeAt(this._views, atIndex);
|
ListWrapper.removeAt(this._views, atIndex);
|
||||||
this._unlinkElementInjectors(detachedView);
|
this._unlinkElementInjectors(detachedView);
|
||||||
return detachedView;
|
return detachedView;
|
||||||
}
|
}
|
||||||
|
|
||||||
_linkElementInjectors(sibling, view) {
|
_linkElementInjectors(sibling, view:viewModule.AppView):void {
|
||||||
for (var i = view.rootElementInjectors.length - 1; i >= 0; i--) {
|
for (var i = view.rootElementInjectors.length - 1; i >= 0; i--) {
|
||||||
view.rootElementInjectors[i].linkAfter(this.elementInjector, sibling);
|
view.rootElementInjectors[i].linkAfter(this.elementInjector, sibling);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_unlinkElementInjectors(view) {
|
_unlinkElementInjectors(view:viewModule.AppView):void {
|
||||||
for (var i = 0; i < view.rootElementInjectors.length; ++i) {
|
for (var i = 0; i < view.rootElementInjectors.length; ++i) {
|
||||||
view.rootElementInjectors[i].unlink();
|
view.rootElementInjectors[i].unlink();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import {ListWrapper, List} from 'angular2/src/facade/collection';
|
import {ListWrapper, List} from 'angular2/src/facade/collection';
|
||||||
import {stringify} from 'angular2/src/facade/lang';
|
import {stringify} from 'angular2/src/facade/lang';
|
||||||
|
|
||||||
function findFirstClosedCycle(keys:List) {
|
function findFirstClosedCycle(keys:List):List {
|
||||||
var res = [];
|
var res = [];
|
||||||
for(var i = 0; i < keys.length; ++i) {
|
for(var i = 0; i < keys.length; ++i) {
|
||||||
if (ListWrapper.contains(res, keys[i])) {
|
if (ListWrapper.contains(res, keys[i])) {
|
||||||
|
@ -14,7 +14,7 @@ function findFirstClosedCycle(keys:List) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
function constructResolvingPath(keys:List) {
|
function constructResolvingPath(keys:List):string {
|
||||||
if (keys.length > 1) {
|
if (keys.length > 1) {
|
||||||
var reversed = findFirstClosedCycle(ListWrapper.reversed(keys));
|
var reversed = findFirstClosedCycle(ListWrapper.reversed(keys));
|
||||||
var tokenStrs = ListWrapper.map(reversed, (k) => stringify(k.token));
|
var tokenStrs = ListWrapper.map(reversed, (k) => stringify(k.token));
|
||||||
|
@ -43,12 +43,12 @@ export class AbstractBindingError extends Error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(tbosch): Can't do key:Key as this results in a circular dependency!
|
// TODO(tbosch): Can't do key:Key as this results in a circular dependency!
|
||||||
addKey(key) {
|
addKey(key):void {
|
||||||
ListWrapper.push(this.keys, key);
|
ListWrapper.push(this.keys, key);
|
||||||
this.message = this.constructResolvingMessage(this.keys);
|
this.message = this.constructResolvingMessage(this.keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
toString() {
|
toString():string {
|
||||||
return this.message;
|
return this.message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,7 @@ export class InvalidBindingError extends Error {
|
||||||
this.message = `Invalid binding ${binding}`;
|
this.message = `Invalid binding ${binding}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
toString() {
|
toString():string {
|
||||||
return this.message;
|
return this.message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,7 @@ export class NoAnnotationError extends Error {
|
||||||
` Make sure they all have valid type or annotations.`;
|
` Make sure they all have valid type or annotations.`;
|
||||||
}
|
}
|
||||||
|
|
||||||
toString() {
|
toString():string {
|
||||||
return this.message;
|
return this.message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ export class Injector {
|
||||||
* bindings.
|
* bindings.
|
||||||
* @param `defaultBindings` Setting to true will auto-create bindings.
|
* @param `defaultBindings` Setting to true will auto-create bindings.
|
||||||
*/
|
*/
|
||||||
static resolveAndCreate(bindings:List/*<ResolvedBinding|Binding|Type|List>*/, {defaultBindings=false}={}) {
|
static resolveAndCreate(bindings:List/*<ResolvedBinding|Binding|Type|List>*/, {defaultBindings=false}={}): Injector {
|
||||||
return new Injector(Injector.resolve(bindings), null, defaultBindings);
|
return new Injector(Injector.resolve(bindings), null, defaultBindings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ export class Injector {
|
||||||
* @param `bindings` A sparse list of {@link ResolvedBinding}s. See `resolve` for the {@link Injector}.
|
* @param `bindings` A sparse list of {@link ResolvedBinding}s. See `resolve` for the {@link Injector}.
|
||||||
* @param `defaultBindings` Setting to true will auto-create bindings.
|
* @param `defaultBindings` Setting to true will auto-create bindings.
|
||||||
*/
|
*/
|
||||||
static fromResolvedBindings(bindings:List<ResolvedBinding>, {defaultBindings=false}={}) {
|
static fromResolvedBindings(bindings:List<ResolvedBinding>, {defaultBindings=false}={}): Injector {
|
||||||
return new Injector(bindings, null, defaultBindings);
|
return new Injector(bindings, null, defaultBindings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +133,6 @@ export class Injector {
|
||||||
* @returns an instance represented by the token. Throws if not found.
|
* @returns an instance represented by the token. Throws if not found.
|
||||||
*/
|
*/
|
||||||
get(token) {
|
get(token) {
|
||||||
|
|
||||||
return this._getByKey(Key.get(token), false, false, false);
|
return this._getByKey(Key.get(token), false, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,7 +226,7 @@ export class Injector {
|
||||||
return ListWrapper.get(this._instances, key.id);
|
return ListWrapper.get(this._instances, key.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
_setInstance(key:Key, obj) {
|
_setInstance(key:Key, obj):void {
|
||||||
ListWrapper.set(this._instances, key.id, obj);
|
ListWrapper.set(this._instances, key.id, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,11 +242,11 @@ export class Injector {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_markAsConstructing(key:Key) {
|
_markAsConstructing(key:Key):void {
|
||||||
this._setInstance(key, _constructing);
|
this._setInstance(key, _constructing);
|
||||||
}
|
}
|
||||||
|
|
||||||
_clear(key:Key) {
|
_clear(key:Key):void {
|
||||||
this._setInstance(key, null);
|
this._setInstance(key, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -325,7 +324,7 @@ class _AsyncInjectorStrategy {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
instantiate(key:Key) {
|
instantiate(key:Key) /* Promise?? */ {
|
||||||
var binding = this.injector._getBinding(key);
|
var binding = this.injector._getBinding(key);
|
||||||
if (isBlank(binding)) return _notFound;
|
if (isBlank(binding)) return _notFound;
|
||||||
|
|
||||||
|
@ -395,7 +394,7 @@ function _createListOfBindings(flattenedBindings):List {
|
||||||
return bindings;
|
return bindings;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _flattenBindings(bindings:List, res:Map) {
|
function _flattenBindings(bindings:List, res:Map):Map {
|
||||||
ListWrapper.forEach(bindings, function (b) {
|
ListWrapper.forEach(bindings, function (b) {
|
||||||
if (b instanceof ResolvedBinding) {
|
if (b instanceof ResolvedBinding) {
|
||||||
MapWrapper.set(res, b.key.id, b);
|
MapWrapper.set(res, b.key.id, b);
|
||||||
|
|
|
@ -10,7 +10,7 @@ export class OpaqueToken {
|
||||||
this._desc = `Token(${desc})`;
|
this._desc = `Token(${desc})`;
|
||||||
}
|
}
|
||||||
|
|
||||||
toString() {
|
toString():string {
|
||||||
return this._desc;
|
return this._desc;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -15,7 +15,7 @@ export class CSSClass {
|
||||||
this._domEl = ngEl.domElement;
|
this._domEl = ngEl.domElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
_toggleClass(className, enabled) {
|
_toggleClass(className, enabled):void {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
DOM.addClass(this._domEl, className);
|
DOM.addClass(this._domEl, className);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -40,7 +40,7 @@ export class If {
|
||||||
this.prevCondition = null;
|
this.prevCondition = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
set condition(newCondition) {
|
set condition(newCondition /* boolean */) {
|
||||||
if (newCondition && (isBlank(this.prevCondition) || !this.prevCondition)) {
|
if (newCondition && (isBlank(this.prevCondition) || !this.prevCondition)) {
|
||||||
this.prevCondition = true;
|
this.prevCondition = true;
|
||||||
this.viewContainer.create();
|
this.viewContainer.create();
|
||||||
|
|
|
@ -65,7 +65,7 @@ export class Switch {
|
||||||
this._switchValue = value;
|
this._switchValue = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWhenValueChanged(oldWhen, newWhen, viewContainer: ViewContainer) {
|
_onWhenValueChanged(oldWhen, newWhen, viewContainer: ViewContainer):void {
|
||||||
this._deregisterViewContainer(oldWhen, viewContainer);
|
this._deregisterViewContainer(oldWhen, viewContainer);
|
||||||
this._registerViewContainer(newWhen, viewContainer);
|
this._registerViewContainer(newWhen, viewContainer);
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ export class Switch {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_emptyAllActiveViewContainers() {
|
_emptyAllActiveViewContainers():void {
|
||||||
var activeContainers = this._activeViewContainers;
|
var activeContainers = this._activeViewContainers;
|
||||||
for (var i = 0; i < activeContainers.length; i++) {
|
for (var i = 0; i < activeContainers.length; i++) {
|
||||||
activeContainers[i].remove();
|
activeContainers[i].remove();
|
||||||
|
@ -96,7 +96,7 @@ export class Switch {
|
||||||
this._activeViewContainers = ListWrapper.create();
|
this._activeViewContainers = ListWrapper.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
_activateViewContainers(containers: List<ViewContainer>) {
|
_activateViewContainers(containers: List<ViewContainer>):void {
|
||||||
// TODO(vicb): assert(this._activeViewContainers.length === 0);
|
// TODO(vicb): assert(this._activeViewContainers.length === 0);
|
||||||
if (isPresent(containers)) {
|
if (isPresent(containers)) {
|
||||||
for (var i = 0; i < containers.length; i++) {
|
for (var i = 0; i < containers.length; i++) {
|
||||||
|
@ -106,7 +106,7 @@ export class Switch {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_registerViewContainer(value, container: ViewContainer) {
|
_registerViewContainer(value, container: ViewContainer): void {
|
||||||
var containers = MapWrapper.get(this._valueViewContainers, value);
|
var containers = MapWrapper.get(this._valueViewContainers, value);
|
||||||
if (isBlank(containers)) {
|
if (isBlank(containers)) {
|
||||||
containers = ListWrapper.create();
|
containers = ListWrapper.create();
|
||||||
|
@ -115,7 +115,7 @@ export class Switch {
|
||||||
ListWrapper.push(containers, container);
|
ListWrapper.push(containers, container);
|
||||||
}
|
}
|
||||||
|
|
||||||
_deregisterViewContainer(value, container: ViewContainer) {
|
_deregisterViewContainer(value, container: ViewContainer):void {
|
||||||
// `_whenDefault` is used a marker for non-registered whens
|
// `_whenDefault` is used a marker for non-registered whens
|
||||||
if (value == _whenDefault) return;
|
if (value == _whenDefault) return;
|
||||||
var containers = MapWrapper.get(this._valueViewContainers, value);
|
var containers = MapWrapper.get(this._valueViewContainers, value);
|
||||||
|
|
|
@ -195,7 +195,7 @@ export class DomAdapter {
|
||||||
attributeMap(element) {
|
attributeMap(element) {
|
||||||
throw _abstract();
|
throw _abstract();
|
||||||
}
|
}
|
||||||
getAttribute(element, attribute:string) {
|
getAttribute(element, attribute:string):string {
|
||||||
throw _abstract();
|
throw _abstract();
|
||||||
}
|
}
|
||||||
setAttribute(element, name:string, value:string) {
|
setAttribute(element, name:string, value:string) {
|
||||||
|
|
Loading…
Reference in New Issue