diff --git a/.gitignore b/.gitignore index ea9cc6c..8d9882b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,9 @@ *~ node_modules + # have to add the bundle to version control so deployment with git subtree works # browser-bundle.js -# skeleton.css browser-bundle.js.map +npm-debug.log.* \ No newline at end of file diff --git a/data/comp-123.json b/data/comp-123.json new file mode 100644 index 0000000..8f1ea65 --- /dev/null +++ b/data/comp-123.json @@ -0,0 +1 @@ +{"a":"this is before","b":"this is after","id":"123"} diff --git a/data/comp-367e05cc-3c82-4ed4-8325-89b5fef33dfa.json b/data/comp-367e05cc-3c82-4ed4-8325-89b5fef33dfa.json new file mode 100644 index 0000000..224beb7 --- /dev/null +++ b/data/comp-367e05cc-3c82-4ed4-8325-89b5fef33dfa.json @@ -0,0 +1 @@ +{"a":"this is string 1","b":"this is string 2","id":"367e05cc-3c82-4ed4-8325-89b5fef33dfa"} diff --git a/data/comp-5ba17f67-08cc-4ee3-ad29-ab040fa2d396.json b/data/comp-5ba17f67-08cc-4ee3-ad29-ab040fa2d396.json new file mode 100644 index 0000000..308d46f --- /dev/null +++ b/data/comp-5ba17f67-08cc-4ee3-ad29-ab040fa2d396.json @@ -0,0 +1 @@ +{"a":"this is another before","b":"this is another after","id":"5ba17f67-08cc-4ee3-ad29-ab040fa2d396"} diff --git a/data/comp-xxxxxxxx-3c82-4ed4-8325-89b5fef33dfa.json b/data/comp-xxxxxxxx-3c82-4ed4-8325-89b5fef33dfa.json new file mode 100644 index 0000000..d7a0a86 --- /dev/null +++ b/data/comp-xxxxxxxx-3c82-4ed4-8325-89b5fef33dfa.json @@ -0,0 +1 @@ +{"a":"this is another string 1","b":"this is another string 2","id":"xxxxxxxx-3c82-4ed4-8325-89b5fef33dfa"} diff --git a/data/id-2e1a606a-04b2-4c64-a86d-28f58007919b.json b/data/id-2e1a606a-04b2-4c64-a86d-28f58007919b.json new file mode 100644 index 0000000..2883f47 --- /dev/null +++ b/data/id-2e1a606a-04b2-4c64-a86d-28f58007919b.json @@ -0,0 +1 @@ +{"a":"this is string 1","b":"this is string 2","id":"2e1a606a-04b2-4c64-a86d-28f58007919b"} diff --git a/data/id-xxxxxxxx-04b2-4c64-a86d-28f58007919b.json b/data/id-xxxxxxxx-04b2-4c64-a86d-28f58007919b.json new file mode 100644 index 0000000..222eb1b --- /dev/null +++ b/data/id-xxxxxxxx-04b2-4c64-a86d-28f58007919b.json @@ -0,0 +1 @@ +{"a":"this is string 1","b":"this is string 2","id":"xxxxxxxx-04b2-4c64-a86d-28f58007919b"} diff --git a/dist/browser-bundle.js b/dist/browser-bundle.js index e0c10b9..beafc7a 100644 --- a/dist/browser-bundle.js +++ b/dist/browser-bundle.js @@ -11,16 +11,16 @@ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded -/******/ module.loaded = true; +/******/ module.l = true; /******/ // Return the exports of the module /******/ return module.exports; @@ -33,16464 +33,17230 @@ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; +/******/ // identity function for calling harmory imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; + +/******/ // define getter function for harmory exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ }; + +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; + +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; + /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports -/******/ return __webpack_require__(0); +/******/ return __webpack_require__(__webpack_require__.s = 796); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { - 'use strict';var _react=__webpack_require__(1);var _react2=_interopRequireDefault(_react);var _reactDom=__webpack_require__(158);var _reactDom2=_interopRequireDefault(_reactDom);var _redux=__webpack_require__(159);var Redux=_interopRequireWildcard(_redux);var _reactRedux=__webpack_require__(180);var _localStore=__webpack_require__(189);var localStore=_interopRequireWildcard(_localStore);var _reducers=__webpack_require__(190);var reducers=_interopRequireWildcard(_reducers);var _Main=__webpack_require__(191);var _Main2=_interopRequireDefault(_Main);var _Compare=__webpack_require__(781);var _Compare2=_interopRequireDefault(_Compare);var _reactRouter=__webpack_require__(731);var _createBrowserHistory=__webpack_require__(784);var _createBrowserHistory2=_interopRequireDefault(_createBrowserHistory);function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}//create the redux store - //initial state is retrieved from localStore - var store=Redux.createStore(Redux.combineReducers(reducers),localStore.get("dubdiff"),window.devToolsExtension?window.devToolsExtension():undefined);//save the state whenever the state changes - function saveState(){var state=store.getState();//pass the elements of state that should be persisted to the local store as an array of element name strings - localStore.set(state,["input"],"dubdiff");}store.subscribe(saveState);function render(){_reactDom2.default.render(_react2.default.createElement(_reactRedux.Provider,{store:store},_react2.default.createElement(_reactRouter.Router,{history:(0,_createBrowserHistory2.default)()},_react2.default.createElement(_reactRouter.Route,{path:'/',component:_Main2.default}),_react2.default.createElement(_reactRouter.Route,{path:'/**',component:_Compare2.default}))),document.getElementById('root'));}render(); +"use strict"; +'use strict';module.exports=__webpack_require__(668); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { - 'use strict';module.exports=__webpack_require__(2); +"use strict"; +'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.objectDiff=exports.numberToWord=exports.numberToWordMap=exports.keyboardKey=exports.SUI=exports.META=exports.leven=exports.isBrowser=exports.getElementType=exports.getUnhandledProps=exports.makeDebugger=exports.debug=exports.customPropTypes=exports.useVerticalAlignProp=exports.useTextAlignProp=exports.useWidthProp=exports.useKeyOrValueAndKey=exports.useValueAndKey=exports.useKeyOnly=exports.childrenUtils=exports.AutoControlledComponent=undefined;var _AutoControlledComponent=__webpack_require__(755);Object.defineProperty(exports,'AutoControlledComponent',{enumerable:true,get:function get(){return _interopRequireDefault(_AutoControlledComponent).default;}});var _classNameBuilders=__webpack_require__(759);Object.defineProperty(exports,'useKeyOnly',{enumerable:true,get:function get(){return _classNameBuilders.useKeyOnly;}});Object.defineProperty(exports,'useValueAndKey',{enumerable:true,get:function get(){return _classNameBuilders.useValueAndKey;}});Object.defineProperty(exports,'useKeyOrValueAndKey',{enumerable:true,get:function get(){return _classNameBuilders.useKeyOrValueAndKey;}});Object.defineProperty(exports,'useWidthProp',{enumerable:true,get:function get(){return _classNameBuilders.useWidthProp;}});Object.defineProperty(exports,'useTextAlignProp',{enumerable:true,get:function get(){return _classNameBuilders.useTextAlignProp;}});Object.defineProperty(exports,'useVerticalAlignProp',{enumerable:true,get:function get(){return _classNameBuilders.useVerticalAlignProp;}});var _debug=__webpack_require__(761);Object.defineProperty(exports,'debug',{enumerable:true,get:function get(){return _debug.debug;}});Object.defineProperty(exports,'makeDebugger',{enumerable:true,get:function get(){return _debug.makeDebugger;}});var _factories=__webpack_require__(762);Object.keys(_factories).forEach(function(key){if(key==="default"||key==="__esModule")return;Object.defineProperty(exports,key,{enumerable:true,get:function get(){return _factories[key];}});});var _getUnhandledProps=__webpack_require__(764);Object.defineProperty(exports,'getUnhandledProps',{enumerable:true,get:function get(){return _interopRequireDefault(_getUnhandledProps).default;}});var _getElementType=__webpack_require__(763);Object.defineProperty(exports,'getElementType',{enumerable:true,get:function get(){return _interopRequireDefault(_getElementType).default;}});var _isBrowser=__webpack_require__(362);Object.defineProperty(exports,'isBrowser',{enumerable:true,get:function get(){return _interopRequireDefault(_isBrowser).default;}});var _leven=__webpack_require__(363);Object.defineProperty(exports,'leven',{enumerable:true,get:function get(){return _interopRequireDefault(_leven).default;}});var _keyboardKey=__webpack_require__(765);Object.defineProperty(exports,'keyboardKey',{enumerable:true,get:function get(){return _interopRequireDefault(_keyboardKey).default;}});var _numberToWord=__webpack_require__(188);Object.defineProperty(exports,'numberToWordMap',{enumerable:true,get:function get(){return _numberToWord.numberToWordMap;}});Object.defineProperty(exports,'numberToWord',{enumerable:true,get:function get(){return _numberToWord.numberToWord;}});var _objectDiff=__webpack_require__(766);Object.defineProperty(exports,'objectDiff',{enumerable:true,get:function get(){return _objectDiff.objectDiff;}});var _childrenUtils2=__webpack_require__(758);var _childrenUtils=_interopRequireWildcard(_childrenUtils2);var _customPropTypes2=__webpack_require__(760);var _customPropTypes=_interopRequireWildcard(_customPropTypes2);var _META2=__webpack_require__(756);var _META=_interopRequireWildcard(_META2);var _SUI2=__webpack_require__(757);var _SUI=_interopRequireWildcard(_SUI2);function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}exports.childrenUtils=_childrenUtils;exports.customPropTypes=_customPropTypes;exports.META=_META;exports.SUI=_SUI; /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { - /** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule React - */'use strict';var ReactDOM=__webpack_require__(3);var ReactDOMServer=__webpack_require__(148);var ReactIsomorphic=__webpack_require__(152);var assign=__webpack_require__(39);var deprecated=__webpack_require__(157);// `version` will be added here by ReactIsomorphic. - var React={};assign(React,ReactIsomorphic);assign(React,{// ReactDOM - findDOMNode:deprecated('findDOMNode','ReactDOM','react-dom',ReactDOM,ReactDOM.findDOMNode),render:deprecated('render','ReactDOM','react-dom',ReactDOM,ReactDOM.render),unmountComponentAtNode:deprecated('unmountComponentAtNode','ReactDOM','react-dom',ReactDOM,ReactDOM.unmountComponentAtNode),// ReactDOMServer - renderToString:deprecated('renderToString','ReactDOMServer','react-dom/server',ReactDOMServer,ReactDOMServer.renderToString),renderToStaticMarkup:deprecated('renderToStaticMarkup','ReactDOMServer','react-dom/server',ReactDOMServer,ReactDOMServer.renderToStaticMarkup)});React.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ReactDOM;React.__SECRET_DOM_SERVER_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ReactDOMServer;module.exports=React; +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*//* global define */(function(){'use strict';var hasOwn={}.hasOwnProperty;function classNames(){var classes=[];for(var i=0;i-1&&navigator.userAgent.indexOf('Edge')===-1||navigator.userAgent.indexOf('Firefox')>-1){console.debug('Download the React DevTools for a better development experience: '+'https://fb.me/react-devtools');}}// If we're in IE8, check to see if we are in compatibility mode and provide - // information on preventing compatibility mode - var ieCompatibilityMode=document.documentMode&&document.documentMode<8;process.env.NODE_ENV!=='production'?warning(!ieCompatibilityMode,'Internet Explorer is running in compatibility mode; please add the '+'following tag to your HTML to prevent this from happening: '+''):undefined;var expectedFeatures=[// shims - Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim,// shams - Object.create,Object.freeze];for(var i=0;i1){for(var i=1;i1){for(var i=1;i'+escapedText+'';}},/** - * Updates this component by updating the text content. - * - * @param {ReactText} nextText The next text content - * @param {ReactReconcileTransaction} transaction - * @internal - */receiveComponent:function receiveComponent(nextText,transaction){if(nextText!==this._currentElement){this._currentElement=nextText;var nextStringText=''+nextText;if(nextStringText!==this._stringText){// TODO: Save this as pending props and use performUpdateIfNecessary - // and/or updateComponent to do the actual update for consistency with - // other component types? - this._stringText=nextStringText;var node=ReactMount.getNode(this._rootNodeID);DOMChildrenOperations.updateTextContent(node,nextStringText);}}},unmountComponent:function unmountComponent(){ReactComponentBrowserEnvironment.unmountIDFromEnvironment(this._rootNodeID);}});module.exports=ReactDOMTextComponent; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {/** + * Copyright 2014-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule warning + */'use strict';var emptyFunction=__webpack_require__(24);/** + * Similar to invariant but only logs a warning if the condition is not met. + * This can be used to log issues in development environments in critical + * paths. Removing the logging code for production environments will keep the + * same logic and follow the same code paths. + */var warning=emptyFunction;if(process.env.NODE_ENV!=='production'){warning=function warning(condition,format){for(var _len=arguments.length,args=Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){args[_key-2]=arguments[_key];}if(format===undefined){throw new Error('`warning(condition, format, ...args)` requires a warning '+'message argument');}if(format.indexOf('Failed Composite propType: ')===0){return;// Ignore CompositeComponent proptype check. +}if(!condition){var argIndex=0;var message='Warning: '+format.replace(/%s/g,function(){return args[argIndex++];});if(typeof console!=='undefined'){console.error(message);}try{// --- Welcome to debugging React --- +// This error was thrown as a convenience so that you can use this stack +// to find the callsite that caused this warning to fire. +throw new Error(message);}catch(x){}}};}module.exports=warning; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3))) /***/ }, /* 7 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { - /* WEBPACK VAR INJECTION */(function(process) {/** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule DOMChildrenOperations - * @typechecks static-only - */'use strict';var Danger=__webpack_require__(8);var ReactMultiChildUpdateTypes=__webpack_require__(16);var ReactPerf=__webpack_require__(18);var setInnerHTML=__webpack_require__(19);var setTextContent=__webpack_require__(20);var invariant=__webpack_require__(13);/** - * Inserts `childNode` as a child of `parentNode` at the `index`. - * - * @param {DOMElement} parentNode Parent node in which to insert. - * @param {DOMElement} childNode Child node to insert. - * @param {number} index Index at which to insert the child. - * @internal - */function insertChildAt(parentNode,childNode,index){// By exploiting arrays returning `undefined` for an undefined index, we can - // rely exclusively on `insertBefore(node, null)` instead of also using - // `appendChild(node)`. However, using `undefined` is not allowed by all - // browsers so we must replace it with `null`. - // fix render order error in safari - // IE8 will throw error when index out of list size. - var beforeChild=index>=parentNode.childNodes.length?null:parentNode.childNodes.item(index);parentNode.insertBefore(childNode,beforeChild);}/** - * Operations for updating with DOM children. - */var DOMChildrenOperations={dangerouslyReplaceNodeWithMarkup:Danger.dangerouslyReplaceNodeWithMarkup,updateTextContent:setTextContent,/** - * Updates a component's children by processing a series of updates. The - * update configurations are each expected to have a `parentNode` property. - * - * @param {array} updates List of update configurations. - * @param {array} markupList List of markup strings. - * @internal - */processUpdates:function processUpdates(updates,markupList){var update;// Mapping from parent IDs to initial child orderings. - var initialChildren=null;// List of children that will be moved or removed. - var updatedChildren=null;for(var i=0;i when using tables, '+'nesting tags like
,

