├── .npmignore
├── examples
└── leaderboard
│ ├── .meteor
│ ├── .gitignore
│ ├── release
│ ├── platforms
│ ├── packages
│ └── .id
│ ├── leaderboard.html
│ ├── leaderboard.css
│ └── leaderboard.jsx
├── src
├── require-react.js
├── client-react.js
└── ReactMeteor.js
├── .gitignore
├── react-tests.js
├── plugin
└── compile-jsx.js
├── package.js
├── README.md
└── vendor
└── react-with-addons-0.13.0.min.js
/.npmignore:
--------------------------------------------------------------------------------
1 | src/
--------------------------------------------------------------------------------
/examples/leaderboard/.meteor/.gitignore:
--------------------------------------------------------------------------------
1 | local
2 |
--------------------------------------------------------------------------------
/examples/leaderboard/.meteor/release:
--------------------------------------------------------------------------------
1 | METEOR@1.1.0.2
2 |
--------------------------------------------------------------------------------
/examples/leaderboard/.meteor/platforms:
--------------------------------------------------------------------------------
1 | browser
2 | server
3 |
--------------------------------------------------------------------------------
/src/require-react.js:
--------------------------------------------------------------------------------
1 | React = Npm.require("react/addons");
2 |
--------------------------------------------------------------------------------
/src/client-react.js:
--------------------------------------------------------------------------------
1 | React = window.React;
2 | delete window.React;
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .build*
2 | .npm
3 | node_modules
4 | browser-bundle.js
5 | npm-debug.log
6 | *~
7 | lib/
8 |
--------------------------------------------------------------------------------
/react-tests.js:
--------------------------------------------------------------------------------
1 | // Write your tests here!
2 | // Here is an example.
3 | Tinytest.add('example', function (test) {
4 | test.equal(true, true);
5 | });
6 |
--------------------------------------------------------------------------------
/examples/leaderboard/leaderboard.html:
--------------------------------------------------------------------------------
1 |
2 | Leaderboard
3 |
4 |
5 |
6 |
7 | {{> loginButtons}}
8 |
9 | {{> Leaderboard}}
10 |
11 |
12 |
--------------------------------------------------------------------------------
/examples/leaderboard/.meteor/packages:
--------------------------------------------------------------------------------
1 | # Meteor packages used by this project, one per line.
2 | #
3 | # 'meteor add' and 'meteor remove' will edit this file for you,
4 | # but you can also edit it by hand.
5 |
6 | meteor-platform
7 | accounts-password
8 | accounts-ui
9 | reactjs:react
10 |
--------------------------------------------------------------------------------
/examples/leaderboard/.meteor/.id:
--------------------------------------------------------------------------------
1 | # This file contains a token that is unique to your project.
2 | # Check it into your repository along with the rest of this directory.
3 | # It can be used for purposes such as:
4 | # - ensuring you don't accidentally deploy one app on top of another
5 | # - providing package authors with aggregated statistics
6 |
7 | 11458yvne5cdndq6qd8
8 |
--------------------------------------------------------------------------------
/plugin/compile-jsx.js:
--------------------------------------------------------------------------------
1 | var reactTools = Npm.require('react-tools');
2 |
3 | function handler(compileStep) {
4 | var source = compileStep.read().toString('utf8');
5 | var outputFile = compileStep.inputPath + ".js";
6 |
7 | compileStep.addJavaScript({
8 | path: outputFile,
9 | sourcePath: compileStep.inputPath,
10 | data: reactTools.transform(source, {
11 | harmony: true
12 | })
13 | });
14 | }
15 |
16 | Plugin.registerSourceHandler("jsx", handler);
17 |
--------------------------------------------------------------------------------
/examples/leaderboard/leaderboard.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
3 | font-weight: 200;
4 | margin: 50px 0;
5 | padding: 0;
6 | -webkit-user-select: none;
7 | -khtml-user-select: none;
8 | -moz-user-select: none;
9 | -o-user-select: none;
10 | user-select: none;
11 | }
12 |
13 | #outer {
14 | width: 600px;
15 | margin: 0 auto;
16 | }
17 |
18 | .player {
19 | cursor: pointer;
20 | padding: 5px;
21 | }
22 |
23 | .player .name {
24 | display: inline-block;
25 | width: 300px;
26 | font-size: 1.75em;
27 | }
28 |
29 | .player .score {
30 | display: inline-block;
31 | width: 100px;
32 | text-align: right;
33 | font-size: 2em;
34 | font-weight: bold;
35 | color: #777;
36 | }
37 |
38 | .player.selected {
39 | background-color: yellow;
40 | }
41 |
42 | .player.selected .score {
43 | color: black;
44 | }
45 |
46 | .details, .none {
47 | font-weight: bold;
48 | font-size: 2em;
49 | border-style: dashed none none none;
50 | border-color: #ccc;
51 | border-width: 4px;
52 | margin: 50px 10px;
53 | padding: 10px 0px;
54 | }
55 |
56 | .none {
57 | color: #777;
58 | }
59 |
60 | .inc {
61 | cursor: pointer;
62 | }
63 |
--------------------------------------------------------------------------------
/package.js:
--------------------------------------------------------------------------------
1 | Package.describe({
2 | name: "reactjs:react",
3 | // TODO Consider using reactVersion here, since this version is a lot
4 | // less meaningful?
5 | version: "0.2.4",
6 | summary: "React rendering for Meteor apps",
7 | git: "https://github.com/reactjs/react-meteor/",
8 | documentation: "README.md"
9 | });
10 |
11 | var reactVersion = "0.13.0";
12 |
13 | Npm.depends({
14 | "react": reactVersion,
15 | });
16 |
17 | Package.registerBuildPlugin({
18 | name: "compileJSX",
19 | use: [],
20 | sources: [
21 | "plugin/compile-jsx.js"
22 | ],
23 | npmDependencies: {
24 | "react-tools": reactVersion
25 | }
26 | });
27 |
28 | Package.onUse(function(api) {
29 | api.use("templating@1.1.1");
30 |
31 | api.addFiles([
32 | // On the client, we use un-minified React, and let Meteor minify it
33 | // when building for production. Note that the resulting file will not
34 | // be quite as small as the more aggressively minified version shipped
35 | // by Facebook, but we currently have no good way of including
36 | // different versions of files in development and production.
37 | "vendor/react-with-addons-" + reactVersion + ".js",
38 | "src/client-react.js"
39 | ], "client");
40 |
41 | api.addFiles([
42 | // On the server, we use the modules that ship with react.
43 | "src/require-react.js"
44 | ], "server");
45 |
46 | api.export("React");
47 |
48 | // Meteor-enabled components should include the ReactMeteor mixin via
49 | // React.createClass({ mixins: [ReactMeteor.Mixin], ... }) or just
50 | // ReactMeteor.createClass({ ... }).
51 | api.addFiles("src/ReactMeteor.js", ["server", "client"]);
52 | api.export("ReactMeteor", ["server", "client"]);
53 | });
54 |
55 | Package.onTest(function(api) {
56 | api.use("tinytest");
57 | api.use("reactjs:react");
58 | api.addFiles("react-tests.js");
59 | });
60 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | react-meteor
2 | ============
3 |
4 | This repository defines a Meteor package that automatically integrates the
5 | [React](http://facebook.github.io/react/) rendering framework on both the
6 | client and the server, to complement or replace the default Handlebars
7 | templating system.
8 |
9 | The React core is officially agnostic about how you fetch and update your
10 | data, so it is far from obvious which approach is the best. This package
11 | provides one answer to that question (use Meteor!), and I hope you will
12 | find it a compelling combination.
13 |
14 | Quick start
15 | -----------
16 |
17 | If you have not yet installed Meteor, do that:
18 | ```
19 | curl https://install.meteor.com | /bin/sh
20 | ```
21 |
22 | Clone this repository:
23 | ```
24 | git clone https://github.com/reactjs/react-meteor.git
25 | ```
26 |
27 | Fire up one of the examples:
28 | ```
29 | cd react-meteor/examples/leaderboard
30 | meteor
31 | ```
32 |
33 | Finally, visit [localhost:3000](http://localhost:3000) in your browser.
34 | For extra fun, try using the example in multiple browser windows!
35 |
36 | Adding the package to your app
37 | ------------------------------
38 |
39 | The officially recommended way to add this package to your app is simply
40 | to execute the following commands:
41 | ```
42 | cd path/to/my-app/
43 | meteor add reactjs:react
44 | ```
45 |
46 | How it works
47 | ------------
48 |
49 | The package exposes a special `ReactMeteor.Mixin` object that can be used
50 | to enable reactive data fetching for your React components.
51 |
52 | To add the `ReactMeteor.Mixin` to a React component, simply include it in
53 | the `mixins` class property:
54 | ```js
55 | var MyComponent = React.createClass({
56 | mixins: [ReactMeteor.Mixin],
57 |
58 | startMeteorSubscriptions: function() {
59 | Meteor.subscribe("players");
60 | },
61 |
62 | // Make sure your component implements this method.
63 | getMeteorState: function() {
64 | return {
65 | playerCount: Players.find().count(),
66 | ...
67 | };
68 | }
69 | });
70 | ```
71 |
72 | The `startMeteorSubscriptions` method is optional, and should be
73 | implemented when the component needs to subscribe to specific query sets
74 | using [`Meteor.subscribe`](http://docs.meteor.com/#/full/meteor_subscribe)
75 | It will be called in a `Tracker.autorun` callback, so the subscriptions
76 | will be canceled automatically when the component is unmounted.
77 |
78 | The `getMeteorState` method should return an object of properties that
79 | will be merged into `this.state`, for easy access in the component's
80 | `render` method or elsewhere. Dependencies will be tracked for any data
81 | accessed by `getMeteorState` so that the component can be automatically
82 | re-rendered whenever the data changes.
83 |
84 | Alternatively, if you prefer not to declare `mixins` explicitly, you can
85 | create the class with `ReactMeteor.createClass`:
86 | ```js
87 | var MyComponent = ReactMeteor.createClass({
88 | startMeteorSubscriptions: function() {
89 | Meteor.subscribe("players");
90 | },
91 |
92 | // Make sure your component implements this method.
93 | getMeteorState: function() {
94 | return {
95 | playerCount: Players.find().count(),
96 | ...
97 | };
98 | }
99 | });
100 | ```
101 |
--------------------------------------------------------------------------------
/examples/leaderboard/leaderboard.jsx:
--------------------------------------------------------------------------------
1 | /**
2 | * Port of the leaderboard example to use React for rendering.
3 | *
4 | * This directive is necessary to enable preprocessing of JSX tags:
5 | * @jsx React.DOM
6 | */
7 |
8 | var cx = React.addons.classSet;
9 |
10 | // Set up a collection to contain player information. On the server,
11 | // it is backed by a MongoDB collection named "players".
12 | Players = new Meteor.Collection("players");
13 |
14 | Meteor.methods({
15 | addPoints: function(userId, points) {
16 | Players.update(userId, { $inc: { score: +points } });
17 | }
18 | });
19 |
20 | var Leaderboard = ReactMeteor.createClass({
21 | // Specifying a templateName property allows the component to be
22 | // interpolated into a Blaze template just like any other template:
23 | // {{> Leaderboard x=1 y=2}}. This corresponds to the JSX expression
24 | // .
25 | templateName: "Leaderboard",
26 |
27 | startMeteorSubscriptions: function() {
28 | Meteor.subscribe("players");
29 | },
30 |
31 | getMeteorState: function() {
32 | var selectedPlayer = Players.findOne(Session.get("selected_player"));
33 | return {
34 | players: Players.find({}, {sort: {score: -1, name: 1}}).fetch(),
35 | selectedPlayer: selectedPlayer,
36 | selectedName: selectedPlayer && selectedPlayer.name
37 | };
38 | },
39 |
40 | addFivePoints: function() {
41 | Meteor.call("addPoints", Session.get("selected_player"), 5);
42 | },
43 |
44 | selectPlayer: function(id) {
45 | Session.set("selected_player", id);
46 | },
47 |
48 | renderPlayer: function(model) {
49 | var _id = this.state.selectedPlayer && this.state.selectedPlayer._id;
50 |
51 | return ;
58 | },
59 |
60 | render: function() {
61 | var children = [
62 |
63 | { this.state.players.map(this.renderPlayer) }
64 |
65 | ];
66 |
67 | if (this.state.selectedName) {
68 | children.push(
69 |
70 |
{this.state.selectedName}
71 |
77 |
78 | );
79 |
80 | } else {
81 | children.push(
82 | Click a player to select
83 | );
84 | }
85 |
86 | return { children }
;
87 | }
88 | });
89 |
90 | var Player = React.createClass({
91 | shouldComponentUpdate: function(nextProps, nextState){
92 | var { name, score, ...rest } = this.props;
93 | return name !== nextProps.name || score !== nextProps.score || rest.className !== nextProps.className;
94 | },
95 | render: function() {
96 | var { name, score, ...rest } = this.props;
97 | return
98 | {name}
99 | {score}
100 |
;
101 | }
102 | });
103 |
104 | if (Meteor.isClient) {
105 | Accounts.ui.config({
106 | passwordSignupFields: "USERNAME_ONLY"
107 | });
108 | }
109 |
110 | // On server startup, create some players if the database is empty.
111 | if (Meteor.isServer) {
112 | Meteor.startup(function () {
113 | if (Players.find().count() === 0) {
114 | var names = ["Ada Lovelace",
115 | "Grace Hopper",
116 | "Marie Curie",
117 | "Carl Friedrich Gauss",
118 | "Nikola Tesla",
119 | "Claude Shannon"];
120 | for (var i = 0; i < names.length; i++) {
121 | Players.insert({
122 | name: names[i],
123 | score: Math.floor(Random.fraction()*10)*5
124 | });
125 | }
126 | }
127 | });
128 |
129 | Meteor.publish("players", function() {
130 | return Players.find();
131 | });
132 | }
133 |
--------------------------------------------------------------------------------
/src/ReactMeteor.js:
--------------------------------------------------------------------------------
1 | var ReactMeteorMixin = {
2 | componentWillMount: function() {
3 | var self = this;
4 |
5 | self._meteorStateDep = new Tracker.Dependency();
6 | self._meteorFirstRun = true;
7 |
8 | if (Meteor.isClient) {
9 | Tracker.autorun(function(computation) {
10 | self._meteorComputation = computation;
11 | self._meteorStateDep.depend();
12 |
13 | if (self.startMeteorSubscriptions) {
14 | // Calling this method in a Tracker.autorun callback will ensure
15 | // that the subscriptions are canceled when the computation stops.
16 | self.startMeteorSubscriptions();
17 | }
18 |
19 | enqueueMeteorStateUpdate(self);
20 | });
21 |
22 | } else {
23 | enqueueMeteorStateUpdate(self);
24 | }
25 | },
26 |
27 | componentWillUpdate: function(nextProps, nextState) {
28 | if (this._meteorCalledSetState) {
29 | // If this component update was triggered by the ReactMeteor.Mixin,
30 | // then we do not want to trigger the change event again, because
31 | // that would lead to an infinite update loop.
32 | this._meteorCalledSetState = false;
33 | return;
34 | }
35 |
36 | if (this._meteorStateDep) {
37 | this._meteorStateDep.changed();
38 | }
39 | },
40 |
41 | componentWillUnmount: function() {
42 | if (this._meteorComputation) {
43 | this._meteorComputation.stop();
44 | this._meteorComputation = null;
45 | }
46 | }
47 | };
48 |
49 | function enqueueMeteorStateUpdate(component) {
50 | var partialState =
51 | component.getMeteorState &&
52 | component.getMeteorState();
53 |
54 | if (! partialState) {
55 | // The getMeteorState method can return a falsy value to avoid
56 | // triggering a state update.
57 | return;
58 | }
59 |
60 | if (component._meteorFirstRun) {
61 | // If it's the first time we've called enqueueMeteorStateUpdate since
62 | // the component was mounted, set the state synchronously.
63 | component._meteorFirstRun = false;
64 | component._meteorCalledSetState = true;
65 | component.setState(partialState);
66 | return;
67 | }
68 |
69 | Tracker.afterFlush(function() {
70 | component._meteorCalledSetState = true;
71 | component.setState(partialState);
72 | });
73 | }
74 |
75 | // Like React.render, but it replaces targetNode, and works even if
76 | // targetNode.parentNode has children other than targetNode.
77 | function renderInPlaceOfNode(reactElement, targetNode) {
78 | var container = targetNode.parentNode;
79 | var prevSibs = [];
80 | var nextSibs = [];
81 | var sibs = prevSibs;
82 | var child = container.firstChild;
83 |
84 | while (child) {
85 | if (child === targetNode) {
86 | sibs = nextSibs;
87 | } else {
88 | sibs.push(child);
89 | }
90 | var next = child.nextSibling;
91 | container.removeChild(child);
92 | child = next;
93 | }
94 |
95 | var result = React.render(reactElement, container);
96 | var rendered = container.firstChild;
97 |
98 | if (prevSibs.length > 0) {
99 | prevSibs.forEach(function(sib) {
100 | container.insertBefore(sib, rendered);
101 | });
102 | }
103 |
104 | if (nextSibs.length > 0) {
105 | nextSibs.forEach(function(sib) {
106 | container.appendChild(sib);
107 | });
108 | }
109 |
110 | return result;
111 | }
112 |
113 | function unmountComponent(reactComponent) {
114 | var rootNode = React.findDOMNode(reactComponent);
115 | var container = rootNode && rootNode.parentNode;
116 |
117 | if (container) {
118 | var siblings = [];
119 | var sibling = container.firstChild;
120 |
121 | while (sibling) {
122 | var next = sibling.nextSibling;
123 | if (sibling !== rootNode) {
124 | siblings.push(sibling);
125 | container.removeChild(sibling);
126 | }
127 | sibling = next;
128 | }
129 |
130 | React.unmountComponentAtNode(container);
131 |
132 | siblings.forEach(function (sib) {
133 | container.appendChild(sib);
134 | });
135 | }
136 | }
137 |
138 | ReactMeteor = {
139 | Mixin: ReactMeteorMixin,
140 |
141 | // So you don't have to mix in ReactMeteor.Mixin explicitly.
142 | createClass: function createClass(spec) {
143 | spec.mixins = spec.mixins || [];
144 | spec.mixins.push(ReactMeteorMixin);
145 | var Cls = React.createClass(spec);
146 |
147 | if (Meteor.isClient &&
148 | typeof Template === "function" &&
149 | typeof spec.templateName === "string") {
150 | var template = new Template(
151 | spec.templateName,
152 | function() {
153 | // A placeholder HTML element that will serve as the mounting
154 | // point for the React component. May have siblings!
155 | return new HTML.SPAN;
156 | }
157 | );
158 |
159 | template.onRendered(function() {
160 | this._reactComponent = renderInPlaceOfNode(
161 | // Equivalent to :
162 | React.createElement(Cls, this.data || {}),
163 | this.find("span")
164 | );
165 | });
166 |
167 | template.onDestroyed(function() {
168 | unmountComponent(this._reactComponent);
169 | });
170 |
171 | Template[spec.templateName] = template;
172 | }
173 |
174 | return Cls;
175 | }
176 | };
177 |
--------------------------------------------------------------------------------
/vendor/react-with-addons-0.13.0.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * React (with addons) v0.13.0
3 | *
4 | * Copyright 2013-2015, Facebook, Inc.
5 | * All rights reserved.
6 | *
7 | * This source code is licensed under the BSD-style license found in the
8 | * LICENSE file in the root directory of this source tree. An additional grant
9 | * of patent rights can be found in the PATENTS file in the same directory.
10 | *
11 | */
12 | !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.React=e()}}(function(){return function e(t,n,r){function o(a,s){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(i)return i(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[a]={exports:{}};t[a][0].call(c.exports,function(e){var n=t[a][1][e];return o(n?n:e)},c,c.exports,e,t,n,r)}return n[a].exports}for(var i="function"==typeof require&&require,a=0;a8&&11>=_),M=32,T=String.fromCharCode(M),N=d.topLevelTypes,P={beforeInput:{phasedRegistrationNames:{bubbled:y({onBeforeInput:null}),captured:y({onBeforeInputCapture:null})},dependencies:[N.topCompositionEnd,N.topKeyPress,N.topTextInput,N.topPaste]},compositionEnd:{phasedRegistrationNames:{bubbled:y({onCompositionEnd:null}),captured:y({onCompositionEndCapture:null})},dependencies:[N.topBlur,N.topCompositionEnd,N.topKeyDown,N.topKeyPress,N.topKeyUp,N.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:y({onCompositionStart:null}),captured:y({onCompositionStartCapture:null})},dependencies:[N.topBlur,N.topCompositionStart,N.topKeyDown,N.topKeyPress,N.topKeyUp,N.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:y({onCompositionUpdate:null}),captured:y({onCompositionUpdateCapture:null})},dependencies:[N.topBlur,N.topCompositionUpdate,N.topKeyDown,N.topKeyPress,N.topKeyUp,N.topMouseDown]}},I=!1,R=null,w={eventTypes:P,extractEvents:function(e,t,n,r){return[u(e,t,n,r),p(e,t,n,r)]}};t.exports=w},{103:103,107:107,154:154,16:16,21:21,22:22,23:23}],4:[function(e,t){var n=e(147),r={addClass:function(e,t){return n(!/\s/.test(t)),t&&(e.classList?e.classList.add(t):r.hasClass(e,t)||(e.className=e.className+" "+t)),e},removeClass:function(e,t){return n(!/\s/.test(t)),t&&(e.classList?e.classList.remove(t):r.hasClass(e,t)&&(e.className=e.className.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,""))),e},conditionClass:function(e,t,n){return(n?r.addClass:r.removeClass)(e,t)},hasClass:function(e,t){return n(!/\s/.test(t)),e.classList?!!t&&e.classList.contains(t):(" "+e.className+" ").indexOf(" "+t+" ")>-1}};t.exports=r},{147:147}],5:[function(e,t){"use strict";function n(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var r={boxFlex:!0,boxFlexGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,strokeOpacity:!0},o=["Webkit","ms","Moz","O"];Object.keys(r).forEach(function(e){o.forEach(function(t){r[n(t,e)]=r[e]})});var i={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}},a={isUnitlessNumber:r,shorthandPropertyExpansions:i};t.exports=a},{}],6:[function(e,t){"use strict";var n=e(5),r=e(22),o=(e(118),e(125)),i=e(145),a=e(156),s=(e(166),a(function(e){return i(e)})),u="cssFloat";r.canUseDOM&&void 0===document.documentElement.style.cssFloat&&(u="styleFloat");var l={createMarkupForStyles:function(e){var t="";for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];null!=r&&(t+=s(n)+":",t+=o(n,r)+";")}return t||null},setValueForStyles:function(e,t){var r=e.style;for(var i in t)if(t.hasOwnProperty(i)){var a=o(i,t[i]);if("float"===i&&(i=u),a)r[i]=a;else{var s=n.shorthandPropertyExpansions[i];if(s)for(var l in s)r[l]="";else r[i]=""}}}};t.exports=l},{118:118,125:125,145:145,156:156,166:166,22:22,5:5}],7:[function(e,t){"use strict";function n(){this._callbacks=null,this._contexts=null}var r=e(30),o=e(29),i=e(147);o(n.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){i(e.length===t.length),this._callbacks=null,this._contexts=null;for(var n=0,r=e.length;r>n;n++)e[n].call(t[n]);e.length=0,t.length=0}},reset:function(){this._callbacks=null,this._contexts=null},destructor:function(){this.reset()}}),r.addPoolingTo(n),t.exports=n},{147:147,29:29,30:30}],8:[function(e,t){"use strict";function n(e){return"SELECT"===e.nodeName||"INPUT"===e.nodeName&&"file"===e.type}function r(e){var t=_.getPooled(N.change,I,e);C.accumulateTwoPhaseDispatches(t),b.batchedUpdates(o,t)}function o(e){y.enqueueEvents(e),y.processEventQueue()}function i(e,t){P=e,I=t,P.attachEvent("onchange",r)}function a(){P&&(P.detachEvent("onchange",r),P=null,I=null)}function s(e,t,n){return e===T.topChange?n:void 0}function u(e,t,n){e===T.topFocus?(a(),i(t,n)):e===T.topBlur&&a()}function l(e,t){P=e,I=t,R=e.value,w=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(P,"value",A),P.attachEvent("onpropertychange",p)}function c(){P&&(delete P.value,P.detachEvent("onpropertychange",p),P=null,I=null,R=null,w=null)}function p(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==R&&(R=t,r(e))}}function d(e,t,n){return e===T.topInput?n:void 0}function f(e,t,n){e===T.topFocus?(c(),l(t,n)):e===T.topBlur&&c()}function h(e){return e!==T.topSelectionChange&&e!==T.topKeyUp&&e!==T.topKeyDown||!P||P.value===R?void 0:(R=P.value,I)}function m(e){return"INPUT"===e.nodeName&&("checkbox"===e.type||"radio"===e.type)}function v(e,t,n){return e===T.topClick?n:void 0}var g=e(16),y=e(18),C=e(21),E=e(22),b=e(97),_=e(105),x=e(148),D=e(150),M=e(154),T=g.topLevelTypes,N={change:{phasedRegistrationNames:{bubbled:M({onChange:null}),captured:M({onChangeCapture:null})},dependencies:[T.topBlur,T.topChange,T.topClick,T.topFocus,T.topInput,T.topKeyDown,T.topKeyUp,T.topSelectionChange]}},P=null,I=null,R=null,w=null,O=!1;E.canUseDOM&&(O=x("change")&&(!("documentMode"in document)||document.documentMode>8));var S=!1;E.canUseDOM&&(S=x("input")&&(!("documentMode"in document)||document.documentMode>9));var A={get:function(){return w.get.call(this)},set:function(e){R=""+e,w.set.call(this,e)}},k={eventTypes:N,extractEvents:function(e,t,r,o){var i,a;if(n(t)?O?i=s:a=u:D(t)?S?i=d:(i=h,a=f):m(t)&&(i=v),i){var l=i(e,t,r);if(l){var c=_.getPooled(N.change,l,o);return C.accumulateTwoPhaseDispatches(c),c}}a&&a(e,t,r)}};t.exports=k},{105:105,148:148,150:150,154:154,16:16,18:18,21:21,22:22,97:97}],9:[function(e,t){"use strict";var n=0,r={createReactRootIndex:function(){return n++}};t.exports=r},{}],10:[function(e,t){"use strict";function n(e,t,n){e.insertBefore(t,e.childNodes[n]||null)}var r=e(13),o=e(77),i=e(160),a=e(147),s={dangerouslyReplaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup,updateTextContent:i,processUpdates:function(e,t){for(var s,u=null,l=null,c=0;ct||r.hasOverloadedBooleanValue[e]&&t===!1}var r=e(11),o=e(158),i=(e(166),{createMarkupForID:function(e){return r.ID_ATTRIBUTE_NAME+"="+o(e)},createMarkupForProperty:function(e,t){if(r.isStandardName.hasOwnProperty(e)&&r.isStandardName[e]){if(n(e,t))return"";var i=r.getAttributeName[e];return r.hasBooleanValue[e]||r.hasOverloadedBooleanValue[e]&&t===!0?i:i+"="+o(t)}return r.isCustomAttribute(e)?null==t?"":e+"="+o(t):null},setValueForProperty:function(e,t,o){if(r.isStandardName.hasOwnProperty(t)&&r.isStandardName[t]){var i=r.getMutationMethod[t];if(i)i(e,o);else if(n(t,o))this.deleteValueForProperty(e,t);else if(r.mustUseAttribute[t])e.setAttribute(r.getAttributeName[t],""+o);else{var a=r.getPropertyName[t];r.hasSideEffects[t]&&""+e[a]==""+o||(e[a]=o)}}else r.isCustomAttribute(t)&&(null==o?e.removeAttribute(t):e.setAttribute(t,""+o))},deleteValueForProperty:function(e,t){if(r.isStandardName.hasOwnProperty(t)&&r.isStandardName[t]){var n=r.getMutationMethod[t];if(n)n(e,void 0);else if(r.mustUseAttribute[t])e.removeAttribute(r.getAttributeName[t]);else{var o=r.getPropertyName[t],i=r.getDefaultValueForProperty(e.nodeName,o);r.hasSideEffects[t]&&""+e[o]===i||(e[o]=i)}}else r.isCustomAttribute(t)&&e.removeAttribute(t)}});t.exports=i},{11:11,158:158,166:166}],13:[function(e,t){"use strict";function n(e){return e.substring(1,e.indexOf(" "))}var r=e(22),o=e(123),i=e(126),a=e(139),s=e(147),u=/^(<[^ \/>]+)/,l="data-danger-index",c={dangerouslyRenderMarkup:function(e){s(r.canUseDOM);for(var t,c={},p=0;pu;u++){var c=s[u];if(c){var p=c.extractEvents(e,t,r,i);p&&(a=o(a,p))}}return a},enqueueEvents:function(e){e&&(u=o(u,e))},processEventQueue:function(){var e=u;u=null,i(e,l),a(!u)},__purge:function(){s={}},__getListenerBank:function(){return s}};t.exports=p},{115:115,132:132,147:147,19:19,20:20}],19:[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,l))}}}function r(e,t,n){i(!u.eventNameDispatchConfigs.hasOwnProperty(n)),u.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var a in r)if(r.hasOwnProperty(a)){var s=r[a];o(s,t,n)}return!0}return e.registrationName?(o(e.registrationName,t,n),!0):!1}function o(e,t,n){i(!u.registrationNameModules[e]),u.registrationNameModules[e]=t,u.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var i=e(147),a=null,s={},u={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},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.hasOwnProperty(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.registrationNameModules[t.registrationName]||null;for(var n in t.phasedRegistrationNames)if(t.phasedRegistrationNames.hasOwnProperty(n)){var r=u.registrationNameModules[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.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=u.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};t.exports=u},{147:147}],20:[function(e,t){"use strict";function n(e){return e===m.topMouseUp||e===m.topTouchEnd||e===m.topTouchCancel}function r(e){return e===m.topMouseMove||e===m.topTouchMove}function o(e){return e===m.topMouseDown||e===m.topTouchStart}function i(e,t){var n=e._dispatchListeners,r=e._dispatchIDs;if(Array.isArray(n))for(var o=0;oe&&n[e]===o[e];e++);var a=r-e;for(t=1;a>=t&&n[r-t]===o[i-t];t++);var s=t>1?1-t:void 0;return this._fallbackText=o.slice(e,s),this._fallbackText}}),r.addPoolingTo(n),t.exports=n},{142:142,29:29,30:30}],24:[function(e,t){"use strict";var n,r=e(11),o=e(22),i=r.injection.MUST_USE_ATTRIBUTE,a=r.injection.MUST_USE_PROPERTY,s=r.injection.HAS_BOOLEAN_VALUE,u=r.injection.HAS_SIDE_EFFECTS,l=r.injection.HAS_NUMERIC_VALUE,c=r.injection.HAS_POSITIVE_NUMERIC_VALUE,p=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE;if(o.canUseDOM){var d=document.implementation;n=d&&d.hasFeature&&d.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}var f={isCustomAttribute:RegExp.prototype.test.bind(/^(data|aria)-[a-z_][a-z\d_.\-]*$/),Properties:{accept:null,acceptCharset:null,accessKey:null,action:null,allowFullScreen:i|s,allowTransparency:i,alt:null,async:s,autoComplete:null,autoPlay:s,cellPadding:null,cellSpacing:null,charSet:i,checked:a|s,classID:i,className:n?i:a,cols:i|c,colSpan:null,content:null,contentEditable:null,contextMenu:i,controls:a|s,coords:null,crossOrigin:null,data:null,dateTime:i,defer:s,dir:null,disabled:i|s,download:p,draggable:null,encType:null,form:i,formAction:i,formEncType:i,formMethod:i,formNoValidate:s,formTarget:i,frameBorder:i,headers:null,height:i,hidden:i|s,href:null,hrefLang:null,htmlFor:null,httpEquiv:null,icon:null,id:a,label:null,lang:null,list:i,loop:a|s,manifest:i,marginHeight:null,marginWidth:null,max:null,maxLength:i,media:i,mediaGroup:null,method:null,min:null,multiple:a|s,muted:a|s,name:null,noValidate:s,open:s,pattern:null,placeholder:null,poster:null,preload:null,radioGroup:null,readOnly:a|s,rel:null,required:s,role:i,rows:i|c,rowSpan:null,sandbox:null,scope:null,scrolling:null,seamless:i|s,selected:a|s,shape:null,size:i|c,sizes:i,span:c,spellCheck:null,src:null,srcDoc:a,srcSet:i,start:l,step:null,style:null,tabIndex:null,target:null,title:null,type:null,useMap:null,value:a|u,width:i,wmode:i,autoCapitalize:null,autoCorrect:null,itemProp:i,itemScope:i|s,itemType:i,itemID:i,itemRef:i,property:null},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{autoCapitalize:"autocapitalize",autoComplete:"autocomplete",autoCorrect:"autocorrect",autoFocus:"autofocus",autoPlay:"autoplay",encType:"encoding",hrefLang:"hreflang",radioGroup:"radiogroup",spellCheck:"spellcheck",srcDoc:"srcdoc",srcSet:"srcset"}};t.exports=f},{11:11,22:22}],25:[function(e,t){"use strict";var n=e(73),r=e(92),o={linkState:function(e){return new n(this.state[e],r.createStateKeySetter(this,e))}};t.exports=o},{73:73,92:92}],26:[function(e,t){"use strict";function n(e){u(null==e.props.checkedLink||null==e.props.valueLink)}function r(e){n(e),u(null==e.props.value&&null==e.props.onChange)}function o(e){n(e),u(null==e.props.checked&&null==e.props.onChange)}function i(e){this.props.valueLink.requestChange(e.target.value)}function a(e){this.props.checkedLink.requestChange(e.target.checked)}var s=e(84),u=e(147),l={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},c={Mixin:{propTypes:{value:function(e,t){return!e[t]||l[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){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}},getValue:function(e){return e.props.valueLink?(r(e),e.props.valueLink.value):e.props.value},getChecked:function(e){return e.props.checkedLink?(o(e),e.props.checkedLink.value):e.props.checked},getOnChange:function(e){return e.props.valueLink?(r(e),i):e.props.checkedLink?(o(e),a):e.props.onChange}};t.exports=c},{147:147,84:84}],27:[function(e,t){"use strict";function n(e){e.remove()}var r=e(33),o=e(115),i=e(132),a=e(147),s={trapBubbledEvent:function(e,t){a(this.isMounted());var n=this.getDOMNode();a(n);var i=r.trapBubbledEvent(e,t,n);this._localEventListeners=o(this._localEventListeners,i)},componentWillUnmount:function(){this._localEventListeners&&i(this._localEventListeners,n)}};t.exports=s},{115:115,132:132,147:147,33:33}],28:[function(e,t){"use strict";var n=e(16),r=e(126),o=n.topLevelTypes,i={eventTypes:null,extractEvents:function(e,t,n,i){if(e===o.topTouchStart){var a=i.target;a&&!a.onclick&&(a.onclick=r)}}};t.exports=i},{126:126,16:16}],29:[function(e,t){"use strict";function n(e){if(null==e)throw new TypeError("Object.assign target cannot be null or undefined");for(var t=Object(e),n=Object.prototype.hasOwnProperty,r=1;rc;c++){var d=s[c];
13 | a.hasOwnProperty(d)&&a[d]||(d===u.topWheel?l("wheel")?m.ReactEventListener.trapBubbledEvent(u.topWheel,"wheel",o):l("mousewheel")?m.ReactEventListener.trapBubbledEvent(u.topWheel,"mousewheel",o):m.ReactEventListener.trapBubbledEvent(u.topWheel,"DOMMouseScroll",o):d===u.topScroll?l("scroll",!0)?m.ReactEventListener.trapCapturedEvent(u.topScroll,"scroll",o):m.ReactEventListener.trapBubbledEvent(u.topScroll,"scroll",m.ReactEventListener.WINDOW_HANDLE):d===u.topFocus||d===u.topBlur?(l("focus",!0)?(m.ReactEventListener.trapCapturedEvent(u.topFocus,"focus",o),m.ReactEventListener.trapCapturedEvent(u.topBlur,"blur",o)):l("focusin")&&(m.ReactEventListener.trapBubbledEvent(u.topFocus,"focusin",o),m.ReactEventListener.trapBubbledEvent(u.topBlur,"focusout",o)),a[u.topBlur]=!0,a[u.topFocus]=!0):f.hasOwnProperty(d)&&m.ReactEventListener.trapBubbledEvent(d,f[d],o),a[d]=!0)}},trapBubbledEvent:function(e,t,n){return m.ReactEventListener.trapBubbledEvent(e,t,n)},trapCapturedEvent:function(e,t,n){return m.ReactEventListener.trapCapturedEvent(e,t,n)},ensureScrollValueMonitoring:function(){if(!p){var e=s.refreshScrollValues;m.ReactEventListener.monitorScrollValue(e),p=!0}},eventNameDispatchConfigs:o.eventNameDispatchConfigs,registrationNameModules:o.registrationNameModules,putListener:o.putListener,getListener:o.getListener,deleteListener:o.deleteListener,deleteAllListeners:o.deleteAllListeners});t.exports=m},{114:114,148:148,16:16,18:18,19:19,29:29,65:65}],34:[function(e,t){"use strict";var n=e(31),r=e(29),o=n.createFactory(e(95)),i=n.createFactory(e(35)),a=n.createClass({displayName:"ReactCSSTransitionGroup",propTypes:{transitionName:n.PropTypes.string.isRequired,transitionAppear:n.PropTypes.bool,transitionEnter:n.PropTypes.bool,transitionLeave:n.PropTypes.bool},getDefaultProps:function(){return{transitionAppear:!1,transitionEnter:!0,transitionLeave:!0}},_wrapChild:function(e){return i({name:this.props.transitionName,appear:this.props.transitionAppear,enter:this.props.transitionEnter,leave:this.props.transitionLeave},e)},render:function(){return o(r({},this.props,{childFactory:this._wrapChild}))}});t.exports=a},{29:29,31:31,35:35,95:95}],35:[function(e,t){"use strict";var n=e(31),r=e(4),o=e(94),i=e(157),a=(e(166),17),s=n.createClass({displayName:"ReactCSSTransitionGroupChild",transition:function(e,t){var n=this.getDOMNode(),i=this.props.name+"-"+e,a=i+"-active",s=function(e){e&&e.target!==n||(r.removeClass(n,i),r.removeClass(n,a),o.removeEndEventListener(n,s),t&&t())};o.addEndEventListener(n,s),r.addClass(n,i),this.queueClass(a)},queueClass:function(e){this.classNameQueue.push(e),this.timeout||(this.timeout=setTimeout(this.flushClassNameQueue,a))},flushClassNameQueue:function(){this.isMounted()&&this.classNameQueue.forEach(r.addClass.bind(r,this.getDOMNode())),this.classNameQueue.length=0,this.timeout=null},componentWillMount:function(){this.classNameQueue=[]},componentWillUnmount:function(){this.timeout&&clearTimeout(this.timeout)},componentWillAppear:function(e){this.props.appear?this.transition("appear",e):e()},componentWillEnter:function(e){this.props.enter?this.transition("enter",e):e()},componentWillLeave:function(e){this.props.leave?this.transition("leave",e):e()},render:function(){return i(this.props.children)}});t.exports=s},{157:157,166:166,31:31,4:4,94:94}],36:[function(e,t){"use strict";var n=e(87),r=e(130),o=e(146),i=e(162),a={instantiateChildren:function(e){var t=r(e);for(var n in t)if(t.hasOwnProperty(n)){var i=t[n],a=o(i,null);t[n]=a}return t},updateChildren:function(e,t,a,s){var u=r(t);if(!u&&!e)return null;var l;for(l in u)if(u.hasOwnProperty(l)){var c=e&&e[l],p=c&&c._currentElement,d=u[l];if(i(p,d))n.receiveComponent(c,d,a,s),u[l]=c;else{c&&n.unmountComponent(c,l);var f=o(d,null);u[l]=f}}for(l in e)!e.hasOwnProperty(l)||u&&u.hasOwnProperty(l)||n.unmountComponent(e[l]);return u},unmountChildren:function(e){for(var t in e){var r=e[t];n.unmountComponent(r)}}};t.exports=a},{130:130,146:146,162:162,87:87}],37:[function(e,t){"use strict";function n(e,t){this.forEachFunction=e,this.forEachContext=t}function r(e,t,n,r){var o=e;o.forEachFunction.call(o.forEachContext,t,r)}function o(e,t,o){if(null==e)return e;var i=n.getPooled(t,o);d(e,r,i),n.release(i)}function i(e,t,n){this.mapResult=e,this.mapFunction=t,this.mapContext=n}function a(e,t,n,r){var o=e,i=o.mapResult,a=!i.hasOwnProperty(n);if(a){var s=o.mapFunction.call(o.mapContext,t,r);i[n]=s}}function s(e,t,n){if(null==e)return e;var r={},o=i.getPooled(r,t,n);return d(e,a,o),i.release(o),p.create(r)}function u(){return null}function l(e){return d(e,u,null)}var c=e(30),p=e(67),d=e(164),f=(e(166),c.twoArgumentPooler),h=c.threeArgumentPooler;c.addPoolingTo(n,f),c.addPoolingTo(i,h);var m={forEach:o,map:s,count:l};t.exports=m},{164:164,166:166,30:30,67:67}],38:[function(e,t){"use strict";function n(e,t){var n=x.hasOwnProperty(t)?x[t]:null;M.hasOwnProperty(t)&&g(n===b.OVERRIDE_BASE),e.hasOwnProperty(t)&&g(n===b.DEFINE_MANY||n===b.DEFINE_MANY_MERGED)}function r(e,t){if(t){g("function"!=typeof t),g(!p.isValidElement(t));var r=e.prototype;t.hasOwnProperty(E)&&D.mixins(e,t.mixins);for(var o in t)if(t.hasOwnProperty(o)&&o!==E){var i=t[o];if(n(r,o),D.hasOwnProperty(o))D[o](e,i);else{var u=x.hasOwnProperty(o),l=r.hasOwnProperty(o),c=i&&i.__reactDontBind,d="function"==typeof i,f=d&&!u&&!l&&!c;if(f)r.__reactAutoBindMap||(r.__reactAutoBindMap={}),r.__reactAutoBindMap[o]=i,r[o]=i;else if(l){var h=x[o];g(u&&(h===b.DEFINE_MANY_MERGED||h===b.DEFINE_MANY)),h===b.DEFINE_MANY_MERGED?r[o]=a(r[o],i):h===b.DEFINE_MANY&&(r[o]=s(r[o],i))}else r[o]=i}}}}function o(e,t){if(t)for(var n in t){var r=t[n];if(t.hasOwnProperty(n)){var o=n in D;g(!o);var i=n in e;g(!i),e[n]=r}}}function i(e,t){g(e&&t&&"object"==typeof e&&"object"==typeof t);for(var n in t)t.hasOwnProperty(n)&&(g(void 0===e[n]),e[n]=t[n]);return e}function a(e,t){return function(){var n=e.apply(this,arguments),r=t.apply(this,arguments);if(null==n)return r;if(null==r)return n;var o={};return i(o,n),i(o,r),o}}function s(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function u(e,t){var n=t.bind(e);return n}function l(e){for(var t in e.__reactAutoBindMap)if(e.__reactAutoBindMap.hasOwnProperty(t)){var n=e.__reactAutoBindMap[t];e[t]=u(e,d.guard(n,e.constructor.displayName+"."+t))}}var c=e(39),p=(e(45),e(61)),d=e(64),f=e(71),h=e(72),m=(e(83),e(82),e(96)),v=e(29),g=e(147),y=e(153),C=e(154),E=(e(166),C({mixins:null})),b=y({DEFINE_ONCE:null,DEFINE_MANY:null,OVERRIDE_BASE:null,DEFINE_MANY_MERGED:null}),_=[],x={mixins:b.DEFINE_MANY,statics:b.DEFINE_MANY,propTypes:b.DEFINE_MANY,contextTypes:b.DEFINE_MANY,childContextTypes:b.DEFINE_MANY,getDefaultProps:b.DEFINE_MANY_MERGED,getInitialState:b.DEFINE_MANY_MERGED,getChildContext:b.DEFINE_MANY_MERGED,render:b.DEFINE_ONCE,componentWillMount:b.DEFINE_MANY,componentDidMount:b.DEFINE_MANY,componentWillReceiveProps:b.DEFINE_MANY,shouldComponentUpdate:b.DEFINE_ONCE,componentWillUpdate:b.DEFINE_MANY,componentDidUpdate:b.DEFINE_MANY,componentWillUnmount:b.DEFINE_MANY,updateComponent:b.OVERRIDE_BASE},D={displayName:function(e,t){e.displayName=t},mixins:function(e,t){if(t)for(var n=0;n";return this._createOpenTagMarkupAndPutListeners(t)+this._createContentMarkup(t,r)+o},_createOpenTagMarkupAndPutListeners:function(e){var t=this._currentElement.props,n="<"+this._tag;for(var o in t)if(t.hasOwnProperty(o)){var i=t[o];if(null!=i)if(E.hasOwnProperty(o))r(this._rootNodeID,o,i,e);else{o===_&&(i&&(i=this._previousStyleCopy=h({},t.style)),i=a.createMarkupForStyles(i));var s=u.createMarkupForProperty(o,i);s&&(n+=" "+s)}}if(e.renderToStaticMarkup)return n+">";var l=u.createMarkupForID(this._rootNodeID);return n+" "+l+">"},_createContentMarkup:function(e,t){var n="";("listing"===this._tag||"pre"===this._tag||"textarea"===this._tag)&&(n="\n");var r=this._currentElement.props,o=r.dangerouslySetInnerHTML;if(null!=o){if(null!=o.__html)return n+o.__html}else{var i=b[typeof r.children]?r.children:null,a=null!=i?null:r.children;if(null!=i)return n+m(i);if(null!=a){var s=this.mountChildren(a,e,t);return n+s.join("")}}return n},receiveComponent:function(e,t,n){var r=this._currentElement;this._currentElement=e,this.updateComponent(t,r,e,n)},updateComponent:function(e,t,r,o){n(this._currentElement.props),this._updateDOMProperties(t.props,e),this._updateDOMChildren(t.props,e,o)},_updateDOMProperties:function(e,t){var n,o,i,a=this._currentElement.props;for(n in e)if(!a.hasOwnProperty(n)&&e.hasOwnProperty(n))if(n===_){var u=this._previousStyleCopy;for(o in u)u.hasOwnProperty(o)&&(i=i||{},i[o]="")}else E.hasOwnProperty(n)?y(this._rootNodeID,n):(s.isStandardName[n]||s.isCustomAttribute(n))&&D.deletePropertyByID(this._rootNodeID,n);for(n in a){var l=a[n],c=n===_?this._previousStyleCopy:e[n];if(a.hasOwnProperty(n)&&l!==c)if(n===_)if(l&&(l=this._previousStyleCopy=h({},l)),c){for(o in c)!c.hasOwnProperty(o)||l&&l.hasOwnProperty(o)||(i=i||{},i[o]="");for(o in l)l.hasOwnProperty(o)&&c[o]!==l[o]&&(i=i||{},i[o]=l[o])}else i=l;else E.hasOwnProperty(n)?r(this._rootNodeID,n,l,t):(s.isStandardName[n]||s.isCustomAttribute(n))&&D.updatePropertyByID(this._rootNodeID,n,l)}i&&D.updateStylesByID(this._rootNodeID,i)},_updateDOMChildren:function(e,t,n){var r=this._currentElement.props,o=b[typeof e.children]?e.children:null,i=b[typeof r.children]?r.children:null,a=e.dangerouslySetInnerHTML&&e.dangerouslySetInnerHTML.__html,s=r.dangerouslySetInnerHTML&&r.dangerouslySetInnerHTML.__html,u=null!=o?null:e.children,l=null!=i?null:r.children,c=null!=o||null!=a,p=null!=i||null!=s;null!=u&&null==l?this.updateChildren(null,t,n):c&&!p&&this.updateTextContent(""),null!=i?o!==i&&this.updateTextContent(""+i):null!=s?a!==s&&D.updateInnerHTMLByID(this._rootNodeID,s):null!=l&&this.updateChildren(l,t,n)},unmountComponent:function(){this.unmountChildren(),l.deleteAllListeners(this._rootNodeID),c.unmountIDFromEnvironment(this._rootNodeID),this._rootNodeID=null}},f.measureMethods(i,"ReactDOMComponent",{mountComponent:"mountComponent",updateComponent:"updateComponent"}),h(i.prototype,i.Mixin,d.Mixin),i.injection={injectIDOperations:function(e){i.BackendIDOperations=D=e}},t.exports=i},{11:11,12:12,128:128,147:147,148:148,154:154,166:166,29:29,33:33,40:40,6:6,75:75,76:76,80:80}],49:[function(e,t){"use strict";var n=e(16),r=e(27),o=e(32),i=e(38),a=e(61),s=a.createFactory("form"),u=i.createClass({displayName:"ReactDOMForm",tagName:"FORM",mixins:[o,r],render:function(){return s(this.props)},componentDidMount:function(){this.trapBubbledEvent(n.topLevelTypes.topReset,"reset"),this.trapBubbledEvent(n.topLevelTypes.topSubmit,"submit")}});t.exports=u},{16:16,27:27,32:32,38:38,61:61}],50:[function(e,t){"use strict";var n=e(6),r=e(10),o=e(12),i=e(75),a=e(80),s=e(147),u=e(159),l={dangerouslySetInnerHTML:"`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.",style:"`style` must be set using `updateStylesByID()`."},c={updatePropertyByID:function(e,t,n){var r=i.getNode(e);s(!l.hasOwnProperty(t)),null!=n?o.setValueForProperty(r,t,n):o.deleteValueForProperty(r,t)},deletePropertyByID:function(e,t,n){var r=i.getNode(e);s(!l.hasOwnProperty(t)),o.deleteValueForProperty(r,t,n)},updateStylesByID:function(e,t){var r=i.getNode(e);n.setValueForStyles(r,t)},updateInnerHTMLByID:function(e,t){var n=i.getNode(e);u(n,t)},updateTextContentByID:function(e,t){var n=i.getNode(e);r.updateTextContent(n,t)},dangerouslyReplaceNodeWithMarkupByID:function(e,t){var n=i.getNode(e);r.dangerouslyReplaceNodeWithMarkup(n,t)},dangerouslyProcessChildrenUpdates:function(e,t){for(var n=0;np;p++){var m=u[p];if(m!==a&&m.form===a.form){var v=l.getID(m);d(v);var g=h[v];d(g),c.asap(n,g)}}}return t}});t.exports=m},{12:12,147:147,2:2,26:26,29:29,32:32,38:38,61:61,75:75,97:97}],54:[function(e,t){"use strict";var n=e(32),r=e(38),o=e(61),i=(e(166),o.createFactory("option")),a=r.createClass({displayName:"ReactDOMOption",tagName:"OPTION",mixins:[n],componentWillMount:function(){},render:function(){return i(this.props,this.props.children)}});t.exports=a},{166:166,32:32,38:38,61:61}],55:[function(e,t){"use strict";function n(){if(this._pendingUpdate){this._pendingUpdate=!1;var e=a.getValue(this);null!=e&&this.isMounted()&&o(this,e)}}function r(e,t){if(null==e[t])return null;if(e.multiple){if(!Array.isArray(e[t]))return new Error("The `"+t+"` prop supplied to