diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index e20a968..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,11 +0,0 @@
-# http://editorconfig.org
-
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
\ No newline at end of file
diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index 1025ddc..0000000
--- a/.eslintrc
+++ /dev/null
@@ -1,200 +0,0 @@
-{
- "env": {
- "browser": 2,
- "node": 2,
- "mocha": 2,
- "es6": 2
- },
- "ecmaFeatures": {
- "modules": true
- },
- "globals": {
- "_": 2,
- "$": 2,
- "angular": 2,
- "jQuery": 2
- },
- "rules": {
- // Possible Errors
- "comma-dangle": 2,
- // no-comma-dangle - (deprecated)
- "no-cond-assign": [2, "always"],
- "no-console": 2,
- "no-constant-condition": 2,
- "no-control-regex": 2,
- "no-debugger": 2,
- "no-dupe-keys": 2,
- "no-dupe-args": 2,
- "no-duplicate-case": 2,
- "no-empty-character-class": 2,
- // no-empty-class - (deprecated)
- "no-empty": 2,
- "no-ex-assign": 2,
- "no-extra-boolean-cast": 2,
- "no-extra-parens": 2,
- "no-extra-semi": 2,
- "no-func-assign": 2,
- "no-inner-declarations": 2,
- "no-invalid-regexp": 2,
- "no-irregular-whitespace": 2,
- "no-negated-in-lhs": 2,
- "no-obj-calls": 2,
- "no-regex-spaces": 2,
- "no-sparse-arrays": 2,
- "no-unreachable": 2,
- "use-isnan": 2,
- "valid-jsdoc": 2,
- "valid-typeof": 2,
- "no-unexpected-multiline": 2,
-
- // Best Practices
- // not sure
- "accessor-pairs": [2, {"getWithoutSet": false, "setWithoutGet": true}],
- "block-scoped-var": 2,
- "complexity": [2, 6],
- "consistent-return": 2,
- "curly": 2,
- "default-case": 2,
- "dot-notation": 2,
- // not good for chain calls, but not for properties
- "dot-location": [2, "property"],
- "eqeqeq": 2,
- "guard-for-in": 2,
- "no-alert": 2,
- "no-caller": 2,
- "no-div-regex": 2,
- "no-else-return": 2,
- "no-empty-label": 2,
- "no-eq-null": 2,
- "no-eval": 2,
- "no-extend-native": 2,
- "no-extra-bind": 2,
- "no-fallthrough": 2,
- "no-floating-decimal": 2,
- "no-implied-eval": 2,
- "no-iterator": 2,
- "no-labels": 2,
- "no-lone-blocks": 2,
- "no-loop-func": 2,
- "no-multi-spaces": 2,
- "no-multi-str": 2,
- "no-native-reassign": 2,
- "no-new": 2,
- "no-new-func": 2,
- "no-new-wrappers": 2,
- "no-octal": 2,
- "no-octal-escape": 2,
- "no-param-reassign": 2,
- "no-process-env": 2,
- "no-proto": 2,
- "no-redeclare": 2,
- "no-return-assign": 2,
- "no-script-url": 2,
- "no-self-compare": 2,
- "no-sequences": 2,
- "no-throw-literal": 2,
- "no-unused-expressions": 2,
- "no-void": 2,
- "no-warning-comments": [1, { "terms": ["todo", "fixme"], "location": "anywhere" }],
- "no-with": 2,
- "radix": 2,
- "vars-on-top": 0,
- "wrap-iife": [2, "inside"],
- "yoda": [2, "never"],
-
- // Strict Mode
- "strict": [2, "global"],
-
- // Variables
- "no-catch-shadow": 2,
- "no-delete-var": 2,
- "no-label-var": 2,
- "no-shadow": 2,
- "no-shadow-restricted-names": 2,
- "no-undef": 2,
- "no-undef-init": 2,
- "no-undefined": 2,
- "no-unused-vars": 2,
- "no-use-before-define": [2, "nofunc"],
-
- // Node.js
- "handle-callback-err": [2, "^.*(e|E)rr" ],
- "no-mixed-requires": [2, true],
- "no-new-require": 2,
- "no-path-concat": 2,
- "no-process-exit": 2,
- "no-sync": 2,
-
- // Stylistic Issues
- "array-bracket-spacing": [2, "never"],
- "brace-style": [2, "1tbs", { "allowSingleLine": true }],
- "camelcase": 2,
- "comma-spacing": [2, {"before": false, "after": true}],
- "comma-style": [2, "last"],
- "computed-property-spacing": [2, "never"],
- "consistent-this": [2, "self"],
- // not sure
- "eol-last": 0,
- "func-names": 0,
- "func-style": [2, "declaration"],
- "indent": [2, 2],
- "key-spacing": [2, { "beforeColon": false, "afterColon": true}],
- "max-nested-callbacks": [2, 3],
- "new-cap": [2, {"newIsCap": true, "capIsNew": true, "capIsNewExceptions":[
- "ObjectId",
- "Object",
- "Function",
- "Number",
- "String",
- "Boolean",
- "Date",
- "Array",
- "Symbol",
- "RegExp"
- ]}],
- "new-parens": 2,
- "newline-after-var": 0,
- "no-array-constructor": 2,
- "no-inline-comments": 2,
- "no-lonely-if": 2,
- "no-mixed-spaces-and-tabs": 2,
- "no-multiple-empty-lines": [2, {"max": 1}],
- "no-nested-ternary": 2,
- "no-new-object": 2,
- "no-spaced-func": 2,
- "no-ternary": 0,
- "no-trailing-spaces": 2,
- "no-underscore-dangle": 2,
- "no-unneeded-ternary": 2,
- "object-curly-spacing": [2, "never"],
- "one-var": [2, {
- "var": "never", // Exactly one var declaration per function
- "let": "never", // Exactly one let declaration per block
- "const": "never" // Exactly one declarator per const declaration per block
- }],
- "operator-assignment": [1, "always"],
- "operator-linebreak": [2, "after"],
- "padded-blocks": [2, "never"],
- "quote-props": [2, "as-needed"],
- "quotes": [2, "single", "avoid-escape"],
- "semi": [2, "always"],
- "semi-spacing": 2,
- // "sort-vars": [1, { "ignoreCase": true }],
- "space-after-keywords": [2, "always" ],
- "space-before-blocks": [2, "always"],
- "space-in-parens": [2, "never"],
- "space-infix-ops": 2,
- "space-return-throw-case": 2,
- "space-unary-ops": [2, { "words": true, "nonwords": false }],
- "spaced-comment": 0,
- "wrap-regexp": 0,
-
- // Legacy
- "max-len": [1, 120, 4],
- // todo: apply max-params
- "max-params": [0, 3],
- // todo: apply max-statements
- "max-statements": [2, 30],
- "no-bitwise": 2
- }
-}
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 21fa4b6..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,20 +0,0 @@
-# Dependency directory
-# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
-/node_modules
-npm-debug.log
-
-# type script artifacts
-/typings
-
-# WebStorm
-.idea
-
-# ignore build and dist for now
-/dist
-
-/demo/**/*.js
-/demo/**/*.js.map
-/components/**/*.js
-/components/**/*.js.map
-
-/logs
diff --git a/angular2-bootstrap-demo.js b/angular2-bootstrap-demo.js
new file mode 100644
index 0000000..8d6e873
--- /dev/null
+++ b/angular2-bootstrap-demo.js
@@ -0,0 +1,37516 @@
+webpackJsonp([1],[
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 platform_browser_dynamic_1 = __webpack_require__(401);
+ var core_1 = __webpack_require__(1);
+ var common_1 = __webpack_require__(6);
+ var file_upload_section_1 = __webpack_require__(454);
+ var gettingStarted = __webpack_require__(426);
+ var DemoComponent = (function () {
+ function DemoComponent() {
+ }
+ DemoComponent = __decorate([
+ core_1.Component({
+ selector: 'app',
+ template: "\n \n\n
\n \n\n \n
\n\n \n ",
+ directives: [
+ common_1.NgClass,
+ file_upload_section_1.FileUploadSectionComponent
+ ]
+ }),
+ __metadata('design:paramtypes', [])
+ ], DemoComponent);
+ return DemoComponent;
+ }());
+ exports.DemoComponent = DemoComponent;
+ platform_browser_dynamic_1.bootstrap(DemoComponent);
+
+
+/***/ },
+/* 1 */,
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(module) {//! moment.js
+ //! version : 2.13.0
+ //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+ //! license : MIT
+ //! momentjs.com
+
+ ;(function (global, factory) {
+ true ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ global.moment = factory()
+ }(this, function () { 'use strict';
+
+ var hookCallback;
+
+ function utils_hooks__hooks () {
+ return hookCallback.apply(null, arguments);
+ }
+
+ // This is done to register the method called with moment()
+ // without creating circular dependencies.
+ function setHookCallback (callback) {
+ hookCallback = callback;
+ }
+
+ function isArray(input) {
+ return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
+ }
+
+ function isDate(input) {
+ return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
+ }
+
+ function map(arr, fn) {
+ var res = [], i;
+ for (i = 0; i < arr.length; ++i) {
+ res.push(fn(arr[i], i));
+ }
+ return res;
+ }
+
+ function hasOwnProp(a, b) {
+ return Object.prototype.hasOwnProperty.call(a, b);
+ }
+
+ function extend(a, b) {
+ for (var i in b) {
+ if (hasOwnProp(b, i)) {
+ a[i] = b[i];
+ }
+ }
+
+ if (hasOwnProp(b, 'toString')) {
+ a.toString = b.toString;
+ }
+
+ if (hasOwnProp(b, 'valueOf')) {
+ a.valueOf = b.valueOf;
+ }
+
+ return a;
+ }
+
+ function create_utc__createUTC (input, format, locale, strict) {
+ return createLocalOrUTC(input, format, locale, strict, true).utc();
+ }
+
+ function defaultParsingFlags() {
+ // We need to deep clone this object.
+ return {
+ empty : false,
+ unusedTokens : [],
+ unusedInput : [],
+ overflow : -2,
+ charsLeftOver : 0,
+ nullInput : false,
+ invalidMonth : null,
+ invalidFormat : false,
+ userInvalidated : false,
+ iso : false,
+ parsedDateParts : [],
+ meridiem : null
+ };
+ }
+
+ function getParsingFlags(m) {
+ if (m._pf == null) {
+ m._pf = defaultParsingFlags();
+ }
+ return m._pf;
+ }
+
+ var some;
+ if (Array.prototype.some) {
+ some = Array.prototype.some;
+ } else {
+ some = function (fun) {
+ var t = Object(this);
+ var len = t.length >>> 0;
+
+ for (var i = 0; i < len; i++) {
+ if (i in t && fun.call(this, t[i], i, t)) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+ }
+
+ function valid__isValid(m) {
+ if (m._isValid == null) {
+ var flags = getParsingFlags(m);
+ var parsedParts = some.call(flags.parsedDateParts, function (i) {
+ return i != null;
+ });
+ m._isValid = !isNaN(m._d.getTime()) &&
+ flags.overflow < 0 &&
+ !flags.empty &&
+ !flags.invalidMonth &&
+ !flags.invalidWeekday &&
+ !flags.nullInput &&
+ !flags.invalidFormat &&
+ !flags.userInvalidated &&
+ (!flags.meridiem || (flags.meridiem && parsedParts));
+
+ if (m._strict) {
+ m._isValid = m._isValid &&
+ flags.charsLeftOver === 0 &&
+ flags.unusedTokens.length === 0 &&
+ flags.bigHour === undefined;
+ }
+ }
+ return m._isValid;
+ }
+
+ function valid__createInvalid (flags) {
+ var m = create_utc__createUTC(NaN);
+ if (flags != null) {
+ extend(getParsingFlags(m), flags);
+ }
+ else {
+ getParsingFlags(m).userInvalidated = true;
+ }
+
+ return m;
+ }
+
+ function isUndefined(input) {
+ return input === void 0;
+ }
+
+ // Plugins that add properties should also add the key here (null value),
+ // so we can properly clone ourselves.
+ var momentProperties = utils_hooks__hooks.momentProperties = [];
+
+ function copyConfig(to, from) {
+ var i, prop, val;
+
+ if (!isUndefined(from._isAMomentObject)) {
+ to._isAMomentObject = from._isAMomentObject;
+ }
+ if (!isUndefined(from._i)) {
+ to._i = from._i;
+ }
+ if (!isUndefined(from._f)) {
+ to._f = from._f;
+ }
+ if (!isUndefined(from._l)) {
+ to._l = from._l;
+ }
+ if (!isUndefined(from._strict)) {
+ to._strict = from._strict;
+ }
+ if (!isUndefined(from._tzm)) {
+ to._tzm = from._tzm;
+ }
+ if (!isUndefined(from._isUTC)) {
+ to._isUTC = from._isUTC;
+ }
+ if (!isUndefined(from._offset)) {
+ to._offset = from._offset;
+ }
+ if (!isUndefined(from._pf)) {
+ to._pf = getParsingFlags(from);
+ }
+ if (!isUndefined(from._locale)) {
+ to._locale = from._locale;
+ }
+
+ if (momentProperties.length > 0) {
+ for (i in momentProperties) {
+ prop = momentProperties[i];
+ val = from[prop];
+ if (!isUndefined(val)) {
+ to[prop] = val;
+ }
+ }
+ }
+
+ return to;
+ }
+
+ var updateInProgress = false;
+
+ // Moment prototype object
+ function Moment(config) {
+ copyConfig(this, config);
+ this._d = new Date(config._d != null ? config._d.getTime() : NaN);
+ // Prevent infinite loop in case updateOffset creates new moment
+ // objects.
+ if (updateInProgress === false) {
+ updateInProgress = true;
+ utils_hooks__hooks.updateOffset(this);
+ updateInProgress = false;
+ }
+ }
+
+ function isMoment (obj) {
+ return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
+ }
+
+ function absFloor (number) {
+ if (number < 0) {
+ return Math.ceil(number);
+ } else {
+ return Math.floor(number);
+ }
+ }
+
+ function toInt(argumentForCoercion) {
+ var coercedNumber = +argumentForCoercion,
+ value = 0;
+
+ if (coercedNumber !== 0 && isFinite(coercedNumber)) {
+ value = absFloor(coercedNumber);
+ }
+
+ return value;
+ }
+
+ // compare two arrays, return the number of differences
+ function compareArrays(array1, array2, dontConvert) {
+ var len = Math.min(array1.length, array2.length),
+ lengthDiff = Math.abs(array1.length - array2.length),
+ diffs = 0,
+ i;
+ for (i = 0; i < len; i++) {
+ if ((dontConvert && array1[i] !== array2[i]) ||
+ (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
+ diffs++;
+ }
+ }
+ return diffs + lengthDiff;
+ }
+
+ function warn(msg) {
+ if (utils_hooks__hooks.suppressDeprecationWarnings === false &&
+ (typeof console !== 'undefined') && console.warn) {
+ console.warn('Deprecation warning: ' + msg);
+ }
+ }
+
+ function deprecate(msg, fn) {
+ var firstTime = true;
+
+ return extend(function () {
+ if (utils_hooks__hooks.deprecationHandler != null) {
+ utils_hooks__hooks.deprecationHandler(null, msg);
+ }
+ if (firstTime) {
+ warn(msg + '\nArguments: ' + Array.prototype.slice.call(arguments).join(', ') + '\n' + (new Error()).stack);
+ firstTime = false;
+ }
+ return fn.apply(this, arguments);
+ }, fn);
+ }
+
+ var deprecations = {};
+
+ function deprecateSimple(name, msg) {
+ if (utils_hooks__hooks.deprecationHandler != null) {
+ utils_hooks__hooks.deprecationHandler(name, msg);
+ }
+ if (!deprecations[name]) {
+ warn(msg);
+ deprecations[name] = true;
+ }
+ }
+
+ utils_hooks__hooks.suppressDeprecationWarnings = false;
+ utils_hooks__hooks.deprecationHandler = null;
+
+ function isFunction(input) {
+ return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
+ }
+
+ function isObject(input) {
+ return Object.prototype.toString.call(input) === '[object Object]';
+ }
+
+ function locale_set__set (config) {
+ var prop, i;
+ for (i in config) {
+ prop = config[i];
+ if (isFunction(prop)) {
+ this[i] = prop;
+ } else {
+ this['_' + i] = prop;
+ }
+ }
+ this._config = config;
+ // Lenient ordinal parsing accepts just a number in addition to
+ // number + (possibly) stuff coming from _ordinalParseLenient.
+ this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
+ }
+
+ function mergeConfigs(parentConfig, childConfig) {
+ var res = extend({}, parentConfig), prop;
+ for (prop in childConfig) {
+ if (hasOwnProp(childConfig, prop)) {
+ if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
+ res[prop] = {};
+ extend(res[prop], parentConfig[prop]);
+ extend(res[prop], childConfig[prop]);
+ } else if (childConfig[prop] != null) {
+ res[prop] = childConfig[prop];
+ } else {
+ delete res[prop];
+ }
+ }
+ }
+ return res;
+ }
+
+ function Locale(config) {
+ if (config != null) {
+ this.set(config);
+ }
+ }
+
+ var keys;
+
+ if (Object.keys) {
+ keys = Object.keys;
+ } else {
+ keys = function (obj) {
+ var i, res = [];
+ for (i in obj) {
+ if (hasOwnProp(obj, i)) {
+ res.push(i);
+ }
+ }
+ return res;
+ };
+ }
+
+ // internal storage for locale config files
+ var locales = {};
+ var globalLocale;
+
+ function normalizeLocale(key) {
+ return key ? key.toLowerCase().replace('_', '-') : key;
+ }
+
+ // pick the locale from the array
+ // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
+ // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
+ function chooseLocale(names) {
+ var i = 0, j, next, locale, split;
+
+ while (i < names.length) {
+ split = normalizeLocale(names[i]).split('-');
+ j = split.length;
+ next = normalizeLocale(names[i + 1]);
+ next = next ? next.split('-') : null;
+ while (j > 0) {
+ locale = loadLocale(split.slice(0, j).join('-'));
+ if (locale) {
+ return locale;
+ }
+ if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
+ //the next array item is better than a shallower substring of this one
+ break;
+ }
+ j--;
+ }
+ i++;
+ }
+ return null;
+ }
+
+ function loadLocale(name) {
+ var oldLocale = null;
+ // TODO: Find a better way to register and load all the locales in Node
+ if (!locales[name] && (typeof module !== 'undefined') &&
+ module && module.exports) {
+ try {
+ oldLocale = globalLocale._abbr;
+ __webpack_require__(427)("./" + name);
+ // because defineLocale currently also sets the global locale, we
+ // want to undo that for lazy loaded locales
+ locale_locales__getSetGlobalLocale(oldLocale);
+ } catch (e) { }
+ }
+ return locales[name];
+ }
+
+ // This function will load locale and then set the global locale. If
+ // no arguments are passed in, it will simply return the current global
+ // locale key.
+ function locale_locales__getSetGlobalLocale (key, values) {
+ var data;
+ if (key) {
+ if (isUndefined(values)) {
+ data = locale_locales__getLocale(key);
+ }
+ else {
+ data = defineLocale(key, values);
+ }
+
+ if (data) {
+ // moment.duration._locale = moment._locale = data;
+ globalLocale = data;
+ }
+ }
+
+ return globalLocale._abbr;
+ }
+
+ function defineLocale (name, config) {
+ if (config !== null) {
+ config.abbr = name;
+ if (locales[name] != null) {
+ deprecateSimple('defineLocaleOverride',
+ 'use moment.updateLocale(localeName, config) to change ' +
+ 'an existing locale. moment.defineLocale(localeName, ' +
+ 'config) should only be used for creating a new locale');
+ config = mergeConfigs(locales[name]._config, config);
+ } else if (config.parentLocale != null) {
+ if (locales[config.parentLocale] != null) {
+ config = mergeConfigs(locales[config.parentLocale]._config, config);
+ } else {
+ // treat as if there is no base config
+ deprecateSimple('parentLocaleUndefined',
+ 'specified parentLocale is not defined yet');
+ }
+ }
+ locales[name] = new Locale(config);
+
+ // backwards compat for now: also set the locale
+ locale_locales__getSetGlobalLocale(name);
+
+ return locales[name];
+ } else {
+ // useful for testing
+ delete locales[name];
+ return null;
+ }
+ }
+
+ function updateLocale(name, config) {
+ if (config != null) {
+ var locale;
+ if (locales[name] != null) {
+ config = mergeConfigs(locales[name]._config, config);
+ }
+ locale = new Locale(config);
+ locale.parentLocale = locales[name];
+ locales[name] = locale;
+
+ // backwards compat for now: also set the locale
+ locale_locales__getSetGlobalLocale(name);
+ } else {
+ // pass null for config to unupdate, useful for tests
+ if (locales[name] != null) {
+ if (locales[name].parentLocale != null) {
+ locales[name] = locales[name].parentLocale;
+ } else if (locales[name] != null) {
+ delete locales[name];
+ }
+ }
+ }
+ return locales[name];
+ }
+
+ // returns locale data
+ function locale_locales__getLocale (key) {
+ var locale;
+
+ if (key && key._locale && key._locale._abbr) {
+ key = key._locale._abbr;
+ }
+
+ if (!key) {
+ return globalLocale;
+ }
+
+ if (!isArray(key)) {
+ //short-circuit everything else
+ locale = loadLocale(key);
+ if (locale) {
+ return locale;
+ }
+ key = [key];
+ }
+
+ return chooseLocale(key);
+ }
+
+ function locale_locales__listLocales() {
+ return keys(locales);
+ }
+
+ var aliases = {};
+
+ function addUnitAlias (unit, shorthand) {
+ var lowerCase = unit.toLowerCase();
+ aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
+ }
+
+ function normalizeUnits(units) {
+ return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
+ }
+
+ function normalizeObjectUnits(inputObject) {
+ var normalizedInput = {},
+ normalizedProp,
+ prop;
+
+ for (prop in inputObject) {
+ if (hasOwnProp(inputObject, prop)) {
+ normalizedProp = normalizeUnits(prop);
+ if (normalizedProp) {
+ normalizedInput[normalizedProp] = inputObject[prop];
+ }
+ }
+ }
+
+ return normalizedInput;
+ }
+
+ function makeGetSet (unit, keepTime) {
+ return function (value) {
+ if (value != null) {
+ get_set__set(this, unit, value);
+ utils_hooks__hooks.updateOffset(this, keepTime);
+ return this;
+ } else {
+ return get_set__get(this, unit);
+ }
+ };
+ }
+
+ function get_set__get (mom, unit) {
+ return mom.isValid() ?
+ mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
+ }
+
+ function get_set__set (mom, unit, value) {
+ if (mom.isValid()) {
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
+ }
+ }
+
+ // MOMENTS
+
+ function getSet (units, value) {
+ var unit;
+ if (typeof units === 'object') {
+ for (unit in units) {
+ this.set(unit, units[unit]);
+ }
+ } else {
+ units = normalizeUnits(units);
+ if (isFunction(this[units])) {
+ return this[units](value);
+ }
+ }
+ return this;
+ }
+
+ function zeroFill(number, targetLength, forceSign) {
+ var absNumber = '' + Math.abs(number),
+ zerosToFill = targetLength - absNumber.length,
+ sign = number >= 0;
+ return (sign ? (forceSign ? '+' : '') : '-') +
+ Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
+ }
+
+ var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
+
+ var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
+
+ var formatFunctions = {};
+
+ var formatTokenFunctions = {};
+
+ // token: 'M'
+ // padded: ['MM', 2]
+ // ordinal: 'Mo'
+ // callback: function () { this.month() + 1 }
+ function addFormatToken (token, padded, ordinal, callback) {
+ var func = callback;
+ if (typeof callback === 'string') {
+ func = function () {
+ return this[callback]();
+ };
+ }
+ if (token) {
+ formatTokenFunctions[token] = func;
+ }
+ if (padded) {
+ formatTokenFunctions[padded[0]] = function () {
+ return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
+ };
+ }
+ if (ordinal) {
+ formatTokenFunctions[ordinal] = function () {
+ return this.localeData().ordinal(func.apply(this, arguments), token);
+ };
+ }
+ }
+
+ function removeFormattingTokens(input) {
+ if (input.match(/\[[\s\S]/)) {
+ return input.replace(/^\[|\]$/g, '');
+ }
+ return input.replace(/\\/g, '');
+ }
+
+ function makeFormatFunction(format) {
+ var array = format.match(formattingTokens), i, length;
+
+ for (i = 0, length = array.length; i < length; i++) {
+ if (formatTokenFunctions[array[i]]) {
+ array[i] = formatTokenFunctions[array[i]];
+ } else {
+ array[i] = removeFormattingTokens(array[i]);
+ }
+ }
+
+ return function (mom) {
+ var output = '', i;
+ for (i = 0; i < length; i++) {
+ output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
+ }
+ return output;
+ };
+ }
+
+ // format date using native date object
+ function formatMoment(m, format) {
+ if (!m.isValid()) {
+ return m.localeData().invalidDate();
+ }
+
+ format = expandFormat(format, m.localeData());
+ formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
+
+ return formatFunctions[format](m);
+ }
+
+ function expandFormat(format, locale) {
+ var i = 5;
+
+ function replaceLongDateFormatTokens(input) {
+ return locale.longDateFormat(input) || input;
+ }
+
+ localFormattingTokens.lastIndex = 0;
+ while (i >= 0 && localFormattingTokens.test(format)) {
+ format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
+ localFormattingTokens.lastIndex = 0;
+ i -= 1;
+ }
+
+ return format;
+ }
+
+ var match1 = /\d/; // 0 - 9
+ var match2 = /\d\d/; // 00 - 99
+ var match3 = /\d{3}/; // 000 - 999
+ var match4 = /\d{4}/; // 0000 - 9999
+ var match6 = /[+-]?\d{6}/; // -999999 - 999999
+ var match1to2 = /\d\d?/; // 0 - 99
+ var match3to4 = /\d\d\d\d?/; // 999 - 9999
+ var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999
+ var match1to3 = /\d{1,3}/; // 0 - 999
+ var match1to4 = /\d{1,4}/; // 0 - 9999
+ var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
+
+ var matchUnsigned = /\d+/; // 0 - inf
+ var matchSigned = /[+-]?\d+/; // -inf - inf
+
+ var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
+ var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
+
+ var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
+
+ // any word (or two) characters or numbers including two/three word month in arabic.
+ // includes scottish gaelic two word and hyphenated months
+ var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
+
+
+ var regexes = {};
+
+ function addRegexToken (token, regex, strictRegex) {
+ regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
+ return (isStrict && strictRegex) ? strictRegex : regex;
+ };
+ }
+
+ function getParseRegexForToken (token, config) {
+ if (!hasOwnProp(regexes, token)) {
+ return new RegExp(unescapeFormat(token));
+ }
+
+ return regexes[token](config._strict, config._locale);
+ }
+
+ // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
+ function unescapeFormat(s) {
+ return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
+ return p1 || p2 || p3 || p4;
+ }));
+ }
+
+ function regexEscape(s) {
+ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+ }
+
+ var tokens = {};
+
+ function addParseToken (token, callback) {
+ var i, func = callback;
+ if (typeof token === 'string') {
+ token = [token];
+ }
+ if (typeof callback === 'number') {
+ func = function (input, array) {
+ array[callback] = toInt(input);
+ };
+ }
+ for (i = 0; i < token.length; i++) {
+ tokens[token[i]] = func;
+ }
+ }
+
+ function addWeekParseToken (token, callback) {
+ addParseToken(token, function (input, array, config, token) {
+ config._w = config._w || {};
+ callback(input, config._w, config, token);
+ });
+ }
+
+ function addTimeToArrayFromToken(token, input, config) {
+ if (input != null && hasOwnProp(tokens, token)) {
+ tokens[token](input, config._a, config, token);
+ }
+ }
+
+ var YEAR = 0;
+ var MONTH = 1;
+ var DATE = 2;
+ var HOUR = 3;
+ var MINUTE = 4;
+ var SECOND = 5;
+ var MILLISECOND = 6;
+ var WEEK = 7;
+ var WEEKDAY = 8;
+
+ var indexOf;
+
+ if (Array.prototype.indexOf) {
+ indexOf = Array.prototype.indexOf;
+ } else {
+ indexOf = function (o) {
+ // I know
+ var i;
+ for (i = 0; i < this.length; ++i) {
+ if (this[i] === o) {
+ return i;
+ }
+ }
+ return -1;
+ };
+ }
+
+ function daysInMonth(year, month) {
+ return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
+ }
+
+ // FORMATTING
+
+ addFormatToken('M', ['MM', 2], 'Mo', function () {
+ return this.month() + 1;
+ });
+
+ addFormatToken('MMM', 0, 0, function (format) {
+ return this.localeData().monthsShort(this, format);
+ });
+
+ addFormatToken('MMMM', 0, 0, function (format) {
+ return this.localeData().months(this, format);
+ });
+
+ // ALIASES
+
+ addUnitAlias('month', 'M');
+
+ // PARSING
+
+ addRegexToken('M', match1to2);
+ addRegexToken('MM', match1to2, match2);
+ addRegexToken('MMM', function (isStrict, locale) {
+ return locale.monthsShortRegex(isStrict);
+ });
+ addRegexToken('MMMM', function (isStrict, locale) {
+ return locale.monthsRegex(isStrict);
+ });
+
+ addParseToken(['M', 'MM'], function (input, array) {
+ array[MONTH] = toInt(input) - 1;
+ });
+
+ addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
+ var month = config._locale.monthsParse(input, token, config._strict);
+ // if we didn't find a month name, mark the date as invalid.
+ if (month != null) {
+ array[MONTH] = month;
+ } else {
+ getParsingFlags(config).invalidMonth = input;
+ }
+ });
+
+ // LOCALES
+
+ var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/;
+ var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
+ function localeMonths (m, format) {
+ return isArray(this._months) ? this._months[m.month()] :
+ this._months[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
+ }
+
+ var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
+ function localeMonthsShort (m, format) {
+ return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
+ this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
+ }
+
+ function units_month__handleStrictParse(monthName, format, strict) {
+ var i, ii, mom, llc = monthName.toLocaleLowerCase();
+ if (!this._monthsParse) {
+ // this is not used
+ this._monthsParse = [];
+ this._longMonthsParse = [];
+ this._shortMonthsParse = [];
+ for (i = 0; i < 12; ++i) {
+ mom = create_utc__createUTC([2000, i]);
+ this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
+ this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
+ }
+ }
+
+ if (strict) {
+ if (format === 'MMM') {
+ ii = indexOf.call(this._shortMonthsParse, llc);
+ return ii !== -1 ? ii : null;
+ } else {
+ ii = indexOf.call(this._longMonthsParse, llc);
+ return ii !== -1 ? ii : null;
+ }
+ } else {
+ if (format === 'MMM') {
+ ii = indexOf.call(this._shortMonthsParse, llc);
+ if (ii !== -1) {
+ return ii;
+ }
+ ii = indexOf.call(this._longMonthsParse, llc);
+ return ii !== -1 ? ii : null;
+ } else {
+ ii = indexOf.call(this._longMonthsParse, llc);
+ if (ii !== -1) {
+ return ii;
+ }
+ ii = indexOf.call(this._shortMonthsParse, llc);
+ return ii !== -1 ? ii : null;
+ }
+ }
+ }
+
+ function localeMonthsParse (monthName, format, strict) {
+ var i, mom, regex;
+
+ if (this._monthsParseExact) {
+ return units_month__handleStrictParse.call(this, monthName, format, strict);
+ }
+
+ if (!this._monthsParse) {
+ this._monthsParse = [];
+ this._longMonthsParse = [];
+ this._shortMonthsParse = [];
+ }
+
+ // TODO: add sorting
+ // Sorting makes sure if one month (or abbr) is a prefix of another
+ // see sorting in computeMonthsParse
+ for (i = 0; i < 12; i++) {
+ // make the regex if we don't have it already
+ mom = create_utc__createUTC([2000, i]);
+ if (strict && !this._longMonthsParse[i]) {
+ this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
+ this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
+ }
+ if (!strict && !this._monthsParse[i]) {
+ regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
+ this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
+ return i;
+ } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
+ return i;
+ } else if (!strict && this._monthsParse[i].test(monthName)) {
+ return i;
+ }
+ }
+ }
+
+ // MOMENTS
+
+ function setMonth (mom, value) {
+ var dayOfMonth;
+
+ if (!mom.isValid()) {
+ // No op
+ return mom;
+ }
+
+ if (typeof value === 'string') {
+ if (/^\d+$/.test(value)) {
+ value = toInt(value);
+ } else {
+ value = mom.localeData().monthsParse(value);
+ // TODO: Another silent failure?
+ if (typeof value !== 'number') {
+ return mom;
+ }
+ }
+ }
+
+ dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
+ return mom;
+ }
+
+ function getSetMonth (value) {
+ if (value != null) {
+ setMonth(this, value);
+ utils_hooks__hooks.updateOffset(this, true);
+ return this;
+ } else {
+ return get_set__get(this, 'Month');
+ }
+ }
+
+ function getDaysInMonth () {
+ return daysInMonth(this.year(), this.month());
+ }
+
+ var defaultMonthsShortRegex = matchWord;
+ function monthsShortRegex (isStrict) {
+ if (this._monthsParseExact) {
+ if (!hasOwnProp(this, '_monthsRegex')) {
+ computeMonthsParse.call(this);
+ }
+ if (isStrict) {
+ return this._monthsShortStrictRegex;
+ } else {
+ return this._monthsShortRegex;
+ }
+ } else {
+ return this._monthsShortStrictRegex && isStrict ?
+ this._monthsShortStrictRegex : this._monthsShortRegex;
+ }
+ }
+
+ var defaultMonthsRegex = matchWord;
+ function monthsRegex (isStrict) {
+ if (this._monthsParseExact) {
+ if (!hasOwnProp(this, '_monthsRegex')) {
+ computeMonthsParse.call(this);
+ }
+ if (isStrict) {
+ return this._monthsStrictRegex;
+ } else {
+ return this._monthsRegex;
+ }
+ } else {
+ return this._monthsStrictRegex && isStrict ?
+ this._monthsStrictRegex : this._monthsRegex;
+ }
+ }
+
+ function computeMonthsParse () {
+ function cmpLenRev(a, b) {
+ return b.length - a.length;
+ }
+
+ var shortPieces = [], longPieces = [], mixedPieces = [],
+ i, mom;
+ for (i = 0; i < 12; i++) {
+ // make the regex if we don't have it already
+ mom = create_utc__createUTC([2000, i]);
+ shortPieces.push(this.monthsShort(mom, ''));
+ longPieces.push(this.months(mom, ''));
+ mixedPieces.push(this.months(mom, ''));
+ mixedPieces.push(this.monthsShort(mom, ''));
+ }
+ // Sorting makes sure if one month (or abbr) is a prefix of another it
+ // will match the longer piece.
+ shortPieces.sort(cmpLenRev);
+ longPieces.sort(cmpLenRev);
+ mixedPieces.sort(cmpLenRev);
+ for (i = 0; i < 12; i++) {
+ shortPieces[i] = regexEscape(shortPieces[i]);
+ longPieces[i] = regexEscape(longPieces[i]);
+ mixedPieces[i] = regexEscape(mixedPieces[i]);
+ }
+
+ this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
+ this._monthsShortRegex = this._monthsRegex;
+ this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
+ this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
+ }
+
+ function checkOverflow (m) {
+ var overflow;
+ var a = m._a;
+
+ if (a && getParsingFlags(m).overflow === -2) {
+ overflow =
+ a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
+ a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
+ a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
+ a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
+ a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
+ a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
+ -1;
+
+ if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
+ overflow = DATE;
+ }
+ if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
+ overflow = WEEK;
+ }
+ if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
+ overflow = WEEKDAY;
+ }
+
+ getParsingFlags(m).overflow = overflow;
+ }
+
+ return m;
+ }
+
+ // iso 8601 regex
+ // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
+ var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
+ var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
+
+ var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
+
+ var isoDates = [
+ ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
+ ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
+ ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
+ ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
+ ['YYYY-DDD', /\d{4}-\d{3}/],
+ ['YYYY-MM', /\d{4}-\d\d/, false],
+ ['YYYYYYMMDD', /[+-]\d{10}/],
+ ['YYYYMMDD', /\d{8}/],
+ // YYYYMM is NOT allowed by the standard
+ ['GGGG[W]WWE', /\d{4}W\d{3}/],
+ ['GGGG[W]WW', /\d{4}W\d{2}/, false],
+ ['YYYYDDD', /\d{7}/]
+ ];
+
+ // iso time formats and regexes
+ var isoTimes = [
+ ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
+ ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
+ ['HH:mm:ss', /\d\d:\d\d:\d\d/],
+ ['HH:mm', /\d\d:\d\d/],
+ ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
+ ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
+ ['HHmmss', /\d\d\d\d\d\d/],
+ ['HHmm', /\d\d\d\d/],
+ ['HH', /\d\d/]
+ ];
+
+ var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
+
+ // date from iso format
+ function configFromISO(config) {
+ var i, l,
+ string = config._i,
+ match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
+ allowTime, dateFormat, timeFormat, tzFormat;
+
+ if (match) {
+ getParsingFlags(config).iso = true;
+
+ for (i = 0, l = isoDates.length; i < l; i++) {
+ if (isoDates[i][1].exec(match[1])) {
+ dateFormat = isoDates[i][0];
+ allowTime = isoDates[i][2] !== false;
+ break;
+ }
+ }
+ if (dateFormat == null) {
+ config._isValid = false;
+ return;
+ }
+ if (match[3]) {
+ for (i = 0, l = isoTimes.length; i < l; i++) {
+ if (isoTimes[i][1].exec(match[3])) {
+ // match[2] should be 'T' or space
+ timeFormat = (match[2] || ' ') + isoTimes[i][0];
+ break;
+ }
+ }
+ if (timeFormat == null) {
+ config._isValid = false;
+ return;
+ }
+ }
+ if (!allowTime && timeFormat != null) {
+ config._isValid = false;
+ return;
+ }
+ if (match[4]) {
+ if (tzRegex.exec(match[4])) {
+ tzFormat = 'Z';
+ } else {
+ config._isValid = false;
+ return;
+ }
+ }
+ config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
+ configFromStringAndFormat(config);
+ } else {
+ config._isValid = false;
+ }
+ }
+
+ // date from iso format or fallback
+ function configFromString(config) {
+ var matched = aspNetJsonRegex.exec(config._i);
+
+ if (matched !== null) {
+ config._d = new Date(+matched[1]);
+ return;
+ }
+
+ configFromISO(config);
+ if (config._isValid === false) {
+ delete config._isValid;
+ utils_hooks__hooks.createFromInputFallback(config);
+ }
+ }
+
+ utils_hooks__hooks.createFromInputFallback = deprecate(
+ 'moment construction falls back to js Date. This is ' +
+ 'discouraged and will be removed in upcoming major ' +
+ 'release. Please refer to ' +
+ 'https://github.com/moment/moment/issues/1407 for more info.',
+ function (config) {
+ config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
+ }
+ );
+
+ function createDate (y, m, d, h, M, s, ms) {
+ //can't just apply() to create a date:
+ //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
+ var date = new Date(y, m, d, h, M, s, ms);
+
+ //the date constructor remaps years 0-99 to 1900-1999
+ if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
+ date.setFullYear(y);
+ }
+ return date;
+ }
+
+ function createUTCDate (y) {
+ var date = new Date(Date.UTC.apply(null, arguments));
+
+ //the Date.UTC function remaps years 0-99 to 1900-1999
+ if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
+ date.setUTCFullYear(y);
+ }
+ return date;
+ }
+
+ // FORMATTING
+
+ addFormatToken('Y', 0, 0, function () {
+ var y = this.year();
+ return y <= 9999 ? '' + y : '+' + y;
+ });
+
+ addFormatToken(0, ['YY', 2], 0, function () {
+ return this.year() % 100;
+ });
+
+ addFormatToken(0, ['YYYY', 4], 0, 'year');
+ addFormatToken(0, ['YYYYY', 5], 0, 'year');
+ addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
+
+ // ALIASES
+
+ addUnitAlias('year', 'y');
+
+ // PARSING
+
+ addRegexToken('Y', matchSigned);
+ addRegexToken('YY', match1to2, match2);
+ addRegexToken('YYYY', match1to4, match4);
+ addRegexToken('YYYYY', match1to6, match6);
+ addRegexToken('YYYYYY', match1to6, match6);
+
+ addParseToken(['YYYYY', 'YYYYYY'], YEAR);
+ addParseToken('YYYY', function (input, array) {
+ array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);
+ });
+ addParseToken('YY', function (input, array) {
+ array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);
+ });
+ addParseToken('Y', function (input, array) {
+ array[YEAR] = parseInt(input, 10);
+ });
+
+ // HELPERS
+
+ function daysInYear(year) {
+ return isLeapYear(year) ? 366 : 365;
+ }
+
+ function isLeapYear(year) {
+ return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
+ }
+
+ // HOOKS
+
+ utils_hooks__hooks.parseTwoDigitYear = function (input) {
+ return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
+ };
+
+ // MOMENTS
+
+ var getSetYear = makeGetSet('FullYear', true);
+
+ function getIsLeapYear () {
+ return isLeapYear(this.year());
+ }
+
+ // start-of-first-week - start-of-year
+ function firstWeekOffset(year, dow, doy) {
+ var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
+ fwd = 7 + dow - doy,
+ // first-week day local weekday -- which local weekday is fwd
+ fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
+
+ return -fwdlw + fwd - 1;
+ }
+
+ //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
+ function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
+ var localWeekday = (7 + weekday - dow) % 7,
+ weekOffset = firstWeekOffset(year, dow, doy),
+ dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
+ resYear, resDayOfYear;
+
+ if (dayOfYear <= 0) {
+ resYear = year - 1;
+ resDayOfYear = daysInYear(resYear) + dayOfYear;
+ } else if (dayOfYear > daysInYear(year)) {
+ resYear = year + 1;
+ resDayOfYear = dayOfYear - daysInYear(year);
+ } else {
+ resYear = year;
+ resDayOfYear = dayOfYear;
+ }
+
+ return {
+ year: resYear,
+ dayOfYear: resDayOfYear
+ };
+ }
+
+ function weekOfYear(mom, dow, doy) {
+ var weekOffset = firstWeekOffset(mom.year(), dow, doy),
+ week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
+ resWeek, resYear;
+
+ if (week < 1) {
+ resYear = mom.year() - 1;
+ resWeek = week + weeksInYear(resYear, dow, doy);
+ } else if (week > weeksInYear(mom.year(), dow, doy)) {
+ resWeek = week - weeksInYear(mom.year(), dow, doy);
+ resYear = mom.year() + 1;
+ } else {
+ resYear = mom.year();
+ resWeek = week;
+ }
+
+ return {
+ week: resWeek,
+ year: resYear
+ };
+ }
+
+ function weeksInYear(year, dow, doy) {
+ var weekOffset = firstWeekOffset(year, dow, doy),
+ weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
+ return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
+ }
+
+ // Pick the first defined of two or three arguments.
+ function defaults(a, b, c) {
+ if (a != null) {
+ return a;
+ }
+ if (b != null) {
+ return b;
+ }
+ return c;
+ }
+
+ function currentDateArray(config) {
+ // hooks is actually the exported moment object
+ var nowValue = new Date(utils_hooks__hooks.now());
+ if (config._useUTC) {
+ return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
+ }
+ return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
+ }
+
+ // convert an array to a date.
+ // the array should mirror the parameters below
+ // note: all values past the year are optional and will default to the lowest possible value.
+ // [year, month, day , hour, minute, second, millisecond]
+ function configFromArray (config) {
+ var i, date, input = [], currentDate, yearToUse;
+
+ if (config._d) {
+ return;
+ }
+
+ currentDate = currentDateArray(config);
+
+ //compute day of the year from weeks and weekdays
+ if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
+ dayOfYearFromWeekInfo(config);
+ }
+
+ //if the day of the year is set, figure out what it is
+ if (config._dayOfYear) {
+ yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
+
+ if (config._dayOfYear > daysInYear(yearToUse)) {
+ getParsingFlags(config)._overflowDayOfYear = true;
+ }
+
+ date = createUTCDate(yearToUse, 0, config._dayOfYear);
+ config._a[MONTH] = date.getUTCMonth();
+ config._a[DATE] = date.getUTCDate();
+ }
+
+ // Default to current date.
+ // * if no year, month, day of month are given, default to today
+ // * if day of month is given, default month and year
+ // * if month is given, default only year
+ // * if year is given, don't default anything
+ for (i = 0; i < 3 && config._a[i] == null; ++i) {
+ config._a[i] = input[i] = currentDate[i];
+ }
+
+ // Zero out whatever was not defaulted, including time
+ for (; i < 7; i++) {
+ config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
+ }
+
+ // Check for 24:00:00.000
+ if (config._a[HOUR] === 24 &&
+ config._a[MINUTE] === 0 &&
+ config._a[SECOND] === 0 &&
+ config._a[MILLISECOND] === 0) {
+ config._nextDay = true;
+ config._a[HOUR] = 0;
+ }
+
+ config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
+ // Apply timezone offset from input. The actual utcOffset can be changed
+ // with parseZone.
+ if (config._tzm != null) {
+ config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
+ }
+
+ if (config._nextDay) {
+ config._a[HOUR] = 24;
+ }
+ }
+
+ function dayOfYearFromWeekInfo(config) {
+ var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
+
+ w = config._w;
+ if (w.GG != null || w.W != null || w.E != null) {
+ dow = 1;
+ doy = 4;
+
+ // TODO: We need to take the current isoWeekYear, but that depends on
+ // how we interpret now (local, utc, fixed offset). So create
+ // a now version of current config (take local/utc/offset flags, and
+ // create now).
+ weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);
+ week = defaults(w.W, 1);
+ weekday = defaults(w.E, 1);
+ if (weekday < 1 || weekday > 7) {
+ weekdayOverflow = true;
+ }
+ } else {
+ dow = config._locale._week.dow;
+ doy = config._locale._week.doy;
+
+ weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);
+ week = defaults(w.w, 1);
+
+ if (w.d != null) {
+ // weekday -- low day numbers are considered next week
+ weekday = w.d;
+ if (weekday < 0 || weekday > 6) {
+ weekdayOverflow = true;
+ }
+ } else if (w.e != null) {
+ // local weekday -- counting starts from begining of week
+ weekday = w.e + dow;
+ if (w.e < 0 || w.e > 6) {
+ weekdayOverflow = true;
+ }
+ } else {
+ // default to begining of week
+ weekday = dow;
+ }
+ }
+ if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
+ getParsingFlags(config)._overflowWeeks = true;
+ } else if (weekdayOverflow != null) {
+ getParsingFlags(config)._overflowWeekday = true;
+ } else {
+ temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
+ config._a[YEAR] = temp.year;
+ config._dayOfYear = temp.dayOfYear;
+ }
+ }
+
+ // constant that refers to the ISO standard
+ utils_hooks__hooks.ISO_8601 = function () {};
+
+ // date from string and format string
+ function configFromStringAndFormat(config) {
+ // TODO: Move this to another part of the creation flow to prevent circular deps
+ if (config._f === utils_hooks__hooks.ISO_8601) {
+ configFromISO(config);
+ return;
+ }
+
+ config._a = [];
+ getParsingFlags(config).empty = true;
+
+ // This array is used to make a Date, either with `new Date` or `Date.UTC`
+ var string = '' + config._i,
+ i, parsedInput, tokens, token, skipped,
+ stringLength = string.length,
+ totalParsedInputLength = 0;
+
+ tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
+
+ for (i = 0; i < tokens.length; i++) {
+ token = tokens[i];
+ parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
+ // console.log('token', token, 'parsedInput', parsedInput,
+ // 'regex', getParseRegexForToken(token, config));
+ if (parsedInput) {
+ skipped = string.substr(0, string.indexOf(parsedInput));
+ if (skipped.length > 0) {
+ getParsingFlags(config).unusedInput.push(skipped);
+ }
+ string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
+ totalParsedInputLength += parsedInput.length;
+ }
+ // don't parse if it's not a known token
+ if (formatTokenFunctions[token]) {
+ if (parsedInput) {
+ getParsingFlags(config).empty = false;
+ }
+ else {
+ getParsingFlags(config).unusedTokens.push(token);
+ }
+ addTimeToArrayFromToken(token, parsedInput, config);
+ }
+ else if (config._strict && !parsedInput) {
+ getParsingFlags(config).unusedTokens.push(token);
+ }
+ }
+
+ // add remaining unparsed input length to the string
+ getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
+ if (string.length > 0) {
+ getParsingFlags(config).unusedInput.push(string);
+ }
+
+ // clear _12h flag if hour is <= 12
+ if (getParsingFlags(config).bigHour === true &&
+ config._a[HOUR] <= 12 &&
+ config._a[HOUR] > 0) {
+ getParsingFlags(config).bigHour = undefined;
+ }
+
+ getParsingFlags(config).parsedDateParts = config._a.slice(0);
+ getParsingFlags(config).meridiem = config._meridiem;
+ // handle meridiem
+ config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
+
+ configFromArray(config);
+ checkOverflow(config);
+ }
+
+
+ function meridiemFixWrap (locale, hour, meridiem) {
+ var isPm;
+
+ if (meridiem == null) {
+ // nothing to do
+ return hour;
+ }
+ if (locale.meridiemHour != null) {
+ return locale.meridiemHour(hour, meridiem);
+ } else if (locale.isPM != null) {
+ // Fallback
+ isPm = locale.isPM(meridiem);
+ if (isPm && hour < 12) {
+ hour += 12;
+ }
+ if (!isPm && hour === 12) {
+ hour = 0;
+ }
+ return hour;
+ } else {
+ // this is not supposed to happen
+ return hour;
+ }
+ }
+
+ // date from string and array of format strings
+ function configFromStringAndArray(config) {
+ var tempConfig,
+ bestMoment,
+
+ scoreToBeat,
+ i,
+ currentScore;
+
+ if (config._f.length === 0) {
+ getParsingFlags(config).invalidFormat = true;
+ config._d = new Date(NaN);
+ return;
+ }
+
+ for (i = 0; i < config._f.length; i++) {
+ currentScore = 0;
+ tempConfig = copyConfig({}, config);
+ if (config._useUTC != null) {
+ tempConfig._useUTC = config._useUTC;
+ }
+ tempConfig._f = config._f[i];
+ configFromStringAndFormat(tempConfig);
+
+ if (!valid__isValid(tempConfig)) {
+ continue;
+ }
+
+ // if there is any input that was not parsed add a penalty for that format
+ currentScore += getParsingFlags(tempConfig).charsLeftOver;
+
+ //or tokens
+ currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
+
+ getParsingFlags(tempConfig).score = currentScore;
+
+ if (scoreToBeat == null || currentScore < scoreToBeat) {
+ scoreToBeat = currentScore;
+ bestMoment = tempConfig;
+ }
+ }
+
+ extend(config, bestMoment || tempConfig);
+ }
+
+ function configFromObject(config) {
+ if (config._d) {
+ return;
+ }
+
+ var i = normalizeObjectUnits(config._i);
+ config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
+ return obj && parseInt(obj, 10);
+ });
+
+ configFromArray(config);
+ }
+
+ function createFromConfig (config) {
+ var res = new Moment(checkOverflow(prepareConfig(config)));
+ if (res._nextDay) {
+ // Adding is smart enough around DST
+ res.add(1, 'd');
+ res._nextDay = undefined;
+ }
+
+ return res;
+ }
+
+ function prepareConfig (config) {
+ var input = config._i,
+ format = config._f;
+
+ config._locale = config._locale || locale_locales__getLocale(config._l);
+
+ if (input === null || (format === undefined && input === '')) {
+ return valid__createInvalid({nullInput: true});
+ }
+
+ if (typeof input === 'string') {
+ config._i = input = config._locale.preparse(input);
+ }
+
+ if (isMoment(input)) {
+ return new Moment(checkOverflow(input));
+ } else if (isArray(format)) {
+ configFromStringAndArray(config);
+ } else if (format) {
+ configFromStringAndFormat(config);
+ } else if (isDate(input)) {
+ config._d = input;
+ } else {
+ configFromInput(config);
+ }
+
+ if (!valid__isValid(config)) {
+ config._d = null;
+ }
+
+ return config;
+ }
+
+ function configFromInput(config) {
+ var input = config._i;
+ if (input === undefined) {
+ config._d = new Date(utils_hooks__hooks.now());
+ } else if (isDate(input)) {
+ config._d = new Date(input.valueOf());
+ } else if (typeof input === 'string') {
+ configFromString(config);
+ } else if (isArray(input)) {
+ config._a = map(input.slice(0), function (obj) {
+ return parseInt(obj, 10);
+ });
+ configFromArray(config);
+ } else if (typeof(input) === 'object') {
+ configFromObject(config);
+ } else if (typeof(input) === 'number') {
+ // from milliseconds
+ config._d = new Date(input);
+ } else {
+ utils_hooks__hooks.createFromInputFallback(config);
+ }
+ }
+
+ function createLocalOrUTC (input, format, locale, strict, isUTC) {
+ var c = {};
+
+ if (typeof(locale) === 'boolean') {
+ strict = locale;
+ locale = undefined;
+ }
+ // object construction must be done this way.
+ // https://github.com/moment/moment/issues/1423
+ c._isAMomentObject = true;
+ c._useUTC = c._isUTC = isUTC;
+ c._l = locale;
+ c._i = input;
+ c._f = format;
+ c._strict = strict;
+
+ return createFromConfig(c);
+ }
+
+ function local__createLocal (input, format, locale, strict) {
+ return createLocalOrUTC(input, format, locale, strict, false);
+ }
+
+ var prototypeMin = deprecate(
+ 'moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
+ function () {
+ var other = local__createLocal.apply(null, arguments);
+ if (this.isValid() && other.isValid()) {
+ return other < this ? this : other;
+ } else {
+ return valid__createInvalid();
+ }
+ }
+ );
+
+ var prototypeMax = deprecate(
+ 'moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
+ function () {
+ var other = local__createLocal.apply(null, arguments);
+ if (this.isValid() && other.isValid()) {
+ return other > this ? this : other;
+ } else {
+ return valid__createInvalid();
+ }
+ }
+ );
+
+ // Pick a moment m from moments so that m[fn](other) is true for all
+ // other. This relies on the function fn to be transitive.
+ //
+ // moments should either be an array of moment objects or an array, whose
+ // first element is an array of moment objects.
+ function pickBy(fn, moments) {
+ var res, i;
+ if (moments.length === 1 && isArray(moments[0])) {
+ moments = moments[0];
+ }
+ if (!moments.length) {
+ return local__createLocal();
+ }
+ res = moments[0];
+ for (i = 1; i < moments.length; ++i) {
+ if (!moments[i].isValid() || moments[i][fn](res)) {
+ res = moments[i];
+ }
+ }
+ return res;
+ }
+
+ // TODO: Use [].sort instead?
+ function min () {
+ var args = [].slice.call(arguments, 0);
+
+ return pickBy('isBefore', args);
+ }
+
+ function max () {
+ var args = [].slice.call(arguments, 0);
+
+ return pickBy('isAfter', args);
+ }
+
+ var now = function () {
+ return Date.now ? Date.now() : +(new Date());
+ };
+
+ function Duration (duration) {
+ var normalizedInput = normalizeObjectUnits(duration),
+ years = normalizedInput.year || 0,
+ quarters = normalizedInput.quarter || 0,
+ months = normalizedInput.month || 0,
+ weeks = normalizedInput.week || 0,
+ days = normalizedInput.day || 0,
+ hours = normalizedInput.hour || 0,
+ minutes = normalizedInput.minute || 0,
+ seconds = normalizedInput.second || 0,
+ milliseconds = normalizedInput.millisecond || 0;
+
+ // representation for dateAddRemove
+ this._milliseconds = +milliseconds +
+ seconds * 1e3 + // 1000
+ minutes * 6e4 + // 1000 * 60
+ hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
+ // Because of dateAddRemove treats 24 hours as different from a
+ // day when working around DST, we need to store them separately
+ this._days = +days +
+ weeks * 7;
+ // It is impossible translate months into days without knowing
+ // which months you are are talking about, so we have to store
+ // it separately.
+ this._months = +months +
+ quarters * 3 +
+ years * 12;
+
+ this._data = {};
+
+ this._locale = locale_locales__getLocale();
+
+ this._bubble();
+ }
+
+ function isDuration (obj) {
+ return obj instanceof Duration;
+ }
+
+ // FORMATTING
+
+ function offset (token, separator) {
+ addFormatToken(token, 0, 0, function () {
+ var offset = this.utcOffset();
+ var sign = '+';
+ if (offset < 0) {
+ offset = -offset;
+ sign = '-';
+ }
+ return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
+ });
+ }
+
+ offset('Z', ':');
+ offset('ZZ', '');
+
+ // PARSING
+
+ addRegexToken('Z', matchShortOffset);
+ addRegexToken('ZZ', matchShortOffset);
+ addParseToken(['Z', 'ZZ'], function (input, array, config) {
+ config._useUTC = true;
+ config._tzm = offsetFromString(matchShortOffset, input);
+ });
+
+ // HELPERS
+
+ // timezone chunker
+ // '+10:00' > ['10', '00']
+ // '-1530' > ['-15', '30']
+ var chunkOffset = /([\+\-]|\d\d)/gi;
+
+ function offsetFromString(matcher, string) {
+ var matches = ((string || '').match(matcher) || []);
+ var chunk = matches[matches.length - 1] || [];
+ var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
+ var minutes = +(parts[1] * 60) + toInt(parts[2]);
+
+ return parts[0] === '+' ? minutes : -minutes;
+ }
+
+ // Return a moment from input, that is local/utc/zone equivalent to model.
+ function cloneWithOffset(input, model) {
+ var res, diff;
+ if (model._isUTC) {
+ res = model.clone();
+ diff = (isMoment(input) || isDate(input) ? input.valueOf() : local__createLocal(input).valueOf()) - res.valueOf();
+ // Use low-level api, because this fn is low-level api.
+ res._d.setTime(res._d.valueOf() + diff);
+ utils_hooks__hooks.updateOffset(res, false);
+ return res;
+ } else {
+ return local__createLocal(input).local();
+ }
+ }
+
+ function getDateOffset (m) {
+ // On Firefox.24 Date#getTimezoneOffset returns a floating point.
+ // https://github.com/moment/moment/pull/1871
+ return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
+ }
+
+ // HOOKS
+
+ // This function will be called whenever a moment is mutated.
+ // It is intended to keep the offset in sync with the timezone.
+ utils_hooks__hooks.updateOffset = function () {};
+
+ // MOMENTS
+
+ // keepLocalTime = true means only change the timezone, without
+ // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
+ // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
+ // +0200, so we adjust the time as needed, to be valid.
+ //
+ // Keeping the time actually adds/subtracts (one hour)
+ // from the actual represented time. That is why we call updateOffset
+ // a second time. In case it wants us to change the offset again
+ // _changeInProgress == true case, then we have to adjust, because
+ // there is no such time in the given timezone.
+ function getSetOffset (input, keepLocalTime) {
+ var offset = this._offset || 0,
+ localAdjust;
+ if (!this.isValid()) {
+ return input != null ? this : NaN;
+ }
+ if (input != null) {
+ if (typeof input === 'string') {
+ input = offsetFromString(matchShortOffset, input);
+ } else if (Math.abs(input) < 16) {
+ input = input * 60;
+ }
+ if (!this._isUTC && keepLocalTime) {
+ localAdjust = getDateOffset(this);
+ }
+ this._offset = input;
+ this._isUTC = true;
+ if (localAdjust != null) {
+ this.add(localAdjust, 'm');
+ }
+ if (offset !== input) {
+ if (!keepLocalTime || this._changeInProgress) {
+ add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);
+ } else if (!this._changeInProgress) {
+ this._changeInProgress = true;
+ utils_hooks__hooks.updateOffset(this, true);
+ this._changeInProgress = null;
+ }
+ }
+ return this;
+ } else {
+ return this._isUTC ? offset : getDateOffset(this);
+ }
+ }
+
+ function getSetZone (input, keepLocalTime) {
+ if (input != null) {
+ if (typeof input !== 'string') {
+ input = -input;
+ }
+
+ this.utcOffset(input, keepLocalTime);
+
+ return this;
+ } else {
+ return -this.utcOffset();
+ }
+ }
+
+ function setOffsetToUTC (keepLocalTime) {
+ return this.utcOffset(0, keepLocalTime);
+ }
+
+ function setOffsetToLocal (keepLocalTime) {
+ if (this._isUTC) {
+ this.utcOffset(0, keepLocalTime);
+ this._isUTC = false;
+
+ if (keepLocalTime) {
+ this.subtract(getDateOffset(this), 'm');
+ }
+ }
+ return this;
+ }
+
+ function setOffsetToParsedOffset () {
+ if (this._tzm) {
+ this.utcOffset(this._tzm);
+ } else if (typeof this._i === 'string') {
+ this.utcOffset(offsetFromString(matchOffset, this._i));
+ }
+ return this;
+ }
+
+ function hasAlignedHourOffset (input) {
+ if (!this.isValid()) {
+ return false;
+ }
+ input = input ? local__createLocal(input).utcOffset() : 0;
+
+ return (this.utcOffset() - input) % 60 === 0;
+ }
+
+ function isDaylightSavingTime () {
+ return (
+ this.utcOffset() > this.clone().month(0).utcOffset() ||
+ this.utcOffset() > this.clone().month(5).utcOffset()
+ );
+ }
+
+ function isDaylightSavingTimeShifted () {
+ if (!isUndefined(this._isDSTShifted)) {
+ return this._isDSTShifted;
+ }
+
+ var c = {};
+
+ copyConfig(c, this);
+ c = prepareConfig(c);
+
+ if (c._a) {
+ var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);
+ this._isDSTShifted = this.isValid() &&
+ compareArrays(c._a, other.toArray()) > 0;
+ } else {
+ this._isDSTShifted = false;
+ }
+
+ return this._isDSTShifted;
+ }
+
+ function isLocal () {
+ return this.isValid() ? !this._isUTC : false;
+ }
+
+ function isUtcOffset () {
+ return this.isValid() ? this._isUTC : false;
+ }
+
+ function isUtc () {
+ return this.isValid() ? this._isUTC && this._offset === 0 : false;
+ }
+
+ // ASP.NET json date format regex
+ var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/;
+
+ // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
+ // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
+ // and further modified to allow for strings containing both week and day
+ var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;
+
+ function create__createDuration (input, key) {
+ var duration = input,
+ // matching against regexp is expensive, do it on demand
+ match = null,
+ sign,
+ ret,
+ diffRes;
+
+ if (isDuration(input)) {
+ duration = {
+ ms : input._milliseconds,
+ d : input._days,
+ M : input._months
+ };
+ } else if (typeof input === 'number') {
+ duration = {};
+ if (key) {
+ duration[key] = input;
+ } else {
+ duration.milliseconds = input;
+ }
+ } else if (!!(match = aspNetRegex.exec(input))) {
+ sign = (match[1] === '-') ? -1 : 1;
+ duration = {
+ y : 0,
+ d : toInt(match[DATE]) * sign,
+ h : toInt(match[HOUR]) * sign,
+ m : toInt(match[MINUTE]) * sign,
+ s : toInt(match[SECOND]) * sign,
+ ms : toInt(match[MILLISECOND]) * sign
+ };
+ } else if (!!(match = isoRegex.exec(input))) {
+ sign = (match[1] === '-') ? -1 : 1;
+ duration = {
+ y : parseIso(match[2], sign),
+ M : parseIso(match[3], sign),
+ w : parseIso(match[4], sign),
+ d : parseIso(match[5], sign),
+ h : parseIso(match[6], sign),
+ m : parseIso(match[7], sign),
+ s : parseIso(match[8], sign)
+ };
+ } else if (duration == null) {// checks for null or undefined
+ duration = {};
+ } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
+ diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));
+
+ duration = {};
+ duration.ms = diffRes.milliseconds;
+ duration.M = diffRes.months;
+ }
+
+ ret = new Duration(duration);
+
+ if (isDuration(input) && hasOwnProp(input, '_locale')) {
+ ret._locale = input._locale;
+ }
+
+ return ret;
+ }
+
+ create__createDuration.fn = Duration.prototype;
+
+ function parseIso (inp, sign) {
+ // We'd normally use ~~inp for this, but unfortunately it also
+ // converts floats to ints.
+ // inp may be undefined, so careful calling replace on it.
+ var res = inp && parseFloat(inp.replace(',', '.'));
+ // apply sign while we're at it
+ return (isNaN(res) ? 0 : res) * sign;
+ }
+
+ function positiveMomentsDifference(base, other) {
+ var res = {milliseconds: 0, months: 0};
+
+ res.months = other.month() - base.month() +
+ (other.year() - base.year()) * 12;
+ if (base.clone().add(res.months, 'M').isAfter(other)) {
+ --res.months;
+ }
+
+ res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
+
+ return res;
+ }
+
+ function momentsDifference(base, other) {
+ var res;
+ if (!(base.isValid() && other.isValid())) {
+ return {milliseconds: 0, months: 0};
+ }
+
+ other = cloneWithOffset(other, base);
+ if (base.isBefore(other)) {
+ res = positiveMomentsDifference(base, other);
+ } else {
+ res = positiveMomentsDifference(other, base);
+ res.milliseconds = -res.milliseconds;
+ res.months = -res.months;
+ }
+
+ return res;
+ }
+
+ function absRound (number) {
+ if (number < 0) {
+ return Math.round(-1 * number) * -1;
+ } else {
+ return Math.round(number);
+ }
+ }
+
+ // TODO: remove 'name' arg after deprecation is removed
+ function createAdder(direction, name) {
+ return function (val, period) {
+ var dur, tmp;
+ //invert the arguments, but complain about it
+ if (period !== null && !isNaN(+period)) {
+ deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
+ tmp = val; val = period; period = tmp;
+ }
+
+ val = typeof val === 'string' ? +val : val;
+ dur = create__createDuration(val, period);
+ add_subtract__addSubtract(this, dur, direction);
+ return this;
+ };
+ }
+
+ function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {
+ var milliseconds = duration._milliseconds,
+ days = absRound(duration._days),
+ months = absRound(duration._months);
+
+ if (!mom.isValid()) {
+ // No op
+ return;
+ }
+
+ updateOffset = updateOffset == null ? true : updateOffset;
+
+ if (milliseconds) {
+ mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
+ }
+ if (days) {
+ get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);
+ }
+ if (months) {
+ setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);
+ }
+ if (updateOffset) {
+ utils_hooks__hooks.updateOffset(mom, days || months);
+ }
+ }
+
+ var add_subtract__add = createAdder(1, 'add');
+ var add_subtract__subtract = createAdder(-1, 'subtract');
+
+ function moment_calendar__calendar (time, formats) {
+ // We want to compare the start of today, vs this.
+ // Getting start-of-today depends on whether we're local/utc/offset or not.
+ var now = time || local__createLocal(),
+ sod = cloneWithOffset(now, this).startOf('day'),
+ diff = this.diff(sod, 'days', true),
+ format = diff < -6 ? 'sameElse' :
+ diff < -1 ? 'lastWeek' :
+ diff < 0 ? 'lastDay' :
+ diff < 1 ? 'sameDay' :
+ diff < 2 ? 'nextDay' :
+ diff < 7 ? 'nextWeek' : 'sameElse';
+
+ var output = formats && (isFunction(formats[format]) ? formats[format]() : formats[format]);
+
+ return this.format(output || this.localeData().calendar(format, this, local__createLocal(now)));
+ }
+
+ function clone () {
+ return new Moment(this);
+ }
+
+ function isAfter (input, units) {
+ var localInput = isMoment(input) ? input : local__createLocal(input);
+ if (!(this.isValid() && localInput.isValid())) {
+ return false;
+ }
+ units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
+ if (units === 'millisecond') {
+ return this.valueOf() > localInput.valueOf();
+ } else {
+ return localInput.valueOf() < this.clone().startOf(units).valueOf();
+ }
+ }
+
+ function isBefore (input, units) {
+ var localInput = isMoment(input) ? input : local__createLocal(input);
+ if (!(this.isValid() && localInput.isValid())) {
+ return false;
+ }
+ units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
+ if (units === 'millisecond') {
+ return this.valueOf() < localInput.valueOf();
+ } else {
+ return this.clone().endOf(units).valueOf() < localInput.valueOf();
+ }
+ }
+
+ function isBetween (from, to, units, inclusivity) {
+ inclusivity = inclusivity || '()';
+ return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&
+ (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));
+ }
+
+ function isSame (input, units) {
+ var localInput = isMoment(input) ? input : local__createLocal(input),
+ inputMs;
+ if (!(this.isValid() && localInput.isValid())) {
+ return false;
+ }
+ units = normalizeUnits(units || 'millisecond');
+ if (units === 'millisecond') {
+ return this.valueOf() === localInput.valueOf();
+ } else {
+ inputMs = localInput.valueOf();
+ return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
+ }
+ }
+
+ function isSameOrAfter (input, units) {
+ return this.isSame(input, units) || this.isAfter(input,units);
+ }
+
+ function isSameOrBefore (input, units) {
+ return this.isSame(input, units) || this.isBefore(input,units);
+ }
+
+ function diff (input, units, asFloat) {
+ var that,
+ zoneDelta,
+ delta, output;
+
+ if (!this.isValid()) {
+ return NaN;
+ }
+
+ that = cloneWithOffset(input, this);
+
+ if (!that.isValid()) {
+ return NaN;
+ }
+
+ zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
+
+ units = normalizeUnits(units);
+
+ if (units === 'year' || units === 'month' || units === 'quarter') {
+ output = monthDiff(this, that);
+ if (units === 'quarter') {
+ output = output / 3;
+ } else if (units === 'year') {
+ output = output / 12;
+ }
+ } else {
+ delta = this - that;
+ output = units === 'second' ? delta / 1e3 : // 1000
+ units === 'minute' ? delta / 6e4 : // 1000 * 60
+ units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
+ units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
+ units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
+ delta;
+ }
+ return asFloat ? output : absFloor(output);
+ }
+
+ function monthDiff (a, b) {
+ // difference in months
+ var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
+ // b is in (anchor - 1 month, anchor + 1 month)
+ anchor = a.clone().add(wholeMonthDiff, 'months'),
+ anchor2, adjust;
+
+ if (b - anchor < 0) {
+ anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
+ // linear across the month
+ adjust = (b - anchor) / (anchor - anchor2);
+ } else {
+ anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
+ // linear across the month
+ adjust = (b - anchor) / (anchor2 - anchor);
+ }
+
+ //check for negative zero, return zero if negative zero
+ return -(wholeMonthDiff + adjust) || 0;
+ }
+
+ utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
+ utils_hooks__hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
+
+ function toString () {
+ return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
+ }
+
+ function moment_format__toISOString () {
+ var m = this.clone().utc();
+ if (0 < m.year() && m.year() <= 9999) {
+ if (isFunction(Date.prototype.toISOString)) {
+ // native implementation is ~50x faster, use it when we can
+ return this.toDate().toISOString();
+ } else {
+ return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ }
+ } else {
+ return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ }
+ }
+
+ function format (inputString) {
+ if (!inputString) {
+ inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat;
+ }
+ var output = formatMoment(this, inputString);
+ return this.localeData().postformat(output);
+ }
+
+ function from (time, withoutSuffix) {
+ if (this.isValid() &&
+ ((isMoment(time) && time.isValid()) ||
+ local__createLocal(time).isValid())) {
+ return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
+ } else {
+ return this.localeData().invalidDate();
+ }
+ }
+
+ function fromNow (withoutSuffix) {
+ return this.from(local__createLocal(), withoutSuffix);
+ }
+
+ function to (time, withoutSuffix) {
+ if (this.isValid() &&
+ ((isMoment(time) && time.isValid()) ||
+ local__createLocal(time).isValid())) {
+ return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
+ } else {
+ return this.localeData().invalidDate();
+ }
+ }
+
+ function toNow (withoutSuffix) {
+ return this.to(local__createLocal(), withoutSuffix);
+ }
+
+ // If passed a locale key, it will set the locale for this
+ // instance. Otherwise, it will return the locale configuration
+ // variables for this instance.
+ function locale (key) {
+ var newLocaleData;
+
+ if (key === undefined) {
+ return this._locale._abbr;
+ } else {
+ newLocaleData = locale_locales__getLocale(key);
+ if (newLocaleData != null) {
+ this._locale = newLocaleData;
+ }
+ return this;
+ }
+ }
+
+ var lang = deprecate(
+ 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
+ function (key) {
+ if (key === undefined) {
+ return this.localeData();
+ } else {
+ return this.locale(key);
+ }
+ }
+ );
+
+ function localeData () {
+ return this._locale;
+ }
+
+ function startOf (units) {
+ units = normalizeUnits(units);
+ // the following switch intentionally omits break keywords
+ // to utilize falling through the cases.
+ switch (units) {
+ case 'year':
+ this.month(0);
+ /* falls through */
+ case 'quarter':
+ case 'month':
+ this.date(1);
+ /* falls through */
+ case 'week':
+ case 'isoWeek':
+ case 'day':
+ case 'date':
+ this.hours(0);
+ /* falls through */
+ case 'hour':
+ this.minutes(0);
+ /* falls through */
+ case 'minute':
+ this.seconds(0);
+ /* falls through */
+ case 'second':
+ this.milliseconds(0);
+ }
+
+ // weeks are a special case
+ if (units === 'week') {
+ this.weekday(0);
+ }
+ if (units === 'isoWeek') {
+ this.isoWeekday(1);
+ }
+
+ // quarters are also special
+ if (units === 'quarter') {
+ this.month(Math.floor(this.month() / 3) * 3);
+ }
+
+ return this;
+ }
+
+ function endOf (units) {
+ units = normalizeUnits(units);
+ if (units === undefined || units === 'millisecond') {
+ return this;
+ }
+
+ // 'date' is an alias for 'day', so it should be considered as such.
+ if (units === 'date') {
+ units = 'day';
+ }
+
+ return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
+ }
+
+ function to_type__valueOf () {
+ return this._d.valueOf() - ((this._offset || 0) * 60000);
+ }
+
+ function unix () {
+ return Math.floor(this.valueOf() / 1000);
+ }
+
+ function toDate () {
+ return this._offset ? new Date(this.valueOf()) : this._d;
+ }
+
+ function toArray () {
+ var m = this;
+ return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
+ }
+
+ function toObject () {
+ var m = this;
+ return {
+ years: m.year(),
+ months: m.month(),
+ date: m.date(),
+ hours: m.hours(),
+ minutes: m.minutes(),
+ seconds: m.seconds(),
+ milliseconds: m.milliseconds()
+ };
+ }
+
+ function toJSON () {
+ // new Date(NaN).toJSON() === null
+ return this.isValid() ? this.toISOString() : null;
+ }
+
+ function moment_valid__isValid () {
+ return valid__isValid(this);
+ }
+
+ function parsingFlags () {
+ return extend({}, getParsingFlags(this));
+ }
+
+ function invalidAt () {
+ return getParsingFlags(this).overflow;
+ }
+
+ function creationData() {
+ return {
+ input: this._i,
+ format: this._f,
+ locale: this._locale,
+ isUTC: this._isUTC,
+ strict: this._strict
+ };
+ }
+
+ // FORMATTING
+
+ addFormatToken(0, ['gg', 2], 0, function () {
+ return this.weekYear() % 100;
+ });
+
+ addFormatToken(0, ['GG', 2], 0, function () {
+ return this.isoWeekYear() % 100;
+ });
+
+ function addWeekYearFormatToken (token, getter) {
+ addFormatToken(0, [token, token.length], 0, getter);
+ }
+
+ addWeekYearFormatToken('gggg', 'weekYear');
+ addWeekYearFormatToken('ggggg', 'weekYear');
+ addWeekYearFormatToken('GGGG', 'isoWeekYear');
+ addWeekYearFormatToken('GGGGG', 'isoWeekYear');
+
+ // ALIASES
+
+ addUnitAlias('weekYear', 'gg');
+ addUnitAlias('isoWeekYear', 'GG');
+
+ // PARSING
+
+ addRegexToken('G', matchSigned);
+ addRegexToken('g', matchSigned);
+ addRegexToken('GG', match1to2, match2);
+ addRegexToken('gg', match1to2, match2);
+ addRegexToken('GGGG', match1to4, match4);
+ addRegexToken('gggg', match1to4, match4);
+ addRegexToken('GGGGG', match1to6, match6);
+ addRegexToken('ggggg', match1to6, match6);
+
+ addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
+ week[token.substr(0, 2)] = toInt(input);
+ });
+
+ addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
+ week[token] = utils_hooks__hooks.parseTwoDigitYear(input);
+ });
+
+ // MOMENTS
+
+ function getSetWeekYear (input) {
+ return getSetWeekYearHelper.call(this,
+ input,
+ this.week(),
+ this.weekday(),
+ this.localeData()._week.dow,
+ this.localeData()._week.doy);
+ }
+
+ function getSetISOWeekYear (input) {
+ return getSetWeekYearHelper.call(this,
+ input, this.isoWeek(), this.isoWeekday(), 1, 4);
+ }
+
+ function getISOWeeksInYear () {
+ return weeksInYear(this.year(), 1, 4);
+ }
+
+ function getWeeksInYear () {
+ var weekInfo = this.localeData()._week;
+ return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
+ }
+
+ function getSetWeekYearHelper(input, week, weekday, dow, doy) {
+ var weeksTarget;
+ if (input == null) {
+ return weekOfYear(this, dow, doy).year;
+ } else {
+ weeksTarget = weeksInYear(input, dow, doy);
+ if (week > weeksTarget) {
+ week = weeksTarget;
+ }
+ return setWeekAll.call(this, input, week, weekday, dow, doy);
+ }
+ }
+
+ function setWeekAll(weekYear, week, weekday, dow, doy) {
+ var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
+ date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
+
+ this.year(date.getUTCFullYear());
+ this.month(date.getUTCMonth());
+ this.date(date.getUTCDate());
+ return this;
+ }
+
+ // FORMATTING
+
+ addFormatToken('Q', 0, 'Qo', 'quarter');
+
+ // ALIASES
+
+ addUnitAlias('quarter', 'Q');
+
+ // PARSING
+
+ addRegexToken('Q', match1);
+ addParseToken('Q', function (input, array) {
+ array[MONTH] = (toInt(input) - 1) * 3;
+ });
+
+ // MOMENTS
+
+ function getSetQuarter (input) {
+ return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
+ }
+
+ // FORMATTING
+
+ addFormatToken('w', ['ww', 2], 'wo', 'week');
+ addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
+
+ // ALIASES
+
+ addUnitAlias('week', 'w');
+ addUnitAlias('isoWeek', 'W');
+
+ // PARSING
+
+ addRegexToken('w', match1to2);
+ addRegexToken('ww', match1to2, match2);
+ addRegexToken('W', match1to2);
+ addRegexToken('WW', match1to2, match2);
+
+ addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
+ week[token.substr(0, 1)] = toInt(input);
+ });
+
+ // HELPERS
+
+ // LOCALES
+
+ function localeWeek (mom) {
+ return weekOfYear(mom, this._week.dow, this._week.doy).week;
+ }
+
+ var defaultLocaleWeek = {
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
+ };
+
+ function localeFirstDayOfWeek () {
+ return this._week.dow;
+ }
+
+ function localeFirstDayOfYear () {
+ return this._week.doy;
+ }
+
+ // MOMENTS
+
+ function getSetWeek (input) {
+ var week = this.localeData().week(this);
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ }
+
+ function getSetISOWeek (input) {
+ var week = weekOfYear(this, 1, 4).week;
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ }
+
+ // FORMATTING
+
+ addFormatToken('D', ['DD', 2], 'Do', 'date');
+
+ // ALIASES
+
+ addUnitAlias('date', 'D');
+
+ // PARSING
+
+ addRegexToken('D', match1to2);
+ addRegexToken('DD', match1to2, match2);
+ addRegexToken('Do', function (isStrict, locale) {
+ return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
+ });
+
+ addParseToken(['D', 'DD'], DATE);
+ addParseToken('Do', function (input, array) {
+ array[DATE] = toInt(input.match(match1to2)[0], 10);
+ });
+
+ // MOMENTS
+
+ var getSetDayOfMonth = makeGetSet('Date', true);
+
+ // FORMATTING
+
+ addFormatToken('d', 0, 'do', 'day');
+
+ addFormatToken('dd', 0, 0, function (format) {
+ return this.localeData().weekdaysMin(this, format);
+ });
+
+ addFormatToken('ddd', 0, 0, function (format) {
+ return this.localeData().weekdaysShort(this, format);
+ });
+
+ addFormatToken('dddd', 0, 0, function (format) {
+ return this.localeData().weekdays(this, format);
+ });
+
+ addFormatToken('e', 0, 0, 'weekday');
+ addFormatToken('E', 0, 0, 'isoWeekday');
+
+ // ALIASES
+
+ addUnitAlias('day', 'd');
+ addUnitAlias('weekday', 'e');
+ addUnitAlias('isoWeekday', 'E');
+
+ // PARSING
+
+ addRegexToken('d', match1to2);
+ addRegexToken('e', match1to2);
+ addRegexToken('E', match1to2);
+ addRegexToken('dd', function (isStrict, locale) {
+ return locale.weekdaysMinRegex(isStrict);
+ });
+ addRegexToken('ddd', function (isStrict, locale) {
+ return locale.weekdaysShortRegex(isStrict);
+ });
+ addRegexToken('dddd', function (isStrict, locale) {
+ return locale.weekdaysRegex(isStrict);
+ });
+
+ addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
+ var weekday = config._locale.weekdaysParse(input, token, config._strict);
+ // if we didn't get a weekday name, mark the date as invalid
+ if (weekday != null) {
+ week.d = weekday;
+ } else {
+ getParsingFlags(config).invalidWeekday = input;
+ }
+ });
+
+ addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
+ week[token] = toInt(input);
+ });
+
+ // HELPERS
+
+ function parseWeekday(input, locale) {
+ if (typeof input !== 'string') {
+ return input;
+ }
+
+ if (!isNaN(input)) {
+ return parseInt(input, 10);
+ }
+
+ input = locale.weekdaysParse(input);
+ if (typeof input === 'number') {
+ return input;
+ }
+
+ return null;
+ }
+
+ // LOCALES
+
+ var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
+ function localeWeekdays (m, format) {
+ return isArray(this._weekdays) ? this._weekdays[m.day()] :
+ this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
+ }
+
+ var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
+ function localeWeekdaysShort (m) {
+ return this._weekdaysShort[m.day()];
+ }
+
+ var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
+ function localeWeekdaysMin (m) {
+ return this._weekdaysMin[m.day()];
+ }
+
+ function day_of_week__handleStrictParse(weekdayName, format, strict) {
+ var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
+ if (!this._weekdaysParse) {
+ this._weekdaysParse = [];
+ this._shortWeekdaysParse = [];
+ this._minWeekdaysParse = [];
+
+ for (i = 0; i < 7; ++i) {
+ mom = create_utc__createUTC([2000, 1]).day(i);
+ this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
+ this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
+ this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
+ }
+ }
+
+ if (strict) {
+ if (format === 'dddd') {
+ ii = indexOf.call(this._weekdaysParse, llc);
+ return ii !== -1 ? ii : null;
+ } else if (format === 'ddd') {
+ ii = indexOf.call(this._shortWeekdaysParse, llc);
+ return ii !== -1 ? ii : null;
+ } else {
+ ii = indexOf.call(this._minWeekdaysParse, llc);
+ return ii !== -1 ? ii : null;
+ }
+ } else {
+ if (format === 'dddd') {
+ ii = indexOf.call(this._weekdaysParse, llc);
+ if (ii !== -1) {
+ return ii;
+ }
+ ii = indexOf.call(this._shortWeekdaysParse, llc);
+ if (ii !== -1) {
+ return ii;
+ }
+ ii = indexOf.call(this._minWeekdaysParse, llc);
+ return ii !== -1 ? ii : null;
+ } else if (format === 'ddd') {
+ ii = indexOf.call(this._shortWeekdaysParse, llc);
+ if (ii !== -1) {
+ return ii;
+ }
+ ii = indexOf.call(this._weekdaysParse, llc);
+ if (ii !== -1) {
+ return ii;
+ }
+ ii = indexOf.call(this._minWeekdaysParse, llc);
+ return ii !== -1 ? ii : null;
+ } else {
+ ii = indexOf.call(this._minWeekdaysParse, llc);
+ if (ii !== -1) {
+ return ii;
+ }
+ ii = indexOf.call(this._weekdaysParse, llc);
+ if (ii !== -1) {
+ return ii;
+ }
+ ii = indexOf.call(this._shortWeekdaysParse, llc);
+ return ii !== -1 ? ii : null;
+ }
+ }
+ }
+
+ function localeWeekdaysParse (weekdayName, format, strict) {
+ var i, mom, regex;
+
+ if (this._weekdaysParseExact) {
+ return day_of_week__handleStrictParse.call(this, weekdayName, format, strict);
+ }
+
+ if (!this._weekdaysParse) {
+ this._weekdaysParse = [];
+ this._minWeekdaysParse = [];
+ this._shortWeekdaysParse = [];
+ this._fullWeekdaysParse = [];
+ }
+
+ for (i = 0; i < 7; i++) {
+ // make the regex if we don't have it already
+
+ mom = create_utc__createUTC([2000, 1]).day(i);
+ if (strict && !this._fullWeekdaysParse[i]) {
+ this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
+ this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
+ this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
+ }
+ if (!this._weekdaysParse[i]) {
+ regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
+ this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
+ return i;
+ } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
+ return i;
+ } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
+ return i;
+ } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
+ return i;
+ }
+ }
+ }
+
+ // MOMENTS
+
+ function getSetDayOfWeek (input) {
+ if (!this.isValid()) {
+ return input != null ? this : NaN;
+ }
+ var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
+ if (input != null) {
+ input = parseWeekday(input, this.localeData());
+ return this.add(input - day, 'd');
+ } else {
+ return day;
+ }
+ }
+
+ function getSetLocaleDayOfWeek (input) {
+ if (!this.isValid()) {
+ return input != null ? this : NaN;
+ }
+ var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
+ return input == null ? weekday : this.add(input - weekday, 'd');
+ }
+
+ function getSetISODayOfWeek (input) {
+ if (!this.isValid()) {
+ return input != null ? this : NaN;
+ }
+ // behaves the same as moment#day except
+ // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
+ // as a setter, sunday should belong to the previous week.
+ return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
+ }
+
+ var defaultWeekdaysRegex = matchWord;
+ function weekdaysRegex (isStrict) {
+ if (this._weekdaysParseExact) {
+ if (!hasOwnProp(this, '_weekdaysRegex')) {
+ computeWeekdaysParse.call(this);
+ }
+ if (isStrict) {
+ return this._weekdaysStrictRegex;
+ } else {
+ return this._weekdaysRegex;
+ }
+ } else {
+ return this._weekdaysStrictRegex && isStrict ?
+ this._weekdaysStrictRegex : this._weekdaysRegex;
+ }
+ }
+
+ var defaultWeekdaysShortRegex = matchWord;
+ function weekdaysShortRegex (isStrict) {
+ if (this._weekdaysParseExact) {
+ if (!hasOwnProp(this, '_weekdaysRegex')) {
+ computeWeekdaysParse.call(this);
+ }
+ if (isStrict) {
+ return this._weekdaysShortStrictRegex;
+ } else {
+ return this._weekdaysShortRegex;
+ }
+ } else {
+ return this._weekdaysShortStrictRegex && isStrict ?
+ this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
+ }
+ }
+
+ var defaultWeekdaysMinRegex = matchWord;
+ function weekdaysMinRegex (isStrict) {
+ if (this._weekdaysParseExact) {
+ if (!hasOwnProp(this, '_weekdaysRegex')) {
+ computeWeekdaysParse.call(this);
+ }
+ if (isStrict) {
+ return this._weekdaysMinStrictRegex;
+ } else {
+ return this._weekdaysMinRegex;
+ }
+ } else {
+ return this._weekdaysMinStrictRegex && isStrict ?
+ this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
+ }
+ }
+
+
+ function computeWeekdaysParse () {
+ function cmpLenRev(a, b) {
+ return b.length - a.length;
+ }
+
+ var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
+ i, mom, minp, shortp, longp;
+ for (i = 0; i < 7; i++) {
+ // make the regex if we don't have it already
+ mom = create_utc__createUTC([2000, 1]).day(i);
+ minp = this.weekdaysMin(mom, '');
+ shortp = this.weekdaysShort(mom, '');
+ longp = this.weekdays(mom, '');
+ minPieces.push(minp);
+ shortPieces.push(shortp);
+ longPieces.push(longp);
+ mixedPieces.push(minp);
+ mixedPieces.push(shortp);
+ mixedPieces.push(longp);
+ }
+ // Sorting makes sure if one weekday (or abbr) is a prefix of another it
+ // will match the longer piece.
+ minPieces.sort(cmpLenRev);
+ shortPieces.sort(cmpLenRev);
+ longPieces.sort(cmpLenRev);
+ mixedPieces.sort(cmpLenRev);
+ for (i = 0; i < 7; i++) {
+ shortPieces[i] = regexEscape(shortPieces[i]);
+ longPieces[i] = regexEscape(longPieces[i]);
+ mixedPieces[i] = regexEscape(mixedPieces[i]);
+ }
+
+ this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
+ this._weekdaysShortRegex = this._weekdaysRegex;
+ this._weekdaysMinRegex = this._weekdaysRegex;
+
+ this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
+ this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
+ this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
+ }
+
+ // FORMATTING
+
+ addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
+
+ // ALIASES
+
+ addUnitAlias('dayOfYear', 'DDD');
+
+ // PARSING
+
+ addRegexToken('DDD', match1to3);
+ addRegexToken('DDDD', match3);
+ addParseToken(['DDD', 'DDDD'], function (input, array, config) {
+ config._dayOfYear = toInt(input);
+ });
+
+ // HELPERS
+
+ // MOMENTS
+
+ function getSetDayOfYear (input) {
+ var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
+ return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
+ }
+
+ // FORMATTING
+
+ function hFormat() {
+ return this.hours() % 12 || 12;
+ }
+
+ function kFormat() {
+ return this.hours() || 24;
+ }
+
+ addFormatToken('H', ['HH', 2], 0, 'hour');
+ addFormatToken('h', ['hh', 2], 0, hFormat);
+ addFormatToken('k', ['kk', 2], 0, kFormat);
+
+ addFormatToken('hmm', 0, 0, function () {
+ return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
+ });
+
+ addFormatToken('hmmss', 0, 0, function () {
+ return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
+ zeroFill(this.seconds(), 2);
+ });
+
+ addFormatToken('Hmm', 0, 0, function () {
+ return '' + this.hours() + zeroFill(this.minutes(), 2);
+ });
+
+ addFormatToken('Hmmss', 0, 0, function () {
+ return '' + this.hours() + zeroFill(this.minutes(), 2) +
+ zeroFill(this.seconds(), 2);
+ });
+
+ function meridiem (token, lowercase) {
+ addFormatToken(token, 0, 0, function () {
+ return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
+ });
+ }
+
+ meridiem('a', true);
+ meridiem('A', false);
+
+ // ALIASES
+
+ addUnitAlias('hour', 'h');
+
+ // PARSING
+
+ function matchMeridiem (isStrict, locale) {
+ return locale._meridiemParse;
+ }
+
+ addRegexToken('a', matchMeridiem);
+ addRegexToken('A', matchMeridiem);
+ addRegexToken('H', match1to2);
+ addRegexToken('h', match1to2);
+ addRegexToken('HH', match1to2, match2);
+ addRegexToken('hh', match1to2, match2);
+
+ addRegexToken('hmm', match3to4);
+ addRegexToken('hmmss', match5to6);
+ addRegexToken('Hmm', match3to4);
+ addRegexToken('Hmmss', match5to6);
+
+ addParseToken(['H', 'HH'], HOUR);
+ addParseToken(['a', 'A'], function (input, array, config) {
+ config._isPm = config._locale.isPM(input);
+ config._meridiem = input;
+ });
+ addParseToken(['h', 'hh'], function (input, array, config) {
+ array[HOUR] = toInt(input);
+ getParsingFlags(config).bigHour = true;
+ });
+ addParseToken('hmm', function (input, array, config) {
+ var pos = input.length - 2;
+ array[HOUR] = toInt(input.substr(0, pos));
+ array[MINUTE] = toInt(input.substr(pos));
+ getParsingFlags(config).bigHour = true;
+ });
+ addParseToken('hmmss', function (input, array, config) {
+ var pos1 = input.length - 4;
+ var pos2 = input.length - 2;
+ array[HOUR] = toInt(input.substr(0, pos1));
+ array[MINUTE] = toInt(input.substr(pos1, 2));
+ array[SECOND] = toInt(input.substr(pos2));
+ getParsingFlags(config).bigHour = true;
+ });
+ addParseToken('Hmm', function (input, array, config) {
+ var pos = input.length - 2;
+ array[HOUR] = toInt(input.substr(0, pos));
+ array[MINUTE] = toInt(input.substr(pos));
+ });
+ addParseToken('Hmmss', function (input, array, config) {
+ var pos1 = input.length - 4;
+ var pos2 = input.length - 2;
+ array[HOUR] = toInt(input.substr(0, pos1));
+ array[MINUTE] = toInt(input.substr(pos1, 2));
+ array[SECOND] = toInt(input.substr(pos2));
+ });
+
+ // LOCALES
+
+ function localeIsPM (input) {
+ // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
+ // Using charAt should be more compatible.
+ return ((input + '').toLowerCase().charAt(0) === 'p');
+ }
+
+ var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
+ function localeMeridiem (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'pm' : 'PM';
+ } else {
+ return isLower ? 'am' : 'AM';
+ }
+ }
+
+
+ // MOMENTS
+
+ // Setting the hour should keep the time, because the user explicitly
+ // specified which hour he wants. So trying to maintain the same hour (in
+ // a new timezone) makes sense. Adding/subtracting hours does not follow
+ // this rule.
+ var getSetHour = makeGetSet('Hours', true);
+
+ // FORMATTING
+
+ addFormatToken('m', ['mm', 2], 0, 'minute');
+
+ // ALIASES
+
+ addUnitAlias('minute', 'm');
+
+ // PARSING
+
+ addRegexToken('m', match1to2);
+ addRegexToken('mm', match1to2, match2);
+ addParseToken(['m', 'mm'], MINUTE);
+
+ // MOMENTS
+
+ var getSetMinute = makeGetSet('Minutes', false);
+
+ // FORMATTING
+
+ addFormatToken('s', ['ss', 2], 0, 'second');
+
+ // ALIASES
+
+ addUnitAlias('second', 's');
+
+ // PARSING
+
+ addRegexToken('s', match1to2);
+ addRegexToken('ss', match1to2, match2);
+ addParseToken(['s', 'ss'], SECOND);
+
+ // MOMENTS
+
+ var getSetSecond = makeGetSet('Seconds', false);
+
+ // FORMATTING
+
+ addFormatToken('S', 0, 0, function () {
+ return ~~(this.millisecond() / 100);
+ });
+
+ addFormatToken(0, ['SS', 2], 0, function () {
+ return ~~(this.millisecond() / 10);
+ });
+
+ addFormatToken(0, ['SSS', 3], 0, 'millisecond');
+ addFormatToken(0, ['SSSS', 4], 0, function () {
+ return this.millisecond() * 10;
+ });
+ addFormatToken(0, ['SSSSS', 5], 0, function () {
+ return this.millisecond() * 100;
+ });
+ addFormatToken(0, ['SSSSSS', 6], 0, function () {
+ return this.millisecond() * 1000;
+ });
+ addFormatToken(0, ['SSSSSSS', 7], 0, function () {
+ return this.millisecond() * 10000;
+ });
+ addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
+ return this.millisecond() * 100000;
+ });
+ addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
+ return this.millisecond() * 1000000;
+ });
+
+
+ // ALIASES
+
+ addUnitAlias('millisecond', 'ms');
+
+ // PARSING
+
+ addRegexToken('S', match1to3, match1);
+ addRegexToken('SS', match1to3, match2);
+ addRegexToken('SSS', match1to3, match3);
+
+ var token;
+ for (token = 'SSSS'; token.length <= 9; token += 'S') {
+ addRegexToken(token, matchUnsigned);
+ }
+
+ function parseMs(input, array) {
+ array[MILLISECOND] = toInt(('0.' + input) * 1000);
+ }
+
+ for (token = 'S'; token.length <= 9; token += 'S') {
+ addParseToken(token, parseMs);
+ }
+ // MOMENTS
+
+ var getSetMillisecond = makeGetSet('Milliseconds', false);
+
+ // FORMATTING
+
+ addFormatToken('z', 0, 0, 'zoneAbbr');
+ addFormatToken('zz', 0, 0, 'zoneName');
+
+ // MOMENTS
+
+ function getZoneAbbr () {
+ return this._isUTC ? 'UTC' : '';
+ }
+
+ function getZoneName () {
+ return this._isUTC ? 'Coordinated Universal Time' : '';
+ }
+
+ var momentPrototype__proto = Moment.prototype;
+
+ momentPrototype__proto.add = add_subtract__add;
+ momentPrototype__proto.calendar = moment_calendar__calendar;
+ momentPrototype__proto.clone = clone;
+ momentPrototype__proto.diff = diff;
+ momentPrototype__proto.endOf = endOf;
+ momentPrototype__proto.format = format;
+ momentPrototype__proto.from = from;
+ momentPrototype__proto.fromNow = fromNow;
+ momentPrototype__proto.to = to;
+ momentPrototype__proto.toNow = toNow;
+ momentPrototype__proto.get = getSet;
+ momentPrototype__proto.invalidAt = invalidAt;
+ momentPrototype__proto.isAfter = isAfter;
+ momentPrototype__proto.isBefore = isBefore;
+ momentPrototype__proto.isBetween = isBetween;
+ momentPrototype__proto.isSame = isSame;
+ momentPrototype__proto.isSameOrAfter = isSameOrAfter;
+ momentPrototype__proto.isSameOrBefore = isSameOrBefore;
+ momentPrototype__proto.isValid = moment_valid__isValid;
+ momentPrototype__proto.lang = lang;
+ momentPrototype__proto.locale = locale;
+ momentPrototype__proto.localeData = localeData;
+ momentPrototype__proto.max = prototypeMax;
+ momentPrototype__proto.min = prototypeMin;
+ momentPrototype__proto.parsingFlags = parsingFlags;
+ momentPrototype__proto.set = getSet;
+ momentPrototype__proto.startOf = startOf;
+ momentPrototype__proto.subtract = add_subtract__subtract;
+ momentPrototype__proto.toArray = toArray;
+ momentPrototype__proto.toObject = toObject;
+ momentPrototype__proto.toDate = toDate;
+ momentPrototype__proto.toISOString = moment_format__toISOString;
+ momentPrototype__proto.toJSON = toJSON;
+ momentPrototype__proto.toString = toString;
+ momentPrototype__proto.unix = unix;
+ momentPrototype__proto.valueOf = to_type__valueOf;
+ momentPrototype__proto.creationData = creationData;
+
+ // Year
+ momentPrototype__proto.year = getSetYear;
+ momentPrototype__proto.isLeapYear = getIsLeapYear;
+
+ // Week Year
+ momentPrototype__proto.weekYear = getSetWeekYear;
+ momentPrototype__proto.isoWeekYear = getSetISOWeekYear;
+
+ // Quarter
+ momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;
+
+ // Month
+ momentPrototype__proto.month = getSetMonth;
+ momentPrototype__proto.daysInMonth = getDaysInMonth;
+
+ // Week
+ momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;
+ momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;
+ momentPrototype__proto.weeksInYear = getWeeksInYear;
+ momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;
+
+ // Day
+ momentPrototype__proto.date = getSetDayOfMonth;
+ momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;
+ momentPrototype__proto.weekday = getSetLocaleDayOfWeek;
+ momentPrototype__proto.isoWeekday = getSetISODayOfWeek;
+ momentPrototype__proto.dayOfYear = getSetDayOfYear;
+
+ // Hour
+ momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;
+
+ // Minute
+ momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;
+
+ // Second
+ momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;
+
+ // Millisecond
+ momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;
+
+ // Offset
+ momentPrototype__proto.utcOffset = getSetOffset;
+ momentPrototype__proto.utc = setOffsetToUTC;
+ momentPrototype__proto.local = setOffsetToLocal;
+ momentPrototype__proto.parseZone = setOffsetToParsedOffset;
+ momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;
+ momentPrototype__proto.isDST = isDaylightSavingTime;
+ momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;
+ momentPrototype__proto.isLocal = isLocal;
+ momentPrototype__proto.isUtcOffset = isUtcOffset;
+ momentPrototype__proto.isUtc = isUtc;
+ momentPrototype__proto.isUTC = isUtc;
+
+ // Timezone
+ momentPrototype__proto.zoneAbbr = getZoneAbbr;
+ momentPrototype__proto.zoneName = getZoneName;
+
+ // Deprecations
+ momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
+ momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
+ momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
+ momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);
+
+ var momentPrototype = momentPrototype__proto;
+
+ function moment__createUnix (input) {
+ return local__createLocal(input * 1000);
+ }
+
+ function moment__createInZone () {
+ return local__createLocal.apply(null, arguments).parseZone();
+ }
+
+ var defaultCalendar = {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ };
+
+ function locale_calendar__calendar (key, mom, now) {
+ var output = this._calendar[key];
+ return isFunction(output) ? output.call(mom, now) : output;
+ }
+
+ var defaultLongDateFormat = {
+ LTS : 'h:mm:ss A',
+ LT : 'h:mm A',
+ L : 'MM/DD/YYYY',
+ LL : 'MMMM D, YYYY',
+ LLL : 'MMMM D, YYYY h:mm A',
+ LLLL : 'dddd, MMMM D, YYYY h:mm A'
+ };
+
+ function longDateFormat (key) {
+ var format = this._longDateFormat[key],
+ formatUpper = this._longDateFormat[key.toUpperCase()];
+
+ if (format || !formatUpper) {
+ return format;
+ }
+
+ this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
+ return val.slice(1);
+ });
+
+ return this._longDateFormat[key];
+ }
+
+ var defaultInvalidDate = 'Invalid date';
+
+ function invalidDate () {
+ return this._invalidDate;
+ }
+
+ var defaultOrdinal = '%d';
+ var defaultOrdinalParse = /\d{1,2}/;
+
+ function ordinal (number) {
+ return this._ordinal.replace('%d', number);
+ }
+
+ function preParsePostFormat (string) {
+ return string;
+ }
+
+ var defaultRelativeTime = {
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
+ };
+
+ function relative__relativeTime (number, withoutSuffix, string, isFuture) {
+ var output = this._relativeTime[string];
+ return (isFunction(output)) ?
+ output(number, withoutSuffix, string, isFuture) :
+ output.replace(/%d/i, number);
+ }
+
+ function pastFuture (diff, output) {
+ var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
+ return isFunction(format) ? format(output) : format.replace(/%s/i, output);
+ }
+
+ var prototype__proto = Locale.prototype;
+
+ prototype__proto._calendar = defaultCalendar;
+ prototype__proto.calendar = locale_calendar__calendar;
+ prototype__proto._longDateFormat = defaultLongDateFormat;
+ prototype__proto.longDateFormat = longDateFormat;
+ prototype__proto._invalidDate = defaultInvalidDate;
+ prototype__proto.invalidDate = invalidDate;
+ prototype__proto._ordinal = defaultOrdinal;
+ prototype__proto.ordinal = ordinal;
+ prototype__proto._ordinalParse = defaultOrdinalParse;
+ prototype__proto.preparse = preParsePostFormat;
+ prototype__proto.postformat = preParsePostFormat;
+ prototype__proto._relativeTime = defaultRelativeTime;
+ prototype__proto.relativeTime = relative__relativeTime;
+ prototype__proto.pastFuture = pastFuture;
+ prototype__proto.set = locale_set__set;
+
+ // Month
+ prototype__proto.months = localeMonths;
+ prototype__proto._months = defaultLocaleMonths;
+ prototype__proto.monthsShort = localeMonthsShort;
+ prototype__proto._monthsShort = defaultLocaleMonthsShort;
+ prototype__proto.monthsParse = localeMonthsParse;
+ prototype__proto._monthsRegex = defaultMonthsRegex;
+ prototype__proto.monthsRegex = monthsRegex;
+ prototype__proto._monthsShortRegex = defaultMonthsShortRegex;
+ prototype__proto.monthsShortRegex = monthsShortRegex;
+
+ // Week
+ prototype__proto.week = localeWeek;
+ prototype__proto._week = defaultLocaleWeek;
+ prototype__proto.firstDayOfYear = localeFirstDayOfYear;
+ prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;
+
+ // Day of Week
+ prototype__proto.weekdays = localeWeekdays;
+ prototype__proto._weekdays = defaultLocaleWeekdays;
+ prototype__proto.weekdaysMin = localeWeekdaysMin;
+ prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;
+ prototype__proto.weekdaysShort = localeWeekdaysShort;
+ prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;
+ prototype__proto.weekdaysParse = localeWeekdaysParse;
+
+ prototype__proto._weekdaysRegex = defaultWeekdaysRegex;
+ prototype__proto.weekdaysRegex = weekdaysRegex;
+ prototype__proto._weekdaysShortRegex = defaultWeekdaysShortRegex;
+ prototype__proto.weekdaysShortRegex = weekdaysShortRegex;
+ prototype__proto._weekdaysMinRegex = defaultWeekdaysMinRegex;
+ prototype__proto.weekdaysMinRegex = weekdaysMinRegex;
+
+ // Hours
+ prototype__proto.isPM = localeIsPM;
+ prototype__proto._meridiemParse = defaultLocaleMeridiemParse;
+ prototype__proto.meridiem = localeMeridiem;
+
+ function lists__get (format, index, field, setter) {
+ var locale = locale_locales__getLocale();
+ var utc = create_utc__createUTC().set(setter, index);
+ return locale[field](utc, format);
+ }
+
+ function listMonthsImpl (format, index, field) {
+ if (typeof format === 'number') {
+ index = format;
+ format = undefined;
+ }
+
+ format = format || '';
+
+ if (index != null) {
+ return lists__get(format, index, field, 'month');
+ }
+
+ var i;
+ var out = [];
+ for (i = 0; i < 12; i++) {
+ out[i] = lists__get(format, i, field, 'month');
+ }
+ return out;
+ }
+
+ // ()
+ // (5)
+ // (fmt, 5)
+ // (fmt)
+ // (true)
+ // (true, 5)
+ // (true, fmt, 5)
+ // (true, fmt)
+ function listWeekdaysImpl (localeSorted, format, index, field) {
+ if (typeof localeSorted === 'boolean') {
+ if (typeof format === 'number') {
+ index = format;
+ format = undefined;
+ }
+
+ format = format || '';
+ } else {
+ format = localeSorted;
+ index = format;
+ localeSorted = false;
+
+ if (typeof format === 'number') {
+ index = format;
+ format = undefined;
+ }
+
+ format = format || '';
+ }
+
+ var locale = locale_locales__getLocale(),
+ shift = localeSorted ? locale._week.dow : 0;
+
+ if (index != null) {
+ return lists__get(format, (index + shift) % 7, field, 'day');
+ }
+
+ var i;
+ var out = [];
+ for (i = 0; i < 7; i++) {
+ out[i] = lists__get(format, (i + shift) % 7, field, 'day');
+ }
+ return out;
+ }
+
+ function lists__listMonths (format, index) {
+ return listMonthsImpl(format, index, 'months');
+ }
+
+ function lists__listMonthsShort (format, index) {
+ return listMonthsImpl(format, index, 'monthsShort');
+ }
+
+ function lists__listWeekdays (localeSorted, format, index) {
+ return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
+ }
+
+ function lists__listWeekdaysShort (localeSorted, format, index) {
+ return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
+ }
+
+ function lists__listWeekdaysMin (localeSorted, format, index) {
+ return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
+ }
+
+ locale_locales__getSetGlobalLocale('en', {
+ ordinalParse: /\d{1,2}(th|st|nd|rd)/,
+ ordinal : function (number) {
+ var b = number % 10,
+ output = (toInt(number % 100 / 10) === 1) ? 'th' :
+ (b === 1) ? 'st' :
+ (b === 2) ? 'nd' :
+ (b === 3) ? 'rd' : 'th';
+ return number + output;
+ }
+ });
+
+ // Side effect imports
+ utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);
+ utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);
+
+ var mathAbs = Math.abs;
+
+ function duration_abs__abs () {
+ var data = this._data;
+
+ this._milliseconds = mathAbs(this._milliseconds);
+ this._days = mathAbs(this._days);
+ this._months = mathAbs(this._months);
+
+ data.milliseconds = mathAbs(data.milliseconds);
+ data.seconds = mathAbs(data.seconds);
+ data.minutes = mathAbs(data.minutes);
+ data.hours = mathAbs(data.hours);
+ data.months = mathAbs(data.months);
+ data.years = mathAbs(data.years);
+
+ return this;
+ }
+
+ function duration_add_subtract__addSubtract (duration, input, value, direction) {
+ var other = create__createDuration(input, value);
+
+ duration._milliseconds += direction * other._milliseconds;
+ duration._days += direction * other._days;
+ duration._months += direction * other._months;
+
+ return duration._bubble();
+ }
+
+ // supports only 2.0-style add(1, 's') or add(duration)
+ function duration_add_subtract__add (input, value) {
+ return duration_add_subtract__addSubtract(this, input, value, 1);
+ }
+
+ // supports only 2.0-style subtract(1, 's') or subtract(duration)
+ function duration_add_subtract__subtract (input, value) {
+ return duration_add_subtract__addSubtract(this, input, value, -1);
+ }
+
+ function absCeil (number) {
+ if (number < 0) {
+ return Math.floor(number);
+ } else {
+ return Math.ceil(number);
+ }
+ }
+
+ function bubble () {
+ var milliseconds = this._milliseconds;
+ var days = this._days;
+ var months = this._months;
+ var data = this._data;
+ var seconds, minutes, hours, years, monthsFromDays;
+
+ // if we have a mix of positive and negative values, bubble down first
+ // check: https://github.com/moment/moment/issues/2166
+ if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
+ (milliseconds <= 0 && days <= 0 && months <= 0))) {
+ milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
+ days = 0;
+ months = 0;
+ }
+
+ // The following code bubbles up values, see the tests for
+ // examples of what that means.
+ data.milliseconds = milliseconds % 1000;
+
+ seconds = absFloor(milliseconds / 1000);
+ data.seconds = seconds % 60;
+
+ minutes = absFloor(seconds / 60);
+ data.minutes = minutes % 60;
+
+ hours = absFloor(minutes / 60);
+ data.hours = hours % 24;
+
+ days += absFloor(hours / 24);
+
+ // convert days to months
+ monthsFromDays = absFloor(daysToMonths(days));
+ months += monthsFromDays;
+ days -= absCeil(monthsToDays(monthsFromDays));
+
+ // 12 months -> 1 year
+ years = absFloor(months / 12);
+ months %= 12;
+
+ data.days = days;
+ data.months = months;
+ data.years = years;
+
+ return this;
+ }
+
+ function daysToMonths (days) {
+ // 400 years have 146097 days (taking into account leap year rules)
+ // 400 years have 12 months === 4800
+ return days * 4800 / 146097;
+ }
+
+ function monthsToDays (months) {
+ // the reverse of daysToMonths
+ return months * 146097 / 4800;
+ }
+
+ function as (units) {
+ var days;
+ var months;
+ var milliseconds = this._milliseconds;
+
+ units = normalizeUnits(units);
+
+ if (units === 'month' || units === 'year') {
+ days = this._days + milliseconds / 864e5;
+ months = this._months + daysToMonths(days);
+ return units === 'month' ? months : months / 12;
+ } else {
+ // handle milliseconds separately because of floating point math errors (issue #1867)
+ days = this._days + Math.round(monthsToDays(this._months));
+ switch (units) {
+ case 'week' : return days / 7 + milliseconds / 6048e5;
+ case 'day' : return days + milliseconds / 864e5;
+ case 'hour' : return days * 24 + milliseconds / 36e5;
+ case 'minute' : return days * 1440 + milliseconds / 6e4;
+ case 'second' : return days * 86400 + milliseconds / 1000;
+ // Math.floor prevents floating point math errors here
+ case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
+ default: throw new Error('Unknown unit ' + units);
+ }
+ }
+ }
+
+ // TODO: Use this.as('ms')?
+ function duration_as__valueOf () {
+ return (
+ this._milliseconds +
+ this._days * 864e5 +
+ (this._months % 12) * 2592e6 +
+ toInt(this._months / 12) * 31536e6
+ );
+ }
+
+ function makeAs (alias) {
+ return function () {
+ return this.as(alias);
+ };
+ }
+
+ var asMilliseconds = makeAs('ms');
+ var asSeconds = makeAs('s');
+ var asMinutes = makeAs('m');
+ var asHours = makeAs('h');
+ var asDays = makeAs('d');
+ var asWeeks = makeAs('w');
+ var asMonths = makeAs('M');
+ var asYears = makeAs('y');
+
+ function duration_get__get (units) {
+ units = normalizeUnits(units);
+ return this[units + 's']();
+ }
+
+ function makeGetter(name) {
+ return function () {
+ return this._data[name];
+ };
+ }
+
+ var milliseconds = makeGetter('milliseconds');
+ var seconds = makeGetter('seconds');
+ var minutes = makeGetter('minutes');
+ var hours = makeGetter('hours');
+ var days = makeGetter('days');
+ var months = makeGetter('months');
+ var years = makeGetter('years');
+
+ function weeks () {
+ return absFloor(this.days() / 7);
+ }
+
+ var round = Math.round;
+ var thresholds = {
+ s: 45, // seconds to minute
+ m: 45, // minutes to hour
+ h: 22, // hours to day
+ d: 26, // days to month
+ M: 11 // months to year
+ };
+
+ // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
+ function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
+ return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
+ }
+
+ function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {
+ var duration = create__createDuration(posNegDuration).abs();
+ var seconds = round(duration.as('s'));
+ var minutes = round(duration.as('m'));
+ var hours = round(duration.as('h'));
+ var days = round(duration.as('d'));
+ var months = round(duration.as('M'));
+ var years = round(duration.as('y'));
+
+ var a = seconds < thresholds.s && ['s', seconds] ||
+ minutes <= 1 && ['m'] ||
+ minutes < thresholds.m && ['mm', minutes] ||
+ hours <= 1 && ['h'] ||
+ hours < thresholds.h && ['hh', hours] ||
+ days <= 1 && ['d'] ||
+ days < thresholds.d && ['dd', days] ||
+ months <= 1 && ['M'] ||
+ months < thresholds.M && ['MM', months] ||
+ years <= 1 && ['y'] || ['yy', years];
+
+ a[2] = withoutSuffix;
+ a[3] = +posNegDuration > 0;
+ a[4] = locale;
+ return substituteTimeAgo.apply(null, a);
+ }
+
+ // This function allows you to set a threshold for relative time strings
+ function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {
+ if (thresholds[threshold] === undefined) {
+ return false;
+ }
+ if (limit === undefined) {
+ return thresholds[threshold];
+ }
+ thresholds[threshold] = limit;
+ return true;
+ }
+
+ function humanize (withSuffix) {
+ var locale = this.localeData();
+ var output = duration_humanize__relativeTime(this, !withSuffix, locale);
+
+ if (withSuffix) {
+ output = locale.pastFuture(+this, output);
+ }
+
+ return locale.postformat(output);
+ }
+
+ var iso_string__abs = Math.abs;
+
+ function iso_string__toISOString() {
+ // for ISO strings we do not use the normal bubbling rules:
+ // * milliseconds bubble up until they become hours
+ // * days do not bubble at all
+ // * months bubble up until they become years
+ // This is because there is no context-free conversion between hours and days
+ // (think of clock changes)
+ // and also not between days and months (28-31 days per month)
+ var seconds = iso_string__abs(this._milliseconds) / 1000;
+ var days = iso_string__abs(this._days);
+ var months = iso_string__abs(this._months);
+ var minutes, hours, years;
+
+ // 3600 seconds -> 60 minutes -> 1 hour
+ minutes = absFloor(seconds / 60);
+ hours = absFloor(minutes / 60);
+ seconds %= 60;
+ minutes %= 60;
+
+ // 12 months -> 1 year
+ years = absFloor(months / 12);
+ months %= 12;
+
+
+ // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
+ var Y = years;
+ var M = months;
+ var D = days;
+ var h = hours;
+ var m = minutes;
+ var s = seconds;
+ var total = this.asSeconds();
+
+ if (!total) {
+ // this is the same as C#'s (Noda) and python (isodate)...
+ // but not other JS (goog.date)
+ return 'P0D';
+ }
+
+ return (total < 0 ? '-' : '') +
+ 'P' +
+ (Y ? Y + 'Y' : '') +
+ (M ? M + 'M' : '') +
+ (D ? D + 'D' : '') +
+ ((h || m || s) ? 'T' : '') +
+ (h ? h + 'H' : '') +
+ (m ? m + 'M' : '') +
+ (s ? s + 'S' : '');
+ }
+
+ var duration_prototype__proto = Duration.prototype;
+
+ duration_prototype__proto.abs = duration_abs__abs;
+ duration_prototype__proto.add = duration_add_subtract__add;
+ duration_prototype__proto.subtract = duration_add_subtract__subtract;
+ duration_prototype__proto.as = as;
+ duration_prototype__proto.asMilliseconds = asMilliseconds;
+ duration_prototype__proto.asSeconds = asSeconds;
+ duration_prototype__proto.asMinutes = asMinutes;
+ duration_prototype__proto.asHours = asHours;
+ duration_prototype__proto.asDays = asDays;
+ duration_prototype__proto.asWeeks = asWeeks;
+ duration_prototype__proto.asMonths = asMonths;
+ duration_prototype__proto.asYears = asYears;
+ duration_prototype__proto.valueOf = duration_as__valueOf;
+ duration_prototype__proto._bubble = bubble;
+ duration_prototype__proto.get = duration_get__get;
+ duration_prototype__proto.milliseconds = milliseconds;
+ duration_prototype__proto.seconds = seconds;
+ duration_prototype__proto.minutes = minutes;
+ duration_prototype__proto.hours = hours;
+ duration_prototype__proto.days = days;
+ duration_prototype__proto.weeks = weeks;
+ duration_prototype__proto.months = months;
+ duration_prototype__proto.years = years;
+ duration_prototype__proto.humanize = humanize;
+ duration_prototype__proto.toISOString = iso_string__toISOString;
+ duration_prototype__proto.toString = iso_string__toISOString;
+ duration_prototype__proto.toJSON = iso_string__toISOString;
+ duration_prototype__proto.locale = locale;
+ duration_prototype__proto.localeData = localeData;
+
+ // Deprecations
+ duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);
+ duration_prototype__proto.lang = lang;
+
+ // Side effect imports
+
+ // FORMATTING
+
+ addFormatToken('X', 0, 0, 'unix');
+ addFormatToken('x', 0, 0, 'valueOf');
+
+ // PARSING
+
+ addRegexToken('x', matchSigned);
+ addRegexToken('X', matchTimestamp);
+ addParseToken('X', function (input, array, config) {
+ config._d = new Date(parseFloat(input, 10) * 1000);
+ });
+ addParseToken('x', function (input, array, config) {
+ config._d = new Date(toInt(input));
+ });
+
+ // Side effect imports
+
+
+ utils_hooks__hooks.version = '2.13.0';
+
+ setHookCallback(local__createLocal);
+
+ utils_hooks__hooks.fn = momentPrototype;
+ utils_hooks__hooks.min = min;
+ utils_hooks__hooks.max = max;
+ utils_hooks__hooks.now = now;
+ utils_hooks__hooks.utc = create_utc__createUTC;
+ utils_hooks__hooks.unix = moment__createUnix;
+ utils_hooks__hooks.months = lists__listMonths;
+ utils_hooks__hooks.isDate = isDate;
+ utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;
+ utils_hooks__hooks.invalid = valid__createInvalid;
+ utils_hooks__hooks.duration = create__createDuration;
+ utils_hooks__hooks.isMoment = isMoment;
+ utils_hooks__hooks.weekdays = lists__listWeekdays;
+ utils_hooks__hooks.parseZone = moment__createInZone;
+ utils_hooks__hooks.localeData = locale_locales__getLocale;
+ utils_hooks__hooks.isDuration = isDuration;
+ utils_hooks__hooks.monthsShort = lists__listMonthsShort;
+ utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;
+ utils_hooks__hooks.defineLocale = defineLocale;
+ utils_hooks__hooks.updateLocale = updateLocale;
+ utils_hooks__hooks.locales = locale_locales__listLocales;
+ utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;
+ utils_hooks__hooks.normalizeUnits = normalizeUnits;
+ utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;
+ utils_hooks__hooks.prototype = momentPrototype;
+
+ var _moment = utils_hooks__hooks;
+
+ return _moment;
+
+ }));
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(141)(module)))
+
+/***/ },
+/* 3 */
+4,
+/* 4 */,
+/* 5 */,
+/* 6 */,
+/* 7 */
+[460, 3],
+/* 8 */
+[462, 168, 169, 169],
+/* 9 */,
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 = __webpack_require__(3);
+ //// Types
+ (function (TypeModifier) {
+ TypeModifier[TypeModifier["Const"] = 0] = "Const";
+ })(exports.TypeModifier || (exports.TypeModifier = {}));
+ var TypeModifier = exports.TypeModifier;
+ var Type = (function () {
+ function Type(modifiers) {
+ if (modifiers === void 0) { modifiers = null; }
+ this.modifiers = modifiers;
+ if (lang_1.isBlank(modifiers)) {
+ this.modifiers = [];
+ }
+ }
+ Type.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };
+ return Type;
+ }());
+ exports.Type = Type;
+ (function (BuiltinTypeName) {
+ BuiltinTypeName[BuiltinTypeName["Dynamic"] = 0] = "Dynamic";
+ BuiltinTypeName[BuiltinTypeName["Bool"] = 1] = "Bool";
+ BuiltinTypeName[BuiltinTypeName["String"] = 2] = "String";
+ BuiltinTypeName[BuiltinTypeName["Int"] = 3] = "Int";
+ BuiltinTypeName[BuiltinTypeName["Number"] = 4] = "Number";
+ BuiltinTypeName[BuiltinTypeName["Function"] = 5] = "Function";
+ })(exports.BuiltinTypeName || (exports.BuiltinTypeName = {}));
+ var BuiltinTypeName = exports.BuiltinTypeName;
+ var BuiltinType = (function (_super) {
+ __extends(BuiltinType, _super);
+ function BuiltinType(name, modifiers) {
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, modifiers);
+ this.name = name;
+ }
+ BuiltinType.prototype.visitType = function (visitor, context) {
+ return visitor.visitBuiltintType(this, context);
+ };
+ return BuiltinType;
+ }(Type));
+ exports.BuiltinType = BuiltinType;
+ var ExternalType = (function (_super) {
+ __extends(ExternalType, _super);
+ function ExternalType(value, typeParams, modifiers) {
+ if (typeParams === void 0) { typeParams = null; }
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, modifiers);
+ this.value = value;
+ this.typeParams = typeParams;
+ }
+ ExternalType.prototype.visitType = function (visitor, context) {
+ return visitor.visitExternalType(this, context);
+ };
+ return ExternalType;
+ }(Type));
+ exports.ExternalType = ExternalType;
+ var ArrayType = (function (_super) {
+ __extends(ArrayType, _super);
+ function ArrayType(of, modifiers) {
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, modifiers);
+ this.of = of;
+ }
+ ArrayType.prototype.visitType = function (visitor, context) {
+ return visitor.visitArrayType(this, context);
+ };
+ return ArrayType;
+ }(Type));
+ exports.ArrayType = ArrayType;
+ var MapType = (function (_super) {
+ __extends(MapType, _super);
+ function MapType(valueType, modifiers) {
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, modifiers);
+ this.valueType = valueType;
+ }
+ MapType.prototype.visitType = function (visitor, context) { return visitor.visitMapType(this, context); };
+ return MapType;
+ }(Type));
+ exports.MapType = MapType;
+ exports.DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);
+ exports.BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);
+ exports.INT_TYPE = new BuiltinType(BuiltinTypeName.Int);
+ exports.NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number);
+ exports.STRING_TYPE = new BuiltinType(BuiltinTypeName.String);
+ exports.FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);
+ ///// Expressions
+ (function (BinaryOperator) {
+ BinaryOperator[BinaryOperator["Equals"] = 0] = "Equals";
+ BinaryOperator[BinaryOperator["NotEquals"] = 1] = "NotEquals";
+ BinaryOperator[BinaryOperator["Identical"] = 2] = "Identical";
+ BinaryOperator[BinaryOperator["NotIdentical"] = 3] = "NotIdentical";
+ BinaryOperator[BinaryOperator["Minus"] = 4] = "Minus";
+ BinaryOperator[BinaryOperator["Plus"] = 5] = "Plus";
+ BinaryOperator[BinaryOperator["Divide"] = 6] = "Divide";
+ BinaryOperator[BinaryOperator["Multiply"] = 7] = "Multiply";
+ BinaryOperator[BinaryOperator["Modulo"] = 8] = "Modulo";
+ BinaryOperator[BinaryOperator["And"] = 9] = "And";
+ BinaryOperator[BinaryOperator["Or"] = 10] = "Or";
+ BinaryOperator[BinaryOperator["Lower"] = 11] = "Lower";
+ BinaryOperator[BinaryOperator["LowerEquals"] = 12] = "LowerEquals";
+ BinaryOperator[BinaryOperator["Bigger"] = 13] = "Bigger";
+ BinaryOperator[BinaryOperator["BiggerEquals"] = 14] = "BiggerEquals";
+ })(exports.BinaryOperator || (exports.BinaryOperator = {}));
+ var BinaryOperator = exports.BinaryOperator;
+ var Expression = (function () {
+ function Expression(type) {
+ this.type = type;
+ }
+ Expression.prototype.prop = function (name) { return new ReadPropExpr(this, name); };
+ Expression.prototype.key = function (index, type) {
+ if (type === void 0) { type = null; }
+ return new ReadKeyExpr(this, index, type);
+ };
+ Expression.prototype.callMethod = function (name, params) {
+ return new InvokeMethodExpr(this, name, params);
+ };
+ Expression.prototype.callFn = function (params) { return new InvokeFunctionExpr(this, params); };
+ Expression.prototype.instantiate = function (params, type) {
+ if (type === void 0) { type = null; }
+ return new InstantiateExpr(this, params, type);
+ };
+ Expression.prototype.conditional = function (trueCase, falseCase) {
+ if (falseCase === void 0) { falseCase = null; }
+ return new ConditionalExpr(this, trueCase, falseCase);
+ };
+ Expression.prototype.equals = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs);
+ };
+ Expression.prototype.notEquals = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs);
+ };
+ Expression.prototype.identical = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs);
+ };
+ Expression.prototype.notIdentical = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs);
+ };
+ Expression.prototype.minus = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs);
+ };
+ Expression.prototype.plus = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs);
+ };
+ Expression.prototype.divide = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs);
+ };
+ Expression.prototype.multiply = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs);
+ };
+ Expression.prototype.modulo = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs);
+ };
+ Expression.prototype.and = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.And, this, rhs);
+ };
+ Expression.prototype.or = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs);
+ };
+ Expression.prototype.lower = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs);
+ };
+ Expression.prototype.lowerEquals = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs);
+ };
+ Expression.prototype.bigger = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs);
+ };
+ Expression.prototype.biggerEquals = function (rhs) {
+ return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs);
+ };
+ Expression.prototype.isBlank = function () {
+ // Note: We use equals by purpose here to compare to null and undefined in JS.
+ return this.equals(exports.NULL_EXPR);
+ };
+ Expression.prototype.cast = function (type) { return new CastExpr(this, type); };
+ Expression.prototype.toStmt = function () { return new ExpressionStatement(this); };
+ return Expression;
+ }());
+ exports.Expression = Expression;
+ (function (BuiltinVar) {
+ BuiltinVar[BuiltinVar["This"] = 0] = "This";
+ BuiltinVar[BuiltinVar["Super"] = 1] = "Super";
+ BuiltinVar[BuiltinVar["CatchError"] = 2] = "CatchError";
+ BuiltinVar[BuiltinVar["CatchStack"] = 3] = "CatchStack";
+ })(exports.BuiltinVar || (exports.BuiltinVar = {}));
+ var BuiltinVar = exports.BuiltinVar;
+ var ReadVarExpr = (function (_super) {
+ __extends(ReadVarExpr, _super);
+ function ReadVarExpr(name, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, type);
+ if (lang_1.isString(name)) {
+ this.name = name;
+ this.builtin = null;
+ }
+ else {
+ this.name = null;
+ this.builtin = name;
+ }
+ }
+ ReadVarExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitReadVarExpr(this, context);
+ };
+ ReadVarExpr.prototype.set = function (value) { return new WriteVarExpr(this.name, value); };
+ return ReadVarExpr;
+ }(Expression));
+ exports.ReadVarExpr = ReadVarExpr;
+ var WriteVarExpr = (function (_super) {
+ __extends(WriteVarExpr, _super);
+ function WriteVarExpr(name, value, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, lang_1.isPresent(type) ? type : value.type);
+ this.name = name;
+ this.value = value;
+ }
+ WriteVarExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitWriteVarExpr(this, context);
+ };
+ WriteVarExpr.prototype.toDeclStmt = function (type, modifiers) {
+ if (type === void 0) { type = null; }
+ if (modifiers === void 0) { modifiers = null; }
+ return new DeclareVarStmt(this.name, this.value, type, modifiers);
+ };
+ return WriteVarExpr;
+ }(Expression));
+ exports.WriteVarExpr = WriteVarExpr;
+ var WriteKeyExpr = (function (_super) {
+ __extends(WriteKeyExpr, _super);
+ function WriteKeyExpr(receiver, index, value, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, lang_1.isPresent(type) ? type : value.type);
+ this.receiver = receiver;
+ this.index = index;
+ this.value = value;
+ }
+ WriteKeyExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitWriteKeyExpr(this, context);
+ };
+ return WriteKeyExpr;
+ }(Expression));
+ exports.WriteKeyExpr = WriteKeyExpr;
+ var WritePropExpr = (function (_super) {
+ __extends(WritePropExpr, _super);
+ function WritePropExpr(receiver, name, value, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, lang_1.isPresent(type) ? type : value.type);
+ this.receiver = receiver;
+ this.name = name;
+ this.value = value;
+ }
+ WritePropExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitWritePropExpr(this, context);
+ };
+ return WritePropExpr;
+ }(Expression));
+ exports.WritePropExpr = WritePropExpr;
+ (function (BuiltinMethod) {
+ BuiltinMethod[BuiltinMethod["ConcatArray"] = 0] = "ConcatArray";
+ BuiltinMethod[BuiltinMethod["SubscribeObservable"] = 1] = "SubscribeObservable";
+ BuiltinMethod[BuiltinMethod["bind"] = 2] = "bind";
+ })(exports.BuiltinMethod || (exports.BuiltinMethod = {}));
+ var BuiltinMethod = exports.BuiltinMethod;
+ var InvokeMethodExpr = (function (_super) {
+ __extends(InvokeMethodExpr, _super);
+ function InvokeMethodExpr(receiver, method, args, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, type);
+ this.receiver = receiver;
+ this.args = args;
+ if (lang_1.isString(method)) {
+ this.name = method;
+ this.builtin = null;
+ }
+ else {
+ this.name = null;
+ this.builtin = method;
+ }
+ }
+ InvokeMethodExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitInvokeMethodExpr(this, context);
+ };
+ return InvokeMethodExpr;
+ }(Expression));
+ exports.InvokeMethodExpr = InvokeMethodExpr;
+ var InvokeFunctionExpr = (function (_super) {
+ __extends(InvokeFunctionExpr, _super);
+ function InvokeFunctionExpr(fn, args, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, type);
+ this.fn = fn;
+ this.args = args;
+ }
+ InvokeFunctionExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitInvokeFunctionExpr(this, context);
+ };
+ return InvokeFunctionExpr;
+ }(Expression));
+ exports.InvokeFunctionExpr = InvokeFunctionExpr;
+ var InstantiateExpr = (function (_super) {
+ __extends(InstantiateExpr, _super);
+ function InstantiateExpr(classExpr, args, type) {
+ _super.call(this, type);
+ this.classExpr = classExpr;
+ this.args = args;
+ }
+ InstantiateExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitInstantiateExpr(this, context);
+ };
+ return InstantiateExpr;
+ }(Expression));
+ exports.InstantiateExpr = InstantiateExpr;
+ var LiteralExpr = (function (_super) {
+ __extends(LiteralExpr, _super);
+ function LiteralExpr(value, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, type);
+ this.value = value;
+ }
+ LiteralExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitLiteralExpr(this, context);
+ };
+ return LiteralExpr;
+ }(Expression));
+ exports.LiteralExpr = LiteralExpr;
+ var ExternalExpr = (function (_super) {
+ __extends(ExternalExpr, _super);
+ function ExternalExpr(value, type, typeParams) {
+ if (type === void 0) { type = null; }
+ if (typeParams === void 0) { typeParams = null; }
+ _super.call(this, type);
+ this.value = value;
+ this.typeParams = typeParams;
+ }
+ ExternalExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitExternalExpr(this, context);
+ };
+ return ExternalExpr;
+ }(Expression));
+ exports.ExternalExpr = ExternalExpr;
+ var ConditionalExpr = (function (_super) {
+ __extends(ConditionalExpr, _super);
+ function ConditionalExpr(condition, trueCase, falseCase, type) {
+ if (falseCase === void 0) { falseCase = null; }
+ if (type === void 0) { type = null; }
+ _super.call(this, lang_1.isPresent(type) ? type : trueCase.type);
+ this.condition = condition;
+ this.falseCase = falseCase;
+ this.trueCase = trueCase;
+ }
+ ConditionalExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitConditionalExpr(this, context);
+ };
+ return ConditionalExpr;
+ }(Expression));
+ exports.ConditionalExpr = ConditionalExpr;
+ var NotExpr = (function (_super) {
+ __extends(NotExpr, _super);
+ function NotExpr(condition) {
+ _super.call(this, exports.BOOL_TYPE);
+ this.condition = condition;
+ }
+ NotExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitNotExpr(this, context);
+ };
+ return NotExpr;
+ }(Expression));
+ exports.NotExpr = NotExpr;
+ var CastExpr = (function (_super) {
+ __extends(CastExpr, _super);
+ function CastExpr(value, type) {
+ _super.call(this, type);
+ this.value = value;
+ }
+ CastExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitCastExpr(this, context);
+ };
+ return CastExpr;
+ }(Expression));
+ exports.CastExpr = CastExpr;
+ var FnParam = (function () {
+ function FnParam(name, type) {
+ if (type === void 0) { type = null; }
+ this.name = name;
+ this.type = type;
+ }
+ return FnParam;
+ }());
+ exports.FnParam = FnParam;
+ var FunctionExpr = (function (_super) {
+ __extends(FunctionExpr, _super);
+ function FunctionExpr(params, statements, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, type);
+ this.params = params;
+ this.statements = statements;
+ }
+ FunctionExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitFunctionExpr(this, context);
+ };
+ FunctionExpr.prototype.toDeclStmt = function (name, modifiers) {
+ if (modifiers === void 0) { modifiers = null; }
+ return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers);
+ };
+ return FunctionExpr;
+ }(Expression));
+ exports.FunctionExpr = FunctionExpr;
+ var BinaryOperatorExpr = (function (_super) {
+ __extends(BinaryOperatorExpr, _super);
+ function BinaryOperatorExpr(operator, lhs, rhs, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, lang_1.isPresent(type) ? type : lhs.type);
+ this.operator = operator;
+ this.rhs = rhs;
+ this.lhs = lhs;
+ }
+ BinaryOperatorExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitBinaryOperatorExpr(this, context);
+ };
+ return BinaryOperatorExpr;
+ }(Expression));
+ exports.BinaryOperatorExpr = BinaryOperatorExpr;
+ var ReadPropExpr = (function (_super) {
+ __extends(ReadPropExpr, _super);
+ function ReadPropExpr(receiver, name, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, type);
+ this.receiver = receiver;
+ this.name = name;
+ }
+ ReadPropExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitReadPropExpr(this, context);
+ };
+ ReadPropExpr.prototype.set = function (value) {
+ return new WritePropExpr(this.receiver, this.name, value);
+ };
+ return ReadPropExpr;
+ }(Expression));
+ exports.ReadPropExpr = ReadPropExpr;
+ var ReadKeyExpr = (function (_super) {
+ __extends(ReadKeyExpr, _super);
+ function ReadKeyExpr(receiver, index, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, type);
+ this.receiver = receiver;
+ this.index = index;
+ }
+ ReadKeyExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitReadKeyExpr(this, context);
+ };
+ ReadKeyExpr.prototype.set = function (value) {
+ return new WriteKeyExpr(this.receiver, this.index, value);
+ };
+ return ReadKeyExpr;
+ }(Expression));
+ exports.ReadKeyExpr = ReadKeyExpr;
+ var LiteralArrayExpr = (function (_super) {
+ __extends(LiteralArrayExpr, _super);
+ function LiteralArrayExpr(entries, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, type);
+ this.entries = entries;
+ }
+ LiteralArrayExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitLiteralArrayExpr(this, context);
+ };
+ return LiteralArrayExpr;
+ }(Expression));
+ exports.LiteralArrayExpr = LiteralArrayExpr;
+ var LiteralMapExpr = (function (_super) {
+ __extends(LiteralMapExpr, _super);
+ function LiteralMapExpr(entries, type) {
+ if (type === void 0) { type = null; }
+ _super.call(this, type);
+ this.entries = entries;
+ this.valueType = null;
+ if (lang_1.isPresent(type)) {
+ this.valueType = type.valueType;
+ }
+ }
+ LiteralMapExpr.prototype.visitExpression = function (visitor, context) {
+ return visitor.visitLiteralMapExpr(this, context);
+ };
+ return LiteralMapExpr;
+ }(Expression));
+ exports.LiteralMapExpr = LiteralMapExpr;
+ exports.THIS_EXPR = new ReadVarExpr(BuiltinVar.This);
+ exports.SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super);
+ exports.CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError);
+ exports.CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack);
+ exports.NULL_EXPR = new LiteralExpr(null, null);
+ //// Statements
+ (function (StmtModifier) {
+ StmtModifier[StmtModifier["Final"] = 0] = "Final";
+ StmtModifier[StmtModifier["Private"] = 1] = "Private";
+ })(exports.StmtModifier || (exports.StmtModifier = {}));
+ var StmtModifier = exports.StmtModifier;
+ var Statement = (function () {
+ function Statement(modifiers) {
+ if (modifiers === void 0) { modifiers = null; }
+ this.modifiers = modifiers;
+ if (lang_1.isBlank(modifiers)) {
+ this.modifiers = [];
+ }
+ }
+ Statement.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };
+ return Statement;
+ }());
+ exports.Statement = Statement;
+ var DeclareVarStmt = (function (_super) {
+ __extends(DeclareVarStmt, _super);
+ function DeclareVarStmt(name, value, type, modifiers) {
+ if (type === void 0) { type = null; }
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, modifiers);
+ this.name = name;
+ this.value = value;
+ this.type = lang_1.isPresent(type) ? type : value.type;
+ }
+ DeclareVarStmt.prototype.visitStatement = function (visitor, context) {
+ return visitor.visitDeclareVarStmt(this, context);
+ };
+ return DeclareVarStmt;
+ }(Statement));
+ exports.DeclareVarStmt = DeclareVarStmt;
+ var DeclareFunctionStmt = (function (_super) {
+ __extends(DeclareFunctionStmt, _super);
+ function DeclareFunctionStmt(name, params, statements, type, modifiers) {
+ if (type === void 0) { type = null; }
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, modifiers);
+ this.name = name;
+ this.params = params;
+ this.statements = statements;
+ this.type = type;
+ }
+ DeclareFunctionStmt.prototype.visitStatement = function (visitor, context) {
+ return visitor.visitDeclareFunctionStmt(this, context);
+ };
+ return DeclareFunctionStmt;
+ }(Statement));
+ exports.DeclareFunctionStmt = DeclareFunctionStmt;
+ var ExpressionStatement = (function (_super) {
+ __extends(ExpressionStatement, _super);
+ function ExpressionStatement(expr) {
+ _super.call(this);
+ this.expr = expr;
+ }
+ ExpressionStatement.prototype.visitStatement = function (visitor, context) {
+ return visitor.visitExpressionStmt(this, context);
+ };
+ return ExpressionStatement;
+ }(Statement));
+ exports.ExpressionStatement = ExpressionStatement;
+ var ReturnStatement = (function (_super) {
+ __extends(ReturnStatement, _super);
+ function ReturnStatement(value) {
+ _super.call(this);
+ this.value = value;
+ }
+ ReturnStatement.prototype.visitStatement = function (visitor, context) {
+ return visitor.visitReturnStmt(this, context);
+ };
+ return ReturnStatement;
+ }(Statement));
+ exports.ReturnStatement = ReturnStatement;
+ var AbstractClassPart = (function () {
+ function AbstractClassPart(type, modifiers) {
+ if (type === void 0) { type = null; }
+ this.type = type;
+ this.modifiers = modifiers;
+ if (lang_1.isBlank(modifiers)) {
+ this.modifiers = [];
+ }
+ }
+ AbstractClassPart.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };
+ return AbstractClassPart;
+ }());
+ exports.AbstractClassPart = AbstractClassPart;
+ var ClassField = (function (_super) {
+ __extends(ClassField, _super);
+ function ClassField(name, type, modifiers) {
+ if (type === void 0) { type = null; }
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, type, modifiers);
+ this.name = name;
+ }
+ return ClassField;
+ }(AbstractClassPart));
+ exports.ClassField = ClassField;
+ var ClassMethod = (function (_super) {
+ __extends(ClassMethod, _super);
+ function ClassMethod(name, params, body, type, modifiers) {
+ if (type === void 0) { type = null; }
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, type, modifiers);
+ this.name = name;
+ this.params = params;
+ this.body = body;
+ }
+ return ClassMethod;
+ }(AbstractClassPart));
+ exports.ClassMethod = ClassMethod;
+ var ClassGetter = (function (_super) {
+ __extends(ClassGetter, _super);
+ function ClassGetter(name, body, type, modifiers) {
+ if (type === void 0) { type = null; }
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, type, modifiers);
+ this.name = name;
+ this.body = body;
+ }
+ return ClassGetter;
+ }(AbstractClassPart));
+ exports.ClassGetter = ClassGetter;
+ var ClassStmt = (function (_super) {
+ __extends(ClassStmt, _super);
+ function ClassStmt(name, parent, fields, getters, constructorMethod, methods, modifiers) {
+ if (modifiers === void 0) { modifiers = null; }
+ _super.call(this, modifiers);
+ this.name = name;
+ this.parent = parent;
+ this.fields = fields;
+ this.getters = getters;
+ this.constructorMethod = constructorMethod;
+ this.methods = methods;
+ }
+ ClassStmt.prototype.visitStatement = function (visitor, context) {
+ return visitor.visitDeclareClassStmt(this, context);
+ };
+ return ClassStmt;
+ }(Statement));
+ exports.ClassStmt = ClassStmt;
+ var IfStmt = (function (_super) {
+ __extends(IfStmt, _super);
+ function IfStmt(condition, trueCase, falseCase) {
+ if (falseCase === void 0) { falseCase = []; }
+ _super.call(this);
+ this.condition = condition;
+ this.trueCase = trueCase;
+ this.falseCase = falseCase;
+ }
+ IfStmt.prototype.visitStatement = function (visitor, context) {
+ return visitor.visitIfStmt(this, context);
+ };
+ return IfStmt;
+ }(Statement));
+ exports.IfStmt = IfStmt;
+ var CommentStmt = (function (_super) {
+ __extends(CommentStmt, _super);
+ function CommentStmt(comment) {
+ _super.call(this);
+ this.comment = comment;
+ }
+ CommentStmt.prototype.visitStatement = function (visitor, context) {
+ return visitor.visitCommentStmt(this, context);
+ };
+ return CommentStmt;
+ }(Statement));
+ exports.CommentStmt = CommentStmt;
+ var TryCatchStmt = (function (_super) {
+ __extends(TryCatchStmt, _super);
+ function TryCatchStmt(bodyStmts, catchStmts) {
+ _super.call(this);
+ this.bodyStmts = bodyStmts;
+ this.catchStmts = catchStmts;
+ }
+ TryCatchStmt.prototype.visitStatement = function (visitor, context) {
+ return visitor.visitTryCatchStmt(this, context);
+ };
+ return TryCatchStmt;
+ }(Statement));
+ exports.TryCatchStmt = TryCatchStmt;
+ var ThrowStmt = (function (_super) {
+ __extends(ThrowStmt, _super);
+ function ThrowStmt(error) {
+ _super.call(this);
+ this.error = error;
+ }
+ ThrowStmt.prototype.visitStatement = function (visitor, context) {
+ return visitor.visitThrowStmt(this, context);
+ };
+ return ThrowStmt;
+ }(Statement));
+ exports.ThrowStmt = ThrowStmt;
+ var ExpressionTransformer = (function () {
+ function ExpressionTransformer() {
+ }
+ ExpressionTransformer.prototype.visitReadVarExpr = function (ast, context) { return ast; };
+ ExpressionTransformer.prototype.visitWriteVarExpr = function (expr, context) {
+ return new WriteVarExpr(expr.name, expr.value.visitExpression(this, context));
+ };
+ ExpressionTransformer.prototype.visitWriteKeyExpr = function (expr, context) {
+ return new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context));
+ };
+ ExpressionTransformer.prototype.visitWritePropExpr = function (expr, context) {
+ return new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context));
+ };
+ ExpressionTransformer.prototype.visitInvokeMethodExpr = function (ast, context) {
+ var method = lang_1.isPresent(ast.builtin) ? ast.builtin : ast.name;
+ return new InvokeMethodExpr(ast.receiver.visitExpression(this, context), method, this.visitAllExpressions(ast.args, context), ast.type);
+ };
+ ExpressionTransformer.prototype.visitInvokeFunctionExpr = function (ast, context) {
+ return new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type);
+ };
+ ExpressionTransformer.prototype.visitInstantiateExpr = function (ast, context) {
+ return new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type);
+ };
+ ExpressionTransformer.prototype.visitLiteralExpr = function (ast, context) { return ast; };
+ ExpressionTransformer.prototype.visitExternalExpr = function (ast, context) { return ast; };
+ ExpressionTransformer.prototype.visitConditionalExpr = function (ast, context) {
+ return new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), ast.falseCase.visitExpression(this, context));
+ };
+ ExpressionTransformer.prototype.visitNotExpr = function (ast, context) {
+ return new NotExpr(ast.condition.visitExpression(this, context));
+ };
+ ExpressionTransformer.prototype.visitCastExpr = function (ast, context) {
+ return new CastExpr(ast.value.visitExpression(this, context), context);
+ };
+ ExpressionTransformer.prototype.visitFunctionExpr = function (ast, context) {
+ // Don't descend into nested functions
+ return ast;
+ };
+ ExpressionTransformer.prototype.visitBinaryOperatorExpr = function (ast, context) {
+ return new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type);
+ };
+ ExpressionTransformer.prototype.visitReadPropExpr = function (ast, context) {
+ return new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type);
+ };
+ ExpressionTransformer.prototype.visitReadKeyExpr = function (ast, context) {
+ return new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type);
+ };
+ ExpressionTransformer.prototype.visitLiteralArrayExpr = function (ast, context) {
+ return new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context));
+ };
+ ExpressionTransformer.prototype.visitLiteralMapExpr = function (ast, context) {
+ var _this = this;
+ return new LiteralMapExpr(ast.entries.map(function (entry) { return [entry[0], entry[1].visitExpression(_this, context)]; }));
+ };
+ ExpressionTransformer.prototype.visitAllExpressions = function (exprs, context) {
+ var _this = this;
+ return exprs.map(function (expr) { return expr.visitExpression(_this, context); });
+ };
+ ExpressionTransformer.prototype.visitDeclareVarStmt = function (stmt, context) {
+ return new DeclareVarStmt(stmt.name, stmt.value.visitExpression(this, context), stmt.type, stmt.modifiers);
+ };
+ ExpressionTransformer.prototype.visitDeclareFunctionStmt = function (stmt, context) {
+ // Don't descend into nested functions
+ return stmt;
+ };
+ ExpressionTransformer.prototype.visitExpressionStmt = function (stmt, context) {
+ return new ExpressionStatement(stmt.expr.visitExpression(this, context));
+ };
+ ExpressionTransformer.prototype.visitReturnStmt = function (stmt, context) {
+ return new ReturnStatement(stmt.value.visitExpression(this, context));
+ };
+ ExpressionTransformer.prototype.visitDeclareClassStmt = function (stmt, context) {
+ // Don't descend into nested functions
+ return stmt;
+ };
+ ExpressionTransformer.prototype.visitIfStmt = function (stmt, context) {
+ return new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context));
+ };
+ ExpressionTransformer.prototype.visitTryCatchStmt = function (stmt, context) {
+ return new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context));
+ };
+ ExpressionTransformer.prototype.visitThrowStmt = function (stmt, context) {
+ return new ThrowStmt(stmt.error.visitExpression(this, context));
+ };
+ ExpressionTransformer.prototype.visitCommentStmt = function (stmt, context) { return stmt; };
+ ExpressionTransformer.prototype.visitAllStatements = function (stmts, context) {
+ var _this = this;
+ return stmts.map(function (stmt) { return stmt.visitStatement(_this, context); });
+ };
+ return ExpressionTransformer;
+ }());
+ exports.ExpressionTransformer = ExpressionTransformer;
+ var RecursiveExpressionVisitor = (function () {
+ function RecursiveExpressionVisitor() {
+ }
+ RecursiveExpressionVisitor.prototype.visitReadVarExpr = function (ast, context) { return ast; };
+ RecursiveExpressionVisitor.prototype.visitWriteVarExpr = function (expr, context) {
+ expr.value.visitExpression(this, context);
+ return expr;
+ };
+ RecursiveExpressionVisitor.prototype.visitWriteKeyExpr = function (expr, context) {
+ expr.receiver.visitExpression(this, context);
+ expr.index.visitExpression(this, context);
+ expr.value.visitExpression(this, context);
+ return expr;
+ };
+ RecursiveExpressionVisitor.prototype.visitWritePropExpr = function (expr, context) {
+ expr.receiver.visitExpression(this, context);
+ expr.value.visitExpression(this, context);
+ return expr;
+ };
+ RecursiveExpressionVisitor.prototype.visitInvokeMethodExpr = function (ast, context) {
+ ast.receiver.visitExpression(this, context);
+ this.visitAllExpressions(ast.args, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitInvokeFunctionExpr = function (ast, context) {
+ ast.fn.visitExpression(this, context);
+ this.visitAllExpressions(ast.args, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitInstantiateExpr = function (ast, context) {
+ ast.classExpr.visitExpression(this, context);
+ this.visitAllExpressions(ast.args, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitLiteralExpr = function (ast, context) { return ast; };
+ RecursiveExpressionVisitor.prototype.visitExternalExpr = function (ast, context) { return ast; };
+ RecursiveExpressionVisitor.prototype.visitConditionalExpr = function (ast, context) {
+ ast.condition.visitExpression(this, context);
+ ast.trueCase.visitExpression(this, context);
+ ast.falseCase.visitExpression(this, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitNotExpr = function (ast, context) {
+ ast.condition.visitExpression(this, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitCastExpr = function (ast, context) {
+ ast.value.visitExpression(this, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitFunctionExpr = function (ast, context) { return ast; };
+ RecursiveExpressionVisitor.prototype.visitBinaryOperatorExpr = function (ast, context) {
+ ast.lhs.visitExpression(this, context);
+ ast.rhs.visitExpression(this, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitReadPropExpr = function (ast, context) {
+ ast.receiver.visitExpression(this, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitReadKeyExpr = function (ast, context) {
+ ast.receiver.visitExpression(this, context);
+ ast.index.visitExpression(this, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitLiteralArrayExpr = function (ast, context) {
+ this.visitAllExpressions(ast.entries, context);
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitLiteralMapExpr = function (ast, context) {
+ var _this = this;
+ ast.entries.forEach(function (entry) { return entry[1].visitExpression(_this, context); });
+ return ast;
+ };
+ RecursiveExpressionVisitor.prototype.visitAllExpressions = function (exprs, context) {
+ var _this = this;
+ exprs.forEach(function (expr) { return expr.visitExpression(_this, context); });
+ };
+ RecursiveExpressionVisitor.prototype.visitDeclareVarStmt = function (stmt, context) {
+ stmt.value.visitExpression(this, context);
+ return stmt;
+ };
+ RecursiveExpressionVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) {
+ // Don't descend into nested functions
+ return stmt;
+ };
+ RecursiveExpressionVisitor.prototype.visitExpressionStmt = function (stmt, context) {
+ stmt.expr.visitExpression(this, context);
+ return stmt;
+ };
+ RecursiveExpressionVisitor.prototype.visitReturnStmt = function (stmt, context) {
+ stmt.value.visitExpression(this, context);
+ return stmt;
+ };
+ RecursiveExpressionVisitor.prototype.visitDeclareClassStmt = function (stmt, context) {
+ // Don't descend into nested functions
+ return stmt;
+ };
+ RecursiveExpressionVisitor.prototype.visitIfStmt = function (stmt, context) {
+ stmt.condition.visitExpression(this, context);
+ this.visitAllStatements(stmt.trueCase, context);
+ this.visitAllStatements(stmt.falseCase, context);
+ return stmt;
+ };
+ RecursiveExpressionVisitor.prototype.visitTryCatchStmt = function (stmt, context) {
+ this.visitAllStatements(stmt.bodyStmts, context);
+ this.visitAllStatements(stmt.catchStmts, context);
+ return stmt;
+ };
+ RecursiveExpressionVisitor.prototype.visitThrowStmt = function (stmt, context) {
+ stmt.error.visitExpression(this, context);
+ return stmt;
+ };
+ RecursiveExpressionVisitor.prototype.visitCommentStmt = function (stmt, context) { return stmt; };
+ RecursiveExpressionVisitor.prototype.visitAllStatements = function (stmts, context) {
+ var _this = this;
+ stmts.forEach(function (stmt) { return stmt.visitStatement(_this, context); });
+ };
+ return RecursiveExpressionVisitor;
+ }());
+ exports.RecursiveExpressionVisitor = RecursiveExpressionVisitor;
+ function replaceVarInExpression(varName, newValue, expression) {
+ var transformer = new _ReplaceVariableTransformer(varName, newValue);
+ return expression.visitExpression(transformer, null);
+ }
+ exports.replaceVarInExpression = replaceVarInExpression;
+ var _ReplaceVariableTransformer = (function (_super) {
+ __extends(_ReplaceVariableTransformer, _super);
+ function _ReplaceVariableTransformer(_varName, _newValue) {
+ _super.call(this);
+ this._varName = _varName;
+ this._newValue = _newValue;
+ }
+ _ReplaceVariableTransformer.prototype.visitReadVarExpr = function (ast, context) {
+ return ast.name == this._varName ? this._newValue : ast;
+ };
+ return _ReplaceVariableTransformer;
+ }(ExpressionTransformer));
+ function findReadVarNames(stmts) {
+ var finder = new _VariableFinder();
+ finder.visitAllStatements(stmts, null);
+ return finder.varNames;
+ }
+ exports.findReadVarNames = findReadVarNames;
+ var _VariableFinder = (function (_super) {
+ __extends(_VariableFinder, _super);
+ function _VariableFinder() {
+ _super.apply(this, arguments);
+ this.varNames = new Set();
+ }
+ _VariableFinder.prototype.visitReadVarExpr = function (ast, context) {
+ this.varNames.add(ast.name);
+ return null;
+ };
+ return _VariableFinder;
+ }(RecursiveExpressionVisitor));
+ function variable(name, type) {
+ if (type === void 0) { type = null; }
+ return new ReadVarExpr(name, type);
+ }
+ exports.variable = variable;
+ function importExpr(id, typeParams) {
+ if (typeParams === void 0) { typeParams = null; }
+ return new ExternalExpr(id, null, typeParams);
+ }
+ exports.importExpr = importExpr;
+ function importType(id, typeParams, typeModifiers) {
+ if (typeParams === void 0) { typeParams = null; }
+ if (typeModifiers === void 0) { typeModifiers = null; }
+ return lang_1.isPresent(id) ? new ExternalType(id, typeParams, typeModifiers) : null;
+ }
+ exports.importType = importType;
+ function literal(value, type) {
+ if (type === void 0) { type = null; }
+ return new LiteralExpr(value, type);
+ }
+ exports.literal = literal;
+ function literalArr(values, type) {
+ if (type === void 0) { type = null; }
+ return new LiteralArrayExpr(values, type);
+ }
+ exports.literalArr = literalArr;
+ function literalMap(values, type) {
+ if (type === void 0) { type = null; }
+ return new LiteralMapExpr(values, type);
+ }
+ exports.literalMap = literalMap;
+ function not(expr) {
+ return new NotExpr(expr);
+ }
+ exports.not = not;
+ function fn(params, body, type) {
+ if (type === void 0) { type = null; }
+ return new FunctionExpr(params, body, type);
+ }
+ exports.fn = fn;
+ //# sourceMappingURL=output_ast.js.map
+
+/***/ },
+/* 11 */,
+/* 12 */
+4,
+/* 13 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var core_1 = __webpack_require__(1);
+ exports.isDefaultChangeDetectionStrategy = core_1.__core_private__.isDefaultChangeDetectionStrategy;
+ exports.ChangeDetectorState = core_1.__core_private__.ChangeDetectorState;
+ exports.CHANGE_DETECTION_STRATEGY_VALUES = core_1.__core_private__.CHANGE_DETECTION_STRATEGY_VALUES;
+ exports.constructDependencies = core_1.__core_private__.constructDependencies;
+ exports.LifecycleHooks = core_1.__core_private__.LifecycleHooks;
+ exports.LIFECYCLE_HOOKS_VALUES = core_1.__core_private__.LIFECYCLE_HOOKS_VALUES;
+ exports.ReflectorReader = core_1.__core_private__.ReflectorReader;
+ exports.ReflectorComponentResolver = core_1.__core_private__.ReflectorComponentResolver;
+ exports.AppElement = core_1.__core_private__.AppElement;
+ exports.AppView = core_1.__core_private__.AppView;
+ exports.DebugAppView = core_1.__core_private__.DebugAppView;
+ exports.ViewType = core_1.__core_private__.ViewType;
+ exports.MAX_INTERPOLATION_VALUES = core_1.__core_private__.MAX_INTERPOLATION_VALUES;
+ exports.checkBinding = core_1.__core_private__.checkBinding;
+ exports.flattenNestedViewRenderNodes = core_1.__core_private__.flattenNestedViewRenderNodes;
+ exports.interpolate = core_1.__core_private__.interpolate;
+ exports.ViewUtils = core_1.__core_private__.ViewUtils;
+ exports.VIEW_ENCAPSULATION_VALUES = core_1.__core_private__.VIEW_ENCAPSULATION_VALUES;
+ exports.DebugContext = core_1.__core_private__.DebugContext;
+ exports.StaticNodeDebugInfo = core_1.__core_private__.StaticNodeDebugInfo;
+ exports.devModeEqual = core_1.__core_private__.devModeEqual;
+ exports.uninitialized = core_1.__core_private__.uninitialized;
+ exports.ValueUnwrapper = core_1.__core_private__.ValueUnwrapper;
+ exports.TemplateRef_ = core_1.__core_private__.TemplateRef_;
+ exports.RenderDebugInfo = core_1.__core_private__.RenderDebugInfo;
+ exports.SecurityContext = core_1.__core_private__.SecurityContext;
+ exports.SanitizationService = core_1.__core_private__.SanitizationService;
+ exports.createProvider = core_1.__core_private__.createProvider;
+ exports.isProviderLiteral = core_1.__core_private__.isProviderLiteral;
+ exports.EMPTY_ARRAY = core_1.__core_private__.EMPTY_ARRAY;
+ exports.EMPTY_MAP = core_1.__core_private__.EMPTY_MAP;
+ exports.pureProxy1 = core_1.__core_private__.pureProxy1;
+ exports.pureProxy2 = core_1.__core_private__.pureProxy2;
+ exports.pureProxy3 = core_1.__core_private__.pureProxy3;
+ exports.pureProxy4 = core_1.__core_private__.pureProxy4;
+ exports.pureProxy5 = core_1.__core_private__.pureProxy5;
+ exports.pureProxy6 = core_1.__core_private__.pureProxy6;
+ exports.pureProxy7 = core_1.__core_private__.pureProxy7;
+ exports.pureProxy8 = core_1.__core_private__.pureProxy8;
+ exports.pureProxy9 = core_1.__core_private__.pureProxy9;
+ exports.pureProxy10 = core_1.__core_private__.pureProxy10;
+ exports.castByValue = core_1.__core_private__.castByValue;
+ exports.Console = core_1.__core_private__.Console;
+ //# sourceMappingURL=core_private.js.map
+
+/***/ },
+/* 14 */,
+/* 15 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var lang_1 = __webpack_require__(12);
+ var _DOM = null;
+ function getDOM() {
+ return _DOM;
+ }
+ exports.getDOM = getDOM;
+ function setDOM(adapter) {
+ _DOM = adapter;
+ }
+ exports.setDOM = setDOM;
+ function setRootDomAdapter(adapter) {
+ if (lang_1.isBlank(_DOM)) {
+ _DOM = adapter;
+ }
+ }
+ exports.setRootDomAdapter = setRootDomAdapter;
+ /* tslint:disable:requireParameterType */
+ /**
+ * Provides DOM operations in an environment-agnostic way.
+ */
+ var DomAdapter = (function () {
+ function DomAdapter() {
+ this.xhrType = null;
+ }
+ /** @deprecated */
+ DomAdapter.prototype.getXHR = function () { return this.xhrType; };
+ Object.defineProperty(DomAdapter.prototype, "attrToPropMap", {
+ /**
+ * Maps attribute names to their corresponding property names for cases
+ * where attribute name doesn't match property name.
+ */
+ get: function () { return this._attrToPropMap; },
+ set: function (value) { this._attrToPropMap = value; },
+ enumerable: true,
+ configurable: true
+ });
+ ;
+ ;
+ return DomAdapter;
+ }());
+ exports.DomAdapter = DomAdapter;
+ //# sourceMappingURL=dom_adapter.js.map
+
+/***/ },
+/* 16 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 core_1 = __webpack_require__(1);
+ var core_private_1 = __webpack_require__(13);
+ var lang_1 = __webpack_require__(3);
+ var exceptions_1 = __webpack_require__(8);
+ var collection_1 = __webpack_require__(7);
+ var selector_1 = __webpack_require__(93);
+ var util_1 = __webpack_require__(25);
+ var url_resolver_1 = __webpack_require__(30);
+ // group 1: "property" from "[property]"
+ // group 2: "event" from "(event)"
+ var HOST_REG_EXP = /^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))$/g;
+ var CompileMetadataWithIdentifier = (function () {
+ function CompileMetadataWithIdentifier() {
+ }
+ 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);
+ }
+ 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;
+ function metadataFromJson(data) {
+ return _COMPILE_METADATA_FROM_JSON[data['class']](data);
+ }
+ exports.metadataFromJson = metadataFromJson;
+ var CompileIdentifierMetadata = (function () {
+ function CompileIdentifierMetadata(_a) {
+ var _b = _a === void 0 ? {} : _a, runtime = _b.runtime, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, value = _b.value;
+ this.runtime = runtime;
+ this.name = name;
+ this.prefix = prefix;
+ this.moduleUrl = moduleUrl;
+ this.value = value;
+ }
+ CompileIdentifierMetadata.fromJson = function (data) {
+ var value = lang_1.isArray(data['value']) ? _arrayFromJson(data['value'], metadataFromJson) :
+ _objFromJson(data['value'], metadataFromJson);
+ return new CompileIdentifierMetadata({ name: data['name'], prefix: data['prefix'], moduleUrl: data['moduleUrl'], value: value });
+ };
+ CompileIdentifierMetadata.prototype.toJson = function () {
+ var value = lang_1.isArray(this.value) ? _arrayToJson(this.value) : _objToJson(this.value);
+ return {
+ // Note: Runtime type can't be serialized...
+ 'class': 'Identifier',
+ 'name': this.name,
+ 'moduleUrl': this.moduleUrl,
+ 'prefix': this.prefix,
+ 'value': value
+ };
+ };
+ 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, isValue = _b.isValue, query = _b.query, viewQuery = _b.viewQuery, token = _b.token, value = _b.value;
+ 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.isValue = lang_1.normalizeBool(isValue);
+ this.query = query;
+ this.viewQuery = viewQuery;
+ this.token = token;
+ this.value = value;
+ }
+ CompileDiDependencyMetadata.fromJson = function (data) {
+ return new CompileDiDependencyMetadata({
+ token: _objFromJson(data['token'], CompileTokenMetadata.fromJson),
+ query: _objFromJson(data['query'], CompileQueryMetadata.fromJson),
+ viewQuery: _objFromJson(data['viewQuery'], CompileQueryMetadata.fromJson),
+ value: data['value'],
+ isAttribute: data['isAttribute'],
+ isSelf: data['isSelf'],
+ isHost: data['isHost'],
+ isSkipSelf: data['isSkipSelf'],
+ isOptional: data['isOptional'],
+ isValue: data['isValue']
+ });
+ };
+ CompileDiDependencyMetadata.prototype.toJson = function () {
+ return {
+ 'token': _objToJson(this.token),
+ 'query': _objToJson(this.query),
+ 'viewQuery': _objToJson(this.viewQuery),
+ 'value': this.value,
+ 'isAttribute': this.isAttribute,
+ 'isSelf': this.isSelf,
+ 'isHost': this.isHost,
+ 'isSkipSelf': this.isSkipSelf,
+ 'isOptional': this.isOptional,
+ 'isValue': this.isValue
+ };
+ };
+ 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 = lang_1.normalizeBlank(deps);
+ this.multi = lang_1.normalizeBool(multi);
+ }
+ CompileProviderMetadata.fromJson = function (data) {
+ return new CompileProviderMetadata({
+ token: _objFromJson(data['token'], CompileTokenMetadata.fromJson),
+ useClass: _objFromJson(data['useClass'], CompileTypeMetadata.fromJson),
+ useExisting: _objFromJson(data['useExisting'], CompileTokenMetadata.fromJson),
+ useValue: _objFromJson(data['useValue'], CompileIdentifierMetadata.fromJson),
+ useFactory: _objFromJson(data['useFactory'], CompileFactoryMetadata.fromJson),
+ multi: data['multi'],
+ deps: _arrayFromJson(data['deps'], CompileDiDependencyMetadata.fromJson)
+ });
+ };
+ CompileProviderMetadata.prototype.toJson = function () {
+ return {
+ // Note: Runtime type can't be serialized...
+ 'class': 'Provider',
+ 'token': _objToJson(this.token),
+ 'useClass': _objToJson(this.useClass),
+ 'useExisting': _objToJson(this.useExisting),
+ 'useValue': _objToJson(this.useValue),
+ 'useFactory': _objToJson(this.useFactory),
+ 'multi': this.multi,
+ 'deps': _arrayToJson(this.deps)
+ };
+ };
+ return CompileProviderMetadata;
+ }());
+ exports.CompileProviderMetadata = CompileProviderMetadata;
+ var CompileFactoryMetadata = (function () {
+ function CompileFactoryMetadata(_a) {
+ var runtime = _a.runtime, name = _a.name, moduleUrl = _a.moduleUrl, prefix = _a.prefix, diDeps = _a.diDeps, value = _a.value;
+ this.runtime = runtime;
+ this.name = name;
+ this.prefix = prefix;
+ this.moduleUrl = moduleUrl;
+ this.diDeps = _normalizeArray(diDeps);
+ this.value = value;
+ }
+ Object.defineProperty(CompileFactoryMetadata.prototype, "identifier", {
+ get: function () { return this; },
+ enumerable: true,
+ configurable: true
+ });
+ CompileFactoryMetadata.fromJson = function (data) {
+ return new CompileFactoryMetadata({
+ name: data['name'],
+ prefix: data['prefix'],
+ moduleUrl: data['moduleUrl'],
+ value: data['value'],
+ diDeps: _arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson)
+ });
+ };
+ CompileFactoryMetadata.prototype.toJson = function () {
+ return {
+ 'class': 'Factory',
+ 'name': this.name,
+ 'prefix': this.prefix,
+ 'moduleUrl': this.moduleUrl,
+ 'value': this.value,
+ 'diDeps': _arrayToJson(this.diDeps)
+ };
+ };
+ return CompileFactoryMetadata;
+ }());
+ exports.CompileFactoryMetadata = CompileFactoryMetadata;
+ var CompileTokenMetadata = (function () {
+ function CompileTokenMetadata(_a) {
+ var value = _a.value, identifier = _a.identifier, identifierIsInstance = _a.identifierIsInstance;
+ this.value = value;
+ this.identifier = identifier;
+ this.identifierIsInstance = lang_1.normalizeBool(identifierIsInstance);
+ }
+ CompileTokenMetadata.fromJson = function (data) {
+ return new CompileTokenMetadata({
+ value: data['value'],
+ identifier: _objFromJson(data['identifier'], CompileIdentifierMetadata.fromJson),
+ identifierIsInstance: data['identifierIsInstance']
+ });
+ };
+ CompileTokenMetadata.prototype.toJson = function () {
+ return {
+ 'value': this.value,
+ 'identifier': _objToJson(this.identifier),
+ 'identifierIsInstance': this.identifierIsInstance
+ };
+ };
+ Object.defineProperty(CompileTokenMetadata.prototype, "runtimeCacheKey", {
+ get: function () {
+ if (lang_1.isPresent(this.identifier)) {
+ return this.identifier.runtime;
+ }
+ else {
+ return this.value;
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(CompileTokenMetadata.prototype, "assetCacheKey", {
+ get: function () {
+ if (lang_1.isPresent(this.identifier)) {
+ return lang_1.isPresent(this.identifier.moduleUrl) &&
+ lang_1.isPresent(url_resolver_1.getUrlScheme(this.identifier.moduleUrl)) ?
+ this.identifier.name + "|" + this.identifier.moduleUrl + "|" + this.identifierIsInstance :
+ null;
+ }
+ else {
+ return this.value;
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+ CompileTokenMetadata.prototype.equalsTo = function (token2) {
+ var rk = this.runtimeCacheKey;
+ var ak = this.assetCacheKey;
+ return (lang_1.isPresent(rk) && rk == token2.runtimeCacheKey) ||
+ (lang_1.isPresent(ak) && ak == token2.assetCacheKey);
+ };
+ Object.defineProperty(CompileTokenMetadata.prototype, "name", {
+ get: function () {
+ return lang_1.isPresent(this.value) ? util_1.sanitizeIdentifier(this.value) : this.identifier.name;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return CompileTokenMetadata;
+ }());
+ exports.CompileTokenMetadata = CompileTokenMetadata;
+ var CompileTokenMap = (function () {
+ function CompileTokenMap() {
+ this._valueMap = new Map();
+ this._values = [];
+ }
+ CompileTokenMap.prototype.add = function (token, value) {
+ var existing = this.get(token);
+ if (lang_1.isPresent(existing)) {
+ throw new exceptions_1.BaseException("Can only add to a TokenMap! Token: " + token.name);
+ }
+ this._values.push(value);
+ var rk = token.runtimeCacheKey;
+ if (lang_1.isPresent(rk)) {
+ this._valueMap.set(rk, value);
+ }
+ var ak = token.assetCacheKey;
+ if (lang_1.isPresent(ak)) {
+ this._valueMap.set(ak, value);
+ }
+ };
+ CompileTokenMap.prototype.get = function (token) {
+ var rk = token.runtimeCacheKey;
+ var ak = token.assetCacheKey;
+ var result;
+ if (lang_1.isPresent(rk)) {
+ result = this._valueMap.get(rk);
+ }
+ if (lang_1.isBlank(result) && lang_1.isPresent(ak)) {
+ result = this._valueMap.get(ak);
+ }
+ return result;
+ };
+ CompileTokenMap.prototype.values = function () { return this._values; };
+ Object.defineProperty(CompileTokenMap.prototype, "size", {
+ get: function () { return this._values.length; },
+ enumerable: true,
+ configurable: true
+ });
+ return CompileTokenMap;
+ }());
+ exports.CompileTokenMap = CompileTokenMap;
+ /**
+ * Metadata regarding compilation of a type.
+ */
+ 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, value = _b.value, diDeps = _b.diDeps;
+ this.runtime = runtime;
+ this.name = name;
+ this.moduleUrl = moduleUrl;
+ this.prefix = prefix;
+ this.isHost = lang_1.normalizeBool(isHost);
+ this.value = value;
+ this.diDeps = _normalizeArray(diDeps);
+ }
+ CompileTypeMetadata.fromJson = function (data) {
+ return new CompileTypeMetadata({
+ name: data['name'],
+ moduleUrl: data['moduleUrl'],
+ prefix: data['prefix'],
+ isHost: data['isHost'],
+ value: data['value'],
+ 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 {
+ // Note: Runtime type can't be serialized...
+ 'class': 'Type',
+ 'name': this.name,
+ 'moduleUrl': this.moduleUrl,
+ 'prefix': this.prefix,
+ 'isHost': this.isHost,
+ 'value': this.value,
+ '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, read = _b.read;
+ this.selectors = selectors;
+ this.descendants = lang_1.normalizeBool(descendants);
+ this.first = lang_1.normalizeBool(first);
+ this.propertyName = propertyName;
+ this.read = read;
+ }
+ CompileQueryMetadata.fromJson = function (data) {
+ return new CompileQueryMetadata({
+ selectors: _arrayFromJson(data['selectors'], CompileTokenMetadata.fromJson),
+ descendants: data['descendants'],
+ first: data['first'],
+ propertyName: data['propertyName'],
+ read: _objFromJson(data['read'], CompileTokenMetadata.fromJson)
+ });
+ };
+ CompileQueryMetadata.prototype.toJson = function () {
+ return {
+ 'selectors': _arrayToJson(this.selectors),
+ 'descendants': this.descendants,
+ 'first': this.first,
+ 'propertyName': this.propertyName,
+ 'read': _objToJson(this.read)
+ };
+ };
+ return CompileQueryMetadata;
+ }());
+ exports.CompileQueryMetadata = CompileQueryMetadata;
+ /**
+ * Metadata regarding compilation of a template.
+ */
+ 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 : core_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']) ?
+ core_private_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;
+ /**
+ * Metadata regarding compilation of a directive.
+ */
+ var CompileDirectiveMetadata = (function () {
+ function CompileDirectiveMetadata(_a) {
+ var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, 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.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 = _normalizeArray(lifecycleHooks);
+ this.providers = _normalizeArray(providers);
+ this.viewProviders = _normalizeArray(viewProviders);
+ this.queries = _normalizeArray(queries);
+ this.viewQueries = _normalizeArray(viewQueries);
+ this.template = template;
+ }
+ CompileDirectiveMetadata.create = function (_a) {
+ var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, 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) {
+ // canonical syntax: `dirProp: elProp`
+ // if there is no `:`, use dirProp = elProp
+ var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);
+ inputsMap[parts[0]] = parts[1];
+ });
+ }
+ var outputsMap = {};
+ if (lang_1.isPresent(outputs)) {
+ outputs.forEach(function (bindConfig) {
+ // canonical syntax: `dirProp: elProp`
+ // if there is no `:`, use dirProp = elProp
+ var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);
+ outputsMap[parts[0]] = parts[1];
+ });
+ }
+ return new CompileDirectiveMetadata({
+ type: type,
+ isComponent: lang_1.normalizeBool(isComponent),
+ 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'],
+ selector: data['selector'],
+ exportAs: data['exportAs'],
+ type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'],
+ changeDetection: lang_1.isPresent(data['changeDetection']) ?
+ core_private_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 core_private_1.LIFECYCLE_HOOKS_VALUES[hookValue]; }),
+ template: lang_1.isPresent(data['template']) ? CompileTemplateMetadata.fromJson(data['template']) :
+ data['template'],
+ providers: _arrayFromJson(data['providers'], metadataFromJson),
+ viewProviders: _arrayFromJson(data['viewProviders'], metadataFromJson),
+ queries: _arrayFromJson(data['queries'], CompileQueryMetadata.fromJson),
+ viewQueries: _arrayFromJson(data['viewQueries'], CompileQueryMetadata.fromJson)
+ });
+ };
+ CompileDirectiveMetadata.prototype.toJson = function () {
+ return {
+ 'class': 'Directive',
+ 'isComponent': this.isComponent,
+ '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),
+ 'viewProviders': _arrayToJson(this.viewProviders),
+ 'queries': _arrayToJson(this.queries),
+ 'viewQueries': _arrayToJson(this.viewQueries)
+ };
+ };
+ return CompileDirectiveMetadata;
+ }());
+ exports.CompileDirectiveMetadata = CompileDirectiveMetadata;
+ /**
+ * Construct {@link CompileDirectiveMetadata} from {@link ComponentTypeMetadata} and a selector.
+ */
+ function createHostComponentMeta(componentType, componentSelector) {
+ var template = selector_1.CssSelector.parse(componentSelector)[0].getMatchingElementTemplate();
+ return CompileDirectiveMetadata.create({
+ type: new CompileTypeMetadata({
+ runtime: Object,
+ name: componentType.name + "_Host",
+ moduleUrl: componentType.moduleUrl,
+ isHost: true
+ }),
+ template: new CompileTemplateMetadata({ template: template, templateUrl: '', styles: [], styleUrls: [], ngContentSelectors: [] }),
+ changeDetection: core_1.ChangeDetectionStrategy.Default,
+ inputs: [],
+ outputs: [],
+ host: {},
+ lifecycleHooks: [],
+ isComponent: true,
+ 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, lifecycleHooks = _b.lifecycleHooks;
+ this.type = type;
+ this.name = name;
+ this.pure = lang_1.normalizeBool(pure);
+ this.lifecycleHooks = _normalizeArray(lifecycleHooks);
+ }
+ 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,
+ 'Provider': CompileProviderMetadata.fromJson,
+ 'Identifier': CompileIdentifierMetadata.fromJson,
+ 'Factory': CompileFactoryMetadata.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) {
+ if (lang_1.isArray(obj))
+ return _arrayFromJson(obj, fn);
+ if (lang_1.isString(obj) || lang_1.isBlank(obj) || lang_1.isBoolean(obj) || lang_1.isNumber(obj))
+ return obj;
+ return fn(obj);
+ }
+ function _objToJson(obj) {
+ if (lang_1.isArray(obj))
+ return _arrayToJson(obj);
+ if (lang_1.isString(obj) || lang_1.isBlank(obj) || lang_1.isBoolean(obj) || lang_1.isNumber(obj))
+ return obj;
+ return obj.toJson();
+ }
+ function _normalizeArray(obj) {
+ return lang_1.isPresent(obj) ? obj : [];
+ }
+ //# sourceMappingURL=compile_metadata.js.map
+
+/***/ },
+/* 17 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var core_1 = __webpack_require__(1);
+ var core_private_1 = __webpack_require__(13);
+ var core_private_2 = __webpack_require__(13);
+ var compile_metadata_1 = __webpack_require__(16);
+ var util_1 = __webpack_require__(25);
+ var APP_VIEW_MODULE_URL = util_1.assetUrl('core', 'linker/view');
+ var VIEW_UTILS_MODULE_URL = util_1.assetUrl('core', 'linker/view_utils');
+ var CD_MODULE_URL = util_1.assetUrl('core', 'change_detection/change_detection');
+ // Reassign the imports to different variables so we can
+ // define static variables with the name of the import.
+ // (only needed for Dart).
+ var impViewUtils = core_private_2.ViewUtils;
+ var impAppView = core_private_2.AppView;
+ var impDebugAppView = core_private_2.DebugAppView;
+ var impDebugContext = core_private_2.DebugContext;
+ var impAppElement = core_private_2.AppElement;
+ var impElementRef = core_1.ElementRef;
+ var impViewContainerRef = core_1.ViewContainerRef;
+ var impChangeDetectorRef = core_1.ChangeDetectorRef;
+ var impRenderComponentType = core_1.RenderComponentType;
+ var impQueryList = core_1.QueryList;
+ var impTemplateRef = core_1.TemplateRef;
+ var impTemplateRef_ = core_private_2.TemplateRef_;
+ var impValueUnwrapper = core_private_2.ValueUnwrapper;
+ var impInjector = core_1.Injector;
+ var impViewEncapsulation = core_1.ViewEncapsulation;
+ var impViewType = core_private_2.ViewType;
+ var impChangeDetectionStrategy = core_1.ChangeDetectionStrategy;
+ var impStaticNodeDebugInfo = core_private_2.StaticNodeDebugInfo;
+ var impRenderer = core_1.Renderer;
+ var impSimpleChange = core_1.SimpleChange;
+ var impUninitialized = core_private_2.uninitialized;
+ var impChangeDetectorState = core_private_2.ChangeDetectorState;
+ var impFlattenNestedViewRenderNodes = core_private_2.flattenNestedViewRenderNodes;
+ var impDevModeEqual = core_private_2.devModeEqual;
+ var impInterpolate = core_private_2.interpolate;
+ var impCheckBinding = core_private_2.checkBinding;
+ var impCastByValue = core_private_2.castByValue;
+ var impEMPTY_ARRAY = core_private_2.EMPTY_ARRAY;
+ var impEMPTY_MAP = core_private_2.EMPTY_MAP;
+ var Identifiers = (function () {
+ function Identifiers() {
+ }
+ Identifiers.ViewUtils = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ViewUtils', moduleUrl: util_1.assetUrl('core', 'linker/view_utils'), runtime: impViewUtils });
+ Identifiers.AppView = new compile_metadata_1.CompileIdentifierMetadata({ name: 'AppView', moduleUrl: APP_VIEW_MODULE_URL, runtime: impAppView });
+ Identifiers.DebugAppView = new compile_metadata_1.CompileIdentifierMetadata({ name: 'DebugAppView', moduleUrl: APP_VIEW_MODULE_URL, runtime: impDebugAppView });
+ Identifiers.AppElement = new compile_metadata_1.CompileIdentifierMetadata({ name: 'AppElement', moduleUrl: util_1.assetUrl('core', 'linker/element'), runtime: impAppElement });
+ Identifiers.ElementRef = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'ElementRef',
+ moduleUrl: util_1.assetUrl('core', 'linker/element_ref'),
+ runtime: impElementRef
+ });
+ Identifiers.ViewContainerRef = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'ViewContainerRef',
+ moduleUrl: util_1.assetUrl('core', 'linker/view_container_ref'),
+ runtime: impViewContainerRef
+ });
+ Identifiers.ChangeDetectorRef = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'ChangeDetectorRef',
+ moduleUrl: util_1.assetUrl('core', 'change_detection/change_detector_ref'),
+ runtime: impChangeDetectorRef
+ });
+ Identifiers.RenderComponentType = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'RenderComponentType',
+ moduleUrl: util_1.assetUrl('core', 'render/api'),
+ runtime: impRenderComponentType
+ });
+ Identifiers.QueryList = new compile_metadata_1.CompileIdentifierMetadata({ name: 'QueryList', moduleUrl: util_1.assetUrl('core', 'linker/query_list'), runtime: impQueryList });
+ Identifiers.TemplateRef = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'TemplateRef',
+ moduleUrl: util_1.assetUrl('core', 'linker/template_ref'),
+ runtime: impTemplateRef
+ });
+ Identifiers.TemplateRef_ = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'TemplateRef_',
+ moduleUrl: util_1.assetUrl('core', 'linker/template_ref'),
+ runtime: impTemplateRef_
+ });
+ Identifiers.ValueUnwrapper = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ValueUnwrapper', moduleUrl: CD_MODULE_URL, runtime: impValueUnwrapper });
+ Identifiers.Injector = new compile_metadata_1.CompileIdentifierMetadata({ name: 'Injector', moduleUrl: util_1.assetUrl('core', 'di/injector'), runtime: impInjector });
+ Identifiers.ViewEncapsulation = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'ViewEncapsulation',
+ moduleUrl: util_1.assetUrl('core', 'metadata/view'),
+ runtime: impViewEncapsulation
+ });
+ Identifiers.ViewType = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ViewType', moduleUrl: util_1.assetUrl('core', 'linker/view_type'), runtime: impViewType });
+ Identifiers.ChangeDetectionStrategy = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'ChangeDetectionStrategy',
+ moduleUrl: CD_MODULE_URL,
+ runtime: impChangeDetectionStrategy
+ });
+ Identifiers.StaticNodeDebugInfo = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'StaticNodeDebugInfo',
+ moduleUrl: util_1.assetUrl('core', 'linker/debug_context'),
+ runtime: impStaticNodeDebugInfo
+ });
+ Identifiers.DebugContext = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'DebugContext',
+ moduleUrl: util_1.assetUrl('core', 'linker/debug_context'),
+ runtime: impDebugContext
+ });
+ Identifiers.Renderer = new compile_metadata_1.CompileIdentifierMetadata({ name: 'Renderer', moduleUrl: util_1.assetUrl('core', 'render/api'), runtime: impRenderer });
+ Identifiers.SimpleChange = new compile_metadata_1.CompileIdentifierMetadata({ name: 'SimpleChange', moduleUrl: CD_MODULE_URL, runtime: impSimpleChange });
+ Identifiers.uninitialized = new compile_metadata_1.CompileIdentifierMetadata({ name: 'uninitialized', moduleUrl: CD_MODULE_URL, runtime: impUninitialized });
+ Identifiers.ChangeDetectorState = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ChangeDetectorState', moduleUrl: CD_MODULE_URL, runtime: impChangeDetectorState });
+ Identifiers.checkBinding = new compile_metadata_1.CompileIdentifierMetadata({ name: 'checkBinding', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impCheckBinding });
+ Identifiers.flattenNestedViewRenderNodes = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'flattenNestedViewRenderNodes',
+ moduleUrl: VIEW_UTILS_MODULE_URL,
+ runtime: impFlattenNestedViewRenderNodes
+ });
+ Identifiers.devModeEqual = new compile_metadata_1.CompileIdentifierMetadata({ name: 'devModeEqual', moduleUrl: CD_MODULE_URL, runtime: impDevModeEqual });
+ Identifiers.interpolate = new compile_metadata_1.CompileIdentifierMetadata({ name: 'interpolate', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impInterpolate });
+ Identifiers.castByValue = new compile_metadata_1.CompileIdentifierMetadata({ name: 'castByValue', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impCastByValue });
+ Identifiers.EMPTY_ARRAY = new compile_metadata_1.CompileIdentifierMetadata({ name: 'EMPTY_ARRAY', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impEMPTY_ARRAY });
+ Identifiers.EMPTY_MAP = new compile_metadata_1.CompileIdentifierMetadata({ name: 'EMPTY_MAP', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impEMPTY_MAP });
+ Identifiers.pureProxies = [
+ null,
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy1', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy1 }),
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy2', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy2 }),
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy3', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy3 }),
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy4', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy4 }),
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy5', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy5 }),
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy6', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy6 }),
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy7', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy7 }),
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy8', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy8 }),
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy9', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy9 }),
+ new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy10', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy10 }),
+ ];
+ Identifiers.SecurityContext = new compile_metadata_1.CompileIdentifierMetadata({
+ name: 'SecurityContext',
+ moduleUrl: util_1.assetUrl('core', 'security'),
+ runtime: core_private_1.SecurityContext,
+ });
+ return Identifiers;
+ }());
+ exports.Identifiers = Identifiers;
+ function identifierToken(identifier) {
+ return new compile_metadata_1.CompileTokenMetadata({ identifier: identifier });
+ }
+ exports.identifierToken = identifierToken;
+ //# sourceMappingURL=identifiers.js.map
+
+/***/ },
+/* 18 */,
+/* 19 */,
+/* 20 */,
+/* 21 */,
+/* 22 */
+[460, 12],
+/* 23 */,
+/* 24 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var lang_1 = __webpack_require__(3);
+ /**
+ * A segment of text within the template.
+ */
+ 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;
+ /**
+ * A bound expression within the text of a template.
+ */
+ 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;
+ /**
+ * A plain attribute on an element.
+ */
+ 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;
+ /**
+ * A binding for an element property (e.g. `[property]="expression"`).
+ */
+ var BoundElementPropertyAst = (function () {
+ function BoundElementPropertyAst(name, type, securityContext, value, unit, sourceSpan) {
+ this.name = name;
+ this.type = type;
+ this.securityContext = securityContext;
+ 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;
+ /**
+ * A binding for an element event (e.g. `(event)="handler()"`).
+ */
+ 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;
+ /**
+ * A reference declaration on an element (e.g. `let someName="expression"`).
+ */
+ var ReferenceAst = (function () {
+ function ReferenceAst(name, value, sourceSpan) {
+ this.name = name;
+ this.value = value;
+ this.sourceSpan = sourceSpan;
+ }
+ ReferenceAst.prototype.visit = function (visitor, context) {
+ return visitor.visitReference(this, context);
+ };
+ return ReferenceAst;
+ }());
+ exports.ReferenceAst = ReferenceAst;
+ /**
+ * A variable declaration on a (e.g. `var-someName="someLocalName"`).
+ */
+ 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;
+ /**
+ * An element declaration in a template.
+ */
+ var ElementAst = (function () {
+ function ElementAst(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, children, ngContentIndex, sourceSpan) {
+ this.name = name;
+ this.attrs = attrs;
+ this.inputs = inputs;
+ this.outputs = outputs;
+ this.references = references;
+ this.directives = directives;
+ this.providers = providers;
+ this.hasViewContainer = hasViewContainer;
+ this.children = children;
+ this.ngContentIndex = ngContentIndex;
+ this.sourceSpan = sourceSpan;
+ }
+ ElementAst.prototype.visit = function (visitor, context) {
+ return visitor.visitElement(this, context);
+ };
+ return ElementAst;
+ }());
+ exports.ElementAst = ElementAst;
+ /**
+ * A `` element included in an Angular template.
+ */
+ var EmbeddedTemplateAst = (function () {
+ function EmbeddedTemplateAst(attrs, outputs, references, variables, directives, providers, hasViewContainer, children, ngContentIndex, sourceSpan) {
+ this.attrs = attrs;
+ this.outputs = outputs;
+ this.references = references;
+ this.variables = variables;
+ this.directives = directives;
+ this.providers = providers;
+ this.hasViewContainer = hasViewContainer;
+ 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;
+ /**
+ * A directive property with a bound value (e.g. `*ngIf="condition").
+ */
+ 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;
+ /**
+ * A directive declared on an element.
+ */
+ var DirectiveAst = (function () {
+ function DirectiveAst(directive, inputs, hostProperties, hostEvents, sourceSpan) {
+ this.directive = directive;
+ this.inputs = inputs;
+ this.hostProperties = hostProperties;
+ this.hostEvents = hostEvents;
+ this.sourceSpan = sourceSpan;
+ }
+ DirectiveAst.prototype.visit = function (visitor, context) {
+ return visitor.visitDirective(this, context);
+ };
+ return DirectiveAst;
+ }());
+ exports.DirectiveAst = DirectiveAst;
+ /**
+ * A provider declared on an element
+ */
+ var ProviderAst = (function () {
+ function ProviderAst(token, multiProvider, eager, providers, providerType, sourceSpan) {
+ this.token = token;
+ this.multiProvider = multiProvider;
+ this.eager = eager;
+ this.providers = providers;
+ this.providerType = providerType;
+ this.sourceSpan = sourceSpan;
+ }
+ ProviderAst.prototype.visit = function (visitor, context) {
+ // No visit method in the visitor for now...
+ return null;
+ };
+ return ProviderAst;
+ }());
+ exports.ProviderAst = ProviderAst;
+ (function (ProviderAstType) {
+ ProviderAstType[ProviderAstType["PublicService"] = 0] = "PublicService";
+ ProviderAstType[ProviderAstType["PrivateService"] = 1] = "PrivateService";
+ ProviderAstType[ProviderAstType["Component"] = 2] = "Component";
+ ProviderAstType[ProviderAstType["Directive"] = 3] = "Directive";
+ ProviderAstType[ProviderAstType["Builtin"] = 4] = "Builtin";
+ })(exports.ProviderAstType || (exports.ProviderAstType = {}));
+ var ProviderAstType = exports.ProviderAstType;
+ /**
+ * Position where content is to be projected (instance of `` in a template).
+ */
+ 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;
+ /**
+ * Enumeration of types of property bindings.
+ */
+ (function (PropertyBindingType) {
+ /**
+ * A normal binding to a property (e.g. `[property]="expression"`).
+ */
+ PropertyBindingType[PropertyBindingType["Property"] = 0] = "Property";
+ /**
+ * A binding to an element attribute (e.g. `[attr.name]="expression"`).
+ */
+ PropertyBindingType[PropertyBindingType["Attribute"] = 1] = "Attribute";
+ /**
+ * A binding to a CSS class (e.g. `[class.name]="condition"`).
+ */
+ PropertyBindingType[PropertyBindingType["Class"] = 2] = "Class";
+ /**
+ * A binding to a style rule (e.g. `[style.rule]="expression"`).
+ */
+ PropertyBindingType[PropertyBindingType["Style"] = 3] = "Style";
+ })(exports.PropertyBindingType || (exports.PropertyBindingType = {}));
+ var PropertyBindingType = exports.PropertyBindingType;
+ /**
+ * Visit every node in a list of {@link TemplateAst}s with the given {@link TemplateAstVisitor}.
+ */
+ 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;
+ //# sourceMappingURL=template_ast.js.map
+
+/***/ },
+/* 25 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var lang_1 = __webpack_require__(3);
+ var collection_1 = __webpack_require__(7);
+ exports.MODULE_SUFFIX = lang_1.IS_DART ? '.dart' : '';
+ 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;
+ 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;
+ function sanitizeIdentifier(name) {
+ return lang_1.StringWrapper.replaceAll(name, /\W/g, '_');
+ }
+ exports.sanitizeIdentifier = sanitizeIdentifier;
+ function visitValue(value, visitor, context) {
+ if (lang_1.isArray(value)) {
+ return visitor.visitArray(value, context);
+ }
+ else if (lang_1.isStrictStringMap(value)) {
+ return visitor.visitStringMap(value, context);
+ }
+ else if (lang_1.isBlank(value) || lang_1.isPrimitive(value)) {
+ return visitor.visitPrimitive(value, context);
+ }
+ else {
+ return visitor.visitOther(value, context);
+ }
+ }
+ exports.visitValue = visitValue;
+ var ValueTransformer = (function () {
+ function ValueTransformer() {
+ }
+ ValueTransformer.prototype.visitArray = function (arr, context) {
+ var _this = this;
+ return arr.map(function (value) { return visitValue(value, _this, context); });
+ };
+ ValueTransformer.prototype.visitStringMap = function (map, context) {
+ var _this = this;
+ var result = {};
+ collection_1.StringMapWrapper.forEach(map, function (value, key) { result[key] = visitValue(value, _this, context); });
+ return result;
+ };
+ ValueTransformer.prototype.visitPrimitive = function (value, context) { return value; };
+ ValueTransformer.prototype.visitOther = function (value, context) { return value; };
+ return ValueTransformer;
+ }());
+ exports.ValueTransformer = ValueTransformer;
+ function assetUrl(pkg, path, type) {
+ if (path === void 0) { path = null; }
+ if (type === void 0) { type = 'src'; }
+ if (lang_1.IS_DART) {
+ if (path == null) {
+ return "asset:angular2/" + pkg + "/" + pkg + ".dart";
+ }
+ else {
+ return "asset:angular2/lib/" + pkg + "/src/" + path + ".dart";
+ }
+ }
+ else {
+ if (path == null) {
+ return "asset:@angular/lib/" + pkg + "/index";
+ }
+ else {
+ return "asset:@angular/lib/" + pkg + "/src/" + path;
+ }
+ }
+ }
+ exports.assetUrl = assetUrl;
+ //# sourceMappingURL=util.js.map
+
+/***/ },
+/* 26 */,
+/* 27 */,
+/* 28 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var file_like_object_class_1 = __webpack_require__(45);
+ var file_item_class_1 = __webpack_require__(138);
+ var file_type_class_1 = __webpack_require__(139);
+ function isFile(value) {
+ return (File && value instanceof File);
+ }
+ var FileUploader = (function () {
+ function FileUploader(options) {
+ this.isUploading = false;
+ this.queue = [];
+ this.progress = 0;
+ this._nextIndex = 0;
+ this.options = {
+ autoUpload: false,
+ isHTML5: true,
+ filters: [],
+ removeAfterUpload: false
+ };
+ this.setOptions(options);
+ }
+ FileUploader.prototype.setOptions = function (options) {
+ this.options = Object.assign(this.options, options);
+ this.authToken = options.authToken;
+ this.autoUpload = options.autoUpload;
+ this.options.filters.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });
+ if (this.options.maxFileSize) {
+ this.options.filters.unshift({ name: 'fileSize', fn: this._fileSizeFilter });
+ }
+ if (this.options.allowedFileType) {
+ this.options.filters.unshift({ name: 'fileType', fn: this._fileTypeFilter });
+ }
+ if (this.options.allowedMimeType) {
+ this.options.filters.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });
+ }
+ };
+ FileUploader.prototype.addToQueue = function (files, options, filters) {
+ var _this = this;
+ var list = [];
+ for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {
+ var file = files_1[_i];
+ list.push(file);
+ }
+ var arrayOfFilters = this._getFilters(filters);
+ var count = this.queue.length;
+ var addedFileItems = [];
+ list.map(function (some) {
+ if (!options) {
+ options = _this.options;
+ }
+ var temp = new file_like_object_class_1.FileLikeObject(some);
+ if (_this._isValidFile(temp, arrayOfFilters, options)) {
+ var fileItem = new file_item_class_1.FileItem(_this, some, options);
+ addedFileItems.push(fileItem);
+ _this.queue.push(fileItem);
+ _this._onAfterAddingFile(fileItem);
+ }
+ else {
+ var filter = arrayOfFilters[_this._failFilterIndex];
+ _this._onWhenAddingFileFailed(temp, filter, options);
+ }
+ });
+ if (this.queue.length !== count) {
+ this._onAfterAddingAll(addedFileItems);
+ this.progress = this._getTotalProgress();
+ }
+ this._render();
+ if (this.options.autoUpload) {
+ this.uploadAll();
+ }
+ };
+ FileUploader.prototype.removeFromQueue = function (value) {
+ var index = this.getIndexOfItem(value);
+ var item = this.queue[index];
+ if (item.isUploading) {
+ item.cancel();
+ }
+ this.queue.splice(index, 1);
+ this.progress = this._getTotalProgress();
+ };
+ FileUploader.prototype.clearQueue = function () {
+ while (this.queue.length) {
+ this.queue[0].remove();
+ }
+ this.progress = 0;
+ };
+ FileUploader.prototype.uploadItem = function (value) {
+ var index = this.getIndexOfItem(value);
+ var item = this.queue[index];
+ var transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';
+ item._prepareToUploading();
+ if (this.isUploading) {
+ return;
+ }
+ this.isUploading = true;
+ this[transport](item);
+ };
+ FileUploader.prototype.cancelItem = function (value) {
+ var index = this.getIndexOfItem(value);
+ var item = this.queue[index];
+ var prop = this.options.isHTML5 ? '_xhr' : '_form';
+ if (item && item.isUploading) {
+ item[prop].abort();
+ }
+ };
+ FileUploader.prototype.uploadAll = function () {
+ var items = this.getNotUploadedItems().filter(function (item) { return !item.isUploading; });
+ if (!items.length) {
+ return;
+ }
+ items.map(function (item) { return item._prepareToUploading(); });
+ items[0].upload();
+ };
+ FileUploader.prototype.cancelAll = function () {
+ var items = this.getNotUploadedItems();
+ items.map(function (item) { return item.cancel(); });
+ };
+ FileUploader.prototype.isFile = function (value) {
+ return isFile(value);
+ };
+ FileUploader.prototype.isFileLikeObject = function (value) {
+ return value instanceof file_like_object_class_1.FileLikeObject;
+ };
+ FileUploader.prototype.getIndexOfItem = function (value) {
+ return typeof value === 'number' ? value : this.queue.indexOf(value);
+ };
+ FileUploader.prototype.getNotUploadedItems = function () {
+ return this.queue.filter(function (item) { return !item.isUploaded; });
+ };
+ FileUploader.prototype.getReadyItems = function () {
+ return this.queue
+ .filter(function (item) { return (item.isReady && !item.isUploading); })
+ .sort(function (item1, item2) { return item1.index - item2.index; });
+ };
+ FileUploader.prototype.destroy = function () {
+ return void 0;
+ };
+ FileUploader.prototype.onAfterAddingAll = function (fileItems) {
+ return { fileItems: fileItems };
+ };
+ FileUploader.prototype.onBuildItemForm = function (fileItem, form) {
+ return { fileItem: fileItem, form: form };
+ };
+ FileUploader.prototype.onAfterAddingFile = function (fileItem) {
+ return { fileItem: fileItem };
+ };
+ FileUploader.prototype.onWhenAddingFileFailed = function (item, filter, options) {
+ return { item: item, filter: filter, options: options };
+ };
+ FileUploader.prototype.onBeforeUploadItem = function (fileItem) {
+ return { fileItem: fileItem };
+ };
+ FileUploader.prototype.onProgressItem = function (fileItem, progress) {
+ return { fileItem: fileItem, progress: progress };
+ };
+ FileUploader.prototype.onProgressAll = function (progress) {
+ return { progress: progress };
+ };
+ FileUploader.prototype.onSuccessItem = function (item, response, status, headers) {
+ return { item: item, response: response, status: status, headers: headers };
+ };
+ FileUploader.prototype.onErrorItem = function (item, response, status, headers) {
+ return { item: item, response: response, status: status, headers: headers };
+ };
+ FileUploader.prototype.onCancelItem = function (item, response, status, headers) {
+ return { item: item, response: response, status: status, headers: headers };
+ };
+ FileUploader.prototype.onCompleteItem = function (item, response, status, headers) {
+ return { item: item, response: response, status: status, headers: headers };
+ };
+ FileUploader.prototype.onCompleteAll = function () {
+ return void 0;
+ };
+ FileUploader.prototype._mimeTypeFilter = function (item) {
+ return !(this.options.allowedMimeType && this.options.allowedMimeType.indexOf(item.type) === -1);
+ };
+ FileUploader.prototype._fileSizeFilter = function (item) {
+ return !(this.options.maxFileSize && item.size > this.options.maxFileSize);
+ };
+ FileUploader.prototype._fileTypeFilter = function (item) {
+ return !(this.options.allowedFileType &&
+ this.options.allowedFileType.indexOf(file_type_class_1.FileType.getMimeClass(item)) === -1);
+ };
+ FileUploader.prototype._onErrorItem = function (item, response, status, headers) {
+ item._onError(response, status, headers);
+ this.onErrorItem(item, response, status, headers);
+ };
+ FileUploader.prototype._onCompleteItem = function (item, response, status, headers) {
+ item._onComplete(response, status, headers);
+ this.onCompleteItem(item, response, status, headers);
+ var nextItem = this.getReadyItems()[0];
+ this.isUploading = false;
+ if (nextItem) {
+ nextItem.upload();
+ return;
+ }
+ this.onCompleteAll();
+ this.progress = this._getTotalProgress();
+ this._render();
+ };
+ FileUploader.prototype._headersGetter = function (parsedHeaders) {
+ return function (name) {
+ if (name) {
+ return parsedHeaders[name.toLowerCase()] || void 0;
+ }
+ return parsedHeaders;
+ };
+ };
+ FileUploader.prototype._xhrTransport = function (item) {
+ var _this = this;
+ var xhr = item._xhr = new XMLHttpRequest();
+ var form = new FormData();
+ this._onBeforeUploadItem(item);
+ if (typeof item._file.size !== 'number') {
+ throw new TypeError('The file specified is no longer valid');
+ }
+ this._onBuildItemForm(item, form);
+ form.append(item.alias, item._file, item.file.name);
+ xhr.upload.onprogress = function (event) {
+ var progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);
+ _this._onProgressItem(item, progress);
+ };
+ xhr.onload = function () {
+ var headers = _this._parseHeaders(xhr.getAllResponseHeaders());
+ var response = _this._transformResponse(xhr.response, headers);
+ var gist = _this._isSuccessCode(xhr.status) ? 'Success' : 'Error';
+ var method = '_on' + gist + 'Item';
+ _this[method](item, response, xhr.status, headers);
+ _this._onCompleteItem(item, response, xhr.status, headers);
+ };
+ xhr.onerror = function () {
+ var headers = _this._parseHeaders(xhr.getAllResponseHeaders());
+ var response = _this._transformResponse(xhr.response, headers);
+ _this._onErrorItem(item, response, xhr.status, headers);
+ _this._onCompleteItem(item, response, xhr.status, headers);
+ };
+ xhr.onabort = function () {
+ var headers = _this._parseHeaders(xhr.getAllResponseHeaders());
+ var response = _this._transformResponse(xhr.response, headers);
+ _this._onCancelItem(item, response, xhr.status, headers);
+ _this._onCompleteItem(item, response, xhr.status, headers);
+ };
+ xhr.open(item.method, item.url, true);
+ xhr.withCredentials = item.withCredentials;
+ if (this.options.headers) {
+ for (var _i = 0, _a = this.options.headers; _i < _a.length; _i++) {
+ var header = _a[_i];
+ xhr.setRequestHeader(header.name, header.value);
+ }
+ }
+ if (this.authToken) {
+ xhr.setRequestHeader('Authorization', this.authToken);
+ }
+ xhr.send(form);
+ this._render();
+ };
+ FileUploader.prototype._getTotalProgress = function (value) {
+ if (value === void 0) { value = 0; }
+ if (this.options.removeAfterUpload) {
+ return value;
+ }
+ var notUploaded = this.getNotUploadedItems().length;
+ var uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;
+ var ratio = 100 / this.queue.length;
+ var current = value * ratio / 100;
+ return Math.round(uploaded * ratio + current);
+ };
+ FileUploader.prototype._getFilters = function (filters) {
+ if (!filters) {
+ return this.options.filters;
+ }
+ if (Array.isArray(filters)) {
+ return filters;
+ }
+ if (typeof filters === 'string') {
+ var names_1 = filters.match(/[^\s,]+/g);
+ return this.options.filters
+ .filter(function (filter) { return names_1.indexOf(filter.name) !== -1; });
+ }
+ return this.options.filters;
+ };
+ FileUploader.prototype._render = function () {
+ return void 0;
+ };
+ FileUploader.prototype._queueLimitFilter = function () {
+ return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;
+ };
+ FileUploader.prototype._isValidFile = function (file, filters, options) {
+ var _this = this;
+ this._failFilterIndex = -1;
+ return !filters.length ? true : filters.every(function (filter) {
+ _this._failFilterIndex++;
+ return filter.fn.call(_this, file, options);
+ });
+ };
+ FileUploader.prototype._isSuccessCode = function (status) {
+ return (status >= 200 && status < 300) || status === 304;
+ };
+ FileUploader.prototype._transformResponse = function (response, headers) {
+ return response;
+ };
+ FileUploader.prototype._parseHeaders = function (headers) {
+ var parsed = {};
+ var key;
+ var val;
+ var i;
+ if (!headers) {
+ return parsed;
+ }
+ headers.split('\n').map(function (line) {
+ i = line.indexOf(':');
+ key = line.slice(0, i).trim().toLowerCase();
+ val = line.slice(i + 1).trim();
+ if (key) {
+ parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+ }
+ });
+ return parsed;
+ };
+ FileUploader.prototype._onWhenAddingFileFailed = function (item, filter, options) {
+ this.onWhenAddingFileFailed(item, filter, options);
+ };
+ FileUploader.prototype._onAfterAddingFile = function (item) {
+ this.onAfterAddingFile(item);
+ };
+ FileUploader.prototype._onAfterAddingAll = function (items) {
+ this.onAfterAddingAll(items);
+ };
+ FileUploader.prototype._onBeforeUploadItem = function (item) {
+ item._onBeforeUpload();
+ this.onBeforeUploadItem(item);
+ };
+ FileUploader.prototype._onBuildItemForm = function (item, form) {
+ item._onBuildForm(form);
+ this.onBuildItemForm(item, form);
+ };
+ FileUploader.prototype._onProgressItem = function (item, progress) {
+ var total = this._getTotalProgress(progress);
+ this.progress = total;
+ item._onProgress(progress);
+ this.onProgressItem(item, progress);
+ this.onProgressAll(total);
+ this._render();
+ };
+ FileUploader.prototype._onSuccessItem = function (item, response, status, headers) {
+ item._onSuccess(response, status, headers);
+ this.onSuccessItem(item, response, status, headers);
+ };
+ FileUploader.prototype._onCancelItem = function (item, response, status, headers) {
+ item._onCancel(response, status, headers);
+ this.onCancelItem(item, response, status, headers);
+ };
+ return FileUploader;
+ }());
+ exports.FileUploader = FileUploader;
+
+
+/***/ },
+/* 29 */,
+/* 30 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var core_1 = __webpack_require__(1);
+ var lang_1 = __webpack_require__(3);
+ var _ASSET_SCHEME = 'asset:';
+ /**
+ * Create a {@link UrlResolver} with no package prefix.
+ */
+ function createUrlResolverWithoutPackagePrefix() {
+ return new UrlResolver();
+ }
+ exports.createUrlResolverWithoutPackagePrefix = createUrlResolverWithoutPackagePrefix;
+ function createOfflineCompileUrlResolver() {
+ return new UrlResolver(_ASSET_SCHEME);
+ }
+ exports.createOfflineCompileUrlResolver = createOfflineCompileUrlResolver;
+ /**
+ * A default provider for {@link PACKAGE_ROOT_URL} that maps to '/'.
+ */
+ exports.DEFAULT_PACKAGE_URL_PROVIDER = {
+ provide: core_1.PACKAGE_ROOT_URL,
+ useValue: "/"
+ };
+ var UrlResolver = (function () {
+ function UrlResolver(_packagePrefix) {
+ if (_packagePrefix === void 0) { _packagePrefix = null; }
+ this._packagePrefix = _packagePrefix;
+ }
+ /**
+ * Resolves the `url` given the `baseUrl`:
+ * - when the `url` is null, the `baseUrl` is returned,
+ * - if `url` is relative ('path/to/here', './path/to/here'), the resolved url is a combination of
+ * `baseUrl` and `url`,
+ * - if `url` is absolute (it has a scheme: 'http://', 'https://' or start with '/'), the `url` is
+ * returned as is (ignoring the `baseUrl`)
+ *
+ * @param {string} baseUrl
+ * @param {string} url
+ * @returns {string} the resolved URL
+ */
+ UrlResolver.prototype.resolve = function (baseUrl, url) {
+ var resolvedUrl = url;
+ if (lang_1.isPresent(baseUrl) && baseUrl.length > 0) {
+ resolvedUrl = _resolveUrl(baseUrl, resolvedUrl);
+ }
+ var resolvedParts = _split(resolvedUrl);
+ var prefix = this._packagePrefix;
+ if (lang_1.isPresent(prefix) && lang_1.isPresent(resolvedParts) &&
+ resolvedParts[_ComponentIndex.Scheme] == "package") {
+ var path = resolvedParts[_ComponentIndex.Path];
+ if (this._packagePrefix === _ASSET_SCHEME) {
+ var pathSegements = path.split(/\//);
+ resolvedUrl = "asset:" + pathSegements[0] + "/lib/" + pathSegements.slice(1).join('/');
+ }
+ else {
+ prefix = lang_1.StringWrapper.stripRight(prefix, '/');
+ path = lang_1.StringWrapper.stripLeft(path, '/');
+ return prefix + "/" + path;
+ }
+ }
+ return resolvedUrl;
+ };
+ UrlResolver.decorators = [
+ { type: core_1.Injectable },
+ ];
+ UrlResolver.ctorParameters = [
+ { type: undefined, decorators: [{ type: core_1.Inject, args: [core_1.PACKAGE_ROOT_URL,] },] },
+ ];
+ return UrlResolver;
+ }());
+ exports.UrlResolver = UrlResolver;
+ /**
+ * Extract the scheme of a URL.
+ */
+ function getUrlScheme(url) {
+ var match = _split(url);
+ return (match && match[_ComponentIndex.Scheme]) || "";
+ }
+ exports.getUrlScheme = getUrlScheme;
+ // The code below is adapted from Traceur:
+ // https://github.com/google/traceur-compiler/blob/9511c1dafa972bf0de1202a8a863bad02f0f95a8/src/runtime/url.js
+ /**
+ * Builds a URI string from already-encoded parts.
+ *
+ * No encoding is performed. Any component may be omitted as either null or
+ * undefined.
+ *
+ * @param {?string=} opt_scheme The scheme such as 'http'.
+ * @param {?string=} opt_userInfo The user name before the '@'.
+ * @param {?string=} opt_domain The domain such as 'www.google.com', already
+ * URI-encoded.
+ * @param {(string|null)=} opt_port The port number.
+ * @param {?string=} opt_path The path, already URI-encoded. If it is not
+ * empty, it must begin with a slash.
+ * @param {?string=} opt_queryData The URI-encoded query data.
+ * @param {?string=} opt_fragment The URI-encoded fragment identifier.
+ * @return {string} The fully combined URI.
+ */
+ 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('');
+ }
+ /**
+ * A regular expression for breaking a URI into its component parts.
+ *
+ * {@link http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#RFC2234} says
+ * As the "first-match-wins" algorithm is identical to the "greedy"
+ * disambiguation method used by POSIX regular expressions, it is natural and
+ * commonplace to use a regular expression for parsing the potential five
+ * components of a URI reference.
+ *
+ * The following line is the regular expression for breaking-down a
+ * well-formed URI reference into its components.
+ *
+ *
+ * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
+ * 12 3 4 5 6 7 8 9
+ *
+ *
+ * The numbers in the second line above are only to assist readability; they
+ * indicate the reference points for each subexpression (i.e., each paired
+ * parenthesis). We refer to the value matched for subexpression as $.
+ * For example, matching the above expression to
+ *
+ * http://www.ics.uci.edu/pub/ietf/uri/#Related
+ *
+ * results in the following subexpression matches:
+ *
+ * $1 = http:
+ * $2 = http
+ * $3 = //www.ics.uci.edu
+ * $4 = www.ics.uci.edu
+ * $5 = /pub/ietf/uri/
+ * $6 =
+ * $7 =
+ * $8 = #Related
+ * $9 = Related
+ *
+ * where indicates that the component is not present, as is the
+ * case for the query component in the above example. Therefore, we can
+ * determine the value of the five components as
+ *
+ * scheme = $2
+ * authority = $4
+ * path = $5
+ * query = $7
+ * fragment = $9
+ *
+ *
+ * The regular expression has been modified slightly to expose the
+ * userInfo, domain, and port separately from the authority.
+ * The modified version yields
+ *
+ * $1 = http scheme
+ * $2 = userInfo -\
+ * $3 = www.ics.uci.edu domain | authority
+ * $4 = port -/
+ * $5 = /pub/ietf/uri/ path
+ * $6 = query without ?
+ * $7 = Related fragment without #
+ *
+ * @type {!RegExp}
+ * @internal
+ */
+ var _splitRe = lang_1.RegExpWrapper.create('^' +
+ '(?:' +
+ '([^:/?#.]+)' +
+ // used by other URL parts such as :,
+ // ?, /, #, and .
+ ':)?' +
+ '(?://' +
+ '(?:([^/?#]*)@)?' +
+ '([\\w\\d\\-\\u0100-\\uffff.%]*)' +
+ // digits, dashes, dots, percent
+ // escapes, and unicode characters.
+ '(?::([0-9]+))?' +
+ ')?' +
+ '([^?#]+)?' +
+ '(?:\\?([^#]*))?' +
+ '(?:#(.*))?' +
+ '$');
+ /**
+ * The index of each URI component in the return value of goog.uri.utils.split.
+ * @enum {number}
+ */
+ 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 = {}));
+ /**
+ * Splits a URI into its component parts.
+ *
+ * Each component can be accessed via the component indices; for example:
+ *
+ * goog.uri.utils.split(someStr)[goog.uri.utils.CompontentIndex.QUERY_DATA];
+ *
+ *
+ * @param {string} uri The URI string to examine.
+ * @return {!Array.} Each component still URI-encoded.
+ * Each component that is present will contain the encoded value, whereas
+ * components that are not present will be undefined or empty, depending
+ * on the browser's regular expression implementation. Never null, since
+ * arbitrary strings may still look like path names.
+ */
+ function _split(uri) {
+ return lang_1.RegExpWrapper.firstMatch(_splitRe, uri);
+ }
+ /**
+ * Removes dot segments in given path component, as described in
+ * RFC 3986, section 5.2.4.
+ *
+ * @param {string} path A non-empty path component.
+ * @return {string} Path component with removed dot segments.
+ */
+ 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;
+ }
+ /**
+ * Takes an array of the parts from split and canonicalizes the path part
+ * and then joins all the parts.
+ * @param {Array.} parts
+ * @return {string}
+ */
+ 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]);
+ }
+ /**
+ * Resolves a URL.
+ * @param {string} base The URL acting as the base URL.
+ * @param {string} to The URL to resolve.
+ * @return {string}
+ */
+ 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);
+ }
+ //# sourceMappingURL=url_resolver.js.map
+
+/***/ },
+/* 31 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var core_1 = __webpack_require__(1);
+ var core_private_1 = __webpack_require__(13);
+ var lang_1 = __webpack_require__(3);
+ var compile_metadata_1 = __webpack_require__(16);
+ var o = __webpack_require__(10);
+ var identifiers_1 = __webpack_require__(17);
+ function _enumExpression(classIdentifier, value) {
+ if (lang_1.isBlank(value))
+ return o.NULL_EXPR;
+ var name = lang_1.resolveEnumToken(classIdentifier.runtime, value);
+ return o.importExpr(new compile_metadata_1.CompileIdentifierMetadata({
+ name: classIdentifier.name + "." + name,
+ moduleUrl: classIdentifier.moduleUrl,
+ runtime: value
+ }));
+ }
+ var ViewTypeEnum = (function () {
+ function ViewTypeEnum() {
+ }
+ ViewTypeEnum.fromValue = function (value) {
+ return _enumExpression(identifiers_1.Identifiers.ViewType, value);
+ };
+ ViewTypeEnum.HOST = ViewTypeEnum.fromValue(core_private_1.ViewType.HOST);
+ ViewTypeEnum.COMPONENT = ViewTypeEnum.fromValue(core_private_1.ViewType.COMPONENT);
+ ViewTypeEnum.EMBEDDED = ViewTypeEnum.fromValue(core_private_1.ViewType.EMBEDDED);
+ return ViewTypeEnum;
+ }());
+ exports.ViewTypeEnum = ViewTypeEnum;
+ var ViewEncapsulationEnum = (function () {
+ function ViewEncapsulationEnum() {
+ }
+ ViewEncapsulationEnum.fromValue = function (value) {
+ return _enumExpression(identifiers_1.Identifiers.ViewEncapsulation, value);
+ };
+ ViewEncapsulationEnum.Emulated = ViewEncapsulationEnum.fromValue(core_1.ViewEncapsulation.Emulated);
+ ViewEncapsulationEnum.Native = ViewEncapsulationEnum.fromValue(core_1.ViewEncapsulation.Native);
+ ViewEncapsulationEnum.None = ViewEncapsulationEnum.fromValue(core_1.ViewEncapsulation.None);
+ return ViewEncapsulationEnum;
+ }());
+ exports.ViewEncapsulationEnum = ViewEncapsulationEnum;
+ var ChangeDetectorStateEnum = (function () {
+ function ChangeDetectorStateEnum() {
+ }
+ ChangeDetectorStateEnum.fromValue = function (value) {
+ return _enumExpression(identifiers_1.Identifiers.ChangeDetectorState, value);
+ };
+ ChangeDetectorStateEnum.NeverChecked = ChangeDetectorStateEnum.fromValue(core_private_1.ChangeDetectorState.NeverChecked);
+ ChangeDetectorStateEnum.CheckedBefore = ChangeDetectorStateEnum.fromValue(core_private_1.ChangeDetectorState.CheckedBefore);
+ ChangeDetectorStateEnum.Errored = ChangeDetectorStateEnum.fromValue(core_private_1.ChangeDetectorState.Errored);
+ return ChangeDetectorStateEnum;
+ }());
+ exports.ChangeDetectorStateEnum = ChangeDetectorStateEnum;
+ var ChangeDetectionStrategyEnum = (function () {
+ function ChangeDetectionStrategyEnum() {
+ }
+ ChangeDetectionStrategyEnum.fromValue = function (value) {
+ return _enumExpression(identifiers_1.Identifiers.ChangeDetectionStrategy, value);
+ };
+ ChangeDetectionStrategyEnum.CheckOnce = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.CheckOnce);
+ ChangeDetectionStrategyEnum.Checked = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.Checked);
+ ChangeDetectionStrategyEnum.CheckAlways = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.CheckAlways);
+ ChangeDetectionStrategyEnum.Detached = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.Detached);
+ ChangeDetectionStrategyEnum.OnPush = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.OnPush);
+ ChangeDetectionStrategyEnum.Default = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.Default);
+ return ChangeDetectionStrategyEnum;
+ }());
+ exports.ChangeDetectionStrategyEnum = ChangeDetectionStrategyEnum;
+ var ViewConstructorVars = (function () {
+ function ViewConstructorVars() {
+ }
+ ViewConstructorVars.viewUtils = o.variable('viewUtils');
+ ViewConstructorVars.parentInjector = o.variable('parentInjector');
+ ViewConstructorVars.declarationEl = o.variable('declarationEl');
+ return ViewConstructorVars;
+ }());
+ exports.ViewConstructorVars = ViewConstructorVars;
+ var ViewProperties = (function () {
+ function ViewProperties() {
+ }
+ ViewProperties.renderer = o.THIS_EXPR.prop('renderer');
+ ViewProperties.projectableNodes = o.THIS_EXPR.prop('projectableNodes');
+ ViewProperties.viewUtils = o.THIS_EXPR.prop('viewUtils');
+ return ViewProperties;
+ }());
+ exports.ViewProperties = ViewProperties;
+ var EventHandlerVars = (function () {
+ function EventHandlerVars() {
+ }
+ EventHandlerVars.event = o.variable('$event');
+ return EventHandlerVars;
+ }());
+ exports.EventHandlerVars = EventHandlerVars;
+ var InjectMethodVars = (function () {
+ function InjectMethodVars() {
+ }
+ InjectMethodVars.token = o.variable('token');
+ InjectMethodVars.requestNodeIndex = o.variable('requestNodeIndex');
+ InjectMethodVars.notFoundResult = o.variable('notFoundResult');
+ return InjectMethodVars;
+ }());
+ exports.InjectMethodVars = InjectMethodVars;
+ var DetectChangesVars = (function () {
+ function DetectChangesVars() {
+ }
+ DetectChangesVars.throwOnChange = o.variable("throwOnChange");
+ DetectChangesVars.changes = o.variable("changes");
+ DetectChangesVars.changed = o.variable("changed");
+ DetectChangesVars.valUnwrapper = o.variable("valUnwrapper");
+ return DetectChangesVars;
+ }());
+ exports.DetectChangesVars = DetectChangesVars;
+ //# sourceMappingURL=constants.js.map
+
+/***/ },
+/* 32 */,
+/* 33 */,
+/* 34 */,
+/* 35 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var core_1 = __webpack_require__(1);
+ var exceptions_1 = __webpack_require__(121);
+ var collection_1 = __webpack_require__(22);
+ exports.EVENT_MANAGER_PLUGINS =
+ /*@ts2dart_const*/ new core_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; };
+ /** @internal */
+ 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.decorators = [
+ { type: core_1.Injectable },
+ ];
+ EventManager.ctorParameters = [
+ { type: undefined, decorators: [{ type: core_1.Inject, args: [exports.EVENT_MANAGER_PLUGINS,] },] },
+ { type: core_1.NgZone, },
+ ];
+ return EventManager;
+ }());
+ exports.EventManager = EventManager;
+ var EventManagerPlugin = (function () {
+ function EventManagerPlugin() {
+ }
+ // That is equivalent to having supporting $event.target
+ 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;
+ //# sourceMappingURL=event_manager.js.map
+
+/***/ },
+/* 36 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var lang_1 = __webpack_require__(4);
+ (function (Ng2BootstrapTheme) {
+ Ng2BootstrapTheme[Ng2BootstrapTheme["BS3"] = 1] = "BS3";
+ Ng2BootstrapTheme[Ng2BootstrapTheme["BS4"] = 2] = "BS4";
+ })(exports.Ng2BootstrapTheme || (exports.Ng2BootstrapTheme = {}));
+ var Ng2BootstrapTheme = exports.Ng2BootstrapTheme;
+ var Ng2BootstrapConfig = (function () {
+ function Ng2BootstrapConfig() {
+ }
+ Object.defineProperty(Ng2BootstrapConfig, "theme", {
+ get: function () {
+ // hack as for now
+ if (lang_1.global && lang_1.global.__theme === 'bs4') {
+ return Ng2BootstrapTheme.BS4;
+ }
+ return (this._theme || Ng2BootstrapTheme.BS3);
+ },
+ set: function (v) {
+ this._theme = v;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return Ng2BootstrapConfig;
+ }());
+ exports.Ng2BootstrapConfig = Ng2BootstrapConfig;
+
+
+/***/ },
+/* 37 */,
+/* 38 */,
+/* 39 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var lang_1 = __webpack_require__(3);
+ var exceptions_1 = __webpack_require__(8);
+ var o = __webpack_require__(10);
+ var identifiers_1 = __webpack_require__(17);
+ function getPropertyInView(property, callingView, definedView) {
+ if (callingView === definedView) {
+ return property;
+ }
+ else {
+ var viewProp = o.THIS_EXPR;
+ var currView = callingView;
+ while (currView !== definedView && lang_1.isPresent(currView.declarationElement.view)) {
+ currView = currView.declarationElement.view;
+ viewProp = viewProp.prop('parent');
+ }
+ if (currView !== definedView) {
+ throw new exceptions_1.BaseException("Internal error: Could not calculate a property in a parent view: " + property);
+ }
+ if (property instanceof o.ReadPropExpr) {
+ var readPropExpr_1 = property;
+ // Note: Don't cast for members of the AppView base class...
+ if (definedView.fields.some(function (field) { return field.name == readPropExpr_1.name; }) ||
+ definedView.getters.some(function (field) { return field.name == readPropExpr_1.name; })) {
+ viewProp = viewProp.cast(definedView.classType);
+ }
+ }
+ return o.replaceVarInExpression(o.THIS_EXPR.name, viewProp, property);
+ }
+ }
+ exports.getPropertyInView = getPropertyInView;
+ function injectFromViewParentInjector(token, optional) {
+ var args = [createDiTokenExpression(token)];
+ if (optional) {
+ args.push(o.NULL_EXPR);
+ }
+ return o.THIS_EXPR.prop('parentInjector').callMethod('get', args);
+ }
+ exports.injectFromViewParentInjector = injectFromViewParentInjector;
+ function getViewFactoryName(component, embeddedTemplateIndex) {
+ return "viewFactory_" + component.type.name + embeddedTemplateIndex;
+ }
+ exports.getViewFactoryName = getViewFactoryName;
+ function createDiTokenExpression(token) {
+ if (lang_1.isPresent(token.value)) {
+ return o.literal(token.value);
+ }
+ else if (token.identifierIsInstance) {
+ return o.importExpr(token.identifier)
+ .instantiate([], o.importType(token.identifier, [], [o.TypeModifier.Const]));
+ }
+ else {
+ return o.importExpr(token.identifier);
+ }
+ }
+ exports.createDiTokenExpression = createDiTokenExpression;
+ function createFlatArray(expressions) {
+ var lastNonArrayExpressions = [];
+ var result = o.literalArr([]);
+ for (var i = 0; i < expressions.length; i++) {
+ var expr = expressions[i];
+ if (expr.type instanceof o.ArrayType) {
+ if (lastNonArrayExpressions.length > 0) {
+ result =
+ result.callMethod(o.BuiltinMethod.ConcatArray, [o.literalArr(lastNonArrayExpressions)]);
+ lastNonArrayExpressions = [];
+ }
+ result = result.callMethod(o.BuiltinMethod.ConcatArray, [expr]);
+ }
+ else {
+ lastNonArrayExpressions.push(expr);
+ }
+ }
+ if (lastNonArrayExpressions.length > 0) {
+ result =
+ result.callMethod(o.BuiltinMethod.ConcatArray, [o.literalArr(lastNonArrayExpressions)]);
+ }
+ return result;
+ }
+ exports.createFlatArray = createFlatArray;
+ function createPureProxy(fn, argCount, pureProxyProp, view) {
+ view.fields.push(new o.ClassField(pureProxyProp.name, null));
+ var pureProxyId = argCount < identifiers_1.Identifiers.pureProxies.length ? identifiers_1.Identifiers.pureProxies[argCount] : null;
+ if (lang_1.isBlank(pureProxyId)) {
+ throw new exceptions_1.BaseException("Unsupported number of argument for pure functions: " + argCount);
+ }
+ view.createMethod.addStmt(o.THIS_EXPR.prop(pureProxyProp.name).set(o.importExpr(pureProxyId).callFn([fn])).toStmt());
+ }
+ exports.createPureProxy = createPureProxy;
+ //# sourceMappingURL=util.js.map
+
+/***/ },
+/* 40 */,
+/* 41 */
+4,
+/* 42 */,
+/* 43 */,
+/* 44 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 = __webpack_require__(1);
+ var file_uploader_class_1 = __webpack_require__(28);
+ var FileDropDirective = (function () {
+ function FileDropDirective(element) {
+ this.fileOver = new core_1.EventEmitter();
+ this.onFileDrop = new core_1.EventEmitter();
+ this.element = element;
+ }
+ FileDropDirective.prototype.getOptions = function () {
+ return this.uploader.options;
+ };
+ FileDropDirective.prototype.getFilters = function () {
+ return {};
+ };
+ FileDropDirective.prototype.onDrop = function (event) {
+ var transfer = this._getTransfer(event);
+ if (!transfer) {
+ return;
+ }
+ var options = this.getOptions();
+ var filters = this.getFilters();
+ this._preventAndStop(event);
+ this.uploader.addToQueue(transfer.files, options, filters);
+ this.fileOver.emit(false);
+ this.onFileDrop.emit(transfer.files);
+ };
+ FileDropDirective.prototype.onDragOver = function (event) {
+ var transfer = this._getTransfer(event);
+ if (!this._haveFiles(transfer.types)) {
+ return;
+ }
+ transfer.dropEffect = 'copy';
+ this._preventAndStop(event);
+ this.fileOver.emit(true);
+ };
+ FileDropDirective.prototype.onDragLeave = function (event) {
+ if (event.currentTarget === this.element[0]) {
+ return;
+ }
+ this._preventAndStop(event);
+ this.fileOver.emit(false);
+ };
+ FileDropDirective.prototype._getTransfer = function (event) {
+ return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer;
+ };
+ FileDropDirective.prototype._preventAndStop = function (event) {
+ event.preventDefault();
+ event.stopPropagation();
+ };
+ FileDropDirective.prototype._haveFiles = function (types) {
+ if (!types) {
+ return false;
+ }
+ if (types.indexOf) {
+ return types.indexOf('Files') !== -1;
+ }
+ else if (types.contains) {
+ return types.contains('Files');
+ }
+ else {
+ return false;
+ }
+ };
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', file_uploader_class_1.FileUploader)
+ ], FileDropDirective.prototype, "uploader", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata('design:type', core_1.EventEmitter)
+ ], FileDropDirective.prototype, "fileOver", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata('design:type', core_1.EventEmitter)
+ ], FileDropDirective.prototype, "onFileDrop", void 0);
+ __decorate([
+ core_1.HostListener('drop', ['$event']),
+ __metadata('design:type', Function),
+ __metadata('design:paramtypes', [Object]),
+ __metadata('design:returntype', void 0)
+ ], FileDropDirective.prototype, "onDrop", null);
+ __decorate([
+ core_1.HostListener('dragover', ['$event']),
+ __metadata('design:type', Function),
+ __metadata('design:paramtypes', [Object]),
+ __metadata('design:returntype', void 0)
+ ], FileDropDirective.prototype, "onDragOver", null);
+ __decorate([
+ core_1.HostListener('dragleave', ['$event']),
+ __metadata('design:type', Function),
+ __metadata('design:paramtypes', [Object]),
+ __metadata('design:returntype', Object)
+ ], FileDropDirective.prototype, "onDragLeave", null);
+ FileDropDirective = __decorate([
+ core_1.Directive({ selector: '[ng2FileDrop]' }),
+ __metadata('design:paramtypes', [core_1.ElementRef])
+ ], FileDropDirective);
+ return FileDropDirective;
+ }());
+ exports.FileDropDirective = FileDropDirective;
+
+
+/***/ },
+/* 45 */
+/***/ function(module, exports) {
+
+ "use strict";
+ function isElement(node) {
+ return !!(node && (node.nodeName || node.prop && node.attr && node.find));
+ }
+ var FileLikeObject = (function () {
+ function FileLikeObject(fileOrInput) {
+ var isInput = isElement(fileOrInput);
+ var fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;
+ var postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';
+ var method = '_createFrom' + postfix;
+ this[method](fakePathOrObject);
+ }
+ FileLikeObject.prototype._createFromFakePath = function (path) {
+ this.lastModifiedDate = void 0;
+ this.size = void 0;
+ this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();
+ this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\') + 2);
+ };
+ FileLikeObject.prototype._createFromObject = function (object) {
+ this.size = object.size;
+ this.type = object.type;
+ this.name = object.name;
+ };
+ return FileLikeObject;
+ }());
+ exports.FileLikeObject = FileLikeObject;
+
+
+/***/ },
+/* 46 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 = __webpack_require__(1);
+ var file_uploader_class_1 = __webpack_require__(28);
+ var FileSelectDirective = (function () {
+ function FileSelectDirective(element) {
+ this.element = element;
+ }
+ FileSelectDirective.prototype.getOptions = function () {
+ return this.uploader.options;
+ };
+ FileSelectDirective.prototype.getFilters = function () {
+ return void 0;
+ };
+ FileSelectDirective.prototype.isEmptyAfterSelection = function () {
+ return !!this.element.nativeElement.attributes.multiple;
+ };
+ FileSelectDirective.prototype.onChange = function () {
+ var files = this.element.nativeElement.files;
+ var options = this.getOptions();
+ var filters = this.getFilters();
+ this.uploader.addToQueue(files, options, filters);
+ if (this.isEmptyAfterSelection()) {
+ }
+ };
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', file_uploader_class_1.FileUploader)
+ ], FileSelectDirective.prototype, "uploader", void 0);
+ __decorate([
+ core_1.HostListener('change'),
+ __metadata('design:type', Function),
+ __metadata('design:paramtypes', []),
+ __metadata('design:returntype', Object)
+ ], FileSelectDirective.prototype, "onChange", null);
+ FileSelectDirective = __decorate([
+ core_1.Directive({ selector: '[ng2FileSelect]' }),
+ __metadata('design:paramtypes', [core_1.ElementRef])
+ ], FileSelectDirective);
+ return FileSelectDirective;
+ }());
+ exports.FileSelectDirective = FileSelectDirective;
+
+
+/***/ },
+/* 47 */,
+/* 48 */,
+/* 49 */,
+/* 50 */,
+/* 51 */,
+/* 52 */,
+/* 53 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var lang_1 = __webpack_require__(3);
+ var exceptions_1 = __webpack_require__(8);
+ var identifiers_1 = __webpack_require__(17);
+ var CompilerConfig = (function () {
+ function CompilerConfig(genDebugInfo, logBindingUpdate, useJit, renderTypes) {
+ if (renderTypes === void 0) { renderTypes = null; }
+ this.genDebugInfo = genDebugInfo;
+ this.logBindingUpdate = logBindingUpdate;
+ this.useJit = useJit;
+ if (lang_1.isBlank(renderTypes)) {
+ renderTypes = new DefaultRenderTypes();
+ }
+ this.renderTypes = renderTypes;
+ }
+ return CompilerConfig;
+ }());
+ exports.CompilerConfig = CompilerConfig;
+ /**
+ * Types used for the renderer.
+ * Can be replaced to specialize the generated output to a specific renderer
+ * to help tree shaking.
+ */
+ var RenderTypes = (function () {
+ function RenderTypes() {
+ }
+ Object.defineProperty(RenderTypes.prototype, "renderer", {
+ get: function () { return exceptions_1.unimplemented(); },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RenderTypes.prototype, "renderText", {
+ get: function () { return exceptions_1.unimplemented(); },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RenderTypes.prototype, "renderElement", {
+ get: function () { return exceptions_1.unimplemented(); },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RenderTypes.prototype, "renderComment", {
+ get: function () { return exceptions_1.unimplemented(); },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RenderTypes.prototype, "renderNode", {
+ get: function () { return exceptions_1.unimplemented(); },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(RenderTypes.prototype, "renderEvent", {
+ get: function () { return exceptions_1.unimplemented(); },
+ enumerable: true,
+ configurable: true
+ });
+ return RenderTypes;
+ }());
+ exports.RenderTypes = RenderTypes;
+ var DefaultRenderTypes = (function () {
+ function DefaultRenderTypes() {
+ this.renderer = identifiers_1.Identifiers.Renderer;
+ this.renderText = null;
+ this.renderElement = null;
+ this.renderComment = null;
+ this.renderNode = null;
+ this.renderEvent = null;
+ }
+ return DefaultRenderTypes;
+ }());
+ exports.DefaultRenderTypes = DefaultRenderTypes;
+ //# sourceMappingURL=config.js.map
+
+/***/ },
+/* 54 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var lang_1 = __webpack_require__(3);
+ // see http://www.w3.org/TR/html51/syntax.html#named-character-references
+ // see https://html.spec.whatwg.org/multipage/entities.json
+ // This list is not exhaustive to keep the compiler footprint low.
+ // The `{` / `ƫ` syntax should be used when the named character reference does not exist.
+ exports.NAMED_ENTITIES = {
+ '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;
+ // see http://www.w3.org/TR/html51/syntax.html#optional-tags
+ // This implementation does not fully conform to the HTML5 spec.
+ 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;
+ //# sourceMappingURL=html_tags.js.map
+
+/***/ },
+/* 55 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var lang_1 = __webpack_require__(3);
+ var exceptions_1 = __webpack_require__(8);
+ var o = __webpack_require__(10);
+ var _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\|\n|\r|\$/g;
+ exports.CATCH_ERROR_VAR = o.variable('error');
+ exports.CATCH_STACK_VAR = o.variable('stack');
+ var OutputEmitter = (function () {
+ function OutputEmitter() {
+ }
+ return OutputEmitter;
+ }());
+ exports.OutputEmitter = OutputEmitter;
+ var _EmittedLine = (function () {
+ function _EmittedLine(indent) {
+ this.indent = indent;
+ this.parts = [];
+ }
+ return _EmittedLine;
+ }());
+ var EmitterVisitorContext = (function () {
+ function EmitterVisitorContext(_exportedVars, _indent) {
+ this._exportedVars = _exportedVars;
+ this._indent = _indent;
+ this._classes = [];
+ this._lines = [new _EmittedLine(_indent)];
+ }
+ EmitterVisitorContext.createRoot = function (exportedVars) {
+ return new EmitterVisitorContext(exportedVars, 0);
+ };
+ Object.defineProperty(EmitterVisitorContext.prototype, "_currentLine", {
+ get: function () { return this._lines[this._lines.length - 1]; },
+ enumerable: true,
+ configurable: true
+ });
+ EmitterVisitorContext.prototype.isExportedVar = function (varName) { return this._exportedVars.indexOf(varName) !== -1; };
+ EmitterVisitorContext.prototype.println = function (lastPart) {
+ if (lastPart === void 0) { lastPart = ''; }
+ this.print(lastPart, true);
+ };
+ EmitterVisitorContext.prototype.lineIsEmpty = function () { return this._currentLine.parts.length === 0; };
+ EmitterVisitorContext.prototype.print = function (part, newLine) {
+ if (newLine === void 0) { newLine = false; }
+ if (part.length > 0) {
+ this._currentLine.parts.push(part);
+ }
+ if (newLine) {
+ this._lines.push(new _EmittedLine(this._indent));
+ }
+ };
+ EmitterVisitorContext.prototype.removeEmptyLastLine = function () {
+ if (this.lineIsEmpty()) {
+ this._lines.pop();
+ }
+ };
+ EmitterVisitorContext.prototype.incIndent = function () {
+ this._indent++;
+ this._currentLine.indent = this._indent;
+ };
+ EmitterVisitorContext.prototype.decIndent = function () {
+ this._indent--;
+ this._currentLine.indent = this._indent;
+ };
+ EmitterVisitorContext.prototype.pushClass = function (clazz) { this._classes.push(clazz); };
+ EmitterVisitorContext.prototype.popClass = function () { return this._classes.pop(); };
+ Object.defineProperty(EmitterVisitorContext.prototype, "currentClass", {
+ get: function () {
+ return this._classes.length > 0 ? this._classes[this._classes.length - 1] : null;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ EmitterVisitorContext.prototype.toSource = function () {
+ var lines = this._lines;
+ if (lines[lines.length - 1].parts.length === 0) {
+ lines = lines.slice(0, lines.length - 1);
+ }
+ return lines.map(function (line) {
+ if (line.parts.length > 0) {
+ return _createIndent(line.indent) + line.parts.join('');
+ }
+ else {
+ return '';
+ }
+ })
+ .join('\n');
+ };
+ return EmitterVisitorContext;
+ }());
+ exports.EmitterVisitorContext = EmitterVisitorContext;
+ var AbstractEmitterVisitor = (function () {
+ function AbstractEmitterVisitor(_escapeDollarInStrings) {
+ this._escapeDollarInStrings = _escapeDollarInStrings;
+ }
+ AbstractEmitterVisitor.prototype.visitExpressionStmt = function (stmt, ctx) {
+ stmt.expr.visitExpression(this, ctx);
+ ctx.println(';');
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitReturnStmt = function (stmt, ctx) {
+ ctx.print("return ");
+ stmt.value.visitExpression(this, ctx);
+ ctx.println(';');
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitIfStmt = function (stmt, ctx) {
+ ctx.print("if (");
+ stmt.condition.visitExpression(this, ctx);
+ ctx.print(") {");
+ var hasElseCase = lang_1.isPresent(stmt.falseCase) && stmt.falseCase.length > 0;
+ if (stmt.trueCase.length <= 1 && !hasElseCase) {
+ ctx.print(" ");
+ this.visitAllStatements(stmt.trueCase, ctx);
+ ctx.removeEmptyLastLine();
+ ctx.print(" ");
+ }
+ else {
+ ctx.println();
+ ctx.incIndent();
+ this.visitAllStatements(stmt.trueCase, ctx);
+ ctx.decIndent();
+ if (hasElseCase) {
+ ctx.println("} else {");
+ ctx.incIndent();
+ this.visitAllStatements(stmt.falseCase, ctx);
+ ctx.decIndent();
+ }
+ }
+ ctx.println("}");
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitThrowStmt = function (stmt, ctx) {
+ ctx.print("throw ");
+ stmt.error.visitExpression(this, ctx);
+ ctx.println(";");
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitCommentStmt = function (stmt, ctx) {
+ var lines = stmt.comment.split('\n');
+ lines.forEach(function (line) { ctx.println("// " + line); });
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitWriteVarExpr = function (expr, ctx) {
+ var lineWasEmpty = ctx.lineIsEmpty();
+ if (!lineWasEmpty) {
+ ctx.print('(');
+ }
+ ctx.print(expr.name + " = ");
+ expr.value.visitExpression(this, ctx);
+ if (!lineWasEmpty) {
+ ctx.print(')');
+ }
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitWriteKeyExpr = function (expr, ctx) {
+ var lineWasEmpty = ctx.lineIsEmpty();
+ if (!lineWasEmpty) {
+ ctx.print('(');
+ }
+ expr.receiver.visitExpression(this, ctx);
+ ctx.print("[");
+ expr.index.visitExpression(this, ctx);
+ ctx.print("] = ");
+ expr.value.visitExpression(this, ctx);
+ if (!lineWasEmpty) {
+ ctx.print(')');
+ }
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitWritePropExpr = function (expr, ctx) {
+ var lineWasEmpty = ctx.lineIsEmpty();
+ if (!lineWasEmpty) {
+ ctx.print('(');
+ }
+ expr.receiver.visitExpression(this, ctx);
+ ctx.print("." + expr.name + " = ");
+ expr.value.visitExpression(this, ctx);
+ if (!lineWasEmpty) {
+ ctx.print(')');
+ }
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitInvokeMethodExpr = function (expr, ctx) {
+ expr.receiver.visitExpression(this, ctx);
+ var name = expr.name;
+ if (lang_1.isPresent(expr.builtin)) {
+ name = this.getBuiltinMethodName(expr.builtin);
+ if (lang_1.isBlank(name)) {
+ // some builtins just mean to skip the call.
+ // e.g. `bind` in Dart.
+ return null;
+ }
+ }
+ ctx.print("." + name + "(");
+ this.visitAllExpressions(expr.args, ctx, ",");
+ ctx.print(")");
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitInvokeFunctionExpr = function (expr, ctx) {
+ expr.fn.visitExpression(this, ctx);
+ ctx.print("(");
+ this.visitAllExpressions(expr.args, ctx, ',');
+ ctx.print(")");
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitReadVarExpr = function (ast, ctx) {
+ var varName = ast.name;
+ if (lang_1.isPresent(ast.builtin)) {
+ switch (ast.builtin) {
+ case o.BuiltinVar.Super:
+ varName = 'super';
+ break;
+ case o.BuiltinVar.This:
+ varName = 'this';
+ break;
+ case o.BuiltinVar.CatchError:
+ varName = exports.CATCH_ERROR_VAR.name;
+ break;
+ case o.BuiltinVar.CatchStack:
+ varName = exports.CATCH_STACK_VAR.name;
+ break;
+ default:
+ throw new exceptions_1.BaseException("Unknown builtin variable " + ast.builtin);
+ }
+ }
+ ctx.print(varName);
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitInstantiateExpr = function (ast, ctx) {
+ ctx.print("new ");
+ ast.classExpr.visitExpression(this, ctx);
+ ctx.print("(");
+ this.visitAllExpressions(ast.args, ctx, ',');
+ ctx.print(")");
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx) {
+ var value = ast.value;
+ if (lang_1.isString(value)) {
+ ctx.print(escapeSingleQuoteString(value, this._escapeDollarInStrings));
+ }
+ else if (lang_1.isBlank(value)) {
+ ctx.print('null');
+ }
+ else {
+ ctx.print("" + value);
+ }
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitConditionalExpr = function (ast, ctx) {
+ ctx.print("(");
+ ast.condition.visitExpression(this, ctx);
+ ctx.print('? ');
+ ast.trueCase.visitExpression(this, ctx);
+ ctx.print(': ');
+ ast.falseCase.visitExpression(this, ctx);
+ ctx.print(")");
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitNotExpr = function (ast, ctx) {
+ ctx.print('!');
+ ast.condition.visitExpression(this, ctx);
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitBinaryOperatorExpr = function (ast, ctx) {
+ var opStr;
+ switch (ast.operator) {
+ case o.BinaryOperator.Equals:
+ opStr = '==';
+ break;
+ case o.BinaryOperator.Identical:
+ opStr = '===';
+ break;
+ case o.BinaryOperator.NotEquals:
+ opStr = '!=';
+ break;
+ case o.BinaryOperator.NotIdentical:
+ opStr = '!==';
+ break;
+ case o.BinaryOperator.And:
+ opStr = '&&';
+ break;
+ case o.BinaryOperator.Or:
+ opStr = '||';
+ break;
+ case o.BinaryOperator.Plus:
+ opStr = '+';
+ break;
+ case o.BinaryOperator.Minus:
+ opStr = '-';
+ break;
+ case o.BinaryOperator.Divide:
+ opStr = '/';
+ break;
+ case o.BinaryOperator.Multiply:
+ opStr = '*';
+ break;
+ case o.BinaryOperator.Modulo:
+ opStr = '%';
+ break;
+ case o.BinaryOperator.Lower:
+ opStr = '<';
+ break;
+ case o.BinaryOperator.LowerEquals:
+ opStr = '<=';
+ break;
+ case o.BinaryOperator.Bigger:
+ opStr = '>';
+ break;
+ case o.BinaryOperator.BiggerEquals:
+ opStr = '>=';
+ break;
+ default:
+ throw new exceptions_1.BaseException("Unknown operator " + ast.operator);
+ }
+ ctx.print("(");
+ ast.lhs.visitExpression(this, ctx);
+ ctx.print(" " + opStr + " ");
+ ast.rhs.visitExpression(this, ctx);
+ ctx.print(")");
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitReadPropExpr = function (ast, ctx) {
+ ast.receiver.visitExpression(this, ctx);
+ ctx.print(".");
+ ctx.print(ast.name);
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitReadKeyExpr = function (ast, ctx) {
+ ast.receiver.visitExpression(this, ctx);
+ ctx.print("[");
+ ast.index.visitExpression(this, ctx);
+ ctx.print("]");
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitLiteralArrayExpr = function (ast, ctx) {
+ var useNewLine = ast.entries.length > 1;
+ ctx.print("[", useNewLine);
+ ctx.incIndent();
+ this.visitAllExpressions(ast.entries, ctx, ',', useNewLine);
+ ctx.decIndent();
+ ctx.print("]", useNewLine);
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitLiteralMapExpr = function (ast, ctx) {
+ var _this = this;
+ var useNewLine = ast.entries.length > 1;
+ ctx.print("{", useNewLine);
+ ctx.incIndent();
+ this.visitAllObjects(function (entry) {
+ ctx.print(escapeSingleQuoteString(entry[0], _this._escapeDollarInStrings) + ": ");
+ entry[1].visitExpression(_this, ctx);
+ }, ast.entries, ctx, ',', useNewLine);
+ ctx.decIndent();
+ ctx.print("}", useNewLine);
+ return null;
+ };
+ AbstractEmitterVisitor.prototype.visitAllExpressions = function (expressions, ctx, separator, newLine) {
+ var _this = this;
+ if (newLine === void 0) { newLine = false; }
+ this.visitAllObjects(function (expr) { return expr.visitExpression(_this, ctx); }, expressions, ctx, separator, newLine);
+ };
+ AbstractEmitterVisitor.prototype.visitAllObjects = function (handler, expressions, ctx, separator, newLine) {
+ if (newLine === void 0) { newLine = false; }
+ for (var i = 0; i < expressions.length; i++) {
+ if (i > 0) {
+ ctx.print(separator, newLine);
+ }
+ handler(expressions[i]);
+ }
+ if (newLine) {
+ ctx.println();
+ }
+ };
+ AbstractEmitterVisitor.prototype.visitAllStatements = function (statements, ctx) {
+ var _this = this;
+ statements.forEach(function (stmt) { return stmt.visitStatement(_this, ctx); });
+ };
+ return AbstractEmitterVisitor;
+ }());
+ exports.AbstractEmitterVisitor = AbstractEmitterVisitor;
+ function escapeSingleQuoteString(input, escapeDollar) {
+ if (lang_1.isBlank(input)) {
+ return null;
+ }
+ var body = lang_1.StringWrapper.replaceAllMapped(input, _SINGLE_QUOTE_ESCAPE_STRING_RE, function (match) {
+ if (match[0] == '$') {
+ return escapeDollar ? '\\$' : '$';
+ }
+ else if (match[0] == '\n') {
+ return '\\n';
+ }
+ else if (match[0] == '\r') {
+ return '\\r';
+ }
+ else {
+ return "\\" + match[0];
+ }
+ });
+ return "'" + body + "'";
+ }
+ exports.escapeSingleQuoteString = escapeSingleQuoteString;
+ function _createIndent(count) {
+ var res = '';
+ for (var i = 0; i < count; i++) {
+ res += ' ';
+ }
+ return res;
+ }
+ //# sourceMappingURL=abstract_emitter.js.map
+
+/***/ },
+/* 56 */
+/***/ function(module, exports) {
+
+ "use strict";
+ 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;
+ (function (ParseErrorLevel) {
+ ParseErrorLevel[ParseErrorLevel["WARNING"] = 0] = "WARNING";
+ ParseErrorLevel[ParseErrorLevel["FATAL"] = 1] = "FATAL";
+ })(exports.ParseErrorLevel || (exports.ParseErrorLevel = {}));
+ var ParseErrorLevel = exports.ParseErrorLevel;
+ var ParseError = (function () {
+ function ParseError(span, msg, level) {
+ if (level === void 0) { level = ParseErrorLevel.FATAL; }
+ this.span = span;
+ this.msg = msg;
+ this.level = level;
+ }
+ 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;
+ //# sourceMappingURL=parse_util.js.map
+
+/***/ },
+/* 57 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var ElementSchemaRegistry = (function () {
+ function ElementSchemaRegistry() {
+ }
+ return ElementSchemaRegistry;
+ }());
+ exports.ElementSchemaRegistry = ElementSchemaRegistry;
+ //# sourceMappingURL=element_schema_registry.js.map
+
+/***/ },
+/* 58 */,
+/* 59 */,
+/* 60 */,
+/* 61 */,
+/* 62 */,
+/* 63 */,
+/* 64 */,
+/* 65 */,
+/* 66 */,
+/* 67 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var core_1 = __webpack_require__(1);
+ var core_private_1 = __webpack_require__(115);
+ var common_1 = __webpack_require__(6);
+ var dom_sanitization_service_1 = __webpack_require__(214);
+ var lang_1 = __webpack_require__(12);
+ var browser_adapter_1 = __webpack_require__(118);
+ var testability_1 = __webpack_require__(411);
+ var dom_adapter_1 = __webpack_require__(15);
+ var dom_tokens_1 = __webpack_require__(68);
+ var event_manager_1 = __webpack_require__(35);
+ var dom_renderer_1 = __webpack_require__(207);
+ var shared_styles_host_1 = __webpack_require__(120);
+ var key_events_1 = __webpack_require__(417);
+ var ng_probe_1 = __webpack_require__(119);
+ var dom_events_1 = __webpack_require__(208);
+ var hammer_gestures_1 = __webpack_require__(209);
+ var shared_styles_host_2 = __webpack_require__(120);
+ var animation_builder_1 = __webpack_require__(116);
+ var browser_details_1 = __webpack_require__(117);
+ var title_1 = __webpack_require__(412);
+ exports.Title = title_1.Title;
+ var browser_adapter_2 = __webpack_require__(118);
+ exports.BrowserDomAdapter = browser_adapter_2.BrowserDomAdapter;
+ var tools_1 = __webpack_require__(414);
+ exports.enableDebugTools = tools_1.enableDebugTools;
+ exports.disableDebugTools = tools_1.disableDebugTools;
+ var by_1 = __webpack_require__(415);
+ exports.By = by_1.By;
+ exports.BROWSER_PLATFORM_MARKER =
+ /*@ts2dart_const*/ new core_1.OpaqueToken('BrowserPlatformMarker');
+ /**
+ * A set of providers to initialize the Angular platform in a web browser.
+ *
+ * Used automatically by `bootstrap`, or can be passed to {@link platform}.
+ */
+ exports.BROWSER_PROVIDERS = [
+ /*@ts2dart_Provider*/ { provide: exports.BROWSER_PLATFORM_MARKER, useValue: true },
+ core_1.PLATFORM_COMMON_PROVIDERS,
+ /*@ts2dart_Provider*/ { provide: core_1.PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true },
+ ];
+ function _exceptionHandler() {
+ // !IS_DART is required because we must rethrow exceptions in JS,
+ // but must not rethrow exceptions in Dart
+ return new core_1.ExceptionHandler(dom_adapter_1.getDOM(), !lang_1.IS_DART);
+ }
+ function _document() {
+ return dom_adapter_1.getDOM().defaultDoc();
+ }
+ exports.BROWSER_SANITIZATION_PROVIDERS = [
+ /* @ts2dart_Provider */ { provide: core_private_1.SanitizationService, useExisting: dom_sanitization_service_1.DomSanitizationService },
+ /* @ts2dart_Provider */ { provide: dom_sanitization_service_1.DomSanitizationService, useClass: dom_sanitization_service_1.DomSanitizationServiceImpl },
+ ];
+ /**
+ * A set of providers to initialize an Angular application in a web browser.
+ *
+ * Used automatically by `bootstrap`, or can be passed to {@link PlatformRef.application}.
+ */
+ exports.BROWSER_APP_COMMON_PROVIDERS =
+ /*@ts2dart_const*/ [
+ core_1.APPLICATION_COMMON_PROVIDERS,
+ common_1.FORM_PROVIDERS,
+ exports.BROWSER_SANITIZATION_PROVIDERS,
+ /* @ts2dart_Provider */ { provide: core_1.PLATFORM_PIPES, useValue: common_1.COMMON_PIPES, multi: true },
+ /* @ts2dart_Provider */ { provide: core_1.PLATFORM_DIRECTIVES, useValue: common_1.COMMON_DIRECTIVES, multi: true },
+ /* @ts2dart_Provider */ { provide: core_1.ExceptionHandler, useFactory: _exceptionHandler, deps: [] },
+ /* @ts2dart_Provider */ { provide: dom_tokens_1.DOCUMENT, useFactory: _document, deps: [] },
+ /* @ts2dart_Provider */ { provide: event_manager_1.EVENT_MANAGER_PLUGINS, useClass: dom_events_1.DomEventsPlugin, multi: true },
+ /* @ts2dart_Provider */ { provide: event_manager_1.EVENT_MANAGER_PLUGINS, useClass: key_events_1.KeyEventsPlugin, multi: true },
+ /* @ts2dart_Provider */ { provide: event_manager_1.EVENT_MANAGER_PLUGINS, useClass: hammer_gestures_1.HammerGesturesPlugin, multi: true },
+ /* @ts2dart_Provider */ { provide: hammer_gestures_1.HAMMER_GESTURE_CONFIG, useClass: hammer_gestures_1.HammerGestureConfig },
+ /* @ts2dart_Provider */ { provide: dom_renderer_1.DomRootRenderer, useClass: dom_renderer_1.DomRootRenderer_ },
+ /* @ts2dart_Provider */ { provide: core_1.RootRenderer, useExisting: dom_renderer_1.DomRootRenderer },
+ /* @ts2dart_Provider */ { provide: shared_styles_host_1.SharedStylesHost, useExisting: shared_styles_host_2.DomSharedStylesHost },
+ shared_styles_host_2.DomSharedStylesHost,
+ core_1.Testability,
+ browser_details_1.BrowserDetails,
+ animation_builder_1.AnimationBuilder,
+ event_manager_1.EventManager,
+ ng_probe_1.ELEMENT_PROBE_PROVIDERS
+ ];
+ var hammer_gestures_2 = __webpack_require__(209);
+ exports.HAMMER_GESTURE_CONFIG = hammer_gestures_2.HAMMER_GESTURE_CONFIG;
+ exports.HammerGestureConfig = hammer_gestures_2.HammerGestureConfig;
+ function initDomAdapter() {
+ browser_adapter_1.BrowserDomAdapter.makeCurrent();
+ core_private_1.wtfInit();
+ testability_1.BrowserGetTestability.init();
+ }
+ exports.initDomAdapter = initDomAdapter;
+ //# sourceMappingURL=browser_common.js.map
+
+/***/ },
+/* 68 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var core_1 = __webpack_require__(1);
+ /**
+ * A DI Token representing the main rendering context. In a browser this is the DOM Document.
+ *
+ * Note: Document might not be available in the Application Context when Application and Rendering
+ * Contexts are not the same (e.g. when running the application into a Web Worker).
+ */
+ exports.DOCUMENT = new core_1.OpaqueToken('DocumentToken');
+ //# sourceMappingURL=dom_tokens.js.map
+
+/***/ },
+/* 69 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 = __webpack_require__(1);
+ var common_1 = __webpack_require__(6);
+ var date_formatter_1 = __webpack_require__(430);
+ var FORMAT_DAY = 'DD';
+ var FORMAT_MONTH = 'MMMM';
+ var FORMAT_YEAR = 'YYYY';
+ var FORMAT_DAY_HEADER = 'dd';
+ var FORMAT_DAY_TITLE = 'MMMM YYYY';
+ var FORMAT_MONTH_TITLE = 'YYYY';
+ var DATEPICKER_MODE = 'day';
+ var MIN_MODE = 'day';
+ var MAX_MODE = 'year';
+ var SHOW_WEEKS = true;
+ var ONLY_CURRENT_MONTH = false;
+ var STARTING_DAY = 0;
+ var YEAR_RANGE = 20;
+ // const MIN_DATE:Date = void 0;
+ // const MAX_DATE:Date = void 0;
+ var SHORTCUT_PROPAGATION = false;
+ // const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
+ /*
+ const KEYS = {
+ 13: 'enter',
+ 32: 'space',
+ 33: 'pageup',
+ 34: 'pagedown',
+ 35: 'end',
+ 36: 'home',
+ 37: 'left',
+ 38: 'up',
+ 39: 'right',
+ 40: 'down'
+ };
+ */
+ var DatePickerInnerComponent = (function () {
+ function DatePickerInnerComponent() {
+ this.stepDay = {};
+ this.stepMonth = {};
+ this.stepYear = {};
+ this.modes = ['day', 'month', 'year'];
+ this.dateFormatter = new date_formatter_1.DateFormatter();
+ this.update = new core_1.EventEmitter(false);
+ }
+ Object.defineProperty(DatePickerInnerComponent.prototype, "activeDate", {
+ get: function () {
+ return this._activeDate;
+ },
+ set: function (value) {
+ this._activeDate = value;
+ this.refreshView();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ // todo: add formatter value to Date object
+ DatePickerInnerComponent.prototype.ngOnInit = function () {
+ this.formatDay = this.formatDay || FORMAT_DAY;
+ this.formatMonth = this.formatMonth || FORMAT_MONTH;
+ this.formatYear = this.formatYear || FORMAT_YEAR;
+ this.formatDayHeader = this.formatDayHeader || FORMAT_DAY_HEADER;
+ this.formatDayTitle = this.formatDayTitle || FORMAT_DAY_TITLE;
+ this.formatMonthTitle = this.formatMonthTitle || FORMAT_MONTH_TITLE;
+ this.showWeeks = (this.showWeeks === undefined
+ ? SHOW_WEEKS
+ : this.showWeeks);
+ this.onlyCurrentMonth = (this.onlyCurrentMonth === undefined
+ ? ONLY_CURRENT_MONTH
+ : this.onlyCurrentMonth);
+ this.startingDay = this.startingDay || STARTING_DAY;
+ this.yearRange = this.yearRange || YEAR_RANGE;
+ this.shortcutPropagation = this.shortcutPropagation || SHORTCUT_PROPAGATION;
+ this.datepickerMode = this.datepickerMode || DATEPICKER_MODE;
+ this.minMode = this.minMode || MIN_MODE;
+ this.maxMode = this.maxMode || MAX_MODE;
+ // todo: use date for unique value
+ this.uniqueId = 'datepicker-' + '-' + Math.floor(Math.random() * 10000);
+ if (this.initDate) {
+ this.activeDate = this.initDate;
+ this.selectedDate = new Date(this.activeDate.valueOf());
+ this.update.emit(this.activeDate);
+ }
+ else if (this.activeDate === undefined) {
+ this.activeDate = new Date();
+ }
+ this.refreshView();
+ };
+ DatePickerInnerComponent.prototype.setCompareHandler = function (handler, type) {
+ if (type === 'day') {
+ this.compareHandlerDay = handler;
+ }
+ if (type === 'month') {
+ this.compareHandlerMonth = handler;
+ }
+ if (type === 'year') {
+ this.compareHandlerYear = handler;
+ }
+ };
+ DatePickerInnerComponent.prototype.compare = function (date1, date2) {
+ if (date1 === undefined || date2 === undefined) {
+ return undefined;
+ }
+ if (this.datepickerMode === 'day' && this.compareHandlerDay) {
+ return this.compareHandlerDay(date1, date2);
+ }
+ if (this.datepickerMode === 'month' && this.compareHandlerMonth) {
+ return this.compareHandlerMonth(date1, date2);
+ }
+ if (this.datepickerMode === 'year' && this.compareHandlerYear) {
+ return this.compareHandlerYear(date1, date2);
+ }
+ return void 0;
+ };
+ DatePickerInnerComponent.prototype.setRefreshViewHandler = function (handler, type) {
+ if (type === 'day') {
+ this.refreshViewHandlerDay = handler;
+ }
+ if (type === 'month') {
+ this.refreshViewHandlerMonth = handler;
+ }
+ if (type === 'year') {
+ this.refreshViewHandlerYear = handler;
+ }
+ };
+ DatePickerInnerComponent.prototype.refreshView = function () {
+ if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {
+ this.refreshViewHandlerDay();
+ }
+ if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {
+ this.refreshViewHandlerMonth();
+ }
+ if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {
+ this.refreshViewHandlerYear();
+ }
+ };
+ DatePickerInnerComponent.prototype.dateFilter = function (date, format) {
+ return this.dateFormatter.format(date, format);
+ };
+ DatePickerInnerComponent.prototype.isActive = function (dateObject) {
+ if (this.compare(dateObject.date, this.activeDate) === 0) {
+ this.activeDateId = dateObject.uid;
+ return true;
+ }
+ return false;
+ };
+ DatePickerInnerComponent.prototype.createDateObject = function (date, format) {
+ var dateObject = {};
+ dateObject.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());
+ dateObject.label = this.dateFilter(date, format);
+ dateObject.selected = this.compare(date, this.selectedDate) === 0;
+ dateObject.disabled = this.isDisabled(date);
+ dateObject.current = this.compare(date, new Date()) === 0;
+ dateObject.customClass = this.getCustomClassForDate(dateObject.date);
+ return dateObject;
+ };
+ DatePickerInnerComponent.prototype.split = function (arr, size) {
+ var arrays = [];
+ while (arr.length > 0) {
+ arrays.push(arr.splice(0, size));
+ }
+ return arrays;
+ };
+ // Fix a hard-reproducible bug with timezones
+ // The bug depends on OS, browser, current timezone and current date
+ // i.e.
+ // var date = new Date(2014, 0, 1);
+ // console.log(date.getFullYear(), date.getMonth(), date.getDate(),
+ // date.getHours()); can result in "2013 11 31 23" because of the bug.
+ DatePickerInnerComponent.prototype.fixTimeZone = function (date) {
+ var hours = date.getHours();
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours === 23 ? hours + 2 : 0);
+ };
+ DatePickerInnerComponent.prototype.select = function (date) {
+ if (this.datepickerMode === this.minMode) {
+ if (!this.activeDate) {
+ this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);
+ }
+ this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
+ }
+ else {
+ this.activeDate = date;
+ this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1];
+ }
+ this.selectedDate = new Date(this.activeDate.valueOf());
+ this.update.emit(this.activeDate);
+ this.refreshView();
+ };
+ DatePickerInnerComponent.prototype.move = function (direction) {
+ var expectedStep;
+ if (this.datepickerMode === 'day') {
+ expectedStep = this.stepDay;
+ }
+ if (this.datepickerMode === 'month') {
+ expectedStep = this.stepMonth;
+ }
+ if (this.datepickerMode === 'year') {
+ expectedStep = this.stepYear;
+ }
+ if (expectedStep) {
+ var year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);
+ var month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);
+ this.activeDate = new Date(year, month, 1);
+ this.refreshView();
+ }
+ };
+ DatePickerInnerComponent.prototype.toggleMode = function (direction) {
+ direction = direction || 1;
+ if ((this.datepickerMode === this.maxMode && direction === 1) ||
+ (this.datepickerMode === this.minMode && direction === -1)) {
+ return;
+ }
+ this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction];
+ this.refreshView();
+ };
+ DatePickerInnerComponent.prototype.getCustomClassForDate = function (date) {
+ var _this = this;
+ if (!this.customClass) {
+ return '';
+ }
+ // todo: build a hash of custom classes, it will work faster
+ var customClassObject = this.customClass
+ .find(function (customClass) {
+ return customClass.date.valueOf() === date.valueOf() &&
+ customClass.mode === _this.datepickerMode;
+ }, this);
+ return customClassObject === undefined ? '' : customClassObject.clazz;
+ };
+ DatePickerInnerComponent.prototype.isDisabled = function (date) {
+ // todo: implement dateDisabled attribute
+ return ((this.minDate && this.compare(date, this.minDate) < 0) ||
+ (this.maxDate && this.compare(date, this.maxDate) > 0));
+ };
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DatePickerInnerComponent.prototype, "datepickerMode", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Number)
+ ], DatePickerInnerComponent.prototype, "startingDay", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Number)
+ ], DatePickerInnerComponent.prototype, "yearRange", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Date)
+ ], DatePickerInnerComponent.prototype, "minDate", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Date)
+ ], DatePickerInnerComponent.prototype, "maxDate", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DatePickerInnerComponent.prototype, "minMode", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DatePickerInnerComponent.prototype, "maxMode", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Boolean)
+ ], DatePickerInnerComponent.prototype, "showWeeks", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DatePickerInnerComponent.prototype, "formatDay", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DatePickerInnerComponent.prototype, "formatMonth", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DatePickerInnerComponent.prototype, "formatYear", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DatePickerInnerComponent.prototype, "formatDayHeader", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DatePickerInnerComponent.prototype, "formatDayTitle", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DatePickerInnerComponent.prototype, "formatMonthTitle", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Boolean)
+ ], DatePickerInnerComponent.prototype, "onlyCurrentMonth", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Boolean)
+ ], DatePickerInnerComponent.prototype, "shortcutPropagation", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Array)
+ ], DatePickerInnerComponent.prototype, "customClass", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Object)
+ ], DatePickerInnerComponent.prototype, "dateDisabled", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Date)
+ ], DatePickerInnerComponent.prototype, "initDate", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Date)
+ ], DatePickerInnerComponent.prototype, "activeDate", null);
+ DatePickerInnerComponent = __decorate([
+ core_1.Component({
+ selector: 'datepicker-inner',
+ events: ['update'],
+ template: "\n \n \n
\n ",
+ directives: [common_1.FORM_DIRECTIVES, common_1.CORE_DIRECTIVES, common_1.NgClass, common_1.NgModel]
+ }),
+ __metadata('design:paramtypes', [])
+ ], DatePickerInnerComponent);
+ return DatePickerInnerComponent;
+ }());
+ exports.DatePickerInnerComponent = DatePickerInnerComponent;
+
+
+/***/ },
+/* 70 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 = __webpack_require__(1);
+ var dropdown_service_1 = __webpack_require__(434);
+ var DropdownDirective = (function () {
+ function DropdownDirective(el) {
+ this.onToggle = new core_1.EventEmitter(false);
+ this.isOpenChange = new core_1.EventEmitter(false);
+ this.addClass = true;
+ // @Query('dropdownMenu', {descendants: false})
+ // dropdownMenuList:QueryList) {
+ this.el = el;
+ // todo: bind to route change event
+ }
+ Object.defineProperty(DropdownDirective.prototype, "isOpen", {
+ get: function () {
+ return this._isOpen;
+ },
+ set: function (value) {
+ this._isOpen = !!value;
+ // todo: implement after porting position
+ // if (this.appendToBody && this.menuEl) {
+ //
+ // }
+ // todo: $animate open<->close transitions, as soon as ng2Animate will be
+ // ready
+ if (this.isOpen) {
+ this.focusToggleElement();
+ dropdown_service_1.dropdownService.open(this);
+ }
+ else {
+ dropdown_service_1.dropdownService.close(this);
+ this.selectedOption = void 0;
+ }
+ this.onToggle.emit(this.isOpen);
+ this.isOpenChange.emit(this.isOpen);
+ // todo: implement call to setIsOpen if set and function
+ },
+ enumerable: true,
+ configurable: true
+ });
+ DropdownDirective.prototype.ngOnInit = function () {
+ this.autoClose = this.autoClose || dropdown_service_1.NONINPUT;
+ if (this.isOpen) {
+ }
+ };
+ DropdownDirective.prototype.ngOnDestroy = function () {
+ if (this.appendToBody && this.menuEl) {
+ this.menuEl.nativeElement.remove();
+ }
+ };
+ Object.defineProperty(DropdownDirective.prototype, "dropDownMenu", {
+ set: function (dropdownMenu) {
+ // init drop down menu
+ this.menuEl = dropdownMenu.el;
+ if (this.appendToBody) {
+ window.document.body.appendChild(this.menuEl.nativeElement);
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DropdownDirective.prototype, "dropDownToggle", {
+ set: function (dropdownToggle) {
+ // init toggle element
+ this.toggleEl = dropdownToggle.el;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ DropdownDirective.prototype.toggle = function (open) {
+ return this.isOpen = arguments.length ? !!open : !this.isOpen;
+ };
+ DropdownDirective.prototype.focusDropdownEntry = function (keyCode) {
+ // If append to body is used.
+ var hostEl = this.menuEl ?
+ this.menuEl.nativeElement :
+ this.el.nativeElement.getElementsByTagName('ul')[0];
+ if (!hostEl) {
+ // todo: throw exception?
+ return;
+ }
+ var elems = hostEl.getElementsByTagName('a');
+ if (!elems || !elems.length) {
+ // todo: throw exception?
+ return;
+ }
+ // todo: use parseInt to detect isNumber?
+ // todo: or implement selectedOption as a get\set pair with parseInt on set
+ switch (keyCode) {
+ case (40):
+ if (typeof this.selectedOption !== 'number') {
+ this.selectedOption = 0;
+ break;
+ }
+ if (this.selectedOption === elems.length - 1) {
+ break;
+ }
+ this.selectedOption++;
+ break;
+ case (38):
+ if (typeof this.selectedOption !== 'number') {
+ return;
+ }
+ if (this.selectedOption === 0) {
+ // todo: return?
+ break;
+ }
+ this.selectedOption--;
+ break;
+ default:
+ break;
+ }
+ elems[this.selectedOption].focus();
+ };
+ DropdownDirective.prototype.focusToggleElement = function () {
+ if (this.toggleEl) {
+ this.toggleEl.nativeElement.focus();
+ }
+ };
+ __decorate([
+ core_1.HostBinding('class.open'),
+ core_1.Input(),
+ __metadata('design:type', Boolean)
+ ], DropdownDirective.prototype, "isOpen", null);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', String)
+ ], DropdownDirective.prototype, "autoClose", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Boolean)
+ ], DropdownDirective.prototype, "keyboardNav", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Boolean)
+ ], DropdownDirective.prototype, "appendToBody", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata('design:type', core_1.EventEmitter)
+ ], DropdownDirective.prototype, "onToggle", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata('design:type', core_1.EventEmitter)
+ ], DropdownDirective.prototype, "isOpenChange", void 0);
+ __decorate([
+ core_1.HostBinding('class.dropdown'),
+ __metadata('design:type', Boolean)
+ ], DropdownDirective.prototype, "addClass", void 0);
+ DropdownDirective = __decorate([
+ core_1.Directive({ selector: '[dropdown]' }),
+ __metadata('design:paramtypes', [core_1.ElementRef])
+ ], DropdownDirective);
+ return DropdownDirective;
+ }());
+ exports.DropdownDirective = DropdownDirective;
+
+
+/***/ },
+/* 71 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var PositionService = (function () {
+ function PositionService() {
+ }
+ /**
+ * Provides read-only equivalent of jQuery's position function:
+ * http://api.jquery.com/position/
+ */
+ PositionService.prototype.position = function (nativeEl) {
+ var elBCR = this.offset(nativeEl);
+ var offsetParentBCR = { top: 0, left: 0 };
+ var offsetParentEl = this.parentOffsetEl(nativeEl);
+ if (offsetParentEl !== this.document) {
+ offsetParentBCR = this.offset(offsetParentEl);
+ offsetParentBCR.top += offsetParentEl.clientTop - offsetParentEl.scrollTop;
+ offsetParentBCR.left += offsetParentEl.clientLeft - offsetParentEl.scrollLeft;
+ }
+ var boundingClientRect = nativeEl.getBoundingClientRect();
+ return {
+ width: boundingClientRect.width || nativeEl.offsetWidth,
+ height: boundingClientRect.height || nativeEl.offsetHeight,
+ top: elBCR.top - offsetParentBCR.top,
+ left: elBCR.left - offsetParentBCR.left
+ };
+ };
+ /**
+ * Provides read-only equivalent of jQuery's offset function:
+ * http://api.jquery.com/offset/
+ */
+ PositionService.prototype.offset = function (nativeEl) {
+ var boundingClientRect = nativeEl.getBoundingClientRect();
+ return {
+ width: boundingClientRect.width || nativeEl.offsetWidth,
+ height: boundingClientRect.height || nativeEl.offsetHeight,
+ top: boundingClientRect.top + (this.window.pageYOffset || this.document.documentElement.scrollTop),
+ left: boundingClientRect.left + (this.window.pageXOffset || this.document.documentElement.scrollLeft)
+ };
+ };
+ /**
+ * Provides coordinates for the targetEl in relation to hostEl
+ */
+ PositionService.prototype.positionElements = function (hostEl, targetEl, positionStr, appendToBody) {
+ var positionStrParts = positionStr.split('-');
+ var pos0 = positionStrParts[0];
+ var pos1 = positionStrParts[1] || 'center';
+ var hostElPos = appendToBody ?
+ this.offset(hostEl) :
+ this.position(hostEl);
+ var targetElWidth = targetEl.offsetWidth;
+ var targetElHeight = targetEl.offsetHeight;
+ var shiftWidth = {
+ center: function () {
+ return hostElPos.left + hostElPos.width / 2 - targetElWidth / 2;
+ },
+ left: function () {
+ return hostElPos.left;
+ },
+ right: function () {
+ return hostElPos.left + hostElPos.width;
+ }
+ };
+ var shiftHeight = {
+ center: function () {
+ return hostElPos.top + hostElPos.height / 2 - targetElHeight / 2;
+ },
+ top: function () {
+ return hostElPos.top;
+ },
+ bottom: function () {
+ return hostElPos.top + hostElPos.height;
+ }
+ };
+ var targetElPos;
+ switch (pos0) {
+ case 'right':
+ targetElPos = {
+ top: shiftHeight[pos1](),
+ left: shiftWidth[pos0]()
+ };
+ break;
+ case 'left':
+ targetElPos = {
+ top: shiftHeight[pos1](),
+ left: hostElPos.left - targetElWidth
+ };
+ break;
+ case 'bottom':
+ targetElPos = {
+ top: shiftHeight[pos0](),
+ left: shiftWidth[pos1]()
+ };
+ break;
+ default:
+ targetElPos = {
+ top: hostElPos.top - targetElHeight,
+ left: shiftWidth[pos1]()
+ };
+ break;
+ }
+ return targetElPos;
+ };
+ Object.defineProperty(PositionService.prototype, "window", {
+ get: function () {
+ return window;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(PositionService.prototype, "document", {
+ get: function () {
+ return window.document;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ PositionService.prototype.getStyle = function (nativeEl, cssProp) {
+ // IE
+ if (nativeEl.currentStyle) {
+ return nativeEl.currentStyle[cssProp];
+ }
+ if (this.window.getComputedStyle) {
+ return this.window.getComputedStyle(nativeEl)[cssProp];
+ }
+ // finally try and get inline style
+ return nativeEl.style[cssProp];
+ };
+ /**
+ * Checks if a given element is statically positioned
+ * @param nativeEl - raw DOM element
+ */
+ PositionService.prototype.isStaticPositioned = function (nativeEl) {
+ return (this.getStyle(nativeEl, 'position') || 'static') === 'static';
+ };
+ /**
+ * returns the closest, non-statically positioned parentOffset of a given
+ * element
+ * @param nativeEl
+ */
+ PositionService.prototype.parentOffsetEl = function (nativeEl) {
+ var offsetParent = nativeEl.offsetParent || this.document;
+ while (offsetParent && offsetParent !== this.document &&
+ this.isStaticPositioned(offsetParent)) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent || this.document;
+ };
+ ;
+ return PositionService;
+ }());
+ exports.PositionService = PositionService;
+ exports.positionService = new PositionService();
+
+
+/***/ },
+/* 72 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 = __webpack_require__(1);
+ var progressConfig = {
+ animate: true,
+ max: 100
+ };
+ // todo: progress element conflict with bootstrap.css
+ // todo: need hack: replace host element with div
+ /* tslint:disable */
+ var ProgressDirective = (function () {
+ function ProgressDirective() {
+ this.addClass = true;
+ this.bars = [];
+ }
+ Object.defineProperty(ProgressDirective.prototype, "max", {
+ get: function () {
+ return this._max;
+ },
+ set: function (v) {
+ this._max = v;
+ this.bars.forEach(function (bar) {
+ bar.recalculatePercentage();
+ });
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ProgressDirective.prototype.ngOnInit = function () {
+ this.animate = this.animate !== false;
+ this.max = typeof this.max === 'number' ? this.max : progressConfig.max;
+ };
+ ProgressDirective.prototype.addBar = function (bar) {
+ if (!this.animate) {
+ bar.transition = 'none';
+ }
+ this.bars.push(bar);
+ };
+ ProgressDirective.prototype.removeBar = function (bar) {
+ this.bars.splice(this.bars.indexOf(bar), 1);
+ };
+ __decorate([
+ core_1.Input(),
+ __metadata('design:type', Boolean)
+ ], ProgressDirective.prototype, "animate", void 0);
+ __decorate([
+ core_1.HostBinding('attr.max'),
+ core_1.Input(),
+ __metadata('design:type', Number)
+ ], ProgressDirective.prototype, "max", null);
+ __decorate([
+ core_1.HostBinding('class.progress'),
+ __metadata('design:type', Boolean)
+ ], ProgressDirective.prototype, "addClass", void 0);
+ ProgressDirective = __decorate([
+ core_1.Directive({ selector: 'bs-progress, [progress]' }),
+ __metadata('design:paramtypes', [])
+ ], ProgressDirective);
+ return ProgressDirective;
+ }());
+ exports.ProgressDirective = ProgressDirective;
+
+
+/***/ },
+/* 73 */,
+/* 74 */,
+/* 75 */,
+/* 76 */,
+/* 77 */,
+/* 78 */,
+/* 79 */,
+/* 80 */,
+/* 81 */,
+/* 82 */,
+/* 83 */,
+/* 84 */,
+/* 85 */,
+/* 86 */,
+/* 87 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(356));
+ //# sourceMappingURL=index.js.map
+
+/***/ },
+/* 88 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var core_1 = __webpack_require__(1);
+ var core_private_1 = __webpack_require__(13);
+ var lang_1 = __webpack_require__(3);
+ var exceptions_1 = __webpack_require__(8);
+ var collection_1 = __webpack_require__(7);
+ function _isDirectiveMetadata(type) {
+ return type instanceof core_1.DirectiveMetadata;
+ }
+ var DirectiveResolver = (function () {
+ function DirectiveResolver(_reflector) {
+ if (lang_1.isPresent(_reflector)) {
+ this._reflector = _reflector;
+ }
+ else {
+ this._reflector = core_1.reflector;
+ }
+ }
+ /**
+ * Return {@link DirectiveMetadata} for a given `Type`.
+ */
+ DirectiveResolver.prototype.resolve = function (type) {
+ var typeMetadata = this._reflector.annotations(core_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 core_1.InputMetadata) {
+ if (lang_1.isPresent(a.bindingPropertyName)) {
+ inputs.push(propName + ": " + a.bindingPropertyName);
+ }
+ else {
+ inputs.push(propName);
+ }
+ }
+ if (a instanceof core_1.OutputMetadata) {
+ if (lang_1.isPresent(a.bindingPropertyName)) {
+ outputs.push(propName + ": " + a.bindingPropertyName);
+ }
+ else {
+ outputs.push(propName);
+ }
+ }
+ if (a instanceof core_1.HostBindingMetadata) {
+ if (lang_1.isPresent(a.hostPropertyName)) {
+ host[("[" + a.hostPropertyName + "]")] = propName;
+ }
+ else {
+ host[("[" + propName + "]")] = propName;
+ }
+ }
+ if (a instanceof core_1.HostListenerMetadata) {
+ var args = lang_1.isPresent(a.args) ? a.args.join(', ') : '';
+ host[("(" + a.eventName + ")")] = propName + "(" + args + ")";
+ }
+ if (a instanceof core_1.ContentChildrenMetadata) {
+ queries[propName] = a;
+ }
+ if (a instanceof core_1.ViewChildrenMetadata) {
+ queries[propName] = a;
+ }
+ if (a instanceof core_1.ContentChildMetadata) {
+ queries[propName] = a;
+ }
+ if (a instanceof core_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 core_1.ComponentMetadata) {
+ return new core_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 core_1.DirectiveMetadata({
+ selector: dm.selector,
+ inputs: mergedInputs,
+ outputs: mergedOutputs,
+ host: mergedHost,
+ exportAs: dm.exportAs,
+ queries: mergedQueries,
+ providers: dm.providers
+ });
+ }
+ };
+ DirectiveResolver.decorators = [
+ { type: core_1.Injectable },
+ ];
+ DirectiveResolver.ctorParameters = [
+ { type: core_private_1.ReflectorReader, },
+ ];
+ return DirectiveResolver;
+ }());
+ exports.DirectiveResolver = DirectiveResolver;
+ exports.CODEGEN_DIRECTIVE_RESOLVER = new DirectiveResolver(core_1.reflector);
+ //# sourceMappingURL=directive_resolver.js.map
+
+/***/ },
+/* 89 */
+[459, 3, 361],
+/* 90 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var lang_1 = __webpack_require__(3);
+ 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 HtmlExpansionAst = (function () {
+ function HtmlExpansionAst(switchValue, type, cases, sourceSpan, switchValueSourceSpan) {
+ this.switchValue = switchValue;
+ this.type = type;
+ this.cases = cases;
+ this.sourceSpan = sourceSpan;
+ this.switchValueSourceSpan = switchValueSourceSpan;
+ }
+ HtmlExpansionAst.prototype.visit = function (visitor, context) {
+ return visitor.visitExpansion(this, context);
+ };
+ return HtmlExpansionAst;
+ }());
+ exports.HtmlExpansionAst = HtmlExpansionAst;
+ var HtmlExpansionCaseAst = (function () {
+ function HtmlExpansionCaseAst(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) {
+ this.value = value;
+ this.expression = expression;
+ this.sourceSpan = sourceSpan;
+ this.valueSourceSpan = valueSourceSpan;
+ this.expSourceSpan = expSourceSpan;
+ }
+ HtmlExpansionCaseAst.prototype.visit = function (visitor, context) {
+ return visitor.visitExpansionCase(this, context);
+ };
+ return HtmlExpansionCaseAst;
+ }());
+ exports.HtmlExpansionCaseAst = HtmlExpansionCaseAst;
+ 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;
+ //# sourceMappingURL=html_ast.js.map
+
+/***/ },
+/* 91 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 core_1 = __webpack_require__(1);
+ var lang_1 = __webpack_require__(3);
+ var collection_1 = __webpack_require__(7);
+ var html_ast_1 = __webpack_require__(90);
+ var html_lexer_1 = __webpack_require__(362);
+ var parse_util_1 = __webpack_require__(56);
+ var html_tags_1 = __webpack_require__(54);
+ 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, parseExpansionForms) {
+ if (parseExpansionForms === void 0) { parseExpansionForms = false; }
+ var tokensAndErrors = html_lexer_1.tokenizeHtml(sourceContent, sourceUrl, parseExpansionForms);
+ var treeAndErrors = new TreeBuilder(tokensAndErrors.tokens).build();
+ return new HtmlParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors
+ .concat(treeAndErrors.errors));
+ };
+ HtmlParser.decorators = [
+ { type: core_1.Injectable },
+ ];
+ 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 if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_FORM_START) {
+ this._consumeExpansion(this._advance());
+ }
+ else {
+ // Skip all other tokens...
+ this._advance();
+ }
+ }
+ return new HtmlParseTreeResult(this.rootNodes, this.errors);
+ };
+ TreeBuilder.prototype._advance = function () {
+ var prev = this.peek;
+ if (this.index < this.tokens.length - 1) {
+ // Note: there is always an EOF token at the end
+ 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._consumeExpansion = function (token) {
+ var switchValue = this._advance();
+ var type = this._advance();
+ var cases = [];
+ // read =
+ while (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_CASE_VALUE) {
+ var expCase = this._parseExpansionCase();
+ if (lang_1.isBlank(expCase))
+ return; // error
+ cases.push(expCase);
+ }
+ // read the final }
+ if (this.peek.type !== html_lexer_1.HtmlTokenType.EXPANSION_FORM_END) {
+ this.errors.push(HtmlTreeError.create(null, this.peek.sourceSpan, "Invalid expansion form. Missing '}'."));
+ return;
+ }
+ this._advance();
+ var mainSourceSpan = new parse_util_1.ParseSourceSpan(token.sourceSpan.start, this.peek.sourceSpan.end);
+ this._addToParent(new html_ast_1.HtmlExpansionAst(switchValue.parts[0], type.parts[0], cases, mainSourceSpan, switchValue.sourceSpan));
+ };
+ TreeBuilder.prototype._parseExpansionCase = function () {
+ var value = this._advance();
+ // read {
+ if (this.peek.type !== html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START) {
+ this.errors.push(HtmlTreeError.create(null, this.peek.sourceSpan, "Invalid expansion form. Missing '{'.,"));
+ return null;
+ }
+ // read until }
+ var start = this._advance();
+ var exp = this._collectExpansionExpTokens(start);
+ if (lang_1.isBlank(exp))
+ return null;
+ var end = this._advance();
+ exp.push(new html_lexer_1.HtmlToken(html_lexer_1.HtmlTokenType.EOF, [], end.sourceSpan));
+ // parse everything in between { and }
+ var parsedExp = new TreeBuilder(exp).build();
+ if (parsedExp.errors.length > 0) {
+ this.errors = this.errors.concat(parsedExp.errors);
+ return null;
+ }
+ var sourceSpan = new parse_util_1.ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end);
+ var expSourceSpan = new parse_util_1.ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end);
+ return new html_ast_1.HtmlExpansionCaseAst(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan);
+ };
+ TreeBuilder.prototype._collectExpansionExpTokens = function (start) {
+ var exp = [];
+ var expansionFormStack = [html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START];
+ while (true) {
+ if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_FORM_START ||
+ this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START) {
+ expansionFormStack.push(this.peek.type);
+ }
+ if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_END) {
+ if (lastOnStack(expansionFormStack, html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START)) {
+ expansionFormStack.pop();
+ if (expansionFormStack.length == 0)
+ return exp;
+ }
+ else {
+ this.errors.push(HtmlTreeError.create(null, start.sourceSpan, "Invalid expansion form. Missing '}'."));
+ return null;
+ }
+ }
+ if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_FORM_END) {
+ if (lastOnStack(expansionFormStack, html_lexer_1.HtmlTokenType.EXPANSION_FORM_START)) {
+ expansionFormStack.pop();
+ }
+ else {
+ this.errors.push(HtmlTreeError.create(null, start.sourceSpan, "Invalid expansion form. Missing '}'."));
+ return null;
+ }
+ }
+ if (this.peek.type === html_lexer_1.HtmlTokenType.EOF) {
+ this.errors.push(HtmlTreeError.create(null, start.sourceSpan, "Invalid expansion form. Missing '}'."));
+ return null;
+ }
+ exp.push(this._advance());
+ }
+ };
+ 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;
+ // Note: There could have been a tokenizer error
+ // so that we don't get a token for the end tag...
+ 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);
+ }
+ function lastOnStack(stack, element) {
+ return stack.length > 0 && stack[stack.length - 1] === element;
+ }
+ //# sourceMappingURL=html_parser.js.map
+
+/***/ },
+/* 92 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var core_1 = __webpack_require__(1);
+ var core_private_1 = __webpack_require__(13);
+ var lang_1 = __webpack_require__(3);
+ var exceptions_1 = __webpack_require__(8);
+ function _isPipeMetadata(type) {
+ return type instanceof core_1.PipeMetadata;
+ }
+ var PipeResolver = (function () {
+ function PipeResolver(_reflector) {
+ if (lang_1.isPresent(_reflector)) {
+ this._reflector = _reflector;
+ }
+ else {
+ this._reflector = core_1.reflector;
+ }
+ }
+ /**
+ * Return {@link PipeMetadata} for a given `Type`.
+ */
+ PipeResolver.prototype.resolve = function (type) {
+ var metas = this._reflector.annotations(core_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.decorators = [
+ { type: core_1.Injectable },
+ ];
+ PipeResolver.ctorParameters = [
+ { type: core_private_1.ReflectorReader, },
+ ];
+ return PipeResolver;
+ }());
+ exports.PipeResolver = PipeResolver;
+ exports.CODEGEN_PIPE_RESOLVER = new PipeResolver(core_1.reflector);
+ //# sourceMappingURL=pipe_resolver.js.map
+
+/***/ },
+/* 93 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var collection_1 = __webpack_require__(7);
+ var lang_1 = __webpack_require__(3);
+ var exceptions_1 = __webpack_require__(8);
+ var _EMPTY_ATTR_VALUE = '';
+ // TODO: Can't use `const` here as
+ // in Dart this is not transpiled into `final` yet...
+ var _SELECTOR_REGEXP = lang_1.RegExpWrapper.create('(\\:not\\()|' +
+ '([-\\w]+)|' +
+ '(?:\\.([-\\w]+))|' +
+ '(?:\\[([-\\w*]+)(?:=([^\\]]*))?\\])|' +
+ '(\\))|' +
+ '(\\s*,\\s*)'); // ","
+ /**
+ * A css selector contains an element name,
+ * css classes and attribute/value pairs with the purpose
+ * of selecting subsets out of them.
+ */
+ 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;
+ };
+ /** Gets a template string for an element that matches the selector. */
+ 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;
+ /**
+ * Reads a list of CssSelectors and allows to calculate which ones
+ * are contained in a given 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);
+ }
+ };
+ /**
+ * Add an object that can be found later on by calling `match`.
+ * @param cssSelector A css selector
+ * @param callbackCtxt An opaque object that will be given to the callback of the `match` function
+ */
+ 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;
+ };
+ /**
+ * Find the objects that have been added via `addSelectable`
+ * whose css selector is contained in the given css selector.
+ * @param cssSelector A css selector
+ * @param matchedCallback This callback will be called with the object handed into `addSelectable`
+ * @return boolean true if a match was found
+ */
+ 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;
+ };
+ /** @internal */
+ 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;
+ };
+ /** @internal */
+ SelectorMatcher.prototype._matchPartial = function (map, name, cssSelector, matchedCallback /*: (c: CssSelector, a: any) => void*/) {
+ if (lang_1.isBlank(map) || lang_1.isBlank(name)) {
+ return false;
+ }
+ var nestedSelector = map.get(name);
+ if (lang_1.isBlank(nestedSelector)) {
+ return false;
+ }
+ // TODO(perf): get rid of recursion and measure again
+ // TODO(perf): don't pass the whole selector into the recursion,
+ // but only the not processed parts
+ 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;
+ // Store context to pass back selector and context when a selector is matched
+ 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;
+ //# sourceMappingURL=selector.js.map
+
+/***/ },
+/* 94 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ // Some of the code comes from WebComponents.JS
+ // https://github.com/webcomponents/webcomponentsjs/blob/master/src/HTMLImports/path.js
+ var lang_1 = __webpack_require__(3);
+ 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;
+ /**
+ * Rewrites stylesheets by resolving and removing the @import urls that
+ * are either relative or don't have a `package:` scheme
+ */
+ 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)) {
+ // Do not attempt to resolve non-package absolute URLs with URI scheme
+ 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;
+ // TODO: can't use /^[^:/?#.]+:/g due to clang-format bug:
+ // https://github.com/angular/angular/issues/4596
+ var _urlWithSchemaRe = /^([a-zA-Z\-\+\.]+):/g;
+ //# sourceMappingURL=style_url_resolver.js.map
+
+/***/ },
+/* 95 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ 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 core_1 = __webpack_require__(1);
+ var core_private_1 = __webpack_require__(13);
+ var collection_1 = __webpack_require__(7);
+ var lang_1 = __webpack_require__(3);
+ var exceptions_1 = __webpack_require__(8);
+ var ast_1 = __webpack_require__(165);
+ var parser_1 = __webpack_require__(167);
+ var html_parser_1 = __webpack_require__(91);
+ var html_tags_1 = __webpack_require__(54);
+ var parse_util_1 = __webpack_require__(56);
+ var template_ast_1 = __webpack_require__(24);
+ var selector_1 = __webpack_require__(93);
+ var element_schema_registry_1 = __webpack_require__(57);
+ var template_preparser_1 = __webpack_require__(173);
+ var style_url_resolver_1 = __webpack_require__(94);
+ var html_ast_1 = __webpack_require__(90);
+ var util_1 = __webpack_require__(25);
+ var identifiers_1 = __webpack_require__(17);
+ var provider_parser_1 = __webpack_require__(371);
+ // Group 1 = "bind-"
+ // Group 2 = "var-"
+ // Group 3 = "let-"
+ // Group 4 = "ref-/#"
+ // Group 5 = "on-"
+ // Group 6 = "bindon-"
+ // Group 7 = the identifier after "bind-", "var-/#", or "on-"
+ // Group 8 = identifier inside [()]
+ // Group 9 = identifier inside []
+ // Group 10 = identifier inside ()
+ var BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(var-)|(let-)|(ref-|#)|(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];
+ /**
+ * Provides an array of {@link TemplateAstVisitor}s which will be used to transform
+ * parsed templates before compilation is invoked, allowing custom expression syntax
+ * and other advanced transformations.
+ *
+ * This is currently an internal-only feature and not meant for general use.
+ */
+ exports.TEMPLATE_TRANSFORMS = new core_1.OpaqueToken('TemplateTransforms');
+ var TemplateParseError = (function (_super) {
+ __extends(TemplateParseError, _super);
+ function TemplateParseError(message, span, level) {
+ _super.call(this, span, message, level);
+ }
+ return TemplateParseError;
+ }(parse_util_1.ParseError));
+ exports.TemplateParseError = TemplateParseError;
+ var TemplateParseResult = (function () {
+ function TemplateParseResult(templateAst, errors) {
+ this.templateAst = templateAst;
+ this.errors = errors;
+ }
+ return TemplateParseResult;
+ }());
+ exports.TemplateParseResult = TemplateParseResult;
+ var TemplateParser = (function () {
+ function TemplateParser(_exprParser, _schemaRegistry, _htmlParser, _console, transforms) {
+ this._exprParser = _exprParser;
+ this._schemaRegistry = _schemaRegistry;
+ this._htmlParser = _htmlParser;
+ this._console = _console;
+ this.transforms = transforms;
+ }
+ TemplateParser.prototype.parse = function (component, template, directives, pipes, templateUrl) {
+ var result = this.tryParse(component, template, directives, pipes, templateUrl);
+ var warnings = result.errors.filter(function (error) { return error.level === parse_util_1.ParseErrorLevel.WARNING; });
+ var errors = result.errors.filter(function (error) { return error.level === parse_util_1.ParseErrorLevel.FATAL; });
+ if (warnings.length > 0) {
+ this._console.warn("Template parse warnings:\n" + warnings.join('\n'));
+ }
+ if (errors.length > 0) {
+ var errorString = errors.join('\n');
+ throw new exceptions_1.BaseException("Template parse errors:\n" + errorString);
+ }
+ return result.templateAst;
+ };
+ TemplateParser.prototype.tryParse = function (component, template, directives, pipes, templateUrl) {
+ var htmlAstWithErrors = this._htmlParser.parse(template, templateUrl);
+ var errors = htmlAstWithErrors.errors;
+ var result;
+ if (htmlAstWithErrors.rootNodes.length > 0) {
+ var uniqDirectives = removeDuplicates(directives);
+ var uniqPipes = removeDuplicates(pipes);
+ var providerViewContext = new provider_parser_1.ProviderViewContext(component, htmlAstWithErrors.rootNodes[0].sourceSpan);
+ var parseVisitor = new TemplateParseVisitor(providerViewContext, uniqDirectives, uniqPipes, this._exprParser, this._schemaRegistry);
+ result = html_ast_1.htmlVisitAll(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT);
+ errors = errors.concat(parseVisitor.errors).concat(providerViewContext.errors);
+ }
+ else {
+ result = [];
+ }
+ if (errors.length > 0) {
+ return new TemplateParseResult(result, errors);
+ }
+ if (lang_1.isPresent(this.transforms)) {
+ this.transforms.forEach(function (transform) { result = template_ast_1.templateVisitAll(transform, result); });
+ }
+ return new TemplateParseResult(result, errors);
+ };
+ TemplateParser.decorators = [
+ { type: core_1.Injectable },
+ ];
+ TemplateParser.ctorParameters = [
+ { type: parser_1.Parser, },
+ { type: element_schema_registry_1.ElementSchemaRegistry, },
+ { type: html_parser_1.HtmlParser, },
+ { type: core_private_1.Console, },
+ { type: undefined, decorators: [{ type: core_1.Optional }, { type: core_1.Inject, args: [exports.TEMPLATE_TRANSFORMS,] },] },
+ ];
+ return TemplateParser;
+ }());
+ exports.TemplateParser = TemplateParser;
+ var TemplateParseVisitor = (function () {
+ function TemplateParseVisitor(providerViewContext, directives, pipes, _exprParser, _schemaRegistry) {
+ var _this = this;
+ this.providerViewContext = providerViewContext;
+ 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, level) {
+ if (level === void 0) { level = parse_util_1.ParseErrorLevel.FATAL; }
+ this.errors.push(new TemplateParseError(message, sourceSpan, level));
+ };
+ TemplateParseVisitor.prototype._parseInterpolation = function (value, sourceSpan) {
+ var sourceInfo = sourceSpan.start.toString();
+ try {
+ var ast = this._exprParser.parseInterpolation(value, sourceInfo);
+ this._checkPipes(ast, sourceSpan);
+ if (lang_1.isPresent(ast) &&
+ ast.ast.expressions.length > core_private_1.MAX_INTERPOLATION_VALUES) {
+ throw new exceptions_1.BaseException("Only support at most " + core_private_1.MAX_INTERPOLATION_VALUES + " interpolation values!");
+ }
+ 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 bindingsResult = this._exprParser.parseTemplateBindings(value, sourceInfo);
+ bindingsResult.templateBindings.forEach(function (binding) {
+ if (lang_1.isPresent(binding.expression)) {
+ _this._checkPipes(binding.expression, sourceSpan);
+ }
+ });
+ bindingsResult.warnings.forEach(function (warning) { _this._reportError(warning, sourceSpan, parse_util_1.ParseErrorLevel.WARNING); });
+ return bindingsResult.templateBindings;
+ }
+ 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.visitExpansion = function (ast, context) { return null; };
+ TemplateParseVisitor.prototype.visitExpansionCase = function (ast, context) { return null; };
+ TemplateParseVisitor.prototype.visitText = function (ast, parent) {
+ var ngContentIndex = parent.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, parent) {
+ 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) {
+ // Skipping