Commit 1b16a19d authored by Cheng Lou's avatar Cheng Lou

Upgrade to React 0.4, fully compilant

- Compilant with coding style.
- Removed app.css. No need anymore since we freed id.
- Render info footer separately (specs).
- Tweak footer to make it pass jshint when compiled:
  - {''} after 'left'.
  - {''} around `clear completed`.
  - Breaking style for footer clearButton, `>` on the same line.
- Rename cx and put it in Utils.
- Routing with director.
- Change some keyUp to keyDown (specs).
- Strip form tags (specs? Referred to the stable ones).
- Trim after editing item.
- Manually autofocus (attribute not supported in ie9).
- Input focus now triggers as a callback (because of batch rendering).
- Controlled input.
- Gutter at 80.
- Class `completed` trim whitespace.
- Remove bind.
parent 26bdbb2d
......@@ -3,6 +3,6 @@
"version": "0.0.0",
"dependencies": {
"todomvc-common": "~0.1.7",
"react": "~0.3.2"
"react": "~0.4.0"
}
}
{
"name": "react",
"version": "0.4.0",
"main": "react.js",
"homepage": "https://github.com/facebook/react-bower",
"_release": "0.4.0",
"_resolution": {
"type": "version",
"tag": "v0.4.0",
"commit": "54334ad626d26dff4c214d308cefd30ad80fb8e9"
},
"_source": "git://github.com/facebook/react-bower.git",
"_target": "~0.4.0"
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "react",
"version": "0.4.0",
"main": "react.js"
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* React v0.4.0
*
* Copyright 2013 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
!function(e){if("function"==typeof bootstrap)bootstrap("react",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeReact=e}else"undefined"!=typeof window?window.React=e():global.React=e()}(function(){return function(e,t,n){function r(n,i){if(!t[n]){if(!e[n]){var a="function"==typeof require&&require;if(!i&&a)return a(n,!0);if(o)return o(n,!0);throw new Error("Cannot find module '"+n+"'")}var s=t[n]={exports:{}};e[n][0].call(s.exports,function(t){var o=e[n][1][t];return r(o?o:t)},s,s.exports)}return t[n].exports}for(var o="function"==typeof require&&require,i=0;i<n.length;i++)r(n[i]);return r}({1:[function(e,t){function n(e){var t=r(e);if(!t)throw new Error(o('Tried to get element with id of "%s" but it is not present on the page.',e));return t}var r=e("./ge"),o=e("./ex");t.exports=n},{"./ex":66,"./ge":69}],2:[function(e,t){"use strict";var n={fillOpacity:!0,fontWeight:!0,opacity:!0,orphans:!0,zIndex:!0,zoom:!0},r={background:{backgroundImage:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundColor:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0}},o={isUnitlessNumber:n,shorthandPropertyExpansions:r};t.exports=o},{}],3:[function(e,t){"use strict";var n=e("./CSSProperty"),r=e("./dangerousStyleValue"),o=e("./escapeTextForBrowser"),i=e("./hyphenate"),a=e("./memoizeStringOnly"),s=a(function(e){return o(i(e))}),u={createMarkupForStyles:function(e){var t="";for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];null!=o&&(t+=s(n)+":",t+=r(n,o)+";")}return t||null},setValueForStyles:function(e,t){var o=e.style;for(var i in t)if(t.hasOwnProperty(i)){var a=r(i,t[i]);if(a)o[i]=a;else{var s=n.shorthandPropertyExpansions[i];if(s)for(var u in s)o[u]="";else o[i]=""}}}};t.exports=u},{"./CSSProperty":2,"./dangerousStyleValue":63,"./escapeTextForBrowser":65,"./hyphenate":73,"./memoizeStringOnly":80}],4:[function(e,t){"use strict";var n={},r={putListener:function(e,t,r){var o=n[t]||(n[t]={});o[e]=r},getListener:function(e,t){var r=n[t];return r&&r[e]},deleteListener:function(e,t){var r=n[t];r&&delete r[e]},deleteAllListeners:function(e){for(var t in n)delete n[t][e]},__purge:function(){n={}}};t.exports=r},{}],5:[function(e,t){!function(){"use strict";function n(e){return"SELECT"===e.nodeName||"INPUT"===e.nodeName&&"file"===e.type}function r(e){var t=D.getPooled(O.change,_,e);C.accumulateTwoPhaseDispatches(t),y.enqueueEvents(t),y.processEventQueue()}function o(e,t){I=e,_=t,I.attachEvent("onchange",r)}function i(){I&&(I.detachEvent("onchange",r),I=null,_=null)}function a(e,t,n){return e===b.topChange?n:void 0}function s(e,t,n){e===b.topFocus?(i(),o(t,n)):e===b.topBlur&&i()}function u(e){return"INPUT"===e.nodeName&&x[e.type]||"TEXTAREA"===e.nodeName}function l(e,t){I=e,_=t,N=e.value,P=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(I,"value",A),I.attachEvent("onpropertychange",p)}function c(){I&&(delete I.value,I.detachEvent("onpropertychange",p),I=null,_=null,N=null,P=null)}function p(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==N&&(N=t,r(e))}}function d(e,t,n){return e===b.topInput?n:void 0}function h(e,t,n){e===b.topFocus?(c(),l(t,n)):e===b.topBlur&&c()}function f(e){return e!==b.topSelectionChange&&e!==b.topKeyUp&&e!==b.topKeyDown||!I||I.value===N?void 0:(N=I.value,_)}function v(e){return"INPUT"===e.nodeName&&("checkbox"===e.type||"radio"===e.type)}function m(e,t,n){return e===b.topClick?n:void 0}var g=e("./EventConstants"),y=e("./EventPluginHub"),C=e("./EventPropagators"),E=e("./ExecutionEnvironment"),D=e("./SyntheticEvent"),M=e("./isEventSupported"),R=e("./keyOf"),b=g.topLevelTypes,O={change:{phasedRegistrationNames:{bubbled:R({onChange:null}),captured:R({onChangeCapture:null})}}},I=null,_=null,N=null,P=null,T=!1;E.canUseDOM&&(T=M("change")&&(!("documentMode"in document)||document.documentMode>8));var S=!1;E.canUseDOM&&(S=M("input")&&(!("documentMode"in document)||document.documentMode>9));var x={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0},A={get:function(){return P.get.call(this)},set:function(e){N=""+e,P.set.call(this,e)}},w={eventTypes:O,extractEvents:function(e,t,r,o){var i,l;if(n(t)?T?i=a:l=s:u(t)?S?i=d:(i=f,l=h):v(t)&&(i=m),i){var c=i(e,t,r);if(c){var p=D.getPooled(O.change,c,o);return C.accumulateTwoPhaseDispatches(p),p}}l&&l(e,t,r)}};t.exports=w}()},{"./EventConstants":13,"./EventPluginHub":15,"./EventPropagators":18,"./ExecutionEnvironment":19,"./SyntheticEvent":50,"./isEventSupported":76,"./keyOf":79}],6:[function(e,t){!function(){"use strict";var n=e("./Danger"),r=e("./insertNodeAt"),o=e("./keyOf");e("./throwIf");var i=o({moveFrom:null}),a=o({insertMarkup:null}),s=o({removeAt:null}),u=function(e,t){for(var n,r,o,a=0;a<t.length;a++)r=t[a],i in r?(n=n||[],o=r.moveFrom,n[o]=e.childNodes[o]):s in r&&(n=n||[],o=r.removeAt,n[o]=e.childNodes[o]);return n},l=function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r&&e.removeChild(t[n])}},c=function(e,t,o){for(var u,l,c,p=0;p<t.length;p++)if(c=t[p],i in c)u=o[c.moveFrom],l=c.finalIndex,r(e,u,l);else if(s in c);else if(a in c){l=c.finalIndex;var d=c.insertMarkup;n.dangerouslyInsertMarkupAt(e,d,l)}},p=function(e,t){var n=u(e,t);n&&l(e,n),c(e,t,n)},d={dangerouslyReplaceNodeWithMarkup:n.dangerouslyReplaceNodeWithMarkup,manageChildren:p};t.exports=d}()},{"./Danger":9,"./insertNodeAt":74,"./keyOf":79,"./throwIf":86}],7:[function(e,t){"use strict";var n=e("./invariant"),r={MUST_USE_ATTRIBUTE:1,MUST_USE_PROPERTY:2,HAS_BOOLEAN_VALUE:4,HAS_SIDE_EFFECTS:8,injectDOMPropertyConfig:function(e){var t=e.Properties||{},o=e.DOMAttributeNames||{},a=e.DOMPropertyNames||{},s=e.DOMMutationMethods||{};e.isCustomAttribute&&i._isCustomAttributeFunctions.push(e.isCustomAttribute);for(var u in t){n(!i.isStandardName[u]),i.isStandardName[u]=!0,i.getAttributeName[u]=o[u]||u.toLowerCase(),i.getPropertyName[u]=a[u]||u;var l=s[u];l&&(i.getMutationMethod[u]=l);var c=t[u];i.mustUseAttribute[u]=c&r.MUST_USE_ATTRIBUTE,i.mustUseProperty[u]=c&r.MUST_USE_PROPERTY,i.hasBooleanValue[u]=c&r.HAS_BOOLEAN_VALUE,i.hasSideEffects[u]=c&r.HAS_SIDE_EFFECTS,n(!i.mustUseAttribute[u]||!i.mustUseProperty[u]),n(i.mustUseProperty[u]||!i.hasSideEffects[u])}}},o={},i={isStandardName:{},getAttributeName:{},getPropertyName:{},getMutationMethod:{},mustUseAttribute:{},mustUseProperty:{},hasBooleanValue:{},hasSideEffects:{},_isCustomAttributeFunctions:[],isCustomAttribute:function(e){return i._isCustomAttributeFunctions.some(function(t){return t.call(null,e)})},getDefaultValueForProperty:function(e,t){var n,r=o[e];return r||(o[e]=r={}),t in r||(n=document.createElement(e),r[t]=n[t]),r[t]},injection:r};t.exports=i},{"./invariant":75}],8:[function(e,t){"use strict";var n=e("./DOMProperty"),r=e("./escapeTextForBrowser"),o=e("./memoizeStringOnly"),i=o(function(e){return r(e)+'="'}),a={createMarkupForProperty:function(e,t){if(n.isStandardName[e]){if(null==t||n.hasBooleanValue[e]&&!t)return"";var o=n.getAttributeName[e];return i(o)+r(t)+'"'}return n.isCustomAttribute(e)?null==t?"":i(e)+r(t)+'"':null},setValueForProperty:function(e,t,r){if(n.isStandardName[t]){var o=n.getMutationMethod[t];if(o)o(e,r);else if(n.mustUseAttribute[t])n.hasBooleanValue[t]&&!r?e.removeAttribute(n.getAttributeName[t]):e.setAttribute(n.getAttributeName[t],r);else{var i=n.getPropertyName[t];n.hasSideEffects[t]&&e[i]===r||(e[i]=r)}}else n.isCustomAttribute(t)&&e.setAttribute(t,r)},deleteValueForProperty:function(e,t){if(n.isStandardName[t]){var r=n.getMutationMethod[t];if(r)r(e,void 0);else if(n.mustUseAttribute[t])e.removeAttribute(n.getAttributeName[t]);else{var o=n.getPropertyName[t];e[o]=n.getDefaultValueForProperty(e.nodeName,t)}}else n.isCustomAttribute(t)&&e.removeAttribute(t)}};t.exports=a},{"./DOMProperty":7,"./escapeTextForBrowser":65,"./memoizeStringOnly":80}],9:[function(e,t){"use strict";function n(e){var t=u,n=e.substring(1,e.indexOf(" ")),r=l[n.toLowerCase()]||c;if(r){t.innerHTML=r[1]+e+r[2];for(var o=r[0];o--;)t=t.lastChild}else t.innerHTML=e;return t.childNodes}function r(e,t,n){return n?n.nextSibling?e.insertBefore(t,n.nextSibling):e.appendChild(t):e.insertBefore(t,e.firstChild)}function o(e,t,n){for(var o,i=t.length,a=0;i>a;a++)o=r(e,t[0],o||n)}function i(e,t,r){var i=n(t),a=r?e.childNodes[r-1]:null;o(e,i,a)}function a(e,t){var r=e.parentNode,o=n(t);r.replaceChild(o[0],e)}var s=e("./ExecutionEnvironment");e("./throwIf");var u=s.canUseDOM?document.createElement("div"):null,l={option:[1,'<select multiple="true">',"</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"]};l.optgroup=l.option,l.tbody=l.thead,l.tfoot=l.thead,l.colgroup=l.thead,l.caption=l.thead,l.th=l.td;var c=[1,"?<div>","</div>"];if(u){for(var p in l)l.hasOwnProperty(p)&&(u.innerHTML="<"+p+"></"+p+">",u.firstChild&&(l[p]=null));u.innerHTML="<link />",u.firstChild&&(c=null)}var d={dangerouslyInsertMarkupAt:i,dangerouslyReplaceNodeWithMarkup:a};t.exports=d},{"./ExecutionEnvironment":19,"./throwIf":86}],10:[function(e,t){"use strict";var n=e("./DOMProperty"),r=n.injection.MUST_USE_ATTRIBUTE,o=n.injection.MUST_USE_PROPERTY,i=n.injection.HAS_BOOLEAN_VALUE,a=n.injection.HAS_SIDE_EFFECTS,s={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accessKey:null,accept:null,action:null,ajaxify:r,allowFullScreen:r|i,alt:null,autoComplete:null,autoFocus:i,autoPlay:i,cellPadding:null,cellSpacing:null,checked:o|i,className:o,colSpan:null,contentEditable:null,contextMenu:r,controls:o|i,data:null,dateTime:r,dir:null,disabled:o|i,draggable:null,encType:null,height:r,hidden:r|i,href:null,htmlFor:null,icon:null,id:o,label:null,lang:null,list:null,max:null,maxLength:r,method:null,min:null,multiple:o|i,name:null,pattern:null,poster:null,preload:null,placeholder:null,radioGroup:null,rel:null,readOnly:o|i,required:i,role:r,scrollLeft:o,scrollTop:o,selected:o|i,size:null,spellCheck:null,src:null,step:null,style:null,tabIndex:null,target:null,title:null,type:null,value:o|a,width:r,wmode:r,cx:o,cy:o,d:o,fill:o,fx:o,fy:o,points:o,r:o,stroke:o,strokeLinecap:o,strokeWidth:o,transform:o,x:o,x1:o,x2:o,version:o,viewBox:o,y:o,y1:o,y2:o,spreadMethod:o,offset:o,stopColor:o,stopOpacity:o,gradientUnits:o,gradientTransform:o},DOMAttributeNames:{className:"class",htmlFor:"for",strokeLinecap:"stroke-linecap",strokeWidth:"stroke-width",stopColor:"stop-color",stopOpacity:"stop-opacity"},DOMPropertyNames:{autoComplete:"autocomplete",autoFocus:"autofocus",autoPlay:"autoplay",encType:"enctype",radioGroup:"radiogroup",spellCheck:"spellcheck"},DOMMutationMethods:{className:function(e,t){e.className=t||""}}};t.exports=s},{"./DOMProperty":7}],11:[function(e,t){"use strict";var n=e("./keyOf"),r=[n({ResponderEventPlugin:null}),n({SimpleEventPlugin:null}),n({TapEventPlugin:null}),n({EnterLeaveEventPlugin:null}),n({ChangeEventPlugin:null}),n({AnalyticsEventPlugin:null})];t.exports=r},{"./keyOf":79}],12:[function(e,t){!function(){"use strict";var n=e("./EventConstants"),r=e("./EventPropagators"),o=e("./ExecutionEnvironment"),i=e("./ReactInstanceHandles"),a=e("./SyntheticMouseEvent"),s=e("./ReactID"),u=e("./keyOf"),l=n.topLevelTypes,c=i.getFirstReactDOM,p={mouseEnter:{registrationName:u({onMouseEnter:null})},mouseLeave:{registrationName:u({onMouseLeave:null})}},d={eventTypes:p,extractEvents:function(e,t,n,i){if(e===l.topMouseOver&&(i.relatedTarget||i.fromElement))return null;if(e!==l.topMouseOut&&e!==l.topMouseOver)return null;var u,d;if(e===l.topMouseOut?(u=t,d=c(i.relatedTarget||i.toElement)||o.global):(u=o.global,d=t),u===d)return null;var h=u?s.getID(u):"",f=d?s.getID(d):"",v=a.getPooled(p.mouseLeave,h,i),m=a.getPooled(p.mouseEnter,f,i);return r.accumulateEnterLeaveDispatches(v,m,h,f),[v,m]}};t.exports=d}()},{"./EventConstants":13,"./EventPropagators":18,"./ExecutionEnvironment":19,"./ReactID":35,"./ReactInstanceHandles":37,"./SyntheticMouseEvent":53,"./keyOf":79}],13:[function(e,t){"use strict";var n=e("./keyMirror"),r=n({bubbled:null,captured:null}),o=n({topBlur:null,topChange:null,topClick:null,topDOMCharacterDataModified:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topFocus:null,topInput:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topScroll:null,topSelectionChange:null,topSubmit:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topWheel:null}),i={topLevelTypes:o,PropagationPhases:r};t.exports=i},{"./keyMirror":78}],14:[function(e,t){var n={listen:function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on"+t,n)},capture:function(e,t,n){e.addEventListener&&e.addEventListener(t,n,!0)}};t.exports=n},{}],15:[function(e,t){"use strict";var n=e("./CallbackRegistry"),r=e("./EventPluginRegistry"),o=e("./EventPluginUtils"),i=e("./EventPropagators"),a=e("./ExecutionEnvironment"),s=e("./accumulate"),u=e("./forEachAccumulated"),l=e("./invariant"),c=null,p=function(e){if(e){var t=o.executeDispatch,n=r.getPluginModuleForEvent(e);n&&n.executeDispatch&&(t=n.executeDispatch),o.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e)}},d={injection:{injectInstanceHandle:i.injection.injectInstanceHandle,injectEventPluginOrder:r.injectEventPluginOrder,injectEventPluginsByName:r.injectEventPluginsByName},registrationNames:r.registrationNames,putListener:n.putListener,getListener:n.getListener,deleteListener:n.deleteListener,deleteAllListeners:n.deleteAllListeners,extractEvents:function(e,t,n,o){for(var i,a=r.plugins,u=0,l=a.length;l>u;u++){var c=a[u];if(c){var p=c.extractEvents(e,t,n,o);p&&(i=s(i,p))}}return i},enqueueEvents:function(e){e&&(c=s(c,e))},processEventQueue:function(){var e=c;c=null,u(e,p),l(!c)}};a.canUseDOM&&(window.EventPluginHub=d),t.exports=d},{"./CallbackRegistry":4,"./EventPluginRegistry":16,"./EventPluginUtils":17,"./EventPropagators":18,"./ExecutionEnvironment":19,"./accumulate":60,"./forEachAccumulated":68,"./invariant":75}],16:[function(e,t){"use strict";function n(){if(a)for(var e in s){var t=s[e],n=a.indexOf(e);if(i(n>-1),!u.plugins[n]){i(t.extractEvents),u.plugins[n]=t;var o=t.eventTypes;for(var l in o)i(r(o[l],t))}}}function r(e,t){var n=e.phasedRegistrationNames;if(n){for(var r in n)if(n.hasOwnProperty(r)){var i=n[r];o(i,t)}return!0}return e.registrationName?(o(e.registrationName,t),!0):!1}function o(e,t){i(!u.registrationNames[e]),u.registrationNames[e]=t,u.registrationNamesKeys.push(e)}var i=e("./invariant"),a=null,s={},u={plugins:[],registrationNames:{},registrationNamesKeys:[],injectEventPluginOrder:function(e){i(!a),a=Array.prototype.slice.call(e),n()},injectEventPluginsByName:function(e){var t=!1;for(var r in e)if(e.hasOwnProperty(r)){var o=e[r];s[r]!==o&&(i(!s[r]),s[r]=o,t=!0)}t&&n()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return u.registrationNames[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var r=u.registrationNames[t.phasedRegistrationNames[n]];if(r)return r}return null},_resetEventPlugins:function(){a=null;for(var e in s)s.hasOwnProperty(e)&&delete s[e];u.plugins.length=0;var t=u.registrationNames;for(var n in t)t.hasOwnProperty(n)&&delete t[n];u.registrationNamesKeys.length=0}};t.exports=u},{"./invariant":75}],17:[function(e,t){"use strict";function n(e){return e===h.topMouseUp||e===h.topTouchEnd||e===h.topTouchCancel}function r(e){return e===h.topMouseMove||e===h.topTouchMove}function o(e){return e===h.topMouseDown||e===h.topTouchStart}function i(e,t){var n=e._dispatchListeners,r=e._dispatchIDs;if(Array.isArray(n))for(var o=0;o<n.length&&!e.isPropagationStopped();o++)t(e,n[o],r[o]);else n&&t(e,n,r)}function a(e,t,n){t(e,n)}function s(e,t){i(e,t),e._dispatchListeners=null,e._dispatchIDs=null}function u(e){var t=e._dispatchListeners,n=e._dispatchIDs;if(Array.isArray(t)){for(var r=0;r<t.length&&!e.isPropagationStopped();r++)if(t[r](e,n[r]))return n[r]}else if(t&&t(e,n))return n;return null}function l(e){var t=e._dispatchListeners,n=e._dispatchIDs;d(!Array.isArray(t));var r=t?t(e,n):null;return e._dispatchListeners=null,e._dispatchIDs=null,r}function c(e){return!!e._dispatchListeners}var p=e("./EventConstants"),d=e("./invariant"),h=p.topLevelTypes,f={isEndish:n,isMoveish:r,isStartish:o,executeDispatchesInOrder:s,executeDispatchesInOrderStopAtTrue:u,executeDirectDispatch:l,hasDispatches:c,executeDispatch:a};t.exports=f},{"./EventConstants":13,"./invariant":75}],18:[function(e,t){"use strict";function n(e,t,n){var r=t.dispatchConfig.phasedRegistrationNames[n];return f(e,r)}function r(e,t,r){var o=t?v.bubbled:v.captured,i=n(e,r,o);i&&(r._dispatchListeners=d(r._dispatchListeners,i),r._dispatchIDs=d(r._dispatchIDs,e))}function o(e){e&&e.dispatchConfig.phasedRegistrationNames&&m.InstanceHandle.traverseTwoPhase(e.dispatchMarker,r,e)}function i(e,t,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,o=f(e,r);o&&(n._dispatchListeners=d(n._dispatchListeners,o),n._dispatchIDs=d(n._dispatchIDs,e))}}function a(e){e&&e.dispatchConfig.registrationName&&i(e.dispatchMarker,null,e)}function s(e){h(e,o)}function u(e,t,n,r){m.InstanceHandle.traverseEnterLeave(n,r,i,e,t)}function l(e){h(e,a)}var c=e("./CallbackRegistry"),p=e("./EventConstants"),d=e("./accumulate"),h=e("./forEachAccumulated"),f=c.getListener,v=p.PropagationPhases,m={InstanceHandle:null,injectInstanceHandle:function(e){m.InstanceHandle=e},validate:function(){var e=!m.InstanceHandle||!m.InstanceHandle.traverseTwoPhase||!m.InstanceHandle.traverseEnterLeave;if(e)throw new Error("InstanceHandle not injected before use!")}},g={accumulateTwoPhaseDispatches:s,accumulateDirectDispatches:l,accumulateEnterLeaveDispatches:u,injection:m};t.exports=g},{"./CallbackRegistry":4,"./EventConstants":13,"./accumulate":60,"./forEachAccumulated":68}],19:[function(e,t){!function(){"use strict";var e="undefined"!=typeof window,n={canUseDOM:e,canUseWorkers:"undefined"!=typeof Worker,isInWorker:!e,global:new Function("return this;")()};t.exports=n}()},{}],20:[function(e,t){"use strict";var n=function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)},r=function(e,t){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,e,t),r}return new n(e,t)},o=function(e,t,n){var r=this;if(r.instancePool.length){var o=r.instancePool.pop();return r.call(o,e,t,n),o}return new r(e,t,n)},i=function(e,t,n,r,o){var i=this;if(i.instancePool.length){var a=i.instancePool.pop();return i.call(a,e,t,n,r,o),a}return new i(e,t,n,r,o)},a=function(e){var t=this;e.destructor&&e.destructor(),t.instancePool.length<t.poolSize&&t.instancePool.push(e)},s=10,u=n,l=function(e,t){var n=e;return n.instancePool=[],n.getPooled=t||u,n.poolSize||(n.poolSize=s),n.release=a,n},c={addPoolingTo:l,oneArgumentPooler:n,twoArgumentPooler:r,threeArgumentPooler:o,fiveArgumentPooler:i};t.exports=c},{}],21:[function(e,t){"use strict";var n=e("./ReactCompositeComponent"),r=e("./ReactComponent"),o=e("./ReactDOM"),i=e("./ReactMount"),a=e("./ReactPropTypes"),s=e("./ReactServerRendering"),u=e("./ReactDefaultInjection");u.inject();var l={DOM:o,PropTypes:a,initializeTouchEvents:function(e){i.useTouchEvents=e},autoBind:n.autoBind,createClass:n.createClass,constructAndRenderComponent:i.constructAndRenderComponent,constructAndRenderComponentByID:i.constructAndRenderComponentByID,renderComponent:i.renderComponent,renderComponentToString:s.renderComponentToString,unmountAndReleaseReactRootNode:i.unmountAndReleaseReactRootNode,isValidComponent:r.isValidComponent};t.exports=l},{"./ReactComponent":22,"./ReactCompositeComponent":23,"./ReactDOM":25,"./ReactDefaultInjection":32,"./ReactMount":38,"./ReactPropTypes":44,"./ReactServerRendering":46}],22:[function(e,t){"use strict";var n=e("./ReactCurrentOwner"),r=e("./ReactDOMIDOperations"),o=e("./ReactID"),i=e("./ReactMount"),a=e("./ReactOwner"),s=e("./ReactReconcileTransaction"),u=e("./ReactUpdates"),l=e("./invariant"),c=e("./keyMirror"),p=e("./merge"),d="{owner}",h=c({MOUNTED:null,UNMOUNTED:null}),f={isValidComponent:function(e){return!(!e||"function"!=typeof e.mountComponentIntoNode||"function"!=typeof e.receiveProps)},getKey:function(e,t){return e&&e.props&&null!=e.props.key?""+e.props.key:""+t},LifeCycle:h,DOMIDOperations:r,ReactReconcileTransaction:s,setDOMOperations:function(e){f.DOMIDOperations=e},setReactReconcileTransaction:function(e){f.ReactReconcileTransaction=e},Mixin:{isMounted:function(){return this._lifeCycleState===h.MOUNTED},getDOMNode:function(){return l(this.isMounted()),o.getNode(this._rootNodeID)},setProps:function(e,t){this.replaceProps(p(this._pendingProps||this.props,e),t)},replaceProps:function(e,t){l(!this.props[d]),this._pendingProps=e,u.enqueueUpdate(this,t)},construct:function(e,t){this.props=e||{},this.props[d]=n.current,this._lifeCycleState=h.UNMOUNTED,this._pendingProps=null,this._pendingCallbacks=null;var r=arguments.length-1;if(1===r)this.props.children=t;else if(r>1){for(var o=Array(r),i=0;r>i;i++)o[i]=arguments[i+1];this.props.children=o}},mountComponent:function(e){l(!this.isMounted());var t=this.props;null!=t.ref&&a.addComponentAsRefTo(this,t.ref,t[d]),this._rootNodeID=e,this._lifeCycleState=h.MOUNTED},unmountComponent:function(){l(this.isMounted());var e=this.props;null!=e.ref&&a.removeComponentAsRefFrom(this,e.ref,e[d]),o.purgeID(this._rootNodeID),this._rootNodeID=null,this._lifeCycleState=h.UNMOUNTED},receiveProps:function(e,t){l(this.isMounted()),this._pendingProps=e,this._performUpdateIfNecessary(t)},performUpdateIfNecessary:function(){var e=f.ReactReconcileTransaction.getPooled();e.perform(this._performUpdateIfNecessary,this,e),f.ReactReconcileTransaction.release(e)},_performUpdateIfNecessary:function(e){if(null!=this._pendingProps){var t=this.props;this.props=this._pendingProps,this._pendingProps=null,this.updateComponent(e,t)}},updateComponent:function(e,t){var n=this.props;(n[d]!==t[d]||n.ref!==t.ref)&&(null!=t.ref&&a.removeComponentAsRefFrom(this,t.ref,t[d]),null!=n.ref&&a.addComponentAsRefTo(this,n.ref,n[d]))},mountComponentIntoNode:function(e,t,n){var r=f.ReactReconcileTransaction.getPooled();r.perform(this._mountComponentIntoNode,this,e,t,r,n),f.ReactReconcileTransaction.release(r)},_mountComponentIntoNode:function(e,t,n,r){l(t&&1===t.nodeType);var o=Date.now(),a=this.mountComponent(e,n);if(i.totalInstantiationTime+=Date.now()-o,!r){var s=Date.now(),u=t.parentNode;if(u){var c=t.nextSibling;u.removeChild(t),t.innerHTML=a,c?u.insertBefore(t,c):u.appendChild(t)}else t.innerHTML=a;i.totalInjectionTime+=Date.now()-s}},unmountComponentFromNode:function(e){for(this.unmountComponent();e.lastChild;)e.removeChild(e.lastChild)},isOwnedBy:function(e){return this.props[d]===e},getSiblingByRef:function(e){var t=this.props[d];return t&&t.refs?t.refs[e]:null}}};t.exports=f},{"./ReactCurrentOwner":24,"./ReactDOMIDOperations":27,"./ReactID":35,"./ReactMount":38,"./ReactOwner":42,"./ReactReconcileTransaction":45,"./ReactUpdates":48,"./invariant":75,"./keyMirror":78,"./merge":81}],23:[function(e,t){!function(){"use strict";function n(e,t){var n=m[t];C.hasOwnProperty(t)&&p(n===v.OVERRIDE_BASE),e.hasOwnProperty(t)&&p(n===v.DEFINE_MANY)}function r(e){var t=e._compositeLifeCycleState;p(e.isMounted()||t===y.MOUNTING),p(t!==y.RECEIVING_STATE&&t!==y.UNMOUNTING)}function o(e,t){var r=e.prototype;for(var o in t){var a=t[o];if(t.hasOwnProperty(o)&&a)if(n(r,o),g.hasOwnProperty(o))g[o](e,a);else{var s=o in m,u=o in r,l=a.__reactDontBind,c="function"==typeof a,p=c&&!s&&!u&&!l;p?(r.__reactAutoBindMap||(r.__reactAutoBindMap={}),r.__reactAutoBindMap[o]=a,r[o]=a):r[o]=u?i(r[o],a):a}}}function i(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}var a=e("./ReactComponent"),s=e("./ReactCurrentOwner"),u=e("./ReactOwner"),l=e("./ReactPropTransferer"),c=e("./ReactUpdates"),p=e("./invariant"),d=e("./keyMirror"),h=e("./merge"),f=e("./mixInto"),v=d({DEFINE_ONCE:null,DEFINE_MANY:null,OVERRIDE_BASE:null}),m={mixins:v.DEFINE_MANY,propTypes:v.DEFINE_ONCE,getDefaultProps:v.DEFINE_ONCE,getInitialState:v.DEFINE_ONCE,render:v.DEFINE_ONCE,componentWillMount:v.DEFINE_MANY,componentDidMount:v.DEFINE_MANY,componentWillReceiveProps:v.DEFINE_MANY,shouldComponentUpdate:v.DEFINE_ONCE,componentWillUpdate:v.DEFINE_MANY,componentDidUpdate:v.DEFINE_MANY,componentWillUnmount:v.DEFINE_MANY,updateComponent:v.OVERRIDE_BASE},g={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n<t.length;n++)o(e,t[n])},propTypes:function(e,t){e.propTypes=t}},y=d({MOUNTING:null,UNMOUNTING:null,RECEIVING_PROPS:null,RECEIVING_STATE:null}),C={construct:function(){a.Mixin.construct.apply(this,arguments),this.state=null,this._pendingState=null,this._compositeLifeCycleState=null},isMounted:function(){return a.Mixin.isMounted.call(this)&&this._compositeLifeCycleState!==y.MOUNTING},mountComponent:function(e,t){a.Mixin.mountComponent.call(this,e,t),this._compositeLifeCycleState=y.MOUNTING,this._defaultProps=this.getDefaultProps?this.getDefaultProps():null,this._processProps(this.props),this.__reactAutoBindMap&&this._bindAutoBindMethods(),this.state=this.getInitialState?this.getInitialState():null,this._pendingState=null,this._pendingForceUpdate=!1,this.componentWillMount&&(this.componentWillMount(),this._pendingState&&(this.state=this._pendingState,this._pendingState=null)),this._renderedComponent=this._renderValidatedComponent(),this._compositeLifeCycleState=null;var n=this._renderedComponent.mountComponent(e,t);return this.componentDidMount&&t.getReactOnDOMReady().enqueue(this,this.componentDidMount),n},unmountComponent:function(){this._compositeLifeCycleState=y.UNMOUNTING,this.componentWillUnmount&&this.componentWillUnmount(),this._compositeLifeCycleState=null,this._defaultProps=null,a.Mixin.unmountComponent.call(this),this._renderedComponent.unmountComponent(),this._renderedComponent=null,this.refs&&(this.refs=null)},setState:function(e,t){this.replaceState(h(this._pendingState||this.state,e),t)},replaceState:function(e,t){r(this),this._pendingState=e,c.enqueueUpdate(this,t)},_processProps:function(e){var t,n=this._defaultProps;for(t in n)t in e||(e[t]=n[t]);var r=this.constructor.propTypes;if(r){var o=this.constructor.displayName;for(t in r){var i=r[t];i&&i(e,t,o)}}},performUpdateIfNecessary:function(){var e=this._compositeLifeCycleState;e!==y.MOUNTING&&e!==y.RECEIVING_PROPS&&a.Mixin.performUpdateIfNecessary.call(this)},_performUpdateIfNecessary:function(e){if(null!=this._pendingProps||null!=this._pendingState||this._pendingForceUpdate){var t=this.props;null!=this._pendingProps&&(t=this._pendingProps,this._processProps(t),this._pendingProps=null,this._compositeLifeCycleState=y.RECEIVING_PROPS,this.componentWillReceiveProps&&this.componentWillReceiveProps(t,e)),this._compositeLifeCycleState=y.RECEIVING_STATE;var n=this._pendingState||this.state;this._pendingState=null,this._pendingForceUpdate||!this.shouldComponentUpdate||this.shouldComponentUpdate(t,n)?(this._pendingForceUpdate=!1,this._performComponentUpdate(t,n,e)):(this.props=t,this.state=n),this._compositeLifeCycleState=null}},_performComponentUpdate:function(e,t,n){var r=this.props,o=this.state;this.componentWillUpdate&&this.componentWillUpdate(e,t,n),this.props=e,this.state=t,this.updateComponent(n,r,o),this.componentDidUpdate&&n.getReactOnDOMReady().enqueue(this,this.componentDidUpdate.bind(this,r,o))},updateComponent:function(e,t){a.Mixin.updateComponent.call(this,e,t);var n=this._renderedComponent,r=this._renderValidatedComponent();if(n.constructor===r.constructor)n.receiveProps(r.props,e);else{var o=this._rootNodeID,i=n._rootNodeID;n.unmountComponent();var s=r.mountComponent(o,e);a.DOMIDOperations.dangerouslyReplaceNodeWithMarkupByID(i,s),this._renderedComponent=r}},forceUpdate:function(e){var t=this._compositeLifeCycleState;p(this.isMounted()||t===y.MOUNTING),p(t!==y.RECEIVING_STATE&&t!==y.UNMOUNTING),this._pendingForceUpdate=!0,c.enqueueUpdate(this,e)},_renderValidatedComponent:function(){var e;s.current=this;try{e=this.render()}catch(t){throw t}finally{s.current=null}return p(a.isValidComponent(e)),e},_bindAutoBindMethods:function(){for(var e in this.__reactAutoBindMap)if(this.__reactAutoBindMap.hasOwnProperty(e)){var t=this.__reactAutoBindMap[e];this[e]=this._bindAutoBindMethod(t)}},_bindAutoBindMethod:function(e){var t=this,n=function(){return e.apply(t,arguments)};return n}},E=function(){};f(E,a.Mixin),f(E,u.Mixin),f(E,l.Mixin),f(E,C);var D={LifeCycle:y,Base:E,createClass:function(e){var t=function(){};t.prototype=new E,t.prototype.constructor=t,o(t,e),p(t.prototype.render);for(var n in m)t.prototype[n]||(t.prototype[n]=null);var r=function(){var e=new t;return e.construct.apply(e,arguments),e};return r.componentConstructor=t,r.originalSpec=e,r},autoBind:function(e){return e}};t.exports=D}()},{"./ReactComponent":22,"./ReactCurrentOwner":24,"./ReactOwner":42,"./ReactPropTransferer":43,"./ReactUpdates":48,"./invariant":75,"./keyMirror":78,"./merge":81,"./mixInto":84}],24:[function(e,t){"use strict";var n={current:null};t.exports=n},{}],25:[function(e,t){"use strict";function n(e,t){var n=function(){};n.prototype=new r(e,t),n.prototype.constructor=n;var o=function(){var e=new n;return e.construct.apply(e,arguments),e};return o.componentConstructor=n,o}var r=e("./ReactNativeComponent"),o=e("./mergeInto"),i=e("./objMapKeyVal"),a=i({a:!1,abbr:!1,address:!1,area:!1,article:!1,aside:!1,audio:!1,b:!1,base:!1,bdi:!1,bdo:!1,big:!1,blockquote:!1,body:!1,br:!0,button:!1,canvas:!1,caption:!1,cite:!1,code:!1,col:!0,colgroup:!1,data:!1,datalist:!1,dd:!1,del:!1,details:!1,dfn:!1,div:!1,dl:!1,dt:!1,em:!1,embed:!0,fieldset:!1,figcaption:!1,figure:!1,footer:!1,form:!1,h1:!1,h2:!1,h3:!1,h4:!1,h5:!1,h6:!1,head:!1,header:!1,hr:!0,html:!1,i:!1,iframe:!1,img:!0,input:!0,ins:!1,kbd:!1,keygen:!0,label:!1,legend:!1,li:!1,link:!1,main:!1,map:!1,mark:!1,menu:!1,menuitem:!1,meta:!0,meter:!1,nav:!1,noscript:!1,object:!1,ol:!1,optgroup:!1,option:!1,output:!1,p:!1,param:!0,pre:!1,progress:!1,q:!1,rp:!1,rt:!1,ruby:!1,s:!1,samp:!1,script:!1,section:!1,select:!1,small:!1,source:!1,span:!1,strong:!1,style:!1,sub:!1,summary:!1,sup:!1,table:!1,tbody:!1,td:!1,textarea:!1,tfoot:!1,th:!1,thead:!1,time:!1,title:!1,tr:!1,track:!0,u:!1,ul:!1,"var":!1,video:!1,wbr:!1,circle:!1,g:!1,line:!1,path:!1,polyline:!1,rect:!1,svg:!1,text:!1},n),s={injectComponentClasses:function(e){o(a,e)}};a.injection=s,t.exports=a},{"./ReactNativeComponent":40,"./mergeInto":83,"./objMapKeyVal":85}],26:[function(e,t){"use strict";var n=e("./ReactCompositeComponent"),r=e("./ReactDOM"),o=e("./ReactEventEmitter"),i=e("./EventConstants"),a=r.form,s=n.createClass({render:function(){return this.transferPropsTo(a(null,this.props.children))},componentDidMount:function(e){o.trapBubbledEvent(i.topLevelTypes.topSubmit,"submit",e)}});t.exports=s},{"./EventConstants":13,"./ReactCompositeComponent":23,"./ReactDOM":25,"./ReactEventEmitter":33}],27:[function(e,t){!function(){"use strict";var n=e("./CSSPropertyOperations"),r=e("./DOMChildrenOperations"),o=e("./DOMPropertyOperations"),i=e("./ReactID"),a=e("./getTextContentAccessor"),s=e("./invariant"),u={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},l=a()||"NA",c={updatePropertyByID:function(e,t,n){var r=i.getNode(e);
s(!u.hasOwnProperty(t)),o.setValueForProperty(r,t,n)},deletePropertyByID:function(e,t,n){var r=i.getNode(e);s(!u.hasOwnProperty(t)),o.deleteValueForProperty(r,t,n)},updatePropertiesByID:function(e,t){for(var n in t)t.hasOwnProperty(n)&&c.updatePropertiesByID(e,n,t[n])},updateStylesByID:function(e,t){var r=i.getNode(e);n.setValueForStyles(r,t)},updateInnerHTMLByID:function(e,t){var n=i.getNode(e);n.innerHTML=(t&&t.__html||"").replace(/^ /g,"&nbsp;")},updateTextContentByID:function(e,t){var n=i.getNode(e);n[l]=t},dangerouslyReplaceNodeWithMarkupByID:function(e,t){var n=i.getNode(e);r.dangerouslyReplaceNodeWithMarkup(n,t)},manageChildrenByParentID:function(e,t){var n=i.getNode(e);r.manageChildren(n,t)}};t.exports=c}()},{"./CSSPropertyOperations":3,"./DOMChildrenOperations":6,"./DOMPropertyOperations":8,"./ReactID":35,"./getTextContentAccessor":71,"./invariant":75}],28:[function(e,t){"use strict";var n=e("./DOMPropertyOperations"),r=e("./ReactCompositeComponent"),o=e("./ReactDOM"),i=e("./merge"),a=o.input,s=r.createClass({getInitialState:function(){return{checked:this.props.defaultChecked||!1,value:this.props.defaultValue||""}},shouldComponentUpdate:function(){return!this._isChanging},getChecked:function(){return null!=this.props.checked?this.props.checked:this.state.checked},getValue:function(){return null!=this.props.value?""+this.props.value:this.state.value},render:function(){var e=i(this.props);return e.checked=this.getChecked(),e.value=this.getValue(),e.onChange=this.handleChange,a(e,this.props.children)},componentDidUpdate:function(e,t,r){null!=this.props.checked&&n.setValueForProperty(r,"checked",this.props.checked||!1),null!=this.props.value&&n.setValueForProperty(r,"value",""+this.props.value||"")},handleChange:function(e){var t;return this.props.onChange&&(this._isChanging=!0,t=this.props.onChange(e),this._isChanging=!1),this.setState({checked:e.target.checked,value:e.target.value}),t}});t.exports=s},{"./DOMPropertyOperations":8,"./ReactCompositeComponent":23,"./ReactDOM":25,"./merge":81}],29:[function(e,t){"use strict";var n=e("./ReactCompositeComponent"),r=e("./ReactDOM"),o=r.option,i=n.createClass({componentWillMount:function(){null!=this.props.selected},render:function(){return o(this.props,this.props.children)}});t.exports=i},{"./ReactCompositeComponent":23,"./ReactDOM":25}],30:[function(e,t){"use strict";function n(e,t){null!=e[t]&&(e.multiple?a(Array.isArray(e[t])):a(!Array.isArray(e[t])))}function r(){if(null!=this.props.value)for(var e=this.getDOMNode().options,t=""+this.props.value,n=0,r=e.length;r>n;n++){var o=this.props.multiple?t.indexOf(e[n].value)>=0:o=e[n].value===t;o!==e[n].selected&&(e[n].selected=o)}}var o=e("./ReactCompositeComponent"),i=e("./ReactDOM"),a=e("./invariant"),s=e("./merge"),u=i.select,l=o.createClass({propTypes:{defaultValue:n,value:n},getInitialState:function(){return{value:this.props.defaultValue||(this.props.multiple?[]:"")}},componentWillReceiveProps:function(e){!this.props.multiple&&e.multiple?this.setState({value:[this.state.value]}):this.props.multiple&&!e.multiple&&this.setState({value:this.state.value[0]})},shouldComponentUpdate:function(){return!this._isChanging},render:function(){var e=s(this.props);return e.onChange=this.handleChange,e.value=null,u(e,this.props.children)},componentDidMount:r,componentDidUpdate:r,handleChange:function(e){var t;this.props.onChange&&(this._isChanging=!0,t=this.props.onChange(e),this._isChanging=!1);var n;if(this.props.multiple){n=[];for(var r=e.target.options,o=0,i=r.length;i>o;o++)r[o].selected&&n.push(r[o].value)}else n=e.target.value;return this.setState({value:n}),t}});t.exports=l},{"./ReactCompositeComponent":23,"./ReactDOM":25,"./invariant":75,"./merge":81}],31:[function(e,t){"use strict";var n=e("./DOMPropertyOperations"),r=e("./ReactCompositeComponent"),o=e("./ReactDOM"),i=e("./invariant"),a=e("./merge"),s=o.textarea,u={string:!0,number:!0},l=r.createClass({getInitialState:function(){var e=this.props.defaultValue,t=this.props.children;return null!=t&&(i(null==e),Array.isArray(t)&&(i(t.length<=1),t=t[0]),i(u[typeof t]),e=""+t),e=e||"",{initialValue:null!=this.props.value?this.props.value:e,value:e}},shouldComponentUpdate:function(){return!this._isChanging},getValue:function(){return null!=this.props.value?this.props.value:this.state.value},render:function(){var e=a(this.props);return i(null==e.dangerouslySetInnerHTML),e.value=this.getValue(),e.onChange=this.handleChange,s(e,this.state.initialValue)},componentDidUpdate:function(e,t,r){null!=this.props.value&&n.setValueForProperty(r,"value",this.props.value||"")},handleChange:function(e){var t;return this.props.onChange&&(this._isChanging=!0,t=this.props.onChange(e),this._isChanging=!1),this.setState({value:e.target.value}),t}});t.exports=l},{"./DOMPropertyOperations":8,"./ReactCompositeComponent":23,"./ReactDOM":25,"./invariant":75,"./merge":81}],32:[function(e,t){"use strict";function n(){f.injection.injectEventPluginOrder(p),f.injection.injectInstanceHandle(v),f.injection.injectEventPluginsByName({SimpleEventPlugin:m,EnterLeaveEventPlugin:d,ChangeEventPlugin:h}),r.injection.injectComponentClasses({form:o,input:i,option:a,select:s,textarea:u}),c.injection.injectDOMPropertyConfig(l)}var r=e("./ReactDOM"),o=e("./ReactDOMForm"),i=e("./ReactDOMInput"),a=e("./ReactDOMOption"),s=e("./ReactDOMSelect"),u=e("./ReactDOMTextarea"),l=e("./DefaultDOMPropertyConfig"),c=e("./DOMProperty"),p=e("./DefaultEventPluginOrder"),d=e("./EnterLeaveEventPlugin"),h=e("./ChangeEventPlugin"),f=e("./EventPluginHub"),v=e("./ReactInstanceHandles"),m=e("./SimpleEventPlugin");t.exports={inject:n}},{"./ChangeEventPlugin":5,"./DOMProperty":7,"./DefaultDOMPropertyConfig":10,"./DefaultEventPluginOrder":11,"./EnterLeaveEventPlugin":12,"./EventPluginHub":15,"./ReactDOM":25,"./ReactDOMForm":26,"./ReactDOMInput":28,"./ReactDOMOption":29,"./ReactDOMSelect":30,"./ReactDOMTextarea":31,"./ReactInstanceHandles":37,"./SimpleEventPlugin":49}],33:[function(e,t){!function(){"use strict";function n(e,t,n){s.listen(n,t,v.TopLevelCallbackCreator.createTopLevelCallback(e))}function r(e,t,n){s.capture(n,t,v.TopLevelCallbackCreator.createTopLevelCallback(e))}function o(){var e=p.refreshScrollValues;s.listen(window,"scroll",e),s.listen(window,"resize",e)}function i(e){d(!f);var t=a.topLevelTypes,i=document;o(),n(t.topMouseOver,"mouseover",i),n(t.topMouseDown,"mousedown",i),n(t.topMouseUp,"mouseup",i),n(t.topMouseMove,"mousemove",i),n(t.topMouseOut,"mouseout",i),n(t.topClick,"click",i),n(t.topDoubleClick,"dblclick",i),e&&(n(t.topTouchStart,"touchstart",i),n(t.topTouchEnd,"touchend",i),n(t.topTouchMove,"touchmove",i),n(t.topTouchCancel,"touchcancel",i)),n(t.topKeyUp,"keyup",i),n(t.topKeyPress,"keypress",i),n(t.topKeyDown,"keydown",i),n(t.topInput,"input",i),n(t.topChange,"change",i),n(t.topSelectionChange,"selectionchange",i),n(t.topDOMCharacterDataModified,"DOMCharacterDataModified",i),h("drag")&&(n(t.topDrag,"drag",i),n(t.topDragEnd,"dragend",i),n(t.topDragEnter,"dragenter",i),n(t.topDragExit,"dragexit",i),n(t.topDragLeave,"dragleave",i),n(t.topDragOver,"dragover",i),n(t.topDragStart,"dragstart",i),n(t.topDrop,"drop",i)),h("wheel")?n(t.topWheel,"wheel",i):h("mousewheel")?n(t.topWheel,"mousewheel",i):n(t.topWheel,"DOMMouseScroll",i),h("scroll",!0)?r(t.topScroll,"scroll",i):n(t.topScroll,"scroll",window),h("focus",!0)?(r(t.topFocus,"focus",i),r(t.topBlur,"blur",i)):h("focusin")&&(n(t.topFocus,"focusin",i),n(t.topBlur,"focusout",i))}var a=e("./EventConstants"),s=e("./EventListener"),u=e("./EventPluginHub"),l=e("./ExecutionEnvironment"),c=e("./ReactUpdates"),p=e("./ViewportMetrics"),d=e("./invariant"),h=e("./isEventSupported"),f=!1,v={TopLevelCallbackCreator:null,ensureListening:function(e,t){d(l.canUseDOM),f||(v.TopLevelCallbackCreator=t,i(e),f=!0)},setEnabled:function(e){d(l.canUseDOM),v.TopLevelCallbackCreator&&v.TopLevelCallbackCreator.setEnabled(e)},isEnabled:function(){return!(!v.TopLevelCallbackCreator||!v.TopLevelCallbackCreator.isEnabled())},handleTopLevel:function(e,t,n,r){var o=u.extractEvents(e,t,n,r);c.batchedUpdates(function(){u.enqueueEvents(o),u.processEventQueue()})},registrationNames:u.registrationNames,putListener:u.putListener,getListener:u.getListener,deleteListener:u.deleteListener,deleteAllListeners:u.deleteAllListeners,trapBubbledEvent:n,trapCapturedEvent:r};t.exports=v}()},{"./EventConstants":13,"./EventListener":14,"./EventPluginHub":15,"./ExecutionEnvironment":19,"./ReactUpdates":48,"./ViewportMetrics":59,"./invariant":75,"./isEventSupported":76}],34:[function(e,t){!function(){"use strict";var n=e("./ExecutionEnvironment"),r=e("./ReactEventEmitter"),o=e("./ReactID"),i=e("./ReactInstanceHandles"),a=e("./getEventTarget"),s=!0,u={setEnabled:function(e){s=!!e},isEnabled:function(){return s},createTopLevelCallback:function(e){return function(t){if(s){t.srcElement&&t.srcElement!==t.target&&(t.target=t.srcElement);var u=i.getFirstReactDOM(a(t))||n.global,l=o.getID(u)||"";r.handleTopLevel(e,u,l,t)}}}};t.exports=u}()},{"./ExecutionEnvironment":19,"./ReactEventEmitter":33,"./ReactID":35,"./ReactInstanceHandles":37,"./getEventTarget":70}],35:[function(e,t,n){"use strict";function r(e){var t=o(e);if(t)if(h.hasOwnProperty(t)){var n=h[t];n!==e&&(c(!s(n,t)),h[t]=e)}else h[t]=e;return t}function o(e){if(e&&e.getAttributeNode){var t=e.getAttributeNode(d);if(t)return t.value||""}return""}function i(e,t){var n=o(e);n!==t&&delete h[n],e.setAttribute(d,t),h[t]=e}function a(e){return h.hasOwnProperty(e)&&s(h[e],e)||(h[e]=p.findReactNodeByID(e)),h[e]}function s(e,t){if(e){c(o(e)===t);var n=p.findReactContainerForID(t);if(n&&u(n,e))return!0}return!1}function u(e,t){if(e.contains)return e.contains(t);if(t===e)return!0;for(3===t.nodeType&&(t=t.parentNode);t&&1===t.nodeType;){if(t===e)return!0;t=t.parentNode}return!1}function l(e){delete h[e]}var c=e("./invariant"),p=e("./ReactMount"),d="data-reactid",h={};n.ATTR_NAME=d,n.getID=r,n.rawGetID=o,n.setID=i,n.getNode=a,n.purgeID=l},{"./ReactMount":38,"./invariant":75}],36:[function(e,t){"use strict";function n(){try{return document.activeElement}catch(e){}}function r(e){return document.documentElement.contains(e)}var o={hasSelectionCapabilities:function(e){return e&&("INPUT"===e.nodeName&&"text"===e.type||"TEXTAREA"===e.nodeName||"true"===e.contentEditable)},getSelectionInformation:function(){var e=n();return{focusedElem:e,selectionRange:o.hasSelectionCapabilities(e)?o.getSelection(e):null}},restoreSelection:function(e){var t=n(),i=e.focusedElem,a=e.selectionRange;t!==i&&r(i)&&(o.hasSelectionCapabilities(i)&&o.setSelection(i,a),i.focus())},getSelection:function(e){var t;if("true"===e.contentEditable&&window.getSelection){t=window.getSelection().getRangeAt(0);var n=t.commonAncestorContainer;return n&&3===n.nodeType&&(n=n.parentNode),n!==e?{start:0,end:0}:{start:t.startOffset,end:t.endOffset}}if(!document.selection)return{start:e.selectionStart,end:e.selectionEnd};if(t=document.selection.createRange(),t.parentElement()!==e)return{start:0,end:0};var r=e.value.length;if("INPUT"===e.nodeName)return{start:-t.moveStart("character",-r),end:-t.moveEnd("character",-r)};var o=t.duplicate();o.moveToElementText(e),o.setEndPoint("StartToEnd",t);var i=r-o.text.length;return o.setEndPoint("StartToStart",t),{start:r-o.text.length,end:i}},setSelection:function(e,t){var n,r=t.start,o=t.end;if("undefined"==typeof o&&(o=r),document.selection){if("TEXTAREA"===e.tagName){var i=(e.value.slice(0,r).match(/\r/g)||[]).length,a=(e.value.slice(r,o).match(/\r/g)||[]).length;r-=i,o-=i+a}n=e.createTextRange(),n.collapse(!0),n.moveStart("character",r),n.moveEnd("character",o-r),n.select()}else if("true"===e.contentEditable){if(1===e.childNodes.length){n=document.createRange(),n.setStart(e.childNodes[0],r),n.setEnd(e.childNodes[0],o);var s=window.getSelection();s.removeAllRanges(),s.addRange(n)}}else e.selectionStart=r,e.selectionEnd=Math.min(o,e.value.length),e.focus()}};t.exports=o},{}],37:[function(e,t){"use strict";function n(e){return d+"r["+e.toString(36)+"]"}function r(e,t){return e.charAt(t)===d||t===e.length}function o(e){return""===e||e.charAt(0)===d&&e.charAt(e.length-1)!==d}function i(e,t){return 0===t.indexOf(e)&&r(t,e.length)}function a(e){return e?e.substr(0,e.lastIndexOf(d)):""}function s(e,t){if(p(o(e)&&o(t)),p(i(e,t)),e===t)return e;for(var n=e.length+h,a=n;a<t.length&&!r(t,a);a++);return t.substr(0,a)}function u(e,t){var n=Math.min(e.length,t.length);if(0===n)return"";for(var i=0,a=0;n>=a;a++)if(r(e,a)&&r(t,a))i=a;else if(e.charAt(a)!==t.charAt(a))break;var s=e.substr(0,i);return p(o(s)),s}function l(e,t,n,r,o,u){e=e||"",t=t||"",p(e!==t);var l=i(t,e);p(l||i(e,t));for(var c=0,d=l?a:s,h=e;o&&h===e||u&&h===t||n(h,l,r),h!==t;h=d(h,t))p(c++<f)}var c=e("./ReactID"),p=e("./invariant"),d=".",h=d.length,f=100,v=9999999,m={separator:d,createReactRootID:function(){return n(Math.ceil(Math.random()*v))},isRenderedByReact:function(e){if(1!==e.nodeType)return!1;var t=c.getID(e);return t?t.charAt(0)===d:!1},getFirstReactDOM:function(e){for(var t=e;t&&t.parentNode!==t;){if(m.isRenderedByReact(t))return t;t=t.parentNode}return null},findComponentRoot:function(e,t){for(var n=[e.firstChild],r=0;r<n.length;)for(var o=n[r++];o;){var a=c.getID(o);if(a){if(t===a)return o;if(i(a,t)){n.length=r=0,n.push(o.firstChild);break}n.push(o.firstChild)}else n.push(o.firstChild);o=o.nextSibling}p(!1)},getReactRootIDFromNodeID:function(e){var t=/\.r\[[^\]]+\]/.exec(e);return t&&t[0]},traverseEnterLeave:function(e,t,n,r,o){var i=u(e,t);i!==e&&l(e,i,n,r,!1,!0),i!==t&&l(i,t,n,o,!0,!1)},traverseTwoPhase:function(e,t,n){e&&(l("",e,t,n,!0,!1),l(e,"",t,n,!1,!0))},_getFirstCommonAncestorID:u,_getNextDescendantID:s};t.exports=m},{"./ReactID":35,"./invariant":75}],38:[function(e,t){!function(){"use strict";function n(e){return e&&e.firstChild}function r(e){var t=n(e);return t&&s.getID(t)}e("./invariant");var o=e("./ReactEventEmitter"),i=e("./ReactInstanceHandles"),a=e("./ReactEventTopLevelCallback"),s=e("./ReactID"),u=e("./$"),l={},c={},p={totalInstantiationTime:0,totalInjectionTime:0,useTouchEvents:!1,scrollMonitor:function(e,t){t()},prepareTopLevelEvents:function(e){o.ensureListening(p.useTouchEvents,e)},_updateRootComponent:function(e,t,n,r){var o=t.props;return p.scrollMonitor(n,function(){e.replaceProps(o,r)}),e},_registerComponent:function(e,t){p.prepareTopLevelEvents(a);var n=p.registerContainer(t);return l[n]=e,n},_renderNewRootComponent:function(e,t,n){var r=p._registerComponent(e,t);return e.mountComponentIntoNode(r,t,n),e},renderComponent:function(e,t,o){var a=l[r(t)];if(a){if(a.constructor===e.constructor)return p._updateRootComponent(a,e,t,o);p.unmountAndReleaseReactRootNode(t)}var s=n(t),u=s&&i.isRenderedByReact(s),c=u&&!a,d=p._renderNewRootComponent(e,t,c);return o&&o(),d},constructAndRenderComponent:function(e,t,n){return p.renderComponent(e(t),n)},constructAndRenderComponentByID:function(e,t,n){return p.constructAndRenderComponent(e,t,u(n))},registerContainer:function(e){var t=r(e);return t&&(t=i.getReactRootIDFromNodeID(t)),t||(t=i.createReactRootID()),c[t]=e,t},unmountAndReleaseReactRootNode:function(e){var t=r(e),n=l[t];return n?(n.unmountComponentFromNode(e),delete l[t],delete c[t],!0):!1},findReactContainerForID:function(e){var t=i.getReactRootIDFromNodeID(e),n=c[t];return n},findReactNodeByID:function(e){var t=p.findReactContainerForID(e);return i.findComponentRoot(t,e)}};t.exports=p}()},{"./$":1,"./ReactEventEmitter":33,"./ReactEventTopLevelCallback":34,"./ReactID":35,"./ReactInstanceHandles":37,"./invariant":75}],39:[function(e,t){!function(){"use strict";function n(e,t){return e&&t&&e.constructor===t.constructor}var r=e("./ReactComponent"),o={enqueueMarkupAt:function(e,t){this.domOperations=this.domOperations||[],this.domOperations.push({insertMarkup:e,finalIndex:t})},enqueueMove:function(e,t){this.domOperations=this.domOperations||[],this.domOperations.push({moveFrom:e,finalIndex:t})},enqueueUnmountChildByName:function(e,t){r.isValidComponent(t)&&(this.domOperations=this.domOperations||[],this.domOperations.push({removeAt:t._domIndex}),t.unmountComponent&&t.unmountComponent(),delete this._renderedChildren[e])},processChildDOMOperationsQueue:function(){this.domOperations&&(r.DOMIDOperations.manageChildrenByParentID(this._rootNodeID,this.domOperations),this.domOperations=null)},unmountMultiChild:function(){var e=this._renderedChildren;for(var t in e)if(e.hasOwnProperty(t)&&e[t]){var n=e[t];n.unmountComponent&&n.unmountComponent()}this._renderedChildren=null},mountMultiChild:function(e,t){var n="",r=0;for(var o in e){var i=e[o];e.hasOwnProperty(o)&&i&&(n+=i.mountComponent(this._rootNodeID+"."+o,t),i._domIndex=r,r++)}return this._renderedChildren=e,this.domOperations=null,n},updateMultiChild:function(e,t){if(e||this._renderedChildren){e&&!this._renderedChildren?this._renderedChildren={}:!e&&this._renderedChildren&&(e={});var r=this._rootNodeID+".",o=null,i=0,a=0,s=0;for(var u in e)if(e.hasOwnProperty(u)){var l=this._renderedChildren[u],c=e[u];if(n(l,c))o&&(this.enqueueMarkupAt(o,a-i),o=null),i=0,l._domIndex<s&&this.enqueueMove(l._domIndex,a),s=Math.max(l._domIndex,s),l.receiveProps(c.props,t),l._domIndex=a;else if(l&&(this.enqueueUnmountChildByName(u,l),s=Math.max(l._domIndex,s)),c){this._renderedChildren[u]=c;var p=c.mountComponent(r+u,t);o=o?o+p:p,i++,c._domIndex=a}a=c?a+1:a}o&&this.enqueueMarkupAt(o,a-i);for(var d in this._renderedChildren)if(this._renderedChildren.hasOwnProperty(d)){var h=this._renderedChildren[d];h&&!e[d]&&this.enqueueUnmountChildByName(d,h)}this.processChildDOMOperationsQueue()}}},i={Mixin:o};t.exports=i}()},{"./ReactComponent":22}],40:[function(e,t){"use strict";function n(e){e&&(h(null==e.children||null==e.dangerouslySetInnerHTML),h(null==e.style||"object"==typeof e.style))}function r(e,t){this._tagOpen="<"+e,this._tagClose=t?"":"</"+e+">",this.tagName=e.toUpperCase()}var o=e("./CSSPropertyOperations"),i=e("./DOMProperty"),a=e("./DOMPropertyOperations"),s=e("./ReactComponent"),u=e("./ReactEventEmitter"),l=e("./ReactMultiChild"),c=e("./ReactID"),p=e("./escapeTextForBrowser"),d=e("./flattenChildren"),h=e("./invariant"),f=e("./keyOf"),v=e("./merge"),m=e("./mixInto"),g=u.putListener,y=u.deleteListener,C=u.registrationNames,E={string:!0,number:!0},D=f({dangerouslySetInnerHTML:null}),M=f({style:null});r.Mixin={mountComponent:function(e,t){return s.Mixin.mountComponent.call(this,e,t),n(this.props),this._createOpenTagMarkup()+this._createContentMarkup(t)+this._tagClose},_createOpenTagMarkup:function(){var e=this.props,t=this._tagOpen;for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];if(null!=r)if(C[n])g(this._rootNodeID,n,r);else{n===M&&(r&&(r=e.style=v(e.style)),r=o.createMarkupForStyles(r));var i=a.createMarkupForProperty(n,r);i&&(t+=" "+i)}}var s=p(this._rootNodeID);return t+" "+c.ATTR_NAME+'="'+s+'">'},_createContentMarkup:function(e){var t=this.props.dangerouslySetInnerHTML;if(null!=t){if(null!=t.__html)return t.__html}else{var n=E[typeof this.props.children]?this.props.children:null,r=null!=n?null:this.props.children;if(null!=n)return p(n);if(null!=r)return this.mountMultiChild(d(r),e)}return""},receiveProps:function(e,t){n(e),s.Mixin.receiveProps.call(this,e,t)},updateComponent:function(e,t){s.Mixin.updateComponent.call(this,e,t),this._updateDOMProperties(t),this._updateDOMChildren(t,e)},_updateDOMProperties:function(e){var t,n,r,o=this.props;for(t in e)if(!o.hasOwnProperty(t)&&e.hasOwnProperty(t))if(t===M){var a=e[t];for(n in a)a.hasOwnProperty(n)&&(r=r||{},r[n]="")}else t===D?s.DOMIDOperations.updateTextContentByID(this._rootNodeID,""):C[t]?y(this._rootNodeID,t):s.DOMIDOperations.deletePropertyByID(this._rootNodeID,t);for(t in o){var u=o[t],l=e[t];if(o.hasOwnProperty(t)&&u!==l)if(t===M)if(u&&(u=o.style=v(u)),l){for(n in l)l.hasOwnProperty(n)&&!u.hasOwnProperty(n)&&(r=r||{},r[n]="");for(n in u)u.hasOwnProperty(n)&&l[n]!==u[n]&&(r=r||{},r[n]=u[n])}else r=u;else if(t===D){var c=l&&l.__html,p=u&&u.__html;c!==p&&s.DOMIDOperations.updateInnerHTMLByID(this._rootNodeID,u)}else C[t]?g(this._rootNodeID,t,u):(i.isStandardName[t]||i.isCustomAttribute(t))&&s.DOMIDOperations.updatePropertyByID(this._rootNodeID,t,u)}r&&s.DOMIDOperations.updateStylesByID(this._rootNodeID,r)},_updateDOMChildren:function(e,t){var n=this.props,r=E[typeof e.children]?e.children:null,o=E[typeof n.children]?n.children:null,i=null!=r?null:e.children,a=null!=o?null:n.children;if(null!=o){var u=null!=i&&null==a;u&&this.updateMultiChild(null,t),r!==o&&s.DOMIDOperations.updateTextContentByID(this._rootNodeID,""+o)}else{var l=null!=r&&null==o;l&&s.DOMIDOperations.updateTextContentByID(this._rootNodeID,""),this.updateMultiChild(d(n.children),t)}},unmountComponent:function(){u.deleteAllListeners(this._rootNodeID),s.Mixin.unmountComponent.call(this),this.unmountMultiChild()}},m(r,s.Mixin),m(r,r.Mixin),m(r,l.Mixin),t.exports=r},{"./CSSPropertyOperations":3,"./DOMProperty":7,"./DOMPropertyOperations":8,"./ReactComponent":22,"./ReactEventEmitter":33,"./ReactID":35,"./ReactMultiChild":39,"./escapeTextForBrowser":65,"./flattenChildren":67,"./invariant":75,"./keyOf":79,"./merge":81,"./mixInto":84}],41:[function(e,t){"use strict";function n(e){this._queue=e||null}var r=e("./PooledClass"),o=e("./mixInto");o(n,{enqueue:function(e,t){this._queue=this._queue||[],this._queue.push({component:e,callback:t})},notifyAll:function(){var e=this._queue;if(e){this._queue=null;for(var t=0,n=e.length;n>t;t++){var r=e[t].component,o=e[t].callback;o.call(r,r.getDOMNode())}e.length=0}},reset:function(){this._queue=null},destructor:function(){this.reset()}}),r.addPoolingTo(n),t.exports=n},{"./PooledClass":20,"./mixInto":84}],42:[function(e,t){"use strict";var n=e("./invariant"),r={isValidOwner:function(e){return!(!e||"function"!=typeof e.attachRef||"function"!=typeof e.detachRef)},addComponentAsRefTo:function(e,t,o){n(r.isValidOwner(o)),o.attachRef(t,e)},removeComponentAsRefFrom:function(e,t,o){n(r.isValidOwner(o)),o.refs[t]===e&&o.detachRef(t)},Mixin:{attachRef:function(e,t){n(t.isOwnedBy(this));var r=this.refs||(this.refs={});r[e]=t},detachRef:function(e){delete this.refs[e]}}};t.exports=r},{"./invariant":75}],43:[function(e,t){"use strict";function n(e){return function(t,n,r){t[n]=t.hasOwnProperty(n)?e(t[n],r):r}}var r=e("./emptyFunction"),o=e("./joinClasses"),i=e("./merge"),a={children:r,className:n(o),ref:r,style:n(i)},s={TransferStrategies:a,Mixin:{transferPropsTo:function(e){var t={};for(var n in e.props)e.props.hasOwnProperty(n)&&(t[n]=e.props[n]);for(var r in this.props)if(this.props.hasOwnProperty(r)){var o=a[r];o?o(t,r,this.props[r]):t.hasOwnProperty(r)||(t[r]=this.props[r])}return e.props=t,e}}};t.exports=s},{"./emptyFunction":64,"./joinClasses":77,"./merge":81}],44:[function(e,t){"use strict";function n(e){function t(t){var n=typeof t;"object"===n&&Array.isArray(t)&&(n="array"),s(n===e)}return i(t)}function r(e){function t(e){s(n[e])}var n=a(e);return i(t)}function o(e){function t(t){s(t instanceof e)}return i(t)}function i(e){function t(n){function r(t,r,o){var i=t[r];null!=i?e(i,r,o||l):s(!n)}return n||(r.isRequired=t(!0)),r}return t(!1)}var a=e("./createObjectFrom"),s=e("./invariant"),u={array:n("array"),bool:n("boolean"),func:n("function"),number:n("number"),object:n("object"),string:n("string"),oneOf:r,instanceOf:o},l="<<anonymous>>";t.exports=u},{"./createObjectFrom":62,"./invariant":75}],45:[function(e,t){"use strict";function n(){this.reinitializeTransaction(),this.reactOnDOMReady=s.getPooled(null)}var r=e("./ExecutionEnvironment"),o=e("./PooledClass"),i=e("./ReactEventEmitter"),a=e("./ReactInputSelection"),s=e("./ReactOnDOMReady"),u=e("./Transaction"),l=e("./mixInto"),c={initialize:a.getSelectionInformation,close:a.restoreSelection},p={initialize:function(){var e=i.isEnabled();return i.setEnabled(!1),e},close:function(e){i.setEnabled(e)}},d={initialize:function(){this.reactOnDOMReady.reset()},close:function(){this.reactOnDOMReady.notifyAll()}},h=[c,p,d],f={getTransactionWrappers:function(){return r.canUseDOM?h:[]},getReactOnDOMReady:function(){return this.reactOnDOMReady},destructor:function(){s.release(this.reactOnDOMReady),this.reactOnDOMReady=null}};l(n,u.Mixin),l(n,f),o.addPoolingTo(n),t.exports=n},{"./ExecutionEnvironment":19,"./PooledClass":20,"./ReactEventEmitter":33,"./ReactInputSelection":36,"./ReactOnDOMReady":41,"./Transaction":58,"./mixInto":84}],46:[function(e,t){"use strict";function n(e,t){var n=o.createReactRootID(),i=r.getPooled();i.reinitializeTransaction();try{i.perform(function(){t(e.mountComponent(n,i))},null)}finally{r.release(i)}}var r=e("./ReactReconcileTransaction"),o=e("./ReactInstanceHandles");t.exports={renderComponentToString:n}},{"./ReactInstanceHandles":37,"./ReactReconcileTransaction":45}],47:[function(e,t){"use strict";var n=e("./ReactComponent"),r=e("./ReactID"),o=e("./escapeTextForBrowser"),i=e("./mixInto"),a=function(e){this.construct({text:e})};i(a,n.Mixin),i(a,{mountComponent:function(e){return n.Mixin.mountComponent.call(this,e),"<span "+r.ATTR_NAME+'="'+e+'">'+o(this.props.text)+"</span>"},receiveProps:function(e){e.text!==this.props.text&&(this.props.text=e.text,n.DOMIDOperations.updateTextContentByID(this._rootNodeID,e.text))}}),t.exports=a},{"./ReactComponent":22,"./ReactID":35,"./escapeTextForBrowser":65,"./mixInto":84}],48:[function(e,t){"use strict";function n(e){if(i)return e(),void 0;i=!0;try{e();for(var t=0;t<a.length;t++){var n=a[t];if(n.isMounted()){var r=n._pendingCallbacks;if(n._pendingCallbacks=null,n.performUpdateIfNecessary(),r)for(var o=0;o<r.length;o++)r[o]()}}}catch(s){throw s}finally{a.length=0,i=!1}}function r(e,t){return o(!t||"function"==typeof t),i?(a.push(e),t&&(e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t]),void 0):(e.performUpdateIfNecessary(),t&&t(),void 0)}var o=e("./invariant"),i=!1,a=[],s={batchedUpdates:n,enqueueUpdate:r};t.exports=s},{"./invariant":75}],49:[function(e,t){"use strict";var n=e("./EventConstants"),r=e("./EventPropagators"),o=e("./SyntheticEvent"),i=e("./SyntheticFocusEvent"),a=e("./SyntheticKeyboardEvent"),s=e("./SyntheticMouseEvent"),u=e("./SyntheticMutationEvent"),l=e("./SyntheticTouchEvent"),c=e("./SyntheticUIEvent"),p=e("./SyntheticWheelEvent"),d=e("./invariant"),h=e("./keyOf"),f=n.topLevelTypes,v={blur:{phasedRegistrationNames:{bubbled:h({onBlur:!0}),captured:h({onBlurCapture:!0})}},click:{phasedRegistrationNames:{bubbled:h({onClick:!0}),captured:h({onClickCapture:!0})}},doubleClick:{phasedRegistrationNames:{bubbled:h({onDoubleClick:!0}),captured:h({onDoubleClickCapture:!0})}},drag:{phasedRegistrationNames:{bubbled:h({onDrag:!0}),captured:h({onDragCapture:!0})}},dragEnd:{phasedRegistrationNames:{bubbled:h({onDragEnd:!0}),captured:h({onDragEndCapture:!0})}},dragEnter:{phasedRegistrationNames:{bubbled:h({onDragEnter:!0}),captured:h({onDragEnterCapture:!0})}},dragExit:{phasedRegistrationNames:{bubbled:h({onDragExit:!0}),captured:h({onDragExitCapture:!0})}},dragLeave:{phasedRegistrationNames:{bubbled:h({onDragLeave:!0}),captured:h({onDragLeaveCapture:!0})}},dragOver:{phasedRegistrationNames:{bubbled:h({onDragOver:!0}),captured:h({onDragOverCapture:!0})}},dragStart:{phasedRegistrationNames:{bubbled:h({onDragStart:!0}),captured:h({onDragStartCapture:!0})}},drop:{phasedRegistrationNames:{bubbled:h({onDrop:!0}),captured:h({onDropCapture:!0})}},DOMCharacterDataModified:{phasedRegistrationNames:{bubbled:h({onDOMCharacterDataModified:!0}),captured:h({onDOMCharacterDataModifiedCapture:!0})}},focus:{phasedRegistrationNames:{bubbled:h({onFocus:!0}),captured:h({onFocusCapture:!0})}},input:{phasedRegistrationNames:{bubbled:h({onInput:!0}),captured:h({onInputCapture:!0})}},keyDown:{phasedRegistrationNames:{bubbled:h({onKeyDown:!0}),captured:h({onKeyDownCapture:!0})}},keyPress:{phasedRegistrationNames:{bubbled:h({onKeyPress:!0}),captured:h({onKeyPressCapture:!0})}},keyUp:{phasedRegistrationNames:{bubbled:h({onKeyUp:!0}),captured:h({onKeyUpCapture:!0})}},mouseDown:{phasedRegistrationNames:{bubbled:h({onMouseDown:!0}),captured:h({onMouseDownCapture:!0})}},mouseMove:{phasedRegistrationNames:{bubbled:h({onMouseMove:!0}),captured:h({onMouseMoveCapture:!0})}},mouseUp:{phasedRegistrationNames:{bubbled:h({onMouseUp:!0}),captured:h({onMouseUpCapture:!0})}},scroll:{phasedRegistrationNames:{bubbled:h({onScroll:!0}),captured:h({onScrollCapture:!0})}},submit:{phasedRegistrationNames:{bubbled:h({onSubmit:!0}),captured:h({onSubmitCapture:!0})}},touchCancel:{phasedRegistrationNames:{bubbled:h({onTouchCancel:!0}),captured:h({onTouchCancelCapture:!0})}},touchEnd:{phasedRegistrationNames:{bubbled:h({onTouchEnd:!0}),captured:h({onTouchEndCapture:!0})}},touchMove:{phasedRegistrationNames:{bubbled:h({onTouchMove:!0}),captured:h({onTouchMoveCapture:!0})}},touchStart:{phasedRegistrationNames:{bubbled:h({onTouchStart:!0}),captured:h({onTouchStartCapture:!0})}},wheel:{phasedRegistrationNames:{bubbled:h({onWheel:!0}),captured:h({onWheelCapture:!0})}}},m={topBlur:v.blur,topClick:v.click,topDoubleClick:v.doubleClick,topDOMCharacterDataModified:v.DOMCharacterDataModified,topDrag:v.drag,topDragEnd:v.dragEnd,topDragEnter:v.dragEnter,topDragExit:v.dragExit,topDragLeave:v.dragLeave,topDragOver:v.dragOver,topDragStart:v.dragStart,topDrop:v.drop,topFocus:v.focus,topInput:v.input,topKeyDown:v.keyDown,topKeyPress:v.keyPress,topKeyUp:v.keyUp,topMouseDown:v.mouseDown,topMouseMove:v.mouseMove,topMouseUp:v.mouseUp,topScroll:v.scroll,topSubmit:v.submit,topTouchCancel:v.touchCancel,topTouchEnd:v.touchEnd,topTouchMove:v.touchMove,topTouchStart:v.touchStart,topWheel:v.wheel},g={eventTypes:v,executeDispatch:function(e,t,n){var r=t(e,n);r===!1&&(e.stopPropagation(),e.preventDefault())},extractEvents:function(e,t,n,h){var v=m[e];if(!v)return null;var g;switch(e){case f.topInput:case f.topSubmit:g=o;break;case f.topKeyDown:case f.topKeyPress:case f.topKeyUp:g=a;break;case f.topBlur:case f.topFocus:g=i;break;case f.topClick:case f.topDoubleClick:case f.topDrag:case f.topDragEnd:case f.topDragEnter:case f.topDragExit:case f.topDragLeave:case f.topDragOver:case f.topDragStart:case f.topDrop:case f.topMouseDown:case f.topMouseMove:case f.topMouseUp:g=s;break;case f.topDOMCharacterDataModified:g=u;break;case f.topTouchCancel:case f.topTouchEnd:case f.topTouchMove:case f.topTouchStart:g=l;break;case f.topScroll:g=c;break;case f.topWheel:g=p}d(g);var y=g.getPooled(v,n,h);return r.accumulateTwoPhaseDispatches(y),y}};t.exports=g},{"./EventConstants":13,"./EventPropagators":18,"./SyntheticEvent":50,"./SyntheticFocusEvent":51,"./SyntheticKeyboardEvent":52,"./SyntheticMouseEvent":53,"./SyntheticMutationEvent":54,"./SyntheticTouchEvent":55,"./SyntheticUIEvent":56,"./SyntheticWheelEvent":57,"./invariant":75,"./keyOf":79}],50:[function(e,t){"use strict";function n(e,t,n){this.dispatchConfig=e,this.dispatchMarker=t,this.nativeEvent=n;var r=this.constructor.Interface;for(var i in r){var a=r[i];this[i]=a?a(n):n[i]}this.isDefaultPrevented=n.defaultPrevented||n.returnValue===!1?o.thatReturnsTrue:o.thatReturnsFalse,this.isPropagationStopped=o.thatReturnsFalse}var r=e("./PooledClass"),o=e("./emptyFunction"),i=e("./getEventTarget"),a=e("./merge"),s=e("./mergeInto"),u={type:null,target:i,currentTarget:null,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};s(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e.preventDefault?e.preventDefault():e.returnValue=!1,this.isDefaultPrevented=o.thatReturnsTrue},stopPropagation:function(){var e=this.nativeEvent;e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,this.isPropagationStopped=o.thatReturnsTrue},persist:function(){this.isPersistent=o.thatReturnsTrue},isPersistent:o.thatReturnsFalse,destructor:function(){var e=this.constructor.Interface;for(var t in e)this[t]=null;this.dispatchConfig=null,this.dispatchMarker=null,this.nativeEvent=null}}),n.Interface=u,n.augmentClass=function(e,t){var n=this,o=Object.create(n.prototype);s(o,e.prototype),e.prototype=o,e.prototype.constructor=e,e.Interface=a(n.Interface,t),e.augmentClass=n.augmentClass,r.addPoolingTo(e,r.threeArgumentPooler)
},r.addPoolingTo(n,r.threeArgumentPooler),t.exports=n},{"./PooledClass":20,"./emptyFunction":64,"./getEventTarget":70,"./merge":81,"./mergeInto":83}],51:[function(e,t){"use strict";function n(e,t,n){r.call(this,e,t,n)}var r=e("./SyntheticUIEvent"),o={relatedTarget:null};r.augmentClass(n,o),t.exports=n},{"./SyntheticUIEvent":56}],52:[function(e,t){"use strict";function n(e,t,n){r.call(this,e,t,n)}var r=e("./SyntheticUIEvent"),o={"char":null,key:null,location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,charCode:null,keyCode:null,which:null};r.augmentClass(n,o),t.exports=n},{"./SyntheticUIEvent":56}],53:[function(e,t){"use strict";function n(e,t,n){r.call(this,e,t,n)}var r=e("./SyntheticUIEvent"),o=e("./ViewportMetrics"),i={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,button:function(e){var t=e.button;return"which"in e?t:2===t?2:4===t?1:0},buttons:null,relatedTarget:function(e){return e.relatedTarget||(e.fromElement===e.srcElement?e.toElement:e.fromElement)},pageX:function(e){return"pageX"in e?e.pageX:e.clientX+o.currentScrollLeft},pageY:function(e){return"pageY"in e?e.pageY:e.clientY+o.currentScrollTop}};r.augmentClass(n,i),t.exports=n},{"./SyntheticUIEvent":56,"./ViewportMetrics":59}],54:[function(e,t){"use strict";function n(e,t,n){r.call(this,e,t,n)}var r=e("./SyntheticEvent"),o={relatedNode:null,prevValue:null,newValue:null,attrName:null,attrChange:null};r.augmentClass(n,o),t.exports=n},{"./SyntheticEvent":50}],55:[function(e,t){"use strict";function n(e,t,n){r.call(this,e,t,n)}var r=e("./SyntheticUIEvent"),o={touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null};r.augmentClass(n,o),t.exports=n},{"./SyntheticUIEvent":56}],56:[function(e,t){"use strict";function n(e,t,n){r.call(this,e,t,n)}var r=e("./SyntheticEvent"),o={view:null,detail:null};r.augmentClass(n,o),t.exports=n},{"./SyntheticEvent":50}],57:[function(e,t){"use strict";function n(e,t,n){r.call(this,e,t,n)}var r=e("./SyntheticMouseEvent"),o={deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?-e.deltaY:"wheelDeltaY"in e?e.wheelDeltaY:"wheelDelta"in e?e.wheelData:0},deltaZ:null,deltaMode:null};r.augmentClass(n,o),t.exports=n},{"./SyntheticMouseEvent":53}],58:[function(e,t){!function(){"use strict";var n=e("./throwIf"),r="DUAL_TRANSACTION",o="MISSING_TRANSACTION",i={reinitializeTransaction:function(){this.transactionWrappers=this.getTransactionWrappers(),this.wrapperInitData?this.wrapperInitData.length=0:this.wrapperInitData=[],this.timingMetrics||(this.timingMetrics={}),this.timingMetrics.methodInvocationTime=0,this.timingMetrics.wrapperInitTimes?this.timingMetrics.wrapperInitTimes.length=0:this.timingMetrics.wrapperInitTimes=[],this.timingMetrics.wrapperCloseTimes?this.timingMetrics.wrapperCloseTimes.length=0:this.timingMetrics.wrapperCloseTimes=[],this._isInTransaction=!1},_isInTransaction:!1,getTransactionWrappers:null,isInTransaction:function(){return!!this._isInTransaction},perform:function(e,t,o,i,a,s,u,l){n(this.isInTransaction(),r);var c,p=Date.now(),d=null;try{this.initializeAll(),c=e.call(t,o,i,a,s,u,l)}catch(h){d=h}finally{var f=Date.now();this.methodInvocationTime+=f-p;try{this.closeAll()}catch(v){d=d||v}}if(d)throw d;return c},initializeAll:function(){this._isInTransaction=!0;for(var e=this.transactionWrappers,t=this.timingMetrics.wrapperInitTimes,n=null,r=0;r<e.length;r++){var o=Date.now(),i=e[r];try{this.wrapperInitData[r]=i.initialize?i.initialize.call(this):null}catch(s){n=n||s,this.wrapperInitData[r]=a.OBSERVED_ERROR}finally{var u=t[r],l=Date.now();t[r]=(u||0)+(l-o)}}if(n)throw n},closeAll:function(){n(!this.isInTransaction(),o);for(var e=this.transactionWrappers,t=this.timingMetrics.wrapperCloseTimes,r=null,i=0;i<e.length;i++){var s=e[i],u=Date.now(),l=this.wrapperInitData[i];try{l!==a.OBSERVED_ERROR&&s.close&&s.close.call(this,l)}catch(c){r=r||c}finally{var p=Date.now(),d=t[i];t[i]=(d||0)+(p-u)}}if(this.wrapperInitData.length=0,this._isInTransaction=!1,r)throw r}},a={Mixin:i,OBSERVED_ERROR:{}};t.exports=a}()},{"./throwIf":86}],59:[function(e,t){"use strict";var n={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(){n.currentScrollLeft=document.body.scrollLeft+document.documentElement.scrollLeft,n.currentScrollTop=document.body.scrollTop+document.documentElement.scrollTop}};t.exports=n},{}],60:[function(e,t){"use strict";function n(e,t){var n=null==e,r=null===t;if(r)return e;if(n)return t;var o=Array.isArray(e),i=Array.isArray(t);return o?e.concat(t):i?[e].concat(t):[e,t]}e("./throwIf"),t.exports=n},{"./throwIf":86}],61:[function(e,t){function n(e,t,n,r,o,i){e=e||{};for(var a,s=[t,n,r,o,i],u=0;s[u];){a=s[u++];for(var l in a)e[l]=a[l];a.hasOwnProperty&&a.hasOwnProperty("toString")&&"undefined"!=typeof a.toString&&e.toString!==a.toString&&(e.toString=a.toString)}return e}t.exports=n},{}],62:[function(e,t){function n(e,t){var n={},o=r(t);"undefined"==typeof t&&(t=!0);for(var i=e.length;i--;)n[e[i]]=o?t[i]:t;return n}var r=e("./hasArrayNature");t.exports=n},{"./hasArrayNature":72}],63:[function(e,t){"use strict";function n(e,t){var n=null==t||"boolean"==typeof t||""===t;if(n)return"";var o=isNaN(t);return o||0===t||r.isUnitlessNumber[e]?""+t:t+"px"}var r=e("./CSSProperty");t.exports=n},{"./CSSProperty":2}],64:[function(e,t){function n(e){return function(){return e}}function r(){}var o=e("./copyProperties");o(r,{thatReturns:n,thatReturnsFalse:n(!1),thatReturnsTrue:n(!0),thatReturnsNull:n(null),thatReturnsThis:function(){return this},thatReturnsArgument:function(e){return e}}),t.exports=r},{"./copyProperties":61}],65:[function(e,t){"use strict";function n(e){return r[e]}e("./throwIf");var r={"&":"&amp;",">":"&gt;","<":"&lt;",'"':"&quot;","'":"&#x27;","/":"&#x2f;"},o=function(e){var t=typeof e,r="object"===t;return""===e||r?"":"string"===t?e.replace(/[&><"'\/]/g,n):(""+e).replace(/[&><"'\/]/g,n)};t.exports=o},{"./throwIf":86}],66:[function(e,t){var n=function(e){var t=Array.prototype.slice.call(arguments).map(function(e){return String(e)}),r=e.split("%s").length-1;return r!==t.length-1?n("ex args number mismatch: %s",JSON.stringify(t)):n._prefix+JSON.stringify(t)+n._suffix};n._prefix="<![EX[",n._suffix="]]>",t.exports=n},{}],67:[function(e,t){"use strict";function n(e,t,n){var r=e;r[n]=t}function r(e){if(null===e||void 0===e)return e;var t={};return o(e,n,t),t}e("./throwIf");var o=e("./traverseAllChildren");t.exports=r},{"./throwIf":86,"./traverseAllChildren":87}],68:[function(e,t){"use strict";var n=function(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)};t.exports=n},{}],69:[function(e,t){function n(e,t,n){return"string"!=typeof e?e:t?r(e,t,n):document.getElementById(e)}function r(e,t,n){var i,a,s;if(o(t)==e)return t;if(t.getElementsByTagName){for(a=t.getElementsByTagName(n||"*"),s=0;s<a.length;s++)if(o(a[s])==e)return a[s]}else for(a=t.childNodes,s=0;s<a.length;s++)if(i=r(e,a[s]))return i;return null}function o(e){var t=e.getAttributeNode&&e.getAttributeNode("id");return t?t.value:null}t.exports=n},{}],70:[function(e,t){!function(){"use strict";function n(e){var t=e.target||e.srcElement||r.global;return 3===t.nodeType?t.parentNode:t}var r=e("./ExecutionEnvironment");t.exports=n}()},{"./ExecutionEnvironment":19}],71:[function(e,t){"use strict";function n(){return!o&&r.canUseDOM&&(o="innerText"in document.createElement("div")?"innerText":"textContent"),o}var r=e("./ExecutionEnvironment"),o=null;t.exports=n},{"./ExecutionEnvironment":19}],72:[function(e,t){function n(e){return!!e&&("object"==typeof e||"function"==typeof e)&&"length"in e&&!("setInterval"in e)&&"number"!=typeof e.nodeType&&(Array.isArray(e)||"callee"in e||"item"in e)}t.exports=n},{}],73:[function(e,t){function n(e){return e.replace(r,"-$1").toLowerCase()}var r=/([A-Z])/g;t.exports=n},{}],74:[function(e,t){"use strict";function n(e,t,n){var r=e.childNodes,o=e.childNodes[n];return o===t?t:(t.parentNode&&t.parentNode.removeChild(t),n>=r.length?e.appendChild(t):e.insertBefore(t,r[n]),t)}t.exports=n},{}],75:[function(e,t){function n(e){if(!e)throw new Error("Invariant Violation")}t.exports=n},{}],76:[function(e,t){"use strict";function n(e,t){if(!r||t&&!r.addEventListener)return!1;var n=document.createElement("div"),i="on"+e,a=i in n;return a||(n.setAttribute(i,""),a="function"==typeof n[i],"undefined"!=typeof n[i]&&(n[i]=void 0),n.removeAttribute(i)),!a&&o&&"wheel"===e&&(a=document.implementation.hasFeature("Events.wheel","3.0")),n=null,a}var r,o,i=e("./ExecutionEnvironment");i.canUseDOM&&(r=document.createElement("div"),o=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),t.exports=n},{"./ExecutionEnvironment":19}],77:[function(e,t){"use strict";function n(e){e||(e="");var t,n=arguments.length;if(n>1)for(var r=1;n>r;r++)t=arguments[r],t&&(e+=" "+t);return e}t.exports=n},{}],78:[function(e,t){"use strict";var n=e("./throwIf"),r="NOT_OBJECT_ERROR",o=function(e){var t,o={};n(!(e instanceof Object)||Array.isArray(e),r);for(t in e)e.hasOwnProperty(t)&&(o[t]=t);return o};t.exports=o},{"./throwIf":86}],79:[function(e,t){var n=function(e){var t;for(t in e)if(e.hasOwnProperty(t))return t;return null};t.exports=n},{}],80:[function(e,t){"use strict";function n(e){var t={};return function(n){return t.hasOwnProperty(n)?t[n]:t[n]=e.call(this,n)}}t.exports=n},{}],81:[function(e,t){"use strict";var n=e("./mergeInto"),r=function(e,t){var r={};return n(r,e),n(r,t),r};t.exports=r},{"./mergeInto":83}],82:[function(e,t){"use strict";var n=e("./keyMirror"),r=e("./throwIf"),o=36,i=n({MERGE_ARRAY_FAIL:null,MERGE_CORE_FAILURE:null,MERGE_TYPE_USAGE_FAILURE:null,MERGE_DEEP_MAX_LEVELS:null,MERGE_DEEP_NO_ARR_STRATEGY:null}),a=function(e){return"object"!=typeof e||null===e},s={MAX_MERGE_DEPTH:o,isTerminal:a,normalizeMergeArg:function(e){return void 0===e||null===e?{}:e},checkMergeArrayArgs:function(e,t){r(!Array.isArray(e)||!Array.isArray(t),i.MERGE_CORE_FAILURE)},checkMergeObjectArgs:function(e,t){s.checkMergeObjectArg(e),s.checkMergeObjectArg(t)},checkMergeObjectArg:function(e){r(a(e)||Array.isArray(e),i.MERGE_CORE_FAILURE)},checkMergeLevel:function(e){r(e>=o,i.MERGE_DEEP_MAX_LEVELS)},checkArrayStrategy:function(e){r(void 0!==e&&!(e in s.ArrayStrategies),i.MERGE_DEEP_NO_ARR_STRATEGY)},ArrayStrategies:n({Clobber:!0,IndexByIndex:!0}),ERRORS:i};t.exports=s},{"./keyMirror":78,"./throwIf":86}],83:[function(e,t){"use strict";function n(e,t){if(o(e),null!=t){o(t);for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])}}var r=e("./mergeHelpers"),o=r.checkMergeObjectArg;t.exports=n},{"./mergeHelpers":82}],84:[function(e,t){"use strict";var n=function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e.prototype[n]=t[n])};t.exports=n},{}],85:[function(e,t){"use strict";function n(e,t,n){if(!e)return null;var r=0,o={};for(var i in e)e.hasOwnProperty(i)&&(o[i]=t.call(n,i,e[i],r++));return o}t.exports=n},{}],86:[function(e,t){"use strict";var n=function(e,t){if(e)throw new Error(t)};t.exports=n},{}],87:[function(e,t){!function(){"use strict";function n(e,t,n){null!==e&&void 0!==e&&u(e,"",0,t,n)}var r=e("./ReactComponent"),o=e("./ReactTextComponent"),i=e("./throwIf"),a="DUPLICATE_KEY_ERROR",s="INVALID_CHILD",u=function(e,t,n,a,l){var c=0;if(Array.isArray(e))for(var p=0;p<e.length;p++){var d=e[p],h=t+"["+r.getKey(d,p)+"]",f=n+c;c+=u(d,h,f,a,l)}else{var v=typeof e,m=""===t,g=m?"["+r.getKey(e,0)+"]":t;if(null===e||void 0===e||"boolean"===v)a(l,null,g,n),c=1;else if(e.mountComponentIntoNode)a(l,e,g,n),c=1;else if("object"===v){i(e&&1===e.nodeType,s);for(var y in e)e.hasOwnProperty(y)&&(c+=u(e[y],t+"{"+y+"}",n+c,a,l))}else if("string"===v){var C=new o(e);a(l,C,g,n),c+=1}else if("number"===v){var E=new o(""+e);a(l,E,g,n),c+=1}}return c};n.DUPLICATE_KEY_ERROR=a,t.exports=n}()},{"./ReactComponent":22,"./ReactTextComponent":47,"./throwIf":86}]},{},[21])(21)});
\ No newline at end of file
{
"name": "todomvc-common",
"version": "0.1.7",
"homepage": "https://github.com/tastejs/todomvc-common",
"_release": "0.1.7",
"_resolution": {
"type": "version",
"tag": "v0.1.7",
"commit": "e5b3251c95f29d872636b761e32a2296dc97c3e0"
},
"_source": "git://github.com/tastejs/todomvc-common.git",
"_target": "~0.1.7"
}
\ No newline at end of file
......@@ -136,10 +136,6 @@
}
function getFile(file, callback) {
if (!location.host) {
return console.info('Miss the info bar? Run TodoMVC from a server to avoid a cross-origin error.');
}
var xhr = new XMLHttpRequest();
xhr.open('GET', findRoot() + file, true);
......
/** Reset base.css #todoapp */
#todoapp {
background: none;
margin: auto;
border: 0;
position: static;
box-shadow: none;
}
#todoapp:before {
display: none;
left: 100%;
}
.todoapp {
background: #fff;
background: rgba(255, 255, 255, 0.9);
margin: 130px 0 40px 0;
border: 1px solid #ccc;
position: relative;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.2),
0 25px 50px 0 rgba(0, 0, 0, 0.15);
}
.todoapp:before {
content: '';
border-left: 1px solid #f5d6d6;
border-right: 1px solid #f5d6d6;
width: 2px;
position: absolute;
top: 0;
left: 40px;
height: 100%;
}
.header {
padding-top: 15px;
border-radius: inherit;
}
.header:before {
content: '';
position: absolute;
top: 0;
right: 0;
left: 0;
height: 15px;
z-index: 2;
border-bottom: 1px solid #6c615c;
background: #8d7d77;
background: -webkit-gradient(linear, left top, left bottom, from(rgba(132, 110, 100, 0.8)),to(rgba(101, 84, 76, 0.8)));
background: -webkit-linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
background: -moz-linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
background: -o-linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
background: -ms-linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
background: linear-gradient(top, rgba(132, 110, 100, 0.8), rgba(101, 84, 76, 0.8));
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#9d8b83', EndColorStr='#847670');
border-top-left-radius: 1px;
border-top-right-radius: 1px;
}
.new-todo {
position: relative;
margin: 0;
width: 100%;
font-size: 24px;
font-family: inherit;
line-height: 1.4em;
border: 0;
outline: none;
color: inherit;
padding: 6px;
border: 1px solid #999;
box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2);
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-o-box-sizing: border-box;
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-moz-font-smoothing: antialiased;
-ms-font-smoothing: antialiased;
-o-font-smoothing: antialiased;
font-smoothing: antialiased;
}
.new-todo {
padding: 16px 16px 16px 60px;
border: none;
background: rgba(0, 0, 0, 0.02);
z-index: 2;
box-shadow: none;
}
.main {
position: relative;
z-index: 2;
border-top: 1px dotted #adadad;
}
.toggle-all-label {
display: none;
}
.toggle-all {
position: absolute;
top: -42px;
left: -4px;
width: 40px;
text-align: center;
border: none; /* Mobile Safari */
}
.toggle-all:before {
content: '»';
font-size: 28px;
color: #d9d9d9;
padding: 0 25px 7px;
}
.toggle-all:checked:before {
color: #737373;
}
.todo-list {
margin: 0;
padding: 0;
list-style: none;
}
.todo-list li {
position: relative;
font-size: 24px;
border-bottom: 1px dotted #ccc;
}
.todo-list li:last-child {
border-bottom: none;
}
.todo-list li.editing {
border-bottom: none;
padding: 0;
}
.todo-list li.editing .edit {
display: block;
width: 506px;
padding: 13px 17px 12px 17px;
margin: 0 0 0 43px;
}
.todo-list li.editing .view {
display: none;
}
.todo-list li .toggle {
text-align: center;
width: 40px;
/* auto, since non-WebKit browsers doesn't support input styling */
height: auto;
position: absolute;
top: 0;
bottom: 0;
margin: auto 0;
border: none; /* Mobile Safari */
-webkit-appearance: none;
/*-moz-appearance: none;*/
-ms-appearance: none;
-o-appearance: none;
appearance: none;
}
.todo-list li .toggle:after {
content: '✔';
line-height: 43px; /* 40 + a couple of pixels visual adjustment */
font-size: 20px;
color: #d9d9d9;
text-shadow: 0 -1px 0 #bfbfbf;
}
.todo-list li .toggle:checked:after {
color: #85ada7;
text-shadow: 0 1px 0 #669991;
bottom: 1px;
position: relative;
}
.todo-list li label {
word-break: break-word;
padding: 15px;
margin-left: 45px;
display: block;
line-height: 1.2;
-webkit-transition: color 0.4s;
-moz-transition: color 0.4s;
-ms-transition: color 0.4s;
-o-transition: color 0.4s;
transition: color 0.4s;
}
.todo-list li.completed label {
color: #a9a9a9;
text-decoration: line-through;
}
.todo-list li .destroy {
display: none;
position: absolute;
top: 0;
right: 10px;
bottom: 0;
width: 40px;
height: 40px;
margin: auto 0;
font-size: 22px;
color: #a88a8a;
-webkit-transition: all 0.2s;
-moz-transition: all 0.2s;
-ms-transition: all 0.2s;
-o-transition: all 0.2s;
transition: all 0.2s;
}
.todo-list li .destroy:hover {
text-shadow: 0 0 1px #000,
0 0 10px rgba(199, 107, 107, 0.8);
-webkit-transform: scale(1.3);
-moz-transform: scale(1.3);
-ms-transform: scale(1.3);
-o-transform: scale(1.3);
transform: scale(1.3);
}
.todo-list li .destroy:after {
content: '✖';
}
.todo-list li:hover .destroy {
display: block;
}
.todo-list li .edit {
display: none;
}
.todo-list li.editing:last-child {
margin-bottom: -1px;
}
.footer {
color: #777;
padding: 0 15px;
position: absolute;
right: 0;
bottom: -31px;
left: 0;
height: 20px;
z-index: 1;
text-align: center;
}
.footer:before {
content: '';
position: absolute;
right: 0;
bottom: 31px;
left: 0;
height: 50px;
z-index: -1;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3),
0 6px 0 -3px rgba(255, 255, 255, 0.8),
0 7px 1px -3px rgba(0, 0, 0, 0.3),
0 43px 0 -6px rgba(255, 255, 255, 0.8),
0 44px 2px -6px rgba(0, 0, 0, 0.2);
}
.todo-count {
float: left;
text-align: left;
}
.filters {
margin: 0;
padding: 0;
list-style: none;
position: absolute;
right: 0;
left: 0;
}
.filters li {
display: inline;
}
.filters li a {
color: #83756f;
margin: 2px;
text-decoration: none;
}
.filters li a.selected {
font-weight: bold;
}
.clear-completed {
float: right;
position: relative;
line-height: 20px;
text-decoration: none;
background: rgba(0, 0, 0, 0.1);
font-size: 11px;
padding: 0 10px;
border-radius: 3px;
box-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.2);
}
.clear-completed:hover {
background: rgba(0, 0, 0, 0.15);
box-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.3);
}
.info {
margin: 65px auto 0;
color: #a6a6a6;
font-size: 12px;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);
text-align: center;
}
.info a {
color: inherit;
}
/*
Hack to remove background from Mobile Safari.
Can't use it globally since it destroys checkboxes in Firefox and Opera
*/
@media screen and (-webkit-min-device-pixel-ratio:0) {
.toggle-all,
.todo-list li .toggle {
background: none;
}
.todo-list li .toggle {
height: 40px;
}
.toggle-all {
top: -56px;
left: -15px;
width: 65px;
height: 41px;
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
-webkit-appearance: none;
appearance: none;
}
}
@media (min-width: 899px) {
/**body*/.learn-bar .todoapp {
width: 550px;
margin: 130px auto 40px auto;
}
}
#benchmark {
position: absolute;
left: 0;
top: 0;
padding: 10px;
}
.submitButton {
display: none;
}
......@@ -5,19 +5,20 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>React • TodoMVC</title>
<link rel="stylesheet" href="bower_components/todomvc-common/base.css">
<link rel="stylesheet" href="css/app.css">
</head>
<body>
<div id="todoapp"></div>
<section id="todoapp"></section>
<footer id="info"></footer>
<div id="benchmark"></div>
<script src="bower_components/todomvc-common/base.js"></script>
<script src="bower_components/react/react.js"></script>
<script src="bower_components/react/JSXTransformer.js"></script>
<script src="../../../assets/director.min.js"></script>
<script type="text/jsx" src="js/utils.js"></script>
<script type="text/jsx" src="js/todoItem.js"></script>
<script type="text/jsx" src="js/footer.js"></script>
<script type="text/jsx" src="js/app.js"></script>
<script type="text/jsx" src="js/utils.jsx"></script>
<script type="text/jsx" src="js/todoItem.jsx"></script>
<script type="text/jsx" src="js/footer.jsx"></script>
<script type="text/jsx" src="js/app.jsx"></script>
</body>
</html>
/**
* @jsx React.DOM
*/
/*jshint quotmark:false */
/*jshint white:false */
/*jshint trailing:false */
/*jshint newcap:false */
/*global Utils, ALL_TODOS, ACTIVE_TODOS, COMPLETED_TODOS,
TodoItem, TodoFooter, React, Router*/
(function (window, React) {
'use strict';
window.ALL_TODOS = 'all';
window.ACTIVE_TODOS = 'active';
window.COMPLETED_TODOS = 'completed';
var ENTER_KEY = 13;
var TodoApp = React.createClass({
getInitialState: function () {
var todos = Utils.store('react-todos');
return {
todos: Utils.store('react-todos'),
todos: todos,
nowShowing: ALL_TODOS,
editing: null
};
},
handleSubmit: React.autoBind(function () {
componentDidMount: function () {
var router = Router({
'/': this.setState.bind(this, {nowShowing: ALL_TODOS}),
'/active': this.setState.bind(this, {nowShowing: ACTIVE_TODOS}),
'/completed': this.setState.bind(this, {nowShowing: COMPLETED_TODOS})
});
router.init();
this.refs.newField.getDOMNode().focus();
},
handleNewTodoKeyDown: function (event) {
if (event.which !== ENTER_KEY) {
return;
}
var val = this.refs.newField.getDOMNode().value.trim();
var todos;
var newTodo;
......@@ -24,26 +53,26 @@
title: val,
completed: false
};
this.setState({ todos: todos.concat([newTodo]) });
this.setState({todos: todos.concat([newTodo])});
this.refs.newField.getDOMNode().value = '';
}
return false;
}),
},
toggleAll: function (event) {
var checked = event.nativeEvent.target.checked;
var checked = event.target.checked;
this.state.todos.map(function (todo) {
this.state.todos.forEach(function (todo) {
todo.completed = checked;
});
this.setState({ todos: this.state.todos });
this.setState({todos: this.state.todos});
},
toggle: function (todo) {
todo.completed = !todo.completed;
this.setState({ todos: this.state.todos });
this.setState({todos: this.state.todos});
},
destroy: function (todo) {
......@@ -51,11 +80,15 @@
return candidate.id !== todo.id;
});
this.setState({ todos: newTodos });
this.setState({todos: newTodos});
},
edit: function (todo) {
this.setState({ editing: todo.id });
edit: function (todo, callback) {
// refer to todoItem.js `handleEdit` for the reasoning behind the
// callback
this.setState({editing: todo.id}, function () {
callback();
});
},
save: function (todo, text) {
......@@ -63,9 +96,9 @@
this.setState({todos: this.state.todos, editing: null});
},
cancel: React.autoBind(function () {
cancel: function () {
this.setState({editing: null});
}),
},
clearCompleted: function () {
var newTodos = this.state.todos.filter(function (todo) {
......@@ -86,16 +119,27 @@
var activeTodoCount;
var completedCount;
this.state.todos.map(function (todo) {
var shownTodos = this.state.todos.filter(function (todo) {
switch (this.state.nowShowing) {
case ACTIVE_TODOS:
return !todo.completed;
case COMPLETED_TODOS:
return todo.completed;
default:
return true;
}
}.bind(this));
shownTodos.forEach(function (todo) {
todoItems[todo.id] = (
<TodoItem
todo={ todo }
onToggle={ this.toggle.bind(this, todo) }
onDestroy={ this.destroy.bind(this, todo) }
onEdit={ this.edit.bind(this, todo) }
editing={ this.state.editing === todo.id }
onSave={ this.save.bind(this, todo) }
onCancel={ this.cancel }
todo={todo}
onToggle={this.toggle.bind(this, todo)}
onDestroy={this.destroy.bind(this, todo)}
onEdit={this.edit.bind(this, todo)}
editing={this.state.editing === todo.id}
onSave={this.save.bind(this, todo)}
onCancel={this.cancel}
/>
);
}.bind(this));
......@@ -109,19 +153,24 @@
if (activeTodoCount || completedCount) {
footer =
<TodoFooter
count={ activeTodoCount }
completedCount={ completedCount }
onClearCompleted={ this.clearCompleted.bind(this) }
count={activeTodoCount}
completedCount={completedCount}
nowShowing={this.state.nowShowing}
onClearCompleted={this.clearCompleted}
/>;
}
if (this.state.todos.length) {
main = (
<section class="main">
<input class="toggle-all" type="checkbox" onChange={ this.toggleAll.bind(this) } checked={activeTodoCount === 0} />
<label class="toggle-all-label">Mark all as complete</label>
<ul class="todo-list">
{ todoItems }
<section id="main">
<input
id="toggle-all"
type="checkbox"
onChange={this.toggleAll}
checked={activeTodoCount === 0}
/>
<ul id="todo-list">
{todoItems}
</ul>
</section>
);
......@@ -129,31 +178,30 @@
return (
<div>
<section class="todoapp">
<header class="header">
<header id="header">
<h1>todos</h1>
<form onSubmit={ this.handleSubmit }>
<input
ref="newField"
class="new-todo"
id="new-todo"
placeholder="What needs to be done?"
autofocus="autofocus"
onKeyDown={this.handleNewTodoKeyDown}
/>
<input type="submit" class="submitButton" />
</form>
</header>
{main}
{footer}
</section>
<footer class="info">
<p>Double-click to edit a todo</p>
<p>Created by{' '}<a href="http://github.com/petehunt/">petehunt</a></p>
<p>Part of{' '}<a href="http://todomvc.com">TodoMVC</a></p>
</footer>
</div>
);
}
});
React.renderComponent(<TodoApp />, document.getElementById('todoapp'));
React.renderComponent(
<div>
<p>Double-click to edit a todo</p>
<p>Created by{' '}
<a href="http://github.com/petehunt/">petehunt</a>
</p>
<p>Part of{' '}<a href="http://todomvc.com">TodoMVC</a></p>
</div>,
document.getElementById('info'));
})(window, React);
/**
* @jsx React.DOM
*/
/*jshint quotmark:false */
/*jshint white:false */
/*jshint trailing:false */
/*jshint newcap:false */
/*global React, ALL_TODOS, ACTIVE_TODOS, Utils, COMPLETED_TODOS */
(function (window) {
'use strict';
......@@ -12,18 +17,39 @@
if (this.props.completedCount > 0) {
clearButton = (
<button
class="clear-completed"
onClick={ this.props.onClearCompleted }>
Clear completed ({ this.props.completedCount })
id="clear-completed"
onClick={this.props.onClearCompleted}>
{''}Clear completed ({this.props.completedCount}){''}
</button>
);
}
var show = {
ALL_TODOS: '',
ACTIVE_TODOS: '',
COMPLETED_TODOS: ''
};
show[this.props.nowShowing] = 'selected';
return (
<footer class="footer">
<span class="todo-count">
<strong>{this.props.count}</strong>{' '}{ activeTodoWord }{' '}left
<footer id="footer">
<span id="todo-count">
<strong>{this.props.count}</strong>
{' '}{activeTodoWord}{' '}left{''}
</span>
<ul id="filters">
<li>
<a href="#/" class={show[ALL_TODOS]}>All</a>
</li>
{' '}
<li>
<a href="#/active" class={show[ACTIVE_TODOS]}>Active</a>
</li>
{' '}
<li>
<a href="#/completed" class={show[COMPLETED_TODOS]}>Completed</a>
</li>
</ul>
{clearButton}
</footer>
);
......
/**
* @jsx React.DOM
*/
/*jshint quotmark: false */
/*jshint white: false */
/*jshint trailing: false */
/*jshint newcap: false */
/*global React, Utils */
(function (window) {
'use strict';
var ESCAPE_KEY = 27;
var ENTER_KEY = 13;
window.TodoItem = React.createClass({
handleSubmit: React.autoBind(function () {
handleSubmit: function () {
var val = this.state.editText.trim();
if (val) {
this.props.onSave(val);
this.setState({ editText: val });
this.setState({editText: val});
} else {
this.props.onDestroy();
}
return false;
}),
handleEdit: React.autoBind(function () {
this.props.onEdit();
},
handleEdit: function () {
// react optimizes renders by batching them. This means you can't call
// parent's `onEdit` (which in this case triggeres a re-render), and
// immediately manipulate the DOM as if the rendering's over. Put it as a
// callback. Refer to app.js' `edit` method
this.props.onEdit(function () {
var node = this.refs.editField.getDOMNode();
node.focus();
node.setSelectionRange(node.value.length, node.value.length);
}),
}.bind(this));
},
handleKey: React.autoBind(function (event) {
if (event.nativeEvent.keyCode === ESCAPE_KEY) {
this.setState({ editText: this.props.todo.title });
handleKeyDown: function (event) {
if (event.keyCode === ESCAPE_KEY) {
this.setState({editText: this.props.todo.title});
this.props.onCancel();
} else if (event.keyCode === ENTER_KEY) {
this.handleSubmit();
} else {
this.setState({ editText: event.target.value });
this.setState({editText: event.target.value});
}
}),
},
handleChange: function (event) {
this.setState({editText: event.target.value});
},
getInitialState: function () {
return { editText: this.props.todo.title };
return {editText: this.props.todo.title};
},
componentWillReceiveProps: function (nextProps) {
......@@ -47,7 +62,7 @@
render: function () {
return (
<li class={cx({
<li class={Utils.stringifyObjKeys({
completed: this.props.todo.completed,
editing: this.props.editing
})}>
......@@ -55,22 +70,22 @@
<input
class="toggle"
type="checkbox"
checked={ this.props.todo.completed ? 'checked' : null }
onChange={ this.props.onToggle }
checked={this.props.todo.completed ? 'checked' : null}
onChange={this.props.onToggle}
/>
<label onDoubleClick={ this.handleEdit }>{ this.props.todo.title }</label>
<button class='destroy' onClick={ this.props.onDestroy } />
<label onDoubleClick={this.handleEdit}>
{this.props.todo.title}
</label>
<button class='destroy' onClick={this.props.onDestroy} />
</div>
<form onSubmit={this.handleSubmit}>
<input
ref="editField"
class="edit"
value={ this.state.editText }
onBlur={ this.handleSubmit }
onKeyUp={ this.handleKey }
value={this.state.editText}
onBlur={this.handleSubmit}
onChange={this.handleChange}
onKeyDown={this.handleKeyDown}
/>
<input type="submit" class="submitButton" />
</form>
</li>
);
}
......
......@@ -12,7 +12,8 @@
if (i === 8 || i === 12 || i === 16 || i === 20) {
uuid += '-';
}
uuid += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);
uuid += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random))
.toString(16);
}
return uuid;
......@@ -29,10 +30,9 @@
var store = localStorage.getItem(namespace);
return (store && JSON.parse(store)) || [];
}
};
},
window.cx = function (obj) {
stringifyObjKeys: function (obj) {
var s = '';
var key;
......@@ -42,6 +42,8 @@
}
}
return s;
return s.trim();
}
};
})(window);
......@@ -11,9 +11,28 @@ The [React getting started documentation](http://facebook.github.io/react/docs/g
Here are some links you may find helpful:
* [Tutorial](http://facebook.github.io/react/docs/tutorial.html)
* [Philosophy](http://www.quora.com/Pete-Hunt/Posts/React-Under-the-Hood)
* [Common Questions](http://facebook.github.io/react/docs/common-questions.html)
* [Documentation](http://facebook.github.io/react/docs/getting-started.html)
* [API Reference](http://facebook.github.io/react/docs/reference.html)
* [Blog](http://facebook.github.io/react/blog/)
* [React on GitHub](https://github.com/facebook/react)
* [Support](http://facebook.github.io/react/support.html)
Articles and guides from the community:
* [Philosophy](http://www.quora.com/Pete-Hunt/Posts/React-Under-the-Hood)
* [How is Facebook's React JavaScript library](http://www.quora.com/React-JS-Library/How-is-Facebooks-React-JavaScript-library)
* [React: Under the hood](http://www.quora.com/Pete-Hunt/Posts/React-Under-the-Hood)
Get help from other React users:
* [React on StackOverflow](http://stackoverflow.com/questions/tagged/reactjs)
* [Mailing list on Google Groups](https://groups.google.com/forum/#!forum/reactjs)
*
_If you have other helpful links to share, or find any of the links above no longer work, please [let us know](https://github.com/tastejs/todomvc/issues)._
## Running
The app is built with [JSX](http://facebook.github.io/react/docs/jsx-in-depth.html) and compiled at runtime for a lighter and more fun code reading experience. As stated in the link, JSX is not mandatory.
To run the app, spin up an HTTP server (e.g. `python -m SimpleHTTPServer`) and visit http://localhost/.../myexample/.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment