From 64c0ccf7dc61e08003daed1c25d5fd32bb47eee0 Mon Sep 17 00:00:00 2001 From: Igor Prado Date: Sun, 11 Oct 2015 13:55:15 -0300 Subject: [PATCH 1/2] Now is possible to remove a notification by UID too. Added onAdd property to notification object. --- README.md | 5 +++-- example/build/app.js | 14 +++++++------- src/notification-system.jsx | 22 ++++++++++++++-------- src/styles.js | 10 +++++----- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 43c36bd..ad02892 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ Returns the notification object to be used to programmatically dismiss a notific ### `removeNotification(notification)` -Remove programmatically a notification. This object must be returned by `addNotification()` method or contains the properties `position` and `uid` of the notification that you want to remove. +Remove programmatically a notification. You can pass an object returned by `addNotification()` or by `onAdd()` callback. If passing an object, you need to make sure it must contain the `uid` property. You can pass only the `uid` too: `removeNotification(uid)`. ## Creating a notification @@ -103,7 +103,8 @@ The notification object has the following properties: | autoDismiss | integer | 5 | Delay in seconds for the notification go away. Set this to **0** to not auto-dismiss the notification | | dismissible | bool | true | Set if notification is dismissible by the user. [See more](#dismissible) | | action | object | null | Add a button with label and callback function. [See more](#action) | -| onRemove | function | null | A callback function that will be called when the notification is about to be removed. The first argument is the original notification e.g. `function (notification) { console.log(notification.title + 'was removed'); }` | +| onAdd | function | null | A callback function that will be called when the notification is successfully added. The first argument is the original notification e.g. `function (notification) { console.log(notification.title + 'was added'); }` | +| onRemove | function | null | A callback function that will be called when the notification is about to be removed. The first argument is the original notification e.g. `function (notification) { console.log(notification.title + 'was removed'); }` | | uid | integer/string | null | Overrides the internal `uid`. Useful if you are managing your notifications id. Notifications with same `uid` won't be displayed. | diff --git a/example/build/app.js b/example/build/app.js index 5aa42ef..7cd3c6a 100644 --- a/example/build/app.js +++ b/example/build/app.js @@ -1,7 +1,7 @@ -!function e(t,n,o){function r(i,s){if(!n[i]){if(!t[i]){var l="function"==typeof require&&require;if(!s&&l)return l(i,!0);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[i]={exports:{}};t[i][0].call(u.exports,function(e){var n=t[i][1][e];return r(n?n:e)},u,u.exports,e,t,n,o)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i1)for(var n=1;n-1&&this.props.notifications.reverse(),e=this.props.notifications.map(function(e){return o.createElement(r,{ref:"notification-"+e.uid,key:e.uid,notification:e,getStyles:t.props.getStyles,onRemove:t.props.onRemove,noAnimation:t.props.noAnimation,allowHTML:t.props.allowHTML})}),o.createElement("div",{className:"notifications-"+this.props.position,style:this._style},e)}});t.exports=i},{"./constants":3,"./notification-item":6,react:164}],6:[function(e,t,n){var o=e("react"),r=e("react-dom"),a=e("./constants"),i=e("./helpers"),s=e("object-assign"),l=function(){var e,t=document.createElement("fakeelement"),n={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in n)if(void 0!==t.style[e])return n[e]},c=o.createClass({displayName:"NotificationItem",propTypes:{notification:o.PropTypes.object,getStyles:o.PropTypes.object,onRemove:o.PropTypes.func,allowHTML:o.PropTypes.bool,noAnimation:o.PropTypes.bool},getDefaultProps:function(){return{noAnimation:!1,onRemove:function(){},allowHTML:!1}},getInitialState:function(){return{visible:!1,removed:!1}},componentWillMount:function(){var e=this.props.getStyles,t=this.props.notification.level;this._noAnimation=this.props.noAnimation,this._styles={notification:e.byElement("notification")(t),title:e.byElement("title")(t),dismiss:e.byElement("dismiss")(t),messageWrapper:e.byElement("messageWrapper")(t),actionWrapper:e.byElement("actionWrapper")(t),action:e.byElement("action")(t)},this.props.notification.dismissible||(this._styles.notification.cursor="default")},_styles:{},_notificationTimer:null,_height:0,_noAnimation:null,_isMounted:!1,_getCssPropertyByPosition:function(){var e=this.props.notification.position,t={};switch(e){case a.positions.tl:case a.positions.bl:t={property:"left",value:-200};break;case a.positions.tr:case a.positions.br:t={property:"right",value:-200};break;case a.positions.tc:t={property:"top",value:-100};break;case a.positions.bc:t={property:"bottom",value:-100}}return t},_defaultAction:function(e){var t=this.props.notification;e.preventDefault(),this._hideNotification(),t.action.callback()},_hideNotification:function(){this._notificationTimer&&this._notificationTimer.clear(),this._isMounted&&this.setState({visible:!1,removed:!0}),this._noAnimation&&this._removeNotification()},_removeNotification:function(){this.props.onRemove(this.props.notification.uid)},_dismiss:function(){this.props.notification.dismissible&&this._hideNotification()},_showNotification:function(){var e=this;setTimeout(function(){e._isMounted&&e.setState({visible:!0})},50)},componentDidMount:function(){var e=this,t=l(),n=this.props.notification,o=r.findDOMNode(this),a=0;this._height=o.offsetHeight,this._isMounted=!0,this._noAnimation||(t?o.addEventListener(t,function(){a>0||e.state.removed&&(a++,e._removeNotification())}):this._noAnimation=!0),n.autoDismiss&&(this._notificationTimer=new i.Timer(function(){e._hideNotification()},1e3*n.autoDismiss),o.addEventListener("mouseenter",function(){e._notificationTimer.pause()}),o.addEventListener("mouseleave",function(){e._notificationTimer.resume()})),this._showNotification()},componentWillUnmount:function(){this._isMounted=!1},_allowHTML:function(e){return{__html:e}},render:function(){var e=this.props.notification,t="notification notification-"+e.level,n=s({},this._styles.notification),r=this._getCssPropertyByPosition(),a=null,i=null,l=null,c=null;return console.log(n),t+=this.state.visible?" notification-visible":" notification-hidden",e.dismissible||(t+=" notification-not-dismissible"),this.props.getStyles.overrideStyle&&(this.state.visible||this.state.removed||(n[r.property]=r.value),this.state.visible&&!this.state.removed&&(n.height=this._height,n[r.property]=0),this.state.removed&&(n.overlay="hidden",n.height=0,n.marginTop=0,n.paddingTop=0,n.paddingBottom=0),n.opacity=this.state.visible?this._styles.notification.isVisible.opacity:this._styles.notification.isHidden.opacity),e.title&&(l=o.createElement("h4",{className:"notification-title",style:this._styles.title},e.title)),e.message&&(c=this.props.allowHTML?o.createElement("div",{className:"notification-message",style:this._styles.messageWrapper,dangerouslySetInnerHTML:this._allowHTML(e.message)}):o.createElement("div",{className:"notification-message",style:this._styles.messageWrapper},e.message)),e.dismissible&&(a=o.createElement("span",{className:"notification-dismiss",style:this._styles.dismiss},"×")),e.action&&(i=o.createElement("div",{className:"notification-action-wrapper",style:this._styles.actionWrapper},o.createElement("button",{className:"notification-action-button",onClick:this._defaultAction,style:this._styles.action},e.action.label))),o.createElement("div",{className:t,onClick:this._dismiss,style:n},l,c,a,i)}});t.exports=c},{"./constants":3,"./helpers":4,"object-assign":9,react:164,"react-dom":2}],7:[function(e,t,n){var o=e("react"),r=e("object-assign"),a=e("./notification-container"),i=e("./constants"),s=e("./styles"),l=o.createClass({displayName:"NotificationSystem",uid:3400,_getStyles:{overrideStyle:{},overrideWidth:null,setOverrideStyle:function(e){this.overrideStyle=e},wrapper:function(){return this.overrideStyle?r({},s.Wrapper,this.overrideStyle):{}},container:function(e){var t=this.overrideStyle.Containers||{};return this.overrideStyle?(this.overrideWidth=s.Containers.DefaultStyle.width,t.DefaultStyle&&t.DefaultStyle.width&&(this.overrideWidth=t.DefaultStyle.width),t[e]&&t[e].width&&(this.overrideWidth=t[e].width),r({},s.Containers.DefaultStyle,s.Containers[e],t.DefaultStyle,t[e])):{}},elements:{notification:"NotificationItem",title:"Title",messageWrapper:"MessageWrapper",dismiss:"Dismiss",action:"Action",actionWrapper:"ActionWrapper"},byElement:function(e){var t=this;return function(n){var o=t.elements[e],a=t.overrideStyle[o]||{};return t.overrideStyle?r({},s[o].DefaultStyle,s[o][n],a.DefaultStyle,a[n]):{}}}},_didNotificationRemoved:function(e){var t,n=this.state.notifications.filter(function(n){return n.uid===e&&(t=n),n.uid!==e});t&&t.onRemove&&t.onRemove(t),this.setState({notifications:n})},getInitialState:function(){return{notifications:[]}},propTypes:{style:o.PropTypes.oneOfType([o.PropTypes.bool,o.PropTypes.object])},getDefaultProps:function(){return{style:{},noAnimation:!1}},addNotification:function(e){var t,n=r({},i.notification,e),o=this.state.notifications,a=!1;try{if(!n.level)throw"notification level is required.";if(isNaN(n.autoDismiss))throw"'autoDismiss' must be a number.";if(-1===Object.keys(i.positions).indexOf(n.position))throw"'"+n.position+"' is not a valid position.";if(-1===Object.keys(i.levels).indexOf(n.level))throw"'"+n.level+"' is not a valid level."}catch(s){a=!0,console.error("Error adding notification: "+s)}if(!a){for(n.position=n.position.toLowerCase(),n.level=n.level.toLowerCase(),n.autoDismiss=parseInt(n.autoDismiss,10),n.uid=n.uid||this.uid,n.ref="notification-"+n.uid,this.uid+=1,t=0;t8&&11>=_),M=32,D=String.fromCharCode(M),O=f.topLevelTypes,S={beforeInput:{phasedRegistrationNames:{bubbled:b({onBeforeInput:null}),captured:b({onBeforeInputCapture:null})},dependencies:[O.topCompositionEnd,O.topKeyPress,O.topTextInput,O.topPaste]},compositionEnd:{phasedRegistrationNames:{bubbled:b({onCompositionEnd:null}),captured:b({onCompositionEndCapture:null})},dependencies:[O.topBlur,O.topCompositionEnd,O.topKeyDown,O.topKeyPress,O.topKeyUp,O.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:b({onCompositionStart:null}),captured:b({onCompositionStartCapture:null})},dependencies:[O.topBlur,O.topCompositionStart,O.topKeyDown,O.topKeyPress,O.topKeyUp,O.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:b({onCompositionUpdate:null}),captured:b({onCompositionUpdateCapture:null})},dependencies:[O.topBlur,O.topCompositionUpdate,O.topKeyDown,O.topKeyPress,O.topKeyUp,O.topMouseDown]}},N=!1,T=null,P={eventTypes:S,extractEvents:function(e,t,n,o,r){return[c(e,t,n,o,r),d(e,t,n,o,r)]}};t.exports=P},{"./EventConstants":23,"./EventPropagators":27,"./FallbackCompositionState":28,"./SyntheticCompositionEvent":99,"./SyntheticInputEvent":103,"fbjs/lib/ExecutionEnvironment":138,"fbjs/lib/keyOf":156}],12:[function(e,t,n){"use strict";function o(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var r={animationIterationCount:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,stopOpacity:!0,strokeDashoffset:!0,strokeOpacity:!0,strokeWidth:!0},a=["Webkit","ms","Moz","O"];Object.keys(r).forEach(function(e){a.forEach(function(t){r[o(t,e)]=r[e]})});var i={background:{backgroundAttachment:!0,backgroundColor:!0,backgroundImage:!0,backgroundPositionX:!0,backgroundPositionY:!0,backgroundRepeat:!0},backgroundPosition:{backgroundPositionX:!0,backgroundPositionY:!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},outline:{outlineWidth:!0,outlineStyle:!0,outlineColor:!0}},s={isUnitlessNumber:r,shorthandPropertyExpansions:i};t.exports=s},{}],13:[function(e,t,n){"use strict";var o=e("./CSSProperty"),r=e("fbjs/lib/ExecutionEnvironment"),a=e("./ReactPerf"),i=e("fbjs/lib/camelizeStyleName"),s=e("./dangerousStyleValue"),l=e("fbjs/lib/hyphenateStyleName"),c=e("fbjs/lib/memoizeStringOnly"),u=e("fbjs/lib/warning"),p=c(function(e){return l(e)}),d=!1,f="cssFloat";if(r.canUseDOM){var h=document.createElement("div").style;try{h.font=""}catch(m){d=!0}void 0===document.documentElement.style.cssFloat&&(f="styleFloat")}var v=/^(?:webkit|moz|o)[A-Z]/,g=/;\s*$/,y={},b={},C=function(e){y.hasOwnProperty(e)&&y[e]||(y[e]=!0,u(!1,"Unsupported style property %s. Did you mean %s?",e,i(e)))},E=function(e){y.hasOwnProperty(e)&&y[e]||(y[e]=!0,u(!1,"Unsupported vendor-prefixed style property %s. Did you mean %s?",e,e.charAt(0).toUpperCase()+e.slice(1)))},R=function(e,t){b.hasOwnProperty(t)&&b[t]||(b[t]=!0,u(!1,'Style property values shouldn\'t contain a semicolon. Try "%s: %s" instead.',e,t.replace(g,"")))},_=function(e,t){e.indexOf("-")>-1?C(e):v.test(e)?E(e):g.test(t)&&R(e,t)},x={createMarkupForStyles:function(e){var t="";for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];_(n,o),null!=o&&(t+=p(n)+":",t+=s(n,o)+";")}return t||null},setValueForStyles:function(e,t){var n=e.style;for(var r in t)if(t.hasOwnProperty(r)){_(r,t[r]);var a=s(r,t[r]);if("float"===r&&(r=f),a)n[r]=a;else{var i=d&&o.shorthandPropertyExpansions[r];if(i)for(var l in i)n[l]="";else n[r]=""}}}};a.measureMethods(x,"CSSPropertyOperations",{setValueForStyles:"setValueForStyles"}),t.exports=x},{"./CSSProperty":12,"./ReactPerf":80,"./dangerousStyleValue":113,"fbjs/lib/ExecutionEnvironment":138,"fbjs/lib/camelizeStyleName":140,"fbjs/lib/hyphenateStyleName":151,"fbjs/lib/memoizeStringOnly":158,"fbjs/lib/warning":163}],14:[function(e,t,n){"use strict";function o(){this._callbacks=null,this._contexts=null}var r=e("./PooledClass"),a=e("./Object.assign"),i=e("fbjs/lib/invariant");a(o.prototype,{enqueue:function(e,t){this._callbacks=this._callbacks||[],this._contexts=this._contexts||[],this._callbacks.push(e),this._contexts.push(t)},notifyAll:function(){var e=this._callbacks,t=this._contexts;if(e){e.length!==t.length?i(!1,"Mismatched list of contexts in callback queue"):void 0,this._callbacks=null,this._contexts=null;for(var n=0;n8));var j=!1;E.canUseDOM&&(j=w("input")&&(!("documentMode"in document)||document.documentMode>9));var A={get:function(){return I.get.call(this)},set:function(e){P=""+e,I.set.call(this,e)}},L={eventTypes:S,extractEvents:function(e,t,n,r,a){var i,s;if(o(t)?k?i=l:s=c:M(t)?j?i=f:(i=m,s=h):v(t)&&(i=g),i){var u=i(e,t,n);if(u){var p=_.getPooled(S.change,u,r,a);return p.type="change",C.accumulateTwoPhaseDispatches(p),p}}s&&s(e,t,n)}};t.exports=L},{"./EventConstants":23,"./EventPluginHub":24,"./EventPropagators":27,"./ReactUpdates":92,"./SyntheticEvent":101,"./getEventTarget":122,"./isEventSupported":127,"./isTextInputElement":128,"fbjs/lib/ExecutionEnvironment":138,"fbjs/lib/keyOf":156}],16:[function(e,t,n){"use strict";var o=0,r={createReactRootIndex:function(){return o++}};t.exports=r},{}],17:[function(e,t,n){"use strict";function o(e,t,n){var o=n>=e.childNodes.length?null:e.childNodes.item(n);e.insertBefore(t,o)}var r=e("./Danger"),a=e("./ReactMultiChildUpdateTypes"),i=e("./ReactPerf"),s=e("./setInnerHTML"),l=e("./setTextContent"),c=e("fbjs/lib/invariant"),u={dangerouslyReplaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup,updateTextContent:l,processUpdates:function(e,t){for(var n,i=null,u=null,p=0;p when using tables, nesting tags like
,

