motion
Version:
motion - moving development forward
1,604 lines (1,319 loc) • 410 kB
JavaScript
webpackJsonp([1],[
/* 0 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _regeneratorRuntime = __webpack_require__(75)['default'];
var _Object$assign = __webpack_require__(89)['default'];
var _Promise = __webpack_require__(4)['default'];
var _Object$freeze = __webpack_require__(94)['default'];
var _interopRequireDefault = __webpack_require__(1)['default'];
__webpack_require__(98);
__webpack_require__(99);
var _hashSum = __webpack_require__(100);
var _hashSum2 = _interopRequireDefault(_hashSum);
var _eventEmitter = __webpack_require__(60);
var _eventEmitter2 = _interopRequireDefault(_eventEmitter);
var _react = __webpack_require__(101);
var _react2 = _interopRequireDefault(_react);
var _reactDom = __webpack_require__(257);
var _reactDom2 = _interopRequireDefault(_reactDom);
var _libReactRaf = __webpack_require__(258);
var _libReactRaf2 = _interopRequireDefault(_libReactRaf);
var _motionRadium = __webpack_require__(261);
var _vendorRegenerator = __webpack_require__(262);
var _vendorRegenerator2 = _interopRequireDefault(_vendorRegenerator);
__webpack_require__(263);
__webpack_require__(264);
__webpack_require__(293);
__webpack_require__(298);
var _internal = __webpack_require__(304);
var _internal2 = _interopRequireDefault(_internal);
var _shimMotion = __webpack_require__(305);
var _shimMotion2 = _interopRequireDefault(_shimMotion);
var _createComponent = __webpack_require__(306);
var _createComponent2 = _interopRequireDefault(_createComponent);
var _libRange = __webpack_require__(334);
var _libRange2 = _interopRequireDefault(_libRange);
var _libIff = __webpack_require__(337);
var _libIff2 = _interopRequireDefault(_libIff);
var _libRouter = __webpack_require__(338);
var _libRouter2 = _interopRequireDefault(_libRouter);
var _libRequireFactory = __webpack_require__(347);
var _libRequireFactory2 = _interopRequireDefault(_libRequireFactory);
var _libStaticStyles = __webpack_require__(348);
var _libStaticStyles2 = _interopRequireDefault(_libStaticStyles);
var _libSafeRun = __webpack_require__(349);
var _libSafeRun2 = _interopRequireDefault(_libSafeRun);
var _libReportError = __webpack_require__(299);
var _libReportError2 = _interopRequireDefault(_libReportError);
var _libArrayDiff = __webpack_require__(350);
var _libArrayDiff2 = _interopRequireDefault(_libArrayDiff);
var _tagCreateElement = __webpack_require__(317);
var _tagCreateElement2 = _interopRequireDefault(_tagCreateElement);
var _viewsErrorDefinedTwice = __webpack_require__(351);
var _viewsErrorDefinedTwice2 = _interopRequireDefault(_viewsErrorDefinedTwice);
var _viewsNotFound = __webpack_require__(352);
var _viewsNotFound2 = _interopRequireDefault(_viewsNotFound);
var _viewsLastWorkingMain = __webpack_require__(353);
var _viewsLastWorkingMain2 = _interopRequireDefault(_viewsLastWorkingMain);
var _viewsMain = __webpack_require__(354);
var _viewsMain2 = _interopRequireDefault(_viewsMain);
var folderFromFile = function folderFromFile(filePath) {
return filePath.indexOf('/') < 0 ? '' : filePath.substring(0, filePath.lastIndexOf('/'));
};
/*
Welcome to Motion!
This file deals mostly with setting up Motion,
loading views and files, rendering,
and exposing the public Motion functions
*/
var Motion = {
// set up motion shims
init: function init() {
var originalWarn = console.warn;
// filter radium warnings for now
console.warn = function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (args[0] && args[0].indexOf('Unsupported CSS property "display') == 0) return;
if (args[0] && args[0].indexOf('Radium:') == 0) return;
originalWarn.call.apply(originalWarn, [console].concat(args));
};
// prevent breaking when writing $ styles in auto-save mode
if (true) {
root.$ = null;
}
if (false) {
_libReactRaf2['default'].inject();
}
// shims
root.React = _react2['default'];
root.ReactDOM = _reactDom2['default'];
root.global = root; // for radium
root.regeneratorRuntime = _regeneratorRuntime;
root.on = on;
root.fetch.json = function (a, b, c) {
return fetch(a, b, c).then(function (res) {
return res.json();
});
};
root.require = (0, _libRequireFactory2['default'])(root);
},
// run an app
run: function run(name, _opts, afterRenderCb) {
// default opts
var opts = _Object$assign({
node: '_motionapp'
}, _opts);
var ID = '' + Math.random();
// init require
root.require.setApp(name);
// init Internal
var Internal = _internal2['default'].init(ID);
root._Motion = Internal;
// tools bridge
var Tools = root._DT;
if (!(false) && Tools) {
// pass data from tools to internal
Tools.emitter.on('editor:state', function () {
Internal.editor = Tools.editor;
});
}
// setup shims that use Internal
(0, _shimMotion2['default'])(Internal, Tools);
var LastWorkingMain = (0, _viewsLastWorkingMain2['default'])(Internal);
var emitter = (0, _eventEmitter2['default'])({});
//
// begin the motionception
//
var Motion = {
start: function start() {
_libRouter2['default'].init(ID, { onChange: Motion.render });
Motion.render();
},
views: {},
// beta
_onViewInstance: function _onViewInstance(name, decorator) {
return !decorator ? Internal.instanceDecorator.all = name : Internal.instanceDecorator[name] = decorator;
},
// decorate a view instance
decorateView: function decorateView(name, decorator) {
return !decorator ? Internal.viewDecorator.all = name : Internal.viewDecorator[name] = decorator;
},
keyframes: _motionRadium.keyframes,
router: _libRouter2['default'],
// async functions before loading app
preloaders: [],
preload: function preload(fn) {
Motion.preloaders.push(fn);
},
render: function render() {
if (Motion.preloaders.length) {
return _Promise.all(Motion.preloaders.map(function (loader) {
return typeof loader == 'function' ? loader() : loader;
})).then(run);
} else run();
function run() {
Internal.isRendering++;
if (Internal.isRendering > 3) return;
// find Main
var Main = Internal.views.Main && Internal.views.Main.component;
if (!Main && Internal.lastWorkingRenders.Main) Main = LastWorkingMain;
if (!Main) Main = _viewsMain2['default'];
// server render
if (!opts.node) {
Motion.renderedToString = _react2['default'].renderToString(_react2['default'].createElement(Main, null));
afterRenderCb && afterRenderCb(Motion.renderedToString);
}
// browser render
else {
if (window.__isDevingDevTools) opts.node = '_motiondevtools';
_reactDom2['default'].render(_react2['default'].createElement(
_motionRadium.StyleRoot,
{ className: '__motionRoot' },
_react2['default'].createElement(Main, null)
), document.getElementById(opts.node));
}
Internal.lastWorkingViews.Main = Main;
emitter.emit('render:done');
Internal.isRendering = 0;
}
},
// motion events
on: function on(name, cb) {
emitter.on(name, cb);
},
// for use in jsx
debug: function debug() {
debugger;
},
view: function view(name, body) {
var comp = function comp(opts) {
return (0, _createComponent2['default'])(Motion, Internal, name, body, opts);
};
if (false) return setView(name, comp());
var hash = (0, _hashSum2['default'])(body);
function setView(name, component) {
Internal.views[name] = { hash: hash, component: component, file: Internal.currentHotFile };
Motion.views[name] = component;
}
// set view in cache
var viewsInFile = Internal.viewsInFile[Internal.currentHotFile];
if (viewsInFile) viewsInFile.push(name);
// if new
if (!Internal.views[name]) {
setView(name, comp({ hash: hash, changed: true }));
Internal.changedViews.push(name);
return;
}
// dev stuff
if (true) {
if (!Internal.mountedViews[name]) Internal.mountedViews[name] = [];
// not new
// if defined twice during first run
if (Internal.firstRender && !Internal.runtimeErrors) {
Internal.views[name] = (0, _viewsErrorDefinedTwice2['default'])(name);
throw new Error('Defined a view twice: ' + name);
}
// if unchanged
if (Internal.views[name].hash == hash) {
setView(name, comp({ hash: hash, unchanged: true }));
return;
}
// changed
setView(name, comp({ hash: hash, changed: true }));
Internal.changedViews.push(name);
// this resets tool errors
window.onViewLoaded();
}
},
getView: function getView(name) {
return Motion.views[name] || (0, _viewsNotFound2['default'])(name);
},
//
// private API (TODO move this)
//
// styles, TODO: move to Internal
staticStyles: _libStaticStyles2['default'],
viewRoots: {},
styleClasses: {},
styleObjects: {},
// load a file
file: function file(_file, run) {
if (true) {
Internal.viewsInFile[_file] = [];
Internal.changedViews = [];
Internal.currentHotFile = _file;
Internal.caughtRuntimeErrors = 0;
// send runtime success before render
Tools && Tools.emitter.emit('runtime:success');
Internal.lastFileLoad = Date.now();
}
// set up require for file that resolves relative paths
var fileFolder = folderFromFile(_file);
var scopedRequire = function scopedRequire(pkg) {
return root.require(pkg, fileFolder);
};
// run file!
run(scopedRequire);
if (true) {
var cached = Internal.viewCache[_file] || Internal.viewsInFile[_file];
var views = Internal.viewsInFile[_file];
// views.map(view => {
// Motion.timer.time(view, Motion.timer.lastMsgInfo)
// })
// remove Internal.viewsInFile that werent made
var removedViews = (0, _libArrayDiff2['default'])(cached, views);
removedViews.map(Internal.removeView);
Internal.currentHotFile = null;
Internal.viewCache[_file] = Internal.viewsInFile[_file];
if (Internal.firstRender) return;
var isNewFile = !cached.length;
var addedViews = (0, _libArrayDiff2['default'])(views, cached);
// safe re-render
if (isNewFile || removedViews.length || addedViews.length) return Motion.render();
// if outside of views the FILE changed, refresh all views in file
if (!Internal.changedViews.length && Internal.fileChanged[_file]) {
Internal.changedViews = Internal.viewsInFile[_file];
}
Internal.changedViews.forEach(function (name) {
if (!Internal.mountedViews[name]) return;
Internal.mountedViews[name] = Internal.mountedViews[name].map(function (view) {
if (view.isMounted()) {
view.forceUpdate();
return view;
}
}).filter(function (x) {
return !!x;
});
emitter.emit('render:done');
// views.map(view => Motion.timer.done(view))
// Motion.timer.lastMsgInfo = null
});
}
},
removeFile: function removeFile(file) {
var viewsFromFile = Internal.viewsInFile[file];
viewsFromFile.forEach(Internal.removeView);
delete Internal.viewCache[file];
delete Internal.viewsInFile[file];
},
deleteFile: function deleteFile(name) {
var viewsInFile = Internal.viewsInFile[name];
if (viewsInFile) {
Internal.viewsInFile[name].map(Internal.removeView);
delete Internal.viewsInFile[name];
}
delete Internal.viewCache[name];
Motion.render();
},
routeMatch: function routeMatch(path) {
_libRouter2['default'].add(path);
return _libRouter2['default'].isActive(path);
},
routeParams: function routeParams(path) {
return _libRouter2['default'].getParams(path);
},
inspect: function inspect(path, cb) {
Internal.inspector[path] = cb;
Internal.setInspector(path);
},
reportError: _libReportError2['default'],
range: _libRange2['default'],
iff: _libIff2['default'],
noop: function noop() {}
};
// view shim (TODO freeze)
root.view = {
el: function el(info, props) {
if (typeof info[0] === 'string' && info[0].charAt(0).toUpperCase() === info[0].charAt(0)) {
return _react2['default'].createElement(Motion.getView(info[0]), props);
}
for (var _len2 = arguments.length, children = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
children[_key2 - 2] = arguments[_key2];
}
return _react2['default'].createElement.apply(_react2['default'], [info[0], props].concat(children));
}
};
// prevent overwriting
_Object$freeze(Motion);
// if given an app, run it
if (name && root.exports[name]) {
var app = root.exports[name];
app(Motion, opts);
}
return Motion;
}
};
root.exports.motion = Motion;
/***/ },
/* 1 */,
/* 2 */,
/* 3 */,
/* 4 */,
/* 5 */,
/* 6 */,
/* 7 */,
/* 8 */,
/* 9 */,
/* 10 */,
/* 11 */,
/* 12 */,
/* 13 */,
/* 14 */,
/* 15 */,
/* 16 */,
/* 17 */,
/* 18 */,
/* 19 */,
/* 20 */,
/* 21 */,
/* 22 */,
/* 23 */,
/* 24 */,
/* 25 */,
/* 26 */,
/* 27 */,
/* 28 */,
/* 29 */,
/* 30 */,
/* 31 */,
/* 32 */,
/* 33 */,
/* 34 */,
/* 35 */,
/* 36 */,
/* 37 */,
/* 38 */,
/* 39 */,
/* 40 */,
/* 41 */,
/* 42 */,
/* 43 */,
/* 44 */,
/* 45 */,
/* 46 */,
/* 47 */,
/* 48 */,
/* 49 */,
/* 50 */,
/* 51 */,
/* 52 */,
/* 53 */,
/* 54 */,
/* 55 */,
/* 56 */,
/* 57 */,
/* 58 */,
/* 59 */,
/* 60 */,
/* 61 */,
/* 62 */,
/* 63 */,
/* 64 */,
/* 65 */,
/* 66 */,
/* 67 */,
/* 68 */,
/* 69 */,
/* 70 */,
/* 71 */,
/* 72 */,
/* 73 */,
/* 74 */,
/* 75 */
/***/ function(module, exports, __webpack_require__) {
// This method of obtaining a reference to the global object needs to be
// kept identical to the way it is obtained in runtime.js
var g =
typeof global === "object" ? global :
typeof window === "object" ? window :
typeof self === "object" ? self : this;
// Use `getOwnPropertyNames` because not all browsers support calling
// `hasOwnProperty` on the global `self` object in a worker. See #183.
var hadRuntime = g.regeneratorRuntime &&
Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
// Save the old regeneratorRuntime in case it needs to be restored later.
var oldRuntime = hadRuntime && g.regeneratorRuntime;
// Force reevalutation of runtime.js.
g.regeneratorRuntime = undefined;
module.exports = __webpack_require__(76);
if (hadRuntime) {
// Restore the original runtime.
g.regeneratorRuntime = oldRuntime;
} else {
// Remove the global property added by runtime.js.
try {
delete g.regeneratorRuntime;
} catch(e) {
g.regeneratorRuntime = undefined;
}
}
module.exports = { "default": module.exports, __esModule: true };
/***/ },
/* 76 */
/***/ function(module, exports, __webpack_require__) {
/**
* Copyright (c) 2014, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* https://raw.github.com/facebook/regenerator/master/LICENSE file. An
* additional grant of patent rights can be found in the PATENTS file in
* the same directory.
*/
"use strict";
var _Symbol = __webpack_require__(77)["default"];
var _Object$create = __webpack_require__(84)["default"];
var _Object$setPrototypeOf = __webpack_require__(86)["default"];
var _Promise = __webpack_require__(4)["default"];
!(function (global) {
"use strict";
var hasOwn = Object.prototype.hasOwnProperty;
var undefined; // More compressible than void 0.
var $Symbol = typeof _Symbol === "function" ? _Symbol : {};
var iteratorSymbol = $Symbol.iterator || "@@iterator";
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
var inModule = typeof module === "object";
var runtime = global.regeneratorRuntime;
if (runtime) {
if (inModule) {
// If regeneratorRuntime is defined globally and we're in a module,
// make the exports object identical to regeneratorRuntime.
module.exports = runtime;
}
// Don't bother evaluating the rest of this file if the runtime was
// already defined globally.
return;
}
// Define the runtime globally (as expected by generated code) as either
// module.exports (if we're in a module) or a new, empty object.
runtime = global.regeneratorRuntime = inModule ? module.exports : {};
function wrap(innerFn, outerFn, self, tryLocsList) {
// If outerFn provided, then outerFn.prototype instanceof Generator.
var generator = _Object$create((outerFn || Generator).prototype);
var context = new Context(tryLocsList || []);
// The ._invoke method unifies the implementations of the .next,
// .throw, and .return methods.
generator._invoke = makeInvokeMethod(innerFn, self, context);
return generator;
}
runtime.wrap = wrap;
// Try/catch helper to minimize deoptimizations. Returns a completion
// record like context.tryEntries[i].completion. This interface could
// have been (and was previously) designed to take a closure to be
// invoked without arguments, but in all the cases we care about we
// already have an existing method we want to call, so there's no need
// to create a new function object. We can even get away with assuming
// the method takes exactly one argument, since that happens to be true
// in every case, so we don't have to touch the arguments object. The
// only additional allocation required is the completion record, which
// has a stable shape and so hopefully should be cheap to allocate.
function tryCatch(fn, obj, arg) {
try {
return { type: "normal", arg: fn.call(obj, arg) };
} catch (err) {
return { type: "throw", arg: err };
}
}
var GenStateSuspendedStart = "suspendedStart";
var GenStateSuspendedYield = "suspendedYield";
var GenStateExecuting = "executing";
var GenStateCompleted = "completed";
// Returning this object from the innerFn has the same effect as
// breaking out of the dispatch switch statement.
var ContinueSentinel = {};
// Dummy constructor functions that we use as the .constructor and
// .constructor.prototype properties for functions that return Generator
// objects. For full spec compliance, you may wish to configure your
// minifier not to mangle the names of these two functions.
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype;
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
GeneratorFunctionPrototype.constructor = GeneratorFunction;
GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
// Helper for defining the .next, .throw, and .return methods of the
// Iterator interface in terms of a single ._invoke method.
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
prototype[method] = function (arg) {
return this._invoke(method, arg);
};
});
}
runtime.isGeneratorFunction = function (genFun) {
var ctor = typeof genFun === "function" && genFun.constructor;
return ctor ? ctor === GeneratorFunction ||
// For the native GeneratorFunction constructor, the best we can
// do is to check its .name property.
(ctor.displayName || ctor.name) === "GeneratorFunction" : false;
};
runtime.mark = function (genFun) {
if (_Object$setPrototypeOf) {
_Object$setPrototypeOf(genFun, GeneratorFunctionPrototype);
} else {
genFun.__proto__ = GeneratorFunctionPrototype;
if (!(toStringTagSymbol in genFun)) {
genFun[toStringTagSymbol] = "GeneratorFunction";
}
}
genFun.prototype = _Object$create(Gp);
return genFun;
};
// Within the body of any async function, `await x` is transformed to
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
// `value instanceof AwaitArgument` to determine if the yielded value is
// meant to be awaited. Some may consider the name of this method too
// cutesy, but they are curmudgeons.
runtime.awrap = function (arg) {
return new AwaitArgument(arg);
};
function AwaitArgument(arg) {
this.arg = arg;
}
function AsyncIterator(generator) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if (record.type === "throw") {
reject(record.arg);
} else {
var result = record.arg;
var value = result.value;
if (value instanceof AwaitArgument) {
return _Promise.resolve(value.arg).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
});
}
return _Promise.resolve(value).then(function (unwrapped) {
// When a yielded Promise is resolved, its final value becomes
// the .value of the Promise<{value,done}> result for the
// current iteration. If the Promise is rejected, however, the
// result for this iteration will be rejected with the same
// reason. Note that rejections of yielded Promises are not
// thrown back into the generator function, as is the case
// when an awaited Promise is rejected. This difference in
// behavior between yield and await is important, because it
// allows the consumer to decide what to do with the yielded
// rejection (swallow it and continue, manually .throw it back
// into the generator, abandon iteration, whatever). With
// await, by contrast, there is no opportunity to examine the
// rejection reason outside the generator function, so the
// only option is to throw it from the await expression, and
// let the generator function handle the exception.
result.value = unwrapped;
resolve(result);
}, reject);
}
}
if (typeof process === "object" && process.domain) {
invoke = process.domain.bind(invoke);
}
var previousPromise;
function enqueue(method, arg) {
function callInvokeWithMethodAndArg() {
return new _Promise(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise =
// If enqueue has been called before, then we want to wait until
// all previous Promises have been resolved before calling invoke,
// so that results are always delivered in the correct order. If
// enqueue has not been called before, then it is important to
// call invoke immediately, without waiting on a callback to fire,
// so that the async generator function has the opportunity to do
// any necessary setup in a predictable way. This predictability
// is why the Promise constructor synchronously invokes its
// executor callback, and why async functions synchronously
// execute code before the first await. Since we implement simple
// async functions in terms of async generators, it is especially
// important to get this right, even though it requires care.
previousPromise ? previousPromise.then(callInvokeWithMethodAndArg,
// Avoid propagating failures to Promises returned by later
// invocations of the iterator.
callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
// Define the unified helper method that is used to implement .next,
// .throw, and .return (see defineIteratorMethods).
this._invoke = enqueue;
}
defineIteratorMethods(AsyncIterator.prototype);
// Note that simple async functions are implemented on top of
// AsyncIterator objects; they just return a Promise for the value of
// the final result produced by the iterator.
runtime.async = function (innerFn, outerFn, self, tryLocsList) {
var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
return runtime.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
: iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
};
function makeInvokeMethod(innerFn, self, context) {
var state = GenStateSuspendedStart;
return function invoke(method, arg) {
if (state === GenStateExecuting) {
throw new Error("Generator is already running");
}
if (state === GenStateCompleted) {
if (method === "throw") {
throw arg;
}
// Be forgiving, per 25.3.3.3.3 of the spec:
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
return doneResult();
}
while (true) {
var delegate = context.delegate;
if (delegate) {
if (method === "return" || method === "throw" && delegate.iterator[method] === undefined) {
// A return or throw (when the delegate iterator has no throw
// method) always terminates the yield* loop.
context.delegate = null;
// If the delegate iterator has a return method, give it a
// chance to clean up.
var returnMethod = delegate.iterator["return"];
if (returnMethod) {
var record = tryCatch(returnMethod, delegate.iterator, arg);
if (record.type === "throw") {
// If the return method threw an exception, let that
// exception prevail over the original return or throw.
method = "throw";
arg = record.arg;
continue;
}
}
if (method === "return") {
// Continue with the outer return, now that the delegate
// iterator has been terminated.
continue;
}
}
var record = tryCatch(delegate.iterator[method], delegate.iterator, arg);
if (record.type === "throw") {
context.delegate = null;
// Like returning generator.throw(uncaught), but without the
// overhead of an extra function call.
method = "throw";
arg = record.arg;
continue;
}
// Delegate generator ran and handled its own exceptions so
// regardless of what the method was, we continue as if it is
// "next" with an undefined arg.
method = "next";
arg = undefined;
var info = record.arg;
if (info.done) {
context[delegate.resultName] = info.value;
context.next = delegate.nextLoc;
} else {
state = GenStateSuspendedYield;
return info;
}
context.delegate = null;
}
if (method === "next") {
if (state === GenStateSuspendedYield) {
context.sent = arg;
} else {
context.sent = undefined;
}
} else if (method === "throw") {
if (state === GenStateSuspendedStart) {
state = GenStateCompleted;
throw arg;
}
if (context.dispatchException(arg)) {
// If the dispatched exception was caught by a catch block,
// then let that catch block handle the exception normally.
method = "next";
arg = undefined;
}
} else if (method === "return") {
context.abrupt("return", arg);
}
state = GenStateExecuting;
var record = tryCatch(innerFn, self, context);
if (record.type === "normal") {
// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
state = context.done ? GenStateCompleted : GenStateSuspendedYield;
var info = {
value: record.arg,
done: context.done
};
if (record.arg === ContinueSentinel) {
if (context.delegate && method === "next") {
// Deliberately forget the last sent value so that we don't
// accidentally pass it on to the delegate.
arg = undefined;
}
} else {
return info;
}
} else if (record.type === "throw") {
state = GenStateCompleted;
// Dispatch the exception by looping back around to the
// context.dispatchException(arg) call above.
method = "throw";
arg = record.arg;
}
}
};
}
// Define Generator.prototype.{next,throw,return} in terms of the
// unified ._invoke helper method.
defineIteratorMethods(Gp);
Gp[iteratorSymbol] = function () {
return this;
};
Gp[toStringTagSymbol] = "Generator";
Gp.toString = function () {
return "[object Generator]";
};
function pushTryEntry(locs) {
var entry = { tryLoc: locs[0] };
if (1 in locs) {
entry.catchLoc = locs[1];
}
if (2 in locs) {
entry.finallyLoc = locs[2];
entry.afterLoc = locs[3];
}
this.tryEntries.push(entry);
}
function resetTryEntry(entry) {
var record = entry.completion || {};
record.type = "normal";
delete record.arg;
entry.completion = record;
}
function Context(tryLocsList) {
// The root entry object (effectively a try statement without a catch
// or a finally block) gives us a place to store values thrown from
// locations where there is no enclosing try statement.
this.tryEntries = [{ tryLoc: "root" }];
tryLocsList.forEach(pushTryEntry, this);
this.reset(true);
}
runtime.keys = function (object) {
var keys = [];
for (var key in object) {
keys.push(key);
}
keys.reverse();
// Rather than returning an object with a next method, we keep
// things simple and return the next function itself.
return function next() {
while (keys.length) {
var key = keys.pop();
if (key in object) {
next.value = key;
next.done = false;
return next;
}
}
// To avoid creating an additional object, we just hang the .value
// and .done properties off the next function object itself. This
// also ensures that the minifier will not anonymize the function.
next.done = true;
return next;
};
};
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) {
return iteratorMethod.call(iterable);
}
if (typeof iterable.next === "function") {
return iterable;
}
if (!isNaN(iterable.length)) {
var i = -1,
next = function next() {
while (++i < iterable.length) {
if (hasOwn.call(iterable, i)) {
next.value = iterable[i];
next.done = false;
return next;
}
}
next.value = undefined;
next.done = true;
return next;
};
return next.next = next;
}
}
// Return an iterator with no values.
return { next: doneResult };
}
runtime.values = values;
function doneResult() {
return { value: undefined, done: true };
}
Context.prototype = {
constructor: Context,
reset: function reset(skipTempReset) {
this.prev = 0;
this.next = 0;
this.sent = undefined;
this.done = false;
this.delegate = null;
this.tryEntries.forEach(resetTryEntry);
if (!skipTempReset) {
for (var name in this) {
// Not sure about the optimal order of these conditions:
if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
this[name] = undefined;
}
}
}
},
stop: function stop() {
this.done = true;
var rootEntry = this.tryEntries[0];
var rootRecord = rootEntry.completion;
if (rootRecord.type === "throw") {
throw rootRecord.arg;
}
return this.rval;
},
dispatchException: function dispatchException(exception) {
if (this.done) {
throw exception;
}
var context = this;
function handle(loc, caught) {
record.type = "throw";
record.arg = exception;
context.next = loc;
return !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
var record = entry.completion;
if (entry.tryLoc === "root") {
// Exception thrown outside of any try block that could handle
// it, so set the completion value of the entire function to
// throw the exception.
return handle("end");
}
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc");
var hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
} else if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else if (hasCatch) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
}
} else if (hasFinally) {
if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else {
throw new Error("try statement without catch or finally");
}
}
}
},
abrupt: function abrupt(type, arg) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
var finallyEntry = entry;
break;
}
}
if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
// Ignore the finally entry if control is not jumping to a
// location outside the try/catch block.
finallyEntry = null;
}
var record = finallyEntry ? finallyEntry.completion : {};
record.type = type;
record.arg = arg;
if (finallyEntry) {
this.next = finallyEntry.finallyLoc;
} else {
this.complete(record);
}
return ContinueSentinel;
},
complete: function complete(record, afterLoc) {
if (record.type === "throw") {
throw record.arg;
}
if (record.type === "break" || record.type === "continue") {
this.next = record.arg;
} else if (record.type === "return") {
this.rval = record.arg;
this.next = "end";
} else if (record.type === "normal" && afterLoc) {
this.next = afterLoc;
}
},
finish: function finish(finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) {
this.complete(entry.completion, entry.afterLoc);
resetTryEntry(entry);
return ContinueSentinel;
}
}
},
"catch": function _catch(tryLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc === tryLoc) {
var record = entry.completion;
if (record.type === "throw") {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
}
// The context.catch method must only be called with a location
// argument that corresponds to a known catch block.
throw new Error("illegal catch attempt");
},
delegateYield: function delegateYield(iterable, resultName, nextLoc) {
this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
};
return ContinueSentinel;
}
};
})(
// Among the various tricks for obtaining a reference to the global
// object, this seems to be the most reliable technique that does not
// use indirect eval (which violates Content Security Policy).
typeof global === "object" ? global : typeof window === "object" ? window : typeof self === "object" ? self : undefined);
/***/ },
/* 77 */
/***/ function(module, exports, __webpack_require__) {
module.exports = { "default": __webpack_require__(78), __esModule: true };
/***/ },
/* 78 */
/***/ function(module, exports, __webpack_require__) {
__webpack_require__(79);
__webpack_require__(6);
module.exports = __webpack_require__(15).Symbol;
/***/ },
/* 79 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
// ECMAScript 6 symbols shim
var $ = __webpack_require__(20)
, global = __webpack_require__(14)
, has = __webpack_require__(24)
, DESCRIPTORS = __webpack_require__(22)
, $export = __webpack_require__(13)
, redefine = __webpack_require__(18)
, $fails = __webpack_require__(23)
, shared = __webpack_require__(29)
, setToStringTag = __webpack_require__(27)
, uid = __webpack_require__(30)
, wks = __webpack_require__(28)
, keyOf = __webpack_require__(80)
, $names = __webpack_require__(81)
, enumKeys = __webpack_require__(82)
, isArray = __webpack_require__(83)
, anObject = __webpack_require__(41)
, toIObject = __webpack_require__(35)
, createDesc = __webpack_require__(21)
, getDesc = $.getDesc
, setDesc = $.setDesc
, _create = $.create
, getNames = $names.get
, $Symbol = global.Symbol
, $JSON = global.JSON
, _stringify = $JSON && $JSON.stringify
, setter = false
, HIDDEN = wks('_hidden')
, isEnum = $.isEnum
, SymbolRegistry = shared('symbol-registry')
, AllSymbols = shared('symbols')
, useNative = typeof $Symbol == 'function'
, ObjectProto = Object.prototype;
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function(){
return _create(setDesc({}, 'a', {
get: function(){ return setDesc(this, 'a', {value: 7}).a; }
})).a != 7;
}) ? function(it, key, D){
var protoDesc = getDesc(ObjectProto, key);
if(protoDesc)delete ObjectProto[key];
setDesc(it, key, D);
if(protoDesc && it !== ObjectProto)setDesc(ObjectProto, key, protoDesc);
} : setDesc;
var wrap = function(tag){
var sym = AllSymbols[tag] = _create($Symbol.prototype);
sym._k = tag;
DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
configurable: true,
set: function(value){
if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
setSymbolDesc(this, tag, createDesc(1, value));
}
});
return sym;
};
var isSymbol = function(it){
return typeof it == 'symbol';
};
var $defineProperty = function defineProperty(it, key, D){
if(D && has(AllSymbols, key)){
if(!D.enumerable){
if(!has(it, HIDDEN))setDesc(it, HIDDEN, createDesc(1, {}));
it[HIDDEN][key] = true;
} else {
if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
D = _create(D, {enumerable: createDesc(0, false)});
} return setSymbolDesc(it, key, D);
} return setDesc(it, key, D);
};
var $defineProperties = function defineProperties(it, P){
anObject(it);
var keys = enumKeys(P = toIObject(P))
, i = 0
, l = keys.length
, key;
while(l > i)$defineProperty(it, key = keys[i++], P[key]);
return it;
};
var $create = function create(it, P){
return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key){
var E = isEnum.call(this, key);
return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key]
? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
var D = getDesc(it = toIObject(it), key);
if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it){
var names = getNames(toIObject(it))
, result = []
, i = 0
, key;
while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN)result.push(key);
return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
var names = getNames(toIObject(it))
, result = []
, i = 0
, key;
while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
return result;
};
var $stringify = function stringify(it){
if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
var args = [it]
, i = 1
, $$ = arguments
, replacer, $replacer;
while($$.length > i)args.push($$[i++]);
replacer = args[1];
if(typeof replacer == 'function')$replacer = replacer;
if($replacer || !isArray(replacer))replacer = function(key, value){
if($replacer)value = $replacer.call(this, key, value);
if(!isSymbol(value))return value;
};
args[1] = replacer;
return _stringify.apply($JSON, args);
};
var buggyJSON = $fails(function(){
var S = $Symbol();
// MS Edge converts symbol values to JSON as {}
// WebKit converts symbol values to JSON as null
// V8 throws on boxed symbols
return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
});
// 19.4.1.1 Symbol([description])
if(!useNative){
$Symbol = function Symbol(){
if(isSymbol(this))throw TypeError('Symbol is not a constructor');
return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
};
redefine($Symbol.prototype, 'toString', function toString(){
return this._k;
});
isSymbol = function(it){
return it instanceof $Symbol;
};
$.create = $create;
$.isEnum = $propertyIsEnumerable;
$.getDesc = $getOwnPropertyDescriptor;
$.setDesc = $defineProperty;
$.setDescs = $defineProperties;
$.getNames = $names.get = $getOwnPropertyNames;
$.getSymbols = $getOwnPropertySymbols;
if(DESCRIPTORS && !__webpack_require__(12)){
redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
}
}
var symbolStatics = {
// 19.4.2.1 Symbol.for(key)
'for': function(key){
return has(SymbolRegistry, key += '')
? SymbolRegistry[key]
: SymbolRegistry[key] = $Symbol(key);
},
// 19.4.2.5 Symbol.keyFor(sym)
keyFor: function keyFor(key){
return keyOf(SymbolRegistry, key);
},
useSetter: function(){ setter = true; },
useSimple: function(){ setter = false; }
};
// 19.4.2.2 Symbol.hasInstance
// 19.4.2.3 Symbol.isConcatSpreadable
// 19.4.2.4 Symbol.iterator
// 19.4.2.6 Symbol.match
// 19.4.2.8 Symbol.replace
// 19.4.2.9 Symbol.search
// 19.4.2.10 Symbol.species
// 19.4.2.11 Symbol.split
// 19.4.2.12 Symbol.toPrimitive
// 19.4.2.13 Symbol.toStringTag
// 19.4.2.14 Symbol.unscopables
$.each.call((
'hasInstance,isConcatSpreadable,iterator,match,replace,search,' +
'species,split,toPrimitive,toStringTag,unscopables'
).split(','), function(it){
var sym = wks(it);
symbolStatics[it] = useNative ? sym : wrap(sym);
});
setter = true;
$export($export.G + $export.W, {Symbol: $Symbol});
$export($export.S, 'Symbol', symbolStatics);
$export($export.S + $export.F * !useNative, 'Object', {
// 19.1.2.2 Object.create(O [, Properties])
create: $create,
// 19.1.2.4 Object.defineProperty(O, P, Attributes)
defineProperty: $defineProperty,
// 19.1.2.3 Object.defineProperties(O, Properties)
defineProperties: $defineProperties,
// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
// 19.1.2.7 Object.getOwnPropertyNames(O)
getOwnPropertyNames: $getOwnPropertyNames,
// 19.1.2.8 Object.getOwnPropertySymbols(O)
getOwnPropertySymbols: $getOwnPropertySymbols
});
// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {stringify: $stringify});
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);
/***/ },
/* 80 */
/***/ function(module, exports, __webpack_require__) {
var $ = __webpack_require__(20)
, toIObject = __webpack_require__(35);
module.exports = function(object, el){
var O = toIObject(object)
, keys = $.getKeys(O)
, length = keys.length
, index = 0
, key;
while(length > index)if(O[key = keys[index++]] === el)return key;
};
/***/ },
/* 81 */
/***/ function(module, exports, __webpack_require__) {
// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(35)
, getNames = __webpack_require__(20).getNames
, toString = {}.toString;
var windowNames = typeof window == 'object' && Object.getOwnPropertyNames
? Object.getOwnPropertyNames(window) : [];
var getWindowNames = function(it){
try {
return getNames(it);
} catch(e){
return windowNames.slice();
}
};
module.exports.get = function getOwnPropertyNames(it){
if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it);
return getNames(toIObject(it));
};
/***/ },
/* 82 */
/***/ function(module, exports, __webpack_require__) {
// all enumerable object keys, includes symbols
var $ = __webpack_require__(20);
module.exports = function(it){
var keys = $.getKeys(it)
, getSymbols = $.getSymbols;
if(getSymbols){
var symbols = getSymbols(it)
, isEnum = $.isEnum
, i = 0
, key;
while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))keys.push(key);
}
return keys;
};
/***/ },
/* 83 */
/***/ function(module, exports, __webpack_require__) {
// 7.2.2 IsArray(argument)
var cof = __webpack_require__(37);
module.exports = Array.isArray || function(arg){
return cof(arg) == 'Array';
};
/***/ },
/* 84 */
/***/ function(module, exports, __webpack_require__) {
module.exports = { "default": __webpack_require__(85), __esModule: true };
/***/ },
/* 85 */
/***/ function(module, exports, __webpack_require__) {
var $ = __webpack_require__(20);
module.exports = function create(P, D){
return $.create(P, D);
};
/***/ },
/* 86 */
/***/ function(module, exports, __webpack_require__) {
module.exports = { "default": __webpack_require__(87), __esModule: true };
/***/ },
/* 87 */
/***/ function(module, exports, __webpack_require__) {
__webpack_require__(88);
module.exports = __webpack_require__(15).Object.setPrototypeOf;
/***/ },
/* 88 */
/***/ function(module, exports, __webpack_require__) {
// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(13);
$export($export.S, 'Object', {setPrototypeOf: __webpack_require__(48).set});
/***/ },
/* 89 */
/***/ function(module, exports, __webpack_require__) {
module.exports = { "default":