25643 lines
1.0 MiB
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.dev.js.map |