, or , or using non-SVG elements in an parent. Try inspecting the child nodes of the element with React ID `%s`.",d,h),i=i||{},i[h]=i[h]||[],i[h][d]=f,u=u||[],u.push(f)}var m;if(m=t.length&&"string"==typeof t[0]?r.dangerouslyRenderMarkup(t):t,u)for(var v=0;vt||e.hasOverloadedBooleanValue&&t===!1}var a=e("./DOMProperty"),i=e("./ReactPerf"),s=e("./quoteAttributeValueForBrowser"),l=e("fbjs/lib/warning"),c=/^[a-zA-Z_][\w\.\-]*$/,u={},p={},d={children:!0,dangerouslySetInnerHTML:!0,key:!0,ref:!0},f={},h=function(e){if(!(d.hasOwnProperty(e)&&d[e]||f.hasOwnProperty(e)&&f[e])){f[e]=!0;var t=e.toLowerCase(),n=a.isCustomAttribute(t)?t:a.getPossibleStandardName.hasOwnProperty(t)?a.getPossibleStandardName[t]:null;l(null==n,"Unknown DOM property %s. Did you mean %s?",e,n)}},m={createMarkupForID:function(e){return a.ID_ATTRIBUTE_NAME+"="+s(e)},setAttributeForID:function(e,t){e.setAttribute(a.ID_ATTRIBUTE_NAME,t)},createMarkupForProperty:function(e,t){var n=a.properties.hasOwnProperty(e)?a.properties[e]:null;if(n){if(r(n,t))return"";var o=n.attributeName;return n.hasBooleanValue||n.hasOverloadedBooleanValue&&t===!0?o+'=""':o+"="+s(t)}return a.isCustomAttribute(e)?null==t?"":e+"="+s(t):(h(e),null)},createMarkupForCustomAttribute:function(e,t){return o(e)&&null!=t?e+"="+s(t):""},setValueForProperty:function(e,t,n){var o=a.properties.hasOwnProperty(t)?a.properties[t]:null;if(o){var i=o.mutationMethod;if(i)i(e,n);else if(r(o,n))this.deleteValueForProperty(e,t);else if(o.mustUseAttribute){var s=o.attributeName,l=o.attributeNamespace;l?e.setAttributeNS(l,s,""+n):o.hasBooleanValue||o.hasOverloadedBooleanValue&&n===!0?e.setAttribute(s,""):e.setAttribute(s,""+n)}else{var c=o.propertyName;o.hasSideEffects&&""+e[c]==""+n||(e[c]=n)}}else a.isCustomAttribute(t)?m.setValueForAttribute(e,t,n):h(t)},setValueForAttribute:function(e,t,n){o(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t,""+n))},deleteValueForProperty:function(e,t){var n=a.properties.hasOwnProperty(t)?a.properties[t]:null;if(n){var o=n.mutationMethod;if(o)o(e,void 0);else if(n.mustUseAttribute)e.removeAttribute(n.attributeName);else{var r=n.propertyName,i=a.getDefaultValueForProperty(e.nodeName,r);n.hasSideEffects&&""+e[r]===i||(e[r]=i)}}else a.isCustomAttribute(t)?e.removeAttribute(t):h(t)}};i.measureMethods(m,"DOMPropertyOperations",{setValueForProperty:"setValueForProperty",setValueForAttribute:"setValueForAttribute",deleteValueForProperty:"deleteValueForProperty"}),t.exports=m},{"./DOMProperty":18,"./ReactPerf":80,"./quoteAttributeValueForBrowser":130,"fbjs/lib/warning":163}],20:[function(e,t,n){"use strict";function o(e){return e.substring(1,e.indexOf(" "))}var r=e("fbjs/lib/ExecutionEnvironment"),a=e("fbjs/lib/createNodesFromMarkup"),i=e("fbjs/lib/emptyFunction"),s=e("fbjs/lib/getMarkupWrap"),l=e("fbjs/lib/invariant"),c=/^(<[^ \/>]+)/,u="data-danger-index",p={dangerouslyRenderMarkup:function(e){r.canUseDOM?void 0:l(!1,"dangerouslyRenderMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString for server rendering.");for(var t,n={},p=0;p node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString()."):void 0;var n;n="string"==typeof t?a(t,i)[0]:t,e.parentNode.replaceChild(n,e)}};t.exports=p},{"fbjs/lib/ExecutionEnvironment":138,"fbjs/lib/createNodesFromMarkup":143,"fbjs/lib/emptyFunction":144,"fbjs/lib/getMarkupWrap":148,"fbjs/lib/invariant":152}],21:[function(e,t,n){"use strict";var o=e("fbjs/lib/keyOf"),r=[o({ResponderEventPlugin:null}),o({SimpleEventPlugin:null}),o({TapEventPlugin:null}),o({EnterLeaveEventPlugin:null}),o({ChangeEventPlugin:null}),o({SelectEventPlugin:null}),o({BeforeInputEventPlugin:null})];t.exports=r},{"fbjs/lib/keyOf":156}],22:[function(e,t,n){"use strict";var o=e("./EventConstants"),r=e("./EventPropagators"),a=e("./SyntheticMouseEvent"),i=e("./ReactMount"),s=e("fbjs/lib/keyOf"),l=o.topLevelTypes,c=i.getFirstReactDOM,u={mouseEnter:{registrationName:s({onMouseEnter:null}),dependencies:[l.topMouseOut,l.topMouseOver]},mouseLeave:{registrationName:s({onMouseLeave:null}),dependencies:[l.topMouseOut,l.topMouseOver]}},p=[null,null],d={eventTypes:u,extractEvents:function(e,t,n,o,s){if(e===l.topMouseOver&&(o.relatedTarget||o.fromElement))return null;if(e!==l.topMouseOut&&e!==l.topMouseOver)return null;var d;if(t.window===t)d=t;else{var f=t.ownerDocument;d=f?f.defaultView||f.parentWindow:window}var h,m,v="",g="";if(e===l.topMouseOut?(h=t,v=n,m=c(o.relatedTarget||o.toElement),m?g=i.getID(m):m=d,m=m||d):(h=d,m=t,g=n),h===m)return null;var y=a.getPooled(u.mouseLeave,v,o,s);y.type="mouseleave",y.target=h,y.relatedTarget=m;var b=a.getPooled(u.mouseEnter,g,o,s);return b.type="mouseenter",b.target=m,b.relatedTarget=h,r.accumulateEnterLeaveDispatches(y,b,v,g),p[0]=y,p[1]=b,p}};t.exports=d},{"./EventConstants":23,"./EventPropagators":27,"./ReactMount":74,"./SyntheticMouseEvent":105,"fbjs/lib/keyOf":156}],23:[function(e,t,n){"use strict";var o=e("fbjs/lib/keyMirror"),r=o({bubbled:null,captured:null}),a=o({topAbort:null,topBlur:null,topCanPlay:null,topCanPlayThrough:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositionStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topDurationChange:null,topEmptied:null,topEncrypted:null,topEnded:null,topError:null,topFocus:null,topInput:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topLoadedData:null,topLoadedMetadata:null,topLoadStart:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topPause:null,topPlay:null,topPlaying:null,topProgress:null,topRateChange:null,topReset:null,topScroll:null,topSeeked:null,topSeeking:null,topSelectionChange:null,topStalled:null,topSubmit:null,topSuspend:null,topTextInput:null,topTimeUpdate:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topVolumeChange:null,topWaiting:null,topWheel:null}),i={topLevelTypes:a,PropagationPhases:r};t.exports=i},{"fbjs/lib/keyMirror":155}],24:[function(e,t,n){"use strict";function o(){var e=v&&v.traverseTwoPhase&&v.traverseEnterLeave;u(e,"InstanceHandle not injected before use!")}var r=e("./EventPluginRegistry"),a=e("./EventPluginUtils"),i=e("./ReactErrorUtils"),s=e("./accumulateInto"),l=e("./forEachAccumulated"),c=e("fbjs/lib/invariant"),u=e("fbjs/lib/warning"),p={},d=null,f=function(e,t){e&&(a.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},h=function(e){return f(e,!0)},m=function(e){return f(e,!1)},v=null,g={injection:{injectMount:a.injection.injectMount,injectInstanceHandle:function(e){v=e,o()},getInstanceHandle:function(){return o(),v},injectEventPluginOrder:r.injectEventPluginOrder,injectEventPluginsByName:r.injectEventPluginsByName},eventNameDispatchConfigs:r.eventNameDispatchConfigs,registrationNameModules:r.registrationNameModules,putListener:function(e,t,n){"function"!=typeof n?c(!1,"Expected %s listener to be a function, instead got type %s",t,typeof n):void 0;var o=p[t]||(p[t]={});o[e]=n;var a=r.registrationNameModules[t];a&&a.didPutListener&&a.didPutListener(e,t,n)},getListener:function(e,t){var n=p[t];return n&&n[e]},deleteListener:function(e,t){var n=r.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t);var o=p[t];o&&delete o[e]},deleteAllListeners:function(e){for(var t in p)if(p[t][e]){var n=r.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t),delete p[t][e]}},extractEvents:function(e,t,n,o,a){for(var i,l=r.plugins,c=0;c-1?void 0:i(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e),!c.plugins[n]){t.extractEvents?void 0:i(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e),c.plugins[n]=t;var o=t.eventTypes;for(var a in o)r(o[a],t,a)?void 0:i(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",a,e)}}}function r(e,t,n){c.eventNameDispatchConfigs.hasOwnProperty(n)?i(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",n):void 0,c.eventNameDispatchConfigs[n]=e;var o=e.phasedRegistrationNames;if(o){for(var r in o)if(o.hasOwnProperty(r)){var s=o[r];a(s,t,n)}return!0}return e.registrationName?(a(e.registrationName,t,n),!0):!1}function a(e,t,n){c.registrationNameModules[e]?i(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):void 0,c.registrationNameModules[e]=t,c.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var i=e("fbjs/lib/invariant"),s=null,l={},c={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},injectEventPluginOrder:function(e){s?i(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):void 0,s=Array.prototype.slice.call(e),o()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];l.hasOwnProperty(n)&&l[n]===r||(l[n]?i(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",n):void 0,l[n]=r,t=!0)}t&&o()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return c.registrationNameModules[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var o=c.registrationNameModules[t.phasedRegistrationNames[n]];if(o)return o}return null},_resetEventPlugins:function(){s=null;for(var e in l)l.hasOwnProperty(e)&&delete l[e];c.plugins.length=0;var t=c.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var o=c.registrationNameModules;for(var r in o)o.hasOwnProperty(r)&&delete o[r]}};t.exports=c},{"fbjs/lib/invariant":152}],26:[function(e,t,n){"use strict";function o(e){return e===y.topMouseUp||e===y.topTouchEnd||e===y.topTouchCancel}function r(e){return e===y.topMouseMove||e===y.topTouchMove}function a(e){return e===y.topMouseDown||e===y.topTouchStart}function i(e,t,n,o){var r=e.type||"unknown-event";e.currentTarget=g.Mount.getNode(o),t?h.invokeGuardedCallbackWithCatch(r,n,e,o):h.invokeGuardedCallback(r,n,e,o),e.currentTarget=null}function s(e,t){var n=e._dispatchListeners,o=e._dispatchIDs;if(d(e),Array.isArray(n))for(var r=0;re&&n[e]===r[e];e++);var i=o-e;for(t=1;i>=t&&n[o-t]===r[a-t];t++);var s=t>1?1-t:void 0;return this._fallbackText=r.slice(e,s),this._fallbackText}}),r.addPoolingTo(o),t.exports=o},{"./Object.assign":31,"./PooledClass":32,"./getTextContentAccessor":125}],29:[function(e,t,n){"use strict";var o,r=e("./DOMProperty"),a=e("fbjs/lib/ExecutionEnvironment"),i=r.injection.MUST_USE_ATTRIBUTE,s=r.injection.MUST_USE_PROPERTY,l=r.injection.HAS_BOOLEAN_VALUE,c=r.injection.HAS_SIDE_EFFECTS,u=r.injection.HAS_NUMERIC_VALUE,p=r.injection.HAS_POSITIVE_NUMERIC_VALUE,d=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE;if(a.canUseDOM){var f=document.implementation;o=f&&f.hasFeature&&f.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}var h={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accept:null,acceptCharset:null,accessKey:null,action:null,allowFullScreen:i|l,allowTransparency:i,alt:null,async:l,autoComplete:null,autoPlay:l,capture:i|l,cellPadding:null,cellSpacing:null,charSet:i,challenge:i,checked:s|l,classID:i,className:o?i:s,cols:i|p,colSpan:null,content:null,contentEditable:null,contextMenu:i,controls:s|l,coords:null,crossOrigin:null,data:null,dateTime:i,defer:l,dir:null,disabled:i|l,download:d,draggable:null,encType:null,form:i,formAction:i,formEncType:i,formMethod:i,formNoValidate:l,formTarget:i,frameBorder:i,headers:null,height:i,hidden:i|l,high:null,href:null,hrefLang:null,htmlFor:null,httpEquiv:null,icon:null,id:s,inputMode:i,is:i,keyParams:i,keyType:i,label:null,lang:null,list:i,loop:s|l,low:null,manifest:i,marginHeight:null,marginWidth:null,max:null,maxLength:i,media:i,mediaGroup:null,method:null,min:null,minLength:i,multiple:s|l,muted:s|l,name:null,noValidate:l,open:l,optimum:null,pattern:null,placeholder:null,poster:null,preload:null,radioGroup:null,readOnly:s|l,rel:null,required:l,role:i,rows:i|p,rowSpan:null,sandbox:null,scope:null,scoped:l,scrolling:null,seamless:i|l,selected:s|l,shape:null,size:i|p,sizes:i,span:p,spellCheck:null,src:null,srcDoc:s,srcSet:i,start:u,step:null,style:null,summary:null,tabIndex:null,target:null,title:null,type:null,useMap:null,value:s|c,width:i,wmode:i,wrap:null,about:i,datatype:i,inlist:i,prefix:i,property:i,resource:i,"typeof":i,vocab:i,autoCapitalize:null,autoCorrect:null,autoSave:null,itemProp:i,itemScope:i|l,itemType:i,itemID:i,itemRef:i,results:null,security:i,unselectable:i},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",autoPlay:"autoplay",autoSave:"autosave",encType:"encoding",hrefLang:"hreflang",radioGroup:"radiogroup",spellCheck:"spellcheck",srcDoc:"srcdoc",srcSet:"srcset"}};t.exports=h},{"./DOMProperty":18,"fbjs/lib/ExecutionEnvironment":138}],30:[function(e,t,n){"use strict";function o(e){null!=e.checkedLink&&null!=e.valueLink?c(!1,"Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don't want to use valueLink and vice versa."):void 0}function r(e){o(e),null!=e.value||null!=e.onChange?c(!1,"Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don't want to use valueLink."):void 0}function a(e){o(e),null!=e.checked||null!=e.onChange?c(!1,"Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don't want to use checkedLink"):void 0}function i(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}var s=e("./ReactPropTypes"),l=e("./ReactPropTypeLocations"),c=e("fbjs/lib/invariant"),u=e("fbjs/lib/warning"),p={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},d={value:function(e,t,n){return!e[t]||p[e.type]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(e,t,n){return!e[t]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:s.func},f={},h={checkPropTypes:function(e,t,n){for(var o in d){if(d.hasOwnProperty(o))var r=d[o](t,o,e,l.prop);if(r instanceof Error&&!(r.message in f)){f[r.message]=!0;var a=i(n);u(!1,"Failed form propType: %s%s",r.message,a)}}},getValue:function(e){return e.valueLink?(r(e),e.valueLink.value):e.value},getChecked:function(e){return e.checkedLink?(a(e),e.checkedLink.value):e.checked},executeOnChange:function(e,t){return e.valueLink?(r(e),e.valueLink.requestChange(t.target.value)):e.checkedLink?(a(e),e.checkedLink.requestChange(t.target.checked)):e.onChange?e.onChange.call(void 0,t):void 0}};t.exports=h},{"./ReactPropTypeLocations":82,"./ReactPropTypes":83,"fbjs/lib/invariant":152,"fbjs/lib/warning":163}],31:[function(e,t,n){"use strict";function o(e,t){if(null==e)throw new TypeError("Object.assign target cannot be null or undefined");for(var n=Object(e),o=Object.prototype.hasOwnProperty,r=1;r1?i-1:0),l=1;i>l;l++)s[l-1]=arguments[l];if(a!==e&&null!==a)_(!1,"bind(): React component methods may only be bound to the component instance. See %s",o);else if(!s.length)return _(!1,"bind(): You are binding a component method to the component. React does this for you automatically in a high-performance way, so you can safely remove this call. See %s",o),n;var c=r.apply(n,arguments);return c.__reactBoundContext=e,c.__reactBoundMethod=t,c.__reactBoundArguments=s,c},n}function d(e){for(var t in e.__reactAutoBindMap)if(e.__reactAutoBindMap.hasOwnProperty(t)){var n=e.__reactAutoBindMap[t];e[t]=p(e,n)}}var f=e("./ReactComponent"),h=e("./ReactElement"),m=e("./ReactPropTypeLocations"),v=e("./ReactPropTypeLocationNames"),g=e("./ReactNoopUpdateQueue"),y=e("./Object.assign"),b=e("fbjs/lib/emptyObject"),C=e("fbjs/lib/invariant"),E=e("fbjs/lib/keyMirror"),R=e("fbjs/lib/keyOf"),_=e("fbjs/lib/warning"),x=R({mixins:null}),w=E({DEFINE_ONCE:null,DEFINE_MANY:null,OVERRIDE_BASE:null,DEFINE_MANY_MERGED:null}),M=[],D=!1,O={mixins:w.DEFINE_MANY,statics:w.DEFINE_MANY,propTypes:w.DEFINE_MANY,contextTypes:w.DEFINE_MANY,childContextTypes:w.DEFINE_MANY,getDefaultProps:w.DEFINE_MANY_MERGED,getInitialState:w.DEFINE_MANY_MERGED,getChildContext:w.DEFINE_MANY_MERGED,render:w.DEFINE_ONCE,componentWillMount:w.DEFINE_MANY,componentDidMount:w.DEFINE_MANY,componentWillReceiveProps:w.DEFINE_MANY,shouldComponentUpdate:w.DEFINE_ONCE,componentWillUpdate:w.DEFINE_MANY,componentDidUpdate:w.DEFINE_MANY,componentWillUnmount:w.DEFINE_MANY,updateComponent:w.OVERRIDE_BASE},S={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n-1&&-1===navigator.userAgent.indexOf("Edge")||navigator.userAgent.indexOf("Firefox")>-1)&&console.debug("Download the React DevTools for a better development experience: https://fb.me/react-devtools");var y=document.documentMode&&document.documentMode<8;h(!y,'Internet Explorer is running in compatibility mode; please add the following tag to your HTML to prevent this from happening: ');for(var b=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim,Object.create,Object.freeze],C=0;C",c(e),c(t)))}}function p(e,t){t&&(ie[e._tag]&&z(null==t.children&&null==t.dangerouslySetInnerHTML,"%s is a void element tag and must not have `children` or use `props.dangerouslySetInnerHTML`.%s",e._tag,e._currentElement._owner?" Check the render method of "+e._currentElement._owner.getName()+".":""),null!=t.dangerouslySetInnerHTML&&(null!=t.children?F(!1,"Can only set one of `children` or `props.dangerouslySetInnerHTML`."):void 0,"object"==typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML?void 0:F(!1,"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.")),z(null==t.innerHTML,"Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`."),z(!t.contentEditable||null==t.children,"A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional."),null!=t.style&&"object"!=typeof t.style?F(!1,"The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.%s",o(e)):void 0)}function d(e,t,n,o){z("onScroll"!==t||B("scroll",!0),"This browser doesn't support the `onScroll` event");var r=I.findReactContainerForID(e);if(r){var a=r.nodeType===J?r.ownerDocument:r;G(t,a)}o.getReactMountReady().enqueue(f,{id:e,registrationName:t,listener:n})}function f(){var e=this;M.putListener(e.id,e.registrationName,e.listener)}function h(){var e=this;e._rootNodeID?void 0:F(!1,"Must be mounted to trap events");var t=I.getNode(e._rootNodeID);switch(t?void 0:F(!1,"trapBubbledEvent(...): Requires node to be rendered."),e._tag){case"iframe":e._wrapperState.listeners=[M.trapBubbledEvent(w.topLevelTypes.topLoad,"load",t)];break;case"video":case"audio":e._wrapperState.listeners=[];for(var n in oe)oe.hasOwnProperty(n)&&e._wrapperState.listeners.push(M.trapBubbledEvent(w.topLevelTypes[n],oe[n],t));break;case"img":e._wrapperState.listeners=[M.trapBubbledEvent(w.topLevelTypes.topError,"error",t),M.trapBubbledEvent(w.topLevelTypes.topLoad,"load",t)];break;case"form":e._wrapperState.listeners=[M.trapBubbledEvent(w.topLevelTypes.topReset,"reset",t),M.trapBubbledEvent(w.topLevelTypes.topSubmit,"submit",t)]}}function m(){S.mountReadyWrapper(this)}function v(){T.postUpdateWrapper(this)}function g(e){ce.call(le,e)||(se.test(e)?void 0:F(!1,"Invalid tag: %s",e),le[e]=!0)}function y(e,t){e=L({},e);var n=e[K.ancestorInfoContextKey];return e[K.ancestorInfoContextKey]=K.updatedAncestorInfo(n,t._tag,t),e}function b(e,t){return e.indexOf("-")>=0||null!=t.is}function C(e){g(e),this._tag=e.toLowerCase(),this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._rootNodeID=null,this._wrapperState=null,this._topLevelWrapper=null,this._nodeWithLegacyProperties=null,this._unprocessedContextDev=null,this._processedContextDev=null}var E=e("./AutoFocusUtils"),R=e("./CSSPropertyOperations"),_=e("./DOMProperty"),x=e("./DOMPropertyOperations"),w=e("./EventConstants"),M=e("./ReactBrowserEventEmitter"),D=e("./ReactComponentBrowserEnvironment"),O=e("./ReactDOMButton"),S=e("./ReactDOMInput"),N=e("./ReactDOMOption"),T=e("./ReactDOMSelect"),P=e("./ReactDOMTextarea"),I=e("./ReactMount"),k=e("./ReactMultiChild"),j=e("./ReactPerf"),A=e("./ReactUpdateQueue"),L=e("./Object.assign"),U=e("./escapeTextContentForBrowser"),F=e("fbjs/lib/invariant"),B=e("./isEventSupported"),V=e("fbjs/lib/keyOf"),W=e("./setInnerHTML"),H=e("./setTextContent"),q=e("fbjs/lib/shallowEqual"),K=e("./validateDOMNesting"),z=e("fbjs/lib/warning"),Y=M.deleteListener,G=M.listenTo,Q=M.registrationNameModules,X={string:!0,number:!0},$=V({style:null}),J=1,Z=!1;try{Object.defineProperty({},"test",{get:function(){}}),Z=!0}catch(ee){}var te;te={props:{enumerable:!1,get:function(){var e=this._reactInternalComponent;return z(!1,"ReactDOMComponent: Do not access .props of a DOM node; instead, recreate the props as `render` did originally or read the DOM properties/attributes directly from this node (e.g., this.refs.box.className).%s",o(e)),e._currentElement.props}}};var ne={},oe={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},re={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},ae={listing:!0,pre:!0,textarea:!0},ie=L({menuitem:!0},re),se=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,le={},ce={}.hasOwnProperty;C.displayName="ReactDOMComponent",C.Mixin={construct:function(e){this._currentElement=e},mountComponent:function(e,t,n){this._rootNodeID=e;var o=this._currentElement.props;switch(this._tag){case"iframe":case"img":case"form":case"video":case"audio":this._wrapperState={listeners:null},t.getReactMountReady().enqueue(h,this);break;case"button":o=O.getNativeProps(this,o,n);break;case"input":S.mountWrapper(this,o,n),o=S.getNativeProps(this,o,n);break;case"option":N.mountWrapper(this,o,n),o=N.getNativeProps(this,o,n);break;case"select":T.mountWrapper(this,o,n),o=T.getNativeProps(this,o,n),n=T.processChildContext(this,o,n);break;case"textarea":P.mountWrapper(this,o,n),o=P.getNativeProps(this,o,n)}p(this,o),n[K.ancestorInfoContextKey]&&K(this._tag,this,n[K.ancestorInfoContextKey]),this._unprocessedContextDev=n,this._processedContextDev=y(n,this),n=this._processedContextDev;var r;if(t.useCreateElement){var a=n[I.ownerDocumentContextKey],i=a.createElement(this._currentElement.type);x.setAttributeForID(i,this._rootNodeID),I.getID(i),this._updateDOMProperties({},o,t,i),this._createInitialChildren(t,o,n,i),r=i}else{var s=this._createOpenTagMarkupAndPutListeners(t,o),l=this._createContentMarkup(t,o,n);r=!l&&re[this._tag]?s+"/>":s+">"+l+""}switch(this._tag){case"input":t.getReactMountReady().enqueue(m,this);case"button":case"select":case"textarea":o.autoFocus&&t.getReactMountReady().enqueue(E.focusDOMComponent,this)}return r},_createOpenTagMarkupAndPutListeners:function(e,t){var n="<"+this._currentElement.type;for(var o in t)if(t.hasOwnProperty(o)){var r=t[o];if(null!=r)if(Q.hasOwnProperty(o))r&&d(this._rootNodeID,o,r,e);else{o===$&&(r&&(this._previousStyle=r,r=this._previousStyleCopy=L({},t.style)),r=R.createMarkupForStyles(r));var a=null;a=null!=this._tag&&b(this._tag,t)?x.createMarkupForCustomAttribute(o,r):x.createMarkupForProperty(o,r),a&&(n+=" "+a)}}if(e.renderToStaticMarkup)return n;var i=x.createMarkupForID(this._rootNodeID);return n+" "+i},_createContentMarkup:function(e,t,n){var o="",r=t.dangerouslySetInnerHTML;if(null!=r)null!=r.__html&&(o=r.__html);else{var a=X[typeof t.children]?t.children:null,i=null!=a?null:t.children;if(null!=a)o=U(a);else if(null!=i){var s=this.mountChildren(i,e,n);o=s.join("")}}return ae[this._tag]&&"\n"===o.charAt(0)?"\n"+o:o},_createInitialChildren:function(e,t,n,o){var r=t.dangerouslySetInnerHTML;if(null!=r)null!=r.__html&&W(o,r.__html);else{var a=X[typeof t.children]?t.children:null,i=null!=a?null:t.children;if(null!=a)H(o,a);else if(null!=i)for(var s=this.mountChildren(i,e,n),l=0;l tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg , , and ) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.",this._tag)}if(this.unmountChildren(),M.deleteAllListeners(this._rootNodeID),D.unmountIDFromEnvironment(this._rootNodeID),this._rootNodeID=null,this._wrapperState=null,this._nodeWithLegacyProperties){var n=this._nodeWithLegacyProperties;n._reactInternalComponent=null,this._nodeWithLegacyProperties=null}},getPublicInstance:function(){if(!this._nodeWithLegacyProperties){var e=I.getNode(this._rootNodeID);e._reactInternalComponent=this,e.getDOMNode=r,e.isMounted=a,e.setState=i,e.replaceState=i,e.forceUpdate=i,e.setProps=s,e.replaceProps=l,Z?Object.defineProperties(e,te):e.props=this._currentElement.props,this._nodeWithLegacyProperties=e}return this._nodeWithLegacyProperties}},j.measureMethods(C,"ReactDOMComponent",{mountComponent:"mountComponent",updateComponent:"updateComponent"}),L(C.prototype,C.Mixin,k.Mixin),t.exports=C},{"./AutoFocusUtils":10,"./CSSPropertyOperations":13,"./DOMProperty":18,"./DOMPropertyOperations":19,"./EventConstants":23,"./Object.assign":31,"./ReactBrowserEventEmitter":35,"./ReactComponentBrowserEnvironment":40,"./ReactDOMButton":45,"./ReactDOMInput":50,"./ReactDOMOption":51,"./ReactDOMSelect":52,"./ReactDOMTextarea":56,"./ReactMount":74,"./ReactMultiChild":75,"./ReactPerf":80,"./ReactUpdateQueue":91,"./escapeTextContentForBrowser":115,"./isEventSupported":127,"./setInnerHTML":132,"./setTextContent":133,"./validateDOMNesting":136,"fbjs/lib/invariant":152,"fbjs/lib/keyOf":156,"fbjs/lib/shallowEqual":161,"fbjs/lib/warning":163}],47:[function(e,t,n){"use strict";function o(e){return r.createFactory(e)}var r=(e("./ReactElement"),e("./ReactElementValidator")),a=e("fbjs/lib/mapObject"),i=a({a:"a", -abbr:"abbr",address:"address",area:"area",article:"article",aside:"aside",audio:"audio",b:"b",base:"base",bdi:"bdi",bdo:"bdo",big:"big",blockquote:"blockquote",body:"body",br:"br",button:"button",canvas:"canvas",caption:"caption",cite:"cite",code:"code",col:"col",colgroup:"colgroup",data:"data",datalist:"datalist",dd:"dd",del:"del",details:"details",dfn:"dfn",dialog:"dialog",div:"div",dl:"dl",dt:"dt",em:"em",embed:"embed",fieldset:"fieldset",figcaption:"figcaption",figure:"figure",footer:"footer",form:"form",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",head:"head",header:"header",hgroup:"hgroup",hr:"hr",html:"html",i:"i",iframe:"iframe",img:"img",input:"input",ins:"ins",kbd:"kbd",keygen:"keygen",label:"label",legend:"legend",li:"li",link:"link",main:"main",map:"map",mark:"mark",menu:"menu",menuitem:"menuitem",meta:"meta",meter:"meter",nav:"nav",noscript:"noscript",object:"object",ol:"ol",optgroup:"optgroup",option:"option",output:"output",p:"p",param:"param",picture:"picture",pre:"pre",progress:"progress",q:"q",rp:"rp",rt:"rt",ruby:"ruby",s:"s",samp:"samp",script:"script",section:"section",select:"select",small:"small",source:"source",span:"span",strong:"strong",style:"style",sub:"sub",summary:"summary",sup:"sup",table:"table",tbody:"tbody",td:"td",textarea:"textarea",tfoot:"tfoot",th:"th",thead:"thead",time:"time",title:"title",tr:"tr",track:"track",u:"u",ul:"ul","var":"var",video:"video",wbr:"wbr",circle:"circle",clipPath:"clipPath",defs:"defs",ellipse:"ellipse",g:"g",image:"image",line:"line",linearGradient:"linearGradient",mask:"mask",path:"path",pattern:"pattern",polygon:"polygon",polyline:"polyline",radialGradient:"radialGradient",rect:"rect",stop:"stop",svg:"svg",text:"text",tspan:"tspan"},o);t.exports=i},{"./ReactElement":61,"./ReactElementValidator":62,"fbjs/lib/mapObject":157}],48:[function(e,t,n){"use strict";var o={useCreateElement:!1};t.exports=o},{}],49:[function(e,t,n){"use strict";var o=e("./DOMChildrenOperations"),r=e("./DOMPropertyOperations"),a=e("./ReactMount"),i=e("./ReactPerf"),s=e("fbjs/lib/invariant"),l={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},c={updatePropertyByID:function(e,t,n){var o=a.getNode(e);l.hasOwnProperty(t)?s(!1,"updatePropertyByID(...): %s",l[t]):void 0,null!=n?r.setValueForProperty(o,t,n):r.deleteValueForProperty(o,t)},dangerouslyReplaceNodeWithMarkupByID:function(e,t){var n=a.getNode(e);o.dangerouslyReplaceNodeWithMarkup(n,t)},dangerouslyProcessChildrenUpdates:function(e,t){for(var n=0;n instead of setting `selected` on