Bones/node_modules/angular2/bundles/angular2.js
SOUTHERNCO\x2mjbyrn 7efe7605b8 Template Upload
2017-05-17 13:45:25 -04:00

25643 lines
1.0 MiB

"format register";
System.register("angular2/src/facade/lang", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var globalScope;
if (typeof window === 'undefined') {
if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {
globalScope = self;
} else {
globalScope = global;
}
} else {
globalScope = window;
}
function scheduleMicroTask(fn) {
Zone.current.scheduleMicroTask('scheduleMicrotask', fn);
}
exports.scheduleMicroTask = scheduleMicroTask;
exports.IS_DART = false;
var _global = globalScope;
exports.global = _global;
exports.Type = Function;
function getTypeNameForDebugging(type) {
if (type['name']) {
return type['name'];
}
return typeof type;
}
exports.getTypeNameForDebugging = getTypeNameForDebugging;
exports.Math = _global.Math;
exports.Date = _global.Date;
var _devMode = true;
var _modeLocked = false;
function lockMode() {
_modeLocked = true;
}
exports.lockMode = lockMode;
function enableProdMode() {
if (_modeLocked) {
throw 'Cannot enable prod mode after platform setup.';
}
_devMode = false;
}
exports.enableProdMode = enableProdMode;
function assertionsEnabled() {
return _devMode;
}
exports.assertionsEnabled = assertionsEnabled;
_global.assert = function assert(condition) {};
function CONST_EXPR(expr) {
return expr;
}
exports.CONST_EXPR = CONST_EXPR;
function CONST() {
return function(target) {
return target;
};
}
exports.CONST = CONST;
function isPresent(obj) {
return obj !== undefined && obj !== null;
}
exports.isPresent = isPresent;
function isBlank(obj) {
return obj === undefined || obj === null;
}
exports.isBlank = isBlank;
function isString(obj) {
return typeof obj === "string";
}
exports.isString = isString;
function isFunction(obj) {
return typeof obj === "function";
}
exports.isFunction = isFunction;
function isType(obj) {
return isFunction(obj);
}
exports.isType = isType;
function isStringMap(obj) {
return typeof obj === 'object' && obj !== null;
}
exports.isStringMap = isStringMap;
function isPromise(obj) {
return obj instanceof _global.Promise;
}
exports.isPromise = isPromise;
function isArray(obj) {
return Array.isArray(obj);
}
exports.isArray = isArray;
function isNumber(obj) {
return typeof obj === 'number';
}
exports.isNumber = isNumber;
function isDate(obj) {
return obj instanceof exports.Date && !isNaN(obj.valueOf());
}
exports.isDate = isDate;
function noop() {}
exports.noop = noop;
function stringify(token) {
if (typeof token === 'string') {
return token;
}
if (token === undefined || token === null) {
return '' + token;
}
if (token.name) {
return token.name;
}
if (token.overriddenName) {
return token.overriddenName;
}
var res = token.toString();
var newLineIndex = res.indexOf("\n");
return (newLineIndex === -1) ? res : res.substring(0, newLineIndex);
}
exports.stringify = stringify;
function serializeEnum(val) {
return val;
}
exports.serializeEnum = serializeEnum;
function deserializeEnum(val, values) {
return val;
}
exports.deserializeEnum = deserializeEnum;
function resolveEnumToken(enumValue, val) {
return enumValue[val];
}
exports.resolveEnumToken = resolveEnumToken;
var StringWrapper = (function() {
function StringWrapper() {}
StringWrapper.fromCharCode = function(code) {
return String.fromCharCode(code);
};
StringWrapper.charCodeAt = function(s, index) {
return s.charCodeAt(index);
};
StringWrapper.split = function(s, regExp) {
return s.split(regExp);
};
StringWrapper.equals = function(s, s2) {
return s === s2;
};
StringWrapper.stripLeft = function(s, charVal) {
if (s && s.length) {
var pos = 0;
for (var i = 0; i < s.length; i++) {
if (s[i] != charVal)
break;
pos++;
}
s = s.substring(pos);
}
return s;
};
StringWrapper.stripRight = function(s, charVal) {
if (s && s.length) {
var pos = s.length;
for (var i = s.length - 1; i >= 0; i--) {
if (s[i] != charVal)
break;
pos--;
}
s = s.substring(0, pos);
}
return s;
};
StringWrapper.replace = function(s, from, replace) {
return s.replace(from, replace);
};
StringWrapper.replaceAll = function(s, from, replace) {
return s.replace(from, replace);
};
StringWrapper.slice = function(s, from, to) {
if (from === void 0) {
from = 0;
}
if (to === void 0) {
to = null;
}
return s.slice(from, to === null ? undefined : to);
};
StringWrapper.replaceAllMapped = function(s, from, cb) {
return s.replace(from, function() {
var matches = [];
for (var _i = 0; _i < arguments.length; _i++) {
matches[_i - 0] = arguments[_i];
}
matches.splice(-2, 2);
return cb(matches);
});
};
StringWrapper.contains = function(s, substr) {
return s.indexOf(substr) != -1;
};
StringWrapper.compare = function(a, b) {
if (a < b) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
};
return StringWrapper;
})();
exports.StringWrapper = StringWrapper;
var StringJoiner = (function() {
function StringJoiner(parts) {
if (parts === void 0) {
parts = [];
}
this.parts = parts;
}
StringJoiner.prototype.add = function(part) {
this.parts.push(part);
};
StringJoiner.prototype.toString = function() {
return this.parts.join("");
};
return StringJoiner;
})();
exports.StringJoiner = StringJoiner;
var NumberParseError = (function(_super) {
__extends(NumberParseError, _super);
function NumberParseError(message) {
_super.call(this);
this.message = message;
}
NumberParseError.prototype.toString = function() {
return this.message;
};
return NumberParseError;
})(Error);
exports.NumberParseError = NumberParseError;
var NumberWrapper = (function() {
function NumberWrapper() {}
NumberWrapper.toFixed = function(n, fractionDigits) {
return n.toFixed(fractionDigits);
};
NumberWrapper.equal = function(a, b) {
return a === b;
};
NumberWrapper.parseIntAutoRadix = function(text) {
var result = parseInt(text);
if (isNaN(result)) {
throw new NumberParseError("Invalid integer literal when parsing " + text);
}
return result;
};
NumberWrapper.parseInt = function(text, radix) {
if (radix == 10) {
if (/^(\-|\+)?[0-9]+$/.test(text)) {
return parseInt(text, radix);
}
} else if (radix == 16) {
if (/^(\-|\+)?[0-9ABCDEFabcdef]+$/.test(text)) {
return parseInt(text, radix);
}
} else {
var result = parseInt(text, radix);
if (!isNaN(result)) {
return result;
}
}
throw new NumberParseError("Invalid integer literal when parsing " + text + " in base " + radix);
};
NumberWrapper.parseFloat = function(text) {
return parseFloat(text);
};
Object.defineProperty(NumberWrapper, "NaN", {
get: function() {
return NaN;
},
enumerable: true,
configurable: true
});
NumberWrapper.isNaN = function(value) {
return isNaN(value);
};
NumberWrapper.isInteger = function(value) {
return Number.isInteger(value);
};
return NumberWrapper;
})();
exports.NumberWrapper = NumberWrapper;
exports.RegExp = _global.RegExp;
var RegExpWrapper = (function() {
function RegExpWrapper() {}
RegExpWrapper.create = function(regExpStr, flags) {
if (flags === void 0) {
flags = '';
}
flags = flags.replace(/g/g, '');
return new _global.RegExp(regExpStr, flags + 'g');
};
RegExpWrapper.firstMatch = function(regExp, input) {
regExp.lastIndex = 0;
return regExp.exec(input);
};
RegExpWrapper.test = function(regExp, input) {
regExp.lastIndex = 0;
return regExp.test(input);
};
RegExpWrapper.matcher = function(regExp, input) {
regExp.lastIndex = 0;
return {
re: regExp,
input: input
};
};
RegExpWrapper.replaceAll = function(regExp, input, replace) {
var c = regExp.exec(input);
var res = '';
regExp.lastIndex = 0;
var prev = 0;
while (c) {
res += input.substring(prev, c.index);
res += replace(c);
prev = c.index + c[0].length;
regExp.lastIndex = prev;
c = regExp.exec(input);
}
res += input.substring(prev);
return res;
};
return RegExpWrapper;
})();
exports.RegExpWrapper = RegExpWrapper;
var RegExpMatcherWrapper = (function() {
function RegExpMatcherWrapper() {}
RegExpMatcherWrapper.next = function(matcher) {
return matcher.re.exec(matcher.input);
};
return RegExpMatcherWrapper;
})();
exports.RegExpMatcherWrapper = RegExpMatcherWrapper;
var FunctionWrapper = (function() {
function FunctionWrapper() {}
FunctionWrapper.apply = function(fn, posArgs) {
return fn.apply(null, posArgs);
};
return FunctionWrapper;
})();
exports.FunctionWrapper = FunctionWrapper;
function looseIdentical(a, b) {
return a === b || typeof a === "number" && typeof b === "number" && isNaN(a) && isNaN(b);
}
exports.looseIdentical = looseIdentical;
function getMapKey(value) {
return value;
}
exports.getMapKey = getMapKey;
function normalizeBlank(obj) {
return isBlank(obj) ? null : obj;
}
exports.normalizeBlank = normalizeBlank;
function normalizeBool(obj) {
return isBlank(obj) ? false : obj;
}
exports.normalizeBool = normalizeBool;
function isJsObject(o) {
return o !== null && (typeof o === "function" || typeof o === "object");
}
exports.isJsObject = isJsObject;
function print(obj) {
console.log(obj);
}
exports.print = print;
var Json = (function() {
function Json() {}
Json.parse = function(s) {
return _global.JSON.parse(s);
};
Json.stringify = function(data) {
return _global.JSON.stringify(data, null, 2);
};
return Json;
})();
exports.Json = Json;
var DateWrapper = (function() {
function DateWrapper() {}
DateWrapper.create = function(year, month, day, hour, minutes, seconds, milliseconds) {
if (month === void 0) {
month = 1;
}
if (day === void 0) {
day = 1;
}
if (hour === void 0) {
hour = 0;
}
if (minutes === void 0) {
minutes = 0;
}
if (seconds === void 0) {
seconds = 0;
}
if (milliseconds === void 0) {
milliseconds = 0;
}
return new exports.Date(year, month - 1, day, hour, minutes, seconds, milliseconds);
};
DateWrapper.fromISOString = function(str) {
return new exports.Date(str);
};
DateWrapper.fromMillis = function(ms) {
return new exports.Date(ms);
};
DateWrapper.toMillis = function(date) {
return date.getTime();
};
DateWrapper.now = function() {
return new exports.Date();
};
DateWrapper.toJson = function(date) {
return date.toJSON();
};
return DateWrapper;
})();
exports.DateWrapper = DateWrapper;
function setValueOnPath(global, path, value) {
var parts = path.split('.');
var obj = global;
while (parts.length > 1) {
var name = parts.shift();
if (obj.hasOwnProperty(name) && isPresent(obj[name])) {
obj = obj[name];
} else {
obj = obj[name] = {};
}
}
if (obj === undefined || obj === null) {
obj = {};
}
obj[parts.shift()] = value;
}
exports.setValueOnPath = setValueOnPath;
var _symbolIterator = null;
function getSymbolIterator() {
if (isBlank(_symbolIterator)) {
if (isPresent(Symbol) && isPresent(Symbol.iterator)) {
_symbolIterator = Symbol.iterator;
} else {
var keys = Object.getOwnPropertyNames(Map.prototype);
for (var i = 0; i < keys.length; ++i) {
var key = keys[i];
if (key !== 'entries' && key !== 'size' && Map.prototype[key] === Map.prototype['entries']) {
_symbolIterator = key;
}
}
}
}
return _symbolIterator;
}
exports.getSymbolIterator = getSymbolIterator;
function evalExpression(sourceUrl, expr, declarations, vars) {
var fnBody = declarations + "\nreturn " + expr + "\n//# sourceURL=" + sourceUrl;
var fnArgNames = [];
var fnArgValues = [];
for (var argName in vars) {
fnArgNames.push(argName);
fnArgValues.push(vars[argName]);
}
return new (Function.bind.apply(Function, [void 0].concat(fnArgNames.concat(fnBody))))().apply(void 0, fnArgValues);
}
exports.evalExpression = evalExpression;
function isPrimitive(obj) {
return !isJsObject(obj);
}
exports.isPrimitive = isPrimitive;
function hasConstructor(value, type) {
return value.constructor === type;
}
exports.hasConstructor = hasConstructor;
function bitWiseOr(values) {
return values.reduce(function(a, b) {
return a | b;
});
}
exports.bitWiseOr = bitWiseOr;
function bitWiseAnd(values) {
return values.reduce(function(a, b) {
return a & b;
});
}
exports.bitWiseAnd = bitWiseAnd;
function escape(s) {
return _global.encodeURI(s);
}
exports.escape = escape;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/di/metadata", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var InjectMetadata = (function() {
function InjectMetadata(token) {
this.token = token;
}
InjectMetadata.prototype.toString = function() {
return "@Inject(" + lang_1.stringify(this.token) + ")";
};
InjectMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], InjectMetadata);
return InjectMetadata;
})();
exports.InjectMetadata = InjectMetadata;
var OptionalMetadata = (function() {
function OptionalMetadata() {}
OptionalMetadata.prototype.toString = function() {
return "@Optional()";
};
OptionalMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [])], OptionalMetadata);
return OptionalMetadata;
})();
exports.OptionalMetadata = OptionalMetadata;
var DependencyMetadata = (function() {
function DependencyMetadata() {}
Object.defineProperty(DependencyMetadata.prototype, "token", {
get: function() {
return null;
},
enumerable: true,
configurable: true
});
DependencyMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [])], DependencyMetadata);
return DependencyMetadata;
})();
exports.DependencyMetadata = DependencyMetadata;
var InjectableMetadata = (function() {
function InjectableMetadata() {}
InjectableMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [])], InjectableMetadata);
return InjectableMetadata;
})();
exports.InjectableMetadata = InjectableMetadata;
var SelfMetadata = (function() {
function SelfMetadata() {}
SelfMetadata.prototype.toString = function() {
return "@Self()";
};
SelfMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [])], SelfMetadata);
return SelfMetadata;
})();
exports.SelfMetadata = SelfMetadata;
var SkipSelfMetadata = (function() {
function SkipSelfMetadata() {}
SkipSelfMetadata.prototype.toString = function() {
return "@SkipSelf()";
};
SkipSelfMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [])], SkipSelfMetadata);
return SkipSelfMetadata;
})();
exports.SkipSelfMetadata = SkipSelfMetadata;
var HostMetadata = (function() {
function HostMetadata() {}
HostMetadata.prototype.toString = function() {
return "@Host()";
};
HostMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [])], HostMetadata);
return HostMetadata;
})();
exports.HostMetadata = HostMetadata;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/util/decorators", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var _nextClassId = 0;
function extractAnnotation(annotation) {
if (lang_1.isFunction(annotation) && annotation.hasOwnProperty('annotation')) {
annotation = annotation.annotation;
}
return annotation;
}
function applyParams(fnOrArray, key) {
if (fnOrArray === Object || fnOrArray === String || fnOrArray === Function || fnOrArray === Number || fnOrArray === Array) {
throw new Error("Can not use native " + lang_1.stringify(fnOrArray) + " as constructor");
}
if (lang_1.isFunction(fnOrArray)) {
return fnOrArray;
} else if (fnOrArray instanceof Array) {
var annotations = fnOrArray;
var fn = fnOrArray[fnOrArray.length - 1];
if (!lang_1.isFunction(fn)) {
throw new Error("Last position of Class method array must be Function in key " + key + " was '" + lang_1.stringify(fn) + "'");
}
var annoLength = annotations.length - 1;
if (annoLength != fn.length) {
throw new Error("Number of annotations (" + annoLength + ") does not match number of arguments (" + fn.length + ") in the function: " + lang_1.stringify(fn));
}
var paramsAnnotations = [];
for (var i = 0,
ii = annotations.length - 1; i < ii; i++) {
var paramAnnotations = [];
paramsAnnotations.push(paramAnnotations);
var annotation = annotations[i];
if (annotation instanceof Array) {
for (var j = 0; j < annotation.length; j++) {
paramAnnotations.push(extractAnnotation(annotation[j]));
}
} else if (lang_1.isFunction(annotation)) {
paramAnnotations.push(extractAnnotation(annotation));
} else {
paramAnnotations.push(annotation);
}
}
Reflect.defineMetadata('parameters', paramsAnnotations, fn);
return fn;
} else {
throw new Error("Only Function or Array is supported in Class definition for key '" + key + "' is '" + lang_1.stringify(fnOrArray) + "'");
}
}
function Class(clsDef) {
var constructor = applyParams(clsDef.hasOwnProperty('constructor') ? clsDef.constructor : undefined, 'constructor');
var proto = constructor.prototype;
if (clsDef.hasOwnProperty('extends')) {
if (lang_1.isFunction(clsDef.extends)) {
constructor.prototype = proto = Object.create(clsDef.extends.prototype);
} else {
throw new Error("Class definition 'extends' property must be a constructor function was: " + lang_1.stringify(clsDef.extends));
}
}
for (var key in clsDef) {
if (key != 'extends' && key != 'prototype' && clsDef.hasOwnProperty(key)) {
proto[key] = applyParams(clsDef[key], key);
}
}
if (this && this.annotations instanceof Array) {
Reflect.defineMetadata('annotations', this.annotations, constructor);
}
if (!constructor['name']) {
constructor['overriddenName'] = "class" + _nextClassId++;
}
return constructor;
}
exports.Class = Class;
var Reflect = lang_1.global.Reflect;
(function checkReflect() {
if (!(Reflect && Reflect.getMetadata)) {
throw 'reflect-metadata shim is required when using class decorators';
}
})();
function makeDecorator(annotationCls, chainFn) {
if (chainFn === void 0) {
chainFn = null;
}
function DecoratorFactory(objOrType) {
var annotationInstance = new annotationCls(objOrType);
if (this instanceof annotationCls) {
return annotationInstance;
} else {
var chainAnnotation = lang_1.isFunction(this) && this.annotations instanceof Array ? this.annotations : [];
chainAnnotation.push(annotationInstance);
var TypeDecorator = function TypeDecorator(cls) {
var annotations = Reflect.getOwnMetadata('annotations', cls);
annotations = annotations || [];
annotations.push(annotationInstance);
Reflect.defineMetadata('annotations', annotations, cls);
return cls;
};
TypeDecorator.annotations = chainAnnotation;
TypeDecorator.Class = Class;
if (chainFn)
chainFn(TypeDecorator);
return TypeDecorator;
}
}
DecoratorFactory.prototype = Object.create(annotationCls.prototype);
return DecoratorFactory;
}
exports.makeDecorator = makeDecorator;
function makeParamDecorator(annotationCls) {
function ParamDecoratorFactory() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
}
var annotationInstance = Object.create(annotationCls.prototype);
annotationCls.apply(annotationInstance, args);
if (this instanceof annotationCls) {
return annotationInstance;
} else {
ParamDecorator.annotation = annotationInstance;
return ParamDecorator;
}
function ParamDecorator(cls, unusedKey, index) {
var parameters = Reflect.getMetadata('parameters', cls);
parameters = parameters || [];
while (parameters.length <= index) {
parameters.push(null);
}
parameters[index] = parameters[index] || [];
var annotationsForParam = parameters[index];
annotationsForParam.push(annotationInstance);
Reflect.defineMetadata('parameters', parameters, cls);
return cls;
}
}
ParamDecoratorFactory.prototype = Object.create(annotationCls.prototype);
return ParamDecoratorFactory;
}
exports.makeParamDecorator = makeParamDecorator;
function makePropDecorator(decoratorCls) {
function PropDecoratorFactory() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i - 0] = arguments[_i];
}
var decoratorInstance = Object.create(decoratorCls.prototype);
decoratorCls.apply(decoratorInstance, args);
if (this instanceof decoratorCls) {
return decoratorInstance;
} else {
return function PropDecorator(target, name) {
var meta = Reflect.getOwnMetadata('propMetadata', target.constructor);
meta = meta || {};
meta[name] = meta[name] || [];
meta[name].unshift(decoratorInstance);
Reflect.defineMetadata('propMetadata', meta, target.constructor);
};
}
}
PropDecoratorFactory.prototype = Object.create(decoratorCls.prototype);
return PropDecoratorFactory;
}
exports.makePropDecorator = makePropDecorator;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/di/forward_ref", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
function forwardRef(forwardRefFn) {
forwardRefFn.__forward_ref__ = forwardRef;
forwardRefFn.toString = function() {
return lang_1.stringify(this());
};
return forwardRefFn;
}
exports.forwardRef = forwardRef;
function resolveForwardRef(type) {
if (lang_1.isFunction(type) && type.hasOwnProperty('__forward_ref__') && type.__forward_ref__ === forwardRef) {
return type();
} else {
return type;
}
}
exports.resolveForwardRef = resolveForwardRef;
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/collection", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
exports.Map = lang_1.global.Map;
exports.Set = lang_1.global.Set;
var createMapFromPairs = (function() {
try {
if (new exports.Map([[1, 2]]).size === 1) {
return function createMapFromPairs(pairs) {
return new exports.Map(pairs);
};
}
} catch (e) {}
return function createMapAndPopulateFromPairs(pairs) {
var map = new exports.Map();
for (var i = 0; i < pairs.length; i++) {
var pair = pairs[i];
map.set(pair[0], pair[1]);
}
return map;
};
})();
var createMapFromMap = (function() {
try {
if (new exports.Map(new exports.Map())) {
return function createMapFromMap(m) {
return new exports.Map(m);
};
}
} catch (e) {}
return function createMapAndPopulateFromMap(m) {
var map = new exports.Map();
m.forEach(function(v, k) {
map.set(k, v);
});
return map;
};
})();
var _clearValues = (function() {
if ((new exports.Map()).keys().next) {
return function _clearValues(m) {
var keyIterator = m.keys();
var k;
while (!((k = keyIterator.next()).done)) {
m.set(k.value, null);
}
};
} else {
return function _clearValuesWithForeEach(m) {
m.forEach(function(v, k) {
m.set(k, null);
});
};
}
})();
var _arrayFromMap = (function() {
try {
if ((new exports.Map()).values().next) {
return function createArrayFromMap(m, getValues) {
return getValues ? Array.from(m.values()) : Array.from(m.keys());
};
}
} catch (e) {}
return function createArrayFromMapWithForeach(m, getValues) {
var res = ListWrapper.createFixedSize(m.size),
i = 0;
m.forEach(function(v, k) {
res[i] = getValues ? v : k;
i++;
});
return res;
};
})();
var MapWrapper = (function() {
function MapWrapper() {}
MapWrapper.clone = function(m) {
return createMapFromMap(m);
};
MapWrapper.createFromStringMap = function(stringMap) {
var result = new exports.Map();
for (var prop in stringMap) {
result.set(prop, stringMap[prop]);
}
return result;
};
MapWrapper.toStringMap = function(m) {
var r = {};
m.forEach(function(v, k) {
return r[k] = v;
});
return r;
};
MapWrapper.createFromPairs = function(pairs) {
return createMapFromPairs(pairs);
};
MapWrapper.clearValues = function(m) {
_clearValues(m);
};
MapWrapper.iterable = function(m) {
return m;
};
MapWrapper.keys = function(m) {
return _arrayFromMap(m, false);
};
MapWrapper.values = function(m) {
return _arrayFromMap(m, true);
};
return MapWrapper;
})();
exports.MapWrapper = MapWrapper;
var StringMapWrapper = (function() {
function StringMapWrapper() {}
StringMapWrapper.create = function() {
return {};
};
StringMapWrapper.contains = function(map, key) {
return map.hasOwnProperty(key);
};
StringMapWrapper.get = function(map, key) {
return map.hasOwnProperty(key) ? map[key] : undefined;
};
StringMapWrapper.set = function(map, key, value) {
map[key] = value;
};
StringMapWrapper.keys = function(map) {
return Object.keys(map);
};
StringMapWrapper.values = function(map) {
return Object.keys(map).reduce(function(r, a) {
r.push(map[a]);
return r;
}, []);
};
StringMapWrapper.isEmpty = function(map) {
for (var prop in map) {
return false;
}
return true;
};
StringMapWrapper.delete = function(map, key) {
delete map[key];
};
StringMapWrapper.forEach = function(map, callback) {
for (var prop in map) {
if (map.hasOwnProperty(prop)) {
callback(map[prop], prop);
}
}
};
StringMapWrapper.merge = function(m1, m2) {
var m = {};
for (var attr in m1) {
if (m1.hasOwnProperty(attr)) {
m[attr] = m1[attr];
}
}
for (var attr in m2) {
if (m2.hasOwnProperty(attr)) {
m[attr] = m2[attr];
}
}
return m;
};
StringMapWrapper.equals = function(m1, m2) {
var k1 = Object.keys(m1);
var k2 = Object.keys(m2);
if (k1.length != k2.length) {
return false;
}
var key;
for (var i = 0; i < k1.length; i++) {
key = k1[i];
if (m1[key] !== m2[key]) {
return false;
}
}
return true;
};
return StringMapWrapper;
})();
exports.StringMapWrapper = StringMapWrapper;
var ListWrapper = (function() {
function ListWrapper() {}
ListWrapper.createFixedSize = function(size) {
return new Array(size);
};
ListWrapper.createGrowableSize = function(size) {
return new Array(size);
};
ListWrapper.clone = function(array) {
return array.slice(0);
};
ListWrapper.createImmutable = function(array) {
var result = ListWrapper.clone(array);
Object.seal(result);
return result;
};
ListWrapper.forEachWithIndex = function(array, fn) {
for (var i = 0; i < array.length; i++) {
fn(array[i], i);
}
};
ListWrapper.first = function(array) {
if (!array)
return null;
return array[0];
};
ListWrapper.last = function(array) {
if (!array || array.length == 0)
return null;
return array[array.length - 1];
};
ListWrapper.indexOf = function(array, value, startIndex) {
if (startIndex === void 0) {
startIndex = 0;
}
return array.indexOf(value, startIndex);
};
ListWrapper.contains = function(list, el) {
return list.indexOf(el) !== -1;
};
ListWrapper.reversed = function(array) {
var a = ListWrapper.clone(array);
return a.reverse();
};
ListWrapper.concat = function(a, b) {
return a.concat(b);
};
ListWrapper.insert = function(list, index, value) {
list.splice(index, 0, value);
};
ListWrapper.removeAt = function(list, index) {
var res = list[index];
list.splice(index, 1);
return res;
};
ListWrapper.removeAll = function(list, items) {
for (var i = 0; i < items.length; ++i) {
var index = list.indexOf(items[i]);
list.splice(index, 1);
}
};
ListWrapper.remove = function(list, el) {
var index = list.indexOf(el);
if (index > -1) {
list.splice(index, 1);
return true;
}
return false;
};
ListWrapper.clear = function(list) {
list.length = 0;
};
ListWrapper.isEmpty = function(list) {
return list.length == 0;
};
ListWrapper.fill = function(list, value, start, end) {
if (start === void 0) {
start = 0;
}
if (end === void 0) {
end = null;
}
list.fill(value, start, end === null ? list.length : end);
};
ListWrapper.equals = function(a, b) {
if (a.length != b.length)
return false;
for (var i = 0; i < a.length; ++i) {
if (a[i] !== b[i])
return false;
}
return true;
};
ListWrapper.slice = function(l, from, to) {
if (from === void 0) {
from = 0;
}
if (to === void 0) {
to = null;
}
return l.slice(from, to === null ? undefined : to);
};
ListWrapper.splice = function(l, from, length) {
return l.splice(from, length);
};
ListWrapper.sort = function(l, compareFn) {
if (lang_1.isPresent(compareFn)) {
l.sort(compareFn);
} else {
l.sort();
}
};
ListWrapper.toString = function(l) {
return l.toString();
};
ListWrapper.toJSON = function(l) {
return JSON.stringify(l);
};
ListWrapper.maximum = function(list, predicate) {
if (list.length == 0) {
return null;
}
var solution = null;
var maxValue = -Infinity;
for (var index = 0; index < list.length; index++) {
var candidate = list[index];
if (lang_1.isBlank(candidate)) {
continue;
}
var candidateValue = predicate(candidate);
if (candidateValue > maxValue) {
solution = candidate;
maxValue = candidateValue;
}
}
return solution;
};
ListWrapper.isImmutable = function(list) {
return Object.isSealed(list);
};
ListWrapper.flatten = function(array) {
var res = [];
array.forEach(function(a) {
return res = res.concat(a);
});
return res;
};
return ListWrapper;
})();
exports.ListWrapper = ListWrapper;
function isListLikeIterable(obj) {
if (!lang_1.isJsObject(obj))
return false;
return lang_1.isArray(obj) || (!(obj instanceof exports.Map) && lang_1.getSymbolIterator() in obj);
}
exports.isListLikeIterable = isListLikeIterable;
function areIterablesEqual(a, b, comparator) {
var iterator1 = a[lang_1.getSymbolIterator()]();
var iterator2 = b[lang_1.getSymbolIterator()]();
while (true) {
var item1 = iterator1.next();
var item2 = iterator2.next();
if (item1.done && item2.done)
return true;
if (item1.done || item2.done)
return false;
if (!comparator(item1.value, item2.value))
return false;
}
}
exports.areIterablesEqual = areIterablesEqual;
function iterateListLike(obj, fn) {
if (lang_1.isArray(obj)) {
for (var i = 0; i < obj.length; i++) {
fn(obj[i]);
}
} else {
var iterator = obj[lang_1.getSymbolIterator()]();
var item;
while (!((item = iterator.next()).done)) {
fn(item.value);
}
}
}
exports.iterateListLike = iterateListLike;
var createSetFromList = (function() {
var test = new exports.Set([1, 2, 3]);
if (test.size === 3) {
return function createSetFromList(lst) {
return new exports.Set(lst);
};
} else {
return function createSetAndPopulateFromList(lst) {
var res = new exports.Set(lst);
if (res.size !== lst.length) {
for (var i = 0; i < lst.length; i++) {
res.add(lst[i]);
}
}
return res;
};
}
})();
var SetWrapper = (function() {
function SetWrapper() {}
SetWrapper.createFromList = function(lst) {
return createSetFromList(lst);
};
SetWrapper.has = function(s, key) {
return s.has(key);
};
SetWrapper.delete = function(m, k) {
m.delete(k);
};
return SetWrapper;
})();
exports.SetWrapper = SetWrapper;
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/base_wrapped_exception", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var BaseWrappedException = (function(_super) {
__extends(BaseWrappedException, _super);
function BaseWrappedException(message) {
_super.call(this, message);
}
Object.defineProperty(BaseWrappedException.prototype, "wrapperMessage", {
get: function() {
return '';
},
enumerable: true,
configurable: true
});
Object.defineProperty(BaseWrappedException.prototype, "wrapperStack", {
get: function() {
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BaseWrappedException.prototype, "originalException", {
get: function() {
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BaseWrappedException.prototype, "originalStack", {
get: function() {
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BaseWrappedException.prototype, "context", {
get: function() {
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(BaseWrappedException.prototype, "message", {
get: function() {
return '';
},
enumerable: true,
configurable: true
});
return BaseWrappedException;
})(Error);
exports.BaseWrappedException = BaseWrappedException;
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/exception_handler", ["angular2/src/facade/lang", "angular2/src/facade/base_wrapped_exception", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var base_wrapped_exception_1 = require("angular2/src/facade/base_wrapped_exception");
var collection_1 = require("angular2/src/facade/collection");
var _ArrayLogger = (function() {
function _ArrayLogger() {
this.res = [];
}
_ArrayLogger.prototype.log = function(s) {
this.res.push(s);
};
_ArrayLogger.prototype.logError = function(s) {
this.res.push(s);
};
_ArrayLogger.prototype.logGroup = function(s) {
this.res.push(s);
};
_ArrayLogger.prototype.logGroupEnd = function() {};
;
return _ArrayLogger;
})();
var ExceptionHandler = (function() {
function ExceptionHandler(_logger, _rethrowException) {
if (_rethrowException === void 0) {
_rethrowException = true;
}
this._logger = _logger;
this._rethrowException = _rethrowException;
}
ExceptionHandler.exceptionToString = function(exception, stackTrace, reason) {
if (stackTrace === void 0) {
stackTrace = null;
}
if (reason === void 0) {
reason = null;
}
var l = new _ArrayLogger();
var e = new ExceptionHandler(l, false);
e.call(exception, stackTrace, reason);
return l.res.join("\n");
};
ExceptionHandler.prototype.call = function(exception, stackTrace, reason) {
if (stackTrace === void 0) {
stackTrace = null;
}
if (reason === void 0) {
reason = null;
}
var originalException = this._findOriginalException(exception);
var originalStack = this._findOriginalStack(exception);
var context = this._findContext(exception);
this._logger.logGroup("EXCEPTION: " + this._extractMessage(exception));
if (lang_1.isPresent(stackTrace) && lang_1.isBlank(originalStack)) {
this._logger.logError("STACKTRACE:");
this._logger.logError(this._longStackTrace(stackTrace));
}
if (lang_1.isPresent(reason)) {
this._logger.logError("REASON: " + reason);
}
if (lang_1.isPresent(originalException)) {
this._logger.logError("ORIGINAL EXCEPTION: " + this._extractMessage(originalException));
}
if (lang_1.isPresent(originalStack)) {
this._logger.logError("ORIGINAL STACKTRACE:");
this._logger.logError(this._longStackTrace(originalStack));
}
if (lang_1.isPresent(context)) {
this._logger.logError("ERROR CONTEXT:");
this._logger.logError(context);
}
this._logger.logGroupEnd();
if (this._rethrowException)
throw exception;
};
ExceptionHandler.prototype._extractMessage = function(exception) {
return exception instanceof base_wrapped_exception_1.BaseWrappedException ? exception.wrapperMessage : exception.toString();
};
ExceptionHandler.prototype._longStackTrace = function(stackTrace) {
return collection_1.isListLikeIterable(stackTrace) ? stackTrace.join("\n\n-----async gap-----\n") : stackTrace.toString();
};
ExceptionHandler.prototype._findContext = function(exception) {
try {
if (!(exception instanceof base_wrapped_exception_1.BaseWrappedException))
return null;
return lang_1.isPresent(exception.context) ? exception.context : this._findContext(exception.originalException);
} catch (e) {
return null;
}
};
ExceptionHandler.prototype._findOriginalException = function(exception) {
if (!(exception instanceof base_wrapped_exception_1.BaseWrappedException))
return null;
var e = exception.originalException;
while (e instanceof base_wrapped_exception_1.BaseWrappedException && lang_1.isPresent(e.originalException)) {
e = e.originalException;
}
return e;
};
ExceptionHandler.prototype._findOriginalStack = function(exception) {
if (!(exception instanceof base_wrapped_exception_1.BaseWrappedException))
return null;
var e = exception;
var stack = exception.originalStack;
while (e instanceof base_wrapped_exception_1.BaseWrappedException && lang_1.isPresent(e.originalException)) {
e = e.originalException;
if (e instanceof base_wrapped_exception_1.BaseWrappedException && lang_1.isPresent(e.originalException)) {
stack = e.originalStack;
}
}
return stack;
};
return ExceptionHandler;
})();
exports.ExceptionHandler = ExceptionHandler;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/reflection/reflector_reader", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var ReflectorReader = (function() {
function ReflectorReader() {}
return ReflectorReader;
})();
exports.ReflectorReader = ReflectorReader;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/reflection/reflection_capabilities", ["angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var ReflectionCapabilities = (function() {
function ReflectionCapabilities(reflect) {
this._reflect = lang_1.isPresent(reflect) ? reflect : lang_1.global.Reflect;
}
ReflectionCapabilities.prototype.isReflectionEnabled = function() {
return true;
};
ReflectionCapabilities.prototype.factory = function(t) {
switch (t.length) {
case 0:
return function() {
return new t();
};
case 1:
return function(a1) {
return new t(a1);
};
case 2:
return function(a1, a2) {
return new t(a1, a2);
};
case 3:
return function(a1, a2, a3) {
return new t(a1, a2, a3);
};
case 4:
return function(a1, a2, a3, a4) {
return new t(a1, a2, a3, a4);
};
case 5:
return function(a1, a2, a3, a4, a5) {
return new t(a1, a2, a3, a4, a5);
};
case 6:
return function(a1, a2, a3, a4, a5, a6) {
return new t(a1, a2, a3, a4, a5, a6);
};
case 7:
return function(a1, a2, a3, a4, a5, a6, a7) {
return new t(a1, a2, a3, a4, a5, a6, a7);
};
case 8:
return function(a1, a2, a3, a4, a5, a6, a7, a8) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8);
};
case 9:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9);
};
case 10:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
};
case 11:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);
};
case 12:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
};
case 13:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13);
};
case 14:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
};
case 15:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
};
case 16:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16);
};
case 17:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17);
};
case 18:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18);
};
case 19:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19);
};
case 20:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) {
return new t(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
};
}
;
throw new Error("Cannot create a factory for '" + lang_1.stringify(t) + "' because its constructor has more than 20 arguments");
};
ReflectionCapabilities.prototype._zipTypesAndAnnotations = function(paramTypes, paramAnnotations) {
var result;
if (typeof paramTypes === 'undefined') {
result = new Array(paramAnnotations.length);
} else {
result = new Array(paramTypes.length);
}
for (var i = 0; i < result.length; i++) {
if (typeof paramTypes === 'undefined') {
result[i] = [];
} else if (paramTypes[i] != Object) {
result[i] = [paramTypes[i]];
} else {
result[i] = [];
}
if (lang_1.isPresent(paramAnnotations) && lang_1.isPresent(paramAnnotations[i])) {
result[i] = result[i].concat(paramAnnotations[i]);
}
}
return result;
};
ReflectionCapabilities.prototype.parameters = function(typeOrFunc) {
if (lang_1.isPresent(typeOrFunc.parameters)) {
return typeOrFunc.parameters;
}
if (lang_1.isPresent(this._reflect) && lang_1.isPresent(this._reflect.getMetadata)) {
var paramAnnotations = this._reflect.getMetadata('parameters', typeOrFunc);
var paramTypes = this._reflect.getMetadata('design:paramtypes', typeOrFunc);
if (lang_1.isPresent(paramTypes) || lang_1.isPresent(paramAnnotations)) {
return this._zipTypesAndAnnotations(paramTypes, paramAnnotations);
}
}
var parameters = new Array(typeOrFunc.length);
parameters.fill(undefined);
return parameters;
};
ReflectionCapabilities.prototype.annotations = function(typeOrFunc) {
if (lang_1.isPresent(typeOrFunc.annotations)) {
var annotations = typeOrFunc.annotations;
if (lang_1.isFunction(annotations) && annotations.annotations) {
annotations = annotations.annotations;
}
return annotations;
}
if (lang_1.isPresent(this._reflect) && lang_1.isPresent(this._reflect.getMetadata)) {
var annotations = this._reflect.getMetadata('annotations', typeOrFunc);
if (lang_1.isPresent(annotations))
return annotations;
}
return [];
};
ReflectionCapabilities.prototype.propMetadata = function(typeOrFunc) {
if (lang_1.isPresent(typeOrFunc.propMetadata)) {
var propMetadata = typeOrFunc.propMetadata;
if (lang_1.isFunction(propMetadata) && propMetadata.propMetadata) {
propMetadata = propMetadata.propMetadata;
}
return propMetadata;
}
if (lang_1.isPresent(this._reflect) && lang_1.isPresent(this._reflect.getMetadata)) {
var propMetadata = this._reflect.getMetadata('propMetadata', typeOrFunc);
if (lang_1.isPresent(propMetadata))
return propMetadata;
}
return {};
};
ReflectionCapabilities.prototype.interfaces = function(type) {
throw new exceptions_1.BaseException("JavaScript does not support interfaces");
};
ReflectionCapabilities.prototype.getter = function(name) {
return new Function('o', 'return o.' + name + ';');
};
ReflectionCapabilities.prototype.setter = function(name) {
return new Function('o', 'v', 'return o.' + name + ' = v;');
};
ReflectionCapabilities.prototype.method = function(name) {
var functionBody = "if (!o." + name + ") throw new Error('\"" + name + "\" is undefined');\n return o." + name + ".apply(o, args);";
return new Function('o', 'args', functionBody);
};
ReflectionCapabilities.prototype.importUri = function(type) {
return './';
};
return ReflectionCapabilities;
})();
exports.ReflectionCapabilities = ReflectionCapabilities;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/di/key", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/core/di/forward_ref"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var forward_ref_1 = require("angular2/src/core/di/forward_ref");
var Key = (function() {
function Key(token, id) {
this.token = token;
this.id = id;
if (lang_1.isBlank(token)) {
throw new exceptions_1.BaseException('Token must be defined!');
}
}
Object.defineProperty(Key.prototype, "displayName", {
get: function() {
return lang_1.stringify(this.token);
},
enumerable: true,
configurable: true
});
Key.get = function(token) {
return _globalKeyRegistry.get(forward_ref_1.resolveForwardRef(token));
};
Object.defineProperty(Key, "numberOfKeys", {
get: function() {
return _globalKeyRegistry.numberOfKeys;
},
enumerable: true,
configurable: true
});
return Key;
})();
exports.Key = Key;
var KeyRegistry = (function() {
function KeyRegistry() {
this._allKeys = new Map();
}
KeyRegistry.prototype.get = function(token) {
if (token instanceof Key)
return token;
if (this._allKeys.has(token)) {
return this._allKeys.get(token);
}
var newKey = new Key(token, Key.numberOfKeys);
this._allKeys.set(token, newKey);
return newKey;
};
Object.defineProperty(KeyRegistry.prototype, "numberOfKeys", {
get: function() {
return this._allKeys.size;
},
enumerable: true,
configurable: true
});
return KeyRegistry;
})();
exports.KeyRegistry = KeyRegistry;
var _globalKeyRegistry = new KeyRegistry();
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/di/exceptions", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
function findFirstClosedCycle(keys) {
var res = [];
for (var i = 0; i < keys.length; ++i) {
if (collection_1.ListWrapper.contains(res, keys[i])) {
res.push(keys[i]);
return res;
} else {
res.push(keys[i]);
}
}
return res;
}
function constructResolvingPath(keys) {
if (keys.length > 1) {
var reversed = findFirstClosedCycle(collection_1.ListWrapper.reversed(keys));
var tokenStrs = reversed.map(function(k) {
return lang_1.stringify(k.token);
});
return " (" + tokenStrs.join(' -> ') + ")";
} else {
return "";
}
}
var AbstractProviderError = (function(_super) {
__extends(AbstractProviderError, _super);
function AbstractProviderError(injector, key, constructResolvingMessage) {
_super.call(this, "DI Exception");
this.keys = [key];
this.injectors = [injector];
this.constructResolvingMessage = constructResolvingMessage;
this.message = this.constructResolvingMessage(this.keys);
}
AbstractProviderError.prototype.addKey = function(injector, key) {
this.injectors.push(injector);
this.keys.push(key);
this.message = this.constructResolvingMessage(this.keys);
};
Object.defineProperty(AbstractProviderError.prototype, "context", {
get: function() {
return this.injectors[this.injectors.length - 1].debugContext();
},
enumerable: true,
configurable: true
});
return AbstractProviderError;
})(exceptions_1.BaseException);
exports.AbstractProviderError = AbstractProviderError;
var NoProviderError = (function(_super) {
__extends(NoProviderError, _super);
function NoProviderError(injector, key) {
_super.call(this, injector, key, function(keys) {
var first = lang_1.stringify(collection_1.ListWrapper.first(keys).token);
return "No provider for " + first + "!" + constructResolvingPath(keys);
});
}
return NoProviderError;
})(AbstractProviderError);
exports.NoProviderError = NoProviderError;
var CyclicDependencyError = (function(_super) {
__extends(CyclicDependencyError, _super);
function CyclicDependencyError(injector, key) {
_super.call(this, injector, key, function(keys) {
return "Cannot instantiate cyclic dependency!" + constructResolvingPath(keys);
});
}
return CyclicDependencyError;
})(AbstractProviderError);
exports.CyclicDependencyError = CyclicDependencyError;
var InstantiationError = (function(_super) {
__extends(InstantiationError, _super);
function InstantiationError(injector, originalException, originalStack, key) {
_super.call(this, "DI Exception", originalException, originalStack, null);
this.keys = [key];
this.injectors = [injector];
}
InstantiationError.prototype.addKey = function(injector, key) {
this.injectors.push(injector);
this.keys.push(key);
};
Object.defineProperty(InstantiationError.prototype, "wrapperMessage", {
get: function() {
var first = lang_1.stringify(collection_1.ListWrapper.first(this.keys).token);
return "Error during instantiation of " + first + "!" + constructResolvingPath(this.keys) + ".";
},
enumerable: true,
configurable: true
});
Object.defineProperty(InstantiationError.prototype, "causeKey", {
get: function() {
return this.keys[0];
},
enumerable: true,
configurable: true
});
Object.defineProperty(InstantiationError.prototype, "context", {
get: function() {
return this.injectors[this.injectors.length - 1].debugContext();
},
enumerable: true,
configurable: true
});
return InstantiationError;
})(exceptions_1.WrappedException);
exports.InstantiationError = InstantiationError;
var InvalidProviderError = (function(_super) {
__extends(InvalidProviderError, _super);
function InvalidProviderError(provider) {
_super.call(this, "Invalid provider - only instances of Provider and Type are allowed, got: " + provider.toString());
}
return InvalidProviderError;
})(exceptions_1.BaseException);
exports.InvalidProviderError = InvalidProviderError;
var NoAnnotationError = (function(_super) {
__extends(NoAnnotationError, _super);
function NoAnnotationError(typeOrFunc, params) {
_super.call(this, NoAnnotationError._genMessage(typeOrFunc, params));
}
NoAnnotationError._genMessage = function(typeOrFunc, params) {
var signature = [];
for (var i = 0,
ii = params.length; i < ii; i++) {
var parameter = params[i];
if (lang_1.isBlank(parameter) || parameter.length == 0) {
signature.push('?');
} else {
signature.push(parameter.map(lang_1.stringify).join(' '));
}
}
return "Cannot resolve all parameters for '" + lang_1.stringify(typeOrFunc) + "'(" + signature.join(', ') + "). " + "Make sure that all the parameters are decorated with Inject or have valid type annotations and that '" + lang_1.stringify(typeOrFunc) + "' is decorated with Injectable.";
};
return NoAnnotationError;
})(exceptions_1.BaseException);
exports.NoAnnotationError = NoAnnotationError;
var OutOfBoundsError = (function(_super) {
__extends(OutOfBoundsError, _super);
function OutOfBoundsError(index) {
_super.call(this, "Index " + index + " is out-of-bounds.");
}
return OutOfBoundsError;
})(exceptions_1.BaseException);
exports.OutOfBoundsError = OutOfBoundsError;
var MixingMultiProvidersWithRegularProvidersError = (function(_super) {
__extends(MixingMultiProvidersWithRegularProvidersError, _super);
function MixingMultiProvidersWithRegularProvidersError(provider1, provider2) {
_super.call(this, "Cannot mix multi providers and regular providers, got: " + provider1.toString() + " " + provider2.toString());
}
return MixingMultiProvidersWithRegularProvidersError;
})(exceptions_1.BaseException);
exports.MixingMultiProvidersWithRegularProvidersError = MixingMultiProvidersWithRegularProvidersError;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/di/opaque_token", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var OpaqueToken = (function() {
function OpaqueToken(_desc) {
this._desc = _desc;
}
OpaqueToken.prototype.toString = function() {
return "Token " + this._desc;
};
OpaqueToken = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [String])], OpaqueToken);
return OpaqueToken;
})();
exports.OpaqueToken = OpaqueToken;
global.define = __define;
return module.exports;
});
System.register("angular2/src/animate/css_animation_options", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var CssAnimationOptions = (function() {
function CssAnimationOptions() {
this.classesToAdd = [];
this.classesToRemove = [];
this.animationClasses = [];
}
return CssAnimationOptions;
})();
exports.CssAnimationOptions = CssAnimationOptions;
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/math", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
exports.Math = lang_1.global.Math;
exports.NaN = typeof exports.NaN;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/util", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var CAMEL_CASE_REGEXP = /([A-Z])/g;
var DASH_CASE_REGEXP = /-([a-z])/g;
function camelCaseToDashCase(input) {
return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function(m) {
return '-' + m[1].toLowerCase();
});
}
exports.camelCaseToDashCase = camelCaseToDashCase;
function dashCaseToCamelCase(input) {
return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function(m) {
return m[1].toUpperCase();
});
}
exports.dashCaseToCamelCase = dashCaseToCamelCase;
global.define = __define;
return module.exports;
});
System.register("angular2/src/animate/browser_details", ["angular2/src/core/di", "angular2/src/facade/math", "angular2/src/platform/dom/dom_adapter"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var math_1 = require("angular2/src/facade/math");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var BrowserDetails = (function() {
function BrowserDetails() {
this.elapsedTimeIncludesDelay = false;
this.doesElapsedTimeIncludesDelay();
}
BrowserDetails.prototype.doesElapsedTimeIncludesDelay = function() {
var _this = this;
var div = dom_adapter_1.DOM.createElement('div');
dom_adapter_1.DOM.setAttribute(div, 'style', "position: absolute; top: -9999px; left: -9999px; width: 1px;\n height: 1px; transition: all 1ms linear 1ms;");
this.raf(function(timestamp) {
dom_adapter_1.DOM.on(div, 'transitionend', function(event) {
var elapsed = math_1.Math.round(event.elapsedTime * 1000);
_this.elapsedTimeIncludesDelay = elapsed == 2;
dom_adapter_1.DOM.remove(div);
});
dom_adapter_1.DOM.setStyle(div, 'width', '2px');
}, 2);
};
BrowserDetails.prototype.raf = function(callback, frames) {
if (frames === void 0) {
frames = 1;
}
var queue = new RafQueue(callback, frames);
return function() {
return queue.cancel();
};
};
BrowserDetails = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], BrowserDetails);
return BrowserDetails;
})();
exports.BrowserDetails = BrowserDetails;
var RafQueue = (function() {
function RafQueue(callback, frames) {
this.callback = callback;
this.frames = frames;
this._raf();
}
RafQueue.prototype._raf = function() {
var _this = this;
this.currentFrameId = dom_adapter_1.DOM.requestAnimationFrame(function(timestamp) {
return _this._nextFrame(timestamp);
});
};
RafQueue.prototype._nextFrame = function(timestamp) {
this.frames--;
if (this.frames > 0) {
this._raf();
} else {
this.callback(timestamp);
}
};
RafQueue.prototype.cancel = function() {
dom_adapter_1.DOM.cancelAnimationFrame(this.currentFrameId);
this.currentFrameId = null;
};
return RafQueue;
})();
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/dom_tokens", ["angular2/src/core/di", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
exports.DOCUMENT = lang_1.CONST_EXPR(new di_1.OpaqueToken('DocumentToken'));
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/promise", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var PromiseCompleter = (function() {
function PromiseCompleter() {
var _this = this;
this.promise = new Promise(function(res, rej) {
_this.resolve = res;
_this.reject = rej;
});
}
return PromiseCompleter;
})();
exports.PromiseCompleter = PromiseCompleter;
var PromiseWrapper = (function() {
function PromiseWrapper() {}
PromiseWrapper.resolve = function(obj) {
return Promise.resolve(obj);
};
PromiseWrapper.reject = function(obj, _) {
return Promise.reject(obj);
};
PromiseWrapper.catchError = function(promise, onError) {
return promise.catch(onError);
};
PromiseWrapper.all = function(promises) {
if (promises.length == 0)
return Promise.resolve([]);
return Promise.all(promises);
};
PromiseWrapper.then = function(promise, success, rejection) {
return promise.then(success, rejection);
};
PromiseWrapper.wrap = function(computation) {
return new Promise(function(res, rej) {
try {
res(computation());
} catch (e) {
rej(e);
}
});
};
PromiseWrapper.scheduleMicrotask = function(computation) {
PromiseWrapper.then(PromiseWrapper.resolve(null), computation, function(_) {});
};
PromiseWrapper.isPromise = function(obj) {
return obj instanceof Promise;
};
PromiseWrapper.completer = function() {
return new PromiseCompleter();
};
return PromiseWrapper;
})();
exports.PromiseWrapper = PromiseWrapper;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/zone/ng_zone_impl", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var NgZoneError = (function() {
function NgZoneError(error, stackTrace) {
this.error = error;
this.stackTrace = stackTrace;
}
return NgZoneError;
})();
exports.NgZoneError = NgZoneError;
var NgZoneImpl = (function() {
function NgZoneImpl(_a) {
var _this = this;
var trace = _a.trace,
onEnter = _a.onEnter,
onLeave = _a.onLeave,
setMicrotask = _a.setMicrotask,
setMacrotask = _a.setMacrotask,
onError = _a.onError;
this.onEnter = onEnter;
this.onLeave = onLeave;
this.setMicrotask = setMicrotask;
this.setMacrotask = setMacrotask;
this.onError = onError;
if (Zone) {
this.outer = this.inner = Zone.current;
if (Zone['wtfZoneSpec']) {
this.inner = this.inner.fork(Zone['wtfZoneSpec']);
}
if (trace && Zone['longStackTraceZoneSpec']) {
this.inner = this.inner.fork(Zone['longStackTraceZoneSpec']);
}
this.inner = this.inner.fork({
name: 'angular',
properties: {'isAngularZone': true},
onInvokeTask: function(delegate, current, target, task, applyThis, applyArgs) {
try {
_this.onEnter();
return delegate.invokeTask(target, task, applyThis, applyArgs);
} finally {
_this.onLeave();
}
},
onInvoke: function(delegate, current, target, callback, applyThis, applyArgs, source) {
try {
_this.onEnter();
return delegate.invoke(target, callback, applyThis, applyArgs, source);
} finally {
_this.onLeave();
}
},
onHasTask: function(delegate, current, target, hasTaskState) {
delegate.hasTask(target, hasTaskState);
if (current == target) {
if (hasTaskState.change == 'microTask') {
_this.setMicrotask(hasTaskState.microTask);
} else if (hasTaskState.change == 'macroTask') {
_this.setMacrotask(hasTaskState.macroTask);
}
}
},
onHandleError: function(delegate, current, target, error) {
delegate.handleError(target, error);
_this.onError(new NgZoneError(error, error.stack));
return false;
}
});
} else {
throw new Error('Angular2 needs to be run with Zone.js polyfill.');
}
}
NgZoneImpl.isInAngularZone = function() {
return Zone.current.get('isAngularZone') === true;
};
NgZoneImpl.prototype.runInner = function(fn) {
return this.inner.runGuarded(fn);
};
;
NgZoneImpl.prototype.runOuter = function(fn) {
return this.outer.run(fn);
};
;
return NgZoneImpl;
})();
exports.NgZoneImpl = NgZoneImpl;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/metadata/di", ["angular2/src/facade/lang", "angular2/src/core/di", "angular2/src/core/di/metadata"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var di_1 = require("angular2/src/core/di");
var metadata_1 = require("angular2/src/core/di/metadata");
var AttributeMetadata = (function(_super) {
__extends(AttributeMetadata, _super);
function AttributeMetadata(attributeName) {
_super.call(this);
this.attributeName = attributeName;
}
Object.defineProperty(AttributeMetadata.prototype, "token", {
get: function() {
return this;
},
enumerable: true,
configurable: true
});
AttributeMetadata.prototype.toString = function() {
return "@Attribute(" + lang_1.stringify(this.attributeName) + ")";
};
AttributeMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [String])], AttributeMetadata);
return AttributeMetadata;
})(metadata_1.DependencyMetadata);
exports.AttributeMetadata = AttributeMetadata;
var QueryMetadata = (function(_super) {
__extends(QueryMetadata, _super);
function QueryMetadata(_selector, _a) {
var _b = _a === void 0 ? {} : _a,
_c = _b.descendants,
descendants = _c === void 0 ? false : _c,
_d = _b.first,
first = _d === void 0 ? false : _d;
_super.call(this);
this._selector = _selector;
this.descendants = descendants;
this.first = first;
}
Object.defineProperty(QueryMetadata.prototype, "isViewQuery", {
get: function() {
return false;
},
enumerable: true,
configurable: true
});
Object.defineProperty(QueryMetadata.prototype, "selector", {
get: function() {
return di_1.resolveForwardRef(this._selector);
},
enumerable: true,
configurable: true
});
Object.defineProperty(QueryMetadata.prototype, "isVarBindingQuery", {
get: function() {
return lang_1.isString(this.selector);
},
enumerable: true,
configurable: true
});
Object.defineProperty(QueryMetadata.prototype, "varBindings", {
get: function() {
return this.selector.split(',');
},
enumerable: true,
configurable: true
});
QueryMetadata.prototype.toString = function() {
return "@Query(" + lang_1.stringify(this.selector) + ")";
};
QueryMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object, Object])], QueryMetadata);
return QueryMetadata;
})(metadata_1.DependencyMetadata);
exports.QueryMetadata = QueryMetadata;
var ContentChildrenMetadata = (function(_super) {
__extends(ContentChildrenMetadata, _super);
function ContentChildrenMetadata(_selector, _a) {
var _b = (_a === void 0 ? {} : _a).descendants,
descendants = _b === void 0 ? false : _b;
_super.call(this, _selector, {descendants: descendants});
}
ContentChildrenMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object, Object])], ContentChildrenMetadata);
return ContentChildrenMetadata;
})(QueryMetadata);
exports.ContentChildrenMetadata = ContentChildrenMetadata;
var ContentChildMetadata = (function(_super) {
__extends(ContentChildMetadata, _super);
function ContentChildMetadata(_selector) {
_super.call(this, _selector, {
descendants: true,
first: true
});
}
ContentChildMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], ContentChildMetadata);
return ContentChildMetadata;
})(QueryMetadata);
exports.ContentChildMetadata = ContentChildMetadata;
var ViewQueryMetadata = (function(_super) {
__extends(ViewQueryMetadata, _super);
function ViewQueryMetadata(_selector, _a) {
var _b = _a === void 0 ? {} : _a,
_c = _b.descendants,
descendants = _c === void 0 ? false : _c,
_d = _b.first,
first = _d === void 0 ? false : _d;
_super.call(this, _selector, {
descendants: descendants,
first: first
});
}
Object.defineProperty(ViewQueryMetadata.prototype, "isViewQuery", {
get: function() {
return true;
},
enumerable: true,
configurable: true
});
ViewQueryMetadata.prototype.toString = function() {
return "@ViewQuery(" + lang_1.stringify(this.selector) + ")";
};
ViewQueryMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object, Object])], ViewQueryMetadata);
return ViewQueryMetadata;
})(QueryMetadata);
exports.ViewQueryMetadata = ViewQueryMetadata;
var ViewChildrenMetadata = (function(_super) {
__extends(ViewChildrenMetadata, _super);
function ViewChildrenMetadata(_selector) {
_super.call(this, _selector, {descendants: true});
}
ViewChildrenMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], ViewChildrenMetadata);
return ViewChildrenMetadata;
})(ViewQueryMetadata);
exports.ViewChildrenMetadata = ViewChildrenMetadata;
var ViewChildMetadata = (function(_super) {
__extends(ViewChildMetadata, _super);
function ViewChildMetadata(_selector) {
_super.call(this, _selector, {
descendants: true,
first: true
});
}
ViewChildMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], ViewChildMetadata);
return ViewChildMetadata;
})(ViewQueryMetadata);
exports.ViewChildMetadata = ViewChildMetadata;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/differs/iterable_differs", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var di_1 = require("angular2/src/core/di");
var IterableDiffers = (function() {
function IterableDiffers(factories) {
this.factories = factories;
}
IterableDiffers.create = function(factories, parent) {
if (lang_1.isPresent(parent)) {
var copied = collection_1.ListWrapper.clone(parent.factories);
factories = factories.concat(copied);
return new IterableDiffers(factories);
} else {
return new IterableDiffers(factories);
}
};
IterableDiffers.extend = function(factories) {
return new di_1.Provider(IterableDiffers, {
useFactory: function(parent) {
if (lang_1.isBlank(parent)) {
throw new exceptions_1.BaseException('Cannot extend IterableDiffers without a parent injector');
}
return IterableDiffers.create(factories, parent);
},
deps: [[IterableDiffers, new di_1.SkipSelfMetadata(), new di_1.OptionalMetadata()]]
});
};
IterableDiffers.prototype.find = function(iterable) {
var factory = this.factories.find(function(f) {
return f.supports(iterable);
});
if (lang_1.isPresent(factory)) {
return factory;
} else {
throw new exceptions_1.BaseException("Cannot find a differ supporting object '" + iterable + "' of type '" + lang_1.getTypeNameForDebugging(iterable) + "'");
}
};
IterableDiffers = __decorate([di_1.Injectable(), lang_1.CONST(), __metadata('design:paramtypes', [Array])], IterableDiffers);
return IterableDiffers;
})();
exports.IterableDiffers = IterableDiffers;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/differs/default_iterable_differ", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var lang_2 = require("angular2/src/facade/lang");
var DefaultIterableDifferFactory = (function() {
function DefaultIterableDifferFactory() {}
DefaultIterableDifferFactory.prototype.supports = function(obj) {
return collection_1.isListLikeIterable(obj);
};
DefaultIterableDifferFactory.prototype.create = function(cdRef, trackByFn) {
return new DefaultIterableDiffer(trackByFn);
};
DefaultIterableDifferFactory = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [])], DefaultIterableDifferFactory);
return DefaultIterableDifferFactory;
})();
exports.DefaultIterableDifferFactory = DefaultIterableDifferFactory;
var trackByIdentity = function(index, item) {
return item;
};
var DefaultIterableDiffer = (function() {
function DefaultIterableDiffer(_trackByFn) {
this._trackByFn = _trackByFn;
this._length = null;
this._collection = null;
this._linkedRecords = null;
this._unlinkedRecords = null;
this._previousItHead = null;
this._itHead = null;
this._itTail = null;
this._additionsHead = null;
this._additionsTail = null;
this._movesHead = null;
this._movesTail = null;
this._removalsHead = null;
this._removalsTail = null;
this._identityChangesHead = null;
this._identityChangesTail = null;
this._trackByFn = lang_2.isPresent(this._trackByFn) ? this._trackByFn : trackByIdentity;
}
Object.defineProperty(DefaultIterableDiffer.prototype, "collection", {
get: function() {
return this._collection;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DefaultIterableDiffer.prototype, "length", {
get: function() {
return this._length;
},
enumerable: true,
configurable: true
});
DefaultIterableDiffer.prototype.forEachItem = function(fn) {
var record;
for (record = this._itHead; record !== null; record = record._next) {
fn(record);
}
};
DefaultIterableDiffer.prototype.forEachPreviousItem = function(fn) {
var record;
for (record = this._previousItHead; record !== null; record = record._nextPrevious) {
fn(record);
}
};
DefaultIterableDiffer.prototype.forEachAddedItem = function(fn) {
var record;
for (record = this._additionsHead; record !== null; record = record._nextAdded) {
fn(record);
}
};
DefaultIterableDiffer.prototype.forEachMovedItem = function(fn) {
var record;
for (record = this._movesHead; record !== null; record = record._nextMoved) {
fn(record);
}
};
DefaultIterableDiffer.prototype.forEachRemovedItem = function(fn) {
var record;
for (record = this._removalsHead; record !== null; record = record._nextRemoved) {
fn(record);
}
};
DefaultIterableDiffer.prototype.forEachIdentityChange = function(fn) {
var record;
for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {
fn(record);
}
};
DefaultIterableDiffer.prototype.diff = function(collection) {
if (lang_2.isBlank(collection))
collection = [];
if (!collection_1.isListLikeIterable(collection)) {
throw new exceptions_1.BaseException("Error trying to diff '" + collection + "'");
}
if (this.check(collection)) {
return this;
} else {
return null;
}
};
DefaultIterableDiffer.prototype.onDestroy = function() {};
DefaultIterableDiffer.prototype.check = function(collection) {
var _this = this;
this._reset();
var record = this._itHead;
var mayBeDirty = false;
var index;
var item;
var itemTrackBy;
if (lang_2.isArray(collection)) {
if (collection !== this._collection || !collection_1.ListWrapper.isImmutable(collection)) {
var list = collection;
this._length = collection.length;
for (index = 0; index < this._length; index++) {
item = list[index];
itemTrackBy = this._trackByFn(index, item);
if (record === null || !lang_2.looseIdentical(record.trackById, itemTrackBy)) {
record = this._mismatch(record, item, itemTrackBy, index);
mayBeDirty = true;
} else {
if (mayBeDirty) {
record = this._verifyReinsertion(record, item, itemTrackBy, index);
}
if (!lang_2.looseIdentical(record.item, item))
this._addIdentityChange(record, item);
}
record = record._next;
}
this._truncate(record);
}
} else {
index = 0;
collection_1.iterateListLike(collection, function(item) {
itemTrackBy = _this._trackByFn(index, item);
if (record === null || !lang_2.looseIdentical(record.trackById, itemTrackBy)) {
record = _this._mismatch(record, item, itemTrackBy, index);
mayBeDirty = true;
} else {
if (mayBeDirty) {
record = _this._verifyReinsertion(record, item, itemTrackBy, index);
}
if (!lang_2.looseIdentical(record.item, item))
_this._addIdentityChange(record, item);
}
record = record._next;
index++;
});
this._length = index;
this._truncate(record);
}
this._collection = collection;
return this.isDirty;
};
Object.defineProperty(DefaultIterableDiffer.prototype, "isDirty", {
get: function() {
return this._additionsHead !== null || this._movesHead !== null || this._removalsHead !== null || this._identityChangesHead !== null;
},
enumerable: true,
configurable: true
});
DefaultIterableDiffer.prototype._reset = function() {
if (this.isDirty) {
var record;
var nextRecord;
for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {
record._nextPrevious = record._next;
}
for (record = this._additionsHead; record !== null; record = record._nextAdded) {
record.previousIndex = record.currentIndex;
}
this._additionsHead = this._additionsTail = null;
for (record = this._movesHead; record !== null; record = nextRecord) {
record.previousIndex = record.currentIndex;
nextRecord = record._nextMoved;
}
this._movesHead = this._movesTail = null;
this._removalsHead = this._removalsTail = null;
this._identityChangesHead = this._identityChangesTail = null;
}
};
DefaultIterableDiffer.prototype._mismatch = function(record, item, itemTrackBy, index) {
var previousRecord;
if (record === null) {
previousRecord = this._itTail;
} else {
previousRecord = record._prev;
this._remove(record);
}
record = this._linkedRecords === null ? null : this._linkedRecords.get(itemTrackBy, index);
if (record !== null) {
if (!lang_2.looseIdentical(record.item, item))
this._addIdentityChange(record, item);
this._moveAfter(record, previousRecord, index);
} else {
record = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);
if (record !== null) {
if (!lang_2.looseIdentical(record.item, item))
this._addIdentityChange(record, item);
this._reinsertAfter(record, previousRecord, index);
} else {
record = this._addAfter(new CollectionChangeRecord(item, itemTrackBy), previousRecord, index);
}
}
return record;
};
DefaultIterableDiffer.prototype._verifyReinsertion = function(record, item, itemTrackBy, index) {
var reinsertRecord = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);
if (reinsertRecord !== null) {
record = this._reinsertAfter(reinsertRecord, record._prev, index);
} else if (record.currentIndex != index) {
record.currentIndex = index;
this._addToMoves(record, index);
}
return record;
};
DefaultIterableDiffer.prototype._truncate = function(record) {
while (record !== null) {
var nextRecord = record._next;
this._addToRemovals(this._unlink(record));
record = nextRecord;
}
if (this._unlinkedRecords !== null) {
this._unlinkedRecords.clear();
}
if (this._additionsTail !== null) {
this._additionsTail._nextAdded = null;
}
if (this._movesTail !== null) {
this._movesTail._nextMoved = null;
}
if (this._itTail !== null) {
this._itTail._next = null;
}
if (this._removalsTail !== null) {
this._removalsTail._nextRemoved = null;
}
if (this._identityChangesTail !== null) {
this._identityChangesTail._nextIdentityChange = null;
}
};
DefaultIterableDiffer.prototype._reinsertAfter = function(record, prevRecord, index) {
if (this._unlinkedRecords !== null) {
this._unlinkedRecords.remove(record);
}
var prev = record._prevRemoved;
var next = record._nextRemoved;
if (prev === null) {
this._removalsHead = next;
} else {
prev._nextRemoved = next;
}
if (next === null) {
this._removalsTail = prev;
} else {
next._prevRemoved = prev;
}
this._insertAfter(record, prevRecord, index);
this._addToMoves(record, index);
return record;
};
DefaultIterableDiffer.prototype._moveAfter = function(record, prevRecord, index) {
this._unlink(record);
this._insertAfter(record, prevRecord, index);
this._addToMoves(record, index);
return record;
};
DefaultIterableDiffer.prototype._addAfter = function(record, prevRecord, index) {
this._insertAfter(record, prevRecord, index);
if (this._additionsTail === null) {
this._additionsTail = this._additionsHead = record;
} else {
this._additionsTail = this._additionsTail._nextAdded = record;
}
return record;
};
DefaultIterableDiffer.prototype._insertAfter = function(record, prevRecord, index) {
var next = prevRecord === null ? this._itHead : prevRecord._next;
record._next = next;
record._prev = prevRecord;
if (next === null) {
this._itTail = record;
} else {
next._prev = record;
}
if (prevRecord === null) {
this._itHead = record;
} else {
prevRecord._next = record;
}
if (this._linkedRecords === null) {
this._linkedRecords = new _DuplicateMap();
}
this._linkedRecords.put(record);
record.currentIndex = index;
return record;
};
DefaultIterableDiffer.prototype._remove = function(record) {
return this._addToRemovals(this._unlink(record));
};
DefaultIterableDiffer.prototype._unlink = function(record) {
if (this._linkedRecords !== null) {
this._linkedRecords.remove(record);
}
var prev = record._prev;
var next = record._next;
if (prev === null) {
this._itHead = next;
} else {
prev._next = next;
}
if (next === null) {
this._itTail = prev;
} else {
next._prev = prev;
}
return record;
};
DefaultIterableDiffer.prototype._addToMoves = function(record, toIndex) {
if (record.previousIndex === toIndex) {
return record;
}
if (this._movesTail === null) {
this._movesTail = this._movesHead = record;
} else {
this._movesTail = this._movesTail._nextMoved = record;
}
return record;
};
DefaultIterableDiffer.prototype._addToRemovals = function(record) {
if (this._unlinkedRecords === null) {
this._unlinkedRecords = new _DuplicateMap();
}
this._unlinkedRecords.put(record);
record.currentIndex = null;
record._nextRemoved = null;
if (this._removalsTail === null) {
this._removalsTail = this._removalsHead = record;
record._prevRemoved = null;
} else {
record._prevRemoved = this._removalsTail;
this._removalsTail = this._removalsTail._nextRemoved = record;
}
return record;
};
DefaultIterableDiffer.prototype._addIdentityChange = function(record, item) {
record.item = item;
if (this._identityChangesTail === null) {
this._identityChangesTail = this._identityChangesHead = record;
} else {
this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;
}
return record;
};
DefaultIterableDiffer.prototype.toString = function() {
var list = [];
this.forEachItem(function(record) {
return list.push(record);
});
var previous = [];
this.forEachPreviousItem(function(record) {
return previous.push(record);
});
var additions = [];
this.forEachAddedItem(function(record) {
return additions.push(record);
});
var moves = [];
this.forEachMovedItem(function(record) {
return moves.push(record);
});
var removals = [];
this.forEachRemovedItem(function(record) {
return removals.push(record);
});
var identityChanges = [];
this.forEachIdentityChange(function(record) {
return identityChanges.push(record);
});
return "collection: " + list.join(', ') + "\n" + "previous: " + previous.join(', ') + "\n" + "additions: " + additions.join(', ') + "\n" + "moves: " + moves.join(', ') + "\n" + "removals: " + removals.join(', ') + "\n" + "identityChanges: " + identityChanges.join(', ') + "\n";
};
return DefaultIterableDiffer;
})();
exports.DefaultIterableDiffer = DefaultIterableDiffer;
var CollectionChangeRecord = (function() {
function CollectionChangeRecord(item, trackById) {
this.item = item;
this.trackById = trackById;
this.currentIndex = null;
this.previousIndex = null;
this._nextPrevious = null;
this._prev = null;
this._next = null;
this._prevDup = null;
this._nextDup = null;
this._prevRemoved = null;
this._nextRemoved = null;
this._nextAdded = null;
this._nextMoved = null;
this._nextIdentityChange = null;
}
CollectionChangeRecord.prototype.toString = function() {
return this.previousIndex === this.currentIndex ? lang_2.stringify(this.item) : lang_2.stringify(this.item) + '[' + lang_2.stringify(this.previousIndex) + '->' + lang_2.stringify(this.currentIndex) + ']';
};
return CollectionChangeRecord;
})();
exports.CollectionChangeRecord = CollectionChangeRecord;
var _DuplicateItemRecordList = (function() {
function _DuplicateItemRecordList() {
this._head = null;
this._tail = null;
}
_DuplicateItemRecordList.prototype.add = function(record) {
if (this._head === null) {
this._head = this._tail = record;
record._nextDup = null;
record._prevDup = null;
} else {
this._tail._nextDup = record;
record._prevDup = this._tail;
record._nextDup = null;
this._tail = record;
}
};
_DuplicateItemRecordList.prototype.get = function(trackById, afterIndex) {
var record;
for (record = this._head; record !== null; record = record._nextDup) {
if ((afterIndex === null || afterIndex < record.currentIndex) && lang_2.looseIdentical(record.trackById, trackById)) {
return record;
}
}
return null;
};
_DuplicateItemRecordList.prototype.remove = function(record) {
var prev = record._prevDup;
var next = record._nextDup;
if (prev === null) {
this._head = next;
} else {
prev._nextDup = next;
}
if (next === null) {
this._tail = prev;
} else {
next._prevDup = prev;
}
return this._head === null;
};
return _DuplicateItemRecordList;
})();
var _DuplicateMap = (function() {
function _DuplicateMap() {
this.map = new Map();
}
_DuplicateMap.prototype.put = function(record) {
var key = lang_2.getMapKey(record.trackById);
var duplicates = this.map.get(key);
if (!lang_2.isPresent(duplicates)) {
duplicates = new _DuplicateItemRecordList();
this.map.set(key, duplicates);
}
duplicates.add(record);
};
_DuplicateMap.prototype.get = function(trackById, afterIndex) {
if (afterIndex === void 0) {
afterIndex = null;
}
var key = lang_2.getMapKey(trackById);
var recordList = this.map.get(key);
return lang_2.isBlank(recordList) ? null : recordList.get(trackById, afterIndex);
};
_DuplicateMap.prototype.remove = function(record) {
var key = lang_2.getMapKey(record.trackById);
var recordList = this.map.get(key);
if (recordList.remove(record)) {
this.map.delete(key);
}
return record;
};
Object.defineProperty(_DuplicateMap.prototype, "isEmpty", {
get: function() {
return this.map.size === 0;
},
enumerable: true,
configurable: true
});
_DuplicateMap.prototype.clear = function() {
this.map.clear();
};
_DuplicateMap.prototype.toString = function() {
return '_DuplicateMap(' + lang_2.stringify(this.map) + ')';
};
return _DuplicateMap;
})();
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/differs/keyvalue_differs", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var di_1 = require("angular2/src/core/di");
var KeyValueDiffers = (function() {
function KeyValueDiffers(factories) {
this.factories = factories;
}
KeyValueDiffers.create = function(factories, parent) {
if (lang_1.isPresent(parent)) {
var copied = collection_1.ListWrapper.clone(parent.factories);
factories = factories.concat(copied);
return new KeyValueDiffers(factories);
} else {
return new KeyValueDiffers(factories);
}
};
KeyValueDiffers.extend = function(factories) {
return new di_1.Provider(KeyValueDiffers, {
useFactory: function(parent) {
if (lang_1.isBlank(parent)) {
throw new exceptions_1.BaseException('Cannot extend KeyValueDiffers without a parent injector');
}
return KeyValueDiffers.create(factories, parent);
},
deps: [[KeyValueDiffers, new di_1.SkipSelfMetadata(), new di_1.OptionalMetadata()]]
});
};
KeyValueDiffers.prototype.find = function(kv) {
var factory = this.factories.find(function(f) {
return f.supports(kv);
});
if (lang_1.isPresent(factory)) {
return factory;
} else {
throw new exceptions_1.BaseException("Cannot find a differ supporting object '" + kv + "'");
}
};
KeyValueDiffers = __decorate([di_1.Injectable(), lang_1.CONST(), __metadata('design:paramtypes', [Array])], KeyValueDiffers);
return KeyValueDiffers;
})();
exports.KeyValueDiffers = KeyValueDiffers;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/differs/default_keyvalue_differ", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var DefaultKeyValueDifferFactory = (function() {
function DefaultKeyValueDifferFactory() {}
DefaultKeyValueDifferFactory.prototype.supports = function(obj) {
return obj instanceof Map || lang_1.isJsObject(obj);
};
DefaultKeyValueDifferFactory.prototype.create = function(cdRef) {
return new DefaultKeyValueDiffer();
};
DefaultKeyValueDifferFactory = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [])], DefaultKeyValueDifferFactory);
return DefaultKeyValueDifferFactory;
})();
exports.DefaultKeyValueDifferFactory = DefaultKeyValueDifferFactory;
var DefaultKeyValueDiffer = (function() {
function DefaultKeyValueDiffer() {
this._records = new Map();
this._mapHead = null;
this._previousMapHead = null;
this._changesHead = null;
this._changesTail = null;
this._additionsHead = null;
this._additionsTail = null;
this._removalsHead = null;
this._removalsTail = null;
}
Object.defineProperty(DefaultKeyValueDiffer.prototype, "isDirty", {
get: function() {
return this._additionsHead !== null || this._changesHead !== null || this._removalsHead !== null;
},
enumerable: true,
configurable: true
});
DefaultKeyValueDiffer.prototype.forEachItem = function(fn) {
var record;
for (record = this._mapHead; record !== null; record = record._next) {
fn(record);
}
};
DefaultKeyValueDiffer.prototype.forEachPreviousItem = function(fn) {
var record;
for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {
fn(record);
}
};
DefaultKeyValueDiffer.prototype.forEachChangedItem = function(fn) {
var record;
for (record = this._changesHead; record !== null; record = record._nextChanged) {
fn(record);
}
};
DefaultKeyValueDiffer.prototype.forEachAddedItem = function(fn) {
var record;
for (record = this._additionsHead; record !== null; record = record._nextAdded) {
fn(record);
}
};
DefaultKeyValueDiffer.prototype.forEachRemovedItem = function(fn) {
var record;
for (record = this._removalsHead; record !== null; record = record._nextRemoved) {
fn(record);
}
};
DefaultKeyValueDiffer.prototype.diff = function(map) {
if (lang_1.isBlank(map))
map = collection_1.MapWrapper.createFromPairs([]);
if (!(map instanceof Map || lang_1.isJsObject(map))) {
throw new exceptions_1.BaseException("Error trying to diff '" + map + "'");
}
if (this.check(map)) {
return this;
} else {
return null;
}
};
DefaultKeyValueDiffer.prototype.onDestroy = function() {};
DefaultKeyValueDiffer.prototype.check = function(map) {
var _this = this;
this._reset();
var records = this._records;
var oldSeqRecord = this._mapHead;
var lastOldSeqRecord = null;
var lastNewSeqRecord = null;
var seqChanged = false;
this._forEach(map, function(value, key) {
var newSeqRecord;
if (oldSeqRecord !== null && key === oldSeqRecord.key) {
newSeqRecord = oldSeqRecord;
if (!lang_1.looseIdentical(value, oldSeqRecord.currentValue)) {
oldSeqRecord.previousValue = oldSeqRecord.currentValue;
oldSeqRecord.currentValue = value;
_this._addToChanges(oldSeqRecord);
}
} else {
seqChanged = true;
if (oldSeqRecord !== null) {
oldSeqRecord._next = null;
_this._removeFromSeq(lastOldSeqRecord, oldSeqRecord);
_this._addToRemovals(oldSeqRecord);
}
if (records.has(key)) {
newSeqRecord = records.get(key);
} else {
newSeqRecord = new KeyValueChangeRecord(key);
records.set(key, newSeqRecord);
newSeqRecord.currentValue = value;
_this._addToAdditions(newSeqRecord);
}
}
if (seqChanged) {
if (_this._isInRemovals(newSeqRecord)) {
_this._removeFromRemovals(newSeqRecord);
}
if (lastNewSeqRecord == null) {
_this._mapHead = newSeqRecord;
} else {
lastNewSeqRecord._next = newSeqRecord;
}
}
lastOldSeqRecord = oldSeqRecord;
lastNewSeqRecord = newSeqRecord;
oldSeqRecord = oldSeqRecord === null ? null : oldSeqRecord._next;
});
this._truncate(lastOldSeqRecord, oldSeqRecord);
return this.isDirty;
};
DefaultKeyValueDiffer.prototype._reset = function() {
if (this.isDirty) {
var record;
for (record = this._previousMapHead = this._mapHead; record !== null; record = record._next) {
record._nextPrevious = record._next;
}
for (record = this._changesHead; record !== null; record = record._nextChanged) {
record.previousValue = record.currentValue;
}
for (record = this._additionsHead; record != null; record = record._nextAdded) {
record.previousValue = record.currentValue;
}
this._changesHead = this._changesTail = null;
this._additionsHead = this._additionsTail = null;
this._removalsHead = this._removalsTail = null;
}
};
DefaultKeyValueDiffer.prototype._truncate = function(lastRecord, record) {
while (record !== null) {
if (lastRecord === null) {
this._mapHead = null;
} else {
lastRecord._next = null;
}
var nextRecord = record._next;
this._addToRemovals(record);
lastRecord = record;
record = nextRecord;
}
for (var rec = this._removalsHead; rec !== null; rec = rec._nextRemoved) {
rec.previousValue = rec.currentValue;
rec.currentValue = null;
this._records.delete(rec.key);
}
};
DefaultKeyValueDiffer.prototype._isInRemovals = function(record) {
return record === this._removalsHead || record._nextRemoved !== null || record._prevRemoved !== null;
};
DefaultKeyValueDiffer.prototype._addToRemovals = function(record) {
if (this._removalsHead === null) {
this._removalsHead = this._removalsTail = record;
} else {
this._removalsTail._nextRemoved = record;
record._prevRemoved = this._removalsTail;
this._removalsTail = record;
}
};
DefaultKeyValueDiffer.prototype._removeFromSeq = function(prev, record) {
var next = record._next;
if (prev === null) {
this._mapHead = next;
} else {
prev._next = next;
}
};
DefaultKeyValueDiffer.prototype._removeFromRemovals = function(record) {
var prev = record._prevRemoved;
var next = record._nextRemoved;
if (prev === null) {
this._removalsHead = next;
} else {
prev._nextRemoved = next;
}
if (next === null) {
this._removalsTail = prev;
} else {
next._prevRemoved = prev;
}
record._prevRemoved = record._nextRemoved = null;
};
DefaultKeyValueDiffer.prototype._addToAdditions = function(record) {
if (this._additionsHead === null) {
this._additionsHead = this._additionsTail = record;
} else {
this._additionsTail._nextAdded = record;
this._additionsTail = record;
}
};
DefaultKeyValueDiffer.prototype._addToChanges = function(record) {
if (this._changesHead === null) {
this._changesHead = this._changesTail = record;
} else {
this._changesTail._nextChanged = record;
this._changesTail = record;
}
};
DefaultKeyValueDiffer.prototype.toString = function() {
var items = [];
var previous = [];
var changes = [];
var additions = [];
var removals = [];
var record;
for (record = this._mapHead; record !== null; record = record._next) {
items.push(lang_1.stringify(record));
}
for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {
previous.push(lang_1.stringify(record));
}
for (record = this._changesHead; record !== null; record = record._nextChanged) {
changes.push(lang_1.stringify(record));
}
for (record = this._additionsHead; record !== null; record = record._nextAdded) {
additions.push(lang_1.stringify(record));
}
for (record = this._removalsHead; record !== null; record = record._nextRemoved) {
removals.push(lang_1.stringify(record));
}
return "map: " + items.join(', ') + "\n" + "previous: " + previous.join(', ') + "\n" + "additions: " + additions.join(', ') + "\n" + "changes: " + changes.join(', ') + "\n" + "removals: " + removals.join(', ') + "\n";
};
DefaultKeyValueDiffer.prototype._forEach = function(obj, fn) {
if (obj instanceof Map) {
obj.forEach(fn);
} else {
collection_1.StringMapWrapper.forEach(obj, fn);
}
};
return DefaultKeyValueDiffer;
})();
exports.DefaultKeyValueDiffer = DefaultKeyValueDiffer;
var KeyValueChangeRecord = (function() {
function KeyValueChangeRecord(key) {
this.key = key;
this.previousValue = null;
this.currentValue = null;
this._nextPrevious = null;
this._next = null;
this._nextAdded = null;
this._nextRemoved = null;
this._prevRemoved = null;
this._nextChanged = null;
}
KeyValueChangeRecord.prototype.toString = function() {
return lang_1.looseIdentical(this.previousValue, this.currentValue) ? lang_1.stringify(this.key) : (lang_1.stringify(this.key) + '[' + lang_1.stringify(this.previousValue) + '->' + lang_1.stringify(this.currentValue) + ']');
};
return KeyValueChangeRecord;
})();
exports.KeyValueChangeRecord = KeyValueChangeRecord;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/parser/ast", ["angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var collection_1 = require("angular2/src/facade/collection");
var AST = (function() {
function AST() {}
AST.prototype.visit = function(visitor) {
return null;
};
AST.prototype.toString = function() {
return "AST";
};
return AST;
})();
exports.AST = AST;
var Quote = (function(_super) {
__extends(Quote, _super);
function Quote(prefix, uninterpretedExpression, location) {
_super.call(this);
this.prefix = prefix;
this.uninterpretedExpression = uninterpretedExpression;
this.location = location;
}
Quote.prototype.visit = function(visitor) {
return visitor.visitQuote(this);
};
Quote.prototype.toString = function() {
return "Quote";
};
return Quote;
})(AST);
exports.Quote = Quote;
var EmptyExpr = (function(_super) {
__extends(EmptyExpr, _super);
function EmptyExpr() {
_super.apply(this, arguments);
}
EmptyExpr.prototype.visit = function(visitor) {};
return EmptyExpr;
})(AST);
exports.EmptyExpr = EmptyExpr;
var ImplicitReceiver = (function(_super) {
__extends(ImplicitReceiver, _super);
function ImplicitReceiver() {
_super.apply(this, arguments);
}
ImplicitReceiver.prototype.visit = function(visitor) {
return visitor.visitImplicitReceiver(this);
};
return ImplicitReceiver;
})(AST);
exports.ImplicitReceiver = ImplicitReceiver;
var Chain = (function(_super) {
__extends(Chain, _super);
function Chain(expressions) {
_super.call(this);
this.expressions = expressions;
}
Chain.prototype.visit = function(visitor) {
return visitor.visitChain(this);
};
return Chain;
})(AST);
exports.Chain = Chain;
var Conditional = (function(_super) {
__extends(Conditional, _super);
function Conditional(condition, trueExp, falseExp) {
_super.call(this);
this.condition = condition;
this.trueExp = trueExp;
this.falseExp = falseExp;
}
Conditional.prototype.visit = function(visitor) {
return visitor.visitConditional(this);
};
return Conditional;
})(AST);
exports.Conditional = Conditional;
var PropertyRead = (function(_super) {
__extends(PropertyRead, _super);
function PropertyRead(receiver, name, getter) {
_super.call(this);
this.receiver = receiver;
this.name = name;
this.getter = getter;
}
PropertyRead.prototype.visit = function(visitor) {
return visitor.visitPropertyRead(this);
};
return PropertyRead;
})(AST);
exports.PropertyRead = PropertyRead;
var PropertyWrite = (function(_super) {
__extends(PropertyWrite, _super);
function PropertyWrite(receiver, name, setter, value) {
_super.call(this);
this.receiver = receiver;
this.name = name;
this.setter = setter;
this.value = value;
}
PropertyWrite.prototype.visit = function(visitor) {
return visitor.visitPropertyWrite(this);
};
return PropertyWrite;
})(AST);
exports.PropertyWrite = PropertyWrite;
var SafePropertyRead = (function(_super) {
__extends(SafePropertyRead, _super);
function SafePropertyRead(receiver, name, getter) {
_super.call(this);
this.receiver = receiver;
this.name = name;
this.getter = getter;
}
SafePropertyRead.prototype.visit = function(visitor) {
return visitor.visitSafePropertyRead(this);
};
return SafePropertyRead;
})(AST);
exports.SafePropertyRead = SafePropertyRead;
var KeyedRead = (function(_super) {
__extends(KeyedRead, _super);
function KeyedRead(obj, key) {
_super.call(this);
this.obj = obj;
this.key = key;
}
KeyedRead.prototype.visit = function(visitor) {
return visitor.visitKeyedRead(this);
};
return KeyedRead;
})(AST);
exports.KeyedRead = KeyedRead;
var KeyedWrite = (function(_super) {
__extends(KeyedWrite, _super);
function KeyedWrite(obj, key, value) {
_super.call(this);
this.obj = obj;
this.key = key;
this.value = value;
}
KeyedWrite.prototype.visit = function(visitor) {
return visitor.visitKeyedWrite(this);
};
return KeyedWrite;
})(AST);
exports.KeyedWrite = KeyedWrite;
var BindingPipe = (function(_super) {
__extends(BindingPipe, _super);
function BindingPipe(exp, name, args) {
_super.call(this);
this.exp = exp;
this.name = name;
this.args = args;
}
BindingPipe.prototype.visit = function(visitor) {
return visitor.visitPipe(this);
};
return BindingPipe;
})(AST);
exports.BindingPipe = BindingPipe;
var LiteralPrimitive = (function(_super) {
__extends(LiteralPrimitive, _super);
function LiteralPrimitive(value) {
_super.call(this);
this.value = value;
}
LiteralPrimitive.prototype.visit = function(visitor) {
return visitor.visitLiteralPrimitive(this);
};
return LiteralPrimitive;
})(AST);
exports.LiteralPrimitive = LiteralPrimitive;
var LiteralArray = (function(_super) {
__extends(LiteralArray, _super);
function LiteralArray(expressions) {
_super.call(this);
this.expressions = expressions;
}
LiteralArray.prototype.visit = function(visitor) {
return visitor.visitLiteralArray(this);
};
return LiteralArray;
})(AST);
exports.LiteralArray = LiteralArray;
var LiteralMap = (function(_super) {
__extends(LiteralMap, _super);
function LiteralMap(keys, values) {
_super.call(this);
this.keys = keys;
this.values = values;
}
LiteralMap.prototype.visit = function(visitor) {
return visitor.visitLiteralMap(this);
};
return LiteralMap;
})(AST);
exports.LiteralMap = LiteralMap;
var Interpolation = (function(_super) {
__extends(Interpolation, _super);
function Interpolation(strings, expressions) {
_super.call(this);
this.strings = strings;
this.expressions = expressions;
}
Interpolation.prototype.visit = function(visitor) {
return visitor.visitInterpolation(this);
};
return Interpolation;
})(AST);
exports.Interpolation = Interpolation;
var Binary = (function(_super) {
__extends(Binary, _super);
function Binary(operation, left, right) {
_super.call(this);
this.operation = operation;
this.left = left;
this.right = right;
}
Binary.prototype.visit = function(visitor) {
return visitor.visitBinary(this);
};
return Binary;
})(AST);
exports.Binary = Binary;
var PrefixNot = (function(_super) {
__extends(PrefixNot, _super);
function PrefixNot(expression) {
_super.call(this);
this.expression = expression;
}
PrefixNot.prototype.visit = function(visitor) {
return visitor.visitPrefixNot(this);
};
return PrefixNot;
})(AST);
exports.PrefixNot = PrefixNot;
var MethodCall = (function(_super) {
__extends(MethodCall, _super);
function MethodCall(receiver, name, fn, args) {
_super.call(this);
this.receiver = receiver;
this.name = name;
this.fn = fn;
this.args = args;
}
MethodCall.prototype.visit = function(visitor) {
return visitor.visitMethodCall(this);
};
return MethodCall;
})(AST);
exports.MethodCall = MethodCall;
var SafeMethodCall = (function(_super) {
__extends(SafeMethodCall, _super);
function SafeMethodCall(receiver, name, fn, args) {
_super.call(this);
this.receiver = receiver;
this.name = name;
this.fn = fn;
this.args = args;
}
SafeMethodCall.prototype.visit = function(visitor) {
return visitor.visitSafeMethodCall(this);
};
return SafeMethodCall;
})(AST);
exports.SafeMethodCall = SafeMethodCall;
var FunctionCall = (function(_super) {
__extends(FunctionCall, _super);
function FunctionCall(target, args) {
_super.call(this);
this.target = target;
this.args = args;
}
FunctionCall.prototype.visit = function(visitor) {
return visitor.visitFunctionCall(this);
};
return FunctionCall;
})(AST);
exports.FunctionCall = FunctionCall;
var ASTWithSource = (function(_super) {
__extends(ASTWithSource, _super);
function ASTWithSource(ast, source, location) {
_super.call(this);
this.ast = ast;
this.source = source;
this.location = location;
}
ASTWithSource.prototype.visit = function(visitor) {
return this.ast.visit(visitor);
};
ASTWithSource.prototype.toString = function() {
return this.source + " in " + this.location;
};
return ASTWithSource;
})(AST);
exports.ASTWithSource = ASTWithSource;
var TemplateBinding = (function() {
function TemplateBinding(key, keyIsVar, name, expression) {
this.key = key;
this.keyIsVar = keyIsVar;
this.name = name;
this.expression = expression;
}
return TemplateBinding;
})();
exports.TemplateBinding = TemplateBinding;
var RecursiveAstVisitor = (function() {
function RecursiveAstVisitor() {}
RecursiveAstVisitor.prototype.visitBinary = function(ast) {
ast.left.visit(this);
ast.right.visit(this);
return null;
};
RecursiveAstVisitor.prototype.visitChain = function(ast) {
return this.visitAll(ast.expressions);
};
RecursiveAstVisitor.prototype.visitConditional = function(ast) {
ast.condition.visit(this);
ast.trueExp.visit(this);
ast.falseExp.visit(this);
return null;
};
RecursiveAstVisitor.prototype.visitPipe = function(ast) {
ast.exp.visit(this);
this.visitAll(ast.args);
return null;
};
RecursiveAstVisitor.prototype.visitFunctionCall = function(ast) {
ast.target.visit(this);
this.visitAll(ast.args);
return null;
};
RecursiveAstVisitor.prototype.visitImplicitReceiver = function(ast) {
return null;
};
RecursiveAstVisitor.prototype.visitInterpolation = function(ast) {
return this.visitAll(ast.expressions);
};
RecursiveAstVisitor.prototype.visitKeyedRead = function(ast) {
ast.obj.visit(this);
ast.key.visit(this);
return null;
};
RecursiveAstVisitor.prototype.visitKeyedWrite = function(ast) {
ast.obj.visit(this);
ast.key.visit(this);
ast.value.visit(this);
return null;
};
RecursiveAstVisitor.prototype.visitLiteralArray = function(ast) {
return this.visitAll(ast.expressions);
};
RecursiveAstVisitor.prototype.visitLiteralMap = function(ast) {
return this.visitAll(ast.values);
};
RecursiveAstVisitor.prototype.visitLiteralPrimitive = function(ast) {
return null;
};
RecursiveAstVisitor.prototype.visitMethodCall = function(ast) {
ast.receiver.visit(this);
return this.visitAll(ast.args);
};
RecursiveAstVisitor.prototype.visitPrefixNot = function(ast) {
ast.expression.visit(this);
return null;
};
RecursiveAstVisitor.prototype.visitPropertyRead = function(ast) {
ast.receiver.visit(this);
return null;
};
RecursiveAstVisitor.prototype.visitPropertyWrite = function(ast) {
ast.receiver.visit(this);
ast.value.visit(this);
return null;
};
RecursiveAstVisitor.prototype.visitSafePropertyRead = function(ast) {
ast.receiver.visit(this);
return null;
};
RecursiveAstVisitor.prototype.visitSafeMethodCall = function(ast) {
ast.receiver.visit(this);
return this.visitAll(ast.args);
};
RecursiveAstVisitor.prototype.visitAll = function(asts) {
var _this = this;
asts.forEach(function(ast) {
return ast.visit(_this);
});
return null;
};
RecursiveAstVisitor.prototype.visitQuote = function(ast) {
return null;
};
return RecursiveAstVisitor;
})();
exports.RecursiveAstVisitor = RecursiveAstVisitor;
var AstTransformer = (function() {
function AstTransformer() {}
AstTransformer.prototype.visitImplicitReceiver = function(ast) {
return ast;
};
AstTransformer.prototype.visitInterpolation = function(ast) {
return new Interpolation(ast.strings, this.visitAll(ast.expressions));
};
AstTransformer.prototype.visitLiteralPrimitive = function(ast) {
return new LiteralPrimitive(ast.value);
};
AstTransformer.prototype.visitPropertyRead = function(ast) {
return new PropertyRead(ast.receiver.visit(this), ast.name, ast.getter);
};
AstTransformer.prototype.visitPropertyWrite = function(ast) {
return new PropertyWrite(ast.receiver.visit(this), ast.name, ast.setter, ast.value);
};
AstTransformer.prototype.visitSafePropertyRead = function(ast) {
return new SafePropertyRead(ast.receiver.visit(this), ast.name, ast.getter);
};
AstTransformer.prototype.visitMethodCall = function(ast) {
return new MethodCall(ast.receiver.visit(this), ast.name, ast.fn, this.visitAll(ast.args));
};
AstTransformer.prototype.visitSafeMethodCall = function(ast) {
return new SafeMethodCall(ast.receiver.visit(this), ast.name, ast.fn, this.visitAll(ast.args));
};
AstTransformer.prototype.visitFunctionCall = function(ast) {
return new FunctionCall(ast.target.visit(this), this.visitAll(ast.args));
};
AstTransformer.prototype.visitLiteralArray = function(ast) {
return new LiteralArray(this.visitAll(ast.expressions));
};
AstTransformer.prototype.visitLiteralMap = function(ast) {
return new LiteralMap(ast.keys, this.visitAll(ast.values));
};
AstTransformer.prototype.visitBinary = function(ast) {
return new Binary(ast.operation, ast.left.visit(this), ast.right.visit(this));
};
AstTransformer.prototype.visitPrefixNot = function(ast) {
return new PrefixNot(ast.expression.visit(this));
};
AstTransformer.prototype.visitConditional = function(ast) {
return new Conditional(ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this));
};
AstTransformer.prototype.visitPipe = function(ast) {
return new BindingPipe(ast.exp.visit(this), ast.name, this.visitAll(ast.args));
};
AstTransformer.prototype.visitKeyedRead = function(ast) {
return new KeyedRead(ast.obj.visit(this), ast.key.visit(this));
};
AstTransformer.prototype.visitKeyedWrite = function(ast) {
return new KeyedWrite(ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this));
};
AstTransformer.prototype.visitAll = function(asts) {
var res = collection_1.ListWrapper.createFixedSize(asts.length);
for (var i = 0; i < asts.length; ++i) {
res[i] = asts[i].visit(this);
}
return res;
};
AstTransformer.prototype.visitChain = function(ast) {
return new Chain(this.visitAll(ast.expressions));
};
AstTransformer.prototype.visitQuote = function(ast) {
return new Quote(ast.prefix, ast.uninterpretedExpression, ast.location);
};
return AstTransformer;
})();
exports.AstTransformer = AstTransformer;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/parser/lexer", ["angular2/src/core/di/decorators", "angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var decorators_1 = require("angular2/src/core/di/decorators");
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
(function(TokenType) {
TokenType[TokenType["Character"] = 0] = "Character";
TokenType[TokenType["Identifier"] = 1] = "Identifier";
TokenType[TokenType["Keyword"] = 2] = "Keyword";
TokenType[TokenType["String"] = 3] = "String";
TokenType[TokenType["Operator"] = 4] = "Operator";
TokenType[TokenType["Number"] = 5] = "Number";
})(exports.TokenType || (exports.TokenType = {}));
var TokenType = exports.TokenType;
var Lexer = (function() {
function Lexer() {}
Lexer.prototype.tokenize = function(text) {
var scanner = new _Scanner(text);
var tokens = [];
var token = scanner.scanToken();
while (token != null) {
tokens.push(token);
token = scanner.scanToken();
}
return tokens;
};
Lexer = __decorate([decorators_1.Injectable(), __metadata('design:paramtypes', [])], Lexer);
return Lexer;
})();
exports.Lexer = Lexer;
var Token = (function() {
function Token(index, type, numValue, strValue) {
this.index = index;
this.type = type;
this.numValue = numValue;
this.strValue = strValue;
}
Token.prototype.isCharacter = function(code) {
return (this.type == TokenType.Character && this.numValue == code);
};
Token.prototype.isNumber = function() {
return (this.type == TokenType.Number);
};
Token.prototype.isString = function() {
return (this.type == TokenType.String);
};
Token.prototype.isOperator = function(operater) {
return (this.type == TokenType.Operator && this.strValue == operater);
};
Token.prototype.isIdentifier = function() {
return (this.type == TokenType.Identifier);
};
Token.prototype.isKeyword = function() {
return (this.type == TokenType.Keyword);
};
Token.prototype.isKeywordVar = function() {
return (this.type == TokenType.Keyword && this.strValue == "var");
};
Token.prototype.isKeywordNull = function() {
return (this.type == TokenType.Keyword && this.strValue == "null");
};
Token.prototype.isKeywordUndefined = function() {
return (this.type == TokenType.Keyword && this.strValue == "undefined");
};
Token.prototype.isKeywordTrue = function() {
return (this.type == TokenType.Keyword && this.strValue == "true");
};
Token.prototype.isKeywordFalse = function() {
return (this.type == TokenType.Keyword && this.strValue == "false");
};
Token.prototype.toNumber = function() {
return (this.type == TokenType.Number) ? this.numValue : -1;
};
Token.prototype.toString = function() {
switch (this.type) {
case TokenType.Character:
case TokenType.Identifier:
case TokenType.Keyword:
case TokenType.Operator:
case TokenType.String:
return this.strValue;
case TokenType.Number:
return this.numValue.toString();
default:
return null;
}
};
return Token;
})();
exports.Token = Token;
function newCharacterToken(index, code) {
return new Token(index, TokenType.Character, code, lang_1.StringWrapper.fromCharCode(code));
}
function newIdentifierToken(index, text) {
return new Token(index, TokenType.Identifier, 0, text);
}
function newKeywordToken(index, text) {
return new Token(index, TokenType.Keyword, 0, text);
}
function newOperatorToken(index, text) {
return new Token(index, TokenType.Operator, 0, text);
}
function newStringToken(index, text) {
return new Token(index, TokenType.String, 0, text);
}
function newNumberToken(index, n) {
return new Token(index, TokenType.Number, n, "");
}
exports.EOF = new Token(-1, TokenType.Character, 0, "");
exports.$EOF = 0;
exports.$TAB = 9;
exports.$LF = 10;
exports.$VTAB = 11;
exports.$FF = 12;
exports.$CR = 13;
exports.$SPACE = 32;
exports.$BANG = 33;
exports.$DQ = 34;
exports.$HASH = 35;
exports.$$ = 36;
exports.$PERCENT = 37;
exports.$AMPERSAND = 38;
exports.$SQ = 39;
exports.$LPAREN = 40;
exports.$RPAREN = 41;
exports.$STAR = 42;
exports.$PLUS = 43;
exports.$COMMA = 44;
exports.$MINUS = 45;
exports.$PERIOD = 46;
exports.$SLASH = 47;
exports.$COLON = 58;
exports.$SEMICOLON = 59;
exports.$LT = 60;
exports.$EQ = 61;
exports.$GT = 62;
exports.$QUESTION = 63;
var $0 = 48;
var $9 = 57;
var $A = 65,
$E = 69,
$Z = 90;
exports.$LBRACKET = 91;
exports.$BACKSLASH = 92;
exports.$RBRACKET = 93;
var $CARET = 94;
var $_ = 95;
var $a = 97,
$e = 101,
$f = 102,
$n = 110,
$r = 114,
$t = 116,
$u = 117,
$v = 118,
$z = 122;
exports.$LBRACE = 123;
exports.$BAR = 124;
exports.$RBRACE = 125;
var $NBSP = 160;
var ScannerError = (function(_super) {
__extends(ScannerError, _super);
function ScannerError(message) {
_super.call(this);
this.message = message;
}
ScannerError.prototype.toString = function() {
return this.message;
};
return ScannerError;
})(exceptions_1.BaseException);
exports.ScannerError = ScannerError;
var _Scanner = (function() {
function _Scanner(input) {
this.input = input;
this.peek = 0;
this.index = -1;
this.length = input.length;
this.advance();
}
_Scanner.prototype.advance = function() {
this.peek = ++this.index >= this.length ? exports.$EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index);
};
_Scanner.prototype.scanToken = function() {
var input = this.input,
length = this.length,
peek = this.peek,
index = this.index;
while (peek <= exports.$SPACE) {
if (++index >= length) {
peek = exports.$EOF;
break;
} else {
peek = lang_1.StringWrapper.charCodeAt(input, index);
}
}
this.peek = peek;
this.index = index;
if (index >= length) {
return null;
}
if (isIdentifierStart(peek))
return this.scanIdentifier();
if (isDigit(peek))
return this.scanNumber(index);
var start = index;
switch (peek) {
case exports.$PERIOD:
this.advance();
return isDigit(this.peek) ? this.scanNumber(start) : newCharacterToken(start, exports.$PERIOD);
case exports.$LPAREN:
case exports.$RPAREN:
case exports.$LBRACE:
case exports.$RBRACE:
case exports.$LBRACKET:
case exports.$RBRACKET:
case exports.$COMMA:
case exports.$COLON:
case exports.$SEMICOLON:
return this.scanCharacter(start, peek);
case exports.$SQ:
case exports.$DQ:
return this.scanString();
case exports.$HASH:
case exports.$PLUS:
case exports.$MINUS:
case exports.$STAR:
case exports.$SLASH:
case exports.$PERCENT:
case $CARET:
return this.scanOperator(start, lang_1.StringWrapper.fromCharCode(peek));
case exports.$QUESTION:
return this.scanComplexOperator(start, '?', exports.$PERIOD, '.');
case exports.$LT:
case exports.$GT:
return this.scanComplexOperator(start, lang_1.StringWrapper.fromCharCode(peek), exports.$EQ, '=');
case exports.$BANG:
case exports.$EQ:
return this.scanComplexOperator(start, lang_1.StringWrapper.fromCharCode(peek), exports.$EQ, '=', exports.$EQ, '=');
case exports.$AMPERSAND:
return this.scanComplexOperator(start, '&', exports.$AMPERSAND, '&');
case exports.$BAR:
return this.scanComplexOperator(start, '|', exports.$BAR, '|');
case $NBSP:
while (isWhitespace(this.peek))
this.advance();
return this.scanToken();
}
this.error("Unexpected character [" + lang_1.StringWrapper.fromCharCode(peek) + "]", 0);
return null;
};
_Scanner.prototype.scanCharacter = function(start, code) {
this.advance();
return newCharacterToken(start, code);
};
_Scanner.prototype.scanOperator = function(start, str) {
this.advance();
return newOperatorToken(start, str);
};
_Scanner.prototype.scanComplexOperator = function(start, one, twoCode, two, threeCode, three) {
this.advance();
var str = one;
if (this.peek == twoCode) {
this.advance();
str += two;
}
if (lang_1.isPresent(threeCode) && this.peek == threeCode) {
this.advance();
str += three;
}
return newOperatorToken(start, str);
};
_Scanner.prototype.scanIdentifier = function() {
var start = this.index;
this.advance();
while (isIdentifierPart(this.peek))
this.advance();
var str = this.input.substring(start, this.index);
if (collection_1.SetWrapper.has(KEYWORDS, str)) {
return newKeywordToken(start, str);
} else {
return newIdentifierToken(start, str);
}
};
_Scanner.prototype.scanNumber = function(start) {
var simple = (this.index === start);
this.advance();
while (true) {
if (isDigit(this.peek)) {} else if (this.peek == exports.$PERIOD) {
simple = false;
} else if (isExponentStart(this.peek)) {
this.advance();
if (isExponentSign(this.peek))
this.advance();
if (!isDigit(this.peek))
this.error('Invalid exponent', -1);
simple = false;
} else {
break;
}
this.advance();
}
var str = this.input.substring(start, this.index);
var value = simple ? lang_1.NumberWrapper.parseIntAutoRadix(str) : lang_1.NumberWrapper.parseFloat(str);
return newNumberToken(start, value);
};
_Scanner.prototype.scanString = function() {
var start = this.index;
var quote = this.peek;
this.advance();
var buffer;
var marker = this.index;
var input = this.input;
while (this.peek != quote) {
if (this.peek == exports.$BACKSLASH) {
if (buffer == null)
buffer = new lang_1.StringJoiner();
buffer.add(input.substring(marker, this.index));
this.advance();
var unescapedCode;
if (this.peek == $u) {
var hex = input.substring(this.index + 1, this.index + 5);
try {
unescapedCode = lang_1.NumberWrapper.parseInt(hex, 16);
} catch (e) {
this.error("Invalid unicode escape [\\u" + hex + "]", 0);
}
for (var i = 0; i < 5; i++) {
this.advance();
}
} else {
unescapedCode = unescape(this.peek);
this.advance();
}
buffer.add(lang_1.StringWrapper.fromCharCode(unescapedCode));
marker = this.index;
} else if (this.peek == exports.$EOF) {
this.error('Unterminated quote', 0);
} else {
this.advance();
}
}
var last = input.substring(marker, this.index);
this.advance();
var unescaped = last;
if (buffer != null) {
buffer.add(last);
unescaped = buffer.toString();
}
return newStringToken(start, unescaped);
};
_Scanner.prototype.error = function(message, offset) {
var position = this.index + offset;
throw new ScannerError("Lexer Error: " + message + " at column " + position + " in expression [" + this.input + "]");
};
return _Scanner;
})();
function isWhitespace(code) {
return (code >= exports.$TAB && code <= exports.$SPACE) || (code == $NBSP);
}
function isIdentifierStart(code) {
return ($a <= code && code <= $z) || ($A <= code && code <= $Z) || (code == $_) || (code == exports.$$);
}
function isIdentifier(input) {
if (input.length == 0)
return false;
var scanner = new _Scanner(input);
if (!isIdentifierStart(scanner.peek))
return false;
scanner.advance();
while (scanner.peek !== exports.$EOF) {
if (!isIdentifierPart(scanner.peek))
return false;
scanner.advance();
}
return true;
}
exports.isIdentifier = isIdentifier;
function isIdentifierPart(code) {
return ($a <= code && code <= $z) || ($A <= code && code <= $Z) || ($0 <= code && code <= $9) || (code == $_) || (code == exports.$$);
}
function isDigit(code) {
return $0 <= code && code <= $9;
}
function isExponentStart(code) {
return code == $e || code == $E;
}
function isExponentSign(code) {
return code == exports.$MINUS || code == exports.$PLUS;
}
function unescape(code) {
switch (code) {
case $n:
return exports.$LF;
case $f:
return exports.$FF;
case $r:
return exports.$CR;
case $t:
return exports.$TAB;
case $v:
return exports.$VTAB;
default:
return code;
}
}
var OPERATORS = collection_1.SetWrapper.createFromList(['+', '-', '*', '/', '%', '^', '=', '==', '!=', '===', '!==', '<', '>', '<=', '>=', '&&', '||', '&', '|', '!', '?', '#', '?.']);
var KEYWORDS = collection_1.SetWrapper.createFromList(['var', 'null', 'undefined', 'true', 'false', 'if', 'else']);
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/parser/parser", ["angular2/src/core/di/decorators", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/change_detection/parser/lexer", "angular2/src/core/reflection/reflection", "angular2/src/core/change_detection/parser/ast"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var decorators_1 = require("angular2/src/core/di/decorators");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var lexer_1 = require("angular2/src/core/change_detection/parser/lexer");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var ast_1 = require("angular2/src/core/change_detection/parser/ast");
var _implicitReceiver = new ast_1.ImplicitReceiver();
var INTERPOLATION_REGEXP = /\{\{([\s\S]*?)\}\}/g;
var ParseException = (function(_super) {
__extends(ParseException, _super);
function ParseException(message, input, errLocation, ctxLocation) {
_super.call(this, "Parser Error: " + message + " " + errLocation + " [" + input + "] in " + ctxLocation);
}
return ParseException;
})(exceptions_1.BaseException);
var SplitInterpolation = (function() {
function SplitInterpolation(strings, expressions) {
this.strings = strings;
this.expressions = expressions;
}
return SplitInterpolation;
})();
exports.SplitInterpolation = SplitInterpolation;
var Parser = (function() {
function Parser(_lexer, providedReflector) {
if (providedReflector === void 0) {
providedReflector = null;
}
this._lexer = _lexer;
this._reflector = lang_1.isPresent(providedReflector) ? providedReflector : reflection_1.reflector;
}
Parser.prototype.parseAction = function(input, location) {
this._checkNoInterpolation(input, location);
var tokens = this._lexer.tokenize(input);
var ast = new _ParseAST(input, location, tokens, this._reflector, true).parseChain();
return new ast_1.ASTWithSource(ast, input, location);
};
Parser.prototype.parseBinding = function(input, location) {
var ast = this._parseBindingAst(input, location);
return new ast_1.ASTWithSource(ast, input, location);
};
Parser.prototype.parseSimpleBinding = function(input, location) {
var ast = this._parseBindingAst(input, location);
if (!SimpleExpressionChecker.check(ast)) {
throw new ParseException('Host binding expression can only contain field access and constants', input, location);
}
return new ast_1.ASTWithSource(ast, input, location);
};
Parser.prototype._parseBindingAst = function(input, location) {
var quote = this._parseQuote(input, location);
if (lang_1.isPresent(quote)) {
return quote;
}
this._checkNoInterpolation(input, location);
var tokens = this._lexer.tokenize(input);
return new _ParseAST(input, location, tokens, this._reflector, false).parseChain();
};
Parser.prototype._parseQuote = function(input, location) {
if (lang_1.isBlank(input))
return null;
var prefixSeparatorIndex = input.indexOf(':');
if (prefixSeparatorIndex == -1)
return null;
var prefix = input.substring(0, prefixSeparatorIndex).trim();
if (!lexer_1.isIdentifier(prefix))
return null;
var uninterpretedExpression = input.substring(prefixSeparatorIndex + 1);
return new ast_1.Quote(prefix, uninterpretedExpression, location);
};
Parser.prototype.parseTemplateBindings = function(input, location) {
var tokens = this._lexer.tokenize(input);
return new _ParseAST(input, location, tokens, this._reflector, false).parseTemplateBindings();
};
Parser.prototype.parseInterpolation = function(input, location) {
var split = this.splitInterpolation(input, location);
if (split == null)
return null;
var expressions = [];
for (var i = 0; i < split.expressions.length; ++i) {
var tokens = this._lexer.tokenize(split.expressions[i]);
var ast = new _ParseAST(input, location, tokens, this._reflector, false).parseChain();
expressions.push(ast);
}
return new ast_1.ASTWithSource(new ast_1.Interpolation(split.strings, expressions), input, location);
};
Parser.prototype.splitInterpolation = function(input, location) {
var parts = lang_1.StringWrapper.split(input, INTERPOLATION_REGEXP);
if (parts.length <= 1) {
return null;
}
var strings = [];
var expressions = [];
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
if (i % 2 === 0) {
strings.push(part);
} else if (part.trim().length > 0) {
expressions.push(part);
} else {
throw new ParseException('Blank expressions are not allowed in interpolated strings', input, "at column " + this._findInterpolationErrorColumn(parts, i) + " in", location);
}
}
return new SplitInterpolation(strings, expressions);
};
Parser.prototype.wrapLiteralPrimitive = function(input, location) {
return new ast_1.ASTWithSource(new ast_1.LiteralPrimitive(input), input, location);
};
Parser.prototype._checkNoInterpolation = function(input, location) {
var parts = lang_1.StringWrapper.split(input, INTERPOLATION_REGEXP);
if (parts.length > 1) {
throw new ParseException('Got interpolation ({{}}) where expression was expected', input, "at column " + this._findInterpolationErrorColumn(parts, 1) + " in", location);
}
};
Parser.prototype._findInterpolationErrorColumn = function(parts, partInErrIdx) {
var errLocation = '';
for (var j = 0; j < partInErrIdx; j++) {
errLocation += j % 2 === 0 ? parts[j] : "{{" + parts[j] + "}}";
}
return errLocation.length;
};
Parser = __decorate([decorators_1.Injectable(), __metadata('design:paramtypes', [lexer_1.Lexer, reflection_1.Reflector])], Parser);
return Parser;
})();
exports.Parser = Parser;
var _ParseAST = (function() {
function _ParseAST(input, location, tokens, reflector, parseAction) {
this.input = input;
this.location = location;
this.tokens = tokens;
this.reflector = reflector;
this.parseAction = parseAction;
this.index = 0;
}
_ParseAST.prototype.peek = function(offset) {
var i = this.index + offset;
return i < this.tokens.length ? this.tokens[i] : lexer_1.EOF;
};
Object.defineProperty(_ParseAST.prototype, "next", {
get: function() {
return this.peek(0);
},
enumerable: true,
configurable: true
});
Object.defineProperty(_ParseAST.prototype, "inputIndex", {
get: function() {
return (this.index < this.tokens.length) ? this.next.index : this.input.length;
},
enumerable: true,
configurable: true
});
_ParseAST.prototype.advance = function() {
this.index++;
};
_ParseAST.prototype.optionalCharacter = function(code) {
if (this.next.isCharacter(code)) {
this.advance();
return true;
} else {
return false;
}
};
_ParseAST.prototype.optionalKeywordVar = function() {
if (this.peekKeywordVar()) {
this.advance();
return true;
} else {
return false;
}
};
_ParseAST.prototype.peekKeywordVar = function() {
return this.next.isKeywordVar() || this.next.isOperator('#');
};
_ParseAST.prototype.expectCharacter = function(code) {
if (this.optionalCharacter(code))
return ;
this.error("Missing expected " + lang_1.StringWrapper.fromCharCode(code));
};
_ParseAST.prototype.optionalOperator = function(op) {
if (this.next.isOperator(op)) {
this.advance();
return true;
} else {
return false;
}
};
_ParseAST.prototype.expectOperator = function(operator) {
if (this.optionalOperator(operator))
return ;
this.error("Missing expected operator " + operator);
};
_ParseAST.prototype.expectIdentifierOrKeyword = function() {
var n = this.next;
if (!n.isIdentifier() && !n.isKeyword()) {
this.error("Unexpected token " + n + ", expected identifier or keyword");
}
this.advance();
return n.toString();
};
_ParseAST.prototype.expectIdentifierOrKeywordOrString = function() {
var n = this.next;
if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {
this.error("Unexpected token " + n + ", expected identifier, keyword, or string");
}
this.advance();
return n.toString();
};
_ParseAST.prototype.parseChain = function() {
var exprs = [];
while (this.index < this.tokens.length) {
var expr = this.parsePipe();
exprs.push(expr);
if (this.optionalCharacter(lexer_1.$SEMICOLON)) {
if (!this.parseAction) {
this.error("Binding expression cannot contain chained expression");
}
while (this.optionalCharacter(lexer_1.$SEMICOLON)) {}
} else if (this.index < this.tokens.length) {
this.error("Unexpected token '" + this.next + "'");
}
}
if (exprs.length == 0)
return new ast_1.EmptyExpr();
if (exprs.length == 1)
return exprs[0];
return new ast_1.Chain(exprs);
};
_ParseAST.prototype.parsePipe = function() {
var result = this.parseExpression();
if (this.optionalOperator("|")) {
if (this.parseAction) {
this.error("Cannot have a pipe in an action expression");
}
do {
var name = this.expectIdentifierOrKeyword();
var args = [];
while (this.optionalCharacter(lexer_1.$COLON)) {
args.push(this.parseExpression());
}
result = new ast_1.BindingPipe(result, name, args);
} while (this.optionalOperator("|"));
}
return result;
};
_ParseAST.prototype.parseExpression = function() {
return this.parseConditional();
};
_ParseAST.prototype.parseConditional = function() {
var start = this.inputIndex;
var result = this.parseLogicalOr();
if (this.optionalOperator('?')) {
var yes = this.parsePipe();
if (!this.optionalCharacter(lexer_1.$COLON)) {
var end = this.inputIndex;
var expression = this.input.substring(start, end);
this.error("Conditional expression " + expression + " requires all 3 expressions");
}
var no = this.parsePipe();
return new ast_1.Conditional(result, yes, no);
} else {
return result;
}
};
_ParseAST.prototype.parseLogicalOr = function() {
var result = this.parseLogicalAnd();
while (this.optionalOperator('||')) {
result = new ast_1.Binary('||', result, this.parseLogicalAnd());
}
return result;
};
_ParseAST.prototype.parseLogicalAnd = function() {
var result = this.parseEquality();
while (this.optionalOperator('&&')) {
result = new ast_1.Binary('&&', result, this.parseEquality());
}
return result;
};
_ParseAST.prototype.parseEquality = function() {
var result = this.parseRelational();
while (true) {
if (this.optionalOperator('==')) {
result = new ast_1.Binary('==', result, this.parseRelational());
} else if (this.optionalOperator('===')) {
result = new ast_1.Binary('===', result, this.parseRelational());
} else if (this.optionalOperator('!=')) {
result = new ast_1.Binary('!=', result, this.parseRelational());
} else if (this.optionalOperator('!==')) {
result = new ast_1.Binary('!==', result, this.parseRelational());
} else {
return result;
}
}
};
_ParseAST.prototype.parseRelational = function() {
var result = this.parseAdditive();
while (true) {
if (this.optionalOperator('<')) {
result = new ast_1.Binary('<', result, this.parseAdditive());
} else if (this.optionalOperator('>')) {
result = new ast_1.Binary('>', result, this.parseAdditive());
} else if (this.optionalOperator('<=')) {
result = new ast_1.Binary('<=', result, this.parseAdditive());
} else if (this.optionalOperator('>=')) {
result = new ast_1.Binary('>=', result, this.parseAdditive());
} else {
return result;
}
}
};
_ParseAST.prototype.parseAdditive = function() {
var result = this.parseMultiplicative();
while (true) {
if (this.optionalOperator('+')) {
result = new ast_1.Binary('+', result, this.parseMultiplicative());
} else if (this.optionalOperator('-')) {
result = new ast_1.Binary('-', result, this.parseMultiplicative());
} else {
return result;
}
}
};
_ParseAST.prototype.parseMultiplicative = function() {
var result = this.parsePrefix();
while (true) {
if (this.optionalOperator('*')) {
result = new ast_1.Binary('*', result, this.parsePrefix());
} else if (this.optionalOperator('%')) {
result = new ast_1.Binary('%', result, this.parsePrefix());
} else if (this.optionalOperator('/')) {
result = new ast_1.Binary('/', result, this.parsePrefix());
} else {
return result;
}
}
};
_ParseAST.prototype.parsePrefix = function() {
if (this.optionalOperator('+')) {
return this.parsePrefix();
} else if (this.optionalOperator('-')) {
return new ast_1.Binary('-', new ast_1.LiteralPrimitive(0), this.parsePrefix());
} else if (this.optionalOperator('!')) {
return new ast_1.PrefixNot(this.parsePrefix());
} else {
return this.parseCallChain();
}
};
_ParseAST.prototype.parseCallChain = function() {
var result = this.parsePrimary();
while (true) {
if (this.optionalCharacter(lexer_1.$PERIOD)) {
result = this.parseAccessMemberOrMethodCall(result, false);
} else if (this.optionalOperator('?.')) {
result = this.parseAccessMemberOrMethodCall(result, true);
} else if (this.optionalCharacter(lexer_1.$LBRACKET)) {
var key = this.parsePipe();
this.expectCharacter(lexer_1.$RBRACKET);
if (this.optionalOperator("=")) {
var value = this.parseConditional();
result = new ast_1.KeyedWrite(result, key, value);
} else {
result = new ast_1.KeyedRead(result, key);
}
} else if (this.optionalCharacter(lexer_1.$LPAREN)) {
var args = this.parseCallArguments();
this.expectCharacter(lexer_1.$RPAREN);
result = new ast_1.FunctionCall(result, args);
} else {
return result;
}
}
};
_ParseAST.prototype.parsePrimary = function() {
if (this.optionalCharacter(lexer_1.$LPAREN)) {
var result = this.parsePipe();
this.expectCharacter(lexer_1.$RPAREN);
return result;
} else if (this.next.isKeywordNull() || this.next.isKeywordUndefined()) {
this.advance();
return new ast_1.LiteralPrimitive(null);
} else if (this.next.isKeywordTrue()) {
this.advance();
return new ast_1.LiteralPrimitive(true);
} else if (this.next.isKeywordFalse()) {
this.advance();
return new ast_1.LiteralPrimitive(false);
} else if (this.optionalCharacter(lexer_1.$LBRACKET)) {
var elements = this.parseExpressionList(lexer_1.$RBRACKET);
this.expectCharacter(lexer_1.$RBRACKET);
return new ast_1.LiteralArray(elements);
} else if (this.next.isCharacter(lexer_1.$LBRACE)) {
return this.parseLiteralMap();
} else if (this.next.isIdentifier()) {
return this.parseAccessMemberOrMethodCall(_implicitReceiver, false);
} else if (this.next.isNumber()) {
var value = this.next.toNumber();
this.advance();
return new ast_1.LiteralPrimitive(value);
} else if (this.next.isString()) {
var literalValue = this.next.toString();
this.advance();
return new ast_1.LiteralPrimitive(literalValue);
} else if (this.index >= this.tokens.length) {
this.error("Unexpected end of expression: " + this.input);
} else {
this.error("Unexpected token " + this.next);
}
throw new exceptions_1.BaseException("Fell through all cases in parsePrimary");
};
_ParseAST.prototype.parseExpressionList = function(terminator) {
var result = [];
if (!this.next.isCharacter(terminator)) {
do {
result.push(this.parsePipe());
} while (this.optionalCharacter(lexer_1.$COMMA));
}
return result;
};
_ParseAST.prototype.parseLiteralMap = function() {
var keys = [];
var values = [];
this.expectCharacter(lexer_1.$LBRACE);
if (!this.optionalCharacter(lexer_1.$RBRACE)) {
do {
var key = this.expectIdentifierOrKeywordOrString();
keys.push(key);
this.expectCharacter(lexer_1.$COLON);
values.push(this.parsePipe());
} while (this.optionalCharacter(lexer_1.$COMMA));
this.expectCharacter(lexer_1.$RBRACE);
}
return new ast_1.LiteralMap(keys, values);
};
_ParseAST.prototype.parseAccessMemberOrMethodCall = function(receiver, isSafe) {
if (isSafe === void 0) {
isSafe = false;
}
var id = this.expectIdentifierOrKeyword();
if (this.optionalCharacter(lexer_1.$LPAREN)) {
var args = this.parseCallArguments();
this.expectCharacter(lexer_1.$RPAREN);
var fn = this.reflector.method(id);
return isSafe ? new ast_1.SafeMethodCall(receiver, id, fn, args) : new ast_1.MethodCall(receiver, id, fn, args);
} else {
if (isSafe) {
if (this.optionalOperator("=")) {
this.error("The '?.' operator cannot be used in the assignment");
} else {
return new ast_1.SafePropertyRead(receiver, id, this.reflector.getter(id));
}
} else {
if (this.optionalOperator("=")) {
if (!this.parseAction) {
this.error("Bindings cannot contain assignments");
}
var value = this.parseConditional();
return new ast_1.PropertyWrite(receiver, id, this.reflector.setter(id), value);
} else {
return new ast_1.PropertyRead(receiver, id, this.reflector.getter(id));
}
}
}
return null;
};
_ParseAST.prototype.parseCallArguments = function() {
if (this.next.isCharacter(lexer_1.$RPAREN))
return [];
var positionals = [];
do {
positionals.push(this.parsePipe());
} while (this.optionalCharacter(lexer_1.$COMMA));
return positionals;
};
_ParseAST.prototype.parseBlockContent = function() {
if (!this.parseAction) {
this.error("Binding expression cannot contain chained expression");
}
var exprs = [];
while (this.index < this.tokens.length && !this.next.isCharacter(lexer_1.$RBRACE)) {
var expr = this.parseExpression();
exprs.push(expr);
if (this.optionalCharacter(lexer_1.$SEMICOLON)) {
while (this.optionalCharacter(lexer_1.$SEMICOLON)) {}
}
}
if (exprs.length == 0)
return new ast_1.EmptyExpr();
if (exprs.length == 1)
return exprs[0];
return new ast_1.Chain(exprs);
};
_ParseAST.prototype.expectTemplateBindingKey = function() {
var result = '';
var operatorFound = false;
do {
result += this.expectIdentifierOrKeywordOrString();
operatorFound = this.optionalOperator('-');
if (operatorFound) {
result += '-';
}
} while (operatorFound);
return result.toString();
};
_ParseAST.prototype.parseTemplateBindings = function() {
var bindings = [];
var prefix = null;
while (this.index < this.tokens.length) {
var keyIsVar = this.optionalKeywordVar();
var key = this.expectTemplateBindingKey();
if (!keyIsVar) {
if (prefix == null) {
prefix = key;
} else {
key = prefix + key[0].toUpperCase() + key.substring(1);
}
}
this.optionalCharacter(lexer_1.$COLON);
var name = null;
var expression = null;
if (keyIsVar) {
if (this.optionalOperator("=")) {
name = this.expectTemplateBindingKey();
} else {
name = '\$implicit';
}
} else if (this.next !== lexer_1.EOF && !this.peekKeywordVar()) {
var start = this.inputIndex;
var ast = this.parsePipe();
var source = this.input.substring(start, this.inputIndex);
expression = new ast_1.ASTWithSource(ast, source, this.location);
}
bindings.push(new ast_1.TemplateBinding(key, keyIsVar, name, expression));
if (!this.optionalCharacter(lexer_1.$SEMICOLON)) {
this.optionalCharacter(lexer_1.$COMMA);
}
}
return bindings;
};
_ParseAST.prototype.error = function(message, index) {
if (index === void 0) {
index = null;
}
if (lang_1.isBlank(index))
index = this.index;
var location = (index < this.tokens.length) ? "at column " + (this.tokens[index].index + 1) + " in" : "at the end of the expression";
throw new ParseException(message, this.input, location, this.location);
};
return _ParseAST;
})();
exports._ParseAST = _ParseAST;
var SimpleExpressionChecker = (function() {
function SimpleExpressionChecker() {
this.simple = true;
}
SimpleExpressionChecker.check = function(ast) {
var s = new SimpleExpressionChecker();
ast.visit(s);
return s.simple;
};
SimpleExpressionChecker.prototype.visitImplicitReceiver = function(ast) {};
SimpleExpressionChecker.prototype.visitInterpolation = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitLiteralPrimitive = function(ast) {};
SimpleExpressionChecker.prototype.visitPropertyRead = function(ast) {};
SimpleExpressionChecker.prototype.visitPropertyWrite = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitSafePropertyRead = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitMethodCall = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitSafeMethodCall = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitFunctionCall = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitLiteralArray = function(ast) {
this.visitAll(ast.expressions);
};
SimpleExpressionChecker.prototype.visitLiteralMap = function(ast) {
this.visitAll(ast.values);
};
SimpleExpressionChecker.prototype.visitBinary = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitPrefixNot = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitConditional = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitPipe = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitKeyedRead = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitKeyedWrite = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitAll = function(asts) {
var res = collection_1.ListWrapper.createFixedSize(asts.length);
for (var i = 0; i < asts.length; ++i) {
res[i] = asts[i].visit(this);
}
return res;
};
SimpleExpressionChecker.prototype.visitChain = function(ast) {
this.simple = false;
};
SimpleExpressionChecker.prototype.visitQuote = function(ast) {
this.simple = false;
};
return SimpleExpressionChecker;
})();
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/parser/locals", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var Locals = (function() {
function Locals(parent, current) {
this.parent = parent;
this.current = current;
}
Locals.prototype.contains = function(name) {
if (this.current.has(name)) {
return true;
}
if (lang_1.isPresent(this.parent)) {
return this.parent.contains(name);
}
return false;
};
Locals.prototype.get = function(name) {
if (this.current.has(name)) {
return this.current.get(name);
}
if (lang_1.isPresent(this.parent)) {
return this.parent.get(name);
}
throw new exceptions_1.BaseException("Cannot find '" + name + "'");
};
Locals.prototype.set = function(name, value) {
if (this.current.has(name)) {
this.current.set(name, value);
} else {
throw new exceptions_1.BaseException("Setting of new keys post-construction is not supported. Key: " + name + ".");
}
};
Locals.prototype.clearLocalValues = function() {
collection_1.MapWrapper.clearValues(this.current);
};
return Locals;
})();
exports.Locals = Locals;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/exceptions", ["angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var exceptions_1 = require("angular2/src/facade/exceptions");
var ExpressionChangedAfterItHasBeenCheckedException = (function(_super) {
__extends(ExpressionChangedAfterItHasBeenCheckedException, _super);
function ExpressionChangedAfterItHasBeenCheckedException(exp, oldValue, currValue, context) {
_super.call(this, ("Expression '" + exp + "' has changed after it was checked. ") + ("Previous value: '" + oldValue + "'. Current value: '" + currValue + "'"));
}
return ExpressionChangedAfterItHasBeenCheckedException;
})(exceptions_1.BaseException);
exports.ExpressionChangedAfterItHasBeenCheckedException = ExpressionChangedAfterItHasBeenCheckedException;
var ChangeDetectionError = (function(_super) {
__extends(ChangeDetectionError, _super);
function ChangeDetectionError(exp, originalException, originalStack, context) {
_super.call(this, originalException + " in [" + exp + "]", originalException, originalStack, context);
this.location = exp;
}
return ChangeDetectionError;
})(exceptions_1.WrappedException);
exports.ChangeDetectionError = ChangeDetectionError;
var DehydratedException = (function(_super) {
__extends(DehydratedException, _super);
function DehydratedException(details) {
_super.call(this, "Attempt to use a dehydrated detector: " + details);
}
return DehydratedException;
})(exceptions_1.BaseException);
exports.DehydratedException = DehydratedException;
var EventEvaluationError = (function(_super) {
__extends(EventEvaluationError, _super);
function EventEvaluationError(eventName, originalException, originalStack, context) {
_super.call(this, "Error during evaluation of \"" + eventName + "\"", originalException, originalStack, context);
}
return EventEvaluationError;
})(exceptions_1.WrappedException);
exports.EventEvaluationError = EventEvaluationError;
var EventEvaluationErrorContext = (function() {
function EventEvaluationErrorContext(element, componentElement, context, locals, injector) {
this.element = element;
this.componentElement = componentElement;
this.context = context;
this.locals = locals;
this.injector = injector;
}
return EventEvaluationErrorContext;
})();
exports.EventEvaluationErrorContext = EventEvaluationErrorContext;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/interfaces", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var DebugContext = (function() {
function DebugContext(element, componentElement, directive, context, locals, injector) {
this.element = element;
this.componentElement = componentElement;
this.directive = directive;
this.context = context;
this.locals = locals;
this.injector = injector;
}
return DebugContext;
})();
exports.DebugContext = DebugContext;
var ChangeDetectorGenConfig = (function() {
function ChangeDetectorGenConfig(genDebugInfo, logBindingUpdate, useJit) {
this.genDebugInfo = genDebugInfo;
this.logBindingUpdate = logBindingUpdate;
this.useJit = useJit;
}
return ChangeDetectorGenConfig;
})();
exports.ChangeDetectorGenConfig = ChangeDetectorGenConfig;
var ChangeDetectorDefinition = (function() {
function ChangeDetectorDefinition(id, strategy, variableNames, bindingRecords, eventRecords, directiveRecords, genConfig) {
this.id = id;
this.strategy = strategy;
this.variableNames = variableNames;
this.bindingRecords = bindingRecords;
this.eventRecords = eventRecords;
this.directiveRecords = directiveRecords;
this.genConfig = genConfig;
}
return ChangeDetectorDefinition;
})();
exports.ChangeDetectorDefinition = ChangeDetectorDefinition;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/constants", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
(function(ChangeDetectorState) {
ChangeDetectorState[ChangeDetectorState["NeverChecked"] = 0] = "NeverChecked";
ChangeDetectorState[ChangeDetectorState["CheckedBefore"] = 1] = "CheckedBefore";
ChangeDetectorState[ChangeDetectorState["Errored"] = 2] = "Errored";
})(exports.ChangeDetectorState || (exports.ChangeDetectorState = {}));
var ChangeDetectorState = exports.ChangeDetectorState;
(function(ChangeDetectionStrategy) {
ChangeDetectionStrategy[ChangeDetectionStrategy["CheckOnce"] = 0] = "CheckOnce";
ChangeDetectionStrategy[ChangeDetectionStrategy["Checked"] = 1] = "Checked";
ChangeDetectionStrategy[ChangeDetectionStrategy["CheckAlways"] = 2] = "CheckAlways";
ChangeDetectionStrategy[ChangeDetectionStrategy["Detached"] = 3] = "Detached";
ChangeDetectionStrategy[ChangeDetectionStrategy["OnPush"] = 4] = "OnPush";
ChangeDetectionStrategy[ChangeDetectionStrategy["Default"] = 5] = "Default";
})(exports.ChangeDetectionStrategy || (exports.ChangeDetectionStrategy = {}));
var ChangeDetectionStrategy = exports.ChangeDetectionStrategy;
exports.CHANGE_DETECTION_STRATEGY_VALUES = [ChangeDetectionStrategy.CheckOnce, ChangeDetectionStrategy.Checked, ChangeDetectionStrategy.CheckAlways, ChangeDetectionStrategy.Detached, ChangeDetectionStrategy.OnPush, ChangeDetectionStrategy.Default];
exports.CHANGE_DETECTOR_STATE_VALUES = [ChangeDetectorState.NeverChecked, ChangeDetectorState.CheckedBefore, ChangeDetectorState.Errored];
function isDefaultChangeDetectionStrategy(changeDetectionStrategy) {
return lang_1.isBlank(changeDetectionStrategy) || changeDetectionStrategy === ChangeDetectionStrategy.Default;
}
exports.isDefaultChangeDetectionStrategy = isDefaultChangeDetectionStrategy;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/pipe_lifecycle_reflector", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function implementsOnDestroy(pipe) {
return pipe.constructor.prototype.ngOnDestroy;
}
exports.implementsOnDestroy = implementsOnDestroy;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/binding_record", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var DIRECTIVE_LIFECYCLE = "directiveLifecycle";
var BINDING = "native";
var DIRECTIVE = "directive";
var ELEMENT_PROPERTY = "elementProperty";
var ELEMENT_ATTRIBUTE = "elementAttribute";
var ELEMENT_CLASS = "elementClass";
var ELEMENT_STYLE = "elementStyle";
var TEXT_NODE = "textNode";
var EVENT = "event";
var HOST_EVENT = "hostEvent";
var BindingTarget = (function() {
function BindingTarget(mode, elementIndex, name, unit, debug) {
this.mode = mode;
this.elementIndex = elementIndex;
this.name = name;
this.unit = unit;
this.debug = debug;
}
BindingTarget.prototype.isDirective = function() {
return this.mode === DIRECTIVE;
};
BindingTarget.prototype.isElementProperty = function() {
return this.mode === ELEMENT_PROPERTY;
};
BindingTarget.prototype.isElementAttribute = function() {
return this.mode === ELEMENT_ATTRIBUTE;
};
BindingTarget.prototype.isElementClass = function() {
return this.mode === ELEMENT_CLASS;
};
BindingTarget.prototype.isElementStyle = function() {
return this.mode === ELEMENT_STYLE;
};
BindingTarget.prototype.isTextNode = function() {
return this.mode === TEXT_NODE;
};
return BindingTarget;
})();
exports.BindingTarget = BindingTarget;
var BindingRecord = (function() {
function BindingRecord(mode, target, implicitReceiver, ast, setter, lifecycleEvent, directiveRecord) {
this.mode = mode;
this.target = target;
this.implicitReceiver = implicitReceiver;
this.ast = ast;
this.setter = setter;
this.lifecycleEvent = lifecycleEvent;
this.directiveRecord = directiveRecord;
}
BindingRecord.prototype.isDirectiveLifecycle = function() {
return this.mode === DIRECTIVE_LIFECYCLE;
};
BindingRecord.prototype.callOnChanges = function() {
return lang_1.isPresent(this.directiveRecord) && this.directiveRecord.callOnChanges;
};
BindingRecord.prototype.isDefaultChangeDetection = function() {
return lang_1.isBlank(this.directiveRecord) || this.directiveRecord.isDefaultChangeDetection();
};
BindingRecord.createDirectiveDoCheck = function(directiveRecord) {
return new BindingRecord(DIRECTIVE_LIFECYCLE, null, 0, null, null, "DoCheck", directiveRecord);
};
BindingRecord.createDirectiveOnInit = function(directiveRecord) {
return new BindingRecord(DIRECTIVE_LIFECYCLE, null, 0, null, null, "OnInit", directiveRecord);
};
BindingRecord.createDirectiveOnChanges = function(directiveRecord) {
return new BindingRecord(DIRECTIVE_LIFECYCLE, null, 0, null, null, "OnChanges", directiveRecord);
};
BindingRecord.createForDirective = function(ast, propertyName, setter, directiveRecord) {
var elementIndex = directiveRecord.directiveIndex.elementIndex;
var t = new BindingTarget(DIRECTIVE, elementIndex, propertyName, null, ast.toString());
return new BindingRecord(DIRECTIVE, t, 0, ast, setter, null, directiveRecord);
};
BindingRecord.createForElementProperty = function(ast, elementIndex, propertyName) {
var t = new BindingTarget(ELEMENT_PROPERTY, elementIndex, propertyName, null, ast.toString());
return new BindingRecord(BINDING, t, 0, ast, null, null, null);
};
BindingRecord.createForElementAttribute = function(ast, elementIndex, attributeName) {
var t = new BindingTarget(ELEMENT_ATTRIBUTE, elementIndex, attributeName, null, ast.toString());
return new BindingRecord(BINDING, t, 0, ast, null, null, null);
};
BindingRecord.createForElementClass = function(ast, elementIndex, className) {
var t = new BindingTarget(ELEMENT_CLASS, elementIndex, className, null, ast.toString());
return new BindingRecord(BINDING, t, 0, ast, null, null, null);
};
BindingRecord.createForElementStyle = function(ast, elementIndex, styleName, unit) {
var t = new BindingTarget(ELEMENT_STYLE, elementIndex, styleName, unit, ast.toString());
return new BindingRecord(BINDING, t, 0, ast, null, null, null);
};
BindingRecord.createForHostProperty = function(directiveIndex, ast, propertyName) {
var t = new BindingTarget(ELEMENT_PROPERTY, directiveIndex.elementIndex, propertyName, null, ast.toString());
return new BindingRecord(BINDING, t, directiveIndex, ast, null, null, null);
};
BindingRecord.createForHostAttribute = function(directiveIndex, ast, attributeName) {
var t = new BindingTarget(ELEMENT_ATTRIBUTE, directiveIndex.elementIndex, attributeName, null, ast.toString());
return new BindingRecord(BINDING, t, directiveIndex, ast, null, null, null);
};
BindingRecord.createForHostClass = function(directiveIndex, ast, className) {
var t = new BindingTarget(ELEMENT_CLASS, directiveIndex.elementIndex, className, null, ast.toString());
return new BindingRecord(BINDING, t, directiveIndex, ast, null, null, null);
};
BindingRecord.createForHostStyle = function(directiveIndex, ast, styleName, unit) {
var t = new BindingTarget(ELEMENT_STYLE, directiveIndex.elementIndex, styleName, unit, ast.toString());
return new BindingRecord(BINDING, t, directiveIndex, ast, null, null, null);
};
BindingRecord.createForTextNode = function(ast, elementIndex) {
var t = new BindingTarget(TEXT_NODE, elementIndex, null, null, ast.toString());
return new BindingRecord(BINDING, t, 0, ast, null, null, null);
};
BindingRecord.createForEvent = function(ast, eventName, elementIndex) {
var t = new BindingTarget(EVENT, elementIndex, eventName, null, ast.toString());
return new BindingRecord(EVENT, t, 0, ast, null, null, null);
};
BindingRecord.createForHostEvent = function(ast, eventName, directiveRecord) {
var directiveIndex = directiveRecord.directiveIndex;
var t = new BindingTarget(HOST_EVENT, directiveIndex.elementIndex, eventName, null, ast.toString());
return new BindingRecord(HOST_EVENT, t, directiveIndex, ast, null, null, directiveRecord);
};
return BindingRecord;
})();
exports.BindingRecord = BindingRecord;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/directive_record", ["angular2/src/facade/lang", "angular2/src/core/change_detection/constants"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var constants_1 = require("angular2/src/core/change_detection/constants");
var DirectiveIndex = (function() {
function DirectiveIndex(elementIndex, directiveIndex) {
this.elementIndex = elementIndex;
this.directiveIndex = directiveIndex;
}
Object.defineProperty(DirectiveIndex.prototype, "name", {
get: function() {
return this.elementIndex + "_" + this.directiveIndex;
},
enumerable: true,
configurable: true
});
return DirectiveIndex;
})();
exports.DirectiveIndex = DirectiveIndex;
var DirectiveRecord = (function() {
function DirectiveRecord(_a) {
var _b = _a === void 0 ? {} : _a,
directiveIndex = _b.directiveIndex,
callAfterContentInit = _b.callAfterContentInit,
callAfterContentChecked = _b.callAfterContentChecked,
callAfterViewInit = _b.callAfterViewInit,
callAfterViewChecked = _b.callAfterViewChecked,
callOnChanges = _b.callOnChanges,
callDoCheck = _b.callDoCheck,
callOnInit = _b.callOnInit,
callOnDestroy = _b.callOnDestroy,
changeDetection = _b.changeDetection,
outputs = _b.outputs;
this.directiveIndex = directiveIndex;
this.callAfterContentInit = lang_1.normalizeBool(callAfterContentInit);
this.callAfterContentChecked = lang_1.normalizeBool(callAfterContentChecked);
this.callOnChanges = lang_1.normalizeBool(callOnChanges);
this.callAfterViewInit = lang_1.normalizeBool(callAfterViewInit);
this.callAfterViewChecked = lang_1.normalizeBool(callAfterViewChecked);
this.callDoCheck = lang_1.normalizeBool(callDoCheck);
this.callOnInit = lang_1.normalizeBool(callOnInit);
this.callOnDestroy = lang_1.normalizeBool(callOnDestroy);
this.changeDetection = changeDetection;
this.outputs = outputs;
}
DirectiveRecord.prototype.isDefaultChangeDetection = function() {
return constants_1.isDefaultChangeDetectionStrategy(this.changeDetection);
};
return DirectiveRecord;
})();
exports.DirectiveRecord = DirectiveRecord;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/change_detector_ref", ["angular2/src/core/change_detection/constants"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var constants_1 = require("angular2/src/core/change_detection/constants");
var ChangeDetectorRef = (function() {
function ChangeDetectorRef() {}
return ChangeDetectorRef;
})();
exports.ChangeDetectorRef = ChangeDetectorRef;
var ChangeDetectorRef_ = (function(_super) {
__extends(ChangeDetectorRef_, _super);
function ChangeDetectorRef_(_cd) {
_super.call(this);
this._cd = _cd;
}
ChangeDetectorRef_.prototype.markForCheck = function() {
this._cd.markPathToRootAsCheckOnce();
};
ChangeDetectorRef_.prototype.detach = function() {
this._cd.mode = constants_1.ChangeDetectionStrategy.Detached;
};
ChangeDetectorRef_.prototype.detectChanges = function() {
this._cd.detectChanges();
};
ChangeDetectorRef_.prototype.checkNoChanges = function() {
this._cd.checkNoChanges();
};
ChangeDetectorRef_.prototype.reattach = function() {
this._cd.mode = constants_1.ChangeDetectionStrategy.CheckAlways;
this.markForCheck();
};
return ChangeDetectorRef_;
})(ChangeDetectorRef);
exports.ChangeDetectorRef_ = ChangeDetectorRef_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/profile/wtf_impl", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var trace;
var events;
function detectWTF() {
var wtf = lang_1.global['wtf'];
if (wtf) {
trace = wtf['trace'];
if (trace) {
events = trace['events'];
return true;
}
}
return false;
}
exports.detectWTF = detectWTF;
function createScope(signature, flags) {
if (flags === void 0) {
flags = null;
}
return events.createScope(signature, flags);
}
exports.createScope = createScope;
function leave(scope, returnValue) {
trace.leaveScope(scope, returnValue);
return returnValue;
}
exports.leave = leave;
function startTimeRange(rangeType, action) {
return trace.beginTimeRange(rangeType, action);
}
exports.startTimeRange = startTimeRange;
function endTimeRange(range) {
trace.endTimeRange(range);
}
exports.endTimeRange = endTimeRange;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/proto_record", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
(function(RecordType) {
RecordType[RecordType["Self"] = 0] = "Self";
RecordType[RecordType["Const"] = 1] = "Const";
RecordType[RecordType["PrimitiveOp"] = 2] = "PrimitiveOp";
RecordType[RecordType["PropertyRead"] = 3] = "PropertyRead";
RecordType[RecordType["PropertyWrite"] = 4] = "PropertyWrite";
RecordType[RecordType["Local"] = 5] = "Local";
RecordType[RecordType["InvokeMethod"] = 6] = "InvokeMethod";
RecordType[RecordType["InvokeClosure"] = 7] = "InvokeClosure";
RecordType[RecordType["KeyedRead"] = 8] = "KeyedRead";
RecordType[RecordType["KeyedWrite"] = 9] = "KeyedWrite";
RecordType[RecordType["Pipe"] = 10] = "Pipe";
RecordType[RecordType["Interpolate"] = 11] = "Interpolate";
RecordType[RecordType["SafeProperty"] = 12] = "SafeProperty";
RecordType[RecordType["CollectionLiteral"] = 13] = "CollectionLiteral";
RecordType[RecordType["SafeMethodInvoke"] = 14] = "SafeMethodInvoke";
RecordType[RecordType["DirectiveLifecycle"] = 15] = "DirectiveLifecycle";
RecordType[RecordType["Chain"] = 16] = "Chain";
RecordType[RecordType["SkipRecordsIf"] = 17] = "SkipRecordsIf";
RecordType[RecordType["SkipRecordsIfNot"] = 18] = "SkipRecordsIfNot";
RecordType[RecordType["SkipRecords"] = 19] = "SkipRecords";
})(exports.RecordType || (exports.RecordType = {}));
var RecordType = exports.RecordType;
var ProtoRecord = (function() {
function ProtoRecord(mode, name, funcOrValue, args, fixedArgs, contextIndex, directiveIndex, selfIndex, bindingRecord, lastInBinding, lastInDirective, argumentToPureFunction, referencedBySelf, propertyBindingIndex) {
this.mode = mode;
this.name = name;
this.funcOrValue = funcOrValue;
this.args = args;
this.fixedArgs = fixedArgs;
this.contextIndex = contextIndex;
this.directiveIndex = directiveIndex;
this.selfIndex = selfIndex;
this.bindingRecord = bindingRecord;
this.lastInBinding = lastInBinding;
this.lastInDirective = lastInDirective;
this.argumentToPureFunction = argumentToPureFunction;
this.referencedBySelf = referencedBySelf;
this.propertyBindingIndex = propertyBindingIndex;
}
ProtoRecord.prototype.isPureFunction = function() {
return this.mode === RecordType.Interpolate || this.mode === RecordType.CollectionLiteral;
};
ProtoRecord.prototype.isUsedByOtherRecord = function() {
return !this.lastInBinding || this.referencedBySelf;
};
ProtoRecord.prototype.shouldBeChecked = function() {
return this.argumentToPureFunction || this.lastInBinding || this.isPureFunction() || this.isPipeRecord();
};
ProtoRecord.prototype.isPipeRecord = function() {
return this.mode === RecordType.Pipe;
};
ProtoRecord.prototype.isConditionalSkipRecord = function() {
return this.mode === RecordType.SkipRecordsIfNot || this.mode === RecordType.SkipRecordsIf;
};
ProtoRecord.prototype.isUnconditionalSkipRecord = function() {
return this.mode === RecordType.SkipRecords;
};
ProtoRecord.prototype.isSkipRecord = function() {
return this.isConditionalSkipRecord() || this.isUnconditionalSkipRecord();
};
ProtoRecord.prototype.isLifeCycleRecord = function() {
return this.mode === RecordType.DirectiveLifecycle;
};
return ProtoRecord;
})();
exports.ProtoRecord = ProtoRecord;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/event_binding", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var EventBinding = (function() {
function EventBinding(eventName, elIndex, dirIndex, records) {
this.eventName = eventName;
this.elIndex = elIndex;
this.dirIndex = dirIndex;
this.records = records;
}
return EventBinding;
})();
exports.EventBinding = EventBinding;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/coalesce", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/core/change_detection/proto_record"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var proto_record_1 = require("angular2/src/core/change_detection/proto_record");
function coalesce(srcRecords) {
var dstRecords = [];
var excludedIdxs = [];
var indexMap = new collection_1.Map();
var skipDepth = 0;
var skipSources = collection_1.ListWrapper.createFixedSize(srcRecords.length);
for (var protoIndex = 0; protoIndex < srcRecords.length; protoIndex++) {
var skipRecord = skipSources[protoIndex];
if (lang_1.isPresent(skipRecord)) {
skipDepth--;
skipRecord.fixedArgs[0] = dstRecords.length;
}
var src = srcRecords[protoIndex];
var dst = _cloneAndUpdateIndexes(src, dstRecords, indexMap);
if (dst.isSkipRecord()) {
dstRecords.push(dst);
skipDepth++;
skipSources[dst.fixedArgs[0]] = dst;
} else {
var record = _mayBeAddRecord(dst, dstRecords, excludedIdxs, skipDepth > 0);
indexMap.set(src.selfIndex, record.selfIndex);
}
}
return _optimizeSkips(dstRecords);
}
exports.coalesce = coalesce;
function _optimizeSkips(srcRecords) {
var dstRecords = [];
var skipSources = collection_1.ListWrapper.createFixedSize(srcRecords.length);
var indexMap = new collection_1.Map();
for (var protoIndex = 0; protoIndex < srcRecords.length; protoIndex++) {
var skipRecord = skipSources[protoIndex];
if (lang_1.isPresent(skipRecord)) {
skipRecord.fixedArgs[0] = dstRecords.length;
}
var src = srcRecords[protoIndex];
if (src.isSkipRecord()) {
if (src.isConditionalSkipRecord() && src.fixedArgs[0] === protoIndex + 2 && protoIndex < srcRecords.length - 1 && srcRecords[protoIndex + 1].mode === proto_record_1.RecordType.SkipRecords) {
src.mode = src.mode === proto_record_1.RecordType.SkipRecordsIf ? proto_record_1.RecordType.SkipRecordsIfNot : proto_record_1.RecordType.SkipRecordsIf;
src.fixedArgs[0] = srcRecords[protoIndex + 1].fixedArgs[0];
protoIndex++;
}
if (src.fixedArgs[0] > protoIndex + 1) {
var dst = _cloneAndUpdateIndexes(src, dstRecords, indexMap);
dstRecords.push(dst);
skipSources[dst.fixedArgs[0]] = dst;
}
} else {
var dst = _cloneAndUpdateIndexes(src, dstRecords, indexMap);
dstRecords.push(dst);
indexMap.set(src.selfIndex, dst.selfIndex);
}
}
return dstRecords;
}
function _mayBeAddRecord(record, dstRecords, excludedIdxs, excluded) {
var match = _findFirstMatch(record, dstRecords, excludedIdxs);
if (lang_1.isPresent(match)) {
if (record.lastInBinding) {
dstRecords.push(_createSelfRecord(record, match.selfIndex, dstRecords.length + 1));
match.referencedBySelf = true;
} else {
if (record.argumentToPureFunction) {
match.argumentToPureFunction = true;
}
}
return match;
}
if (excluded) {
excludedIdxs.push(record.selfIndex);
}
dstRecords.push(record);
return record;
}
function _findFirstMatch(record, dstRecords, excludedIdxs) {
return dstRecords.find(function(rr) {
return excludedIdxs.indexOf(rr.selfIndex) == -1 && rr.mode !== proto_record_1.RecordType.DirectiveLifecycle && _haveSameDirIndex(rr, record) && rr.mode === record.mode && lang_1.looseIdentical(rr.funcOrValue, record.funcOrValue) && rr.contextIndex === record.contextIndex && lang_1.looseIdentical(rr.name, record.name) && collection_1.ListWrapper.equals(rr.args, record.args);
});
}
function _cloneAndUpdateIndexes(record, dstRecords, indexMap) {
var args = record.args.map(function(src) {
return _srcToDstSelfIndex(indexMap, src);
});
var contextIndex = _srcToDstSelfIndex(indexMap, record.contextIndex);
var selfIndex = dstRecords.length + 1;
return new proto_record_1.ProtoRecord(record.mode, record.name, record.funcOrValue, args, record.fixedArgs, contextIndex, record.directiveIndex, selfIndex, record.bindingRecord, record.lastInBinding, record.lastInDirective, record.argumentToPureFunction, record.referencedBySelf, record.propertyBindingIndex);
}
function _srcToDstSelfIndex(indexMap, srcIdx) {
var dstIdx = indexMap.get(srcIdx);
return lang_1.isPresent(dstIdx) ? dstIdx : srcIdx;
}
function _createSelfRecord(r, contextIndex, selfIndex) {
return new proto_record_1.ProtoRecord(proto_record_1.RecordType.Self, "self", null, [], r.fixedArgs, contextIndex, r.directiveIndex, selfIndex, r.bindingRecord, r.lastInBinding, r.lastInDirective, false, false, r.propertyBindingIndex);
}
function _haveSameDirIndex(a, b) {
var di1 = lang_1.isBlank(a.directiveIndex) ? null : a.directiveIndex.directiveIndex;
var ei1 = lang_1.isBlank(a.directiveIndex) ? null : a.directiveIndex.elementIndex;
var di2 = lang_1.isBlank(b.directiveIndex) ? null : b.directiveIndex.directiveIndex;
var ei2 = lang_1.isBlank(b.directiveIndex) ? null : b.directiveIndex.elementIndex;
return di1 === di2 && ei1 === ei2;
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/codegen_name_util", ["angular2/src/facade/lang", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var _STATE_ACCESSOR = "state";
var _CONTEXT_ACCESSOR = "context";
var _PROP_BINDING_INDEX = "propertyBindingIndex";
var _DIRECTIVES_ACCESSOR = "directiveIndices";
var _DISPATCHER_ACCESSOR = "dispatcher";
var _LOCALS_ACCESSOR = "locals";
var _MODE_ACCESSOR = "mode";
var _PIPES_ACCESSOR = "pipes";
var _PROTOS_ACCESSOR = "protos";
exports.CONTEXT_ACCESSOR = "context";
exports.CONTEXT_INDEX = 0;
var _FIELD_PREFIX = 'this.';
var _whiteSpaceRegExp = /\W/g;
function sanitizeName(s) {
return lang_1.StringWrapper.replaceAll(s, _whiteSpaceRegExp, '');
}
exports.sanitizeName = sanitizeName;
var CodegenNameUtil = (function() {
function CodegenNameUtil(_records, _eventBindings, _directiveRecords, _utilName) {
this._records = _records;
this._eventBindings = _eventBindings;
this._directiveRecords = _directiveRecords;
this._utilName = _utilName;
this._sanitizedEventNames = new collection_1.Map();
this._sanitizedNames = collection_1.ListWrapper.createFixedSize(this._records.length + 1);
this._sanitizedNames[exports.CONTEXT_INDEX] = exports.CONTEXT_ACCESSOR;
for (var i = 0,
iLen = this._records.length; i < iLen; ++i) {
this._sanitizedNames[i + 1] = sanitizeName("" + this._records[i].name + i);
}
for (var ebIndex = 0; ebIndex < _eventBindings.length; ++ebIndex) {
var eb = _eventBindings[ebIndex];
var names = [exports.CONTEXT_ACCESSOR];
for (var i = 0,
iLen = eb.records.length; i < iLen; ++i) {
names.push(sanitizeName("" + eb.records[i].name + i + "_" + ebIndex));
}
this._sanitizedEventNames.set(eb, names);
}
}
CodegenNameUtil.prototype._addFieldPrefix = function(name) {
return "" + _FIELD_PREFIX + name;
};
CodegenNameUtil.prototype.getDispatcherName = function() {
return this._addFieldPrefix(_DISPATCHER_ACCESSOR);
};
CodegenNameUtil.prototype.getPipesAccessorName = function() {
return this._addFieldPrefix(_PIPES_ACCESSOR);
};
CodegenNameUtil.prototype.getProtosName = function() {
return this._addFieldPrefix(_PROTOS_ACCESSOR);
};
CodegenNameUtil.prototype.getDirectivesAccessorName = function() {
return this._addFieldPrefix(_DIRECTIVES_ACCESSOR);
};
CodegenNameUtil.prototype.getLocalsAccessorName = function() {
return this._addFieldPrefix(_LOCALS_ACCESSOR);
};
CodegenNameUtil.prototype.getStateName = function() {
return this._addFieldPrefix(_STATE_ACCESSOR);
};
CodegenNameUtil.prototype.getModeName = function() {
return this._addFieldPrefix(_MODE_ACCESSOR);
};
CodegenNameUtil.prototype.getPropertyBindingIndex = function() {
return this._addFieldPrefix(_PROP_BINDING_INDEX);
};
CodegenNameUtil.prototype.getLocalName = function(idx) {
return "l_" + this._sanitizedNames[idx];
};
CodegenNameUtil.prototype.getEventLocalName = function(eb, idx) {
return "l_" + this._sanitizedEventNames.get(eb)[idx];
};
CodegenNameUtil.prototype.getChangeName = function(idx) {
return "c_" + this._sanitizedNames[idx];
};
CodegenNameUtil.prototype.genInitLocals = function() {
var declarations = [];
var assignments = [];
for (var i = 0,
iLen = this.getFieldCount(); i < iLen; ++i) {
if (i == exports.CONTEXT_INDEX) {
declarations.push(this.getLocalName(i) + " = " + this.getFieldName(i));
} else {
var rec = this._records[i - 1];
if (rec.argumentToPureFunction) {
var changeName = this.getChangeName(i);
declarations.push(this.getLocalName(i) + "," + changeName);
assignments.push(changeName);
} else {
declarations.push("" + this.getLocalName(i));
}
}
}
var assignmentsCode = collection_1.ListWrapper.isEmpty(assignments) ? '' : assignments.join('=') + " = false;";
return "var " + declarations.join(',') + ";" + assignmentsCode;
};
CodegenNameUtil.prototype.genInitEventLocals = function() {
var _this = this;
var res = [(this.getLocalName(exports.CONTEXT_INDEX) + " = " + this.getFieldName(exports.CONTEXT_INDEX))];
this._sanitizedEventNames.forEach(function(names, eb) {
for (var i = 0; i < names.length; ++i) {
if (i !== exports.CONTEXT_INDEX) {
res.push("" + _this.getEventLocalName(eb, i));
}
}
});
return res.length > 1 ? "var " + res.join(',') + ";" : '';
};
CodegenNameUtil.prototype.getPreventDefaultAccesor = function() {
return "preventDefault";
};
CodegenNameUtil.prototype.getFieldCount = function() {
return this._sanitizedNames.length;
};
CodegenNameUtil.prototype.getFieldName = function(idx) {
return this._addFieldPrefix(this._sanitizedNames[idx]);
};
CodegenNameUtil.prototype.getAllFieldNames = function() {
var fieldList = [];
for (var k = 0,
kLen = this.getFieldCount(); k < kLen; ++k) {
if (k === 0 || this._records[k - 1].shouldBeChecked()) {
fieldList.push(this.getFieldName(k));
}
}
for (var i = 0,
iLen = this._records.length; i < iLen; ++i) {
var rec = this._records[i];
if (rec.isPipeRecord()) {
fieldList.push(this.getPipeName(rec.selfIndex));
}
}
for (var j = 0,
jLen = this._directiveRecords.length; j < jLen; ++j) {
var dRec = this._directiveRecords[j];
fieldList.push(this.getDirectiveName(dRec.directiveIndex));
if (!dRec.isDefaultChangeDetection()) {
fieldList.push(this.getDetectorName(dRec.directiveIndex));
}
}
return fieldList;
};
CodegenNameUtil.prototype.genDehydrateFields = function() {
var fields = this.getAllFieldNames();
collection_1.ListWrapper.removeAt(fields, exports.CONTEXT_INDEX);
if (collection_1.ListWrapper.isEmpty(fields))
return '';
fields.push(this._utilName + ".uninitialized;");
return fields.join(' = ');
};
CodegenNameUtil.prototype.genPipeOnDestroy = function() {
var _this = this;
return this._records.filter(function(r) {
return r.isPipeRecord();
}).map(function(r) {
return (_this._utilName + ".callPipeOnDestroy(" + _this.getPipeName(r.selfIndex) + ");");
}).join('\n');
};
CodegenNameUtil.prototype.getPipeName = function(idx) {
return this._addFieldPrefix(this._sanitizedNames[idx] + "_pipe");
};
CodegenNameUtil.prototype.getDirectiveName = function(d) {
return this._addFieldPrefix("directive_" + d.name);
};
CodegenNameUtil.prototype.getDetectorName = function(d) {
return this._addFieldPrefix("detector_" + d.name);
};
return CodegenNameUtil;
})();
exports.CodegenNameUtil = CodegenNameUtil;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/codegen_facade", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function codify(obj) {
return JSON.stringify(obj);
}
exports.codify = codify;
function rawString(str) {
return "'" + str + "'";
}
exports.rawString = rawString;
function combineGeneratedStrings(vals) {
return vals.join(' + ');
}
exports.combineGeneratedStrings = combineGeneratedStrings;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/metadata/view", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
(function(ViewEncapsulation) {
ViewEncapsulation[ViewEncapsulation["Emulated"] = 0] = "Emulated";
ViewEncapsulation[ViewEncapsulation["Native"] = 1] = "Native";
ViewEncapsulation[ViewEncapsulation["None"] = 2] = "None";
})(exports.ViewEncapsulation || (exports.ViewEncapsulation = {}));
var ViewEncapsulation = exports.ViewEncapsulation;
exports.VIEW_ENCAPSULATION_VALUES = [ViewEncapsulation.Emulated, ViewEncapsulation.Native, ViewEncapsulation.None];
var ViewMetadata = (function() {
function ViewMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
templateUrl = _b.templateUrl,
template = _b.template,
directives = _b.directives,
pipes = _b.pipes,
encapsulation = _b.encapsulation,
styles = _b.styles,
styleUrls = _b.styleUrls;
this.templateUrl = templateUrl;
this.template = template;
this.styleUrls = styleUrls;
this.styles = styles;
this.directives = directives;
this.pipes = pipes;
this.encapsulation = encapsulation;
}
ViewMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], ViewMetadata);
return ViewMetadata;
})();
exports.ViewMetadata = ViewMetadata;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/util", ["angular2/src/core/util/decorators"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var decorators_1 = require("angular2/src/core/util/decorators");
exports.Class = decorators_1.Class;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/prod_mode", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
exports.enableProdMode = lang_1.enableProdMode;
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/facade", ["angular2/src/facade/lang", "angular2/src/facade/async", "angular2/src/facade/exceptions", "angular2/src/facade/exception_handler"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
exports.Type = lang_1.Type;
var async_1 = require("angular2/src/facade/async");
exports.EventEmitter = async_1.EventEmitter;
var exceptions_1 = require("angular2/src/facade/exceptions");
exports.WrappedException = exceptions_1.WrappedException;
var exception_handler_1 = require("angular2/src/facade/exception_handler");
exports.ExceptionHandler = exception_handler_1.ExceptionHandler;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/application_tokens", ["angular2/src/core/di", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
exports.APP_COMPONENT_REF_PROMISE = lang_1.CONST_EXPR(new di_1.OpaqueToken('Promise<ComponentRef>'));
exports.APP_COMPONENT = lang_1.CONST_EXPR(new di_1.OpaqueToken('AppComponent'));
exports.APP_ID = lang_1.CONST_EXPR(new di_1.OpaqueToken('AppId'));
function _appIdRandomProviderFactory() {
return "" + _randomChar() + _randomChar() + _randomChar();
}
exports.APP_ID_RANDOM_PROVIDER = lang_1.CONST_EXPR(new di_1.Provider(exports.APP_ID, {
useFactory: _appIdRandomProviderFactory,
deps: []
}));
function _randomChar() {
return lang_1.StringWrapper.fromCharCode(97 + lang_1.Math.floor(lang_1.Math.random() * 25));
}
exports.PLATFORM_INITIALIZER = lang_1.CONST_EXPR(new di_1.OpaqueToken("Platform Initializer"));
exports.APP_INITIALIZER = lang_1.CONST_EXPR(new di_1.OpaqueToken("Application Initializer"));
exports.PACKAGE_ROOT_URL = lang_1.CONST_EXPR(new di_1.OpaqueToken("Application Packages Root URL"));
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/testability/testability", ["angular2/src/core/di", "angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/core/zone/ng_zone", "angular2/src/facade/async"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var ng_zone_1 = require("angular2/src/core/zone/ng_zone");
var async_1 = require("angular2/src/facade/async");
var Testability = (function() {
function Testability(_ngZone) {
this._ngZone = _ngZone;
this._pendingCount = 0;
this._isZoneStable = true;
this._didWork = false;
this._callbacks = [];
this._watchAngularEvents();
}
Testability.prototype._watchAngularEvents = function() {
var _this = this;
async_1.ObservableWrapper.subscribe(this._ngZone.onUnstable, function(_) {
_this._didWork = true;
_this._isZoneStable = false;
});
this._ngZone.runOutsideAngular(function() {
async_1.ObservableWrapper.subscribe(_this._ngZone.onStable, function(_) {
ng_zone_1.NgZone.assertNotInAngularZone();
lang_1.scheduleMicroTask(function() {
_this._isZoneStable = true;
_this._runCallbacksIfReady();
});
});
});
};
Testability.prototype.increasePendingRequestCount = function() {
this._pendingCount += 1;
this._didWork = true;
return this._pendingCount;
};
Testability.prototype.decreasePendingRequestCount = function() {
this._pendingCount -= 1;
if (this._pendingCount < 0) {
throw new exceptions_1.BaseException('pending async requests below zero');
}
this._runCallbacksIfReady();
return this._pendingCount;
};
Testability.prototype.isStable = function() {
return this._isZoneStable && this._pendingCount == 0 && !this._ngZone.hasPendingMacrotasks;
};
Testability.prototype._runCallbacksIfReady = function() {
var _this = this;
if (this.isStable()) {
lang_1.scheduleMicroTask(function() {
while (_this._callbacks.length !== 0) {
(_this._callbacks.pop())(_this._didWork);
}
_this._didWork = false;
});
} else {
this._didWork = true;
}
};
Testability.prototype.whenStable = function(callback) {
this._callbacks.push(callback);
this._runCallbacksIfReady();
};
Testability.prototype.getPendingRequestCount = function() {
return this._pendingCount;
};
Testability.prototype.findBindings = function(using, provider, exactMatch) {
return [];
};
Testability.prototype.findProviders = function(using, provider, exactMatch) {
return [];
};
Testability = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [ng_zone_1.NgZone])], Testability);
return Testability;
})();
exports.Testability = Testability;
var TestabilityRegistry = (function() {
function TestabilityRegistry() {
this._applications = new collection_1.Map();
_testabilityGetter.addToWindow(this);
}
TestabilityRegistry.prototype.registerApplication = function(token, testability) {
this._applications.set(token, testability);
};
TestabilityRegistry.prototype.getTestability = function(elem) {
return this._applications.get(elem);
};
TestabilityRegistry.prototype.getAllTestabilities = function() {
return collection_1.MapWrapper.values(this._applications);
};
TestabilityRegistry.prototype.getAllRootElements = function() {
return collection_1.MapWrapper.keys(this._applications);
};
TestabilityRegistry.prototype.findTestabilityInTree = function(elem, findInAncestors) {
if (findInAncestors === void 0) {
findInAncestors = true;
}
return _testabilityGetter.findTestabilityInTree(this, elem, findInAncestors);
};
TestabilityRegistry = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], TestabilityRegistry);
return TestabilityRegistry;
})();
exports.TestabilityRegistry = TestabilityRegistry;
var _NoopGetTestability = (function() {
function _NoopGetTestability() {}
_NoopGetTestability.prototype.addToWindow = function(registry) {};
_NoopGetTestability.prototype.findTestabilityInTree = function(registry, elem, findInAncestors) {
return null;
};
_NoopGetTestability = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [])], _NoopGetTestability);
return _NoopGetTestability;
})();
function setTestabilityGetter(getter) {
_testabilityGetter = getter;
}
exports.setTestabilityGetter = setTestabilityGetter;
var _testabilityGetter = lang_1.CONST_EXPR(new _NoopGetTestability());
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/view_type", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
(function(ViewType) {
ViewType[ViewType["HOST"] = 0] = "HOST";
ViewType[ViewType["COMPONENT"] = 1] = "COMPONENT";
ViewType[ViewType["EMBEDDED"] = 2] = "EMBEDDED";
})(exports.ViewType || (exports.ViewType = {}));
var ViewType = exports.ViewType;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/element_ref", ["angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var exceptions_1 = require("angular2/src/facade/exceptions");
var ElementRef = (function() {
function ElementRef() {}
Object.defineProperty(ElementRef.prototype, "nativeElement", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
return ElementRef;
})();
exports.ElementRef = ElementRef;
var ElementRef_ = (function() {
function ElementRef_(_appElement) {
this._appElement = _appElement;
}
Object.defineProperty(ElementRef_.prototype, "internalElement", {
get: function() {
return this._appElement;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ElementRef_.prototype, "nativeElement", {
get: function() {
return this._appElement.nativeElement;
},
enumerable: true,
configurable: true
});
return ElementRef_;
})();
exports.ElementRef_ = ElementRef_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/view_container_ref", ["angular2/src/facade/collection", "angular2/src/facade/exceptions", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var collection_1 = require("angular2/src/facade/collection");
var exceptions_1 = require("angular2/src/facade/exceptions");
var lang_1 = require("angular2/src/facade/lang");
var ViewContainerRef = (function() {
function ViewContainerRef() {}
Object.defineProperty(ViewContainerRef.prototype, "element", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
ViewContainerRef.prototype.clear = function() {
for (var i = this.length - 1; i >= 0; i--) {
this.remove(i);
}
};
Object.defineProperty(ViewContainerRef.prototype, "length", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
;
return ViewContainerRef;
})();
exports.ViewContainerRef = ViewContainerRef;
var ViewContainerRef_ = (function(_super) {
__extends(ViewContainerRef_, _super);
function ViewContainerRef_(_element) {
_super.call(this);
this._element = _element;
}
ViewContainerRef_.prototype.get = function(index) {
return this._element.nestedViews[index].ref;
};
Object.defineProperty(ViewContainerRef_.prototype, "length", {
get: function() {
var views = this._element.nestedViews;
return lang_1.isPresent(views) ? views.length : 0;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ViewContainerRef_.prototype, "element", {
get: function() {
return this._element.ref;
},
enumerable: true,
configurable: true
});
ViewContainerRef_.prototype.createEmbeddedView = function(templateRef, index) {
if (index === void 0) {
index = -1;
}
if (index == -1)
index = this.length;
var vm = this._element.parentView.viewManager;
return vm.createEmbeddedViewInContainer(this._element.ref, index, templateRef);
};
ViewContainerRef_.prototype.createHostView = function(hostViewFactoryRef, index, dynamicallyCreatedProviders, projectableNodes) {
if (index === void 0) {
index = -1;
}
if (dynamicallyCreatedProviders === void 0) {
dynamicallyCreatedProviders = null;
}
if (projectableNodes === void 0) {
projectableNodes = null;
}
if (index == -1)
index = this.length;
var vm = this._element.parentView.viewManager;
return vm.createHostViewInContainer(this._element.ref, index, hostViewFactoryRef, dynamicallyCreatedProviders, projectableNodes);
};
ViewContainerRef_.prototype.insert = function(viewRef, index) {
if (index === void 0) {
index = -1;
}
if (index == -1)
index = this.length;
var vm = this._element.parentView.viewManager;
return vm.attachViewInContainer(this._element.ref, index, viewRef);
};
ViewContainerRef_.prototype.indexOf = function(viewRef) {
return collection_1.ListWrapper.indexOf(this._element.nestedViews, viewRef.internalView);
};
ViewContainerRef_.prototype.remove = function(index) {
if (index === void 0) {
index = -1;
}
if (index == -1)
index = this.length - 1;
var vm = this._element.parentView.viewManager;
return vm.destroyViewInContainer(this._element.ref, index);
};
ViewContainerRef_.prototype.detach = function(index) {
if (index === void 0) {
index = -1;
}
if (index == -1)
index = this.length - 1;
var vm = this._element.parentView.viewManager;
return vm.detachViewInContainer(this._element.ref, index);
};
return ViewContainerRef_;
})(ViewContainerRef);
exports.ViewContainerRef_ = ViewContainerRef_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/render/api", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var RenderComponentType = (function() {
function RenderComponentType(id, encapsulation, styles) {
this.id = id;
this.encapsulation = encapsulation;
this.styles = styles;
}
return RenderComponentType;
})();
exports.RenderComponentType = RenderComponentType;
var RenderDebugInfo = (function() {
function RenderDebugInfo(injector, component, providerTokens, locals) {
this.injector = injector;
this.component = component;
this.providerTokens = providerTokens;
this.locals = locals;
}
return RenderDebugInfo;
})();
exports.RenderDebugInfo = RenderDebugInfo;
var Renderer = (function() {
function Renderer() {}
return Renderer;
})();
exports.Renderer = Renderer;
var RootRenderer = (function() {
function RootRenderer() {}
return RootRenderer;
})();
exports.RootRenderer = RootRenderer;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/template_ref", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var TemplateRef = (function() {
function TemplateRef() {}
Object.defineProperty(TemplateRef.prototype, "elementRef", {
get: function() {
return null;
},
enumerable: true,
configurable: true
});
return TemplateRef;
})();
exports.TemplateRef = TemplateRef;
var TemplateRef_ = (function(_super) {
__extends(TemplateRef_, _super);
function TemplateRef_(_elementRef) {
_super.call(this);
this._elementRef = _elementRef;
}
Object.defineProperty(TemplateRef_.prototype, "elementRef", {
get: function() {
return this._elementRef;
},
enumerable: true,
configurable: true
});
return TemplateRef_;
})(TemplateRef);
exports.TemplateRef_ = TemplateRef_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/query_list", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/async"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var async_1 = require("angular2/src/facade/async");
var QueryList = (function() {
function QueryList() {
this._results = [];
this._emitter = new async_1.EventEmitter();
}
Object.defineProperty(QueryList.prototype, "changes", {
get: function() {
return this._emitter;
},
enumerable: true,
configurable: true
});
Object.defineProperty(QueryList.prototype, "length", {
get: function() {
return this._results.length;
},
enumerable: true,
configurable: true
});
Object.defineProperty(QueryList.prototype, "first", {
get: function() {
return collection_1.ListWrapper.first(this._results);
},
enumerable: true,
configurable: true
});
Object.defineProperty(QueryList.prototype, "last", {
get: function() {
return collection_1.ListWrapper.last(this._results);
},
enumerable: true,
configurable: true
});
QueryList.prototype.map = function(fn) {
return this._results.map(fn);
};
QueryList.prototype.filter = function(fn) {
return this._results.filter(fn);
};
QueryList.prototype.reduce = function(fn, init) {
return this._results.reduce(fn, init);
};
QueryList.prototype.forEach = function(fn) {
this._results.forEach(fn);
};
QueryList.prototype.toArray = function() {
return collection_1.ListWrapper.clone(this._results);
};
QueryList.prototype[lang_1.getSymbolIterator()] = function() {
return this._results[lang_1.getSymbolIterator()]();
};
QueryList.prototype.toString = function() {
return this._results.toString();
};
QueryList.prototype.reset = function(res) {
this._results = res;
};
QueryList.prototype.notifyOnChanges = function() {
this._emitter.emit(this);
};
return QueryList;
})();
exports.QueryList = QueryList;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/pipes/pipe_provider", ["angular2/src/core/di/provider", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var provider_1 = require("angular2/src/core/di/provider");
var di_1 = require("angular2/src/core/di");
var PipeProvider = (function(_super) {
__extends(PipeProvider, _super);
function PipeProvider(name, pure, key, resolvedFactories, multiBinding) {
_super.call(this, key, resolvedFactories, multiBinding);
this.name = name;
this.pure = pure;
}
PipeProvider.createFromType = function(type, metadata) {
var provider = new di_1.Provider(type, {useClass: type});
var rb = provider_1.resolveProvider(provider);
return new PipeProvider(metadata.name, metadata.pure, rb.key, rb.resolvedFactories, rb.multiProvider);
};
return PipeProvider;
})(provider_1.ResolvedProvider_);
exports.PipeProvider = PipeProvider;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/view_ref", ["angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var exceptions_1 = require("angular2/src/facade/exceptions");
var ViewRef = (function() {
function ViewRef() {}
Object.defineProperty(ViewRef.prototype, "changeDetectorRef", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
;
Object.defineProperty(ViewRef.prototype, "destroyed", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
return ViewRef;
})();
exports.ViewRef = ViewRef;
var HostViewRef = (function(_super) {
__extends(HostViewRef, _super);
function HostViewRef() {
_super.apply(this, arguments);
}
Object.defineProperty(HostViewRef.prototype, "rootNodes", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
;
return HostViewRef;
})(ViewRef);
exports.HostViewRef = HostViewRef;
var EmbeddedViewRef = (function(_super) {
__extends(EmbeddedViewRef, _super);
function EmbeddedViewRef() {
_super.apply(this, arguments);
}
Object.defineProperty(EmbeddedViewRef.prototype, "rootNodes", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
;
return EmbeddedViewRef;
})(ViewRef);
exports.EmbeddedViewRef = EmbeddedViewRef;
var ViewRef_ = (function() {
function ViewRef_(_view) {
this._view = _view;
this._view = _view;
}
Object.defineProperty(ViewRef_.prototype, "internalView", {
get: function() {
return this._view;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ViewRef_.prototype, "changeDetectorRef", {
get: function() {
return this._view.changeDetector.ref;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ViewRef_.prototype, "rootNodes", {
get: function() {
return this._view.flatRootNodes;
},
enumerable: true,
configurable: true
});
ViewRef_.prototype.setLocal = function(variableName, value) {
this._view.setLocal(variableName, value);
};
ViewRef_.prototype.hasLocal = function(variableName) {
return this._view.hasLocal(variableName);
};
Object.defineProperty(ViewRef_.prototype, "destroyed", {
get: function() {
return this._view.destroyed;
},
enumerable: true,
configurable: true
});
return ViewRef_;
})();
exports.ViewRef_ = ViewRef_;
var HostViewFactoryRef = (function() {
function HostViewFactoryRef() {}
return HostViewFactoryRef;
})();
exports.HostViewFactoryRef = HostViewFactoryRef;
var HostViewFactoryRef_ = (function() {
function HostViewFactoryRef_(_hostViewFactory) {
this._hostViewFactory = _hostViewFactory;
}
Object.defineProperty(HostViewFactoryRef_.prototype, "internalHostViewFactory", {
get: function() {
return this._hostViewFactory;
},
enumerable: true,
configurable: true
});
return HostViewFactoryRef_;
})();
exports.HostViewFactoryRef_ = HostViewFactoryRef_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/pipes", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var SelectedPipe = (function() {
function SelectedPipe(pipe, pure) {
this.pipe = pipe;
this.pure = pure;
}
return SelectedPipe;
})();
exports.SelectedPipe = SelectedPipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/render/util", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var CAMEL_CASE_REGEXP = /([A-Z])/g;
var DASH_CASE_REGEXP = /-([a-z])/g;
function camelCaseToDashCase(input) {
return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function(m) {
return '-' + m[1].toLowerCase();
});
}
exports.camelCaseToDashCase = camelCaseToDashCase;
function dashCaseToCamelCase(input) {
return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function(m) {
return m[1].toUpperCase();
});
}
exports.dashCaseToCamelCase = dashCaseToCamelCase;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/view_manager", ["angular2/src/core/di", "angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/facade/exceptions", "angular2/src/core/linker/view", "angular2/src/core/render/api", "angular2/src/core/profile/profile", "angular2/src/core/application_tokens", "angular2/src/core/linker/view_type"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var exceptions_1 = require("angular2/src/facade/exceptions");
var view_1 = require("angular2/src/core/linker/view");
var api_1 = require("angular2/src/core/render/api");
var profile_1 = require("angular2/src/core/profile/profile");
var application_tokens_1 = require("angular2/src/core/application_tokens");
var view_type_1 = require("angular2/src/core/linker/view_type");
var AppViewManager = (function() {
function AppViewManager() {}
return AppViewManager;
})();
exports.AppViewManager = AppViewManager;
var AppViewManager_ = (function(_super) {
__extends(AppViewManager_, _super);
function AppViewManager_(_renderer, _appId) {
_super.call(this);
this._renderer = _renderer;
this._appId = _appId;
this._nextCompTypeId = 0;
this._createRootHostViewScope = profile_1.wtfCreateScope('AppViewManager#createRootHostView()');
this._destroyRootHostViewScope = profile_1.wtfCreateScope('AppViewManager#destroyRootHostView()');
this._createEmbeddedViewInContainerScope = profile_1.wtfCreateScope('AppViewManager#createEmbeddedViewInContainer()');
this._createHostViewInContainerScope = profile_1.wtfCreateScope('AppViewManager#createHostViewInContainer()');
this._destroyViewInContainerScope = profile_1.wtfCreateScope('AppViewMananger#destroyViewInContainer()');
this._attachViewInContainerScope = profile_1.wtfCreateScope('AppViewMananger#attachViewInContainer()');
this._detachViewInContainerScope = profile_1.wtfCreateScope('AppViewMananger#detachViewInContainer()');
}
AppViewManager_.prototype.getViewContainer = function(location) {
return location.internalElement.getViewContainerRef();
};
AppViewManager_.prototype.getHostElement = function(hostViewRef) {
var hostView = hostViewRef.internalView;
if (hostView.proto.type !== view_type_1.ViewType.HOST) {
throw new exceptions_1.BaseException('This operation is only allowed on host views');
}
return hostView.appElements[0].ref;
};
AppViewManager_.prototype.getNamedElementInComponentView = function(hostLocation, variableName) {
var appEl = hostLocation.internalElement;
var componentView = appEl.componentView;
if (lang_1.isBlank(componentView)) {
throw new exceptions_1.BaseException("There is no component directive at element " + hostLocation);
}
for (var i = 0; i < componentView.appElements.length; i++) {
var compAppEl = componentView.appElements[i];
if (collection_1.StringMapWrapper.contains(compAppEl.proto.directiveVariableBindings, variableName)) {
return compAppEl.ref;
}
}
throw new exceptions_1.BaseException("Could not find variable " + variableName);
};
AppViewManager_.prototype.getComponent = function(hostLocation) {
return hostLocation.internalElement.getComponent();
};
AppViewManager_.prototype.createRootHostView = function(hostViewFactoryRef, overrideSelector, injector, projectableNodes) {
if (projectableNodes === void 0) {
projectableNodes = null;
}
var s = this._createRootHostViewScope();
var hostViewFactory = hostViewFactoryRef.internalHostViewFactory;
var selector = lang_1.isPresent(overrideSelector) ? overrideSelector : hostViewFactory.selector;
var view = hostViewFactory.viewFactory(this._renderer, this, null, projectableNodes, selector, null, injector);
return profile_1.wtfLeave(s, view.ref);
};
AppViewManager_.prototype.destroyRootHostView = function(hostViewRef) {
var s = this._destroyRootHostViewScope();
var hostView = hostViewRef.internalView;
hostView.renderer.detachView(view_1.flattenNestedViewRenderNodes(hostView.rootNodesOrAppElements));
hostView.destroy();
profile_1.wtfLeave(s);
};
AppViewManager_.prototype.createEmbeddedViewInContainer = function(viewContainerLocation, index, templateRef) {
var s = this._createEmbeddedViewInContainerScope();
var contextEl = templateRef.elementRef.internalElement;
var view = contextEl.embeddedViewFactory(contextEl.parentView.renderer, this, contextEl, contextEl.parentView.projectableNodes, null, null, null);
this._attachViewToContainer(view, viewContainerLocation.internalElement, index);
return profile_1.wtfLeave(s, view.ref);
};
AppViewManager_.prototype.createHostViewInContainer = function(viewContainerLocation, index, hostViewFactoryRef, dynamicallyCreatedProviders, projectableNodes) {
var s = this._createHostViewInContainerScope();
var viewContainerLocation_ = viewContainerLocation;
var contextEl = viewContainerLocation_.internalElement;
var hostViewFactory = hostViewFactoryRef.internalHostViewFactory;
var view = hostViewFactory.viewFactory(contextEl.parentView.renderer, contextEl.parentView.viewManager, contextEl, projectableNodes, null, dynamicallyCreatedProviders, null);
this._attachViewToContainer(view, viewContainerLocation_.internalElement, index);
return profile_1.wtfLeave(s, view.ref);
};
AppViewManager_.prototype.destroyViewInContainer = function(viewContainerLocation, index) {
var s = this._destroyViewInContainerScope();
var view = this._detachViewInContainer(viewContainerLocation.internalElement, index);
view.destroy();
profile_1.wtfLeave(s);
};
AppViewManager_.prototype.attachViewInContainer = function(viewContainerLocation, index, viewRef) {
var viewRef_ = viewRef;
var s = this._attachViewInContainerScope();
this._attachViewToContainer(viewRef_.internalView, viewContainerLocation.internalElement, index);
return profile_1.wtfLeave(s, viewRef_);
};
AppViewManager_.prototype.detachViewInContainer = function(viewContainerLocation, index) {
var s = this._detachViewInContainerScope();
var view = this._detachViewInContainer(viewContainerLocation.internalElement, index);
return profile_1.wtfLeave(s, view.ref);
};
AppViewManager_.prototype.onViewCreated = function(view) {};
AppViewManager_.prototype.onViewDestroyed = function(view) {};
AppViewManager_.prototype.createRenderComponentType = function(encapsulation, styles) {
return new api_1.RenderComponentType(this._appId + "-" + this._nextCompTypeId++, encapsulation, styles);
};
AppViewManager_.prototype._attachViewToContainer = function(view, vcAppElement, viewIndex) {
if (view.proto.type === view_type_1.ViewType.COMPONENT) {
throw new exceptions_1.BaseException("Component views can't be moved!");
}
var nestedViews = vcAppElement.nestedViews;
if (nestedViews == null) {
nestedViews = [];
vcAppElement.nestedViews = nestedViews;
}
collection_1.ListWrapper.insert(nestedViews, viewIndex, view);
var refNode;
if (viewIndex > 0) {
var prevView = nestedViews[viewIndex - 1];
refNode = prevView.rootNodesOrAppElements.length > 0 ? prevView.rootNodesOrAppElements[prevView.rootNodesOrAppElements.length - 1] : null;
} else {
refNode = vcAppElement.nativeElement;
}
if (lang_1.isPresent(refNode)) {
var refRenderNode = view_1.findLastRenderNode(refNode);
view.renderer.attachViewAfter(refRenderNode, view_1.flattenNestedViewRenderNodes(view.rootNodesOrAppElements));
}
vcAppElement.parentView.changeDetector.addContentChild(view.changeDetector);
vcAppElement.traverseAndSetQueriesAsDirty();
};
AppViewManager_.prototype._detachViewInContainer = function(vcAppElement, viewIndex) {
var view = collection_1.ListWrapper.removeAt(vcAppElement.nestedViews, viewIndex);
if (view.proto.type === view_type_1.ViewType.COMPONENT) {
throw new exceptions_1.BaseException("Component views can't be moved!");
}
vcAppElement.traverseAndSetQueriesAsDirty();
view.renderer.detachView(view_1.flattenNestedViewRenderNodes(view.rootNodesOrAppElements));
view.changeDetector.remove();
return view;
};
AppViewManager_ = __decorate([di_1.Injectable(), __param(1, di_1.Inject(application_tokens_1.APP_ID)), __metadata('design:paramtypes', [api_1.RootRenderer, String])], AppViewManager_);
return AppViewManager_;
})(AppViewManager);
exports.AppViewManager_ = AppViewManager_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/console", ["angular2/src/core/di", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
var Console = (function() {
function Console() {}
Console.prototype.log = function(message) {
lang_1.print(message);
};
Console = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], Console);
return Console;
})();
exports.Console = Console;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/zone", ["angular2/src/core/zone/ng_zone"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var ng_zone_1 = require("angular2/src/core/zone/ng_zone");
exports.NgZone = ng_zone_1.NgZone;
exports.NgZoneError = ng_zone_1.NgZoneError;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/render", ["angular2/src/core/render/api"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var api_1 = require("angular2/src/core/render/api");
exports.RootRenderer = api_1.RootRenderer;
exports.Renderer = api_1.Renderer;
exports.RenderComponentType = api_1.RenderComponentType;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/directive_resolver", ["angular2/src/core/di", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/metadata", "angular2/src/core/reflection/reflection", "angular2/src/core/reflection/reflector_reader"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var metadata_1 = require("angular2/src/core/metadata");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var reflector_reader_1 = require("angular2/src/core/reflection/reflector_reader");
function _isDirectiveMetadata(type) {
return type instanceof metadata_1.DirectiveMetadata;
}
var DirectiveResolver = (function() {
function DirectiveResolver(_reflector) {
if (lang_1.isPresent(_reflector)) {
this._reflector = _reflector;
} else {
this._reflector = reflection_1.reflector;
}
}
DirectiveResolver.prototype.resolve = function(type) {
var typeMetadata = this._reflector.annotations(di_1.resolveForwardRef(type));
if (lang_1.isPresent(typeMetadata)) {
var metadata = typeMetadata.find(_isDirectiveMetadata);
if (lang_1.isPresent(metadata)) {
var propertyMetadata = this._reflector.propMetadata(type);
return this._mergeWithPropertyMetadata(metadata, propertyMetadata, type);
}
}
throw new exceptions_1.BaseException("No Directive annotation found on " + lang_1.stringify(type));
};
DirectiveResolver.prototype._mergeWithPropertyMetadata = function(dm, propertyMetadata, directiveType) {
var inputs = [];
var outputs = [];
var host = {};
var queries = {};
collection_1.StringMapWrapper.forEach(propertyMetadata, function(metadata, propName) {
metadata.forEach(function(a) {
if (a instanceof metadata_1.InputMetadata) {
if (lang_1.isPresent(a.bindingPropertyName)) {
inputs.push(propName + ": " + a.bindingPropertyName);
} else {
inputs.push(propName);
}
}
if (a instanceof metadata_1.OutputMetadata) {
if (lang_1.isPresent(a.bindingPropertyName)) {
outputs.push(propName + ": " + a.bindingPropertyName);
} else {
outputs.push(propName);
}
}
if (a instanceof metadata_1.HostBindingMetadata) {
if (lang_1.isPresent(a.hostPropertyName)) {
host[("[" + a.hostPropertyName + "]")] = propName;
} else {
host[("[" + propName + "]")] = propName;
}
}
if (a instanceof metadata_1.HostListenerMetadata) {
var args = lang_1.isPresent(a.args) ? a.args.join(', ') : '';
host[("(" + a.eventName + ")")] = propName + "(" + args + ")";
}
if (a instanceof metadata_1.ContentChildrenMetadata) {
queries[propName] = a;
}
if (a instanceof metadata_1.ViewChildrenMetadata) {
queries[propName] = a;
}
if (a instanceof metadata_1.ContentChildMetadata) {
queries[propName] = a;
}
if (a instanceof metadata_1.ViewChildMetadata) {
queries[propName] = a;
}
});
});
return this._merge(dm, inputs, outputs, host, queries, directiveType);
};
DirectiveResolver.prototype._merge = function(dm, inputs, outputs, host, queries, directiveType) {
var mergedInputs = lang_1.isPresent(dm.inputs) ? collection_1.ListWrapper.concat(dm.inputs, inputs) : inputs;
var mergedOutputs;
if (lang_1.isPresent(dm.outputs)) {
dm.outputs.forEach(function(propName) {
if (collection_1.ListWrapper.contains(outputs, propName)) {
throw new exceptions_1.BaseException("Output event '" + propName + "' defined multiple times in '" + lang_1.stringify(directiveType) + "'");
}
});
mergedOutputs = collection_1.ListWrapper.concat(dm.outputs, outputs);
} else {
mergedOutputs = outputs;
}
var mergedHost = lang_1.isPresent(dm.host) ? collection_1.StringMapWrapper.merge(dm.host, host) : host;
var mergedQueries = lang_1.isPresent(dm.queries) ? collection_1.StringMapWrapper.merge(dm.queries, queries) : queries;
if (dm instanceof metadata_1.ComponentMetadata) {
return new metadata_1.ComponentMetadata({
selector: dm.selector,
inputs: mergedInputs,
outputs: mergedOutputs,
host: mergedHost,
exportAs: dm.exportAs,
moduleId: dm.moduleId,
queries: mergedQueries,
changeDetection: dm.changeDetection,
providers: dm.providers,
viewProviders: dm.viewProviders
});
} else {
return new metadata_1.DirectiveMetadata({
selector: dm.selector,
inputs: mergedInputs,
outputs: mergedOutputs,
host: mergedHost,
exportAs: dm.exportAs,
queries: mergedQueries,
providers: dm.providers
});
}
};
DirectiveResolver = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [reflector_reader_1.ReflectorReader])], DirectiveResolver);
return DirectiveResolver;
})();
exports.DirectiveResolver = DirectiveResolver;
exports.CODEGEN_DIRECTIVE_RESOLVER = new DirectiveResolver(reflection_1.reflector);
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/view_resolver", ["angular2/src/core/di", "angular2/src/core/metadata/view", "angular2/src/core/metadata/directives", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/reflection/reflector_reader", "angular2/src/core/reflection/reflection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var view_1 = require("angular2/src/core/metadata/view");
var directives_1 = require("angular2/src/core/metadata/directives");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var reflector_reader_1 = require("angular2/src/core/reflection/reflector_reader");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var ViewResolver = (function() {
function ViewResolver(_reflector) {
this._cache = new collection_1.Map();
if (lang_1.isPresent(_reflector)) {
this._reflector = _reflector;
} else {
this._reflector = reflection_1.reflector;
}
}
ViewResolver.prototype.resolve = function(component) {
var view = this._cache.get(component);
if (lang_1.isBlank(view)) {
view = this._resolve(component);
this._cache.set(component, view);
}
return view;
};
ViewResolver.prototype._resolve = function(component) {
var compMeta;
var viewMeta;
this._reflector.annotations(component).forEach(function(m) {
if (m instanceof view_1.ViewMetadata) {
viewMeta = m;
}
if (m instanceof directives_1.ComponentMetadata) {
compMeta = m;
}
});
if (lang_1.isPresent(compMeta)) {
if (lang_1.isBlank(compMeta.template) && lang_1.isBlank(compMeta.templateUrl) && lang_1.isBlank(viewMeta)) {
throw new exceptions_1.BaseException("Component '" + lang_1.stringify(component) + "' must have either 'template' or 'templateUrl' set.");
} else if (lang_1.isPresent(compMeta.template) && lang_1.isPresent(viewMeta)) {
this._throwMixingViewAndComponent("template", component);
} else if (lang_1.isPresent(compMeta.templateUrl) && lang_1.isPresent(viewMeta)) {
this._throwMixingViewAndComponent("templateUrl", component);
} else if (lang_1.isPresent(compMeta.directives) && lang_1.isPresent(viewMeta)) {
this._throwMixingViewAndComponent("directives", component);
} else if (lang_1.isPresent(compMeta.pipes) && lang_1.isPresent(viewMeta)) {
this._throwMixingViewAndComponent("pipes", component);
} else if (lang_1.isPresent(compMeta.encapsulation) && lang_1.isPresent(viewMeta)) {
this._throwMixingViewAndComponent("encapsulation", component);
} else if (lang_1.isPresent(compMeta.styles) && lang_1.isPresent(viewMeta)) {
this._throwMixingViewAndComponent("styles", component);
} else if (lang_1.isPresent(compMeta.styleUrls) && lang_1.isPresent(viewMeta)) {
this._throwMixingViewAndComponent("styleUrls", component);
} else if (lang_1.isPresent(viewMeta)) {
return viewMeta;
} else {
return new view_1.ViewMetadata({
templateUrl: compMeta.templateUrl,
template: compMeta.template,
directives: compMeta.directives,
pipes: compMeta.pipes,
encapsulation: compMeta.encapsulation,
styles: compMeta.styles,
styleUrls: compMeta.styleUrls
});
}
} else {
if (lang_1.isBlank(viewMeta)) {
throw new exceptions_1.BaseException("Could not compile '" + lang_1.stringify(component) + "' because it is not a component.");
} else {
return viewMeta;
}
}
return null;
};
ViewResolver.prototype._throwMixingViewAndComponent = function(propertyName, component) {
throw new exceptions_1.BaseException("Component '" + lang_1.stringify(component) + "' cannot have both '" + propertyName + "' and '@View' set at the same time\"");
};
ViewResolver = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [reflector_reader_1.ReflectorReader])], ViewResolver);
return ViewResolver;
})();
exports.ViewResolver = ViewResolver;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/debug/debug_node", ["angular2/src/facade/lang", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var EventListener = (function() {
function EventListener(name, callback) {
this.name = name;
this.callback = callback;
}
;
return EventListener;
})();
exports.EventListener = EventListener;
var DebugNode = (function() {
function DebugNode(nativeNode, parent) {
this.nativeNode = nativeNode;
if (lang_1.isPresent(parent) && parent instanceof DebugElement) {
parent.addChild(this);
} else {
this.parent = null;
}
this.listeners = [];
this.providerTokens = [];
}
DebugNode.prototype.setDebugInfo = function(info) {
this.injector = info.injector;
this.providerTokens = info.providerTokens;
this.locals = info.locals;
this.componentInstance = info.component;
};
DebugNode.prototype.inject = function(token) {
return this.injector.get(token);
};
DebugNode.prototype.getLocal = function(name) {
return this.locals.get(name);
};
return DebugNode;
})();
exports.DebugNode = DebugNode;
var DebugElement = (function(_super) {
__extends(DebugElement, _super);
function DebugElement(nativeNode, parent) {
_super.call(this, nativeNode, parent);
this.properties = new Map();
this.attributes = new Map();
this.childNodes = [];
this.nativeElement = nativeNode;
}
DebugElement.prototype.addChild = function(child) {
if (lang_1.isPresent(child)) {
this.childNodes.push(child);
child.parent = this;
}
};
DebugElement.prototype.removeChild = function(child) {
var childIndex = this.childNodes.indexOf(child);
if (childIndex !== -1) {
child.parent = null;
this.childNodes.splice(childIndex, 1);
}
};
DebugElement.prototype.insertChildrenAfter = function(child, newChildren) {
var siblingIndex = this.childNodes.indexOf(child);
if (siblingIndex !== -1) {
var previousChildren = this.childNodes.slice(0, siblingIndex + 1);
var nextChildren = this.childNodes.slice(siblingIndex + 1);
this.childNodes = collection_1.ListWrapper.concat(collection_1.ListWrapper.concat(previousChildren, newChildren), nextChildren);
for (var i = 0; i < newChildren.length; ++i) {
var newChild = newChildren[i];
if (lang_1.isPresent(newChild.parent)) {
newChild.parent.removeChild(newChild);
}
newChild.parent = this;
}
}
};
DebugElement.prototype.query = function(predicate) {
var results = this.queryAll(predicate);
return results.length > 0 ? results[0] : null;
};
DebugElement.prototype.queryAll = function(predicate) {
var matches = [];
_queryElementChildren(this, predicate, matches);
return matches;
};
DebugElement.prototype.queryAllNodes = function(predicate) {
var matches = [];
_queryNodeChildren(this, predicate, matches);
return matches;
};
Object.defineProperty(DebugElement.prototype, "children", {
get: function() {
var children = [];
this.childNodes.forEach(function(node) {
if (node instanceof DebugElement) {
children.push(node);
}
});
return children;
},
enumerable: true,
configurable: true
});
DebugElement.prototype.triggerEventHandler = function(eventName, eventObj) {
this.listeners.forEach(function(listener) {
if (listener.name == eventName) {
listener.callback(eventObj);
}
});
};
return DebugElement;
})(DebugNode);
exports.DebugElement = DebugElement;
function asNativeElements(debugEls) {
return debugEls.map(function(el) {
return el.nativeElement;
});
}
exports.asNativeElements = asNativeElements;
function _queryElementChildren(element, predicate, matches) {
element.childNodes.forEach(function(node) {
if (node instanceof DebugElement) {
if (predicate(node)) {
matches.push(node);
}
_queryElementChildren(node, predicate, matches);
}
});
}
function _queryNodeChildren(parentNode, predicate, matches) {
if (parentNode instanceof DebugElement) {
parentNode.childNodes.forEach(function(node) {
if (predicate(node)) {
matches.push(node);
}
if (node instanceof DebugElement) {
_queryNodeChildren(node, predicate, matches);
}
});
}
}
var _nativeNodeToDebugNode = new Map();
function getDebugNode(nativeNode) {
return _nativeNodeToDebugNode.get(nativeNode);
}
exports.getDebugNode = getDebugNode;
function getAllDebugNodes() {
return collection_1.MapWrapper.values(_nativeNodeToDebugNode);
}
exports.getAllDebugNodes = getAllDebugNodes;
function indexDebugNode(node) {
_nativeNodeToDebugNode.set(node.nativeNode, node);
}
exports.indexDebugNode = indexDebugNode;
function removeDebugNodeFromIndex(node) {
_nativeNodeToDebugNode.delete(node.nativeNode);
}
exports.removeDebugNodeFromIndex = removeDebugNodeFromIndex;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/platform_directives_and_pipes", ["angular2/src/core/di", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
exports.PLATFORM_DIRECTIVES = lang_1.CONST_EXPR(new di_1.OpaqueToken("Platform Directives"));
exports.PLATFORM_PIPES = lang_1.CONST_EXPR(new di_1.OpaqueToken("Platform Pipes"));
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/platform_common_providers", ["angular2/src/facade/lang", "angular2/src/core/di", "angular2/src/core/console", "angular2/src/core/reflection/reflection", "angular2/src/core/reflection/reflector_reader", "angular2/src/core/testability/testability"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var di_1 = require("angular2/src/core/di");
var console_1 = require("angular2/src/core/console");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var reflector_reader_1 = require("angular2/src/core/reflection/reflector_reader");
var testability_1 = require("angular2/src/core/testability/testability");
function _reflector() {
return reflection_1.reflector;
}
exports.PLATFORM_COMMON_PROVIDERS = lang_1.CONST_EXPR([new di_1.Provider(reflection_1.Reflector, {
useFactory: _reflector,
deps: []
}), new di_1.Provider(reflector_reader_1.ReflectorReader, {useExisting: reflection_1.Reflector}), testability_1.TestabilityRegistry, console_1.Console]);
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/pipe_resolver", ["angular2/src/core/di", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/core/metadata", "angular2/src/core/reflection/reflector_reader", "angular2/src/core/reflection/reflection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var metadata_1 = require("angular2/src/core/metadata");
var reflector_reader_1 = require("angular2/src/core/reflection/reflector_reader");
var reflection_1 = require("angular2/src/core/reflection/reflection");
function _isPipeMetadata(type) {
return type instanceof metadata_1.PipeMetadata;
}
var PipeResolver = (function() {
function PipeResolver(_reflector) {
if (lang_1.isPresent(_reflector)) {
this._reflector = _reflector;
} else {
this._reflector = reflection_1.reflector;
}
}
PipeResolver.prototype.resolve = function(type) {
var metas = this._reflector.annotations(di_1.resolveForwardRef(type));
if (lang_1.isPresent(metas)) {
var annotation = metas.find(_isPipeMetadata);
if (lang_1.isPresent(annotation)) {
return annotation;
}
}
throw new exceptions_1.BaseException("No Pipe decorator found on " + lang_1.stringify(type));
};
PipeResolver = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [reflector_reader_1.ReflectorReader])], PipeResolver);
return PipeResolver;
})();
exports.PipeResolver = PipeResolver;
exports.CODEGEN_PIPE_RESOLVER = new PipeResolver(reflection_1.reflector);
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/debug/by", ["angular2/src/facade/lang", "angular2/src/platform/dom/dom_adapter"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var By = (function() {
function By() {}
By.all = function() {
return function(debugElement) {
return true;
};
};
By.css = function(selector) {
return function(debugElement) {
return lang_1.isPresent(debugElement.nativeElement) ? dom_adapter_1.DOM.elementMatches(debugElement.nativeElement, selector) : false;
};
};
By.directive = function(type) {
return function(debugElement) {
return debugElement.providerTokens.indexOf(type) !== -1;
};
};
return By;
})();
exports.By = By;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/debug/debug_renderer", ["angular2/src/facade/lang", "angular2/src/core/debug/debug_node"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var debug_node_1 = require("angular2/src/core/debug/debug_node");
var DebugDomRootRenderer = (function() {
function DebugDomRootRenderer(_delegate) {
this._delegate = _delegate;
}
DebugDomRootRenderer.prototype.renderComponent = function(componentProto) {
return new DebugDomRenderer(this, this._delegate.renderComponent(componentProto));
};
return DebugDomRootRenderer;
})();
exports.DebugDomRootRenderer = DebugDomRootRenderer;
var DebugDomRenderer = (function() {
function DebugDomRenderer(_rootRenderer, _delegate) {
this._rootRenderer = _rootRenderer;
this._delegate = _delegate;
}
DebugDomRenderer.prototype.renderComponent = function(componentType) {
return this._rootRenderer.renderComponent(componentType);
};
DebugDomRenderer.prototype.selectRootElement = function(selector) {
var nativeEl = this._delegate.selectRootElement(selector);
var debugEl = new debug_node_1.DebugElement(nativeEl, null);
debug_node_1.indexDebugNode(debugEl);
return nativeEl;
};
DebugDomRenderer.prototype.createElement = function(parentElement, name) {
var nativeEl = this._delegate.createElement(parentElement, name);
var debugEl = new debug_node_1.DebugElement(nativeEl, debug_node_1.getDebugNode(parentElement));
debugEl.name = name;
debug_node_1.indexDebugNode(debugEl);
return nativeEl;
};
DebugDomRenderer.prototype.createViewRoot = function(hostElement) {
return this._delegate.createViewRoot(hostElement);
};
DebugDomRenderer.prototype.createTemplateAnchor = function(parentElement) {
var comment = this._delegate.createTemplateAnchor(parentElement);
var debugEl = new debug_node_1.DebugNode(comment, debug_node_1.getDebugNode(parentElement));
debug_node_1.indexDebugNode(debugEl);
return comment;
};
DebugDomRenderer.prototype.createText = function(parentElement, value) {
var text = this._delegate.createText(parentElement, value);
var debugEl = new debug_node_1.DebugNode(text, debug_node_1.getDebugNode(parentElement));
debug_node_1.indexDebugNode(debugEl);
return text;
};
DebugDomRenderer.prototype.projectNodes = function(parentElement, nodes) {
var debugParent = debug_node_1.getDebugNode(parentElement);
if (lang_1.isPresent(debugParent) && debugParent instanceof debug_node_1.DebugElement) {
nodes.forEach(function(node) {
debugParent.addChild(debug_node_1.getDebugNode(node));
});
}
return this._delegate.projectNodes(parentElement, nodes);
};
DebugDomRenderer.prototype.attachViewAfter = function(node, viewRootNodes) {
var debugNode = debug_node_1.getDebugNode(node);
if (lang_1.isPresent(debugNode)) {
var debugParent = debugNode.parent;
if (viewRootNodes.length > 0 && lang_1.isPresent(debugParent)) {
var debugViewRootNodes = [];
viewRootNodes.forEach(function(rootNode) {
return debugViewRootNodes.push(debug_node_1.getDebugNode(rootNode));
});
debugParent.insertChildrenAfter(debugNode, debugViewRootNodes);
}
}
return this._delegate.attachViewAfter(node, viewRootNodes);
};
DebugDomRenderer.prototype.detachView = function(viewRootNodes) {
viewRootNodes.forEach(function(node) {
var debugNode = debug_node_1.getDebugNode(node);
if (lang_1.isPresent(debugNode) && lang_1.isPresent(debugNode.parent)) {
debugNode.parent.removeChild(debugNode);
}
});
return this._delegate.detachView(viewRootNodes);
};
DebugDomRenderer.prototype.destroyView = function(hostElement, viewAllNodes) {
viewAllNodes.forEach(function(node) {
debug_node_1.removeDebugNodeFromIndex(debug_node_1.getDebugNode(node));
});
return this._delegate.destroyView(hostElement, viewAllNodes);
};
DebugDomRenderer.prototype.listen = function(renderElement, name, callback) {
var debugEl = debug_node_1.getDebugNode(renderElement);
if (lang_1.isPresent(debugEl)) {
debugEl.listeners.push(new debug_node_1.EventListener(name, callback));
}
return this._delegate.listen(renderElement, name, callback);
};
DebugDomRenderer.prototype.listenGlobal = function(target, name, callback) {
return this._delegate.listenGlobal(target, name, callback);
};
DebugDomRenderer.prototype.setElementProperty = function(renderElement, propertyName, propertyValue) {
var debugEl = debug_node_1.getDebugNode(renderElement);
if (lang_1.isPresent(debugEl) && debugEl instanceof debug_node_1.DebugElement) {
debugEl.properties.set(propertyName, propertyValue);
}
return this._delegate.setElementProperty(renderElement, propertyName, propertyValue);
};
DebugDomRenderer.prototype.setElementAttribute = function(renderElement, attributeName, attributeValue) {
var debugEl = debug_node_1.getDebugNode(renderElement);
if (lang_1.isPresent(debugEl) && debugEl instanceof debug_node_1.DebugElement) {
debugEl.attributes.set(attributeName, attributeValue);
}
return this._delegate.setElementAttribute(renderElement, attributeName, attributeValue);
};
DebugDomRenderer.prototype.setBindingDebugInfo = function(renderElement, propertyName, propertyValue) {
return this._delegate.setBindingDebugInfo(renderElement, propertyName, propertyValue);
};
DebugDomRenderer.prototype.setElementDebugInfo = function(renderElement, info) {
var debugEl = debug_node_1.getDebugNode(renderElement);
debugEl.setDebugInfo(info);
return this._delegate.setElementDebugInfo(renderElement, info);
};
DebugDomRenderer.prototype.setElementClass = function(renderElement, className, isAdd) {
return this._delegate.setElementClass(renderElement, className, isAdd);
};
DebugDomRenderer.prototype.setElementStyle = function(renderElement, styleName, styleValue) {
return this._delegate.setElementStyle(renderElement, styleName, styleValue);
};
DebugDomRenderer.prototype.invokeElementMethod = function(renderElement, methodName, args) {
return this._delegate.invokeElementMethod(renderElement, methodName, args);
};
DebugDomRenderer.prototype.setText = function(renderNode, text) {
return this._delegate.setText(renderNode, text);
};
return DebugDomRenderer;
})();
exports.DebugDomRenderer = DebugDomRenderer;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/dom_adapter", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
exports.DOM = null;
function setRootDomAdapter(adapter) {
if (lang_1.isBlank(exports.DOM)) {
exports.DOM = adapter;
}
}
exports.setRootDomAdapter = setRootDomAdapter;
var DomAdapter = (function() {
function DomAdapter() {}
Object.defineProperty(DomAdapter.prototype, "attrToPropMap", {
get: function() {
return this._attrToPropMap;
},
set: function(value) {
this._attrToPropMap = value;
},
enumerable: true,
configurable: true
});
;
;
return DomAdapter;
})();
exports.DomAdapter = DomAdapter;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/di/decorators", ["angular2/src/core/di/metadata", "angular2/src/core/util/decorators"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var metadata_1 = require("angular2/src/core/di/metadata");
var decorators_1 = require("angular2/src/core/util/decorators");
exports.Inject = decorators_1.makeParamDecorator(metadata_1.InjectMetadata);
exports.Optional = decorators_1.makeParamDecorator(metadata_1.OptionalMetadata);
exports.Injectable = decorators_1.makeDecorator(metadata_1.InjectableMetadata);
exports.Self = decorators_1.makeParamDecorator(metadata_1.SelfMetadata);
exports.Host = decorators_1.makeParamDecorator(metadata_1.HostMetadata);
exports.SkipSelf = decorators_1.makeParamDecorator(metadata_1.SkipSelfMetadata);
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/exceptions", ["angular2/src/facade/base_wrapped_exception", "angular2/src/facade/exception_handler", "angular2/src/facade/exception_handler"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var base_wrapped_exception_1 = require("angular2/src/facade/base_wrapped_exception");
var exception_handler_1 = require("angular2/src/facade/exception_handler");
var exception_handler_2 = require("angular2/src/facade/exception_handler");
exports.ExceptionHandler = exception_handler_2.ExceptionHandler;
var BaseException = (function(_super) {
__extends(BaseException, _super);
function BaseException(message) {
if (message === void 0) {
message = "--";
}
_super.call(this, message);
this.message = message;
this.stack = (new Error(message)).stack;
}
BaseException.prototype.toString = function() {
return this.message;
};
return BaseException;
})(Error);
exports.BaseException = BaseException;
var WrappedException = (function(_super) {
__extends(WrappedException, _super);
function WrappedException(_wrapperMessage, _originalException, _originalStack, _context) {
_super.call(this, _wrapperMessage);
this._wrapperMessage = _wrapperMessage;
this._originalException = _originalException;
this._originalStack = _originalStack;
this._context = _context;
this._wrapperStack = (new Error(_wrapperMessage)).stack;
}
Object.defineProperty(WrappedException.prototype, "wrapperMessage", {
get: function() {
return this._wrapperMessage;
},
enumerable: true,
configurable: true
});
Object.defineProperty(WrappedException.prototype, "wrapperStack", {
get: function() {
return this._wrapperStack;
},
enumerable: true,
configurable: true
});
Object.defineProperty(WrappedException.prototype, "originalException", {
get: function() {
return this._originalException;
},
enumerable: true,
configurable: true
});
Object.defineProperty(WrappedException.prototype, "originalStack", {
get: function() {
return this._originalStack;
},
enumerable: true,
configurable: true
});
Object.defineProperty(WrappedException.prototype, "context", {
get: function() {
return this._context;
},
enumerable: true,
configurable: true
});
Object.defineProperty(WrappedException.prototype, "message", {
get: function() {
return exception_handler_1.ExceptionHandler.exceptionToString(this);
},
enumerable: true,
configurable: true
});
WrappedException.prototype.toString = function() {
return this.message;
};
return WrappedException;
})(base_wrapped_exception_1.BaseWrappedException);
exports.WrappedException = WrappedException;
function makeTypeError(message) {
return new TypeError(message);
}
exports.makeTypeError = makeTypeError;
function unimplemented() {
throw new BaseException('unimplemented');
}
exports.unimplemented = unimplemented;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/reflection/reflector", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/reflection/reflector_reader"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var reflector_reader_1 = require("angular2/src/core/reflection/reflector_reader");
var ReflectionInfo = (function() {
function ReflectionInfo(annotations, parameters, factory, interfaces, propMetadata) {
this.annotations = annotations;
this.parameters = parameters;
this.factory = factory;
this.interfaces = interfaces;
this.propMetadata = propMetadata;
}
return ReflectionInfo;
})();
exports.ReflectionInfo = ReflectionInfo;
var Reflector = (function(_super) {
__extends(Reflector, _super);
function Reflector(reflectionCapabilities) {
_super.call(this);
this._injectableInfo = new collection_1.Map();
this._getters = new collection_1.Map();
this._setters = new collection_1.Map();
this._methods = new collection_1.Map();
this._usedKeys = null;
this.reflectionCapabilities = reflectionCapabilities;
}
Reflector.prototype.isReflectionEnabled = function() {
return this.reflectionCapabilities.isReflectionEnabled();
};
Reflector.prototype.trackUsage = function() {
this._usedKeys = new collection_1.Set();
};
Reflector.prototype.listUnusedKeys = function() {
var _this = this;
if (this._usedKeys == null) {
throw new exceptions_1.BaseException('Usage tracking is disabled');
}
var allTypes = collection_1.MapWrapper.keys(this._injectableInfo);
return allTypes.filter(function(key) {
return !collection_1.SetWrapper.has(_this._usedKeys, key);
});
};
Reflector.prototype.registerFunction = function(func, funcInfo) {
this._injectableInfo.set(func, funcInfo);
};
Reflector.prototype.registerType = function(type, typeInfo) {
this._injectableInfo.set(type, typeInfo);
};
Reflector.prototype.registerGetters = function(getters) {
_mergeMaps(this._getters, getters);
};
Reflector.prototype.registerSetters = function(setters) {
_mergeMaps(this._setters, setters);
};
Reflector.prototype.registerMethods = function(methods) {
_mergeMaps(this._methods, methods);
};
Reflector.prototype.factory = function(type) {
if (this._containsReflectionInfo(type)) {
var res = this._getReflectionInfo(type).factory;
return lang_1.isPresent(res) ? res : null;
} else {
return this.reflectionCapabilities.factory(type);
}
};
Reflector.prototype.parameters = function(typeOrFunc) {
if (this._injectableInfo.has(typeOrFunc)) {
var res = this._getReflectionInfo(typeOrFunc).parameters;
return lang_1.isPresent(res) ? res : [];
} else {
return this.reflectionCapabilities.parameters(typeOrFunc);
}
};
Reflector.prototype.annotations = function(typeOrFunc) {
if (this._injectableInfo.has(typeOrFunc)) {
var res = this._getReflectionInfo(typeOrFunc).annotations;
return lang_1.isPresent(res) ? res : [];
} else {
return this.reflectionCapabilities.annotations(typeOrFunc);
}
};
Reflector.prototype.propMetadata = function(typeOrFunc) {
if (this._injectableInfo.has(typeOrFunc)) {
var res = this._getReflectionInfo(typeOrFunc).propMetadata;
return lang_1.isPresent(res) ? res : {};
} else {
return this.reflectionCapabilities.propMetadata(typeOrFunc);
}
};
Reflector.prototype.interfaces = function(type) {
if (this._injectableInfo.has(type)) {
var res = this._getReflectionInfo(type).interfaces;
return lang_1.isPresent(res) ? res : [];
} else {
return this.reflectionCapabilities.interfaces(type);
}
};
Reflector.prototype.getter = function(name) {
if (this._getters.has(name)) {
return this._getters.get(name);
} else {
return this.reflectionCapabilities.getter(name);
}
};
Reflector.prototype.setter = function(name) {
if (this._setters.has(name)) {
return this._setters.get(name);
} else {
return this.reflectionCapabilities.setter(name);
}
};
Reflector.prototype.method = function(name) {
if (this._methods.has(name)) {
return this._methods.get(name);
} else {
return this.reflectionCapabilities.method(name);
}
};
Reflector.prototype._getReflectionInfo = function(typeOrFunc) {
if (lang_1.isPresent(this._usedKeys)) {
this._usedKeys.add(typeOrFunc);
}
return this._injectableInfo.get(typeOrFunc);
};
Reflector.prototype._containsReflectionInfo = function(typeOrFunc) {
return this._injectableInfo.has(typeOrFunc);
};
Reflector.prototype.importUri = function(type) {
return this.reflectionCapabilities.importUri(type);
};
return Reflector;
})(reflector_reader_1.ReflectorReader);
exports.Reflector = Reflector;
function _mergeMaps(target, config) {
collection_1.StringMapWrapper.forEach(config, function(v, k) {
return target.set(k, v);
});
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/animate/animation", ["angular2/src/facade/lang", "angular2/src/facade/math", "angular2/src/platform/dom/util", "angular2/src/facade/collection", "angular2/src/platform/dom/dom_adapter"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var math_1 = require("angular2/src/facade/math");
var util_1 = require("angular2/src/platform/dom/util");
var collection_1 = require("angular2/src/facade/collection");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var Animation = (function() {
function Animation(element, data, browserDetails) {
var _this = this;
this.element = element;
this.data = data;
this.browserDetails = browserDetails;
this.callbacks = [];
this.eventClearFunctions = [];
this.completed = false;
this._stringPrefix = '';
this.startTime = lang_1.DateWrapper.toMillis(lang_1.DateWrapper.now());
this._stringPrefix = dom_adapter_1.DOM.getAnimationPrefix();
this.setup();
this.wait(function(timestamp) {
return _this.start();
});
}
Object.defineProperty(Animation.prototype, "totalTime", {
get: function() {
var delay = this.computedDelay != null ? this.computedDelay : 0;
var duration = this.computedDuration != null ? this.computedDuration : 0;
return delay + duration;
},
enumerable: true,
configurable: true
});
Animation.prototype.wait = function(callback) {
this.browserDetails.raf(callback, 2);
};
Animation.prototype.setup = function() {
if (this.data.fromStyles != null)
this.applyStyles(this.data.fromStyles);
if (this.data.duration != null)
this.applyStyles({'transitionDuration': this.data.duration.toString() + 'ms'});
if (this.data.delay != null)
this.applyStyles({'transitionDelay': this.data.delay.toString() + 'ms'});
};
Animation.prototype.start = function() {
this.addClasses(this.data.classesToAdd);
this.addClasses(this.data.animationClasses);
this.removeClasses(this.data.classesToRemove);
if (this.data.toStyles != null)
this.applyStyles(this.data.toStyles);
var computedStyles = dom_adapter_1.DOM.getComputedStyle(this.element);
this.computedDelay = math_1.Math.max(this.parseDurationString(computedStyles.getPropertyValue(this._stringPrefix + 'transition-delay')), this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix + 'transition-delay')));
this.computedDuration = math_1.Math.max(this.parseDurationString(computedStyles.getPropertyValue(this._stringPrefix + 'transition-duration')), this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix + 'transition-duration')));
this.addEvents();
};
Animation.prototype.applyStyles = function(styles) {
var _this = this;
collection_1.StringMapWrapper.forEach(styles, function(value, key) {
var dashCaseKey = util_1.camelCaseToDashCase(key);
if (lang_1.isPresent(dom_adapter_1.DOM.getStyle(_this.element, dashCaseKey))) {
dom_adapter_1.DOM.setStyle(_this.element, dashCaseKey, value.toString());
} else {
dom_adapter_1.DOM.setStyle(_this.element, _this._stringPrefix + dashCaseKey, value.toString());
}
});
};
Animation.prototype.addClasses = function(classes) {
for (var i = 0,
len = classes.length; i < len; i++)
dom_adapter_1.DOM.addClass(this.element, classes[i]);
};
Animation.prototype.removeClasses = function(classes) {
for (var i = 0,
len = classes.length; i < len; i++)
dom_adapter_1.DOM.removeClass(this.element, classes[i]);
};
Animation.prototype.addEvents = function() {
var _this = this;
if (this.totalTime > 0) {
this.eventClearFunctions.push(dom_adapter_1.DOM.onAndCancel(this.element, dom_adapter_1.DOM.getTransitionEnd(), function(event) {
return _this.handleAnimationEvent(event);
}));
} else {
this.handleAnimationCompleted();
}
};
Animation.prototype.handleAnimationEvent = function(event) {
var elapsedTime = math_1.Math.round(event.elapsedTime * 1000);
if (!this.browserDetails.elapsedTimeIncludesDelay)
elapsedTime += this.computedDelay;
event.stopPropagation();
if (elapsedTime >= this.totalTime)
this.handleAnimationCompleted();
};
Animation.prototype.handleAnimationCompleted = function() {
this.removeClasses(this.data.animationClasses);
this.callbacks.forEach(function(callback) {
return callback();
});
this.callbacks = [];
this.eventClearFunctions.forEach(function(fn) {
return fn();
});
this.eventClearFunctions = [];
this.completed = true;
};
Animation.prototype.onComplete = function(callback) {
if (this.completed) {
callback();
} else {
this.callbacks.push(callback);
}
return this;
};
Animation.prototype.parseDurationString = function(duration) {
var maxValue = 0;
if (duration == null || duration.length < 2) {
return maxValue;
} else if (duration.substring(duration.length - 2) == 'ms') {
var value = lang_1.NumberWrapper.parseInt(this.stripLetters(duration), 10);
if (value > maxValue)
maxValue = value;
} else if (duration.substring(duration.length - 1) == 's') {
var ms = lang_1.NumberWrapper.parseFloat(this.stripLetters(duration)) * 1000;
var value = math_1.Math.floor(ms);
if (value > maxValue)
maxValue = value;
}
return maxValue;
};
Animation.prototype.stripLetters = function(str) {
return lang_1.StringWrapper.replaceAll(str, lang_1.RegExpWrapper.create('[^0-9]+$', ''), '');
};
return Animation;
})();
exports.Animation = Animation;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/shared_styles_host", ["angular2/src/platform/dom/dom_adapter", "angular2/src/core/di", "angular2/src/facade/collection", "angular2/src/platform/dom/dom_tokens"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var di_1 = require("angular2/src/core/di");
var collection_1 = require("angular2/src/facade/collection");
var dom_tokens_1 = require("angular2/src/platform/dom/dom_tokens");
var SharedStylesHost = (function() {
function SharedStylesHost() {
this._styles = [];
this._stylesSet = new Set();
}
SharedStylesHost.prototype.addStyles = function(styles) {
var _this = this;
var additions = [];
styles.forEach(function(style) {
if (!collection_1.SetWrapper.has(_this._stylesSet, style)) {
_this._stylesSet.add(style);
_this._styles.push(style);
additions.push(style);
}
});
this.onStylesAdded(additions);
};
SharedStylesHost.prototype.onStylesAdded = function(additions) {};
SharedStylesHost.prototype.getAllStyles = function() {
return this._styles;
};
SharedStylesHost = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], SharedStylesHost);
return SharedStylesHost;
})();
exports.SharedStylesHost = SharedStylesHost;
var DomSharedStylesHost = (function(_super) {
__extends(DomSharedStylesHost, _super);
function DomSharedStylesHost(doc) {
_super.call(this);
this._hostNodes = new Set();
this._hostNodes.add(doc.head);
}
DomSharedStylesHost.prototype._addStylesToHost = function(styles, host) {
for (var i = 0; i < styles.length; i++) {
var style = styles[i];
dom_adapter_1.DOM.appendChild(host, dom_adapter_1.DOM.createStyleElement(style));
}
};
DomSharedStylesHost.prototype.addHost = function(hostNode) {
this._addStylesToHost(this._styles, hostNode);
this._hostNodes.add(hostNode);
};
DomSharedStylesHost.prototype.removeHost = function(hostNode) {
collection_1.SetWrapper.delete(this._hostNodes, hostNode);
};
DomSharedStylesHost.prototype.onStylesAdded = function(additions) {
var _this = this;
this._hostNodes.forEach(function(hostNode) {
_this._addStylesToHost(additions, hostNode);
});
};
DomSharedStylesHost = __decorate([di_1.Injectable(), __param(0, di_1.Inject(dom_tokens_1.DOCUMENT)), __metadata('design:paramtypes', [Object])], DomSharedStylesHost);
return DomSharedStylesHost;
})(SharedStylesHost);
exports.DomSharedStylesHost = DomSharedStylesHost;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/change_detection_util", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/change_detection/constants", "angular2/src/core/change_detection/pipe_lifecycle_reflector", "angular2/src/core/change_detection/binding_record", "angular2/src/core/change_detection/directive_record"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var constants_1 = require("angular2/src/core/change_detection/constants");
var pipe_lifecycle_reflector_1 = require("angular2/src/core/change_detection/pipe_lifecycle_reflector");
var binding_record_1 = require("angular2/src/core/change_detection/binding_record");
var directive_record_1 = require("angular2/src/core/change_detection/directive_record");
var WrappedValue = (function() {
function WrappedValue(wrapped) {
this.wrapped = wrapped;
}
WrappedValue.wrap = function(value) {
var w = _wrappedValues[_wrappedIndex++ % 5];
w.wrapped = value;
return w;
};
return WrappedValue;
})();
exports.WrappedValue = WrappedValue;
var _wrappedValues = [new WrappedValue(null), new WrappedValue(null), new WrappedValue(null), new WrappedValue(null), new WrappedValue(null)];
var _wrappedIndex = 0;
var SimpleChange = (function() {
function SimpleChange(previousValue, currentValue) {
this.previousValue = previousValue;
this.currentValue = currentValue;
}
SimpleChange.prototype.isFirstChange = function() {
return this.previousValue === ChangeDetectionUtil.uninitialized;
};
return SimpleChange;
})();
exports.SimpleChange = SimpleChange;
function _simpleChange(previousValue, currentValue) {
return new SimpleChange(previousValue, currentValue);
}
var ChangeDetectionUtil = (function() {
function ChangeDetectionUtil() {}
ChangeDetectionUtil.arrayFn0 = function() {
return [];
};
ChangeDetectionUtil.arrayFn1 = function(a1) {
return [a1];
};
ChangeDetectionUtil.arrayFn2 = function(a1, a2) {
return [a1, a2];
};
ChangeDetectionUtil.arrayFn3 = function(a1, a2, a3) {
return [a1, a2, a3];
};
ChangeDetectionUtil.arrayFn4 = function(a1, a2, a3, a4) {
return [a1, a2, a3, a4];
};
ChangeDetectionUtil.arrayFn5 = function(a1, a2, a3, a4, a5) {
return [a1, a2, a3, a4, a5];
};
ChangeDetectionUtil.arrayFn6 = function(a1, a2, a3, a4, a5, a6) {
return [a1, a2, a3, a4, a5, a6];
};
ChangeDetectionUtil.arrayFn7 = function(a1, a2, a3, a4, a5, a6, a7) {
return [a1, a2, a3, a4, a5, a6, a7];
};
ChangeDetectionUtil.arrayFn8 = function(a1, a2, a3, a4, a5, a6, a7, a8) {
return [a1, a2, a3, a4, a5, a6, a7, a8];
};
ChangeDetectionUtil.arrayFn9 = function(a1, a2, a3, a4, a5, a6, a7, a8, a9) {
return [a1, a2, a3, a4, a5, a6, a7, a8, a9];
};
ChangeDetectionUtil.operation_negate = function(value) {
return !value;
};
ChangeDetectionUtil.operation_add = function(left, right) {
return left + right;
};
ChangeDetectionUtil.operation_subtract = function(left, right) {
return left - right;
};
ChangeDetectionUtil.operation_multiply = function(left, right) {
return left * right;
};
ChangeDetectionUtil.operation_divide = function(left, right) {
return left / right;
};
ChangeDetectionUtil.operation_remainder = function(left, right) {
return left % right;
};
ChangeDetectionUtil.operation_equals = function(left, right) {
return left == right;
};
ChangeDetectionUtil.operation_not_equals = function(left, right) {
return left != right;
};
ChangeDetectionUtil.operation_identical = function(left, right) {
return left === right;
};
ChangeDetectionUtil.operation_not_identical = function(left, right) {
return left !== right;
};
ChangeDetectionUtil.operation_less_then = function(left, right) {
return left < right;
};
ChangeDetectionUtil.operation_greater_then = function(left, right) {
return left > right;
};
ChangeDetectionUtil.operation_less_or_equals_then = function(left, right) {
return left <= right;
};
ChangeDetectionUtil.operation_greater_or_equals_then = function(left, right) {
return left >= right;
};
ChangeDetectionUtil.cond = function(cond, trueVal, falseVal) {
return cond ? trueVal : falseVal;
};
ChangeDetectionUtil.mapFn = function(keys) {
function buildMap(values) {
var res = collection_1.StringMapWrapper.create();
for (var i = 0; i < keys.length; ++i) {
collection_1.StringMapWrapper.set(res, keys[i], values[i]);
}
return res;
}
switch (keys.length) {
case 0:
return function() {
return [];
};
case 1:
return function(a1) {
return buildMap([a1]);
};
case 2:
return function(a1, a2) {
return buildMap([a1, a2]);
};
case 3:
return function(a1, a2, a3) {
return buildMap([a1, a2, a3]);
};
case 4:
return function(a1, a2, a3, a4) {
return buildMap([a1, a2, a3, a4]);
};
case 5:
return function(a1, a2, a3, a4, a5) {
return buildMap([a1, a2, a3, a4, a5]);
};
case 6:
return function(a1, a2, a3, a4, a5, a6) {
return buildMap([a1, a2, a3, a4, a5, a6]);
};
case 7:
return function(a1, a2, a3, a4, a5, a6, a7) {
return buildMap([a1, a2, a3, a4, a5, a6, a7]);
};
case 8:
return function(a1, a2, a3, a4, a5, a6, a7, a8) {
return buildMap([a1, a2, a3, a4, a5, a6, a7, a8]);
};
case 9:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9) {
return buildMap([a1, a2, a3, a4, a5, a6, a7, a8, a9]);
};
default:
throw new exceptions_1.BaseException("Does not support literal maps with more than 9 elements");
}
};
ChangeDetectionUtil.keyedAccess = function(obj, args) {
return obj[args[0]];
};
ChangeDetectionUtil.unwrapValue = function(value) {
if (value instanceof WrappedValue) {
return value.wrapped;
} else {
return value;
}
};
ChangeDetectionUtil.changeDetectionMode = function(strategy) {
return constants_1.isDefaultChangeDetectionStrategy(strategy) ? constants_1.ChangeDetectionStrategy.CheckAlways : constants_1.ChangeDetectionStrategy.CheckOnce;
};
ChangeDetectionUtil.simpleChange = function(previousValue, currentValue) {
return _simpleChange(previousValue, currentValue);
};
ChangeDetectionUtil.isValueBlank = function(value) {
return lang_1.isBlank(value);
};
ChangeDetectionUtil.s = function(value) {
return lang_1.isPresent(value) ? "" + value : '';
};
ChangeDetectionUtil.protoByIndex = function(protos, selfIndex) {
return selfIndex < 1 ? null : protos[selfIndex - 1];
};
ChangeDetectionUtil.callPipeOnDestroy = function(selectedPipe) {
if (pipe_lifecycle_reflector_1.implementsOnDestroy(selectedPipe.pipe)) {
selectedPipe.pipe.ngOnDestroy();
}
};
ChangeDetectionUtil.bindingTarget = function(mode, elementIndex, name, unit, debug) {
return new binding_record_1.BindingTarget(mode, elementIndex, name, unit, debug);
};
ChangeDetectionUtil.directiveIndex = function(elementIndex, directiveIndex) {
return new directive_record_1.DirectiveIndex(elementIndex, directiveIndex);
};
ChangeDetectionUtil.looseNotIdentical = function(a, b) {
return !lang_1.looseIdentical(a, b);
};
ChangeDetectionUtil.devModeEqual = function(a, b) {
if (collection_1.isListLikeIterable(a) && collection_1.isListLikeIterable(b)) {
return collection_1.areIterablesEqual(a, b, ChangeDetectionUtil.devModeEqual);
} else if (!collection_1.isListLikeIterable(a) && !lang_1.isPrimitive(a) && !collection_1.isListLikeIterable(b) && !lang_1.isPrimitive(b)) {
return true;
} else {
return lang_1.looseIdentical(a, b);
}
};
ChangeDetectionUtil.uninitialized = lang_1.CONST_EXPR(new Object());
return ChangeDetectionUtil;
})();
exports.ChangeDetectionUtil = ChangeDetectionUtil;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/profile/profile", ["angular2/src/core/profile/wtf_impl"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var impl = require("angular2/src/core/profile/wtf_impl");
exports.wtfEnabled = impl.detectWTF();
function noopScope(arg0, arg1) {
return null;
}
exports.wtfCreateScope = exports.wtfEnabled ? impl.createScope : function(signature, flags) {
return noopScope;
};
exports.wtfLeave = exports.wtfEnabled ? impl.leave : function(s, r) {
return r;
};
exports.wtfStartTimeRange = exports.wtfEnabled ? impl.startTimeRange : function(rangeType, action) {
return null;
};
exports.wtfEndTimeRange = exports.wtfEnabled ? impl.endTimeRange : function(r) {
return null;
};
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/codegen_logic_util", ["angular2/src/facade/lang", "angular2/src/core/change_detection/codegen_facade", "angular2/src/core/change_detection/proto_record", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var codegen_facade_1 = require("angular2/src/core/change_detection/codegen_facade");
var proto_record_1 = require("angular2/src/core/change_detection/proto_record");
var exceptions_1 = require("angular2/src/facade/exceptions");
var CodegenLogicUtil = (function() {
function CodegenLogicUtil(_names, _utilName, _changeDetectorStateName) {
this._names = _names;
this._utilName = _utilName;
this._changeDetectorStateName = _changeDetectorStateName;
}
CodegenLogicUtil.prototype.genPropertyBindingEvalValue = function(protoRec) {
var _this = this;
return this._genEvalValue(protoRec, function(idx) {
return _this._names.getLocalName(idx);
}, this._names.getLocalsAccessorName());
};
CodegenLogicUtil.prototype.genEventBindingEvalValue = function(eventRecord, protoRec) {
var _this = this;
return this._genEvalValue(protoRec, function(idx) {
return _this._names.getEventLocalName(eventRecord, idx);
}, "locals");
};
CodegenLogicUtil.prototype._genEvalValue = function(protoRec, getLocalName, localsAccessor) {
var context = (protoRec.contextIndex == -1) ? this._names.getDirectiveName(protoRec.directiveIndex) : getLocalName(protoRec.contextIndex);
var argString = protoRec.args.map(function(arg) {
return getLocalName(arg);
}).join(", ");
var rhs;
switch (protoRec.mode) {
case proto_record_1.RecordType.Self:
rhs = context;
break;
case proto_record_1.RecordType.Const:
rhs = codegen_facade_1.codify(protoRec.funcOrValue);
break;
case proto_record_1.RecordType.PropertyRead:
rhs = context + "." + protoRec.name;
break;
case proto_record_1.RecordType.SafeProperty:
var read = context + "." + protoRec.name;
rhs = this._utilName + ".isValueBlank(" + context + ") ? null : " + read;
break;
case proto_record_1.RecordType.PropertyWrite:
rhs = context + "." + protoRec.name + " = " + getLocalName(protoRec.args[0]);
break;
case proto_record_1.RecordType.Local:
rhs = localsAccessor + ".get(" + codegen_facade_1.rawString(protoRec.name) + ")";
break;
case proto_record_1.RecordType.InvokeMethod:
rhs = context + "." + protoRec.name + "(" + argString + ")";
break;
case proto_record_1.RecordType.SafeMethodInvoke:
var invoke = context + "." + protoRec.name + "(" + argString + ")";
rhs = this._utilName + ".isValueBlank(" + context + ") ? null : " + invoke;
break;
case proto_record_1.RecordType.InvokeClosure:
rhs = context + "(" + argString + ")";
break;
case proto_record_1.RecordType.PrimitiveOp:
rhs = this._utilName + "." + protoRec.name + "(" + argString + ")";
break;
case proto_record_1.RecordType.CollectionLiteral:
rhs = this._utilName + "." + protoRec.name + "(" + argString + ")";
break;
case proto_record_1.RecordType.Interpolate:
rhs = this._genInterpolation(protoRec);
break;
case proto_record_1.RecordType.KeyedRead:
rhs = context + "[" + getLocalName(protoRec.args[0]) + "]";
break;
case proto_record_1.RecordType.KeyedWrite:
rhs = context + "[" + getLocalName(protoRec.args[0]) + "] = " + getLocalName(protoRec.args[1]);
break;
case proto_record_1.RecordType.Chain:
rhs = "" + getLocalName(protoRec.args[protoRec.args.length - 1]);
break;
default:
throw new exceptions_1.BaseException("Unknown operation " + protoRec.mode);
}
return getLocalName(protoRec.selfIndex) + " = " + rhs + ";";
};
CodegenLogicUtil.prototype.genPropertyBindingTargets = function(propertyBindingTargets, genDebugInfo) {
var _this = this;
var bs = propertyBindingTargets.map(function(b) {
if (lang_1.isBlank(b))
return "null";
var debug = genDebugInfo ? codegen_facade_1.codify(b.debug) : "null";
return _this._utilName + ".bindingTarget(" + codegen_facade_1.codify(b.mode) + ", " + b.elementIndex + ", " + codegen_facade_1.codify(b.name) + ", " + codegen_facade_1.codify(b.unit) + ", " + debug + ")";
});
return "[" + bs.join(", ") + "]";
};
CodegenLogicUtil.prototype.genDirectiveIndices = function(directiveRecords) {
var _this = this;
var bs = directiveRecords.map(function(b) {
return (_this._utilName + ".directiveIndex(" + b.directiveIndex.elementIndex + ", " + b.directiveIndex.directiveIndex + ")");
});
return "[" + bs.join(", ") + "]";
};
CodegenLogicUtil.prototype._genInterpolation = function(protoRec) {
var iVals = [];
for (var i = 0; i < protoRec.args.length; ++i) {
iVals.push(codegen_facade_1.codify(protoRec.fixedArgs[i]));
iVals.push(this._utilName + ".s(" + this._names.getLocalName(protoRec.args[i]) + ")");
}
iVals.push(codegen_facade_1.codify(protoRec.fixedArgs[protoRec.args.length]));
return codegen_facade_1.combineGeneratedStrings(iVals);
};
CodegenLogicUtil.prototype.genHydrateDirectives = function(directiveRecords) {
var _this = this;
var res = [];
var outputCount = 0;
for (var i = 0; i < directiveRecords.length; ++i) {
var r = directiveRecords[i];
var dirVarName = this._names.getDirectiveName(r.directiveIndex);
res.push(dirVarName + " = " + this._genReadDirective(i) + ";");
if (lang_1.isPresent(r.outputs)) {
r.outputs.forEach(function(output) {
var eventHandlerExpr = _this._genEventHandler(r.directiveIndex.elementIndex, output[1]);
var statementStart = "this.outputSubscriptions[" + outputCount++ + "] = " + dirVarName + "." + output[0];
if (lang_1.IS_DART) {
res.push(statementStart + ".listen(" + eventHandlerExpr + ");");
} else {
res.push(statementStart + ".subscribe({next: " + eventHandlerExpr + "});");
}
});
}
}
if (outputCount > 0) {
var statementStart = 'this.outputSubscriptions';
if (lang_1.IS_DART) {
res.unshift(statementStart + " = new List(" + outputCount + ");");
} else {
res.unshift(statementStart + " = new Array(" + outputCount + ");");
}
}
return res.join("\n");
};
CodegenLogicUtil.prototype.genDirectivesOnDestroy = function(directiveRecords) {
var res = [];
for (var i = 0; i < directiveRecords.length; ++i) {
var r = directiveRecords[i];
if (r.callOnDestroy) {
var dirVarName = this._names.getDirectiveName(r.directiveIndex);
res.push(dirVarName + ".ngOnDestroy();");
}
}
return res.join("\n");
};
CodegenLogicUtil.prototype._genEventHandler = function(boundElementIndex, eventName) {
if (lang_1.IS_DART) {
return "(event) => this.handleEvent('" + eventName + "', " + boundElementIndex + ", event)";
} else {
return "(function(event) { return this.handleEvent('" + eventName + "', " + boundElementIndex + ", event); }).bind(this)";
}
};
CodegenLogicUtil.prototype._genReadDirective = function(index) {
return "this.getDirectiveFor(directives, " + index + ")";
};
CodegenLogicUtil.prototype.genHydrateDetectors = function(directiveRecords) {
var res = [];
for (var i = 0; i < directiveRecords.length; ++i) {
var r = directiveRecords[i];
if (!r.isDefaultChangeDetection()) {
res.push(this._names.getDetectorName(r.directiveIndex) + " = this.getDetectorFor(directives, " + i + ");");
}
}
return res.join("\n");
};
CodegenLogicUtil.prototype.genContentLifecycleCallbacks = function(directiveRecords) {
var res = [];
var eq = lang_1.IS_DART ? '==' : '===';
for (var i = directiveRecords.length - 1; i >= 0; --i) {
var dir = directiveRecords[i];
if (dir.callAfterContentInit) {
res.push("if(" + this._names.getStateName() + " " + eq + " " + this._changeDetectorStateName + ".NeverChecked) " + this._names.getDirectiveName(dir.directiveIndex) + ".ngAfterContentInit();");
}
if (dir.callAfterContentChecked) {
res.push(this._names.getDirectiveName(dir.directiveIndex) + ".ngAfterContentChecked();");
}
}
return res;
};
CodegenLogicUtil.prototype.genViewLifecycleCallbacks = function(directiveRecords) {
var res = [];
var eq = lang_1.IS_DART ? '==' : '===';
for (var i = directiveRecords.length - 1; i >= 0; --i) {
var dir = directiveRecords[i];
if (dir.callAfterViewInit) {
res.push("if(" + this._names.getStateName() + " " + eq + " " + this._changeDetectorStateName + ".NeverChecked) " + this._names.getDirectiveName(dir.directiveIndex) + ".ngAfterViewInit();");
}
if (dir.callAfterViewChecked) {
res.push(this._names.getDirectiveName(dir.directiveIndex) + ".ngAfterViewChecked();");
}
}
return res;
};
return CodegenLogicUtil;
})();
exports.CodegenLogicUtil = CodegenLogicUtil;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/element", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/di", "angular2/src/core/di/provider", "angular2/src/core/di/injector", "angular2/src/core/di/provider", "angular2/src/core/metadata/di", "angular2/src/core/linker/view_type", "angular2/src/core/linker/element_ref", "angular2/src/core/linker/view_container_ref", "angular2/src/core/linker/element_ref", "angular2/src/core/render/api", "angular2/src/core/linker/template_ref", "angular2/src/core/metadata/directives", "angular2/src/core/change_detection/change_detection", "angular2/src/core/linker/query_list", "angular2/src/core/reflection/reflection", "angular2/src/core/pipes/pipe_provider", "angular2/src/core/linker/view_container_ref"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var di_1 = require("angular2/src/core/di");
var provider_1 = require("angular2/src/core/di/provider");
var injector_1 = require("angular2/src/core/di/injector");
var provider_2 = require("angular2/src/core/di/provider");
var di_2 = require("angular2/src/core/metadata/di");
var view_type_1 = require("angular2/src/core/linker/view_type");
var element_ref_1 = require("angular2/src/core/linker/element_ref");
var view_container_ref_1 = require("angular2/src/core/linker/view_container_ref");
var element_ref_2 = require("angular2/src/core/linker/element_ref");
var api_1 = require("angular2/src/core/render/api");
var template_ref_1 = require("angular2/src/core/linker/template_ref");
var directives_1 = require("angular2/src/core/metadata/directives");
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
var query_list_1 = require("angular2/src/core/linker/query_list");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var pipe_provider_1 = require("angular2/src/core/pipes/pipe_provider");
var view_container_ref_2 = require("angular2/src/core/linker/view_container_ref");
var _staticKeys;
var StaticKeys = (function() {
function StaticKeys() {
this.templateRefId = di_1.Key.get(template_ref_1.TemplateRef).id;
this.viewContainerId = di_1.Key.get(view_container_ref_1.ViewContainerRef).id;
this.changeDetectorRefId = di_1.Key.get(change_detection_1.ChangeDetectorRef).id;
this.elementRefId = di_1.Key.get(element_ref_2.ElementRef).id;
this.rendererId = di_1.Key.get(api_1.Renderer).id;
}
StaticKeys.instance = function() {
if (lang_1.isBlank(_staticKeys))
_staticKeys = new StaticKeys();
return _staticKeys;
};
return StaticKeys;
})();
exports.StaticKeys = StaticKeys;
var DirectiveDependency = (function(_super) {
__extends(DirectiveDependency, _super);
function DirectiveDependency(key, optional, lowerBoundVisibility, upperBoundVisibility, properties, attributeName, queryDecorator) {
_super.call(this, key, optional, lowerBoundVisibility, upperBoundVisibility, properties);
this.attributeName = attributeName;
this.queryDecorator = queryDecorator;
this._verify();
}
DirectiveDependency.prototype._verify = function() {
var count = 0;
if (lang_1.isPresent(this.queryDecorator))
count++;
if (lang_1.isPresent(this.attributeName))
count++;
if (count > 1)
throw new exceptions_1.BaseException('A directive injectable can contain only one of the following @Attribute or @Query.');
};
DirectiveDependency.createFrom = function(d) {
return new DirectiveDependency(d.key, d.optional, d.lowerBoundVisibility, d.upperBoundVisibility, d.properties, DirectiveDependency._attributeName(d.properties), DirectiveDependency._query(d.properties));
};
DirectiveDependency._attributeName = function(properties) {
var p = properties.find(function(p) {
return p instanceof di_2.AttributeMetadata;
});
return lang_1.isPresent(p) ? p.attributeName : null;
};
DirectiveDependency._query = function(properties) {
return properties.find(function(p) {
return p instanceof di_2.QueryMetadata;
});
};
return DirectiveDependency;
})(di_1.Dependency);
exports.DirectiveDependency = DirectiveDependency;
var DirectiveProvider = (function(_super) {
__extends(DirectiveProvider, _super);
function DirectiveProvider(key, factory, deps, isComponent, providers, viewProviders, queries) {
_super.call(this, key, [new provider_2.ResolvedFactory(factory, deps)], false);
this.isComponent = isComponent;
this.providers = providers;
this.viewProviders = viewProviders;
this.queries = queries;
}
Object.defineProperty(DirectiveProvider.prototype, "displayName", {
get: function() {
return this.key.displayName;
},
enumerable: true,
configurable: true
});
DirectiveProvider.createFromType = function(type, meta) {
var provider = new di_1.Provider(type, {useClass: type});
if (lang_1.isBlank(meta)) {
meta = new directives_1.DirectiveMetadata();
}
var rb = provider_2.resolveProvider(provider);
var rf = rb.resolvedFactories[0];
var deps = rf.dependencies.map(DirectiveDependency.createFrom);
var isComponent = meta instanceof directives_1.ComponentMetadata;
var resolvedProviders = lang_1.isPresent(meta.providers) ? di_1.Injector.resolve(meta.providers) : null;
var resolvedViewProviders = meta instanceof directives_1.ComponentMetadata && lang_1.isPresent(meta.viewProviders) ? di_1.Injector.resolve(meta.viewProviders) : null;
var queries = [];
if (lang_1.isPresent(meta.queries)) {
collection_1.StringMapWrapper.forEach(meta.queries, function(meta, fieldName) {
var setter = reflection_1.reflector.setter(fieldName);
queries.push(new QueryMetadataWithSetter(setter, meta));
});
}
deps.forEach(function(d) {
if (lang_1.isPresent(d.queryDecorator)) {
queries.push(new QueryMetadataWithSetter(null, d.queryDecorator));
}
});
return new DirectiveProvider(rb.key, rf.factory, deps, isComponent, resolvedProviders, resolvedViewProviders, queries);
};
return DirectiveProvider;
})(provider_2.ResolvedProvider_);
exports.DirectiveProvider = DirectiveProvider;
var QueryMetadataWithSetter = (function() {
function QueryMetadataWithSetter(setter, metadata) {
this.setter = setter;
this.metadata = metadata;
}
return QueryMetadataWithSetter;
})();
exports.QueryMetadataWithSetter = QueryMetadataWithSetter;
function setProvidersVisibility(providers, visibility, result) {
for (var i = 0; i < providers.length; i++) {
result.set(providers[i].key.id, visibility);
}
}
var AppProtoElement = (function() {
function AppProtoElement(firstProviderIsComponent, index, attributes, pwvs, protoQueryRefs, directiveVariableBindings) {
this.firstProviderIsComponent = firstProviderIsComponent;
this.index = index;
this.attributes = attributes;
this.protoQueryRefs = protoQueryRefs;
this.directiveVariableBindings = directiveVariableBindings;
var length = pwvs.length;
if (length > 0) {
this.protoInjector = new injector_1.ProtoInjector(pwvs);
} else {
this.protoInjector = null;
this.protoQueryRefs = [];
}
}
AppProtoElement.create = function(metadataCache, index, attributes, directiveTypes, directiveVariableBindings) {
var componentDirProvider = null;
var mergedProvidersMap = new Map();
var providerVisibilityMap = new Map();
var providers = collection_1.ListWrapper.createGrowableSize(directiveTypes.length);
var protoQueryRefs = [];
for (var i = 0; i < directiveTypes.length; i++) {
var dirProvider = metadataCache.getResolvedDirectiveMetadata(directiveTypes[i]);
providers[i] = new injector_1.ProviderWithVisibility(dirProvider, dirProvider.isComponent ? injector_1.Visibility.PublicAndPrivate : injector_1.Visibility.Public);
if (dirProvider.isComponent) {
componentDirProvider = dirProvider;
} else {
if (lang_1.isPresent(dirProvider.providers)) {
provider_1.mergeResolvedProviders(dirProvider.providers, mergedProvidersMap);
setProvidersVisibility(dirProvider.providers, injector_1.Visibility.Public, providerVisibilityMap);
}
}
if (lang_1.isPresent(dirProvider.viewProviders)) {
provider_1.mergeResolvedProviders(dirProvider.viewProviders, mergedProvidersMap);
setProvidersVisibility(dirProvider.viewProviders, injector_1.Visibility.Private, providerVisibilityMap);
}
for (var queryIdx = 0; queryIdx < dirProvider.queries.length; queryIdx++) {
var q = dirProvider.queries[queryIdx];
protoQueryRefs.push(new ProtoQueryRef(i, q.setter, q.metadata));
}
}
if (lang_1.isPresent(componentDirProvider) && lang_1.isPresent(componentDirProvider.providers)) {
provider_1.mergeResolvedProviders(componentDirProvider.providers, mergedProvidersMap);
setProvidersVisibility(componentDirProvider.providers, injector_1.Visibility.Public, providerVisibilityMap);
}
mergedProvidersMap.forEach(function(provider, _) {
providers.push(new injector_1.ProviderWithVisibility(provider, providerVisibilityMap.get(provider.key.id)));
});
return new AppProtoElement(lang_1.isPresent(componentDirProvider), index, attributes, providers, protoQueryRefs, directiveVariableBindings);
};
AppProtoElement.prototype.getProviderAtIndex = function(index) {
return this.protoInjector.getProviderAtIndex(index);
};
return AppProtoElement;
})();
exports.AppProtoElement = AppProtoElement;
var _Context = (function() {
function _Context(element, componentElement, injector) {
this.element = element;
this.componentElement = componentElement;
this.injector = injector;
}
return _Context;
})();
var InjectorWithHostBoundary = (function() {
function InjectorWithHostBoundary(injector, hostInjectorBoundary) {
this.injector = injector;
this.hostInjectorBoundary = hostInjectorBoundary;
}
return InjectorWithHostBoundary;
})();
exports.InjectorWithHostBoundary = InjectorWithHostBoundary;
var AppElement = (function() {
function AppElement(proto, parentView, parent, nativeElement, embeddedViewFactory) {
var _this = this;
this.proto = proto;
this.parentView = parentView;
this.parent = parent;
this.nativeElement = nativeElement;
this.embeddedViewFactory = embeddedViewFactory;
this.nestedViews = null;
this.componentView = null;
this.ref = new element_ref_1.ElementRef_(this);
var parentInjector = lang_1.isPresent(parent) ? parent._injector : parentView.parentInjector;
if (lang_1.isPresent(this.proto.protoInjector)) {
var isBoundary;
if (lang_1.isPresent(parent) && lang_1.isPresent(parent.proto.protoInjector)) {
isBoundary = false;
} else {
isBoundary = parentView.hostInjectorBoundary;
}
this._queryStrategy = this._buildQueryStrategy();
this._injector = new di_1.Injector(this.proto.protoInjector, parentInjector, isBoundary, this, function() {
return _this._debugContext();
});
var injectorStrategy = this._injector.internalStrategy;
this._strategy = injectorStrategy instanceof injector_1.InjectorInlineStrategy ? new ElementDirectiveInlineStrategy(injectorStrategy, this) : new ElementDirectiveDynamicStrategy(injectorStrategy, this);
this._strategy.init();
} else {
this._queryStrategy = null;
this._injector = parentInjector;
this._strategy = null;
}
}
AppElement.getViewParentInjector = function(parentViewType, containerAppElement, imperativelyCreatedProviders, rootInjector) {
var parentInjector;
var hostInjectorBoundary;
switch (parentViewType) {
case view_type_1.ViewType.COMPONENT:
parentInjector = containerAppElement._injector;
hostInjectorBoundary = true;
break;
case view_type_1.ViewType.EMBEDDED:
parentInjector = lang_1.isPresent(containerAppElement.proto.protoInjector) ? containerAppElement._injector.parent : containerAppElement._injector;
hostInjectorBoundary = containerAppElement._injector.hostBoundary;
break;
case view_type_1.ViewType.HOST:
if (lang_1.isPresent(containerAppElement)) {
parentInjector = lang_1.isPresent(containerAppElement.proto.protoInjector) ? containerAppElement._injector.parent : containerAppElement._injector;
if (lang_1.isPresent(imperativelyCreatedProviders)) {
var imperativeProvidersWithVisibility = imperativelyCreatedProviders.map(function(p) {
return new injector_1.ProviderWithVisibility(p, injector_1.Visibility.Public);
});
parentInjector = new di_1.Injector(new injector_1.ProtoInjector(imperativeProvidersWithVisibility), parentInjector, true, null, null);
hostInjectorBoundary = false;
} else {
hostInjectorBoundary = containerAppElement._injector.hostBoundary;
}
} else {
parentInjector = rootInjector;
hostInjectorBoundary = true;
}
break;
}
return new InjectorWithHostBoundary(parentInjector, hostInjectorBoundary);
};
AppElement.prototype.attachComponentView = function(componentView) {
this.componentView = componentView;
};
AppElement.prototype._debugContext = function() {
var c = this.parentView.getDebugContext(this, null, null);
return lang_1.isPresent(c) ? new _Context(c.element, c.componentElement, c.injector) : null;
};
AppElement.prototype.hasVariableBinding = function(name) {
var vb = this.proto.directiveVariableBindings;
return lang_1.isPresent(vb) && collection_1.StringMapWrapper.contains(vb, name);
};
AppElement.prototype.getVariableBinding = function(name) {
var index = this.proto.directiveVariableBindings[name];
return lang_1.isPresent(index) ? this.getDirectiveAtIndex(index) : this.getElementRef();
};
AppElement.prototype.get = function(token) {
return this._injector.get(token);
};
AppElement.prototype.hasDirective = function(type) {
return lang_1.isPresent(this._injector.getOptional(type));
};
AppElement.prototype.getComponent = function() {
return lang_1.isPresent(this._strategy) ? this._strategy.getComponent() : null;
};
AppElement.prototype.getInjector = function() {
return this._injector;
};
AppElement.prototype.getElementRef = function() {
return this.ref;
};
AppElement.prototype.getViewContainerRef = function() {
return new view_container_ref_2.ViewContainerRef_(this);
};
AppElement.prototype.getTemplateRef = function() {
if (lang_1.isPresent(this.embeddedViewFactory)) {
return new template_ref_1.TemplateRef_(this.ref);
}
return null;
};
AppElement.prototype.getDependency = function(injector, provider, dep) {
if (provider instanceof DirectiveProvider) {
var dirDep = dep;
if (lang_1.isPresent(dirDep.attributeName))
return this._buildAttribute(dirDep);
if (lang_1.isPresent(dirDep.queryDecorator))
return this._queryStrategy.findQuery(dirDep.queryDecorator).list;
if (dirDep.key.id === StaticKeys.instance().changeDetectorRefId) {
if (this.proto.firstProviderIsComponent) {
return new _ComponentViewChangeDetectorRef(this);
} else {
return this.parentView.changeDetector.ref;
}
}
if (dirDep.key.id === StaticKeys.instance().elementRefId) {
return this.getElementRef();
}
if (dirDep.key.id === StaticKeys.instance().viewContainerId) {
return this.getViewContainerRef();
}
if (dirDep.key.id === StaticKeys.instance().templateRefId) {
var tr = this.getTemplateRef();
if (lang_1.isBlank(tr) && !dirDep.optional) {
throw new di_1.NoProviderError(null, dirDep.key);
}
return tr;
}
if (dirDep.key.id === StaticKeys.instance().rendererId) {
return this.parentView.renderer;
}
} else if (provider instanceof pipe_provider_1.PipeProvider) {
if (dep.key.id === StaticKeys.instance().changeDetectorRefId) {
if (this.proto.firstProviderIsComponent) {
return new _ComponentViewChangeDetectorRef(this);
} else {
return this.parentView.changeDetector;
}
}
}
return injector_1.UNDEFINED;
};
AppElement.prototype._buildAttribute = function(dep) {
var attributes = this.proto.attributes;
if (lang_1.isPresent(attributes) && collection_1.StringMapWrapper.contains(attributes, dep.attributeName)) {
return attributes[dep.attributeName];
} else {
return null;
}
};
AppElement.prototype.addDirectivesMatchingQuery = function(query, list) {
var templateRef = this.getTemplateRef();
if (query.selector === template_ref_1.TemplateRef && lang_1.isPresent(templateRef)) {
list.push(templateRef);
}
if (this._strategy != null) {
this._strategy.addDirectivesMatchingQuery(query, list);
}
};
AppElement.prototype._buildQueryStrategy = function() {
if (this.proto.protoQueryRefs.length === 0) {
return _emptyQueryStrategy;
} else if (this.proto.protoQueryRefs.length <= InlineQueryStrategy.NUMBER_OF_SUPPORTED_QUERIES) {
return new InlineQueryStrategy(this);
} else {
return new DynamicQueryStrategy(this);
}
};
AppElement.prototype.getDirectiveAtIndex = function(index) {
return this._injector.getAt(index);
};
AppElement.prototype.ngAfterViewChecked = function() {
if (lang_1.isPresent(this._queryStrategy))
this._queryStrategy.updateViewQueries();
};
AppElement.prototype.ngAfterContentChecked = function() {
if (lang_1.isPresent(this._queryStrategy))
this._queryStrategy.updateContentQueries();
};
AppElement.prototype.traverseAndSetQueriesAsDirty = function() {
var inj = this;
while (lang_1.isPresent(inj)) {
inj._setQueriesAsDirty();
if (lang_1.isBlank(inj.parent) && inj.parentView.proto.type === view_type_1.ViewType.EMBEDDED) {
inj = inj.parentView.containerAppElement;
} else {
inj = inj.parent;
}
}
};
AppElement.prototype._setQueriesAsDirty = function() {
if (lang_1.isPresent(this._queryStrategy)) {
this._queryStrategy.setContentQueriesAsDirty();
}
if (this.parentView.proto.type === view_type_1.ViewType.COMPONENT) {
this.parentView.containerAppElement._queryStrategy.setViewQueriesAsDirty();
}
};
return AppElement;
})();
exports.AppElement = AppElement;
var _EmptyQueryStrategy = (function() {
function _EmptyQueryStrategy() {}
_EmptyQueryStrategy.prototype.setContentQueriesAsDirty = function() {};
_EmptyQueryStrategy.prototype.setViewQueriesAsDirty = function() {};
_EmptyQueryStrategy.prototype.updateContentQueries = function() {};
_EmptyQueryStrategy.prototype.updateViewQueries = function() {};
_EmptyQueryStrategy.prototype.findQuery = function(query) {
throw new exceptions_1.BaseException("Cannot find query for directive " + query + ".");
};
return _EmptyQueryStrategy;
})();
var _emptyQueryStrategy = new _EmptyQueryStrategy();
var InlineQueryStrategy = (function() {
function InlineQueryStrategy(ei) {
var protoRefs = ei.proto.protoQueryRefs;
if (protoRefs.length > 0)
this.query0 = new QueryRef(protoRefs[0], ei);
if (protoRefs.length > 1)
this.query1 = new QueryRef(protoRefs[1], ei);
if (protoRefs.length > 2)
this.query2 = new QueryRef(protoRefs[2], ei);
}
InlineQueryStrategy.prototype.setContentQueriesAsDirty = function() {
if (lang_1.isPresent(this.query0) && !this.query0.isViewQuery)
this.query0.dirty = true;
if (lang_1.isPresent(this.query1) && !this.query1.isViewQuery)
this.query1.dirty = true;
if (lang_1.isPresent(this.query2) && !this.query2.isViewQuery)
this.query2.dirty = true;
};
InlineQueryStrategy.prototype.setViewQueriesAsDirty = function() {
if (lang_1.isPresent(this.query0) && this.query0.isViewQuery)
this.query0.dirty = true;
if (lang_1.isPresent(this.query1) && this.query1.isViewQuery)
this.query1.dirty = true;
if (lang_1.isPresent(this.query2) && this.query2.isViewQuery)
this.query2.dirty = true;
};
InlineQueryStrategy.prototype.updateContentQueries = function() {
if (lang_1.isPresent(this.query0) && !this.query0.isViewQuery) {
this.query0.update();
}
if (lang_1.isPresent(this.query1) && !this.query1.isViewQuery) {
this.query1.update();
}
if (lang_1.isPresent(this.query2) && !this.query2.isViewQuery) {
this.query2.update();
}
};
InlineQueryStrategy.prototype.updateViewQueries = function() {
if (lang_1.isPresent(this.query0) && this.query0.isViewQuery) {
this.query0.update();
}
if (lang_1.isPresent(this.query1) && this.query1.isViewQuery) {
this.query1.update();
}
if (lang_1.isPresent(this.query2) && this.query2.isViewQuery) {
this.query2.update();
}
};
InlineQueryStrategy.prototype.findQuery = function(query) {
if (lang_1.isPresent(this.query0) && this.query0.protoQueryRef.query === query) {
return this.query0;
}
if (lang_1.isPresent(this.query1) && this.query1.protoQueryRef.query === query) {
return this.query1;
}
if (lang_1.isPresent(this.query2) && this.query2.protoQueryRef.query === query) {
return this.query2;
}
throw new exceptions_1.BaseException("Cannot find query for directive " + query + ".");
};
InlineQueryStrategy.NUMBER_OF_SUPPORTED_QUERIES = 3;
return InlineQueryStrategy;
})();
var DynamicQueryStrategy = (function() {
function DynamicQueryStrategy(ei) {
this.queries = ei.proto.protoQueryRefs.map(function(p) {
return new QueryRef(p, ei);
});
}
DynamicQueryStrategy.prototype.setContentQueriesAsDirty = function() {
for (var i = 0; i < this.queries.length; ++i) {
var q = this.queries[i];
if (!q.isViewQuery)
q.dirty = true;
}
};
DynamicQueryStrategy.prototype.setViewQueriesAsDirty = function() {
for (var i = 0; i < this.queries.length; ++i) {
var q = this.queries[i];
if (q.isViewQuery)
q.dirty = true;
}
};
DynamicQueryStrategy.prototype.updateContentQueries = function() {
for (var i = 0; i < this.queries.length; ++i) {
var q = this.queries[i];
if (!q.isViewQuery) {
q.update();
}
}
};
DynamicQueryStrategy.prototype.updateViewQueries = function() {
for (var i = 0; i < this.queries.length; ++i) {
var q = this.queries[i];
if (q.isViewQuery) {
q.update();
}
}
};
DynamicQueryStrategy.prototype.findQuery = function(query) {
for (var i = 0; i < this.queries.length; ++i) {
var q = this.queries[i];
if (q.protoQueryRef.query === query) {
return q;
}
}
throw new exceptions_1.BaseException("Cannot find query for directive " + query + ".");
};
return DynamicQueryStrategy;
})();
var ElementDirectiveInlineStrategy = (function() {
function ElementDirectiveInlineStrategy(injectorStrategy, _ei) {
this.injectorStrategy = injectorStrategy;
this._ei = _ei;
}
ElementDirectiveInlineStrategy.prototype.init = function() {
var i = this.injectorStrategy;
var p = i.protoStrategy;
i.resetConstructionCounter();
if (p.provider0 instanceof DirectiveProvider && lang_1.isPresent(p.keyId0) && i.obj0 === injector_1.UNDEFINED)
i.obj0 = i.instantiateProvider(p.provider0, p.visibility0);
if (p.provider1 instanceof DirectiveProvider && lang_1.isPresent(p.keyId1) && i.obj1 === injector_1.UNDEFINED)
i.obj1 = i.instantiateProvider(p.provider1, p.visibility1);
if (p.provider2 instanceof DirectiveProvider && lang_1.isPresent(p.keyId2) && i.obj2 === injector_1.UNDEFINED)
i.obj2 = i.instantiateProvider(p.provider2, p.visibility2);
if (p.provider3 instanceof DirectiveProvider && lang_1.isPresent(p.keyId3) && i.obj3 === injector_1.UNDEFINED)
i.obj3 = i.instantiateProvider(p.provider3, p.visibility3);
if (p.provider4 instanceof DirectiveProvider && lang_1.isPresent(p.keyId4) && i.obj4 === injector_1.UNDEFINED)
i.obj4 = i.instantiateProvider(p.provider4, p.visibility4);
if (p.provider5 instanceof DirectiveProvider && lang_1.isPresent(p.keyId5) && i.obj5 === injector_1.UNDEFINED)
i.obj5 = i.instantiateProvider(p.provider5, p.visibility5);
if (p.provider6 instanceof DirectiveProvider && lang_1.isPresent(p.keyId6) && i.obj6 === injector_1.UNDEFINED)
i.obj6 = i.instantiateProvider(p.provider6, p.visibility6);
if (p.provider7 instanceof DirectiveProvider && lang_1.isPresent(p.keyId7) && i.obj7 === injector_1.UNDEFINED)
i.obj7 = i.instantiateProvider(p.provider7, p.visibility7);
if (p.provider8 instanceof DirectiveProvider && lang_1.isPresent(p.keyId8) && i.obj8 === injector_1.UNDEFINED)
i.obj8 = i.instantiateProvider(p.provider8, p.visibility8);
if (p.provider9 instanceof DirectiveProvider && lang_1.isPresent(p.keyId9) && i.obj9 === injector_1.UNDEFINED)
i.obj9 = i.instantiateProvider(p.provider9, p.visibility9);
};
ElementDirectiveInlineStrategy.prototype.getComponent = function() {
return this.injectorStrategy.obj0;
};
ElementDirectiveInlineStrategy.prototype.isComponentKey = function(key) {
return this._ei.proto.firstProviderIsComponent && lang_1.isPresent(key) && key.id === this.injectorStrategy.protoStrategy.keyId0;
};
ElementDirectiveInlineStrategy.prototype.addDirectivesMatchingQuery = function(query, list) {
var i = this.injectorStrategy;
var p = i.protoStrategy;
if (lang_1.isPresent(p.provider0) && p.provider0.key.token === query.selector) {
if (i.obj0 === injector_1.UNDEFINED)
i.obj0 = i.instantiateProvider(p.provider0, p.visibility0);
list.push(i.obj0);
}
if (lang_1.isPresent(p.provider1) && p.provider1.key.token === query.selector) {
if (i.obj1 === injector_1.UNDEFINED)
i.obj1 = i.instantiateProvider(p.provider1, p.visibility1);
list.push(i.obj1);
}
if (lang_1.isPresent(p.provider2) && p.provider2.key.token === query.selector) {
if (i.obj2 === injector_1.UNDEFINED)
i.obj2 = i.instantiateProvider(p.provider2, p.visibility2);
list.push(i.obj2);
}
if (lang_1.isPresent(p.provider3) && p.provider3.key.token === query.selector) {
if (i.obj3 === injector_1.UNDEFINED)
i.obj3 = i.instantiateProvider(p.provider3, p.visibility3);
list.push(i.obj3);
}
if (lang_1.isPresent(p.provider4) && p.provider4.key.token === query.selector) {
if (i.obj4 === injector_1.UNDEFINED)
i.obj4 = i.instantiateProvider(p.provider4, p.visibility4);
list.push(i.obj4);
}
if (lang_1.isPresent(p.provider5) && p.provider5.key.token === query.selector) {
if (i.obj5 === injector_1.UNDEFINED)
i.obj5 = i.instantiateProvider(p.provider5, p.visibility5);
list.push(i.obj5);
}
if (lang_1.isPresent(p.provider6) && p.provider6.key.token === query.selector) {
if (i.obj6 === injector_1.UNDEFINED)
i.obj6 = i.instantiateProvider(p.provider6, p.visibility6);
list.push(i.obj6);
}
if (lang_1.isPresent(p.provider7) && p.provider7.key.token === query.selector) {
if (i.obj7 === injector_1.UNDEFINED)
i.obj7 = i.instantiateProvider(p.provider7, p.visibility7);
list.push(i.obj7);
}
if (lang_1.isPresent(p.provider8) && p.provider8.key.token === query.selector) {
if (i.obj8 === injector_1.UNDEFINED)
i.obj8 = i.instantiateProvider(p.provider8, p.visibility8);
list.push(i.obj8);
}
if (lang_1.isPresent(p.provider9) && p.provider9.key.token === query.selector) {
if (i.obj9 === injector_1.UNDEFINED)
i.obj9 = i.instantiateProvider(p.provider9, p.visibility9);
list.push(i.obj9);
}
};
return ElementDirectiveInlineStrategy;
})();
var ElementDirectiveDynamicStrategy = (function() {
function ElementDirectiveDynamicStrategy(injectorStrategy, _ei) {
this.injectorStrategy = injectorStrategy;
this._ei = _ei;
}
ElementDirectiveDynamicStrategy.prototype.init = function() {
var inj = this.injectorStrategy;
var p = inj.protoStrategy;
inj.resetConstructionCounter();
for (var i = 0; i < p.keyIds.length; i++) {
if (p.providers[i] instanceof DirectiveProvider && lang_1.isPresent(p.keyIds[i]) && inj.objs[i] === injector_1.UNDEFINED) {
inj.objs[i] = inj.instantiateProvider(p.providers[i], p.visibilities[i]);
}
}
};
ElementDirectiveDynamicStrategy.prototype.getComponent = function() {
return this.injectorStrategy.objs[0];
};
ElementDirectiveDynamicStrategy.prototype.isComponentKey = function(key) {
var p = this.injectorStrategy.protoStrategy;
return this._ei.proto.firstProviderIsComponent && lang_1.isPresent(key) && key.id === p.keyIds[0];
};
ElementDirectiveDynamicStrategy.prototype.addDirectivesMatchingQuery = function(query, list) {
var ist = this.injectorStrategy;
var p = ist.protoStrategy;
for (var i = 0; i < p.providers.length; i++) {
if (p.providers[i].key.token === query.selector) {
if (ist.objs[i] === injector_1.UNDEFINED) {
ist.objs[i] = ist.instantiateProvider(p.providers[i], p.visibilities[i]);
}
list.push(ist.objs[i]);
}
}
};
return ElementDirectiveDynamicStrategy;
})();
var ProtoQueryRef = (function() {
function ProtoQueryRef(dirIndex, setter, query) {
this.dirIndex = dirIndex;
this.setter = setter;
this.query = query;
}
Object.defineProperty(ProtoQueryRef.prototype, "usesPropertySyntax", {
get: function() {
return lang_1.isPresent(this.setter);
},
enumerable: true,
configurable: true
});
return ProtoQueryRef;
})();
exports.ProtoQueryRef = ProtoQueryRef;
var QueryRef = (function() {
function QueryRef(protoQueryRef, originator) {
this.protoQueryRef = protoQueryRef;
this.originator = originator;
this.list = new query_list_1.QueryList();
this.dirty = true;
}
Object.defineProperty(QueryRef.prototype, "isViewQuery", {
get: function() {
return this.protoQueryRef.query.isViewQuery;
},
enumerable: true,
configurable: true
});
QueryRef.prototype.update = function() {
if (!this.dirty)
return ;
this._update();
this.dirty = false;
if (this.protoQueryRef.usesPropertySyntax) {
var dir = this.originator.getDirectiveAtIndex(this.protoQueryRef.dirIndex);
if (this.protoQueryRef.query.first) {
this.protoQueryRef.setter(dir, this.list.length > 0 ? this.list.first : null);
} else {
this.protoQueryRef.setter(dir, this.list);
}
}
this.list.notifyOnChanges();
};
QueryRef.prototype._update = function() {
var aggregator = [];
if (this.protoQueryRef.query.isViewQuery) {
var nestedView = this.originator.componentView;
if (lang_1.isPresent(nestedView))
this._visitView(nestedView, aggregator);
} else {
this._visit(this.originator, aggregator);
}
this.list.reset(aggregator);
};
;
QueryRef.prototype._visit = function(inj, aggregator) {
var view = inj.parentView;
var startIdx = inj.proto.index;
for (var i = startIdx; i < view.appElements.length; i++) {
var curInj = view.appElements[i];
if (i > startIdx && (lang_1.isBlank(curInj.parent) || curInj.parent.proto.index < startIdx)) {
break;
}
if (!this.protoQueryRef.query.descendants && !(curInj.parent == this.originator || curInj == this.originator))
continue;
this._visitInjector(curInj, aggregator);
this._visitViewContainerViews(curInj.nestedViews, aggregator);
}
};
QueryRef.prototype._visitInjector = function(inj, aggregator) {
if (this.protoQueryRef.query.isVarBindingQuery) {
this._aggregateVariableBinding(inj, aggregator);
} else {
this._aggregateDirective(inj, aggregator);
}
};
QueryRef.prototype._visitViewContainerViews = function(views, aggregator) {
if (lang_1.isPresent(views)) {
for (var j = 0; j < views.length; j++) {
this._visitView(views[j], aggregator);
}
}
};
QueryRef.prototype._visitView = function(view, aggregator) {
for (var i = 0; i < view.appElements.length; i++) {
var inj = view.appElements[i];
this._visitInjector(inj, aggregator);
this._visitViewContainerViews(inj.nestedViews, aggregator);
}
};
QueryRef.prototype._aggregateVariableBinding = function(inj, aggregator) {
var vb = this.protoQueryRef.query.varBindings;
for (var i = 0; i < vb.length; ++i) {
if (inj.hasVariableBinding(vb[i])) {
aggregator.push(inj.getVariableBinding(vb[i]));
}
}
};
QueryRef.prototype._aggregateDirective = function(inj, aggregator) {
inj.addDirectivesMatchingQuery(this.protoQueryRef.query, aggregator);
};
return QueryRef;
})();
exports.QueryRef = QueryRef;
var _ComponentViewChangeDetectorRef = (function(_super) {
__extends(_ComponentViewChangeDetectorRef, _super);
function _ComponentViewChangeDetectorRef(_appElement) {
_super.call(this);
this._appElement = _appElement;
}
_ComponentViewChangeDetectorRef.prototype.markForCheck = function() {
this._appElement.componentView.changeDetector.ref.markForCheck();
};
_ComponentViewChangeDetectorRef.prototype.detach = function() {
this._appElement.componentView.changeDetector.ref.detach();
};
_ComponentViewChangeDetectorRef.prototype.detectChanges = function() {
this._appElement.componentView.changeDetector.ref.detectChanges();
};
_ComponentViewChangeDetectorRef.prototype.checkNoChanges = function() {
this._appElement.componentView.changeDetector.ref.checkNoChanges();
};
_ComponentViewChangeDetectorRef.prototype.reattach = function() {
this._appElement.componentView.changeDetector.ref.reattach();
};
return _ComponentViewChangeDetectorRef;
})(change_detection_1.ChangeDetectorRef);
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/pipes/pipes", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/change_detection/pipes"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var cd = require("angular2/src/core/change_detection/pipes");
var ProtoPipes = (function() {
function ProtoPipes(config) {
this.config = config;
this.config = config;
}
ProtoPipes.fromProviders = function(providers) {
var config = {};
providers.forEach(function(b) {
return config[b.name] = b;
});
return new ProtoPipes(config);
};
ProtoPipes.prototype.get = function(name) {
var provider = this.config[name];
if (lang_1.isBlank(provider))
throw new exceptions_1.BaseException("Cannot find pipe '" + name + "'.");
return provider;
};
return ProtoPipes;
})();
exports.ProtoPipes = ProtoPipes;
var Pipes = (function() {
function Pipes(proto, injector) {
this.proto = proto;
this.injector = injector;
this._config = {};
}
Pipes.prototype.get = function(name) {
var cached = collection_1.StringMapWrapper.get(this._config, name);
if (lang_1.isPresent(cached))
return cached;
var p = this.proto.get(name);
var transform = this.injector.instantiateResolved(p);
var res = new cd.SelectedPipe(transform, p.pure);
if (p.pure) {
collection_1.StringMapWrapper.set(this._config, name, res);
}
return res;
};
return Pipes;
})();
exports.Pipes = Pipes;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker", ["angular2/src/core/linker/directive_resolver", "angular2/src/core/linker/view_resolver", "angular2/src/core/linker/compiler", "angular2/src/core/linker/view_manager", "angular2/src/core/linker/query_list", "angular2/src/core/linker/dynamic_component_loader", "angular2/src/core/linker/element_ref", "angular2/src/core/linker/template_ref", "angular2/src/core/linker/view_ref", "angular2/src/core/linker/view_container_ref", "angular2/src/core/linker/dynamic_component_loader"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var directive_resolver_1 = require("angular2/src/core/linker/directive_resolver");
exports.DirectiveResolver = directive_resolver_1.DirectiveResolver;
var view_resolver_1 = require("angular2/src/core/linker/view_resolver");
exports.ViewResolver = view_resolver_1.ViewResolver;
var compiler_1 = require("angular2/src/core/linker/compiler");
exports.Compiler = compiler_1.Compiler;
var view_manager_1 = require("angular2/src/core/linker/view_manager");
exports.AppViewManager = view_manager_1.AppViewManager;
var query_list_1 = require("angular2/src/core/linker/query_list");
exports.QueryList = query_list_1.QueryList;
var dynamic_component_loader_1 = require("angular2/src/core/linker/dynamic_component_loader");
exports.DynamicComponentLoader = dynamic_component_loader_1.DynamicComponentLoader;
var element_ref_1 = require("angular2/src/core/linker/element_ref");
exports.ElementRef = element_ref_1.ElementRef;
var template_ref_1 = require("angular2/src/core/linker/template_ref");
exports.TemplateRef = template_ref_1.TemplateRef;
var view_ref_1 = require("angular2/src/core/linker/view_ref");
exports.EmbeddedViewRef = view_ref_1.EmbeddedViewRef;
exports.HostViewRef = view_ref_1.HostViewRef;
exports.ViewRef = view_ref_1.ViewRef;
exports.HostViewFactoryRef = view_ref_1.HostViewFactoryRef;
var view_container_ref_1 = require("angular2/src/core/linker/view_container_ref");
exports.ViewContainerRef = view_container_ref_1.ViewContainerRef;
var dynamic_component_loader_2 = require("angular2/src/core/linker/dynamic_component_loader");
exports.ComponentRef = dynamic_component_loader_2.ComponentRef;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/resolved_metadata_cache", ["angular2/src/core/di", "angular2/src/facade/lang", "angular2/src/core/linker/element", "angular2/src/core/linker/directive_resolver", "angular2/src/core/pipes/pipe_provider", "angular2/src/core/linker/pipe_resolver"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
var element_1 = require("angular2/src/core/linker/element");
var directive_resolver_1 = require("angular2/src/core/linker/directive_resolver");
var pipe_provider_1 = require("angular2/src/core/pipes/pipe_provider");
var pipe_resolver_1 = require("angular2/src/core/linker/pipe_resolver");
var ResolvedMetadataCache = (function() {
function ResolvedMetadataCache(_directiveResolver, _pipeResolver) {
this._directiveResolver = _directiveResolver;
this._pipeResolver = _pipeResolver;
this._directiveCache = new Map();
this._pipeCache = new Map();
}
ResolvedMetadataCache.prototype.getResolvedDirectiveMetadata = function(type) {
var result = this._directiveCache.get(type);
if (lang_1.isBlank(result)) {
result = element_1.DirectiveProvider.createFromType(type, this._directiveResolver.resolve(type));
this._directiveCache.set(type, result);
}
return result;
};
ResolvedMetadataCache.prototype.getResolvedPipeMetadata = function(type) {
var result = this._pipeCache.get(type);
if (lang_1.isBlank(result)) {
result = pipe_provider_1.PipeProvider.createFromType(type, this._pipeResolver.resolve(type));
this._pipeCache.set(type, result);
}
return result;
};
ResolvedMetadataCache = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [directive_resolver_1.DirectiveResolver, pipe_resolver_1.PipeResolver])], ResolvedMetadataCache);
return ResolvedMetadataCache;
})();
exports.ResolvedMetadataCache = ResolvedMetadataCache;
exports.CODEGEN_RESOLVED_METADATA_CACHE = new ResolvedMetadataCache(directive_resolver_1.CODEGEN_DIRECTIVE_RESOLVER, pipe_resolver_1.CODEGEN_PIPE_RESOLVER);
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/debug/ng_probe", ["angular2/src/facade/lang", "angular2/src/core/di", "angular2/src/platform/dom/dom_adapter", "angular2/src/core/debug/debug_node", "angular2/src/platform/dom/dom_renderer", "angular2/core", "angular2/src/core/debug/debug_renderer"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var di_1 = require("angular2/src/core/di");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var debug_node_1 = require("angular2/src/core/debug/debug_node");
var dom_renderer_1 = require("angular2/src/platform/dom/dom_renderer");
var core_1 = require("angular2/core");
var debug_renderer_1 = require("angular2/src/core/debug/debug_renderer");
var CORE_TOKENS = lang_1.CONST_EXPR({
'ApplicationRef': core_1.ApplicationRef,
'NgZone': core_1.NgZone
});
var INSPECT_GLOBAL_NAME = 'ng.probe';
var CORE_TOKENS_GLOBAL_NAME = 'ng.coreTokens';
function inspectNativeElement(element) {
return debug_node_1.getDebugNode(element);
}
exports.inspectNativeElement = inspectNativeElement;
function _createConditionalRootRenderer(rootRenderer) {
if (lang_1.assertionsEnabled()) {
return _createRootRenderer(rootRenderer);
}
return rootRenderer;
}
function _createRootRenderer(rootRenderer) {
dom_adapter_1.DOM.setGlobalVar(INSPECT_GLOBAL_NAME, inspectNativeElement);
dom_adapter_1.DOM.setGlobalVar(CORE_TOKENS_GLOBAL_NAME, CORE_TOKENS);
return new debug_renderer_1.DebugDomRootRenderer(rootRenderer);
}
exports.ELEMENT_PROBE_PROVIDERS = lang_1.CONST_EXPR([new di_1.Provider(core_1.RootRenderer, {
useFactory: _createConditionalRootRenderer,
deps: [dom_renderer_1.DomRootRenderer]
})]);
exports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = lang_1.CONST_EXPR([new di_1.Provider(core_1.RootRenderer, {
useFactory: _createRootRenderer,
deps: [dom_renderer_1.DomRootRenderer]
})]);
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/reflection/reflection", ["angular2/src/core/reflection/reflector", "angular2/src/core/reflection/reflector", "angular2/src/core/reflection/reflection_capabilities"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var reflector_1 = require("angular2/src/core/reflection/reflector");
var reflector_2 = require("angular2/src/core/reflection/reflector");
exports.Reflector = reflector_2.Reflector;
exports.ReflectionInfo = reflector_2.ReflectionInfo;
var reflection_capabilities_1 = require("angular2/src/core/reflection/reflection_capabilities");
exports.reflector = new reflector_1.Reflector(new reflection_capabilities_1.ReflectionCapabilities());
global.define = __define;
return module.exports;
});
System.register("angular2/src/animate/css_animation_builder", ["angular2/src/animate/css_animation_options", "angular2/src/animate/animation"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var css_animation_options_1 = require("angular2/src/animate/css_animation_options");
var animation_1 = require("angular2/src/animate/animation");
var CssAnimationBuilder = (function() {
function CssAnimationBuilder(browserDetails) {
this.browserDetails = browserDetails;
this.data = new css_animation_options_1.CssAnimationOptions();
}
CssAnimationBuilder.prototype.addAnimationClass = function(className) {
this.data.animationClasses.push(className);
return this;
};
CssAnimationBuilder.prototype.addClass = function(className) {
this.data.classesToAdd.push(className);
return this;
};
CssAnimationBuilder.prototype.removeClass = function(className) {
this.data.classesToRemove.push(className);
return this;
};
CssAnimationBuilder.prototype.setDuration = function(duration) {
this.data.duration = duration;
return this;
};
CssAnimationBuilder.prototype.setDelay = function(delay) {
this.data.delay = delay;
return this;
};
CssAnimationBuilder.prototype.setStyles = function(from, to) {
return this.setFromStyles(from).setToStyles(to);
};
CssAnimationBuilder.prototype.setFromStyles = function(from) {
this.data.fromStyles = from;
return this;
};
CssAnimationBuilder.prototype.setToStyles = function(to) {
this.data.toStyles = to;
return this;
};
CssAnimationBuilder.prototype.start = function(element) {
return new animation_1.Animation(element, this.data, this.browserDetails);
};
return CssAnimationBuilder;
})();
exports.CssAnimationBuilder = CssAnimationBuilder;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/abstract_change_detector", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/core/change_detection/change_detection_util", "angular2/src/core/change_detection/change_detector_ref", "angular2/src/core/change_detection/exceptions", "angular2/src/core/change_detection/parser/locals", "angular2/src/core/change_detection/constants", "angular2/src/core/profile/profile", "angular2/src/facade/async"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var change_detection_util_1 = require("angular2/src/core/change_detection/change_detection_util");
var change_detector_ref_1 = require("angular2/src/core/change_detection/change_detector_ref");
var exceptions_1 = require("angular2/src/core/change_detection/exceptions");
var locals_1 = require("angular2/src/core/change_detection/parser/locals");
var constants_1 = require("angular2/src/core/change_detection/constants");
var profile_1 = require("angular2/src/core/profile/profile");
var async_1 = require("angular2/src/facade/async");
var _scope_check = profile_1.wtfCreateScope("ChangeDetector#check(ascii id, bool throwOnChange)");
var _Context = (function() {
function _Context(element, componentElement, context, locals, injector, expression) {
this.element = element;
this.componentElement = componentElement;
this.context = context;
this.locals = locals;
this.injector = injector;
this.expression = expression;
}
return _Context;
})();
var AbstractChangeDetector = (function() {
function AbstractChangeDetector(id, numberOfPropertyProtoRecords, bindingTargets, directiveIndices, strategy) {
this.id = id;
this.numberOfPropertyProtoRecords = numberOfPropertyProtoRecords;
this.bindingTargets = bindingTargets;
this.directiveIndices = directiveIndices;
this.strategy = strategy;
this.contentChildren = [];
this.viewChildren = [];
this.state = constants_1.ChangeDetectorState.NeverChecked;
this.locals = null;
this.mode = null;
this.pipes = null;
this.ref = new change_detector_ref_1.ChangeDetectorRef_(this);
}
AbstractChangeDetector.prototype.addContentChild = function(cd) {
this.contentChildren.push(cd);
cd.parent = this;
};
AbstractChangeDetector.prototype.removeContentChild = function(cd) {
collection_1.ListWrapper.remove(this.contentChildren, cd);
};
AbstractChangeDetector.prototype.addViewChild = function(cd) {
this.viewChildren.push(cd);
cd.parent = this;
};
AbstractChangeDetector.prototype.removeViewChild = function(cd) {
collection_1.ListWrapper.remove(this.viewChildren, cd);
};
AbstractChangeDetector.prototype.remove = function() {
this.parent.removeContentChild(this);
};
AbstractChangeDetector.prototype.handleEvent = function(eventName, elIndex, event) {
if (!this.hydrated()) {
this.throwDehydratedError(this.id + " -> " + eventName);
}
try {
var locals = new Map();
locals.set('$event', event);
var res = !this.handleEventInternal(eventName, elIndex, new locals_1.Locals(this.locals, locals));
this.markPathToRootAsCheckOnce();
return res;
} catch (e) {
var c = this.dispatcher.getDebugContext(null, elIndex, null);
var context = lang_1.isPresent(c) ? new exceptions_1.EventEvaluationErrorContext(c.element, c.componentElement, c.context, c.locals, c.injector) : null;
throw new exceptions_1.EventEvaluationError(eventName, e, e.stack, context);
}
};
AbstractChangeDetector.prototype.handleEventInternal = function(eventName, elIndex, locals) {
return false;
};
AbstractChangeDetector.prototype.detectChanges = function() {
this.runDetectChanges(false);
};
AbstractChangeDetector.prototype.checkNoChanges = function() {
if (lang_1.assertionsEnabled()) {
this.runDetectChanges(true);
}
};
AbstractChangeDetector.prototype.runDetectChanges = function(throwOnChange) {
if (this.mode === constants_1.ChangeDetectionStrategy.Detached || this.mode === constants_1.ChangeDetectionStrategy.Checked || this.state === constants_1.ChangeDetectorState.Errored)
return ;
var s = _scope_check(this.id, throwOnChange);
this.detectChangesInRecords(throwOnChange);
this._detectChangesContentChildren(throwOnChange);
if (!throwOnChange)
this.afterContentLifecycleCallbacks();
this._detectChangesInViewChildren(throwOnChange);
if (!throwOnChange)
this.afterViewLifecycleCallbacks();
if (this.mode === constants_1.ChangeDetectionStrategy.CheckOnce)
this.mode = constants_1.ChangeDetectionStrategy.Checked;
this.state = constants_1.ChangeDetectorState.CheckedBefore;
profile_1.wtfLeave(s);
};
AbstractChangeDetector.prototype.detectChangesInRecords = function(throwOnChange) {
if (!this.hydrated()) {
this.throwDehydratedError(this.id);
}
try {
this.detectChangesInRecordsInternal(throwOnChange);
} catch (e) {
if (!(e instanceof exceptions_1.ExpressionChangedAfterItHasBeenCheckedException)) {
this.state = constants_1.ChangeDetectorState.Errored;
}
this._throwError(e, e.stack);
}
};
AbstractChangeDetector.prototype.detectChangesInRecordsInternal = function(throwOnChange) {};
AbstractChangeDetector.prototype.hydrate = function(context, locals, dispatcher, pipes) {
this.dispatcher = dispatcher;
this.mode = change_detection_util_1.ChangeDetectionUtil.changeDetectionMode(this.strategy);
this.context = context;
this.locals = locals;
this.pipes = pipes;
this.hydrateDirectives(dispatcher);
this.state = constants_1.ChangeDetectorState.NeverChecked;
};
AbstractChangeDetector.prototype.hydrateDirectives = function(dispatcher) {};
AbstractChangeDetector.prototype.dehydrate = function() {
this.dehydrateDirectives(true);
this._unsubscribeFromOutputs();
this.dispatcher = null;
this.context = null;
this.locals = null;
this.pipes = null;
};
AbstractChangeDetector.prototype.dehydrateDirectives = function(destroyPipes) {};
AbstractChangeDetector.prototype.hydrated = function() {
return lang_1.isPresent(this.context);
};
AbstractChangeDetector.prototype.destroyRecursive = function() {
this.dispatcher.notifyOnDestroy();
this.dehydrate();
var children = this.contentChildren;
for (var i = 0; i < children.length; i++) {
children[i].destroyRecursive();
}
children = this.viewChildren;
for (var i = 0; i < children.length; i++) {
children[i].destroyRecursive();
}
};
AbstractChangeDetector.prototype.afterContentLifecycleCallbacks = function() {
this.dispatcher.notifyAfterContentChecked();
this.afterContentLifecycleCallbacksInternal();
};
AbstractChangeDetector.prototype.afterContentLifecycleCallbacksInternal = function() {};
AbstractChangeDetector.prototype.afterViewLifecycleCallbacks = function() {
this.dispatcher.notifyAfterViewChecked();
this.afterViewLifecycleCallbacksInternal();
};
AbstractChangeDetector.prototype.afterViewLifecycleCallbacksInternal = function() {};
AbstractChangeDetector.prototype._detectChangesContentChildren = function(throwOnChange) {
var c = this.contentChildren;
for (var i = 0; i < c.length; ++i) {
c[i].runDetectChanges(throwOnChange);
}
};
AbstractChangeDetector.prototype._detectChangesInViewChildren = function(throwOnChange) {
var c = this.viewChildren;
for (var i = 0; i < c.length; ++i) {
c[i].runDetectChanges(throwOnChange);
}
};
AbstractChangeDetector.prototype.markAsCheckOnce = function() {
this.mode = constants_1.ChangeDetectionStrategy.CheckOnce;
};
AbstractChangeDetector.prototype.markPathToRootAsCheckOnce = function() {
var c = this;
while (lang_1.isPresent(c) && c.mode !== constants_1.ChangeDetectionStrategy.Detached) {
if (c.mode === constants_1.ChangeDetectionStrategy.Checked)
c.mode = constants_1.ChangeDetectionStrategy.CheckOnce;
c = c.parent;
}
};
AbstractChangeDetector.prototype._unsubscribeFromOutputs = function() {
if (lang_1.isPresent(this.outputSubscriptions)) {
for (var i = 0; i < this.outputSubscriptions.length; ++i) {
async_1.ObservableWrapper.dispose(this.outputSubscriptions[i]);
this.outputSubscriptions[i] = null;
}
}
};
AbstractChangeDetector.prototype.getDirectiveFor = function(directives, index) {
return directives.getDirectiveFor(this.directiveIndices[index]);
};
AbstractChangeDetector.prototype.getDetectorFor = function(directives, index) {
return directives.getDetectorFor(this.directiveIndices[index]);
};
AbstractChangeDetector.prototype.notifyDispatcher = function(value) {
this.dispatcher.notifyOnBinding(this._currentBinding(), value);
};
AbstractChangeDetector.prototype.logBindingUpdate = function(value) {
this.dispatcher.logBindingUpdate(this._currentBinding(), value);
};
AbstractChangeDetector.prototype.addChange = function(changes, oldValue, newValue) {
if (lang_1.isBlank(changes)) {
changes = {};
}
changes[this._currentBinding().name] = change_detection_util_1.ChangeDetectionUtil.simpleChange(oldValue, newValue);
return changes;
};
AbstractChangeDetector.prototype._throwError = function(exception, stack) {
var error;
try {
var c = this.dispatcher.getDebugContext(null, this._currentBinding().elementIndex, null);
var context = lang_1.isPresent(c) ? new _Context(c.element, c.componentElement, c.context, c.locals, c.injector, this._currentBinding().debug) : null;
error = new exceptions_1.ChangeDetectionError(this._currentBinding().debug, exception, stack, context);
} catch (e) {
error = new exceptions_1.ChangeDetectionError(null, exception, stack, null);
}
throw error;
};
AbstractChangeDetector.prototype.throwOnChangeError = function(oldValue, newValue) {
throw new exceptions_1.ExpressionChangedAfterItHasBeenCheckedException(this._currentBinding().debug, oldValue, newValue, null);
};
AbstractChangeDetector.prototype.throwDehydratedError = function(detail) {
throw new exceptions_1.DehydratedException(detail);
};
AbstractChangeDetector.prototype._currentBinding = function() {
return this.bindingTargets[this.propertyBindingIndex];
};
return AbstractChangeDetector;
})();
exports.AbstractChangeDetector = AbstractChangeDetector;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/change_detection_jit_generator", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/change_detection/abstract_change_detector", "angular2/src/core/change_detection/change_detection_util", "angular2/src/core/change_detection/proto_record", "angular2/src/core/change_detection/codegen_name_util", "angular2/src/core/change_detection/codegen_logic_util", "angular2/src/core/change_detection/codegen_facade", "angular2/src/core/change_detection/constants", "angular2/src/core/change_detection/proto_change_detector"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var abstract_change_detector_1 = require("angular2/src/core/change_detection/abstract_change_detector");
var change_detection_util_1 = require("angular2/src/core/change_detection/change_detection_util");
var proto_record_1 = require("angular2/src/core/change_detection/proto_record");
var codegen_name_util_1 = require("angular2/src/core/change_detection/codegen_name_util");
var codegen_logic_util_1 = require("angular2/src/core/change_detection/codegen_logic_util");
var codegen_facade_1 = require("angular2/src/core/change_detection/codegen_facade");
var constants_1 = require("angular2/src/core/change_detection/constants");
var proto_change_detector_1 = require("angular2/src/core/change_detection/proto_change_detector");
var IS_CHANGED_LOCAL = "isChanged";
var CHANGES_LOCAL = "changes";
var ChangeDetectorJITGenerator = (function() {
function ChangeDetectorJITGenerator(definition, changeDetectionUtilVarName, abstractChangeDetectorVarName, changeDetectorStateVarName) {
this.changeDetectionUtilVarName = changeDetectionUtilVarName;
this.abstractChangeDetectorVarName = abstractChangeDetectorVarName;
this.changeDetectorStateVarName = changeDetectorStateVarName;
var propertyBindingRecords = proto_change_detector_1.createPropertyRecords(definition);
var eventBindingRecords = proto_change_detector_1.createEventRecords(definition);
var propertyBindingTargets = definition.bindingRecords.map(function(b) {
return b.target;
});
this.id = definition.id;
this.changeDetectionStrategy = definition.strategy;
this.genConfig = definition.genConfig;
this.records = propertyBindingRecords;
this.propertyBindingTargets = propertyBindingTargets;
this.eventBindings = eventBindingRecords;
this.directiveRecords = definition.directiveRecords;
this._names = new codegen_name_util_1.CodegenNameUtil(this.records, this.eventBindings, this.directiveRecords, this.changeDetectionUtilVarName);
this._logic = new codegen_logic_util_1.CodegenLogicUtil(this._names, this.changeDetectionUtilVarName, this.changeDetectorStateVarName);
this.typeName = codegen_name_util_1.sanitizeName("ChangeDetector_" + this.id);
}
ChangeDetectorJITGenerator.prototype.generate = function() {
var factorySource = "\n " + this.generateSource() + "\n return function() {\n return new " + this.typeName + "();\n }\n ";
return new Function(this.abstractChangeDetectorVarName, this.changeDetectionUtilVarName, this.changeDetectorStateVarName, factorySource)(abstract_change_detector_1.AbstractChangeDetector, change_detection_util_1.ChangeDetectionUtil, constants_1.ChangeDetectorState);
};
ChangeDetectorJITGenerator.prototype.generateSource = function() {
return "\n var " + this.typeName + " = function " + this.typeName + "() {\n " + this.abstractChangeDetectorVarName + ".call(\n this, " + JSON.stringify(this.id) + ", " + this.records.length + ",\n " + this.typeName + ".gen_propertyBindingTargets, " + this.typeName + ".gen_directiveIndices,\n " + codegen_facade_1.codify(this.changeDetectionStrategy) + ");\n this.dehydrateDirectives(false);\n }\n\n " + this.typeName + ".prototype = Object.create(" + this.abstractChangeDetectorVarName + ".prototype);\n\n " + this.typeName + ".prototype.detectChangesInRecordsInternal = function(throwOnChange) {\n " + this._names.genInitLocals() + "\n var " + IS_CHANGED_LOCAL + " = false;\n var " + CHANGES_LOCAL + " = null;\n\n " + this._genAllRecords(this.records) + "\n }\n\n " + this._maybeGenHandleEventInternal() + "\n\n " + this._maybeGenAfterContentLifecycleCallbacks() + "\n\n " + this._maybeGenAfterViewLifecycleCallbacks() + "\n\n " + this._maybeGenHydrateDirectives() + "\n\n " + this._maybeGenDehydrateDirectives() + "\n\n " + this._genPropertyBindingTargets() + "\n\n " + this._genDirectiveIndices() + "\n ";
};
ChangeDetectorJITGenerator.prototype._genPropertyBindingTargets = function() {
var targets = this._logic.genPropertyBindingTargets(this.propertyBindingTargets, this.genConfig.genDebugInfo);
return this.typeName + ".gen_propertyBindingTargets = " + targets + ";";
};
ChangeDetectorJITGenerator.prototype._genDirectiveIndices = function() {
var indices = this._logic.genDirectiveIndices(this.directiveRecords);
return this.typeName + ".gen_directiveIndices = " + indices + ";";
};
ChangeDetectorJITGenerator.prototype._maybeGenHandleEventInternal = function() {
var _this = this;
if (this.eventBindings.length > 0) {
var handlers = this.eventBindings.map(function(eb) {
return _this._genEventBinding(eb);
}).join("\n");
return "\n " + this.typeName + ".prototype.handleEventInternal = function(eventName, elIndex, locals) {\n var " + this._names.getPreventDefaultAccesor() + " = false;\n " + this._names.genInitEventLocals() + "\n " + handlers + "\n return " + this._names.getPreventDefaultAccesor() + ";\n }\n ";
} else {
return '';
}
};
ChangeDetectorJITGenerator.prototype._genEventBinding = function(eb) {
var _this = this;
var codes = [];
this._endOfBlockIdxs = [];
collection_1.ListWrapper.forEachWithIndex(eb.records, function(r, i) {
var code;
if (r.isConditionalSkipRecord()) {
code = _this._genConditionalSkip(r, _this._names.getEventLocalName(eb, i));
} else if (r.isUnconditionalSkipRecord()) {
code = _this._genUnconditionalSkip(r);
} else {
code = _this._genEventBindingEval(eb, r);
}
code += _this._genEndOfSkipBlock(i);
codes.push(code);
});
return "\n if (eventName === \"" + eb.eventName + "\" && elIndex === " + eb.elIndex + ") {\n " + codes.join("\n") + "\n }";
};
ChangeDetectorJITGenerator.prototype._genEventBindingEval = function(eb, r) {
if (r.lastInBinding) {
var evalRecord = this._logic.genEventBindingEvalValue(eb, r);
var markPath = this._genMarkPathToRootAsCheckOnce(r);
var prevDefault = this._genUpdatePreventDefault(eb, r);
return markPath + "\n" + evalRecord + "\n" + prevDefault;
} else {
return this._logic.genEventBindingEvalValue(eb, r);
}
};
ChangeDetectorJITGenerator.prototype._genMarkPathToRootAsCheckOnce = function(r) {
var br = r.bindingRecord;
if (br.isDefaultChangeDetection()) {
return "";
} else {
return this._names.getDetectorName(br.directiveRecord.directiveIndex) + ".markPathToRootAsCheckOnce();";
}
};
ChangeDetectorJITGenerator.prototype._genUpdatePreventDefault = function(eb, r) {
var local = this._names.getEventLocalName(eb, r.selfIndex);
return "if (" + local + " === false) { " + this._names.getPreventDefaultAccesor() + " = true};";
};
ChangeDetectorJITGenerator.prototype._maybeGenDehydrateDirectives = function() {
var destroyPipesCode = this._names.genPipeOnDestroy();
var destroyDirectivesCode = this._logic.genDirectivesOnDestroy(this.directiveRecords);
var dehydrateFieldsCode = this._names.genDehydrateFields();
if (!destroyPipesCode && !destroyDirectivesCode && !dehydrateFieldsCode)
return '';
return this.typeName + ".prototype.dehydrateDirectives = function(destroyPipes) {\n if (destroyPipes) {\n " + destroyPipesCode + "\n " + destroyDirectivesCode + "\n }\n " + dehydrateFieldsCode + "\n }";
};
ChangeDetectorJITGenerator.prototype._maybeGenHydrateDirectives = function() {
var hydrateDirectivesCode = this._logic.genHydrateDirectives(this.directiveRecords);
var hydrateDetectorsCode = this._logic.genHydrateDetectors(this.directiveRecords);
if (!hydrateDirectivesCode && !hydrateDetectorsCode)
return '';
return this.typeName + ".prototype.hydrateDirectives = function(directives) {\n " + hydrateDirectivesCode + "\n " + hydrateDetectorsCode + "\n }";
};
ChangeDetectorJITGenerator.prototype._maybeGenAfterContentLifecycleCallbacks = function() {
var notifications = this._logic.genContentLifecycleCallbacks(this.directiveRecords);
if (notifications.length > 0) {
var directiveNotifications = notifications.join("\n");
return "\n " + this.typeName + ".prototype.afterContentLifecycleCallbacksInternal = function() {\n " + directiveNotifications + "\n }\n ";
} else {
return '';
}
};
ChangeDetectorJITGenerator.prototype._maybeGenAfterViewLifecycleCallbacks = function() {
var notifications = this._logic.genViewLifecycleCallbacks(this.directiveRecords);
if (notifications.length > 0) {
var directiveNotifications = notifications.join("\n");
return "\n " + this.typeName + ".prototype.afterViewLifecycleCallbacksInternal = function() {\n " + directiveNotifications + "\n }\n ";
} else {
return '';
}
};
ChangeDetectorJITGenerator.prototype._genAllRecords = function(rs) {
var codes = [];
this._endOfBlockIdxs = [];
for (var i = 0; i < rs.length; i++) {
var code = void 0;
var r = rs[i];
if (r.isLifeCycleRecord()) {
code = this._genDirectiveLifecycle(r);
} else if (r.isPipeRecord()) {
code = this._genPipeCheck(r);
} else if (r.isConditionalSkipRecord()) {
code = this._genConditionalSkip(r, this._names.getLocalName(r.contextIndex));
} else if (r.isUnconditionalSkipRecord()) {
code = this._genUnconditionalSkip(r);
} else {
code = this._genReferenceCheck(r);
}
code = "\n " + this._maybeFirstInBinding(r) + "\n " + code + "\n " + this._maybeGenLastInDirective(r) + "\n " + this._genEndOfSkipBlock(i) + "\n ";
codes.push(code);
}
return codes.join("\n");
};
ChangeDetectorJITGenerator.prototype._genConditionalSkip = function(r, condition) {
var maybeNegate = r.mode === proto_record_1.RecordType.SkipRecordsIf ? '!' : '';
this._endOfBlockIdxs.push(r.fixedArgs[0] - 1);
return "if (" + maybeNegate + condition + ") {";
};
ChangeDetectorJITGenerator.prototype._genUnconditionalSkip = function(r) {
this._endOfBlockIdxs.pop();
this._endOfBlockIdxs.push(r.fixedArgs[0] - 1);
return "} else {";
};
ChangeDetectorJITGenerator.prototype._genEndOfSkipBlock = function(protoIndex) {
if (!collection_1.ListWrapper.isEmpty(this._endOfBlockIdxs)) {
var endOfBlock = collection_1.ListWrapper.last(this._endOfBlockIdxs);
if (protoIndex === endOfBlock) {
this._endOfBlockIdxs.pop();
return '}';
}
}
return '';
};
ChangeDetectorJITGenerator.prototype._genDirectiveLifecycle = function(r) {
if (r.name === "DoCheck") {
return this._genOnCheck(r);
} else if (r.name === "OnInit") {
return this._genOnInit(r);
} else if (r.name === "OnChanges") {
return this._genOnChange(r);
} else {
throw new exceptions_1.BaseException("Unknown lifecycle event '" + r.name + "'");
}
};
ChangeDetectorJITGenerator.prototype._genPipeCheck = function(r) {
var _this = this;
var context = this._names.getLocalName(r.contextIndex);
var argString = r.args.map(function(arg) {
return _this._names.getLocalName(arg);
}).join(", ");
var oldValue = this._names.getFieldName(r.selfIndex);
var newValue = this._names.getLocalName(r.selfIndex);
var pipe = this._names.getPipeName(r.selfIndex);
var pipeName = r.name;
var init = "\n if (" + pipe + " === " + this.changeDetectionUtilVarName + ".uninitialized) {\n " + pipe + " = " + this._names.getPipesAccessorName() + ".get('" + pipeName + "');\n }\n ";
var read = newValue + " = " + pipe + ".pipe.transform(" + context + ", [" + argString + "]);";
var contexOrArgCheck = r.args.map(function(a) {
return _this._names.getChangeName(a);
});
contexOrArgCheck.push(this._names.getChangeName(r.contextIndex));
var condition = "!" + pipe + ".pure || (" + contexOrArgCheck.join(" || ") + ")";
var check = "\n " + this._genThrowOnChangeCheck(oldValue, newValue) + "\n if (" + this.changeDetectionUtilVarName + ".looseNotIdentical(" + oldValue + ", " + newValue + ")) {\n " + newValue + " = " + this.changeDetectionUtilVarName + ".unwrapValue(" + newValue + ")\n " + this._genChangeMarker(r) + "\n " + this._genUpdateDirectiveOrElement(r) + "\n " + this._genAddToChanges(r) + "\n " + oldValue + " = " + newValue + ";\n }\n ";
var genCode = r.shouldBeChecked() ? "" + read + check : read;
if (r.isUsedByOtherRecord()) {
return init + " if (" + condition + ") { " + genCode + " } else { " + newValue + " = " + oldValue + "; }";
} else {
return init + " if (" + condition + ") { " + genCode + " }";
}
};
ChangeDetectorJITGenerator.prototype._genReferenceCheck = function(r) {
var _this = this;
var oldValue = this._names.getFieldName(r.selfIndex);
var newValue = this._names.getLocalName(r.selfIndex);
var read = "\n " + this._logic.genPropertyBindingEvalValue(r) + "\n ";
var check = "\n " + this._genThrowOnChangeCheck(oldValue, newValue) + "\n if (" + this.changeDetectionUtilVarName + ".looseNotIdentical(" + oldValue + ", " + newValue + ")) {\n " + this._genChangeMarker(r) + "\n " + this._genUpdateDirectiveOrElement(r) + "\n " + this._genAddToChanges(r) + "\n " + oldValue + " = " + newValue + ";\n }\n ";
var genCode = r.shouldBeChecked() ? "" + read + check : read;
if (r.isPureFunction()) {
var condition = r.args.map(function(a) {
return _this._names.getChangeName(a);
}).join(" || ");
if (r.isUsedByOtherRecord()) {
return "if (" + condition + ") { " + genCode + " } else { " + newValue + " = " + oldValue + "; }";
} else {
return "if (" + condition + ") { " + genCode + " }";
}
} else {
return genCode;
}
};
ChangeDetectorJITGenerator.prototype._genChangeMarker = function(r) {
return r.argumentToPureFunction ? this._names.getChangeName(r.selfIndex) + " = true" : "";
};
ChangeDetectorJITGenerator.prototype._genUpdateDirectiveOrElement = function(r) {
if (!r.lastInBinding)
return "";
var newValue = this._names.getLocalName(r.selfIndex);
var notifyDebug = this.genConfig.logBindingUpdate ? "this.logBindingUpdate(" + newValue + ");" : "";
var br = r.bindingRecord;
if (br.target.isDirective()) {
var directiveProperty = this._names.getDirectiveName(br.directiveRecord.directiveIndex) + "." + br.target.name;
return "\n " + directiveProperty + " = " + newValue + ";\n " + notifyDebug + "\n " + IS_CHANGED_LOCAL + " = true;\n ";
} else {
return "\n this.notifyDispatcher(" + newValue + ");\n " + notifyDebug + "\n ";
}
};
ChangeDetectorJITGenerator.prototype._genThrowOnChangeCheck = function(oldValue, newValue) {
if (lang_1.assertionsEnabled()) {
return "\n if (throwOnChange && !" + this.changeDetectionUtilVarName + ".devModeEqual(" + oldValue + ", " + newValue + ")) {\n this.throwOnChangeError(" + oldValue + ", " + newValue + ");\n }\n ";
} else {
return '';
}
};
ChangeDetectorJITGenerator.prototype._genAddToChanges = function(r) {
var newValue = this._names.getLocalName(r.selfIndex);
var oldValue = this._names.getFieldName(r.selfIndex);
if (!r.bindingRecord.callOnChanges())
return "";
return CHANGES_LOCAL + " = this.addChange(" + CHANGES_LOCAL + ", " + oldValue + ", " + newValue + ");";
};
ChangeDetectorJITGenerator.prototype._maybeFirstInBinding = function(r) {
var prev = change_detection_util_1.ChangeDetectionUtil.protoByIndex(this.records, r.selfIndex - 1);
var firstInBinding = lang_1.isBlank(prev) || prev.bindingRecord !== r.bindingRecord;
return firstInBinding && !r.bindingRecord.isDirectiveLifecycle() ? this._names.getPropertyBindingIndex() + " = " + r.propertyBindingIndex + ";" : '';
};
ChangeDetectorJITGenerator.prototype._maybeGenLastInDirective = function(r) {
if (!r.lastInDirective)
return "";
return "\n " + CHANGES_LOCAL + " = null;\n " + this._genNotifyOnPushDetectors(r) + "\n " + IS_CHANGED_LOCAL + " = false;\n ";
};
ChangeDetectorJITGenerator.prototype._genOnCheck = function(r) {
var br = r.bindingRecord;
return "if (!throwOnChange) " + this._names.getDirectiveName(br.directiveRecord.directiveIndex) + ".ngDoCheck();";
};
ChangeDetectorJITGenerator.prototype._genOnInit = function(r) {
var br = r.bindingRecord;
return "if (!throwOnChange && " + this._names.getStateName() + " === " + this.changeDetectorStateVarName + ".NeverChecked) " + this._names.getDirectiveName(br.directiveRecord.directiveIndex) + ".ngOnInit();";
};
ChangeDetectorJITGenerator.prototype._genOnChange = function(r) {
var br = r.bindingRecord;
return "if (!throwOnChange && " + CHANGES_LOCAL + ") " + this._names.getDirectiveName(br.directiveRecord.directiveIndex) + ".ngOnChanges(" + CHANGES_LOCAL + ");";
};
ChangeDetectorJITGenerator.prototype._genNotifyOnPushDetectors = function(r) {
var br = r.bindingRecord;
if (!r.lastInDirective || br.isDefaultChangeDetection())
return "";
var retVal = "\n if(" + IS_CHANGED_LOCAL + ") {\n " + this._names.getDetectorName(br.directiveRecord.directiveIndex) + ".markAsCheckOnce();\n }\n ";
return retVal;
};
return ChangeDetectorJITGenerator;
})();
exports.ChangeDetectorJITGenerator = ChangeDetectorJITGenerator;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/view", ["angular2/src/facade/collection", "angular2/src/core/change_detection/change_detection", "angular2/src/core/change_detection/interfaces", "angular2/src/core/linker/element", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/core/render/api", "angular2/src/core/linker/view_ref", "angular2/src/core/pipes/pipes", "angular2/src/core/render/util", "angular2/src/core/change_detection/interfaces", "angular2/src/core/pipes/pipes", "angular2/src/core/linker/view_type"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var collection_1 = require("angular2/src/facade/collection");
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
var interfaces_1 = require("angular2/src/core/change_detection/interfaces");
var element_1 = require("angular2/src/core/linker/element");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var api_1 = require("angular2/src/core/render/api");
var view_ref_1 = require("angular2/src/core/linker/view_ref");
var pipes_1 = require("angular2/src/core/pipes/pipes");
var util_1 = require("angular2/src/core/render/util");
var interfaces_2 = require("angular2/src/core/change_detection/interfaces");
exports.DebugContext = interfaces_2.DebugContext;
var pipes_2 = require("angular2/src/core/pipes/pipes");
var view_type_1 = require("angular2/src/core/linker/view_type");
var REFLECT_PREFIX = 'ng-reflect-';
var EMPTY_CONTEXT = lang_1.CONST_EXPR(new Object());
var AppView = (function() {
function AppView(proto, renderer, viewManager, projectableNodes, containerAppElement, imperativelyCreatedProviders, rootInjector, changeDetector) {
this.proto = proto;
this.renderer = renderer;
this.viewManager = viewManager;
this.projectableNodes = projectableNodes;
this.containerAppElement = containerAppElement;
this.changeDetector = changeDetector;
this.context = null;
this.destroyed = false;
this.ref = new view_ref_1.ViewRef_(this);
var injectorWithHostBoundary = element_1.AppElement.getViewParentInjector(this.proto.type, containerAppElement, imperativelyCreatedProviders, rootInjector);
this.parentInjector = injectorWithHostBoundary.injector;
this.hostInjectorBoundary = injectorWithHostBoundary.hostInjectorBoundary;
var pipes;
var context;
switch (proto.type) {
case view_type_1.ViewType.COMPONENT:
pipes = new pipes_2.Pipes(proto.protoPipes, containerAppElement.getInjector());
context = containerAppElement.getComponent();
break;
case view_type_1.ViewType.EMBEDDED:
pipes = containerAppElement.parentView.pipes;
context = containerAppElement.parentView.context;
break;
case view_type_1.ViewType.HOST:
pipes = null;
context = EMPTY_CONTEXT;
break;
}
this.pipes = pipes;
this.context = context;
}
AppView.prototype.init = function(rootNodesOrAppElements, allNodes, disposables, appElements) {
this.rootNodesOrAppElements = rootNodesOrAppElements;
this.allNodes = allNodes;
this.disposables = disposables;
this.appElements = appElements;
var localsMap = new collection_1.Map();
collection_1.StringMapWrapper.forEach(this.proto.templateVariableBindings, function(templateName, _) {
localsMap.set(templateName, null);
});
for (var i = 0; i < appElements.length; i++) {
var appEl = appElements[i];
var providerTokens = [];
if (lang_1.isPresent(appEl.proto.protoInjector)) {
for (var j = 0; j < appEl.proto.protoInjector.numberOfProviders; j++) {
providerTokens.push(appEl.proto.protoInjector.getProviderAtIndex(j).key.token);
}
}
collection_1.StringMapWrapper.forEach(appEl.proto.directiveVariableBindings, function(directiveIndex, name) {
if (lang_1.isBlank(directiveIndex)) {
localsMap.set(name, appEl.nativeElement);
} else {
localsMap.set(name, appEl.getDirectiveAtIndex(directiveIndex));
}
});
this.renderer.setElementDebugInfo(appEl.nativeElement, new api_1.RenderDebugInfo(appEl.getInjector(), appEl.getComponent(), providerTokens, localsMap));
}
var parentLocals = null;
if (this.proto.type !== view_type_1.ViewType.COMPONENT) {
parentLocals = lang_1.isPresent(this.containerAppElement) ? this.containerAppElement.parentView.locals : null;
}
if (this.proto.type === view_type_1.ViewType.COMPONENT) {
this.containerAppElement.attachComponentView(this);
this.containerAppElement.parentView.changeDetector.addViewChild(this.changeDetector);
}
this.locals = new change_detection_1.Locals(parentLocals, localsMap);
this.changeDetector.hydrate(this.context, this.locals, this, this.pipes);
this.viewManager.onViewCreated(this);
};
AppView.prototype.destroy = function() {
if (this.destroyed) {
throw new exceptions_1.BaseException('This view has already been destroyed!');
}
this.changeDetector.destroyRecursive();
};
AppView.prototype.notifyOnDestroy = function() {
this.destroyed = true;
var hostElement = this.proto.type === view_type_1.ViewType.COMPONENT ? this.containerAppElement.nativeElement : null;
this.renderer.destroyView(hostElement, this.allNodes);
for (var i = 0; i < this.disposables.length; i++) {
this.disposables[i]();
}
this.viewManager.onViewDestroyed(this);
};
Object.defineProperty(AppView.prototype, "changeDetectorRef", {
get: function() {
return this.changeDetector.ref;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AppView.prototype, "flatRootNodes", {
get: function() {
return flattenNestedViewRenderNodes(this.rootNodesOrAppElements);
},
enumerable: true,
configurable: true
});
AppView.prototype.hasLocal = function(contextName) {
return collection_1.StringMapWrapper.contains(this.proto.templateVariableBindings, contextName);
};
AppView.prototype.setLocal = function(contextName, value) {
if (!this.hasLocal(contextName)) {
return ;
}
var templateName = this.proto.templateVariableBindings[contextName];
this.locals.set(templateName, value);
};
AppView.prototype.notifyOnBinding = function(b, currentValue) {
if (b.isTextNode()) {
this.renderer.setText(this.allNodes[b.elementIndex], currentValue);
} else {
var nativeElement = this.appElements[b.elementIndex].nativeElement;
if (b.isElementProperty()) {
this.renderer.setElementProperty(nativeElement, b.name, currentValue);
} else if (b.isElementAttribute()) {
this.renderer.setElementAttribute(nativeElement, b.name, lang_1.isPresent(currentValue) ? "" + currentValue : null);
} else if (b.isElementClass()) {
this.renderer.setElementClass(nativeElement, b.name, currentValue);
} else if (b.isElementStyle()) {
var unit = lang_1.isPresent(b.unit) ? b.unit : '';
this.renderer.setElementStyle(nativeElement, b.name, lang_1.isPresent(currentValue) ? "" + currentValue + unit : null);
} else {
throw new exceptions_1.BaseException('Unsupported directive record');
}
}
};
AppView.prototype.logBindingUpdate = function(b, value) {
if (b.isDirective() || b.isElementProperty()) {
var nativeElement = this.appElements[b.elementIndex].nativeElement;
this.renderer.setBindingDebugInfo(nativeElement, "" + REFLECT_PREFIX + util_1.camelCaseToDashCase(b.name), "" + value);
}
};
AppView.prototype.notifyAfterContentChecked = function() {
var count = this.appElements.length;
for (var i = count - 1; i >= 0; i--) {
this.appElements[i].ngAfterContentChecked();
}
};
AppView.prototype.notifyAfterViewChecked = function() {
var count = this.appElements.length;
for (var i = count - 1; i >= 0; i--) {
this.appElements[i].ngAfterViewChecked();
}
};
AppView.prototype.getDebugContext = function(appElement, elementIndex, directiveIndex) {
try {
if (lang_1.isBlank(appElement) && elementIndex < this.appElements.length) {
appElement = this.appElements[elementIndex];
}
var container = this.containerAppElement;
var element = lang_1.isPresent(appElement) ? appElement.nativeElement : null;
var componentElement = lang_1.isPresent(container) ? container.nativeElement : null;
var directive = lang_1.isPresent(directiveIndex) ? appElement.getDirectiveAtIndex(directiveIndex) : null;
var injector = lang_1.isPresent(appElement) ? appElement.getInjector() : null;
return new interfaces_1.DebugContext(element, componentElement, directive, this.context, _localsToStringMap(this.locals), injector);
} catch (e) {
return null;
}
};
AppView.prototype.getDirectiveFor = function(directive) {
return this.appElements[directive.elementIndex].getDirectiveAtIndex(directive.directiveIndex);
};
AppView.prototype.getDetectorFor = function(directive) {
var componentView = this.appElements[directive.elementIndex].componentView;
return lang_1.isPresent(componentView) ? componentView.changeDetector : null;
};
AppView.prototype.triggerEventHandlers = function(eventName, eventObj, boundElementIndex) {
return this.changeDetector.handleEvent(eventName, boundElementIndex, eventObj);
};
return AppView;
})();
exports.AppView = AppView;
function _localsToStringMap(locals) {
var res = {};
var c = locals;
while (lang_1.isPresent(c)) {
res = collection_1.StringMapWrapper.merge(res, collection_1.MapWrapper.toStringMap(c.current));
c = c.parent;
}
return res;
}
var AppProtoView = (function() {
function AppProtoView(type, protoPipes, templateVariableBindings) {
this.type = type;
this.protoPipes = protoPipes;
this.templateVariableBindings = templateVariableBindings;
}
AppProtoView.create = function(metadataCache, type, pipes, templateVariableBindings) {
var protoPipes = null;
if (lang_1.isPresent(pipes) && pipes.length > 0) {
var boundPipes = collection_1.ListWrapper.createFixedSize(pipes.length);
for (var i = 0; i < pipes.length; i++) {
boundPipes[i] = metadataCache.getResolvedPipeMetadata(pipes[i]);
}
protoPipes = pipes_1.ProtoPipes.fromProviders(boundPipes);
}
return new AppProtoView(type, protoPipes, templateVariableBindings);
};
return AppProtoView;
})();
exports.AppProtoView = AppProtoView;
var HostViewFactory = (function() {
function HostViewFactory(selector, viewFactory) {
this.selector = selector;
this.viewFactory = viewFactory;
}
HostViewFactory = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [String, Function])], HostViewFactory);
return HostViewFactory;
})();
exports.HostViewFactory = HostViewFactory;
function flattenNestedViewRenderNodes(nodes) {
return _flattenNestedViewRenderNodes(nodes, []);
}
exports.flattenNestedViewRenderNodes = flattenNestedViewRenderNodes;
function _flattenNestedViewRenderNodes(nodes, renderNodes) {
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
if (node instanceof element_1.AppElement) {
var appEl = node;
renderNodes.push(appEl.nativeElement);
if (lang_1.isPresent(appEl.nestedViews)) {
for (var k = 0; k < appEl.nestedViews.length; k++) {
_flattenNestedViewRenderNodes(appEl.nestedViews[k].rootNodesOrAppElements, renderNodes);
}
}
} else {
renderNodes.push(node);
}
}
return renderNodes;
}
function findLastRenderNode(node) {
var lastNode;
if (node instanceof element_1.AppElement) {
var appEl = node;
lastNode = appEl.nativeElement;
if (lang_1.isPresent(appEl.nestedViews)) {
for (var i = appEl.nestedViews.length - 1; i >= 0; i--) {
var nestedView = appEl.nestedViews[i];
if (nestedView.rootNodesOrAppElements.length > 0) {
lastNode = findLastRenderNode(nestedView.rootNodesOrAppElements[nestedView.rootNodesOrAppElements.length - 1]);
}
}
}
} else {
lastNode = node;
}
return lastNode;
}
exports.findLastRenderNode = findLastRenderNode;
function checkSlotCount(componentName, expectedSlotCount, projectableNodes) {
var givenSlotCount = lang_1.isPresent(projectableNodes) ? projectableNodes.length : 0;
if (givenSlotCount < expectedSlotCount) {
throw new exceptions_1.BaseException(("The component " + componentName + " has " + expectedSlotCount + " <ng-content> elements,") + (" but only " + givenSlotCount + " slots were provided."));
}
}
exports.checkSlotCount = checkSlotCount;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/application_common_providers", ["angular2/src/facade/lang", "angular2/src/core/di", "angular2/src/core/application_tokens", "angular2/src/core/change_detection/change_detection", "angular2/src/core/linker/resolved_metadata_cache", "angular2/src/core/linker/view_manager", "angular2/src/core/linker/view_manager", "angular2/src/core/linker/view_resolver", "angular2/src/core/linker/directive_resolver", "angular2/src/core/linker/pipe_resolver", "angular2/src/core/linker/compiler", "angular2/src/core/linker/compiler", "angular2/src/core/linker/dynamic_component_loader", "angular2/src/core/linker/dynamic_component_loader"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var di_1 = require("angular2/src/core/di");
var application_tokens_1 = require("angular2/src/core/application_tokens");
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
var resolved_metadata_cache_1 = require("angular2/src/core/linker/resolved_metadata_cache");
var view_manager_1 = require("angular2/src/core/linker/view_manager");
var view_manager_2 = require("angular2/src/core/linker/view_manager");
var view_resolver_1 = require("angular2/src/core/linker/view_resolver");
var directive_resolver_1 = require("angular2/src/core/linker/directive_resolver");
var pipe_resolver_1 = require("angular2/src/core/linker/pipe_resolver");
var compiler_1 = require("angular2/src/core/linker/compiler");
var compiler_2 = require("angular2/src/core/linker/compiler");
var dynamic_component_loader_1 = require("angular2/src/core/linker/dynamic_component_loader");
var dynamic_component_loader_2 = require("angular2/src/core/linker/dynamic_component_loader");
exports.APPLICATION_COMMON_PROVIDERS = lang_1.CONST_EXPR([new di_1.Provider(compiler_1.Compiler, {useClass: compiler_2.Compiler_}), application_tokens_1.APP_ID_RANDOM_PROVIDER, resolved_metadata_cache_1.ResolvedMetadataCache, new di_1.Provider(view_manager_1.AppViewManager, {useClass: view_manager_2.AppViewManager_}), view_resolver_1.ViewResolver, new di_1.Provider(change_detection_1.IterableDiffers, {useValue: change_detection_1.defaultIterableDiffers}), new di_1.Provider(change_detection_1.KeyValueDiffers, {useValue: change_detection_1.defaultKeyValueDiffers}), directive_resolver_1.DirectiveResolver, pipe_resolver_1.PipeResolver, new di_1.Provider(dynamic_component_loader_1.DynamicComponentLoader, {useClass: dynamic_component_loader_2.DynamicComponentLoader_})]);
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/di/provider", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/reflection/reflection", "angular2/src/core/di/key", "angular2/src/core/di/metadata", "angular2/src/core/di/exceptions", "angular2/src/core/di/forward_ref"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var key_1 = require("angular2/src/core/di/key");
var metadata_1 = require("angular2/src/core/di/metadata");
var exceptions_2 = require("angular2/src/core/di/exceptions");
var forward_ref_1 = require("angular2/src/core/di/forward_ref");
var Dependency = (function() {
function Dependency(key, optional, lowerBoundVisibility, upperBoundVisibility, properties) {
this.key = key;
this.optional = optional;
this.lowerBoundVisibility = lowerBoundVisibility;
this.upperBoundVisibility = upperBoundVisibility;
this.properties = properties;
}
Dependency.fromKey = function(key) {
return new Dependency(key, false, null, null, []);
};
return Dependency;
})();
exports.Dependency = Dependency;
var _EMPTY_LIST = lang_1.CONST_EXPR([]);
var Provider = (function() {
function Provider(token, _a) {
var useClass = _a.useClass,
useValue = _a.useValue,
useExisting = _a.useExisting,
useFactory = _a.useFactory,
deps = _a.deps,
multi = _a.multi;
this.token = token;
this.useClass = useClass;
this.useValue = useValue;
this.useExisting = useExisting;
this.useFactory = useFactory;
this.dependencies = deps;
this._multi = multi;
}
Object.defineProperty(Provider.prototype, "multi", {
get: function() {
return lang_1.normalizeBool(this._multi);
},
enumerable: true,
configurable: true
});
Provider = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object, Object])], Provider);
return Provider;
})();
exports.Provider = Provider;
var Binding = (function(_super) {
__extends(Binding, _super);
function Binding(token, _a) {
var toClass = _a.toClass,
toValue = _a.toValue,
toAlias = _a.toAlias,
toFactory = _a.toFactory,
deps = _a.deps,
multi = _a.multi;
_super.call(this, token, {
useClass: toClass,
useValue: toValue,
useExisting: toAlias,
useFactory: toFactory,
deps: deps,
multi: multi
});
}
Object.defineProperty(Binding.prototype, "toClass", {
get: function() {
return this.useClass;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Binding.prototype, "toAlias", {
get: function() {
return this.useExisting;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Binding.prototype, "toFactory", {
get: function() {
return this.useFactory;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Binding.prototype, "toValue", {
get: function() {
return this.useValue;
},
enumerable: true,
configurable: true
});
Binding = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object, Object])], Binding);
return Binding;
})(Provider);
exports.Binding = Binding;
var ResolvedProvider_ = (function() {
function ResolvedProvider_(key, resolvedFactories, multiProvider) {
this.key = key;
this.resolvedFactories = resolvedFactories;
this.multiProvider = multiProvider;
}
Object.defineProperty(ResolvedProvider_.prototype, "resolvedFactory", {
get: function() {
return this.resolvedFactories[0];
},
enumerable: true,
configurable: true
});
return ResolvedProvider_;
})();
exports.ResolvedProvider_ = ResolvedProvider_;
var ResolvedFactory = (function() {
function ResolvedFactory(factory, dependencies) {
this.factory = factory;
this.dependencies = dependencies;
}
return ResolvedFactory;
})();
exports.ResolvedFactory = ResolvedFactory;
function bind(token) {
return new ProviderBuilder(token);
}
exports.bind = bind;
function provide(token, _a) {
var useClass = _a.useClass,
useValue = _a.useValue,
useExisting = _a.useExisting,
useFactory = _a.useFactory,
deps = _a.deps,
multi = _a.multi;
return new Provider(token, {
useClass: useClass,
useValue: useValue,
useExisting: useExisting,
useFactory: useFactory,
deps: deps,
multi: multi
});
}
exports.provide = provide;
var ProviderBuilder = (function() {
function ProviderBuilder(token) {
this.token = token;
}
ProviderBuilder.prototype.toClass = function(type) {
if (!lang_1.isType(type)) {
throw new exceptions_1.BaseException("Trying to create a class provider but \"" + lang_1.stringify(type) + "\" is not a class!");
}
return new Provider(this.token, {useClass: type});
};
ProviderBuilder.prototype.toValue = function(value) {
return new Provider(this.token, {useValue: value});
};
ProviderBuilder.prototype.toAlias = function(aliasToken) {
if (lang_1.isBlank(aliasToken)) {
throw new exceptions_1.BaseException("Can not alias " + lang_1.stringify(this.token) + " to a blank value!");
}
return new Provider(this.token, {useExisting: aliasToken});
};
ProviderBuilder.prototype.toFactory = function(factory, dependencies) {
if (!lang_1.isFunction(factory)) {
throw new exceptions_1.BaseException("Trying to create a factory provider but \"" + lang_1.stringify(factory) + "\" is not a function!");
}
return new Provider(this.token, {
useFactory: factory,
deps: dependencies
});
};
return ProviderBuilder;
})();
exports.ProviderBuilder = ProviderBuilder;
function resolveFactory(provider) {
var factoryFn;
var resolvedDeps;
if (lang_1.isPresent(provider.useClass)) {
var useClass = forward_ref_1.resolveForwardRef(provider.useClass);
factoryFn = reflection_1.reflector.factory(useClass);
resolvedDeps = _dependenciesFor(useClass);
} else if (lang_1.isPresent(provider.useExisting)) {
factoryFn = function(aliasInstance) {
return aliasInstance;
};
resolvedDeps = [Dependency.fromKey(key_1.Key.get(provider.useExisting))];
} else if (lang_1.isPresent(provider.useFactory)) {
factoryFn = provider.useFactory;
resolvedDeps = _constructDependencies(provider.useFactory, provider.dependencies);
} else {
factoryFn = function() {
return provider.useValue;
};
resolvedDeps = _EMPTY_LIST;
}
return new ResolvedFactory(factoryFn, resolvedDeps);
}
exports.resolveFactory = resolveFactory;
function resolveProvider(provider) {
return new ResolvedProvider_(key_1.Key.get(provider.token), [resolveFactory(provider)], provider.multi);
}
exports.resolveProvider = resolveProvider;
function resolveProviders(providers) {
var normalized = _normalizeProviders(providers, []);
var resolved = normalized.map(resolveProvider);
return collection_1.MapWrapper.values(mergeResolvedProviders(resolved, new Map()));
}
exports.resolveProviders = resolveProviders;
function mergeResolvedProviders(providers, normalizedProvidersMap) {
for (var i = 0; i < providers.length; i++) {
var provider = providers[i];
var existing = normalizedProvidersMap.get(provider.key.id);
if (lang_1.isPresent(existing)) {
if (provider.multiProvider !== existing.multiProvider) {
throw new exceptions_2.MixingMultiProvidersWithRegularProvidersError(existing, provider);
}
if (provider.multiProvider) {
for (var j = 0; j < provider.resolvedFactories.length; j++) {
existing.resolvedFactories.push(provider.resolvedFactories[j]);
}
} else {
normalizedProvidersMap.set(provider.key.id, provider);
}
} else {
var resolvedProvider;
if (provider.multiProvider) {
resolvedProvider = new ResolvedProvider_(provider.key, collection_1.ListWrapper.clone(provider.resolvedFactories), provider.multiProvider);
} else {
resolvedProvider = provider;
}
normalizedProvidersMap.set(provider.key.id, resolvedProvider);
}
}
return normalizedProvidersMap;
}
exports.mergeResolvedProviders = mergeResolvedProviders;
function _normalizeProviders(providers, res) {
providers.forEach(function(b) {
if (b instanceof lang_1.Type) {
res.push(provide(b, {useClass: b}));
} else if (b instanceof Provider) {
res.push(b);
} else if (b instanceof Array) {
_normalizeProviders(b, res);
} else if (b instanceof ProviderBuilder) {
throw new exceptions_2.InvalidProviderError(b.token);
} else {
throw new exceptions_2.InvalidProviderError(b);
}
});
return res;
}
function _constructDependencies(factoryFunction, dependencies) {
if (lang_1.isBlank(dependencies)) {
return _dependenciesFor(factoryFunction);
} else {
var params = dependencies.map(function(t) {
return [t];
});
return dependencies.map(function(t) {
return _extractToken(factoryFunction, t, params);
});
}
}
function _dependenciesFor(typeOrFunc) {
var params = reflection_1.reflector.parameters(typeOrFunc);
if (lang_1.isBlank(params))
return [];
if (params.some(lang_1.isBlank)) {
throw new exceptions_2.NoAnnotationError(typeOrFunc, params);
}
return params.map(function(p) {
return _extractToken(typeOrFunc, p, params);
});
}
function _extractToken(typeOrFunc, metadata, params) {
var depProps = [];
var token = null;
var optional = false;
if (!lang_1.isArray(metadata)) {
if (metadata instanceof metadata_1.InjectMetadata) {
return _createDependency(metadata.token, optional, null, null, depProps);
} else {
return _createDependency(metadata, optional, null, null, depProps);
}
}
var lowerBoundVisibility = null;
var upperBoundVisibility = null;
for (var i = 0; i < metadata.length; ++i) {
var paramMetadata = metadata[i];
if (paramMetadata instanceof lang_1.Type) {
token = paramMetadata;
} else if (paramMetadata instanceof metadata_1.InjectMetadata) {
token = paramMetadata.token;
} else if (paramMetadata instanceof metadata_1.OptionalMetadata) {
optional = true;
} else if (paramMetadata instanceof metadata_1.SelfMetadata) {
upperBoundVisibility = paramMetadata;
} else if (paramMetadata instanceof metadata_1.HostMetadata) {
upperBoundVisibility = paramMetadata;
} else if (paramMetadata instanceof metadata_1.SkipSelfMetadata) {
lowerBoundVisibility = paramMetadata;
} else if (paramMetadata instanceof metadata_1.DependencyMetadata) {
if (lang_1.isPresent(paramMetadata.token)) {
token = paramMetadata.token;
}
depProps.push(paramMetadata);
}
}
token = forward_ref_1.resolveForwardRef(token);
if (lang_1.isPresent(token)) {
return _createDependency(token, optional, lowerBoundVisibility, upperBoundVisibility, depProps);
} else {
throw new exceptions_2.NoAnnotationError(typeOrFunc, params);
}
}
function _createDependency(token, optional, lowerBoundVisibility, upperBoundVisibility, depProps) {
return new Dependency(key_1.Key.get(token), optional, lowerBoundVisibility, upperBoundVisibility, depProps);
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/animate/animation_builder", ["angular2/src/core/di", "angular2/src/animate/css_animation_builder", "angular2/src/animate/browser_details"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var css_animation_builder_1 = require("angular2/src/animate/css_animation_builder");
var browser_details_1 = require("angular2/src/animate/browser_details");
var AnimationBuilder = (function() {
function AnimationBuilder(browserDetails) {
this.browserDetails = browserDetails;
}
AnimationBuilder.prototype.css = function() {
return new css_animation_builder_1.CssAnimationBuilder(this.browserDetails);
};
AnimationBuilder = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [browser_details_1.BrowserDetails])], AnimationBuilder);
return AnimationBuilder;
})();
exports.AnimationBuilder = AnimationBuilder;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/dynamic_change_detector", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/change_detection/abstract_change_detector", "angular2/src/core/change_detection/change_detection_util", "angular2/src/core/change_detection/constants", "angular2/src/core/change_detection/proto_record", "angular2/src/core/reflection/reflection", "angular2/src/facade/async"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var abstract_change_detector_1 = require("angular2/src/core/change_detection/abstract_change_detector");
var change_detection_util_1 = require("angular2/src/core/change_detection/change_detection_util");
var constants_1 = require("angular2/src/core/change_detection/constants");
var proto_record_1 = require("angular2/src/core/change_detection/proto_record");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var async_1 = require("angular2/src/facade/async");
var DynamicChangeDetector = (function(_super) {
__extends(DynamicChangeDetector, _super);
function DynamicChangeDetector(id, numberOfPropertyProtoRecords, propertyBindingTargets, directiveIndices, strategy, _records, _eventBindings, _directiveRecords, _genConfig) {
_super.call(this, id, numberOfPropertyProtoRecords, propertyBindingTargets, directiveIndices, strategy);
this._records = _records;
this._eventBindings = _eventBindings;
this._directiveRecords = _directiveRecords;
this._genConfig = _genConfig;
var len = _records.length + 1;
this.values = collection_1.ListWrapper.createFixedSize(len);
this.localPipes = collection_1.ListWrapper.createFixedSize(len);
this.prevContexts = collection_1.ListWrapper.createFixedSize(len);
this.changes = collection_1.ListWrapper.createFixedSize(len);
this.dehydrateDirectives(false);
}
DynamicChangeDetector.prototype.handleEventInternal = function(eventName, elIndex, locals) {
var _this = this;
var preventDefault = false;
this._matchingEventBindings(eventName, elIndex).forEach(function(rec) {
var res = _this._processEventBinding(rec, locals);
if (res === false) {
preventDefault = true;
}
});
return preventDefault;
};
DynamicChangeDetector.prototype._processEventBinding = function(eb, locals) {
var values = collection_1.ListWrapper.createFixedSize(eb.records.length);
values[0] = this.values[0];
for (var protoIdx = 0; protoIdx < eb.records.length; ++protoIdx) {
var proto = eb.records[protoIdx];
if (proto.isSkipRecord()) {
protoIdx += this._computeSkipLength(protoIdx, proto, values);
} else {
if (proto.lastInBinding) {
this._markPathAsCheckOnce(proto);
}
var res = this._calculateCurrValue(proto, values, locals);
if (proto.lastInBinding) {
return res;
} else {
this._writeSelf(proto, res, values);
}
}
}
throw new exceptions_1.BaseException("Cannot be reached");
};
DynamicChangeDetector.prototype._computeSkipLength = function(protoIndex, proto, values) {
if (proto.mode === proto_record_1.RecordType.SkipRecords) {
return proto.fixedArgs[0] - protoIndex - 1;
}
if (proto.mode === proto_record_1.RecordType.SkipRecordsIf) {
var condition = this._readContext(proto, values);
return condition ? proto.fixedArgs[0] - protoIndex - 1 : 0;
}
if (proto.mode === proto_record_1.RecordType.SkipRecordsIfNot) {
var condition = this._readContext(proto, values);
return condition ? 0 : proto.fixedArgs[0] - protoIndex - 1;
}
throw new exceptions_1.BaseException("Cannot be reached");
};
DynamicChangeDetector.prototype._markPathAsCheckOnce = function(proto) {
if (!proto.bindingRecord.isDefaultChangeDetection()) {
var dir = proto.bindingRecord.directiveRecord;
this._getDetectorFor(dir.directiveIndex).markPathToRootAsCheckOnce();
}
};
DynamicChangeDetector.prototype._matchingEventBindings = function(eventName, elIndex) {
return this._eventBindings.filter(function(eb) {
return eb.eventName == eventName && eb.elIndex === elIndex;
});
};
DynamicChangeDetector.prototype.hydrateDirectives = function(dispatcher) {
var _this = this;
this.values[0] = this.context;
this.dispatcher = dispatcher;
this.outputSubscriptions = [];
for (var i = 0; i < this._directiveRecords.length; ++i) {
var r = this._directiveRecords[i];
if (lang_1.isPresent(r.outputs)) {
r.outputs.forEach(function(output) {
var eventHandler = _this._createEventHandler(r.directiveIndex.elementIndex, output[1]);
var directive = _this._getDirectiveFor(r.directiveIndex);
var getter = reflection_1.reflector.getter(output[0]);
_this.outputSubscriptions.push(async_1.ObservableWrapper.subscribe(getter(directive), eventHandler));
});
}
}
};
DynamicChangeDetector.prototype._createEventHandler = function(boundElementIndex, eventName) {
var _this = this;
return function(event) {
return _this.handleEvent(eventName, boundElementIndex, event);
};
};
DynamicChangeDetector.prototype.dehydrateDirectives = function(destroyPipes) {
if (destroyPipes) {
this._destroyPipes();
this._destroyDirectives();
}
this.values[0] = null;
collection_1.ListWrapper.fill(this.values, change_detection_util_1.ChangeDetectionUtil.uninitialized, 1);
collection_1.ListWrapper.fill(this.changes, false);
collection_1.ListWrapper.fill(this.localPipes, null);
collection_1.ListWrapper.fill(this.prevContexts, change_detection_util_1.ChangeDetectionUtil.uninitialized);
};
DynamicChangeDetector.prototype._destroyPipes = function() {
for (var i = 0; i < this.localPipes.length; ++i) {
if (lang_1.isPresent(this.localPipes[i])) {
change_detection_util_1.ChangeDetectionUtil.callPipeOnDestroy(this.localPipes[i]);
}
}
};
DynamicChangeDetector.prototype._destroyDirectives = function() {
for (var i = 0; i < this._directiveRecords.length; ++i) {
var record = this._directiveRecords[i];
if (record.callOnDestroy) {
this._getDirectiveFor(record.directiveIndex).ngOnDestroy();
}
}
};
DynamicChangeDetector.prototype.checkNoChanges = function() {
this.runDetectChanges(true);
};
DynamicChangeDetector.prototype.detectChangesInRecordsInternal = function(throwOnChange) {
var protos = this._records;
var changes = null;
var isChanged = false;
for (var protoIdx = 0; protoIdx < protos.length; ++protoIdx) {
var proto = protos[protoIdx];
var bindingRecord = proto.bindingRecord;
var directiveRecord = bindingRecord.directiveRecord;
if (this._firstInBinding(proto)) {
this.propertyBindingIndex = proto.propertyBindingIndex;
}
if (proto.isLifeCycleRecord()) {
if (proto.name === "DoCheck" && !throwOnChange) {
this._getDirectiveFor(directiveRecord.directiveIndex).ngDoCheck();
} else if (proto.name === "OnInit" && !throwOnChange && this.state == constants_1.ChangeDetectorState.NeverChecked) {
this._getDirectiveFor(directiveRecord.directiveIndex).ngOnInit();
} else if (proto.name === "OnChanges" && lang_1.isPresent(changes) && !throwOnChange) {
this._getDirectiveFor(directiveRecord.directiveIndex).ngOnChanges(changes);
}
} else if (proto.isSkipRecord()) {
protoIdx += this._computeSkipLength(protoIdx, proto, this.values);
} else {
var change = this._check(proto, throwOnChange, this.values, this.locals);
if (lang_1.isPresent(change)) {
this._updateDirectiveOrElement(change, bindingRecord);
isChanged = true;
changes = this._addChange(bindingRecord, change, changes);
}
}
if (proto.lastInDirective) {
changes = null;
if (isChanged && !bindingRecord.isDefaultChangeDetection()) {
this._getDetectorFor(directiveRecord.directiveIndex).markAsCheckOnce();
}
isChanged = false;
}
}
};
DynamicChangeDetector.prototype._firstInBinding = function(r) {
var prev = change_detection_util_1.ChangeDetectionUtil.protoByIndex(this._records, r.selfIndex - 1);
return lang_1.isBlank(prev) || prev.bindingRecord !== r.bindingRecord;
};
DynamicChangeDetector.prototype.afterContentLifecycleCallbacksInternal = function() {
var dirs = this._directiveRecords;
for (var i = dirs.length - 1; i >= 0; --i) {
var dir = dirs[i];
if (dir.callAfterContentInit && this.state == constants_1.ChangeDetectorState.NeverChecked) {
this._getDirectiveFor(dir.directiveIndex).ngAfterContentInit();
}
if (dir.callAfterContentChecked) {
this._getDirectiveFor(dir.directiveIndex).ngAfterContentChecked();
}
}
};
DynamicChangeDetector.prototype.afterViewLifecycleCallbacksInternal = function() {
var dirs = this._directiveRecords;
for (var i = dirs.length - 1; i >= 0; --i) {
var dir = dirs[i];
if (dir.callAfterViewInit && this.state == constants_1.ChangeDetectorState.NeverChecked) {
this._getDirectiveFor(dir.directiveIndex).ngAfterViewInit();
}
if (dir.callAfterViewChecked) {
this._getDirectiveFor(dir.directiveIndex).ngAfterViewChecked();
}
}
};
DynamicChangeDetector.prototype._updateDirectiveOrElement = function(change, bindingRecord) {
if (lang_1.isBlank(bindingRecord.directiveRecord)) {
_super.prototype.notifyDispatcher.call(this, change.currentValue);
} else {
var directiveIndex = bindingRecord.directiveRecord.directiveIndex;
bindingRecord.setter(this._getDirectiveFor(directiveIndex), change.currentValue);
}
if (this._genConfig.logBindingUpdate) {
_super.prototype.logBindingUpdate.call(this, change.currentValue);
}
};
DynamicChangeDetector.prototype._addChange = function(bindingRecord, change, changes) {
if (bindingRecord.callOnChanges()) {
return _super.prototype.addChange.call(this, changes, change.previousValue, change.currentValue);
} else {
return changes;
}
};
DynamicChangeDetector.prototype._getDirectiveFor = function(directiveIndex) {
return this.dispatcher.getDirectiveFor(directiveIndex);
};
DynamicChangeDetector.prototype._getDetectorFor = function(directiveIndex) {
return this.dispatcher.getDetectorFor(directiveIndex);
};
DynamicChangeDetector.prototype._check = function(proto, throwOnChange, values, locals) {
if (proto.isPipeRecord()) {
return this._pipeCheck(proto, throwOnChange, values);
} else {
return this._referenceCheck(proto, throwOnChange, values, locals);
}
};
DynamicChangeDetector.prototype._referenceCheck = function(proto, throwOnChange, values, locals) {
if (this._pureFuncAndArgsDidNotChange(proto)) {
this._setChanged(proto, false);
return null;
}
var currValue = this._calculateCurrValue(proto, values, locals);
if (proto.shouldBeChecked()) {
var prevValue = this._readSelf(proto, values);
var detectedChange = throwOnChange ? !change_detection_util_1.ChangeDetectionUtil.devModeEqual(prevValue, currValue) : change_detection_util_1.ChangeDetectionUtil.looseNotIdentical(prevValue, currValue);
if (detectedChange) {
if (proto.lastInBinding) {
var change = change_detection_util_1.ChangeDetectionUtil.simpleChange(prevValue, currValue);
if (throwOnChange)
this.throwOnChangeError(prevValue, currValue);
this._writeSelf(proto, currValue, values);
this._setChanged(proto, true);
return change;
} else {
this._writeSelf(proto, currValue, values);
this._setChanged(proto, true);
return null;
}
} else {
this._setChanged(proto, false);
return null;
}
} else {
this._writeSelf(proto, currValue, values);
this._setChanged(proto, true);
return null;
}
};
DynamicChangeDetector.prototype._calculateCurrValue = function(proto, values, locals) {
switch (proto.mode) {
case proto_record_1.RecordType.Self:
return this._readContext(proto, values);
case proto_record_1.RecordType.Const:
return proto.funcOrValue;
case proto_record_1.RecordType.PropertyRead:
var context = this._readContext(proto, values);
return proto.funcOrValue(context);
case proto_record_1.RecordType.SafeProperty:
var context = this._readContext(proto, values);
return lang_1.isBlank(context) ? null : proto.funcOrValue(context);
case proto_record_1.RecordType.PropertyWrite:
var context = this._readContext(proto, values);
var value = this._readArgs(proto, values)[0];
proto.funcOrValue(context, value);
return value;
case proto_record_1.RecordType.KeyedWrite:
var context = this._readContext(proto, values);
var key = this._readArgs(proto, values)[0];
var value = this._readArgs(proto, values)[1];
context[key] = value;
return value;
case proto_record_1.RecordType.Local:
return locals.get(proto.name);
case proto_record_1.RecordType.InvokeMethod:
var context = this._readContext(proto, values);
var args = this._readArgs(proto, values);
return proto.funcOrValue(context, args);
case proto_record_1.RecordType.SafeMethodInvoke:
var context = this._readContext(proto, values);
if (lang_1.isBlank(context)) {
return null;
}
var args = this._readArgs(proto, values);
return proto.funcOrValue(context, args);
case proto_record_1.RecordType.KeyedRead:
var arg = this._readArgs(proto, values)[0];
return this._readContext(proto, values)[arg];
case proto_record_1.RecordType.Chain:
var args = this._readArgs(proto, values);
return args[args.length - 1];
case proto_record_1.RecordType.InvokeClosure:
return lang_1.FunctionWrapper.apply(this._readContext(proto, values), this._readArgs(proto, values));
case proto_record_1.RecordType.Interpolate:
case proto_record_1.RecordType.PrimitiveOp:
case proto_record_1.RecordType.CollectionLiteral:
return lang_1.FunctionWrapper.apply(proto.funcOrValue, this._readArgs(proto, values));
default:
throw new exceptions_1.BaseException("Unknown operation " + proto.mode);
}
};
DynamicChangeDetector.prototype._pipeCheck = function(proto, throwOnChange, values) {
var context = this._readContext(proto, values);
var selectedPipe = this._pipeFor(proto, context);
if (!selectedPipe.pure || this._argsOrContextChanged(proto)) {
var args = this._readArgs(proto, values);
var currValue = selectedPipe.pipe.transform(context, args);
if (proto.shouldBeChecked()) {
var prevValue = this._readSelf(proto, values);
var detectedChange = throwOnChange ? !change_detection_util_1.ChangeDetectionUtil.devModeEqual(prevValue, currValue) : change_detection_util_1.ChangeDetectionUtil.looseNotIdentical(prevValue, currValue);
if (detectedChange) {
currValue = change_detection_util_1.ChangeDetectionUtil.unwrapValue(currValue);
if (proto.lastInBinding) {
var change = change_detection_util_1.ChangeDetectionUtil.simpleChange(prevValue, currValue);
if (throwOnChange)
this.throwOnChangeError(prevValue, currValue);
this._writeSelf(proto, currValue, values);
this._setChanged(proto, true);
return change;
} else {
this._writeSelf(proto, currValue, values);
this._setChanged(proto, true);
return null;
}
} else {
this._setChanged(proto, false);
return null;
}
} else {
this._writeSelf(proto, currValue, values);
this._setChanged(proto, true);
return null;
}
}
};
DynamicChangeDetector.prototype._pipeFor = function(proto, context) {
var storedPipe = this._readPipe(proto);
if (lang_1.isPresent(storedPipe))
return storedPipe;
var pipe = this.pipes.get(proto.name);
this._writePipe(proto, pipe);
return pipe;
};
DynamicChangeDetector.prototype._readContext = function(proto, values) {
if (proto.contextIndex == -1) {
return this._getDirectiveFor(proto.directiveIndex);
}
return values[proto.contextIndex];
};
DynamicChangeDetector.prototype._readSelf = function(proto, values) {
return values[proto.selfIndex];
};
DynamicChangeDetector.prototype._writeSelf = function(proto, value, values) {
values[proto.selfIndex] = value;
};
DynamicChangeDetector.prototype._readPipe = function(proto) {
return this.localPipes[proto.selfIndex];
};
DynamicChangeDetector.prototype._writePipe = function(proto, value) {
this.localPipes[proto.selfIndex] = value;
};
DynamicChangeDetector.prototype._setChanged = function(proto, value) {
if (proto.argumentToPureFunction)
this.changes[proto.selfIndex] = value;
};
DynamicChangeDetector.prototype._pureFuncAndArgsDidNotChange = function(proto) {
return proto.isPureFunction() && !this._argsChanged(proto);
};
DynamicChangeDetector.prototype._argsChanged = function(proto) {
var args = proto.args;
for (var i = 0; i < args.length; ++i) {
if (this.changes[args[i]]) {
return true;
}
}
return false;
};
DynamicChangeDetector.prototype._argsOrContextChanged = function(proto) {
return this._argsChanged(proto) || this.changes[proto.contextIndex];
};
DynamicChangeDetector.prototype._readArgs = function(proto, values) {
var res = collection_1.ListWrapper.createFixedSize(proto.args.length);
var args = proto.args;
for (var i = 0; i < args.length; ++i) {
res[i] = values[args[i]];
}
return res;
};
return DynamicChangeDetector;
})(abstract_change_detector_1.AbstractChangeDetector);
exports.DynamicChangeDetector = DynamicChangeDetector;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/jit_proto_change_detector", ["angular2/src/core/change_detection/change_detection_jit_generator"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var change_detection_jit_generator_1 = require("angular2/src/core/change_detection/change_detection_jit_generator");
var JitProtoChangeDetector = (function() {
function JitProtoChangeDetector(definition) {
this.definition = definition;
this._factory = this._createFactory(definition);
}
JitProtoChangeDetector.isSupported = function() {
return true;
};
JitProtoChangeDetector.prototype.instantiate = function() {
return this._factory();
};
JitProtoChangeDetector.prototype._createFactory = function(definition) {
return new change_detection_jit_generator_1.ChangeDetectorJITGenerator(definition, 'util', 'AbstractChangeDetector', 'ChangeDetectorStatus').generate();
};
return JitProtoChangeDetector;
})();
exports.JitProtoChangeDetector = JitProtoChangeDetector;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/compiler", ["angular2/src/core/di", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/async", "angular2/src/core/reflection/reflection", "angular2/src/core/linker/view", "angular2/src/core/linker/view_ref"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var async_1 = require("angular2/src/facade/async");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var view_1 = require("angular2/src/core/linker/view");
var view_ref_1 = require("angular2/src/core/linker/view_ref");
var Compiler = (function() {
function Compiler() {}
return Compiler;
})();
exports.Compiler = Compiler;
function isHostViewFactory(type) {
return type instanceof view_1.HostViewFactory;
}
var Compiler_ = (function(_super) {
__extends(Compiler_, _super);
function Compiler_() {
_super.apply(this, arguments);
}
Compiler_.prototype.compileInHost = function(componentType) {
var metadatas = reflection_1.reflector.annotations(componentType);
var hostViewFactory = metadatas.find(isHostViewFactory);
if (lang_1.isBlank(hostViewFactory)) {
throw new exceptions_1.BaseException("No precompiled component " + lang_1.stringify(componentType) + " found");
}
return async_1.PromiseWrapper.resolve(new view_ref_1.HostViewFactoryRef_(hostViewFactory));
};
Compiler_.prototype.clearCache = function() {};
Compiler_ = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], Compiler_);
return Compiler_;
})(Compiler);
exports.Compiler_ = Compiler_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/di/injector", ["angular2/src/facade/collection", "angular2/src/core/di/provider", "angular2/src/core/di/exceptions", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/core/di/key", "angular2/src/core/di/metadata"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var collection_1 = require("angular2/src/facade/collection");
var provider_1 = require("angular2/src/core/di/provider");
var exceptions_1 = require("angular2/src/core/di/exceptions");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_2 = require("angular2/src/facade/exceptions");
var key_1 = require("angular2/src/core/di/key");
var metadata_1 = require("angular2/src/core/di/metadata");
var _MAX_CONSTRUCTION_COUNTER = 10;
exports.UNDEFINED = lang_1.CONST_EXPR(new Object());
(function(Visibility) {
Visibility[Visibility["Public"] = 0] = "Public";
Visibility[Visibility["Private"] = 1] = "Private";
Visibility[Visibility["PublicAndPrivate"] = 2] = "PublicAndPrivate";
})(exports.Visibility || (exports.Visibility = {}));
var Visibility = exports.Visibility;
function canSee(src, dst) {
return (src === dst) || (dst === Visibility.PublicAndPrivate || src === Visibility.PublicAndPrivate);
}
var ProtoInjectorInlineStrategy = (function() {
function ProtoInjectorInlineStrategy(protoEI, bwv) {
this.provider0 = null;
this.provider1 = null;
this.provider2 = null;
this.provider3 = null;
this.provider4 = null;
this.provider5 = null;
this.provider6 = null;
this.provider7 = null;
this.provider8 = null;
this.provider9 = null;
this.keyId0 = null;
this.keyId1 = null;
this.keyId2 = null;
this.keyId3 = null;
this.keyId4 = null;
this.keyId5 = null;
this.keyId6 = null;
this.keyId7 = null;
this.keyId8 = null;
this.keyId9 = null;
this.visibility0 = null;
this.visibility1 = null;
this.visibility2 = null;
this.visibility3 = null;
this.visibility4 = null;
this.visibility5 = null;
this.visibility6 = null;
this.visibility7 = null;
this.visibility8 = null;
this.visibility9 = null;
var length = bwv.length;
if (length > 0) {
this.provider0 = bwv[0].provider;
this.keyId0 = bwv[0].getKeyId();
this.visibility0 = bwv[0].visibility;
}
if (length > 1) {
this.provider1 = bwv[1].provider;
this.keyId1 = bwv[1].getKeyId();
this.visibility1 = bwv[1].visibility;
}
if (length > 2) {
this.provider2 = bwv[2].provider;
this.keyId2 = bwv[2].getKeyId();
this.visibility2 = bwv[2].visibility;
}
if (length > 3) {
this.provider3 = bwv[3].provider;
this.keyId3 = bwv[3].getKeyId();
this.visibility3 = bwv[3].visibility;
}
if (length > 4) {
this.provider4 = bwv[4].provider;
this.keyId4 = bwv[4].getKeyId();
this.visibility4 = bwv[4].visibility;
}
if (length > 5) {
this.provider5 = bwv[5].provider;
this.keyId5 = bwv[5].getKeyId();
this.visibility5 = bwv[5].visibility;
}
if (length > 6) {
this.provider6 = bwv[6].provider;
this.keyId6 = bwv[6].getKeyId();
this.visibility6 = bwv[6].visibility;
}
if (length > 7) {
this.provider7 = bwv[7].provider;
this.keyId7 = bwv[7].getKeyId();
this.visibility7 = bwv[7].visibility;
}
if (length > 8) {
this.provider8 = bwv[8].provider;
this.keyId8 = bwv[8].getKeyId();
this.visibility8 = bwv[8].visibility;
}
if (length > 9) {
this.provider9 = bwv[9].provider;
this.keyId9 = bwv[9].getKeyId();
this.visibility9 = bwv[9].visibility;
}
}
ProtoInjectorInlineStrategy.prototype.getProviderAtIndex = function(index) {
if (index == 0)
return this.provider0;
if (index == 1)
return this.provider1;
if (index == 2)
return this.provider2;
if (index == 3)
return this.provider3;
if (index == 4)
return this.provider4;
if (index == 5)
return this.provider5;
if (index == 6)
return this.provider6;
if (index == 7)
return this.provider7;
if (index == 8)
return this.provider8;
if (index == 9)
return this.provider9;
throw new exceptions_1.OutOfBoundsError(index);
};
ProtoInjectorInlineStrategy.prototype.createInjectorStrategy = function(injector) {
return new InjectorInlineStrategy(injector, this);
};
return ProtoInjectorInlineStrategy;
})();
exports.ProtoInjectorInlineStrategy = ProtoInjectorInlineStrategy;
var ProtoInjectorDynamicStrategy = (function() {
function ProtoInjectorDynamicStrategy(protoInj, bwv) {
var len = bwv.length;
this.providers = collection_1.ListWrapper.createFixedSize(len);
this.keyIds = collection_1.ListWrapper.createFixedSize(len);
this.visibilities = collection_1.ListWrapper.createFixedSize(len);
for (var i = 0; i < len; i++) {
this.providers[i] = bwv[i].provider;
this.keyIds[i] = bwv[i].getKeyId();
this.visibilities[i] = bwv[i].visibility;
}
}
ProtoInjectorDynamicStrategy.prototype.getProviderAtIndex = function(index) {
if (index < 0 || index >= this.providers.length) {
throw new exceptions_1.OutOfBoundsError(index);
}
return this.providers[index];
};
ProtoInjectorDynamicStrategy.prototype.createInjectorStrategy = function(ei) {
return new InjectorDynamicStrategy(this, ei);
};
return ProtoInjectorDynamicStrategy;
})();
exports.ProtoInjectorDynamicStrategy = ProtoInjectorDynamicStrategy;
var ProtoInjector = (function() {
function ProtoInjector(bwv) {
this.numberOfProviders = bwv.length;
this._strategy = bwv.length > _MAX_CONSTRUCTION_COUNTER ? new ProtoInjectorDynamicStrategy(this, bwv) : new ProtoInjectorInlineStrategy(this, bwv);
}
ProtoInjector.fromResolvedProviders = function(providers) {
var bd = providers.map(function(b) {
return new ProviderWithVisibility(b, Visibility.Public);
});
return new ProtoInjector(bd);
};
ProtoInjector.prototype.getProviderAtIndex = function(index) {
return this._strategy.getProviderAtIndex(index);
};
return ProtoInjector;
})();
exports.ProtoInjector = ProtoInjector;
var InjectorInlineStrategy = (function() {
function InjectorInlineStrategy(injector, protoStrategy) {
this.injector = injector;
this.protoStrategy = protoStrategy;
this.obj0 = exports.UNDEFINED;
this.obj1 = exports.UNDEFINED;
this.obj2 = exports.UNDEFINED;
this.obj3 = exports.UNDEFINED;
this.obj4 = exports.UNDEFINED;
this.obj5 = exports.UNDEFINED;
this.obj6 = exports.UNDEFINED;
this.obj7 = exports.UNDEFINED;
this.obj8 = exports.UNDEFINED;
this.obj9 = exports.UNDEFINED;
}
InjectorInlineStrategy.prototype.resetConstructionCounter = function() {
this.injector._constructionCounter = 0;
};
InjectorInlineStrategy.prototype.instantiateProvider = function(provider, visibility) {
return this.injector._new(provider, visibility);
};
InjectorInlineStrategy.prototype.getObjByKeyId = function(keyId, visibility) {
var p = this.protoStrategy;
var inj = this.injector;
if (p.keyId0 === keyId && canSee(p.visibility0, visibility)) {
if (this.obj0 === exports.UNDEFINED) {
this.obj0 = inj._new(p.provider0, p.visibility0);
}
return this.obj0;
}
if (p.keyId1 === keyId && canSee(p.visibility1, visibility)) {
if (this.obj1 === exports.UNDEFINED) {
this.obj1 = inj._new(p.provider1, p.visibility1);
}
return this.obj1;
}
if (p.keyId2 === keyId && canSee(p.visibility2, visibility)) {
if (this.obj2 === exports.UNDEFINED) {
this.obj2 = inj._new(p.provider2, p.visibility2);
}
return this.obj2;
}
if (p.keyId3 === keyId && canSee(p.visibility3, visibility)) {
if (this.obj3 === exports.UNDEFINED) {
this.obj3 = inj._new(p.provider3, p.visibility3);
}
return this.obj3;
}
if (p.keyId4 === keyId && canSee(p.visibility4, visibility)) {
if (this.obj4 === exports.UNDEFINED) {
this.obj4 = inj._new(p.provider4, p.visibility4);
}
return this.obj4;
}
if (p.keyId5 === keyId && canSee(p.visibility5, visibility)) {
if (this.obj5 === exports.UNDEFINED) {
this.obj5 = inj._new(p.provider5, p.visibility5);
}
return this.obj5;
}
if (p.keyId6 === keyId && canSee(p.visibility6, visibility)) {
if (this.obj6 === exports.UNDEFINED) {
this.obj6 = inj._new(p.provider6, p.visibility6);
}
return this.obj6;
}
if (p.keyId7 === keyId && canSee(p.visibility7, visibility)) {
if (this.obj7 === exports.UNDEFINED) {
this.obj7 = inj._new(p.provider7, p.visibility7);
}
return this.obj7;
}
if (p.keyId8 === keyId && canSee(p.visibility8, visibility)) {
if (this.obj8 === exports.UNDEFINED) {
this.obj8 = inj._new(p.provider8, p.visibility8);
}
return this.obj8;
}
if (p.keyId9 === keyId && canSee(p.visibility9, visibility)) {
if (this.obj9 === exports.UNDEFINED) {
this.obj9 = inj._new(p.provider9, p.visibility9);
}
return this.obj9;
}
return exports.UNDEFINED;
};
InjectorInlineStrategy.prototype.getObjAtIndex = function(index) {
if (index == 0)
return this.obj0;
if (index == 1)
return this.obj1;
if (index == 2)
return this.obj2;
if (index == 3)
return this.obj3;
if (index == 4)
return this.obj4;
if (index == 5)
return this.obj5;
if (index == 6)
return this.obj6;
if (index == 7)
return this.obj7;
if (index == 8)
return this.obj8;
if (index == 9)
return this.obj9;
throw new exceptions_1.OutOfBoundsError(index);
};
InjectorInlineStrategy.prototype.getMaxNumberOfObjects = function() {
return _MAX_CONSTRUCTION_COUNTER;
};
return InjectorInlineStrategy;
})();
exports.InjectorInlineStrategy = InjectorInlineStrategy;
var InjectorDynamicStrategy = (function() {
function InjectorDynamicStrategy(protoStrategy, injector) {
this.protoStrategy = protoStrategy;
this.injector = injector;
this.objs = collection_1.ListWrapper.createFixedSize(protoStrategy.providers.length);
collection_1.ListWrapper.fill(this.objs, exports.UNDEFINED);
}
InjectorDynamicStrategy.prototype.resetConstructionCounter = function() {
this.injector._constructionCounter = 0;
};
InjectorDynamicStrategy.prototype.instantiateProvider = function(provider, visibility) {
return this.injector._new(provider, visibility);
};
InjectorDynamicStrategy.prototype.getObjByKeyId = function(keyId, visibility) {
var p = this.protoStrategy;
for (var i = 0; i < p.keyIds.length; i++) {
if (p.keyIds[i] === keyId && canSee(p.visibilities[i], visibility)) {
if (this.objs[i] === exports.UNDEFINED) {
this.objs[i] = this.injector._new(p.providers[i], p.visibilities[i]);
}
return this.objs[i];
}
}
return exports.UNDEFINED;
};
InjectorDynamicStrategy.prototype.getObjAtIndex = function(index) {
if (index < 0 || index >= this.objs.length) {
throw new exceptions_1.OutOfBoundsError(index);
}
return this.objs[index];
};
InjectorDynamicStrategy.prototype.getMaxNumberOfObjects = function() {
return this.objs.length;
};
return InjectorDynamicStrategy;
})();
exports.InjectorDynamicStrategy = InjectorDynamicStrategy;
var ProviderWithVisibility = (function() {
function ProviderWithVisibility(provider, visibility) {
this.provider = provider;
this.visibility = visibility;
}
;
ProviderWithVisibility.prototype.getKeyId = function() {
return this.provider.key.id;
};
return ProviderWithVisibility;
})();
exports.ProviderWithVisibility = ProviderWithVisibility;
var Injector = (function() {
function Injector(_proto, _parent, _isHostBoundary, _depProvider, _debugContext) {
if (_parent === void 0) {
_parent = null;
}
if (_isHostBoundary === void 0) {
_isHostBoundary = false;
}
if (_depProvider === void 0) {
_depProvider = null;
}
if (_debugContext === void 0) {
_debugContext = null;
}
this._isHostBoundary = _isHostBoundary;
this._depProvider = _depProvider;
this._debugContext = _debugContext;
this._constructionCounter = 0;
this._proto = _proto;
this._parent = _parent;
this._strategy = _proto._strategy.createInjectorStrategy(this);
}
Injector.resolve = function(providers) {
return provider_1.resolveProviders(providers);
};
Injector.resolveAndCreate = function(providers) {
var resolvedProviders = Injector.resolve(providers);
return Injector.fromResolvedProviders(resolvedProviders);
};
Injector.fromResolvedProviders = function(providers) {
return new Injector(ProtoInjector.fromResolvedProviders(providers));
};
Injector.fromResolvedBindings = function(providers) {
return Injector.fromResolvedProviders(providers);
};
Object.defineProperty(Injector.prototype, "hostBoundary", {
get: function() {
return this._isHostBoundary;
},
enumerable: true,
configurable: true
});
Injector.prototype.debugContext = function() {
return this._debugContext();
};
Injector.prototype.get = function(token) {
return this._getByKey(key_1.Key.get(token), null, null, false, Visibility.PublicAndPrivate);
};
Injector.prototype.getOptional = function(token) {
return this._getByKey(key_1.Key.get(token), null, null, true, Visibility.PublicAndPrivate);
};
Injector.prototype.getAt = function(index) {
return this._strategy.getObjAtIndex(index);
};
Object.defineProperty(Injector.prototype, "parent", {
get: function() {
return this._parent;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Injector.prototype, "internalStrategy", {
get: function() {
return this._strategy;
},
enumerable: true,
configurable: true
});
Injector.prototype.resolveAndCreateChild = function(providers) {
var resolvedProviders = Injector.resolve(providers);
return this.createChildFromResolved(resolvedProviders);
};
Injector.prototype.createChildFromResolved = function(providers) {
var bd = providers.map(function(b) {
return new ProviderWithVisibility(b, Visibility.Public);
});
var proto = new ProtoInjector(bd);
var inj = new Injector(proto);
inj._parent = this;
return inj;
};
Injector.prototype.resolveAndInstantiate = function(provider) {
return this.instantiateResolved(Injector.resolve([provider])[0]);
};
Injector.prototype.instantiateResolved = function(provider) {
return this._instantiateProvider(provider, Visibility.PublicAndPrivate);
};
Injector.prototype._new = function(provider, visibility) {
if (this._constructionCounter++ > this._strategy.getMaxNumberOfObjects()) {
throw new exceptions_1.CyclicDependencyError(this, provider.key);
}
return this._instantiateProvider(provider, visibility);
};
Injector.prototype._instantiateProvider = function(provider, visibility) {
if (provider.multiProvider) {
var res = collection_1.ListWrapper.createFixedSize(provider.resolvedFactories.length);
for (var i = 0; i < provider.resolvedFactories.length; ++i) {
res[i] = this._instantiate(provider, provider.resolvedFactories[i], visibility);
}
return res;
} else {
return this._instantiate(provider, provider.resolvedFactories[0], visibility);
}
};
Injector.prototype._instantiate = function(provider, resolvedFactory, visibility) {
var factory = resolvedFactory.factory;
var deps = resolvedFactory.dependencies;
var length = deps.length;
var d0;
var d1;
var d2;
var d3;
var d4;
var d5;
var d6;
var d7;
var d8;
var d9;
var d10;
var d11;
var d12;
var d13;
var d14;
var d15;
var d16;
var d17;
var d18;
var d19;
try {
d0 = length > 0 ? this._getByDependency(provider, deps[0], visibility) : null;
d1 = length > 1 ? this._getByDependency(provider, deps[1], visibility) : null;
d2 = length > 2 ? this._getByDependency(provider, deps[2], visibility) : null;
d3 = length > 3 ? this._getByDependency(provider, deps[3], visibility) : null;
d4 = length > 4 ? this._getByDependency(provider, deps[4], visibility) : null;
d5 = length > 5 ? this._getByDependency(provider, deps[5], visibility) : null;
d6 = length > 6 ? this._getByDependency(provider, deps[6], visibility) : null;
d7 = length > 7 ? this._getByDependency(provider, deps[7], visibility) : null;
d8 = length > 8 ? this._getByDependency(provider, deps[8], visibility) : null;
d9 = length > 9 ? this._getByDependency(provider, deps[9], visibility) : null;
d10 = length > 10 ? this._getByDependency(provider, deps[10], visibility) : null;
d11 = length > 11 ? this._getByDependency(provider, deps[11], visibility) : null;
d12 = length > 12 ? this._getByDependency(provider, deps[12], visibility) : null;
d13 = length > 13 ? this._getByDependency(provider, deps[13], visibility) : null;
d14 = length > 14 ? this._getByDependency(provider, deps[14], visibility) : null;
d15 = length > 15 ? this._getByDependency(provider, deps[15], visibility) : null;
d16 = length > 16 ? this._getByDependency(provider, deps[16], visibility) : null;
d17 = length > 17 ? this._getByDependency(provider, deps[17], visibility) : null;
d18 = length > 18 ? this._getByDependency(provider, deps[18], visibility) : null;
d19 = length > 19 ? this._getByDependency(provider, deps[19], visibility) : null;
} catch (e) {
if (e instanceof exceptions_1.AbstractProviderError || e instanceof exceptions_1.InstantiationError) {
e.addKey(this, provider.key);
}
throw e;
}
var obj;
try {
switch (length) {
case 0:
obj = factory();
break;
case 1:
obj = factory(d0);
break;
case 2:
obj = factory(d0, d1);
break;
case 3:
obj = factory(d0, d1, d2);
break;
case 4:
obj = factory(d0, d1, d2, d3);
break;
case 5:
obj = factory(d0, d1, d2, d3, d4);
break;
case 6:
obj = factory(d0, d1, d2, d3, d4, d5);
break;
case 7:
obj = factory(d0, d1, d2, d3, d4, d5, d6);
break;
case 8:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7);
break;
case 9:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8);
break;
case 10:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9);
break;
case 11:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10);
break;
case 12:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11);
break;
case 13:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12);
break;
case 14:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13);
break;
case 15:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14);
break;
case 16:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15);
break;
case 17:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16);
break;
case 18:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17);
break;
case 19:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18);
break;
case 20:
obj = factory(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19);
break;
default:
throw new exceptions_2.BaseException("Cannot instantiate '" + provider.key.displayName + "' because it has more than 20 dependencies");
}
} catch (e) {
throw new exceptions_1.InstantiationError(this, e, e.stack, provider.key);
}
return obj;
};
Injector.prototype._getByDependency = function(provider, dep, providerVisibility) {
var special = lang_1.isPresent(this._depProvider) ? this._depProvider.getDependency(this, provider, dep) : exports.UNDEFINED;
if (special !== exports.UNDEFINED) {
return special;
} else {
return this._getByKey(dep.key, dep.lowerBoundVisibility, dep.upperBoundVisibility, dep.optional, providerVisibility);
}
};
Injector.prototype._getByKey = function(key, lowerBoundVisibility, upperBoundVisibility, optional, providerVisibility) {
if (key === INJECTOR_KEY) {
return this;
}
if (upperBoundVisibility instanceof metadata_1.SelfMetadata) {
return this._getByKeySelf(key, optional, providerVisibility);
} else if (upperBoundVisibility instanceof metadata_1.HostMetadata) {
return this._getByKeyHost(key, optional, providerVisibility, lowerBoundVisibility);
} else {
return this._getByKeyDefault(key, optional, providerVisibility, lowerBoundVisibility);
}
};
Injector.prototype._throwOrNull = function(key, optional) {
if (optional) {
return null;
} else {
throw new exceptions_1.NoProviderError(this, key);
}
};
Injector.prototype._getByKeySelf = function(key, optional, providerVisibility) {
var obj = this._strategy.getObjByKeyId(key.id, providerVisibility);
return (obj !== exports.UNDEFINED) ? obj : this._throwOrNull(key, optional);
};
Injector.prototype._getByKeyHost = function(key, optional, providerVisibility, lowerBoundVisibility) {
var inj = this;
if (lowerBoundVisibility instanceof metadata_1.SkipSelfMetadata) {
if (inj._isHostBoundary) {
return this._getPrivateDependency(key, optional, inj);
} else {
inj = inj._parent;
}
}
while (inj != null) {
var obj = inj._strategy.getObjByKeyId(key.id, providerVisibility);
if (obj !== exports.UNDEFINED)
return obj;
if (lang_1.isPresent(inj._parent) && inj._isHostBoundary) {
return this._getPrivateDependency(key, optional, inj);
} else {
inj = inj._parent;
}
}
return this._throwOrNull(key, optional);
};
Injector.prototype._getPrivateDependency = function(key, optional, inj) {
var obj = inj._parent._strategy.getObjByKeyId(key.id, Visibility.Private);
return (obj !== exports.UNDEFINED) ? obj : this._throwOrNull(key, optional);
};
Injector.prototype._getByKeyDefault = function(key, optional, providerVisibility, lowerBoundVisibility) {
var inj = this;
if (lowerBoundVisibility instanceof metadata_1.SkipSelfMetadata) {
providerVisibility = inj._isHostBoundary ? Visibility.PublicAndPrivate : Visibility.Public;
inj = inj._parent;
}
while (inj != null) {
var obj = inj._strategy.getObjByKeyId(key.id, providerVisibility);
if (obj !== exports.UNDEFINED)
return obj;
providerVisibility = inj._isHostBoundary ? Visibility.PublicAndPrivate : Visibility.Public;
inj = inj._parent;
}
return this._throwOrNull(key, optional);
};
Object.defineProperty(Injector.prototype, "displayName", {
get: function() {
return "Injector(providers: [" + _mapProviders(this, function(b) {
return (" \"" + b.key.displayName + "\" ");
}).join(", ") + "])";
},
enumerable: true,
configurable: true
});
Injector.prototype.toString = function() {
return this.displayName;
};
return Injector;
})();
exports.Injector = Injector;
var INJECTOR_KEY = key_1.Key.get(Injector);
function _mapProviders(injector, fn) {
var res = [];
for (var i = 0; i < injector._proto.numberOfProviders; ++i) {
res.push(fn(injector._proto.getProviderAtIndex(i)));
}
return res;
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/proto_change_detector", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/change_detection/parser/ast", "angular2/src/core/change_detection/change_detection_util", "angular2/src/core/change_detection/dynamic_change_detector", "angular2/src/core/change_detection/directive_record", "angular2/src/core/change_detection/event_binding", "angular2/src/core/change_detection/coalesce", "angular2/src/core/change_detection/proto_record"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var ast_1 = require("angular2/src/core/change_detection/parser/ast");
var change_detection_util_1 = require("angular2/src/core/change_detection/change_detection_util");
var dynamic_change_detector_1 = require("angular2/src/core/change_detection/dynamic_change_detector");
var directive_record_1 = require("angular2/src/core/change_detection/directive_record");
var event_binding_1 = require("angular2/src/core/change_detection/event_binding");
var coalesce_1 = require("angular2/src/core/change_detection/coalesce");
var proto_record_1 = require("angular2/src/core/change_detection/proto_record");
var DynamicProtoChangeDetector = (function() {
function DynamicProtoChangeDetector(_definition) {
this._definition = _definition;
this._propertyBindingRecords = createPropertyRecords(_definition);
this._eventBindingRecords = createEventRecords(_definition);
this._propertyBindingTargets = this._definition.bindingRecords.map(function(b) {
return b.target;
});
this._directiveIndices = this._definition.directiveRecords.map(function(d) {
return d.directiveIndex;
});
}
DynamicProtoChangeDetector.prototype.instantiate = function() {
return new dynamic_change_detector_1.DynamicChangeDetector(this._definition.id, this._propertyBindingRecords.length, this._propertyBindingTargets, this._directiveIndices, this._definition.strategy, this._propertyBindingRecords, this._eventBindingRecords, this._definition.directiveRecords, this._definition.genConfig);
};
return DynamicProtoChangeDetector;
})();
exports.DynamicProtoChangeDetector = DynamicProtoChangeDetector;
function createPropertyRecords(definition) {
var recordBuilder = new ProtoRecordBuilder();
collection_1.ListWrapper.forEachWithIndex(definition.bindingRecords, function(b, index) {
return recordBuilder.add(b, definition.variableNames, index);
});
return coalesce_1.coalesce(recordBuilder.records);
}
exports.createPropertyRecords = createPropertyRecords;
function createEventRecords(definition) {
var varNames = collection_1.ListWrapper.concat(['$event'], definition.variableNames);
return definition.eventRecords.map(function(er) {
var records = _ConvertAstIntoProtoRecords.create(er, varNames);
var dirIndex = er.implicitReceiver instanceof directive_record_1.DirectiveIndex ? er.implicitReceiver : null;
return new event_binding_1.EventBinding(er.target.name, er.target.elementIndex, dirIndex, records);
});
}
exports.createEventRecords = createEventRecords;
var ProtoRecordBuilder = (function() {
function ProtoRecordBuilder() {
this.records = [];
}
ProtoRecordBuilder.prototype.add = function(b, variableNames, bindingIndex) {
var oldLast = collection_1.ListWrapper.last(this.records);
if (lang_1.isPresent(oldLast) && oldLast.bindingRecord.directiveRecord == b.directiveRecord) {
oldLast.lastInDirective = false;
}
var numberOfRecordsBefore = this.records.length;
this._appendRecords(b, variableNames, bindingIndex);
var newLast = collection_1.ListWrapper.last(this.records);
if (lang_1.isPresent(newLast) && newLast !== oldLast) {
newLast.lastInBinding = true;
newLast.lastInDirective = true;
this._setArgumentToPureFunction(numberOfRecordsBefore);
}
};
ProtoRecordBuilder.prototype._setArgumentToPureFunction = function(startIndex) {
var _this = this;
for (var i = startIndex; i < this.records.length; ++i) {
var rec = this.records[i];
if (rec.isPureFunction()) {
rec.args.forEach(function(recordIndex) {
return _this.records[recordIndex - 1].argumentToPureFunction = true;
});
}
if (rec.mode === proto_record_1.RecordType.Pipe) {
rec.args.forEach(function(recordIndex) {
return _this.records[recordIndex - 1].argumentToPureFunction = true;
});
this.records[rec.contextIndex - 1].argumentToPureFunction = true;
}
}
};
ProtoRecordBuilder.prototype._appendRecords = function(b, variableNames, bindingIndex) {
if (b.isDirectiveLifecycle()) {
this.records.push(new proto_record_1.ProtoRecord(proto_record_1.RecordType.DirectiveLifecycle, b.lifecycleEvent, null, [], [], -1, null, this.records.length + 1, b, false, false, false, false, null));
} else {
_ConvertAstIntoProtoRecords.append(this.records, b, variableNames, bindingIndex);
}
};
return ProtoRecordBuilder;
})();
exports.ProtoRecordBuilder = ProtoRecordBuilder;
var _ConvertAstIntoProtoRecords = (function() {
function _ConvertAstIntoProtoRecords(_records, _bindingRecord, _variableNames, _bindingIndex) {
this._records = _records;
this._bindingRecord = _bindingRecord;
this._variableNames = _variableNames;
this._bindingIndex = _bindingIndex;
}
_ConvertAstIntoProtoRecords.append = function(records, b, variableNames, bindingIndex) {
var c = new _ConvertAstIntoProtoRecords(records, b, variableNames, bindingIndex);
b.ast.visit(c);
};
_ConvertAstIntoProtoRecords.create = function(b, variableNames) {
var rec = [];
_ConvertAstIntoProtoRecords.append(rec, b, variableNames, null);
rec[rec.length - 1].lastInBinding = true;
return rec;
};
_ConvertAstIntoProtoRecords.prototype.visitImplicitReceiver = function(ast) {
return this._bindingRecord.implicitReceiver;
};
_ConvertAstIntoProtoRecords.prototype.visitInterpolation = function(ast) {
var args = this._visitAll(ast.expressions);
return this._addRecord(proto_record_1.RecordType.Interpolate, "interpolate", _interpolationFn(ast.strings), args, ast.strings, 0);
};
_ConvertAstIntoProtoRecords.prototype.visitLiteralPrimitive = function(ast) {
return this._addRecord(proto_record_1.RecordType.Const, "literal", ast.value, [], null, 0);
};
_ConvertAstIntoProtoRecords.prototype.visitPropertyRead = function(ast) {
var receiver = ast.receiver.visit(this);
if (lang_1.isPresent(this._variableNames) && collection_1.ListWrapper.contains(this._variableNames, ast.name) && ast.receiver instanceof ast_1.ImplicitReceiver) {
return this._addRecord(proto_record_1.RecordType.Local, ast.name, ast.name, [], null, receiver);
} else {
return this._addRecord(proto_record_1.RecordType.PropertyRead, ast.name, ast.getter, [], null, receiver);
}
};
_ConvertAstIntoProtoRecords.prototype.visitPropertyWrite = function(ast) {
if (lang_1.isPresent(this._variableNames) && collection_1.ListWrapper.contains(this._variableNames, ast.name) && ast.receiver instanceof ast_1.ImplicitReceiver) {
throw new exceptions_1.BaseException("Cannot reassign a variable binding " + ast.name);
} else {
var receiver = ast.receiver.visit(this);
var value = ast.value.visit(this);
return this._addRecord(proto_record_1.RecordType.PropertyWrite, ast.name, ast.setter, [value], null, receiver);
}
};
_ConvertAstIntoProtoRecords.prototype.visitKeyedWrite = function(ast) {
var obj = ast.obj.visit(this);
var key = ast.key.visit(this);
var value = ast.value.visit(this);
return this._addRecord(proto_record_1.RecordType.KeyedWrite, null, null, [key, value], null, obj);
};
_ConvertAstIntoProtoRecords.prototype.visitSafePropertyRead = function(ast) {
var receiver = ast.receiver.visit(this);
return this._addRecord(proto_record_1.RecordType.SafeProperty, ast.name, ast.getter, [], null, receiver);
};
_ConvertAstIntoProtoRecords.prototype.visitMethodCall = function(ast) {
var receiver = ast.receiver.visit(this);
var args = this._visitAll(ast.args);
if (lang_1.isPresent(this._variableNames) && collection_1.ListWrapper.contains(this._variableNames, ast.name)) {
var target = this._addRecord(proto_record_1.RecordType.Local, ast.name, ast.name, [], null, receiver);
return this._addRecord(proto_record_1.RecordType.InvokeClosure, "closure", null, args, null, target);
} else {
return this._addRecord(proto_record_1.RecordType.InvokeMethod, ast.name, ast.fn, args, null, receiver);
}
};
_ConvertAstIntoProtoRecords.prototype.visitSafeMethodCall = function(ast) {
var receiver = ast.receiver.visit(this);
var args = this._visitAll(ast.args);
return this._addRecord(proto_record_1.RecordType.SafeMethodInvoke, ast.name, ast.fn, args, null, receiver);
};
_ConvertAstIntoProtoRecords.prototype.visitFunctionCall = function(ast) {
var target = ast.target.visit(this);
var args = this._visitAll(ast.args);
return this._addRecord(proto_record_1.RecordType.InvokeClosure, "closure", null, args, null, target);
};
_ConvertAstIntoProtoRecords.prototype.visitLiteralArray = function(ast) {
var primitiveName = "arrayFn" + ast.expressions.length;
return this._addRecord(proto_record_1.RecordType.CollectionLiteral, primitiveName, _arrayFn(ast.expressions.length), this._visitAll(ast.expressions), null, 0);
};
_ConvertAstIntoProtoRecords.prototype.visitLiteralMap = function(ast) {
return this._addRecord(proto_record_1.RecordType.CollectionLiteral, _mapPrimitiveName(ast.keys), change_detection_util_1.ChangeDetectionUtil.mapFn(ast.keys), this._visitAll(ast.values), null, 0);
};
_ConvertAstIntoProtoRecords.prototype.visitBinary = function(ast) {
var left = ast.left.visit(this);
switch (ast.operation) {
case '&&':
var branchEnd = [null];
this._addRecord(proto_record_1.RecordType.SkipRecordsIfNot, "SkipRecordsIfNot", null, [], branchEnd, left);
var right = ast.right.visit(this);
branchEnd[0] = right;
return this._addRecord(proto_record_1.RecordType.PrimitiveOp, "cond", change_detection_util_1.ChangeDetectionUtil.cond, [left, right, left], null, 0);
case '||':
var branchEnd = [null];
this._addRecord(proto_record_1.RecordType.SkipRecordsIf, "SkipRecordsIf", null, [], branchEnd, left);
var right = ast.right.visit(this);
branchEnd[0] = right;
return this._addRecord(proto_record_1.RecordType.PrimitiveOp, "cond", change_detection_util_1.ChangeDetectionUtil.cond, [left, left, right], null, 0);
default:
var right = ast.right.visit(this);
return this._addRecord(proto_record_1.RecordType.PrimitiveOp, _operationToPrimitiveName(ast.operation), _operationToFunction(ast.operation), [left, right], null, 0);
}
};
_ConvertAstIntoProtoRecords.prototype.visitPrefixNot = function(ast) {
var exp = ast.expression.visit(this);
return this._addRecord(proto_record_1.RecordType.PrimitiveOp, "operation_negate", change_detection_util_1.ChangeDetectionUtil.operation_negate, [exp], null, 0);
};
_ConvertAstIntoProtoRecords.prototype.visitConditional = function(ast) {
var condition = ast.condition.visit(this);
var startOfFalseBranch = [null];
var endOfFalseBranch = [null];
this._addRecord(proto_record_1.RecordType.SkipRecordsIfNot, "SkipRecordsIfNot", null, [], startOfFalseBranch, condition);
var whenTrue = ast.trueExp.visit(this);
var skip = this._addRecord(proto_record_1.RecordType.SkipRecords, "SkipRecords", null, [], endOfFalseBranch, 0);
var whenFalse = ast.falseExp.visit(this);
startOfFalseBranch[0] = skip;
endOfFalseBranch[0] = whenFalse;
return this._addRecord(proto_record_1.RecordType.PrimitiveOp, "cond", change_detection_util_1.ChangeDetectionUtil.cond, [condition, whenTrue, whenFalse], null, 0);
};
_ConvertAstIntoProtoRecords.prototype.visitPipe = function(ast) {
var value = ast.exp.visit(this);
var args = this._visitAll(ast.args);
return this._addRecord(proto_record_1.RecordType.Pipe, ast.name, ast.name, args, null, value);
};
_ConvertAstIntoProtoRecords.prototype.visitKeyedRead = function(ast) {
var obj = ast.obj.visit(this);
var key = ast.key.visit(this);
return this._addRecord(proto_record_1.RecordType.KeyedRead, "keyedAccess", change_detection_util_1.ChangeDetectionUtil.keyedAccess, [key], null, obj);
};
_ConvertAstIntoProtoRecords.prototype.visitChain = function(ast) {
var _this = this;
var args = ast.expressions.map(function(e) {
return e.visit(_this);
});
return this._addRecord(proto_record_1.RecordType.Chain, "chain", null, args, null, 0);
};
_ConvertAstIntoProtoRecords.prototype.visitQuote = function(ast) {
throw new exceptions_1.BaseException(("Caught uninterpreted expression at " + ast.location + ": " + ast.uninterpretedExpression + ". ") + ("Expression prefix " + ast.prefix + " did not match a template transformer to interpret the expression."));
};
_ConvertAstIntoProtoRecords.prototype._visitAll = function(asts) {
var res = collection_1.ListWrapper.createFixedSize(asts.length);
for (var i = 0; i < asts.length; ++i) {
res[i] = asts[i].visit(this);
}
return res;
};
_ConvertAstIntoProtoRecords.prototype._addRecord = function(type, name, funcOrValue, args, fixedArgs, context) {
var selfIndex = this._records.length + 1;
if (context instanceof directive_record_1.DirectiveIndex) {
this._records.push(new proto_record_1.ProtoRecord(type, name, funcOrValue, args, fixedArgs, -1, context, selfIndex, this._bindingRecord, false, false, false, false, this._bindingIndex));
} else {
this._records.push(new proto_record_1.ProtoRecord(type, name, funcOrValue, args, fixedArgs, context, null, selfIndex, this._bindingRecord, false, false, false, false, this._bindingIndex));
}
return selfIndex;
};
return _ConvertAstIntoProtoRecords;
})();
function _arrayFn(length) {
switch (length) {
case 0:
return change_detection_util_1.ChangeDetectionUtil.arrayFn0;
case 1:
return change_detection_util_1.ChangeDetectionUtil.arrayFn1;
case 2:
return change_detection_util_1.ChangeDetectionUtil.arrayFn2;
case 3:
return change_detection_util_1.ChangeDetectionUtil.arrayFn3;
case 4:
return change_detection_util_1.ChangeDetectionUtil.arrayFn4;
case 5:
return change_detection_util_1.ChangeDetectionUtil.arrayFn5;
case 6:
return change_detection_util_1.ChangeDetectionUtil.arrayFn6;
case 7:
return change_detection_util_1.ChangeDetectionUtil.arrayFn7;
case 8:
return change_detection_util_1.ChangeDetectionUtil.arrayFn8;
case 9:
return change_detection_util_1.ChangeDetectionUtil.arrayFn9;
default:
throw new exceptions_1.BaseException("Does not support literal maps with more than 9 elements");
}
}
function _mapPrimitiveName(keys) {
var stringifiedKeys = keys.map(function(k) {
return lang_1.isString(k) ? "\"" + k + "\"" : "" + k;
}).join(', ');
return "mapFn([" + stringifiedKeys + "])";
}
function _operationToPrimitiveName(operation) {
switch (operation) {
case '+':
return "operation_add";
case '-':
return "operation_subtract";
case '*':
return "operation_multiply";
case '/':
return "operation_divide";
case '%':
return "operation_remainder";
case '==':
return "operation_equals";
case '!=':
return "operation_not_equals";
case '===':
return "operation_identical";
case '!==':
return "operation_not_identical";
case '<':
return "operation_less_then";
case '>':
return "operation_greater_then";
case '<=':
return "operation_less_or_equals_then";
case '>=':
return "operation_greater_or_equals_then";
default:
throw new exceptions_1.BaseException("Unsupported operation " + operation);
}
}
function _operationToFunction(operation) {
switch (operation) {
case '+':
return change_detection_util_1.ChangeDetectionUtil.operation_add;
case '-':
return change_detection_util_1.ChangeDetectionUtil.operation_subtract;
case '*':
return change_detection_util_1.ChangeDetectionUtil.operation_multiply;
case '/':
return change_detection_util_1.ChangeDetectionUtil.operation_divide;
case '%':
return change_detection_util_1.ChangeDetectionUtil.operation_remainder;
case '==':
return change_detection_util_1.ChangeDetectionUtil.operation_equals;
case '!=':
return change_detection_util_1.ChangeDetectionUtil.operation_not_equals;
case '===':
return change_detection_util_1.ChangeDetectionUtil.operation_identical;
case '!==':
return change_detection_util_1.ChangeDetectionUtil.operation_not_identical;
case '<':
return change_detection_util_1.ChangeDetectionUtil.operation_less_then;
case '>':
return change_detection_util_1.ChangeDetectionUtil.operation_greater_then;
case '<=':
return change_detection_util_1.ChangeDetectionUtil.operation_less_or_equals_then;
case '>=':
return change_detection_util_1.ChangeDetectionUtil.operation_greater_or_equals_then;
default:
throw new exceptions_1.BaseException("Unsupported operation " + operation);
}
}
function s(v) {
return lang_1.isPresent(v) ? "" + v : '';
}
function _interpolationFn(strings) {
var length = strings.length;
var c0 = length > 0 ? strings[0] : null;
var c1 = length > 1 ? strings[1] : null;
var c2 = length > 2 ? strings[2] : null;
var c3 = length > 3 ? strings[3] : null;
var c4 = length > 4 ? strings[4] : null;
var c5 = length > 5 ? strings[5] : null;
var c6 = length > 6 ? strings[6] : null;
var c7 = length > 7 ? strings[7] : null;
var c8 = length > 8 ? strings[8] : null;
var c9 = length > 9 ? strings[9] : null;
switch (length - 1) {
case 1:
return function(a1) {
return c0 + s(a1) + c1;
};
case 2:
return function(a1, a2) {
return c0 + s(a1) + c1 + s(a2) + c2;
};
case 3:
return function(a1, a2, a3) {
return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3;
};
case 4:
return function(a1, a2, a3, a4) {
return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4;
};
case 5:
return function(a1, a2, a3, a4, a5) {
return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5;
};
case 6:
return function(a1, a2, a3, a4, a5, a6) {
return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5 + s(a6) + c6;
};
case 7:
return function(a1, a2, a3, a4, a5, a6, a7) {
return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5 + s(a6) + c6 + s(a7) + c7;
};
case 8:
return function(a1, a2, a3, a4, a5, a6, a7, a8) {
return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5 + s(a6) + c6 + s(a7) + c7 + s(a8) + c8;
};
case 9:
return function(a1, a2, a3, a4, a5, a6, a7, a8, a9) {
return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5 + s(a6) + c6 + s(a7) + c7 + s(a8) + c8 + s(a9) + c9;
};
default:
throw new exceptions_1.BaseException("Does not support more than 9 expressions");
}
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/dynamic_component_loader", ["angular2/src/core/di", "angular2/src/core/linker/compiler", "angular2/src/facade/lang", "angular2/src/core/linker/view_manager"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var compiler_1 = require("angular2/src/core/linker/compiler");
var lang_1 = require("angular2/src/facade/lang");
var view_manager_1 = require("angular2/src/core/linker/view_manager");
var ComponentRef = (function() {
function ComponentRef() {}
Object.defineProperty(ComponentRef.prototype, "hostView", {
get: function() {
return this.location.internalElement.parentView.ref;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ComponentRef.prototype, "hostComponent", {
get: function() {
return this.instance;
},
enumerable: true,
configurable: true
});
return ComponentRef;
})();
exports.ComponentRef = ComponentRef;
var ComponentRef_ = (function(_super) {
__extends(ComponentRef_, _super);
function ComponentRef_(location, instance, componentType, injector, _dispose) {
_super.call(this);
this._dispose = _dispose;
this.location = location;
this.instance = instance;
this.componentType = componentType;
this.injector = injector;
}
Object.defineProperty(ComponentRef_.prototype, "hostComponentType", {
get: function() {
return this.componentType;
},
enumerable: true,
configurable: true
});
ComponentRef_.prototype.dispose = function() {
this._dispose();
};
return ComponentRef_;
})(ComponentRef);
exports.ComponentRef_ = ComponentRef_;
var DynamicComponentLoader = (function() {
function DynamicComponentLoader() {}
return DynamicComponentLoader;
})();
exports.DynamicComponentLoader = DynamicComponentLoader;
var DynamicComponentLoader_ = (function(_super) {
__extends(DynamicComponentLoader_, _super);
function DynamicComponentLoader_(_compiler, _viewManager) {
_super.call(this);
this._compiler = _compiler;
this._viewManager = _viewManager;
}
DynamicComponentLoader_.prototype.loadAsRoot = function(type, overrideSelector, injector, onDispose, projectableNodes) {
var _this = this;
return this._compiler.compileInHost(type).then(function(hostProtoViewRef) {
var hostViewRef = _this._viewManager.createRootHostView(hostProtoViewRef, overrideSelector, injector, projectableNodes);
var newLocation = _this._viewManager.getHostElement(hostViewRef);
var component = _this._viewManager.getComponent(newLocation);
var dispose = function() {
if (lang_1.isPresent(onDispose)) {
onDispose();
}
_this._viewManager.destroyRootHostView(hostViewRef);
};
return new ComponentRef_(newLocation, component, type, injector, dispose);
});
};
DynamicComponentLoader_.prototype.loadIntoLocation = function(type, hostLocation, anchorName, providers, projectableNodes) {
if (providers === void 0) {
providers = null;
}
if (projectableNodes === void 0) {
projectableNodes = null;
}
return this.loadNextToLocation(type, this._viewManager.getNamedElementInComponentView(hostLocation, anchorName), providers, projectableNodes);
};
DynamicComponentLoader_.prototype.loadNextToLocation = function(type, location, providers, projectableNodes) {
var _this = this;
if (providers === void 0) {
providers = null;
}
if (projectableNodes === void 0) {
projectableNodes = null;
}
return this._compiler.compileInHost(type).then(function(hostProtoViewRef) {
var viewContainer = _this._viewManager.getViewContainer(location);
var hostViewRef = viewContainer.createHostView(hostProtoViewRef, viewContainer.length, providers, projectableNodes);
var newLocation = _this._viewManager.getHostElement(hostViewRef);
var component = _this._viewManager.getComponent(newLocation);
var dispose = function() {
var index = viewContainer.indexOf(hostViewRef);
if (!hostViewRef.destroyed && index !== -1) {
viewContainer.remove(index);
}
};
return new ComponentRef_(newLocation, component, type, null, dispose);
});
};
DynamicComponentLoader_ = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [compiler_1.Compiler, view_manager_1.AppViewManager])], DynamicComponentLoader_);
return DynamicComponentLoader_;
})(DynamicComponentLoader);
exports.DynamicComponentLoader_ = DynamicComponentLoader_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/di", ["angular2/src/core/di/metadata", "angular2/src/core/di/decorators", "angular2/src/core/di/forward_ref", "angular2/src/core/di/injector", "angular2/src/core/di/provider", "angular2/src/core/di/key", "angular2/src/core/di/exceptions", "angular2/src/core/di/opaque_token"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function __export(m) {
for (var p in m)
if (!exports.hasOwnProperty(p))
exports[p] = m[p];
}
var metadata_1 = require("angular2/src/core/di/metadata");
exports.InjectMetadata = metadata_1.InjectMetadata;
exports.OptionalMetadata = metadata_1.OptionalMetadata;
exports.InjectableMetadata = metadata_1.InjectableMetadata;
exports.SelfMetadata = metadata_1.SelfMetadata;
exports.HostMetadata = metadata_1.HostMetadata;
exports.SkipSelfMetadata = metadata_1.SkipSelfMetadata;
exports.DependencyMetadata = metadata_1.DependencyMetadata;
__export(require("angular2/src/core/di/decorators"));
var forward_ref_1 = require("angular2/src/core/di/forward_ref");
exports.forwardRef = forward_ref_1.forwardRef;
exports.resolveForwardRef = forward_ref_1.resolveForwardRef;
var injector_1 = require("angular2/src/core/di/injector");
exports.Injector = injector_1.Injector;
var provider_1 = require("angular2/src/core/di/provider");
exports.Binding = provider_1.Binding;
exports.ProviderBuilder = provider_1.ProviderBuilder;
exports.ResolvedFactory = provider_1.ResolvedFactory;
exports.Dependency = provider_1.Dependency;
exports.bind = provider_1.bind;
exports.Provider = provider_1.Provider;
exports.provide = provider_1.provide;
var key_1 = require("angular2/src/core/di/key");
exports.Key = key_1.Key;
var exceptions_1 = require("angular2/src/core/di/exceptions");
exports.NoProviderError = exceptions_1.NoProviderError;
exports.AbstractProviderError = exceptions_1.AbstractProviderError;
exports.CyclicDependencyError = exceptions_1.CyclicDependencyError;
exports.InstantiationError = exceptions_1.InstantiationError;
exports.InvalidProviderError = exceptions_1.InvalidProviderError;
exports.NoAnnotationError = exceptions_1.NoAnnotationError;
exports.OutOfBoundsError = exceptions_1.OutOfBoundsError;
var opaque_token_1 = require("angular2/src/core/di/opaque_token");
exports.OpaqueToken = opaque_token_1.OpaqueToken;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection/change_detection", ["angular2/src/core/change_detection/differs/iterable_differs", "angular2/src/core/change_detection/differs/default_iterable_differ", "angular2/src/core/change_detection/differs/keyvalue_differs", "angular2/src/core/change_detection/differs/default_keyvalue_differ", "angular2/src/facade/lang", "angular2/src/core/change_detection/differs/default_keyvalue_differ", "angular2/src/core/change_detection/differs/default_iterable_differ", "angular2/src/core/change_detection/parser/ast", "angular2/src/core/change_detection/parser/lexer", "angular2/src/core/change_detection/parser/parser", "angular2/src/core/change_detection/parser/locals", "angular2/src/core/change_detection/exceptions", "angular2/src/core/change_detection/interfaces", "angular2/src/core/change_detection/constants", "angular2/src/core/change_detection/proto_change_detector", "angular2/src/core/change_detection/jit_proto_change_detector", "angular2/src/core/change_detection/binding_record", "angular2/src/core/change_detection/directive_record", "angular2/src/core/change_detection/dynamic_change_detector", "angular2/src/core/change_detection/change_detector_ref", "angular2/src/core/change_detection/differs/iterable_differs", "angular2/src/core/change_detection/differs/keyvalue_differs", "angular2/src/core/change_detection/change_detection_util"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var iterable_differs_1 = require("angular2/src/core/change_detection/differs/iterable_differs");
var default_iterable_differ_1 = require("angular2/src/core/change_detection/differs/default_iterable_differ");
var keyvalue_differs_1 = require("angular2/src/core/change_detection/differs/keyvalue_differs");
var default_keyvalue_differ_1 = require("angular2/src/core/change_detection/differs/default_keyvalue_differ");
var lang_1 = require("angular2/src/facade/lang");
var default_keyvalue_differ_2 = require("angular2/src/core/change_detection/differs/default_keyvalue_differ");
exports.DefaultKeyValueDifferFactory = default_keyvalue_differ_2.DefaultKeyValueDifferFactory;
exports.KeyValueChangeRecord = default_keyvalue_differ_2.KeyValueChangeRecord;
var default_iterable_differ_2 = require("angular2/src/core/change_detection/differs/default_iterable_differ");
exports.DefaultIterableDifferFactory = default_iterable_differ_2.DefaultIterableDifferFactory;
exports.CollectionChangeRecord = default_iterable_differ_2.CollectionChangeRecord;
var ast_1 = require("angular2/src/core/change_detection/parser/ast");
exports.ASTWithSource = ast_1.ASTWithSource;
exports.AST = ast_1.AST;
exports.AstTransformer = ast_1.AstTransformer;
exports.PropertyRead = ast_1.PropertyRead;
exports.LiteralArray = ast_1.LiteralArray;
exports.ImplicitReceiver = ast_1.ImplicitReceiver;
var lexer_1 = require("angular2/src/core/change_detection/parser/lexer");
exports.Lexer = lexer_1.Lexer;
var parser_1 = require("angular2/src/core/change_detection/parser/parser");
exports.Parser = parser_1.Parser;
var locals_1 = require("angular2/src/core/change_detection/parser/locals");
exports.Locals = locals_1.Locals;
var exceptions_1 = require("angular2/src/core/change_detection/exceptions");
exports.DehydratedException = exceptions_1.DehydratedException;
exports.ExpressionChangedAfterItHasBeenCheckedException = exceptions_1.ExpressionChangedAfterItHasBeenCheckedException;
exports.ChangeDetectionError = exceptions_1.ChangeDetectionError;
var interfaces_1 = require("angular2/src/core/change_detection/interfaces");
exports.ChangeDetectorDefinition = interfaces_1.ChangeDetectorDefinition;
exports.DebugContext = interfaces_1.DebugContext;
exports.ChangeDetectorGenConfig = interfaces_1.ChangeDetectorGenConfig;
var constants_1 = require("angular2/src/core/change_detection/constants");
exports.ChangeDetectionStrategy = constants_1.ChangeDetectionStrategy;
exports.CHANGE_DETECTION_STRATEGY_VALUES = constants_1.CHANGE_DETECTION_STRATEGY_VALUES;
var proto_change_detector_1 = require("angular2/src/core/change_detection/proto_change_detector");
exports.DynamicProtoChangeDetector = proto_change_detector_1.DynamicProtoChangeDetector;
var jit_proto_change_detector_1 = require("angular2/src/core/change_detection/jit_proto_change_detector");
exports.JitProtoChangeDetector = jit_proto_change_detector_1.JitProtoChangeDetector;
var binding_record_1 = require("angular2/src/core/change_detection/binding_record");
exports.BindingRecord = binding_record_1.BindingRecord;
exports.BindingTarget = binding_record_1.BindingTarget;
var directive_record_1 = require("angular2/src/core/change_detection/directive_record");
exports.DirectiveIndex = directive_record_1.DirectiveIndex;
exports.DirectiveRecord = directive_record_1.DirectiveRecord;
var dynamic_change_detector_1 = require("angular2/src/core/change_detection/dynamic_change_detector");
exports.DynamicChangeDetector = dynamic_change_detector_1.DynamicChangeDetector;
var change_detector_ref_1 = require("angular2/src/core/change_detection/change_detector_ref");
exports.ChangeDetectorRef = change_detector_ref_1.ChangeDetectorRef;
var iterable_differs_2 = require("angular2/src/core/change_detection/differs/iterable_differs");
exports.IterableDiffers = iterable_differs_2.IterableDiffers;
var keyvalue_differs_2 = require("angular2/src/core/change_detection/differs/keyvalue_differs");
exports.KeyValueDiffers = keyvalue_differs_2.KeyValueDiffers;
var change_detection_util_1 = require("angular2/src/core/change_detection/change_detection_util");
exports.WrappedValue = change_detection_util_1.WrappedValue;
exports.SimpleChange = change_detection_util_1.SimpleChange;
exports.keyValDiff = lang_1.CONST_EXPR([lang_1.CONST_EXPR(new default_keyvalue_differ_1.DefaultKeyValueDifferFactory())]);
exports.iterableDiff = lang_1.CONST_EXPR([lang_1.CONST_EXPR(new default_iterable_differ_1.DefaultIterableDifferFactory())]);
exports.defaultIterableDiffers = lang_1.CONST_EXPR(new iterable_differs_1.IterableDiffers(exports.iterableDiff));
exports.defaultKeyValueDiffers = lang_1.CONST_EXPR(new keyvalue_differs_1.KeyValueDiffers(exports.keyValDiff));
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/application_ref", ["angular2/src/core/zone/ng_zone", "angular2/src/facade/lang", "angular2/src/core/di", "angular2/src/core/application_tokens", "angular2/src/facade/async", "angular2/src/facade/collection", "angular2/src/core/testability/testability", "angular2/src/core/linker/dynamic_component_loader", "angular2/src/facade/exceptions", "angular2/src/core/console", "angular2/src/core/profile/profile", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var ng_zone_1 = require("angular2/src/core/zone/ng_zone");
var lang_1 = require("angular2/src/facade/lang");
var di_1 = require("angular2/src/core/di");
var application_tokens_1 = require("angular2/src/core/application_tokens");
var async_1 = require("angular2/src/facade/async");
var collection_1 = require("angular2/src/facade/collection");
var testability_1 = require("angular2/src/core/testability/testability");
var dynamic_component_loader_1 = require("angular2/src/core/linker/dynamic_component_loader");
var exceptions_1 = require("angular2/src/facade/exceptions");
var console_1 = require("angular2/src/core/console");
var profile_1 = require("angular2/src/core/profile/profile");
var lang_2 = require("angular2/src/facade/lang");
function _componentProviders(appComponentType) {
return [di_1.provide(application_tokens_1.APP_COMPONENT, {useValue: appComponentType}), di_1.provide(application_tokens_1.APP_COMPONENT_REF_PROMISE, {
useFactory: function(dynamicComponentLoader, appRef, injector) {
var ref;
return dynamicComponentLoader.loadAsRoot(appComponentType, null, injector, function() {
appRef._unloadComponent(ref);
}).then(function(componentRef) {
ref = componentRef;
var testability = injector.getOptional(testability_1.Testability);
if (lang_1.isPresent(testability)) {
injector.get(testability_1.TestabilityRegistry).registerApplication(componentRef.location.nativeElement, testability);
}
return componentRef;
});
},
deps: [dynamic_component_loader_1.DynamicComponentLoader, ApplicationRef, di_1.Injector]
}), di_1.provide(appComponentType, {
useFactory: function(p) {
return p.then(function(ref) {
return ref.instance;
});
},
deps: [application_tokens_1.APP_COMPONENT_REF_PROMISE]
})];
}
function createNgZone() {
return new ng_zone_1.NgZone({enableLongStackTrace: lang_1.assertionsEnabled()});
}
exports.createNgZone = createNgZone;
var _platform;
var _platformProviders;
function platform(providers) {
lang_2.lockMode();
if (lang_1.isPresent(_platform)) {
if (collection_1.ListWrapper.equals(_platformProviders, providers)) {
return _platform;
} else {
throw new exceptions_1.BaseException("platform cannot be initialized with different sets of providers.");
}
} else {
return _createPlatform(providers);
}
}
exports.platform = platform;
function disposePlatform() {
if (lang_1.isPresent(_platform)) {
_platform.dispose();
_platform = null;
}
}
exports.disposePlatform = disposePlatform;
function _createPlatform(providers) {
_platformProviders = providers;
var injector = di_1.Injector.resolveAndCreate(providers);
_platform = new PlatformRef_(injector, function() {
_platform = null;
_platformProviders = null;
});
_runPlatformInitializers(injector);
return _platform;
}
function _runPlatformInitializers(injector) {
var inits = injector.getOptional(application_tokens_1.PLATFORM_INITIALIZER);
if (lang_1.isPresent(inits))
inits.forEach(function(init) {
return init();
});
}
var PlatformRef = (function() {
function PlatformRef() {}
Object.defineProperty(PlatformRef.prototype, "injector", {
get: function() {
throw exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
;
return PlatformRef;
})();
exports.PlatformRef = PlatformRef;
var PlatformRef_ = (function(_super) {
__extends(PlatformRef_, _super);
function PlatformRef_(_injector, _dispose) {
_super.call(this);
this._injector = _injector;
this._dispose = _dispose;
this._applications = [];
this._disposeListeners = [];
}
PlatformRef_.prototype.registerDisposeListener = function(dispose) {
this._disposeListeners.push(dispose);
};
Object.defineProperty(PlatformRef_.prototype, "injector", {
get: function() {
return this._injector;
},
enumerable: true,
configurable: true
});
PlatformRef_.prototype.application = function(providers) {
var app = this._initApp(createNgZone(), providers);
if (async_1.PromiseWrapper.isPromise(app)) {
throw new exceptions_1.BaseException("Cannot use asyncronous app initializers with application. Use asyncApplication instead.");
}
return app;
};
PlatformRef_.prototype.asyncApplication = function(bindingFn, additionalProviders) {
var _this = this;
var zone = createNgZone();
var completer = async_1.PromiseWrapper.completer();
if (bindingFn === null) {
completer.resolve(this._initApp(zone, additionalProviders));
} else {
zone.run(function() {
async_1.PromiseWrapper.then(bindingFn(zone), function(providers) {
if (lang_1.isPresent(additionalProviders)) {
providers = collection_1.ListWrapper.concat(providers, additionalProviders);
}
var promise = _this._initApp(zone, providers);
completer.resolve(promise);
});
});
}
return completer.promise;
};
PlatformRef_.prototype._initApp = function(zone, providers) {
var _this = this;
var injector;
var app;
zone.run(function() {
providers = collection_1.ListWrapper.concat(providers, [di_1.provide(ng_zone_1.NgZone, {useValue: zone}), di_1.provide(ApplicationRef, {
useFactory: function() {
return app;
},
deps: []
})]);
var exceptionHandler;
try {
injector = _this.injector.resolveAndCreateChild(providers);
exceptionHandler = injector.get(exceptions_1.ExceptionHandler);
async_1.ObservableWrapper.subscribe(zone.onError, function(error) {
exceptionHandler.call(error.error, error.stackTrace);
});
} catch (e) {
if (lang_1.isPresent(exceptionHandler)) {
exceptionHandler.call(e, e.stack);
} else {
lang_1.print(e.toString());
}
}
});
app = new ApplicationRef_(this, zone, injector);
this._applications.push(app);
var promise = _runAppInitializers(injector);
if (promise !== null) {
return async_1.PromiseWrapper.then(promise, function(_) {
return app;
});
} else {
return app;
}
};
PlatformRef_.prototype.dispose = function() {
collection_1.ListWrapper.clone(this._applications).forEach(function(app) {
return app.dispose();
});
this._disposeListeners.forEach(function(dispose) {
return dispose();
});
this._dispose();
};
PlatformRef_.prototype._applicationDisposed = function(app) {
collection_1.ListWrapper.remove(this._applications, app);
};
return PlatformRef_;
})(PlatformRef);
exports.PlatformRef_ = PlatformRef_;
function _runAppInitializers(injector) {
var inits = injector.getOptional(application_tokens_1.APP_INITIALIZER);
var promises = [];
if (lang_1.isPresent(inits)) {
inits.forEach(function(init) {
var retVal = init();
if (async_1.PromiseWrapper.isPromise(retVal)) {
promises.push(retVal);
}
});
}
if (promises.length > 0) {
return async_1.PromiseWrapper.all(promises);
} else {
return null;
}
}
var ApplicationRef = (function() {
function ApplicationRef() {}
Object.defineProperty(ApplicationRef.prototype, "injector", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
;
Object.defineProperty(ApplicationRef.prototype, "zone", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
;
Object.defineProperty(ApplicationRef.prototype, "componentTypes", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
;
return ApplicationRef;
})();
exports.ApplicationRef = ApplicationRef;
var ApplicationRef_ = (function(_super) {
__extends(ApplicationRef_, _super);
function ApplicationRef_(_platform, _zone, _injector) {
var _this = this;
_super.call(this);
this._platform = _platform;
this._zone = _zone;
this._injector = _injector;
this._bootstrapListeners = [];
this._disposeListeners = [];
this._rootComponents = [];
this._rootComponentTypes = [];
this._changeDetectorRefs = [];
this._runningTick = false;
this._enforceNoNewChanges = false;
if (lang_1.isPresent(this._zone)) {
async_1.ObservableWrapper.subscribe(this._zone.onMicrotaskEmpty, function(_) {
_this._zone.run(function() {
_this.tick();
});
});
}
this._enforceNoNewChanges = lang_1.assertionsEnabled();
}
ApplicationRef_.prototype.registerBootstrapListener = function(listener) {
this._bootstrapListeners.push(listener);
};
ApplicationRef_.prototype.registerDisposeListener = function(dispose) {
this._disposeListeners.push(dispose);
};
ApplicationRef_.prototype.registerChangeDetector = function(changeDetector) {
this._changeDetectorRefs.push(changeDetector);
};
ApplicationRef_.prototype.unregisterChangeDetector = function(changeDetector) {
collection_1.ListWrapper.remove(this._changeDetectorRefs, changeDetector);
};
ApplicationRef_.prototype.bootstrap = function(componentType, providers) {
var _this = this;
var completer = async_1.PromiseWrapper.completer();
this._zone.run(function() {
var componentProviders = _componentProviders(componentType);
if (lang_1.isPresent(providers)) {
componentProviders.push(providers);
}
var exceptionHandler = _this._injector.get(exceptions_1.ExceptionHandler);
_this._rootComponentTypes.push(componentType);
try {
var injector = _this._injector.resolveAndCreateChild(componentProviders);
var compRefToken = injector.get(application_tokens_1.APP_COMPONENT_REF_PROMISE);
var tick = function(componentRef) {
_this._loadComponent(componentRef);
completer.resolve(componentRef);
};
var tickResult = async_1.PromiseWrapper.then(compRefToken, tick);
async_1.PromiseWrapper.then(tickResult, null, function(err, stackTrace) {
completer.reject(err, stackTrace);
exceptionHandler.call(err, stackTrace);
});
} catch (e) {
exceptionHandler.call(e, e.stack);
completer.reject(e, e.stack);
}
});
return completer.promise.then(function(ref) {
var c = _this._injector.get(console_1.Console);
if (lang_1.assertionsEnabled()) {
c.log("Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode.");
}
return ref;
});
};
ApplicationRef_.prototype._loadComponent = function(componentRef) {
var appChangeDetector = componentRef.location.internalElement.parentView.changeDetector;
this._changeDetectorRefs.push(appChangeDetector.ref);
this.tick();
this._rootComponents.push(componentRef);
this._bootstrapListeners.forEach(function(listener) {
return listener(componentRef);
});
};
ApplicationRef_.prototype._unloadComponent = function(componentRef) {
if (!collection_1.ListWrapper.contains(this._rootComponents, componentRef)) {
return ;
}
this.unregisterChangeDetector(componentRef.location.internalElement.parentView.changeDetector.ref);
collection_1.ListWrapper.remove(this._rootComponents, componentRef);
};
Object.defineProperty(ApplicationRef_.prototype, "injector", {
get: function() {
return this._injector;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ApplicationRef_.prototype, "zone", {
get: function() {
return this._zone;
},
enumerable: true,
configurable: true
});
ApplicationRef_.prototype.tick = function() {
if (this._runningTick) {
throw new exceptions_1.BaseException("ApplicationRef.tick is called recursively");
}
var s = ApplicationRef_._tickScope();
try {
this._runningTick = true;
this._changeDetectorRefs.forEach(function(detector) {
return detector.detectChanges();
});
if (this._enforceNoNewChanges) {
this._changeDetectorRefs.forEach(function(detector) {
return detector.checkNoChanges();
});
}
} finally {
this._runningTick = false;
profile_1.wtfLeave(s);
}
};
ApplicationRef_.prototype.dispose = function() {
collection_1.ListWrapper.clone(this._rootComponents).forEach(function(ref) {
return ref.dispose();
});
this._disposeListeners.forEach(function(dispose) {
return dispose();
});
this._platform._applicationDisposed(this);
};
Object.defineProperty(ApplicationRef_.prototype, "componentTypes", {
get: function() {
return this._rootComponentTypes;
},
enumerable: true,
configurable: true
});
ApplicationRef_._tickScope = profile_1.wtfCreateScope('ApplicationRef#tick()');
return ApplicationRef_;
})(ApplicationRef);
exports.ApplicationRef_ = ApplicationRef_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/change_detection", ["angular2/src/core/change_detection/change_detection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
exports.ChangeDetectionStrategy = change_detection_1.ChangeDetectionStrategy;
exports.ExpressionChangedAfterItHasBeenCheckedException = change_detection_1.ExpressionChangedAfterItHasBeenCheckedException;
exports.ChangeDetectionError = change_detection_1.ChangeDetectionError;
exports.ChangeDetectorRef = change_detection_1.ChangeDetectorRef;
exports.WrappedValue = change_detection_1.WrappedValue;
exports.SimpleChange = change_detection_1.SimpleChange;
exports.IterableDiffers = change_detection_1.IterableDiffers;
exports.KeyValueDiffers = change_detection_1.KeyValueDiffers;
exports.CollectionChangeRecord = change_detection_1.CollectionChangeRecord;
exports.KeyValueChangeRecord = change_detection_1.KeyValueChangeRecord;
global.define = __define;
return module.exports;
});
System.register("angular2/core", ["angular2/src/core/metadata", "angular2/src/core/util", "angular2/src/core/prod_mode", "angular2/src/core/di", "angular2/src/facade/facade", "angular2/src/facade/lang", "angular2/src/core/application_ref", "angular2/src/core/application_tokens", "angular2/src/core/zone", "angular2/src/core/render", "angular2/src/core/linker", "angular2/src/core/debug/debug_node", "angular2/src/core/testability/testability", "angular2/src/core/change_detection", "angular2/src/core/platform_directives_and_pipes", "angular2/src/core/platform_common_providers", "angular2/src/core/application_common_providers", "angular2/src/core/reflection/reflection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function __export(m) {
for (var p in m)
if (!exports.hasOwnProperty(p))
exports[p] = m[p];
}
__export(require("angular2/src/core/metadata"));
__export(require("angular2/src/core/util"));
__export(require("angular2/src/core/prod_mode"));
__export(require("angular2/src/core/di"));
__export(require("angular2/src/facade/facade"));
var lang_1 = require("angular2/src/facade/lang");
exports.enableProdMode = lang_1.enableProdMode;
var application_ref_1 = require("angular2/src/core/application_ref");
exports.platform = application_ref_1.platform;
exports.createNgZone = application_ref_1.createNgZone;
exports.PlatformRef = application_ref_1.PlatformRef;
exports.ApplicationRef = application_ref_1.ApplicationRef;
var application_tokens_1 = require("angular2/src/core/application_tokens");
exports.APP_ID = application_tokens_1.APP_ID;
exports.APP_COMPONENT = application_tokens_1.APP_COMPONENT;
exports.APP_INITIALIZER = application_tokens_1.APP_INITIALIZER;
exports.PACKAGE_ROOT_URL = application_tokens_1.PACKAGE_ROOT_URL;
exports.PLATFORM_INITIALIZER = application_tokens_1.PLATFORM_INITIALIZER;
__export(require("angular2/src/core/zone"));
__export(require("angular2/src/core/render"));
__export(require("angular2/src/core/linker"));
var debug_node_1 = require("angular2/src/core/debug/debug_node");
exports.DebugElement = debug_node_1.DebugElement;
exports.DebugNode = debug_node_1.DebugNode;
exports.asNativeElements = debug_node_1.asNativeElements;
__export(require("angular2/src/core/testability/testability"));
__export(require("angular2/src/core/change_detection"));
__export(require("angular2/src/core/platform_directives_and_pipes"));
__export(require("angular2/src/core/platform_common_providers"));
__export(require("angular2/src/core/application_common_providers"));
__export(require("angular2/src/core/reflection/reflection"));
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/async", ["angular2/src/facade/lang", "angular2/src/facade/promise", "rxjs/Subject", "rxjs/observable/PromiseObservable", "rxjs/operator/toPromise", "rxjs/Observable", "rxjs/Subject"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var lang_1 = require("angular2/src/facade/lang");
var promise_1 = require("angular2/src/facade/promise");
exports.PromiseWrapper = promise_1.PromiseWrapper;
exports.PromiseCompleter = promise_1.PromiseCompleter;
var Subject_1 = require("rxjs/Subject");
var PromiseObservable_1 = require("rxjs/observable/PromiseObservable");
var toPromise_1 = require("rxjs/operator/toPromise");
var Observable_1 = require("rxjs/Observable");
exports.Observable = Observable_1.Observable;
var Subject_2 = require("rxjs/Subject");
exports.Subject = Subject_2.Subject;
var TimerWrapper = (function() {
function TimerWrapper() {}
TimerWrapper.setTimeout = function(fn, millis) {
return lang_1.global.setTimeout(fn, millis);
};
TimerWrapper.clearTimeout = function(id) {
lang_1.global.clearTimeout(id);
};
TimerWrapper.setInterval = function(fn, millis) {
return lang_1.global.setInterval(fn, millis);
};
TimerWrapper.clearInterval = function(id) {
lang_1.global.clearInterval(id);
};
return TimerWrapper;
})();
exports.TimerWrapper = TimerWrapper;
var ObservableWrapper = (function() {
function ObservableWrapper() {}
ObservableWrapper.subscribe = function(emitter, onNext, onError, onComplete) {
if (onComplete === void 0) {
onComplete = function() {};
}
onError = (typeof onError === "function") && onError || lang_1.noop;
onComplete = (typeof onComplete === "function") && onComplete || lang_1.noop;
return emitter.subscribe({
next: onNext,
error: onError,
complete: onComplete
});
};
ObservableWrapper.isObservable = function(obs) {
return !!obs.subscribe;
};
ObservableWrapper.hasSubscribers = function(obs) {
return obs.observers.length > 0;
};
ObservableWrapper.dispose = function(subscription) {
subscription.unsubscribe();
};
ObservableWrapper.callNext = function(emitter, value) {
emitter.next(value);
};
ObservableWrapper.callEmit = function(emitter, value) {
emitter.emit(value);
};
ObservableWrapper.callError = function(emitter, error) {
emitter.error(error);
};
ObservableWrapper.callComplete = function(emitter) {
emitter.complete();
};
ObservableWrapper.fromPromise = function(promise) {
return PromiseObservable_1.PromiseObservable.create(promise);
};
ObservableWrapper.toPromise = function(obj) {
return toPromise_1.toPromise.call(obj);
};
return ObservableWrapper;
})();
exports.ObservableWrapper = ObservableWrapper;
var EventEmitter = (function(_super) {
__extends(EventEmitter, _super);
function EventEmitter(isAsync) {
if (isAsync === void 0) {
isAsync = true;
}
_super.call(this);
this._isAsync = isAsync;
}
EventEmitter.prototype.emit = function(value) {
_super.prototype.next.call(this, value);
};
EventEmitter.prototype.next = function(value) {
_super.prototype.next.call(this, value);
};
EventEmitter.prototype.subscribe = function(generatorOrNext, error, complete) {
var schedulerFn;
var errorFn = function(err) {
return null;
};
var completeFn = function() {
return null;
};
if (generatorOrNext && typeof generatorOrNext === 'object') {
schedulerFn = this._isAsync ? function(value) {
setTimeout(function() {
return generatorOrNext.next(value);
});
} : function(value) {
generatorOrNext.next(value);
};
if (generatorOrNext.error) {
errorFn = this._isAsync ? function(err) {
setTimeout(function() {
return generatorOrNext.error(err);
});
} : function(err) {
generatorOrNext.error(err);
};
}
if (generatorOrNext.complete) {
completeFn = this._isAsync ? function() {
setTimeout(function() {
return generatorOrNext.complete();
});
} : function() {
generatorOrNext.complete();
};
}
} else {
schedulerFn = this._isAsync ? function(value) {
setTimeout(function() {
return generatorOrNext(value);
});
} : function(value) {
generatorOrNext(value);
};
if (error) {
errorFn = this._isAsync ? function(err) {
setTimeout(function() {
return error(err);
});
} : function(err) {
error(err);
};
}
if (complete) {
completeFn = this._isAsync ? function() {
setTimeout(function() {
return complete();
});
} : function() {
complete();
};
}
}
return _super.prototype.subscribe.call(this, schedulerFn, errorFn, completeFn);
};
return EventEmitter;
})(Subject_1.Subject);
exports.EventEmitter = EventEmitter;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/metadata/directives", ["angular2/src/facade/lang", "angular2/src/core/di/metadata", "angular2/src/core/change_detection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var metadata_1 = require("angular2/src/core/di/metadata");
var change_detection_1 = require("angular2/src/core/change_detection");
var DirectiveMetadata = (function(_super) {
__extends(DirectiveMetadata, _super);
function DirectiveMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
selector = _b.selector,
inputs = _b.inputs,
outputs = _b.outputs,
properties = _b.properties,
events = _b.events,
host = _b.host,
bindings = _b.bindings,
providers = _b.providers,
exportAs = _b.exportAs,
queries = _b.queries;
_super.call(this);
this.selector = selector;
this._inputs = inputs;
this._properties = properties;
this._outputs = outputs;
this._events = events;
this.host = host;
this.exportAs = exportAs;
this.queries = queries;
this._providers = providers;
this._bindings = bindings;
}
Object.defineProperty(DirectiveMetadata.prototype, "inputs", {
get: function() {
return lang_1.isPresent(this._properties) && this._properties.length > 0 ? this._properties : this._inputs;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DirectiveMetadata.prototype, "properties", {
get: function() {
return this.inputs;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DirectiveMetadata.prototype, "outputs", {
get: function() {
return lang_1.isPresent(this._events) && this._events.length > 0 ? this._events : this._outputs;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DirectiveMetadata.prototype, "events", {
get: function() {
return this.outputs;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DirectiveMetadata.prototype, "providers", {
get: function() {
return lang_1.isPresent(this._bindings) && this._bindings.length > 0 ? this._bindings : this._providers;
},
enumerable: true,
configurable: true
});
Object.defineProperty(DirectiveMetadata.prototype, "bindings", {
get: function() {
return this.providers;
},
enumerable: true,
configurable: true
});
DirectiveMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], DirectiveMetadata);
return DirectiveMetadata;
})(metadata_1.InjectableMetadata);
exports.DirectiveMetadata = DirectiveMetadata;
var ComponentMetadata = (function(_super) {
__extends(ComponentMetadata, _super);
function ComponentMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
selector = _b.selector,
inputs = _b.inputs,
outputs = _b.outputs,
properties = _b.properties,
events = _b.events,
host = _b.host,
exportAs = _b.exportAs,
moduleId = _b.moduleId,
bindings = _b.bindings,
providers = _b.providers,
viewBindings = _b.viewBindings,
viewProviders = _b.viewProviders,
_c = _b.changeDetection,
changeDetection = _c === void 0 ? change_detection_1.ChangeDetectionStrategy.Default : _c,
queries = _b.queries,
templateUrl = _b.templateUrl,
template = _b.template,
styleUrls = _b.styleUrls,
styles = _b.styles,
directives = _b.directives,
pipes = _b.pipes,
encapsulation = _b.encapsulation;
_super.call(this, {
selector: selector,
inputs: inputs,
outputs: outputs,
properties: properties,
events: events,
host: host,
exportAs: exportAs,
bindings: bindings,
providers: providers,
queries: queries
});
this.changeDetection = changeDetection;
this._viewProviders = viewProviders;
this._viewBindings = viewBindings;
this.templateUrl = templateUrl;
this.template = template;
this.styleUrls = styleUrls;
this.styles = styles;
this.directives = directives;
this.pipes = pipes;
this.encapsulation = encapsulation;
this.moduleId = moduleId;
}
Object.defineProperty(ComponentMetadata.prototype, "viewProviders", {
get: function() {
return lang_1.isPresent(this._viewBindings) && this._viewBindings.length > 0 ? this._viewBindings : this._viewProviders;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ComponentMetadata.prototype, "viewBindings", {
get: function() {
return this.viewProviders;
},
enumerable: true,
configurable: true
});
ComponentMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], ComponentMetadata);
return ComponentMetadata;
})(DirectiveMetadata);
exports.ComponentMetadata = ComponentMetadata;
var PipeMetadata = (function(_super) {
__extends(PipeMetadata, _super);
function PipeMetadata(_a) {
var name = _a.name,
pure = _a.pure;
_super.call(this);
this.name = name;
this._pure = pure;
}
Object.defineProperty(PipeMetadata.prototype, "pure", {
get: function() {
return lang_1.isPresent(this._pure) ? this._pure : true;
},
enumerable: true,
configurable: true
});
PipeMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [Object])], PipeMetadata);
return PipeMetadata;
})(metadata_1.InjectableMetadata);
exports.PipeMetadata = PipeMetadata;
var InputMetadata = (function() {
function InputMetadata(bindingPropertyName) {
this.bindingPropertyName = bindingPropertyName;
}
InputMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [String])], InputMetadata);
return InputMetadata;
})();
exports.InputMetadata = InputMetadata;
var OutputMetadata = (function() {
function OutputMetadata(bindingPropertyName) {
this.bindingPropertyName = bindingPropertyName;
}
OutputMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [String])], OutputMetadata);
return OutputMetadata;
})();
exports.OutputMetadata = OutputMetadata;
var HostBindingMetadata = (function() {
function HostBindingMetadata(hostPropertyName) {
this.hostPropertyName = hostPropertyName;
}
HostBindingMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [String])], HostBindingMetadata);
return HostBindingMetadata;
})();
exports.HostBindingMetadata = HostBindingMetadata;
var HostListenerMetadata = (function() {
function HostListenerMetadata(eventName, args) {
this.eventName = eventName;
this.args = args;
}
HostListenerMetadata = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [String, Array])], HostListenerMetadata);
return HostListenerMetadata;
})();
exports.HostListenerMetadata = HostListenerMetadata;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/events/dom_events", ["angular2/src/platform/dom/dom_adapter", "angular2/core", "angular2/src/platform/dom/events/event_manager"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var core_1 = require("angular2/core");
var event_manager_1 = require("angular2/src/platform/dom/events/event_manager");
var DomEventsPlugin = (function(_super) {
__extends(DomEventsPlugin, _super);
function DomEventsPlugin() {
_super.apply(this, arguments);
}
DomEventsPlugin.prototype.supports = function(eventName) {
return true;
};
DomEventsPlugin.prototype.addEventListener = function(element, eventName, handler) {
var zone = this.manager.getZone();
var outsideHandler = function(event) {
return zone.run(function() {
return handler(event);
});
};
return this.manager.getZone().runOutsideAngular(function() {
return dom_adapter_1.DOM.onAndCancel(element, eventName, outsideHandler);
});
};
DomEventsPlugin.prototype.addGlobalEventListener = function(target, eventName, handler) {
var element = dom_adapter_1.DOM.getGlobalEventTarget(target);
var zone = this.manager.getZone();
var outsideHandler = function(event) {
return zone.run(function() {
return handler(event);
});
};
return this.manager.getZone().runOutsideAngular(function() {
return dom_adapter_1.DOM.onAndCancel(element, eventName, outsideHandler);
});
};
DomEventsPlugin = __decorate([core_1.Injectable(), __metadata('design:paramtypes', [])], DomEventsPlugin);
return DomEventsPlugin;
})(event_manager_1.EventManagerPlugin);
exports.DomEventsPlugin = DomEventsPlugin;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/zone/ng_zone", ["angular2/src/facade/async", "angular2/src/core/zone/ng_zone_impl", "angular2/src/facade/exceptions", "angular2/src/core/zone/ng_zone_impl"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var async_1 = require("angular2/src/facade/async");
var ng_zone_impl_1 = require("angular2/src/core/zone/ng_zone_impl");
var exceptions_1 = require("angular2/src/facade/exceptions");
var ng_zone_impl_2 = require("angular2/src/core/zone/ng_zone_impl");
exports.NgZoneError = ng_zone_impl_2.NgZoneError;
var NgZone = (function() {
function NgZone(_a) {
var _this = this;
var _b = _a.enableLongStackTrace,
enableLongStackTrace = _b === void 0 ? false : _b;
this._hasPendingMicrotasks = false;
this._hasPendingMacrotasks = false;
this._isStable = true;
this._nesting = 0;
this._onUnstable = new async_1.EventEmitter(false);
this._onMicrotaskEmpty = new async_1.EventEmitter(false);
this._onStable = new async_1.EventEmitter(false);
this._onErrorEvents = new async_1.EventEmitter(false);
this._zoneImpl = new ng_zone_impl_1.NgZoneImpl({
trace: enableLongStackTrace,
onEnter: function() {
_this._nesting++;
if (_this._isStable) {
_this._isStable = false;
_this._onUnstable.emit(null);
}
},
onLeave: function() {
_this._nesting--;
_this._checkStable();
},
setMicrotask: function(hasMicrotasks) {
_this._hasPendingMicrotasks = hasMicrotasks;
_this._checkStable();
},
setMacrotask: function(hasMacrotasks) {
_this._hasPendingMacrotasks = hasMacrotasks;
},
onError: function(error) {
return _this._onErrorEvents.emit(error);
}
});
}
NgZone.isInAngularZone = function() {
return ng_zone_impl_1.NgZoneImpl.isInAngularZone();
};
NgZone.assertInAngularZone = function() {
if (!ng_zone_impl_1.NgZoneImpl.isInAngularZone()) {
throw new exceptions_1.BaseException('Expected to be in Angular Zone, but it is not!');
}
};
NgZone.assertNotInAngularZone = function() {
if (ng_zone_impl_1.NgZoneImpl.isInAngularZone()) {
throw new exceptions_1.BaseException('Expected to not be in Angular Zone, but it is!');
}
};
NgZone.prototype._checkStable = function() {
var _this = this;
if (this._nesting == 0) {
if (!this._hasPendingMicrotasks && !this._isStable) {
try {
this._nesting++;
this._onMicrotaskEmpty.emit(null);
} finally {
this._nesting--;
if (!this._hasPendingMicrotasks) {
try {
this.runOutsideAngular(function() {
return _this._onStable.emit(null);
});
} finally {
this._isStable = true;
}
}
}
}
}
};
;
Object.defineProperty(NgZone.prototype, "onUnstable", {
get: function() {
return this._onUnstable;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgZone.prototype, "onMicrotaskEmpty", {
get: function() {
return this._onMicrotaskEmpty;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgZone.prototype, "onStable", {
get: function() {
return this._onStable;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgZone.prototype, "onError", {
get: function() {
return this._onErrorEvents;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgZone.prototype, "hasPendingMicrotasks", {
get: function() {
return this._hasPendingMicrotasks;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgZone.prototype, "hasPendingMacrotasks", {
get: function() {
return this._hasPendingMacrotasks;
},
enumerable: true,
configurable: true
});
NgZone.prototype.run = function(fn) {
return this._zoneImpl.runInner(fn);
};
NgZone.prototype.runOutsideAngular = function(fn) {
return this._zoneImpl.runOuter(fn);
};
return NgZone;
})();
exports.NgZone = NgZone;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/metadata", ["angular2/src/core/metadata/di", "angular2/src/core/metadata/directives", "angular2/src/core/metadata/view", "angular2/src/core/metadata/di", "angular2/src/core/metadata/directives", "angular2/src/core/metadata/view", "angular2/src/core/util/decorators"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var di_1 = require("angular2/src/core/metadata/di");
exports.QueryMetadata = di_1.QueryMetadata;
exports.ContentChildrenMetadata = di_1.ContentChildrenMetadata;
exports.ContentChildMetadata = di_1.ContentChildMetadata;
exports.ViewChildrenMetadata = di_1.ViewChildrenMetadata;
exports.ViewQueryMetadata = di_1.ViewQueryMetadata;
exports.ViewChildMetadata = di_1.ViewChildMetadata;
exports.AttributeMetadata = di_1.AttributeMetadata;
var directives_1 = require("angular2/src/core/metadata/directives");
exports.ComponentMetadata = directives_1.ComponentMetadata;
exports.DirectiveMetadata = directives_1.DirectiveMetadata;
exports.PipeMetadata = directives_1.PipeMetadata;
exports.InputMetadata = directives_1.InputMetadata;
exports.OutputMetadata = directives_1.OutputMetadata;
exports.HostBindingMetadata = directives_1.HostBindingMetadata;
exports.HostListenerMetadata = directives_1.HostListenerMetadata;
var view_1 = require("angular2/src/core/metadata/view");
exports.ViewMetadata = view_1.ViewMetadata;
exports.ViewEncapsulation = view_1.ViewEncapsulation;
var di_2 = require("angular2/src/core/metadata/di");
var directives_2 = require("angular2/src/core/metadata/directives");
var view_2 = require("angular2/src/core/metadata/view");
var decorators_1 = require("angular2/src/core/util/decorators");
exports.Component = decorators_1.makeDecorator(directives_2.ComponentMetadata, function(fn) {
return fn.View = View;
});
exports.Directive = decorators_1.makeDecorator(directives_2.DirectiveMetadata);
var View = decorators_1.makeDecorator(view_2.ViewMetadata, function(fn) {
return fn.View = View;
});
exports.Attribute = decorators_1.makeParamDecorator(di_2.AttributeMetadata);
exports.Query = decorators_1.makeParamDecorator(di_2.QueryMetadata);
exports.ContentChildren = decorators_1.makePropDecorator(di_2.ContentChildrenMetadata);
exports.ContentChild = decorators_1.makePropDecorator(di_2.ContentChildMetadata);
exports.ViewChildren = decorators_1.makePropDecorator(di_2.ViewChildrenMetadata);
exports.ViewChild = decorators_1.makePropDecorator(di_2.ViewChildMetadata);
exports.ViewQuery = decorators_1.makeParamDecorator(di_2.ViewQueryMetadata);
exports.Pipe = decorators_1.makeDecorator(directives_2.PipeMetadata);
exports.Input = decorators_1.makePropDecorator(directives_2.InputMetadata);
exports.Output = decorators_1.makePropDecorator(directives_2.OutputMetadata);
exports.HostBinding = decorators_1.makePropDecorator(directives_2.HostBindingMetadata);
exports.HostListener = decorators_1.makePropDecorator(directives_2.HostListenerMetadata);
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/events/event_manager", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/core/di", "angular2/src/core/zone/ng_zone", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var di_1 = require("angular2/src/core/di");
var ng_zone_1 = require("angular2/src/core/zone/ng_zone");
var collection_1 = require("angular2/src/facade/collection");
exports.EVENT_MANAGER_PLUGINS = lang_1.CONST_EXPR(new di_1.OpaqueToken("EventManagerPlugins"));
var EventManager = (function() {
function EventManager(plugins, _zone) {
var _this = this;
this._zone = _zone;
plugins.forEach(function(p) {
return p.manager = _this;
});
this._plugins = collection_1.ListWrapper.reversed(plugins);
}
EventManager.prototype.addEventListener = function(element, eventName, handler) {
var plugin = this._findPluginFor(eventName);
return plugin.addEventListener(element, eventName, handler);
};
EventManager.prototype.addGlobalEventListener = function(target, eventName, handler) {
var plugin = this._findPluginFor(eventName);
return plugin.addGlobalEventListener(target, eventName, handler);
};
EventManager.prototype.getZone = function() {
return this._zone;
};
EventManager.prototype._findPluginFor = function(eventName) {
var plugins = this._plugins;
for (var i = 0; i < plugins.length; i++) {
var plugin = plugins[i];
if (plugin.supports(eventName)) {
return plugin;
}
}
throw new exceptions_1.BaseException("No event manager plugin found for event " + eventName);
};
EventManager = __decorate([di_1.Injectable(), __param(0, di_1.Inject(exports.EVENT_MANAGER_PLUGINS)), __metadata('design:paramtypes', [Array, ng_zone_1.NgZone])], EventManager);
return EventManager;
})();
exports.EventManager = EventManager;
var EventManagerPlugin = (function() {
function EventManagerPlugin() {}
EventManagerPlugin.prototype.supports = function(eventName) {
return false;
};
EventManagerPlugin.prototype.addEventListener = function(element, eventName, handler) {
throw "not implemented";
};
EventManagerPlugin.prototype.addGlobalEventListener = function(element, eventName, handler) {
throw "not implemented";
};
return EventManagerPlugin;
})();
exports.EventManagerPlugin = EventManagerPlugin;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/dom_renderer", ["angular2/src/core/di", "angular2/src/animate/animation_builder", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/platform/dom/shared_styles_host", "angular2/src/platform/dom/events/event_manager", "angular2/src/platform/dom/dom_tokens", "angular2/src/core/metadata", "angular2/src/platform/dom/dom_adapter", "angular2/src/platform/dom/util"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var di_1 = require("angular2/src/core/di");
var animation_builder_1 = require("angular2/src/animate/animation_builder");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var shared_styles_host_1 = require("angular2/src/platform/dom/shared_styles_host");
var event_manager_1 = require("angular2/src/platform/dom/events/event_manager");
var dom_tokens_1 = require("angular2/src/platform/dom/dom_tokens");
var metadata_1 = require("angular2/src/core/metadata");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var util_1 = require("angular2/src/platform/dom/util");
var NAMESPACE_URIS = lang_1.CONST_EXPR({
'xlink': 'http://www.w3.org/1999/xlink',
'svg': 'http://www.w3.org/2000/svg'
});
var TEMPLATE_COMMENT_TEXT = 'template bindings={}';
var TEMPLATE_BINDINGS_EXP = /^template bindings=(.*)$/g;
var DomRootRenderer = (function() {
function DomRootRenderer(document, eventManager, sharedStylesHost, animate) {
this.document = document;
this.eventManager = eventManager;
this.sharedStylesHost = sharedStylesHost;
this.animate = animate;
this._registeredComponents = new Map();
}
DomRootRenderer.prototype.renderComponent = function(componentProto) {
var renderer = this._registeredComponents.get(componentProto.id);
if (lang_1.isBlank(renderer)) {
renderer = new DomRenderer(this, componentProto);
this._registeredComponents.set(componentProto.id, renderer);
}
return renderer;
};
return DomRootRenderer;
})();
exports.DomRootRenderer = DomRootRenderer;
var DomRootRenderer_ = (function(_super) {
__extends(DomRootRenderer_, _super);
function DomRootRenderer_(_document, _eventManager, sharedStylesHost, animate) {
_super.call(this, _document, _eventManager, sharedStylesHost, animate);
}
DomRootRenderer_ = __decorate([di_1.Injectable(), __param(0, di_1.Inject(dom_tokens_1.DOCUMENT)), __metadata('design:paramtypes', [Object, event_manager_1.EventManager, shared_styles_host_1.DomSharedStylesHost, animation_builder_1.AnimationBuilder])], DomRootRenderer_);
return DomRootRenderer_;
})(DomRootRenderer);
exports.DomRootRenderer_ = DomRootRenderer_;
var DomRenderer = (function() {
function DomRenderer(_rootRenderer, componentProto) {
this._rootRenderer = _rootRenderer;
this.componentProto = componentProto;
this._styles = _flattenStyles(componentProto.id, componentProto.styles, []);
if (componentProto.encapsulation !== metadata_1.ViewEncapsulation.Native) {
this._rootRenderer.sharedStylesHost.addStyles(this._styles);
}
if (this.componentProto.encapsulation === metadata_1.ViewEncapsulation.Emulated) {
this._contentAttr = _shimContentAttribute(componentProto.id);
this._hostAttr = _shimHostAttribute(componentProto.id);
} else {
this._contentAttr = null;
this._hostAttr = null;
}
}
DomRenderer.prototype.renderComponent = function(componentProto) {
return this._rootRenderer.renderComponent(componentProto);
};
DomRenderer.prototype.selectRootElement = function(selector) {
var el = dom_adapter_1.DOM.querySelector(this._rootRenderer.document, selector);
if (lang_1.isBlank(el)) {
throw new exceptions_1.BaseException("The selector \"" + selector + "\" did not match any elements");
}
dom_adapter_1.DOM.clearNodes(el);
return el;
};
DomRenderer.prototype.createElement = function(parent, name) {
var nsAndName = splitNamespace(name);
var el = lang_1.isPresent(nsAndName[0]) ? dom_adapter_1.DOM.createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) : dom_adapter_1.DOM.createElement(nsAndName[1]);
if (lang_1.isPresent(this._contentAttr)) {
dom_adapter_1.DOM.setAttribute(el, this._contentAttr, '');
}
if (lang_1.isPresent(parent)) {
dom_adapter_1.DOM.appendChild(parent, el);
}
return el;
};
DomRenderer.prototype.createViewRoot = function(hostElement) {
var nodesParent;
if (this.componentProto.encapsulation === metadata_1.ViewEncapsulation.Native) {
nodesParent = dom_adapter_1.DOM.createShadowRoot(hostElement);
this._rootRenderer.sharedStylesHost.addHost(nodesParent);
for (var i = 0; i < this._styles.length; i++) {
dom_adapter_1.DOM.appendChild(nodesParent, dom_adapter_1.DOM.createStyleElement(this._styles[i]));
}
} else {
if (lang_1.isPresent(this._hostAttr)) {
dom_adapter_1.DOM.setAttribute(hostElement, this._hostAttr, '');
}
nodesParent = hostElement;
}
return nodesParent;
};
DomRenderer.prototype.createTemplateAnchor = function(parentElement) {
var comment = dom_adapter_1.DOM.createComment(TEMPLATE_COMMENT_TEXT);
if (lang_1.isPresent(parentElement)) {
dom_adapter_1.DOM.appendChild(parentElement, comment);
}
return comment;
};
DomRenderer.prototype.createText = function(parentElement, value) {
var node = dom_adapter_1.DOM.createTextNode(value);
if (lang_1.isPresent(parentElement)) {
dom_adapter_1.DOM.appendChild(parentElement, node);
}
return node;
};
DomRenderer.prototype.projectNodes = function(parentElement, nodes) {
if (lang_1.isBlank(parentElement))
return ;
appendNodes(parentElement, nodes);
};
DomRenderer.prototype.attachViewAfter = function(node, viewRootNodes) {
moveNodesAfterSibling(node, viewRootNodes);
for (var i = 0; i < viewRootNodes.length; i++)
this.animateNodeEnter(viewRootNodes[i]);
};
DomRenderer.prototype.detachView = function(viewRootNodes) {
for (var i = 0; i < viewRootNodes.length; i++) {
var node = viewRootNodes[i];
dom_adapter_1.DOM.remove(node);
this.animateNodeLeave(node);
}
};
DomRenderer.prototype.destroyView = function(hostElement, viewAllNodes) {
if (this.componentProto.encapsulation === metadata_1.ViewEncapsulation.Native && lang_1.isPresent(hostElement)) {
this._rootRenderer.sharedStylesHost.removeHost(dom_adapter_1.DOM.getShadowRoot(hostElement));
}
};
DomRenderer.prototype.listen = function(renderElement, name, callback) {
return this._rootRenderer.eventManager.addEventListener(renderElement, name, decoratePreventDefault(callback));
};
DomRenderer.prototype.listenGlobal = function(target, name, callback) {
return this._rootRenderer.eventManager.addGlobalEventListener(target, name, decoratePreventDefault(callback));
};
DomRenderer.prototype.setElementProperty = function(renderElement, propertyName, propertyValue) {
dom_adapter_1.DOM.setProperty(renderElement, propertyName, propertyValue);
};
DomRenderer.prototype.setElementAttribute = function(renderElement, attributeName, attributeValue) {
var attrNs;
var nsAndName = splitNamespace(attributeName);
if (lang_1.isPresent(nsAndName[0])) {
attributeName = nsAndName[0] + ':' + nsAndName[1];
attrNs = NAMESPACE_URIS[nsAndName[0]];
}
if (lang_1.isPresent(attributeValue)) {
if (lang_1.isPresent(attrNs)) {
dom_adapter_1.DOM.setAttributeNS(renderElement, attrNs, attributeName, attributeValue);
} else {
dom_adapter_1.DOM.setAttribute(renderElement, attributeName, attributeValue);
}
} else {
if (lang_1.isPresent(attrNs)) {
dom_adapter_1.DOM.removeAttributeNS(renderElement, attrNs, nsAndName[1]);
} else {
dom_adapter_1.DOM.removeAttribute(renderElement, attributeName);
}
}
};
DomRenderer.prototype.setBindingDebugInfo = function(renderElement, propertyName, propertyValue) {
var dashCasedPropertyName = util_1.camelCaseToDashCase(propertyName);
if (dom_adapter_1.DOM.isCommentNode(renderElement)) {
var existingBindings = lang_1.RegExpWrapper.firstMatch(TEMPLATE_BINDINGS_EXP, lang_1.StringWrapper.replaceAll(dom_adapter_1.DOM.getText(renderElement), /\n/g, ''));
var parsedBindings = lang_1.Json.parse(existingBindings[1]);
parsedBindings[dashCasedPropertyName] = propertyValue;
dom_adapter_1.DOM.setText(renderElement, lang_1.StringWrapper.replace(TEMPLATE_COMMENT_TEXT, '{}', lang_1.Json.stringify(parsedBindings)));
} else {
this.setElementAttribute(renderElement, propertyName, propertyValue);
}
};
DomRenderer.prototype.setElementDebugInfo = function(renderElement, info) {};
DomRenderer.prototype.setElementClass = function(renderElement, className, isAdd) {
if (isAdd) {
dom_adapter_1.DOM.addClass(renderElement, className);
} else {
dom_adapter_1.DOM.removeClass(renderElement, className);
}
};
DomRenderer.prototype.setElementStyle = function(renderElement, styleName, styleValue) {
if (lang_1.isPresent(styleValue)) {
dom_adapter_1.DOM.setStyle(renderElement, styleName, lang_1.stringify(styleValue));
} else {
dom_adapter_1.DOM.removeStyle(renderElement, styleName);
}
};
DomRenderer.prototype.invokeElementMethod = function(renderElement, methodName, args) {
dom_adapter_1.DOM.invoke(renderElement, methodName, args);
};
DomRenderer.prototype.setText = function(renderNode, text) {
dom_adapter_1.DOM.setText(renderNode, text);
};
DomRenderer.prototype.animateNodeEnter = function(node) {
if (dom_adapter_1.DOM.isElementNode(node) && dom_adapter_1.DOM.hasClass(node, 'ng-animate')) {
dom_adapter_1.DOM.addClass(node, 'ng-enter');
this._rootRenderer.animate.css().addAnimationClass('ng-enter-active').start(node).onComplete(function() {
dom_adapter_1.DOM.removeClass(node, 'ng-enter');
});
}
};
DomRenderer.prototype.animateNodeLeave = function(node) {
if (dom_adapter_1.DOM.isElementNode(node) && dom_adapter_1.DOM.hasClass(node, 'ng-animate')) {
dom_adapter_1.DOM.addClass(node, 'ng-leave');
this._rootRenderer.animate.css().addAnimationClass('ng-leave-active').start(node).onComplete(function() {
dom_adapter_1.DOM.removeClass(node, 'ng-leave');
dom_adapter_1.DOM.remove(node);
});
} else {
dom_adapter_1.DOM.remove(node);
}
};
return DomRenderer;
})();
exports.DomRenderer = DomRenderer;
function moveNodesAfterSibling(sibling, nodes) {
var parent = dom_adapter_1.DOM.parentElement(sibling);
if (nodes.length > 0 && lang_1.isPresent(parent)) {
var nextSibling = dom_adapter_1.DOM.nextSibling(sibling);
if (lang_1.isPresent(nextSibling)) {
for (var i = 0; i < nodes.length; i++) {
dom_adapter_1.DOM.insertBefore(nextSibling, nodes[i]);
}
} else {
for (var i = 0; i < nodes.length; i++) {
dom_adapter_1.DOM.appendChild(parent, nodes[i]);
}
}
}
}
function appendNodes(parent, nodes) {
for (var i = 0; i < nodes.length; i++) {
dom_adapter_1.DOM.appendChild(parent, nodes[i]);
}
}
function decoratePreventDefault(eventHandler) {
return function(event) {
var allowDefaultBehavior = eventHandler(event);
if (allowDefaultBehavior === false) {
dom_adapter_1.DOM.preventDefault(event);
}
};
}
var COMPONENT_REGEX = /%COMP%/g;
exports.COMPONENT_VARIABLE = '%COMP%';
exports.HOST_ATTR = "_nghost-" + exports.COMPONENT_VARIABLE;
exports.CONTENT_ATTR = "_ngcontent-" + exports.COMPONENT_VARIABLE;
function _shimContentAttribute(componentShortId) {
return lang_1.StringWrapper.replaceAll(exports.CONTENT_ATTR, COMPONENT_REGEX, componentShortId);
}
function _shimHostAttribute(componentShortId) {
return lang_1.StringWrapper.replaceAll(exports.HOST_ATTR, COMPONENT_REGEX, componentShortId);
}
function _flattenStyles(compId, styles, target) {
for (var i = 0; i < styles.length; i++) {
var style = styles[i];
if (lang_1.isArray(style)) {
_flattenStyles(compId, style, target);
} else {
style = lang_1.StringWrapper.replaceAll(style, COMPONENT_REGEX, compId);
target.push(style);
}
}
return target;
}
var NS_PREFIX_RE = /^@([^:]+):(.+)/g;
function splitNamespace(name) {
if (name[0] != '@') {
return [null, name];
}
var match = lang_1.RegExpWrapper.firstMatch(NS_PREFIX_RE, name);
return [match[1], match[2]];
}
global.define = __define;
return module.exports;
});
System.register("angular2/platform/common_dom", ["angular2/src/platform/dom/dom_adapter", "angular2/src/platform/dom/dom_renderer", "angular2/src/platform/dom/dom_tokens", "angular2/src/platform/dom/shared_styles_host", "angular2/src/platform/dom/events/dom_events", "angular2/src/platform/dom/events/event_manager", "angular2/src/platform/dom/debug/by", "angular2/src/platform/dom/debug/ng_probe"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function __export(m) {
for (var p in m)
if (!exports.hasOwnProperty(p))
exports[p] = m[p];
}
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
exports.DOM = dom_adapter_1.DOM;
exports.setRootDomAdapter = dom_adapter_1.setRootDomAdapter;
exports.DomAdapter = dom_adapter_1.DomAdapter;
var dom_renderer_1 = require("angular2/src/platform/dom/dom_renderer");
exports.DomRenderer = dom_renderer_1.DomRenderer;
var dom_tokens_1 = require("angular2/src/platform/dom/dom_tokens");
exports.DOCUMENT = dom_tokens_1.DOCUMENT;
var shared_styles_host_1 = require("angular2/src/platform/dom/shared_styles_host");
exports.SharedStylesHost = shared_styles_host_1.SharedStylesHost;
exports.DomSharedStylesHost = shared_styles_host_1.DomSharedStylesHost;
var dom_events_1 = require("angular2/src/platform/dom/events/dom_events");
exports.DomEventsPlugin = dom_events_1.DomEventsPlugin;
var event_manager_1 = require("angular2/src/platform/dom/events/event_manager");
exports.EVENT_MANAGER_PLUGINS = event_manager_1.EVENT_MANAGER_PLUGINS;
exports.EventManager = event_manager_1.EventManager;
exports.EventManagerPlugin = event_manager_1.EventManagerPlugin;
__export(require("angular2/src/platform/dom/debug/by"));
__export(require("angular2/src/platform/dom/debug/ng_probe"));
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/invalid_pipe_argument_exception", ["angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var InvalidPipeArgumentException = (function(_super) {
__extends(InvalidPipeArgumentException, _super);
function InvalidPipeArgumentException(type, value) {
_super.call(this, "Invalid argument '" + value + "' for pipe '" + lang_1.stringify(type) + "'");
}
return InvalidPipeArgumentException;
})(exceptions_1.BaseException);
exports.InvalidPipeArgumentException = InvalidPipeArgumentException;
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/intl", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
(function(NumberFormatStyle) {
NumberFormatStyle[NumberFormatStyle["Decimal"] = 0] = "Decimal";
NumberFormatStyle[NumberFormatStyle["Percent"] = 1] = "Percent";
NumberFormatStyle[NumberFormatStyle["Currency"] = 2] = "Currency";
})(exports.NumberFormatStyle || (exports.NumberFormatStyle = {}));
var NumberFormatStyle = exports.NumberFormatStyle;
var NumberFormatter = (function() {
function NumberFormatter() {}
NumberFormatter.format = function(num, locale, style, _a) {
var _b = _a === void 0 ? {} : _a,
_c = _b.minimumIntegerDigits,
minimumIntegerDigits = _c === void 0 ? 1 : _c,
_d = _b.minimumFractionDigits,
minimumFractionDigits = _d === void 0 ? 0 : _d,
_e = _b.maximumFractionDigits,
maximumFractionDigits = _e === void 0 ? 3 : _e,
currency = _b.currency,
_f = _b.currencyAsSymbol,
currencyAsSymbol = _f === void 0 ? false : _f;
var intlOptions = {
minimumIntegerDigits: minimumIntegerDigits,
minimumFractionDigits: minimumFractionDigits,
maximumFractionDigits: maximumFractionDigits
};
intlOptions.style = NumberFormatStyle[style].toLowerCase();
if (style == NumberFormatStyle.Currency) {
intlOptions.currency = currency;
intlOptions.currencyDisplay = currencyAsSymbol ? 'symbol' : 'code';
}
return new Intl.NumberFormat(locale, intlOptions).format(num);
};
return NumberFormatter;
})();
exports.NumberFormatter = NumberFormatter;
function digitCondition(len) {
return len == 2 ? '2-digit' : 'numeric';
}
function nameCondition(len) {
return len < 4 ? 'short' : 'long';
}
function extractComponents(pattern) {
var ret = {};
var i = 0,
j;
while (i < pattern.length) {
j = i;
while (j < pattern.length && pattern[j] == pattern[i])
j++;
var len = j - i;
switch (pattern[i]) {
case 'G':
ret.era = nameCondition(len);
break;
case 'y':
ret.year = digitCondition(len);
break;
case 'M':
if (len >= 3)
ret.month = nameCondition(len);
else
ret.month = digitCondition(len);
break;
case 'd':
ret.day = digitCondition(len);
break;
case 'E':
ret.weekday = nameCondition(len);
break;
case 'j':
ret.hour = digitCondition(len);
break;
case 'h':
ret.hour = digitCondition(len);
ret.hour12 = true;
break;
case 'H':
ret.hour = digitCondition(len);
ret.hour12 = false;
break;
case 'm':
ret.minute = digitCondition(len);
break;
case 's':
ret.second = digitCondition(len);
break;
case 'z':
ret.timeZoneName = 'long';
break;
case 'Z':
ret.timeZoneName = 'short';
break;
}
i = j;
}
return ret;
}
var dateFormatterCache = new Map();
var DateFormatter = (function() {
function DateFormatter() {}
DateFormatter.format = function(date, locale, pattern) {
var key = locale + pattern;
if (dateFormatterCache.has(key)) {
return dateFormatterCache.get(key).format(date);
}
var formatter = new Intl.DateTimeFormat(locale, extractComponents(pattern));
dateFormatterCache.set(key, formatter);
return formatter.format(date);
};
return DateFormatter;
})();
exports.DateFormatter = DateFormatter;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/json_pipe", ["angular2/src/facade/lang", "angular2/core"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var core_1 = require("angular2/core");
var JsonPipe = (function() {
function JsonPipe() {}
JsonPipe.prototype.transform = function(value, args) {
if (args === void 0) {
args = null;
}
return lang_1.Json.stringify(value);
};
JsonPipe = __decorate([lang_1.CONST(), core_1.Pipe({
name: 'json',
pure: false
}), core_1.Injectable(), __metadata('design:paramtypes', [])], JsonPipe);
return JsonPipe;
})();
exports.JsonPipe = JsonPipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/slice_pipe", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/core", "angular2/src/common/pipes/invalid_pipe_argument_exception"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var core_1 = require("angular2/core");
var invalid_pipe_argument_exception_1 = require("angular2/src/common/pipes/invalid_pipe_argument_exception");
var SlicePipe = (function() {
function SlicePipe() {}
SlicePipe.prototype.transform = function(value, args) {
if (args === void 0) {
args = null;
}
if (lang_1.isBlank(args) || args.length == 0) {
throw new exceptions_1.BaseException('Slice pipe requires one argument');
}
if (!this.supports(value)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(SlicePipe, value);
}
if (lang_1.isBlank(value))
return value;
var start = args[0];
var end = args.length > 1 ? args[1] : null;
if (lang_1.isString(value)) {
return lang_1.StringWrapper.slice(value, start, end);
}
return collection_1.ListWrapper.slice(value, start, end);
};
SlicePipe.prototype.supports = function(obj) {
return lang_1.isString(obj) || lang_1.isArray(obj);
};
SlicePipe = __decorate([core_1.Pipe({
name: 'slice',
pure: false
}), core_1.Injectable(), __metadata('design:paramtypes', [])], SlicePipe);
return SlicePipe;
})();
exports.SlicePipe = SlicePipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/lowercase_pipe", ["angular2/src/facade/lang", "angular2/core", "angular2/src/common/pipes/invalid_pipe_argument_exception"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var core_1 = require("angular2/core");
var invalid_pipe_argument_exception_1 = require("angular2/src/common/pipes/invalid_pipe_argument_exception");
var LowerCasePipe = (function() {
function LowerCasePipe() {}
LowerCasePipe.prototype.transform = function(value, args) {
if (args === void 0) {
args = null;
}
if (lang_1.isBlank(value))
return value;
if (!lang_1.isString(value)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(LowerCasePipe, value);
}
return value.toLowerCase();
};
LowerCasePipe = __decorate([lang_1.CONST(), core_1.Pipe({name: 'lowercase'}), core_1.Injectable(), __metadata('design:paramtypes', [])], LowerCasePipe);
return LowerCasePipe;
})();
exports.LowerCasePipe = LowerCasePipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/number_pipe", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/intl", "angular2/core", "angular2/src/facade/collection", "angular2/src/common/pipes/invalid_pipe_argument_exception"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var intl_1 = require("angular2/src/facade/intl");
var core_1 = require("angular2/core");
var collection_1 = require("angular2/src/facade/collection");
var invalid_pipe_argument_exception_1 = require("angular2/src/common/pipes/invalid_pipe_argument_exception");
var defaultLocale = 'en-US';
var _re = lang_1.RegExpWrapper.create('^(\\d+)?\\.((\\d+)(\\-(\\d+))?)?$');
var NumberPipe = (function() {
function NumberPipe() {}
NumberPipe._format = function(value, style, digits, currency, currencyAsSymbol) {
if (currency === void 0) {
currency = null;
}
if (currencyAsSymbol === void 0) {
currencyAsSymbol = false;
}
if (lang_1.isBlank(value))
return null;
if (!lang_1.isNumber(value)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(NumberPipe, value);
}
var minInt = 1,
minFraction = 0,
maxFraction = 3;
if (lang_1.isPresent(digits)) {
var parts = lang_1.RegExpWrapper.firstMatch(_re, digits);
if (lang_1.isBlank(parts)) {
throw new exceptions_1.BaseException(digits + " is not a valid digit info for number pipes");
}
if (lang_1.isPresent(parts[1])) {
minInt = lang_1.NumberWrapper.parseIntAutoRadix(parts[1]);
}
if (lang_1.isPresent(parts[3])) {
minFraction = lang_1.NumberWrapper.parseIntAutoRadix(parts[3]);
}
if (lang_1.isPresent(parts[5])) {
maxFraction = lang_1.NumberWrapper.parseIntAutoRadix(parts[5]);
}
}
return intl_1.NumberFormatter.format(value, defaultLocale, style, {
minimumIntegerDigits: minInt,
minimumFractionDigits: minFraction,
maximumFractionDigits: maxFraction,
currency: currency,
currencyAsSymbol: currencyAsSymbol
});
};
NumberPipe = __decorate([lang_1.CONST(), core_1.Injectable(), __metadata('design:paramtypes', [])], NumberPipe);
return NumberPipe;
})();
exports.NumberPipe = NumberPipe;
var DecimalPipe = (function(_super) {
__extends(DecimalPipe, _super);
function DecimalPipe() {
_super.apply(this, arguments);
}
DecimalPipe.prototype.transform = function(value, args) {
var digits = collection_1.ListWrapper.first(args);
return NumberPipe._format(value, intl_1.NumberFormatStyle.Decimal, digits);
};
DecimalPipe = __decorate([lang_1.CONST(), core_1.Pipe({name: 'number'}), core_1.Injectable(), __metadata('design:paramtypes', [])], DecimalPipe);
return DecimalPipe;
})(NumberPipe);
exports.DecimalPipe = DecimalPipe;
var PercentPipe = (function(_super) {
__extends(PercentPipe, _super);
function PercentPipe() {
_super.apply(this, arguments);
}
PercentPipe.prototype.transform = function(value, args) {
var digits = collection_1.ListWrapper.first(args);
return NumberPipe._format(value, intl_1.NumberFormatStyle.Percent, digits);
};
PercentPipe = __decorate([lang_1.CONST(), core_1.Pipe({name: 'percent'}), core_1.Injectable(), __metadata('design:paramtypes', [])], PercentPipe);
return PercentPipe;
})(NumberPipe);
exports.PercentPipe = PercentPipe;
var CurrencyPipe = (function(_super) {
__extends(CurrencyPipe, _super);
function CurrencyPipe() {
_super.apply(this, arguments);
}
CurrencyPipe.prototype.transform = function(value, args) {
var currencyCode = lang_1.isPresent(args) && args.length > 0 ? args[0] : 'USD';
var symbolDisplay = lang_1.isPresent(args) && args.length > 1 ? args[1] : false;
var digits = lang_1.isPresent(args) && args.length > 2 ? args[2] : null;
return NumberPipe._format(value, intl_1.NumberFormatStyle.Currency, digits, currencyCode, symbolDisplay);
};
CurrencyPipe = __decorate([lang_1.CONST(), core_1.Pipe({name: 'currency'}), core_1.Injectable(), __metadata('design:paramtypes', [])], CurrencyPipe);
return CurrencyPipe;
})(NumberPipe);
exports.CurrencyPipe = CurrencyPipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/uppercase_pipe", ["angular2/src/facade/lang", "angular2/core", "angular2/src/common/pipes/invalid_pipe_argument_exception"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var core_1 = require("angular2/core");
var invalid_pipe_argument_exception_1 = require("angular2/src/common/pipes/invalid_pipe_argument_exception");
var UpperCasePipe = (function() {
function UpperCasePipe() {}
UpperCasePipe.prototype.transform = function(value, args) {
if (args === void 0) {
args = null;
}
if (lang_1.isBlank(value))
return value;
if (!lang_1.isString(value)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(UpperCasePipe, value);
}
return value.toUpperCase();
};
UpperCasePipe = __decorate([lang_1.CONST(), core_1.Pipe({name: 'uppercase'}), core_1.Injectable(), __metadata('design:paramtypes', [])], UpperCasePipe);
return UpperCasePipe;
})();
exports.UpperCasePipe = UpperCasePipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/replace_pipe", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/core", "angular2/src/common/pipes/invalid_pipe_argument_exception"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var core_1 = require("angular2/core");
var invalid_pipe_argument_exception_1 = require("angular2/src/common/pipes/invalid_pipe_argument_exception");
var ReplacePipe = (function() {
function ReplacePipe() {}
ReplacePipe.prototype.transform = function(value, args) {
if (lang_1.isBlank(args) || args.length !== 2) {
throw new exceptions_1.BaseException('ReplacePipe requires two arguments');
}
if (lang_1.isBlank(value)) {
return value;
}
if (!this._supportedInput(value)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(ReplacePipe, value);
}
var input = value.toString();
var pattern = args[0];
var replacement = args[1];
if (!this._supportedPattern(pattern)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(ReplacePipe, pattern);
}
if (!this._supportedReplacement(replacement)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(ReplacePipe, replacement);
}
if (lang_1.isFunction(replacement)) {
var rgxPattern = lang_1.isString(pattern) ? lang_1.RegExpWrapper.create(pattern) : pattern;
return lang_1.StringWrapper.replaceAllMapped(input, rgxPattern, replacement);
}
if (pattern instanceof RegExp) {
return lang_1.StringWrapper.replaceAll(input, pattern, replacement);
}
return lang_1.StringWrapper.replace(input, pattern, replacement);
};
ReplacePipe.prototype._supportedInput = function(input) {
return lang_1.isString(input) || lang_1.isNumber(input);
};
ReplacePipe.prototype._supportedPattern = function(pattern) {
return lang_1.isString(pattern) || pattern instanceof RegExp;
};
ReplacePipe.prototype._supportedReplacement = function(replacement) {
return lang_1.isString(replacement) || lang_1.isFunction(replacement);
};
ReplacePipe = __decorate([core_1.Pipe({name: 'replace'}), core_1.Injectable(), __metadata('design:paramtypes', [])], ReplacePipe);
return ReplacePipe;
})();
exports.ReplacePipe = ReplacePipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/i18n_plural_pipe", ["angular2/src/facade/lang", "angular2/core", "angular2/src/common/pipes/invalid_pipe_argument_exception"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var core_1 = require("angular2/core");
var invalid_pipe_argument_exception_1 = require("angular2/src/common/pipes/invalid_pipe_argument_exception");
var interpolationExp = lang_1.RegExpWrapper.create('#');
var I18nPluralPipe = (function() {
function I18nPluralPipe() {}
I18nPluralPipe.prototype.transform = function(value, args) {
if (args === void 0) {
args = null;
}
var key;
var valueStr;
var pluralMap = (args[0]);
if (!lang_1.isStringMap(pluralMap)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(I18nPluralPipe, pluralMap);
}
key = value === 0 || value === 1 ? "=" + value : 'other';
valueStr = lang_1.isPresent(value) ? value.toString() : '';
return lang_1.StringWrapper.replaceAll(pluralMap[key], interpolationExp, valueStr);
};
I18nPluralPipe = __decorate([lang_1.CONST(), core_1.Pipe({
name: 'i18nPlural',
pure: true
}), core_1.Injectable(), __metadata('design:paramtypes', [])], I18nPluralPipe);
return I18nPluralPipe;
})();
exports.I18nPluralPipe = I18nPluralPipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/i18n_select_pipe", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/core", "angular2/src/common/pipes/invalid_pipe_argument_exception"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var core_1 = require("angular2/core");
var invalid_pipe_argument_exception_1 = require("angular2/src/common/pipes/invalid_pipe_argument_exception");
var I18nSelectPipe = (function() {
function I18nSelectPipe() {}
I18nSelectPipe.prototype.transform = function(value, args) {
if (args === void 0) {
args = null;
}
var mapping = (args[0]);
if (!lang_1.isStringMap(mapping)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(I18nSelectPipe, mapping);
}
return collection_1.StringMapWrapper.contains(mapping, value) ? mapping[value] : mapping['other'];
};
I18nSelectPipe = __decorate([lang_1.CONST(), core_1.Pipe({
name: 'i18nSelect',
pure: true
}), core_1.Injectable(), __metadata('design:paramtypes', [])], I18nSelectPipe);
return I18nSelectPipe;
})();
exports.I18nSelectPipe = I18nSelectPipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/common_pipes", ["angular2/src/common/pipes/async_pipe", "angular2/src/common/pipes/uppercase_pipe", "angular2/src/common/pipes/lowercase_pipe", "angular2/src/common/pipes/json_pipe", "angular2/src/common/pipes/slice_pipe", "angular2/src/common/pipes/date_pipe", "angular2/src/common/pipes/number_pipe", "angular2/src/common/pipes/replace_pipe", "angular2/src/common/pipes/i18n_plural_pipe", "angular2/src/common/pipes/i18n_select_pipe", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var async_pipe_1 = require("angular2/src/common/pipes/async_pipe");
var uppercase_pipe_1 = require("angular2/src/common/pipes/uppercase_pipe");
var lowercase_pipe_1 = require("angular2/src/common/pipes/lowercase_pipe");
var json_pipe_1 = require("angular2/src/common/pipes/json_pipe");
var slice_pipe_1 = require("angular2/src/common/pipes/slice_pipe");
var date_pipe_1 = require("angular2/src/common/pipes/date_pipe");
var number_pipe_1 = require("angular2/src/common/pipes/number_pipe");
var replace_pipe_1 = require("angular2/src/common/pipes/replace_pipe");
var i18n_plural_pipe_1 = require("angular2/src/common/pipes/i18n_plural_pipe");
var i18n_select_pipe_1 = require("angular2/src/common/pipes/i18n_select_pipe");
var lang_1 = require("angular2/src/facade/lang");
exports.COMMON_PIPES = lang_1.CONST_EXPR([async_pipe_1.AsyncPipe, uppercase_pipe_1.UpperCasePipe, lowercase_pipe_1.LowerCasePipe, json_pipe_1.JsonPipe, slice_pipe_1.SlicePipe, number_pipe_1.DecimalPipe, number_pipe_1.PercentPipe, number_pipe_1.CurrencyPipe, date_pipe_1.DatePipe, replace_pipe_1.ReplacePipe, i18n_plural_pipe_1.I18nPluralPipe, i18n_select_pipe_1.I18nSelectPipe]);
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/directives/ng_class", ["angular2/src/facade/lang", "angular2/core", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var core_1 = require("angular2/core");
var collection_1 = require("angular2/src/facade/collection");
var NgClass = (function() {
function NgClass(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {
this._iterableDiffers = _iterableDiffers;
this._keyValueDiffers = _keyValueDiffers;
this._ngEl = _ngEl;
this._renderer = _renderer;
this._initialClasses = [];
}
Object.defineProperty(NgClass.prototype, "initialClasses", {
set: function(v) {
this._applyInitialClasses(true);
this._initialClasses = lang_1.isPresent(v) && lang_1.isString(v) ? v.split(' ') : [];
this._applyInitialClasses(false);
this._applyClasses(this._rawClass, false);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgClass.prototype, "rawClass", {
set: function(v) {
this._cleanupClasses(this._rawClass);
if (lang_1.isString(v)) {
v = v.split(' ');
}
this._rawClass = v;
this._iterableDiffer = null;
this._keyValueDiffer = null;
if (lang_1.isPresent(v)) {
if (collection_1.isListLikeIterable(v)) {
this._iterableDiffer = this._iterableDiffers.find(v).create(null);
} else {
this._keyValueDiffer = this._keyValueDiffers.find(v).create(null);
}
}
},
enumerable: true,
configurable: true
});
NgClass.prototype.ngDoCheck = function() {
if (lang_1.isPresent(this._iterableDiffer)) {
var changes = this._iterableDiffer.diff(this._rawClass);
if (lang_1.isPresent(changes)) {
this._applyIterableChanges(changes);
}
}
if (lang_1.isPresent(this._keyValueDiffer)) {
var changes = this._keyValueDiffer.diff(this._rawClass);
if (lang_1.isPresent(changes)) {
this._applyKeyValueChanges(changes);
}
}
};
NgClass.prototype.ngOnDestroy = function() {
this._cleanupClasses(this._rawClass);
};
NgClass.prototype._cleanupClasses = function(rawClassVal) {
this._applyClasses(rawClassVal, true);
this._applyInitialClasses(false);
};
NgClass.prototype._applyKeyValueChanges = function(changes) {
var _this = this;
changes.forEachAddedItem(function(record) {
_this._toggleClass(record.key, record.currentValue);
});
changes.forEachChangedItem(function(record) {
_this._toggleClass(record.key, record.currentValue);
});
changes.forEachRemovedItem(function(record) {
if (record.previousValue) {
_this._toggleClass(record.key, false);
}
});
};
NgClass.prototype._applyIterableChanges = function(changes) {
var _this = this;
changes.forEachAddedItem(function(record) {
_this._toggleClass(record.item, true);
});
changes.forEachRemovedItem(function(record) {
_this._toggleClass(record.item, false);
});
};
NgClass.prototype._applyInitialClasses = function(isCleanup) {
var _this = this;
this._initialClasses.forEach(function(className) {
return _this._toggleClass(className, !isCleanup);
});
};
NgClass.prototype._applyClasses = function(rawClassVal, isCleanup) {
var _this = this;
if (lang_1.isPresent(rawClassVal)) {
if (lang_1.isArray(rawClassVal)) {
rawClassVal.forEach(function(className) {
return _this._toggleClass(className, !isCleanup);
});
} else if (rawClassVal instanceof Set) {
rawClassVal.forEach(function(className) {
return _this._toggleClass(className, !isCleanup);
});
} else {
collection_1.StringMapWrapper.forEach(rawClassVal, function(expVal, className) {
if (lang_1.isPresent(expVal))
_this._toggleClass(className, !isCleanup);
});
}
}
};
NgClass.prototype._toggleClass = function(className, enabled) {
className = className.trim();
if (className.length > 0) {
if (className.indexOf(' ') > -1) {
var classes = className.split(/\s+/g);
for (var i = 0,
len = classes.length; i < len; i++) {
this._renderer.setElementClass(this._ngEl.nativeElement, classes[i], enabled);
}
} else {
this._renderer.setElementClass(this._ngEl.nativeElement, className, enabled);
}
}
};
NgClass = __decorate([core_1.Directive({
selector: '[ngClass]',
inputs: ['rawClass: ngClass', 'initialClasses: class']
}), __metadata('design:paramtypes', [core_1.IterableDiffers, core_1.KeyValueDiffers, core_1.ElementRef, core_1.Renderer])], NgClass);
return NgClass;
})();
exports.NgClass = NgClass;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/directives/ng_for", ["angular2/core", "angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var core_1 = require("angular2/core");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var NgFor = (function() {
function NgFor(_viewContainer, _templateRef, _iterableDiffers, _cdr) {
this._viewContainer = _viewContainer;
this._templateRef = _templateRef;
this._iterableDiffers = _iterableDiffers;
this._cdr = _cdr;
}
Object.defineProperty(NgFor.prototype, "ngForOf", {
set: function(value) {
this._ngForOf = value;
if (lang_1.isBlank(this._differ) && lang_1.isPresent(value)) {
try {
this._differ = this._iterableDiffers.find(value).create(this._cdr, this._ngForTrackBy);
} catch (e) {
throw new exceptions_1.BaseException("Cannot find a differ supporting object '" + value + "' of type '" + lang_1.getTypeNameForDebugging(value) + "'. NgFor only supports binding to Iterables such as Arrays.");
}
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgFor.prototype, "ngForTemplate", {
set: function(value) {
if (lang_1.isPresent(value)) {
this._templateRef = value;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgFor.prototype, "ngForTrackBy", {
set: function(value) {
this._ngForTrackBy = value;
},
enumerable: true,
configurable: true
});
NgFor.prototype.ngDoCheck = function() {
if (lang_1.isPresent(this._differ)) {
var changes = this._differ.diff(this._ngForOf);
if (lang_1.isPresent(changes))
this._applyChanges(changes);
}
};
NgFor.prototype._applyChanges = function(changes) {
var _this = this;
var recordViewTuples = [];
changes.forEachRemovedItem(function(removedRecord) {
return recordViewTuples.push(new RecordViewTuple(removedRecord, null));
});
changes.forEachMovedItem(function(movedRecord) {
return recordViewTuples.push(new RecordViewTuple(movedRecord, null));
});
var insertTuples = this._bulkRemove(recordViewTuples);
changes.forEachAddedItem(function(addedRecord) {
return insertTuples.push(new RecordViewTuple(addedRecord, null));
});
this._bulkInsert(insertTuples);
for (var i = 0; i < insertTuples.length; i++) {
this._perViewChange(insertTuples[i].view, insertTuples[i].record);
}
for (var i = 0,
ilen = this._viewContainer.length; i < ilen; i++) {
var viewRef = this._viewContainer.get(i);
viewRef.setLocal('last', i === ilen - 1);
}
changes.forEachIdentityChange(function(record) {
var viewRef = _this._viewContainer.get(record.currentIndex);
viewRef.setLocal('\$implicit', record.item);
});
};
NgFor.prototype._perViewChange = function(view, record) {
view.setLocal('\$implicit', record.item);
view.setLocal('index', record.currentIndex);
view.setLocal('even', (record.currentIndex % 2 == 0));
view.setLocal('odd', (record.currentIndex % 2 == 1));
};
NgFor.prototype._bulkRemove = function(tuples) {
tuples.sort(function(a, b) {
return a.record.previousIndex - b.record.previousIndex;
});
var movedTuples = [];
for (var i = tuples.length - 1; i >= 0; i--) {
var tuple = tuples[i];
if (lang_1.isPresent(tuple.record.currentIndex)) {
tuple.view = this._viewContainer.detach(tuple.record.previousIndex);
movedTuples.push(tuple);
} else {
this._viewContainer.remove(tuple.record.previousIndex);
}
}
return movedTuples;
};
NgFor.prototype._bulkInsert = function(tuples) {
tuples.sort(function(a, b) {
return a.record.currentIndex - b.record.currentIndex;
});
for (var i = 0; i < tuples.length; i++) {
var tuple = tuples[i];
if (lang_1.isPresent(tuple.view)) {
this._viewContainer.insert(tuple.view, tuple.record.currentIndex);
} else {
tuple.view = this._viewContainer.createEmbeddedView(this._templateRef, tuple.record.currentIndex);
}
}
return tuples;
};
NgFor = __decorate([core_1.Directive({
selector: '[ngFor][ngForOf]',
inputs: ['ngForTrackBy', 'ngForOf', 'ngForTemplate']
}), __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, core_1.IterableDiffers, core_1.ChangeDetectorRef])], NgFor);
return NgFor;
})();
exports.NgFor = NgFor;
var RecordViewTuple = (function() {
function RecordViewTuple(record, view) {
this.record = record;
this.view = view;
}
return RecordViewTuple;
})();
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/directives/ng_if", ["angular2/core", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var core_1 = require("angular2/core");
var lang_1 = require("angular2/src/facade/lang");
var NgIf = (function() {
function NgIf(_viewContainer, _templateRef) {
this._viewContainer = _viewContainer;
this._templateRef = _templateRef;
this._prevCondition = null;
}
Object.defineProperty(NgIf.prototype, "ngIf", {
set: function(newCondition) {
if (newCondition && (lang_1.isBlank(this._prevCondition) || !this._prevCondition)) {
this._prevCondition = true;
this._viewContainer.createEmbeddedView(this._templateRef);
} else if (!newCondition && (lang_1.isBlank(this._prevCondition) || this._prevCondition)) {
this._prevCondition = false;
this._viewContainer.clear();
}
},
enumerable: true,
configurable: true
});
NgIf = __decorate([core_1.Directive({
selector: '[ngIf]',
inputs: ['ngIf']
}), __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef])], NgIf);
return NgIf;
})();
exports.NgIf = NgIf;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/directives/ng_style", ["angular2/core", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var core_1 = require("angular2/core");
var lang_1 = require("angular2/src/facade/lang");
var NgStyle = (function() {
function NgStyle(_differs, _ngEl, _renderer) {
this._differs = _differs;
this._ngEl = _ngEl;
this._renderer = _renderer;
}
Object.defineProperty(NgStyle.prototype, "rawStyle", {
set: function(v) {
this._rawStyle = v;
if (lang_1.isBlank(this._differ) && lang_1.isPresent(v)) {
this._differ = this._differs.find(this._rawStyle).create(null);
}
},
enumerable: true,
configurable: true
});
NgStyle.prototype.ngDoCheck = function() {
if (lang_1.isPresent(this._differ)) {
var changes = this._differ.diff(this._rawStyle);
if (lang_1.isPresent(changes)) {
this._applyChanges(changes);
}
}
};
NgStyle.prototype._applyChanges = function(changes) {
var _this = this;
changes.forEachAddedItem(function(record) {
_this._setStyle(record.key, record.currentValue);
});
changes.forEachChangedItem(function(record) {
_this._setStyle(record.key, record.currentValue);
});
changes.forEachRemovedItem(function(record) {
_this._setStyle(record.key, null);
});
};
NgStyle.prototype._setStyle = function(name, val) {
this._renderer.setElementStyle(this._ngEl.nativeElement, name, val);
};
NgStyle = __decorate([core_1.Directive({
selector: '[ngStyle]',
inputs: ['rawStyle: ngStyle']
}), __metadata('design:paramtypes', [core_1.KeyValueDiffers, core_1.ElementRef, core_1.Renderer])], NgStyle);
return NgStyle;
})();
exports.NgStyle = NgStyle;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/directives/ng_switch", ["angular2/core", "angular2/src/facade/lang", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var core_1 = require("angular2/core");
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var _WHEN_DEFAULT = lang_1.CONST_EXPR(new Object());
var SwitchView = (function() {
function SwitchView(_viewContainerRef, _templateRef) {
this._viewContainerRef = _viewContainerRef;
this._templateRef = _templateRef;
}
SwitchView.prototype.create = function() {
this._viewContainerRef.createEmbeddedView(this._templateRef);
};
SwitchView.prototype.destroy = function() {
this._viewContainerRef.clear();
};
return SwitchView;
})();
exports.SwitchView = SwitchView;
var NgSwitch = (function() {
function NgSwitch() {
this._useDefault = false;
this._valueViews = new collection_1.Map();
this._activeViews = [];
}
Object.defineProperty(NgSwitch.prototype, "ngSwitch", {
set: function(value) {
this._emptyAllActiveViews();
this._useDefault = false;
var views = this._valueViews.get(value);
if (lang_1.isBlank(views)) {
this._useDefault = true;
views = lang_1.normalizeBlank(this._valueViews.get(_WHEN_DEFAULT));
}
this._activateViews(views);
this._switchValue = value;
},
enumerable: true,
configurable: true
});
NgSwitch.prototype._onWhenValueChanged = function(oldWhen, newWhen, view) {
this._deregisterView(oldWhen, view);
this._registerView(newWhen, view);
if (oldWhen === this._switchValue) {
view.destroy();
collection_1.ListWrapper.remove(this._activeViews, view);
} else if (newWhen === this._switchValue) {
if (this._useDefault) {
this._useDefault = false;
this._emptyAllActiveViews();
}
view.create();
this._activeViews.push(view);
}
if (this._activeViews.length === 0 && !this._useDefault) {
this._useDefault = true;
this._activateViews(this._valueViews.get(_WHEN_DEFAULT));
}
};
NgSwitch.prototype._emptyAllActiveViews = function() {
var activeContainers = this._activeViews;
for (var i = 0; i < activeContainers.length; i++) {
activeContainers[i].destroy();
}
this._activeViews = [];
};
NgSwitch.prototype._activateViews = function(views) {
if (lang_1.isPresent(views)) {
for (var i = 0; i < views.length; i++) {
views[i].create();
}
this._activeViews = views;
}
};
NgSwitch.prototype._registerView = function(value, view) {
var views = this._valueViews.get(value);
if (lang_1.isBlank(views)) {
views = [];
this._valueViews.set(value, views);
}
views.push(view);
};
NgSwitch.prototype._deregisterView = function(value, view) {
if (value === _WHEN_DEFAULT)
return ;
var views = this._valueViews.get(value);
if (views.length == 1) {
this._valueViews.delete(value);
} else {
collection_1.ListWrapper.remove(views, view);
}
};
NgSwitch = __decorate([core_1.Directive({
selector: '[ngSwitch]',
inputs: ['ngSwitch']
}), __metadata('design:paramtypes', [])], NgSwitch);
return NgSwitch;
})();
exports.NgSwitch = NgSwitch;
var NgSwitchWhen = (function() {
function NgSwitchWhen(viewContainer, templateRef, ngSwitch) {
this._value = _WHEN_DEFAULT;
this._switch = ngSwitch;
this._view = new SwitchView(viewContainer, templateRef);
}
Object.defineProperty(NgSwitchWhen.prototype, "ngSwitchWhen", {
set: function(value) {
this._switch._onWhenValueChanged(this._value, value, this._view);
this._value = value;
},
enumerable: true,
configurable: true
});
NgSwitchWhen = __decorate([core_1.Directive({
selector: '[ngSwitchWhen]',
inputs: ['ngSwitchWhen']
}), __param(2, core_1.Host()), __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, NgSwitch])], NgSwitchWhen);
return NgSwitchWhen;
})();
exports.NgSwitchWhen = NgSwitchWhen;
var NgSwitchDefault = (function() {
function NgSwitchDefault(viewContainer, templateRef, sswitch) {
sswitch._registerView(_WHEN_DEFAULT, new SwitchView(viewContainer, templateRef));
}
NgSwitchDefault = __decorate([core_1.Directive({selector: '[ngSwitchDefault]'}), __param(2, core_1.Host()), __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.TemplateRef, NgSwitch])], NgSwitchDefault);
return NgSwitchDefault;
})();
exports.NgSwitchDefault = NgSwitchDefault;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/directives/ng_plural", ["angular2/core", "angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/common/directives/ng_switch"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var core_1 = require("angular2/core");
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var ng_switch_1 = require("angular2/src/common/directives/ng_switch");
var _CATEGORY_DEFAULT = 'other';
var NgLocalization = (function() {
function NgLocalization() {}
return NgLocalization;
})();
exports.NgLocalization = NgLocalization;
var NgPluralCase = (function() {
function NgPluralCase(value, template, viewContainer) {
this.value = value;
this._view = new ng_switch_1.SwitchView(viewContainer, template);
}
NgPluralCase = __decorate([core_1.Directive({selector: '[ngPluralCase]'}), __param(0, core_1.Attribute('ngPluralCase')), __metadata('design:paramtypes', [String, core_1.TemplateRef, core_1.ViewContainerRef])], NgPluralCase);
return NgPluralCase;
})();
exports.NgPluralCase = NgPluralCase;
var NgPlural = (function() {
function NgPlural(_localization) {
this._localization = _localization;
this._caseViews = new collection_1.Map();
this.cases = null;
}
Object.defineProperty(NgPlural.prototype, "ngPlural", {
set: function(value) {
this._switchValue = value;
this._updateView();
},
enumerable: true,
configurable: true
});
NgPlural.prototype.ngAfterContentInit = function() {
var _this = this;
this.cases.forEach(function(pluralCase) {
_this._caseViews.set(_this._formatValue(pluralCase), pluralCase._view);
});
this._updateView();
};
NgPlural.prototype._updateView = function() {
this._clearViews();
var view = this._caseViews.get(this._switchValue);
if (!lang_1.isPresent(view))
view = this._getCategoryView(this._switchValue);
this._activateView(view);
};
NgPlural.prototype._clearViews = function() {
if (lang_1.isPresent(this._activeView))
this._activeView.destroy();
};
NgPlural.prototype._activateView = function(view) {
if (!lang_1.isPresent(view))
return ;
this._activeView = view;
this._activeView.create();
};
NgPlural.prototype._getCategoryView = function(value) {
var category = this._localization.getPluralCategory(value);
var categoryView = this._caseViews.get(category);
return lang_1.isPresent(categoryView) ? categoryView : this._caseViews.get(_CATEGORY_DEFAULT);
};
NgPlural.prototype._isValueView = function(pluralCase) {
return pluralCase.value[0] === "=";
};
NgPlural.prototype._formatValue = function(pluralCase) {
return this._isValueView(pluralCase) ? this._stripValue(pluralCase.value) : pluralCase.value;
};
NgPlural.prototype._stripValue = function(value) {
return lang_1.NumberWrapper.parseInt(value.substring(1), 10);
};
__decorate([core_1.ContentChildren(NgPluralCase), __metadata('design:type', core_1.QueryList)], NgPlural.prototype, "cases", void 0);
__decorate([core_1.Input(), __metadata('design:type', Number), __metadata('design:paramtypes', [Number])], NgPlural.prototype, "ngPlural", null);
NgPlural = __decorate([core_1.Directive({selector: '[ngPlural]'}), __metadata('design:paramtypes', [NgLocalization])], NgPlural);
return NgPlural;
})();
exports.NgPlural = NgPlural;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/directives/observable_list_diff", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/directives/core_directives", ["angular2/src/facade/lang", "angular2/src/common/directives/ng_class", "angular2/src/common/directives/ng_for", "angular2/src/common/directives/ng_if", "angular2/src/common/directives/ng_style", "angular2/src/common/directives/ng_switch", "angular2/src/common/directives/ng_plural"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var ng_class_1 = require("angular2/src/common/directives/ng_class");
var ng_for_1 = require("angular2/src/common/directives/ng_for");
var ng_if_1 = require("angular2/src/common/directives/ng_if");
var ng_style_1 = require("angular2/src/common/directives/ng_style");
var ng_switch_1 = require("angular2/src/common/directives/ng_switch");
var ng_plural_1 = require("angular2/src/common/directives/ng_plural");
exports.CORE_DIRECTIVES = lang_1.CONST_EXPR([ng_class_1.NgClass, ng_for_1.NgFor, ng_if_1.NgIf, ng_style_1.NgStyle, ng_switch_1.NgSwitch, ng_switch_1.NgSwitchWhen, ng_switch_1.NgSwitchDefault, ng_plural_1.NgPlural, ng_plural_1.NgPluralCase]);
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/model", ["angular2/src/facade/lang", "angular2/src/facade/async", "angular2/src/facade/promise", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var lang_1 = require("angular2/src/facade/lang");
var async_1 = require("angular2/src/facade/async");
var promise_1 = require("angular2/src/facade/promise");
var collection_1 = require("angular2/src/facade/collection");
exports.VALID = "VALID";
exports.INVALID = "INVALID";
exports.PENDING = "PENDING";
function isControl(control) {
return control instanceof AbstractControl;
}
exports.isControl = isControl;
function _find(control, path) {
if (lang_1.isBlank(path))
return null;
if (!(path instanceof Array)) {
path = path.split("/");
}
if (path instanceof Array && collection_1.ListWrapper.isEmpty(path))
return null;
return path.reduce(function(v, name) {
if (v instanceof ControlGroup) {
return lang_1.isPresent(v.controls[name]) ? v.controls[name] : null;
} else if (v instanceof ControlArray) {
var index = name;
return lang_1.isPresent(v.at(index)) ? v.at(index) : null;
} else {
return null;
}
}, control);
}
function toObservable(r) {
return promise_1.PromiseWrapper.isPromise(r) ? async_1.ObservableWrapper.fromPromise(r) : r;
}
var AbstractControl = (function() {
function AbstractControl(validator, asyncValidator) {
this.validator = validator;
this.asyncValidator = asyncValidator;
this._pristine = true;
this._touched = false;
}
Object.defineProperty(AbstractControl.prototype, "value", {
get: function() {
return this._value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "status", {
get: function() {
return this._status;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "valid", {
get: function() {
return this._status === exports.VALID;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "errors", {
get: function() {
return this._errors;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "pristine", {
get: function() {
return this._pristine;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "dirty", {
get: function() {
return !this.pristine;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "touched", {
get: function() {
return this._touched;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "untouched", {
get: function() {
return !this._touched;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "valueChanges", {
get: function() {
return this._valueChanges;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "statusChanges", {
get: function() {
return this._statusChanges;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControl.prototype, "pending", {
get: function() {
return this._status == exports.PENDING;
},
enumerable: true,
configurable: true
});
AbstractControl.prototype.markAsTouched = function() {
this._touched = true;
};
AbstractControl.prototype.markAsDirty = function(_a) {
var onlySelf = (_a === void 0 ? {} : _a).onlySelf;
onlySelf = lang_1.normalizeBool(onlySelf);
this._pristine = false;
if (lang_1.isPresent(this._parent) && !onlySelf) {
this._parent.markAsDirty({onlySelf: onlySelf});
}
};
AbstractControl.prototype.markAsPending = function(_a) {
var onlySelf = (_a === void 0 ? {} : _a).onlySelf;
onlySelf = lang_1.normalizeBool(onlySelf);
this._status = exports.PENDING;
if (lang_1.isPresent(this._parent) && !onlySelf) {
this._parent.markAsPending({onlySelf: onlySelf});
}
};
AbstractControl.prototype.setParent = function(parent) {
this._parent = parent;
};
AbstractControl.prototype.updateValueAndValidity = function(_a) {
var _b = _a === void 0 ? {} : _a,
onlySelf = _b.onlySelf,
emitEvent = _b.emitEvent;
onlySelf = lang_1.normalizeBool(onlySelf);
emitEvent = lang_1.isPresent(emitEvent) ? emitEvent : true;
this._updateValue();
this._errors = this._runValidator();
this._status = this._calculateStatus();
if (this._status == exports.VALID || this._status == exports.PENDING) {
this._runAsyncValidator(emitEvent);
}
if (emitEvent) {
async_1.ObservableWrapper.callEmit(this._valueChanges, this._value);
async_1.ObservableWrapper.callEmit(this._statusChanges, this._status);
}
if (lang_1.isPresent(this._parent) && !onlySelf) {
this._parent.updateValueAndValidity({
onlySelf: onlySelf,
emitEvent: emitEvent
});
}
};
AbstractControl.prototype._runValidator = function() {
return lang_1.isPresent(this.validator) ? this.validator(this) : null;
};
AbstractControl.prototype._runAsyncValidator = function(emitEvent) {
var _this = this;
if (lang_1.isPresent(this.asyncValidator)) {
this._status = exports.PENDING;
this._cancelExistingSubscription();
var obs = toObservable(this.asyncValidator(this));
this._asyncValidationSubscription = async_1.ObservableWrapper.subscribe(obs, function(res) {
return _this.setErrors(res, {emitEvent: emitEvent});
});
}
};
AbstractControl.prototype._cancelExistingSubscription = function() {
if (lang_1.isPresent(this._asyncValidationSubscription)) {
async_1.ObservableWrapper.dispose(this._asyncValidationSubscription);
}
};
AbstractControl.prototype.setErrors = function(errors, _a) {
var emitEvent = (_a === void 0 ? {} : _a).emitEvent;
emitEvent = lang_1.isPresent(emitEvent) ? emitEvent : true;
this._errors = errors;
this._status = this._calculateStatus();
if (emitEvent) {
async_1.ObservableWrapper.callEmit(this._statusChanges, this._status);
}
if (lang_1.isPresent(this._parent)) {
this._parent._updateControlsErrors();
}
};
AbstractControl.prototype.find = function(path) {
return _find(this, path);
};
AbstractControl.prototype.getError = function(errorCode, path) {
if (path === void 0) {
path = null;
}
var control = lang_1.isPresent(path) && !collection_1.ListWrapper.isEmpty(path) ? this.find(path) : this;
if (lang_1.isPresent(control) && lang_1.isPresent(control._errors)) {
return collection_1.StringMapWrapper.get(control._errors, errorCode);
} else {
return null;
}
};
AbstractControl.prototype.hasError = function(errorCode, path) {
if (path === void 0) {
path = null;
}
return lang_1.isPresent(this.getError(errorCode, path));
};
Object.defineProperty(AbstractControl.prototype, "root", {
get: function() {
var x = this;
while (lang_1.isPresent(x._parent)) {
x = x._parent;
}
return x;
},
enumerable: true,
configurable: true
});
AbstractControl.prototype._updateControlsErrors = function() {
this._status = this._calculateStatus();
if (lang_1.isPresent(this._parent)) {
this._parent._updateControlsErrors();
}
};
AbstractControl.prototype._initObservables = function() {
this._valueChanges = new async_1.EventEmitter();
this._statusChanges = new async_1.EventEmitter();
};
AbstractControl.prototype._calculateStatus = function() {
if (lang_1.isPresent(this._errors))
return exports.INVALID;
if (this._anyControlsHaveStatus(exports.PENDING))
return exports.PENDING;
if (this._anyControlsHaveStatus(exports.INVALID))
return exports.INVALID;
return exports.VALID;
};
return AbstractControl;
})();
exports.AbstractControl = AbstractControl;
var Control = (function(_super) {
__extends(Control, _super);
function Control(value, validator, asyncValidator) {
if (value === void 0) {
value = null;
}
if (validator === void 0) {
validator = null;
}
if (asyncValidator === void 0) {
asyncValidator = null;
}
_super.call(this, validator, asyncValidator);
this._value = value;
this.updateValueAndValidity({
onlySelf: true,
emitEvent: false
});
this._initObservables();
}
Control.prototype.updateValue = function(value, _a) {
var _b = _a === void 0 ? {} : _a,
onlySelf = _b.onlySelf,
emitEvent = _b.emitEvent,
emitModelToViewChange = _b.emitModelToViewChange;
emitModelToViewChange = lang_1.isPresent(emitModelToViewChange) ? emitModelToViewChange : true;
this._value = value;
if (lang_1.isPresent(this._onChange) && emitModelToViewChange)
this._onChange(this._value);
this.updateValueAndValidity({
onlySelf: onlySelf,
emitEvent: emitEvent
});
};
Control.prototype._updateValue = function() {};
Control.prototype._anyControlsHaveStatus = function(status) {
return false;
};
Control.prototype.registerOnChange = function(fn) {
this._onChange = fn;
};
return Control;
})(AbstractControl);
exports.Control = Control;
var ControlGroup = (function(_super) {
__extends(ControlGroup, _super);
function ControlGroup(controls, optionals, validator, asyncValidator) {
if (optionals === void 0) {
optionals = null;
}
if (validator === void 0) {
validator = null;
}
if (asyncValidator === void 0) {
asyncValidator = null;
}
_super.call(this, validator, asyncValidator);
this.controls = controls;
this._optionals = lang_1.isPresent(optionals) ? optionals : {};
this._initObservables();
this._setParentForControls();
this.updateValueAndValidity({
onlySelf: true,
emitEvent: false
});
}
ControlGroup.prototype.addControl = function(name, control) {
this.controls[name] = control;
control.setParent(this);
};
ControlGroup.prototype.removeControl = function(name) {
collection_1.StringMapWrapper.delete(this.controls, name);
};
ControlGroup.prototype.include = function(controlName) {
collection_1.StringMapWrapper.set(this._optionals, controlName, true);
this.updateValueAndValidity();
};
ControlGroup.prototype.exclude = function(controlName) {
collection_1.StringMapWrapper.set(this._optionals, controlName, false);
this.updateValueAndValidity();
};
ControlGroup.prototype.contains = function(controlName) {
var c = collection_1.StringMapWrapper.contains(this.controls, controlName);
return c && this._included(controlName);
};
ControlGroup.prototype._setParentForControls = function() {
var _this = this;
collection_1.StringMapWrapper.forEach(this.controls, function(control, name) {
control.setParent(_this);
});
};
ControlGroup.prototype._updateValue = function() {
this._value = this._reduceValue();
};
ControlGroup.prototype._anyControlsHaveStatus = function(status) {
var _this = this;
var res = false;
collection_1.StringMapWrapper.forEach(this.controls, function(control, name) {
res = res || (_this.contains(name) && control.status == status);
});
return res;
};
ControlGroup.prototype._reduceValue = function() {
return this._reduceChildren({}, function(acc, control, name) {
acc[name] = control.value;
return acc;
});
};
ControlGroup.prototype._reduceChildren = function(initValue, fn) {
var _this = this;
var res = initValue;
collection_1.StringMapWrapper.forEach(this.controls, function(control, name) {
if (_this._included(name)) {
res = fn(res, control, name);
}
});
return res;
};
ControlGroup.prototype._included = function(controlName) {
var isOptional = collection_1.StringMapWrapper.contains(this._optionals, controlName);
return !isOptional || collection_1.StringMapWrapper.get(this._optionals, controlName);
};
return ControlGroup;
})(AbstractControl);
exports.ControlGroup = ControlGroup;
var ControlArray = (function(_super) {
__extends(ControlArray, _super);
function ControlArray(controls, validator, asyncValidator) {
if (validator === void 0) {
validator = null;
}
if (asyncValidator === void 0) {
asyncValidator = null;
}
_super.call(this, validator, asyncValidator);
this.controls = controls;
this._initObservables();
this._setParentForControls();
this.updateValueAndValidity({
onlySelf: true,
emitEvent: false
});
}
ControlArray.prototype.at = function(index) {
return this.controls[index];
};
ControlArray.prototype.push = function(control) {
this.controls.push(control);
control.setParent(this);
this.updateValueAndValidity();
};
ControlArray.prototype.insert = function(index, control) {
collection_1.ListWrapper.insert(this.controls, index, control);
control.setParent(this);
this.updateValueAndValidity();
};
ControlArray.prototype.removeAt = function(index) {
collection_1.ListWrapper.removeAt(this.controls, index);
this.updateValueAndValidity();
};
Object.defineProperty(ControlArray.prototype, "length", {
get: function() {
return this.controls.length;
},
enumerable: true,
configurable: true
});
ControlArray.prototype._updateValue = function() {
this._value = this.controls.map(function(control) {
return control.value;
});
};
ControlArray.prototype._anyControlsHaveStatus = function(status) {
return this.controls.some(function(c) {
return c.status == status;
});
};
ControlArray.prototype._setParentForControls = function() {
var _this = this;
this.controls.forEach(function(control) {
control.setParent(_this);
});
};
return ControlArray;
})(AbstractControl);
exports.ControlArray = ControlArray;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/abstract_control_directive", ["angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var AbstractControlDirective = (function() {
function AbstractControlDirective() {}
Object.defineProperty(AbstractControlDirective.prototype, "control", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControlDirective.prototype, "value", {
get: function() {
return lang_1.isPresent(this.control) ? this.control.value : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControlDirective.prototype, "valid", {
get: function() {
return lang_1.isPresent(this.control) ? this.control.valid : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControlDirective.prototype, "errors", {
get: function() {
return lang_1.isPresent(this.control) ? this.control.errors : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControlDirective.prototype, "pristine", {
get: function() {
return lang_1.isPresent(this.control) ? this.control.pristine : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControlDirective.prototype, "dirty", {
get: function() {
return lang_1.isPresent(this.control) ? this.control.dirty : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControlDirective.prototype, "touched", {
get: function() {
return lang_1.isPresent(this.control) ? this.control.touched : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControlDirective.prototype, "untouched", {
get: function() {
return lang_1.isPresent(this.control) ? this.control.untouched : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(AbstractControlDirective.prototype, "path", {
get: function() {
return null;
},
enumerable: true,
configurable: true
});
return AbstractControlDirective;
})();
exports.AbstractControlDirective = AbstractControlDirective;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/control_container", ["angular2/src/common/forms/directives/abstract_control_directive"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var abstract_control_directive_1 = require("angular2/src/common/forms/directives/abstract_control_directive");
var ControlContainer = (function(_super) {
__extends(ControlContainer, _super);
function ControlContainer() {
_super.apply(this, arguments);
}
Object.defineProperty(ControlContainer.prototype, "formDirective", {
get: function() {
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(ControlContainer.prototype, "path", {
get: function() {
return null;
},
enumerable: true,
configurable: true
});
return ControlContainer;
})(abstract_control_directive_1.AbstractControlDirective);
exports.ControlContainer = ControlContainer;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/ng_control", ["angular2/src/common/forms/directives/abstract_control_directive", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var abstract_control_directive_1 = require("angular2/src/common/forms/directives/abstract_control_directive");
var exceptions_1 = require("angular2/src/facade/exceptions");
var NgControl = (function(_super) {
__extends(NgControl, _super);
function NgControl() {
_super.apply(this, arguments);
this.name = null;
this.valueAccessor = null;
}
Object.defineProperty(NgControl.prototype, "validator", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControl.prototype, "asyncValidator", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
return NgControl;
})(abstract_control_directive_1.AbstractControlDirective);
exports.NgControl = NgControl;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/control_value_accessor", ["angular2/core", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var core_1 = require("angular2/core");
var lang_1 = require("angular2/src/facade/lang");
exports.NG_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.OpaqueToken("NgValueAccessor"));
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/validators", ["angular2/src/facade/lang", "angular2/src/facade/promise", "angular2/src/facade/async", "angular2/src/facade/collection", "angular2/core"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var promise_1 = require("angular2/src/facade/promise");
var async_1 = require("angular2/src/facade/async");
var collection_1 = require("angular2/src/facade/collection");
var core_1 = require("angular2/core");
exports.NG_VALIDATORS = lang_1.CONST_EXPR(new core_1.OpaqueToken("NgValidators"));
exports.NG_ASYNC_VALIDATORS = lang_1.CONST_EXPR(new core_1.OpaqueToken("NgAsyncValidators"));
var Validators = (function() {
function Validators() {}
Validators.required = function(control) {
return lang_1.isBlank(control.value) || (lang_1.isString(control.value) && control.value == "") ? {"required": true} : null;
};
Validators.minLength = function(minLength) {
return function(control) {
if (lang_1.isPresent(Validators.required(control)))
return null;
var v = control.value;
return v.length < minLength ? {"minlength": {
"requiredLength": minLength,
"actualLength": v.length
}} : null;
};
};
Validators.maxLength = function(maxLength) {
return function(control) {
if (lang_1.isPresent(Validators.required(control)))
return null;
var v = control.value;
return v.length > maxLength ? {"maxlength": {
"requiredLength": maxLength,
"actualLength": v.length
}} : null;
};
};
Validators.pattern = function(pattern) {
return function(control) {
if (lang_1.isPresent(Validators.required(control)))
return null;
var regex = new RegExp("^" + pattern + "$");
var v = control.value;
return regex.test(v) ? null : {"pattern": {
"requiredPattern": "^" + pattern + "$",
"actualValue": v
}};
};
};
Validators.nullValidator = function(c) {
return null;
};
Validators.compose = function(validators) {
if (lang_1.isBlank(validators))
return null;
var presentValidators = validators.filter(lang_1.isPresent);
if (presentValidators.length == 0)
return null;
return function(control) {
return _mergeErrors(_executeValidators(control, presentValidators));
};
};
Validators.composeAsync = function(validators) {
if (lang_1.isBlank(validators))
return null;
var presentValidators = validators.filter(lang_1.isPresent);
if (presentValidators.length == 0)
return null;
return function(control) {
var promises = _executeAsyncValidators(control, presentValidators).map(_convertToPromise);
return promise_1.PromiseWrapper.all(promises).then(_mergeErrors);
};
};
return Validators;
})();
exports.Validators = Validators;
function _convertToPromise(obj) {
return promise_1.PromiseWrapper.isPromise(obj) ? obj : async_1.ObservableWrapper.toPromise(obj);
}
function _executeValidators(control, validators) {
return validators.map(function(v) {
return v(control);
});
}
function _executeAsyncValidators(control, validators) {
return validators.map(function(v) {
return v(control);
});
}
function _mergeErrors(arrayOfErrors) {
var res = arrayOfErrors.reduce(function(res, errors) {
return lang_1.isPresent(errors) ? collection_1.StringMapWrapper.merge(res, errors) : res;
}, {});
return collection_1.StringMapWrapper.isEmpty(res) ? null : res;
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/default_value_accessor", ["angular2/core", "angular2/src/common/forms/directives/control_value_accessor", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var core_1 = require("angular2/core");
var control_value_accessor_1 = require("angular2/src/common/forms/directives/control_value_accessor");
var lang_1 = require("angular2/src/facade/lang");
var DEFAULT_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, {
useExisting: core_1.forwardRef(function() {
return DefaultValueAccessor;
}),
multi: true
}));
var DefaultValueAccessor = (function() {
function DefaultValueAccessor(_renderer, _elementRef) {
this._renderer = _renderer;
this._elementRef = _elementRef;
this.onChange = function(_) {};
this.onTouched = function() {};
}
DefaultValueAccessor.prototype.writeValue = function(value) {
var normalizedValue = lang_1.isBlank(value) ? '' : value;
this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', normalizedValue);
};
DefaultValueAccessor.prototype.registerOnChange = function(fn) {
this.onChange = fn;
};
DefaultValueAccessor.prototype.registerOnTouched = function(fn) {
this.onTouched = fn;
};
DefaultValueAccessor = __decorate([core_1.Directive({
selector: 'input:not([type=checkbox])[ngControl],textarea[ngControl],input:not([type=checkbox])[ngFormControl],textarea[ngFormControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]',
host: {
'(input)': 'onChange($event.target.value)',
'(blur)': 'onTouched()'
},
bindings: [DEFAULT_VALUE_ACCESSOR]
}), __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])], DefaultValueAccessor);
return DefaultValueAccessor;
})();
exports.DefaultValueAccessor = DefaultValueAccessor;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/number_value_accessor", ["angular2/core", "angular2/src/common/forms/directives/control_value_accessor", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var core_1 = require("angular2/core");
var control_value_accessor_1 = require("angular2/src/common/forms/directives/control_value_accessor");
var lang_1 = require("angular2/src/facade/lang");
var NUMBER_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, {
useExisting: core_1.forwardRef(function() {
return NumberValueAccessor;
}),
multi: true
}));
var NumberValueAccessor = (function() {
function NumberValueAccessor(_renderer, _elementRef) {
this._renderer = _renderer;
this._elementRef = _elementRef;
this.onChange = function(_) {};
this.onTouched = function() {};
}
NumberValueAccessor.prototype.writeValue = function(value) {
this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', value);
};
NumberValueAccessor.prototype.registerOnChange = function(fn) {
this.onChange = function(value) {
fn(lang_1.NumberWrapper.parseFloat(value));
};
};
NumberValueAccessor.prototype.registerOnTouched = function(fn) {
this.onTouched = fn;
};
NumberValueAccessor = __decorate([core_1.Directive({
selector: 'input[type=number][ngControl],input[type=number][ngFormControl],input[type=number][ngModel]',
host: {
'(change)': 'onChange($event.target.value)',
'(input)': 'onChange($event.target.value)',
'(blur)': 'onTouched()'
},
bindings: [NUMBER_VALUE_ACCESSOR]
}), __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])], NumberValueAccessor);
return NumberValueAccessor;
})();
exports.NumberValueAccessor = NumberValueAccessor;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/checkbox_value_accessor", ["angular2/core", "angular2/src/common/forms/directives/control_value_accessor", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var core_1 = require("angular2/core");
var control_value_accessor_1 = require("angular2/src/common/forms/directives/control_value_accessor");
var lang_1 = require("angular2/src/facade/lang");
var CHECKBOX_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, {
useExisting: core_1.forwardRef(function() {
return CheckboxControlValueAccessor;
}),
multi: true
}));
var CheckboxControlValueAccessor = (function() {
function CheckboxControlValueAccessor(_renderer, _elementRef) {
this._renderer = _renderer;
this._elementRef = _elementRef;
this.onChange = function(_) {};
this.onTouched = function() {};
}
CheckboxControlValueAccessor.prototype.writeValue = function(value) {
this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', value);
};
CheckboxControlValueAccessor.prototype.registerOnChange = function(fn) {
this.onChange = fn;
};
CheckboxControlValueAccessor.prototype.registerOnTouched = function(fn) {
this.onTouched = fn;
};
CheckboxControlValueAccessor = __decorate([core_1.Directive({
selector: 'input[type=checkbox][ngControl],input[type=checkbox][ngFormControl],input[type=checkbox][ngModel]',
host: {
'(change)': 'onChange($event.target.checked)',
'(blur)': 'onTouched()'
},
providers: [CHECKBOX_VALUE_ACCESSOR]
}), __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef])], CheckboxControlValueAccessor);
return CheckboxControlValueAccessor;
})();
exports.CheckboxControlValueAccessor = CheckboxControlValueAccessor;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/select_control_value_accessor", ["angular2/core", "angular2/src/facade/async", "angular2/src/common/forms/directives/control_value_accessor", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var core_1 = require("angular2/core");
var async_1 = require("angular2/src/facade/async");
var control_value_accessor_1 = require("angular2/src/common/forms/directives/control_value_accessor");
var lang_1 = require("angular2/src/facade/lang");
var SELECT_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, {
useExisting: core_1.forwardRef(function() {
return SelectControlValueAccessor;
}),
multi: true
}));
var NgSelectOption = (function() {
function NgSelectOption() {}
NgSelectOption = __decorate([core_1.Directive({selector: 'option'}), __metadata('design:paramtypes', [])], NgSelectOption);
return NgSelectOption;
})();
exports.NgSelectOption = NgSelectOption;
var SelectControlValueAccessor = (function() {
function SelectControlValueAccessor(_renderer, _elementRef, query) {
this._renderer = _renderer;
this._elementRef = _elementRef;
this.onChange = function(_) {};
this.onTouched = function() {};
this._updateValueWhenListOfOptionsChanges(query);
}
SelectControlValueAccessor.prototype.writeValue = function(value) {
this.value = value;
this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', value);
};
SelectControlValueAccessor.prototype.registerOnChange = function(fn) {
this.onChange = fn;
};
SelectControlValueAccessor.prototype.registerOnTouched = function(fn) {
this.onTouched = fn;
};
SelectControlValueAccessor.prototype._updateValueWhenListOfOptionsChanges = function(query) {
var _this = this;
async_1.ObservableWrapper.subscribe(query.changes, function(_) {
return _this.writeValue(_this.value);
});
};
SelectControlValueAccessor = __decorate([core_1.Directive({
selector: 'select[ngControl],select[ngFormControl],select[ngModel]',
host: {
'(input)': 'onChange($event.target.value)',
'(blur)': 'onTouched()'
},
bindings: [SELECT_VALUE_ACCESSOR]
}), __param(2, core_1.Query(NgSelectOption, {descendants: true})), __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef, core_1.QueryList])], SelectControlValueAccessor);
return SelectControlValueAccessor;
})();
exports.SelectControlValueAccessor = SelectControlValueAccessor;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/radio_control_value_accessor", ["angular2/core", "angular2/src/common/forms/directives/control_value_accessor", "angular2/src/common/forms/directives/ng_control", "angular2/src/facade/lang", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var core_1 = require("angular2/core");
var control_value_accessor_1 = require("angular2/src/common/forms/directives/control_value_accessor");
var ng_control_1 = require("angular2/src/common/forms/directives/ng_control");
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var RADIO_VALUE_ACCESSOR = lang_1.CONST_EXPR(new core_1.Provider(control_value_accessor_1.NG_VALUE_ACCESSOR, {
useExisting: core_1.forwardRef(function() {
return RadioControlValueAccessor;
}),
multi: true
}));
var RadioControlRegistry = (function() {
function RadioControlRegistry() {
this._accessors = [];
}
RadioControlRegistry.prototype.add = function(control, accessor) {
this._accessors.push([control, accessor]);
};
RadioControlRegistry.prototype.remove = function(accessor) {
var indexToRemove = -1;
for (var i = 0; i < this._accessors.length; ++i) {
if (this._accessors[i][1] === accessor) {
indexToRemove = i;
}
}
collection_1.ListWrapper.removeAt(this._accessors, indexToRemove);
};
RadioControlRegistry.prototype.select = function(accessor) {
this._accessors.forEach(function(c) {
if (c[0].control.root === accessor._control.control.root && c[1] !== accessor) {
c[1].fireUncheck();
}
});
};
RadioControlRegistry = __decorate([core_1.Injectable(), __metadata('design:paramtypes', [])], RadioControlRegistry);
return RadioControlRegistry;
})();
exports.RadioControlRegistry = RadioControlRegistry;
var RadioButtonState = (function() {
function RadioButtonState(checked, value) {
this.checked = checked;
this.value = value;
}
return RadioButtonState;
})();
exports.RadioButtonState = RadioButtonState;
var RadioControlValueAccessor = (function() {
function RadioControlValueAccessor(_renderer, _elementRef, _registry, _injector) {
this._renderer = _renderer;
this._elementRef = _elementRef;
this._registry = _registry;
this._injector = _injector;
this.onChange = function() {};
this.onTouched = function() {};
}
RadioControlValueAccessor.prototype.ngOnInit = function() {
this._control = this._injector.get(ng_control_1.NgControl);
this._registry.add(this._control, this);
};
RadioControlValueAccessor.prototype.ngOnDestroy = function() {
this._registry.remove(this);
};
RadioControlValueAccessor.prototype.writeValue = function(value) {
this._state = value;
if (lang_1.isPresent(value) && value.checked) {
this._renderer.setElementProperty(this._elementRef.nativeElement, 'checked', true);
}
};
RadioControlValueAccessor.prototype.registerOnChange = function(fn) {
var _this = this;
this._fn = fn;
this.onChange = function() {
fn(new RadioButtonState(true, _this._state.value));
_this._registry.select(_this);
};
};
RadioControlValueAccessor.prototype.fireUncheck = function() {
this._fn(new RadioButtonState(false, this._state.value));
};
RadioControlValueAccessor.prototype.registerOnTouched = function(fn) {
this.onTouched = fn;
};
__decorate([core_1.Input(), __metadata('design:type', String)], RadioControlValueAccessor.prototype, "name", void 0);
RadioControlValueAccessor = __decorate([core_1.Directive({
selector: 'input[type=radio][ngControl],input[type=radio][ngFormControl],input[type=radio][ngModel]',
host: {
'(change)': 'onChange()',
'(blur)': 'onTouched()'
},
providers: [RADIO_VALUE_ACCESSOR]
}), __metadata('design:paramtypes', [core_1.Renderer, core_1.ElementRef, RadioControlRegistry, core_1.Injector])], RadioControlValueAccessor);
return RadioControlValueAccessor;
})();
exports.RadioControlValueAccessor = RadioControlValueAccessor;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/normalize_validator", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function normalizeValidator(validator) {
if (validator.validate !== undefined) {
return function(c) {
return validator.validate(c);
};
} else {
return validator;
}
}
exports.normalizeValidator = normalizeValidator;
function normalizeAsyncValidator(validator) {
if (validator.validate !== undefined) {
return function(c) {
return Promise.resolve(validator.validate(c));
};
} else {
return validator;
}
}
exports.normalizeAsyncValidator = normalizeAsyncValidator;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/ng_form_control", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/facade/async", "angular2/core", "angular2/src/common/forms/directives/ng_control", "angular2/src/common/forms/validators", "angular2/src/common/forms/directives/control_value_accessor", "angular2/src/common/forms/directives/shared"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var async_1 = require("angular2/src/facade/async");
var core_1 = require("angular2/core");
var ng_control_1 = require("angular2/src/common/forms/directives/ng_control");
var validators_1 = require("angular2/src/common/forms/validators");
var control_value_accessor_1 = require("angular2/src/common/forms/directives/control_value_accessor");
var shared_1 = require("angular2/src/common/forms/directives/shared");
var formControlBinding = lang_1.CONST_EXPR(new core_1.Provider(ng_control_1.NgControl, {useExisting: core_1.forwardRef(function() {
return NgFormControl;
})}));
var NgFormControl = (function(_super) {
__extends(NgFormControl, _super);
function NgFormControl(_validators, _asyncValidators, valueAccessors) {
_super.call(this);
this._validators = _validators;
this._asyncValidators = _asyncValidators;
this.update = new async_1.EventEmitter();
this.valueAccessor = shared_1.selectValueAccessor(this, valueAccessors);
}
NgFormControl.prototype.ngOnChanges = function(changes) {
if (this._isControlChanged(changes)) {
shared_1.setUpControl(this.form, this);
this.form.updateValueAndValidity({emitEvent: false});
}
if (shared_1.isPropertyUpdated(changes, this.viewModel)) {
this.form.updateValue(this.model);
this.viewModel = this.model;
}
};
Object.defineProperty(NgFormControl.prototype, "path", {
get: function() {
return [];
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgFormControl.prototype, "validator", {
get: function() {
return shared_1.composeValidators(this._validators);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgFormControl.prototype, "asyncValidator", {
get: function() {
return shared_1.composeAsyncValidators(this._asyncValidators);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgFormControl.prototype, "control", {
get: function() {
return this.form;
},
enumerable: true,
configurable: true
});
NgFormControl.prototype.viewToModelUpdate = function(newValue) {
this.viewModel = newValue;
async_1.ObservableWrapper.callEmit(this.update, newValue);
};
NgFormControl.prototype._isControlChanged = function(changes) {
return collection_1.StringMapWrapper.contains(changes, "form");
};
NgFormControl = __decorate([core_1.Directive({
selector: '[ngFormControl]',
bindings: [formControlBinding],
inputs: ['form: ngFormControl', 'model: ngModel'],
outputs: ['update: ngModelChange'],
exportAs: 'ngForm'
}), __param(0, core_1.Optional()), __param(0, core_1.Self()), __param(0, core_1.Inject(validators_1.NG_VALIDATORS)), __param(1, core_1.Optional()), __param(1, core_1.Self()), __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), __param(2, core_1.Optional()), __param(2, core_1.Self()), __param(2, core_1.Inject(control_value_accessor_1.NG_VALUE_ACCESSOR)), __metadata('design:paramtypes', [Array, Array, Array])], NgFormControl);
return NgFormControl;
})(ng_control_1.NgControl);
exports.NgFormControl = NgFormControl;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/ng_model", ["angular2/src/facade/lang", "angular2/src/facade/async", "angular2/core", "angular2/src/common/forms/directives/control_value_accessor", "angular2/src/common/forms/directives/ng_control", "angular2/src/common/forms/model", "angular2/src/common/forms/validators", "angular2/src/common/forms/directives/shared"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var lang_1 = require("angular2/src/facade/lang");
var async_1 = require("angular2/src/facade/async");
var core_1 = require("angular2/core");
var control_value_accessor_1 = require("angular2/src/common/forms/directives/control_value_accessor");
var ng_control_1 = require("angular2/src/common/forms/directives/ng_control");
var model_1 = require("angular2/src/common/forms/model");
var validators_1 = require("angular2/src/common/forms/validators");
var shared_1 = require("angular2/src/common/forms/directives/shared");
var formControlBinding = lang_1.CONST_EXPR(new core_1.Provider(ng_control_1.NgControl, {useExisting: core_1.forwardRef(function() {
return NgModel;
})}));
var NgModel = (function(_super) {
__extends(NgModel, _super);
function NgModel(_validators, _asyncValidators, valueAccessors) {
_super.call(this);
this._validators = _validators;
this._asyncValidators = _asyncValidators;
this._control = new model_1.Control();
this._added = false;
this.update = new async_1.EventEmitter();
this.valueAccessor = shared_1.selectValueAccessor(this, valueAccessors);
}
NgModel.prototype.ngOnChanges = function(changes) {
if (!this._added) {
shared_1.setUpControl(this._control, this);
this._control.updateValueAndValidity({emitEvent: false});
this._added = true;
}
if (shared_1.isPropertyUpdated(changes, this.viewModel)) {
this._control.updateValue(this.model);
this.viewModel = this.model;
}
};
Object.defineProperty(NgModel.prototype, "control", {
get: function() {
return this._control;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgModel.prototype, "path", {
get: function() {
return [];
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgModel.prototype, "validator", {
get: function() {
return shared_1.composeValidators(this._validators);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgModel.prototype, "asyncValidator", {
get: function() {
return shared_1.composeAsyncValidators(this._asyncValidators);
},
enumerable: true,
configurable: true
});
NgModel.prototype.viewToModelUpdate = function(newValue) {
this.viewModel = newValue;
async_1.ObservableWrapper.callEmit(this.update, newValue);
};
NgModel = __decorate([core_1.Directive({
selector: '[ngModel]:not([ngControl]):not([ngFormControl])',
bindings: [formControlBinding],
inputs: ['model: ngModel'],
outputs: ['update: ngModelChange'],
exportAs: 'ngForm'
}), __param(0, core_1.Optional()), __param(0, core_1.Self()), __param(0, core_1.Inject(validators_1.NG_VALIDATORS)), __param(1, core_1.Optional()), __param(1, core_1.Self()), __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), __param(2, core_1.Optional()), __param(2, core_1.Self()), __param(2, core_1.Inject(control_value_accessor_1.NG_VALUE_ACCESSOR)), __metadata('design:paramtypes', [Array, Array, Array])], NgModel);
return NgModel;
})(ng_control_1.NgControl);
exports.NgModel = NgModel;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/ng_control_group", ["angular2/core", "angular2/src/facade/lang", "angular2/src/common/forms/directives/control_container", "angular2/src/common/forms/directives/shared", "angular2/src/common/forms/validators"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var core_1 = require("angular2/core");
var lang_1 = require("angular2/src/facade/lang");
var control_container_1 = require("angular2/src/common/forms/directives/control_container");
var shared_1 = require("angular2/src/common/forms/directives/shared");
var validators_1 = require("angular2/src/common/forms/validators");
var controlGroupProvider = lang_1.CONST_EXPR(new core_1.Provider(control_container_1.ControlContainer, {useExisting: core_1.forwardRef(function() {
return NgControlGroup;
})}));
var NgControlGroup = (function(_super) {
__extends(NgControlGroup, _super);
function NgControlGroup(parent, _validators, _asyncValidators) {
_super.call(this);
this._validators = _validators;
this._asyncValidators = _asyncValidators;
this._parent = parent;
}
NgControlGroup.prototype.ngOnInit = function() {
this.formDirective.addControlGroup(this);
};
NgControlGroup.prototype.ngOnDestroy = function() {
this.formDirective.removeControlGroup(this);
};
Object.defineProperty(NgControlGroup.prototype, "control", {
get: function() {
return this.formDirective.getControlGroup(this);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlGroup.prototype, "path", {
get: function() {
return shared_1.controlPath(this.name, this._parent);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlGroup.prototype, "formDirective", {
get: function() {
return this._parent.formDirective;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlGroup.prototype, "validator", {
get: function() {
return shared_1.composeValidators(this._validators);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlGroup.prototype, "asyncValidator", {
get: function() {
return shared_1.composeAsyncValidators(this._asyncValidators);
},
enumerable: true,
configurable: true
});
NgControlGroup = __decorate([core_1.Directive({
selector: '[ngControlGroup]',
providers: [controlGroupProvider],
inputs: ['name: ngControlGroup'],
exportAs: 'ngForm'
}), __param(0, core_1.Host()), __param(0, core_1.SkipSelf()), __param(1, core_1.Optional()), __param(1, core_1.Self()), __param(1, core_1.Inject(validators_1.NG_VALIDATORS)), __param(2, core_1.Optional()), __param(2, core_1.Self()), __param(2, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), __metadata('design:paramtypes', [control_container_1.ControlContainer, Array, Array])], NgControlGroup);
return NgControlGroup;
})(control_container_1.ControlContainer);
exports.NgControlGroup = NgControlGroup;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/ng_form_model", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/facade/async", "angular2/core", "angular2/src/common/forms/directives/control_container", "angular2/src/common/forms/directives/shared", "angular2/src/common/forms/validators"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var async_1 = require("angular2/src/facade/async");
var core_1 = require("angular2/core");
var control_container_1 = require("angular2/src/common/forms/directives/control_container");
var shared_1 = require("angular2/src/common/forms/directives/shared");
var validators_1 = require("angular2/src/common/forms/validators");
var formDirectiveProvider = lang_1.CONST_EXPR(new core_1.Provider(control_container_1.ControlContainer, {useExisting: core_1.forwardRef(function() {
return NgFormModel;
})}));
var NgFormModel = (function(_super) {
__extends(NgFormModel, _super);
function NgFormModel(_validators, _asyncValidators) {
_super.call(this);
this._validators = _validators;
this._asyncValidators = _asyncValidators;
this.form = null;
this.directives = [];
this.ngSubmit = new async_1.EventEmitter();
}
NgFormModel.prototype.ngOnChanges = function(changes) {
if (collection_1.StringMapWrapper.contains(changes, "form")) {
var sync = shared_1.composeValidators(this._validators);
this.form.validator = validators_1.Validators.compose([this.form.validator, sync]);
var async = shared_1.composeAsyncValidators(this._asyncValidators);
this.form.asyncValidator = validators_1.Validators.composeAsync([this.form.asyncValidator, async]);
this.form.updateValueAndValidity({
onlySelf: true,
emitEvent: false
});
}
this._updateDomValue();
};
Object.defineProperty(NgFormModel.prototype, "formDirective", {
get: function() {
return this;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgFormModel.prototype, "control", {
get: function() {
return this.form;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgFormModel.prototype, "path", {
get: function() {
return [];
},
enumerable: true,
configurable: true
});
NgFormModel.prototype.addControl = function(dir) {
var ctrl = this.form.find(dir.path);
shared_1.setUpControl(ctrl, dir);
ctrl.updateValueAndValidity({emitEvent: false});
this.directives.push(dir);
};
NgFormModel.prototype.getControl = function(dir) {
return this.form.find(dir.path);
};
NgFormModel.prototype.removeControl = function(dir) {
collection_1.ListWrapper.remove(this.directives, dir);
};
NgFormModel.prototype.addControlGroup = function(dir) {
var ctrl = this.form.find(dir.path);
shared_1.setUpControlGroup(ctrl, dir);
ctrl.updateValueAndValidity({emitEvent: false});
};
NgFormModel.prototype.removeControlGroup = function(dir) {};
NgFormModel.prototype.getControlGroup = function(dir) {
return this.form.find(dir.path);
};
NgFormModel.prototype.updateModel = function(dir, value) {
var ctrl = this.form.find(dir.path);
ctrl.updateValue(value);
};
NgFormModel.prototype.onSubmit = function() {
async_1.ObservableWrapper.callEmit(this.ngSubmit, null);
return false;
};
NgFormModel.prototype._updateDomValue = function() {
var _this = this;
this.directives.forEach(function(dir) {
var ctrl = _this.form.find(dir.path);
dir.valueAccessor.writeValue(ctrl.value);
});
};
NgFormModel = __decorate([core_1.Directive({
selector: '[ngFormModel]',
bindings: [formDirectiveProvider],
inputs: ['form: ngFormModel'],
host: {'(submit)': 'onSubmit()'},
outputs: ['ngSubmit'],
exportAs: 'ngForm'
}), __param(0, core_1.Optional()), __param(0, core_1.Self()), __param(0, core_1.Inject(validators_1.NG_VALIDATORS)), __param(1, core_1.Optional()), __param(1, core_1.Self()), __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), __metadata('design:paramtypes', [Array, Array])], NgFormModel);
return NgFormModel;
})(control_container_1.ControlContainer);
exports.NgFormModel = NgFormModel;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/ng_form", ["angular2/src/facade/async", "angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/core", "angular2/src/common/forms/directives/control_container", "angular2/src/common/forms/model", "angular2/src/common/forms/directives/shared", "angular2/src/common/forms/validators"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var async_1 = require("angular2/src/facade/async");
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var core_1 = require("angular2/core");
var control_container_1 = require("angular2/src/common/forms/directives/control_container");
var model_1 = require("angular2/src/common/forms/model");
var shared_1 = require("angular2/src/common/forms/directives/shared");
var validators_1 = require("angular2/src/common/forms/validators");
var formDirectiveProvider = lang_1.CONST_EXPR(new core_1.Provider(control_container_1.ControlContainer, {useExisting: core_1.forwardRef(function() {
return NgForm;
})}));
var NgForm = (function(_super) {
__extends(NgForm, _super);
function NgForm(validators, asyncValidators) {
_super.call(this);
this.ngSubmit = new async_1.EventEmitter();
this.form = new model_1.ControlGroup({}, null, shared_1.composeValidators(validators), shared_1.composeAsyncValidators(asyncValidators));
}
Object.defineProperty(NgForm.prototype, "formDirective", {
get: function() {
return this;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgForm.prototype, "control", {
get: function() {
return this.form;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgForm.prototype, "path", {
get: function() {
return [];
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgForm.prototype, "controls", {
get: function() {
return this.form.controls;
},
enumerable: true,
configurable: true
});
NgForm.prototype.addControl = function(dir) {
var _this = this;
async_1.PromiseWrapper.scheduleMicrotask(function() {
var container = _this._findContainer(dir.path);
var ctrl = new model_1.Control();
shared_1.setUpControl(ctrl, dir);
container.addControl(dir.name, ctrl);
ctrl.updateValueAndValidity({emitEvent: false});
});
};
NgForm.prototype.getControl = function(dir) {
return this.form.find(dir.path);
};
NgForm.prototype.removeControl = function(dir) {
var _this = this;
async_1.PromiseWrapper.scheduleMicrotask(function() {
var container = _this._findContainer(dir.path);
if (lang_1.isPresent(container)) {
container.removeControl(dir.name);
container.updateValueAndValidity({emitEvent: false});
}
});
};
NgForm.prototype.addControlGroup = function(dir) {
var _this = this;
async_1.PromiseWrapper.scheduleMicrotask(function() {
var container = _this._findContainer(dir.path);
var group = new model_1.ControlGroup({});
shared_1.setUpControlGroup(group, dir);
container.addControl(dir.name, group);
group.updateValueAndValidity({emitEvent: false});
});
};
NgForm.prototype.removeControlGroup = function(dir) {
var _this = this;
async_1.PromiseWrapper.scheduleMicrotask(function() {
var container = _this._findContainer(dir.path);
if (lang_1.isPresent(container)) {
container.removeControl(dir.name);
container.updateValueAndValidity({emitEvent: false});
}
});
};
NgForm.prototype.getControlGroup = function(dir) {
return this.form.find(dir.path);
};
NgForm.prototype.updateModel = function(dir, value) {
var _this = this;
async_1.PromiseWrapper.scheduleMicrotask(function() {
var ctrl = _this.form.find(dir.path);
ctrl.updateValue(value);
});
};
NgForm.prototype.onSubmit = function() {
async_1.ObservableWrapper.callEmit(this.ngSubmit, null);
return false;
};
NgForm.prototype._findContainer = function(path) {
path.pop();
return collection_1.ListWrapper.isEmpty(path) ? this.form : this.form.find(path);
};
NgForm = __decorate([core_1.Directive({
selector: 'form:not([ngNoForm]):not([ngFormModel]),ngForm,[ngForm]',
bindings: [formDirectiveProvider],
host: {'(submit)': 'onSubmit()'},
outputs: ['ngSubmit'],
exportAs: 'ngForm'
}), __param(0, core_1.Optional()), __param(0, core_1.Self()), __param(0, core_1.Inject(validators_1.NG_VALIDATORS)), __param(1, core_1.Optional()), __param(1, core_1.Self()), __param(1, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), __metadata('design:paramtypes', [Array, Array])], NgForm);
return NgForm;
})(control_container_1.ControlContainer);
exports.NgForm = NgForm;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/ng_control_status", ["angular2/core", "angular2/src/common/forms/directives/ng_control", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var core_1 = require("angular2/core");
var ng_control_1 = require("angular2/src/common/forms/directives/ng_control");
var lang_1 = require("angular2/src/facade/lang");
var NgControlStatus = (function() {
function NgControlStatus(cd) {
this._cd = cd;
}
Object.defineProperty(NgControlStatus.prototype, "ngClassUntouched", {
get: function() {
return lang_1.isPresent(this._cd.control) ? this._cd.control.untouched : false;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlStatus.prototype, "ngClassTouched", {
get: function() {
return lang_1.isPresent(this._cd.control) ? this._cd.control.touched : false;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlStatus.prototype, "ngClassPristine", {
get: function() {
return lang_1.isPresent(this._cd.control) ? this._cd.control.pristine : false;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlStatus.prototype, "ngClassDirty", {
get: function() {
return lang_1.isPresent(this._cd.control) ? this._cd.control.dirty : false;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlStatus.prototype, "ngClassValid", {
get: function() {
return lang_1.isPresent(this._cd.control) ? this._cd.control.valid : false;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlStatus.prototype, "ngClassInvalid", {
get: function() {
return lang_1.isPresent(this._cd.control) ? !this._cd.control.valid : false;
},
enumerable: true,
configurable: true
});
NgControlStatus = __decorate([core_1.Directive({
selector: '[ngControl],[ngModel],[ngFormControl]',
host: {
'[class.ng-untouched]': 'ngClassUntouched',
'[class.ng-touched]': 'ngClassTouched',
'[class.ng-pristine]': 'ngClassPristine',
'[class.ng-dirty]': 'ngClassDirty',
'[class.ng-valid]': 'ngClassValid',
'[class.ng-invalid]': 'ngClassInvalid'
}
}), __param(0, core_1.Self()), __metadata('design:paramtypes', [ng_control_1.NgControl])], NgControlStatus);
return NgControlStatus;
})();
exports.NgControlStatus = NgControlStatus;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/validators", ["angular2/core", "angular2/src/facade/lang", "angular2/src/common/forms/validators", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var core_1 = require("angular2/core");
var lang_1 = require("angular2/src/facade/lang");
var validators_1 = require("angular2/src/common/forms/validators");
var lang_2 = require("angular2/src/facade/lang");
var REQUIRED_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, {
useValue: validators_1.Validators.required,
multi: true
}));
var RequiredValidator = (function() {
function RequiredValidator() {}
RequiredValidator = __decorate([core_1.Directive({
selector: '[required][ngControl],[required][ngFormControl],[required][ngModel]',
providers: [REQUIRED_VALIDATOR]
}), __metadata('design:paramtypes', [])], RequiredValidator);
return RequiredValidator;
})();
exports.RequiredValidator = RequiredValidator;
var MIN_LENGTH_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, {
useExisting: core_1.forwardRef(function() {
return MinLengthValidator;
}),
multi: true
}));
var MinLengthValidator = (function() {
function MinLengthValidator(minLength) {
this._validator = validators_1.Validators.minLength(lang_2.NumberWrapper.parseInt(minLength, 10));
}
MinLengthValidator.prototype.validate = function(c) {
return this._validator(c);
};
MinLengthValidator = __decorate([core_1.Directive({
selector: '[minlength][ngControl],[minlength][ngFormControl],[minlength][ngModel]',
providers: [MIN_LENGTH_VALIDATOR]
}), __param(0, core_1.Attribute("minlength")), __metadata('design:paramtypes', [String])], MinLengthValidator);
return MinLengthValidator;
})();
exports.MinLengthValidator = MinLengthValidator;
var MAX_LENGTH_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, {
useExisting: core_1.forwardRef(function() {
return MaxLengthValidator;
}),
multi: true
}));
var MaxLengthValidator = (function() {
function MaxLengthValidator(maxLength) {
this._validator = validators_1.Validators.maxLength(lang_2.NumberWrapper.parseInt(maxLength, 10));
}
MaxLengthValidator.prototype.validate = function(c) {
return this._validator(c);
};
MaxLengthValidator = __decorate([core_1.Directive({
selector: '[maxlength][ngControl],[maxlength][ngFormControl],[maxlength][ngModel]',
providers: [MAX_LENGTH_VALIDATOR]
}), __param(0, core_1.Attribute("maxlength")), __metadata('design:paramtypes', [String])], MaxLengthValidator);
return MaxLengthValidator;
})();
exports.MaxLengthValidator = MaxLengthValidator;
var PATTERN_VALIDATOR = lang_1.CONST_EXPR(new core_1.Provider(validators_1.NG_VALIDATORS, {
useExisting: core_1.forwardRef(function() {
return PatternValidator;
}),
multi: true
}));
var PatternValidator = (function() {
function PatternValidator(pattern) {
this._validator = validators_1.Validators.pattern(pattern);
}
PatternValidator.prototype.validate = function(c) {
return this._validator(c);
};
PatternValidator = __decorate([core_1.Directive({
selector: '[pattern][ngControl],[pattern][ngFormControl],[pattern][ngModel]',
providers: [PATTERN_VALIDATOR]
}), __param(0, core_1.Attribute("pattern")), __metadata('design:paramtypes', [String])], PatternValidator);
return PatternValidator;
})();
exports.PatternValidator = PatternValidator;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/form_builder", ["angular2/core", "angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/common/forms/model"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var core_1 = require("angular2/core");
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var modelModule = require("angular2/src/common/forms/model");
var FormBuilder = (function() {
function FormBuilder() {}
FormBuilder.prototype.group = function(controlsConfig, extra) {
if (extra === void 0) {
extra = null;
}
var controls = this._reduceControls(controlsConfig);
var optionals = (lang_1.isPresent(extra) ? collection_1.StringMapWrapper.get(extra, "optionals") : null);
var validator = lang_1.isPresent(extra) ? collection_1.StringMapWrapper.get(extra, "validator") : null;
var asyncValidator = lang_1.isPresent(extra) ? collection_1.StringMapWrapper.get(extra, "asyncValidator") : null;
return new modelModule.ControlGroup(controls, optionals, validator, asyncValidator);
};
FormBuilder.prototype.control = function(value, validator, asyncValidator) {
if (validator === void 0) {
validator = null;
}
if (asyncValidator === void 0) {
asyncValidator = null;
}
return new modelModule.Control(value, validator, asyncValidator);
};
FormBuilder.prototype.array = function(controlsConfig, validator, asyncValidator) {
var _this = this;
if (validator === void 0) {
validator = null;
}
if (asyncValidator === void 0) {
asyncValidator = null;
}
var controls = controlsConfig.map(function(c) {
return _this._createControl(c);
});
return new modelModule.ControlArray(controls, validator, asyncValidator);
};
FormBuilder.prototype._reduceControls = function(controlsConfig) {
var _this = this;
var controls = {};
collection_1.StringMapWrapper.forEach(controlsConfig, function(controlConfig, controlName) {
controls[controlName] = _this._createControl(controlConfig);
});
return controls;
};
FormBuilder.prototype._createControl = function(controlConfig) {
if (controlConfig instanceof modelModule.Control || controlConfig instanceof modelModule.ControlGroup || controlConfig instanceof modelModule.ControlArray) {
return controlConfig;
} else if (lang_1.isArray(controlConfig)) {
var value = controlConfig[0];
var validator = controlConfig.length > 1 ? controlConfig[1] : null;
var asyncValidator = controlConfig.length > 2 ? controlConfig[2] : null;
return this.control(value, validator, asyncValidator);
} else {
return this.control(controlConfig);
}
};
FormBuilder = __decorate([core_1.Injectable(), __metadata('design:paramtypes', [])], FormBuilder);
return FormBuilder;
})();
exports.FormBuilder = FormBuilder;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/common_directives", ["angular2/src/facade/lang", "angular2/src/common/forms", "angular2/src/common/directives"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var forms_1 = require("angular2/src/common/forms");
var directives_1 = require("angular2/src/common/directives");
exports.COMMON_DIRECTIVES = lang_1.CONST_EXPR([directives_1.CORE_DIRECTIVES, forms_1.FORM_DIRECTIVES]);
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/events/key_events", ["angular2/src/platform/dom/dom_adapter", "angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/platform/dom/events/event_manager", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var event_manager_1 = require("angular2/src/platform/dom/events/event_manager");
var di_1 = require("angular2/src/core/di");
var modifierKeys = ['alt', 'control', 'meta', 'shift'];
var modifierKeyGetters = {
'alt': function(event) {
return event.altKey;
},
'control': function(event) {
return event.ctrlKey;
},
'meta': function(event) {
return event.metaKey;
},
'shift': function(event) {
return event.shiftKey;
}
};
var KeyEventsPlugin = (function(_super) {
__extends(KeyEventsPlugin, _super);
function KeyEventsPlugin() {
_super.call(this);
}
KeyEventsPlugin.prototype.supports = function(eventName) {
return lang_1.isPresent(KeyEventsPlugin.parseEventName(eventName));
};
KeyEventsPlugin.prototype.addEventListener = function(element, eventName, handler) {
var parsedEvent = KeyEventsPlugin.parseEventName(eventName);
var outsideHandler = KeyEventsPlugin.eventCallback(element, collection_1.StringMapWrapper.get(parsedEvent, 'fullKey'), handler, this.manager.getZone());
return this.manager.getZone().runOutsideAngular(function() {
return dom_adapter_1.DOM.onAndCancel(element, collection_1.StringMapWrapper.get(parsedEvent, 'domEventName'), outsideHandler);
});
};
KeyEventsPlugin.parseEventName = function(eventName) {
var parts = eventName.toLowerCase().split('.');
var domEventName = parts.shift();
if ((parts.length === 0) || !(lang_1.StringWrapper.equals(domEventName, 'keydown') || lang_1.StringWrapper.equals(domEventName, 'keyup'))) {
return null;
}
var key = KeyEventsPlugin._normalizeKey(parts.pop());
var fullKey = '';
modifierKeys.forEach(function(modifierName) {
if (collection_1.ListWrapper.contains(parts, modifierName)) {
collection_1.ListWrapper.remove(parts, modifierName);
fullKey += modifierName + '.';
}
});
fullKey += key;
if (parts.length != 0 || key.length === 0) {
return null;
}
var result = collection_1.StringMapWrapper.create();
collection_1.StringMapWrapper.set(result, 'domEventName', domEventName);
collection_1.StringMapWrapper.set(result, 'fullKey', fullKey);
return result;
};
KeyEventsPlugin.getEventFullKey = function(event) {
var fullKey = '';
var key = dom_adapter_1.DOM.getEventKey(event);
key = key.toLowerCase();
if (lang_1.StringWrapper.equals(key, ' ')) {
key = 'space';
} else if (lang_1.StringWrapper.equals(key, '.')) {
key = 'dot';
}
modifierKeys.forEach(function(modifierName) {
if (modifierName != key) {
var modifierGetter = collection_1.StringMapWrapper.get(modifierKeyGetters, modifierName);
if (modifierGetter(event)) {
fullKey += modifierName + '.';
}
}
});
fullKey += key;
return fullKey;
};
KeyEventsPlugin.eventCallback = function(element, fullKey, handler, zone) {
return function(event) {
if (lang_1.StringWrapper.equals(KeyEventsPlugin.getEventFullKey(event), fullKey)) {
zone.run(function() {
return handler(event);
});
}
};
};
KeyEventsPlugin._normalizeKey = function(keyName) {
switch (keyName) {
case 'esc':
return 'escape';
default:
return keyName;
}
};
KeyEventsPlugin = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], KeyEventsPlugin);
return KeyEventsPlugin;
})(event_manager_1.EventManagerPlugin);
exports.KeyEventsPlugin = KeyEventsPlugin;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/events/hammer_common", ["angular2/src/platform/dom/events/event_manager", "angular2/src/facade/collection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var event_manager_1 = require("angular2/src/platform/dom/events/event_manager");
var collection_1 = require("angular2/src/facade/collection");
var _eventNames = {
'pan': true,
'panstart': true,
'panmove': true,
'panend': true,
'pancancel': true,
'panleft': true,
'panright': true,
'panup': true,
'pandown': true,
'pinch': true,
'pinchstart': true,
'pinchmove': true,
'pinchend': true,
'pinchcancel': true,
'pinchin': true,
'pinchout': true,
'press': true,
'pressup': true,
'rotate': true,
'rotatestart': true,
'rotatemove': true,
'rotateend': true,
'rotatecancel': true,
'swipe': true,
'swipeleft': true,
'swiperight': true,
'swipeup': true,
'swipedown': true,
'tap': true
};
var HammerGesturesPluginCommon = (function(_super) {
__extends(HammerGesturesPluginCommon, _super);
function HammerGesturesPluginCommon() {
_super.call(this);
}
HammerGesturesPluginCommon.prototype.supports = function(eventName) {
eventName = eventName.toLowerCase();
return collection_1.StringMapWrapper.contains(_eventNames, eventName);
};
return HammerGesturesPluginCommon;
})(event_manager_1.EventManagerPlugin);
exports.HammerGesturesPluginCommon = HammerGesturesPluginCommon;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/xhr", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var XHR = (function() {
function XHR() {}
XHR.prototype.get = function(url) {
return null;
};
return XHR;
})();
exports.XHR = XHR;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/browser/testability", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/platform/dom/dom_adapter", "angular2/core"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var core_1 = require("angular2/core");
var PublicTestability = (function() {
function PublicTestability(testability) {
this._testability = testability;
}
PublicTestability.prototype.isStable = function() {
return this._testability.isStable();
};
PublicTestability.prototype.whenStable = function(callback) {
this._testability.whenStable(callback);
};
PublicTestability.prototype.findBindings = function(using, provider, exactMatch) {
return this.findProviders(using, provider, exactMatch);
};
PublicTestability.prototype.findProviders = function(using, provider, exactMatch) {
return this._testability.findBindings(using, provider, exactMatch);
};
return PublicTestability;
})();
var BrowserGetTestability = (function() {
function BrowserGetTestability() {}
BrowserGetTestability.init = function() {
core_1.setTestabilityGetter(new BrowserGetTestability());
};
BrowserGetTestability.prototype.addToWindow = function(registry) {
lang_1.global.getAngularTestability = function(elem, findInAncestors) {
if (findInAncestors === void 0) {
findInAncestors = true;
}
var testability = registry.findTestabilityInTree(elem, findInAncestors);
if (testability == null) {
throw new Error('Could not find testability for element.');
}
return new PublicTestability(testability);
};
lang_1.global.getAllAngularTestabilities = function() {
var testabilities = registry.getAllTestabilities();
return testabilities.map(function(testability) {
return new PublicTestability(testability);
});
};
lang_1.global.getAllAngularRootElements = function() {
return registry.getAllRootElements();
};
var whenAllStable = function(callback) {
var testabilities = lang_1.global.getAllAngularTestabilities();
var count = testabilities.length;
var didWork = false;
var decrement = function(didWork_) {
didWork = didWork || didWork_;
count--;
if (count == 0) {
callback(didWork);
}
};
testabilities.forEach(function(testability) {
testability.whenStable(decrement);
});
};
if (!lang_1.global.frameworkStabilizers) {
lang_1.global.frameworkStabilizers = collection_1.ListWrapper.createGrowableSize(0);
}
lang_1.global.frameworkStabilizers.push(whenAllStable);
};
BrowserGetTestability.prototype.findTestabilityInTree = function(registry, elem, findInAncestors) {
if (elem == null) {
return null;
}
var t = registry.getTestability(elem);
if (lang_1.isPresent(t)) {
return t;
} else if (!findInAncestors) {
return null;
}
if (dom_adapter_1.DOM.isShadowRoot(elem)) {
return this.findTestabilityInTree(registry, dom_adapter_1.DOM.getHost(elem), true);
}
return this.findTestabilityInTree(registry, dom_adapter_1.DOM.parentElement(elem), true);
};
return BrowserGetTestability;
})();
exports.BrowserGetTestability = BrowserGetTestability;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/profile/wtf_init", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function wtfInit() {}
exports.wtfInit = wtfInit;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/browser/title", ["angular2/src/platform/dom/dom_adapter"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var Title = (function() {
function Title() {}
Title.prototype.getTitle = function() {
return dom_adapter_1.DOM.getTitle();
};
Title.prototype.setTitle = function(newTitle) {
dom_adapter_1.DOM.setTitle(newTitle);
};
return Title;
})();
exports.Title = Title;
global.define = __define;
return module.exports;
});
System.register("angular2/src/facade/browser", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var win = window;
exports.window = win;
exports.document = window.document;
exports.location = window.location;
exports.gc = window['gc'] ? function() {
return window['gc']();
} : function() {
return null;
};
exports.performance = window['performance'] ? window['performance'] : null;
exports.Event = window['Event'];
exports.MouseEvent = window['MouseEvent'];
exports.KeyboardEvent = window['KeyboardEvent'];
exports.EventTarget = window['EventTarget'];
exports.History = window['History'];
exports.Location = window['Location'];
exports.EventListener = window['EventListener'];
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/url_resolver", ["angular2/src/core/di", "angular2/src/facade/lang", "angular2/src/core/application_tokens", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
var application_tokens_1 = require("angular2/src/core/application_tokens");
var di_2 = require("angular2/src/core/di");
function createWithoutPackagePrefix() {
return new UrlResolver();
}
exports.createWithoutPackagePrefix = createWithoutPackagePrefix;
exports.DEFAULT_PACKAGE_URL_PROVIDER = new di_2.Provider(application_tokens_1.PACKAGE_ROOT_URL, {useValue: "/"});
var UrlResolver = (function() {
function UrlResolver(packagePrefix) {
if (packagePrefix === void 0) {
packagePrefix = null;
}
if (lang_1.isPresent(packagePrefix)) {
this._packagePrefix = lang_1.StringWrapper.stripRight(packagePrefix, "/") + "/";
}
}
UrlResolver.prototype.resolve = function(baseUrl, url) {
var resolvedUrl = url;
if (lang_1.isPresent(baseUrl) && baseUrl.length > 0) {
resolvedUrl = _resolveUrl(baseUrl, resolvedUrl);
}
if (lang_1.isPresent(this._packagePrefix) && getUrlScheme(resolvedUrl) == "package") {
resolvedUrl = resolvedUrl.replace("package:", this._packagePrefix);
}
return resolvedUrl;
};
UrlResolver = __decorate([di_1.Injectable(), __param(0, di_1.Inject(application_tokens_1.PACKAGE_ROOT_URL)), __metadata('design:paramtypes', [String])], UrlResolver);
return UrlResolver;
})();
exports.UrlResolver = UrlResolver;
function getUrlScheme(url) {
var match = _split(url);
return (match && match[_ComponentIndex.Scheme]) || "";
}
exports.getUrlScheme = getUrlScheme;
function _buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {
var out = [];
if (lang_1.isPresent(opt_scheme)) {
out.push(opt_scheme + ':');
}
if (lang_1.isPresent(opt_domain)) {
out.push('//');
if (lang_1.isPresent(opt_userInfo)) {
out.push(opt_userInfo + '@');
}
out.push(opt_domain);
if (lang_1.isPresent(opt_port)) {
out.push(':' + opt_port);
}
}
if (lang_1.isPresent(opt_path)) {
out.push(opt_path);
}
if (lang_1.isPresent(opt_queryData)) {
out.push('?' + opt_queryData);
}
if (lang_1.isPresent(opt_fragment)) {
out.push('#' + opt_fragment);
}
return out.join('');
}
var _splitRe = lang_1.RegExpWrapper.create('^' + '(?:' + '([^:/?#.]+)' + ':)?' + '(?://' + '(?:([^/?#]*)@)?' + '([\\w\\d\\-\\u0100-\\uffff.%]*)' + '(?::([0-9]+))?' + ')?' + '([^?#]+)?' + '(?:\\?([^#]*))?' + '(?:#(.*))?' + '$');
var _ComponentIndex;
(function(_ComponentIndex) {
_ComponentIndex[_ComponentIndex["Scheme"] = 1] = "Scheme";
_ComponentIndex[_ComponentIndex["UserInfo"] = 2] = "UserInfo";
_ComponentIndex[_ComponentIndex["Domain"] = 3] = "Domain";
_ComponentIndex[_ComponentIndex["Port"] = 4] = "Port";
_ComponentIndex[_ComponentIndex["Path"] = 5] = "Path";
_ComponentIndex[_ComponentIndex["QueryData"] = 6] = "QueryData";
_ComponentIndex[_ComponentIndex["Fragment"] = 7] = "Fragment";
})(_ComponentIndex || (_ComponentIndex = {}));
function _split(uri) {
return lang_1.RegExpWrapper.firstMatch(_splitRe, uri);
}
function _removeDotSegments(path) {
if (path == '/')
return '/';
var leadingSlash = path[0] == '/' ? '/' : '';
var trailingSlash = path[path.length - 1] === '/' ? '/' : '';
var segments = path.split('/');
var out = [];
var up = 0;
for (var pos = 0; pos < segments.length; pos++) {
var segment = segments[pos];
switch (segment) {
case '':
case '.':
break;
case '..':
if (out.length > 0) {
out.pop();
} else {
up++;
}
break;
default:
out.push(segment);
}
}
if (leadingSlash == '') {
while (up-- > 0) {
out.unshift('..');
}
if (out.length === 0)
out.push('.');
}
return leadingSlash + out.join('/') + trailingSlash;
}
function _joinAndCanonicalizePath(parts) {
var path = parts[_ComponentIndex.Path];
path = lang_1.isBlank(path) ? '' : _removeDotSegments(path);
parts[_ComponentIndex.Path] = path;
return _buildFromEncodedParts(parts[_ComponentIndex.Scheme], parts[_ComponentIndex.UserInfo], parts[_ComponentIndex.Domain], parts[_ComponentIndex.Port], path, parts[_ComponentIndex.QueryData], parts[_ComponentIndex.Fragment]);
}
function _resolveUrl(base, url) {
var parts = _split(encodeURI(url));
var baseParts = _split(base);
if (lang_1.isPresent(parts[_ComponentIndex.Scheme])) {
return _joinAndCanonicalizePath(parts);
} else {
parts[_ComponentIndex.Scheme] = baseParts[_ComponentIndex.Scheme];
}
for (var i = _ComponentIndex.Scheme; i <= _ComponentIndex.Port; i++) {
if (lang_1.isBlank(parts[i])) {
parts[i] = baseParts[i];
}
}
if (parts[_ComponentIndex.Path][0] == '/') {
return _joinAndCanonicalizePath(parts);
}
var path = baseParts[_ComponentIndex.Path];
if (lang_1.isBlank(path))
path = '/';
var index = path.lastIndexOf('/');
path = path.substring(0, index + 1) + parts[_ComponentIndex.Path];
parts[_ComponentIndex.Path] = path;
return _joinAndCanonicalizePath(parts);
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/selector", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var _EMPTY_ATTR_VALUE = '';
var _SELECTOR_REGEXP = lang_1.RegExpWrapper.create('(\\:not\\()|' + '([-\\w]+)|' + '(?:\\.([-\\w]+))|' + '(?:\\[([-\\w*]+)(?:=([^\\]]*))?\\])|' + '(\\))|' + '(\\s*,\\s*)');
var CssSelector = (function() {
function CssSelector() {
this.element = null;
this.classNames = [];
this.attrs = [];
this.notSelectors = [];
}
CssSelector.parse = function(selector) {
var results = [];
var _addResult = function(res, cssSel) {
if (cssSel.notSelectors.length > 0 && lang_1.isBlank(cssSel.element) && collection_1.ListWrapper.isEmpty(cssSel.classNames) && collection_1.ListWrapper.isEmpty(cssSel.attrs)) {
cssSel.element = "*";
}
res.push(cssSel);
};
var cssSelector = new CssSelector();
var matcher = lang_1.RegExpWrapper.matcher(_SELECTOR_REGEXP, selector);
var match;
var current = cssSelector;
var inNot = false;
while (lang_1.isPresent(match = lang_1.RegExpMatcherWrapper.next(matcher))) {
if (lang_1.isPresent(match[1])) {
if (inNot) {
throw new exceptions_1.BaseException('Nesting :not is not allowed in a selector');
}
inNot = true;
current = new CssSelector();
cssSelector.notSelectors.push(current);
}
if (lang_1.isPresent(match[2])) {
current.setElement(match[2]);
}
if (lang_1.isPresent(match[3])) {
current.addClassName(match[3]);
}
if (lang_1.isPresent(match[4])) {
current.addAttribute(match[4], match[5]);
}
if (lang_1.isPresent(match[6])) {
inNot = false;
current = cssSelector;
}
if (lang_1.isPresent(match[7])) {
if (inNot) {
throw new exceptions_1.BaseException('Multiple selectors in :not are not supported');
}
_addResult(results, cssSelector);
cssSelector = current = new CssSelector();
}
}
_addResult(results, cssSelector);
return results;
};
CssSelector.prototype.isElementSelector = function() {
return lang_1.isPresent(this.element) && collection_1.ListWrapper.isEmpty(this.classNames) && collection_1.ListWrapper.isEmpty(this.attrs) && this.notSelectors.length === 0;
};
CssSelector.prototype.setElement = function(element) {
if (element === void 0) {
element = null;
}
this.element = element;
};
CssSelector.prototype.getMatchingElementTemplate = function() {
var tagName = lang_1.isPresent(this.element) ? this.element : 'div';
var classAttr = this.classNames.length > 0 ? " class=\"" + this.classNames.join(' ') + "\"" : '';
var attrs = '';
for (var i = 0; i < this.attrs.length; i += 2) {
var attrName = this.attrs[i];
var attrValue = this.attrs[i + 1] !== '' ? "=\"" + this.attrs[i + 1] + "\"" : '';
attrs += " " + attrName + attrValue;
}
return "<" + tagName + classAttr + attrs + "></" + tagName + ">";
};
CssSelector.prototype.addAttribute = function(name, value) {
if (value === void 0) {
value = _EMPTY_ATTR_VALUE;
}
this.attrs.push(name);
if (lang_1.isPresent(value)) {
value = value.toLowerCase();
} else {
value = _EMPTY_ATTR_VALUE;
}
this.attrs.push(value);
};
CssSelector.prototype.addClassName = function(name) {
this.classNames.push(name.toLowerCase());
};
CssSelector.prototype.toString = function() {
var res = '';
if (lang_1.isPresent(this.element)) {
res += this.element;
}
if (lang_1.isPresent(this.classNames)) {
for (var i = 0; i < this.classNames.length; i++) {
res += '.' + this.classNames[i];
}
}
if (lang_1.isPresent(this.attrs)) {
for (var i = 0; i < this.attrs.length; ) {
var attrName = this.attrs[i++];
var attrValue = this.attrs[i++];
res += '[' + attrName;
if (attrValue.length > 0) {
res += '=' + attrValue;
}
res += ']';
}
}
this.notSelectors.forEach(function(notSelector) {
return res += ":not(" + notSelector + ")";
});
return res;
};
return CssSelector;
})();
exports.CssSelector = CssSelector;
var SelectorMatcher = (function() {
function SelectorMatcher() {
this._elementMap = new collection_1.Map();
this._elementPartialMap = new collection_1.Map();
this._classMap = new collection_1.Map();
this._classPartialMap = new collection_1.Map();
this._attrValueMap = new collection_1.Map();
this._attrValuePartialMap = new collection_1.Map();
this._listContexts = [];
}
SelectorMatcher.createNotMatcher = function(notSelectors) {
var notMatcher = new SelectorMatcher();
notMatcher.addSelectables(notSelectors, null);
return notMatcher;
};
SelectorMatcher.prototype.addSelectables = function(cssSelectors, callbackCtxt) {
var listContext = null;
if (cssSelectors.length > 1) {
listContext = new SelectorListContext(cssSelectors);
this._listContexts.push(listContext);
}
for (var i = 0; i < cssSelectors.length; i++) {
this._addSelectable(cssSelectors[i], callbackCtxt, listContext);
}
};
SelectorMatcher.prototype._addSelectable = function(cssSelector, callbackCtxt, listContext) {
var matcher = this;
var element = cssSelector.element;
var classNames = cssSelector.classNames;
var attrs = cssSelector.attrs;
var selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);
if (lang_1.isPresent(element)) {
var isTerminal = attrs.length === 0 && classNames.length === 0;
if (isTerminal) {
this._addTerminal(matcher._elementMap, element, selectable);
} else {
matcher = this._addPartial(matcher._elementPartialMap, element);
}
}
if (lang_1.isPresent(classNames)) {
for (var index = 0; index < classNames.length; index++) {
var isTerminal = attrs.length === 0 && index === classNames.length - 1;
var className = classNames[index];
if (isTerminal) {
this._addTerminal(matcher._classMap, className, selectable);
} else {
matcher = this._addPartial(matcher._classPartialMap, className);
}
}
}
if (lang_1.isPresent(attrs)) {
for (var index = 0; index < attrs.length; ) {
var isTerminal = index === attrs.length - 2;
var attrName = attrs[index++];
var attrValue = attrs[index++];
if (isTerminal) {
var terminalMap = matcher._attrValueMap;
var terminalValuesMap = terminalMap.get(attrName);
if (lang_1.isBlank(terminalValuesMap)) {
terminalValuesMap = new collection_1.Map();
terminalMap.set(attrName, terminalValuesMap);
}
this._addTerminal(terminalValuesMap, attrValue, selectable);
} else {
var parttialMap = matcher._attrValuePartialMap;
var partialValuesMap = parttialMap.get(attrName);
if (lang_1.isBlank(partialValuesMap)) {
partialValuesMap = new collection_1.Map();
parttialMap.set(attrName, partialValuesMap);
}
matcher = this._addPartial(partialValuesMap, attrValue);
}
}
}
};
SelectorMatcher.prototype._addTerminal = function(map, name, selectable) {
var terminalList = map.get(name);
if (lang_1.isBlank(terminalList)) {
terminalList = [];
map.set(name, terminalList);
}
terminalList.push(selectable);
};
SelectorMatcher.prototype._addPartial = function(map, name) {
var matcher = map.get(name);
if (lang_1.isBlank(matcher)) {
matcher = new SelectorMatcher();
map.set(name, matcher);
}
return matcher;
};
SelectorMatcher.prototype.match = function(cssSelector, matchedCallback) {
var result = false;
var element = cssSelector.element;
var classNames = cssSelector.classNames;
var attrs = cssSelector.attrs;
for (var i = 0; i < this._listContexts.length; i++) {
this._listContexts[i].alreadyMatched = false;
}
result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;
result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) || result;
if (lang_1.isPresent(classNames)) {
for (var index = 0; index < classNames.length; index++) {
var className = classNames[index];
result = this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;
result = this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) || result;
}
}
if (lang_1.isPresent(attrs)) {
for (var index = 0; index < attrs.length; ) {
var attrName = attrs[index++];
var attrValue = attrs[index++];
var terminalValuesMap = this._attrValueMap.get(attrName);
if (!lang_1.StringWrapper.equals(attrValue, _EMPTY_ATTR_VALUE)) {
result = this._matchTerminal(terminalValuesMap, _EMPTY_ATTR_VALUE, cssSelector, matchedCallback) || result;
}
result = this._matchTerminal(terminalValuesMap, attrValue, cssSelector, matchedCallback) || result;
var partialValuesMap = this._attrValuePartialMap.get(attrName);
if (!lang_1.StringWrapper.equals(attrValue, _EMPTY_ATTR_VALUE)) {
result = this._matchPartial(partialValuesMap, _EMPTY_ATTR_VALUE, cssSelector, matchedCallback) || result;
}
result = this._matchPartial(partialValuesMap, attrValue, cssSelector, matchedCallback) || result;
}
}
return result;
};
SelectorMatcher.prototype._matchTerminal = function(map, name, cssSelector, matchedCallback) {
if (lang_1.isBlank(map) || lang_1.isBlank(name)) {
return false;
}
var selectables = map.get(name);
var starSelectables = map.get("*");
if (lang_1.isPresent(starSelectables)) {
selectables = selectables.concat(starSelectables);
}
if (lang_1.isBlank(selectables)) {
return false;
}
var selectable;
var result = false;
for (var index = 0; index < selectables.length; index++) {
selectable = selectables[index];
result = selectable.finalize(cssSelector, matchedCallback) || result;
}
return result;
};
SelectorMatcher.prototype._matchPartial = function(map, name, cssSelector, matchedCallback) {
if (lang_1.isBlank(map) || lang_1.isBlank(name)) {
return false;
}
var nestedSelector = map.get(name);
if (lang_1.isBlank(nestedSelector)) {
return false;
}
return nestedSelector.match(cssSelector, matchedCallback);
};
return SelectorMatcher;
})();
exports.SelectorMatcher = SelectorMatcher;
var SelectorListContext = (function() {
function SelectorListContext(selectors) {
this.selectors = selectors;
this.alreadyMatched = false;
}
return SelectorListContext;
})();
exports.SelectorListContext = SelectorListContext;
var SelectorContext = (function() {
function SelectorContext(selector, cbContext, listContext) {
this.selector = selector;
this.cbContext = cbContext;
this.listContext = listContext;
this.notSelectors = selector.notSelectors;
}
SelectorContext.prototype.finalize = function(cssSelector, callback) {
var result = true;
if (this.notSelectors.length > 0 && (lang_1.isBlank(this.listContext) || !this.listContext.alreadyMatched)) {
var notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);
result = !notMatcher.match(cssSelector, null);
}
if (result && lang_1.isPresent(callback) && (lang_1.isBlank(this.listContext) || !this.listContext.alreadyMatched)) {
if (lang_1.isPresent(this.listContext)) {
this.listContext.alreadyMatched = true;
}
callback(this.selector, this.cbContext);
}
return result;
};
return SelectorContext;
})();
exports.SelectorContext = SelectorContext;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/util", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var CAMEL_CASE_REGEXP = /([A-Z])/g;
var DASH_CASE_REGEXP = /-([a-z])/g;
var SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\|\n|\r|\$/g;
var DOUBLE_QUOTE_ESCAPE_STRING_RE = /"|\\|\n|\r|\$/g;
exports.MODULE_SUFFIX = lang_1.IS_DART ? '.dart' : '.js';
exports.CONST_VAR = lang_1.IS_DART ? 'const' : 'var';
function camelCaseToDashCase(input) {
return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function(m) {
return '-' + m[1].toLowerCase();
});
}
exports.camelCaseToDashCase = camelCaseToDashCase;
function dashCaseToCamelCase(input) {
return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function(m) {
return m[1].toUpperCase();
});
}
exports.dashCaseToCamelCase = dashCaseToCamelCase;
function escapeSingleQuoteString(input) {
if (lang_1.isBlank(input)) {
return null;
}
return "'" + escapeString(input, SINGLE_QUOTE_ESCAPE_STRING_RE) + "'";
}
exports.escapeSingleQuoteString = escapeSingleQuoteString;
function escapeDoubleQuoteString(input) {
if (lang_1.isBlank(input)) {
return null;
}
return "\"" + escapeString(input, DOUBLE_QUOTE_ESCAPE_STRING_RE) + "\"";
}
exports.escapeDoubleQuoteString = escapeDoubleQuoteString;
function escapeString(input, re) {
return lang_1.StringWrapper.replaceAllMapped(input, re, function(match) {
if (match[0] == '$') {
return lang_1.IS_DART ? '\\$' : '$';
} else if (match[0] == '\n') {
return '\\n';
} else if (match[0] == '\r') {
return '\\r';
} else {
return "\\" + match[0];
}
});
}
function codeGenExportVariable(name) {
if (lang_1.IS_DART) {
return "const " + name + " = ";
} else {
return "var " + name + " = exports['" + name + "'] = ";
}
}
exports.codeGenExportVariable = codeGenExportVariable;
function codeGenConstConstructorCall(name) {
if (lang_1.IS_DART) {
return "const " + name;
} else {
return "new " + name;
}
}
exports.codeGenConstConstructorCall = codeGenConstConstructorCall;
function codeGenValueFn(params, value, fnName) {
if (fnName === void 0) {
fnName = '';
}
if (lang_1.IS_DART) {
return codeGenFnHeader(params, fnName) + " => " + value;
} else {
return codeGenFnHeader(params, fnName) + " { return " + value + "; }";
}
}
exports.codeGenValueFn = codeGenValueFn;
function codeGenFnHeader(params, fnName) {
if (fnName === void 0) {
fnName = '';
}
if (lang_1.IS_DART) {
return fnName + "(" + params.join(',') + ")";
} else {
return "function " + fnName + "(" + params.join(',') + ")";
}
}
exports.codeGenFnHeader = codeGenFnHeader;
function codeGenToString(expr) {
if (lang_1.IS_DART) {
return "'${" + expr + "}'";
} else {
return expr;
}
}
exports.codeGenToString = codeGenToString;
function splitAtColon(input, defaultValues) {
var parts = lang_1.StringWrapper.split(input.trim(), /\s*:\s*/g);
if (parts.length > 1) {
return parts;
} else {
return defaultValues;
}
}
exports.splitAtColon = splitAtColon;
var Statement = (function() {
function Statement(statement) {
this.statement = statement;
}
return Statement;
})();
exports.Statement = Statement;
var Expression = (function() {
function Expression(expression, isArray) {
if (isArray === void 0) {
isArray = false;
}
this.expression = expression;
this.isArray = isArray;
}
return Expression;
})();
exports.Expression = Expression;
function escapeValue(value) {
if (value instanceof Expression) {
return value.expression;
} else if (lang_1.isString(value)) {
return escapeSingleQuoteString(value);
} else if (lang_1.isBlank(value)) {
return 'null';
} else {
return "" + value;
}
}
exports.escapeValue = escapeValue;
function codeGenArray(data) {
return "[" + data.map(escapeValue).join(',') + "]";
}
exports.codeGenArray = codeGenArray;
function codeGenFlatArray(values) {
var result = '([';
var isFirstArrayEntry = true;
var concatFn = lang_1.IS_DART ? '.addAll' : 'concat';
for (var i = 0; i < values.length; i++) {
var value = values[i];
if (value instanceof Expression && value.isArray) {
result += "])." + concatFn + "(" + value.expression + ")." + concatFn + "([";
isFirstArrayEntry = true;
} else {
if (!isFirstArrayEntry) {
result += ',';
}
isFirstArrayEntry = false;
result += escapeValue(value);
}
}
result += '])';
return result;
}
exports.codeGenFlatArray = codeGenFlatArray;
function codeGenStringMap(keyValueArray) {
return "{" + keyValueArray.map(codeGenKeyValue).join(',') + "}";
}
exports.codeGenStringMap = codeGenStringMap;
function codeGenKeyValue(keyValue) {
return escapeValue(keyValue[0]) + ":" + escapeValue(keyValue[1]);
}
function addAll(source, target) {
for (var i = 0; i < source.length; i++) {
target.push(source[i]);
}
}
exports.addAll = addAll;
function flattenArray(source, target) {
if (lang_1.isPresent(source)) {
for (var i = 0; i < source.length; i++) {
var item = source[i];
if (lang_1.isArray(item)) {
flattenArray(item, target);
} else {
target.push(item);
}
}
}
return target;
}
exports.flattenArray = flattenArray;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/interfaces", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
(function(LifecycleHooks) {
LifecycleHooks[LifecycleHooks["OnInit"] = 0] = "OnInit";
LifecycleHooks[LifecycleHooks["OnDestroy"] = 1] = "OnDestroy";
LifecycleHooks[LifecycleHooks["DoCheck"] = 2] = "DoCheck";
LifecycleHooks[LifecycleHooks["OnChanges"] = 3] = "OnChanges";
LifecycleHooks[LifecycleHooks["AfterContentInit"] = 4] = "AfterContentInit";
LifecycleHooks[LifecycleHooks["AfterContentChecked"] = 5] = "AfterContentChecked";
LifecycleHooks[LifecycleHooks["AfterViewInit"] = 6] = "AfterViewInit";
LifecycleHooks[LifecycleHooks["AfterViewChecked"] = 7] = "AfterViewChecked";
})(exports.LifecycleHooks || (exports.LifecycleHooks = {}));
var LifecycleHooks = exports.LifecycleHooks;
exports.LIFECYCLE_HOOKS_VALUES = [LifecycleHooks.OnInit, LifecycleHooks.OnDestroy, LifecycleHooks.DoCheck, LifecycleHooks.OnChanges, LifecycleHooks.AfterContentInit, LifecycleHooks.AfterContentChecked, LifecycleHooks.AfterViewInit, LifecycleHooks.AfterViewChecked];
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/template_ast", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var TextAst = (function() {
function TextAst(value, ngContentIndex, sourceSpan) {
this.value = value;
this.ngContentIndex = ngContentIndex;
this.sourceSpan = sourceSpan;
}
TextAst.prototype.visit = function(visitor, context) {
return visitor.visitText(this, context);
};
return TextAst;
})();
exports.TextAst = TextAst;
var BoundTextAst = (function() {
function BoundTextAst(value, ngContentIndex, sourceSpan) {
this.value = value;
this.ngContentIndex = ngContentIndex;
this.sourceSpan = sourceSpan;
}
BoundTextAst.prototype.visit = function(visitor, context) {
return visitor.visitBoundText(this, context);
};
return BoundTextAst;
})();
exports.BoundTextAst = BoundTextAst;
var AttrAst = (function() {
function AttrAst(name, value, sourceSpan) {
this.name = name;
this.value = value;
this.sourceSpan = sourceSpan;
}
AttrAst.prototype.visit = function(visitor, context) {
return visitor.visitAttr(this, context);
};
return AttrAst;
})();
exports.AttrAst = AttrAst;
var BoundElementPropertyAst = (function() {
function BoundElementPropertyAst(name, type, value, unit, sourceSpan) {
this.name = name;
this.type = type;
this.value = value;
this.unit = unit;
this.sourceSpan = sourceSpan;
}
BoundElementPropertyAst.prototype.visit = function(visitor, context) {
return visitor.visitElementProperty(this, context);
};
return BoundElementPropertyAst;
})();
exports.BoundElementPropertyAst = BoundElementPropertyAst;
var BoundEventAst = (function() {
function BoundEventAst(name, target, handler, sourceSpan) {
this.name = name;
this.target = target;
this.handler = handler;
this.sourceSpan = sourceSpan;
}
BoundEventAst.prototype.visit = function(visitor, context) {
return visitor.visitEvent(this, context);
};
Object.defineProperty(BoundEventAst.prototype, "fullName", {
get: function() {
if (lang_1.isPresent(this.target)) {
return this.target + ":" + this.name;
} else {
return this.name;
}
},
enumerable: true,
configurable: true
});
return BoundEventAst;
})();
exports.BoundEventAst = BoundEventAst;
var VariableAst = (function() {
function VariableAst(name, value, sourceSpan) {
this.name = name;
this.value = value;
this.sourceSpan = sourceSpan;
}
VariableAst.prototype.visit = function(visitor, context) {
return visitor.visitVariable(this, context);
};
return VariableAst;
})();
exports.VariableAst = VariableAst;
var ElementAst = (function() {
function ElementAst(name, attrs, inputs, outputs, exportAsVars, directives, children, ngContentIndex, sourceSpan) {
this.name = name;
this.attrs = attrs;
this.inputs = inputs;
this.outputs = outputs;
this.exportAsVars = exportAsVars;
this.directives = directives;
this.children = children;
this.ngContentIndex = ngContentIndex;
this.sourceSpan = sourceSpan;
}
ElementAst.prototype.visit = function(visitor, context) {
return visitor.visitElement(this, context);
};
ElementAst.prototype.isBound = function() {
return (this.inputs.length > 0 || this.outputs.length > 0 || this.exportAsVars.length > 0 || this.directives.length > 0);
};
ElementAst.prototype.getComponent = function() {
return this.directives.length > 0 && this.directives[0].directive.isComponent ? this.directives[0].directive : null;
};
return ElementAst;
})();
exports.ElementAst = ElementAst;
var EmbeddedTemplateAst = (function() {
function EmbeddedTemplateAst(attrs, outputs, vars, directives, children, ngContentIndex, sourceSpan) {
this.attrs = attrs;
this.outputs = outputs;
this.vars = vars;
this.directives = directives;
this.children = children;
this.ngContentIndex = ngContentIndex;
this.sourceSpan = sourceSpan;
}
EmbeddedTemplateAst.prototype.visit = function(visitor, context) {
return visitor.visitEmbeddedTemplate(this, context);
};
return EmbeddedTemplateAst;
})();
exports.EmbeddedTemplateAst = EmbeddedTemplateAst;
var BoundDirectivePropertyAst = (function() {
function BoundDirectivePropertyAst(directiveName, templateName, value, sourceSpan) {
this.directiveName = directiveName;
this.templateName = templateName;
this.value = value;
this.sourceSpan = sourceSpan;
}
BoundDirectivePropertyAst.prototype.visit = function(visitor, context) {
return visitor.visitDirectiveProperty(this, context);
};
return BoundDirectivePropertyAst;
})();
exports.BoundDirectivePropertyAst = BoundDirectivePropertyAst;
var DirectiveAst = (function() {
function DirectiveAst(directive, inputs, hostProperties, hostEvents, exportAsVars, sourceSpan) {
this.directive = directive;
this.inputs = inputs;
this.hostProperties = hostProperties;
this.hostEvents = hostEvents;
this.exportAsVars = exportAsVars;
this.sourceSpan = sourceSpan;
}
DirectiveAst.prototype.visit = function(visitor, context) {
return visitor.visitDirective(this, context);
};
return DirectiveAst;
})();
exports.DirectiveAst = DirectiveAst;
var NgContentAst = (function() {
function NgContentAst(index, ngContentIndex, sourceSpan) {
this.index = index;
this.ngContentIndex = ngContentIndex;
this.sourceSpan = sourceSpan;
}
NgContentAst.prototype.visit = function(visitor, context) {
return visitor.visitNgContent(this, context);
};
return NgContentAst;
})();
exports.NgContentAst = NgContentAst;
(function(PropertyBindingType) {
PropertyBindingType[PropertyBindingType["Property"] = 0] = "Property";
PropertyBindingType[PropertyBindingType["Attribute"] = 1] = "Attribute";
PropertyBindingType[PropertyBindingType["Class"] = 2] = "Class";
PropertyBindingType[PropertyBindingType["Style"] = 3] = "Style";
})(exports.PropertyBindingType || (exports.PropertyBindingType = {}));
var PropertyBindingType = exports.PropertyBindingType;
function templateVisitAll(visitor, asts, context) {
if (context === void 0) {
context = null;
}
var result = [];
asts.forEach(function(ast) {
var astResult = ast.visit(visitor, context);
if (lang_1.isPresent(astResult)) {
result.push(astResult);
}
});
return result;
}
exports.templateVisitAll = templateVisitAll;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/source_module", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var MODULE_REGEXP = /#MODULE\[([^\]]*)\]/g;
function moduleRef(moduleUrl) {
return "#MODULE[" + moduleUrl + "]";
}
exports.moduleRef = moduleRef;
var SourceModule = (function() {
function SourceModule(moduleUrl, sourceWithModuleRefs) {
this.moduleUrl = moduleUrl;
this.sourceWithModuleRefs = sourceWithModuleRefs;
}
SourceModule.getSourceWithoutImports = function(sourceWithModuleRefs) {
return lang_1.StringWrapper.replaceAllMapped(sourceWithModuleRefs, MODULE_REGEXP, function(match) {
return '';
});
};
SourceModule.prototype.getSourceWithImports = function() {
var _this = this;
var moduleAliases = {};
var imports = [];
var newSource = lang_1.StringWrapper.replaceAllMapped(this.sourceWithModuleRefs, MODULE_REGEXP, function(match) {
var moduleUrl = match[1];
var alias = moduleAliases[moduleUrl];
if (lang_1.isBlank(alias)) {
if (moduleUrl == _this.moduleUrl) {
alias = '';
} else {
alias = "import" + imports.length;
imports.push([moduleUrl, alias]);
}
moduleAliases[moduleUrl] = alias;
}
return alias.length > 0 ? alias + "." : '';
});
return new SourceWithImports(newSource, imports);
};
return SourceModule;
})();
exports.SourceModule = SourceModule;
var SourceExpression = (function() {
function SourceExpression(declarations, expression) {
this.declarations = declarations;
this.expression = expression;
}
return SourceExpression;
})();
exports.SourceExpression = SourceExpression;
var SourceExpressions = (function() {
function SourceExpressions(declarations, expressions) {
this.declarations = declarations;
this.expressions = expressions;
}
return SourceExpressions;
})();
exports.SourceExpressions = SourceExpressions;
var SourceWithImports = (function() {
function SourceWithImports(source, imports) {
this.source = source;
this.imports = imports;
}
return SourceWithImports;
})();
exports.SourceWithImports = SourceWithImports;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/change_definition_factory", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/core/reflection/reflection", "angular2/src/core/change_detection/change_detection", "angular2/src/compiler/template_ast", "angular2/src/core/linker/interfaces"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
var template_ast_1 = require("angular2/src/compiler/template_ast");
var interfaces_1 = require("angular2/src/core/linker/interfaces");
function createChangeDetectorDefinitions(componentType, componentStrategy, genConfig, parsedTemplate) {
var pvVisitors = [];
var visitor = new ProtoViewVisitor(null, pvVisitors, componentStrategy);
template_ast_1.templateVisitAll(visitor, parsedTemplate);
return createChangeDefinitions(pvVisitors, componentType, genConfig);
}
exports.createChangeDetectorDefinitions = createChangeDetectorDefinitions;
var ProtoViewVisitor = (function() {
function ProtoViewVisitor(parent, allVisitors, strategy) {
this.parent = parent;
this.allVisitors = allVisitors;
this.strategy = strategy;
this.nodeCount = 0;
this.boundElementCount = 0;
this.variableNames = [];
this.bindingRecords = [];
this.eventRecords = [];
this.directiveRecords = [];
this.viewIndex = allVisitors.length;
allVisitors.push(this);
}
ProtoViewVisitor.prototype.visitEmbeddedTemplate = function(ast, context) {
this.nodeCount++;
this.boundElementCount++;
template_ast_1.templateVisitAll(this, ast.outputs);
for (var i = 0; i < ast.directives.length; i++) {
ast.directives[i].visit(this, i);
}
var childVisitor = new ProtoViewVisitor(this, this.allVisitors, change_detection_1.ChangeDetectionStrategy.Default);
template_ast_1.templateVisitAll(childVisitor, ast.vars);
template_ast_1.templateVisitAll(childVisitor, ast.children);
return null;
};
ProtoViewVisitor.prototype.visitElement = function(ast, context) {
this.nodeCount++;
if (ast.isBound()) {
this.boundElementCount++;
}
template_ast_1.templateVisitAll(this, ast.inputs, null);
template_ast_1.templateVisitAll(this, ast.outputs);
template_ast_1.templateVisitAll(this, ast.exportAsVars);
for (var i = 0; i < ast.directives.length; i++) {
ast.directives[i].visit(this, i);
}
template_ast_1.templateVisitAll(this, ast.children);
return null;
};
ProtoViewVisitor.prototype.visitNgContent = function(ast, context) {
return null;
};
ProtoViewVisitor.prototype.visitVariable = function(ast, context) {
this.variableNames.push(ast.name);
return null;
};
ProtoViewVisitor.prototype.visitEvent = function(ast, directiveRecord) {
var bindingRecord = lang_1.isPresent(directiveRecord) ? change_detection_1.BindingRecord.createForHostEvent(ast.handler, ast.fullName, directiveRecord) : change_detection_1.BindingRecord.createForEvent(ast.handler, ast.fullName, this.boundElementCount - 1);
this.eventRecords.push(bindingRecord);
return null;
};
ProtoViewVisitor.prototype.visitElementProperty = function(ast, directiveRecord) {
var boundElementIndex = this.boundElementCount - 1;
var dirIndex = lang_1.isPresent(directiveRecord) ? directiveRecord.directiveIndex : null;
var bindingRecord;
if (ast.type === template_ast_1.PropertyBindingType.Property) {
bindingRecord = lang_1.isPresent(dirIndex) ? change_detection_1.BindingRecord.createForHostProperty(dirIndex, ast.value, ast.name) : change_detection_1.BindingRecord.createForElementProperty(ast.value, boundElementIndex, ast.name);
} else if (ast.type === template_ast_1.PropertyBindingType.Attribute) {
bindingRecord = lang_1.isPresent(dirIndex) ? change_detection_1.BindingRecord.createForHostAttribute(dirIndex, ast.value, ast.name) : change_detection_1.BindingRecord.createForElementAttribute(ast.value, boundElementIndex, ast.name);
} else if (ast.type === template_ast_1.PropertyBindingType.Class) {
bindingRecord = lang_1.isPresent(dirIndex) ? change_detection_1.BindingRecord.createForHostClass(dirIndex, ast.value, ast.name) : change_detection_1.BindingRecord.createForElementClass(ast.value, boundElementIndex, ast.name);
} else if (ast.type === template_ast_1.PropertyBindingType.Style) {
bindingRecord = lang_1.isPresent(dirIndex) ? change_detection_1.BindingRecord.createForHostStyle(dirIndex, ast.value, ast.name, ast.unit) : change_detection_1.BindingRecord.createForElementStyle(ast.value, boundElementIndex, ast.name, ast.unit);
}
this.bindingRecords.push(bindingRecord);
return null;
};
ProtoViewVisitor.prototype.visitAttr = function(ast, context) {
return null;
};
ProtoViewVisitor.prototype.visitBoundText = function(ast, context) {
var nodeIndex = this.nodeCount++;
this.bindingRecords.push(change_detection_1.BindingRecord.createForTextNode(ast.value, nodeIndex));
return null;
};
ProtoViewVisitor.prototype.visitText = function(ast, context) {
this.nodeCount++;
return null;
};
ProtoViewVisitor.prototype.visitDirective = function(ast, directiveIndexAsNumber) {
var directiveIndex = new change_detection_1.DirectiveIndex(this.boundElementCount - 1, directiveIndexAsNumber);
var directiveMetadata = ast.directive;
var outputsArray = [];
collection_1.StringMapWrapper.forEach(ast.directive.outputs, function(eventName, dirProperty) {
return outputsArray.push([dirProperty, eventName]);
});
var directiveRecord = new change_detection_1.DirectiveRecord({
directiveIndex: directiveIndex,
callAfterContentInit: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.AfterContentInit) !== -1,
callAfterContentChecked: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.AfterContentChecked) !== -1,
callAfterViewInit: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.AfterViewInit) !== -1,
callAfterViewChecked: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.AfterViewChecked) !== -1,
callOnChanges: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.OnChanges) !== -1,
callDoCheck: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.DoCheck) !== -1,
callOnInit: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.OnInit) !== -1,
callOnDestroy: directiveMetadata.lifecycleHooks.indexOf(interfaces_1.LifecycleHooks.OnDestroy) !== -1,
changeDetection: directiveMetadata.changeDetection,
outputs: outputsArray
});
this.directiveRecords.push(directiveRecord);
template_ast_1.templateVisitAll(this, ast.inputs, directiveRecord);
var bindingRecords = this.bindingRecords;
if (directiveRecord.callOnChanges) {
bindingRecords.push(change_detection_1.BindingRecord.createDirectiveOnChanges(directiveRecord));
}
if (directiveRecord.callOnInit) {
bindingRecords.push(change_detection_1.BindingRecord.createDirectiveOnInit(directiveRecord));
}
if (directiveRecord.callDoCheck) {
bindingRecords.push(change_detection_1.BindingRecord.createDirectiveDoCheck(directiveRecord));
}
template_ast_1.templateVisitAll(this, ast.hostProperties, directiveRecord);
template_ast_1.templateVisitAll(this, ast.hostEvents, directiveRecord);
template_ast_1.templateVisitAll(this, ast.exportAsVars);
return null;
};
ProtoViewVisitor.prototype.visitDirectiveProperty = function(ast, directiveRecord) {
var setter = reflection_1.reflector.setter(ast.directiveName);
this.bindingRecords.push(change_detection_1.BindingRecord.createForDirective(ast.value, ast.directiveName, setter, directiveRecord));
return null;
};
return ProtoViewVisitor;
})();
function createChangeDefinitions(pvVisitors, componentType, genConfig) {
var pvVariableNames = _collectNestedProtoViewsVariableNames(pvVisitors);
return pvVisitors.map(function(pvVisitor) {
var id = componentType.name + "_" + pvVisitor.viewIndex;
return new change_detection_1.ChangeDetectorDefinition(id, pvVisitor.strategy, pvVariableNames[pvVisitor.viewIndex], pvVisitor.bindingRecords, pvVisitor.eventRecords, pvVisitor.directiveRecords, genConfig);
});
}
function _collectNestedProtoViewsVariableNames(pvVisitors) {
var nestedPvVariableNames = collection_1.ListWrapper.createFixedSize(pvVisitors.length);
pvVisitors.forEach(function(pv) {
var parentVariableNames = lang_1.isPresent(pv.parent) ? nestedPvVariableNames[pv.parent.viewIndex] : [];
nestedPvVariableNames[pv.viewIndex] = parentVariableNames.concat(pv.variableNames);
});
return nestedPvVariableNames;
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/transform/template_compiler/change_detector_codegen", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var Codegen = (function() {
function Codegen(moduleAlias) {}
Codegen.prototype.generate = function(typeName, changeDetectorTypeName, def) {
throw "Not implemented in JS";
};
Codegen.prototype.toString = function() {
throw "Not implemented in JS";
};
return Codegen;
})();
exports.Codegen = Codegen;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/shadow_css", ["angular2/src/facade/collection", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var ShadowCss = (function() {
function ShadowCss() {
this.strictStyling = true;
}
ShadowCss.prototype.shimCssText = function(cssText, selector, hostSelector) {
if (hostSelector === void 0) {
hostSelector = '';
}
cssText = stripComments(cssText);
cssText = this._insertDirectives(cssText);
return this._scopeCssText(cssText, selector, hostSelector);
};
ShadowCss.prototype._insertDirectives = function(cssText) {
cssText = this._insertPolyfillDirectivesInCssText(cssText);
return this._insertPolyfillRulesInCssText(cssText);
};
ShadowCss.prototype._insertPolyfillDirectivesInCssText = function(cssText) {
return lang_1.StringWrapper.replaceAllMapped(cssText, _cssContentNextSelectorRe, function(m) {
return m[1] + '{';
});
};
ShadowCss.prototype._insertPolyfillRulesInCssText = function(cssText) {
return lang_1.StringWrapper.replaceAllMapped(cssText, _cssContentRuleRe, function(m) {
var rule = m[0];
rule = lang_1.StringWrapper.replace(rule, m[1], '');
rule = lang_1.StringWrapper.replace(rule, m[2], '');
return m[3] + rule;
});
};
ShadowCss.prototype._scopeCssText = function(cssText, scopeSelector, hostSelector) {
var unscoped = this._extractUnscopedRulesFromCssText(cssText);
cssText = this._insertPolyfillHostInCssText(cssText);
cssText = this._convertColonHost(cssText);
cssText = this._convertColonHostContext(cssText);
cssText = this._convertShadowDOMSelectors(cssText);
if (lang_1.isPresent(scopeSelector)) {
cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);
}
cssText = cssText + '\n' + unscoped;
return cssText.trim();
};
ShadowCss.prototype._extractUnscopedRulesFromCssText = function(cssText) {
var r = '',
m;
var matcher = lang_1.RegExpWrapper.matcher(_cssContentUnscopedRuleRe, cssText);
while (lang_1.isPresent(m = lang_1.RegExpMatcherWrapper.next(matcher))) {
var rule = m[0];
rule = lang_1.StringWrapper.replace(rule, m[2], '');
rule = lang_1.StringWrapper.replace(rule, m[1], m[3]);
r += rule + '\n\n';
}
return r;
};
ShadowCss.prototype._convertColonHost = function(cssText) {
return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer);
};
ShadowCss.prototype._convertColonHostContext = function(cssText) {
return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer);
};
ShadowCss.prototype._convertColonRule = function(cssText, regExp, partReplacer) {
return lang_1.StringWrapper.replaceAllMapped(cssText, regExp, function(m) {
if (lang_1.isPresent(m[2])) {
var parts = m[2].split(','),
r = [];
for (var i = 0; i < parts.length; i++) {
var p = parts[i];
if (lang_1.isBlank(p))
break;
p = p.trim();
r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));
}
return r.join(',');
} else {
return _polyfillHostNoCombinator + m[3];
}
});
};
ShadowCss.prototype._colonHostContextPartReplacer = function(host, part, suffix) {
if (lang_1.StringWrapper.contains(part, _polyfillHost)) {
return this._colonHostPartReplacer(host, part, suffix);
} else {
return host + part + suffix + ', ' + part + ' ' + host + suffix;
}
};
ShadowCss.prototype._colonHostPartReplacer = function(host, part, suffix) {
return host + lang_1.StringWrapper.replace(part, _polyfillHost, '') + suffix;
};
ShadowCss.prototype._convertShadowDOMSelectors = function(cssText) {
for (var i = 0; i < _shadowDOMSelectorsRe.length; i++) {
cssText = lang_1.StringWrapper.replaceAll(cssText, _shadowDOMSelectorsRe[i], ' ');
}
return cssText;
};
ShadowCss.prototype._scopeSelectors = function(cssText, scopeSelector, hostSelector) {
var _this = this;
return processRules(cssText, function(rule) {
var selector = rule.selector;
var content = rule.content;
if (rule.selector[0] != '@' || rule.selector.startsWith('@page')) {
selector = _this._scopeSelector(rule.selector, scopeSelector, hostSelector, _this.strictStyling);
} else if (rule.selector.startsWith('@media')) {
content = _this._scopeSelectors(rule.content, scopeSelector, hostSelector);
}
return new CssRule(selector, content);
});
};
ShadowCss.prototype._scopeSelector = function(selector, scopeSelector, hostSelector, strict) {
var r = [],
parts = selector.split(',');
for (var i = 0; i < parts.length; i++) {
var p = parts[i].trim();
var deepParts = lang_1.StringWrapper.split(p, _shadowDeepSelectors);
var shallowPart = deepParts[0];
if (this._selectorNeedsScoping(shallowPart, scopeSelector)) {
deepParts[0] = strict && !lang_1.StringWrapper.contains(shallowPart, _polyfillHostNoCombinator) ? this._applyStrictSelectorScope(shallowPart, scopeSelector) : this._applySelectorScope(shallowPart, scopeSelector, hostSelector);
}
r.push(deepParts.join(' '));
}
return r.join(', ');
};
ShadowCss.prototype._selectorNeedsScoping = function(selector, scopeSelector) {
var re = this._makeScopeMatcher(scopeSelector);
return !lang_1.isPresent(lang_1.RegExpWrapper.firstMatch(re, selector));
};
ShadowCss.prototype._makeScopeMatcher = function(scopeSelector) {
var lre = /\[/g;
var rre = /\]/g;
scopeSelector = lang_1.StringWrapper.replaceAll(scopeSelector, lre, '\\[');
scopeSelector = lang_1.StringWrapper.replaceAll(scopeSelector, rre, '\\]');
return lang_1.RegExpWrapper.create('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');
};
ShadowCss.prototype._applySelectorScope = function(selector, scopeSelector, hostSelector) {
return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector);
};
ShadowCss.prototype._applySimpleSelectorScope = function(selector, scopeSelector, hostSelector) {
if (lang_1.isPresent(lang_1.RegExpWrapper.firstMatch(_polyfillHostRe, selector))) {
var replaceBy = this.strictStyling ? "[" + hostSelector + "]" : scopeSelector;
selector = lang_1.StringWrapper.replace(selector, _polyfillHostNoCombinator, replaceBy);
return lang_1.StringWrapper.replaceAll(selector, _polyfillHostRe, replaceBy + ' ');
} else {
return scopeSelector + ' ' + selector;
}
};
ShadowCss.prototype._applyStrictSelectorScope = function(selector, scopeSelector) {
var isRe = /\[is=([^\]]*)\]/g;
scopeSelector = lang_1.StringWrapper.replaceAllMapped(scopeSelector, isRe, function(m) {
return m[1];
});
var splits = [' ', '>', '+', '~'],
scoped = selector,
attrName = '[' + scopeSelector + ']';
for (var i = 0; i < splits.length; i++) {
var sep = splits[i];
var parts = scoped.split(sep);
scoped = parts.map(function(p) {
var t = lang_1.StringWrapper.replaceAll(p.trim(), _polyfillHostRe, '');
if (t.length > 0 && !collection_1.ListWrapper.contains(splits, t) && !lang_1.StringWrapper.contains(t, attrName)) {
var re = /([^:]*)(:*)(.*)/g;
var m = lang_1.RegExpWrapper.firstMatch(re, t);
if (lang_1.isPresent(m)) {
p = m[1] + attrName + m[2] + m[3];
}
}
return p;
}).join(sep);
}
return scoped;
};
ShadowCss.prototype._insertPolyfillHostInCssText = function(selector) {
selector = lang_1.StringWrapper.replaceAll(selector, _colonHostContextRe, _polyfillHostContext);
selector = lang_1.StringWrapper.replaceAll(selector, _colonHostRe, _polyfillHost);
return selector;
};
return ShadowCss;
})();
exports.ShadowCss = ShadowCss;
var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim;
var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim;
var _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim;
var _polyfillHost = '-shadowcsshost';
var _polyfillHostContext = '-shadowcsscontext';
var _parenSuffix = ')(?:\\((' + '(?:\\([^)(]*\\)|[^)(]*)+?' + ')\\))?([^,{]*)';
var _cssColonHostRe = lang_1.RegExpWrapper.create('(' + _polyfillHost + _parenSuffix, 'im');
var _cssColonHostContextRe = lang_1.RegExpWrapper.create('(' + _polyfillHostContext + _parenSuffix, 'im');
var _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';
var _shadowDOMSelectorsRe = [/::shadow/g, /::content/g, /\/shadow-deep\//g, /\/shadow\//g];
var _shadowDeepSelectors = /(?:>>>)|(?:\/deep\/)/g;
var _selectorReSuffix = '([>\\s~+\[.,{:][\\s\\S]*)?$';
var _polyfillHostRe = lang_1.RegExpWrapper.create(_polyfillHost, 'im');
var _colonHostRe = /:host/gim;
var _colonHostContextRe = /:host-context/gim;
var _commentRe = /\/\*[\s\S]*?\*\//g;
function stripComments(input) {
return lang_1.StringWrapper.replaceAllMapped(input, _commentRe, function(_) {
return '';
});
}
var _ruleRe = /(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g;
var _curlyRe = /([{}])/g;
var OPEN_CURLY = '{';
var CLOSE_CURLY = '}';
var BLOCK_PLACEHOLDER = '%BLOCK%';
var CssRule = (function() {
function CssRule(selector, content) {
this.selector = selector;
this.content = content;
}
return CssRule;
})();
exports.CssRule = CssRule;
function processRules(input, ruleCallback) {
var inputWithEscapedBlocks = escapeBlocks(input);
var nextBlockIndex = 0;
return lang_1.StringWrapper.replaceAllMapped(inputWithEscapedBlocks.escapedString, _ruleRe, function(m) {
var selector = m[2];
var content = '';
var suffix = m[4];
var contentPrefix = '';
if (lang_1.isPresent(m[4]) && m[4].startsWith('{' + BLOCK_PLACEHOLDER)) {
content = inputWithEscapedBlocks.blocks[nextBlockIndex++];
suffix = m[4].substring(BLOCK_PLACEHOLDER.length + 1);
contentPrefix = '{';
}
var rule = ruleCallback(new CssRule(selector, content));
return "" + m[1] + rule.selector + m[3] + contentPrefix + rule.content + suffix;
});
}
exports.processRules = processRules;
var StringWithEscapedBlocks = (function() {
function StringWithEscapedBlocks(escapedString, blocks) {
this.escapedString = escapedString;
this.blocks = blocks;
}
return StringWithEscapedBlocks;
})();
function escapeBlocks(input) {
var inputParts = lang_1.StringWrapper.split(input, _curlyRe);
var resultParts = [];
var escapedBlocks = [];
var bracketCount = 0;
var currentBlockParts = [];
for (var partIndex = 0; partIndex < inputParts.length; partIndex++) {
var part = inputParts[partIndex];
if (part == CLOSE_CURLY) {
bracketCount--;
}
if (bracketCount > 0) {
currentBlockParts.push(part);
} else {
if (currentBlockParts.length > 0) {
escapedBlocks.push(currentBlockParts.join(''));
resultParts.push(BLOCK_PLACEHOLDER);
currentBlockParts = [];
}
resultParts.push(part);
}
if (part == OPEN_CURLY) {
bracketCount++;
}
}
if (currentBlockParts.length > 0) {
escapedBlocks.push(currentBlockParts.join(''));
resultParts.push(BLOCK_PLACEHOLDER);
}
return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/style_url_resolver", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var StyleWithImports = (function() {
function StyleWithImports(style, styleUrls) {
this.style = style;
this.styleUrls = styleUrls;
}
return StyleWithImports;
})();
exports.StyleWithImports = StyleWithImports;
function isStyleUrlResolvable(url) {
if (lang_1.isBlank(url) || url.length === 0 || url[0] == '/')
return false;
var schemeMatch = lang_1.RegExpWrapper.firstMatch(_urlWithSchemaRe, url);
return lang_1.isBlank(schemeMatch) || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset';
}
exports.isStyleUrlResolvable = isStyleUrlResolvable;
function extractStyleUrls(resolver, baseUrl, cssText) {
var foundUrls = [];
var modifiedCssText = lang_1.StringWrapper.replaceAllMapped(cssText, _cssImportRe, function(m) {
var url = lang_1.isPresent(m[1]) ? m[1] : m[2];
if (!isStyleUrlResolvable(url)) {
return m[0];
}
foundUrls.push(resolver.resolve(baseUrl, url));
return '';
});
return new StyleWithImports(modifiedCssText, foundUrls);
}
exports.extractStyleUrls = extractStyleUrls;
var _cssImportRe = /@import\s+(?:url\()?\s*(?:(?:['"]([^'"]*))|([^;\)\s]*))[^;]*;?/g;
var _urlWithSchemaRe = /^([a-zA-Z\-\+\.]+):/g;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/proto_view_compiler", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/compiler/template_ast", "angular2/src/compiler/source_module", "angular2/src/core/linker/view", "angular2/src/core/linker/view_type", "angular2/src/core/linker/element", "angular2/src/compiler/util", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var template_ast_1 = require("angular2/src/compiler/template_ast");
var source_module_1 = require("angular2/src/compiler/source_module");
var view_1 = require("angular2/src/core/linker/view");
var view_type_1 = require("angular2/src/core/linker/view_type");
var element_1 = require("angular2/src/core/linker/element");
var util_1 = require("angular2/src/compiler/util");
var di_1 = require("angular2/src/core/di");
exports.PROTO_VIEW_JIT_IMPORTS = lang_1.CONST_EXPR({
'AppProtoView': view_1.AppProtoView,
'AppProtoElement': element_1.AppProtoElement,
'ViewType': view_type_1.ViewType
});
exports.APP_VIEW_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/linker/view' + util_1.MODULE_SUFFIX);
exports.VIEW_TYPE_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/linker/view_type' + util_1.MODULE_SUFFIX);
exports.APP_EL_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/linker/element' + util_1.MODULE_SUFFIX);
exports.METADATA_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/metadata/view' + util_1.MODULE_SUFFIX);
var IMPLICIT_TEMPLATE_VAR = '\$implicit';
var CLASS_ATTR = 'class';
var STYLE_ATTR = 'style';
var ProtoViewCompiler = (function() {
function ProtoViewCompiler() {}
ProtoViewCompiler.prototype.compileProtoViewRuntime = function(metadataCache, component, template, pipes) {
var protoViewFactory = new RuntimeProtoViewFactory(metadataCache, component, pipes);
var allProtoViews = [];
protoViewFactory.createCompileProtoView(template, [], [], allProtoViews);
return new CompileProtoViews([], allProtoViews);
};
ProtoViewCompiler.prototype.compileProtoViewCodeGen = function(resolvedMetadataCacheExpr, component, template, pipes) {
var protoViewFactory = new CodeGenProtoViewFactory(resolvedMetadataCacheExpr, component, pipes);
var allProtoViews = [];
var allStatements = [];
protoViewFactory.createCompileProtoView(template, [], allStatements, allProtoViews);
return new CompileProtoViews(allStatements.map(function(stmt) {
return stmt.statement;
}), allProtoViews);
};
ProtoViewCompiler = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], ProtoViewCompiler);
return ProtoViewCompiler;
})();
exports.ProtoViewCompiler = ProtoViewCompiler;
var CompileProtoViews = (function() {
function CompileProtoViews(declarations, protoViews) {
this.declarations = declarations;
this.protoViews = protoViews;
}
return CompileProtoViews;
})();
exports.CompileProtoViews = CompileProtoViews;
var CompileProtoView = (function() {
function CompileProtoView(embeddedTemplateIndex, protoElements, protoView) {
this.embeddedTemplateIndex = embeddedTemplateIndex;
this.protoElements = protoElements;
this.protoView = protoView;
}
return CompileProtoView;
})();
exports.CompileProtoView = CompileProtoView;
var CompileProtoElement = (function() {
function CompileProtoElement(boundElementIndex, attrNameAndValues, variableNameAndValues, renderEvents, directives, embeddedTemplateIndex, appProtoEl) {
this.boundElementIndex = boundElementIndex;
this.attrNameAndValues = attrNameAndValues;
this.variableNameAndValues = variableNameAndValues;
this.renderEvents = renderEvents;
this.directives = directives;
this.embeddedTemplateIndex = embeddedTemplateIndex;
this.appProtoEl = appProtoEl;
}
return CompileProtoElement;
})();
exports.CompileProtoElement = CompileProtoElement;
function visitAndReturnContext(visitor, asts, context) {
template_ast_1.templateVisitAll(visitor, asts, context);
return context;
}
var ProtoViewFactory = (function() {
function ProtoViewFactory(component) {
this.component = component;
}
ProtoViewFactory.prototype.createCompileProtoView = function(template, templateVariableBindings, targetStatements, targetProtoViews) {
var embeddedTemplateIndex = targetProtoViews.length;
targetProtoViews.push(null);
var builder = new ProtoViewBuilderVisitor(this, targetStatements, targetProtoViews);
template_ast_1.templateVisitAll(builder, template);
var viewType = getViewType(this.component, embeddedTemplateIndex);
var appProtoView = this.createAppProtoView(embeddedTemplateIndex, viewType, templateVariableBindings, targetStatements);
var cpv = new CompileProtoView(embeddedTemplateIndex, builder.protoElements, appProtoView);
targetProtoViews[embeddedTemplateIndex] = cpv;
return cpv;
};
return ProtoViewFactory;
})();
var CodeGenProtoViewFactory = (function(_super) {
__extends(CodeGenProtoViewFactory, _super);
function CodeGenProtoViewFactory(resolvedMetadataCacheExpr, component, pipes) {
_super.call(this, component);
this.resolvedMetadataCacheExpr = resolvedMetadataCacheExpr;
this.pipes = pipes;
this._nextVarId = 0;
}
CodeGenProtoViewFactory.prototype._nextProtoViewVar = function(embeddedTemplateIndex) {
return "appProtoView" + this._nextVarId++ + "_" + this.component.type.name + embeddedTemplateIndex;
};
CodeGenProtoViewFactory.prototype.createAppProtoView = function(embeddedTemplateIndex, viewType, templateVariableBindings, targetStatements) {
var protoViewVarName = this._nextProtoViewVar(embeddedTemplateIndex);
var viewTypeExpr = codeGenViewType(viewType);
var pipesExpr = embeddedTemplateIndex === 0 ? codeGenTypesArray(this.pipes.map(function(pipeMeta) {
return pipeMeta.type;
})) : null;
var statement = "var " + protoViewVarName + " = " + exports.APP_VIEW_MODULE_REF + "AppProtoView.create(" + this.resolvedMetadataCacheExpr.expression + ", " + viewTypeExpr + ", " + pipesExpr + ", " + util_1.codeGenStringMap(templateVariableBindings) + ");";
targetStatements.push(new util_1.Statement(statement));
return new util_1.Expression(protoViewVarName);
};
CodeGenProtoViewFactory.prototype.createAppProtoElement = function(boundElementIndex, attrNameAndValues, variableNameAndValues, directives, targetStatements) {
var varName = "appProtoEl" + this._nextVarId++ + "_" + this.component.type.name;
var value = exports.APP_EL_MODULE_REF + "AppProtoElement.create(\n " + this.resolvedMetadataCacheExpr.expression + ",\n " + boundElementIndex + ",\n " + util_1.codeGenStringMap(attrNameAndValues) + ",\n " + codeGenDirectivesArray(directives) + ",\n " + util_1.codeGenStringMap(variableNameAndValues) + "\n )";
var statement = "var " + varName + " = " + value + ";";
targetStatements.push(new util_1.Statement(statement));
return new util_1.Expression(varName);
};
return CodeGenProtoViewFactory;
})(ProtoViewFactory);
var RuntimeProtoViewFactory = (function(_super) {
__extends(RuntimeProtoViewFactory, _super);
function RuntimeProtoViewFactory(metadataCache, component, pipes) {
_super.call(this, component);
this.metadataCache = metadataCache;
this.pipes = pipes;
}
RuntimeProtoViewFactory.prototype.createAppProtoView = function(embeddedTemplateIndex, viewType, templateVariableBindings, targetStatements) {
var pipes = embeddedTemplateIndex === 0 ? this.pipes.map(function(pipeMeta) {
return pipeMeta.type.runtime;
}) : [];
var templateVars = keyValueArrayToStringMap(templateVariableBindings);
return view_1.AppProtoView.create(this.metadataCache, viewType, pipes, templateVars);
};
RuntimeProtoViewFactory.prototype.createAppProtoElement = function(boundElementIndex, attrNameAndValues, variableNameAndValues, directives, targetStatements) {
var attrs = keyValueArrayToStringMap(attrNameAndValues);
return element_1.AppProtoElement.create(this.metadataCache, boundElementIndex, attrs, directives.map(function(dirMeta) {
return dirMeta.type.runtime;
}), keyValueArrayToStringMap(variableNameAndValues));
};
return RuntimeProtoViewFactory;
})(ProtoViewFactory);
var ProtoViewBuilderVisitor = (function() {
function ProtoViewBuilderVisitor(factory, allStatements, allProtoViews) {
this.factory = factory;
this.allStatements = allStatements;
this.allProtoViews = allProtoViews;
this.protoElements = [];
this.boundElementCount = 0;
}
ProtoViewBuilderVisitor.prototype._readAttrNameAndValues = function(directives, attrAsts) {
var attrs = visitAndReturnContext(this, attrAsts, {});
directives.forEach(function(directiveMeta) {
collection_1.StringMapWrapper.forEach(directiveMeta.hostAttributes, function(value, name) {
var prevValue = attrs[name];
attrs[name] = lang_1.isPresent(prevValue) ? mergeAttributeValue(name, prevValue, value) : value;
});
});
return mapToKeyValueArray(attrs);
};
ProtoViewBuilderVisitor.prototype.visitBoundText = function(ast, context) {
return null;
};
ProtoViewBuilderVisitor.prototype.visitText = function(ast, context) {
return null;
};
ProtoViewBuilderVisitor.prototype.visitNgContent = function(ast, context) {
return null;
};
ProtoViewBuilderVisitor.prototype.visitElement = function(ast, context) {
var _this = this;
var boundElementIndex = null;
if (ast.isBound()) {
boundElementIndex = this.boundElementCount++;
}
var component = ast.getComponent();
var variableNameAndValues = [];
if (lang_1.isBlank(component)) {
ast.exportAsVars.forEach(function(varAst) {
variableNameAndValues.push([varAst.name, null]);
});
}
var directives = [];
var renderEvents = visitAndReturnContext(this, ast.outputs, new Map());
collection_1.ListWrapper.forEachWithIndex(ast.directives, function(directiveAst, index) {
directiveAst.visit(_this, new DirectiveContext(index, boundElementIndex, renderEvents, variableNameAndValues, directives));
});
var renderEventArray = [];
renderEvents.forEach(function(eventAst, _) {
return renderEventArray.push(eventAst);
});
var attrNameAndValues = this._readAttrNameAndValues(directives, ast.attrs);
this._addProtoElement(ast.isBound(), boundElementIndex, attrNameAndValues, variableNameAndValues, renderEventArray, directives, null);
template_ast_1.templateVisitAll(this, ast.children);
return null;
};
ProtoViewBuilderVisitor.prototype.visitEmbeddedTemplate = function(ast, context) {
var _this = this;
var boundElementIndex = this.boundElementCount++;
var directives = [];
collection_1.ListWrapper.forEachWithIndex(ast.directives, function(directiveAst, index) {
directiveAst.visit(_this, new DirectiveContext(index, boundElementIndex, new Map(), [], directives));
});
var attrNameAndValues = this._readAttrNameAndValues(directives, ast.attrs);
var templateVariableBindings = ast.vars.map(function(varAst) {
return [varAst.value.length > 0 ? varAst.value : IMPLICIT_TEMPLATE_VAR, varAst.name];
});
var nestedProtoView = this.factory.createCompileProtoView(ast.children, templateVariableBindings, this.allStatements, this.allProtoViews);
this._addProtoElement(true, boundElementIndex, attrNameAndValues, [], [], directives, nestedProtoView.embeddedTemplateIndex);
return null;
};
ProtoViewBuilderVisitor.prototype._addProtoElement = function(isBound, boundElementIndex, attrNameAndValues, variableNameAndValues, renderEvents, directives, embeddedTemplateIndex) {
var appProtoEl = null;
if (isBound) {
appProtoEl = this.factory.createAppProtoElement(boundElementIndex, attrNameAndValues, variableNameAndValues, directives, this.allStatements);
}
var compileProtoEl = new CompileProtoElement(boundElementIndex, attrNameAndValues, variableNameAndValues, renderEvents, directives, embeddedTemplateIndex, appProtoEl);
this.protoElements.push(compileProtoEl);
};
ProtoViewBuilderVisitor.prototype.visitVariable = function(ast, ctx) {
return null;
};
ProtoViewBuilderVisitor.prototype.visitAttr = function(ast, attrNameAndValues) {
attrNameAndValues[ast.name] = ast.value;
return null;
};
ProtoViewBuilderVisitor.prototype.visitDirective = function(ast, ctx) {
ctx.targetDirectives.push(ast.directive);
template_ast_1.templateVisitAll(this, ast.hostEvents, ctx.hostEventTargetAndNames);
ast.exportAsVars.forEach(function(varAst) {
ctx.targetVariableNameAndValues.push([varAst.name, ctx.index]);
});
return null;
};
ProtoViewBuilderVisitor.prototype.visitEvent = function(ast, eventTargetAndNames) {
eventTargetAndNames.set(ast.fullName, ast);
return null;
};
ProtoViewBuilderVisitor.prototype.visitDirectiveProperty = function(ast, context) {
return null;
};
ProtoViewBuilderVisitor.prototype.visitElementProperty = function(ast, context) {
return null;
};
return ProtoViewBuilderVisitor;
})();
function mapToKeyValueArray(data) {
var entryArray = [];
collection_1.StringMapWrapper.forEach(data, function(value, name) {
entryArray.push([name, value]);
});
collection_1.ListWrapper.sort(entryArray, function(entry1, entry2) {
return lang_1.StringWrapper.compare(entry1[0], entry2[0]);
});
var keyValueArray = [];
entryArray.forEach(function(entry) {
keyValueArray.push([entry[0], entry[1]]);
});
return keyValueArray;
}
function mergeAttributeValue(attrName, attrValue1, attrValue2) {
if (attrName == CLASS_ATTR || attrName == STYLE_ATTR) {
return attrValue1 + " " + attrValue2;
} else {
return attrValue2;
}
}
var DirectiveContext = (function() {
function DirectiveContext(index, boundElementIndex, hostEventTargetAndNames, targetVariableNameAndValues, targetDirectives) {
this.index = index;
this.boundElementIndex = boundElementIndex;
this.hostEventTargetAndNames = hostEventTargetAndNames;
this.targetVariableNameAndValues = targetVariableNameAndValues;
this.targetDirectives = targetDirectives;
}
return DirectiveContext;
})();
function keyValueArrayToStringMap(keyValueArray) {
var stringMap = {};
for (var i = 0; i < keyValueArray.length; i++) {
var entry = keyValueArray[i];
stringMap[entry[0]] = entry[1];
}
return stringMap;
}
function codeGenDirectivesArray(directives) {
var expressions = directives.map(function(directiveType) {
return typeRef(directiveType.type);
});
return "[" + expressions.join(',') + "]";
}
function codeGenTypesArray(types) {
var expressions = types.map(typeRef);
return "[" + expressions.join(',') + "]";
}
function codeGenViewType(value) {
if (lang_1.IS_DART) {
return "" + exports.VIEW_TYPE_MODULE_REF + value;
} else {
return "" + value;
}
}
function typeRef(type) {
return "" + source_module_1.moduleRef(type.moduleUrl) + type.name;
}
function getViewType(component, embeddedTemplateIndex) {
if (embeddedTemplateIndex > 0) {
return view_type_1.ViewType.EMBEDDED;
} else if (component.type.isHost) {
return view_type_1.ViewType.HOST;
} else {
return view_type_1.ViewType.COMPONENT;
}
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/html_ast", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var HtmlTextAst = (function() {
function HtmlTextAst(value, sourceSpan) {
this.value = value;
this.sourceSpan = sourceSpan;
}
HtmlTextAst.prototype.visit = function(visitor, context) {
return visitor.visitText(this, context);
};
return HtmlTextAst;
})();
exports.HtmlTextAst = HtmlTextAst;
var HtmlAttrAst = (function() {
function HtmlAttrAst(name, value, sourceSpan) {
this.name = name;
this.value = value;
this.sourceSpan = sourceSpan;
}
HtmlAttrAst.prototype.visit = function(visitor, context) {
return visitor.visitAttr(this, context);
};
return HtmlAttrAst;
})();
exports.HtmlAttrAst = HtmlAttrAst;
var HtmlElementAst = (function() {
function HtmlElementAst(name, attrs, children, sourceSpan, startSourceSpan, endSourceSpan) {
this.name = name;
this.attrs = attrs;
this.children = children;
this.sourceSpan = sourceSpan;
this.startSourceSpan = startSourceSpan;
this.endSourceSpan = endSourceSpan;
}
HtmlElementAst.prototype.visit = function(visitor, context) {
return visitor.visitElement(this, context);
};
return HtmlElementAst;
})();
exports.HtmlElementAst = HtmlElementAst;
var HtmlCommentAst = (function() {
function HtmlCommentAst(value, sourceSpan) {
this.value = value;
this.sourceSpan = sourceSpan;
}
HtmlCommentAst.prototype.visit = function(visitor, context) {
return visitor.visitComment(this, context);
};
return HtmlCommentAst;
})();
exports.HtmlCommentAst = HtmlCommentAst;
function htmlVisitAll(visitor, asts, context) {
if (context === void 0) {
context = null;
}
var result = [];
asts.forEach(function(ast) {
var astResult = ast.visit(visitor, context);
if (lang_1.isPresent(astResult)) {
result.push(astResult);
}
});
return result;
}
exports.htmlVisitAll = htmlVisitAll;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/parse_util", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var ParseLocation = (function() {
function ParseLocation(file, offset, line, col) {
this.file = file;
this.offset = offset;
this.line = line;
this.col = col;
}
ParseLocation.prototype.toString = function() {
return this.file.url + "@" + this.line + ":" + this.col;
};
return ParseLocation;
})();
exports.ParseLocation = ParseLocation;
var ParseSourceFile = (function() {
function ParseSourceFile(content, url) {
this.content = content;
this.url = url;
}
return ParseSourceFile;
})();
exports.ParseSourceFile = ParseSourceFile;
var ParseSourceSpan = (function() {
function ParseSourceSpan(start, end) {
this.start = start;
this.end = end;
}
ParseSourceSpan.prototype.toString = function() {
return this.start.file.content.substring(this.start.offset, this.end.offset);
};
return ParseSourceSpan;
})();
exports.ParseSourceSpan = ParseSourceSpan;
var ParseError = (function() {
function ParseError(span, msg) {
this.span = span;
this.msg = msg;
}
ParseError.prototype.toString = function() {
var source = this.span.start.file.content;
var ctxStart = this.span.start.offset;
if (ctxStart > source.length - 1) {
ctxStart = source.length - 1;
}
var ctxEnd = ctxStart;
var ctxLen = 0;
var ctxLines = 0;
while (ctxLen < 100 && ctxStart > 0) {
ctxStart--;
ctxLen++;
if (source[ctxStart] == "\n") {
if (++ctxLines == 3) {
break;
}
}
}
ctxLen = 0;
ctxLines = 0;
while (ctxLen < 100 && ctxEnd < source.length - 1) {
ctxEnd++;
ctxLen++;
if (source[ctxEnd] == "\n") {
if (++ctxLines == 3) {
break;
}
}
}
var context = source.substring(ctxStart, this.span.start.offset) + '[ERROR ->]' + source.substring(this.span.start.offset, ctxEnd + 1);
return this.msg + " (\"" + context + "\"): " + this.span.start;
};
return ParseError;
})();
exports.ParseError = ParseError;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/html_tags", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
exports.NAMED_ENTITIES = lang_1.CONST_EXPR({
'Aacute': '\u00C1',
'aacute': '\u00E1',
'Acirc': '\u00C2',
'acirc': '\u00E2',
'acute': '\u00B4',
'AElig': '\u00C6',
'aelig': '\u00E6',
'Agrave': '\u00C0',
'agrave': '\u00E0',
'alefsym': '\u2135',
'Alpha': '\u0391',
'alpha': '\u03B1',
'amp': '&',
'and': '\u2227',
'ang': '\u2220',
'apos': '\u0027',
'Aring': '\u00C5',
'aring': '\u00E5',
'asymp': '\u2248',
'Atilde': '\u00C3',
'atilde': '\u00E3',
'Auml': '\u00C4',
'auml': '\u00E4',
'bdquo': '\u201E',
'Beta': '\u0392',
'beta': '\u03B2',
'brvbar': '\u00A6',
'bull': '\u2022',
'cap': '\u2229',
'Ccedil': '\u00C7',
'ccedil': '\u00E7',
'cedil': '\u00B8',
'cent': '\u00A2',
'Chi': '\u03A7',
'chi': '\u03C7',
'circ': '\u02C6',
'clubs': '\u2663',
'cong': '\u2245',
'copy': '\u00A9',
'crarr': '\u21B5',
'cup': '\u222A',
'curren': '\u00A4',
'dagger': '\u2020',
'Dagger': '\u2021',
'darr': '\u2193',
'dArr': '\u21D3',
'deg': '\u00B0',
'Delta': '\u0394',
'delta': '\u03B4',
'diams': '\u2666',
'divide': '\u00F7',
'Eacute': '\u00C9',
'eacute': '\u00E9',
'Ecirc': '\u00CA',
'ecirc': '\u00EA',
'Egrave': '\u00C8',
'egrave': '\u00E8',
'empty': '\u2205',
'emsp': '\u2003',
'ensp': '\u2002',
'Epsilon': '\u0395',
'epsilon': '\u03B5',
'equiv': '\u2261',
'Eta': '\u0397',
'eta': '\u03B7',
'ETH': '\u00D0',
'eth': '\u00F0',
'Euml': '\u00CB',
'euml': '\u00EB',
'euro': '\u20AC',
'exist': '\u2203',
'fnof': '\u0192',
'forall': '\u2200',
'frac12': '\u00BD',
'frac14': '\u00BC',
'frac34': '\u00BE',
'frasl': '\u2044',
'Gamma': '\u0393',
'gamma': '\u03B3',
'ge': '\u2265',
'gt': '>',
'harr': '\u2194',
'hArr': '\u21D4',
'hearts': '\u2665',
'hellip': '\u2026',
'Iacute': '\u00CD',
'iacute': '\u00ED',
'Icirc': '\u00CE',
'icirc': '\u00EE',
'iexcl': '\u00A1',
'Igrave': '\u00CC',
'igrave': '\u00EC',
'image': '\u2111',
'infin': '\u221E',
'int': '\u222B',
'Iota': '\u0399',
'iota': '\u03B9',
'iquest': '\u00BF',
'isin': '\u2208',
'Iuml': '\u00CF',
'iuml': '\u00EF',
'Kappa': '\u039A',
'kappa': '\u03BA',
'Lambda': '\u039B',
'lambda': '\u03BB',
'lang': '\u27E8',
'laquo': '\u00AB',
'larr': '\u2190',
'lArr': '\u21D0',
'lceil': '\u2308',
'ldquo': '\u201C',
'le': '\u2264',
'lfloor': '\u230A',
'lowast': '\u2217',
'loz': '\u25CA',
'lrm': '\u200E',
'lsaquo': '\u2039',
'lsquo': '\u2018',
'lt': '<',
'macr': '\u00AF',
'mdash': '\u2014',
'micro': '\u00B5',
'middot': '\u00B7',
'minus': '\u2212',
'Mu': '\u039C',
'mu': '\u03BC',
'nabla': '\u2207',
'nbsp': '\u00A0',
'ndash': '\u2013',
'ne': '\u2260',
'ni': '\u220B',
'not': '\u00AC',
'notin': '\u2209',
'nsub': '\u2284',
'Ntilde': '\u00D1',
'ntilde': '\u00F1',
'Nu': '\u039D',
'nu': '\u03BD',
'Oacute': '\u00D3',
'oacute': '\u00F3',
'Ocirc': '\u00D4',
'ocirc': '\u00F4',
'OElig': '\u0152',
'oelig': '\u0153',
'Ograve': '\u00D2',
'ograve': '\u00F2',
'oline': '\u203E',
'Omega': '\u03A9',
'omega': '\u03C9',
'Omicron': '\u039F',
'omicron': '\u03BF',
'oplus': '\u2295',
'or': '\u2228',
'ordf': '\u00AA',
'ordm': '\u00BA',
'Oslash': '\u00D8',
'oslash': '\u00F8',
'Otilde': '\u00D5',
'otilde': '\u00F5',
'otimes': '\u2297',
'Ouml': '\u00D6',
'ouml': '\u00F6',
'para': '\u00B6',
'permil': '\u2030',
'perp': '\u22A5',
'Phi': '\u03A6',
'phi': '\u03C6',
'Pi': '\u03A0',
'pi': '\u03C0',
'piv': '\u03D6',
'plusmn': '\u00B1',
'pound': '\u00A3',
'prime': '\u2032',
'Prime': '\u2033',
'prod': '\u220F',
'prop': '\u221D',
'Psi': '\u03A8',
'psi': '\u03C8',
'quot': '\u0022',
'radic': '\u221A',
'rang': '\u27E9',
'raquo': '\u00BB',
'rarr': '\u2192',
'rArr': '\u21D2',
'rceil': '\u2309',
'rdquo': '\u201D',
'real': '\u211C',
'reg': '\u00AE',
'rfloor': '\u230B',
'Rho': '\u03A1',
'rho': '\u03C1',
'rlm': '\u200F',
'rsaquo': '\u203A',
'rsquo': '\u2019',
'sbquo': '\u201A',
'Scaron': '\u0160',
'scaron': '\u0161',
'sdot': '\u22C5',
'sect': '\u00A7',
'shy': '\u00AD',
'Sigma': '\u03A3',
'sigma': '\u03C3',
'sigmaf': '\u03C2',
'sim': '\u223C',
'spades': '\u2660',
'sub': '\u2282',
'sube': '\u2286',
'sum': '\u2211',
'sup': '\u2283',
'sup1': '\u00B9',
'sup2': '\u00B2',
'sup3': '\u00B3',
'supe': '\u2287',
'szlig': '\u00DF',
'Tau': '\u03A4',
'tau': '\u03C4',
'there4': '\u2234',
'Theta': '\u0398',
'theta': '\u03B8',
'thetasym': '\u03D1',
'thinsp': '\u2009',
'THORN': '\u00DE',
'thorn': '\u00FE',
'tilde': '\u02DC',
'times': '\u00D7',
'trade': '\u2122',
'Uacute': '\u00DA',
'uacute': '\u00FA',
'uarr': '\u2191',
'uArr': '\u21D1',
'Ucirc': '\u00DB',
'ucirc': '\u00FB',
'Ugrave': '\u00D9',
'ugrave': '\u00F9',
'uml': '\u00A8',
'upsih': '\u03D2',
'Upsilon': '\u03A5',
'upsilon': '\u03C5',
'Uuml': '\u00DC',
'uuml': '\u00FC',
'weierp': '\u2118',
'Xi': '\u039E',
'xi': '\u03BE',
'Yacute': '\u00DD',
'yacute': '\u00FD',
'yen': '\u00A5',
'yuml': '\u00FF',
'Yuml': '\u0178',
'Zeta': '\u0396',
'zeta': '\u03B6',
'zwj': '\u200D',
'zwnj': '\u200C'
});
(function(HtmlTagContentType) {
HtmlTagContentType[HtmlTagContentType["RAW_TEXT"] = 0] = "RAW_TEXT";
HtmlTagContentType[HtmlTagContentType["ESCAPABLE_RAW_TEXT"] = 1] = "ESCAPABLE_RAW_TEXT";
HtmlTagContentType[HtmlTagContentType["PARSABLE_DATA"] = 2] = "PARSABLE_DATA";
})(exports.HtmlTagContentType || (exports.HtmlTagContentType = {}));
var HtmlTagContentType = exports.HtmlTagContentType;
var HtmlTagDefinition = (function() {
function HtmlTagDefinition(_a) {
var _this = this;
var _b = _a === void 0 ? {} : _a,
closedByChildren = _b.closedByChildren,
requiredParents = _b.requiredParents,
implicitNamespacePrefix = _b.implicitNamespacePrefix,
contentType = _b.contentType,
closedByParent = _b.closedByParent,
isVoid = _b.isVoid,
ignoreFirstLf = _b.ignoreFirstLf;
this.closedByChildren = {};
this.closedByParent = false;
if (lang_1.isPresent(closedByChildren) && closedByChildren.length > 0) {
closedByChildren.forEach(function(tagName) {
return _this.closedByChildren[tagName] = true;
});
}
this.isVoid = lang_1.normalizeBool(isVoid);
this.closedByParent = lang_1.normalizeBool(closedByParent) || this.isVoid;
if (lang_1.isPresent(requiredParents) && requiredParents.length > 0) {
this.requiredParents = {};
this.parentToAdd = requiredParents[0];
requiredParents.forEach(function(tagName) {
return _this.requiredParents[tagName] = true;
});
}
this.implicitNamespacePrefix = implicitNamespacePrefix;
this.contentType = lang_1.isPresent(contentType) ? contentType : HtmlTagContentType.PARSABLE_DATA;
this.ignoreFirstLf = lang_1.normalizeBool(ignoreFirstLf);
}
HtmlTagDefinition.prototype.requireExtraParent = function(currentParent) {
if (lang_1.isBlank(this.requiredParents)) {
return false;
}
if (lang_1.isBlank(currentParent)) {
return true;
}
var lcParent = currentParent.toLowerCase();
return this.requiredParents[lcParent] != true && lcParent != 'template';
};
HtmlTagDefinition.prototype.isClosedByChild = function(name) {
return this.isVoid || lang_1.normalizeBool(this.closedByChildren[name.toLowerCase()]);
};
return HtmlTagDefinition;
})();
exports.HtmlTagDefinition = HtmlTagDefinition;
var TAG_DEFINITIONS = {
'base': new HtmlTagDefinition({isVoid: true}),
'meta': new HtmlTagDefinition({isVoid: true}),
'area': new HtmlTagDefinition({isVoid: true}),
'embed': new HtmlTagDefinition({isVoid: true}),
'link': new HtmlTagDefinition({isVoid: true}),
'img': new HtmlTagDefinition({isVoid: true}),
'input': new HtmlTagDefinition({isVoid: true}),
'param': new HtmlTagDefinition({isVoid: true}),
'hr': new HtmlTagDefinition({isVoid: true}),
'br': new HtmlTagDefinition({isVoid: true}),
'source': new HtmlTagDefinition({isVoid: true}),
'track': new HtmlTagDefinition({isVoid: true}),
'wbr': new HtmlTagDefinition({isVoid: true}),
'p': new HtmlTagDefinition({
closedByChildren: ['address', 'article', 'aside', 'blockquote', 'div', 'dl', 'fieldset', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'main', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'],
closedByParent: true
}),
'thead': new HtmlTagDefinition({closedByChildren: ['tbody', 'tfoot']}),
'tbody': new HtmlTagDefinition({
closedByChildren: ['tbody', 'tfoot'],
closedByParent: true
}),
'tfoot': new HtmlTagDefinition({
closedByChildren: ['tbody'],
closedByParent: true
}),
'tr': new HtmlTagDefinition({
closedByChildren: ['tr'],
requiredParents: ['tbody', 'tfoot', 'thead'],
closedByParent: true
}),
'td': new HtmlTagDefinition({
closedByChildren: ['td', 'th'],
closedByParent: true
}),
'th': new HtmlTagDefinition({
closedByChildren: ['td', 'th'],
closedByParent: true
}),
'col': new HtmlTagDefinition({
requiredParents: ['colgroup'],
isVoid: true
}),
'svg': new HtmlTagDefinition({implicitNamespacePrefix: 'svg'}),
'math': new HtmlTagDefinition({implicitNamespacePrefix: 'math'}),
'li': new HtmlTagDefinition({
closedByChildren: ['li'],
closedByParent: true
}),
'dt': new HtmlTagDefinition({closedByChildren: ['dt', 'dd']}),
'dd': new HtmlTagDefinition({
closedByChildren: ['dt', 'dd'],
closedByParent: true
}),
'rb': new HtmlTagDefinition({
closedByChildren: ['rb', 'rt', 'rtc', 'rp'],
closedByParent: true
}),
'rt': new HtmlTagDefinition({
closedByChildren: ['rb', 'rt', 'rtc', 'rp'],
closedByParent: true
}),
'rtc': new HtmlTagDefinition({
closedByChildren: ['rb', 'rtc', 'rp'],
closedByParent: true
}),
'rp': new HtmlTagDefinition({
closedByChildren: ['rb', 'rt', 'rtc', 'rp'],
closedByParent: true
}),
'optgroup': new HtmlTagDefinition({
closedByChildren: ['optgroup'],
closedByParent: true
}),
'option': new HtmlTagDefinition({
closedByChildren: ['option', 'optgroup'],
closedByParent: true
}),
'pre': new HtmlTagDefinition({ignoreFirstLf: true}),
'listing': new HtmlTagDefinition({ignoreFirstLf: true}),
'style': new HtmlTagDefinition({contentType: HtmlTagContentType.RAW_TEXT}),
'script': new HtmlTagDefinition({contentType: HtmlTagContentType.RAW_TEXT}),
'title': new HtmlTagDefinition({contentType: HtmlTagContentType.ESCAPABLE_RAW_TEXT}),
'textarea': new HtmlTagDefinition({
contentType: HtmlTagContentType.ESCAPABLE_RAW_TEXT,
ignoreFirstLf: true
})
};
var DEFAULT_TAG_DEFINITION = new HtmlTagDefinition();
function getHtmlTagDefinition(tagName) {
var result = TAG_DEFINITIONS[tagName.toLowerCase()];
return lang_1.isPresent(result) ? result : DEFAULT_TAG_DEFINITION;
}
exports.getHtmlTagDefinition = getHtmlTagDefinition;
var NS_PREFIX_RE = /^@([^:]+):(.+)/g;
function splitNsName(elementName) {
if (elementName[0] != '@') {
return [null, elementName];
}
var match = lang_1.RegExpWrapper.firstMatch(NS_PREFIX_RE, elementName);
return [match[1], match[2]];
}
exports.splitNsName = splitNsName;
function getNsPrefix(elementName) {
return splitNsName(elementName)[0];
}
exports.getNsPrefix = getNsPrefix;
function mergeNsAndName(prefix, localName) {
return lang_1.isPresent(prefix) ? "@" + prefix + ":" + localName : localName;
}
exports.mergeNsAndName = mergeNsAndName;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/schema/element_schema_registry", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var ElementSchemaRegistry = (function() {
function ElementSchemaRegistry() {}
ElementSchemaRegistry.prototype.hasProperty = function(tagName, propName) {
return true;
};
ElementSchemaRegistry.prototype.getMappedPropName = function(propName) {
return propName;
};
return ElementSchemaRegistry;
})();
exports.ElementSchemaRegistry = ElementSchemaRegistry;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/template_preparser", ["angular2/src/facade/lang", "angular2/src/compiler/html_tags"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var html_tags_1 = require("angular2/src/compiler/html_tags");
var NG_CONTENT_SELECT_ATTR = 'select';
var NG_CONTENT_ELEMENT = 'ng-content';
var LINK_ELEMENT = 'link';
var LINK_STYLE_REL_ATTR = 'rel';
var LINK_STYLE_HREF_ATTR = 'href';
var LINK_STYLE_REL_VALUE = 'stylesheet';
var STYLE_ELEMENT = 'style';
var SCRIPT_ELEMENT = 'script';
var NG_NON_BINDABLE_ATTR = 'ngNonBindable';
var NG_PROJECT_AS = 'ngProjectAs';
function preparseElement(ast) {
var selectAttr = null;
var hrefAttr = null;
var relAttr = null;
var nonBindable = false;
var projectAs = null;
ast.attrs.forEach(function(attr) {
var lcAttrName = attr.name.toLowerCase();
if (lcAttrName == NG_CONTENT_SELECT_ATTR) {
selectAttr = attr.value;
} else if (lcAttrName == LINK_STYLE_HREF_ATTR) {
hrefAttr = attr.value;
} else if (lcAttrName == LINK_STYLE_REL_ATTR) {
relAttr = attr.value;
} else if (attr.name == NG_NON_BINDABLE_ATTR) {
nonBindable = true;
} else if (attr.name == NG_PROJECT_AS) {
if (attr.value.length > 0) {
projectAs = attr.value;
}
}
});
selectAttr = normalizeNgContentSelect(selectAttr);
var nodeName = ast.name.toLowerCase();
var type = PreparsedElementType.OTHER;
if (html_tags_1.splitNsName(nodeName)[1] == NG_CONTENT_ELEMENT) {
type = PreparsedElementType.NG_CONTENT;
} else if (nodeName == STYLE_ELEMENT) {
type = PreparsedElementType.STYLE;
} else if (nodeName == SCRIPT_ELEMENT) {
type = PreparsedElementType.SCRIPT;
} else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) {
type = PreparsedElementType.STYLESHEET;
}
return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs);
}
exports.preparseElement = preparseElement;
(function(PreparsedElementType) {
PreparsedElementType[PreparsedElementType["NG_CONTENT"] = 0] = "NG_CONTENT";
PreparsedElementType[PreparsedElementType["STYLE"] = 1] = "STYLE";
PreparsedElementType[PreparsedElementType["STYLESHEET"] = 2] = "STYLESHEET";
PreparsedElementType[PreparsedElementType["SCRIPT"] = 3] = "SCRIPT";
PreparsedElementType[PreparsedElementType["OTHER"] = 4] = "OTHER";
})(exports.PreparsedElementType || (exports.PreparsedElementType = {}));
var PreparsedElementType = exports.PreparsedElementType;
var PreparsedElement = (function() {
function PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs) {
this.type = type;
this.selectAttr = selectAttr;
this.hrefAttr = hrefAttr;
this.nonBindable = nonBindable;
this.projectAs = projectAs;
}
return PreparsedElement;
})();
exports.PreparsedElement = PreparsedElement;
function normalizeNgContentSelect(selectAttr) {
if (lang_1.isBlank(selectAttr) || selectAttr.length === 0) {
return '*';
}
return selectAttr;
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/template_normalizer", ["angular2/src/compiler/directive_metadata", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/async", "angular2/src/compiler/xhr", "angular2/src/compiler/url_resolver", "angular2/src/compiler/style_url_resolver", "angular2/src/core/di", "angular2/src/core/metadata/view", "angular2/src/compiler/html_ast", "angular2/src/compiler/html_parser", "angular2/src/compiler/template_preparser"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var directive_metadata_1 = require("angular2/src/compiler/directive_metadata");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var async_1 = require("angular2/src/facade/async");
var xhr_1 = require("angular2/src/compiler/xhr");
var url_resolver_1 = require("angular2/src/compiler/url_resolver");
var style_url_resolver_1 = require("angular2/src/compiler/style_url_resolver");
var di_1 = require("angular2/src/core/di");
var view_1 = require("angular2/src/core/metadata/view");
var html_ast_1 = require("angular2/src/compiler/html_ast");
var html_parser_1 = require("angular2/src/compiler/html_parser");
var template_preparser_1 = require("angular2/src/compiler/template_preparser");
var TemplateNormalizer = (function() {
function TemplateNormalizer(_xhr, _urlResolver, _htmlParser) {
this._xhr = _xhr;
this._urlResolver = _urlResolver;
this._htmlParser = _htmlParser;
}
TemplateNormalizer.prototype.normalizeTemplate = function(directiveType, template) {
var _this = this;
if (lang_1.isPresent(template.template)) {
return async_1.PromiseWrapper.resolve(this.normalizeLoadedTemplate(directiveType, template, template.template, directiveType.moduleUrl));
} else if (lang_1.isPresent(template.templateUrl)) {
var sourceAbsUrl = this._urlResolver.resolve(directiveType.moduleUrl, template.templateUrl);
return this._xhr.get(sourceAbsUrl).then(function(templateContent) {
return _this.normalizeLoadedTemplate(directiveType, template, templateContent, sourceAbsUrl);
});
} else {
throw new exceptions_1.BaseException("No template specified for component " + directiveType.name);
}
};
TemplateNormalizer.prototype.normalizeLoadedTemplate = function(directiveType, templateMeta, template, templateAbsUrl) {
var _this = this;
var rootNodesAndErrors = this._htmlParser.parse(template, directiveType.name);
if (rootNodesAndErrors.errors.length > 0) {
var errorString = rootNodesAndErrors.errors.join('\n');
throw new exceptions_1.BaseException("Template parse errors:\n" + errorString);
}
var visitor = new TemplatePreparseVisitor();
html_ast_1.htmlVisitAll(visitor, rootNodesAndErrors.rootNodes);
var allStyles = templateMeta.styles.concat(visitor.styles);
var allStyleAbsUrls = visitor.styleUrls.filter(style_url_resolver_1.isStyleUrlResolvable).map(function(url) {
return _this._urlResolver.resolve(templateAbsUrl, url);
}).concat(templateMeta.styleUrls.filter(style_url_resolver_1.isStyleUrlResolvable).map(function(url) {
return _this._urlResolver.resolve(directiveType.moduleUrl, url);
}));
var allResolvedStyles = allStyles.map(function(style) {
var styleWithImports = style_url_resolver_1.extractStyleUrls(_this._urlResolver, templateAbsUrl, style);
styleWithImports.styleUrls.forEach(function(styleUrl) {
return allStyleAbsUrls.push(styleUrl);
});
return styleWithImports.style;
});
var encapsulation = templateMeta.encapsulation;
if (encapsulation === view_1.ViewEncapsulation.Emulated && allResolvedStyles.length === 0 && allStyleAbsUrls.length === 0) {
encapsulation = view_1.ViewEncapsulation.None;
}
return new directive_metadata_1.CompileTemplateMetadata({
encapsulation: encapsulation,
template: template,
templateUrl: templateAbsUrl,
styles: allResolvedStyles,
styleUrls: allStyleAbsUrls,
ngContentSelectors: visitor.ngContentSelectors
});
};
TemplateNormalizer = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [xhr_1.XHR, url_resolver_1.UrlResolver, html_parser_1.HtmlParser])], TemplateNormalizer);
return TemplateNormalizer;
})();
exports.TemplateNormalizer = TemplateNormalizer;
var TemplatePreparseVisitor = (function() {
function TemplatePreparseVisitor() {
this.ngContentSelectors = [];
this.styles = [];
this.styleUrls = [];
this.ngNonBindableStackCount = 0;
}
TemplatePreparseVisitor.prototype.visitElement = function(ast, context) {
var preparsedElement = template_preparser_1.preparseElement(ast);
switch (preparsedElement.type) {
case template_preparser_1.PreparsedElementType.NG_CONTENT:
if (this.ngNonBindableStackCount === 0) {
this.ngContentSelectors.push(preparsedElement.selectAttr);
}
break;
case template_preparser_1.PreparsedElementType.STYLE:
var textContent = '';
ast.children.forEach(function(child) {
if (child instanceof html_ast_1.HtmlTextAst) {
textContent += child.value;
}
});
this.styles.push(textContent);
break;
case template_preparser_1.PreparsedElementType.STYLESHEET:
this.styleUrls.push(preparsedElement.hrefAttr);
break;
default:
break;
}
if (preparsedElement.nonBindable) {
this.ngNonBindableStackCount++;
}
html_ast_1.htmlVisitAll(this, ast.children);
if (preparsedElement.nonBindable) {
this.ngNonBindableStackCount--;
}
return null;
};
TemplatePreparseVisitor.prototype.visitComment = function(ast, context) {
return null;
};
TemplatePreparseVisitor.prototype.visitAttr = function(ast, context) {
return null;
};
TemplatePreparseVisitor.prototype.visitText = function(ast, context) {
return null;
};
return TemplatePreparseVisitor;
})();
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/linker/directive_lifecycle_reflector", ["angular2/src/facade/lang", "angular2/src/core/linker/interfaces"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var interfaces_1 = require("angular2/src/core/linker/interfaces");
function hasLifecycleHook(lcInterface, token) {
if (!(token instanceof lang_1.Type))
return false;
var proto = token.prototype;
switch (lcInterface) {
case interfaces_1.LifecycleHooks.AfterContentInit:
return !!proto.ngAfterContentInit;
case interfaces_1.LifecycleHooks.AfterContentChecked:
return !!proto.ngAfterContentChecked;
case interfaces_1.LifecycleHooks.AfterViewInit:
return !!proto.ngAfterViewInit;
case interfaces_1.LifecycleHooks.AfterViewChecked:
return !!proto.ngAfterViewChecked;
case interfaces_1.LifecycleHooks.OnChanges:
return !!proto.ngOnChanges;
case interfaces_1.LifecycleHooks.DoCheck:
return !!proto.ngDoCheck;
case interfaces_1.LifecycleHooks.OnDestroy:
return !!proto.ngOnDestroy;
case interfaces_1.LifecycleHooks.OnInit:
return !!proto.ngOnInit;
default:
return false;
}
}
exports.hasLifecycleHook = hasLifecycleHook;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/assertions", ["angular2/src/facade/lang", "angular2/src/facade/exceptions"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
function assertArrayOfStrings(identifier, value) {
if (!lang_1.assertionsEnabled() || lang_1.isBlank(value)) {
return ;
}
if (!lang_1.isArray(value)) {
throw new exceptions_1.BaseException("Expected '" + identifier + "' to be an array of strings.");
}
for (var i = 0; i < value.length; i += 1) {
if (!lang_1.isString(value[i])) {
throw new exceptions_1.BaseException("Expected '" + identifier + "' to be an array of strings.");
}
}
}
exports.assertArrayOfStrings = assertArrayOfStrings;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/schema/dom_element_schema_registry", ["angular2/src/core/di", "angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/platform/dom/dom_adapter", "angular2/src/compiler/html_tags", "angular2/src/compiler/schema/element_schema_registry"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var html_tags_1 = require("angular2/src/compiler/html_tags");
var element_schema_registry_1 = require("angular2/src/compiler/schema/element_schema_registry");
var NAMESPACE_URIS = lang_1.CONST_EXPR({
'xlink': 'http://www.w3.org/1999/xlink',
'svg': 'http://www.w3.org/2000/svg'
});
var DomElementSchemaRegistry = (function(_super) {
__extends(DomElementSchemaRegistry, _super);
function DomElementSchemaRegistry() {
_super.apply(this, arguments);
this._protoElements = new Map();
}
DomElementSchemaRegistry.prototype._getProtoElement = function(tagName) {
var element = this._protoElements.get(tagName);
if (lang_1.isBlank(element)) {
var nsAndName = html_tags_1.splitNsName(tagName);
element = lang_1.isPresent(nsAndName[0]) ? dom_adapter_1.DOM.createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) : dom_adapter_1.DOM.createElement(nsAndName[1]);
this._protoElements.set(tagName, element);
}
return element;
};
DomElementSchemaRegistry.prototype.hasProperty = function(tagName, propName) {
if (tagName.indexOf('-') !== -1) {
return true;
} else {
var elm = this._getProtoElement(tagName);
return dom_adapter_1.DOM.hasProperty(elm, propName);
}
};
DomElementSchemaRegistry.prototype.getMappedPropName = function(propName) {
var mappedPropName = collection_1.StringMapWrapper.get(dom_adapter_1.DOM.attrToPropMap, propName);
return lang_1.isPresent(mappedPropName) ? mappedPropName : propName;
};
DomElementSchemaRegistry = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], DomElementSchemaRegistry);
return DomElementSchemaRegistry;
})(element_schema_registry_1.ElementSchemaRegistry);
exports.DomElementSchemaRegistry = DomElementSchemaRegistry;
global.define = __define;
return module.exports;
});
System.register("angular2/src/core/angular_entrypoint", ["angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var AngularEntrypoint = (function() {
function AngularEntrypoint(name) {
this.name = name;
}
AngularEntrypoint = __decorate([lang_1.CONST(), __metadata('design:paramtypes', [String])], AngularEntrypoint);
return AngularEntrypoint;
})();
exports.AngularEntrypoint = AngularEntrypoint;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/async_pipe", ["angular2/src/facade/lang", "angular2/src/facade/async", "angular2/core", "angular2/src/common/pipes/invalid_pipe_argument_exception"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var async_1 = require("angular2/src/facade/async");
var core_1 = require("angular2/core");
var invalid_pipe_argument_exception_1 = require("angular2/src/common/pipes/invalid_pipe_argument_exception");
var ObservableStrategy = (function() {
function ObservableStrategy() {}
ObservableStrategy.prototype.createSubscription = function(async, updateLatestValue) {
return async_1.ObservableWrapper.subscribe(async, updateLatestValue, function(e) {
throw e;
});
};
ObservableStrategy.prototype.dispose = function(subscription) {
async_1.ObservableWrapper.dispose(subscription);
};
ObservableStrategy.prototype.onDestroy = function(subscription) {
async_1.ObservableWrapper.dispose(subscription);
};
return ObservableStrategy;
})();
var PromiseStrategy = (function() {
function PromiseStrategy() {}
PromiseStrategy.prototype.createSubscription = function(async, updateLatestValue) {
return async.then(updateLatestValue);
};
PromiseStrategy.prototype.dispose = function(subscription) {};
PromiseStrategy.prototype.onDestroy = function(subscription) {};
return PromiseStrategy;
})();
var _promiseStrategy = new PromiseStrategy();
var _observableStrategy = new ObservableStrategy();
var __unused;
var AsyncPipe = (function() {
function AsyncPipe(_ref) {
this._latestValue = null;
this._latestReturnedValue = null;
this._subscription = null;
this._obj = null;
this._strategy = null;
this._ref = _ref;
}
AsyncPipe.prototype.ngOnDestroy = function() {
if (lang_1.isPresent(this._subscription)) {
this._dispose();
}
};
AsyncPipe.prototype.transform = function(obj, args) {
if (lang_1.isBlank(this._obj)) {
if (lang_1.isPresent(obj)) {
this._subscribe(obj);
}
this._latestReturnedValue = this._latestValue;
return this._latestValue;
}
if (obj !== this._obj) {
this._dispose();
return this.transform(obj);
}
if (this._latestValue === this._latestReturnedValue) {
return this._latestReturnedValue;
} else {
this._latestReturnedValue = this._latestValue;
return core_1.WrappedValue.wrap(this._latestValue);
}
};
AsyncPipe.prototype._subscribe = function(obj) {
var _this = this;
this._obj = obj;
this._strategy = this._selectStrategy(obj);
this._subscription = this._strategy.createSubscription(obj, function(value) {
return _this._updateLatestValue(obj, value);
});
};
AsyncPipe.prototype._selectStrategy = function(obj) {
if (lang_1.isPromise(obj)) {
return _promiseStrategy;
} else if (async_1.ObservableWrapper.isObservable(obj)) {
return _observableStrategy;
} else {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(AsyncPipe, obj);
}
};
AsyncPipe.prototype._dispose = function() {
this._strategy.dispose(this._subscription);
this._latestValue = null;
this._latestReturnedValue = null;
this._subscription = null;
this._obj = null;
};
AsyncPipe.prototype._updateLatestValue = function(async, value) {
if (async === this._obj) {
this._latestValue = value;
this._ref.markForCheck();
}
};
AsyncPipe = __decorate([core_1.Pipe({
name: 'async',
pure: false
}), core_1.Injectable(), __metadata('design:paramtypes', [core_1.ChangeDetectorRef])], AsyncPipe);
return AsyncPipe;
})();
exports.AsyncPipe = AsyncPipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes/date_pipe", ["angular2/src/facade/lang", "angular2/src/facade/intl", "angular2/core", "angular2/src/facade/collection", "angular2/src/common/pipes/invalid_pipe_argument_exception"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var intl_1 = require("angular2/src/facade/intl");
var core_1 = require("angular2/core");
var collection_1 = require("angular2/src/facade/collection");
var invalid_pipe_argument_exception_1 = require("angular2/src/common/pipes/invalid_pipe_argument_exception");
var defaultLocale = 'en-US';
var DatePipe = (function() {
function DatePipe() {}
DatePipe.prototype.transform = function(value, args) {
if (lang_1.isBlank(value))
return null;
if (!this.supports(value)) {
throw new invalid_pipe_argument_exception_1.InvalidPipeArgumentException(DatePipe, value);
}
var pattern = lang_1.isPresent(args) && args.length > 0 ? args[0] : 'mediumDate';
if (lang_1.isNumber(value)) {
value = lang_1.DateWrapper.fromMillis(value);
}
if (collection_1.StringMapWrapper.contains(DatePipe._ALIASES, pattern)) {
pattern = collection_1.StringMapWrapper.get(DatePipe._ALIASES, pattern);
}
return intl_1.DateFormatter.format(value, defaultLocale, pattern);
};
DatePipe.prototype.supports = function(obj) {
return lang_1.isDate(obj) || lang_1.isNumber(obj);
};
DatePipe._ALIASES = {
'medium': 'yMMMdjms',
'short': 'yMdjm',
'fullDate': 'yMMMMEEEEd',
'longDate': 'yMMMMd',
'mediumDate': 'yMMMd',
'shortDate': 'yMd',
'mediumTime': 'jms',
'shortTime': 'jm'
};
DatePipe = __decorate([lang_1.CONST(), core_1.Pipe({
name: 'date',
pure: true
}), core_1.Injectable(), __metadata('design:paramtypes', [])], DatePipe);
return DatePipe;
})();
exports.DatePipe = DatePipe;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/directives", ["angular2/src/common/directives/ng_class", "angular2/src/common/directives/ng_for", "angular2/src/common/directives/ng_if", "angular2/src/common/directives/ng_style", "angular2/src/common/directives/ng_switch", "angular2/src/common/directives/ng_plural", "angular2/src/common/directives/observable_list_diff", "angular2/src/common/directives/core_directives"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function __export(m) {
for (var p in m)
if (!exports.hasOwnProperty(p))
exports[p] = m[p];
}
var ng_class_1 = require("angular2/src/common/directives/ng_class");
exports.NgClass = ng_class_1.NgClass;
var ng_for_1 = require("angular2/src/common/directives/ng_for");
exports.NgFor = ng_for_1.NgFor;
var ng_if_1 = require("angular2/src/common/directives/ng_if");
exports.NgIf = ng_if_1.NgIf;
var ng_style_1 = require("angular2/src/common/directives/ng_style");
exports.NgStyle = ng_style_1.NgStyle;
var ng_switch_1 = require("angular2/src/common/directives/ng_switch");
exports.NgSwitch = ng_switch_1.NgSwitch;
exports.NgSwitchWhen = ng_switch_1.NgSwitchWhen;
exports.NgSwitchDefault = ng_switch_1.NgSwitchDefault;
var ng_plural_1 = require("angular2/src/common/directives/ng_plural");
exports.NgPlural = ng_plural_1.NgPlural;
exports.NgPluralCase = ng_plural_1.NgPluralCase;
exports.NgLocalization = ng_plural_1.NgLocalization;
__export(require("angular2/src/common/directives/observable_list_diff"));
var core_directives_1 = require("angular2/src/common/directives/core_directives");
exports.CORE_DIRECTIVES = core_directives_1.CORE_DIRECTIVES;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/shared", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/common/forms/validators", "angular2/src/common/forms/directives/default_value_accessor", "angular2/src/common/forms/directives/number_value_accessor", "angular2/src/common/forms/directives/checkbox_value_accessor", "angular2/src/common/forms/directives/select_control_value_accessor", "angular2/src/common/forms/directives/radio_control_value_accessor", "angular2/src/common/forms/directives/normalize_validator"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var validators_1 = require("angular2/src/common/forms/validators");
var default_value_accessor_1 = require("angular2/src/common/forms/directives/default_value_accessor");
var number_value_accessor_1 = require("angular2/src/common/forms/directives/number_value_accessor");
var checkbox_value_accessor_1 = require("angular2/src/common/forms/directives/checkbox_value_accessor");
var select_control_value_accessor_1 = require("angular2/src/common/forms/directives/select_control_value_accessor");
var radio_control_value_accessor_1 = require("angular2/src/common/forms/directives/radio_control_value_accessor");
var normalize_validator_1 = require("angular2/src/common/forms/directives/normalize_validator");
function controlPath(name, parent) {
var p = collection_1.ListWrapper.clone(parent.path);
p.push(name);
return p;
}
exports.controlPath = controlPath;
function setUpControl(control, dir) {
if (lang_1.isBlank(control))
_throwError(dir, "Cannot find control");
if (lang_1.isBlank(dir.valueAccessor))
_throwError(dir, "No value accessor for");
control.validator = validators_1.Validators.compose([control.validator, dir.validator]);
control.asyncValidator = validators_1.Validators.composeAsync([control.asyncValidator, dir.asyncValidator]);
dir.valueAccessor.writeValue(control.value);
dir.valueAccessor.registerOnChange(function(newValue) {
dir.viewToModelUpdate(newValue);
control.updateValue(newValue, {emitModelToViewChange: false});
control.markAsDirty();
});
control.registerOnChange(function(newValue) {
return dir.valueAccessor.writeValue(newValue);
});
dir.valueAccessor.registerOnTouched(function() {
return control.markAsTouched();
});
}
exports.setUpControl = setUpControl;
function setUpControlGroup(control, dir) {
if (lang_1.isBlank(control))
_throwError(dir, "Cannot find control");
control.validator = validators_1.Validators.compose([control.validator, dir.validator]);
control.asyncValidator = validators_1.Validators.composeAsync([control.asyncValidator, dir.asyncValidator]);
}
exports.setUpControlGroup = setUpControlGroup;
function _throwError(dir, message) {
var path = dir.path.join(" -> ");
throw new exceptions_1.BaseException(message + " '" + path + "'");
}
function composeValidators(validators) {
return lang_1.isPresent(validators) ? validators_1.Validators.compose(validators.map(normalize_validator_1.normalizeValidator)) : null;
}
exports.composeValidators = composeValidators;
function composeAsyncValidators(validators) {
return lang_1.isPresent(validators) ? validators_1.Validators.composeAsync(validators.map(normalize_validator_1.normalizeAsyncValidator)) : null;
}
exports.composeAsyncValidators = composeAsyncValidators;
function isPropertyUpdated(changes, viewModel) {
if (!collection_1.StringMapWrapper.contains(changes, "model"))
return false;
var change = changes["model"];
if (change.isFirstChange())
return true;
return !lang_1.looseIdentical(viewModel, change.currentValue);
}
exports.isPropertyUpdated = isPropertyUpdated;
function selectValueAccessor(dir, valueAccessors) {
if (lang_1.isBlank(valueAccessors))
return null;
var defaultAccessor;
var builtinAccessor;
var customAccessor;
valueAccessors.forEach(function(v) {
if (lang_1.hasConstructor(v, default_value_accessor_1.DefaultValueAccessor)) {
defaultAccessor = v;
} else if (lang_1.hasConstructor(v, checkbox_value_accessor_1.CheckboxControlValueAccessor) || lang_1.hasConstructor(v, number_value_accessor_1.NumberValueAccessor) || lang_1.hasConstructor(v, select_control_value_accessor_1.SelectControlValueAccessor) || lang_1.hasConstructor(v, radio_control_value_accessor_1.RadioControlValueAccessor)) {
if (lang_1.isPresent(builtinAccessor))
_throwError(dir, "More than one built-in value accessor matches");
builtinAccessor = v;
} else {
if (lang_1.isPresent(customAccessor))
_throwError(dir, "More than one custom value accessor matches");
customAccessor = v;
}
});
if (lang_1.isPresent(customAccessor))
return customAccessor;
if (lang_1.isPresent(builtinAccessor))
return builtinAccessor;
if (lang_1.isPresent(defaultAccessor))
return defaultAccessor;
_throwError(dir, "No valid value accessor for");
return null;
}
exports.selectValueAccessor = selectValueAccessor;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives", ["angular2/src/facade/lang", "angular2/src/common/forms/directives/ng_control_name", "angular2/src/common/forms/directives/ng_form_control", "angular2/src/common/forms/directives/ng_model", "angular2/src/common/forms/directives/ng_control_group", "angular2/src/common/forms/directives/ng_form_model", "angular2/src/common/forms/directives/ng_form", "angular2/src/common/forms/directives/default_value_accessor", "angular2/src/common/forms/directives/checkbox_value_accessor", "angular2/src/common/forms/directives/number_value_accessor", "angular2/src/common/forms/directives/radio_control_value_accessor", "angular2/src/common/forms/directives/ng_control_status", "angular2/src/common/forms/directives/select_control_value_accessor", "angular2/src/common/forms/directives/validators", "angular2/src/common/forms/directives/ng_control_name", "angular2/src/common/forms/directives/ng_form_control", "angular2/src/common/forms/directives/ng_model", "angular2/src/common/forms/directives/ng_control_group", "angular2/src/common/forms/directives/ng_form_model", "angular2/src/common/forms/directives/ng_form", "angular2/src/common/forms/directives/default_value_accessor", "angular2/src/common/forms/directives/checkbox_value_accessor", "angular2/src/common/forms/directives/radio_control_value_accessor", "angular2/src/common/forms/directives/number_value_accessor", "angular2/src/common/forms/directives/ng_control_status", "angular2/src/common/forms/directives/select_control_value_accessor", "angular2/src/common/forms/directives/validators", "angular2/src/common/forms/directives/ng_control"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var ng_control_name_1 = require("angular2/src/common/forms/directives/ng_control_name");
var ng_form_control_1 = require("angular2/src/common/forms/directives/ng_form_control");
var ng_model_1 = require("angular2/src/common/forms/directives/ng_model");
var ng_control_group_1 = require("angular2/src/common/forms/directives/ng_control_group");
var ng_form_model_1 = require("angular2/src/common/forms/directives/ng_form_model");
var ng_form_1 = require("angular2/src/common/forms/directives/ng_form");
var default_value_accessor_1 = require("angular2/src/common/forms/directives/default_value_accessor");
var checkbox_value_accessor_1 = require("angular2/src/common/forms/directives/checkbox_value_accessor");
var number_value_accessor_1 = require("angular2/src/common/forms/directives/number_value_accessor");
var radio_control_value_accessor_1 = require("angular2/src/common/forms/directives/radio_control_value_accessor");
var ng_control_status_1 = require("angular2/src/common/forms/directives/ng_control_status");
var select_control_value_accessor_1 = require("angular2/src/common/forms/directives/select_control_value_accessor");
var validators_1 = require("angular2/src/common/forms/directives/validators");
var ng_control_name_2 = require("angular2/src/common/forms/directives/ng_control_name");
exports.NgControlName = ng_control_name_2.NgControlName;
var ng_form_control_2 = require("angular2/src/common/forms/directives/ng_form_control");
exports.NgFormControl = ng_form_control_2.NgFormControl;
var ng_model_2 = require("angular2/src/common/forms/directives/ng_model");
exports.NgModel = ng_model_2.NgModel;
var ng_control_group_2 = require("angular2/src/common/forms/directives/ng_control_group");
exports.NgControlGroup = ng_control_group_2.NgControlGroup;
var ng_form_model_2 = require("angular2/src/common/forms/directives/ng_form_model");
exports.NgFormModel = ng_form_model_2.NgFormModel;
var ng_form_2 = require("angular2/src/common/forms/directives/ng_form");
exports.NgForm = ng_form_2.NgForm;
var default_value_accessor_2 = require("angular2/src/common/forms/directives/default_value_accessor");
exports.DefaultValueAccessor = default_value_accessor_2.DefaultValueAccessor;
var checkbox_value_accessor_2 = require("angular2/src/common/forms/directives/checkbox_value_accessor");
exports.CheckboxControlValueAccessor = checkbox_value_accessor_2.CheckboxControlValueAccessor;
var radio_control_value_accessor_2 = require("angular2/src/common/forms/directives/radio_control_value_accessor");
exports.RadioControlValueAccessor = radio_control_value_accessor_2.RadioControlValueAccessor;
exports.RadioButtonState = radio_control_value_accessor_2.RadioButtonState;
var number_value_accessor_2 = require("angular2/src/common/forms/directives/number_value_accessor");
exports.NumberValueAccessor = number_value_accessor_2.NumberValueAccessor;
var ng_control_status_2 = require("angular2/src/common/forms/directives/ng_control_status");
exports.NgControlStatus = ng_control_status_2.NgControlStatus;
var select_control_value_accessor_2 = require("angular2/src/common/forms/directives/select_control_value_accessor");
exports.SelectControlValueAccessor = select_control_value_accessor_2.SelectControlValueAccessor;
exports.NgSelectOption = select_control_value_accessor_2.NgSelectOption;
var validators_2 = require("angular2/src/common/forms/directives/validators");
exports.RequiredValidator = validators_2.RequiredValidator;
exports.MinLengthValidator = validators_2.MinLengthValidator;
exports.MaxLengthValidator = validators_2.MaxLengthValidator;
exports.PatternValidator = validators_2.PatternValidator;
var ng_control_1 = require("angular2/src/common/forms/directives/ng_control");
exports.NgControl = ng_control_1.NgControl;
exports.FORM_DIRECTIVES = lang_1.CONST_EXPR([ng_control_name_1.NgControlName, ng_control_group_1.NgControlGroup, ng_form_control_1.NgFormControl, ng_model_1.NgModel, ng_form_model_1.NgFormModel, ng_form_1.NgForm, select_control_value_accessor_1.NgSelectOption, default_value_accessor_1.DefaultValueAccessor, number_value_accessor_1.NumberValueAccessor, checkbox_value_accessor_1.CheckboxControlValueAccessor, select_control_value_accessor_1.SelectControlValueAccessor, radio_control_value_accessor_1.RadioControlValueAccessor, ng_control_status_1.NgControlStatus, validators_1.RequiredValidator, validators_1.MinLengthValidator, validators_1.MaxLengthValidator, validators_1.PatternValidator]);
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/dom/events/hammer_gestures", ["angular2/src/platform/dom/events/hammer_common", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var hammer_common_1 = require("angular2/src/platform/dom/events/hammer_common");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var di_1 = require("angular2/src/core/di");
var HammerGesturesPlugin = (function(_super) {
__extends(HammerGesturesPlugin, _super);
function HammerGesturesPlugin() {
_super.apply(this, arguments);
}
HammerGesturesPlugin.prototype.supports = function(eventName) {
if (!_super.prototype.supports.call(this, eventName))
return false;
if (!lang_1.isPresent(window['Hammer'])) {
throw new exceptions_1.BaseException("Hammer.js is not loaded, can not bind " + eventName + " event");
}
return true;
};
HammerGesturesPlugin.prototype.addEventListener = function(element, eventName, handler) {
var zone = this.manager.getZone();
eventName = eventName.toLowerCase();
return zone.runOutsideAngular(function() {
var mc = new Hammer(element);
mc.get('pinch').set({enable: true});
mc.get('rotate').set({enable: true});
var callback = function(eventObj) {
zone.run(function() {
handler(eventObj);
});
};
mc.on(eventName, callback);
return function() {
mc.off(eventName, callback);
};
});
};
HammerGesturesPlugin = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], HammerGesturesPlugin);
return HammerGesturesPlugin;
})(hammer_common_1.HammerGesturesPluginCommon);
exports.HammerGesturesPlugin = HammerGesturesPlugin;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/browser/xhr_impl", ["angular2/src/facade/promise", "angular2/src/facade/lang", "angular2/src/compiler/xhr"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var promise_1 = require("angular2/src/facade/promise");
var lang_1 = require("angular2/src/facade/lang");
var xhr_1 = require("angular2/src/compiler/xhr");
var XHRImpl = (function(_super) {
__extends(XHRImpl, _super);
function XHRImpl() {
_super.apply(this, arguments);
}
XHRImpl.prototype.get = function(url) {
var completer = promise_1.PromiseWrapper.completer();
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'text';
xhr.onload = function() {
var response = lang_1.isPresent(xhr.response) ? xhr.response : xhr.responseText;
var status = xhr.status === 1223 ? 204 : xhr.status;
if (status === 0) {
status = response ? 200 : 0;
}
if (200 <= status && status <= 300) {
completer.resolve(response);
} else {
completer.reject("Failed to load " + url, null);
}
};
xhr.onerror = function() {
completer.reject("Failed to load " + url, null);
};
xhr.send();
return completer.promise;
};
return XHRImpl;
})(xhr_1.XHR);
exports.XHRImpl = XHRImpl;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/browser/tools/common_tools", ["angular2/src/core/application_ref", "angular2/src/facade/lang", "angular2/src/facade/browser", "angular2/src/platform/dom/dom_adapter"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var application_ref_1 = require("angular2/src/core/application_ref");
var lang_1 = require("angular2/src/facade/lang");
var browser_1 = require("angular2/src/facade/browser");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var AngularTools = (function() {
function AngularTools(ref) {
this.profiler = new AngularProfiler(ref);
}
return AngularTools;
})();
exports.AngularTools = AngularTools;
var AngularProfiler = (function() {
function AngularProfiler(ref) {
this.appRef = ref.injector.get(application_ref_1.ApplicationRef);
}
AngularProfiler.prototype.timeChangeDetection = function(config) {
var record = lang_1.isPresent(config) && config['record'];
var profileName = 'Change Detection';
var isProfilerAvailable = lang_1.isPresent(browser_1.window.console.profile);
if (record && isProfilerAvailable) {
browser_1.window.console.profile(profileName);
}
var start = dom_adapter_1.DOM.performanceNow();
var numTicks = 0;
while (numTicks < 5 || (dom_adapter_1.DOM.performanceNow() - start) < 500) {
this.appRef.tick();
numTicks++;
}
var end = dom_adapter_1.DOM.performanceNow();
if (record && isProfilerAvailable) {
browser_1.window.console.profileEnd(profileName);
}
var msPerTick = (end - start) / numTicks;
browser_1.window.console.log("ran " + numTicks + " change detection cycles");
browser_1.window.console.log(lang_1.NumberWrapper.toFixed(msPerTick, 2) + " ms per check");
};
return AngularProfiler;
})();
exports.AngularProfiler = AngularProfiler;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/directive_metadata", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/core/change_detection/change_detection", "angular2/src/core/metadata/view", "angular2/src/compiler/selector", "angular2/src/compiler/util", "angular2/src/core/linker/interfaces"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
var view_1 = require("angular2/src/core/metadata/view");
var selector_1 = require("angular2/src/compiler/selector");
var util_1 = require("angular2/src/compiler/util");
var interfaces_1 = require("angular2/src/core/linker/interfaces");
var HOST_REG_EXP = /^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))$/g;
var CompileMetadataWithIdentifier = (function() {
function CompileMetadataWithIdentifier() {}
CompileMetadataWithIdentifier.fromJson = function(data) {
return _COMPILE_METADATA_FROM_JSON[data['class']](data);
};
Object.defineProperty(CompileMetadataWithIdentifier.prototype, "identifier", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
return CompileMetadataWithIdentifier;
})();
exports.CompileMetadataWithIdentifier = CompileMetadataWithIdentifier;
var CompileMetadataWithType = (function(_super) {
__extends(CompileMetadataWithType, _super);
function CompileMetadataWithType() {
_super.apply(this, arguments);
}
CompileMetadataWithType.fromJson = function(data) {
return _COMPILE_METADATA_FROM_JSON[data['class']](data);
};
Object.defineProperty(CompileMetadataWithType.prototype, "type", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
Object.defineProperty(CompileMetadataWithType.prototype, "identifier", {
get: function() {
return exceptions_1.unimplemented();
},
enumerable: true,
configurable: true
});
return CompileMetadataWithType;
})(CompileMetadataWithIdentifier);
exports.CompileMetadataWithType = CompileMetadataWithType;
var CompileIdentifierMetadata = (function() {
function CompileIdentifierMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
runtime = _b.runtime,
name = _b.name,
moduleUrl = _b.moduleUrl,
prefix = _b.prefix,
constConstructor = _b.constConstructor;
this.runtime = runtime;
this.name = name;
this.prefix = prefix;
this.moduleUrl = moduleUrl;
this.constConstructor = constConstructor;
}
CompileIdentifierMetadata.fromJson = function(data) {
return new CompileIdentifierMetadata({
name: data['name'],
prefix: data['prefix'],
moduleUrl: data['moduleUrl'],
constConstructor: data['constConstructor']
});
};
CompileIdentifierMetadata.prototype.toJson = function() {
return {
'class': 'Identifier',
'name': this.name,
'moduleUrl': this.moduleUrl,
'prefix': this.prefix,
'constConstructor': this.constConstructor
};
};
Object.defineProperty(CompileIdentifierMetadata.prototype, "identifier", {
get: function() {
return this;
},
enumerable: true,
configurable: true
});
return CompileIdentifierMetadata;
})();
exports.CompileIdentifierMetadata = CompileIdentifierMetadata;
var CompileDiDependencyMetadata = (function() {
function CompileDiDependencyMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
isAttribute = _b.isAttribute,
isSelf = _b.isSelf,
isHost = _b.isHost,
isSkipSelf = _b.isSkipSelf,
isOptional = _b.isOptional,
query = _b.query,
viewQuery = _b.viewQuery,
token = _b.token;
this.isAttribute = lang_1.normalizeBool(isAttribute);
this.isSelf = lang_1.normalizeBool(isSelf);
this.isHost = lang_1.normalizeBool(isHost);
this.isSkipSelf = lang_1.normalizeBool(isSkipSelf);
this.isOptional = lang_1.normalizeBool(isOptional);
this.query = query;
this.viewQuery = viewQuery;
this.token = token;
}
CompileDiDependencyMetadata.fromJson = function(data) {
return new CompileDiDependencyMetadata({
token: objFromJson(data['token'], CompileIdentifierMetadata.fromJson),
query: objFromJson(data['query'], CompileQueryMetadata.fromJson),
viewQuery: objFromJson(data['viewQuery'], CompileQueryMetadata.fromJson),
isAttribute: data['isAttribute'],
isSelf: data['isSelf'],
isHost: data['isHost'],
isSkipSelf: data['isSkipSelf'],
isOptional: data['isOptional']
});
};
CompileDiDependencyMetadata.prototype.toJson = function() {
return {
'token': objToJson(this.token),
'query': objToJson(this.query),
'viewQuery': objToJson(this.viewQuery),
'isAttribute': this.isAttribute,
'isSelf': this.isSelf,
'isHost': this.isHost,
'isSkipSelf': this.isSkipSelf,
'isOptional': this.isOptional
};
};
return CompileDiDependencyMetadata;
})();
exports.CompileDiDependencyMetadata = CompileDiDependencyMetadata;
var CompileProviderMetadata = (function() {
function CompileProviderMetadata(_a) {
var token = _a.token,
useClass = _a.useClass,
useValue = _a.useValue,
useExisting = _a.useExisting,
useFactory = _a.useFactory,
deps = _a.deps,
multi = _a.multi;
this.token = token;
this.useClass = useClass;
this.useValue = useValue;
this.useExisting = useExisting;
this.useFactory = useFactory;
this.deps = deps;
this.multi = multi;
}
CompileProviderMetadata.fromJson = function(data) {
return new CompileProviderMetadata({
token: objFromJson(data['token'], CompileIdentifierMetadata.fromJson),
useClass: objFromJson(data['useClass'], CompileTypeMetadata.fromJson)
});
};
CompileProviderMetadata.prototype.toJson = function() {
return {
'token': objToJson(this.token),
'useClass': objToJson(this.useClass)
};
};
return CompileProviderMetadata;
})();
exports.CompileProviderMetadata = CompileProviderMetadata;
var CompileFactoryMetadata = (function() {
function CompileFactoryMetadata(_a) {
var runtime = _a.runtime,
name = _a.name,
moduleUrl = _a.moduleUrl,
constConstructor = _a.constConstructor,
diDeps = _a.diDeps;
this.runtime = runtime;
this.name = name;
this.moduleUrl = moduleUrl;
this.diDeps = diDeps;
this.constConstructor = constConstructor;
}
Object.defineProperty(CompileFactoryMetadata.prototype, "identifier", {
get: function() {
return this;
},
enumerable: true,
configurable: true
});
CompileFactoryMetadata.prototype.toJson = function() {
return null;
};
return CompileFactoryMetadata;
})();
exports.CompileFactoryMetadata = CompileFactoryMetadata;
var CompileTypeMetadata = (function() {
function CompileTypeMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
runtime = _b.runtime,
name = _b.name,
moduleUrl = _b.moduleUrl,
prefix = _b.prefix,
isHost = _b.isHost,
constConstructor = _b.constConstructor,
diDeps = _b.diDeps;
this.runtime = runtime;
this.name = name;
this.moduleUrl = moduleUrl;
this.prefix = prefix;
this.isHost = lang_1.normalizeBool(isHost);
this.constConstructor = constConstructor;
this.diDeps = lang_1.normalizeBlank(diDeps);
}
CompileTypeMetadata.fromJson = function(data) {
return new CompileTypeMetadata({
name: data['name'],
moduleUrl: data['moduleUrl'],
prefix: data['prefix'],
isHost: data['isHost'],
constConstructor: data['constConstructor'],
diDeps: arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson)
});
};
Object.defineProperty(CompileTypeMetadata.prototype, "identifier", {
get: function() {
return this;
},
enumerable: true,
configurable: true
});
Object.defineProperty(CompileTypeMetadata.prototype, "type", {
get: function() {
return this;
},
enumerable: true,
configurable: true
});
CompileTypeMetadata.prototype.toJson = function() {
return {
'class': 'Type',
'name': this.name,
'moduleUrl': this.moduleUrl,
'prefix': this.prefix,
'isHost': this.isHost,
'constConstructor': this.constConstructor,
'diDeps': arrayToJson(this.diDeps)
};
};
return CompileTypeMetadata;
})();
exports.CompileTypeMetadata = CompileTypeMetadata;
var CompileQueryMetadata = (function() {
function CompileQueryMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
selectors = _b.selectors,
descendants = _b.descendants,
first = _b.first,
propertyName = _b.propertyName;
this.selectors = selectors;
this.descendants = descendants;
this.first = lang_1.normalizeBool(first);
this.propertyName = propertyName;
}
CompileQueryMetadata.fromJson = function(data) {
return new CompileQueryMetadata({
selectors: arrayFromJson(data['selectors'], CompileIdentifierMetadata.fromJson),
descendants: data['descendants'],
first: data['first'],
propertyName: data['propertyName']
});
};
CompileQueryMetadata.prototype.toJson = function() {
return {
'selectors': arrayToJson(this.selectors),
'descendants': this.descendants,
'first': this.first,
'propertyName': this.propertyName
};
};
return CompileQueryMetadata;
})();
exports.CompileQueryMetadata = CompileQueryMetadata;
var CompileTemplateMetadata = (function() {
function CompileTemplateMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
encapsulation = _b.encapsulation,
template = _b.template,
templateUrl = _b.templateUrl,
styles = _b.styles,
styleUrls = _b.styleUrls,
ngContentSelectors = _b.ngContentSelectors;
this.encapsulation = lang_1.isPresent(encapsulation) ? encapsulation : view_1.ViewEncapsulation.Emulated;
this.template = template;
this.templateUrl = templateUrl;
this.styles = lang_1.isPresent(styles) ? styles : [];
this.styleUrls = lang_1.isPresent(styleUrls) ? styleUrls : [];
this.ngContentSelectors = lang_1.isPresent(ngContentSelectors) ? ngContentSelectors : [];
}
CompileTemplateMetadata.fromJson = function(data) {
return new CompileTemplateMetadata({
encapsulation: lang_1.isPresent(data['encapsulation']) ? view_1.VIEW_ENCAPSULATION_VALUES[data['encapsulation']] : data['encapsulation'],
template: data['template'],
templateUrl: data['templateUrl'],
styles: data['styles'],
styleUrls: data['styleUrls'],
ngContentSelectors: data['ngContentSelectors']
});
};
CompileTemplateMetadata.prototype.toJson = function() {
return {
'encapsulation': lang_1.isPresent(this.encapsulation) ? lang_1.serializeEnum(this.encapsulation) : this.encapsulation,
'template': this.template,
'templateUrl': this.templateUrl,
'styles': this.styles,
'styleUrls': this.styleUrls,
'ngContentSelectors': this.ngContentSelectors
};
};
return CompileTemplateMetadata;
})();
exports.CompileTemplateMetadata = CompileTemplateMetadata;
var CompileDirectiveMetadata = (function() {
function CompileDirectiveMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
type = _b.type,
isComponent = _b.isComponent,
dynamicLoadable = _b.dynamicLoadable,
selector = _b.selector,
exportAs = _b.exportAs,
changeDetection = _b.changeDetection,
inputs = _b.inputs,
outputs = _b.outputs,
hostListeners = _b.hostListeners,
hostProperties = _b.hostProperties,
hostAttributes = _b.hostAttributes,
lifecycleHooks = _b.lifecycleHooks,
providers = _b.providers,
viewProviders = _b.viewProviders,
queries = _b.queries,
viewQueries = _b.viewQueries,
template = _b.template;
this.type = type;
this.isComponent = isComponent;
this.dynamicLoadable = dynamicLoadable;
this.selector = selector;
this.exportAs = exportAs;
this.changeDetection = changeDetection;
this.inputs = inputs;
this.outputs = outputs;
this.hostListeners = hostListeners;
this.hostProperties = hostProperties;
this.hostAttributes = hostAttributes;
this.lifecycleHooks = lifecycleHooks;
this.providers = lang_1.normalizeBlank(providers);
this.viewProviders = lang_1.normalizeBlank(viewProviders);
this.queries = queries;
this.viewQueries = viewQueries;
this.template = template;
}
CompileDirectiveMetadata.create = function(_a) {
var _b = _a === void 0 ? {} : _a,
type = _b.type,
isComponent = _b.isComponent,
dynamicLoadable = _b.dynamicLoadable,
selector = _b.selector,
exportAs = _b.exportAs,
changeDetection = _b.changeDetection,
inputs = _b.inputs,
outputs = _b.outputs,
host = _b.host,
lifecycleHooks = _b.lifecycleHooks,
providers = _b.providers,
viewProviders = _b.viewProviders,
queries = _b.queries,
viewQueries = _b.viewQueries,
template = _b.template;
var hostListeners = {};
var hostProperties = {};
var hostAttributes = {};
if (lang_1.isPresent(host)) {
collection_1.StringMapWrapper.forEach(host, function(value, key) {
var matches = lang_1.RegExpWrapper.firstMatch(HOST_REG_EXP, key);
if (lang_1.isBlank(matches)) {
hostAttributes[key] = value;
} else if (lang_1.isPresent(matches[1])) {
hostProperties[matches[1]] = value;
} else if (lang_1.isPresent(matches[2])) {
hostListeners[matches[2]] = value;
}
});
}
var inputsMap = {};
if (lang_1.isPresent(inputs)) {
inputs.forEach(function(bindConfig) {
var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);
inputsMap[parts[0]] = parts[1];
});
}
var outputsMap = {};
if (lang_1.isPresent(outputs)) {
outputs.forEach(function(bindConfig) {
var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);
outputsMap[parts[0]] = parts[1];
});
}
return new CompileDirectiveMetadata({
type: type,
isComponent: lang_1.normalizeBool(isComponent),
dynamicLoadable: lang_1.normalizeBool(dynamicLoadable),
selector: selector,
exportAs: exportAs,
changeDetection: changeDetection,
inputs: inputsMap,
outputs: outputsMap,
hostListeners: hostListeners,
hostProperties: hostProperties,
hostAttributes: hostAttributes,
lifecycleHooks: lang_1.isPresent(lifecycleHooks) ? lifecycleHooks : [],
providers: providers,
viewProviders: viewProviders,
queries: queries,
viewQueries: viewQueries,
template: template
});
};
Object.defineProperty(CompileDirectiveMetadata.prototype, "identifier", {
get: function() {
return this.type;
},
enumerable: true,
configurable: true
});
CompileDirectiveMetadata.fromJson = function(data) {
return new CompileDirectiveMetadata({
isComponent: data['isComponent'],
dynamicLoadable: data['dynamicLoadable'],
selector: data['selector'],
exportAs: data['exportAs'],
type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'],
changeDetection: lang_1.isPresent(data['changeDetection']) ? change_detection_1.CHANGE_DETECTION_STRATEGY_VALUES[data['changeDetection']] : data['changeDetection'],
inputs: data['inputs'],
outputs: data['outputs'],
hostListeners: data['hostListeners'],
hostProperties: data['hostProperties'],
hostAttributes: data['hostAttributes'],
lifecycleHooks: data['lifecycleHooks'].map(function(hookValue) {
return interfaces_1.LIFECYCLE_HOOKS_VALUES[hookValue];
}),
template: lang_1.isPresent(data['template']) ? CompileTemplateMetadata.fromJson(data['template']) : data['template'],
providers: arrayFromJson(data['providers'], CompileProviderMetadata.fromJson)
});
};
CompileDirectiveMetadata.prototype.toJson = function() {
return {
'class': 'Directive',
'isComponent': this.isComponent,
'dynamicLoadable': this.dynamicLoadable,
'selector': this.selector,
'exportAs': this.exportAs,
'type': lang_1.isPresent(this.type) ? this.type.toJson() : this.type,
'changeDetection': lang_1.isPresent(this.changeDetection) ? lang_1.serializeEnum(this.changeDetection) : this.changeDetection,
'inputs': this.inputs,
'outputs': this.outputs,
'hostListeners': this.hostListeners,
'hostProperties': this.hostProperties,
'hostAttributes': this.hostAttributes,
'lifecycleHooks': this.lifecycleHooks.map(function(hook) {
return lang_1.serializeEnum(hook);
}),
'template': lang_1.isPresent(this.template) ? this.template.toJson() : this.template,
'providers': arrayToJson(this.providers)
};
};
return CompileDirectiveMetadata;
})();
exports.CompileDirectiveMetadata = CompileDirectiveMetadata;
function createHostComponentMeta(componentType, componentSelector) {
var template = selector_1.CssSelector.parse(componentSelector)[0].getMatchingElementTemplate();
return CompileDirectiveMetadata.create({
type: new CompileTypeMetadata({
runtime: Object,
name: "Host" + componentType.name,
moduleUrl: componentType.moduleUrl,
isHost: true
}),
template: new CompileTemplateMetadata({
template: template,
templateUrl: '',
styles: [],
styleUrls: [],
ngContentSelectors: []
}),
changeDetection: change_detection_1.ChangeDetectionStrategy.Default,
inputs: [],
outputs: [],
host: {},
lifecycleHooks: [],
isComponent: true,
dynamicLoadable: false,
selector: '*',
providers: [],
viewProviders: [],
queries: [],
viewQueries: []
});
}
exports.createHostComponentMeta = createHostComponentMeta;
var CompilePipeMetadata = (function() {
function CompilePipeMetadata(_a) {
var _b = _a === void 0 ? {} : _a,
type = _b.type,
name = _b.name,
pure = _b.pure;
this.type = type;
this.name = name;
this.pure = lang_1.normalizeBool(pure);
}
Object.defineProperty(CompilePipeMetadata.prototype, "identifier", {
get: function() {
return this.type;
},
enumerable: true,
configurable: true
});
CompilePipeMetadata.fromJson = function(data) {
return new CompilePipeMetadata({
type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'],
name: data['name'],
pure: data['pure']
});
};
CompilePipeMetadata.prototype.toJson = function() {
return {
'class': 'Pipe',
'type': lang_1.isPresent(this.type) ? this.type.toJson() : null,
'name': this.name,
'pure': this.pure
};
};
return CompilePipeMetadata;
})();
exports.CompilePipeMetadata = CompilePipeMetadata;
var _COMPILE_METADATA_FROM_JSON = {
'Directive': CompileDirectiveMetadata.fromJson,
'Pipe': CompilePipeMetadata.fromJson,
'Type': CompileTypeMetadata.fromJson,
'Identifier': CompileIdentifierMetadata.fromJson
};
function arrayFromJson(obj, fn) {
return lang_1.isBlank(obj) ? null : obj.map(function(o) {
return objFromJson(o, fn);
});
}
function arrayToJson(obj) {
return lang_1.isBlank(obj) ? null : obj.map(objToJson);
}
function objFromJson(obj, fn) {
return (lang_1.isString(obj) || lang_1.isBlank(obj)) ? obj : fn(obj);
}
function objToJson(obj) {
return (lang_1.isString(obj) || lang_1.isBlank(obj)) ? obj : obj.toJson();
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/change_detector_compiler", ["angular2/src/compiler/source_module", "angular2/src/core/change_detection/change_detection_jit_generator", "angular2/src/core/change_detection/abstract_change_detector", "angular2/src/core/change_detection/change_detection_util", "angular2/src/core/change_detection/constants", "angular2/src/compiler/change_definition_factory", "angular2/src/facade/lang", "angular2/src/core/change_detection/change_detection", "angular2/src/transform/template_compiler/change_detector_codegen", "angular2/src/compiler/util", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var source_module_1 = require("angular2/src/compiler/source_module");
var change_detection_jit_generator_1 = require("angular2/src/core/change_detection/change_detection_jit_generator");
var abstract_change_detector_1 = require("angular2/src/core/change_detection/abstract_change_detector");
var change_detection_util_1 = require("angular2/src/core/change_detection/change_detection_util");
var constants_1 = require("angular2/src/core/change_detection/constants");
var change_definition_factory_1 = require("angular2/src/compiler/change_definition_factory");
var lang_1 = require("angular2/src/facade/lang");
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
var change_detector_codegen_1 = require("angular2/src/transform/template_compiler/change_detector_codegen");
var util_1 = require("angular2/src/compiler/util");
var di_1 = require("angular2/src/core/di");
var ABSTRACT_CHANGE_DETECTOR = "AbstractChangeDetector";
var UTIL = "ChangeDetectionUtil";
var CHANGE_DETECTOR_STATE = "ChangeDetectorState";
exports.CHANGE_DETECTION_JIT_IMPORTS = lang_1.CONST_EXPR({
'AbstractChangeDetector': abstract_change_detector_1.AbstractChangeDetector,
'ChangeDetectionUtil': change_detection_util_1.ChangeDetectionUtil,
'ChangeDetectorState': constants_1.ChangeDetectorState
});
var ABSTRACT_CHANGE_DETECTOR_MODULE = source_module_1.moduleRef("package:angular2/src/core/change_detection/abstract_change_detector" + util_1.MODULE_SUFFIX);
var UTIL_MODULE = source_module_1.moduleRef("package:angular2/src/core/change_detection/change_detection_util" + util_1.MODULE_SUFFIX);
var PREGEN_PROTO_CHANGE_DETECTOR_MODULE = source_module_1.moduleRef("package:angular2/src/core/change_detection/pregen_proto_change_detector" + util_1.MODULE_SUFFIX);
var CONSTANTS_MODULE = source_module_1.moduleRef("package:angular2/src/core/change_detection/constants" + util_1.MODULE_SUFFIX);
var ChangeDetectionCompiler = (function() {
function ChangeDetectionCompiler(_genConfig) {
this._genConfig = _genConfig;
}
ChangeDetectionCompiler.prototype.compileComponentRuntime = function(componentType, strategy, parsedTemplate) {
var _this = this;
var changeDetectorDefinitions = change_definition_factory_1.createChangeDetectorDefinitions(componentType, strategy, this._genConfig, parsedTemplate);
return changeDetectorDefinitions.map(function(definition) {
return _this._createChangeDetectorFactory(definition);
});
};
ChangeDetectionCompiler.prototype._createChangeDetectorFactory = function(definition) {
var proto = new change_detection_1.DynamicProtoChangeDetector(definition);
return function() {
return proto.instantiate();
};
};
ChangeDetectionCompiler.prototype.compileComponentCodeGen = function(componentType, strategy, parsedTemplate) {
var changeDetectorDefinitions = change_definition_factory_1.createChangeDetectorDefinitions(componentType, strategy, this._genConfig, parsedTemplate);
var factories = [];
var index = 0;
var sourceParts = changeDetectorDefinitions.map(function(definition) {
var codegen;
var sourcePart;
if (lang_1.IS_DART) {
codegen = new change_detector_codegen_1.Codegen(PREGEN_PROTO_CHANGE_DETECTOR_MODULE);
var className = "_" + definition.id;
var typeRef = (index === 0 && componentType.isHost) ? 'dynamic' : "" + source_module_1.moduleRef(componentType.moduleUrl) + componentType.name;
codegen.generate(typeRef, className, definition);
factories.push(className + ".newChangeDetector");
sourcePart = codegen.toString();
} else {
codegen = new change_detection_jit_generator_1.ChangeDetectorJITGenerator(definition, "" + UTIL_MODULE + UTIL, "" + ABSTRACT_CHANGE_DETECTOR_MODULE + ABSTRACT_CHANGE_DETECTOR, "" + CONSTANTS_MODULE + CHANGE_DETECTOR_STATE);
factories.push("function() { return new " + codegen.typeName + "(); }");
sourcePart = codegen.generateSource();
}
index++;
return sourcePart;
});
return new source_module_1.SourceExpressions(sourceParts, factories);
};
ChangeDetectionCompiler = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [change_detection_1.ChangeDetectorGenConfig])], ChangeDetectionCompiler);
return ChangeDetectionCompiler;
})();
exports.ChangeDetectionCompiler = ChangeDetectionCompiler;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/style_compiler", ["angular2/src/compiler/source_module", "angular2/src/core/metadata/view", "angular2/src/compiler/xhr", "angular2/src/facade/lang", "angular2/src/facade/async", "angular2/src/compiler/shadow_css", "angular2/src/compiler/url_resolver", "angular2/src/compiler/style_url_resolver", "angular2/src/compiler/util", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var source_module_1 = require("angular2/src/compiler/source_module");
var view_1 = require("angular2/src/core/metadata/view");
var xhr_1 = require("angular2/src/compiler/xhr");
var lang_1 = require("angular2/src/facade/lang");
var async_1 = require("angular2/src/facade/async");
var shadow_css_1 = require("angular2/src/compiler/shadow_css");
var url_resolver_1 = require("angular2/src/compiler/url_resolver");
var style_url_resolver_1 = require("angular2/src/compiler/style_url_resolver");
var util_1 = require("angular2/src/compiler/util");
var di_1 = require("angular2/src/core/di");
var COMPONENT_VARIABLE = '%COMP%';
var HOST_ATTR = "_nghost-" + COMPONENT_VARIABLE;
var CONTENT_ATTR = "_ngcontent-" + COMPONENT_VARIABLE;
var StyleCompiler = (function() {
function StyleCompiler(_xhr, _urlResolver) {
this._xhr = _xhr;
this._urlResolver = _urlResolver;
this._styleCache = new Map();
this._shadowCss = new shadow_css_1.ShadowCss();
}
StyleCompiler.prototype.compileComponentRuntime = function(template) {
var styles = template.styles;
var styleAbsUrls = template.styleUrls;
return this._loadStyles(styles, styleAbsUrls, template.encapsulation === view_1.ViewEncapsulation.Emulated);
};
StyleCompiler.prototype.compileComponentCodeGen = function(template) {
var shim = template.encapsulation === view_1.ViewEncapsulation.Emulated;
return this._styleCodeGen(template.styles, template.styleUrls, shim);
};
StyleCompiler.prototype.compileStylesheetCodeGen = function(stylesheetUrl, cssText) {
var styleWithImports = style_url_resolver_1.extractStyleUrls(this._urlResolver, stylesheetUrl, cssText);
return [this._styleModule(stylesheetUrl, false, this._styleCodeGen([styleWithImports.style], styleWithImports.styleUrls, false)), this._styleModule(stylesheetUrl, true, this._styleCodeGen([styleWithImports.style], styleWithImports.styleUrls, true))];
};
StyleCompiler.prototype.clearCache = function() {
this._styleCache.clear();
};
StyleCompiler.prototype._loadStyles = function(plainStyles, absUrls, encapsulate) {
var _this = this;
var promises = absUrls.map(function(absUrl) {
var cacheKey = "" + absUrl + (encapsulate ? '.shim' : '');
var result = _this._styleCache.get(cacheKey);
if (lang_1.isBlank(result)) {
result = _this._xhr.get(absUrl).then(function(style) {
var styleWithImports = style_url_resolver_1.extractStyleUrls(_this._urlResolver, absUrl, style);
return _this._loadStyles([styleWithImports.style], styleWithImports.styleUrls, encapsulate);
});
_this._styleCache.set(cacheKey, result);
}
return result;
});
return async_1.PromiseWrapper.all(promises).then(function(nestedStyles) {
var result = plainStyles.map(function(plainStyle) {
return _this._shimIfNeeded(plainStyle, encapsulate);
});
nestedStyles.forEach(function(styles) {
return result.push(styles);
});
return result;
});
};
StyleCompiler.prototype._styleCodeGen = function(plainStyles, absUrls, shim) {
var _this = this;
var arrayPrefix = lang_1.IS_DART ? "const" : '';
var styleExpressions = plainStyles.map(function(plainStyle) {
return util_1.escapeSingleQuoteString(_this._shimIfNeeded(plainStyle, shim));
});
for (var i = 0; i < absUrls.length; i++) {
var moduleUrl = this._createModuleUrl(absUrls[i], shim);
styleExpressions.push(source_module_1.moduleRef(moduleUrl) + "STYLES");
}
var expressionSource = arrayPrefix + " [" + styleExpressions.join(',') + "]";
return new source_module_1.SourceExpression([], expressionSource);
};
StyleCompiler.prototype._styleModule = function(stylesheetUrl, shim, expression) {
var moduleSource = "\n " + expression.declarations.join('\n') + "\n " + util_1.codeGenExportVariable('STYLES') + expression.expression + ";\n ";
return new source_module_1.SourceModule(this._createModuleUrl(stylesheetUrl, shim), moduleSource);
};
StyleCompiler.prototype._shimIfNeeded = function(style, shim) {
return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style;
};
StyleCompiler.prototype._createModuleUrl = function(stylesheetUrl, shim) {
return shim ? stylesheetUrl + ".shim" + util_1.MODULE_SUFFIX : "" + stylesheetUrl + util_1.MODULE_SUFFIX;
};
StyleCompiler = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [xhr_1.XHR, url_resolver_1.UrlResolver])], StyleCompiler);
return StyleCompiler;
})();
exports.StyleCompiler = StyleCompiler;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/view_compiler", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/compiler/template_ast", "angular2/src/compiler/source_module", "angular2/src/core/linker/view", "angular2/src/core/linker/view_type", "angular2/src/core/linker/element", "angular2/src/core/metadata/view", "angular2/src/compiler/util", "angular2/src/core/di", "angular2/src/compiler/proto_view_compiler"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var template_ast_1 = require("angular2/src/compiler/template_ast");
var source_module_1 = require("angular2/src/compiler/source_module");
var view_1 = require("angular2/src/core/linker/view");
var view_type_1 = require("angular2/src/core/linker/view_type");
var element_1 = require("angular2/src/core/linker/element");
var view_2 = require("angular2/src/core/metadata/view");
var util_1 = require("angular2/src/compiler/util");
var di_1 = require("angular2/src/core/di");
var proto_view_compiler_1 = require("angular2/src/compiler/proto_view_compiler");
exports.VIEW_JIT_IMPORTS = lang_1.CONST_EXPR({
'AppView': view_1.AppView,
'AppElement': element_1.AppElement,
'flattenNestedViewRenderNodes': view_1.flattenNestedViewRenderNodes,
'checkSlotCount': view_1.checkSlotCount
});
var ViewCompiler = (function() {
function ViewCompiler() {}
ViewCompiler.prototype.compileComponentRuntime = function(component, template, styles, protoViews, changeDetectorFactories, componentViewFactory) {
var viewFactory = new RuntimeViewFactory(component, styles, protoViews, changeDetectorFactories, componentViewFactory);
return viewFactory.createViewFactory(template, 0, []);
};
ViewCompiler.prototype.compileComponentCodeGen = function(component, template, styles, protoViews, changeDetectorFactoryExpressions, componentViewFactory) {
var viewFactory = new CodeGenViewFactory(component, styles, protoViews, changeDetectorFactoryExpressions, componentViewFactory);
var targetStatements = [];
var viewFactoryExpression = viewFactory.createViewFactory(template, 0, targetStatements);
return new source_module_1.SourceExpression(targetStatements.map(function(stmt) {
return stmt.statement;
}), viewFactoryExpression.expression);
};
ViewCompiler = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], ViewCompiler);
return ViewCompiler;
})();
exports.ViewCompiler = ViewCompiler;
var CodeGenViewFactory = (function() {
function CodeGenViewFactory(component, styles, protoViews, changeDetectorExpressions, componentViewFactory) {
this.component = component;
this.styles = styles;
this.protoViews = protoViews;
this.changeDetectorExpressions = changeDetectorExpressions;
this.componentViewFactory = componentViewFactory;
this._nextVarId = 0;
}
CodeGenViewFactory.prototype._nextVar = function(prefix) {
return "" + prefix + this._nextVarId++ + "_" + this.component.type.name;
};
CodeGenViewFactory.prototype._nextRenderVar = function() {
return this._nextVar('render');
};
CodeGenViewFactory.prototype._nextAppVar = function() {
return this._nextVar('app');
};
CodeGenViewFactory.prototype._nextDisposableVar = function() {
return "disposable" + this._nextVarId++ + "_" + this.component.type.name;
};
CodeGenViewFactory.prototype.createText = function(renderer, parent, text, targetStatements) {
var varName = this._nextRenderVar();
var statement = "var " + varName + " = " + renderer.expression + ".createText(" + (lang_1.isPresent(parent) ? parent.expression : null) + ", " + util_1.escapeSingleQuoteString(text) + ");";
targetStatements.push(new util_1.Statement(statement));
return new util_1.Expression(varName);
};
CodeGenViewFactory.prototype.createElement = function(renderer, parentRenderNode, name, rootSelector, targetStatements) {
var varName = this._nextRenderVar();
var valueExpr;
if (lang_1.isPresent(rootSelector)) {
valueExpr = rootSelector.expression + " == null ?\n " + renderer.expression + ".createElement(" + (lang_1.isPresent(parentRenderNode) ? parentRenderNode.expression : null) + ", " + util_1.escapeSingleQuoteString(name) + ") :\n " + renderer.expression + ".selectRootElement(" + rootSelector.expression + ");";
} else {
valueExpr = renderer.expression + ".createElement(" + (lang_1.isPresent(parentRenderNode) ? parentRenderNode.expression : null) + ", " + util_1.escapeSingleQuoteString(name) + ")";
}
var statement = "var " + varName + " = " + valueExpr + ";";
targetStatements.push(new util_1.Statement(statement));
return new util_1.Expression(varName);
};
CodeGenViewFactory.prototype.createTemplateAnchor = function(renderer, parentRenderNode, targetStatements) {
var varName = this._nextRenderVar();
var valueExpr = renderer.expression + ".createTemplateAnchor(" + (lang_1.isPresent(parentRenderNode) ? parentRenderNode.expression : null) + ");";
targetStatements.push(new util_1.Statement("var " + varName + " = " + valueExpr));
return new util_1.Expression(varName);
};
CodeGenViewFactory.prototype.createGlobalEventListener = function(renderer, appView, boundElementIndex, eventAst, targetStatements) {
var disposableVar = this._nextDisposableVar();
var eventHandlerExpr = codeGenEventHandler(appView, boundElementIndex, eventAst.fullName);
targetStatements.push(new util_1.Statement("var " + disposableVar + " = " + renderer.expression + ".listenGlobal(" + util_1.escapeValue(eventAst.target) + ", " + util_1.escapeValue(eventAst.name) + ", " + eventHandlerExpr + ");"));
return new util_1.Expression(disposableVar);
};
CodeGenViewFactory.prototype.createElementEventListener = function(renderer, appView, boundElementIndex, renderNode, eventAst, targetStatements) {
var disposableVar = this._nextDisposableVar();
var eventHandlerExpr = codeGenEventHandler(appView, boundElementIndex, eventAst.fullName);
targetStatements.push(new util_1.Statement("var " + disposableVar + " = " + renderer.expression + ".listen(" + renderNode.expression + ", " + util_1.escapeValue(eventAst.name) + ", " + eventHandlerExpr + ");"));
return new util_1.Expression(disposableVar);
};
CodeGenViewFactory.prototype.setElementAttribute = function(renderer, renderNode, attrName, attrValue, targetStatements) {
targetStatements.push(new util_1.Statement(renderer.expression + ".setElementAttribute(" + renderNode.expression + ", " + util_1.escapeSingleQuoteString(attrName) + ", " + util_1.escapeSingleQuoteString(attrValue) + ");"));
};
CodeGenViewFactory.prototype.createAppElement = function(appProtoEl, appView, renderNode, parentAppEl, embeddedViewFactory, targetStatements) {
var appVar = this._nextAppVar();
var varValue = "new " + proto_view_compiler_1.APP_EL_MODULE_REF + "AppElement(" + appProtoEl.expression + ", " + appView.expression + ",\n " + (lang_1.isPresent(parentAppEl) ? parentAppEl.expression : null) + ", " + renderNode.expression + ", " + (lang_1.isPresent(embeddedViewFactory) ? embeddedViewFactory.expression : null) + ")";
targetStatements.push(new util_1.Statement("var " + appVar + " = " + varValue + ";"));
return new util_1.Expression(appVar);
};
CodeGenViewFactory.prototype.createAndSetComponentView = function(renderer, viewManager, view, appEl, component, contentNodesByNgContentIndex, targetStatements) {
var codeGenContentNodes;
if (this.component.type.isHost) {
codeGenContentNodes = view.expression + ".projectableNodes";
} else {
codeGenContentNodes = "[" + contentNodesByNgContentIndex.map(function(nodes) {
return util_1.codeGenFlatArray(nodes);
}).join(',') + "]";
}
targetStatements.push(new util_1.Statement(this.componentViewFactory(component) + "(" + renderer.expression + ", " + viewManager.expression + ", " + appEl.expression + ", " + codeGenContentNodes + ", null, null, null);"));
};
CodeGenViewFactory.prototype.getProjectedNodes = function(projectableNodes, ngContentIndex) {
return new util_1.Expression(projectableNodes.expression + "[" + ngContentIndex + "]", true);
};
CodeGenViewFactory.prototype.appendProjectedNodes = function(renderer, parent, nodes, targetStatements) {
targetStatements.push(new util_1.Statement(renderer.expression + ".projectNodes(" + parent.expression + ", " + proto_view_compiler_1.APP_VIEW_MODULE_REF + "flattenNestedViewRenderNodes(" + nodes.expression + "));"));
};
CodeGenViewFactory.prototype.createViewFactory = function(asts, embeddedTemplateIndex, targetStatements) {
var compileProtoView = this.protoViews[embeddedTemplateIndex];
var isHostView = this.component.type.isHost;
var isComponentView = embeddedTemplateIndex === 0 && !isHostView;
var visitor = new ViewBuilderVisitor(new util_1.Expression('renderer'), new util_1.Expression('viewManager'), new util_1.Expression('projectableNodes'), isHostView ? new util_1.Expression('rootSelector') : null, new util_1.Expression('view'), compileProtoView, targetStatements, this);
template_ast_1.templateVisitAll(visitor, asts, new ParentElement(isComponentView ? new util_1.Expression('parentRenderNode') : null, null, null));
var appProtoView = compileProtoView.protoView.expression;
var viewFactoryName = codeGenViewFactoryName(this.component, embeddedTemplateIndex);
var changeDetectorFactory = this.changeDetectorExpressions.expressions[embeddedTemplateIndex];
var factoryArgs = ['parentRenderer', 'viewManager', 'containerEl', 'projectableNodes', 'rootSelector', 'dynamicallyCreatedProviders', 'rootInjector'];
var initRendererStmts = [];
var rendererExpr = "parentRenderer";
if (embeddedTemplateIndex === 0) {
var renderCompTypeVar = this._nextVar('renderType');
targetStatements.push(new util_1.Statement("var " + renderCompTypeVar + " = null;"));
var stylesVar = this._nextVar('styles');
targetStatements.push(new util_1.Statement(util_1.CONST_VAR + " " + stylesVar + " = " + this.styles.expression + ";"));
var encapsulation = this.component.template.encapsulation;
initRendererStmts.push("if (" + renderCompTypeVar + " == null) {\n " + renderCompTypeVar + " = viewManager.createRenderComponentType(" + codeGenViewEncapsulation(encapsulation) + ", " + stylesVar + ");\n }");
rendererExpr = "parentRenderer.renderComponent(" + renderCompTypeVar + ")";
}
var statement = "\n" + util_1.codeGenFnHeader(factoryArgs, viewFactoryName) + "{\n " + initRendererStmts.join('\n') + "\n var renderer = " + rendererExpr + ";\n var view = new " + proto_view_compiler_1.APP_VIEW_MODULE_REF + "AppView(\n " + appProtoView + ", renderer, viewManager,\n projectableNodes,\n containerEl,\n dynamicallyCreatedProviders, rootInjector,\n " + changeDetectorFactory + "()\n );\n " + proto_view_compiler_1.APP_VIEW_MODULE_REF + "checkSlotCount(" + util_1.escapeValue(this.component.type.name) + ", " + this.component.template.ngContentSelectors.length + ", projectableNodes);\n " + (isComponentView ? 'var parentRenderNode = renderer.createViewRoot(view.containerAppElement.nativeElement);' : '') + "\n " + visitor.renderStmts.map(function(stmt) {
return stmt.statement;
}).join('\n') + "\n " + visitor.appStmts.map(function(stmt) {
return stmt.statement;
}).join('\n') + "\n\n view.init(" + util_1.codeGenFlatArray(visitor.rootNodesOrAppElements) + ", " + util_1.codeGenArray(visitor.renderNodes) + ", " + util_1.codeGenArray(visitor.appDisposables) + ",\n " + util_1.codeGenArray(visitor.appElements) + ");\n return view;\n}";
targetStatements.push(new util_1.Statement(statement));
return new util_1.Expression(viewFactoryName);
};
return CodeGenViewFactory;
})();
var RuntimeViewFactory = (function() {
function RuntimeViewFactory(component, styles, protoViews, changeDetectorFactories, componentViewFactory) {
this.component = component;
this.styles = styles;
this.protoViews = protoViews;
this.changeDetectorFactories = changeDetectorFactories;
this.componentViewFactory = componentViewFactory;
}
RuntimeViewFactory.prototype.createText = function(renderer, parent, text, targetStatements) {
return renderer.createText(parent, text);
};
RuntimeViewFactory.prototype.createElement = function(renderer, parent, name, rootSelector, targetStatements) {
var el;
if (lang_1.isPresent(rootSelector)) {
el = renderer.selectRootElement(rootSelector);
} else {
el = renderer.createElement(parent, name);
}
return el;
};
RuntimeViewFactory.prototype.createTemplateAnchor = function(renderer, parent, targetStatements) {
return renderer.createTemplateAnchor(parent);
};
RuntimeViewFactory.prototype.createGlobalEventListener = function(renderer, appView, boundElementIndex, eventAst, targetStatements) {
return renderer.listenGlobal(eventAst.target, eventAst.name, function(event) {
return appView.triggerEventHandlers(eventAst.fullName, event, boundElementIndex);
});
};
RuntimeViewFactory.prototype.createElementEventListener = function(renderer, appView, boundElementIndex, renderNode, eventAst, targetStatements) {
return renderer.listen(renderNode, eventAst.name, function(event) {
return appView.triggerEventHandlers(eventAst.fullName, event, boundElementIndex);
});
};
RuntimeViewFactory.prototype.setElementAttribute = function(renderer, renderNode, attrName, attrValue, targetStatements) {
renderer.setElementAttribute(renderNode, attrName, attrValue);
};
RuntimeViewFactory.prototype.createAppElement = function(appProtoEl, appView, renderNode, parentAppEl, embeddedViewFactory, targetStatements) {
return new element_1.AppElement(appProtoEl, appView, parentAppEl, renderNode, embeddedViewFactory);
};
RuntimeViewFactory.prototype.createAndSetComponentView = function(renderer, viewManager, appView, appEl, component, contentNodesByNgContentIndex, targetStatements) {
var flattenedContentNodes;
if (this.component.type.isHost) {
flattenedContentNodes = appView.projectableNodes;
} else {
flattenedContentNodes = collection_1.ListWrapper.createFixedSize(contentNodesByNgContentIndex.length);
for (var i = 0; i < contentNodesByNgContentIndex.length; i++) {
flattenedContentNodes[i] = util_1.flattenArray(contentNodesByNgContentIndex[i], []);
}
}
this.componentViewFactory(component)(renderer, viewManager, appEl, flattenedContentNodes);
};
RuntimeViewFactory.prototype.getProjectedNodes = function(projectableNodes, ngContentIndex) {
return projectableNodes[ngContentIndex];
};
RuntimeViewFactory.prototype.appendProjectedNodes = function(renderer, parent, nodes, targetStatements) {
renderer.projectNodes(parent, view_1.flattenNestedViewRenderNodes(nodes));
};
RuntimeViewFactory.prototype.createViewFactory = function(asts, embeddedTemplateIndex, targetStatements) {
var _this = this;
var compileProtoView = this.protoViews[embeddedTemplateIndex];
var isComponentView = compileProtoView.protoView.type === view_type_1.ViewType.COMPONENT;
var renderComponentType = null;
return function(parentRenderer, viewManager, containerEl, projectableNodes, rootSelector, dynamicallyCreatedProviders, rootInjector) {
if (rootSelector === void 0) {
rootSelector = null;
}
if (dynamicallyCreatedProviders === void 0) {
dynamicallyCreatedProviders = null;
}
if (rootInjector === void 0) {
rootInjector = null;
}
view_1.checkSlotCount(_this.component.type.name, _this.component.template.ngContentSelectors.length, projectableNodes);
var renderer;
if (embeddedTemplateIndex === 0) {
if (lang_1.isBlank(renderComponentType)) {
renderComponentType = viewManager.createRenderComponentType(_this.component.template.encapsulation, _this.styles);
}
renderer = parentRenderer.renderComponent(renderComponentType);
} else {
renderer = parentRenderer;
}
var changeDetector = _this.changeDetectorFactories[embeddedTemplateIndex]();
var view = new view_1.AppView(compileProtoView.protoView, renderer, viewManager, projectableNodes, containerEl, dynamicallyCreatedProviders, rootInjector, changeDetector);
var visitor = new ViewBuilderVisitor(renderer, viewManager, projectableNodes, rootSelector, view, compileProtoView, [], _this);
var parentRenderNode = isComponentView ? renderer.createViewRoot(containerEl.nativeElement) : null;
template_ast_1.templateVisitAll(visitor, asts, new ParentElement(parentRenderNode, null, null));
view.init(util_1.flattenArray(visitor.rootNodesOrAppElements, []), visitor.renderNodes, visitor.appDisposables, visitor.appElements);
return view;
};
};
return RuntimeViewFactory;
})();
var ParentElement = (function() {
function ParentElement(renderNode, appEl, component) {
this.renderNode = renderNode;
this.appEl = appEl;
this.component = component;
if (lang_1.isPresent(component)) {
this.contentNodesByNgContentIndex = collection_1.ListWrapper.createFixedSize(component.template.ngContentSelectors.length);
for (var i = 0; i < this.contentNodesByNgContentIndex.length; i++) {
this.contentNodesByNgContentIndex[i] = [];
}
} else {
this.contentNodesByNgContentIndex = null;
}
}
ParentElement.prototype.addContentNode = function(ngContentIndex, nodeExpr) {
this.contentNodesByNgContentIndex[ngContentIndex].push(nodeExpr);
};
return ParentElement;
})();
var ViewBuilderVisitor = (function() {
function ViewBuilderVisitor(renderer, viewManager, projectableNodes, rootSelector, view, protoView, targetStatements, factory) {
this.renderer = renderer;
this.viewManager = viewManager;
this.projectableNodes = projectableNodes;
this.rootSelector = rootSelector;
this.view = view;
this.protoView = protoView;
this.targetStatements = targetStatements;
this.factory = factory;
this.renderStmts = [];
this.renderNodes = [];
this.appStmts = [];
this.appElements = [];
this.appDisposables = [];
this.rootNodesOrAppElements = [];
this.elementCount = 0;
}
ViewBuilderVisitor.prototype._addRenderNode = function(renderNode, appEl, ngContentIndex, parent) {
this.renderNodes.push(renderNode);
if (lang_1.isPresent(parent.component)) {
if (lang_1.isPresent(ngContentIndex)) {
parent.addContentNode(ngContentIndex, lang_1.isPresent(appEl) ? appEl : renderNode);
}
} else if (lang_1.isBlank(parent.renderNode)) {
this.rootNodesOrAppElements.push(lang_1.isPresent(appEl) ? appEl : renderNode);
}
};
ViewBuilderVisitor.prototype._getParentRenderNode = function(ngContentIndex, parent) {
return lang_1.isPresent(parent.component) && parent.component.template.encapsulation !== view_2.ViewEncapsulation.Native ? null : parent.renderNode;
};
ViewBuilderVisitor.prototype.visitBoundText = function(ast, parent) {
return this._visitText('', ast.ngContentIndex, parent);
};
ViewBuilderVisitor.prototype.visitText = function(ast, parent) {
return this._visitText(ast.value, ast.ngContentIndex, parent);
};
ViewBuilderVisitor.prototype._visitText = function(value, ngContentIndex, parent) {
var renderNode = this.factory.createText(this.renderer, this._getParentRenderNode(ngContentIndex, parent), value, this.renderStmts);
this._addRenderNode(renderNode, null, ngContentIndex, parent);
return null;
};
ViewBuilderVisitor.prototype.visitNgContent = function(ast, parent) {
var nodesExpression = this.factory.getProjectedNodes(this.projectableNodes, ast.index);
if (lang_1.isPresent(parent.component)) {
if (lang_1.isPresent(ast.ngContentIndex)) {
parent.addContentNode(ast.ngContentIndex, nodesExpression);
}
} else {
if (lang_1.isPresent(parent.renderNode)) {
this.factory.appendProjectedNodes(this.renderer, parent.renderNode, nodesExpression, this.renderStmts);
} else {
this.rootNodesOrAppElements.push(nodesExpression);
}
}
return null;
};
ViewBuilderVisitor.prototype.visitElement = function(ast, parent) {
var _this = this;
var renderNode = this.factory.createElement(this.renderer, this._getParentRenderNode(ast.ngContentIndex, parent), ast.name, this.rootSelector, this.renderStmts);
var component = ast.getComponent();
var elementIndex = this.elementCount++;
var protoEl = this.protoView.protoElements[elementIndex];
protoEl.renderEvents.forEach(function(eventAst) {
var disposable;
if (lang_1.isPresent(eventAst.target)) {
disposable = _this.factory.createGlobalEventListener(_this.renderer, _this.view, protoEl.boundElementIndex, eventAst, _this.renderStmts);
} else {
disposable = _this.factory.createElementEventListener(_this.renderer, _this.view, protoEl.boundElementIndex, renderNode, eventAst, _this.renderStmts);
}
_this.appDisposables.push(disposable);
});
for (var i = 0; i < protoEl.attrNameAndValues.length; i++) {
var attrName = protoEl.attrNameAndValues[i][0];
var attrValue = protoEl.attrNameAndValues[i][1];
this.factory.setElementAttribute(this.renderer, renderNode, attrName, attrValue, this.renderStmts);
}
var appEl = null;
if (lang_1.isPresent(protoEl.appProtoEl)) {
appEl = this.factory.createAppElement(protoEl.appProtoEl, this.view, renderNode, parent.appEl, null, this.appStmts);
this.appElements.push(appEl);
}
this._addRenderNode(renderNode, appEl, ast.ngContentIndex, parent);
var newParent = new ParentElement(renderNode, lang_1.isPresent(appEl) ? appEl : parent.appEl, component);
template_ast_1.templateVisitAll(this, ast.children, newParent);
if (lang_1.isPresent(appEl) && lang_1.isPresent(component)) {
this.factory.createAndSetComponentView(this.renderer, this.viewManager, this.view, appEl, component, newParent.contentNodesByNgContentIndex, this.appStmts);
}
return null;
};
ViewBuilderVisitor.prototype.visitEmbeddedTemplate = function(ast, parent) {
var renderNode = this.factory.createTemplateAnchor(this.renderer, this._getParentRenderNode(ast.ngContentIndex, parent), this.renderStmts);
var elementIndex = this.elementCount++;
var protoEl = this.protoView.protoElements[elementIndex];
var embeddedViewFactory = this.factory.createViewFactory(ast.children, protoEl.embeddedTemplateIndex, this.targetStatements);
var appEl = this.factory.createAppElement(protoEl.appProtoEl, this.view, renderNode, parent.appEl, embeddedViewFactory, this.appStmts);
this._addRenderNode(renderNode, appEl, ast.ngContentIndex, parent);
this.appElements.push(appEl);
return null;
};
ViewBuilderVisitor.prototype.visitVariable = function(ast, ctx) {
return null;
};
ViewBuilderVisitor.prototype.visitAttr = function(ast, ctx) {
return null;
};
ViewBuilderVisitor.prototype.visitDirective = function(ast, ctx) {
return null;
};
ViewBuilderVisitor.prototype.visitEvent = function(ast, ctx) {
return null;
};
ViewBuilderVisitor.prototype.visitDirectiveProperty = function(ast, context) {
return null;
};
ViewBuilderVisitor.prototype.visitElementProperty = function(ast, context) {
return null;
};
return ViewBuilderVisitor;
})();
function codeGenEventHandler(view, boundElementIndex, eventName) {
return util_1.codeGenValueFn(['event'], view.expression + ".triggerEventHandlers(" + util_1.escapeValue(eventName) + ", event, " + boundElementIndex + ")");
}
function codeGenViewFactoryName(component, embeddedTemplateIndex) {
return "viewFactory_" + component.type.name + embeddedTemplateIndex;
}
function codeGenViewEncapsulation(value) {
if (lang_1.IS_DART) {
return "" + proto_view_compiler_1.METADATA_MODULE_REF + value;
} else {
return "" + value;
}
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/html_lexer", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/compiler/parse_util", "angular2/src/compiler/html_tags"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var parse_util_1 = require("angular2/src/compiler/parse_util");
var html_tags_1 = require("angular2/src/compiler/html_tags");
(function(HtmlTokenType) {
HtmlTokenType[HtmlTokenType["TAG_OPEN_START"] = 0] = "TAG_OPEN_START";
HtmlTokenType[HtmlTokenType["TAG_OPEN_END"] = 1] = "TAG_OPEN_END";
HtmlTokenType[HtmlTokenType["TAG_OPEN_END_VOID"] = 2] = "TAG_OPEN_END_VOID";
HtmlTokenType[HtmlTokenType["TAG_CLOSE"] = 3] = "TAG_CLOSE";
HtmlTokenType[HtmlTokenType["TEXT"] = 4] = "TEXT";
HtmlTokenType[HtmlTokenType["ESCAPABLE_RAW_TEXT"] = 5] = "ESCAPABLE_RAW_TEXT";
HtmlTokenType[HtmlTokenType["RAW_TEXT"] = 6] = "RAW_TEXT";
HtmlTokenType[HtmlTokenType["COMMENT_START"] = 7] = "COMMENT_START";
HtmlTokenType[HtmlTokenType["COMMENT_END"] = 8] = "COMMENT_END";
HtmlTokenType[HtmlTokenType["CDATA_START"] = 9] = "CDATA_START";
HtmlTokenType[HtmlTokenType["CDATA_END"] = 10] = "CDATA_END";
HtmlTokenType[HtmlTokenType["ATTR_NAME"] = 11] = "ATTR_NAME";
HtmlTokenType[HtmlTokenType["ATTR_VALUE"] = 12] = "ATTR_VALUE";
HtmlTokenType[HtmlTokenType["DOC_TYPE"] = 13] = "DOC_TYPE";
HtmlTokenType[HtmlTokenType["EOF"] = 14] = "EOF";
})(exports.HtmlTokenType || (exports.HtmlTokenType = {}));
var HtmlTokenType = exports.HtmlTokenType;
var HtmlToken = (function() {
function HtmlToken(type, parts, sourceSpan) {
this.type = type;
this.parts = parts;
this.sourceSpan = sourceSpan;
}
return HtmlToken;
})();
exports.HtmlToken = HtmlToken;
var HtmlTokenError = (function(_super) {
__extends(HtmlTokenError, _super);
function HtmlTokenError(errorMsg, tokenType, span) {
_super.call(this, span, errorMsg);
this.tokenType = tokenType;
}
return HtmlTokenError;
})(parse_util_1.ParseError);
exports.HtmlTokenError = HtmlTokenError;
var HtmlTokenizeResult = (function() {
function HtmlTokenizeResult(tokens, errors) {
this.tokens = tokens;
this.errors = errors;
}
return HtmlTokenizeResult;
})();
exports.HtmlTokenizeResult = HtmlTokenizeResult;
function tokenizeHtml(sourceContent, sourceUrl) {
return new _HtmlTokenizer(new parse_util_1.ParseSourceFile(sourceContent, sourceUrl)).tokenize();
}
exports.tokenizeHtml = tokenizeHtml;
var $EOF = 0;
var $TAB = 9;
var $LF = 10;
var $FF = 12;
var $CR = 13;
var $SPACE = 32;
var $BANG = 33;
var $DQ = 34;
var $HASH = 35;
var $$ = 36;
var $AMPERSAND = 38;
var $SQ = 39;
var $MINUS = 45;
var $SLASH = 47;
var $0 = 48;
var $SEMICOLON = 59;
var $9 = 57;
var $COLON = 58;
var $LT = 60;
var $EQ = 61;
var $GT = 62;
var $QUESTION = 63;
var $LBRACKET = 91;
var $RBRACKET = 93;
var $A = 65;
var $F = 70;
var $X = 88;
var $Z = 90;
var $a = 97;
var $f = 102;
var $z = 122;
var $x = 120;
var $NBSP = 160;
var CR_OR_CRLF_REGEXP = /\r\n?/g;
function unexpectedCharacterErrorMsg(charCode) {
var char = charCode === $EOF ? 'EOF' : lang_1.StringWrapper.fromCharCode(charCode);
return "Unexpected character \"" + char + "\"";
}
function unknownEntityErrorMsg(entitySrc) {
return "Unknown entity \"" + entitySrc + "\" - use the \"&#<decimal>;\" or \"&#x<hex>;\" syntax";
}
var ControlFlowError = (function() {
function ControlFlowError(error) {
this.error = error;
}
return ControlFlowError;
})();
var _HtmlTokenizer = (function() {
function _HtmlTokenizer(file) {
this.file = file;
this.peek = -1;
this.index = -1;
this.line = 0;
this.column = -1;
this.tokens = [];
this.errors = [];
this.input = file.content;
this.length = file.content.length;
this._advance();
}
_HtmlTokenizer.prototype._processCarriageReturns = function(content) {
return lang_1.StringWrapper.replaceAll(content, CR_OR_CRLF_REGEXP, '\n');
};
_HtmlTokenizer.prototype.tokenize = function() {
while (this.peek !== $EOF) {
var start = this._getLocation();
try {
if (this._attemptCharCode($LT)) {
if (this._attemptCharCode($BANG)) {
if (this._attemptCharCode($LBRACKET)) {
this._consumeCdata(start);
} else if (this._attemptCharCode($MINUS)) {
this._consumeComment(start);
} else {
this._consumeDocType(start);
}
} else if (this._attemptCharCode($SLASH)) {
this._consumeTagClose(start);
} else {
this._consumeTagOpen(start);
}
} else {
this._consumeText();
}
} catch (e) {
if (e instanceof ControlFlowError) {
this.errors.push(e.error);
} else {
throw e;
}
}
}
this._beginToken(HtmlTokenType.EOF);
this._endToken([]);
return new HtmlTokenizeResult(mergeTextTokens(this.tokens), this.errors);
};
_HtmlTokenizer.prototype._getLocation = function() {
return new parse_util_1.ParseLocation(this.file, this.index, this.line, this.column);
};
_HtmlTokenizer.prototype._getSpan = function(start, end) {
if (lang_1.isBlank(start)) {
start = this._getLocation();
}
if (lang_1.isBlank(end)) {
end = this._getLocation();
}
return new parse_util_1.ParseSourceSpan(start, end);
};
_HtmlTokenizer.prototype._beginToken = function(type, start) {
if (start === void 0) {
start = null;
}
if (lang_1.isBlank(start)) {
start = this._getLocation();
}
this.currentTokenStart = start;
this.currentTokenType = type;
};
_HtmlTokenizer.prototype._endToken = function(parts, end) {
if (end === void 0) {
end = null;
}
if (lang_1.isBlank(end)) {
end = this._getLocation();
}
var token = new HtmlToken(this.currentTokenType, parts, new parse_util_1.ParseSourceSpan(this.currentTokenStart, end));
this.tokens.push(token);
this.currentTokenStart = null;
this.currentTokenType = null;
return token;
};
_HtmlTokenizer.prototype._createError = function(msg, span) {
var error = new HtmlTokenError(msg, this.currentTokenType, span);
this.currentTokenStart = null;
this.currentTokenType = null;
return new ControlFlowError(error);
};
_HtmlTokenizer.prototype._advance = function() {
if (this.index >= this.length) {
throw this._createError(unexpectedCharacterErrorMsg($EOF), this._getSpan());
}
if (this.peek === $LF) {
this.line++;
this.column = 0;
} else if (this.peek !== $LF && this.peek !== $CR) {
this.column++;
}
this.index++;
this.peek = this.index >= this.length ? $EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index);
};
_HtmlTokenizer.prototype._attemptCharCode = function(charCode) {
if (this.peek === charCode) {
this._advance();
return true;
}
return false;
};
_HtmlTokenizer.prototype._attemptCharCodeCaseInsensitive = function(charCode) {
if (compareCharCodeCaseInsensitive(this.peek, charCode)) {
this._advance();
return true;
}
return false;
};
_HtmlTokenizer.prototype._requireCharCode = function(charCode) {
var location = this._getLocation();
if (!this._attemptCharCode(charCode)) {
throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(location, location));
}
};
_HtmlTokenizer.prototype._attemptStr = function(chars) {
for (var i = 0; i < chars.length; i++) {
if (!this._attemptCharCode(lang_1.StringWrapper.charCodeAt(chars, i))) {
return false;
}
}
return true;
};
_HtmlTokenizer.prototype._attemptStrCaseInsensitive = function(chars) {
for (var i = 0; i < chars.length; i++) {
if (!this._attemptCharCodeCaseInsensitive(lang_1.StringWrapper.charCodeAt(chars, i))) {
return false;
}
}
return true;
};
_HtmlTokenizer.prototype._requireStr = function(chars) {
var location = this._getLocation();
if (!this._attemptStr(chars)) {
throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(location));
}
};
_HtmlTokenizer.prototype._attemptCharCodeUntilFn = function(predicate) {
while (!predicate(this.peek)) {
this._advance();
}
};
_HtmlTokenizer.prototype._requireCharCodeUntilFn = function(predicate, len) {
var start = this._getLocation();
this._attemptCharCodeUntilFn(predicate);
if (this.index - start.offset < len) {
throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(start, start));
}
};
_HtmlTokenizer.prototype._attemptUntilChar = function(char) {
while (this.peek !== char) {
this._advance();
}
};
_HtmlTokenizer.prototype._readChar = function(decodeEntities) {
if (decodeEntities && this.peek === $AMPERSAND) {
return this._decodeEntity();
} else {
var index = this.index;
this._advance();
return this.input[index];
}
};
_HtmlTokenizer.prototype._decodeEntity = function() {
var start = this._getLocation();
this._advance();
if (this._attemptCharCode($HASH)) {
var isHex = this._attemptCharCode($x) || this._attemptCharCode($X);
var numberStart = this._getLocation().offset;
this._attemptCharCodeUntilFn(isDigitEntityEnd);
if (this.peek != $SEMICOLON) {
throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan());
}
this._advance();
var strNum = this.input.substring(numberStart, this.index - 1);
try {
var charCode = lang_1.NumberWrapper.parseInt(strNum, isHex ? 16 : 10);
return lang_1.StringWrapper.fromCharCode(charCode);
} catch (e) {
var entity = this.input.substring(start.offset + 1, this.index - 1);
throw this._createError(unknownEntityErrorMsg(entity), this._getSpan(start));
}
} else {
var startPosition = this._savePosition();
this._attemptCharCodeUntilFn(isNamedEntityEnd);
if (this.peek != $SEMICOLON) {
this._restorePosition(startPosition);
return '&';
}
this._advance();
var name_1 = this.input.substring(start.offset + 1, this.index - 1);
var char = html_tags_1.NAMED_ENTITIES[name_1];
if (lang_1.isBlank(char)) {
throw this._createError(unknownEntityErrorMsg(name_1), this._getSpan(start));
}
return char;
}
};
_HtmlTokenizer.prototype._consumeRawText = function(decodeEntities, firstCharOfEnd, attemptEndRest) {
var tagCloseStart;
var textStart = this._getLocation();
this._beginToken(decodeEntities ? HtmlTokenType.ESCAPABLE_RAW_TEXT : HtmlTokenType.RAW_TEXT, textStart);
var parts = [];
while (true) {
tagCloseStart = this._getLocation();
if (this._attemptCharCode(firstCharOfEnd) && attemptEndRest()) {
break;
}
if (this.index > tagCloseStart.offset) {
parts.push(this.input.substring(tagCloseStart.offset, this.index));
}
while (this.peek !== firstCharOfEnd) {
parts.push(this._readChar(decodeEntities));
}
}
return this._endToken([this._processCarriageReturns(parts.join(''))], tagCloseStart);
};
_HtmlTokenizer.prototype._consumeComment = function(start) {
var _this = this;
this._beginToken(HtmlTokenType.COMMENT_START, start);
this._requireCharCode($MINUS);
this._endToken([]);
var textToken = this._consumeRawText(false, $MINUS, function() {
return _this._attemptStr('->');
});
this._beginToken(HtmlTokenType.COMMENT_END, textToken.sourceSpan.end);
this._endToken([]);
};
_HtmlTokenizer.prototype._consumeCdata = function(start) {
var _this = this;
this._beginToken(HtmlTokenType.CDATA_START, start);
this._requireStr('CDATA[');
this._endToken([]);
var textToken = this._consumeRawText(false, $RBRACKET, function() {
return _this._attemptStr(']>');
});
this._beginToken(HtmlTokenType.CDATA_END, textToken.sourceSpan.end);
this._endToken([]);
};
_HtmlTokenizer.prototype._consumeDocType = function(start) {
this._beginToken(HtmlTokenType.DOC_TYPE, start);
this._attemptUntilChar($GT);
this._advance();
this._endToken([this.input.substring(start.offset + 2, this.index - 1)]);
};
_HtmlTokenizer.prototype._consumePrefixAndName = function() {
var nameOrPrefixStart = this.index;
var prefix = null;
while (this.peek !== $COLON && !isPrefixEnd(this.peek)) {
this._advance();
}
var nameStart;
if (this.peek === $COLON) {
this._advance();
prefix = this.input.substring(nameOrPrefixStart, this.index - 1);
nameStart = this.index;
} else {
nameStart = nameOrPrefixStart;
}
this._requireCharCodeUntilFn(isNameEnd, this.index === nameStart ? 1 : 0);
var name = this.input.substring(nameStart, this.index);
return [prefix, name];
};
_HtmlTokenizer.prototype._consumeTagOpen = function(start) {
var savedPos = this._savePosition();
var lowercaseTagName;
try {
if (!isAsciiLetter(this.peek)) {
throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan());
}
var nameStart = this.index;
this._consumeTagOpenStart(start);
lowercaseTagName = this.input.substring(nameStart, this.index).toLowerCase();
this._attemptCharCodeUntilFn(isNotWhitespace);
while (this.peek !== $SLASH && this.peek !== $GT) {
this._consumeAttributeName();
this._attemptCharCodeUntilFn(isNotWhitespace);
if (this._attemptCharCode($EQ)) {
this._attemptCharCodeUntilFn(isNotWhitespace);
this._consumeAttributeValue();
}
this._attemptCharCodeUntilFn(isNotWhitespace);
}
this._consumeTagOpenEnd();
} catch (e) {
if (e instanceof ControlFlowError) {
this._restorePosition(savedPos);
this._beginToken(HtmlTokenType.TEXT, start);
this._endToken(['<']);
return ;
}
throw e;
}
var contentTokenType = html_tags_1.getHtmlTagDefinition(lowercaseTagName).contentType;
if (contentTokenType === html_tags_1.HtmlTagContentType.RAW_TEXT) {
this._consumeRawTextWithTagClose(lowercaseTagName, false);
} else if (contentTokenType === html_tags_1.HtmlTagContentType.ESCAPABLE_RAW_TEXT) {
this._consumeRawTextWithTagClose(lowercaseTagName, true);
}
};
_HtmlTokenizer.prototype._consumeRawTextWithTagClose = function(lowercaseTagName, decodeEntities) {
var _this = this;
var textToken = this._consumeRawText(decodeEntities, $LT, function() {
if (!_this._attemptCharCode($SLASH))
return false;
_this._attemptCharCodeUntilFn(isNotWhitespace);
if (!_this._attemptStrCaseInsensitive(lowercaseTagName))
return false;
_this._attemptCharCodeUntilFn(isNotWhitespace);
if (!_this._attemptCharCode($GT))
return false;
return true;
});
this._beginToken(HtmlTokenType.TAG_CLOSE, textToken.sourceSpan.end);
this._endToken([null, lowercaseTagName]);
};
_HtmlTokenizer.prototype._consumeTagOpenStart = function(start) {
this._beginToken(HtmlTokenType.TAG_OPEN_START, start);
var parts = this._consumePrefixAndName();
this._endToken(parts);
};
_HtmlTokenizer.prototype._consumeAttributeName = function() {
this._beginToken(HtmlTokenType.ATTR_NAME);
var prefixAndName = this._consumePrefixAndName();
this._endToken(prefixAndName);
};
_HtmlTokenizer.prototype._consumeAttributeValue = function() {
this._beginToken(HtmlTokenType.ATTR_VALUE);
var value;
if (this.peek === $SQ || this.peek === $DQ) {
var quoteChar = this.peek;
this._advance();
var parts = [];
while (this.peek !== quoteChar) {
parts.push(this._readChar(true));
}
value = parts.join('');
this._advance();
} else {
var valueStart = this.index;
this._requireCharCodeUntilFn(isNameEnd, 1);
value = this.input.substring(valueStart, this.index);
}
this._endToken([this._processCarriageReturns(value)]);
};
_HtmlTokenizer.prototype._consumeTagOpenEnd = function() {
var tokenType = this._attemptCharCode($SLASH) ? HtmlTokenType.TAG_OPEN_END_VOID : HtmlTokenType.TAG_OPEN_END;
this._beginToken(tokenType);
this._requireCharCode($GT);
this._endToken([]);
};
_HtmlTokenizer.prototype._consumeTagClose = function(start) {
this._beginToken(HtmlTokenType.TAG_CLOSE, start);
this._attemptCharCodeUntilFn(isNotWhitespace);
var prefixAndName;
prefixAndName = this._consumePrefixAndName();
this._attemptCharCodeUntilFn(isNotWhitespace);
this._requireCharCode($GT);
this._endToken(prefixAndName);
};
_HtmlTokenizer.prototype._consumeText = function() {
var start = this._getLocation();
this._beginToken(HtmlTokenType.TEXT, start);
var parts = [this._readChar(true)];
while (!isTextEnd(this.peek)) {
parts.push(this._readChar(true));
}
this._endToken([this._processCarriageReturns(parts.join(''))]);
};
_HtmlTokenizer.prototype._savePosition = function() {
return [this.peek, this.index, this.column, this.line, this.tokens.length];
};
_HtmlTokenizer.prototype._restorePosition = function(position) {
this.peek = position[0];
this.index = position[1];
this.column = position[2];
this.line = position[3];
var nbTokens = position[4];
if (nbTokens < this.tokens.length) {
this.tokens = collection_1.ListWrapper.slice(this.tokens, 0, nbTokens);
}
};
return _HtmlTokenizer;
})();
function isNotWhitespace(code) {
return !isWhitespace(code) || code === $EOF;
}
function isWhitespace(code) {
return (code >= $TAB && code <= $SPACE) || (code === $NBSP);
}
function isNameEnd(code) {
return isWhitespace(code) || code === $GT || code === $SLASH || code === $SQ || code === $DQ || code === $EQ;
}
function isPrefixEnd(code) {
return (code < $a || $z < code) && (code < $A || $Z < code) && (code < $0 || code > $9);
}
function isDigitEntityEnd(code) {
return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code);
}
function isNamedEntityEnd(code) {
return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code);
}
function isTextEnd(code) {
return code === $LT || code === $EOF;
}
function isAsciiLetter(code) {
return code >= $a && code <= $z || code >= $A && code <= $Z;
}
function isAsciiHexDigit(code) {
return code >= $a && code <= $f || code >= $A && code <= $F || code >= $0 && code <= $9;
}
function compareCharCodeCaseInsensitive(code1, code2) {
return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2);
}
function toUpperCaseCharCode(code) {
return code >= $a && code <= $z ? code - $a + $A : code;
}
function mergeTextTokens(srcTokens) {
var dstTokens = [];
var lastDstToken;
for (var i = 0; i < srcTokens.length; i++) {
var token = srcTokens[i];
if (lang_1.isPresent(lastDstToken) && lastDstToken.type == HtmlTokenType.TEXT && token.type == HtmlTokenType.TEXT) {
lastDstToken.parts[0] += token.parts[0];
lastDstToken.sourceSpan.end = token.sourceSpan.end;
} else {
lastDstToken = token;
dstTokens.push(lastDstToken);
}
}
return dstTokens;
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/runtime_metadata", ["angular2/src/core/di", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/compiler/directive_metadata", "angular2/src/core/metadata/directives", "angular2/src/core/linker/directive_resolver", "angular2/src/core/linker/pipe_resolver", "angular2/src/core/linker/view_resolver", "angular2/src/core/linker/directive_lifecycle_reflector", "angular2/src/core/linker/interfaces", "angular2/src/core/reflection/reflection", "angular2/src/core/di", "angular2/src/core/platform_directives_and_pipes", "angular2/src/compiler/util", "angular2/src/compiler/assertions", "angular2/src/compiler/url_resolver"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var di_1 = require("angular2/src/core/di");
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var cpl = require("angular2/src/compiler/directive_metadata");
var md = require("angular2/src/core/metadata/directives");
var directive_resolver_1 = require("angular2/src/core/linker/directive_resolver");
var pipe_resolver_1 = require("angular2/src/core/linker/pipe_resolver");
var view_resolver_1 = require("angular2/src/core/linker/view_resolver");
var directive_lifecycle_reflector_1 = require("angular2/src/core/linker/directive_lifecycle_reflector");
var interfaces_1 = require("angular2/src/core/linker/interfaces");
var reflection_1 = require("angular2/src/core/reflection/reflection");
var di_2 = require("angular2/src/core/di");
var platform_directives_and_pipes_1 = require("angular2/src/core/platform_directives_and_pipes");
var util_1 = require("angular2/src/compiler/util");
var assertions_1 = require("angular2/src/compiler/assertions");
var url_resolver_1 = require("angular2/src/compiler/url_resolver");
var RuntimeMetadataResolver = (function() {
function RuntimeMetadataResolver(_directiveResolver, _pipeResolver, _viewResolver, _platformDirectives, _platformPipes) {
this._directiveResolver = _directiveResolver;
this._pipeResolver = _pipeResolver;
this._viewResolver = _viewResolver;
this._platformDirectives = _platformDirectives;
this._platformPipes = _platformPipes;
this._directiveCache = new Map();
this._pipeCache = new Map();
this._anonymousTypes = new Map();
this._anonymousTypeIndex = 0;
}
RuntimeMetadataResolver.prototype.sanitizeName = function(obj) {
var result = lang_1.stringify(obj);
if (result.indexOf('(') < 0) {
return result;
}
var found = this._anonymousTypes.get(obj);
if (!found) {
this._anonymousTypes.set(obj, this._anonymousTypeIndex++);
found = this._anonymousTypes.get(obj);
}
return "anonymous_type_" + found + "_";
};
RuntimeMetadataResolver.prototype.getDirectiveMetadata = function(directiveType) {
var meta = this._directiveCache.get(directiveType);
if (lang_1.isBlank(meta)) {
var dirMeta = this._directiveResolver.resolve(directiveType);
var moduleUrl = null;
var templateMeta = null;
var changeDetectionStrategy = null;
if (dirMeta instanceof md.ComponentMetadata) {
assertions_1.assertArrayOfStrings('styles', dirMeta.styles);
var cmpMeta = dirMeta;
moduleUrl = calcModuleUrl(directiveType, cmpMeta);
var viewMeta = this._viewResolver.resolve(directiveType);
assertions_1.assertArrayOfStrings('styles', viewMeta.styles);
templateMeta = new cpl.CompileTemplateMetadata({
encapsulation: viewMeta.encapsulation,
template: viewMeta.template,
templateUrl: viewMeta.templateUrl,
styles: viewMeta.styles,
styleUrls: viewMeta.styleUrls
});
changeDetectionStrategy = cmpMeta.changeDetection;
}
meta = cpl.CompileDirectiveMetadata.create({
selector: dirMeta.selector,
exportAs: dirMeta.exportAs,
isComponent: lang_1.isPresent(templateMeta),
dynamicLoadable: true,
type: new cpl.CompileTypeMetadata({
name: this.sanitizeName(directiveType),
moduleUrl: moduleUrl,
runtime: directiveType
}),
template: templateMeta,
changeDetection: changeDetectionStrategy,
inputs: dirMeta.inputs,
outputs: dirMeta.outputs,
host: dirMeta.host,
lifecycleHooks: interfaces_1.LIFECYCLE_HOOKS_VALUES.filter(function(hook) {
return directive_lifecycle_reflector_1.hasLifecycleHook(hook, directiveType);
})
});
this._directiveCache.set(directiveType, meta);
}
return meta;
};
RuntimeMetadataResolver.prototype.getPipeMetadata = function(pipeType) {
var meta = this._pipeCache.get(pipeType);
if (lang_1.isBlank(meta)) {
var pipeMeta = this._pipeResolver.resolve(pipeType);
var moduleUrl = reflection_1.reflector.importUri(pipeType);
meta = new cpl.CompilePipeMetadata({
type: new cpl.CompileTypeMetadata({
name: this.sanitizeName(pipeType),
moduleUrl: moduleUrl,
runtime: pipeType
}),
name: pipeMeta.name,
pure: pipeMeta.pure
});
this._pipeCache.set(pipeType, meta);
}
return meta;
};
RuntimeMetadataResolver.prototype.getViewDirectivesMetadata = function(component) {
var _this = this;
var view = this._viewResolver.resolve(component);
var directives = flattenDirectives(view, this._platformDirectives);
for (var i = 0; i < directives.length; i++) {
if (!isValidType(directives[i])) {
throw new exceptions_1.BaseException("Unexpected directive value '" + lang_1.stringify(directives[i]) + "' on the View of component '" + lang_1.stringify(component) + "'");
}
}
return directives.map(function(type) {
return _this.getDirectiveMetadata(type);
});
};
RuntimeMetadataResolver.prototype.getViewPipesMetadata = function(component) {
var _this = this;
var view = this._viewResolver.resolve(component);
var pipes = flattenPipes(view, this._platformPipes);
for (var i = 0; i < pipes.length; i++) {
if (!isValidType(pipes[i])) {
throw new exceptions_1.BaseException("Unexpected piped value '" + lang_1.stringify(pipes[i]) + "' on the View of component '" + lang_1.stringify(component) + "'");
}
}
return pipes.map(function(type) {
return _this.getPipeMetadata(type);
});
};
RuntimeMetadataResolver = __decorate([di_2.Injectable(), __param(3, di_2.Optional()), __param(3, di_2.Inject(platform_directives_and_pipes_1.PLATFORM_DIRECTIVES)), __param(4, di_2.Optional()), __param(4, di_2.Inject(platform_directives_and_pipes_1.PLATFORM_PIPES)), __metadata('design:paramtypes', [directive_resolver_1.DirectiveResolver, pipe_resolver_1.PipeResolver, view_resolver_1.ViewResolver, Array, Array])], RuntimeMetadataResolver);
return RuntimeMetadataResolver;
})();
exports.RuntimeMetadataResolver = RuntimeMetadataResolver;
function flattenDirectives(view, platformDirectives) {
var directives = [];
if (lang_1.isPresent(platformDirectives)) {
flattenArray(platformDirectives, directives);
}
if (lang_1.isPresent(view.directives)) {
flattenArray(view.directives, directives);
}
return directives;
}
function flattenPipes(view, platformPipes) {
var pipes = [];
if (lang_1.isPresent(platformPipes)) {
flattenArray(platformPipes, pipes);
}
if (lang_1.isPresent(view.pipes)) {
flattenArray(view.pipes, pipes);
}
return pipes;
}
function flattenArray(tree, out) {
for (var i = 0; i < tree.length; i++) {
var item = di_1.resolveForwardRef(tree[i]);
if (lang_1.isArray(item)) {
flattenArray(item, out);
} else {
out.push(item);
}
}
}
function isValidType(value) {
return lang_1.isPresent(value) && (value instanceof lang_1.Type);
}
function calcModuleUrl(type, cmpMetadata) {
var moduleId = cmpMetadata.moduleId;
if (lang_1.isPresent(moduleId)) {
var scheme = url_resolver_1.getUrlScheme(moduleId);
return lang_1.isPresent(scheme) && scheme.length > 0 ? moduleId : "package:" + moduleId + util_1.MODULE_SUFFIX;
} else {
return reflection_1.reflector.importUri(type);
}
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/pipes", ["angular2/src/common/pipes/async_pipe", "angular2/src/common/pipes/date_pipe", "angular2/src/common/pipes/json_pipe", "angular2/src/common/pipes/slice_pipe", "angular2/src/common/pipes/lowercase_pipe", "angular2/src/common/pipes/number_pipe", "angular2/src/common/pipes/uppercase_pipe", "angular2/src/common/pipes/replace_pipe", "angular2/src/common/pipes/i18n_plural_pipe", "angular2/src/common/pipes/i18n_select_pipe", "angular2/src/common/pipes/common_pipes"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var async_pipe_1 = require("angular2/src/common/pipes/async_pipe");
exports.AsyncPipe = async_pipe_1.AsyncPipe;
var date_pipe_1 = require("angular2/src/common/pipes/date_pipe");
exports.DatePipe = date_pipe_1.DatePipe;
var json_pipe_1 = require("angular2/src/common/pipes/json_pipe");
exports.JsonPipe = json_pipe_1.JsonPipe;
var slice_pipe_1 = require("angular2/src/common/pipes/slice_pipe");
exports.SlicePipe = slice_pipe_1.SlicePipe;
var lowercase_pipe_1 = require("angular2/src/common/pipes/lowercase_pipe");
exports.LowerCasePipe = lowercase_pipe_1.LowerCasePipe;
var number_pipe_1 = require("angular2/src/common/pipes/number_pipe");
exports.NumberPipe = number_pipe_1.NumberPipe;
exports.DecimalPipe = number_pipe_1.DecimalPipe;
exports.PercentPipe = number_pipe_1.PercentPipe;
exports.CurrencyPipe = number_pipe_1.CurrencyPipe;
var uppercase_pipe_1 = require("angular2/src/common/pipes/uppercase_pipe");
exports.UpperCasePipe = uppercase_pipe_1.UpperCasePipe;
var replace_pipe_1 = require("angular2/src/common/pipes/replace_pipe");
exports.ReplacePipe = replace_pipe_1.ReplacePipe;
var i18n_plural_pipe_1 = require("angular2/src/common/pipes/i18n_plural_pipe");
exports.I18nPluralPipe = i18n_plural_pipe_1.I18nPluralPipe;
var i18n_select_pipe_1 = require("angular2/src/common/pipes/i18n_select_pipe");
exports.I18nSelectPipe = i18n_select_pipe_1.I18nSelectPipe;
var common_pipes_1 = require("angular2/src/common/pipes/common_pipes");
exports.COMMON_PIPES = common_pipes_1.COMMON_PIPES;
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms/directives/ng_control_name", ["angular2/src/facade/lang", "angular2/src/facade/async", "angular2/core", "angular2/src/common/forms/directives/control_container", "angular2/src/common/forms/directives/ng_control", "angular2/src/common/forms/directives/control_value_accessor", "angular2/src/common/forms/directives/shared", "angular2/src/common/forms/validators"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var lang_1 = require("angular2/src/facade/lang");
var async_1 = require("angular2/src/facade/async");
var core_1 = require("angular2/core");
var control_container_1 = require("angular2/src/common/forms/directives/control_container");
var ng_control_1 = require("angular2/src/common/forms/directives/ng_control");
var control_value_accessor_1 = require("angular2/src/common/forms/directives/control_value_accessor");
var shared_1 = require("angular2/src/common/forms/directives/shared");
var validators_1 = require("angular2/src/common/forms/validators");
var controlNameBinding = lang_1.CONST_EXPR(new core_1.Provider(ng_control_1.NgControl, {useExisting: core_1.forwardRef(function() {
return NgControlName;
})}));
var NgControlName = (function(_super) {
__extends(NgControlName, _super);
function NgControlName(_parent, _validators, _asyncValidators, valueAccessors) {
_super.call(this);
this._parent = _parent;
this._validators = _validators;
this._asyncValidators = _asyncValidators;
this.update = new async_1.EventEmitter();
this._added = false;
this.valueAccessor = shared_1.selectValueAccessor(this, valueAccessors);
}
NgControlName.prototype.ngOnChanges = function(changes) {
if (!this._added) {
this.formDirective.addControl(this);
this._added = true;
}
if (shared_1.isPropertyUpdated(changes, this.viewModel)) {
this.viewModel = this.model;
this.formDirective.updateModel(this, this.model);
}
};
NgControlName.prototype.ngOnDestroy = function() {
this.formDirective.removeControl(this);
};
NgControlName.prototype.viewToModelUpdate = function(newValue) {
this.viewModel = newValue;
async_1.ObservableWrapper.callEmit(this.update, newValue);
};
Object.defineProperty(NgControlName.prototype, "path", {
get: function() {
return shared_1.controlPath(this.name, this._parent);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlName.prototype, "formDirective", {
get: function() {
return this._parent.formDirective;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlName.prototype, "validator", {
get: function() {
return shared_1.composeValidators(this._validators);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlName.prototype, "asyncValidator", {
get: function() {
return shared_1.composeAsyncValidators(this._asyncValidators);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NgControlName.prototype, "control", {
get: function() {
return this.formDirective.getControl(this);
},
enumerable: true,
configurable: true
});
NgControlName = __decorate([core_1.Directive({
selector: '[ngControl]',
bindings: [controlNameBinding],
inputs: ['name: ngControl', 'model: ngModel'],
outputs: ['update: ngModelChange'],
exportAs: 'ngForm'
}), __param(0, core_1.Host()), __param(0, core_1.SkipSelf()), __param(1, core_1.Optional()), __param(1, core_1.Self()), __param(1, core_1.Inject(validators_1.NG_VALIDATORS)), __param(2, core_1.Optional()), __param(2, core_1.Self()), __param(2, core_1.Inject(validators_1.NG_ASYNC_VALIDATORS)), __param(3, core_1.Optional()), __param(3, core_1.Self()), __param(3, core_1.Inject(control_value_accessor_1.NG_VALUE_ACCESSOR)), __metadata('design:paramtypes', [control_container_1.ControlContainer, Array, Array, Array])], NgControlName);
return NgControlName;
})(ng_control_1.NgControl);
exports.NgControlName = NgControlName;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/browser/generic_browser_adapter", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/platform/dom/dom_adapter", "angular2/src/platform/browser/xhr_impl"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var xhr_impl_1 = require("angular2/src/platform/browser/xhr_impl");
var GenericBrowserDomAdapter = (function(_super) {
__extends(GenericBrowserDomAdapter, _super);
function GenericBrowserDomAdapter() {
var _this = this;
_super.call(this);
this._animationPrefix = null;
this._transitionEnd = null;
try {
var element = this.createElement('div', this.defaultDoc());
if (lang_1.isPresent(this.getStyle(element, 'animationName'))) {
this._animationPrefix = '';
} else {
var domPrefixes = ['Webkit', 'Moz', 'O', 'ms'];
for (var i = 0; i < domPrefixes.length; i++) {
if (lang_1.isPresent(this.getStyle(element, domPrefixes[i] + 'AnimationName'))) {
this._animationPrefix = '-' + domPrefixes[i].toLowerCase() + '-';
break;
}
}
}
var transEndEventNames = {
WebkitTransition: 'webkitTransitionEnd',
MozTransition: 'transitionend',
OTransition: 'oTransitionEnd otransitionend',
transition: 'transitionend'
};
collection_1.StringMapWrapper.forEach(transEndEventNames, function(value, key) {
if (lang_1.isPresent(_this.getStyle(element, key))) {
_this._transitionEnd = value;
}
});
} catch (e) {
this._animationPrefix = null;
this._transitionEnd = null;
}
}
GenericBrowserDomAdapter.prototype.getXHR = function() {
return xhr_impl_1.XHRImpl;
};
GenericBrowserDomAdapter.prototype.getDistributedNodes = function(el) {
return el.getDistributedNodes();
};
GenericBrowserDomAdapter.prototype.resolveAndSetHref = function(el, baseUrl, href) {
el.href = href == null ? baseUrl : baseUrl + '/../' + href;
};
GenericBrowserDomAdapter.prototype.supportsDOMEvents = function() {
return true;
};
GenericBrowserDomAdapter.prototype.supportsNativeShadowDOM = function() {
return lang_1.isFunction(this.defaultDoc().body.createShadowRoot);
};
GenericBrowserDomAdapter.prototype.getAnimationPrefix = function() {
return lang_1.isPresent(this._animationPrefix) ? this._animationPrefix : "";
};
GenericBrowserDomAdapter.prototype.getTransitionEnd = function() {
return lang_1.isPresent(this._transitionEnd) ? this._transitionEnd : "";
};
GenericBrowserDomAdapter.prototype.supportsAnimation = function() {
return lang_1.isPresent(this._animationPrefix) && lang_1.isPresent(this._transitionEnd);
};
return GenericBrowserDomAdapter;
})(dom_adapter_1.DomAdapter);
exports.GenericBrowserDomAdapter = GenericBrowserDomAdapter;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/browser/tools/tools", ["angular2/src/facade/lang", "angular2/src/platform/browser/tools/common_tools"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var common_tools_1 = require("angular2/src/platform/browser/tools/common_tools");
var context = lang_1.global;
function enableDebugTools(ref) {
context.ng = new common_tools_1.AngularTools(ref);
}
exports.enableDebugTools = enableDebugTools;
function disableDebugTools() {
delete context.ng;
}
exports.disableDebugTools = disableDebugTools;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/html_parser", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/compiler/html_ast", "angular2/src/core/di", "angular2/src/compiler/html_lexer", "angular2/src/compiler/parse_util", "angular2/src/compiler/html_tags"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var collection_1 = require("angular2/src/facade/collection");
var html_ast_1 = require("angular2/src/compiler/html_ast");
var di_1 = require("angular2/src/core/di");
var html_lexer_1 = require("angular2/src/compiler/html_lexer");
var parse_util_1 = require("angular2/src/compiler/parse_util");
var html_tags_1 = require("angular2/src/compiler/html_tags");
var HtmlTreeError = (function(_super) {
__extends(HtmlTreeError, _super);
function HtmlTreeError(elementName, span, msg) {
_super.call(this, span, msg);
this.elementName = elementName;
}
HtmlTreeError.create = function(elementName, span, msg) {
return new HtmlTreeError(elementName, span, msg);
};
return HtmlTreeError;
})(parse_util_1.ParseError);
exports.HtmlTreeError = HtmlTreeError;
var HtmlParseTreeResult = (function() {
function HtmlParseTreeResult(rootNodes, errors) {
this.rootNodes = rootNodes;
this.errors = errors;
}
return HtmlParseTreeResult;
})();
exports.HtmlParseTreeResult = HtmlParseTreeResult;
var HtmlParser = (function() {
function HtmlParser() {}
HtmlParser.prototype.parse = function(sourceContent, sourceUrl) {
var tokensAndErrors = html_lexer_1.tokenizeHtml(sourceContent, sourceUrl);
var treeAndErrors = new TreeBuilder(tokensAndErrors.tokens).build();
return new HtmlParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors.concat(treeAndErrors.errors));
};
HtmlParser = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [])], HtmlParser);
return HtmlParser;
})();
exports.HtmlParser = HtmlParser;
var TreeBuilder = (function() {
function TreeBuilder(tokens) {
this.tokens = tokens;
this.index = -1;
this.rootNodes = [];
this.errors = [];
this.elementStack = [];
this._advance();
}
TreeBuilder.prototype.build = function() {
while (this.peek.type !== html_lexer_1.HtmlTokenType.EOF) {
if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_START) {
this._consumeStartTag(this._advance());
} else if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_CLOSE) {
this._consumeEndTag(this._advance());
} else if (this.peek.type === html_lexer_1.HtmlTokenType.CDATA_START) {
this._closeVoidElement();
this._consumeCdata(this._advance());
} else if (this.peek.type === html_lexer_1.HtmlTokenType.COMMENT_START) {
this._closeVoidElement();
this._consumeComment(this._advance());
} else if (this.peek.type === html_lexer_1.HtmlTokenType.TEXT || this.peek.type === html_lexer_1.HtmlTokenType.RAW_TEXT || this.peek.type === html_lexer_1.HtmlTokenType.ESCAPABLE_RAW_TEXT) {
this._closeVoidElement();
this._consumeText(this._advance());
} else {
this._advance();
}
}
return new HtmlParseTreeResult(this.rootNodes, this.errors);
};
TreeBuilder.prototype._advance = function() {
var prev = this.peek;
if (this.index < this.tokens.length - 1) {
this.index++;
}
this.peek = this.tokens[this.index];
return prev;
};
TreeBuilder.prototype._advanceIf = function(type) {
if (this.peek.type === type) {
return this._advance();
}
return null;
};
TreeBuilder.prototype._consumeCdata = function(startToken) {
this._consumeText(this._advance());
this._advanceIf(html_lexer_1.HtmlTokenType.CDATA_END);
};
TreeBuilder.prototype._consumeComment = function(token) {
var text = this._advanceIf(html_lexer_1.HtmlTokenType.RAW_TEXT);
this._advanceIf(html_lexer_1.HtmlTokenType.COMMENT_END);
var value = lang_1.isPresent(text) ? text.parts[0].trim() : null;
this._addToParent(new html_ast_1.HtmlCommentAst(value, token.sourceSpan));
};
TreeBuilder.prototype._consumeText = function(token) {
var text = token.parts[0];
if (text.length > 0 && text[0] == '\n') {
var parent_1 = this._getParentElement();
if (lang_1.isPresent(parent_1) && parent_1.children.length == 0 && html_tags_1.getHtmlTagDefinition(parent_1.name).ignoreFirstLf) {
text = text.substring(1);
}
}
if (text.length > 0) {
this._addToParent(new html_ast_1.HtmlTextAst(text, token.sourceSpan));
}
};
TreeBuilder.prototype._closeVoidElement = function() {
if (this.elementStack.length > 0) {
var el = collection_1.ListWrapper.last(this.elementStack);
if (html_tags_1.getHtmlTagDefinition(el.name).isVoid) {
this.elementStack.pop();
}
}
};
TreeBuilder.prototype._consumeStartTag = function(startTagToken) {
var prefix = startTagToken.parts[0];
var name = startTagToken.parts[1];
var attrs = [];
while (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_NAME) {
attrs.push(this._consumeAttr(this._advance()));
}
var fullName = getElementFullName(prefix, name, this._getParentElement());
var selfClosing = false;
if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_END_VOID) {
this._advance();
selfClosing = true;
if (html_tags_1.getNsPrefix(fullName) == null && !html_tags_1.getHtmlTagDefinition(fullName).isVoid) {
this.errors.push(HtmlTreeError.create(fullName, startTagToken.sourceSpan, "Only void and foreign elements can be self closed \"" + startTagToken.parts[1] + "\""));
}
} else if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_END) {
this._advance();
selfClosing = false;
}
var end = this.peek.sourceSpan.start;
var span = new parse_util_1.ParseSourceSpan(startTagToken.sourceSpan.start, end);
var el = new html_ast_1.HtmlElementAst(fullName, attrs, [], span, span, null);
this._pushElement(el);
if (selfClosing) {
this._popElement(fullName);
el.endSourceSpan = span;
}
};
TreeBuilder.prototype._pushElement = function(el) {
if (this.elementStack.length > 0) {
var parentEl = collection_1.ListWrapper.last(this.elementStack);
if (html_tags_1.getHtmlTagDefinition(parentEl.name).isClosedByChild(el.name)) {
this.elementStack.pop();
}
}
var tagDef = html_tags_1.getHtmlTagDefinition(el.name);
var parentEl = this._getParentElement();
if (tagDef.requireExtraParent(lang_1.isPresent(parentEl) ? parentEl.name : null)) {
var newParent = new html_ast_1.HtmlElementAst(tagDef.parentToAdd, [], [el], el.sourceSpan, el.startSourceSpan, el.endSourceSpan);
this._addToParent(newParent);
this.elementStack.push(newParent);
this.elementStack.push(el);
} else {
this._addToParent(el);
this.elementStack.push(el);
}
};
TreeBuilder.prototype._consumeEndTag = function(endTagToken) {
var fullName = getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement());
this._getParentElement().endSourceSpan = endTagToken.sourceSpan;
if (html_tags_1.getHtmlTagDefinition(fullName).isVoid) {
this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan, "Void elements do not have end tags \"" + endTagToken.parts[1] + "\""));
} else if (!this._popElement(fullName)) {
this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan, "Unexpected closing tag \"" + endTagToken.parts[1] + "\""));
}
};
TreeBuilder.prototype._popElement = function(fullName) {
for (var stackIndex = this.elementStack.length - 1; stackIndex >= 0; stackIndex--) {
var el = this.elementStack[stackIndex];
if (el.name == fullName) {
collection_1.ListWrapper.splice(this.elementStack, stackIndex, this.elementStack.length - stackIndex);
return true;
}
if (!html_tags_1.getHtmlTagDefinition(el.name).closedByParent) {
return false;
}
}
return false;
};
TreeBuilder.prototype._consumeAttr = function(attrName) {
var fullName = html_tags_1.mergeNsAndName(attrName.parts[0], attrName.parts[1]);
var end = attrName.sourceSpan.end;
var value = '';
if (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_VALUE) {
var valueToken = this._advance();
value = valueToken.parts[0];
end = valueToken.sourceSpan.end;
}
return new html_ast_1.HtmlAttrAst(fullName, value, new parse_util_1.ParseSourceSpan(attrName.sourceSpan.start, end));
};
TreeBuilder.prototype._getParentElement = function() {
return this.elementStack.length > 0 ? collection_1.ListWrapper.last(this.elementStack) : null;
};
TreeBuilder.prototype._addToParent = function(node) {
var parent = this._getParentElement();
if (lang_1.isPresent(parent)) {
parent.children.push(node);
} else {
this.rootNodes.push(node);
}
};
return TreeBuilder;
})();
function getElementFullName(prefix, localName, parentElement) {
if (lang_1.isBlank(prefix)) {
prefix = html_tags_1.getHtmlTagDefinition(localName).implicitNamespacePrefix;
if (lang_1.isBlank(prefix) && lang_1.isPresent(parentElement)) {
prefix = html_tags_1.getNsPrefix(parentElement.name);
}
}
return html_tags_1.mergeNsAndName(prefix, localName);
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/common/forms", ["angular2/src/common/forms/model", "angular2/src/common/forms/directives/abstract_control_directive", "angular2/src/common/forms/directives/control_container", "angular2/src/common/forms/directives/ng_control_name", "angular2/src/common/forms/directives/ng_form_control", "angular2/src/common/forms/directives/ng_model", "angular2/src/common/forms/directives/ng_control", "angular2/src/common/forms/directives/ng_control_group", "angular2/src/common/forms/directives/ng_form_model", "angular2/src/common/forms/directives/ng_form", "angular2/src/common/forms/directives/control_value_accessor", "angular2/src/common/forms/directives/default_value_accessor", "angular2/src/common/forms/directives/ng_control_status", "angular2/src/common/forms/directives/checkbox_value_accessor", "angular2/src/common/forms/directives/select_control_value_accessor", "angular2/src/common/forms/directives", "angular2/src/common/forms/validators", "angular2/src/common/forms/directives/validators", "angular2/src/common/forms/form_builder", "angular2/src/common/forms/form_builder", "angular2/src/common/forms/directives/radio_control_value_accessor", "angular2/src/facade/lang"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var model_1 = require("angular2/src/common/forms/model");
exports.AbstractControl = model_1.AbstractControl;
exports.Control = model_1.Control;
exports.ControlGroup = model_1.ControlGroup;
exports.ControlArray = model_1.ControlArray;
var abstract_control_directive_1 = require("angular2/src/common/forms/directives/abstract_control_directive");
exports.AbstractControlDirective = abstract_control_directive_1.AbstractControlDirective;
var control_container_1 = require("angular2/src/common/forms/directives/control_container");
exports.ControlContainer = control_container_1.ControlContainer;
var ng_control_name_1 = require("angular2/src/common/forms/directives/ng_control_name");
exports.NgControlName = ng_control_name_1.NgControlName;
var ng_form_control_1 = require("angular2/src/common/forms/directives/ng_form_control");
exports.NgFormControl = ng_form_control_1.NgFormControl;
var ng_model_1 = require("angular2/src/common/forms/directives/ng_model");
exports.NgModel = ng_model_1.NgModel;
var ng_control_1 = require("angular2/src/common/forms/directives/ng_control");
exports.NgControl = ng_control_1.NgControl;
var ng_control_group_1 = require("angular2/src/common/forms/directives/ng_control_group");
exports.NgControlGroup = ng_control_group_1.NgControlGroup;
var ng_form_model_1 = require("angular2/src/common/forms/directives/ng_form_model");
exports.NgFormModel = ng_form_model_1.NgFormModel;
var ng_form_1 = require("angular2/src/common/forms/directives/ng_form");
exports.NgForm = ng_form_1.NgForm;
var control_value_accessor_1 = require("angular2/src/common/forms/directives/control_value_accessor");
exports.NG_VALUE_ACCESSOR = control_value_accessor_1.NG_VALUE_ACCESSOR;
var default_value_accessor_1 = require("angular2/src/common/forms/directives/default_value_accessor");
exports.DefaultValueAccessor = default_value_accessor_1.DefaultValueAccessor;
var ng_control_status_1 = require("angular2/src/common/forms/directives/ng_control_status");
exports.NgControlStatus = ng_control_status_1.NgControlStatus;
var checkbox_value_accessor_1 = require("angular2/src/common/forms/directives/checkbox_value_accessor");
exports.CheckboxControlValueAccessor = checkbox_value_accessor_1.CheckboxControlValueAccessor;
var select_control_value_accessor_1 = require("angular2/src/common/forms/directives/select_control_value_accessor");
exports.NgSelectOption = select_control_value_accessor_1.NgSelectOption;
exports.SelectControlValueAccessor = select_control_value_accessor_1.SelectControlValueAccessor;
var directives_1 = require("angular2/src/common/forms/directives");
exports.FORM_DIRECTIVES = directives_1.FORM_DIRECTIVES;
exports.RadioButtonState = directives_1.RadioButtonState;
var validators_1 = require("angular2/src/common/forms/validators");
exports.NG_VALIDATORS = validators_1.NG_VALIDATORS;
exports.NG_ASYNC_VALIDATORS = validators_1.NG_ASYNC_VALIDATORS;
exports.Validators = validators_1.Validators;
var validators_2 = require("angular2/src/common/forms/directives/validators");
exports.RequiredValidator = validators_2.RequiredValidator;
exports.MinLengthValidator = validators_2.MinLengthValidator;
exports.MaxLengthValidator = validators_2.MaxLengthValidator;
exports.PatternValidator = validators_2.PatternValidator;
var form_builder_1 = require("angular2/src/common/forms/form_builder");
exports.FormBuilder = form_builder_1.FormBuilder;
var form_builder_2 = require("angular2/src/common/forms/form_builder");
var radio_control_value_accessor_1 = require("angular2/src/common/forms/directives/radio_control_value_accessor");
var lang_1 = require("angular2/src/facade/lang");
exports.FORM_PROVIDERS = lang_1.CONST_EXPR([form_builder_2.FormBuilder, radio_control_value_accessor_1.RadioControlRegistry]);
exports.FORM_BINDINGS = exports.FORM_PROVIDERS;
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/browser/browser_adapter", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/src/platform/dom/dom_adapter", "angular2/src/platform/browser/generic_browser_adapter"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var generic_browser_adapter_1 = require("angular2/src/platform/browser/generic_browser_adapter");
var _attrToPropMap = {
'class': 'className',
'innerHtml': 'innerHTML',
'readonly': 'readOnly',
'tabindex': 'tabIndex'
};
var DOM_KEY_LOCATION_NUMPAD = 3;
var _keyMap = {
'\b': 'Backspace',
'\t': 'Tab',
'\x7F': 'Delete',
'\x1B': 'Escape',
'Del': 'Delete',
'Esc': 'Escape',
'Left': 'ArrowLeft',
'Right': 'ArrowRight',
'Up': 'ArrowUp',
'Down': 'ArrowDown',
'Menu': 'ContextMenu',
'Scroll': 'ScrollLock',
'Win': 'OS'
};
var _chromeNumKeyPadMap = {
'A': '1',
'B': '2',
'C': '3',
'D': '4',
'E': '5',
'F': '6',
'G': '7',
'H': '8',
'I': '9',
'J': '*',
'K': '+',
'M': '-',
'N': '.',
'O': '/',
'\x60': '0',
'\x90': 'NumLock'
};
var BrowserDomAdapter = (function(_super) {
__extends(BrowserDomAdapter, _super);
function BrowserDomAdapter() {
_super.apply(this, arguments);
}
BrowserDomAdapter.prototype.parse = function(templateHtml) {
throw new Error("parse not implemented");
};
BrowserDomAdapter.makeCurrent = function() {
dom_adapter_1.setRootDomAdapter(new BrowserDomAdapter());
};
BrowserDomAdapter.prototype.hasProperty = function(element, name) {
return name in element;
};
BrowserDomAdapter.prototype.setProperty = function(el, name, value) {
el[name] = value;
};
BrowserDomAdapter.prototype.getProperty = function(el, name) {
return el[name];
};
BrowserDomAdapter.prototype.invoke = function(el, methodName, args) {
el[methodName].apply(el, args);
};
BrowserDomAdapter.prototype.logError = function(error) {
if (window.console.error) {
window.console.error(error);
} else {
window.console.log(error);
}
};
BrowserDomAdapter.prototype.log = function(error) {
window.console.log(error);
};
BrowserDomAdapter.prototype.logGroup = function(error) {
if (window.console.group) {
window.console.group(error);
this.logError(error);
} else {
window.console.log(error);
}
};
BrowserDomAdapter.prototype.logGroupEnd = function() {
if (window.console.groupEnd) {
window.console.groupEnd();
}
};
Object.defineProperty(BrowserDomAdapter.prototype, "attrToPropMap", {
get: function() {
return _attrToPropMap;
},
enumerable: true,
configurable: true
});
BrowserDomAdapter.prototype.query = function(selector) {
return document.querySelector(selector);
};
BrowserDomAdapter.prototype.querySelector = function(el, selector) {
return el.querySelector(selector);
};
BrowserDomAdapter.prototype.querySelectorAll = function(el, selector) {
return el.querySelectorAll(selector);
};
BrowserDomAdapter.prototype.on = function(el, evt, listener) {
el.addEventListener(evt, listener, false);
};
BrowserDomAdapter.prototype.onAndCancel = function(el, evt, listener) {
el.addEventListener(evt, listener, false);
return function() {
el.removeEventListener(evt, listener, false);
};
};
BrowserDomAdapter.prototype.dispatchEvent = function(el, evt) {
el.dispatchEvent(evt);
};
BrowserDomAdapter.prototype.createMouseEvent = function(eventType) {
var evt = document.createEvent('MouseEvent');
evt.initEvent(eventType, true, true);
return evt;
};
BrowserDomAdapter.prototype.createEvent = function(eventType) {
var evt = document.createEvent('Event');
evt.initEvent(eventType, true, true);
return evt;
};
BrowserDomAdapter.prototype.preventDefault = function(evt) {
evt.preventDefault();
evt.returnValue = false;
};
BrowserDomAdapter.prototype.isPrevented = function(evt) {
return evt.defaultPrevented || lang_1.isPresent(evt.returnValue) && !evt.returnValue;
};
BrowserDomAdapter.prototype.getInnerHTML = function(el) {
return el.innerHTML;
};
BrowserDomAdapter.prototype.getOuterHTML = function(el) {
return el.outerHTML;
};
BrowserDomAdapter.prototype.nodeName = function(node) {
return node.nodeName;
};
BrowserDomAdapter.prototype.nodeValue = function(node) {
return node.nodeValue;
};
BrowserDomAdapter.prototype.type = function(node) {
return node.type;
};
BrowserDomAdapter.prototype.content = function(node) {
if (this.hasProperty(node, "content")) {
return node.content;
} else {
return node;
}
};
BrowserDomAdapter.prototype.firstChild = function(el) {
return el.firstChild;
};
BrowserDomAdapter.prototype.nextSibling = function(el) {
return el.nextSibling;
};
BrowserDomAdapter.prototype.parentElement = function(el) {
return el.parentNode;
};
BrowserDomAdapter.prototype.childNodes = function(el) {
return el.childNodes;
};
BrowserDomAdapter.prototype.childNodesAsList = function(el) {
var childNodes = el.childNodes;
var res = collection_1.ListWrapper.createFixedSize(childNodes.length);
for (var i = 0; i < childNodes.length; i++) {
res[i] = childNodes[i];
}
return res;
};
BrowserDomAdapter.prototype.clearNodes = function(el) {
while (el.firstChild) {
el.removeChild(el.firstChild);
}
};
BrowserDomAdapter.prototype.appendChild = function(el, node) {
el.appendChild(node);
};
BrowserDomAdapter.prototype.removeChild = function(el, node) {
el.removeChild(node);
};
BrowserDomAdapter.prototype.replaceChild = function(el, newChild, oldChild) {
el.replaceChild(newChild, oldChild);
};
BrowserDomAdapter.prototype.remove = function(node) {
if (node.parentNode) {
node.parentNode.removeChild(node);
}
return node;
};
BrowserDomAdapter.prototype.insertBefore = function(el, node) {
el.parentNode.insertBefore(node, el);
};
BrowserDomAdapter.prototype.insertAllBefore = function(el, nodes) {
nodes.forEach(function(n) {
return el.parentNode.insertBefore(n, el);
});
};
BrowserDomAdapter.prototype.insertAfter = function(el, node) {
el.parentNode.insertBefore(node, el.nextSibling);
};
BrowserDomAdapter.prototype.setInnerHTML = function(el, value) {
el.innerHTML = value;
};
BrowserDomAdapter.prototype.getText = function(el) {
return el.textContent;
};
BrowserDomAdapter.prototype.setText = function(el, value) {
el.textContent = value;
};
BrowserDomAdapter.prototype.getValue = function(el) {
return el.value;
};
BrowserDomAdapter.prototype.setValue = function(el, value) {
el.value = value;
};
BrowserDomAdapter.prototype.getChecked = function(el) {
return el.checked;
};
BrowserDomAdapter.prototype.setChecked = function(el, value) {
el.checked = value;
};
BrowserDomAdapter.prototype.createComment = function(text) {
return document.createComment(text);
};
BrowserDomAdapter.prototype.createTemplate = function(html) {
var t = document.createElement('template');
t.innerHTML = html;
return t;
};
BrowserDomAdapter.prototype.createElement = function(tagName, doc) {
if (doc === void 0) {
doc = document;
}
return doc.createElement(tagName);
};
BrowserDomAdapter.prototype.createElementNS = function(ns, tagName, doc) {
if (doc === void 0) {
doc = document;
}
return doc.createElementNS(ns, tagName);
};
BrowserDomAdapter.prototype.createTextNode = function(text, doc) {
if (doc === void 0) {
doc = document;
}
return doc.createTextNode(text);
};
BrowserDomAdapter.prototype.createScriptTag = function(attrName, attrValue, doc) {
if (doc === void 0) {
doc = document;
}
var el = doc.createElement('SCRIPT');
el.setAttribute(attrName, attrValue);
return el;
};
BrowserDomAdapter.prototype.createStyleElement = function(css, doc) {
if (doc === void 0) {
doc = document;
}
var style = doc.createElement('style');
this.appendChild(style, this.createTextNode(css));
return style;
};
BrowserDomAdapter.prototype.createShadowRoot = function(el) {
return el.createShadowRoot();
};
BrowserDomAdapter.prototype.getShadowRoot = function(el) {
return el.shadowRoot;
};
BrowserDomAdapter.prototype.getHost = function(el) {
return el.host;
};
BrowserDomAdapter.prototype.clone = function(node) {
return node.cloneNode(true);
};
BrowserDomAdapter.prototype.getElementsByClassName = function(element, name) {
return element.getElementsByClassName(name);
};
BrowserDomAdapter.prototype.getElementsByTagName = function(element, name) {
return element.getElementsByTagName(name);
};
BrowserDomAdapter.prototype.classList = function(element) {
return Array.prototype.slice.call(element.classList, 0);
};
BrowserDomAdapter.prototype.addClass = function(element, className) {
element.classList.add(className);
};
BrowserDomAdapter.prototype.removeClass = function(element, className) {
element.classList.remove(className);
};
BrowserDomAdapter.prototype.hasClass = function(element, className) {
return element.classList.contains(className);
};
BrowserDomAdapter.prototype.setStyle = function(element, styleName, styleValue) {
element.style[styleName] = styleValue;
};
BrowserDomAdapter.prototype.removeStyle = function(element, stylename) {
element.style[stylename] = null;
};
BrowserDomAdapter.prototype.getStyle = function(element, stylename) {
return element.style[stylename];
};
BrowserDomAdapter.prototype.hasStyle = function(element, styleName, styleValue) {
if (styleValue === void 0) {
styleValue = null;
}
var value = this.getStyle(element, styleName) || '';
return styleValue ? value == styleValue : value.length > 0;
};
BrowserDomAdapter.prototype.tagName = function(element) {
return element.tagName;
};
BrowserDomAdapter.prototype.attributeMap = function(element) {
var res = new Map();
var elAttrs = element.attributes;
for (var i = 0; i < elAttrs.length; i++) {
var attrib = elAttrs[i];
res.set(attrib.name, attrib.value);
}
return res;
};
BrowserDomAdapter.prototype.hasAttribute = function(element, attribute) {
return element.hasAttribute(attribute);
};
BrowserDomAdapter.prototype.hasAttributeNS = function(element, ns, attribute) {
return element.hasAttributeNS(ns, attribute);
};
BrowserDomAdapter.prototype.getAttribute = function(element, attribute) {
return element.getAttribute(attribute);
};
BrowserDomAdapter.prototype.getAttributeNS = function(element, ns, name) {
return element.getAttributeNS(ns, name);
};
BrowserDomAdapter.prototype.setAttribute = function(element, name, value) {
element.setAttribute(name, value);
};
BrowserDomAdapter.prototype.setAttributeNS = function(element, ns, name, value) {
element.setAttributeNS(ns, name, value);
};
BrowserDomAdapter.prototype.removeAttribute = function(element, attribute) {
element.removeAttribute(attribute);
};
BrowserDomAdapter.prototype.removeAttributeNS = function(element, ns, name) {
element.removeAttributeNS(ns, name);
};
BrowserDomAdapter.prototype.templateAwareRoot = function(el) {
return this.isTemplateElement(el) ? this.content(el) : el;
};
BrowserDomAdapter.prototype.createHtmlDocument = function() {
return document.implementation.createHTMLDocument('fakeTitle');
};
BrowserDomAdapter.prototype.defaultDoc = function() {
return document;
};
BrowserDomAdapter.prototype.getBoundingClientRect = function(el) {
try {
return el.getBoundingClientRect();
} catch (e) {
return {
top: 0,
bottom: 0,
left: 0,
right: 0,
width: 0,
height: 0
};
}
};
BrowserDomAdapter.prototype.getTitle = function() {
return document.title;
};
BrowserDomAdapter.prototype.setTitle = function(newTitle) {
document.title = newTitle || '';
};
BrowserDomAdapter.prototype.elementMatches = function(n, selector) {
var matches = false;
if (n instanceof HTMLElement) {
if (n.matches) {
matches = n.matches(selector);
} else if (n.msMatchesSelector) {
matches = n.msMatchesSelector(selector);
} else if (n.webkitMatchesSelector) {
matches = n.webkitMatchesSelector(selector);
}
}
return matches;
};
BrowserDomAdapter.prototype.isTemplateElement = function(el) {
return el instanceof HTMLElement && el.nodeName == "TEMPLATE";
};
BrowserDomAdapter.prototype.isTextNode = function(node) {
return node.nodeType === Node.TEXT_NODE;
};
BrowserDomAdapter.prototype.isCommentNode = function(node) {
return node.nodeType === Node.COMMENT_NODE;
};
BrowserDomAdapter.prototype.isElementNode = function(node) {
return node.nodeType === Node.ELEMENT_NODE;
};
BrowserDomAdapter.prototype.hasShadowRoot = function(node) {
return node instanceof HTMLElement && lang_1.isPresent(node.shadowRoot);
};
BrowserDomAdapter.prototype.isShadowRoot = function(node) {
return node instanceof DocumentFragment;
};
BrowserDomAdapter.prototype.importIntoDoc = function(node) {
var toImport = node;
if (this.isTemplateElement(node)) {
toImport = this.content(node);
}
return document.importNode(toImport, true);
};
BrowserDomAdapter.prototype.adoptNode = function(node) {
return document.adoptNode(node);
};
BrowserDomAdapter.prototype.getHref = function(el) {
return el.href;
};
BrowserDomAdapter.prototype.getEventKey = function(event) {
var key = event.key;
if (lang_1.isBlank(key)) {
key = event.keyIdentifier;
if (lang_1.isBlank(key)) {
return 'Unidentified';
}
if (key.startsWith('U+')) {
key = String.fromCharCode(parseInt(key.substring(2), 16));
if (event.location === DOM_KEY_LOCATION_NUMPAD && _chromeNumKeyPadMap.hasOwnProperty(key)) {
key = _chromeNumKeyPadMap[key];
}
}
}
if (_keyMap.hasOwnProperty(key)) {
key = _keyMap[key];
}
return key;
};
BrowserDomAdapter.prototype.getGlobalEventTarget = function(target) {
if (target == "window") {
return window;
} else if (target == "document") {
return document;
} else if (target == "body") {
return document.body;
}
};
BrowserDomAdapter.prototype.getHistory = function() {
return window.history;
};
BrowserDomAdapter.prototype.getLocation = function() {
return window.location;
};
BrowserDomAdapter.prototype.getBaseHref = function() {
var href = getBaseElementHref();
if (lang_1.isBlank(href)) {
return null;
}
return relativePath(href);
};
BrowserDomAdapter.prototype.resetBaseElement = function() {
baseElement = null;
};
BrowserDomAdapter.prototype.getUserAgent = function() {
return window.navigator.userAgent;
};
BrowserDomAdapter.prototype.setData = function(element, name, value) {
this.setAttribute(element, 'data-' + name, value);
};
BrowserDomAdapter.prototype.getData = function(element, name) {
return this.getAttribute(element, 'data-' + name);
};
BrowserDomAdapter.prototype.getComputedStyle = function(element) {
return getComputedStyle(element);
};
BrowserDomAdapter.prototype.setGlobalVar = function(path, value) {
lang_1.setValueOnPath(lang_1.global, path, value);
};
BrowserDomAdapter.prototype.requestAnimationFrame = function(callback) {
return window.requestAnimationFrame(callback);
};
BrowserDomAdapter.prototype.cancelAnimationFrame = function(id) {
window.cancelAnimationFrame(id);
};
BrowserDomAdapter.prototype.performanceNow = function() {
if (lang_1.isPresent(window.performance) && lang_1.isPresent(window.performance.now)) {
return window.performance.now();
} else {
return lang_1.DateWrapper.toMillis(lang_1.DateWrapper.now());
}
};
return BrowserDomAdapter;
})(generic_browser_adapter_1.GenericBrowserDomAdapter);
exports.BrowserDomAdapter = BrowserDomAdapter;
var baseElement = null;
function getBaseElementHref() {
if (lang_1.isBlank(baseElement)) {
baseElement = document.querySelector('base');
if (lang_1.isBlank(baseElement)) {
return null;
}
}
return baseElement.getAttribute('href');
}
var urlParsingNode = null;
function relativePath(url) {
if (lang_1.isBlank(urlParsingNode)) {
urlParsingNode = document.createElement("a");
}
urlParsingNode.setAttribute('href', url);
return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname : '/' + urlParsingNode.pathname;
}
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/template_parser", ["angular2/src/facade/collection", "angular2/src/facade/lang", "angular2/core", "angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/core/change_detection/change_detection", "angular2/src/compiler/html_parser", "angular2/src/compiler/html_tags", "angular2/src/compiler/parse_util", "angular2/src/core/change_detection/parser/ast", "angular2/src/compiler/template_ast", "angular2/src/compiler/selector", "angular2/src/compiler/schema/element_schema_registry", "angular2/src/compiler/template_preparser", "angular2/src/compiler/style_url_resolver", "angular2/src/compiler/html_ast", "angular2/src/compiler/util"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
var collection_1 = require("angular2/src/facade/collection");
var lang_1 = require("angular2/src/facade/lang");
var core_1 = require("angular2/core");
var lang_2 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
var html_parser_1 = require("angular2/src/compiler/html_parser");
var html_tags_1 = require("angular2/src/compiler/html_tags");
var parse_util_1 = require("angular2/src/compiler/parse_util");
var ast_1 = require("angular2/src/core/change_detection/parser/ast");
var template_ast_1 = require("angular2/src/compiler/template_ast");
var selector_1 = require("angular2/src/compiler/selector");
var element_schema_registry_1 = require("angular2/src/compiler/schema/element_schema_registry");
var template_preparser_1 = require("angular2/src/compiler/template_preparser");
var style_url_resolver_1 = require("angular2/src/compiler/style_url_resolver");
var html_ast_1 = require("angular2/src/compiler/html_ast");
var util_1 = require("angular2/src/compiler/util");
var BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(var-|#)|(on-)|(bindon-))(.+))|\[\(([^\)]+)\)\]|\[([^\]]+)\]|\(([^\)]+)\))$/g;
var TEMPLATE_ELEMENT = 'template';
var TEMPLATE_ATTR = 'template';
var TEMPLATE_ATTR_PREFIX = '*';
var CLASS_ATTR = 'class';
var PROPERTY_PARTS_SEPARATOR = '.';
var ATTRIBUTE_PREFIX = 'attr';
var CLASS_PREFIX = 'class';
var STYLE_PREFIX = 'style';
var TEXT_CSS_SELECTOR = selector_1.CssSelector.parse('*')[0];
exports.TEMPLATE_TRANSFORMS = lang_2.CONST_EXPR(new core_1.OpaqueToken('TemplateTransforms'));
var TemplateParseError = (function(_super) {
__extends(TemplateParseError, _super);
function TemplateParseError(message, span) {
_super.call(this, span, message);
}
return TemplateParseError;
})(parse_util_1.ParseError);
exports.TemplateParseError = TemplateParseError;
var TemplateParser = (function() {
function TemplateParser(_exprParser, _schemaRegistry, _htmlParser, transforms) {
this._exprParser = _exprParser;
this._schemaRegistry = _schemaRegistry;
this._htmlParser = _htmlParser;
this.transforms = transforms;
}
TemplateParser.prototype.parse = function(template, directives, pipes, templateUrl) {
var parseVisitor = new TemplateParseVisitor(directives, pipes, this._exprParser, this._schemaRegistry);
var htmlAstWithErrors = this._htmlParser.parse(template, templateUrl);
var result = html_ast_1.htmlVisitAll(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_COMPONENT);
var errors = htmlAstWithErrors.errors.concat(parseVisitor.errors);
if (errors.length > 0) {
var errorString = errors.join('\n');
throw new exceptions_1.BaseException("Template parse errors:\n" + errorString);
}
if (lang_1.isPresent(this.transforms)) {
this.transforms.forEach(function(transform) {
result = template_ast_1.templateVisitAll(transform, result);
});
}
return result;
};
TemplateParser = __decorate([core_1.Injectable(), __param(3, core_1.Optional()), __param(3, core_1.Inject(exports.TEMPLATE_TRANSFORMS)), __metadata('design:paramtypes', [change_detection_1.Parser, element_schema_registry_1.ElementSchemaRegistry, html_parser_1.HtmlParser, Array])], TemplateParser);
return TemplateParser;
})();
exports.TemplateParser = TemplateParser;
var TemplateParseVisitor = (function() {
function TemplateParseVisitor(directives, pipes, _exprParser, _schemaRegistry) {
var _this = this;
this._exprParser = _exprParser;
this._schemaRegistry = _schemaRegistry;
this.errors = [];
this.directivesIndex = new Map();
this.ngContentCount = 0;
this.selectorMatcher = new selector_1.SelectorMatcher();
collection_1.ListWrapper.forEachWithIndex(directives, function(directive, index) {
var selector = selector_1.CssSelector.parse(directive.selector);
_this.selectorMatcher.addSelectables(selector, directive);
_this.directivesIndex.set(directive, index);
});
this.pipesByName = new Map();
pipes.forEach(function(pipe) {
return _this.pipesByName.set(pipe.name, pipe);
});
}
TemplateParseVisitor.prototype._reportError = function(message, sourceSpan) {
this.errors.push(new TemplateParseError(message, sourceSpan));
};
TemplateParseVisitor.prototype._parseInterpolation = function(value, sourceSpan) {
var sourceInfo = sourceSpan.start.toString();
try {
var ast = this._exprParser.parseInterpolation(value, sourceInfo);
this._checkPipes(ast, sourceSpan);
return ast;
} catch (e) {
this._reportError("" + e, sourceSpan);
return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);
}
};
TemplateParseVisitor.prototype._parseAction = function(value, sourceSpan) {
var sourceInfo = sourceSpan.start.toString();
try {
var ast = this._exprParser.parseAction(value, sourceInfo);
this._checkPipes(ast, sourceSpan);
return ast;
} catch (e) {
this._reportError("" + e, sourceSpan);
return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);
}
};
TemplateParseVisitor.prototype._parseBinding = function(value, sourceSpan) {
var sourceInfo = sourceSpan.start.toString();
try {
var ast = this._exprParser.parseBinding(value, sourceInfo);
this._checkPipes(ast, sourceSpan);
return ast;
} catch (e) {
this._reportError("" + e, sourceSpan);
return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);
}
};
TemplateParseVisitor.prototype._parseTemplateBindings = function(value, sourceSpan) {
var _this = this;
var sourceInfo = sourceSpan.start.toString();
try {
var bindings = this._exprParser.parseTemplateBindings(value, sourceInfo);
bindings.forEach(function(binding) {
if (lang_1.isPresent(binding.expression)) {
_this._checkPipes(binding.expression, sourceSpan);
}
});
return bindings;
} catch (e) {
this._reportError("" + e, sourceSpan);
return [];
}
};
TemplateParseVisitor.prototype._checkPipes = function(ast, sourceSpan) {
var _this = this;
if (lang_1.isPresent(ast)) {
var collector = new PipeCollector();
ast.visit(collector);
collector.pipes.forEach(function(pipeName) {
if (!_this.pipesByName.has(pipeName)) {
_this._reportError("The pipe '" + pipeName + "' could not be found", sourceSpan);
}
});
}
};
TemplateParseVisitor.prototype.visitText = function(ast, component) {
var ngContentIndex = component.findNgContentIndex(TEXT_CSS_SELECTOR);
var expr = this._parseInterpolation(ast.value, ast.sourceSpan);
if (lang_1.isPresent(expr)) {
return new template_ast_1.BoundTextAst(expr, ngContentIndex, ast.sourceSpan);
} else {
return new template_ast_1.TextAst(ast.value, ngContentIndex, ast.sourceSpan);
}
};
TemplateParseVisitor.prototype.visitAttr = function(ast, contex) {
return new template_ast_1.AttrAst(ast.name, ast.value, ast.sourceSpan);
};
TemplateParseVisitor.prototype.visitComment = function(ast, context) {
return null;
};
TemplateParseVisitor.prototype.visitElement = function(element, component) {
var _this = this;
var nodeName = element.name;
var preparsedElement = template_preparser_1.preparseElement(element);
if (preparsedElement.type === template_preparser_1.PreparsedElementType.SCRIPT || preparsedElement.type === template_preparser_1.PreparsedElementType.STYLE) {
return null;
}
if (preparsedElement.type === template_preparser_1.PreparsedElementType.STYLESHEET && style_url_resolver_1.isStyleUrlResolvable(preparsedElement.hrefAttr)) {
return null;
}
var matchableAttrs = [];
var elementOrDirectiveProps = [];
var vars = [];
var events = [];
var templateElementOrDirectiveProps = [];
var templateVars = [];
var templateMatchableAttrs = [];
var hasInlineTemplates = false;
var attrs = [];
element.attrs.forEach(function(attr) {
var hasBinding = _this._parseAttr(attr, matchableAttrs, elementOrDirectiveProps, events, vars);
var hasTemplateBinding = _this._parseInlineTemplateBinding(attr, templateMatchableAttrs, templateElementOrDirectiveProps, templateVars);
if (!hasBinding && !hasTemplateBinding) {
attrs.push(_this.visitAttr(attr, null));
matchableAttrs.push([attr.name, attr.value]);
}
if (hasTemplateBinding) {
hasInlineTemplates = true;
}
});
var lcElName = html_tags_1.splitNsName(nodeName.toLowerCase())[1];
var isTemplateElement = lcElName == TEMPLATE_ELEMENT;
var elementCssSelector = createElementCssSelector(nodeName, matchableAttrs);
var directives = this._createDirectiveAsts(element.name, this._parseDirectives(this.selectorMatcher, elementCssSelector), elementOrDirectiveProps, isTemplateElement ? [] : vars, element.sourceSpan);
var elementProps = this._createElementPropertyAsts(element.name, elementOrDirectiveProps, directives);
var children = html_ast_1.htmlVisitAll(preparsedElement.nonBindable ? NON_BINDABLE_VISITOR : this, element.children, Component.create(directives));
var projectionSelector = lang_1.isPresent(preparsedElement.projectAs) ? selector_1.CssSelector.parse(preparsedElement.projectAs)[0] : elementCssSelector;
var ngContentIndex = component.findNgContentIndex(projectionSelector);
var parsedElement;
if (preparsedElement.type === template_preparser_1.PreparsedElementType.NG_CONTENT) {
if (lang_1.isPresent(element.children) && element.children.length > 0) {
this._reportError("<ng-content> element cannot have content. <ng-content> must be immediately followed by </ng-content>", element.sourceSpan);
}
parsedElement = new template_ast_1.NgContentAst(this.ngContentCount++, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);
} else if (isTemplateElement) {
this._assertAllEventsPublishedByDirectives(directives, events);
this._assertNoComponentsNorElementBindingsOnTemplate(directives, elementProps, element.sourceSpan);
parsedElement = new template_ast_1.EmbeddedTemplateAst(attrs, events, vars, directives, children, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);
} else {
this._assertOnlyOneComponent(directives, element.sourceSpan);
var elementExportAsVars = vars.filter(function(varAst) {
return varAst.value.length === 0;
});
var ngContentIndex_1 = hasInlineTemplates ? null : component.findNgContentIndex(projectionSelector);
parsedElement = new template_ast_1.ElementAst(nodeName, attrs, elementProps, events, elementExportAsVars, directives, children, hasInlineTemplates ? null : ngContentIndex_1, element.sourceSpan);
}
if (hasInlineTemplates) {
var templateCssSelector = createElementCssSelector(TEMPLATE_ELEMENT, templateMatchableAttrs);
var templateDirectives = this._createDirectiveAsts(element.name, this._parseDirectives(this.selectorMatcher, templateCssSelector), templateElementOrDirectiveProps, [], element.sourceSpan);
var templateElementProps = this._createElementPropertyAsts(element.name, templateElementOrDirectiveProps, templateDirectives);
this._assertNoComponentsNorElementBindingsOnTemplate(templateDirectives, templateElementProps, element.sourceSpan);
parsedElement = new template_ast_1.EmbeddedTemplateAst([], [], templateVars, templateDirectives, [parsedElement], ngContentIndex, element.sourceSpan);
}
return parsedElement;
};
TemplateParseVisitor.prototype._parseInlineTemplateBinding = function(attr, targetMatchableAttrs, targetProps, targetVars) {
var templateBindingsSource = null;
if (attr.name == TEMPLATE_ATTR) {
templateBindingsSource = attr.value;
} else if (attr.name.startsWith(TEMPLATE_ATTR_PREFIX)) {
var key = attr.name.substring(TEMPLATE_ATTR_PREFIX.length);
templateBindingsSource = (attr.value.length == 0) ? key : key + ' ' + attr.value;
}
if (lang_1.isPresent(templateBindingsSource)) {
var bindings = this._parseTemplateBindings(templateBindingsSource, attr.sourceSpan);
for (var i = 0; i < bindings.length; i++) {
var binding = bindings[i];
if (binding.keyIsVar) {
targetVars.push(new template_ast_1.VariableAst(binding.key, binding.name, attr.sourceSpan));
targetMatchableAttrs.push([binding.key, binding.name]);
} else if (lang_1.isPresent(binding.expression)) {
this._parsePropertyAst(binding.key, binding.expression, attr.sourceSpan, targetMatchableAttrs, targetProps);
} else {
targetMatchableAttrs.push([binding.key, '']);
this._parseLiteralAttr(binding.key, null, attr.sourceSpan, targetProps);
}
}
return true;
}
return false;
};
TemplateParseVisitor.prototype._parseAttr = function(attr, targetMatchableAttrs, targetProps, targetEvents, targetVars) {
var attrName = this._normalizeAttributeName(attr.name);
var attrValue = attr.value;
var bindParts = lang_1.RegExpWrapper.firstMatch(BIND_NAME_REGEXP, attrName);
var hasBinding = false;
if (lang_1.isPresent(bindParts)) {
hasBinding = true;
if (lang_1.isPresent(bindParts[1])) {
this._parseProperty(bindParts[5], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
} else if (lang_1.isPresent(bindParts[2])) {
var identifier = bindParts[5];
this._parseVariable(identifier, attrValue, attr.sourceSpan, targetVars);
} else if (lang_1.isPresent(bindParts[3])) {
this._parseEvent(bindParts[5], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);
} else if (lang_1.isPresent(bindParts[4])) {
this._parseProperty(bindParts[5], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
this._parseAssignmentEvent(bindParts[5], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);
} else if (lang_1.isPresent(bindParts[6])) {
this._parseProperty(bindParts[6], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
this._parseAssignmentEvent(bindParts[6], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);
} else if (lang_1.isPresent(bindParts[7])) {
this._parseProperty(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
} else if (lang_1.isPresent(bindParts[8])) {
this._parseEvent(bindParts[8], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);
}
} else {
hasBinding = this._parsePropertyInterpolation(attrName, attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
}
if (!hasBinding) {
this._parseLiteralAttr(attrName, attrValue, attr.sourceSpan, targetProps);
}
return hasBinding;
};
TemplateParseVisitor.prototype._normalizeAttributeName = function(attrName) {
return attrName.toLowerCase().startsWith('data-') ? attrName.substring(5) : attrName;
};
TemplateParseVisitor.prototype._parseVariable = function(identifier, value, sourceSpan, targetVars) {
if (identifier.indexOf('-') > -1) {
this._reportError("\"-\" is not allowed in variable names", sourceSpan);
}
targetVars.push(new template_ast_1.VariableAst(identifier, value, sourceSpan));
};
TemplateParseVisitor.prototype._parseProperty = function(name, expression, sourceSpan, targetMatchableAttrs, targetProps) {
this._parsePropertyAst(name, this._parseBinding(expression, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps);
};
TemplateParseVisitor.prototype._parsePropertyInterpolation = function(name, value, sourceSpan, targetMatchableAttrs, targetProps) {
var expr = this._parseInterpolation(value, sourceSpan);
if (lang_1.isPresent(expr)) {
this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps);
return true;
}
return false;
};
TemplateParseVisitor.prototype._parsePropertyAst = function(name, ast, sourceSpan, targetMatchableAttrs, targetProps) {
targetMatchableAttrs.push([name, ast.source]);
targetProps.push(new BoundElementOrDirectiveProperty(name, ast, false, sourceSpan));
};
TemplateParseVisitor.prototype._parseAssignmentEvent = function(name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {
this._parseEvent(name + "Change", expression + "=$event", sourceSpan, targetMatchableAttrs, targetEvents);
};
TemplateParseVisitor.prototype._parseEvent = function(name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {
var parts = util_1.splitAtColon(name, [null, name]);
var target = parts[0];
var eventName = parts[1];
var ast = this._parseAction(expression, sourceSpan);
targetMatchableAttrs.push([name, ast.source]);
targetEvents.push(new template_ast_1.BoundEventAst(eventName, target, ast, sourceSpan));
};
TemplateParseVisitor.prototype._parseLiteralAttr = function(name, value, sourceSpan, targetProps) {
targetProps.push(new BoundElementOrDirectiveProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), true, sourceSpan));
};
TemplateParseVisitor.prototype._parseDirectives = function(selectorMatcher, elementCssSelector) {
var _this = this;
var directives = [];
selectorMatcher.match(elementCssSelector, function(selector, directive) {
directives.push(directive);
});
collection_1.ListWrapper.sort(directives, function(dir1, dir2) {
var dir1Comp = dir1.isComponent;
var dir2Comp = dir2.isComponent;
if (dir1Comp && !dir2Comp) {
return -1;
} else if (!dir1Comp && dir2Comp) {
return 1;
} else {
return _this.directivesIndex.get(dir1) - _this.directivesIndex.get(dir2);
}
});
return directives;
};
TemplateParseVisitor.prototype._createDirectiveAsts = function(elementName, directives, props, possibleExportAsVars, sourceSpan) {
var _this = this;
var matchedVariables = new Set();
var directiveAsts = directives.map(function(directive) {
var hostProperties = [];
var hostEvents = [];
var directiveProperties = [];
_this._createDirectiveHostPropertyAsts(elementName, directive.hostProperties, sourceSpan, hostProperties);
_this._createDirectiveHostEventAsts(directive.hostListeners, sourceSpan, hostEvents);
_this._createDirectivePropertyAsts(directive.inputs, props, directiveProperties);
var exportAsVars = [];
possibleExportAsVars.forEach(function(varAst) {
if ((varAst.value.length === 0 && directive.isComponent) || (directive.exportAs == varAst.value)) {
exportAsVars.push(varAst);
matchedVariables.add(varAst.name);
}
});
return new template_ast_1.DirectiveAst(directive, directiveProperties, hostProperties, hostEvents, exportAsVars, sourceSpan);
});
possibleExportAsVars.forEach(function(varAst) {
if (varAst.value.length > 0 && !collection_1.SetWrapper.has(matchedVariables, varAst.name)) {
_this._reportError("There is no directive with \"exportAs\" set to \"" + varAst.value + "\"", varAst.sourceSpan);
}
});
return directiveAsts;
};
TemplateParseVisitor.prototype._createDirectiveHostPropertyAsts = function(elementName, hostProps, sourceSpan, targetPropertyAsts) {
var _this = this;
if (lang_1.isPresent(hostProps)) {
collection_1.StringMapWrapper.forEach(hostProps, function(expression, propName) {
var exprAst = _this._parseBinding(expression, sourceSpan);
targetPropertyAsts.push(_this._createElementPropertyAst(elementName, propName, exprAst, sourceSpan));
});
}
};
TemplateParseVisitor.prototype._createDirectiveHostEventAsts = function(hostListeners, sourceSpan, targetEventAsts) {
var _this = this;
if (lang_1.isPresent(hostListeners)) {
collection_1.StringMapWrapper.forEach(hostListeners, function(expression, propName) {
_this._parseEvent(propName, expression, sourceSpan, [], targetEventAsts);
});
}
};
TemplateParseVisitor.prototype._createDirectivePropertyAsts = function(directiveProperties, boundProps, targetBoundDirectiveProps) {
if (lang_1.isPresent(directiveProperties)) {
var boundPropsByName = new Map();
boundProps.forEach(function(boundProp) {
var prevValue = boundPropsByName.get(boundProp.name);
if (lang_1.isBlank(prevValue) || prevValue.isLiteral) {
boundPropsByName.set(boundProp.name, boundProp);
}
});
collection_1.StringMapWrapper.forEach(directiveProperties, function(elProp, dirProp) {
var boundProp = boundPropsByName.get(elProp);
if (lang_1.isPresent(boundProp)) {
targetBoundDirectiveProps.push(new template_ast_1.BoundDirectivePropertyAst(dirProp, boundProp.name, boundProp.expression, boundProp.sourceSpan));
}
});
}
};
TemplateParseVisitor.prototype._createElementPropertyAsts = function(elementName, props, directives) {
var _this = this;
var boundElementProps = [];
var boundDirectivePropsIndex = new Map();
directives.forEach(function(directive) {
directive.inputs.forEach(function(prop) {
boundDirectivePropsIndex.set(prop.templateName, prop);
});
});
props.forEach(function(prop) {
if (!prop.isLiteral && lang_1.isBlank(boundDirectivePropsIndex.get(prop.name))) {
boundElementProps.push(_this._createElementPropertyAst(elementName, prop.name, prop.expression, prop.sourceSpan));
}
});
return boundElementProps;
};
TemplateParseVisitor.prototype._createElementPropertyAst = function(elementName, name, ast, sourceSpan) {
var unit = null;
var bindingType;
var boundPropertyName;
var parts = name.split(PROPERTY_PARTS_SEPARATOR);
if (parts.length === 1) {
boundPropertyName = this._schemaRegistry.getMappedPropName(parts[0]);
bindingType = template_ast_1.PropertyBindingType.Property;
if (!this._schemaRegistry.hasProperty(elementName, boundPropertyName)) {
this._reportError("Can't bind to '" + boundPropertyName + "' since it isn't a known native property", sourceSpan);
}
} else {
if (parts[0] == ATTRIBUTE_PREFIX) {
boundPropertyName = parts[1];
var nsSeparatorIdx = boundPropertyName.indexOf(':');
if (nsSeparatorIdx > -1) {
var ns = boundPropertyName.substring(0, nsSeparatorIdx);
var name_1 = boundPropertyName.substring(nsSeparatorIdx + 1);
boundPropertyName = html_tags_1.mergeNsAndName(ns, name_1);
}
bindingType = template_ast_1.PropertyBindingType.Attribute;
} else if (parts[0] == CLASS_PREFIX) {
boundPropertyName = parts[1];
bindingType = template_ast_1.PropertyBindingType.Class;
} else if (parts[0] == STYLE_PREFIX) {
unit = parts.length > 2 ? parts[2] : null;
boundPropertyName = parts[1];
bindingType = template_ast_1.PropertyBindingType.Style;
} else {
this._reportError("Invalid property name '" + name + "'", sourceSpan);
bindingType = null;
}
}
return new template_ast_1.BoundElementPropertyAst(boundPropertyName, bindingType, ast, unit, sourceSpan);
};
TemplateParseVisitor.prototype._findComponentDirectiveNames = function(directives) {
var componentTypeNames = [];
directives.forEach(function(directive) {
var typeName = directive.directive.type.name;
if (directive.directive.isComponent) {
componentTypeNames.push(typeName);
}
});
return componentTypeNames;
};
TemplateParseVisitor.prototype._assertOnlyOneComponent = function(directives, sourceSpan) {
var componentTypeNames = this._findComponentDirectiveNames(directives);
if (componentTypeNames.length > 1) {
this._reportError("More than one component: " + componentTypeNames.join(','), sourceSpan);
}
};
TemplateParseVisitor.prototype._assertNoComponentsNorElementBindingsOnTemplate = function(directives, elementProps, sourceSpan) {
var _this = this;
var componentTypeNames = this._findComponentDirectiveNames(directives);
if (componentTypeNames.length > 0) {
this._reportError("Components on an embedded template: " + componentTypeNames.join(','), sourceSpan);
}
elementProps.forEach(function(prop) {
_this._reportError("Property binding " + prop.name + " not used by any directive on an embedded template", sourceSpan);
});
};
TemplateParseVisitor.prototype._assertAllEventsPublishedByDirectives = function(directives, events) {
var _this = this;
var allDirectiveEvents = new Set();
directives.forEach(function(directive) {
collection_1.StringMapWrapper.forEach(directive.directive.outputs, function(eventName, _) {
allDirectiveEvents.add(eventName);
});
});
events.forEach(function(event) {
if (lang_1.isPresent(event.target) || !collection_1.SetWrapper.has(allDirectiveEvents, event.name)) {
_this._reportError("Event binding " + event.fullName + " not emitted by any directive on an embedded template", event.sourceSpan);
}
});
};
return TemplateParseVisitor;
})();
var NonBindableVisitor = (function() {
function NonBindableVisitor() {}
NonBindableVisitor.prototype.visitElement = function(ast, component) {
var preparsedElement = template_preparser_1.preparseElement(ast);
if (preparsedElement.type === template_preparser_1.PreparsedElementType.SCRIPT || preparsedElement.type === template_preparser_1.PreparsedElementType.STYLE || preparsedElement.type === template_preparser_1.PreparsedElementType.STYLESHEET) {
return null;
}
var attrNameAndValues = ast.attrs.map(function(attrAst) {
return [attrAst.name, attrAst.value];
});
var selector = createElementCssSelector(ast.name, attrNameAndValues);
var ngContentIndex = component.findNgContentIndex(selector);
var children = html_ast_1.htmlVisitAll(this, ast.children, EMPTY_COMPONENT);
return new template_ast_1.ElementAst(ast.name, html_ast_1.htmlVisitAll(this, ast.attrs), [], [], [], [], children, ngContentIndex, ast.sourceSpan);
};
NonBindableVisitor.prototype.visitComment = function(ast, context) {
return null;
};
NonBindableVisitor.prototype.visitAttr = function(ast, context) {
return new template_ast_1.AttrAst(ast.name, ast.value, ast.sourceSpan);
};
NonBindableVisitor.prototype.visitText = function(ast, component) {
var ngContentIndex = component.findNgContentIndex(TEXT_CSS_SELECTOR);
return new template_ast_1.TextAst(ast.value, ngContentIndex, ast.sourceSpan);
};
return NonBindableVisitor;
})();
var BoundElementOrDirectiveProperty = (function() {
function BoundElementOrDirectiveProperty(name, expression, isLiteral, sourceSpan) {
this.name = name;
this.expression = expression;
this.isLiteral = isLiteral;
this.sourceSpan = sourceSpan;
}
return BoundElementOrDirectiveProperty;
})();
function splitClasses(classAttrValue) {
return lang_1.StringWrapper.split(classAttrValue.trim(), /\s+/g);
}
exports.splitClasses = splitClasses;
var Component = (function() {
function Component(ngContentIndexMatcher, wildcardNgContentIndex) {
this.ngContentIndexMatcher = ngContentIndexMatcher;
this.wildcardNgContentIndex = wildcardNgContentIndex;
}
Component.create = function(directives) {
if (directives.length === 0 || !directives[0].directive.isComponent) {
return EMPTY_COMPONENT;
}
var matcher = new selector_1.SelectorMatcher();
var ngContentSelectors = directives[0].directive.template.ngContentSelectors;
var wildcardNgContentIndex = null;
for (var i = 0; i < ngContentSelectors.length; i++) {
var selector = ngContentSelectors[i];
if (lang_1.StringWrapper.equals(selector, '*')) {
wildcardNgContentIndex = i;
} else {
matcher.addSelectables(selector_1.CssSelector.parse(ngContentSelectors[i]), i);
}
}
return new Component(matcher, wildcardNgContentIndex);
};
Component.prototype.findNgContentIndex = function(selector) {
var ngContentIndices = [];
this.ngContentIndexMatcher.match(selector, function(selector, ngContentIndex) {
ngContentIndices.push(ngContentIndex);
});
collection_1.ListWrapper.sort(ngContentIndices);
if (lang_1.isPresent(this.wildcardNgContentIndex)) {
ngContentIndices.push(this.wildcardNgContentIndex);
}
return ngContentIndices.length > 0 ? ngContentIndices[0] : null;
};
return Component;
})();
function createElementCssSelector(elementName, matchableAttrs) {
var cssSelector = new selector_1.CssSelector();
var elNameNoNs = html_tags_1.splitNsName(elementName)[1];
cssSelector.setElement(elNameNoNs);
for (var i = 0; i < matchableAttrs.length; i++) {
var attrName = matchableAttrs[i][0];
var attrNameNoNs = html_tags_1.splitNsName(attrName)[1];
var attrValue = matchableAttrs[i][1];
cssSelector.addAttribute(attrNameNoNs, attrValue);
if (attrName.toLowerCase() == CLASS_ATTR) {
var classes = splitClasses(attrValue);
classes.forEach(function(className) {
return cssSelector.addClassName(className);
});
}
}
return cssSelector;
}
var EMPTY_COMPONENT = new Component(new selector_1.SelectorMatcher(), null);
var NON_BINDABLE_VISITOR = new NonBindableVisitor();
var PipeCollector = (function(_super) {
__extends(PipeCollector, _super);
function PipeCollector() {
_super.apply(this, arguments);
this.pipes = new Set();
}
PipeCollector.prototype.visitPipe = function(ast) {
this.pipes.add(ast.name);
ast.exp.visit(this);
this.visitAll(ast.args);
return null;
};
return PipeCollector;
})(ast_1.RecursiveAstVisitor);
exports.PipeCollector = PipeCollector;
global.define = __define;
return module.exports;
});
System.register("angular2/common", ["angular2/src/common/pipes", "angular2/src/common/directives", "angular2/src/common/forms", "angular2/src/common/common_directives"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function __export(m) {
for (var p in m)
if (!exports.hasOwnProperty(p))
exports[p] = m[p];
}
__export(require("angular2/src/common/pipes"));
__export(require("angular2/src/common/directives"));
__export(require("angular2/src/common/forms"));
__export(require("angular2/src/common/common_directives"));
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/template_compiler", ["angular2/src/facade/lang", "angular2/src/facade/exceptions", "angular2/src/facade/collection", "angular2/src/facade/async", "angular2/src/compiler/directive_metadata", "angular2/src/compiler/template_ast", "angular2/src/core/di", "angular2/src/compiler/source_module", "angular2/src/compiler/change_detector_compiler", "angular2/src/compiler/style_compiler", "angular2/src/compiler/view_compiler", "angular2/src/compiler/proto_view_compiler", "angular2/src/compiler/template_parser", "angular2/src/compiler/template_normalizer", "angular2/src/compiler/runtime_metadata", "angular2/src/core/linker/view", "angular2/src/core/change_detection/change_detection", "angular2/src/core/linker/resolved_metadata_cache", "angular2/src/compiler/util"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var lang_1 = require("angular2/src/facade/lang");
var exceptions_1 = require("angular2/src/facade/exceptions");
var collection_1 = require("angular2/src/facade/collection");
var async_1 = require("angular2/src/facade/async");
var directive_metadata_1 = require("angular2/src/compiler/directive_metadata");
var template_ast_1 = require("angular2/src/compiler/template_ast");
var di_1 = require("angular2/src/core/di");
var source_module_1 = require("angular2/src/compiler/source_module");
var change_detector_compiler_1 = require("angular2/src/compiler/change_detector_compiler");
var style_compiler_1 = require("angular2/src/compiler/style_compiler");
var view_compiler_1 = require("angular2/src/compiler/view_compiler");
var proto_view_compiler_1 = require("angular2/src/compiler/proto_view_compiler");
var template_parser_1 = require("angular2/src/compiler/template_parser");
var template_normalizer_1 = require("angular2/src/compiler/template_normalizer");
var runtime_metadata_1 = require("angular2/src/compiler/runtime_metadata");
var view_1 = require("angular2/src/core/linker/view");
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
var resolved_metadata_cache_1 = require("angular2/src/core/linker/resolved_metadata_cache");
var util_1 = require("angular2/src/compiler/util");
exports.METADATA_CACHE_MODULE_REF = source_module_1.moduleRef('package:angular2/src/core/linker/resolved_metadata_cache' + util_1.MODULE_SUFFIX);
var TemplateCompiler = (function() {
function TemplateCompiler(_runtimeMetadataResolver, _templateNormalizer, _templateParser, _styleCompiler, _cdCompiler, _protoViewCompiler, _viewCompiler, _resolvedMetadataCache, _genConfig) {
this._runtimeMetadataResolver = _runtimeMetadataResolver;
this._templateNormalizer = _templateNormalizer;
this._templateParser = _templateParser;
this._styleCompiler = _styleCompiler;
this._cdCompiler = _cdCompiler;
this._protoViewCompiler = _protoViewCompiler;
this._viewCompiler = _viewCompiler;
this._resolvedMetadataCache = _resolvedMetadataCache;
this._genConfig = _genConfig;
this._hostCacheKeys = new Map();
this._compiledTemplateCache = new Map();
this._compiledTemplateDone = new Map();
}
TemplateCompiler.prototype.normalizeDirectiveMetadata = function(directive) {
if (!directive.isComponent) {
return async_1.PromiseWrapper.resolve(directive);
}
return this._templateNormalizer.normalizeTemplate(directive.type, directive.template).then(function(normalizedTemplate) {
return new directive_metadata_1.CompileDirectiveMetadata({
type: directive.type,
isComponent: directive.isComponent,
dynamicLoadable: directive.dynamicLoadable,
selector: directive.selector,
exportAs: directive.exportAs,
changeDetection: directive.changeDetection,
inputs: directive.inputs,
outputs: directive.outputs,
hostListeners: directive.hostListeners,
hostProperties: directive.hostProperties,
hostAttributes: directive.hostAttributes,
lifecycleHooks: directive.lifecycleHooks,
providers: directive.providers,
template: normalizedTemplate
});
});
};
TemplateCompiler.prototype.compileHostComponentRuntime = function(type) {
var compMeta = this._runtimeMetadataResolver.getDirectiveMetadata(type);
var hostCacheKey = this._hostCacheKeys.get(type);
if (lang_1.isBlank(hostCacheKey)) {
hostCacheKey = new Object();
this._hostCacheKeys.set(type, hostCacheKey);
assertComponent(compMeta);
var hostMeta = directive_metadata_1.createHostComponentMeta(compMeta.type, compMeta.selector);
this._compileComponentRuntime(hostCacheKey, hostMeta, [compMeta], [], []);
}
return this._compiledTemplateDone.get(hostCacheKey).then(function(compiledTemplate) {
return new view_1.HostViewFactory(compMeta.selector, compiledTemplate.viewFactory);
});
};
TemplateCompiler.prototype.clearCache = function() {
this._styleCompiler.clearCache();
this._compiledTemplateCache.clear();
this._compiledTemplateDone.clear();
this._hostCacheKeys.clear();
};
TemplateCompiler.prototype.compileTemplatesCodeGen = function(components) {
var _this = this;
if (components.length === 0) {
throw new exceptions_1.BaseException('No components given');
}
var declarations = [];
components.forEach(function(componentWithDirs) {
var compMeta = componentWithDirs.component;
assertComponent(compMeta);
_this._compileComponentCodeGen(compMeta, componentWithDirs.directives, componentWithDirs.pipes, declarations);
if (compMeta.dynamicLoadable) {
var hostMeta = directive_metadata_1.createHostComponentMeta(compMeta.type, compMeta.selector);
var viewFactoryExpression = _this._compileComponentCodeGen(hostMeta, [compMeta], [], declarations);
var constructionKeyword = lang_1.IS_DART ? 'const' : 'new';
var compiledTemplateExpr = constructionKeyword + " " + proto_view_compiler_1.APP_VIEW_MODULE_REF + "HostViewFactory('" + compMeta.selector + "'," + viewFactoryExpression + ")";
var varName = codeGenHostViewFactoryName(compMeta.type);
declarations.push("" + util_1.codeGenExportVariable(varName) + compiledTemplateExpr + ";");
}
});
var moduleUrl = components[0].component.type.moduleUrl;
return new source_module_1.SourceModule("" + templateModuleUrl(moduleUrl), declarations.join('\n'));
};
TemplateCompiler.prototype.compileStylesheetCodeGen = function(stylesheetUrl, cssText) {
return this._styleCompiler.compileStylesheetCodeGen(stylesheetUrl, cssText);
};
TemplateCompiler.prototype._compileComponentRuntime = function(cacheKey, compMeta, viewDirectives, pipes, compilingComponentsPath) {
var _this = this;
var uniqViewDirectives = removeDuplicates(viewDirectives);
var uniqViewPipes = removeDuplicates(pipes);
var compiledTemplate = this._compiledTemplateCache.get(cacheKey);
var done = this._compiledTemplateDone.get(cacheKey);
if (lang_1.isBlank(compiledTemplate)) {
compiledTemplate = new CompiledTemplate();
this._compiledTemplateCache.set(cacheKey, compiledTemplate);
done = async_1.PromiseWrapper.all([this._styleCompiler.compileComponentRuntime(compMeta.template)].concat(uniqViewDirectives.map(function(dirMeta) {
return _this.normalizeDirectiveMetadata(dirMeta);
}))).then(function(stylesAndNormalizedViewDirMetas) {
var normalizedViewDirMetas = stylesAndNormalizedViewDirMetas.slice(1);
var styles = stylesAndNormalizedViewDirMetas[0];
var parsedTemplate = _this._templateParser.parse(compMeta.template.template, normalizedViewDirMetas, uniqViewPipes, compMeta.type.name);
var childPromises = [];
var usedDirectives = DirectiveCollector.findUsedDirectives(parsedTemplate);
usedDirectives.components.forEach(function(component) {
return _this._compileNestedComponentRuntime(component, compilingComponentsPath, childPromises);
});
return async_1.PromiseWrapper.all(childPromises).then(function(_) {
var filteredPipes = filterPipes(parsedTemplate, uniqViewPipes);
compiledTemplate.init(_this._createViewFactoryRuntime(compMeta, parsedTemplate, usedDirectives.directives, styles, filteredPipes));
return compiledTemplate;
});
});
this._compiledTemplateDone.set(cacheKey, done);
}
return compiledTemplate;
};
TemplateCompiler.prototype._compileNestedComponentRuntime = function(childComponentDir, parentCompilingComponentsPath, childPromises) {
var compilingComponentsPath = collection_1.ListWrapper.clone(parentCompilingComponentsPath);
var childCacheKey = childComponentDir.type.runtime;
var childViewDirectives = this._runtimeMetadataResolver.getViewDirectivesMetadata(childComponentDir.type.runtime);
var childViewPipes = this._runtimeMetadataResolver.getViewPipesMetadata(childComponentDir.type.runtime);
var childIsRecursive = collection_1.ListWrapper.contains(compilingComponentsPath, childCacheKey);
compilingComponentsPath.push(childCacheKey);
this._compileComponentRuntime(childCacheKey, childComponentDir, childViewDirectives, childViewPipes, compilingComponentsPath);
if (!childIsRecursive) {
childPromises.push(this._compiledTemplateDone.get(childCacheKey));
}
};
TemplateCompiler.prototype._createViewFactoryRuntime = function(compMeta, parsedTemplate, directives, styles, pipes) {
var _this = this;
if (lang_1.IS_DART || !this._genConfig.useJit) {
var changeDetectorFactories = this._cdCompiler.compileComponentRuntime(compMeta.type, compMeta.changeDetection, parsedTemplate);
var protoViews = this._protoViewCompiler.compileProtoViewRuntime(this._resolvedMetadataCache, compMeta, parsedTemplate, pipes);
return this._viewCompiler.compileComponentRuntime(compMeta, parsedTemplate, styles, protoViews.protoViews, changeDetectorFactories, function(compMeta) {
return _this._getNestedComponentViewFactory(compMeta);
});
} else {
var declarations = [];
var viewFactoryExpr = this._createViewFactoryCodeGen('resolvedMetadataCache', compMeta, new source_module_1.SourceExpression([], 'styles'), parsedTemplate, pipes, declarations);
var vars = {
'exports': {},
'styles': styles,
'resolvedMetadataCache': this._resolvedMetadataCache
};
directives.forEach(function(dirMeta) {
vars[dirMeta.type.name] = dirMeta.type.runtime;
if (dirMeta.isComponent && dirMeta.type.runtime !== compMeta.type.runtime) {
vars[("viewFactory_" + dirMeta.type.name + "0")] = _this._getNestedComponentViewFactory(dirMeta);
}
});
pipes.forEach(function(pipeMeta) {
return vars[pipeMeta.type.name] = pipeMeta.type.runtime;
});
var declarationsWithoutImports = source_module_1.SourceModule.getSourceWithoutImports(declarations.join('\n'));
return lang_1.evalExpression("viewFactory_" + compMeta.type.name, viewFactoryExpr, declarationsWithoutImports, mergeStringMaps([vars, change_detector_compiler_1.CHANGE_DETECTION_JIT_IMPORTS, proto_view_compiler_1.PROTO_VIEW_JIT_IMPORTS, view_compiler_1.VIEW_JIT_IMPORTS]));
}
};
TemplateCompiler.prototype._getNestedComponentViewFactory = function(compMeta) {
return this._compiledTemplateCache.get(compMeta.type.runtime).viewFactory;
};
TemplateCompiler.prototype._compileComponentCodeGen = function(compMeta, directives, pipes, targetDeclarations) {
var uniqueDirectives = removeDuplicates(directives);
var uniqPipes = removeDuplicates(pipes);
var styleExpr = this._styleCompiler.compileComponentCodeGen(compMeta.template);
var parsedTemplate = this._templateParser.parse(compMeta.template.template, uniqueDirectives, uniqPipes, compMeta.type.name);
var filteredPipes = filterPipes(parsedTemplate, uniqPipes);
return this._createViewFactoryCodeGen(exports.METADATA_CACHE_MODULE_REF + "CODEGEN_RESOLVED_METADATA_CACHE", compMeta, styleExpr, parsedTemplate, filteredPipes, targetDeclarations);
};
TemplateCompiler.prototype._createViewFactoryCodeGen = function(resolvedMetadataCacheExpr, compMeta, styleExpr, parsedTemplate, pipes, targetDeclarations) {
var changeDetectorsExprs = this._cdCompiler.compileComponentCodeGen(compMeta.type, compMeta.changeDetection, parsedTemplate);
var protoViewExprs = this._protoViewCompiler.compileProtoViewCodeGen(new util_1.Expression(resolvedMetadataCacheExpr), compMeta, parsedTemplate, pipes);
var viewFactoryExpr = this._viewCompiler.compileComponentCodeGen(compMeta, parsedTemplate, styleExpr, protoViewExprs.protoViews, changeDetectorsExprs, codeGenComponentViewFactoryName);
util_1.addAll(changeDetectorsExprs.declarations, targetDeclarations);
util_1.addAll(protoViewExprs.declarations, targetDeclarations);
util_1.addAll(viewFactoryExpr.declarations, targetDeclarations);
return viewFactoryExpr.expression;
};
TemplateCompiler = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [runtime_metadata_1.RuntimeMetadataResolver, template_normalizer_1.TemplateNormalizer, template_parser_1.TemplateParser, style_compiler_1.StyleCompiler, change_detector_compiler_1.ChangeDetectionCompiler, proto_view_compiler_1.ProtoViewCompiler, view_compiler_1.ViewCompiler, resolved_metadata_cache_1.ResolvedMetadataCache, change_detection_1.ChangeDetectorGenConfig])], TemplateCompiler);
return TemplateCompiler;
})();
exports.TemplateCompiler = TemplateCompiler;
var NormalizedComponentWithViewDirectives = (function() {
function NormalizedComponentWithViewDirectives(component, directives, pipes) {
this.component = component;
this.directives = directives;
this.pipes = pipes;
}
return NormalizedComponentWithViewDirectives;
})();
exports.NormalizedComponentWithViewDirectives = NormalizedComponentWithViewDirectives;
var CompiledTemplate = (function() {
function CompiledTemplate() {
this.viewFactory = null;
}
CompiledTemplate.prototype.init = function(viewFactory) {
this.viewFactory = viewFactory;
};
return CompiledTemplate;
})();
function assertComponent(meta) {
if (!meta.isComponent) {
throw new exceptions_1.BaseException("Could not compile '" + meta.type.name + "' because it is not a component.");
}
}
function templateModuleUrl(moduleUrl) {
var urlWithoutSuffix = moduleUrl.substring(0, moduleUrl.length - util_1.MODULE_SUFFIX.length);
return urlWithoutSuffix + ".template" + util_1.MODULE_SUFFIX;
}
function codeGenHostViewFactoryName(type) {
return "hostViewFactory_" + type.name;
}
function codeGenComponentViewFactoryName(nestedCompType) {
return source_module_1.moduleRef(templateModuleUrl(nestedCompType.type.moduleUrl)) + "viewFactory_" + nestedCompType.type.name + "0";
}
function mergeStringMaps(maps) {
var result = {};
maps.forEach(function(map) {
collection_1.StringMapWrapper.forEach(map, function(value, key) {
result[key] = value;
});
});
return result;
}
function removeDuplicates(items) {
var res = [];
items.forEach(function(item) {
var hasMatch = res.filter(function(r) {
return r.type.name == item.type.name && r.type.moduleUrl == item.type.moduleUrl && r.type.runtime == item.type.runtime;
}).length > 0;
if (!hasMatch) {
res.push(item);
}
});
return res;
}
var DirectiveCollector = (function() {
function DirectiveCollector() {
this.directives = [];
this.components = [];
}
DirectiveCollector.findUsedDirectives = function(parsedTemplate) {
var collector = new DirectiveCollector();
template_ast_1.templateVisitAll(collector, parsedTemplate);
return collector;
};
DirectiveCollector.prototype.visitBoundText = function(ast, context) {
return null;
};
DirectiveCollector.prototype.visitText = function(ast, context) {
return null;
};
DirectiveCollector.prototype.visitNgContent = function(ast, context) {
return null;
};
DirectiveCollector.prototype.visitElement = function(ast, context) {
template_ast_1.templateVisitAll(this, ast.directives);
template_ast_1.templateVisitAll(this, ast.children);
return null;
};
DirectiveCollector.prototype.visitEmbeddedTemplate = function(ast, context) {
template_ast_1.templateVisitAll(this, ast.directives);
template_ast_1.templateVisitAll(this, ast.children);
return null;
};
DirectiveCollector.prototype.visitVariable = function(ast, ctx) {
return null;
};
DirectiveCollector.prototype.visitAttr = function(ast, attrNameAndValues) {
return null;
};
DirectiveCollector.prototype.visitDirective = function(ast, ctx) {
if (ast.directive.isComponent) {
this.components.push(ast.directive);
}
this.directives.push(ast.directive);
return null;
};
DirectiveCollector.prototype.visitEvent = function(ast, eventTargetAndNames) {
return null;
};
DirectiveCollector.prototype.visitDirectiveProperty = function(ast, context) {
return null;
};
DirectiveCollector.prototype.visitElementProperty = function(ast, context) {
return null;
};
return DirectiveCollector;
})();
function filterPipes(template, allPipes) {
var visitor = new PipeVisitor();
template_ast_1.templateVisitAll(visitor, template);
return allPipes.filter(function(pipeMeta) {
return collection_1.SetWrapper.has(visitor.collector.pipes, pipeMeta.name);
});
}
var PipeVisitor = (function() {
function PipeVisitor() {
this.collector = new template_parser_1.PipeCollector();
}
PipeVisitor.prototype.visitBoundText = function(ast, context) {
ast.value.visit(this.collector);
return null;
};
PipeVisitor.prototype.visitText = function(ast, context) {
return null;
};
PipeVisitor.prototype.visitNgContent = function(ast, context) {
return null;
};
PipeVisitor.prototype.visitElement = function(ast, context) {
template_ast_1.templateVisitAll(this, ast.inputs);
template_ast_1.templateVisitAll(this, ast.outputs);
template_ast_1.templateVisitAll(this, ast.directives);
template_ast_1.templateVisitAll(this, ast.children);
return null;
};
PipeVisitor.prototype.visitEmbeddedTemplate = function(ast, context) {
template_ast_1.templateVisitAll(this, ast.outputs);
template_ast_1.templateVisitAll(this, ast.directives);
template_ast_1.templateVisitAll(this, ast.children);
return null;
};
PipeVisitor.prototype.visitVariable = function(ast, ctx) {
return null;
};
PipeVisitor.prototype.visitAttr = function(ast, attrNameAndValues) {
return null;
};
PipeVisitor.prototype.visitDirective = function(ast, ctx) {
template_ast_1.templateVisitAll(this, ast.inputs);
template_ast_1.templateVisitAll(this, ast.hostEvents);
template_ast_1.templateVisitAll(this, ast.hostProperties);
return null;
};
PipeVisitor.prototype.visitEvent = function(ast, eventTargetAndNames) {
ast.handler.visit(this.collector);
return null;
};
PipeVisitor.prototype.visitDirectiveProperty = function(ast, context) {
ast.value.visit(this.collector);
return null;
};
PipeVisitor.prototype.visitElementProperty = function(ast, context) {
ast.value.visit(this.collector);
return null;
};
return PipeVisitor;
})();
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/runtime_compiler", ["angular2/src/core/linker/compiler", "angular2/src/core/linker/view_ref", "angular2/src/compiler/template_compiler", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var __extends = (this && this.__extends) || function(d, b) {
for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p];
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
r = Reflect.decorate(decorators, target, key, desc);
else
for (var i = decorators.length - 1; i >= 0; i--)
if (d = decorators[i])
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
return Reflect.metadata(k, v);
};
var compiler_1 = require("angular2/src/core/linker/compiler");
var view_ref_1 = require("angular2/src/core/linker/view_ref");
var template_compiler_1 = require("angular2/src/compiler/template_compiler");
var di_1 = require("angular2/src/core/di");
var RuntimeCompiler = (function(_super) {
__extends(RuntimeCompiler, _super);
function RuntimeCompiler() {
_super.apply(this, arguments);
}
return RuntimeCompiler;
})(compiler_1.Compiler);
exports.RuntimeCompiler = RuntimeCompiler;
var RuntimeCompiler_ = (function(_super) {
__extends(RuntimeCompiler_, _super);
function RuntimeCompiler_(_templateCompiler) {
_super.call(this);
this._templateCompiler = _templateCompiler;
}
RuntimeCompiler_.prototype.compileInHost = function(componentType) {
return this._templateCompiler.compileHostComponentRuntime(componentType).then(function(hostViewFactory) {
return new view_ref_1.HostViewFactoryRef_(hostViewFactory);
});
};
RuntimeCompiler_.prototype.clearCache = function() {
_super.prototype.clearCache.call(this);
this._templateCompiler.clearCache();
};
RuntimeCompiler_ = __decorate([di_1.Injectable(), __metadata('design:paramtypes', [template_compiler_1.TemplateCompiler])], RuntimeCompiler_);
return RuntimeCompiler_;
})(compiler_1.Compiler_);
exports.RuntimeCompiler_ = RuntimeCompiler_;
global.define = __define;
return module.exports;
});
System.register("angular2/src/compiler/compiler", ["angular2/src/compiler/runtime_compiler", "angular2/src/compiler/template_compiler", "angular2/src/compiler/directive_metadata", "angular2/src/compiler/source_module", "angular2/src/core/platform_directives_and_pipes", "angular2/src/compiler/template_ast", "angular2/src/compiler/template_parser", "angular2/src/facade/lang", "angular2/src/core/di", "angular2/src/compiler/template_parser", "angular2/src/compiler/html_parser", "angular2/src/compiler/template_normalizer", "angular2/src/compiler/runtime_metadata", "angular2/src/compiler/change_detector_compiler", "angular2/src/compiler/style_compiler", "angular2/src/compiler/view_compiler", "angular2/src/compiler/proto_view_compiler", "angular2/src/compiler/template_compiler", "angular2/src/core/change_detection/change_detection", "angular2/src/core/linker/compiler", "angular2/src/compiler/runtime_compiler", "angular2/src/compiler/schema/element_schema_registry", "angular2/src/compiler/schema/dom_element_schema_registry", "angular2/src/compiler/url_resolver", "angular2/src/core/change_detection/change_detection"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function __export(m) {
for (var p in m)
if (!exports.hasOwnProperty(p))
exports[p] = m[p];
}
var runtime_compiler_1 = require("angular2/src/compiler/runtime_compiler");
var template_compiler_1 = require("angular2/src/compiler/template_compiler");
exports.TemplateCompiler = template_compiler_1.TemplateCompiler;
var directive_metadata_1 = require("angular2/src/compiler/directive_metadata");
exports.CompileDirectiveMetadata = directive_metadata_1.CompileDirectiveMetadata;
exports.CompileTypeMetadata = directive_metadata_1.CompileTypeMetadata;
exports.CompileTemplateMetadata = directive_metadata_1.CompileTemplateMetadata;
var source_module_1 = require("angular2/src/compiler/source_module");
exports.SourceModule = source_module_1.SourceModule;
exports.SourceWithImports = source_module_1.SourceWithImports;
var platform_directives_and_pipes_1 = require("angular2/src/core/platform_directives_and_pipes");
exports.PLATFORM_DIRECTIVES = platform_directives_and_pipes_1.PLATFORM_DIRECTIVES;
exports.PLATFORM_PIPES = platform_directives_and_pipes_1.PLATFORM_PIPES;
__export(require("angular2/src/compiler/template_ast"));
var template_parser_1 = require("angular2/src/compiler/template_parser");
exports.TEMPLATE_TRANSFORMS = template_parser_1.TEMPLATE_TRANSFORMS;
var lang_1 = require("angular2/src/facade/lang");
var di_1 = require("angular2/src/core/di");
var template_parser_2 = require("angular2/src/compiler/template_parser");
var html_parser_1 = require("angular2/src/compiler/html_parser");
var template_normalizer_1 = require("angular2/src/compiler/template_normalizer");
var runtime_metadata_1 = require("angular2/src/compiler/runtime_metadata");
var change_detector_compiler_1 = require("angular2/src/compiler/change_detector_compiler");
var style_compiler_1 = require("angular2/src/compiler/style_compiler");
var view_compiler_1 = require("angular2/src/compiler/view_compiler");
var proto_view_compiler_1 = require("angular2/src/compiler/proto_view_compiler");
var template_compiler_2 = require("angular2/src/compiler/template_compiler");
var change_detection_1 = require("angular2/src/core/change_detection/change_detection");
var compiler_1 = require("angular2/src/core/linker/compiler");
var runtime_compiler_2 = require("angular2/src/compiler/runtime_compiler");
var element_schema_registry_1 = require("angular2/src/compiler/schema/element_schema_registry");
var dom_element_schema_registry_1 = require("angular2/src/compiler/schema/dom_element_schema_registry");
var url_resolver_1 = require("angular2/src/compiler/url_resolver");
var change_detection_2 = require("angular2/src/core/change_detection/change_detection");
function _createChangeDetectorGenConfig() {
return new change_detection_1.ChangeDetectorGenConfig(lang_1.assertionsEnabled(), false, true);
}
exports.COMPILER_PROVIDERS = lang_1.CONST_EXPR([change_detection_2.Lexer, change_detection_2.Parser, html_parser_1.HtmlParser, template_parser_2.TemplateParser, template_normalizer_1.TemplateNormalizer, runtime_metadata_1.RuntimeMetadataResolver, url_resolver_1.DEFAULT_PACKAGE_URL_PROVIDER, style_compiler_1.StyleCompiler, proto_view_compiler_1.ProtoViewCompiler, view_compiler_1.ViewCompiler, change_detector_compiler_1.ChangeDetectionCompiler, new di_1.Provider(change_detection_1.ChangeDetectorGenConfig, {
useFactory: _createChangeDetectorGenConfig,
deps: []
}), template_compiler_2.TemplateCompiler, new di_1.Provider(runtime_compiler_2.RuntimeCompiler, {useClass: runtime_compiler_1.RuntimeCompiler_}), new di_1.Provider(compiler_1.Compiler, {useExisting: runtime_compiler_2.RuntimeCompiler}), dom_element_schema_registry_1.DomElementSchemaRegistry, new di_1.Provider(element_schema_registry_1.ElementSchemaRegistry, {useExisting: dom_element_schema_registry_1.DomElementSchemaRegistry}), url_resolver_1.UrlResolver]);
global.define = __define;
return module.exports;
});
System.register("angular2/compiler", ["angular2/src/compiler/url_resolver", "angular2/src/compiler/xhr", "angular2/src/compiler/compiler"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
function __export(m) {
for (var p in m)
if (!exports.hasOwnProperty(p))
exports[p] = m[p];
}
__export(require("angular2/src/compiler/url_resolver"));
__export(require("angular2/src/compiler/xhr"));
__export(require("angular2/src/compiler/compiler"));
global.define = __define;
return module.exports;
});
System.register("angular2/src/platform/browser_common", ["angular2/src/facade/lang", "angular2/src/core/di", "angular2/core", "angular2/common", "angular2/src/core/testability/testability", "angular2/src/platform/dom/dom_adapter", "angular2/src/platform/dom/events/dom_events", "angular2/src/platform/dom/events/key_events", "angular2/src/platform/dom/events/hammer_gestures", "angular2/src/platform/dom/dom_tokens", "angular2/src/platform/dom/dom_renderer", "angular2/src/platform/dom/shared_styles_host", "angular2/src/platform/dom/shared_styles_host", "angular2/src/animate/browser_details", "angular2/src/animate/animation_builder", "angular2/src/platform/browser/browser_adapter", "angular2/src/platform/browser/testability", "angular2/src/core/profile/wtf_init", "angular2/src/platform/dom/events/event_manager", "angular2/platform/common_dom", "angular2/src/platform/dom/dom_tokens", "angular2/src/platform/browser/title", "angular2/platform/common_dom", "angular2/src/platform/browser/browser_adapter", "angular2/src/platform/browser/tools/tools"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var lang_1 = require("angular2/src/facade/lang");
var di_1 = require("angular2/src/core/di");
var core_1 = require("angular2/core");
var common_1 = require("angular2/common");
var testability_1 = require("angular2/src/core/testability/testability");
var dom_adapter_1 = require("angular2/src/platform/dom/dom_adapter");
var dom_events_1 = require("angular2/src/platform/dom/events/dom_events");
var key_events_1 = require("angular2/src/platform/dom/events/key_events");
var hammer_gestures_1 = require("angular2/src/platform/dom/events/hammer_gestures");
var dom_tokens_1 = require("angular2/src/platform/dom/dom_tokens");
var dom_renderer_1 = require("angular2/src/platform/dom/dom_renderer");
var shared_styles_host_1 = require("angular2/src/platform/dom/shared_styles_host");
var shared_styles_host_2 = require("angular2/src/platform/dom/shared_styles_host");
var browser_details_1 = require("angular2/src/animate/browser_details");
var animation_builder_1 = require("angular2/src/animate/animation_builder");
var browser_adapter_1 = require("angular2/src/platform/browser/browser_adapter");
var testability_2 = require("angular2/src/platform/browser/testability");
var wtf_init_1 = require("angular2/src/core/profile/wtf_init");
var event_manager_1 = require("angular2/src/platform/dom/events/event_manager");
var common_dom_1 = require("angular2/platform/common_dom");
var dom_tokens_2 = require("angular2/src/platform/dom/dom_tokens");
exports.DOCUMENT = dom_tokens_2.DOCUMENT;
var title_1 = require("angular2/src/platform/browser/title");
exports.Title = title_1.Title;
var common_dom_2 = require("angular2/platform/common_dom");
exports.ELEMENT_PROBE_PROVIDERS = common_dom_2.ELEMENT_PROBE_PROVIDERS;
exports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = common_dom_2.ELEMENT_PROBE_PROVIDERS_PROD_MODE;
exports.inspectNativeElement = common_dom_2.inspectNativeElement;
exports.By = common_dom_2.By;
var browser_adapter_2 = require("angular2/src/platform/browser/browser_adapter");
exports.BrowserDomAdapter = browser_adapter_2.BrowserDomAdapter;
var tools_1 = require("angular2/src/platform/browser/tools/tools");
exports.enableDebugTools = tools_1.enableDebugTools;
exports.disableDebugTools = tools_1.disableDebugTools;
exports.BROWSER_PROVIDERS = lang_1.CONST_EXPR([core_1.PLATFORM_COMMON_PROVIDERS, new di_1.Provider(core_1.PLATFORM_INITIALIZER, {
useValue: initDomAdapter,
multi: true
})]);
function _exceptionHandler() {
return new core_1.ExceptionHandler(dom_adapter_1.DOM, !lang_1.IS_DART);
}
function _document() {
return dom_adapter_1.DOM.defaultDoc();
}
exports.BROWSER_APP_COMMON_PROVIDERS = lang_1.CONST_EXPR([core_1.APPLICATION_COMMON_PROVIDERS, common_1.FORM_PROVIDERS, new di_1.Provider(core_1.PLATFORM_PIPES, {
useValue: common_1.COMMON_PIPES,
multi: true
}), new di_1.Provider(core_1.PLATFORM_DIRECTIVES, {
useValue: common_1.COMMON_DIRECTIVES,
multi: true
}), new di_1.Provider(core_1.ExceptionHandler, {
useFactory: _exceptionHandler,
deps: []
}), new di_1.Provider(dom_tokens_1.DOCUMENT, {
useFactory: _document,
deps: []
}), new di_1.Provider(event_manager_1.EVENT_MANAGER_PLUGINS, {
useClass: dom_events_1.DomEventsPlugin,
multi: true
}), new di_1.Provider(event_manager_1.EVENT_MANAGER_PLUGINS, {
useClass: key_events_1.KeyEventsPlugin,
multi: true
}), new di_1.Provider(event_manager_1.EVENT_MANAGER_PLUGINS, {
useClass: hammer_gestures_1.HammerGesturesPlugin,
multi: true
}), new di_1.Provider(dom_renderer_1.DomRootRenderer, {useClass: dom_renderer_1.DomRootRenderer_}), new di_1.Provider(core_1.RootRenderer, {useExisting: dom_renderer_1.DomRootRenderer}), new di_1.Provider(shared_styles_host_2.SharedStylesHost, {useExisting: shared_styles_host_1.DomSharedStylesHost}), shared_styles_host_1.DomSharedStylesHost, testability_1.Testability, browser_details_1.BrowserDetails, animation_builder_1.AnimationBuilder, event_manager_1.EventManager, common_dom_1.ELEMENT_PROBE_PROVIDERS]);
function initDomAdapter() {
browser_adapter_1.BrowserDomAdapter.makeCurrent();
wtf_init_1.wtfInit();
testability_2.BrowserGetTestability.init();
}
exports.initDomAdapter = initDomAdapter;
global.define = __define;
return module.exports;
});
System.register("angular2/platform/browser", ["angular2/src/core/angular_entrypoint", "angular2/src/platform/browser_common", "angular2/src/facade/lang", "angular2/src/platform/browser_common", "angular2/compiler", "angular2/core", "angular2/src/core/reflection/reflection_capabilities", "angular2/src/platform/browser/xhr_impl", "angular2/compiler", "angular2/src/core/di"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var angular_entrypoint_1 = require("angular2/src/core/angular_entrypoint");
exports.AngularEntrypoint = angular_entrypoint_1.AngularEntrypoint;
var browser_common_1 = require("angular2/src/platform/browser_common");
exports.BROWSER_PROVIDERS = browser_common_1.BROWSER_PROVIDERS;
exports.ELEMENT_PROBE_PROVIDERS = browser_common_1.ELEMENT_PROBE_PROVIDERS;
exports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = browser_common_1.ELEMENT_PROBE_PROVIDERS_PROD_MODE;
exports.inspectNativeElement = browser_common_1.inspectNativeElement;
exports.BrowserDomAdapter = browser_common_1.BrowserDomAdapter;
exports.By = browser_common_1.By;
exports.Title = browser_common_1.Title;
exports.DOCUMENT = browser_common_1.DOCUMENT;
exports.enableDebugTools = browser_common_1.enableDebugTools;
exports.disableDebugTools = browser_common_1.disableDebugTools;
var lang_1 = require("angular2/src/facade/lang");
var browser_common_2 = require("angular2/src/platform/browser_common");
var compiler_1 = require("angular2/compiler");
var core_1 = require("angular2/core");
var reflection_capabilities_1 = require("angular2/src/core/reflection/reflection_capabilities");
var xhr_impl_1 = require("angular2/src/platform/browser/xhr_impl");
var compiler_2 = require("angular2/compiler");
var di_1 = require("angular2/src/core/di");
exports.BROWSER_APP_PROVIDERS = lang_1.CONST_EXPR([browser_common_2.BROWSER_APP_COMMON_PROVIDERS, compiler_1.COMPILER_PROVIDERS, new di_1.Provider(compiler_2.XHR, {useClass: xhr_impl_1.XHRImpl})]);
function bootstrap(appComponentType, customProviders) {
core_1.reflector.reflectionCapabilities = new reflection_capabilities_1.ReflectionCapabilities();
var appProviders = lang_1.isPresent(customProviders) ? [exports.BROWSER_APP_PROVIDERS, customProviders] : exports.BROWSER_APP_PROVIDERS;
return core_1.platform(browser_common_2.BROWSER_PROVIDERS).application(appProviders).bootstrap(appComponentType);
}
exports.bootstrap = bootstrap;
global.define = __define;
return module.exports;
});
System.register("angular2/instrumentation", ["angular2/src/core/profile/profile"], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
var profile_1 = require("angular2/src/core/profile/profile");
exports.wtfCreateScope = profile_1.wtfCreateScope;
exports.wtfLeave = profile_1.wtfLeave;
exports.wtfStartTimeRange = profile_1.wtfStartTimeRange;
exports.wtfEndTimeRange = profile_1.wtfEndTimeRange;
global.define = __define;
return module.exports;
});
//# sourceMappingURLDisabled=angular2.js.map