, or , or using non-SVG elements '+'in an parent. Try inspecting the child nodes of the element '+'with React ID `%s`.',updatedIndex,parentID):invariant(false):undefined;initialChildren=initialChildren||{};initialChildren[parentID]=initialChildren[parentID]||[];initialChildren[parentID][updatedIndex]=updatedChild;updatedChildren=updatedChildren||[];updatedChildren.push(updatedChild);}}var renderedMarkup;// markupList is either a list of markup or just a list of elements - if(markupList.length&&typeof markupList[0]==='string'){renderedMarkup=Danger.dangerouslyRenderMarkup(markupList);}else{renderedMarkup=markupList;}// Remove updated children first so that `toIndex` is consistent. - if(updatedChildren){for(var j=0;j true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */var isArray=Array.isArray;module.exports=isArray; /***/ }, /* 8 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { - /* WEBPACK VAR INJECTION */(function(process) {/** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule Danger - * @typechecks static-only - */'use strict';var ExecutionEnvironment=__webpack_require__(9);var createNodesFromMarkup=__webpack_require__(10);var emptyFunction=__webpack_require__(15);var getMarkupWrap=__webpack_require__(14);var invariant=__webpack_require__(13);var OPEN_TAG_NAME_EXP=/^(<[^ \/>]+)/;var RESULT_INDEX_ATTR='data-danger-index';/** - * Extracts the `nodeName` from a string of markup. - * - * NOTE: Extracting the `nodeName` does not require a regular expression match - * because we make assumptions about React-generated markup (i.e. there are no - * spaces surrounding the opening tag and there is at least one attribute). - * - * @param {string} markup String of markup. - * @return {string} Node name of the supplied markup. - * @see http://jsperf.com/extract-nodename - */function getNodeName(markup){return markup.substring(1,markup.indexOf(' '));}var Danger={/** - * Renders markup into an array of nodes. The markup is expected to render - * into a list of root nodes. Also, the length of `resultList` and - * `markupList` should be the same. - * - * @param {array} markupList List of markup strings to render. - * @return {array} List of rendered nodes. - * @internal - */dangerouslyRenderMarkup:function dangerouslyRenderMarkup(markupList){!ExecutionEnvironment.canUseDOM?process.env.NODE_ENV!=='production'?invariant(false,'dangerouslyRenderMarkup(...): Cannot render markup in a worker '+'thread. Make sure `window` and `document` are available globally '+'before requiring React when unit testing or use '+'ReactDOMServer.renderToString for server rendering.'):invariant(false):undefined;var nodeName;var markupByNodeName={};// Group markup by `nodeName` if a wrap is necessary, else by '*'. - for(var i=0;i tags. - );for(var j=0;j node. This is because browser quirks make this unreliable '+'and/or slow. If you want to render to the root you must use '+'server rendering. See ReactDOMServer.renderToString().'):invariant(false):undefined;var newChild;if(typeof markup==='string'){newChild=createNodesFromMarkup(markup,emptyFunction)[0];}else{newChild=markup;}oldChild.parentNode.replaceChild(newChild,oldChild);}};module.exports=Danger; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) +/** + * The default argument placeholder value for methods. + * + * @type {Object} + */module.exports={}; /***/ }, /* 9 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { - /** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule ExecutionEnvironment - */'use strict';var canUseDOM=!!(typeof window!=='undefined'&&window.document&&window.document.createElement);/** - * Simple, lightweight module assisting with the detection and context of - * Worker. Helps avoid circular dependencies and allows code to reason about - * whether or not they are in a Worker, even if they never include the main - * `ReactWorker` dependency. - */var ExecutionEnvironment={canUseDOM:canUseDOM,canUseWorkers:typeof Worker!=='undefined',canUseEventListeners:canUseDOM&&!!(window.addEventListener||window.attachEvent),canUseViewport:canUseDOM&&!!window.screen,isInWorker:!canUseDOM// For now, this is true - might change in the future. - };module.exports=ExecutionEnvironment; +var baseConvert=__webpack_require__(591),util=__webpack_require__(593);/** + * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last + * version with conversion `options` applied. If `name` is an object its methods + * will be converted. + * + * @param {string} name The name of the function to wrap. + * @param {Function} [func] The function to wrap. + * @param {Object} [options] The options object. See `baseConvert` for more details. + * @returns {Function|Object} Returns the converted function or object. + */function convert(name,func,options){return baseConvert(util,name,func,options);}module.exports=convert; /***/ }, /* 10 */ -/***/ function(module, exports, __webpack_require__) { +/***/ function(module, exports) { - /* WEBPACK VAR INJECTION */(function(process) {/** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule createNodesFromMarkup - * @typechecks - *//*eslint-disable fb-www/unsafe-html*/'use strict';var ExecutionEnvironment=__webpack_require__(9);var createArrayFromMixed=__webpack_require__(11);var getMarkupWrap=__webpack_require__(14);var invariant=__webpack_require__(13);/** - * Dummy container used to render all markup. - */var dummyNode=ExecutionEnvironment.canUseDOM?document.createElement('div'):null;/** - * Pattern used by `getNodeName`. - */var nodeNamePattern=/^\s*<(\w+)/;/** - * Extracts the `nodeName` of the first element in a string of markup. - * - * @param {string} markup String of markup. - * @return {?string} Node name of the supplied markup. - */function getNodeName(markup){var nodeNameMatch=markup.match(nodeNamePattern);return nodeNameMatch&&nodeNameMatch[1].toLowerCase();}/** - * Creates an array containing the nodes rendered from the supplied markup. The - * optionally supplied `handleScript` function will be invoked once for each - * ','
'];var trWrap=[3,'','
'];var svgWrap=[1,'',''];var markupWrap={'*':[1,'?

'],'area':[1,'',''],'col':[2,'','
'],'legend':[1,'
','
'],'param':[1,'',''],'tr':[2,'','
'],'optgroup':selectWrap,'option':selectWrap,'caption':tableWrap,'colgroup':tableWrap,'tbody':tableWrap,'tfoot':tableWrap,'thead':tableWrap,'td':trWrap,'th':trWrap};// Initialize the SVG elements since we know they'll always need to be wrapped - // consistently. If they are created inside a
they will be initialized in - // the wrong namespace (and will not display). - var svgElements=['circle','clipPath','defs','ellipse','g','image','line','linearGradient','mask','path','pattern','polygon','polyline','radialGradient','rect','stop','text','tspan'];svgElements.forEach(function(nodeName){markupWrap[nodeName]=svgWrap;shouldWrap[nodeName]=true;});/** - * Gets the markup wrap configuration for the supplied `nodeName`. - * - * NOTE: This lazily detects which wraps are necessary for the current browser. - * - * @param {string} nodeName Lowercase `nodeName`. - * @return {?array} Markup wrap configuration, if applicable. - */function getMarkupWrap(nodeName){!!!dummyNode?process.env.NODE_ENV!=='production'?invariant(false,'Markup wrapping node not initialized'):invariant(false):undefined;if(!markupWrap.hasOwnProperty(nodeName)){nodeName='*';}if(!shouldWrap.hasOwnProperty(nodeName)){if(nodeName==='*'){dummyNode.innerHTML='';}else{dummyNode.innerHTML='<'+nodeName+'>';}shouldWrap[nodeName]=!dummyNode.firstChild;}return shouldWrap[nodeName]?markupWrap[nodeName]:null;}module.exports=getMarkupWrap; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) +var arrayLikeKeys=__webpack_require__(225),baseKeys=__webpack_require__(142),isArrayLike=__webpack_require__(25);/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */function keys(object){return isArrayLike(object)?arrayLikeKeys(object):baseKeys(object);}module.exports=keys; /***/ }, /* 15 */ -/***/ function(module, exports) { +/***/ function(module, exports, __webpack_require__) { - /** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule emptyFunction - */"use strict";function makeEmptyFunction(arg){return function(){return arg;};}/** - * This function accepts and discards inputs; it has no side effects. This is - * primarily useful idiomatically for overridable function endpoints which - * always need to be callable, since JS lacks a null-call idiom ala Cocoa. - */function emptyFunction(){}emptyFunction.thatReturns=makeEmptyFunction;emptyFunction.thatReturnsFalse=makeEmptyFunction(false);emptyFunction.thatReturnsTrue=makeEmptyFunction(true);emptyFunction.thatReturnsNull=makeEmptyFunction(null);emptyFunction.thatReturnsThis=function(){return this;};emptyFunction.thatReturnsArgument=function(arg){return arg;};module.exports=emptyFunction; +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactMount + */'use strict';var DOMProperty=__webpack_require__(48);var ReactBrowserEventEmitter=__webpack_require__(108);var ReactCurrentOwner=__webpack_require__(32);var ReactDOMFeatureFlags=__webpack_require__(295);var ReactElement=__webpack_require__(19);var ReactEmptyComponentRegistry=__webpack_require__(302);var ReactInstanceHandles=__webpack_require__(57);var ReactInstanceMap=__webpack_require__(73);var ReactMarkupChecksum=__webpack_require__(305);var ReactPerf=__webpack_require__(20);var ReactReconciler=__webpack_require__(49);var ReactUpdateQueue=__webpack_require__(165);var ReactUpdates=__webpack_require__(22);var assign=__webpack_require__(5);var emptyObject=__webpack_require__(61);var containsNode=__webpack_require__(211);var instantiateReactComponent=__webpack_require__(172);var invariant=__webpack_require__(4);var setInnerHTML=__webpack_require__(115);var shouldUpdateReactComponent=__webpack_require__(175);var validateDOMNesting=__webpack_require__(177);var warning=__webpack_require__(6);var ATTR_NAME=DOMProperty.ID_ATTRIBUTE_NAME;var nodeCache={};var ELEMENT_NODE_TYPE=1;var DOC_NODE_TYPE=9;var DOCUMENT_FRAGMENT_NODE_TYPE=11;var ownerDocumentContextKey='__ReactMount_ownerDocument$'+Math.random().toString(36).slice(2);/** Mapping from reactRootID to React component instance. */var instancesByReactRootID={};/** Mapping from reactRootID to `container` nodes. */var containersByReactRootID={};if(process.env.NODE_ENV!=='production'){/** __DEV__-only mapping from reactRootID to root elements. */var rootElementsByReactRootID={};}// Used to store breadth-first search state in findComponentRoot. +var findComponentRootReusableArray=[];/** + * Finds the index of the first character + * that's not common between the two given strings. + * + * @return {number} the index of the character where the strings diverge + */function firstDifferenceIndex(string1,string2){var minLen=Math.min(string1.length,string2.length);for(var i=0;i <-- Supplied `container`. + *
<-- Rendered reactRoot of React + * // ... component. + *
+ *
+ * + * Inside of `container`, the first element rendered is the "reactRoot". + */var ReactMount={TopLevelWrapper:TopLevelWrapper,/** Exposed for debugging purposes **/_instancesByReactRootID:instancesByReactRootID,/** + * This is a hook provided to support rendering React components while + * ensuring that the apparent scroll position of its `container` does not + * change. + * + * @param {DOMElement} container The `container` being rendered into. + * @param {function} renderCallback This must be called once to do the render. + */scrollMonitor:function scrollMonitor(container,renderCallback){renderCallback();},/** + * Take a component that's already mounted into the DOM and replace its props + * @param {ReactComponent} prevComponent component instance already in the DOM + * @param {ReactElement} nextElement component instance to render + * @param {DOMElement} container container to render into + * @param {?function} callback function triggered on completion + */_updateRootComponent:function _updateRootComponent(prevComponent,nextElement,container,callback){ReactMount.scrollMonitor(container,function(){ReactUpdateQueue.enqueueElementInternal(prevComponent,nextElement);if(callback){ReactUpdateQueue.enqueueCallbackInternal(prevComponent,callback);}});if(process.env.NODE_ENV!=='production'){// Record the root element in case it later gets transplanted. +rootElementsByReactRootID[getReactRootID(container)]=getReactRootElementInContainer(container);}return prevComponent;},/** + * Register a component into the instance map and starts scroll value + * monitoring + * @param {ReactComponent} nextComponent component instance to render + * @param {DOMElement} container container to render into + * @return {string} reactRoot ID prefix + */_registerComponent:function _registerComponent(nextComponent,container){!(container&&(container.nodeType===ELEMENT_NODE_TYPE||container.nodeType===DOC_NODE_TYPE||container.nodeType===DOCUMENT_FRAGMENT_NODE_TYPE))?process.env.NODE_ENV!=='production'?invariant(false,'_registerComponent(...): Target container is not a DOM element.'):invariant(false):undefined;ReactBrowserEventEmitter.ensureScrollValueMonitoring();var reactRootID=ReactMount.registerContainer(container);instancesByReactRootID[reactRootID]=nextComponent;return reactRootID;},/** + * Render a new component into the DOM. + * @param {ReactElement} nextElement element to render + * @param {DOMElement} container container to render into + * @param {boolean} shouldReuseMarkup if we should skip the markup insertion + * @return {ReactComponent} nextComponent + */_renderNewRootComponent:function _renderNewRootComponent(nextElement,container,shouldReuseMarkup,context){// Various parts of our code (such as ReactCompositeComponent's +// _renderValidatedComponent) assume that calls to render aren't nested; +// verify that that's the case. +process.env.NODE_ENV!=='production'?warning(ReactCurrentOwner.current==null,'_renderNewRootComponent(): Render methods should be a pure function '+'of props and state; triggering nested component updates from '+'render is not allowed. If necessary, trigger nested updates in '+'componentDidUpdate. Check the render method of %s.',ReactCurrentOwner.current&&ReactCurrentOwner.current.getName()||'ReactCompositeComponent'):undefined;var componentInstance=instantiateReactComponent(nextElement,null);var reactRootID=ReactMount._registerComponent(componentInstance,container);// The initial render is synchronous but any updates that happen during +// rendering, in componentWillMount or componentDidMount, will be batched +// according to the current batching strategy. +ReactUpdates.batchedUpdates(batchedMountComponentIntoNode,componentInstance,reactRootID,container,shouldReuseMarkup,context);if(process.env.NODE_ENV!=='production'){// Record the root element in case it later gets transplanted. +rootElementsByReactRootID[reactRootID]=getReactRootElementInContainer(container);}return componentInstance;},/** + * Renders a React component into the DOM in the supplied `container`. + * + * If the React component was previously rendered into `container`, this will + * perform an update on it and only mutate the DOM as necessary to reflect the + * latest React component. + * + * @param {ReactComponent} parentComponent The conceptual parent of this render tree. + * @param {ReactElement} nextElement Component element to render. + * @param {DOMElement} container DOM element to render into. + * @param {?function} callback function triggered on completion + * @return {ReactComponent} Component instance rendered in `container`. + */renderSubtreeIntoContainer:function renderSubtreeIntoContainer(parentComponent,nextElement,container,callback){!(parentComponent!=null&&parentComponent._reactInternalInstance!=null)?process.env.NODE_ENV!=='production'?invariant(false,'parentComponent must be a valid React Component'):invariant(false):undefined;return ReactMount._renderSubtreeIntoContainer(parentComponent,nextElement,container,callback);},_renderSubtreeIntoContainer:function _renderSubtreeIntoContainer(parentComponent,nextElement,container,callback){!ReactElement.isValidElement(nextElement)?process.env.NODE_ENV!=='production'?invariant(false,'ReactDOM.render(): Invalid component element.%s',typeof nextElement==='string'?' Instead of passing an element string, make sure to instantiate '+'it by passing it to React.createElement.':typeof nextElement==='function'?' Instead of passing a component class, make sure to instantiate '+'it by passing it to React.createElement.':// Check if it quacks like an element +nextElement!=null&&nextElement.props!==undefined?' This may be caused by unintentionally loading two independent '+'copies of React.':''):invariant(false):undefined;process.env.NODE_ENV!=='production'?warning(!container||!container.tagName||container.tagName.toUpperCase()!=='BODY','render(): Rendering components directly into document.body is '+'discouraged, since its children are often manipulated by third-party '+'scripts and browser extensions. This may lead to subtle '+'reconciliation issues. Try rendering into a container element created '+'for your app.'):undefined;var nextWrappedElement=new ReactElement(TopLevelWrapper,null,null,null,null,null,nextElement);var prevComponent=instancesByReactRootID[getReactRootID(container)];if(prevComponent){var prevWrappedElement=prevComponent._currentElement;var prevElement=prevWrappedElement.props;if(shouldUpdateReactComponent(prevElement,nextElement)){var publicInst=prevComponent._renderedComponent.getPublicInstance();var updatedCallback=callback&&function(){callback.call(publicInst);};ReactMount._updateRootComponent(prevComponent,nextWrappedElement,container,updatedCallback);return publicInst;}else{ReactMount.unmountComponentAtNode(container);}}var reactRootElement=getReactRootElementInContainer(container);var containerHasReactMarkup=reactRootElement&&!!internalGetID(reactRootElement);var containerHasNonRootReactChild=hasNonRootReactChild(container);if(process.env.NODE_ENV!=='production'){process.env.NODE_ENV!=='production'?warning(!containerHasNonRootReactChild,'render(...): Replacing React-rendered children with a new root '+'component. If you intended to update the children of this node, '+'you should instead have the existing children update their state '+'and render the new components instead of calling ReactDOM.render.'):undefined;if(!containerHasReactMarkup||reactRootElement.nextSibling){var rootElementSibling=reactRootElement;while(rootElementSibling){if(internalGetID(rootElementSibling)){process.env.NODE_ENV!=='production'?warning(false,'render(): Target node has markup rendered by React, but there '+'are unrelated nodes as well. This is most commonly caused by '+'white-space inserted around server-rendered markup.'):undefined;break;}rootElementSibling=rootElementSibling.nextSibling;}}}var shouldReuseMarkup=containerHasReactMarkup&&!prevComponent&&!containerHasNonRootReactChild;var component=ReactMount._renderNewRootComponent(nextWrappedElement,container,shouldReuseMarkup,parentComponent!=null?parentComponent._reactInternalInstance._processChildContext(parentComponent._reactInternalInstance._context):emptyObject)._renderedComponent.getPublicInstance();if(callback){callback.call(component);}return component;},/** + * Renders a React component into the DOM in the supplied `container`. + * + * If the React component was previously rendered into `container`, this will + * perform an update on it and only mutate the DOM as necessary to reflect the + * latest React component. + * + * @param {ReactElement} nextElement Component element to render. + * @param {DOMElement} container DOM element to render into. + * @param {?function} callback function triggered on completion + * @return {ReactComponent} Component instance rendered in `container`. + */render:function render(nextElement,container,callback){return ReactMount._renderSubtreeIntoContainer(null,nextElement,container,callback);},/** + * Registers a container node into which React components will be rendered. + * This also creates the "reactRoot" ID that will be assigned to the element + * rendered within. + * + * @param {DOMElement} container DOM element to register as a container. + * @return {string} The "reactRoot" ID of elements rendered within. + */registerContainer:function registerContainer(container){var reactRootID=getReactRootID(container);if(reactRootID){// If one exists, make sure it is a valid "reactRoot" ID. +reactRootID=ReactInstanceHandles.getReactRootIDFromNodeID(reactRootID);}if(!reactRootID){// No valid "reactRoot" ID found, create one. +reactRootID=ReactInstanceHandles.createReactRootID();}containersByReactRootID[reactRootID]=container;return reactRootID;},/** + * Unmounts and destroys the React component rendered in the `container`. + * + * @param {DOMElement} container DOM element containing a React component. + * @return {boolean} True if a component was found in and unmounted from + * `container` + */unmountComponentAtNode:function unmountComponentAtNode(container){// Various parts of our code (such as ReactCompositeComponent's +// _renderValidatedComponent) assume that calls to render aren't nested; +// verify that that's the case. (Strictly speaking, unmounting won't cause a +// render but we still don't expect to be in a render call here.) +process.env.NODE_ENV!=='production'?warning(ReactCurrentOwner.current==null,'unmountComponentAtNode(): Render methods should be a pure function '+'of props and state; triggering nested component updates from render '+'is not allowed. If necessary, trigger nested updates in '+'componentDidUpdate. Check the render method of %s.',ReactCurrentOwner.current&&ReactCurrentOwner.current.getName()||'ReactCompositeComponent'):undefined;!(container&&(container.nodeType===ELEMENT_NODE_TYPE||container.nodeType===DOC_NODE_TYPE||container.nodeType===DOCUMENT_FRAGMENT_NODE_TYPE))?process.env.NODE_ENV!=='production'?invariant(false,'unmountComponentAtNode(...): Target container is not a DOM element.'):invariant(false):undefined;var reactRootID=getReactRootID(container);var component=instancesByReactRootID[reactRootID];if(!component){// Check if the node being unmounted was rendered by React, but isn't a +// root node. +var containerHasNonRootReactChild=hasNonRootReactChild(container);// Check if the container itself is a React root node. +var containerID=internalGetID(container);var isContainerReactRoot=containerID&&containerID===ReactInstanceHandles.getReactRootIDFromNodeID(containerID);if(process.env.NODE_ENV!=='production'){process.env.NODE_ENV!=='production'?warning(!containerHasNonRootReactChild,'unmountComponentAtNode(): The node you\'re attempting to unmount '+'was rendered by React and is not a top-level container. %s',isContainerReactRoot?'You may have accidentally passed in a React root node instead '+'of its container.':'Instead, have the parent component update its state and '+'rerender in order to remove this component.'):undefined;}return false;}ReactUpdates.batchedUpdates(unmountComponentFromNode,component,container);delete instancesByReactRootID[reactRootID];delete containersByReactRootID[reactRootID];if(process.env.NODE_ENV!=='production'){delete rootElementsByReactRootID[reactRootID];}return true;},/** + * Finds the container DOM element that contains React component to which the + * supplied DOM `id` belongs. + * + * @param {string} id The ID of an element rendered by a React component. + * @return {?DOMElement} DOM element that contains the `id`. + */findReactContainerForID:function findReactContainerForID(id){var reactRootID=ReactInstanceHandles.getReactRootIDFromNodeID(id);var container=containersByReactRootID[reactRootID];if(process.env.NODE_ENV!=='production'){var rootElement=rootElementsByReactRootID[reactRootID];if(rootElement&&rootElement.parentNode!==container){process.env.NODE_ENV!=='production'?warning(// Call internalGetID here because getID calls isValid which calls +// findReactContainerForID (this function). +internalGetID(rootElement)===reactRootID,'ReactMount: Root element ID differed from reactRootID.'):undefined;var containerChild=container.firstChild;if(containerChild&&reactRootID===internalGetID(containerChild)){// If the container has a new child with the same ID as the old +// root element, then rootElementsByReactRootID[reactRootID] is +// just stale and needs to be updated. The case that deserves a +// warning is when the container is empty. +rootElementsByReactRootID[reactRootID]=containerChild;}else{process.env.NODE_ENV!=='production'?warning(false,'ReactMount: Root element has been removed from its original '+'container. New container: %s',rootElement.parentNode):undefined;}}}return container;},/** + * Finds an element rendered by React with the supplied ID. + * + * @param {string} id ID of a DOM node in the React component. + * @return {DOMElement} Root DOM node of the React component. + */findReactNodeByID:function findReactNodeByID(id){var reactRoot=ReactMount.findReactContainerForID(id);return ReactMount.findComponentRoot(reactRoot,id);},/** + * Traverses up the ancestors of the supplied node to find a node that is a + * DOM representation of a React component rendered by this copy of React. + * + * @param {*} node + * @return {?DOMEventTarget} + * @internal + */getFirstReactDOM:function getFirstReactDOM(node){return findFirstReactDOMImpl(node);},/** + * Finds a node with the supplied `targetID` inside of the supplied + * `ancestorNode`. Exploits the ID naming scheme to perform the search + * quickly. + * + * @param {DOMEventTarget} ancestorNode Search from this root. + * @pararm {string} targetID ID of the DOM representation of the component. + * @return {DOMEventTarget} DOM node with the supplied `targetID`. + * @internal + */findComponentRoot:function findComponentRoot(ancestorNode,targetID){var firstChildren=findComponentRootReusableArray;var childIndex=0;var deepestAncestor=findDeepestCachedAncestor(targetID)||ancestorNode;if(process.env.NODE_ENV!=='production'){// This will throw on the next line; give an early warning +process.env.NODE_ENV!=='production'?warning(deepestAncestor!=null,'React can\'t find the root component node for data-reactid value '+'`%s`. If you\'re seeing this message, it probably means that '+'you\'ve loaded two copies of React on the page. At this time, only '+'a single copy of React can be loaded at a time.',targetID):undefined;}firstChildren[0]=deepestAncestor.firstChild;firstChildren.length=1;while(childIndex` +// element sprouts an extra `` child as a side effect of +// `.innerHTML` parsing. Optimistically continue down this +// branch, but not before examining the other siblings. +firstChildren.push(child.firstChild);}child=child.nextSibling;}if(targetChild){// Emptying firstChildren/findComponentRootReusableArray is +// not necessary for correctness, but it helps the GC reclaim +// any nodes that were left at the end of the search. +firstChildren.length=0;return targetChild;}}firstChildren.length=0; true?process.env.NODE_ENV!=='production'?invariant(false,'findComponentRoot(..., %s): Unable to find element. This probably '+'means the DOM was unexpectedly mutated (e.g., by the browser), '+'usually due to forgetting a when using tables, nesting tags '+'like ,

, or , or using non-SVG elements in an '+'parent. '+'Try inspecting the child nodes of the element with React ID `%s`.',targetID,ReactMount.getID(ancestorNode)):invariant(false):undefined;},_mountImageIntoNode:function _mountImageIntoNode(markup,container,shouldReuseMarkup,transaction){!(container&&(container.nodeType===ELEMENT_NODE_TYPE||container.nodeType===DOC_NODE_TYPE||container.nodeType===DOCUMENT_FRAGMENT_NODE_TYPE))?process.env.NODE_ENV!=='production'?invariant(false,'mountComponentIntoNode(...): Target container is not valid.'):invariant(false):undefined;if(shouldReuseMarkup){var rootElement=getReactRootElementInContainer(container);if(ReactMarkupChecksum.canReuseMarkup(markup,rootElement)){return;}else{var checksum=rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);var rootMarkup=rootElement.outerHTML;rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME,checksum);var normalizedMarkup=markup;if(process.env.NODE_ENV!=='production'){// because rootMarkup is retrieved from the DOM, various normalizations +// will have occurred which will not be present in `markup`. Here, +// insert markup into a

or