@samitouri / QOS-React / commits / 2085542d30

Remove fixture react build files from git tracking

Brandon Dail committed Jan 6, 2017 at 16:27 UTC 2085542d30e7bb3c1188ea33432479fbde33be59
3 files changed +2 -22797
.gitignore
+2
@@ -19,6 +19,8 @@ docs/downloads/*.zip
19 docs/vendor/bundle
20 examples/shared/*.js
21 examples/**/bundle.js
22 +fixtures/dom/public/react-dom.js
23 +fixtures/dom/public/react.js
24 test/the-files-to-test.generated.js
25 *.log*
26 chrome-user-data
fixtures/dom/public/react-dom.js deleted
-18938
@@ -1,18938 +0,0 @@
1 - /**
2 - * ReactDOM v16.0.0-alpha
3 - */
4 -
5 -;(function(f) {
6 - // CommonJS
7 - if (typeof exports === "object" && typeof module !== "undefined") {
8 - module.exports = f(require('react'));
9 -
10 - // RequireJS
11 - } else if (typeof define === "function" && define.amd) {
12 - define(['react'], f);
13 -
14 - // <script>
15 - } else {
16 - var g;
17 - if (typeof window !== "undefined") {
18 - g = window;
19 - } else if (typeof global !== "undefined") {
20 - g = global;
21 - } else if (typeof self !== "undefined") {
22 - g = self;
23 - } else {
24 - // works providing we're not in "use strict";
25 - // needed for Java 8 Nashorn
26 - // see https://github.com/facebook/react/issues/3037
27 - g = this;
28 - }
29 - g.ReactDOM = f(g.React);
30 - }
31 -})(function(React) {
32 - return (function(f){return f()})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
33 -/**
34 - * Copyright 2013-present, Facebook, Inc.
35 - * All rights reserved.
36 - *
37 - * This source code is licensed under the BSD-style license found in the
38 - * LICENSE file in the root directory of this source tree. An additional grant
39 - * of patent rights can be found in the PATENTS file in the same directory.
40 - *
41 - */
42 -
43 -'use strict';
44 -
45 -var ARIADOMPropertyConfig = {
46 - Properties: {
47 - // Global States and Properties
48 - 'aria-current': 0, // state
49 - 'aria-details': 0,
50 - 'aria-disabled': 0, // state
51 - 'aria-hidden': 0, // state
52 - 'aria-invalid': 0, // state
53 - 'aria-keyshortcuts': 0,
54 - 'aria-label': 0,
55 - 'aria-roledescription': 0,
56 - // Widget Attributes
57 - 'aria-autocomplete': 0,
58 - 'aria-checked': 0,
59 - 'aria-expanded': 0,
60 - 'aria-haspopup': 0,
61 - 'aria-level': 0,
62 - 'aria-modal': 0,
63 - 'aria-multiline': 0,
64 - 'aria-multiselectable': 0,
65 - 'aria-orientation': 0,
66 - 'aria-placeholder': 0,
67 - 'aria-pressed': 0,
68 - 'aria-readonly': 0,
69 - 'aria-required': 0,
70 - 'aria-selected': 0,
71 - 'aria-sort': 0,
72 - 'aria-valuemax': 0,
73 - 'aria-valuemin': 0,
74 - 'aria-valuenow': 0,
75 - 'aria-valuetext': 0,
76 - // Live Region Attributes
77 - 'aria-atomic': 0,
78 - 'aria-busy': 0,
79 - 'aria-live': 0,
80 - 'aria-relevant': 0,
81 - // Drag-and-Drop Attributes
82 - 'aria-dropeffect': 0,
83 - 'aria-grabbed': 0,
84 - // Relationship Attributes
85 - 'aria-activedescendant': 0,
86 - 'aria-colcount': 0,
87 - 'aria-colindex': 0,
88 - 'aria-colspan': 0,
89 - 'aria-controls': 0,
90 - 'aria-describedby': 0,
91 - 'aria-errormessage': 0,
92 - 'aria-flowto': 0,
93 - 'aria-labelledby': 0,
94 - 'aria-owns': 0,
95 - 'aria-posinset': 0,
96 - 'aria-rowcount': 0,
97 - 'aria-rowindex': 0,
98 - 'aria-rowspan': 0,
99 - 'aria-setsize': 0
100 - },
101 - DOMAttributeNames: {},
102 - DOMPropertyNames: {}
103 -};
104 -
105 -module.exports = ARIADOMPropertyConfig;
106 -},{}],2:[function(_dereq_,module,exports){
107 -/**
108 - * Copyright 2013-present, Facebook, Inc.
109 - * All rights reserved.
110 - *
111 - * This source code is licensed under the BSD-style license found in the
112 - * LICENSE file in the root directory of this source tree. An additional grant
113 - * of patent rights can be found in the PATENTS file in the same directory.
114 - *
115 - */
116 -
117 -'use strict';
118 -
119 -var ReactDOMComponentTree = _dereq_(35);
120 -
121 -var focusNode = _dereq_(151);
122 -
123 -var AutoFocusUtils = {
124 - focusDOMComponent: function () {
125 - focusNode(ReactDOMComponentTree.getNodeFromInstance(this));
126 - }
127 -};
128 -
129 -module.exports = AutoFocusUtils;
130 -},{"151":151,"35":35}],3:[function(_dereq_,module,exports){
131 -/**
132 - * Copyright 2013-present Facebook, Inc.
133 - * All rights reserved.
134 - *
135 - * This source code is licensed under the BSD-style license found in the
136 - * LICENSE file in the root directory of this source tree. An additional grant
137 - * of patent rights can be found in the PATENTS file in the same directory.
138 - *
139 - */
140 -
141 -'use strict';
142 -
143 -var EventPropagators = _dereq_(20);
144 -var ExecutionEnvironment = _dereq_(143);
145 -var FallbackCompositionState = _dereq_(21);
146 -var SyntheticCompositionEvent = _dereq_(94);
147 -var SyntheticInputEvent = _dereq_(98);
148 -
149 -var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
150 -var START_KEYCODE = 229;
151 -
152 -var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;
153 -
154 -var documentMode = null;
155 -if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {
156 - documentMode = document.documentMode;
157 -}
158 -
159 -// Webkit offers a very useful `textInput` event that can be used to
160 -// directly represent `beforeInput`. The IE `textinput` event is not as
161 -// useful, so we don't use it.
162 -var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();
163 -
164 -// In IE9+, we have access to composition events, but the data supplied
165 -// by the native compositionend event may be incorrect. Japanese ideographic
166 -// spaces, for instance (\u3000) are not recorded correctly.
167 -var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);
168 -
169 -/**
170 - * Opera <= 12 includes TextEvent in window, but does not fire
171 - * text input events. Rely on keypress instead.
172 - */
173 -function isPresto() {
174 - var opera = window.opera;
175 - return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;
176 -}
177 -
178 -var SPACEBAR_CODE = 32;
179 -var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);
180 -
181 -// Events and their corresponding property names.
182 -var eventTypes = {
183 - beforeInput: {
184 - phasedRegistrationNames: {
185 - bubbled: 'onBeforeInput',
186 - captured: 'onBeforeInputCapture'
187 - },
188 - dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']
189 - },
190 - compositionEnd: {
191 - phasedRegistrationNames: {
192 - bubbled: 'onCompositionEnd',
193 - captured: 'onCompositionEndCapture'
194 - },
195 - dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
196 - },
197 - compositionStart: {
198 - phasedRegistrationNames: {
199 - bubbled: 'onCompositionStart',
200 - captured: 'onCompositionStartCapture'
201 - },
202 - dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
203 - },
204 - compositionUpdate: {
205 - phasedRegistrationNames: {
206 - bubbled: 'onCompositionUpdate',
207 - captured: 'onCompositionUpdateCapture'
208 - },
209 - dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
210 - }
211 -};
212 -
213 -// Track whether we've ever handled a keypress on the space key.
214 -var hasSpaceKeypress = false;
215 -
216 -/**
217 - * Return whether a native keypress event is assumed to be a command.
218 - * This is required because Firefox fires `keypress` events for key commands
219 - * (cut, copy, select-all, etc.) even though no character is inserted.
220 - */
221 -function isKeypressCommand(nativeEvent) {
222 - return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&
223 - // ctrlKey && altKey is equivalent to AltGr, and is not a command.
224 - !(nativeEvent.ctrlKey && nativeEvent.altKey);
225 -}
226 -
227 -/**
228 - * Translate native top level events into event types.
229 - *
230 - * @param {string} topLevelType
231 - * @return {object}
232 - */
233 -function getCompositionEventType(topLevelType) {
234 - switch (topLevelType) {
235 - case 'topCompositionStart':
236 - return eventTypes.compositionStart;
237 - case 'topCompositionEnd':
238 - return eventTypes.compositionEnd;
239 - case 'topCompositionUpdate':
240 - return eventTypes.compositionUpdate;
241 - }
242 -}
243 -
244 -/**
245 - * Does our fallback best-guess model think this event signifies that
246 - * composition has begun?
247 - *
248 - * @param {string} topLevelType
249 - * @param {object} nativeEvent
250 - * @return {boolean}
251 - */
252 -function isFallbackCompositionStart(topLevelType, nativeEvent) {
253 - return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;
254 -}
255 -
256 -/**
257 - * Does our fallback mode think that this event is the end of composition?
258 - *
259 - * @param {string} topLevelType
260 - * @param {object} nativeEvent
261 - * @return {boolean}
262 - */
263 -function isFallbackCompositionEnd(topLevelType, nativeEvent) {
264 - switch (topLevelType) {
265 - case 'topKeyUp':
266 - // Command keys insert or clear IME input.
267 - return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;
268 - case 'topKeyDown':
269 - // Expect IME keyCode on each keydown. If we get any other
270 - // code we must have exited earlier.
271 - return nativeEvent.keyCode !== START_KEYCODE;
272 - case 'topKeyPress':
273 - case 'topMouseDown':
274 - case 'topBlur':
275 - // Events are not possible without cancelling IME.
276 - return true;
277 - default:
278 - return false;
279 - }
280 -}
281 -
282 -/**
283 - * Google Input Tools provides composition data via a CustomEvent,
284 - * with the `data` property populated in the `detail` object. If this
285 - * is available on the event object, use it. If not, this is a plain
286 - * composition event and we have nothing special to extract.
287 - *
288 - * @param {object} nativeEvent
289 - * @return {?string}
290 - */
291 -function getDataFromCustomEvent(nativeEvent) {
292 - var detail = nativeEvent.detail;
293 - if (typeof detail === 'object' && 'data' in detail) {
294 - return detail.data;
295 - }
296 - return null;
297 -}
298 -
299 -// Track the current IME composition fallback object, if any.
300 -var currentComposition = null;
301 -
302 -/**
303 - * @return {?object} A SyntheticCompositionEvent.
304 - */
305 -function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
306 - var eventType;
307 - var fallbackData;
308 -
309 - if (canUseCompositionEvent) {
310 - eventType = getCompositionEventType(topLevelType);
311 - } else if (!currentComposition) {
312 - if (isFallbackCompositionStart(topLevelType, nativeEvent)) {
313 - eventType = eventTypes.compositionStart;
314 - }
315 - } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {
316 - eventType = eventTypes.compositionEnd;
317 - }
318 -
319 - if (!eventType) {
320 - return null;
321 - }
322 -
323 - if (useFallbackCompositionData) {
324 - // The current composition is stored statically and must not be
325 - // overwritten while composition continues.
326 - if (!currentComposition && eventType === eventTypes.compositionStart) {
327 - currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);
328 - } else if (eventType === eventTypes.compositionEnd) {
329 - if (currentComposition) {
330 - fallbackData = currentComposition.getData();
331 - }
332 - }
333 - }
334 -
335 - var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);
336 -
337 - if (fallbackData) {
338 - // Inject data generated from fallback path into the synthetic event.
339 - // This matches the property of native CompositionEventInterface.
340 - event.data = fallbackData;
341 - } else {
342 - var customData = getDataFromCustomEvent(nativeEvent);
343 - if (customData !== null) {
344 - event.data = customData;
345 - }
346 - }
347 -
348 - EventPropagators.accumulateTwoPhaseDispatches(event);
349 - return event;
350 -}
351 -
352 -/**
353 - * @param {string} topLevelType Record from `EventConstants`.
354 - * @param {object} nativeEvent Native browser event.
355 - * @return {?string} The string corresponding to this `beforeInput` event.
356 - */
357 -function getNativeBeforeInputChars(topLevelType, nativeEvent) {
358 - switch (topLevelType) {
359 - case 'topCompositionEnd':
360 - return getDataFromCustomEvent(nativeEvent);
361 - case 'topKeyPress':
362 - /**
363 - * If native `textInput` events are available, our goal is to make
364 - * use of them. However, there is a special case: the spacebar key.
365 - * In Webkit, preventing default on a spacebar `textInput` event
366 - * cancels character insertion, but it *also* causes the browser
367 - * to fall back to its default spacebar behavior of scrolling the
368 - * page.
369 - *
370 - * Tracking at:
371 - * https://code.google.com/p/chromium/issues/detail?id=355103
372 - *
373 - * To avoid this issue, use the keypress event as if no `textInput`
374 - * event is available.
375 - */
376 - var which = nativeEvent.which;
377 - if (which !== SPACEBAR_CODE) {
378 - return null;
379 - }
380 -
381 - hasSpaceKeypress = true;
382 - return SPACEBAR_CHAR;
383 -
384 - case 'topTextInput':
385 - // Record the characters to be added to the DOM.
386 - var chars = nativeEvent.data;
387 -
388 - // If it's a spacebar character, assume that we have already handled
389 - // it at the keypress level and bail immediately. Android Chrome
390 - // doesn't give us keycodes, so we need to blacklist it.
391 - if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
392 - return null;
393 - }
394 -
395 - return chars;
396 -
397 - default:
398 - // For other native event types, do nothing.
399 - return null;
400 - }
401 -}
402 -
403 -/**
404 - * For browsers that do not provide the `textInput` event, extract the
405 - * appropriate string to use for SyntheticInputEvent.
406 - *
407 - * @param {string} topLevelType Record from `EventConstants`.
408 - * @param {object} nativeEvent Native browser event.
409 - * @return {?string} The fallback string for this `beforeInput` event.
410 - */
411 -function getFallbackBeforeInputChars(topLevelType, nativeEvent) {
412 - // If we are currently composing (IME) and using a fallback to do so,
413 - // try to extract the composed characters from the fallback object.
414 - // If composition event is available, we extract a string only at
415 - // compositionevent, otherwise extract it at fallback events.
416 - if (currentComposition) {
417 - if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {
418 - var chars = currentComposition.getData();
419 - FallbackCompositionState.release(currentComposition);
420 - currentComposition = null;
421 - return chars;
422 - }
423 - return null;
424 - }
425 -
426 - switch (topLevelType) {
427 - case 'topPaste':
428 - // If a paste event occurs after a keypress, throw out the input
429 - // chars. Paste events should not lead to BeforeInput events.
430 - return null;
431 - case 'topKeyPress':
432 - /**
433 - * As of v27, Firefox may fire keypress events even when no character
434 - * will be inserted. A few possibilities:
435 - *
436 - * - `which` is `0`. Arrow keys, Esc key, etc.
437 - *
438 - * - `which` is the pressed key code, but no char is available.
439 - * Ex: 'AltGr + d` in Polish. There is no modified character for
440 - * this key combination and no character is inserted into the
441 - * document, but FF fires the keypress for char code `100` anyway.
442 - * No `input` event will occur.
443 - *
444 - * - `which` is the pressed key code, but a command combination is
445 - * being used. Ex: `Cmd+C`. No character is inserted, and no
446 - * `input` event will occur.
447 - */
448 - if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {
449 - return String.fromCharCode(nativeEvent.which);
450 - }
451 - return null;
452 - case 'topCompositionEnd':
453 - return useFallbackCompositionData ? null : nativeEvent.data;
454 - default:
455 - return null;
456 - }
457 -}
458 -
459 -/**
460 - * Extract a SyntheticInputEvent for `beforeInput`, based on either native
461 - * `textInput` or fallback behavior.
462 - *
463 - * @return {?object} A SyntheticInputEvent.
464 - */
465 -function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
466 - var chars;
467 -
468 - if (canUseTextInputEvent) {
469 - chars = getNativeBeforeInputChars(topLevelType, nativeEvent);
470 - } else {
471 - chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);
472 - }
473 -
474 - // If no characters are being inserted, no BeforeInput event should
475 - // be fired.
476 - if (!chars) {
477 - return null;
478 - }
479 -
480 - var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);
481 -
482 - event.data = chars;
483 - EventPropagators.accumulateTwoPhaseDispatches(event);
484 - return event;
485 -}
486 -
487 -/**
488 - * Create an `onBeforeInput` event to match
489 - * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
490 - *
491 - * This event plugin is based on the native `textInput` event
492 - * available in Chrome, Safari, Opera, and IE. This event fires after
493 - * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
494 - *
495 - * `beforeInput` is spec'd but not implemented in any browsers, and
496 - * the `input` event does not provide any useful information about what has
497 - * actually been added, contrary to the spec. Thus, `textInput` is the best
498 - * available event to identify the characters that have actually been inserted
499 - * into the target node.
500 - *
501 - * This plugin is also responsible for emitting `composition` events, thus
502 - * allowing us to share composition fallback code for both `beforeInput` and
503 - * `composition` event types.
504 - */
505 -var BeforeInputEventPlugin = {
506 -
507 - eventTypes: eventTypes,
508 -
509 - extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
510 - return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];
511 - }
512 -};
513 -
514 -module.exports = BeforeInputEventPlugin;
515 -},{"143":143,"20":20,"21":21,"94":94,"98":98}],4:[function(_dereq_,module,exports){
516 -/**
517 - * Copyright 2013-present, Facebook, Inc.
518 - * All rights reserved.
519 - *
520 - * This source code is licensed under the BSD-style license found in the
521 - * LICENSE file in the root directory of this source tree. An additional grant
522 - * of patent rights can be found in the PATENTS file in the same directory.
523 - *
524 - */
525 -
526 -'use strict';
527 -
528 -/**
529 - * CSS properties which accept numbers but are not in units of "px".
530 - */
531 -
532 -var isUnitlessNumber = {
533 - animationIterationCount: true,
534 - borderImageOutset: true,
535 - borderImageSlice: true,
536 - borderImageWidth: true,
537 - boxFlex: true,
538 - boxFlexGroup: true,
539 - boxOrdinalGroup: true,
540 - columnCount: true,
541 - flex: true,
542 - flexGrow: true,
543 - flexPositive: true,
544 - flexShrink: true,
545 - flexNegative: true,
546 - flexOrder: true,
547 - gridRow: true,
548 - gridColumn: true,
549 - fontWeight: true,
550 - lineClamp: true,
551 - lineHeight: true,
552 - opacity: true,
553 - order: true,
554 - orphans: true,
555 - tabSize: true,
556 - widows: true,
557 - zIndex: true,
558 - zoom: true,
559 -
560 - // SVG-related properties
561 - fillOpacity: true,
562 - floodOpacity: true,
563 - stopOpacity: true,
564 - strokeDasharray: true,
565 - strokeDashoffset: true,
566 - strokeMiterlimit: true,
567 - strokeOpacity: true,
568 - strokeWidth: true
569 -};
570 -
571 -/**
572 - * @param {string} prefix vendor-specific prefix, eg: Webkit
573 - * @param {string} key style name, eg: transitionDuration
574 - * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
575 - * WebkitTransitionDuration
576 - */
577 -function prefixKey(prefix, key) {
578 - return prefix + key.charAt(0).toUpperCase() + key.substring(1);
579 -}
580 -
581 -/**
582 - * Support style names that may come passed in prefixed by adding permutations
583 - * of vendor prefixes.
584 - */
585 -var prefixes = ['Webkit', 'ms', 'Moz', 'O'];
586 -
587 -// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
588 -// infinite loop, because it iterates over the newly added props too.
589 -Object.keys(isUnitlessNumber).forEach(function (prop) {
590 - prefixes.forEach(function (prefix) {
591 - isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
592 - });
593 -});
594 -
595 -/**
596 - * Most style properties can be unset by doing .style[prop] = '' but IE8
597 - * doesn't like doing that with shorthand properties so for the properties that
598 - * IE8 breaks on, which are listed here, we instead unset each of the
599 - * individual properties. See http://bugs.jquery.com/ticket/12385.
600 - * The 4-value 'clock' properties like margin, padding, border-width seem to
601 - * behave without any problems. Curiously, list-style works too without any
602 - * special prodding.
603 - */
604 -var shorthandPropertyExpansions = {
605 - background: {
606 - backgroundAttachment: true,
607 - backgroundColor: true,
608 - backgroundImage: true,
609 - backgroundPositionX: true,
610 - backgroundPositionY: true,
611 - backgroundRepeat: true
612 - },
613 - backgroundPosition: {
614 - backgroundPositionX: true,
615 - backgroundPositionY: true
616 - },
617 - border: {
618 - borderWidth: true,
619 - borderStyle: true,
620 - borderColor: true
621 - },
622 - borderBottom: {
623 - borderBottomWidth: true,
624 - borderBottomStyle: true,
625 - borderBottomColor: true
626 - },
627 - borderLeft: {
628 - borderLeftWidth: true,
629 - borderLeftStyle: true,
630 - borderLeftColor: true
631 - },
632 - borderRight: {
633 - borderRightWidth: true,
634 - borderRightStyle: true,
635 - borderRightColor: true
636 - },
637 - borderTop: {
638 - borderTopWidth: true,
639 - borderTopStyle: true,
640 - borderTopColor: true
641 - },
642 - font: {
643 - fontStyle: true,
644 - fontVariant: true,
645 - fontWeight: true,
646 - fontSize: true,
647 - lineHeight: true,
648 - fontFamily: true
649 - },
650 - outline: {
651 - outlineWidth: true,
652 - outlineStyle: true,
653 - outlineColor: true
654 - }
655 -};
656 -
657 -var CSSProperty = {
658 - isUnitlessNumber: isUnitlessNumber,
659 - shorthandPropertyExpansions: shorthandPropertyExpansions
660 -};
661 -
662 -module.exports = CSSProperty;
663 -},{}],5:[function(_dereq_,module,exports){
664 -/**
665 - * Copyright 2013-present, Facebook, Inc.
666 - * All rights reserved.
667 - *
668 - * This source code is licensed under the BSD-style license found in the
669 - * LICENSE file in the root directory of this source tree. An additional grant
670 - * of patent rights can be found in the PATENTS file in the same directory.
671 - *
672 - */
673 -
674 -'use strict';
675 -
676 -var CSSProperty = _dereq_(4);
677 -var ExecutionEnvironment = _dereq_(143);
678 -
679 -var camelizeStyleName = _dereq_(145);
680 -var dangerousStyleValue = _dereq_(111);
681 -var getComponentName = _dereq_(116);
682 -var hyphenateStyleName = _dereq_(156);
683 -var memoizeStringOnly = _dereq_(160);
684 -var warning = _dereq_(164);
685 -
686 -if ("development" !== 'production') {
687 - var _require = _dereq_(52),
688 - getCurrentFiberOwnerName = _require.getCurrentFiberOwnerName;
689 -}
690 -
691 -var processStyleName = memoizeStringOnly(function (styleName) {
692 - return hyphenateStyleName(styleName);
693 -});
694 -
695 -var hasShorthandPropertyBug = false;
696 -var styleFloatAccessor = 'cssFloat';
697 -if (ExecutionEnvironment.canUseDOM) {
698 - var tempStyle = document.createElement('div').style;
699 - try {
700 - // IE8 throws "Invalid argument." if resetting shorthand style properties.
701 - tempStyle.font = '';
702 - } catch (e) {
703 - hasShorthandPropertyBug = true;
704 - }
705 - // IE8 only supports accessing cssFloat (standard) as styleFloat
706 - if (document.documentElement.style.cssFloat === undefined) {
707 - styleFloatAccessor = 'styleFloat';
708 - }
709 -}
710 -
711 -if ("development" !== 'production') {
712 - // 'msTransform' is correct, but the other prefixes should be capitalized
713 - var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
714 -
715 - // style values shouldn't contain a semicolon
716 - var badStyleValueWithSemicolonPattern = /;\s*$/;
717 -
718 - var warnedStyleNames = {};
719 - var warnedStyleValues = {};
720 - var warnedForNaNValue = false;
721 -
722 - var warnHyphenatedStyleName = function (name, owner) {
723 - if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
724 - return;
725 - }
726 -
727 - warnedStyleNames[name] = true;
728 - "development" !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;
729 - };
730 -
731 - var warnBadVendoredStyleName = function (name, owner) {
732 - if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
733 - return;
734 - }
735 -
736 - warnedStyleNames[name] = true;
737 - "development" !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;
738 - };
739 -
740 - var warnStyleValueWithSemicolon = function (name, value, owner) {
741 - if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
742 - return;
743 - }
744 -
745 - warnedStyleValues[value] = true;
746 - "development" !== 'production' ? warning(false, 'Style property values shouldn\'t contain a semicolon.%s ' + 'Try "%s: %s" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;
747 - };
748 -
749 - var warnStyleValueIsNaN = function (name, value, owner) {
750 - if (warnedForNaNValue) {
751 - return;
752 - }
753 -
754 - warnedForNaNValue = true;
755 - "development" !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;
756 - };
757 -
758 - var checkRenderMessage = function (owner) {
759 - var ownerName;
760 - if (owner != null) {
761 - // Stack passes the owner manually all the way to CSSPropertyOperations.
762 - ownerName = getComponentName(owner);
763 - } else {
764 - // Fiber doesn't pass it but uses ReactDebugCurrentFiber to track it.
765 - // It is only enabled in development and tracks host components too.
766 - ownerName = getCurrentFiberOwnerName();
767 - // TODO: also report the stack.
768 - }
769 - if (ownerName) {
770 - return ' Check the render method of `' + ownerName + '`.';
771 - }
772 - return '';
773 - };
774 -
775 - /**
776 - * @param {string} name
777 - * @param {*} value
778 - * @param {ReactDOMComponent} component
779 - */
780 - var warnValidStyle = function (name, value, component) {
781 - var owner;
782 - if (component) {
783 - owner = component._currentElement._owner;
784 - }
785 - if (name.indexOf('-') > -1) {
786 - warnHyphenatedStyleName(name, owner);
787 - } else if (badVendoredStyleNamePattern.test(name)) {
788 - warnBadVendoredStyleName(name, owner);
789 - } else if (badStyleValueWithSemicolonPattern.test(value)) {
790 - warnStyleValueWithSemicolon(name, value, owner);
791 - }
792 -
793 - if (typeof value === 'number' && isNaN(value)) {
794 - warnStyleValueIsNaN(name, value, owner);
795 - }
796 - };
797 -}
798 -
799 -/**
800 - * Operations for dealing with CSS properties.
801 - */
802 -var CSSPropertyOperations = {
803 -
804 - /**
805 - * Serializes a mapping of style properties for use as inline styles:
806 - *
807 - * > createMarkupForStyles({width: '200px', height: 0})
808 - * "width:200px;height:0;"
809 - *
810 - * Undefined values are ignored so that declarative programming is easier.
811 - * The result should be HTML-escaped before insertion into the DOM.
812 - *
813 - * @param {object} styles
814 - * @param {ReactDOMComponent} component
815 - * @return {?string}
816 - */
817 - createMarkupForStyles: function (styles, component) {
818 - var serialized = '';
819 - for (var styleName in styles) {
820 - if (!styles.hasOwnProperty(styleName)) {
821 - continue;
822 - }
823 - var styleValue = styles[styleName];
824 - if ("development" !== 'production') {
825 - warnValidStyle(styleName, styleValue, component);
826 - }
827 - if (styleValue != null) {
828 - serialized += processStyleName(styleName) + ':';
829 - serialized += dangerousStyleValue(styleName, styleValue, component) + ';';
830 - }
831 - }
832 - return serialized || null;
833 - },
834 -
835 - /**
836 - * Sets the value for multiple styles on a node. If a value is specified as
837 - * '' (empty string), the corresponding style property will be unset.
838 - *
839 - * @param {DOMElement} node
840 - * @param {object} styles
841 - * @param {ReactDOMComponent} component
842 - */
843 - setValueForStyles: function (node, styles, component) {
844 - var style = node.style;
845 - for (var styleName in styles) {
846 - if (!styles.hasOwnProperty(styleName)) {
847 - continue;
848 - }
849 - if ("development" !== 'production') {
850 - warnValidStyle(styleName, styles[styleName], component);
851 - }
852 - var styleValue = dangerousStyleValue(styleName, styles[styleName], component);
853 - if (styleName === 'float' || styleName === 'cssFloat') {
854 - styleName = styleFloatAccessor;
855 - }
856 - if (styleValue) {
857 - style[styleName] = styleValue;
858 - } else {
859 - var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];
860 - if (expansion) {
861 - // Shorthand property that IE8 won't like unsetting, so unset each
862 - // component to placate it
863 - for (var individualStyleName in expansion) {
864 - style[individualStyleName] = '';
865 - }
866 - } else {
867 - style[styleName] = '';
868 - }
869 - }
870 - }
871 - }
872 -
873 -};
874 -
875 -module.exports = CSSPropertyOperations;
876 -},{"111":111,"116":116,"143":143,"145":145,"156":156,"160":160,"164":164,"4":4,"52":52}],6:[function(_dereq_,module,exports){
877 -/**
878 - * Copyright 2013-present, Facebook, Inc.
879 - * All rights reserved.
880 - *
881 - * This source code is licensed under the BSD-style license found in the
882 - * LICENSE file in the root directory of this source tree. An additional grant
883 - * of patent rights can be found in the PATENTS file in the same directory.
884 - *
885 - *
886 - */
887 -
888 -'use strict';
889 -
890 -var _prodInvariant = _dereq_(133);
891 -
892 -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
893 -
894 -var PooledClass = _dereq_(24);
895 -
896 -var invariant = _dereq_(157);
897 -
898 -/**
899 - * A specialized pseudo-event module to help keep track of components waiting to
900 - * be notified when their DOM representations are available for use.
901 - *
902 - * This implements `PooledClass`, so you should never need to instantiate this.
903 - * Instead, use `CallbackQueue.getPooled()`.
904 - *
905 - * @class ReactMountReady
906 - * @implements PooledClass
907 - * @internal
908 - */
909 -
910 -var CallbackQueue = function () {
911 - function CallbackQueue(arg) {
912 - _classCallCheck(this, CallbackQueue);
913 -
914 - this._callbacks = null;
915 - this._contexts = null;
916 - this._arg = arg;
917 - }
918 -
919 - /**
920 - * Enqueues a callback to be invoked when `notifyAll` is invoked.
921 - *
922 - * @param {function} callback Invoked when `notifyAll` is invoked.
923 - * @param {?object} context Context to call `callback` with.
924 - * @internal
925 - */
926 -
927 -
928 - CallbackQueue.prototype.enqueue = function enqueue(callback, context) {
929 - this._callbacks = this._callbacks || [];
930 - this._callbacks.push(callback);
931 - this._contexts = this._contexts || [];
932 - this._contexts.push(context);
933 - };
934 -
935 - /**
936 - * Invokes all enqueued callbacks and clears the queue. This is invoked after
937 - * the DOM representation of a component has been created or updated.
938 - *
939 - * @internal
940 - */
941 -
942 -
943 - CallbackQueue.prototype.notifyAll = function notifyAll() {
944 - var callbacks = this._callbacks;
945 - var contexts = this._contexts;
946 - var arg = this._arg;
947 - if (callbacks && contexts) {
948 - !(callbacks.length === contexts.length) ? "development" !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;
949 - this._callbacks = null;
950 - this._contexts = null;
951 - for (var i = 0; i < callbacks.length; i++) {
952 - callbacks[i].call(contexts[i], arg);
953 - }
954 - callbacks.length = 0;
955 - contexts.length = 0;
956 - }
957 - };
958 -
959 - CallbackQueue.prototype.checkpoint = function checkpoint() {
960 - return this._callbacks ? this._callbacks.length : 0;
961 - };
962 -
963 - CallbackQueue.prototype.rollback = function rollback(len) {
964 - if (this._callbacks && this._contexts) {
965 - this._callbacks.length = len;
966 - this._contexts.length = len;
967 - }
968 - };
969 -
970 - /**
971 - * Resets the internal queue.
972 - *
973 - * @internal
974 - */
975 -
976 -
977 - CallbackQueue.prototype.reset = function reset() {
978 - this._callbacks = null;
979 - this._contexts = null;
980 - };
981 -
982 - /**
983 - * `PooledClass` looks for this.
984 - */
985 -
986 -
987 - CallbackQueue.prototype.destructor = function destructor() {
988 - this.reset();
989 - };
990 -
991 - return CallbackQueue;
992 -}();
993 -
994 -module.exports = PooledClass.addPoolingTo(CallbackQueue);
995 -},{"133":133,"157":157,"24":24}],7:[function(_dereq_,module,exports){
996 -/**
997 - * Copyright 2013-present, Facebook, Inc.
998 - * All rights reserved.
999 - *
1000 - * This source code is licensed under the BSD-style license found in the
1001 - * LICENSE file in the root directory of this source tree. An additional grant
1002 - * of patent rights can be found in the PATENTS file in the same directory.
1003 - *
1004 - */
1005 -
1006 -'use strict';
1007 -
1008 -var EventPluginHub = _dereq_(17);
1009 -var EventPropagators = _dereq_(20);
1010 -var ExecutionEnvironment = _dereq_(143);
1011 -var ReactControlledComponent = _dereq_(30);
1012 -var ReactDOMComponentTree = _dereq_(35);
1013 -var ReactGenericBatching = _dereq_(62);
1014 -var SyntheticEvent = _dereq_(96);
1015 -
1016 -var inputValueTracking = _dereq_(128);
1017 -var getEventTarget = _dereq_(121);
1018 -var isEventSupported = _dereq_(130);
1019 -var isTextInputElement = _dereq_(131);
1020 -
1021 -var eventTypes = {
1022 - change: {
1023 - phasedRegistrationNames: {
1024 - bubbled: 'onChange',
1025 - captured: 'onChangeCapture'
1026 - },
1027 - dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']
1028 - }
1029 -};
1030 -
1031 -function createAndAccumulateChangeEvent(inst, nativeEvent, target) {
1032 - var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, target);
1033 - event.type = 'change';
1034 - // Flag this event loop as needing state restore.
1035 - ReactControlledComponent.enqueueStateRestore(target);
1036 - EventPropagators.accumulateTwoPhaseDispatches(event);
1037 - return event;
1038 -}
1039 -/**
1040 - * For IE shims
1041 - */
1042 -var activeElement = null;
1043 -var activeElementInst = null;
1044 -
1045 -/**
1046 - * SECTION: handle `change` event
1047 - */
1048 -function shouldUseChangeEvent(elem) {
1049 - var nodeName = elem.nodeName && elem.nodeName.toLowerCase();
1050 - return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';
1051 -}
1052 -
1053 -var doesChangeEventBubble = false;
1054 -if (ExecutionEnvironment.canUseDOM) {
1055 - // See `handleChange` comment below
1056 - doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);
1057 -}
1058 -
1059 -function manualDispatchChangeEvent(nativeEvent) {
1060 - var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent));
1061 -
1062 - // If change and propertychange bubbled, we'd just bind to it like all the
1063 - // other events and have it go through ReactBrowserEventEmitter. Since it
1064 - // doesn't, we manually listen for the events and so we have to enqueue and
1065 - // process the abstract event manually.
1066 - //
1067 - // Batching is necessary here in order to ensure that all event handlers run
1068 - // before the next rerender (including event handlers attached to ancestor
1069 - // elements instead of directly on the input). Without this, controlled
1070 - // components don't work properly in conjunction with event bubbling because
1071 - // the component is rerendered and the value reverted before all the event
1072 - // handlers can run. See https://github.com/facebook/react/issues/708.
1073 - ReactGenericBatching.batchedUpdates(runEventInBatch, event);
1074 -}
1075 -
1076 -function runEventInBatch(event) {
1077 - EventPluginHub.enqueueEvents(event);
1078 - EventPluginHub.processEventQueue(false);
1079 -}
1080 -
1081 -function startWatchingForChangeEventIE8(target, targetInst) {
1082 - activeElement = target;
1083 - activeElementInst = targetInst;
1084 - activeElement.attachEvent('onchange', manualDispatchChangeEvent);
1085 -}
1086 -
1087 -function stopWatchingForChangeEventIE8() {
1088 - if (!activeElement) {
1089 - return;
1090 - }
1091 - activeElement.detachEvent('onchange', manualDispatchChangeEvent);
1092 - activeElement = null;
1093 - activeElementInst = null;
1094 -}
1095 -
1096 -function getInstIfValueChanged(targetInst) {
1097 - if (inputValueTracking.updateValueIfChanged(targetInst)) {
1098 - return targetInst;
1099 - }
1100 -}
1101 -
1102 -function getTargetInstForChangeEvent(topLevelType, targetInst) {
1103 - if (topLevelType === 'topChange') {
1104 - return targetInst;
1105 - }
1106 -}
1107 -
1108 -function handleEventsForChangeEventIE8(topLevelType, target, targetInst) {
1109 - if (topLevelType === 'topFocus') {
1110 - // stopWatching() should be a noop here but we call it just in case we
1111 - // missed a blur event somehow.
1112 - stopWatchingForChangeEventIE8();
1113 - startWatchingForChangeEventIE8(target, targetInst);
1114 - } else if (topLevelType === 'topBlur') {
1115 - stopWatchingForChangeEventIE8();
1116 - }
1117 -}
1118 -
1119 -/**
1120 - * SECTION: handle `input` event
1121 - */
1122 -var isInputEventSupported = false;
1123 -if (ExecutionEnvironment.canUseDOM) {
1124 - // IE9 claims to support the input event but fails to trigger it when
1125 - // deleting text, so we ignore its input events.
1126 - isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);
1127 -}
1128 -
1129 -/**
1130 - * (For IE <=9) Starts tracking propertychange events on the passed-in element
1131 - * and override the value property so that we can distinguish user events from
1132 - * value changes in JS.
1133 - */
1134 -function startWatchingForValueChange(target, targetInst) {
1135 - activeElement = target;
1136 - activeElementInst = targetInst;
1137 - activeElement.attachEvent('onpropertychange', handlePropertyChange);
1138 -}
1139 -
1140 -/**
1141 - * (For IE <=9) Removes the event listeners from the currently-tracked element,
1142 - * if any exists.
1143 - */
1144 -function stopWatchingForValueChange() {
1145 - if (!activeElement) {
1146 - return;
1147 - }
1148 - activeElement.detachEvent('onpropertychange', handlePropertyChange);
1149 - activeElement = null;
1150 - activeElementInst = null;
1151 -}
1152 -
1153 -/**
1154 - * (For IE <=9) Handles a propertychange event, sending a `change` event if
1155 - * the value of the active element has changed.
1156 - */
1157 -function handlePropertyChange(nativeEvent) {
1158 - if (nativeEvent.propertyName !== 'value') {
1159 - return;
1160 - }
1161 - if (getInstIfValueChanged(activeElementInst)) {
1162 - manualDispatchChangeEvent(nativeEvent);
1163 - }
1164 -}
1165 -
1166 -function handleEventsForInputEventPolyfill(topLevelType, target, targetInst) {
1167 - if (topLevelType === 'topFocus') {
1168 - // In IE8, we can capture almost all .value changes by adding a
1169 - // propertychange handler and looking for events with propertyName
1170 - // equal to 'value'
1171 - // In IE9, propertychange fires for most input events but is buggy and
1172 - // doesn't fire when text is deleted, but conveniently, selectionchange
1173 - // appears to fire in all of the remaining cases so we catch those and
1174 - // forward the event if the value has changed
1175 - // In either case, we don't want to call the event handler if the value
1176 - // is changed from JS so we redefine a setter for `.value` that updates
1177 - // our activeElementValue variable, allowing us to ignore those changes
1178 - //
1179 - // stopWatching() should be a noop here but we call it just in case we
1180 - // missed a blur event somehow.
1181 - stopWatchingForValueChange();
1182 - startWatchingForValueChange(target, targetInst);
1183 - } else if (topLevelType === 'topBlur') {
1184 - stopWatchingForValueChange();
1185 - }
1186 -}
1187 -
1188 -// For IE8 and IE9.
1189 -function getTargetInstForInputEventPolyfill(topLevelType, targetInst) {
1190 - if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {
1191 - // On the selectionchange event, the target is just document which isn't
1192 - // helpful for us so just check activeElement instead.
1193 - //
1194 - // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
1195 - // propertychange on the first input event after setting `value` from a
1196 - // script and fires only keydown, keypress, keyup. Catching keyup usually
1197 - // gets it and catching keydown lets us fire an event for the first
1198 - // keystroke if user does a key repeat (it'll be a little delayed: right
1199 - // before the second keystroke). Other input methods (e.g., paste) seem to
1200 - // fire selectionchange normally.
1201 - return getInstIfValueChanged(activeElementInst);
1202 - }
1203 -}
1204 -
1205 -/**
1206 - * SECTION: handle `click` event
1207 - */
1208 -function shouldUseClickEvent(elem) {
1209 - // Use the `click` event to detect changes to checkbox and radio inputs.
1210 - // This approach works across all browsers, whereas `change` does not fire
1211 - // until `blur` in IE8.
1212 - var nodeName = elem.nodeName;
1213 - return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');
1214 -}
1215 -
1216 -function getTargetInstForClickEvent(topLevelType, targetInst) {
1217 - if (topLevelType === 'topClick') {
1218 - return getInstIfValueChanged(targetInst);
1219 - }
1220 -}
1221 -
1222 -function getTargetInstForInputOrChangeEvent(topLevelType, targetInst) {
1223 - if (topLevelType === 'topInput' || topLevelType === 'topChange') {
1224 - return getInstIfValueChanged(targetInst);
1225 - }
1226 -}
1227 -
1228 -function handleControlledInputBlur(inst, node) {
1229 - // Fiber and ReactDOM keep wrapper state in separate places
1230 - var state = inst._wrapperState || node._wrapperState;
1231 -
1232 - if (!state || !state.controlled || node.type !== 'number') {
1233 - return;
1234 - }
1235 -
1236 - // If controlled, assign the value attribute to the current value on blur
1237 - var value = '' + node.value;
1238 - if (node.getAttribute('value') !== value) {
1239 - node.setAttribute('value', value);
1240 - }
1241 -}
1242 -
1243 -/**
1244 - * This plugin creates an `onChange` event that normalizes change events
1245 - * across form elements. This event fires at a time when it's possible to
1246 - * change the element's value without seeing a flicker.
1247 - *
1248 - * Supported elements are:
1249 - * - input (see `isTextInputElement`)
1250 - * - textarea
1251 - * - select
1252 - */
1253 -var ChangeEventPlugin = {
1254 -
1255 - eventTypes: eventTypes,
1256 -
1257 - _isInputEventSupported: isInputEventSupported,
1258 -
1259 - extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
1260 - var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;
1261 -
1262 - var getTargetInstFunc, handleEventFunc;
1263 - if (shouldUseChangeEvent(targetNode)) {
1264 - if (doesChangeEventBubble) {
1265 - getTargetInstFunc = getTargetInstForChangeEvent;
1266 - } else {
1267 - handleEventFunc = handleEventsForChangeEventIE8;
1268 - }
1269 - } else if (isTextInputElement(targetNode)) {
1270 - if (isInputEventSupported) {
1271 - getTargetInstFunc = getTargetInstForInputOrChangeEvent;
1272 - } else {
1273 - getTargetInstFunc = getTargetInstForInputEventPolyfill;
1274 - handleEventFunc = handleEventsForInputEventPolyfill;
1275 - }
1276 - } else if (shouldUseClickEvent(targetNode)) {
1277 - getTargetInstFunc = getTargetInstForClickEvent;
1278 - }
1279 -
1280 - if (getTargetInstFunc) {
1281 - var inst = getTargetInstFunc(topLevelType, targetInst);
1282 - if (inst) {
1283 - var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget);
1284 - return event;
1285 - }
1286 - }
1287 -
1288 - if (handleEventFunc) {
1289 - handleEventFunc(topLevelType, targetNode, targetInst);
1290 - }
1291 -
1292 - // When blurring, set the value attribute for number inputs
1293 - if (topLevelType === 'topBlur') {
1294 - handleControlledInputBlur(targetInst, targetNode);
1295 - }
1296 - }
1297 -
1298 -};
1299 -
1300 -module.exports = ChangeEventPlugin;
1301 -},{"121":121,"128":128,"130":130,"131":131,"143":143,"17":17,"20":20,"30":30,"35":35,"62":62,"96":96}],8:[function(_dereq_,module,exports){
1302 -/**
1303 - * Copyright 2013-present, Facebook, Inc.
1304 - * All rights reserved.
1305 - *
1306 - * This source code is licensed under the BSD-style license found in the
1307 - * LICENSE file in the root directory of this source tree. An additional grant
1308 - * of patent rights can be found in the PATENTS file in the same directory.
1309 - *
1310 - */
1311 -
1312 -'use strict';
1313 -
1314 -var DOMLazyTree = _dereq_(10);
1315 -var Danger = _dereq_(14);
1316 -var ReactDOMComponentTree = _dereq_(35);
1317 -var ReactInstrumentation = _dereq_(67);
1318 -
1319 -var createMicrosoftUnsafeLocalFunction = _dereq_(110);
1320 -var setInnerHTML = _dereq_(134);
1321 -var setTextContent = _dereq_(135);
1322 -
1323 -function getNodeAfter(parentNode, node) {
1324 - // Special case for text components, which return [open, close] comments
1325 - // from getHostNode.
1326 - if (Array.isArray(node)) {
1327 - node = node[1];
1328 - }
1329 - return node ? node.nextSibling : parentNode.firstChild;
1330 -}
1331 -
1332 -/**
1333 - * Inserts `childNode` as a child of `parentNode` at the `index`.
1334 - *
1335 - * @param {DOMElement} parentNode Parent node in which to insert.
1336 - * @param {DOMElement} childNode Child node to insert.
1337 - * @param {number} index Index at which to insert the child.
1338 - * @internal
1339 - */
1340 -var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {
1341 - // We rely exclusively on `insertBefore(node, null)` instead of also using
1342 - // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so
1343 - // we are careful to use `null`.)
1344 - parentNode.insertBefore(childNode, referenceNode);
1345 -});
1346 -
1347 -function insertLazyTreeChildAt(parentNode, childTree, referenceNode) {
1348 - DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);
1349 -}
1350 -
1351 -function moveChild(parentNode, childNode, referenceNode) {
1352 - if (Array.isArray(childNode)) {
1353 - moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);
1354 - } else {
1355 - insertChildAt(parentNode, childNode, referenceNode);
1356 - }
1357 -}
1358 -
1359 -function removeChild(parentNode, childNode) {
1360 - if (Array.isArray(childNode)) {
1361 - var closingComment = childNode[1];
1362 - childNode = childNode[0];
1363 - removeDelimitedText(parentNode, childNode, closingComment);
1364 - parentNode.removeChild(closingComment);
1365 - }
1366 - parentNode.removeChild(childNode);
1367 -}
1368 -
1369 -function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {
1370 - var node = openingComment;
1371 - while (true) {
1372 - var nextNode = node.nextSibling;
1373 - insertChildAt(parentNode, node, referenceNode);
1374 - if (node === closingComment) {
1375 - break;
1376 - }
1377 - node = nextNode;
1378 - }
1379 -}
1380 -
1381 -function removeDelimitedText(parentNode, startNode, closingComment) {
1382 - while (true) {
1383 - var node = startNode.nextSibling;
1384 - if (node === closingComment) {
1385 - // The closing comment is removed by ReactMultiChild.
1386 - break;
1387 - } else {
1388 - parentNode.removeChild(node);
1389 - }
1390 - }
1391 -}
1392 -
1393 -function replaceDelimitedText(openingComment, closingComment, stringText) {
1394 - var parentNode = openingComment.parentNode;
1395 - var nodeAfterComment = openingComment.nextSibling;
1396 - if (nodeAfterComment === closingComment) {
1397 - // There are no text nodes between the opening and closing comments; insert
1398 - // a new one if stringText isn't empty.
1399 - if (stringText) {
1400 - insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);
1401 - }
1402 - } else {
1403 - if (stringText) {
1404 - // Set the text content of the first node after the opening comment, and
1405 - // remove all following nodes up until the closing comment.
1406 - setTextContent(nodeAfterComment, stringText);
1407 - removeDelimitedText(parentNode, nodeAfterComment, closingComment);
1408 - } else {
1409 - removeDelimitedText(parentNode, openingComment, closingComment);
1410 - }
1411 - }
1412 -
1413 - if ("development" !== 'production') {
1414 - ReactInstrumentation.debugTool.onHostOperation({
1415 - instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,
1416 - type: 'replace text',
1417 - payload: stringText
1418 - });
1419 - }
1420 -}
1421 -
1422 -var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;
1423 -if ("development" !== 'production') {
1424 - dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {
1425 - Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);
1426 - if (prevInstance._debugID !== 0) {
1427 - ReactInstrumentation.debugTool.onHostOperation({
1428 - instanceID: prevInstance._debugID,
1429 - type: 'replace with',
1430 - payload: markup.toString()
1431 - });
1432 - } else {
1433 - var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);
1434 - if (nextInstance._debugID !== 0) {
1435 - ReactInstrumentation.debugTool.onHostOperation({
1436 - instanceID: nextInstance._debugID,
1437 - type: 'mount',
1438 - payload: markup.toString()
1439 - });
1440 - }
1441 - }
1442 - };
1443 -}
1444 -
1445 -/**
1446 - * Operations for updating with DOM children.
1447 - */
1448 -var DOMChildrenOperations = {
1449 -
1450 - dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,
1451 -
1452 - replaceDelimitedText: replaceDelimitedText,
1453 -
1454 - /**
1455 - * Updates a component's children by processing a series of updates. The
1456 - * update configurations are each expected to have a `parentNode` property.
1457 - *
1458 - * @param {array<object>} updates List of update configurations.
1459 - * @internal
1460 - */
1461 - processUpdates: function (parentNode, updates) {
1462 - if ("development" !== 'production') {
1463 - var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;
1464 - }
1465 -
1466 - for (var k = 0; k < updates.length; k++) {
1467 - var update = updates[k];
1468 - switch (update.type) {
1469 - case 'INSERT_MARKUP':
1470 - insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));
1471 - if ("development" !== 'production') {
1472 - ReactInstrumentation.debugTool.onHostOperation({
1473 - instanceID: parentNodeDebugID,
1474 - type: 'insert child',
1475 - payload: { toIndex: update.toIndex, content: update.content.toString() }
1476 - });
1477 - }
1478 - break;
1479 - case 'MOVE_EXISTING':
1480 - moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));
1481 - if ("development" !== 'production') {
1482 - ReactInstrumentation.debugTool.onHostOperation({
1483 - instanceID: parentNodeDebugID,
1484 - type: 'move child',
1485 - payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }
1486 - });
1487 - }
1488 - break;
1489 - case 'SET_MARKUP':
1490 - setInnerHTML(parentNode, update.content);
1491 - if ("development" !== 'production') {
1492 - ReactInstrumentation.debugTool.onHostOperation({
1493 - instanceID: parentNodeDebugID,
1494 - type: 'replace children',
1495 - payload: update.content.toString()
1496 - });
1497 - }
1498 - break;
1499 - case 'TEXT_CONTENT':
1500 - setTextContent(parentNode, update.content);
1501 - if ("development" !== 'production') {
1502 - ReactInstrumentation.debugTool.onHostOperation({
1503 - instanceID: parentNodeDebugID,
1504 - type: 'replace text',
1505 - payload: update.content.toString()
1506 - });
1507 - }
1508 - break;
1509 - case 'REMOVE_NODE':
1510 - removeChild(parentNode, update.fromNode);
1511 - if ("development" !== 'production') {
1512 - ReactInstrumentation.debugTool.onHostOperation({
1513 - instanceID: parentNodeDebugID,
1514 - type: 'remove child',
1515 - payload: { fromIndex: update.fromIndex }
1516 - });
1517 - }
1518 - break;
1519 - }
1520 - }
1521 - }
1522 -
1523 -};
1524 -
1525 -module.exports = DOMChildrenOperations;
1526 -},{"10":10,"110":110,"134":134,"135":135,"14":14,"35":35,"67":67}],9:[function(_dereq_,module,exports){
1527 -/**
1528 - * Copyright 2013-present, Facebook, Inc.
1529 - * All rights reserved.
1530 - *
1531 - * This source code is licensed under the BSD-style license found in the
1532 - * LICENSE file in the root directory of this source tree. An additional grant
1533 - * of patent rights can be found in the PATENTS file in the same directory.
1534 - *
1535 - */
1536 -
1537 -'use strict';
1538 -
1539 -/**
1540 - * Module that is injectable into `EventPluginHub`, that specifies a
1541 - * deterministic ordering of `EventPlugin`s. A convenient way to reason about
1542 - * plugins, without having to package every one of them. This is better than
1543 - * having plugins be ordered in the same order that they are injected because
1544 - * that ordering would be influenced by the packaging order.
1545 - * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that
1546 - * preventing default on events is convenient in `SimpleEventPlugin` handlers.
1547 - */
1548 -
1549 -var DOMEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];
1550 -
1551 -module.exports = DOMEventPluginOrder;
1552 -},{}],10:[function(_dereq_,module,exports){
1553 -/**
1554 - * Copyright 2015-present, Facebook, Inc.
1555 - * All rights reserved.
1556 - *
1557 - * This source code is licensed under the BSD-style license found in the
1558 - * LICENSE file in the root directory of this source tree. An additional grant
1559 - * of patent rights can be found in the PATENTS file in the same directory.
1560 - *
1561 - */
1562 -
1563 -'use strict';
1564 -
1565 -var DOMNamespaces = _dereq_(11);
1566 -var setInnerHTML = _dereq_(134);
1567 -
1568 -var createMicrosoftUnsafeLocalFunction = _dereq_(110);
1569 -var setTextContent = _dereq_(135);
1570 -
1571 -var ELEMENT_NODE_TYPE = 1;
1572 -var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
1573 -
1574 -/**
1575 - * In IE (8-11) and Edge, appending nodes with no children is dramatically
1576 - * faster than appending a full subtree, so we essentially queue up the
1577 - * .appendChild calls here and apply them so each node is added to its parent
1578 - * before any children are added.
1579 - *
1580 - * In other browsers, doing so is slower or neutral compared to the other order
1581 - * (in Firefox, twice as slow) so we only do this inversion in IE.
1582 - *
1583 - * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.
1584 - */
1585 -var enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\bEdge\/\d/.test(navigator.userAgent);
1586 -
1587 -function insertTreeChildren(tree) {
1588 - if (!enableLazy) {
1589 - return;
1590 - }
1591 - var node = tree.node;
1592 - var children = tree.children;
1593 - if (children.length) {
1594 - for (var i = 0; i < children.length; i++) {
1595 - insertTreeBefore(node, children[i], null);
1596 - }
1597 - } else if (tree.html != null) {
1598 - setInnerHTML(node, tree.html);
1599 - } else if (tree.text != null) {
1600 - setTextContent(node, tree.text);
1601 - }
1602 -}
1603 -
1604 -var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {
1605 - // DocumentFragments aren't actually part of the DOM after insertion so
1606 - // appending children won't update the DOM. We need to ensure the fragment
1607 - // is properly populated first, breaking out of our lazy approach for just
1608 - // this level. Also, some <object> plugins (like Flash Player) will read
1609 - // <param> nodes immediately upon insertion into the DOM, so <object>
1610 - // must also be populated prior to insertion into the DOM.
1611 - if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {
1612 - insertTreeChildren(tree);
1613 - parentNode.insertBefore(tree.node, referenceNode);
1614 - } else {
1615 - parentNode.insertBefore(tree.node, referenceNode);
1616 - insertTreeChildren(tree);
1617 - }
1618 -});
1619 -
1620 -function replaceChildWithTree(oldNode, newTree) {
1621 - oldNode.parentNode.replaceChild(newTree.node, oldNode);
1622 - insertTreeChildren(newTree);
1623 -}
1624 -
1625 -function queueChild(parentTree, childTree) {
1626 - if (enableLazy) {
1627 - parentTree.children.push(childTree);
1628 - } else {
1629 - parentTree.node.appendChild(childTree.node);
1630 - }
1631 -}
1632 -
1633 -function queueHTML(tree, html) {
1634 - if (enableLazy) {
1635 - tree.html = html;
1636 - } else {
1637 - setInnerHTML(tree.node, html);
1638 - }
1639 -}
1640 -
1641 -function queueText(tree, text) {
1642 - if (enableLazy) {
1643 - tree.text = text;
1644 - } else {
1645 - setTextContent(tree.node, text);
1646 - }
1647 -}
1648 -
1649 -function toString() {
1650 - return this.node.nodeName;
1651 -}
1652 -
1653 -function DOMLazyTree(node) {
1654 - return {
1655 - node: node,
1656 - children: [],
1657 - html: null,
1658 - text: null,
1659 - toString: toString
1660 - };
1661 -}
1662 -
1663 -DOMLazyTree.insertTreeBefore = insertTreeBefore;
1664 -DOMLazyTree.replaceChildWithTree = replaceChildWithTree;
1665 -DOMLazyTree.queueChild = queueChild;
1666 -DOMLazyTree.queueHTML = queueHTML;
1667 -DOMLazyTree.queueText = queueText;
1668 -
1669 -module.exports = DOMLazyTree;
1670 -},{"11":11,"110":110,"134":134,"135":135}],11:[function(_dereq_,module,exports){
1671 -/**
1672 - * Copyright 2013-present, Facebook, Inc.
1673 - * All rights reserved.
1674 - *
1675 - * This source code is licensed under the BSD-style license found in the
1676 - * LICENSE file in the root directory of this source tree. An additional grant
1677 - * of patent rights can be found in the PATENTS file in the same directory.
1678 - *
1679 - */
1680 -
1681 -'use strict';
1682 -
1683 -var DOMNamespaces = {
1684 - html: 'http://www.w3.org/1999/xhtml',
1685 - mathml: 'http://www.w3.org/1998/Math/MathML',
1686 - svg: 'http://www.w3.org/2000/svg'
1687 -};
1688 -
1689 -module.exports = DOMNamespaces;
1690 -},{}],12:[function(_dereq_,module,exports){
1691 -/**
1692 - * Copyright 2013-present, Facebook, Inc.
1693 - * All rights reserved.
1694 - *
1695 - * This source code is licensed under the BSD-style license found in the
1696 - * LICENSE file in the root directory of this source tree. An additional grant
1697 - * of patent rights can be found in the PATENTS file in the same directory.
1698 - *
1699 - */
1700 -
1701 -'use strict';
1702 -
1703 -var _prodInvariant = _dereq_(133);
1704 -
1705 -var invariant = _dereq_(157);
1706 -
1707 -function checkMask(value, bitmask) {
1708 - return (value & bitmask) === bitmask;
1709 -}
1710 -
1711 -var DOMPropertyInjection = {
1712 - /**
1713 - * Mapping from normalized, camelcased property names to a configuration that
1714 - * specifies how the associated DOM property should be accessed or rendered.
1715 - */
1716 - MUST_USE_PROPERTY: 0x1,
1717 - HAS_BOOLEAN_VALUE: 0x4,
1718 - HAS_NUMERIC_VALUE: 0x8,
1719 - HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,
1720 - HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,
1721 -
1722 - /**
1723 - * Inject some specialized knowledge about the DOM. This takes a config object
1724 - * with the following properties:
1725 - *
1726 - * isCustomAttribute: function that given an attribute name will return true
1727 - * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*
1728 - * attributes where it's impossible to enumerate all of the possible
1729 - * attribute names,
1730 - *
1731 - * Properties: object mapping DOM property name to one of the
1732 - * DOMPropertyInjection constants or null. If your attribute isn't in here,
1733 - * it won't get written to the DOM.
1734 - *
1735 - * DOMAttributeNames: object mapping React attribute name to the DOM
1736 - * attribute name. Attribute names not specified use the **lowercase**
1737 - * normalized name.
1738 - *
1739 - * DOMAttributeNamespaces: object mapping React attribute name to the DOM
1740 - * attribute namespace URL. (Attribute names not specified use no namespace.)
1741 - *
1742 - * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.
1743 - * Property names not specified use the normalized name.
1744 - *
1745 - * DOMMutationMethods: Properties that require special mutation methods. If
1746 - * `value` is undefined, the mutation method should unset the property.
1747 - *
1748 - * @param {object} domPropertyConfig the config as described above.
1749 - */
1750 - injectDOMPropertyConfig: function (domPropertyConfig) {
1751 - var Injection = DOMPropertyInjection;
1752 - var Properties = domPropertyConfig.Properties || {};
1753 - var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};
1754 - var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};
1755 - var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};
1756 - var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};
1757 -
1758 - if (domPropertyConfig.isCustomAttribute) {
1759 - DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);
1760 - }
1761 -
1762 - for (var propName in Properties) {
1763 - !!DOMProperty.properties.hasOwnProperty(propName) ? "development" !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\'re trying to inject DOM property \'%s\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;
1764 -
1765 - var lowerCased = propName.toLowerCase();
1766 - var propConfig = Properties[propName];
1767 -
1768 - var propertyInfo = {
1769 - attributeName: lowerCased,
1770 - attributeNamespace: null,
1771 - propertyName: propName,
1772 - mutationMethod: null,
1773 -
1774 - mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),
1775 - hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),
1776 - hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),
1777 - hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),
1778 - hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)
1779 - };
1780 - !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? "development" !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;
1781 -
1782 - if ("development" !== 'production') {
1783 - DOMProperty.getPossibleStandardName[lowerCased] = propName;
1784 - }
1785 -
1786 - if (DOMAttributeNames.hasOwnProperty(propName)) {
1787 - var attributeName = DOMAttributeNames[propName];
1788 - propertyInfo.attributeName = attributeName;
1789 - if ("development" !== 'production') {
1790 - DOMProperty.getPossibleStandardName[attributeName] = propName;
1791 - }
1792 - }
1793 -
1794 - if (DOMAttributeNamespaces.hasOwnProperty(propName)) {
1795 - propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];
1796 - }
1797 -
1798 - if (DOMPropertyNames.hasOwnProperty(propName)) {
1799 - propertyInfo.propertyName = DOMPropertyNames[propName];
1800 - }
1801 -
1802 - if (DOMMutationMethods.hasOwnProperty(propName)) {
1803 - propertyInfo.mutationMethod = DOMMutationMethods[propName];
1804 - }
1805 -
1806 - DOMProperty.properties[propName] = propertyInfo;
1807 - }
1808 - }
1809 -};
1810 -
1811 -/* eslint-disable max-len */
1812 -var ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD';
1813 -/* eslint-enable max-len */
1814 -
1815 -/**
1816 - * DOMProperty exports lookup objects that can be used like functions:
1817 - *
1818 - * > DOMProperty.isValid['id']
1819 - * true
1820 - * > DOMProperty.isValid['foobar']
1821 - * undefined
1822 - *
1823 - * Although this may be confusing, it performs better in general.
1824 - *
1825 - * @see http://jsperf.com/key-exists
1826 - * @see http://jsperf.com/key-missing
1827 - */
1828 -var DOMProperty = {
1829 -
1830 - ID_ATTRIBUTE_NAME: 'data-reactid',
1831 - ROOT_ATTRIBUTE_NAME: 'data-reactroot',
1832 -
1833 - ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,
1834 - ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040',
1835 -
1836 - /**
1837 - * Map from property "standard name" to an object with info about how to set
1838 - * the property in the DOM. Each object contains:
1839 - *
1840 - * attributeName:
1841 - * Used when rendering markup or with `*Attribute()`.
1842 - * attributeNamespace
1843 - * propertyName:
1844 - * Used on DOM node instances. (This includes properties that mutate due to
1845 - * external factors.)
1846 - * mutationMethod:
1847 - * If non-null, used instead of the property or `setAttribute()` after
1848 - * initial render.
1849 - * mustUseProperty:
1850 - * Whether the property must be accessed and mutated as an object property.
1851 - * hasBooleanValue:
1852 - * Whether the property should be removed when set to a falsey value.
1853 - * hasNumericValue:
1854 - * Whether the property must be numeric or parse as a numeric and should be
1855 - * removed when set to a falsey value.
1856 - * hasPositiveNumericValue:
1857 - * Whether the property must be positive numeric or parse as a positive
1858 - * numeric and should be removed when set to a falsey value.
1859 - * hasOverloadedBooleanValue:
1860 - * Whether the property can be used as a flag as well as with a value.
1861 - * Removed when strictly equal to false; present without a value when
1862 - * strictly equal to true; present with a value otherwise.
1863 - */
1864 - properties: {},
1865 -
1866 - /**
1867 - * Mapping from lowercase property names to the properly cased version, used
1868 - * to warn in the case of missing properties. Available only in __DEV__.
1869 - *
1870 - * autofocus is predefined, because adding it to the property whitelist
1871 - * causes unintended side effects.
1872 - *
1873 - * @type {Object}
1874 - */
1875 - getPossibleStandardName: "development" !== 'production' ? { autofocus: 'autoFocus' } : null,
1876 -
1877 - /**
1878 - * All of the isCustomAttribute() functions that have been injected.
1879 - */
1880 - _isCustomAttributeFunctions: [],
1881 -
1882 - /**
1883 - * Checks whether a property name is a custom attribute.
1884 - * @method
1885 - */
1886 - isCustomAttribute: function (attributeName) {
1887 - for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {
1888 - var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];
1889 - if (isCustomAttributeFn(attributeName)) {
1890 - return true;
1891 - }
1892 - }
1893 - return false;
1894 - },
1895 -
1896 - injection: DOMPropertyInjection
1897 -};
1898 -
1899 -module.exports = DOMProperty;
1900 -},{"133":133,"157":157}],13:[function(_dereq_,module,exports){
1901 -/**
1902 - * Copyright 2013-present, Facebook, Inc.
1903 - * All rights reserved.
1904 - *
1905 - * This source code is licensed under the BSD-style license found in the
1906 - * LICENSE file in the root directory of this source tree. An additional grant
1907 - * of patent rights can be found in the PATENTS file in the same directory.
1908 - *
1909 - */
1910 -
1911 -'use strict';
1912 -
1913 -var DOMProperty = _dereq_(12);
1914 -var ReactDOMComponentTree = _dereq_(35);
1915 -var ReactInstrumentation = _dereq_(67);
1916 -
1917 -var quoteAttributeValueForBrowser = _dereq_(132);
1918 -var warning = _dereq_(164);
1919 -
1920 -var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
1921 -var illegalAttributeNameCache = {};
1922 -var validatedAttributeNameCache = {};
1923 -
1924 -function isAttributeNameSafe(attributeName) {
1925 - if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {
1926 - return true;
1927 - }
1928 - if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {
1929 - return false;
1930 - }
1931 - if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
1932 - validatedAttributeNameCache[attributeName] = true;
1933 - return true;
1934 - }
1935 - illegalAttributeNameCache[attributeName] = true;
1936 - "development" !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;
1937 - return false;
1938 -}
1939 -
1940 -function shouldIgnoreValue(propertyInfo, value) {
1941 - return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;
1942 -}
1943 -
1944 -/**
1945 - * Operations for dealing with DOM properties.
1946 - */
1947 -var DOMPropertyOperations = {
1948 -
1949 - /**
1950 - * Creates markup for the ID property.
1951 - *
1952 - * @param {string} id Unescaped ID.
1953 - * @return {string} Markup string.
1954 - */
1955 - createMarkupForID: function (id) {
1956 - return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);
1957 - },
1958 -
1959 - setAttributeForID: function (node, id) {
1960 - node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);
1961 - },
1962 -
1963 - createMarkupForRoot: function () {
1964 - return DOMProperty.ROOT_ATTRIBUTE_NAME + '=""';
1965 - },
1966 -
1967 - setAttributeForRoot: function (node) {
1968 - node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');
1969 - },
1970 -
1971 - /**
1972 - * Creates markup for a property.
1973 - *
1974 - * @param {string} name
1975 - * @param {*} value
1976 - * @return {?string} Markup string, or null if the property was invalid.
1977 - */
1978 - createMarkupForProperty: function (name, value) {
1979 - var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
1980 - if (propertyInfo) {
1981 - if (shouldIgnoreValue(propertyInfo, value)) {
1982 - return '';
1983 - }
1984 - var attributeName = propertyInfo.attributeName;
1985 - if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
1986 - return attributeName + '=""';
1987 - }
1988 - return attributeName + '=' + quoteAttributeValueForBrowser(value);
1989 - } else if (DOMProperty.isCustomAttribute(name)) {
1990 - if (value == null) {
1991 - return '';
1992 - }
1993 - return name + '=' + quoteAttributeValueForBrowser(value);
1994 - }
1995 - return null;
1996 - },
1997 -
1998 - /**
1999 - * Creates markup for a custom property.
2000 - *
2001 - * @param {string} name
2002 - * @param {*} value
2003 - * @return {string} Markup string, or empty string if the property was invalid.
2004 - */
2005 - createMarkupForCustomAttribute: function (name, value) {
2006 - if (!isAttributeNameSafe(name) || value == null) {
2007 - return '';
2008 - }
2009 - return name + '=' + quoteAttributeValueForBrowser(value);
2010 - },
2011 -
2012 - /**
2013 - * Sets the value for a property on a node.
2014 - *
2015 - * @param {DOMElement} node
2016 - * @param {string} name
2017 - * @param {*} value
2018 - */
2019 - setValueForProperty: function (node, name, value) {
2020 - var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
2021 - if (propertyInfo) {
2022 - var mutationMethod = propertyInfo.mutationMethod;
2023 - if (mutationMethod) {
2024 - mutationMethod(node, value);
2025 - } else if (shouldIgnoreValue(propertyInfo, value)) {
2026 - this.deleteValueForProperty(node, name);
2027 - return;
2028 - } else if (propertyInfo.mustUseProperty) {
2029 - // Contrary to `setAttribute`, object properties are properly
2030 - // `toString`ed by IE8/9.
2031 - node[propertyInfo.propertyName] = value;
2032 - } else {
2033 - var attributeName = propertyInfo.attributeName;
2034 - var namespace = propertyInfo.attributeNamespace;
2035 - // `setAttribute` with objects becomes only `[object]` in IE8/9,
2036 - // ('' + value) makes it output the correct toString()-value.
2037 - if (namespace) {
2038 - node.setAttributeNS(namespace, attributeName, '' + value);
2039 - } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
2040 - node.setAttribute(attributeName, '');
2041 - } else {
2042 - node.setAttribute(attributeName, '' + value);
2043 - }
2044 - }
2045 - } else if (DOMProperty.isCustomAttribute(name)) {
2046 - DOMPropertyOperations.setValueForAttribute(node, name, value);
2047 - return;
2048 - }
2049 -
2050 - if ("development" !== 'production') {
2051 - var payload = {};
2052 - payload[name] = value;
2053 - ReactInstrumentation.debugTool.onHostOperation({
2054 - instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
2055 - type: 'update attribute',
2056 - payload: payload
2057 - });
2058 - }
2059 - },
2060 -
2061 - setValueForAttribute: function (node, name, value) {
2062 - if (!isAttributeNameSafe(name)) {
2063 - return;
2064 - }
2065 - if (value == null) {
2066 - node.removeAttribute(name);
2067 - } else {
2068 - node.setAttribute(name, '' + value);
2069 - }
2070 -
2071 - if ("development" !== 'production') {
2072 - var payload = {};
2073 - payload[name] = value;
2074 - ReactInstrumentation.debugTool.onHostOperation({
2075 - instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
2076 - type: 'update attribute',
2077 - payload: payload
2078 - });
2079 - }
2080 - },
2081 -
2082 - /**
2083 - * Deletes an attributes from a node.
2084 - *
2085 - * @param {DOMElement} node
2086 - * @param {string} name
2087 - */
2088 - deleteValueForAttribute: function (node, name) {
2089 - node.removeAttribute(name);
2090 - if ("development" !== 'production') {
2091 - ReactInstrumentation.debugTool.onHostOperation({
2092 - instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
2093 - type: 'remove attribute',
2094 - payload: name
2095 - });
2096 - }
2097 - },
2098 -
2099 - /**
2100 - * Deletes the value for a property on a node.
2101 - *
2102 - * @param {DOMElement} node
2103 - * @param {string} name
2104 - */
2105 - deleteValueForProperty: function (node, name) {
2106 - var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
2107 - if (propertyInfo) {
2108 - var mutationMethod = propertyInfo.mutationMethod;
2109 - if (mutationMethod) {
2110 - mutationMethod(node, undefined);
2111 - } else if (propertyInfo.mustUseProperty) {
2112 - var propName = propertyInfo.propertyName;
2113 - if (propertyInfo.hasBooleanValue) {
2114 - node[propName] = false;
2115 - } else {
2116 - node[propName] = '';
2117 - }
2118 - } else {
2119 - node.removeAttribute(propertyInfo.attributeName);
2120 - }
2121 - } else if (DOMProperty.isCustomAttribute(name)) {
2122 - node.removeAttribute(name);
2123 - }
2124 -
2125 - if ("development" !== 'production') {
2126 - ReactInstrumentation.debugTool.onHostOperation({
2127 - instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
2128 - type: 'remove attribute',
2129 - payload: name
2130 - });
2131 - }
2132 - }
2133 -
2134 -};
2135 -
2136 -module.exports = DOMPropertyOperations;
2137 -},{"12":12,"132":132,"164":164,"35":35,"67":67}],14:[function(_dereq_,module,exports){
2138 -/**
2139 - * Copyright 2013-present, Facebook, Inc.
2140 - * All rights reserved.
2141 - *
2142 - * This source code is licensed under the BSD-style license found in the
2143 - * LICENSE file in the root directory of this source tree. An additional grant
2144 - * of patent rights can be found in the PATENTS file in the same directory.
2145 - *
2146 - */
2147 -
2148 -'use strict';
2149 -
2150 -var _prodInvariant = _dereq_(133);
2151 -
2152 -var DOMLazyTree = _dereq_(10);
2153 -var ExecutionEnvironment = _dereq_(143);
2154 -
2155 -var createNodesFromMarkup = _dereq_(148);
2156 -var emptyFunction = _dereq_(149);
2157 -var invariant = _dereq_(157);
2158 -
2159 -var Danger = {
2160 -
2161 - /**
2162 - * Replaces a node with a string of markup at its current position within its
2163 - * parent. The markup must render into a single root node.
2164 - *
2165 - * @param {DOMElement} oldChild Child node to replace.
2166 - * @param {string} markup Markup to render in place of the child node.
2167 - * @internal
2168 - */
2169 - dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {
2170 - !ExecutionEnvironment.canUseDOM ? "development" !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): 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.') : _prodInvariant('56') : void 0;
2171 - !markup ? "development" !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;
2172 - !(oldChild.nodeName !== 'HTML') ? "development" !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> 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().') : _prodInvariant('58') : void 0;
2173 -
2174 - if (typeof markup === 'string') {
2175 - var newChild = createNodesFromMarkup(markup, emptyFunction)[0];
2176 - oldChild.parentNode.replaceChild(newChild, oldChild);
2177 - } else {
2178 - DOMLazyTree.replaceChildWithTree(oldChild, markup);
2179 - }
2180 - }
2181 -
2182 -};
2183 -
2184 -module.exports = Danger;
2185 -},{"10":10,"133":133,"143":143,"148":148,"149":149,"157":157}],15:[function(_dereq_,module,exports){
2186 -/**
2187 - * Copyright 2013-present, Facebook, Inc.
2188 - * All rights reserved.
2189 - *
2190 - * This source code is licensed under the BSD-style license found in the
2191 - * LICENSE file in the root directory of this source tree. An additional grant
2192 - * of patent rights can be found in the PATENTS file in the same directory.
2193 - *
2194 - */
2195 -
2196 -'use strict';
2197 -
2198 -var EventPropagators = _dereq_(20);
2199 -var ReactDOMComponentTree = _dereq_(35);
2200 -var SyntheticMouseEvent = _dereq_(100);
2201 -
2202 -var eventTypes = {
2203 - mouseEnter: {
2204 - registrationName: 'onMouseEnter',
2205 - dependencies: ['topMouseOut', 'topMouseOver']
2206 - },
2207 - mouseLeave: {
2208 - registrationName: 'onMouseLeave',
2209 - dependencies: ['topMouseOut', 'topMouseOver']
2210 - }
2211 -};
2212 -
2213 -var EnterLeaveEventPlugin = {
2214 -
2215 - eventTypes: eventTypes,
2216 -
2217 - /**
2218 - * For almost every interaction we care about, there will be both a top-level
2219 - * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that
2220 - * we do not extract duplicate events. However, moving the mouse into the
2221 - * browser from outside will not fire a `mouseout` event. In this case, we use
2222 - * the `mouseover` top-level event.
2223 - */
2224 - extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
2225 - if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {
2226 - return null;
2227 - }
2228 - if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {
2229 - // Must not be a mouse in or mouse out - ignoring.
2230 - return null;
2231 - }
2232 -
2233 - var win;
2234 - if (nativeEventTarget.window === nativeEventTarget) {
2235 - // `nativeEventTarget` is probably a window object.
2236 - win = nativeEventTarget;
2237 - } else {
2238 - // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
2239 - var doc = nativeEventTarget.ownerDocument;
2240 - if (doc) {
2241 - win = doc.defaultView || doc.parentWindow;
2242 - } else {
2243 - win = window;
2244 - }
2245 - }
2246 -
2247 - var from;
2248 - var to;
2249 - if (topLevelType === 'topMouseOut') {
2250 - from = targetInst;
2251 - var related = nativeEvent.relatedTarget || nativeEvent.toElement;
2252 - to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;
2253 - } else {
2254 - // Moving to a node from outside the window.
2255 - from = null;
2256 - to = targetInst;
2257 - }
2258 -
2259 - if (from === to) {
2260 - // Nothing pertains to our managed components.
2261 - return null;
2262 - }
2263 -
2264 - var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);
2265 - var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);
2266 -
2267 - var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);
2268 - leave.type = 'mouseleave';
2269 - leave.target = fromNode;
2270 - leave.relatedTarget = toNode;
2271 -
2272 - var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);
2273 - enter.type = 'mouseenter';
2274 - enter.target = toNode;
2275 - enter.relatedTarget = fromNode;
2276 -
2277 - EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);
2278 -
2279 - return [leave, enter];
2280 - }
2281 -
2282 -};
2283 -
2284 -module.exports = EnterLeaveEventPlugin;
2285 -},{"100":100,"20":20,"35":35}],16:[function(_dereq_,module,exports){
2286 -/**
2287 - * Copyright 2013-present, Facebook, Inc.
2288 - * All rights reserved.
2289 - *
2290 - * This source code is licensed under the BSD-style license found in the
2291 - * LICENSE file in the root directory of this source tree. An additional grant
2292 - * of patent rights can be found in the PATENTS file in the same directory.
2293 - *
2294 - */
2295 -
2296 -'use strict';
2297 -
2298 -/**
2299 - * Types of raw signals from the browser caught at the top level.
2300 - */
2301 -var topLevelTypes = {
2302 - topAbort: null,
2303 - topAnimationEnd: null,
2304 - topAnimationIteration: null,
2305 - topAnimationStart: null,
2306 - topBlur: null,
2307 - topCanPlay: null,
2308 - topCanPlayThrough: null,
2309 - topChange: null,
2310 - topClick: null,
2311 - topCompositionEnd: null,
2312 - topCompositionStart: null,
2313 - topCompositionUpdate: null,
2314 - topContextMenu: null,
2315 - topCopy: null,
2316 - topCut: null,
2317 - topDoubleClick: null,
2318 - topDrag: null,
2319 - topDragEnd: null,
2320 - topDragEnter: null,
2321 - topDragExit: null,
2322 - topDragLeave: null,
2323 - topDragOver: null,
2324 - topDragStart: null,
2325 - topDrop: null,
2326 - topDurationChange: null,
2327 - topEmptied: null,
2328 - topEncrypted: null,
2329 - topEnded: null,
2330 - topError: null,
2331 - topFocus: null,
2332 - topInput: null,
2333 - topInvalid: null,
2334 - topKeyDown: null,
2335 - topKeyPress: null,
2336 - topKeyUp: null,
2337 - topLoad: null,
2338 - topLoadedData: null,
2339 - topLoadedMetadata: null,
2340 - topLoadStart: null,
2341 - topMouseDown: null,
2342 - topMouseMove: null,
2343 - topMouseOut: null,
2344 - topMouseOver: null,
2345 - topMouseUp: null,
2346 - topPaste: null,
2347 - topPause: null,
2348 - topPlay: null,
2349 - topPlaying: null,
2350 - topProgress: null,
2351 - topRateChange: null,
2352 - topReset: null,
2353 - topScroll: null,
2354 - topSeeked: null,
2355 - topSeeking: null,
2356 - topSelectionChange: null,
2357 - topStalled: null,
2358 - topSubmit: null,
2359 - topSuspend: null,
2360 - topTextInput: null,
2361 - topTimeUpdate: null,
2362 - topTouchCancel: null,
2363 - topTouchEnd: null,
2364 - topTouchMove: null,
2365 - topTouchStart: null,
2366 - topTransitionEnd: null,
2367 - topVolumeChange: null,
2368 - topWaiting: null,
2369 - topWheel: null
2370 -};
2371 -
2372 -var EventConstants = {
2373 - topLevelTypes: topLevelTypes
2374 -};
2375 -
2376 -module.exports = EventConstants;
2377 -},{}],17:[function(_dereq_,module,exports){
2378 -/**
2379 - * Copyright 2013-present, Facebook, Inc.
2380 - * All rights reserved.
2381 - *
2382 - * This source code is licensed under the BSD-style license found in the
2383 - * LICENSE file in the root directory of this source tree. An additional grant
2384 - * of patent rights can be found in the PATENTS file in the same directory.
2385 - *
2386 - */
2387 -
2388 -'use strict';
2389 -
2390 -var _prodInvariant = _dereq_(133);
2391 -
2392 -var EventPluginRegistry = _dereq_(18);
2393 -var EventPluginUtils = _dereq_(19);
2394 -var ReactErrorUtils = _dereq_(57);
2395 -
2396 -var accumulateInto = _dereq_(107);
2397 -var forEachAccumulated = _dereq_(115);
2398 -var invariant = _dereq_(157);
2399 -
2400 -/**
2401 - * Internal queue of events that have accumulated their dispatches and are
2402 - * waiting to have their dispatches executed.
2403 - */
2404 -var eventQueue = null;
2405 -
2406 -/**
2407 - * Dispatches an event and releases it back into the pool, unless persistent.
2408 - *
2409 - * @param {?object} event Synthetic event to be dispatched.
2410 - * @param {boolean} simulated If the event is simulated (changes exn behavior)
2411 - * @private
2412 - */
2413 -var executeDispatchesAndRelease = function (event, simulated) {
2414 - if (event) {
2415 - EventPluginUtils.executeDispatchesInOrder(event, simulated);
2416 -
2417 - if (!event.isPersistent()) {
2418 - event.constructor.release(event);
2419 - }
2420 - }
2421 -};
2422 -var executeDispatchesAndReleaseSimulated = function (e) {
2423 - return executeDispatchesAndRelease(e, true);
2424 -};
2425 -var executeDispatchesAndReleaseTopLevel = function (e) {
2426 - return executeDispatchesAndRelease(e, false);
2427 -};
2428 -
2429 -function isInteractive(tag) {
2430 - return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';
2431 -}
2432 -
2433 -function shouldPreventMouseEvent(name, type, props) {
2434 - switch (name) {
2435 - case 'onClick':
2436 - case 'onClickCapture':
2437 - case 'onDoubleClick':
2438 - case 'onDoubleClickCapture':
2439 - case 'onMouseDown':
2440 - case 'onMouseDownCapture':
2441 - case 'onMouseMove':
2442 - case 'onMouseMoveCapture':
2443 - case 'onMouseUp':
2444 - case 'onMouseUpCapture':
2445 - return !!(props.disabled && isInteractive(type));
2446 - default:
2447 - return false;
2448 - }
2449 -}
2450 -
2451 -/**
2452 - * This is a unified interface for event plugins to be installed and configured.
2453 - *
2454 - * Event plugins can implement the following properties:
2455 - *
2456 - * `extractEvents` {function(string, DOMEventTarget, string, object): *}
2457 - * Required. When a top-level event is fired, this method is expected to
2458 - * extract synthetic events that will in turn be queued and dispatched.
2459 - *
2460 - * `eventTypes` {object}
2461 - * Optional, plugins that fire events must publish a mapping of registration
2462 - * names that are used to register listeners. Values of this mapping must
2463 - * be objects that contain `registrationName` or `phasedRegistrationNames`.
2464 - *
2465 - * `executeDispatch` {function(object, function, string)}
2466 - * Optional, allows plugins to override how an event gets dispatched. By
2467 - * default, the listener is simply invoked.
2468 - *
2469 - * Each plugin that is injected into `EventsPluginHub` is immediately operable.
2470 - *
2471 - * @public
2472 - */
2473 -var EventPluginHub = {
2474 -
2475 - /**
2476 - * Methods for injecting dependencies.
2477 - */
2478 - injection: {
2479 -
2480 - /**
2481 - * @param {array} InjectedEventPluginOrder
2482 - * @public
2483 - */
2484 - injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,
2485 -
2486 - /**
2487 - * @param {object} injectedNamesToPlugins Map from names to plugin modules.
2488 - */
2489 - injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName
2490 -
2491 - },
2492 -
2493 - /**
2494 - * @param {object} inst The instance, which is the source of events.
2495 - * @param {string} registrationName Name of listener (e.g. `onClick`).
2496 - * @return {?function} The stored callback.
2497 - */
2498 - getListener: function (inst, registrationName) {
2499 - var listener;
2500 -
2501 - // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not
2502 - // live here; needs to be moved to a better place soon
2503 - if (typeof inst.tag === 'number') {
2504 - var props = inst.memoizedProps;
2505 - listener = props[registrationName];
2506 - if (shouldPreventMouseEvent(registrationName, inst.type, props)) {
2507 - return null;
2508 - }
2509 - } else {
2510 - var _props = inst._currentElement.props;
2511 - listener = _props[registrationName];
2512 - if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, _props)) {
2513 - return null;
2514 - }
2515 - }
2516 -
2517 - !(!listener || typeof listener === 'function') ? "development" !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;
2518 - return listener;
2519 - },
2520 -
2521 - /**
2522 - * Allows registered plugins an opportunity to extract events from top-level
2523 - * native browser events.
2524 - *
2525 - * @return {*} An accumulation of synthetic events.
2526 - * @internal
2527 - */
2528 - extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
2529 - var events;
2530 - var plugins = EventPluginRegistry.plugins;
2531 - for (var i = 0; i < plugins.length; i++) {
2532 - // Not every plugin in the ordering may be loaded at runtime.
2533 - var possiblePlugin = plugins[i];
2534 - if (possiblePlugin) {
2535 - var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);
2536 - if (extractedEvents) {
2537 - events = accumulateInto(events, extractedEvents);
2538 - }
2539 - }
2540 - }
2541 - return events;
2542 - },
2543 -
2544 - /**
2545 - * Enqueues a synthetic event that should be dispatched when
2546 - * `processEventQueue` is invoked.
2547 - *
2548 - * @param {*} events An accumulation of synthetic events.
2549 - * @internal
2550 - */
2551 - enqueueEvents: function (events) {
2552 - if (events) {
2553 - eventQueue = accumulateInto(eventQueue, events);
2554 - }
2555 - },
2556 -
2557 - /**
2558 - * Dispatches all synthetic events on the event queue.
2559 - *
2560 - * @internal
2561 - */
2562 - processEventQueue: function (simulated) {
2563 - // Set `eventQueue` to null before processing it so that we can tell if more
2564 - // events get enqueued while processing.
2565 - var processingEventQueue = eventQueue;
2566 - eventQueue = null;
2567 - if (simulated) {
2568 - forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);
2569 - } else {
2570 - forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);
2571 - }
2572 - !!eventQueue ? "development" !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;
2573 - // This would be a good time to rethrow if any of the event handlers threw.
2574 - ReactErrorUtils.rethrowCaughtError();
2575 - }
2576 -
2577 -};
2578 -
2579 -module.exports = EventPluginHub;
2580 -},{"107":107,"115":115,"133":133,"157":157,"18":18,"19":19,"57":57}],18:[function(_dereq_,module,exports){
2581 -/**
2582 - * Copyright 2013-present, Facebook, Inc.
2583 - * All rights reserved.
2584 - *
2585 - * This source code is licensed under the BSD-style license found in the
2586 - * LICENSE file in the root directory of this source tree. An additional grant
2587 - * of patent rights can be found in the PATENTS file in the same directory.
2588 - *
2589 - *
2590 - */
2591 -
2592 -'use strict';
2593 -
2594 -var _prodInvariant = _dereq_(133);
2595 -
2596 -var invariant = _dereq_(157);
2597 -
2598 -/**
2599 - * Injectable ordering of event plugins.
2600 - */
2601 -var eventPluginOrder = null;
2602 -
2603 -/**
2604 - * Injectable mapping from names to event plugin modules.
2605 - */
2606 -var namesToPlugins = {};
2607 -
2608 -/**
2609 - * Recomputes the plugin list using the injected plugins and plugin ordering.
2610 - *
2611 - * @private
2612 - */
2613 -function recomputePluginOrdering() {
2614 - if (!eventPluginOrder) {
2615 - // Wait until an `eventPluginOrder` is injected.
2616 - return;
2617 - }
2618 - for (var pluginName in namesToPlugins) {
2619 - var pluginModule = namesToPlugins[pluginName];
2620 - var pluginIndex = eventPluginOrder.indexOf(pluginName);
2621 - !(pluginIndex > -1) ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;
2622 - if (EventPluginRegistry.plugins[pluginIndex]) {
2623 - continue;
2624 - }
2625 - !pluginModule.extractEvents ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;
2626 - EventPluginRegistry.plugins[pluginIndex] = pluginModule;
2627 - var publishedEvents = pluginModule.eventTypes;
2628 - for (var eventName in publishedEvents) {
2629 - !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;
2630 - }
2631 - }
2632 -}
2633 -
2634 -/**
2635 - * Publishes an event so that it can be dispatched by the supplied plugin.
2636 - *
2637 - * @param {object} dispatchConfig Dispatch configuration for the event.
2638 - * @param {object} PluginModule Plugin publishing the event.
2639 - * @return {boolean} True if the event was successfully published.
2640 - * @private
2641 - */
2642 -function publishEventForPlugin(dispatchConfig, pluginModule, eventName) {
2643 - !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? "development" !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;
2644 - EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;
2645 -
2646 - var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
2647 - if (phasedRegistrationNames) {
2648 - for (var phaseName in phasedRegistrationNames) {
2649 - if (phasedRegistrationNames.hasOwnProperty(phaseName)) {
2650 - var phasedRegistrationName = phasedRegistrationNames[phaseName];
2651 - publishRegistrationName(phasedRegistrationName, pluginModule, eventName);
2652 - }
2653 - }
2654 - return true;
2655 - } else if (dispatchConfig.registrationName) {
2656 - publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);
2657 - return true;
2658 - }
2659 - return false;
2660 -}
2661 -
2662 -/**
2663 - * Publishes a registration name that is used to identify dispatched events.
2664 - *
2665 - * @param {string} registrationName Registration name to add.
2666 - * @param {object} PluginModule Plugin publishing the event.
2667 - * @private
2668 - */
2669 -function publishRegistrationName(registrationName, pluginModule, eventName) {
2670 - !!EventPluginRegistry.registrationNameModules[registrationName] ? "development" !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;
2671 - EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;
2672 - EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;
2673 -
2674 - if ("development" !== 'production') {
2675 - var lowerCasedName = registrationName.toLowerCase();
2676 - EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;
2677 -
2678 - if (registrationName === 'onDoubleClick') {
2679 - EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;
2680 - }
2681 - }
2682 -}
2683 -
2684 -/**
2685 - * Registers plugins so that they can extract and dispatch events.
2686 - *
2687 - * @see {EventPluginHub}
2688 - */
2689 -var EventPluginRegistry = {
2690 -
2691 - /**
2692 - * Ordered list of injected plugins.
2693 - */
2694 - plugins: [],
2695 -
2696 - /**
2697 - * Mapping from event name to dispatch config
2698 - */
2699 - eventNameDispatchConfigs: {},
2700 -
2701 - /**
2702 - * Mapping from registration name to plugin module
2703 - */
2704 - registrationNameModules: {},
2705 -
2706 - /**
2707 - * Mapping from registration name to event name
2708 - */
2709 - registrationNameDependencies: {},
2710 -
2711 - /**
2712 - * Mapping from lowercase registration names to the properly cased version,
2713 - * used to warn in the case of missing event handlers. Available
2714 - * only in __DEV__.
2715 - * @type {Object}
2716 - */
2717 - possibleRegistrationNames: "development" !== 'production' ? {} : null,
2718 - // Trust the developer to only use possibleRegistrationNames in __DEV__
2719 -
2720 - /**
2721 - * Injects an ordering of plugins (by plugin name). This allows the ordering
2722 - * to be decoupled from injection of the actual plugins so that ordering is
2723 - * always deterministic regardless of packaging, on-the-fly injection, etc.
2724 - *
2725 - * @param {array} InjectedEventPluginOrder
2726 - * @internal
2727 - * @see {EventPluginHub.injection.injectEventPluginOrder}
2728 - */
2729 - injectEventPluginOrder: function (injectedEventPluginOrder) {
2730 - !!eventPluginOrder ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;
2731 - // Clone the ordering so it cannot be dynamically mutated.
2732 - eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);
2733 - recomputePluginOrdering();
2734 - },
2735 -
2736 - /**
2737 - * Injects plugins to be used by `EventPluginHub`. The plugin names must be
2738 - * in the ordering injected by `injectEventPluginOrder`.
2739 - *
2740 - * Plugins can be injected as part of page initialization or on-the-fly.
2741 - *
2742 - * @param {object} injectedNamesToPlugins Map from names to plugin modules.
2743 - * @internal
2744 - * @see {EventPluginHub.injection.injectEventPluginsByName}
2745 - */
2746 - injectEventPluginsByName: function (injectedNamesToPlugins) {
2747 - var isOrderingDirty = false;
2748 - for (var pluginName in injectedNamesToPlugins) {
2749 - if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {
2750 - continue;
2751 - }
2752 - var pluginModule = injectedNamesToPlugins[pluginName];
2753 - if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {
2754 - !!namesToPlugins[pluginName] ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;
2755 - namesToPlugins[pluginName] = pluginModule;
2756 - isOrderingDirty = true;
2757 - }
2758 - }
2759 - if (isOrderingDirty) {
2760 - recomputePluginOrdering();
2761 - }
2762 - },
2763 -
2764 - /**
2765 - * Looks up the plugin for the supplied event.
2766 - *
2767 - * @param {object} event A synthetic event.
2768 - * @return {?object} The plugin that created the supplied event.
2769 - * @internal
2770 - */
2771 - getPluginModuleForEvent: function (event) {
2772 - var dispatchConfig = event.dispatchConfig;
2773 - if (dispatchConfig.registrationName) {
2774 - return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;
2775 - }
2776 - if (dispatchConfig.phasedRegistrationNames !== undefined) {
2777 - // pulling phasedRegistrationNames out of dispatchConfig helps Flow see
2778 - // that it is not undefined.
2779 - var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
2780 -
2781 - for (var phase in phasedRegistrationNames) {
2782 - if (!phasedRegistrationNames.hasOwnProperty(phase)) {
2783 - continue;
2784 - }
2785 - var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];
2786 - if (pluginModule) {
2787 - return pluginModule;
2788 - }
2789 - }
2790 - }
2791 - return null;
2792 - },
2793 -
2794 - /**
2795 - * Exposed for unit testing.
2796 - * @private
2797 - */
2798 - _resetEventPlugins: function () {
2799 - eventPluginOrder = null;
2800 - for (var pluginName in namesToPlugins) {
2801 - if (namesToPlugins.hasOwnProperty(pluginName)) {
2802 - delete namesToPlugins[pluginName];
2803 - }
2804 - }
2805 - EventPluginRegistry.plugins.length = 0;
2806 -
2807 - var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;
2808 - for (var eventName in eventNameDispatchConfigs) {
2809 - if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {
2810 - delete eventNameDispatchConfigs[eventName];
2811 - }
2812 - }
2813 -
2814 - var registrationNameModules = EventPluginRegistry.registrationNameModules;
2815 - for (var registrationName in registrationNameModules) {
2816 - if (registrationNameModules.hasOwnProperty(registrationName)) {
2817 - delete registrationNameModules[registrationName];
2818 - }
2819 - }
2820 -
2821 - if ("development" !== 'production') {
2822 - var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;
2823 - for (var lowerCasedName in possibleRegistrationNames) {
2824 - if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {
2825 - delete possibleRegistrationNames[lowerCasedName];
2826 - }
2827 - }
2828 - }
2829 - }
2830 -
2831 -};
2832 -
2833 -module.exports = EventPluginRegistry;
2834 -},{"133":133,"157":157}],19:[function(_dereq_,module,exports){
2835 -/**
2836 - * Copyright 2013-present, Facebook, Inc.
2837 - * All rights reserved.
2838 - *
2839 - * This source code is licensed under the BSD-style license found in the
2840 - * LICENSE file in the root directory of this source tree. An additional grant
2841 - * of patent rights can be found in the PATENTS file in the same directory.
2842 - *
2843 - */
2844 -
2845 -'use strict';
2846 -
2847 -var _prodInvariant = _dereq_(133);
2848 -
2849 -var ReactErrorUtils = _dereq_(57);
2850 -
2851 -var invariant = _dereq_(157);
2852 -var warning = _dereq_(164);
2853 -
2854 -/**
2855 - * Injected dependencies:
2856 - */
2857 -
2858 -/**
2859 - * - `ComponentTree`: [required] Module that can convert between React instances
2860 - * and actual node references.
2861 - */
2862 -var ComponentTree;
2863 -var injection = {
2864 - injectComponentTree: function (Injected) {
2865 - ComponentTree = Injected;
2866 - if ("development" !== 'production') {
2867 - "development" !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;
2868 - }
2869 - }
2870 -};
2871 -
2872 -function isEndish(topLevelType) {
2873 - return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';
2874 -}
2875 -
2876 -function isMoveish(topLevelType) {
2877 - return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';
2878 -}
2879 -function isStartish(topLevelType) {
2880 - return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';
2881 -}
2882 -
2883 -var validateEventDispatches;
2884 -if ("development" !== 'production') {
2885 - validateEventDispatches = function (event) {
2886 - var dispatchListeners = event._dispatchListeners;
2887 - var dispatchInstances = event._dispatchInstances;
2888 -
2889 - var listenersIsArr = Array.isArray(dispatchListeners);
2890 - var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;
2891 -
2892 - var instancesIsArr = Array.isArray(dispatchInstances);
2893 - var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;
2894 -
2895 - "development" !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;
2896 - };
2897 -}
2898 -
2899 -/**
2900 - * Dispatch the event to the listener.
2901 - * @param {SyntheticEvent} event SyntheticEvent to handle
2902 - * @param {boolean} simulated If the event is simulated (changes exn behavior)
2903 - * @param {function} listener Application-level callback
2904 - * @param {*} inst Internal component instance
2905 - */
2906 -function executeDispatch(event, simulated, listener, inst) {
2907 - var type = event.type || 'unknown-event';
2908 - event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);
2909 - if (simulated) {
2910 - ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);
2911 - } else {
2912 - ReactErrorUtils.invokeGuardedCallback(type, listener, event);
2913 - }
2914 - event.currentTarget = null;
2915 -}
2916 -
2917 -/**
2918 - * Standard/simple iteration through an event's collected dispatches.
2919 - */
2920 -function executeDispatchesInOrder(event, simulated) {
2921 - var dispatchListeners = event._dispatchListeners;
2922 - var dispatchInstances = event._dispatchInstances;
2923 - if ("development" !== 'production') {
2924 - validateEventDispatches(event);
2925 - }
2926 - if (Array.isArray(dispatchListeners)) {
2927 - for (var i = 0; i < dispatchListeners.length; i++) {
2928 - if (event.isPropagationStopped()) {
2929 - break;
2930 - }
2931 - // Listeners and Instances are two parallel arrays that are always in sync.
2932 - executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);
2933 - }
2934 - } else if (dispatchListeners) {
2935 - executeDispatch(event, simulated, dispatchListeners, dispatchInstances);
2936 - }
2937 - event._dispatchListeners = null;
2938 - event._dispatchInstances = null;
2939 -}
2940 -
2941 -/**
2942 - * Standard/simple iteration through an event's collected dispatches, but stops
2943 - * at the first dispatch execution returning true, and returns that id.
2944 - *
2945 - * @return {?string} id of the first dispatch execution who's listener returns
2946 - * true, or null if no listener returned true.
2947 - */
2948 -function executeDispatchesInOrderStopAtTrueImpl(event) {
2949 - var dispatchListeners = event._dispatchListeners;
2950 - var dispatchInstances = event._dispatchInstances;
2951 - if ("development" !== 'production') {
2952 - validateEventDispatches(event);
2953 - }
2954 - if (Array.isArray(dispatchListeners)) {
2955 - for (var i = 0; i < dispatchListeners.length; i++) {
2956 - if (event.isPropagationStopped()) {
2957 - break;
2958 - }
2959 - // Listeners and Instances are two parallel arrays that are always in sync.
2960 - if (dispatchListeners[i](event, dispatchInstances[i])) {
2961 - return dispatchInstances[i];
2962 - }
2963 - }
2964 - } else if (dispatchListeners) {
2965 - if (dispatchListeners(event, dispatchInstances)) {
2966 - return dispatchInstances;
2967 - }
2968 - }
2969 - return null;
2970 -}
2971 -
2972 -/**
2973 - * @see executeDispatchesInOrderStopAtTrueImpl
2974 - */
2975 -function executeDispatchesInOrderStopAtTrue(event) {
2976 - var ret = executeDispatchesInOrderStopAtTrueImpl(event);
2977 - event._dispatchInstances = null;
2978 - event._dispatchListeners = null;
2979 - return ret;
2980 -}
2981 -
2982 -/**
2983 - * Execution of a "direct" dispatch - there must be at most one dispatch
2984 - * accumulated on the event or it is considered an error. It doesn't really make
2985 - * sense for an event with multiple dispatches (bubbled) to keep track of the
2986 - * return values at each dispatch execution, but it does tend to make sense when
2987 - * dealing with "direct" dispatches.
2988 - *
2989 - * @return {*} The return value of executing the single dispatch.
2990 - */
2991 -function executeDirectDispatch(event) {
2992 - if ("development" !== 'production') {
2993 - validateEventDispatches(event);
2994 - }
2995 - var dispatchListener = event._dispatchListeners;
2996 - var dispatchInstance = event._dispatchInstances;
2997 - !!Array.isArray(dispatchListener) ? "development" !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;
2998 - event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;
2999 - var res = dispatchListener ? dispatchListener(event) : null;
3000 - event.currentTarget = null;
3001 - event._dispatchListeners = null;
3002 - event._dispatchInstances = null;
3003 - return res;
3004 -}
3005 -
3006 -/**
3007 - * @param {SyntheticEvent} event
3008 - * @return {boolean} True iff number of dispatches accumulated is greater than 0.
3009 - */
3010 -function hasDispatches(event) {
3011 - return !!event._dispatchListeners;
3012 -}
3013 -
3014 -/**
3015 - * General utilities that are useful in creating custom Event Plugins.
3016 - */
3017 -var EventPluginUtils = {
3018 - isEndish: isEndish,
3019 - isMoveish: isMoveish,
3020 - isStartish: isStartish,
3021 -
3022 - executeDirectDispatch: executeDirectDispatch,
3023 - executeDispatchesInOrder: executeDispatchesInOrder,
3024 - executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,
3025 - hasDispatches: hasDispatches,
3026 -
3027 - getInstanceFromNode: function (node) {
3028 - return ComponentTree.getInstanceFromNode(node);
3029 - },
3030 - getNodeFromInstance: function (node) {
3031 - return ComponentTree.getNodeFromInstance(node);
3032 - },
3033 -
3034 - injection: injection
3035 -};
3036 -
3037 -module.exports = EventPluginUtils;
3038 -},{"133":133,"157":157,"164":164,"57":57}],20:[function(_dereq_,module,exports){
3039 -/**
3040 - * Copyright 2013-present, Facebook, Inc.
3041 - * All rights reserved.
3042 - *
3043 - * This source code is licensed under the BSD-style license found in the
3044 - * LICENSE file in the root directory of this source tree. An additional grant
3045 - * of patent rights can be found in the PATENTS file in the same directory.
3046 - *
3047 - */
3048 -
3049 -'use strict';
3050 -
3051 -var EventPluginHub = _dereq_(17);
3052 -var ReactTreeTraversal = _dereq_(83);
3053 -
3054 -var accumulateInto = _dereq_(107);
3055 -var forEachAccumulated = _dereq_(115);
3056 -var warning = _dereq_(164);
3057 -
3058 -var getListener = EventPluginHub.getListener;
3059 -
3060 -/**
3061 - * Some event types have a notion of different registration names for different
3062 - * "phases" of propagation. This finds listeners by a given phase.
3063 - */
3064 -function listenerAtPhase(inst, event, propagationPhase) {
3065 - var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];
3066 - return getListener(inst, registrationName);
3067 -}
3068 -
3069 -/**
3070 - * Tags a `SyntheticEvent` with dispatched listeners. Creating this function
3071 - * here, allows us to not have to bind or create functions for each event.
3072 - * Mutating the event's members allows us to not have to create a wrapping
3073 - * "dispatch" object that pairs the event with the listener.
3074 - */
3075 -function accumulateDirectionalDispatches(inst, phase, event) {
3076 - if ("development" !== 'production') {
3077 - "development" !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;
3078 - }
3079 - var listener = listenerAtPhase(inst, event, phase);
3080 - if (listener) {
3081 - event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
3082 - event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
3083 - }
3084 -}
3085 -
3086 -/**
3087 - * Collect dispatches (must be entirely collected before dispatching - see unit
3088 - * tests). Lazily allocate the array to conserve memory. We must loop through
3089 - * each event and perform the traversal for each one. We cannot perform a
3090 - * single traversal for the entire collection of events because each event may
3091 - * have a different target.
3092 - */
3093 -function accumulateTwoPhaseDispatchesSingle(event) {
3094 - if (event && event.dispatchConfig.phasedRegistrationNames) {
3095 - ReactTreeTraversal.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);
3096 - }
3097 -}
3098 -
3099 -/**
3100 - * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.
3101 - */
3102 -function accumulateTwoPhaseDispatchesSingleSkipTarget(event) {
3103 - if (event && event.dispatchConfig.phasedRegistrationNames) {
3104 - var targetInst = event._targetInst;
3105 - var parentInst = targetInst ? ReactTreeTraversal.getParentInstance(targetInst) : null;
3106 - ReactTreeTraversal.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);
3107 - }
3108 -}
3109 -
3110 -/**
3111 - * Accumulates without regard to direction, does not look for phased
3112 - * registration names. Same as `accumulateDirectDispatchesSingle` but without
3113 - * requiring that the `dispatchMarker` be the same as the dispatched ID.
3114 - */
3115 -function accumulateDispatches(inst, ignoredDirection, event) {
3116 - if (event && event.dispatchConfig.registrationName) {
3117 - var registrationName = event.dispatchConfig.registrationName;
3118 - var listener = getListener(inst, registrationName);
3119 - if (listener) {
3120 - event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
3121 - event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
3122 - }
3123 - }
3124 -}
3125 -
3126 -/**
3127 - * Accumulates dispatches on an `SyntheticEvent`, but only for the
3128 - * `dispatchMarker`.
3129 - * @param {SyntheticEvent} event
3130 - */
3131 -function accumulateDirectDispatchesSingle(event) {
3132 - if (event && event.dispatchConfig.registrationName) {
3133 - accumulateDispatches(event._targetInst, null, event);
3134 - }
3135 -}
3136 -
3137 -function accumulateTwoPhaseDispatches(events) {
3138 - forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);
3139 -}
3140 -
3141 -function accumulateTwoPhaseDispatchesSkipTarget(events) {
3142 - forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);
3143 -}
3144 -
3145 -function accumulateEnterLeaveDispatches(leave, enter, from, to) {
3146 - ReactTreeTraversal.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);
3147 -}
3148 -
3149 -function accumulateDirectDispatches(events) {
3150 - forEachAccumulated(events, accumulateDirectDispatchesSingle);
3151 -}
3152 -
3153 -/**
3154 - * A small set of propagation patterns, each of which will accept a small amount
3155 - * of information, and generate a set of "dispatch ready event objects" - which
3156 - * are sets of events that have already been annotated with a set of dispatched
3157 - * listener functions/ids. The API is designed this way to discourage these
3158 - * propagation strategies from actually executing the dispatches, since we
3159 - * always want to collect the entire set of dispatches before executing event a
3160 - * single one.
3161 - *
3162 - * @constructor EventPropagators
3163 - */
3164 -var EventPropagators = {
3165 - accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,
3166 - accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,
3167 - accumulateDirectDispatches: accumulateDirectDispatches,
3168 - accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches
3169 -};
3170 -
3171 -module.exports = EventPropagators;
3172 -},{"107":107,"115":115,"164":164,"17":17,"83":83}],21:[function(_dereq_,module,exports){
3173 -/**
3174 - * Copyright 2013-present, Facebook, Inc.
3175 - * All rights reserved.
3176 - *
3177 - * This source code is licensed under the BSD-style license found in the
3178 - * LICENSE file in the root directory of this source tree. An additional grant
3179 - * of patent rights can be found in the PATENTS file in the same directory.
3180 - *
3181 - */
3182 -
3183 -'use strict';
3184 -
3185 -var _assign = _dereq_(165);
3186 -
3187 -var PooledClass = _dereq_(24);
3188 -
3189 -var getTextContentAccessor = _dereq_(126);
3190 -
3191 -/**
3192 - * This helper class stores information about text content of a target node,
3193 - * allowing comparison of content before and after a given event.
3194 - *
3195 - * Identify the node where selection currently begins, then observe
3196 - * both its text content and its current position in the DOM. Since the
3197 - * browser may natively replace the target node during composition, we can
3198 - * use its position to find its replacement.
3199 - *
3200 - * @param {DOMEventTarget} root
3201 - */
3202 -function FallbackCompositionState(root) {
3203 - this._root = root;
3204 - this._startText = this.getText();
3205 - this._fallbackText = null;
3206 -}
3207 -
3208 -_assign(FallbackCompositionState.prototype, {
3209 - destructor: function () {
3210 - this._root = null;
3211 - this._startText = null;
3212 - this._fallbackText = null;
3213 - },
3214 -
3215 - /**
3216 - * Get current text of input.
3217 - *
3218 - * @return {string}
3219 - */
3220 - getText: function () {
3221 - if ('value' in this._root) {
3222 - return this._root.value;
3223 - }
3224 - return this._root[getTextContentAccessor()];
3225 - },
3226 -
3227 - /**
3228 - * Determine the differing substring between the initially stored
3229 - * text content and the current content.
3230 - *
3231 - * @return {string}
3232 - */
3233 - getData: function () {
3234 - if (this._fallbackText) {
3235 - return this._fallbackText;
3236 - }
3237 -
3238 - var start;
3239 - var startValue = this._startText;
3240 - var startLength = startValue.length;
3241 - var end;
3242 - var endValue = this.getText();
3243 - var endLength = endValue.length;
3244 -
3245 - for (start = 0; start < startLength; start++) {
3246 - if (startValue[start] !== endValue[start]) {
3247 - break;
3248 - }
3249 - }
3250 -
3251 - var minEnd = startLength - start;
3252 - for (end = 1; end <= minEnd; end++) {
3253 - if (startValue[startLength - end] !== endValue[endLength - end]) {
3254 - break;
3255 - }
3256 - }
3257 -
3258 - var sliceTail = end > 1 ? 1 - end : undefined;
3259 - this._fallbackText = endValue.slice(start, sliceTail);
3260 - return this._fallbackText;
3261 - }
3262 -});
3263 -
3264 -PooledClass.addPoolingTo(FallbackCompositionState);
3265 -
3266 -module.exports = FallbackCompositionState;
3267 -},{"126":126,"165":165,"24":24}],22:[function(_dereq_,module,exports){
3268 -/**
3269 - * Copyright 2013-present, Facebook, Inc.
3270 - * All rights reserved.
3271 - *
3272 - * This source code is licensed under the BSD-style license found in the
3273 - * LICENSE file in the root directory of this source tree. An additional grant
3274 - * of patent rights can be found in the PATENTS file in the same directory.
3275 - *
3276 - */
3277 -
3278 -'use strict';
3279 -
3280 -var DOMProperty = _dereq_(12);
3281 -
3282 -var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
3283 -var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
3284 -var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;
3285 -var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
3286 -var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
3287 -
3288 -var HTMLDOMPropertyConfig = {
3289 - isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),
3290 - Properties: {
3291 - /**
3292 - * Standard Properties
3293 - */
3294 - accept: 0,
3295 - acceptCharset: 0,
3296 - accessKey: 0,
3297 - action: 0,
3298 - allowFullScreen: HAS_BOOLEAN_VALUE,
3299 - allowTransparency: 0,
3300 - alt: 0,
3301 - // specifies target context for links with `preload` type
3302 - as: 0,
3303 - async: HAS_BOOLEAN_VALUE,
3304 - autoComplete: 0,
3305 - // autoFocus is polyfilled/normalized by AutoFocusUtils
3306 - // autoFocus: HAS_BOOLEAN_VALUE,
3307 - autoPlay: HAS_BOOLEAN_VALUE,
3308 - capture: HAS_BOOLEAN_VALUE,
3309 - cellPadding: 0,
3310 - cellSpacing: 0,
3311 - charSet: 0,
3312 - challenge: 0,
3313 - checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
3314 - cite: 0,
3315 - classID: 0,
3316 - className: 0,
3317 - cols: HAS_POSITIVE_NUMERIC_VALUE,
3318 - colSpan: 0,
3319 - content: 0,
3320 - contentEditable: 0,
3321 - contextMenu: 0,
3322 - controls: HAS_BOOLEAN_VALUE,
3323 - coords: 0,
3324 - crossOrigin: 0,
3325 - data: 0, // For `<object />` acts as `src`.
3326 - dateTime: 0,
3327 - 'default': HAS_BOOLEAN_VALUE,
3328 - defer: HAS_BOOLEAN_VALUE,
3329 - dir: 0,
3330 - disabled: HAS_BOOLEAN_VALUE,
3331 - download: HAS_OVERLOADED_BOOLEAN_VALUE,
3332 - draggable: 0,
3333 - encType: 0,
3334 - form: 0,
3335 - formAction: 0,
3336 - formEncType: 0,
3337 - formMethod: 0,
3338 - formNoValidate: HAS_BOOLEAN_VALUE,
3339 - formTarget: 0,
3340 - frameBorder: 0,
3341 - headers: 0,
3342 - height: 0,
3343 - hidden: HAS_BOOLEAN_VALUE,
3344 - high: 0,
3345 - href: 0,
3346 - hrefLang: 0,
3347 - htmlFor: 0,
3348 - httpEquiv: 0,
3349 - id: 0,
3350 - inputMode: 0,
3351 - integrity: 0,
3352 - is: 0,
3353 - keyParams: 0,
3354 - keyType: 0,
3355 - kind: 0,
3356 - label: 0,
3357 - lang: 0,
3358 - list: 0,
3359 - loop: HAS_BOOLEAN_VALUE,
3360 - low: 0,
3361 - manifest: 0,
3362 - marginHeight: 0,
3363 - marginWidth: 0,
3364 - max: 0,
3365 - maxLength: 0,
3366 - media: 0,
3367 - mediaGroup: 0,
3368 - method: 0,
3369 - min: 0,
3370 - minLength: 0,
3371 - // Caution; `option.selected` is not updated if `select.multiple` is
3372 - // disabled with `removeAttribute`.
3373 - multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
3374 - muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
3375 - name: 0,
3376 - nonce: 0,
3377 - noValidate: HAS_BOOLEAN_VALUE,
3378 - open: HAS_BOOLEAN_VALUE,
3379 - optimum: 0,
3380 - pattern: 0,
3381 - placeholder: 0,
3382 - playsInline: HAS_BOOLEAN_VALUE,
3383 - poster: 0,
3384 - preload: 0,
3385 - profile: 0,
3386 - radioGroup: 0,
3387 - readOnly: HAS_BOOLEAN_VALUE,
3388 - referrerPolicy: 0,
3389 - rel: 0,
3390 - required: HAS_BOOLEAN_VALUE,
3391 - reversed: HAS_BOOLEAN_VALUE,
3392 - role: 0,
3393 - rows: HAS_POSITIVE_NUMERIC_VALUE,
3394 - rowSpan: HAS_NUMERIC_VALUE,
3395 - sandbox: 0,
3396 - scope: 0,
3397 - scoped: HAS_BOOLEAN_VALUE,
3398 - scrolling: 0,
3399 - seamless: HAS_BOOLEAN_VALUE,
3400 - selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
3401 - shape: 0,
3402 - size: HAS_POSITIVE_NUMERIC_VALUE,
3403 - sizes: 0,
3404 - // support for projecting regular DOM Elements via V1 named slots ( shadow dom )
3405 - slot: 0,
3406 - span: HAS_POSITIVE_NUMERIC_VALUE,
3407 - spellCheck: 0,
3408 - src: 0,
3409 - srcDoc: 0,
3410 - srcLang: 0,
3411 - srcSet: 0,
3412 - start: HAS_NUMERIC_VALUE,
3413 - step: 0,
3414 - style: 0,
3415 - summary: 0,
3416 - tabIndex: 0,
3417 - target: 0,
3418 - title: 0,
3419 - // Setting .type throws on non-<input> tags
3420 - type: 0,
3421 - useMap: 0,
3422 - value: 0,
3423 - width: 0,
3424 - wmode: 0,
3425 - wrap: 0,
3426 -
3427 - /**
3428 - * RDFa Properties
3429 - */
3430 - about: 0,
3431 - datatype: 0,
3432 - inlist: 0,
3433 - prefix: 0,
3434 - // property is also supported for OpenGraph in meta tags.
3435 - property: 0,
3436 - resource: 0,
3437 - 'typeof': 0,
3438 - vocab: 0,
3439 -
3440 - /**
3441 - * Non-standard Properties
3442 - */
3443 - // autoCapitalize and autoCorrect are supported in Mobile Safari for
3444 - // keyboard hints.
3445 - autoCapitalize: 0,
3446 - autoCorrect: 0,
3447 - // autoSave allows WebKit/Blink to persist values of input fields on page reloads
3448 - autoSave: 0,
3449 - // color is for Safari mask-icon link
3450 - color: 0,
3451 - // itemProp, itemScope, itemType are for
3452 - // Microdata support. See http://schema.org/docs/gs.html
3453 - itemProp: 0,
3454 - itemScope: HAS_BOOLEAN_VALUE,
3455 - itemType: 0,
3456 - // itemID and itemRef are for Microdata support as well but
3457 - // only specified in the WHATWG spec document. See
3458 - // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api
3459 - itemID: 0,
3460 - itemRef: 0,
3461 - // results show looking glass icon and recent searches on input
3462 - // search fields in WebKit/Blink
3463 - results: 0,
3464 - // IE-only attribute that specifies security restrictions on an iframe
3465 - // as an alternative to the sandbox attribute on IE<10
3466 - security: 0,
3467 - // IE-only attribute that controls focus behavior
3468 - unselectable: 0
3469 - },
3470 - DOMAttributeNames: {
3471 - acceptCharset: 'accept-charset',
3472 - className: 'class',
3473 - htmlFor: 'for',
3474 - httpEquiv: 'http-equiv'
3475 - },
3476 - DOMPropertyNames: {},
3477 - DOMMutationMethods: {
3478 - value: function (node, value) {
3479 - if (value == null) {
3480 - return node.removeAttribute('value');
3481 - }
3482 -
3483 - // Number inputs get special treatment due to some edge cases in
3484 - // Chrome. Let everything else assign the value attribute as normal.
3485 - // https://github.com/facebook/react/issues/7253#issuecomment-236074326
3486 - if (node.type !== 'number' || node.hasAttribute('value') === false) {
3487 - node.setAttribute('value', '' + value);
3488 - } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {
3489 - // Don't assign an attribute if validation reports bad
3490 - // input. Chrome will clear the value. Additionally, don't
3491 - // operate on inputs that have focus, otherwise Chrome might
3492 - // strip off trailing decimal places and cause the user's
3493 - // cursor position to jump to the beginning of the input.
3494 - //
3495 - // In ReactDOMInput, we have an onBlur event that will trigger
3496 - // this function again when focus is lost.
3497 - node.setAttribute('value', '' + value);
3498 - }
3499 - }
3500 - }
3501 -};
3502 -
3503 -module.exports = HTMLDOMPropertyConfig;
3504 -},{"12":12}],23:[function(_dereq_,module,exports){
3505 -/**
3506 - * Copyright 2013-present, Facebook, Inc.
3507 - * All rights reserved.
3508 - *
3509 - * This source code is licensed under the BSD-style license found in the
3510 - * LICENSE file in the root directory of this source tree. An additional grant
3511 - * of patent rights can be found in the PATENTS file in the same directory.
3512 - *
3513 - *
3514 - */
3515 -
3516 -'use strict';
3517 -
3518 -/**
3519 - * Escape and wrap key so it is safe to use as a reactid
3520 - *
3521 - * @param {string} key to be escaped.
3522 - * @return {string} the escaped key.
3523 - */
3524 -
3525 -function escape(key) {
3526 - var escapeRegex = /[=:]/g;
3527 - var escaperLookup = {
3528 - '=': '=0',
3529 - ':': '=2'
3530 - };
3531 - var escapedString = ('' + key).replace(escapeRegex, function (match) {
3532 - return escaperLookup[match];
3533 - });
3534 -
3535 - return '$' + escapedString;
3536 -}
3537 -
3538 -/**
3539 - * Unescape and unwrap key for human-readable display
3540 - *
3541 - * @param {string} key to unescape.
3542 - * @return {string} the unescaped key.
3543 - */
3544 -function unescape(key) {
3545 - var unescapeRegex = /(=0|=2)/g;
3546 - var unescaperLookup = {
3547 - '=0': '=',
3548 - '=2': ':'
3549 - };
3550 - var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
3551 -
3552 - return ('' + keySubstring).replace(unescapeRegex, function (match) {
3553 - return unescaperLookup[match];
3554 - });
3555 -}
3556 -
3557 -var KeyEscapeUtils = {
3558 - escape: escape,
3559 - unescape: unescape
3560 -};
3561 -
3562 -module.exports = KeyEscapeUtils;
3563 -},{}],24:[function(_dereq_,module,exports){
3564 -/**
3565 - * Copyright 2013-present, Facebook, Inc.
3566 - * All rights reserved.
3567 - *
3568 - * This source code is licensed under the BSD-style license found in the
3569 - * LICENSE file in the root directory of this source tree. An additional grant
3570 - * of patent rights can be found in the PATENTS file in the same directory.
3571 - *
3572 - *
3573 - */
3574 -
3575 -'use strict';
3576 -
3577 -var _prodInvariant = _dereq_(133);
3578 -
3579 -var invariant = _dereq_(157);
3580 -
3581 -/**
3582 - * Static poolers. Several custom versions for each potential number of
3583 - * arguments. A completely generic pooler is easy to implement, but would
3584 - * require accessing the `arguments` object. In each of these, `this` refers to
3585 - * the Class itself, not an instance. If any others are needed, simply add them
3586 - * here, or in their own files.
3587 - */
3588 -var oneArgumentPooler = function (copyFieldsFrom) {
3589 - var Klass = this;
3590 - if (Klass.instancePool.length) {
3591 - var instance = Klass.instancePool.pop();
3592 - Klass.call(instance, copyFieldsFrom);
3593 - return instance;
3594 - } else {
3595 - return new Klass(copyFieldsFrom);
3596 - }
3597 -};
3598 -
3599 -var twoArgumentPooler = function (a1, a2) {
3600 - var Klass = this;
3601 - if (Klass.instancePool.length) {
3602 - var instance = Klass.instancePool.pop();
3603 - Klass.call(instance, a1, a2);
3604 - return instance;
3605 - } else {
3606 - return new Klass(a1, a2);
3607 - }
3608 -};
3609 -
3610 -var threeArgumentPooler = function (a1, a2, a3) {
3611 - var Klass = this;
3612 - if (Klass.instancePool.length) {
3613 - var instance = Klass.instancePool.pop();
3614 - Klass.call(instance, a1, a2, a3);
3615 - return instance;
3616 - } else {
3617 - return new Klass(a1, a2, a3);
3618 - }
3619 -};
3620 -
3621 -var fourArgumentPooler = function (a1, a2, a3, a4) {
3622 - var Klass = this;
3623 - if (Klass.instancePool.length) {
3624 - var instance = Klass.instancePool.pop();
3625 - Klass.call(instance, a1, a2, a3, a4);
3626 - return instance;
3627 - } else {
3628 - return new Klass(a1, a2, a3, a4);
3629 - }
3630 -};
3631 -
3632 -var standardReleaser = function (instance) {
3633 - var Klass = this;
3634 - !(instance instanceof Klass) ? "development" !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;
3635 - instance.destructor();
3636 - if (Klass.instancePool.length < Klass.poolSize) {
3637 - Klass.instancePool.push(instance);
3638 - }
3639 -};
3640 -
3641 -var DEFAULT_POOL_SIZE = 10;
3642 -var DEFAULT_POOLER = oneArgumentPooler;
3643 -
3644 -/**
3645 - * Augments `CopyConstructor` to be a poolable class, augmenting only the class
3646 - * itself (statically) not adding any prototypical fields. Any CopyConstructor
3647 - * you give this may have a `poolSize` property, and will look for a
3648 - * prototypical `destructor` on instances.
3649 - *
3650 - * @param {Function} CopyConstructor Constructor that can be used to reset.
3651 - * @param {Function} pooler Customizable pooler.
3652 - */
3653 -var addPoolingTo = function (CopyConstructor, pooler) {
3654 - // Casting as any so that flow ignores the actual implementation and trusts
3655 - // it to match the type we declared
3656 - var NewKlass = CopyConstructor;
3657 - NewKlass.instancePool = [];
3658 - NewKlass.getPooled = pooler || DEFAULT_POOLER;
3659 - if (!NewKlass.poolSize) {
3660 - NewKlass.poolSize = DEFAULT_POOL_SIZE;
3661 - }
3662 - NewKlass.release = standardReleaser;
3663 - return NewKlass;
3664 -};
3665 -
3666 -var PooledClass = {
3667 - addPoolingTo: addPoolingTo,
3668 - oneArgumentPooler: oneArgumentPooler,
3669 - twoArgumentPooler: twoArgumentPooler,
3670 - threeArgumentPooler: threeArgumentPooler,
3671 - fourArgumentPooler: fourArgumentPooler
3672 -};
3673 -
3674 -module.exports = PooledClass;
3675 -},{"133":133,"157":157}],25:[function(_dereq_,module,exports){
3676 -/**
3677 - * Copyright 2013-present, Facebook, Inc.
3678 - * All rights reserved.
3679 - *
3680 - * This source code is licensed under the BSD-style license found in the
3681 - * LICENSE file in the root directory of this source tree. An additional grant
3682 - * of patent rights can be found in the PATENTS file in the same directory.
3683 - *
3684 - */
3685 -
3686 -'use strict';
3687 -
3688 -var _assign = _dereq_(165);
3689 -
3690 -var EventPluginRegistry = _dereq_(18);
3691 -var ReactEventEmitterMixin = _dereq_(58);
3692 -var ViewportMetrics = _dereq_(106);
3693 -
3694 -var getVendorPrefixedEventName = _dereq_(127);
3695 -var isEventSupported = _dereq_(130);
3696 -
3697 -/**
3698 - * Summary of `ReactBrowserEventEmitter` event handling:
3699 - *
3700 - * - Top-level delegation is used to trap most native browser events. This
3701 - * may only occur in the main thread and is the responsibility of
3702 - * ReactEventListener, which is injected and can therefore support pluggable
3703 - * event sources. This is the only work that occurs in the main thread.
3704 - *
3705 - * - We normalize and de-duplicate events to account for browser quirks. This
3706 - * may be done in the worker thread.
3707 - *
3708 - * - Forward these native events (with the associated top-level type used to
3709 - * trap it) to `EventPluginHub`, which in turn will ask plugins if they want
3710 - * to extract any synthetic events.
3711 - *
3712 - * - The `EventPluginHub` will then process each event by annotating them with
3713 - * "dispatches", a sequence of listeners and IDs that care about that event.
3714 - *
3715 - * - The `EventPluginHub` then dispatches the events.
3716 - *
3717 - * Overview of React and the event system:
3718 - *
3719 - * +------------+ .
3720 - * | DOM | .
3721 - * +------------+ .
3722 - * | .
3723 - * v .
3724 - * +------------+ .
3725 - * | ReactEvent | .
3726 - * | Listener | .
3727 - * +------------+ . +-----------+
3728 - * | . +--------+|SimpleEvent|
3729 - * | . | |Plugin |
3730 - * +-----|------+ . v +-----------+
3731 - * | | | . +--------------+ +------------+
3732 - * | +-----------.--->|EventPluginHub| | Event |
3733 - * | | . | | +-----------+ | Propagators|
3734 - * | ReactEvent | . | | |TapEvent | |------------|
3735 - * | Emitter | . | |<---+|Plugin | |other plugin|
3736 - * | | . | | +-----------+ | utilities |
3737 - * | +-----------.--->| | +------------+
3738 - * | | | . +--------------+
3739 - * +-----|------+ . ^ +-----------+
3740 - * | . | |Enter/Leave|
3741 - * + . +-------+|Plugin |
3742 - * +-------------+ . +-----------+
3743 - * | application | .
3744 - * |-------------| .
3745 - * | | .
3746 - * | | .
3747 - * +-------------+ .
3748 - * .
3749 - * React Core . General Purpose Event Plugin System
3750 - */
3751 -
3752 -var hasEventPageXY;
3753 -var alreadyListeningTo = {};
3754 -var isMonitoringScrollValue = false;
3755 -var reactTopListenersCounter = 0;
3756 -
3757 -// For events like 'submit' which don't consistently bubble (which we trap at a
3758 -// lower node than `document`), binding at `document` would cause duplicate
3759 -// events so we don't include them here
3760 -var topEventMapping = {
3761 - topAbort: 'abort',
3762 - topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',
3763 - topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',
3764 - topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',
3765 - topBlur: 'blur',
3766 - topCanPlay: 'canplay',
3767 - topCanPlayThrough: 'canplaythrough',
3768 - topChange: 'change',
3769 - topClick: 'click',
3770 - topCompositionEnd: 'compositionend',
3771 - topCompositionStart: 'compositionstart',
3772 - topCompositionUpdate: 'compositionupdate',
3773 - topContextMenu: 'contextmenu',
3774 - topCopy: 'copy',
3775 - topCut: 'cut',
3776 - topDoubleClick: 'dblclick',
3777 - topDrag: 'drag',
3778 - topDragEnd: 'dragend',
3779 - topDragEnter: 'dragenter',
3780 - topDragExit: 'dragexit',
3781 - topDragLeave: 'dragleave',
3782 - topDragOver: 'dragover',
3783 - topDragStart: 'dragstart',
3784 - topDrop: 'drop',
3785 - topDurationChange: 'durationchange',
3786 - topEmptied: 'emptied',
3787 - topEncrypted: 'encrypted',
3788 - topEnded: 'ended',
3789 - topError: 'error',
3790 - topFocus: 'focus',
3791 - topInput: 'input',
3792 - topKeyDown: 'keydown',
3793 - topKeyPress: 'keypress',
3794 - topKeyUp: 'keyup',
3795 - topLoadedData: 'loadeddata',
3796 - topLoadedMetadata: 'loadedmetadata',
3797 - topLoadStart: 'loadstart',
3798 - topMouseDown: 'mousedown',
3799 - topMouseMove: 'mousemove',
3800 - topMouseOut: 'mouseout',
3801 - topMouseOver: 'mouseover',
3802 - topMouseUp: 'mouseup',
3803 - topPaste: 'paste',
3804 - topPause: 'pause',
3805 - topPlay: 'play',
3806 - topPlaying: 'playing',
3807 - topProgress: 'progress',
3808 - topRateChange: 'ratechange',
3809 - topScroll: 'scroll',
3810 - topSeeked: 'seeked',
3811 - topSeeking: 'seeking',
3812 - topSelectionChange: 'selectionchange',
3813 - topStalled: 'stalled',
3814 - topSuspend: 'suspend',
3815 - topTextInput: 'textInput',
3816 - topTimeUpdate: 'timeupdate',
3817 - topTouchCancel: 'touchcancel',
3818 - topTouchEnd: 'touchend',
3819 - topTouchMove: 'touchmove',
3820 - topTouchStart: 'touchstart',
3821 - topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',
3822 - topVolumeChange: 'volumechange',
3823 - topWaiting: 'waiting',
3824 - topWheel: 'wheel'
3825 -};
3826 -
3827 -/**
3828 - * To ensure no conflicts with other potential React instances on the page
3829 - */
3830 -var topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);
3831 -
3832 -function getListeningForDocument(mountAt) {
3833 - // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`
3834 - // directly.
3835 - if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {
3836 - mountAt[topListenersIDKey] = reactTopListenersCounter++;
3837 - alreadyListeningTo[mountAt[topListenersIDKey]] = {};
3838 - }
3839 - return alreadyListeningTo[mountAt[topListenersIDKey]];
3840 -}
3841 -
3842 -var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {
3843 -
3844 - /**
3845 - * Injectable event backend
3846 - */
3847 - ReactEventListener: null,
3848 -
3849 - injection: {
3850 - /**
3851 - * @param {object} ReactEventListener
3852 - */
3853 - injectReactEventListener: function (ReactEventListener) {
3854 - ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);
3855 - ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;
3856 - }
3857 - },
3858 -
3859 - /**
3860 - * Sets whether or not any created callbacks should be enabled.
3861 - *
3862 - * @param {boolean} enabled True if callbacks should be enabled.
3863 - */
3864 - setEnabled: function (enabled) {
3865 - if (ReactBrowserEventEmitter.ReactEventListener) {
3866 - ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);
3867 - }
3868 - },
3869 -
3870 - /**
3871 - * @return {boolean} True if callbacks are enabled.
3872 - */
3873 - isEnabled: function () {
3874 - return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());
3875 - },
3876 -
3877 - /**
3878 - * We listen for bubbled touch events on the document object.
3879 - *
3880 - * Firefox v8.01 (and possibly others) exhibited strange behavior when
3881 - * mounting `onmousemove` events at some node that was not the document
3882 - * element. The symptoms were that if your mouse is not moving over something
3883 - * contained within that mount point (for example on the background) the
3884 - * top-level listeners for `onmousemove` won't be called. However, if you
3885 - * register the `mousemove` on the document object, then it will of course
3886 - * catch all `mousemove`s. This along with iOS quirks, justifies restricting
3887 - * top-level listeners to the document object only, at least for these
3888 - * movement types of events and possibly all events.
3889 - *
3890 - * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
3891 - *
3892 - * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but
3893 - * they bubble to document.
3894 - *
3895 - * @param {string} registrationName Name of listener (e.g. `onClick`).
3896 - * @param {object} contentDocumentHandle Document which owns the container
3897 - */
3898 - listenTo: function (registrationName, contentDocumentHandle) {
3899 - var mountAt = contentDocumentHandle;
3900 - var isListening = getListeningForDocument(mountAt);
3901 - var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];
3902 -
3903 - for (var i = 0; i < dependencies.length; i++) {
3904 - var dependency = dependencies[i];
3905 - if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {
3906 - if (dependency === 'topWheel') {
3907 - if (isEventSupported('wheel')) {
3908 - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);
3909 - } else if (isEventSupported('mousewheel')) {
3910 - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);
3911 - } else {
3912 - // Firefox needs to capture a different mouse scroll event.
3913 - // @see http://www.quirksmode.org/dom/events/tests/scroll.html
3914 - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);
3915 - }
3916 - } else if (dependency === 'topScroll') {
3917 -
3918 - if (isEventSupported('scroll', true)) {
3919 - ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);
3920 - } else {
3921 - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);
3922 - }
3923 - } else if (dependency === 'topFocus' || dependency === 'topBlur') {
3924 -
3925 - if (isEventSupported('focus', true)) {
3926 - ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);
3927 - ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);
3928 - } else if (isEventSupported('focusin')) {
3929 - // IE has `focusin` and `focusout` events which bubble.
3930 - // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html
3931 - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);
3932 - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);
3933 - }
3934 -
3935 - // to make sure blur and focus event listeners are only attached once
3936 - isListening.topBlur = true;
3937 - isListening.topFocus = true;
3938 - } else if (topEventMapping.hasOwnProperty(dependency)) {
3939 - ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);
3940 - }
3941 -
3942 - isListening[dependency] = true;
3943 - }
3944 - }
3945 - },
3946 -
3947 - isListeningToAllDependencies: function (registrationName, mountAt) {
3948 - var isListening = getListeningForDocument(mountAt);
3949 - var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];
3950 - for (var i = 0; i < dependencies.length; i++) {
3951 - var dependency = dependencies[i];
3952 - if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {
3953 - return false;
3954 - }
3955 - }
3956 - return true;
3957 - },
3958 -
3959 - trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {
3960 - return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);
3961 - },
3962 -
3963 - trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {
3964 - return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);
3965 - },
3966 -
3967 - /**
3968 - * Protect against document.createEvent() returning null
3969 - * Some popup blocker extensions appear to do this:
3970 - * https://github.com/facebook/react/issues/6887
3971 - */
3972 - supportsEventPageXY: function () {
3973 - if (!document.createEvent) {
3974 - return false;
3975 - }
3976 - var ev = document.createEvent('MouseEvent');
3977 - return ev != null && 'pageX' in ev;
3978 - },
3979 -
3980 - /**
3981 - * Listens to window scroll and resize events. We cache scroll values so that
3982 - * application code can access them without triggering reflows.
3983 - *
3984 - * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when
3985 - * pageX/pageY isn't supported (legacy browsers).
3986 - *
3987 - * NOTE: Scroll events do not bubble.
3988 - *
3989 - * @see http://www.quirksmode.org/dom/events/scroll.html
3990 - */
3991 - ensureScrollValueMonitoring: function () {
3992 - if (hasEventPageXY === undefined) {
3993 - hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();
3994 - }
3995 - if (!hasEventPageXY && !isMonitoringScrollValue) {
3996 - var refresh = ViewportMetrics.refreshScrollValues;
3997 - ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);
3998 - isMonitoringScrollValue = true;
3999 - }
4000 - }
4001 -
4002 -});
4003 -
4004 -module.exports = ReactBrowserEventEmitter;
4005 -},{"106":106,"127":127,"130":130,"165":165,"18":18,"58":58}],26:[function(_dereq_,module,exports){
4006 -(function (process){
4007 -/**
4008 - * Copyright 2014-present, Facebook, Inc.
4009 - * All rights reserved.
4010 - *
4011 - * This source code is licensed under the BSD-style license found in the
4012 - * LICENSE file in the root directory of this source tree. An additional grant
4013 - * of patent rights can be found in the PATENTS file in the same directory.
4014 - *
4015 - */
4016 -
4017 -'use strict';
4018 -
4019 -var KeyEscapeUtils = _dereq_(23);
4020 -var ReactFeatureFlags = _dereq_(60);
4021 -var ReactReconciler = _dereq_(77);
4022 -
4023 -var instantiateReactComponent = _dereq_(129);
4024 -var shouldUpdateReactComponent = _dereq_(136);
4025 -var traverseAllChildren = _dereq_(137);
4026 -var warning = _dereq_(164);
4027 -
4028 -var ReactComponentTreeHook;
4029 -
4030 -if (typeof process !== 'undefined' && process.env && "development" === 'test') {
4031 - // Temporary hack.
4032 - // Inline requires don't work well with Jest:
4033 - // https://github.com/facebook/react/issues/7240
4034 - // Remove the inline requires when we don't need them anymore:
4035 - // https://github.com/facebook/react/pull/7178
4036 - ReactComponentTreeHook = _dereq_(139);
4037 -}
4038 -
4039 -function instantiateChild(childInstances, child, name, selfDebugID) {
4040 - // We found a component instance.
4041 - var keyUnique = childInstances[name] === undefined;
4042 - if ("development" !== 'production') {
4043 - if (!ReactComponentTreeHook) {
4044 - ReactComponentTreeHook = _dereq_(139);
4045 - }
4046 - if (!keyUnique) {
4047 - "development" !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;
4048 - }
4049 - }
4050 - if (child != null && keyUnique) {
4051 - childInstances[name] = instantiateReactComponent(child, true);
4052 - }
4053 -}
4054 -
4055 -/**
4056 - * ReactChildReconciler provides helpers for initializing or updating a set of
4057 - * children. Its output is suitable for passing it onto ReactMultiChild which
4058 - * does diffed reordering and insertion.
4059 - */
4060 -var ReactChildReconciler = {
4061 - /**
4062 - * Generates a "mount image" for each of the supplied children. In the case
4063 - * of `ReactDOMComponent`, a mount image is a string of markup.
4064 - *
4065 - * @param {?object} nestedChildNodes Nested child maps.
4066 - * @return {?object} A set of child instances.
4067 - * @internal
4068 - */
4069 - instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots
4070 - ) {
4071 - if (nestedChildNodes == null) {
4072 - return null;
4073 - }
4074 - var childInstances = {};
4075 -
4076 - if ("development" !== 'production') {
4077 - traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {
4078 - return instantiateChild(childInsts, child, name, selfDebugID);
4079 - }, childInstances);
4080 - } else {
4081 - traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);
4082 - }
4083 - return childInstances;
4084 - },
4085 -
4086 - /**
4087 - * Updates the rendered children and returns a new set of children.
4088 - *
4089 - * @param {?object} prevChildren Previously initialized set of children.
4090 - * @param {?object} nextChildren Flat child element maps.
4091 - * @param {ReactReconcileTransaction} transaction
4092 - * @param {object} context
4093 - * @return {?object} A new set of child instances.
4094 - * @internal
4095 - */
4096 - updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots
4097 - ) {
4098 - // We currently don't have a way to track moves here but if we use iterators
4099 - // instead of for..in we can zip the iterators and check if an item has
4100 - // moved.
4101 - // TODO: If nothing has changed, return the prevChildren object so that we
4102 - // can quickly bailout if nothing has changed.
4103 - if (!nextChildren && !prevChildren) {
4104 - return;
4105 - }
4106 - var name;
4107 - var prevChild;
4108 - for (name in nextChildren) {
4109 - if (!nextChildren.hasOwnProperty(name)) {
4110 - continue;
4111 - }
4112 - prevChild = prevChildren && prevChildren[name];
4113 - var prevElement = prevChild && prevChild._currentElement;
4114 - var nextElement = nextChildren[name];
4115 - if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {
4116 - ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);
4117 - nextChildren[name] = prevChild;
4118 - } else {
4119 - if (!ReactFeatureFlags.prepareNewChildrenBeforeUnmountInStack && prevChild) {
4120 - removedNodes[name] = ReactReconciler.getHostNode(prevChild);
4121 - ReactReconciler.unmountComponent(prevChild, false, /* safely */
4122 - false /* skipLifecycle */
4123 - );
4124 - }
4125 - // The child must be instantiated before it's mounted.
4126 - var nextChildInstance = instantiateReactComponent(nextElement, true);
4127 - nextChildren[name] = nextChildInstance;
4128 - // Creating mount image now ensures refs are resolved in right order
4129 - // (see https://github.com/facebook/react/pull/7101 for explanation).
4130 - var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);
4131 - mountImages.push(nextChildMountImage);
4132 - if (ReactFeatureFlags.prepareNewChildrenBeforeUnmountInStack && prevChild) {
4133 - removedNodes[name] = ReactReconciler.getHostNode(prevChild);
4134 - ReactReconciler.unmountComponent(prevChild, false, /* safely */
4135 - false /* skipLifecycle */
4136 - );
4137 - }
4138 - }
4139 - }
4140 - // Unmount children that are no longer present.
4141 - for (name in prevChildren) {
4142 - if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {
4143 - prevChild = prevChildren[name];
4144 - removedNodes[name] = ReactReconciler.getHostNode(prevChild);
4145 - ReactReconciler.unmountComponent(prevChild, false, /* safely */
4146 - false /* skipLifecycle */
4147 - );
4148 - }
4149 - }
4150 - },
4151 -
4152 - /**
4153 - * Unmounts all rendered children. This should be used to clean up children
4154 - * when this component is unmounted.
4155 - *
4156 - * @param {?object} renderedChildren Previously initialized set of children.
4157 - * @internal
4158 - */
4159 - unmountChildren: function (renderedChildren, safely, skipLifecycle) {
4160 - for (var name in renderedChildren) {
4161 - if (renderedChildren.hasOwnProperty(name)) {
4162 - var renderedChild = renderedChildren[name];
4163 - ReactReconciler.unmountComponent(renderedChild, safely, skipLifecycle);
4164 - }
4165 - }
4166 - }
4167 -
4168 -};
4169 -
4170 -module.exports = ReactChildReconciler;
4171 -}).call(this,undefined)
4172 -},{"129":129,"136":136,"137":137,"139":139,"164":164,"23":23,"60":60,"77":77}],27:[function(_dereq_,module,exports){
4173 -/**
4174 - * Copyright 2013-present, Facebook, Inc.
4175 - * All rights reserved.
4176 - *
4177 - * This source code is licensed under the BSD-style license found in the
4178 - * LICENSE file in the root directory of this source tree. An additional grant
4179 - * of patent rights can be found in the PATENTS file in the same directory.
4180 - *
4181 - */
4182 -
4183 -'use strict';
4184 -
4185 -var DOMChildrenOperations = _dereq_(8);
4186 -var ReactDOMIDOperations = _dereq_(39);
4187 -
4188 -/**
4189 - * Abstracts away all functionality of the reconciler that requires knowledge of
4190 - * the browser context. TODO: These callers should be refactored to avoid the
4191 - * need for this injection.
4192 - */
4193 -var ReactComponentBrowserEnvironment = {
4194 -
4195 - processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,
4196 -
4197 - replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup
4198 -
4199 -};
4200 -
4201 -module.exports = ReactComponentBrowserEnvironment;
4202 -},{"39":39,"8":8}],28:[function(_dereq_,module,exports){
4203 -/**
4204 - * Copyright 2014-present, Facebook, Inc.
4205 - * All rights reserved.
4206 - *
4207 - * This source code is licensed under the BSD-style license found in the
4208 - * LICENSE file in the root directory of this source tree. An additional grant
4209 - * of patent rights can be found in the PATENTS file in the same directory.
4210 - *
4211 - *
4212 - */
4213 -
4214 -'use strict';
4215 -
4216 -var _prodInvariant = _dereq_(133);
4217 -
4218 -var invariant = _dereq_(157);
4219 -
4220 -var injected = false;
4221 -
4222 -var ReactComponentEnvironment = {
4223 -
4224 - /**
4225 - * Optionally injectable hook for swapping out mount images in the middle of
4226 - * the tree.
4227 - */
4228 - replaceNodeWithMarkup: null,
4229 -
4230 - /**
4231 - * Optionally injectable hook for processing a queue of child updates. Will
4232 - * later move into MultiChildComponents.
4233 - */
4234 - processChildrenUpdates: null,
4235 -
4236 - injection: {
4237 - injectEnvironment: function (environment) {
4238 - !!injected ? "development" !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;
4239 - ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;
4240 - ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;
4241 - injected = true;
4242 - }
4243 - }
4244 -
4245 -};
4246 -
4247 -module.exports = ReactComponentEnvironment;
4248 -},{"133":133,"157":157}],29:[function(_dereq_,module,exports){
4249 -/**
4250 - * Copyright 2013-present, Facebook, Inc.
4251 - * All rights reserved.
4252 - *
4253 - * This source code is licensed under the BSD-style license found in the
4254 - * LICENSE file in the root directory of this source tree. An additional grant
4255 - * of patent rights can be found in the PATENTS file in the same directory.
4256 - *
4257 - */
4258 -
4259 -'use strict';
4260 -
4261 -var _prodInvariant = _dereq_(133),
4262 - _assign = _dereq_(165);
4263 -
4264 -var React = _dereq_(141);
4265 -var ReactComponentEnvironment = _dereq_(28);
4266 -var ReactCurrentOwner = _dereq_(140);
4267 -var ReactErrorUtils = _dereq_(57);
4268 -var ReactFeatureFlags = _dereq_(60);
4269 -var ReactInstanceMap = _dereq_(66);
4270 -var ReactInstrumentation = _dereq_(67);
4271 -var ReactNodeTypes = _dereq_(72);
4272 -var ReactReconciler = _dereq_(77);
4273 -
4274 -if ("development" !== 'production') {
4275 - var checkReactTypeSpec = _dereq_(109);
4276 -}
4277 -
4278 -var emptyObject = _dereq_(150);
4279 -var invariant = _dereq_(157);
4280 -var shallowEqual = _dereq_(163);
4281 -var shouldUpdateReactComponent = _dereq_(136);
4282 -var warning = _dereq_(164);
4283 -
4284 -var CompositeTypes = {
4285 - ImpureClass: 0,
4286 - PureClass: 1,
4287 - StatelessFunctional: 2
4288 -};
4289 -
4290 -function StatelessComponent(Component) {}
4291 -StatelessComponent.prototype.render = function () {
4292 - var Component = ReactInstanceMap.get(this)._currentElement.type;
4293 - var element = Component(this.props, this.context, this.updater);
4294 - warnIfInvalidElement(Component, element);
4295 - return element;
4296 -};
4297 -
4298 -function warnIfInvalidElement(Component, element) {
4299 - if ("development" !== 'production') {
4300 - "development" !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;
4301 - "development" !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;
4302 - }
4303 -}
4304 -
4305 -function shouldConstruct(Component) {
4306 - return !!(Component.prototype && Component.prototype.isReactComponent);
4307 -}
4308 -
4309 -function isPureComponent(Component) {
4310 - return !!(Component.prototype && Component.prototype.isPureReactComponent);
4311 -}
4312 -
4313 -// Separated into a function to contain deoptimizations caused by try/finally.
4314 -function measureLifeCyclePerf(fn, debugID, timerType) {
4315 - if (debugID === 0) {
4316 - // Top-level wrappers (see ReactMount) and empty components (see
4317 - // ReactDOMEmptyComponent) are invisible to hooks and devtools.
4318 - // Both are implementation details that should go away in the future.
4319 - return fn();
4320 - }
4321 -
4322 - ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);
4323 - try {
4324 - return fn();
4325 - } finally {
4326 - ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);
4327 - }
4328 -}
4329 -
4330 -/**
4331 - * ------------------ The Life-Cycle of a Composite Component ------------------
4332 - *
4333 - * - constructor: Initialization of state. The instance is now retained.
4334 - * - componentWillMount
4335 - * - render
4336 - * - [children's constructors]
4337 - * - [children's componentWillMount and render]
4338 - * - [children's componentDidMount]
4339 - * - componentDidMount
4340 - *
4341 - * Update Phases:
4342 - * - componentWillReceiveProps (only called if parent updated)
4343 - * - shouldComponentUpdate
4344 - * - componentWillUpdate
4345 - * - render
4346 - * - [children's constructors or receive props phases]
4347 - * - componentDidUpdate
4348 - *
4349 - * - componentWillUnmount
4350 - * - [children's componentWillUnmount]
4351 - * - [children destroyed]
4352 - * - (destroyed): The instance is now blank, released by React and ready for GC.
4353 - *
4354 - * -----------------------------------------------------------------------------
4355 - */
4356 -
4357 -/**
4358 - * An incrementing ID assigned to each component when it is mounted. This is
4359 - * used to enforce the order in which `ReactUpdates` updates dirty components.
4360 - *
4361 - * @private
4362 - */
4363 -var nextMountID = 1;
4364 -
4365 -/**
4366 - * @lends {ReactCompositeComponent.prototype}
4367 - */
4368 -var ReactCompositeComponent = {
4369 -
4370 - /**
4371 - * Base constructor for all composite component.
4372 - *
4373 - * @param {ReactElement} element
4374 - * @final
4375 - * @internal
4376 - */
4377 - construct: function (element) {
4378 - this._currentElement = element;
4379 - this._rootNodeID = 0;
4380 - this._compositeType = null;
4381 - this._instance = null;
4382 - this._hostParent = null;
4383 - this._hostContainerInfo = null;
4384 -
4385 - // See ReactUpdateQueue
4386 - this._updateBatchNumber = null;
4387 - this._pendingElement = null;
4388 - this._pendingStateQueue = null;
4389 - this._pendingReplaceState = false;
4390 - this._pendingForceUpdate = false;
4391 -
4392 - this._renderedNodeType = null;
4393 - this._renderedComponent = null;
4394 - this._context = null;
4395 - this._mountOrder = 0;
4396 - this._topLevelWrapper = null;
4397 -
4398 - // See ReactUpdates and ReactUpdateQueue.
4399 - this._pendingCallbacks = null;
4400 -
4401 - // ComponentWillUnmount shall only be called once
4402 - this._calledComponentWillUnmount = false;
4403 -
4404 - if ("development" !== 'production') {
4405 - this._warnedAboutRefsInRender = false;
4406 - }
4407 - },
4408 -
4409 - /**
4410 - * Initializes the component, renders markup, and registers event listeners.
4411 - *
4412 - * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
4413 - * @param {?object} hostParent
4414 - * @param {?object} hostContainerInfo
4415 - * @param {?object} context
4416 - * @return {?string} Rendered markup to be inserted into the DOM.
4417 - * @final
4418 - * @internal
4419 - */
4420 - mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
4421 - var _this = this;
4422 -
4423 - this._context = context;
4424 - this._mountOrder = nextMountID++;
4425 - this._hostParent = hostParent;
4426 - this._hostContainerInfo = hostContainerInfo;
4427 -
4428 - var publicProps = this._currentElement.props;
4429 - var publicContext = this._processContext(context);
4430 -
4431 - var Component = this._currentElement.type;
4432 -
4433 - var updateQueue = transaction.getUpdateQueue();
4434 -
4435 - // Initialize the public class
4436 - var doConstruct = shouldConstruct(Component);
4437 - var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);
4438 - var renderedElement;
4439 -
4440 - // Support functional components
4441 - if (!doConstruct && (inst == null || inst.render == null)) {
4442 - renderedElement = inst;
4443 - warnIfInvalidElement(Component, renderedElement);
4444 - !(inst === null || inst === false || React.isValidElement(inst)) ? "development" !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;
4445 - inst = new StatelessComponent(Component);
4446 - this._compositeType = CompositeTypes.StatelessFunctional;
4447 - } else {
4448 - if (isPureComponent(Component)) {
4449 - this._compositeType = CompositeTypes.PureClass;
4450 - } else {
4451 - this._compositeType = CompositeTypes.ImpureClass;
4452 - }
4453 - }
4454 -
4455 - if ("development" !== 'production') {
4456 - // This will throw later in _renderValidatedComponent, but add an early
4457 - // warning now to help debugging
4458 - if (inst.render == null) {
4459 - "development" !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;
4460 - }
4461 -
4462 - var propsMutated = inst.props !== publicProps;
4463 - var componentName = Component.displayName || Component.name || 'Component';
4464 -
4465 - "development" !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\'s constructor was passed.', componentName, componentName) : void 0;
4466 - }
4467 -
4468 - // These should be set up in the constructor, but as a convenience for
4469 - // simpler class abstractions, we set them up after the fact.
4470 - inst.props = publicProps;
4471 - inst.context = publicContext;
4472 - inst.refs = emptyObject;
4473 - inst.updater = updateQueue;
4474 -
4475 - this._instance = inst;
4476 -
4477 - // Store a reference from the instance back to the internal representation
4478 - ReactInstanceMap.set(inst, this);
4479 -
4480 - if ("development" !== 'production') {
4481 - // Since plain JS classes are defined without any special initialization
4482 - // logic, we can not catch common errors early. Therefore, we have to
4483 - // catch them here, at initialization time, instead.
4484 - "development" !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;
4485 - "development" !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;
4486 - "development" !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;
4487 - "development" !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;
4488 - "development" !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;
4489 - "development" !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;
4490 - "development" !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;
4491 - }
4492 -
4493 - var initialState = inst.state;
4494 - if (initialState === undefined) {
4495 - inst.state = initialState = null;
4496 - }
4497 - !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;
4498 -
4499 - this._pendingStateQueue = null;
4500 - this._pendingReplaceState = false;
4501 - this._pendingForceUpdate = false;
4502 -
4503 - if (inst.componentWillMount) {
4504 - if ("development" !== 'production') {
4505 - measureLifeCyclePerf(function () {
4506 - return inst.componentWillMount();
4507 - }, this._debugID, 'componentWillMount');
4508 - } else {
4509 - inst.componentWillMount();
4510 - }
4511 - // When mounting, calls to `setState` by `componentWillMount` will set
4512 - // `this._pendingStateQueue` without triggering a re-render.
4513 - if (this._pendingStateQueue) {
4514 - inst.state = this._processPendingState(inst.props, inst.context);
4515 - }
4516 - }
4517 -
4518 - var markup;
4519 - if (inst.unstable_handleError) {
4520 - markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);
4521 - } else {
4522 - markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
4523 - }
4524 -
4525 - if (inst.componentDidMount) {
4526 - if ("development" !== 'production') {
4527 - transaction.getReactMountReady().enqueue(function () {
4528 - measureLifeCyclePerf(function () {
4529 - return inst.componentDidMount();
4530 - }, _this._debugID, 'componentDidMount');
4531 - });
4532 - } else {
4533 - transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
4534 - }
4535 - }
4536 -
4537 - // setState callbacks during willMount should end up here
4538 - var callbacks = this._pendingCallbacks;
4539 - if (callbacks) {
4540 - this._pendingCallbacks = null;
4541 - for (var i = 0; i < callbacks.length; i++) {
4542 - transaction.getReactMountReady().enqueue(callbacks[i], inst);
4543 - }
4544 - }
4545 -
4546 - return markup;
4547 - },
4548 -
4549 - _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {
4550 - if ("development" !== 'production') {
4551 - ReactCurrentOwner.current = this;
4552 - try {
4553 - return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
4554 - } finally {
4555 - ReactCurrentOwner.current = null;
4556 - }
4557 - } else {
4558 - return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
4559 - }
4560 - },
4561 -
4562 - _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {
4563 - var Component = this._currentElement.type;
4564 -
4565 - if (doConstruct) {
4566 - if ("development" !== 'production') {
4567 - return measureLifeCyclePerf(function () {
4568 - return new Component(publicProps, publicContext, updateQueue);
4569 - }, this._debugID, 'ctor');
4570 - } else {
4571 - return new Component(publicProps, publicContext, updateQueue);
4572 - }
4573 - }
4574 -
4575 - // This can still be an instance in case of factory components
4576 - // but we'll count this as time spent rendering as the more common case.
4577 - if ("development" !== 'production') {
4578 - return measureLifeCyclePerf(function () {
4579 - return Component(publicProps, publicContext, updateQueue);
4580 - }, this._debugID, 'render');
4581 - } else {
4582 - return Component(publicProps, publicContext, updateQueue);
4583 - }
4584 - },
4585 -
4586 - performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
4587 - var markup;
4588 - var checkpoint = transaction.checkpoint();
4589 - try {
4590 - markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
4591 - } catch (e) {
4592 - // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint
4593 - transaction.rollback(checkpoint);
4594 - this._instance.unstable_handleError(e);
4595 - if (this._pendingStateQueue) {
4596 - this._instance.state = this._processPendingState(this._instance.props, this._instance.context);
4597 - }
4598 - checkpoint = transaction.checkpoint();
4599 - this._renderedComponent.unmountComponent(true, /* safely */
4600 - // Don't call componentWillUnmount() because they never fully mounted:
4601 - true /* skipLifecyle */
4602 - );
4603 - transaction.rollback(checkpoint);
4604 -
4605 - // Try again - we've informed the component about the error, so they can render an error message this time.
4606 - // If this throws again, the error will bubble up (and can be caught by a higher error boundary).
4607 - markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
4608 - }
4609 - return markup;
4610 - },
4611 -
4612 - performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
4613 - // If not a stateless component, we now render
4614 - if (renderedElement === undefined) {
4615 - renderedElement = this._renderValidatedComponent();
4616 - }
4617 -
4618 - var nodeType = ReactNodeTypes.getType(renderedElement);
4619 - this._renderedNodeType = nodeType;
4620 - var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */
4621 - );
4622 - this._renderedComponent = child;
4623 -
4624 - var debugID = 0;
4625 - if ("development" !== 'production') {
4626 - debugID = this._debugID;
4627 - }
4628 -
4629 - var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);
4630 -
4631 - if ("development" !== 'production') {
4632 - if (debugID !== 0) {
4633 - var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];
4634 - ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);
4635 - }
4636 - }
4637 -
4638 - return markup;
4639 - },
4640 -
4641 - getHostNode: function () {
4642 - return ReactReconciler.getHostNode(this._renderedComponent);
4643 - },
4644 -
4645 - /**
4646 - * Releases any resources allocated by `mountComponent`.
4647 - *
4648 - * @final
4649 - * @internal
4650 - */
4651 - unmountComponent: function (safely, skipLifecycle) {
4652 - if (!this._renderedComponent) {
4653 - return;
4654 - }
4655 -
4656 - var inst = this._instance;
4657 -
4658 - if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {
4659 - inst._calledComponentWillUnmount = true;
4660 -
4661 - if (safely) {
4662 - if (!skipLifecycle) {
4663 - var name = this.getName() + '.componentWillUnmount()';
4664 - ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));
4665 - }
4666 - } else {
4667 - if ("development" !== 'production') {
4668 - measureLifeCyclePerf(function () {
4669 - return inst.componentWillUnmount();
4670 - }, this._debugID, 'componentWillUnmount');
4671 - } else {
4672 - inst.componentWillUnmount();
4673 - }
4674 - }
4675 - }
4676 -
4677 - if (this._renderedComponent) {
4678 - ReactReconciler.unmountComponent(this._renderedComponent, safely, skipLifecycle);
4679 - this._renderedNodeType = null;
4680 - this._renderedComponent = null;
4681 - this._instance = null;
4682 - }
4683 -
4684 - // Reset pending fields
4685 - // Even if this component is scheduled for another update in ReactUpdates,
4686 - // it would still be ignored because these fields are reset.
4687 - this._pendingStateQueue = null;
4688 - this._pendingReplaceState = false;
4689 - this._pendingForceUpdate = false;
4690 - this._pendingCallbacks = null;
4691 - this._pendingElement = null;
4692 -
4693 - // These fields do not really need to be reset since this object is no
4694 - // longer accessible.
4695 - this._context = null;
4696 - this._rootNodeID = 0;
4697 - this._topLevelWrapper = null;
4698 -
4699 - // Delete the reference from the instance to this internal representation
4700 - // which allow the internals to be properly cleaned up even if the user
4701 - // leaks a reference to the public instance.
4702 - ReactInstanceMap.remove(inst);
4703 -
4704 - // Some existing components rely on inst.props even after they've been
4705 - // destroyed (in event handlers).
4706 - // TODO: inst.props = null;
4707 - // TODO: inst.state = null;
4708 - // TODO: inst.context = null;
4709 - },
4710 -
4711 - /**
4712 - * Filters the context object to only contain keys specified in
4713 - * `contextTypes`
4714 - *
4715 - * @param {object} context
4716 - * @return {?object}
4717 - * @private
4718 - */
4719 - _maskContext: function (context) {
4720 - var Component = this._currentElement.type;
4721 - var contextTypes = Component.contextTypes;
4722 - if (!contextTypes) {
4723 - return emptyObject;
4724 - }
4725 - var maskedContext = {};
4726 - for (var contextName in contextTypes) {
4727 - maskedContext[contextName] = context[contextName];
4728 - }
4729 - return maskedContext;
4730 - },
4731 -
4732 - /**
4733 - * Filters the context object to only contain keys specified in
4734 - * `contextTypes`, and asserts that they are valid.
4735 - *
4736 - * @param {object} context
4737 - * @return {?object}
4738 - * @private
4739 - */
4740 - _processContext: function (context) {
4741 - var maskedContext = this._maskContext(context);
4742 - if ("development" !== 'production') {
4743 - var Component = this._currentElement.type;
4744 - if (Component.contextTypes) {
4745 - this._checkContextTypes(Component.contextTypes, maskedContext, 'context');
4746 - }
4747 - }
4748 - return maskedContext;
4749 - },
4750 -
4751 - /**
4752 - * @param {object} currentContext
4753 - * @return {object}
4754 - * @private
4755 - */
4756 - _processChildContext: function (currentContext) {
4757 - var Component = this._currentElement.type;
4758 - var inst = this._instance;
4759 - var childContext;
4760 -
4761 - if (typeof inst.getChildContext === 'function') {
4762 - if ("development" !== 'production') {
4763 - ReactInstrumentation.debugTool.onBeginProcessingChildContext();
4764 - try {
4765 - childContext = inst.getChildContext();
4766 - } finally {
4767 - ReactInstrumentation.debugTool.onEndProcessingChildContext();
4768 - }
4769 - } else {
4770 - childContext = inst.getChildContext();
4771 - }
4772 -
4773 - !(typeof Component.childContextTypes === 'object') ? "development" !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;
4774 - if ("development" !== 'production') {
4775 - this._checkContextTypes(Component.childContextTypes, childContext, 'childContext');
4776 - }
4777 - for (var name in childContext) {
4778 - !(name in Component.childContextTypes) ? "development" !== 'production' ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;
4779 - }
4780 - return _assign({}, currentContext, childContext);
4781 - }
4782 - return currentContext;
4783 - },
4784 -
4785 - /**
4786 - * Assert that the context types are valid
4787 - *
4788 - * @param {object} typeSpecs Map of context field to a ReactPropType
4789 - * @param {object} values Runtime values that need to be type-checked
4790 - * @param {string} location e.g. "prop", "context", "child context"
4791 - * @private
4792 - */
4793 - _checkContextTypes: function (typeSpecs, values, location) {
4794 - if ("development" !== 'production') {
4795 - checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);
4796 - }
4797 - },
4798 -
4799 - receiveComponent: function (nextElement, transaction, nextContext) {
4800 - var prevElement = this._currentElement;
4801 - var prevContext = this._context;
4802 -
4803 - this._pendingElement = null;
4804 -
4805 - this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);
4806 - },
4807 -
4808 - /**
4809 - * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`
4810 - * is set, update the component.
4811 - *
4812 - * @param {ReactReconcileTransaction} transaction
4813 - * @internal
4814 - */
4815 - performUpdateIfNecessary: function (transaction) {
4816 - if (this._pendingElement != null) {
4817 - ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);
4818 - } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {
4819 - this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);
4820 - } else {
4821 - var callbacks = this._pendingCallbacks;
4822 - this._pendingCallbacks = null;
4823 - if (callbacks) {
4824 - for (var j = 0; j < callbacks.length; j++) {
4825 - transaction.getReactMountReady().enqueue(callbacks[j], this.getPublicInstance());
4826 - }
4827 - }
4828 - this._updateBatchNumber = null;
4829 - }
4830 - },
4831 -
4832 - /**
4833 - * Perform an update to a mounted component. The componentWillReceiveProps and
4834 - * shouldComponentUpdate methods are called, then (assuming the update isn't
4835 - * skipped) the remaining update lifecycle methods are called and the DOM
4836 - * representation is updated.
4837 - *
4838 - * By default, this implements React's rendering and reconciliation algorithm.
4839 - * Sophisticated clients may wish to override this.
4840 - *
4841 - * @param {ReactReconcileTransaction} transaction
4842 - * @param {ReactElement} prevParentElement
4843 - * @param {ReactElement} nextParentElement
4844 - * @internal
4845 - * @overridable
4846 - */
4847 - updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {
4848 - var inst = this._instance;
4849 - !(inst != null) ? "development" !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;
4850 -
4851 - var willReceive = false;
4852 - var nextContext;
4853 -
4854 - // Determine if the context has changed or not
4855 - if (this._context === nextUnmaskedContext) {
4856 - nextContext = inst.context;
4857 - } else {
4858 - nextContext = this._processContext(nextUnmaskedContext);
4859 - willReceive = true;
4860 - }
4861 -
4862 - var prevProps = prevParentElement.props;
4863 - var nextProps = nextParentElement.props;
4864 -
4865 - // Not a simple state update but a props update
4866 - if (prevParentElement !== nextParentElement) {
4867 - willReceive = true;
4868 - }
4869 -
4870 - // An update here will schedule an update but immediately set
4871 - // _pendingStateQueue which will ensure that any state updates gets
4872 - // immediately reconciled instead of waiting for the next batch.
4873 - if (willReceive && inst.componentWillReceiveProps) {
4874 - if ("development" !== 'production') {
4875 - measureLifeCyclePerf(function () {
4876 - return inst.componentWillReceiveProps(nextProps, nextContext);
4877 - }, this._debugID, 'componentWillReceiveProps');
4878 - } else {
4879 - inst.componentWillReceiveProps(nextProps, nextContext);
4880 - }
4881 - }
4882 -
4883 - // If updating happens to enqueue any new updates, we shouldn't execute new
4884 - // callbacks until the next render happens, so stash the callbacks first.
4885 - var callbacks = this._pendingCallbacks;
4886 - this._pendingCallbacks = null;
4887 -
4888 - var nextState = this._processPendingState(nextProps, nextContext);
4889 - var shouldUpdate = true;
4890 -
4891 - if (!this._pendingForceUpdate) {
4892 - if (inst.shouldComponentUpdate) {
4893 - if ("development" !== 'production') {
4894 - shouldUpdate = measureLifeCyclePerf(function () {
4895 - return inst.shouldComponentUpdate(nextProps, nextState, nextContext);
4896 - }, this._debugID, 'shouldComponentUpdate');
4897 - } else {
4898 - shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);
4899 - }
4900 - } else {
4901 - if (this._compositeType === CompositeTypes.PureClass) {
4902 - shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);
4903 - }
4904 - }
4905 - }
4906 -
4907 - if ("development" !== 'production') {
4908 - "development" !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;
4909 - }
4910 -
4911 - this._updateBatchNumber = null;
4912 - if (shouldUpdate) {
4913 - this._pendingForceUpdate = false;
4914 - // Will set `this.props`, `this.state` and `this.context`.
4915 - this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);
4916 - } else {
4917 - // If it's determined that a component should not update, we still want
4918 - // to set props and state but we shortcut the rest of the update.
4919 - this._currentElement = nextParentElement;
4920 - this._context = nextUnmaskedContext;
4921 - inst.props = nextProps;
4922 - inst.state = nextState;
4923 - inst.context = nextContext;
4924 - }
4925 -
4926 - if (callbacks) {
4927 - for (var j = 0; j < callbacks.length; j++) {
4928 - transaction.getReactMountReady().enqueue(callbacks[j], this.getPublicInstance());
4929 - }
4930 - }
4931 - },
4932 -
4933 - _processPendingState: function (props, context) {
4934 - var inst = this._instance;
4935 - var queue = this._pendingStateQueue;
4936 - var replace = this._pendingReplaceState;
4937 - this._pendingReplaceState = false;
4938 - this._pendingStateQueue = null;
4939 -
4940 - if (!queue) {
4941 - return inst.state;
4942 - }
4943 -
4944 - if (replace && queue.length === 1) {
4945 - return queue[0];
4946 - }
4947 -
4948 - var nextState = _assign({}, replace ? queue[0] : inst.state);
4949 - for (var i = replace ? 1 : 0; i < queue.length; i++) {
4950 - var partial = queue[i];
4951 - _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);
4952 - }
4953 -
4954 - return nextState;
4955 - },
4956 -
4957 - /**
4958 - * Merges new props and state, notifies delegate methods of update and
4959 - * performs update.
4960 - *
4961 - * @param {ReactElement} nextElement Next element
4962 - * @param {object} nextProps Next public object to set as properties.
4963 - * @param {?object} nextState Next object to set as state.
4964 - * @param {?object} nextContext Next public object to set as context.
4965 - * @param {ReactReconcileTransaction} transaction
4966 - * @param {?object} unmaskedContext
4967 - * @private
4968 - */
4969 - _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {
4970 - var _this2 = this;
4971 -
4972 - var inst = this._instance;
4973 -
4974 - var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);
4975 - var prevProps;
4976 - var prevState;
4977 - var prevContext;
4978 - if (hasComponentDidUpdate) {
4979 - prevProps = inst.props;
4980 - prevState = inst.state;
4981 - prevContext = inst.context;
4982 - }
4983 -
4984 - if (inst.componentWillUpdate) {
4985 - if ("development" !== 'production') {
4986 - measureLifeCyclePerf(function () {
4987 - return inst.componentWillUpdate(nextProps, nextState, nextContext);
4988 - }, this._debugID, 'componentWillUpdate');
4989 - } else {
4990 - inst.componentWillUpdate(nextProps, nextState, nextContext);
4991 - }
4992 - }
4993 -
4994 - this._currentElement = nextElement;
4995 - this._context = unmaskedContext;
4996 - inst.props = nextProps;
4997 - inst.state = nextState;
4998 - inst.context = nextContext;
4999 -

This file is too large to show in full.

fixtures/dom/public/react.js deleted
-3859
@@ -1,3859 +0,0 @@
1 - /**
2 - * React v16.0.0-alpha
3 - */
4 -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.React = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
5 -/**
6 - * Copyright 2013-present, Facebook, Inc.
7 - * All rights reserved.
8 - *
9 - * This source code is licensed under the BSD-style license found in the
10 - * LICENSE file in the root directory of this source tree. An additional grant
11 - * of patent rights can be found in the PATENTS file in the same directory.
12 - *
13 - *
14 - */
15 -
16 -'use strict';
17 -
18 -/**
19 - * Escape and wrap key so it is safe to use as a reactid
20 - *
21 - * @param {string} key to be escaped.
22 - * @return {string} the escaped key.
23 - */
24 -
25 -function escape(key) {
26 - var escapeRegex = /[=:]/g;
27 - var escaperLookup = {
28 - '=': '=0',
29 - ':': '=2'
30 - };
31 - var escapedString = ('' + key).replace(escapeRegex, function (match) {
32 - return escaperLookup[match];
33 - });
34 -
35 - return '$' + escapedString;
36 -}
37 -
38 -/**
39 - * Unescape and unwrap key for human-readable display
40 - *
41 - * @param {string} key to unescape.
42 - * @return {string} the unescaped key.
43 - */
44 -function unescape(key) {
45 - var unescapeRegex = /(=0|=2)/g;
46 - var unescaperLookup = {
47 - '=0': '=',
48 - '=2': ':'
49 - };
50 - var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
51 -
52 - return ('' + keySubstring).replace(unescapeRegex, function (match) {
53 - return unescaperLookup[match];
54 - });
55 -}
56 -
57 -var KeyEscapeUtils = {
58 - escape: escape,
59 - unescape: unescape
60 -};
61 -
62 -module.exports = KeyEscapeUtils;
63 -},{}],2:[function(_dereq_,module,exports){
64 -/**
65 - * Copyright 2013-present, Facebook, Inc.
66 - * All rights reserved.
67 - *
68 - * This source code is licensed under the BSD-style license found in the
69 - * LICENSE file in the root directory of this source tree. An additional grant
70 - * of patent rights can be found in the PATENTS file in the same directory.
71 - *
72 - *
73 - */
74 -
75 -'use strict';
76 -
77 -var _prodInvariant = _dereq_(25);
78 -
79 -var invariant = _dereq_(29);
80 -
81 -/**
82 - * Static poolers. Several custom versions for each potential number of
83 - * arguments. A completely generic pooler is easy to implement, but would
84 - * require accessing the `arguments` object. In each of these, `this` refers to
85 - * the Class itself, not an instance. If any others are needed, simply add them
86 - * here, or in their own files.
87 - */
88 -var oneArgumentPooler = function (copyFieldsFrom) {
89 - var Klass = this;
90 - if (Klass.instancePool.length) {
91 - var instance = Klass.instancePool.pop();
92 - Klass.call(instance, copyFieldsFrom);
93 - return instance;
94 - } else {
95 - return new Klass(copyFieldsFrom);
96 - }
97 -};
98 -
99 -var twoArgumentPooler = function (a1, a2) {
100 - var Klass = this;
101 - if (Klass.instancePool.length) {
102 - var instance = Klass.instancePool.pop();
103 - Klass.call(instance, a1, a2);
104 - return instance;
105 - } else {
106 - return new Klass(a1, a2);
107 - }
108 -};
109 -
110 -var threeArgumentPooler = function (a1, a2, a3) {
111 - var Klass = this;
112 - if (Klass.instancePool.length) {
113 - var instance = Klass.instancePool.pop();
114 - Klass.call(instance, a1, a2, a3);
115 - return instance;
116 - } else {
117 - return new Klass(a1, a2, a3);
118 - }
119 -};
120 -
121 -var fourArgumentPooler = function (a1, a2, a3, a4) {
122 - var Klass = this;
123 - if (Klass.instancePool.length) {
124 - var instance = Klass.instancePool.pop();
125 - Klass.call(instance, a1, a2, a3, a4);
126 - return instance;
127 - } else {
128 - return new Klass(a1, a2, a3, a4);
129 - }
130 -};
131 -
132 -var standardReleaser = function (instance) {
133 - var Klass = this;
134 - !(instance instanceof Klass) ? "development" !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;
135 - instance.destructor();
136 - if (Klass.instancePool.length < Klass.poolSize) {
137 - Klass.instancePool.push(instance);
138 - }
139 -};
140 -
141 -var DEFAULT_POOL_SIZE = 10;
142 -var DEFAULT_POOLER = oneArgumentPooler;
143 -
144 -/**
145 - * Augments `CopyConstructor` to be a poolable class, augmenting only the class
146 - * itself (statically) not adding any prototypical fields. Any CopyConstructor
147 - * you give this may have a `poolSize` property, and will look for a
148 - * prototypical `destructor` on instances.
149 - *
150 - * @param {Function} CopyConstructor Constructor that can be used to reset.
151 - * @param {Function} pooler Customizable pooler.
152 - */
153 -var addPoolingTo = function (CopyConstructor, pooler) {
154 - // Casting as any so that flow ignores the actual implementation and trusts
155 - // it to match the type we declared
156 - var NewKlass = CopyConstructor;
157 - NewKlass.instancePool = [];
158 - NewKlass.getPooled = pooler || DEFAULT_POOLER;
159 - if (!NewKlass.poolSize) {
160 - NewKlass.poolSize = DEFAULT_POOL_SIZE;
161 - }
162 - NewKlass.release = standardReleaser;
163 - return NewKlass;
164 -};
165 -
166 -var PooledClass = {
167 - addPoolingTo: addPoolingTo,
168 - oneArgumentPooler: oneArgumentPooler,
169 - twoArgumentPooler: twoArgumentPooler,
170 - threeArgumentPooler: threeArgumentPooler,
171 - fourArgumentPooler: fourArgumentPooler
172 -};
173 -
174 -module.exports = PooledClass;
175 -},{"25":25,"29":29}],3:[function(_dereq_,module,exports){
176 -/**
177 - * Copyright 2013-present, Facebook, Inc.
178 - * All rights reserved.
179 - *
180 - * This source code is licensed under the BSD-style license found in the
181 - * LICENSE file in the root directory of this source tree. An additional grant
182 - * of patent rights can be found in the PATENTS file in the same directory.
183 - *
184 - */
185 -
186 -'use strict';
187 -
188 -var _assign = _dereq_(31);
189 -
190 -var ReactChildren = _dereq_(4);
191 -var ReactComponent = _dereq_(6);
192 -var ReactPureComponent = _dereq_(16);
193 -var ReactClass = _dereq_(5);
194 -var ReactDOMFactories = _dereq_(9);
195 -var ReactElement = _dereq_(10);
196 -var ReactPropTypes = _dereq_(15);
197 -var ReactVersion = _dereq_(19);
198 -
199 -var onlyChild = _dereq_(24);
200 -var warning = _dereq_(30);
201 -
202 -var createElement = ReactElement.createElement;
203 -var createFactory = ReactElement.createFactory;
204 -var cloneElement = ReactElement.cloneElement;
205 -
206 -if ("development" !== 'production') {
207 - var ReactElementValidator = _dereq_(12);
208 - createElement = ReactElementValidator.createElement;
209 - createFactory = ReactElementValidator.createFactory;
210 - cloneElement = ReactElementValidator.cloneElement;
211 -}
212 -
213 -var __spread = _assign;
214 -
215 -if ("development" !== 'production') {
216 - var warned = false;
217 - __spread = function () {
218 - "development" !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;
219 - warned = true;
220 - return _assign.apply(null, arguments);
221 - };
222 -}
223 -
224 -var React = {
225 -
226 - // Modern
227 -
228 - Children: {
229 - map: ReactChildren.map,
230 - forEach: ReactChildren.forEach,
231 - count: ReactChildren.count,
232 - toArray: ReactChildren.toArray,
233 - only: onlyChild
234 - },
235 -
236 - Component: ReactComponent,
237 - PureComponent: ReactPureComponent,
238 -
239 - createElement: createElement,
240 - cloneElement: cloneElement,
241 - isValidElement: ReactElement.isValidElement,
242 -
243 - // Classic
244 -
245 - PropTypes: ReactPropTypes,
246 - createClass: ReactClass.createClass,
247 - createFactory: createFactory,
248 - createMixin: function (mixin) {
249 - // Currently a noop. Will be used to validate and trace mixins.
250 - return mixin;
251 - },
252 -
253 - // This looks DOM specific but these are actually isomorphic helpers
254 - // since they are just generating DOM strings.
255 - DOM: ReactDOMFactories,
256 -
257 - version: ReactVersion,
258 -
259 - // Deprecated hook for JSX spread, don't use this for anything.
260 - __spread: __spread
261 -};
262 -
263 -module.exports = React;
264 -},{"10":10,"12":12,"15":15,"16":16,"19":19,"24":24,"30":30,"31":31,"4":4,"5":5,"6":6,"9":9}],4:[function(_dereq_,module,exports){
265 -/**
266 - * Copyright 2013-present, Facebook, Inc.
267 - * All rights reserved.
268 - *
269 - * This source code is licensed under the BSD-style license found in the
270 - * LICENSE file in the root directory of this source tree. An additional grant
271 - * of patent rights can be found in the PATENTS file in the same directory.
272 - *
273 - */
274 -
275 -'use strict';
276 -
277 -var PooledClass = _dereq_(2);
278 -var ReactElement = _dereq_(10);
279 -
280 -var emptyFunction = _dereq_(27);
281 -var traverseAllChildren = _dereq_(26);
282 -
283 -var twoArgumentPooler = PooledClass.twoArgumentPooler;
284 -var fourArgumentPooler = PooledClass.fourArgumentPooler;
285 -
286 -var userProvidedKeyEscapeRegex = /\/+/g;
287 -function escapeUserProvidedKey(text) {
288 - return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');
289 -}
290 -
291 -/**
292 - * PooledClass representing the bookkeeping associated with performing a child
293 - * traversal. Allows avoiding binding callbacks.
294 - *
295 - * @constructor ForEachBookKeeping
296 - * @param {!function} forEachFunction Function to perform traversal with.
297 - * @param {?*} forEachContext Context to perform context with.
298 - */
299 -function ForEachBookKeeping(forEachFunction, forEachContext) {
300 - this.func = forEachFunction;
301 - this.context = forEachContext;
302 - this.count = 0;
303 -}
304 -ForEachBookKeeping.prototype.destructor = function () {
305 - this.func = null;
306 - this.context = null;
307 - this.count = 0;
308 -};
309 -PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);
310 -
311 -function forEachSingleChild(bookKeeping, child, name) {
312 - var func = bookKeeping.func,
313 - context = bookKeeping.context;
314 -
315 - func.call(context, child, bookKeeping.count++);
316 -}
317 -
318 -/**
319 - * Iterates through children that are typically specified as `props.children`.
320 - *
321 - * See https://facebook.github.io/react/docs/react-api.html#react.children.foreach
322 - *
323 - * The provided forEachFunc(child, index) will be called for each
324 - * leaf child.
325 - *
326 - * @param {?*} children Children tree container.
327 - * @param {function(*, int)} forEachFunc
328 - * @param {*} forEachContext Context for forEachContext.
329 - */
330 -function forEachChildren(children, forEachFunc, forEachContext) {
331 - if (children == null) {
332 - return children;
333 - }
334 - var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);
335 - traverseAllChildren(children, forEachSingleChild, traverseContext);
336 - ForEachBookKeeping.release(traverseContext);
337 -}
338 -
339 -/**
340 - * PooledClass representing the bookkeeping associated with performing a child
341 - * mapping. Allows avoiding binding callbacks.
342 - *
343 - * @constructor MapBookKeeping
344 - * @param {!*} mapResult Object containing the ordered map of results.
345 - * @param {!function} mapFunction Function to perform mapping with.
346 - * @param {?*} mapContext Context to perform mapping with.
347 - */
348 -function MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {
349 - this.result = mapResult;
350 - this.keyPrefix = keyPrefix;
351 - this.func = mapFunction;
352 - this.context = mapContext;
353 - this.count = 0;
354 -}
355 -MapBookKeeping.prototype.destructor = function () {
356 - this.result = null;
357 - this.keyPrefix = null;
358 - this.func = null;
359 - this.context = null;
360 - this.count = 0;
361 -};
362 -PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);
363 -
364 -function mapSingleChildIntoContext(bookKeeping, child, childKey) {
365 - var result = bookKeeping.result,
366 - keyPrefix = bookKeeping.keyPrefix,
367 - func = bookKeeping.func,
368 - context = bookKeeping.context;
369 -
370 -
371 - var mappedChild = func.call(context, child, bookKeeping.count++);
372 - if (Array.isArray(mappedChild)) {
373 - mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);
374 - } else if (mappedChild != null) {
375 - if (ReactElement.isValidElement(mappedChild)) {
376 - mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,
377 - // Keep both the (mapped) and old keys if they differ, just as
378 - // traverseAllChildren used to do for objects as children
379 - keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);
380 - }
381 - result.push(mappedChild);
382 - }
383 -}
384 -
385 -function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
386 - var escapedPrefix = '';
387 - if (prefix != null) {
388 - escapedPrefix = escapeUserProvidedKey(prefix) + '/';
389 - }
390 - var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);
391 - traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);
392 - MapBookKeeping.release(traverseContext);
393 -}
394 -
395 -/**
396 - * Maps children that are typically specified as `props.children`.
397 - *
398 - * See https://facebook.github.io/react/docs/react-api.html#react.children.map
399 - *
400 - * The provided mapFunction(child, key, index) will be called for each
401 - * leaf child.
402 - *
403 - * @param {?*} children Children tree container.
404 - * @param {function(*, int)} func The map function.
405 - * @param {*} context Context for mapFunction.
406 - * @return {object} Object containing the ordered map of results.
407 - */
408 -function mapChildren(children, func, context) {
409 - if (children == null) {
410 - return children;
411 - }
412 - var result = [];
413 - mapIntoWithKeyPrefixInternal(children, result, null, func, context);
414 - return result;
415 -}
416 -
417 -function forEachSingleChildDummy(traverseContext, child, name) {
418 - return null;
419 -}
420 -
421 -/**
422 - * Count the number of children that are typically specified as
423 - * `props.children`.
424 - *
425 - * See https://facebook.github.io/react/docs/react-api.html#react.children.count
426 - *
427 - * @param {?*} children Children tree container.
428 - * @return {number} The number of children.
429 - */
430 -function countChildren(children, context) {
431 - return traverseAllChildren(children, forEachSingleChildDummy, null);
432 -}
433 -
434 -/**
435 - * Flatten a children object (typically specified as `props.children`) and
436 - * return an array with appropriately re-keyed children.
437 - *
438 - * See https://facebook.github.io/react/docs/react-api.html#react.children.toarray
439 - */
440 -function toArray(children) {
441 - var result = [];
442 - mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);
443 - return result;
444 -}
445 -
446 -var ReactChildren = {
447 - forEach: forEachChildren,
448 - map: mapChildren,
449 - mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,
450 - count: countChildren,
451 - toArray: toArray
452 -};
453 -
454 -module.exports = ReactChildren;
455 -},{"10":10,"2":2,"26":26,"27":27}],5:[function(_dereq_,module,exports){
456 -/**
457 - * Copyright 2013-present, Facebook, Inc.
458 - * All rights reserved.
459 - *
460 - * This source code is licensed under the BSD-style license found in the
461 - * LICENSE file in the root directory of this source tree. An additional grant
462 - * of patent rights can be found in the PATENTS file in the same directory.
463 - *
464 - */
465 -
466 -'use strict';
467 -
468 -var _prodInvariant = _dereq_(25),
469 - _assign = _dereq_(31);
470 -
471 -var ReactComponent = _dereq_(6);
472 -var ReactElement = _dereq_(10);
473 -var ReactPropTypeLocationNames = _dereq_(14);
474 -var ReactNoopUpdateQueue = _dereq_(13);
475 -
476 -var emptyObject = _dereq_(28);
477 -var invariant = _dereq_(29);
478 -var warning = _dereq_(30);
479 -
480 -var MIXINS_KEY = 'mixins';
481 -
482 -// Helper function to allow the creation of anonymous functions which do not
483 -// have .name set to the name of the variable being assigned to.
484 -function identity(fn) {
485 - return fn;
486 -}
487 -
488 -/**
489 - * Policies that describe methods in `ReactClassInterface`.
490 - */
491 -
492 -
493 -/**
494 - * Composite components are higher-level components that compose other composite
495 - * or host components.
496 - *
497 - * To create a new type of `ReactClass`, pass a specification of
498 - * your new class to `React.createClass`. The only requirement of your class
499 - * specification is that you implement a `render` method.
500 - *
501 - * var MyComponent = React.createClass({
502 - * render: function() {
503 - * return <div>Hello World</div>;
504 - * }
505 - * });
506 - *
507 - * The class specification supports a specific protocol of methods that have
508 - * special meaning (e.g. `render`). See `ReactClassInterface` for
509 - * more the comprehensive protocol. Any other properties and methods in the
510 - * class specification will be available on the prototype.
511 - *
512 - * @interface ReactClassInterface
513 - * @internal
514 - */
515 -var ReactClassInterface = {
516 -
517 - /**
518 - * An array of Mixin objects to include when defining your component.
519 - *
520 - * @type {array}
521 - * @optional
522 - */
523 - mixins: 'DEFINE_MANY',
524 -
525 - /**
526 - * An object containing properties and methods that should be defined on
527 - * the component's constructor instead of its prototype (static methods).
528 - *
529 - * @type {object}
530 - * @optional
531 - */
532 - statics: 'DEFINE_MANY',
533 -
534 - /**
535 - * Definition of prop types for this component.
536 - *
537 - * @type {object}
538 - * @optional
539 - */
540 - propTypes: 'DEFINE_MANY',
541 -
542 - /**
543 - * Definition of context types for this component.
544 - *
545 - * @type {object}
546 - * @optional
547 - */
548 - contextTypes: 'DEFINE_MANY',
549 -
550 - /**
551 - * Definition of context types this component sets for its children.
552 - *
553 - * @type {object}
554 - * @optional
555 - */
556 - childContextTypes: 'DEFINE_MANY',
557 -
558 - // ==== Definition methods ====
559 -
560 - /**
561 - * Invoked when the component is mounted. Values in the mapping will be set on
562 - * `this.props` if that prop is not specified (i.e. using an `in` check).
563 - *
564 - * This method is invoked before `getInitialState` and therefore cannot rely
565 - * on `this.state` or use `this.setState`.
566 - *
567 - * @return {object}
568 - * @optional
569 - */
570 - getDefaultProps: 'DEFINE_MANY_MERGED',
571 -
572 - /**
573 - * Invoked once before the component is mounted. The return value will be used
574 - * as the initial value of `this.state`.
575 - *
576 - * getInitialState: function() {
577 - * return {
578 - * isOn: false,
579 - * fooBaz: new BazFoo()
580 - * }
581 - * }
582 - *
583 - * @return {object}
584 - * @optional
585 - */
586 - getInitialState: 'DEFINE_MANY_MERGED',
587 -
588 - /**
589 - * @return {object}
590 - * @optional
591 - */
592 - getChildContext: 'DEFINE_MANY_MERGED',
593 -
594 - /**
595 - * Uses props from `this.props` and state from `this.state` to render the
596 - * structure of the component.
597 - *
598 - * No guarantees are made about when or how often this method is invoked, so
599 - * it must not have side effects.
600 - *
601 - * render: function() {
602 - * var name = this.props.name;
603 - * return <div>Hello, {name}!</div>;
604 - * }
605 - *
606 - * @return {ReactComponent}
607 - * @nosideeffects
608 - * @required
609 - */
610 - render: 'DEFINE_ONCE',
611 -
612 - // ==== Delegate methods ====
613 -
614 - /**
615 - * Invoked when the component is initially created and about to be mounted.
616 - * This may have side effects, but any external subscriptions or data created
617 - * by this method must be cleaned up in `componentWillUnmount`.
618 - *
619 - * @optional
620 - */
621 - componentWillMount: 'DEFINE_MANY',
622 -
623 - /**
624 - * Invoked when the component has been mounted and has a DOM representation.
625 - * However, there is no guarantee that the DOM node is in the document.
626 - *
627 - * Use this as an opportunity to operate on the DOM when the component has
628 - * been mounted (initialized and rendered) for the first time.
629 - *
630 - * @param {DOMElement} rootNode DOM element representing the component.
631 - * @optional
632 - */
633 - componentDidMount: 'DEFINE_MANY',
634 -
635 - /**
636 - * Invoked before the component receives new props.
637 - *
638 - * Use this as an opportunity to react to a prop transition by updating the
639 - * state using `this.setState`. Current props are accessed via `this.props`.
640 - *
641 - * componentWillReceiveProps: function(nextProps, nextContext) {
642 - * this.setState({
643 - * likesIncreasing: nextProps.likeCount > this.props.likeCount
644 - * });
645 - * }
646 - *
647 - * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop
648 - * transition may cause a state change, but the opposite is not true. If you
649 - * need it, you are probably looking for `componentWillUpdate`.
650 - *
651 - * @param {object} nextProps
652 - * @optional
653 - */
654 - componentWillReceiveProps: 'DEFINE_MANY',
655 -
656 - /**
657 - * Invoked while deciding if the component should be updated as a result of
658 - * receiving new props, state and/or context.
659 - *
660 - * Use this as an opportunity to `return false` when you're certain that the
661 - * transition to the new props/state/context will not require a component
662 - * update.
663 - *
664 - * shouldComponentUpdate: function(nextProps, nextState, nextContext) {
665 - * return !equal(nextProps, this.props) ||
666 - * !equal(nextState, this.state) ||
667 - * !equal(nextContext, this.context);
668 - * }
669 - *
670 - * @param {object} nextProps
671 - * @param {?object} nextState
672 - * @param {?object} nextContext
673 - * @return {boolean} True if the component should update.
674 - * @optional
675 - */
676 - shouldComponentUpdate: 'DEFINE_ONCE',
677 -
678 - /**
679 - * Invoked when the component is about to update due to a transition from
680 - * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`
681 - * and `nextContext`.
682 - *
683 - * Use this as an opportunity to perform preparation before an update occurs.
684 - *
685 - * NOTE: You **cannot** use `this.setState()` in this method.
686 - *
687 - * @param {object} nextProps
688 - * @param {?object} nextState
689 - * @param {?object} nextContext
690 - * @param {ReactReconcileTransaction} transaction
691 - * @optional
692 - */
693 - componentWillUpdate: 'DEFINE_MANY',
694 -
695 - /**
696 - * Invoked when the component's DOM representation has been updated.
697 - *
698 - * Use this as an opportunity to operate on the DOM when the component has
699 - * been updated.
700 - *
701 - * @param {object} prevProps
702 - * @param {?object} prevState
703 - * @param {?object} prevContext
704 - * @param {DOMElement} rootNode DOM element representing the component.
705 - * @optional
706 - */
707 - componentDidUpdate: 'DEFINE_MANY',
708 -
709 - /**
710 - * Invoked when the component is about to be removed from its parent and have
711 - * its DOM representation destroyed.
712 - *
713 - * Use this as an opportunity to deallocate any external resources.
714 - *
715 - * NOTE: There is no `componentDidUnmount` since your component will have been
716 - * destroyed by that point.
717 - *
718 - * @optional
719 - */
720 - componentWillUnmount: 'DEFINE_MANY',
721 -
722 - // ==== Advanced methods ====
723 -
724 - /**
725 - * Updates the component's currently mounted DOM representation.
726 - *
727 - * By default, this implements React's rendering and reconciliation algorithm.
728 - * Sophisticated clients may wish to override this.
729 - *
730 - * @param {ReactReconcileTransaction} transaction
731 - * @internal
732 - * @overridable
733 - */
734 - updateComponent: 'OVERRIDE_BASE'
735 -
736 -};
737 -
738 -/**
739 - * Mapping from class specification keys to special processing functions.
740 - *
741 - * Although these are declared like instance properties in the specification
742 - * when defining classes using `React.createClass`, they are actually static
743 - * and are accessible on the constructor instead of the prototype. Despite
744 - * being static, they must be defined outside of the "statics" key under
745 - * which all other static methods are defined.
746 - */
747 -var RESERVED_SPEC_KEYS = {
748 - displayName: function (Constructor, displayName) {
749 - Constructor.displayName = displayName;
750 - },
751 - mixins: function (Constructor, mixins) {
752 - if (mixins) {
753 - for (var i = 0; i < mixins.length; i++) {
754 - mixSpecIntoComponent(Constructor, mixins[i]);
755 - }
756 - }
757 - },
758 - childContextTypes: function (Constructor, childContextTypes) {
759 - if ("development" !== 'production') {
760 - validateTypeDef(Constructor, childContextTypes, 'childContext');
761 - }
762 - Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);
763 - },
764 - contextTypes: function (Constructor, contextTypes) {
765 - if ("development" !== 'production') {
766 - validateTypeDef(Constructor, contextTypes, 'context');
767 - }
768 - Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);
769 - },
770 - /**
771 - * Special case getDefaultProps which should move into statics but requires
772 - * automatic merging.
773 - */
774 - getDefaultProps: function (Constructor, getDefaultProps) {
775 - if (Constructor.getDefaultProps) {
776 - Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);
777 - } else {
778 - Constructor.getDefaultProps = getDefaultProps;
779 - }
780 - },
781 - propTypes: function (Constructor, propTypes) {
782 - if ("development" !== 'production') {
783 - validateTypeDef(Constructor, propTypes, 'prop');
784 - }
785 - Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);
786 - },
787 - statics: function (Constructor, statics) {
788 - mixStaticSpecIntoComponent(Constructor, statics);
789 - },
790 - autobind: function () {} };
791 -
792 -function validateTypeDef(Constructor, typeDef, location) {
793 - for (var propName in typeDef) {
794 - if (typeDef.hasOwnProperty(propName)) {
795 - // use a warning instead of an invariant so components
796 - // don't show up in prod but only in __DEV__
797 - "development" !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;
798 - }
799 - }
800 -}
801 -
802 -function validateMethodOverride(isAlreadyDefined, name) {
803 - var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;
804 -
805 - // Disallow overriding of base class methods unless explicitly allowed.
806 - if (ReactClassMixin.hasOwnProperty(name)) {
807 - !(specPolicy === 'OVERRIDE_BASE') ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;
808 - }
809 -
810 - // Disallow defining methods more than once unless explicitly allowed.
811 - if (isAlreadyDefined) {
812 - !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;
813 - }
814 -}
815 -
816 -/**
817 - * Mixin helper which handles policy validation and reserved
818 - * specification keys when building React classes.
819 - */
820 -function mixSpecIntoComponent(Constructor, spec) {
821 - if (!spec) {
822 - if ("development" !== 'production') {
823 - var typeofSpec = typeof spec;
824 - var isMixinValid = typeofSpec === 'object' && spec !== null;
825 -
826 - "development" !== 'production' ? warning(isMixinValid, '%s: You\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;
827 - }
828 -
829 - return;
830 - }
831 -
832 - !(typeof spec !== 'function') ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;
833 - !!ReactElement.isValidElement(spec) ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;
834 -
835 - var proto = Constructor.prototype;
836 - var autoBindPairs = proto.__reactAutoBindPairs;
837 -
838 - // By handling mixins before any other properties, we ensure the same
839 - // chaining order is applied to methods with DEFINE_MANY policy, whether
840 - // mixins are listed before or after these methods in the spec.
841 - if (spec.hasOwnProperty(MIXINS_KEY)) {
842 - RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);
843 - }
844 -
845 - for (var name in spec) {
846 - if (!spec.hasOwnProperty(name)) {
847 - continue;
848 - }
849 -
850 - if (name === MIXINS_KEY) {
851 - // We have already handled mixins in a special case above.
852 - continue;
853 - }
854 -
855 - var property = spec[name];
856 - var isAlreadyDefined = proto.hasOwnProperty(name);
857 - validateMethodOverride(isAlreadyDefined, name);
858 -
859 - if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {
860 - RESERVED_SPEC_KEYS[name](Constructor, property);
861 - } else {
862 - // Setup methods on prototype:
863 - // The following member methods should not be automatically bound:
864 - // 1. Expected ReactClass methods (in the "interface").
865 - // 2. Overridden methods (that were mixed in).
866 - var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);
867 - var isFunction = typeof property === 'function';
868 - var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;
869 -
870 - if (shouldAutoBind) {
871 - autoBindPairs.push(name, property);
872 - proto[name] = property;
873 - } else {
874 - if (isAlreadyDefined) {
875 - var specPolicy = ReactClassInterface[name];
876 -
877 - // These cases should already be caught by validateMethodOverride.
878 - !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? "development" !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;
879 -
880 - // For methods which are defined more than once, call the existing
881 - // methods before calling the new property, merging if appropriate.
882 - if (specPolicy === 'DEFINE_MANY_MERGED') {
883 - proto[name] = createMergedResultFunction(proto[name], property);
884 - } else if (specPolicy === 'DEFINE_MANY') {
885 - proto[name] = createChainedFunction(proto[name], property);
886 - }
887 - } else {
888 - proto[name] = property;
889 - if ("development" !== 'production') {
890 - // Add verbose displayName to the function, which helps when looking
891 - // at profiling tools.
892 - if (typeof property === 'function' && spec.displayName) {
893 - proto[name].displayName = spec.displayName + '_' + name;
894 - }
895 - }
896 - }
897 - }
898 - }
899 - }
900 -}
901 -
902 -function mixStaticSpecIntoComponent(Constructor, statics) {
903 - if (!statics) {
904 - return;
905 - }
906 - for (var name in statics) {
907 - var property = statics[name];
908 - if (!statics.hasOwnProperty(name)) {
909 - continue;
910 - }
911 -
912 - var isReserved = name in RESERVED_SPEC_KEYS;
913 - !!isReserved ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0;
914 -
915 - var isInherited = name in Constructor;
916 - !!isInherited ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;
917 - Constructor[name] = property;
918 - }
919 -}
920 -
921 -/**
922 - * Merge two objects, but throw if both contain the same key.
923 - *
924 - * @param {object} one The first object, which is mutated.
925 - * @param {object} two The second object
926 - * @return {object} one after it has been mutated to contain everything in two.
927 - */
928 -function mergeIntoWithNoDuplicateKeys(one, two) {
929 - !(one && two && typeof one === 'object' && typeof two === 'object') ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;
930 -
931 - for (var key in two) {
932 - if (two.hasOwnProperty(key)) {
933 - !(one[key] === undefined) ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0;
934 - one[key] = two[key];
935 - }
936 - }
937 - return one;
938 -}
939 -
940 -/**
941 - * Creates a function that invokes two functions and merges their return values.
942 - *
943 - * @param {function} one Function to invoke first.
944 - * @param {function} two Function to invoke second.
945 - * @return {function} Function that invokes the two argument functions.
946 - * @private
947 - */
948 -function createMergedResultFunction(one, two) {
949 - return function mergedResult() {
950 - var a = one.apply(this, arguments);
951 - var b = two.apply(this, arguments);
952 - if (a == null) {
953 - return b;
954 - } else if (b == null) {
955 - return a;
956 - }
957 - var c = {};
958 - mergeIntoWithNoDuplicateKeys(c, a);
959 - mergeIntoWithNoDuplicateKeys(c, b);
960 - return c;
961 - };
962 -}
963 -
964 -/**
965 - * Creates a function that invokes two functions and ignores their return vales.
966 - *
967 - * @param {function} one Function to invoke first.
968 - * @param {function} two Function to invoke second.
969 - * @return {function} Function that invokes the two argument functions.
970 - * @private
971 - */
972 -function createChainedFunction(one, two) {
973 - return function chainedFunction() {
974 - one.apply(this, arguments);
975 - two.apply(this, arguments);
976 - };
977 -}
978 -
979 -/**
980 - * Binds a method to the component.
981 - *
982 - * @param {object} component Component whose method is going to be bound.
983 - * @param {function} method Method to be bound.
984 - * @return {function} The bound method.
985 - */
986 -function bindAutoBindMethod(component, method) {
987 - var boundMethod = method.bind(component);
988 - if ("development" !== 'production') {
989 - boundMethod.__reactBoundContext = component;
990 - boundMethod.__reactBoundMethod = method;
991 - boundMethod.__reactBoundArguments = null;
992 - var componentName = component.constructor.displayName;
993 - var _bind = boundMethod.bind;
994 - boundMethod.bind = function (newThis) {
995 - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
996 - args[_key - 1] = arguments[_key];
997 - }
998 -
999 - // User is trying to bind() an autobound method; we effectively will
1000 - // ignore the value of "this" that the user is trying to use, so
1001 - // let's warn.
1002 - if (newThis !== component && newThis !== null) {
1003 - "development" !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;
1004 - } else if (!args.length) {
1005 - "development" !== 'production' ? warning(false, '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', componentName) : void 0;
1006 - return boundMethod;
1007 - }
1008 - var reboundMethod = _bind.apply(boundMethod, arguments);
1009 - reboundMethod.__reactBoundContext = component;
1010 - reboundMethod.__reactBoundMethod = method;
1011 - reboundMethod.__reactBoundArguments = args;
1012 - return reboundMethod;
1013 - };
1014 - }
1015 - return boundMethod;
1016 -}
1017 -
1018 -/**
1019 - * Binds all auto-bound methods in a component.
1020 - *
1021 - * @param {object} component Component whose method is going to be bound.
1022 - */
1023 -function bindAutoBindMethods(component) {
1024 - var pairs = component.__reactAutoBindPairs;
1025 - for (var i = 0; i < pairs.length; i += 2) {
1026 - var autoBindKey = pairs[i];
1027 - var method = pairs[i + 1];
1028 - component[autoBindKey] = bindAutoBindMethod(component, method);
1029 - }
1030 -}
1031 -
1032 -/**
1033 - * Add more to the ReactClass base class. These are all legacy features and
1034 - * therefore not already part of the modern ReactComponent.
1035 - */
1036 -var ReactClassMixin = {
1037 -
1038 - /**
1039 - * TODO: This will be deprecated because state should always keep a consistent
1040 - * type signature and the only use case for this, is to avoid that.
1041 - */
1042 - replaceState: function (newState, callback) {
1043 - this.updater.enqueueReplaceState(this, newState, callback, 'replaceState');
1044 - },
1045 -
1046 - /**
1047 - * Checks whether or not this composite component is mounted.
1048 - * @return {boolean} True if mounted, false otherwise.
1049 - * @protected
1050 - * @final
1051 - */
1052 - isMounted: function () {
1053 - return this.updater.isMounted(this);
1054 - }
1055 -};
1056 -
1057 -var ReactClassComponent = function () {};
1058 -_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);
1059 -
1060 -/**
1061 - * Module for creating composite components.
1062 - *
1063 - * @class ReactClass
1064 - */
1065 -var ReactClass = {
1066 -
1067 - /**
1068 - * Creates a composite component class given a class specification.
1069 - * See https://facebook.github.io/react/docs/react-api.html#createclass
1070 - *
1071 - * @param {object} spec Class specification (which must define `render`).
1072 - * @return {function} Component constructor function.
1073 - * @public
1074 - */
1075 - createClass: function (spec) {
1076 - // To keep our warnings more understandable, we'll use a little hack here to
1077 - // ensure that Constructor.name !== 'Constructor'. This makes sure we don't
1078 - // unnecessarily identify a class without displayName as 'Constructor'.
1079 - var Constructor = identity(function (props, context, updater) {
1080 - // This constructor gets overridden by mocks. The argument is used
1081 - // by mocks to assert on what gets mounted.
1082 -
1083 - if ("development" !== 'production') {
1084 - "development" !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;
1085 - }
1086 -
1087 - // Wire up auto-binding
1088 - if (this.__reactAutoBindPairs.length) {
1089 - bindAutoBindMethods(this);
1090 - }
1091 -
1092 - this.props = props;
1093 - this.context = context;
1094 - this.refs = emptyObject;
1095 - this.updater = updater || ReactNoopUpdateQueue;
1096 -
1097 - this.state = null;
1098 -
1099 - // ReactClasses doesn't have constructors. Instead, they use the
1100 - // getInitialState and componentWillMount methods for initialization.
1101 -
1102 - var initialState = this.getInitialState ? this.getInitialState() : null;
1103 - if ("development" !== 'production') {
1104 - // We allow auto-mocks to proceed as if they're returning null.
1105 - if (initialState === undefined && this.getInitialState._isMockFunction) {
1106 - // This is probably bad practice. Consider warning here and
1107 - // deprecating this convenience.
1108 - initialState = null;
1109 - }
1110 - }
1111 - !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;
1112 -
1113 - this.state = initialState;
1114 - });
1115 - Constructor.prototype = new ReactClassComponent();
1116 - Constructor.prototype.constructor = Constructor;
1117 - Constructor.prototype.__reactAutoBindPairs = [];
1118 -
1119 - mixSpecIntoComponent(Constructor, spec);
1120 -
1121 - // Initialize the defaultProps property after all mixins have been merged.
1122 - if (Constructor.getDefaultProps) {
1123 - Constructor.defaultProps = Constructor.getDefaultProps();
1124 - }
1125 -
1126 - if ("development" !== 'production') {
1127 - // This is a tag to indicate that the use of these method names is ok,
1128 - // since it's used with createClass. If it's not, then it's likely a
1129 - // mistake so we'll warn you to use the static property, property
1130 - // initializer or constructor respectively.
1131 - if (Constructor.getDefaultProps) {
1132 - Constructor.getDefaultProps.isReactClassApproved = {};
1133 - }
1134 - if (Constructor.prototype.getInitialState) {
1135 - Constructor.prototype.getInitialState.isReactClassApproved = {};
1136 - }
1137 - }
1138 -
1139 - !Constructor.prototype.render ? "development" !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;
1140 -
1141 - if ("development" !== 'production') {
1142 - "development" !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;
1143 - "development" !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;
1144 - }
1145 -
1146 - // Reduce time spent doing lookups by setting these on the prototype.
1147 - for (var methodName in ReactClassInterface) {
1148 - if (!Constructor.prototype[methodName]) {
1149 - Constructor.prototype[methodName] = null;
1150 - }
1151 - }
1152 -
1153 - return Constructor;
1154 - }
1155 -
1156 -};
1157 -
1158 -module.exports = ReactClass;
1159 -},{"10":10,"13":13,"14":14,"25":25,"28":28,"29":29,"30":30,"31":31,"6":6}],6:[function(_dereq_,module,exports){
1160 -/**
1161 - * Copyright 2013-present, Facebook, Inc.
1162 - * All rights reserved.
1163 - *
1164 - * This source code is licensed under the BSD-style license found in the
1165 - * LICENSE file in the root directory of this source tree. An additional grant
1166 - * of patent rights can be found in the PATENTS file in the same directory.
1167 - *
1168 - */
1169 -
1170 -'use strict';
1171 -
1172 -var _prodInvariant = _dereq_(25);
1173 -
1174 -var ReactNoopUpdateQueue = _dereq_(13);
1175 -
1176 -var canDefineProperty = _dereq_(20);
1177 -var emptyObject = _dereq_(28);
1178 -var invariant = _dereq_(29);
1179 -var warning = _dereq_(30);
1180 -
1181 -/**
1182 - * Base class helpers for the updating state of a component.
1183 - */
1184 -function ReactComponent(props, context, updater) {
1185 - this.props = props;
1186 - this.context = context;
1187 - this.refs = emptyObject;
1188 - // We initialize the default updater but the real one gets injected by the
1189 - // renderer.
1190 - this.updater = updater || ReactNoopUpdateQueue;
1191 -}
1192 -
1193 -ReactComponent.prototype.isReactComponent = {};
1194 -
1195 -/**
1196 - * Sets a subset of the state. Always use this to mutate
1197 - * state. You should treat `this.state` as immutable.
1198 - *
1199 - * There is no guarantee that `this.state` will be immediately updated, so
1200 - * accessing `this.state` after calling this method may return the old value.
1201 - *
1202 - * There is no guarantee that calls to `setState` will run synchronously,
1203 - * as they may eventually be batched together. You can provide an optional
1204 - * callback that will be executed when the call to setState is actually
1205 - * completed.
1206 - *
1207 - * When a function is provided to setState, it will be called at some point in
1208 - * the future (not synchronously). It will be called with the up to date
1209 - * component arguments (state, props, context). These values can be different
1210 - * from this.* because your function may be called after receiveProps but before
1211 - * shouldComponentUpdate, and this new state, props, and context will not yet be
1212 - * assigned to this.
1213 - *
1214 - * @param {object|function} partialState Next partial state or function to
1215 - * produce next partial state to be merged with current state.
1216 - * @param {?function} callback Called after state is updated.
1217 - * @final
1218 - * @protected
1219 - */
1220 -ReactComponent.prototype.setState = function (partialState, callback) {
1221 - !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? "development" !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;
1222 - this.updater.enqueueSetState(this, partialState, callback, 'setState');
1223 -};
1224 -
1225 -/**
1226 - * Forces an update. This should only be invoked when it is known with
1227 - * certainty that we are **not** in a DOM transaction.
1228 - *
1229 - * You may want to call this when you know that some deeper aspect of the
1230 - * component's state has changed but `setState` was not called.
1231 - *
1232 - * This will not invoke `shouldComponentUpdate`, but it will invoke
1233 - * `componentWillUpdate` and `componentDidUpdate`.
1234 - *
1235 - * @param {?function} callback Called after update is complete.
1236 - * @final
1237 - * @protected
1238 - */
1239 -ReactComponent.prototype.forceUpdate = function (callback) {
1240 - this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');
1241 -};
1242 -
1243 -/**
1244 - * Deprecated APIs. These APIs used to exist on classic React classes but since
1245 - * we would like to deprecate them, we're not going to move them over to this
1246 - * modern base class. Instead, we define a getter that warns if it's accessed.
1247 - */
1248 -if ("development" !== 'production') {
1249 - var deprecatedAPIs = {
1250 - isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
1251 - replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
1252 - };
1253 - var defineDeprecationWarning = function (methodName, info) {
1254 - if (canDefineProperty) {
1255 - Object.defineProperty(ReactComponent.prototype, methodName, {
1256 - get: function () {
1257 - "development" !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;
1258 - return undefined;
1259 - }
1260 - });
1261 - }
1262 - };
1263 - for (var fnName in deprecatedAPIs) {
1264 - if (deprecatedAPIs.hasOwnProperty(fnName)) {
1265 - defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
1266 - }
1267 - }
1268 -}
1269 -
1270 -module.exports = ReactComponent;
1271 -},{"13":13,"20":20,"25":25,"28":28,"29":29,"30":30}],7:[function(_dereq_,module,exports){
1272 -/**
1273 - * Copyright 2016-present, Facebook, Inc.
1274 - * All rights reserved.
1275 - *
1276 - * This source code is licensed under the BSD-style license found in the
1277 - * LICENSE file in the root directory of this source tree. An additional grant
1278 - * of patent rights can be found in the PATENTS file in the same directory.
1279 - *
1280 - *
1281 - */
1282 -
1283 -'use strict';
1284 -
1285 -var _prodInvariant = _dereq_(25);
1286 -
1287 -var ReactCurrentOwner = _dereq_(8);
1288 -var ReactTypeOfWork = _dereq_(17);
1289 -var IndeterminateComponent = ReactTypeOfWork.IndeterminateComponent,
1290 - FunctionalComponent = ReactTypeOfWork.FunctionalComponent,
1291 - ClassComponent = ReactTypeOfWork.ClassComponent,
1292 - HostComponent = ReactTypeOfWork.HostComponent;
1293 -
1294 -
1295 -var getComponentName = _dereq_(22);
1296 -var invariant = _dereq_(29);
1297 -var warning = _dereq_(30);
1298 -
1299 -function isNative(fn) {
1300 - // Based on isNative() from Lodash
1301 - var funcToString = Function.prototype.toString;
1302 - var hasOwnProperty = Object.prototype.hasOwnProperty;
1303 - var reIsNative = RegExp('^' + funcToString
1304 - // Take an example native function source for comparison
1305 - .call(hasOwnProperty)
1306 - // Strip regex characters so we can use it for regex
1307 - .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
1308 - // Remove hasOwnProperty from the template to make it generic
1309 - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
1310 - try {
1311 - var source = funcToString.call(fn);
1312 - return reIsNative.test(source);
1313 - } catch (err) {
1314 - return false;
1315 - }
1316 -}
1317 -
1318 -var canUseCollections =
1319 -// Array.from
1320 -typeof Array.from === 'function' &&
1321 -// Map
1322 -typeof Map === 'function' && isNative(Map) &&
1323 -// Map.prototype.keys
1324 -Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&
1325 -// Set
1326 -typeof Set === 'function' && isNative(Set) &&
1327 -// Set.prototype.keys
1328 -Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);
1329 -
1330 -var setItem;
1331 -var getItem;
1332 -var removeItem;
1333 -var getItemIDs;
1334 -var addRoot;
1335 -var removeRoot;
1336 -var getRootIDs;
1337 -
1338 -if (canUseCollections) {
1339 - var itemMap = new Map();
1340 - var rootIDSet = new Set();
1341 -
1342 - setItem = function (id, item) {
1343 - itemMap.set(id, item);
1344 - };
1345 - getItem = function (id) {
1346 - return itemMap.get(id);
1347 - };
1348 - removeItem = function (id) {
1349 - itemMap['delete'](id);
1350 - };
1351 - getItemIDs = function () {
1352 - return Array.from(itemMap.keys());
1353 - };
1354 -
1355 - addRoot = function (id) {
1356 - rootIDSet.add(id);
1357 - };
1358 - removeRoot = function (id) {
1359 - rootIDSet['delete'](id);
1360 - };
1361 - getRootIDs = function () {
1362 - return Array.from(rootIDSet.keys());
1363 - };
1364 -} else {
1365 - var itemByKey = {};
1366 - var rootByKey = {};
1367 -
1368 - // Use non-numeric keys to prevent V8 performance issues:
1369 - // https://github.com/facebook/react/pull/7232
1370 - var getKeyFromID = function (id) {
1371 - return '.' + id;
1372 - };
1373 - var getIDFromKey = function (key) {
1374 - return parseInt(key.substr(1), 10);
1375 - };
1376 -
1377 - setItem = function (id, item) {
1378 - var key = getKeyFromID(id);
1379 - itemByKey[key] = item;
1380 - };
1381 - getItem = function (id) {
1382 - var key = getKeyFromID(id);
1383 - return itemByKey[key];
1384 - };
1385 - removeItem = function (id) {
1386 - var key = getKeyFromID(id);
1387 - delete itemByKey[key];
1388 - };
1389 - getItemIDs = function () {
1390 - return Object.keys(itemByKey).map(getIDFromKey);
1391 - };
1392 -
1393 - addRoot = function (id) {
1394 - var key = getKeyFromID(id);
1395 - rootByKey[key] = true;
1396 - };
1397 - removeRoot = function (id) {
1398 - var key = getKeyFromID(id);
1399 - delete rootByKey[key];
1400 - };
1401 - getRootIDs = function () {
1402 - return Object.keys(rootByKey).map(getIDFromKey);
1403 - };
1404 -}
1405 -
1406 -var unmountedIDs = [];
1407 -
1408 -function purgeDeep(id) {
1409 - var item = getItem(id);
1410 - if (item) {
1411 - var childIDs = item.childIDs;
1412 -
1413 - removeItem(id);
1414 - childIDs.forEach(purgeDeep);
1415 - }
1416 -}
1417 -
1418 -function describeComponentFrame(name, source, ownerName) {
1419 - return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');
1420 -}
1421 -
1422 -function getDisplayName(element) {
1423 - if (element == null) {
1424 - return '#empty';
1425 - } else if (typeof element === 'string' || typeof element === 'number') {
1426 - return '#text';
1427 - } else if (typeof element.type === 'string') {
1428 - return element.type;
1429 - } else {
1430 - return element.type.displayName || element.type.name || 'Unknown';
1431 - }
1432 -}
1433 -
1434 -function describeID(id) {
1435 - var name = ReactComponentTreeHook.getDisplayName(id);
1436 - var element = ReactComponentTreeHook.getElement(id);
1437 - var ownerID = ReactComponentTreeHook.getOwnerID(id);
1438 - var ownerName;
1439 - if (ownerID) {
1440 - ownerName = ReactComponentTreeHook.getDisplayName(ownerID);
1441 - }
1442 - "development" !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;
1443 - return describeComponentFrame(name, element && element._source, ownerName);
1444 -}
1445 -
1446 -function describeFiber(fiber) {
1447 - switch (fiber.tag) {
1448 - case IndeterminateComponent:
1449 - case FunctionalComponent:
1450 - case ClassComponent:
1451 - case HostComponent:
1452 - var owner = fiber._debugOwner;
1453 - var source = fiber._debugSource;
1454 - var name = getComponentName(fiber);
1455 - var ownerName = null;
1456 - if (owner) {
1457 - ownerName = getComponentName(owner);
1458 - }
1459 - return describeComponentFrame(name, source, ownerName);
1460 - default:
1461 - return '';
1462 - }
1463 -}
1464 -
1465 -var ReactComponentTreeHook = {
1466 - onSetChildren: function (id, nextChildIDs) {
1467 - var item = getItem(id);
1468 - invariant(item, 'Item must have been set');
1469 - item.childIDs = nextChildIDs;
1470 -
1471 - for (var i = 0; i < nextChildIDs.length; i++) {
1472 - var nextChildID = nextChildIDs[i];
1473 - var nextChild = getItem(nextChildID);
1474 - !nextChild ? "development" !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;
1475 - !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? "development" !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;
1476 - !nextChild.isMounted ? "development" !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;
1477 - if (nextChild.parentID == null) {
1478 - nextChild.parentID = id;
1479 - // TODO: This shouldn't be necessary but mounting a new root during in
1480 - // componentWillMount currently causes not-yet-mounted components to
1481 - // be purged from our tree data so their parent id is missing.
1482 - }
1483 - !(nextChild.parentID === id) ? "development" !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;
1484 - }
1485 - },
1486 - onBeforeMountComponent: function (id, element, parentID) {
1487 - var item = {
1488 - element: element,
1489 - parentID: parentID,
1490 - text: null,
1491 - childIDs: [],
1492 - isMounted: false,
1493 - updateCount: 0
1494 - };
1495 - setItem(id, item);
1496 - },
1497 - onBeforeUpdateComponent: function (id, element) {
1498 - var item = getItem(id);
1499 - if (!item || !item.isMounted) {
1500 - // We may end up here as a result of setState() in componentWillUnmount().
1501 - // In this case, ignore the element.
1502 - return;
1503 - }
1504 - item.element = element;
1505 - },
1506 - onMountComponent: function (id) {
1507 - var item = getItem(id);
1508 - invariant(item, 'Item must have been set');
1509 - item.isMounted = true;
1510 - var isRoot = item.parentID === 0;
1511 - if (isRoot) {
1512 - addRoot(id);
1513 - }
1514 - },
1515 - onUpdateComponent: function (id) {
1516 - var item = getItem(id);
1517 - if (!item || !item.isMounted) {
1518 - // We may end up here as a result of setState() in componentWillUnmount().
1519 - // In this case, ignore the element.
1520 - return;
1521 - }
1522 - item.updateCount++;
1523 - },
1524 - onUnmountComponent: function (id) {
1525 - var item = getItem(id);
1526 - if (item) {
1527 - // We need to check if it exists.
1528 - // `item` might not exist if it is inside an error boundary, and a sibling
1529 - // error boundary child threw while mounting. Then this instance never
1530 - // got a chance to mount, but it still gets an unmounting event during
1531 - // the error boundary cleanup.
1532 - item.isMounted = false;
1533 - var isRoot = item.parentID === 0;
1534 - if (isRoot) {
1535 - removeRoot(id);
1536 - }
1537 - }
1538 - unmountedIDs.push(id);
1539 - },
1540 - purgeUnmountedComponents: function () {
1541 - if (ReactComponentTreeHook._preventPurging) {
1542 - // Should only be used for testing.
1543 - return;
1544 - }
1545 -
1546 - for (var i = 0; i < unmountedIDs.length; i++) {
1547 - var id = unmountedIDs[i];
1548 - purgeDeep(id);
1549 - }
1550 - unmountedIDs.length = 0;
1551 - },
1552 - isMounted: function (id) {
1553 - var item = getItem(id);
1554 - return item ? item.isMounted : false;
1555 - },
1556 - getCurrentStackAddendum: function (topElement) {
1557 - var info = '';
1558 - if (topElement) {
1559 - var name = getDisplayName(topElement);
1560 - var owner = topElement._owner;
1561 - info += describeComponentFrame(name, topElement._source, owner && getComponentName(owner));
1562 - }
1563 -
1564 - var currentOwner = ReactCurrentOwner.current;
1565 - if (currentOwner) {
1566 - if (typeof currentOwner.tag === 'number') {
1567 - var workInProgress = currentOwner;
1568 - // Safe because if current owner exists, we are reconciling,
1569 - // and it is guaranteed to be the work-in-progress version.
1570 - info += ReactComponentTreeHook.getStackAddendumByWorkInProgressFiber(workInProgress);
1571 - } else if (typeof currentOwner._debugID === 'number') {
1572 - info += ReactComponentTreeHook.getStackAddendumByID(currentOwner._debugID);
1573 - }
1574 - }
1575 - return info;
1576 - },
1577 - getStackAddendumByID: function (id) {
1578 - var info = '';
1579 - while (id) {
1580 - info += describeID(id);
1581 - id = ReactComponentTreeHook.getParentID(id);
1582 - }
1583 - return info;
1584 - },
1585 -
1586 -
1587 - // This function can only be called with a work-in-progress fiber and
1588 - // only during begin or complete phase. Do not call it under any other
1589 - // circumstances.
1590 - getStackAddendumByWorkInProgressFiber: function (workInProgress) {
1591 - var info = '';
1592 - var node = workInProgress;
1593 - do {
1594 - info += describeFiber(node);
1595 - // Otherwise this return pointer might point to the wrong tree:
1596 - node = node['return'];
1597 - } while (node);
1598 - return info;
1599 - },
1600 - getChildIDs: function (id) {
1601 - var item = getItem(id);
1602 - return item ? item.childIDs : [];
1603 - },
1604 - getDisplayName: function (id) {
1605 - var element = ReactComponentTreeHook.getElement(id);
1606 - if (!element) {
1607 - return null;
1608 - }
1609 - return getDisplayName(element);
1610 - },
1611 - getElement: function (id) {
1612 - var item = getItem(id);
1613 - return item ? item.element : null;
1614 - },
1615 - getOwnerID: function (id) {
1616 - var element = ReactComponentTreeHook.getElement(id);
1617 - if (!element || !element._owner) {
1618 - return null;
1619 - }
1620 - return element._owner._debugID;
1621 - },
1622 - getParentID: function (id) {
1623 - var item = getItem(id);
1624 - return item ? item.parentID : null;
1625 - },
1626 - getSource: function (id) {
1627 - var item = getItem(id);
1628 - var element = item ? item.element : null;
1629 - var source = element != null ? element._source : null;
1630 - return source;
1631 - },
1632 - getText: function (id) {
1633 - var element = ReactComponentTreeHook.getElement(id);
1634 - if (typeof element === 'string') {
1635 - return element;
1636 - } else if (typeof element === 'number') {
1637 - return '' + element;
1638 - } else {
1639 - return null;
1640 - }
1641 - },
1642 - getUpdateCount: function (id) {
1643 - var item = getItem(id);
1644 - return item ? item.updateCount : 0;
1645 - },
1646 -
1647 -
1648 - getRootIDs: getRootIDs,
1649 - getRegisteredIDs: getItemIDs
1650 -};
1651 -
1652 -module.exports = ReactComponentTreeHook;
1653 -},{"17":17,"22":22,"25":25,"29":29,"30":30,"8":8}],8:[function(_dereq_,module,exports){
1654 -/**
1655 - * Copyright 2013-present, Facebook, Inc.
1656 - * All rights reserved.
1657 - *
1658 - * This source code is licensed under the BSD-style license found in the
1659 - * LICENSE file in the root directory of this source tree. An additional grant
1660 - * of patent rights can be found in the PATENTS file in the same directory.
1661 - *
1662 - *
1663 - */
1664 -
1665 -'use strict';
1666 -
1667 -/**
1668 - * Keeps track of the current owner.
1669 - *
1670 - * The current owner is the component who should own any components that are
1671 - * currently being constructed.
1672 - */
1673 -var ReactCurrentOwner = {
1674 -
1675 - /**
1676 - * @internal
1677 - * @type {ReactComponent}
1678 - */
1679 - current: null
1680 -
1681 -};
1682 -
1683 -module.exports = ReactCurrentOwner;
1684 -},{}],9:[function(_dereq_,module,exports){
1685 -/**
1686 - * Copyright 2013-present, Facebook, Inc.
1687 - * All rights reserved.
1688 - *
1689 - * This source code is licensed under the BSD-style license found in the
1690 - * LICENSE file in the root directory of this source tree. An additional grant
1691 - * of patent rights can be found in the PATENTS file in the same directory.
1692 - *
1693 - */
1694 -
1695 -'use strict';
1696 -
1697 -var ReactElement = _dereq_(10);
1698 -
1699 -/**
1700 - * Create a factory that creates HTML tag elements.
1701 - *
1702 - * @private
1703 - */
1704 -var createDOMFactory = ReactElement.createFactory;
1705 -if ("development" !== 'production') {
1706 - var ReactElementValidator = _dereq_(12);
1707 - createDOMFactory = ReactElementValidator.createFactory;
1708 -}
1709 -
1710 -/**
1711 - * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.
1712 - * This is also accessible via `React.DOM`.
1713 - *
1714 - * @public
1715 - */
1716 -var ReactDOMFactories = {
1717 - a: createDOMFactory('a'),
1718 - abbr: createDOMFactory('abbr'),
1719 - address: createDOMFactory('address'),
1720 - area: createDOMFactory('area'),
1721 - article: createDOMFactory('article'),
1722 - aside: createDOMFactory('aside'),
1723 - audio: createDOMFactory('audio'),
1724 - b: createDOMFactory('b'),
1725 - base: createDOMFactory('base'),
1726 - bdi: createDOMFactory('bdi'),
1727 - bdo: createDOMFactory('bdo'),
1728 - big: createDOMFactory('big'),
1729 - blockquote: createDOMFactory('blockquote'),
1730 - body: createDOMFactory('body'),
1731 - br: createDOMFactory('br'),
1732 - button: createDOMFactory('button'),
1733 - canvas: createDOMFactory('canvas'),
1734 - caption: createDOMFactory('caption'),
1735 - cite: createDOMFactory('cite'),
1736 - code: createDOMFactory('code'),
1737 - col: createDOMFactory('col'),
1738 - colgroup: createDOMFactory('colgroup'),
1739 - data: createDOMFactory('data'),
1740 - datalist: createDOMFactory('datalist'),
1741 - dd: createDOMFactory('dd'),
1742 - del: createDOMFactory('del'),
1743 - details: createDOMFactory('details'),
1744 - dfn: createDOMFactory('dfn'),
1745 - dialog: createDOMFactory('dialog'),
1746 - div: createDOMFactory('div'),
1747 - dl: createDOMFactory('dl'),
1748 - dt: createDOMFactory('dt'),
1749 - em: createDOMFactory('em'),
1750 - embed: createDOMFactory('embed'),
1751 - fieldset: createDOMFactory('fieldset'),
1752 - figcaption: createDOMFactory('figcaption'),
1753 - figure: createDOMFactory('figure'),
1754 - footer: createDOMFactory('footer'),
1755 - form: createDOMFactory('form'),
1756 - h1: createDOMFactory('h1'),
1757 - h2: createDOMFactory('h2'),
1758 - h3: createDOMFactory('h3'),
1759 - h4: createDOMFactory('h4'),
1760 - h5: createDOMFactory('h5'),
1761 - h6: createDOMFactory('h6'),
1762 - head: createDOMFactory('head'),
1763 - header: createDOMFactory('header'),
1764 - hgroup: createDOMFactory('hgroup'),
1765 - hr: createDOMFactory('hr'),
1766 - html: createDOMFactory('html'),
1767 - i: createDOMFactory('i'),
1768 - iframe: createDOMFactory('iframe'),
1769 - img: createDOMFactory('img'),
1770 - input: createDOMFactory('input'),
1771 - ins: createDOMFactory('ins'),
1772 - kbd: createDOMFactory('kbd'),
1773 - keygen: createDOMFactory('keygen'),
1774 - label: createDOMFactory('label'),
1775 - legend: createDOMFactory('legend'),
1776 - li: createDOMFactory('li'),
1777 - link: createDOMFactory('link'),
1778 - main: createDOMFactory('main'),
1779 - map: createDOMFactory('map'),
1780 - mark: createDOMFactory('mark'),
1781 - menu: createDOMFactory('menu'),
1782 - menuitem: createDOMFactory('menuitem'),
1783 - meta: createDOMFactory('meta'),
1784 - meter: createDOMFactory('meter'),
1785 - nav: createDOMFactory('nav'),
1786 - noscript: createDOMFactory('noscript'),
1787 - object: createDOMFactory('object'),
1788 - ol: createDOMFactory('ol'),
1789 - optgroup: createDOMFactory('optgroup'),
1790 - option: createDOMFactory('option'),
1791 - output: createDOMFactory('output'),
1792 - p: createDOMFactory('p'),
1793 - param: createDOMFactory('param'),
1794 - picture: createDOMFactory('picture'),
1795 - pre: createDOMFactory('pre'),
1796 - progress: createDOMFactory('progress'),
1797 - q: createDOMFactory('q'),
1798 - rp: createDOMFactory('rp'),
1799 - rt: createDOMFactory('rt'),
1800 - ruby: createDOMFactory('ruby'),
1801 - s: createDOMFactory('s'),
1802 - samp: createDOMFactory('samp'),
1803 - script: createDOMFactory('script'),
1804 - section: createDOMFactory('section'),
1805 - select: createDOMFactory('select'),
1806 - small: createDOMFactory('small'),
1807 - source: createDOMFactory('source'),
1808 - span: createDOMFactory('span'),
1809 - strong: createDOMFactory('strong'),
1810 - style: createDOMFactory('style'),
1811 - sub: createDOMFactory('sub'),
1812 - summary: createDOMFactory('summary'),
1813 - sup: createDOMFactory('sup'),
1814 - table: createDOMFactory('table'),
1815 - tbody: createDOMFactory('tbody'),
1816 - td: createDOMFactory('td'),
1817 - textarea: createDOMFactory('textarea'),
1818 - tfoot: createDOMFactory('tfoot'),
1819 - th: createDOMFactory('th'),
1820 - thead: createDOMFactory('thead'),
1821 - time: createDOMFactory('time'),
1822 - title: createDOMFactory('title'),
1823 - tr: createDOMFactory('tr'),
1824 - track: createDOMFactory('track'),
1825 - u: createDOMFactory('u'),
1826 - ul: createDOMFactory('ul'),
1827 - 'var': createDOMFactory('var'),
1828 - video: createDOMFactory('video'),
1829 - wbr: createDOMFactory('wbr'),
1830 -
1831 - // SVG
1832 - circle: createDOMFactory('circle'),
1833 - clipPath: createDOMFactory('clipPath'),
1834 - defs: createDOMFactory('defs'),
1835 - ellipse: createDOMFactory('ellipse'),
1836 - g: createDOMFactory('g'),
1837 - image: createDOMFactory('image'),
1838 - line: createDOMFactory('line'),
1839 - linearGradient: createDOMFactory('linearGradient'),
1840 - mask: createDOMFactory('mask'),
1841 - path: createDOMFactory('path'),
1842 - pattern: createDOMFactory('pattern'),
1843 - polygon: createDOMFactory('polygon'),
1844 - polyline: createDOMFactory('polyline'),
1845 - radialGradient: createDOMFactory('radialGradient'),
1846 - rect: createDOMFactory('rect'),
1847 - stop: createDOMFactory('stop'),
1848 - svg: createDOMFactory('svg'),
1849 - text: createDOMFactory('text'),
1850 - tspan: createDOMFactory('tspan')
1851 -};
1852 -
1853 -module.exports = ReactDOMFactories;
1854 -},{"10":10,"12":12}],10:[function(_dereq_,module,exports){
1855 -/**
1856 - * Copyright 2014-present, Facebook, Inc.
1857 - * All rights reserved.
1858 - *
1859 - * This source code is licensed under the BSD-style license found in the
1860 - * LICENSE file in the root directory of this source tree. An additional grant
1861 - * of patent rights can be found in the PATENTS file in the same directory.
1862 - *
1863 - */
1864 -
1865 -'use strict';
1866 -
1867 -var _assign = _dereq_(31);
1868 -
1869 -var ReactCurrentOwner = _dereq_(8);
1870 -
1871 -var warning = _dereq_(30);
1872 -var canDefineProperty = _dereq_(20);
1873 -var hasOwnProperty = Object.prototype.hasOwnProperty;
1874 -
1875 -var REACT_ELEMENT_TYPE = _dereq_(11);
1876 -
1877 -var RESERVED_PROPS = {
1878 - key: true,
1879 - ref: true,
1880 - __self: true,
1881 - __source: true
1882 -};
1883 -
1884 -var specialPropKeyWarningShown, specialPropRefWarningShown;
1885 -
1886 -function hasValidRef(config) {
1887 - if ("development" !== 'production') {
1888 - if (hasOwnProperty.call(config, 'ref')) {
1889 - var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
1890 - if (getter && getter.isReactWarning) {
1891 - return false;
1892 - }
1893 - }
1894 - }
1895 - return config.ref !== undefined;
1896 -}
1897 -
1898 -function hasValidKey(config) {
1899 - if ("development" !== 'production') {
1900 - if (hasOwnProperty.call(config, 'key')) {
1901 - var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
1902 - if (getter && getter.isReactWarning) {
1903 - return false;
1904 - }
1905 - }
1906 - }
1907 - return config.key !== undefined;
1908 -}
1909 -
1910 -function defineKeyPropWarningGetter(props, displayName) {
1911 - var warnAboutAccessingKey = function () {
1912 - if (!specialPropKeyWarningShown) {
1913 - specialPropKeyWarningShown = true;
1914 - "development" !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;
1915 - }
1916 - };
1917 - warnAboutAccessingKey.isReactWarning = true;
1918 - Object.defineProperty(props, 'key', {
1919 - get: warnAboutAccessingKey,
1920 - configurable: true
1921 - });
1922 -}
1923 -
1924 -function defineRefPropWarningGetter(props, displayName) {
1925 - var warnAboutAccessingRef = function () {
1926 - if (!specialPropRefWarningShown) {
1927 - specialPropRefWarningShown = true;
1928 - "development" !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;
1929 - }
1930 - };
1931 - warnAboutAccessingRef.isReactWarning = true;
1932 - Object.defineProperty(props, 'ref', {
1933 - get: warnAboutAccessingRef,
1934 - configurable: true
1935 - });
1936 -}
1937 -
1938 -/**
1939 - * Factory method to create a new React element. This no longer adheres to
1940 - * the class pattern, so do not use new to call it. Also, no instanceof check
1941 - * will work. Instead test $$typeof field against Symbol.for('react.element') to check
1942 - * if something is a React Element.
1943 - *
1944 - * @param {*} type
1945 - * @param {*} key
1946 - * @param {string|object} ref
1947 - * @param {*} self A *temporary* helper to detect places where `this` is
1948 - * different from the `owner` when React.createElement is called, so that we
1949 - * can warn. We want to get rid of owner and replace string `ref`s with arrow
1950 - * functions, and as long as `this` and owner are the same, there will be no
1951 - * change in behavior.
1952 - * @param {*} source An annotation object (added by a transpiler or otherwise)
1953 - * indicating filename, line number, and/or other information.
1954 - * @param {*} owner
1955 - * @param {*} props
1956 - * @internal
1957 - */
1958 -var ReactElement = function (type, key, ref, self, source, owner, props) {
1959 - var element = {
1960 - // This tag allow us to uniquely identify this as a React Element
1961 - $$typeof: REACT_ELEMENT_TYPE,
1962 -
1963 - // Built-in properties that belong on the element
1964 - type: type,
1965 - key: key,
1966 - ref: ref,
1967 - props: props,
1968 -
1969 - // Record the component responsible for creating this element.
1970 - _owner: owner
1971 - };
1972 -
1973 - if ("development" !== 'production') {
1974 - // The validation flag is currently mutative. We put it on
1975 - // an external backing store so that we can freeze the whole object.
1976 - // This can be replaced with a WeakMap once they are implemented in
1977 - // commonly used development environments.
1978 - element._store = {};
1979 -
1980 - // To make comparing ReactElements easier for testing purposes, we make
1981 - // the validation flag non-enumerable (where possible, which should
1982 - // include every environment we run tests in), so the test framework
1983 - // ignores it.
1984 - if (canDefineProperty) {
1985 - Object.defineProperty(element._store, 'validated', {
1986 - configurable: false,
1987 - enumerable: false,
1988 - writable: true,
1989 - value: false
1990 - });
1991 - // self and source are DEV only properties.
1992 - Object.defineProperty(element, '_self', {
1993 - configurable: false,
1994 - enumerable: false,
1995 - writable: false,
1996 - value: self
1997 - });
1998 - // Two elements created in two different places should be considered
1999 - // equal for testing purposes and therefore we hide it from enumeration.
2000 - Object.defineProperty(element, '_source', {
2001 - configurable: false,
2002 - enumerable: false,
2003 - writable: false,
2004 - value: source
2005 - });
2006 - } else {
2007 - element._store.validated = false;
2008 - element._self = self;
2009 - element._source = source;
2010 - }
2011 - if (Object.freeze) {
2012 - Object.freeze(element.props);
2013 - Object.freeze(element);
2014 - }
2015 - }
2016 -
2017 - return element;
2018 -};
2019 -
2020 -/**
2021 - * Create and return a new ReactElement of the given type.
2022 - * See https://facebook.github.io/react/docs/react-api.html#createelement
2023 - */
2024 -ReactElement.createElement = function (type, config, children) {
2025 - var propName;
2026 -
2027 - // Reserved names are extracted
2028 - var props = {};
2029 -
2030 - var key = null;
2031 - var ref = null;
2032 - var self = null;
2033 - var source = null;
2034 -
2035 - if (config != null) {
2036 - if (hasValidRef(config)) {
2037 - ref = config.ref;
2038 - }
2039 - if (hasValidKey(config)) {
2040 - key = '' + config.key;
2041 - }
2042 -
2043 - self = config.__self === undefined ? null : config.__self;
2044 - source = config.__source === undefined ? null : config.__source;
2045 - // Remaining properties are added to a new props object
2046 - for (propName in config) {
2047 - if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
2048 - props[propName] = config[propName];
2049 - }
2050 - }
2051 - }
2052 -
2053 - // Children can be more than one argument, and those are transferred onto
2054 - // the newly allocated props object.
2055 - var childrenLength = arguments.length - 2;
2056 - if (childrenLength === 1) {
2057 - props.children = children;
2058 - } else if (childrenLength > 1) {
2059 - var childArray = Array(childrenLength);
2060 - for (var i = 0; i < childrenLength; i++) {
2061 - childArray[i] = arguments[i + 2];
2062 - }
2063 - if ("development" !== 'production') {
2064 - if (Object.freeze) {
2065 - Object.freeze(childArray);
2066 - }
2067 - }
2068 - props.children = childArray;
2069 - }
2070 -
2071 - // Resolve default props
2072 - if (type && type.defaultProps) {
2073 - var defaultProps = type.defaultProps;
2074 - for (propName in defaultProps) {
2075 - if (props[propName] === undefined) {
2076 - props[propName] = defaultProps[propName];
2077 - }
2078 - }
2079 - }
2080 - if ("development" !== 'production') {
2081 - if (key || ref) {
2082 - if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {
2083 - var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
2084 - if (key) {
2085 - defineKeyPropWarningGetter(props, displayName);
2086 - }
2087 - if (ref) {
2088 - defineRefPropWarningGetter(props, displayName);
2089 - }
2090 - }
2091 - }
2092 - }
2093 - return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
2094 -};
2095 -
2096 -/**
2097 - * Return a function that produces ReactElements of a given type.
2098 - * See https://facebook.github.io/react/docs/react-api.html#createfactory
2099 - */
2100 -ReactElement.createFactory = function (type) {
2101 - var factory = ReactElement.createElement.bind(null, type);
2102 - // Expose the type on the factory and the prototype so that it can be
2103 - // easily accessed on elements. E.g. `<Foo />.type === Foo`.
2104 - // This should not be named `constructor` since this may not be the function
2105 - // that created the element, and it may not even be a constructor.
2106 - // Legacy hook TODO: Warn if this is accessed
2107 - factory.type = type;
2108 - return factory;
2109 -};
2110 -
2111 -ReactElement.cloneAndReplaceKey = function (oldElement, newKey) {
2112 - var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
2113 -
2114 - return newElement;
2115 -};
2116 -
2117 -/**
2118 - * Clone and return a new ReactElement using element as the starting point.
2119 - * See https://facebook.github.io/react/docs/react-api.html#cloneelement
2120 - */
2121 -ReactElement.cloneElement = function (element, config, children) {
2122 - var propName;
2123 -
2124 - // Original props are copied
2125 - var props = _assign({}, element.props);
2126 -
2127 - // Reserved names are extracted
2128 - var key = element.key;
2129 - var ref = element.ref;
2130 - // Self is preserved since the owner is preserved.
2131 - var self = element._self;
2132 - // Source is preserved since cloneElement is unlikely to be targeted by a
2133 - // transpiler, and the original source is probably a better indicator of the
2134 - // true owner.
2135 - var source = element._source;
2136 -
2137 - // Owner will be preserved, unless ref is overridden
2138 - var owner = element._owner;
2139 -
2140 - if (config != null) {
2141 - if (hasValidRef(config)) {
2142 - // Silently steal the ref from the parent.
2143 - ref = config.ref;
2144 - owner = ReactCurrentOwner.current;
2145 - }
2146 - if (hasValidKey(config)) {
2147 - key = '' + config.key;
2148 - }
2149 -
2150 - // Remaining properties override existing props
2151 - var defaultProps;
2152 - if (element.type && element.type.defaultProps) {
2153 - defaultProps = element.type.defaultProps;
2154 - }
2155 - for (propName in config) {
2156 - if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
2157 - if (config[propName] === undefined && defaultProps !== undefined) {
2158 - // Resolve default props
2159 - props[propName] = defaultProps[propName];
2160 - } else {
2161 - props[propName] = config[propName];
2162 - }
2163 - }
2164 - }
2165 - }
2166 -
2167 - // Children can be more than one argument, and those are transferred onto
2168 - // the newly allocated props object.
2169 - var childrenLength = arguments.length - 2;
2170 - if (childrenLength === 1) {
2171 - props.children = children;
2172 - } else if (childrenLength > 1) {
2173 - var childArray = Array(childrenLength);
2174 - for (var i = 0; i < childrenLength; i++) {
2175 - childArray[i] = arguments[i + 2];
2176 - }
2177 - props.children = childArray;
2178 - }
2179 -
2180 - return ReactElement(element.type, key, ref, self, source, owner, props);
2181 -};
2182 -
2183 -/**
2184 - * Verifies the object is a ReactElement.
2185 - * See https://facebook.github.io/react/docs/react-api.html#isvalidelement
2186 - * @param {?object} object
2187 - * @return {boolean} True if `object` is a valid component.
2188 - * @final
2189 - */
2190 -ReactElement.isValidElement = function (object) {
2191 - return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
2192 -};
2193 -
2194 -module.exports = ReactElement;
2195 -},{"11":11,"20":20,"30":30,"31":31,"8":8}],11:[function(_dereq_,module,exports){
2196 -/**
2197 - * Copyright 2014-present, Facebook, Inc.
2198 - * All rights reserved.
2199 - *
2200 - * This source code is licensed under the BSD-style license found in the
2201 - * LICENSE file in the root directory of this source tree. An additional grant
2202 - * of patent rights can be found in the PATENTS file in the same directory.
2203 - *
2204 - *
2205 - */
2206 -
2207 -'use strict';
2208 -
2209 -// The Symbol used to tag the ReactElement type. If there is no native Symbol
2210 -// nor polyfill, then a plain number is used for performance.
2211 -
2212 -var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
2213 -
2214 -module.exports = REACT_ELEMENT_TYPE;
2215 -},{}],12:[function(_dereq_,module,exports){
2216 -/**
2217 - * Copyright 2014-present, Facebook, Inc.
2218 - * All rights reserved.
2219 - *
2220 - * This source code is licensed under the BSD-style license found in the
2221 - * LICENSE file in the root directory of this source tree. An additional grant
2222 - * of patent rights can be found in the PATENTS file in the same directory.
2223 - *
2224 - */
2225 -
2226 -/**
2227 - * ReactElementValidator provides a wrapper around a element factory
2228 - * which validates the props passed to the element. This is intended to be
2229 - * used only in DEV and could be replaced by a static type checker for languages
2230 - * that support it.
2231 - */
2232 -
2233 -'use strict';
2234 -
2235 -var ReactCurrentOwner = _dereq_(8);
2236 -var ReactComponentTreeHook = _dereq_(7);
2237 -var ReactElement = _dereq_(10);
2238 -
2239 -var checkReactTypeSpec = _dereq_(21);
2240 -
2241 -var canDefineProperty = _dereq_(20);
2242 -var getComponentName = _dereq_(22);
2243 -var getIteratorFn = _dereq_(23);
2244 -var warning = _dereq_(30);
2245 -
2246 -function getDeclarationErrorAddendum() {
2247 - if (ReactCurrentOwner.current) {
2248 - var name = getComponentName(ReactCurrentOwner.current);
2249 - if (name) {
2250 - return ' Check the render method of `' + name + '`.';
2251 - }
2252 - }
2253 - return '';
2254 -}
2255 -
2256 -/**
2257 - * Warn if there's no key explicitly set on dynamic arrays of children or
2258 - * object keys are not valid. This allows us to keep track of children between
2259 - * updates.
2260 - */
2261 -var ownerHasKeyUseWarning = {};
2262 -
2263 -function getCurrentComponentErrorInfo(parentType) {
2264 - var info = getDeclarationErrorAddendum();
2265 -
2266 - if (!info) {
2267 - var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
2268 - if (parentName) {
2269 - info = ' Check the top-level render call using <' + parentName + '>.';
2270 - }
2271 - }
2272 - return info;
2273 -}
2274 -
2275 -/**
2276 - * Warn if the element doesn't have an explicit key assigned to it.
2277 - * This element is in an array. The array could grow and shrink or be
2278 - * reordered. All children that haven't already been validated are required to
2279 - * have a "key" property assigned to it. Error statuses are cached so a warning
2280 - * will only be shown once.
2281 - *
2282 - * @internal
2283 - * @param {ReactElement} element Element that requires a key.
2284 - * @param {*} parentType element's parent's type.
2285 - */
2286 -function validateExplicitKey(element, parentType) {
2287 - if (!element._store || element._store.validated || element.key != null) {
2288 - return;
2289 - }
2290 - element._store.validated = true;
2291 -
2292 - var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {});
2293 -
2294 - var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
2295 - if (memoizer[currentComponentErrorInfo]) {
2296 - return;
2297 - }
2298 - memoizer[currentComponentErrorInfo] = true;
2299 -
2300 - // Usually the current owner is the offender, but if it accepts children as a
2301 - // property, it may be the creator of the child that's responsible for
2302 - // assigning it a key.
2303 - var childOwner = '';
2304 - if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
2305 - // Give the component that originally created this child.
2306 - childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.';
2307 - }
2308 -
2309 - "development" !== 'production' ? warning(false, 'Each child in an array or iterator should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0;
2310 -}
2311 -
2312 -/**
2313 - * Ensure that every element either is passed in a static location, in an
2314 - * array with an explicit keys property defined, or in an object literal
2315 - * with valid key property.
2316 - *
2317 - * @internal
2318 - * @param {ReactNode} node Statically passed child of any type.
2319 - * @param {*} parentType node's parent's type.
2320 - */
2321 -function validateChildKeys(node, parentType) {
2322 - if (typeof node !== 'object') {
2323 - return;
2324 - }
2325 - if (Array.isArray(node)) {
2326 - for (var i = 0; i < node.length; i++) {
2327 - var child = node[i];
2328 - if (ReactElement.isValidElement(child)) {
2329 - validateExplicitKey(child, parentType);
2330 - }
2331 - }
2332 - } else if (ReactElement.isValidElement(node)) {
2333 - // This element was passed in a valid location.
2334 - if (node._store) {
2335 - node._store.validated = true;
2336 - }
2337 - } else if (node) {
2338 - var iteratorFn = getIteratorFn(node);
2339 - // Entry iterators provide implicit keys.
2340 - if (iteratorFn) {
2341 - if (iteratorFn !== node.entries) {
2342 - var iterator = iteratorFn.call(node);
2343 - var step;
2344 - while (!(step = iterator.next()).done) {
2345 - if (ReactElement.isValidElement(step.value)) {
2346 - validateExplicitKey(step.value, parentType);
2347 - }
2348 - }
2349 - }
2350 - }
2351 - }
2352 -}
2353 -
2354 -/**
2355 - * Given an element, validate that its props follow the propTypes definition,
2356 - * provided by the type.
2357 - *
2358 - * @param {ReactElement} element
2359 - */
2360 -function validatePropTypes(element) {
2361 - var componentClass = element.type;
2362 - if (typeof componentClass !== 'function') {
2363 - return;
2364 - }
2365 - var name = componentClass.displayName || componentClass.name;
2366 - if (componentClass.propTypes) {
2367 - checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null);
2368 - }
2369 - if (typeof componentClass.getDefaultProps === 'function') {
2370 - "development" !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;
2371 - }
2372 -}
2373 -
2374 -var ReactElementValidator = {
2375 -
2376 - createElement: function (type, props, children) {
2377 - var validType = typeof type === 'string' || typeof type === 'function' || type !== null && typeof type === 'object' && typeof type.tag === 'number';
2378 - // We warn in this case but don't throw. We expect the element creation to
2379 - // succeed and there will likely be errors in render.
2380 - if (!validType) {
2381 - if (typeof type !== 'function' && typeof type !== 'string') {
2382 - var info = '';
2383 - if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
2384 - info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.';
2385 - }
2386 - info += getDeclarationErrorAddendum();
2387 - "development" !== 'production' ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0;
2388 - }
2389 - }
2390 -
2391 - var element = ReactElement.createElement.apply(this, arguments);
2392 -
2393 - // The result can be nullish if a mock or a custom function is used.
2394 - // TODO: Drop this when these are no longer allowed as the type argument.
2395 - if (element == null) {
2396 - return element;
2397 - }
2398 -
2399 - // Skip key warning if the type isn't valid since our key validation logic
2400 - // doesn't expect a non-string/function type and can throw confusing errors.
2401 - // We don't want exception behavior to differ between dev and prod.
2402 - // (Rendering will throw with a helpful message and as soon as the type is
2403 - // fixed, the key warnings will appear.)
2404 - if (validType) {
2405 - for (var i = 2; i < arguments.length; i++) {
2406 - validateChildKeys(arguments[i], type);
2407 - }
2408 - }
2409 -
2410 - validatePropTypes(element);
2411 -
2412 - return element;
2413 - },
2414 -
2415 - createFactory: function (type) {
2416 - var validatedFactory = ReactElementValidator.createElement.bind(null, type);
2417 - // Legacy hook TODO: Warn if this is accessed
2418 - validatedFactory.type = type;
2419 -
2420 - if ("development" !== 'production') {
2421 - if (canDefineProperty) {
2422 - Object.defineProperty(validatedFactory, 'type', {
2423 - enumerable: false,
2424 - get: function () {
2425 - "development" !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0;
2426 - Object.defineProperty(this, 'type', {
2427 - value: type
2428 - });
2429 - return type;
2430 - }
2431 - });
2432 - }
2433 - }
2434 -
2435 - return validatedFactory;
2436 - },
2437 -
2438 - cloneElement: function (element, props, children) {
2439 - var newElement = ReactElement.cloneElement.apply(this, arguments);
2440 - for (var i = 2; i < arguments.length; i++) {
2441 - validateChildKeys(arguments[i], newElement.type);
2442 - }
2443 - validatePropTypes(newElement);
2444 - return newElement;
2445 - }
2446 -
2447 -};
2448 -
2449 -module.exports = ReactElementValidator;
2450 -},{"10":10,"20":20,"21":21,"22":22,"23":23,"30":30,"7":7,"8":8}],13:[function(_dereq_,module,exports){
2451 -/**
2452 - * Copyright 2015-present, Facebook, Inc.
2453 - * All rights reserved.
2454 - *
2455 - * This source code is licensed under the BSD-style license found in the
2456 - * LICENSE file in the root directory of this source tree. An additional grant
2457 - * of patent rights can be found in the PATENTS file in the same directory.
2458 - *
2459 - */
2460 -
2461 -'use strict';
2462 -
2463 -var warning = _dereq_(30);
2464 -
2465 -function warnNoop(publicInstance, callerName) {
2466 - if ("development" !== 'production') {
2467 - var constructor = publicInstance.constructor;
2468 - "development" !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;
2469 - }
2470 -}
2471 -
2472 -/**
2473 - * This is the abstract API for an update queue.
2474 - */
2475 -var ReactNoopUpdateQueue = {
2476 -
2477 - /**
2478 - * Checks whether or not this composite component is mounted.
2479 - * @param {ReactClass} publicInstance The instance we want to test.
2480 - * @return {boolean} True if mounted, false otherwise.
2481 - * @protected
2482 - * @final
2483 - */
2484 - isMounted: function (publicInstance) {
2485 - return false;
2486 - },
2487 -
2488 - /**
2489 - * Forces an update. This should only be invoked when it is known with
2490 - * certainty that we are **not** in a DOM transaction.
2491 - *
2492 - * You may want to call this when you know that some deeper aspect of the
2493 - * component's state has changed but `setState` was not called.
2494 - *
2495 - * This will not invoke `shouldComponentUpdate`, but it will invoke
2496 - * `componentWillUpdate` and `componentDidUpdate`.
2497 - *
2498 - * @param {ReactClass} publicInstance The instance that should rerender.
2499 - * @param {?function} callback Called after component is updated.
2500 - * @param {?string} Name of the calling function in the public API.
2501 - * @internal
2502 - */
2503 - enqueueForceUpdate: function (publicInstance, callback, callerName) {
2504 - warnNoop(publicInstance, 'forceUpdate');
2505 - },
2506 -
2507 - /**
2508 - * Replaces all of the state. Always use this or `setState` to mutate state.
2509 - * You should treat `this.state` as immutable.
2510 - *
2511 - * There is no guarantee that `this.state` will be immediately updated, so
2512 - * accessing `this.state` after calling this method may return the old value.
2513 - *
2514 - * @param {ReactClass} publicInstance The instance that should rerender.
2515 - * @param {object} completeState Next state.
2516 - * @param {?function} callback Called after component is updated.
2517 - * @param {?string} Name of the calling function in the public API.
2518 - * @internal
2519 - */
2520 - enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {
2521 - warnNoop(publicInstance, 'replaceState');
2522 - },
2523 -
2524 - /**
2525 - * Sets a subset of the state. This only exists because _pendingState is
2526 - * internal. This provides a merging strategy that is not available to deep
2527 - * properties which is confusing. TODO: Expose pendingState or don't use it
2528 - * during the merge.
2529 - *
2530 - * @param {ReactClass} publicInstance The instance that should rerender.
2531 - * @param {object} partialState Next partial state to be merged with state.
2532 - * @param {?function} callback Called after component is updated.
2533 - * @param {?string} Name of the calling function in the public API.
2534 - * @internal
2535 - */
2536 - enqueueSetState: function (publicInstance, partialState, callback, callerName) {
2537 - warnNoop(publicInstance, 'setState');
2538 - }
2539 -};
2540 -
2541 -module.exports = ReactNoopUpdateQueue;
2542 -},{"30":30}],14:[function(_dereq_,module,exports){
2543 -/**
2544 - * Copyright 2013-present, Facebook, Inc.
2545 - * All rights reserved.
2546 - *
2547 - * This source code is licensed under the BSD-style license found in the
2548 - * LICENSE file in the root directory of this source tree. An additional grant
2549 - * of patent rights can be found in the PATENTS file in the same directory.
2550 - *
2551 - *
2552 - */
2553 -
2554 -'use strict';
2555 -
2556 -var ReactPropTypeLocationNames = {};
2557 -
2558 -if ("development" !== 'production') {
2559 - ReactPropTypeLocationNames = {
2560 - prop: 'prop',
2561 - context: 'context',
2562 - childContext: 'child context'
2563 - };
2564 -}
2565 -
2566 -module.exports = ReactPropTypeLocationNames;
2567 -},{}],15:[function(_dereq_,module,exports){
2568 -/**
2569 - * Copyright 2013-present, Facebook, Inc.
2570 - * All rights reserved.
2571 - *
2572 - * This source code is licensed under the BSD-style license found in the
2573 - * LICENSE file in the root directory of this source tree. An additional grant
2574 - * of patent rights can be found in the PATENTS file in the same directory.
2575 - *
2576 - */
2577 -
2578 -'use strict';
2579 -
2580 -var _prodInvariant = _dereq_(25);
2581 -
2582 -var ReactElement = _dereq_(10);
2583 -var ReactPropTypeLocationNames = _dereq_(14);
2584 -
2585 -var emptyFunction = _dereq_(27);
2586 -var getIteratorFn = _dereq_(23);
2587 -var invariant = _dereq_(29);
2588 -var warning = _dereq_(30);
2589 -
2590 -/**
2591 - * Collection of methods that allow declaration and validation of props that are
2592 - * supplied to React components. Example usage:
2593 - *
2594 - * var Props = require('ReactPropTypes');
2595 - * var MyArticle = React.createClass({
2596 - * propTypes: {
2597 - * // An optional string prop named "description".
2598 - * description: Props.string,
2599 - *
2600 - * // A required enum prop named "category".
2601 - * category: Props.oneOf(['News','Photos']).isRequired,
2602 - *
2603 - * // A prop named "dialog" that requires an instance of Dialog.
2604 - * dialog: Props.instanceOf(Dialog).isRequired
2605 - * },
2606 - * render: function() { ... }
2607 - * });
2608 - *
2609 - * A more formal specification of how these methods are used:
2610 - *
2611 - * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
2612 - * decl := ReactPropTypes.{type}(.isRequired)?
2613 - *
2614 - * Each and every declaration produces a function with the same signature. This
2615 - * allows the creation of custom validation functions. For example:
2616 - *
2617 - * var MyLink = React.createClass({
2618 - * propTypes: {
2619 - * // An optional string or URI prop named "href".
2620 - * href: function(props, propName, componentName) {
2621 - * var propValue = props[propName];
2622 - * if (propValue != null && typeof propValue !== 'string' &&
2623 - * !(propValue instanceof URI)) {
2624 - * return new Error(
2625 - * 'Expected a string or an URI for ' + propName + ' in ' +
2626 - * componentName
2627 - * );
2628 - * }
2629 - * }
2630 - * },
2631 - * render: function() {...}
2632 - * });
2633 - *
2634 - * @internal
2635 - */
2636 -
2637 -var ANONYMOUS = '<<anonymous>>';
2638 -
2639 -var ReactPropTypes;
2640 -
2641 -if ("development" !== 'production') {
2642 - // Keep in sync with production version below
2643 - ReactPropTypes = {
2644 - array: createPrimitiveTypeChecker('array'),
2645 - bool: createPrimitiveTypeChecker('boolean'),
2646 - func: createPrimitiveTypeChecker('function'),
2647 - number: createPrimitiveTypeChecker('number'),
2648 - object: createPrimitiveTypeChecker('object'),
2649 - string: createPrimitiveTypeChecker('string'),
2650 - symbol: createPrimitiveTypeChecker('symbol'),
2651 -
2652 - any: createAnyTypeChecker(),
2653 - arrayOf: createArrayOfTypeChecker,
2654 - element: createElementTypeChecker(),
2655 - instanceOf: createInstanceTypeChecker,
2656 - node: createNodeChecker(),
2657 - objectOf: createObjectOfTypeChecker,
2658 - oneOf: createEnumTypeChecker,
2659 - oneOfType: createUnionTypeChecker,
2660 - shape: createShapeTypeChecker
2661 - };
2662 -} else {
2663 - var productionTypeChecker = function () {
2664 - invariant(false, 'React.PropTypes type checking code is stripped in production.');
2665 - };
2666 - productionTypeChecker.isRequired = productionTypeChecker;
2667 - var getProductionTypeChecker = function () {
2668 - return productionTypeChecker;
2669 - };
2670 - // Keep in sync with development version above
2671 - ReactPropTypes = {
2672 - array: productionTypeChecker,
2673 - bool: productionTypeChecker,
2674 - func: productionTypeChecker,
2675 - number: productionTypeChecker,
2676 - object: productionTypeChecker,
2677 - string: productionTypeChecker,
2678 - symbol: productionTypeChecker,
2679 -
2680 - any: productionTypeChecker,
2681 - arrayOf: getProductionTypeChecker,
2682 - element: productionTypeChecker,
2683 - instanceOf: getProductionTypeChecker,
2684 - node: productionTypeChecker,
2685 - objectOf: getProductionTypeChecker,
2686 - oneOf: getProductionTypeChecker,
2687 - oneOfType: getProductionTypeChecker,
2688 - shape: getProductionTypeChecker
2689 - };
2690 -}
2691 -
2692 -/**
2693 - * inlined Object.is polyfill to avoid requiring consumers ship their own
2694 - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
2695 - */
2696 -/*eslint-disable no-self-compare*/
2697 -function is(x, y) {
2698 - // SameValue algorithm
2699 - if (x === y) {
2700 - // Steps 1-5, 7-10
2701 - // Steps 6.b-6.e: +0 != -0
2702 - return x !== 0 || 1 / x === 1 / y;
2703 - } else {
2704 - // Step 6.a: NaN == NaN
2705 - return x !== x && y !== y;
2706 - }
2707 -}
2708 -/*eslint-enable no-self-compare*/
2709 -
2710 -/**
2711 - * We use an Error-like object for backward compatibility as people may call
2712 - * PropTypes directly and inspect their output. However we don't use real
2713 - * Errors anymore. We don't inspect their stack anyway, and creating them
2714 - * is prohibitively expensive if they are created too often, such as what
2715 - * happens in oneOfType() for any type before the one that matched.
2716 - */
2717 -function PropTypeError(message) {
2718 - this.message = message;
2719 - this.stack = '';
2720 -}
2721 -// Make `instanceof Error` still work for returned errors.
2722 -PropTypeError.prototype = Error.prototype;
2723 -
2724 -function createChainableTypeChecker(validate) {
2725 - function checkType(isRequired, props, propName, componentName, location, propFullName) {
2726 - componentName = componentName || ANONYMOUS;
2727 - propFullName = propFullName || propName;
2728 - if (props[propName] == null) {
2729 - var locationName = ReactPropTypeLocationNames[location];
2730 - if (isRequired) {
2731 - if (props[propName] === null) {
2732 - return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
2733 - }
2734 - return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
2735 - }
2736 - return null;
2737 - } else {
2738 - return validate(props, propName, componentName, location, propFullName);
2739 - }
2740 - }
2741 -
2742 - var chainedCheckType = checkType.bind(null, false);
2743 - chainedCheckType.isRequired = checkType.bind(null, true);
2744 -
2745 - return chainedCheckType;
2746 -}
2747 -
2748 -function createPrimitiveTypeChecker(expectedType) {
2749 - function validate(props, propName, componentName, location, propFullName) {
2750 - var propValue = props[propName];
2751 - var propType = getPropType(propValue);
2752 - if (propType !== expectedType) {
2753 - var locationName = ReactPropTypeLocationNames[location];
2754 - // `propValue` being instance of, say, date/regexp, pass the 'object'
2755 - // check, but we can offer a more precise error message here rather than
2756 - // 'of type `object`'.
2757 - var preciseType = getPreciseType(propValue);
2758 -
2759 - return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
2760 - }
2761 - return null;
2762 - }
2763 - return createChainableTypeChecker(validate);
2764 -}
2765 -
2766 -function createAnyTypeChecker() {
2767 - return createChainableTypeChecker(emptyFunction.thatReturns(null));
2768 -}
2769 -
2770 -function createArrayOfTypeChecker(typeChecker) {
2771 - function validate(props, propName, componentName, location, propFullName) {
2772 - if (typeof typeChecker !== 'function') {
2773 - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
2774 - }
2775 - var propValue = props[propName];
2776 - if (!Array.isArray(propValue)) {
2777 - var locationName = ReactPropTypeLocationNames[location];
2778 - var propType = getPropType(propValue);
2779 - return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
2780 - }
2781 - for (var i = 0; i < propValue.length; i++) {
2782 - var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']');
2783 - if (error instanceof Error) {
2784 - return error;
2785 - }
2786 - }
2787 - return null;
2788 - }
2789 - return createChainableTypeChecker(validate);
2790 -}
2791 -
2792 -function createElementTypeChecker() {
2793 - function validate(props, propName, componentName, location, propFullName) {
2794 - var propValue = props[propName];
2795 - if (!ReactElement.isValidElement(propValue)) {
2796 - var locationName = ReactPropTypeLocationNames[location];
2797 - var propType = getPropType(propValue);
2798 - return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
2799 - }
2800 - return null;
2801 - }
2802 - return createChainableTypeChecker(validate);
2803 -}
2804 -
2805 -function createInstanceTypeChecker(expectedClass) {
2806 - function validate(props, propName, componentName, location, propFullName) {
2807 - if (!(props[propName] instanceof expectedClass)) {
2808 - var locationName = ReactPropTypeLocationNames[location];
2809 - var expectedClassName = expectedClass.name || ANONYMOUS;
2810 - var actualClassName = getClassName(props[propName]);
2811 - return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
2812 - }
2813 - return null;
2814 - }
2815 - return createChainableTypeChecker(validate);
2816 -}
2817 -
2818 -function createEnumTypeChecker(expectedValues) {
2819 - if (!Array.isArray(expectedValues)) {
2820 - "development" !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
2821 - return emptyFunction.thatReturnsNull;
2822 - }
2823 -
2824 - function validate(props, propName, componentName, location, propFullName) {
2825 - var propValue = props[propName];
2826 - for (var i = 0; i < expectedValues.length; i++) {
2827 - if (is(propValue, expectedValues[i])) {
2828 - return null;
2829 - }
2830 - }
2831 -
2832 - var locationName = ReactPropTypeLocationNames[location];
2833 - var valuesString = JSON.stringify(expectedValues);
2834 - return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
2835 - }
2836 - return createChainableTypeChecker(validate);
2837 -}
2838 -
2839 -function createObjectOfTypeChecker(typeChecker) {
2840 - function validate(props, propName, componentName, location, propFullName) {
2841 - if (typeof typeChecker !== 'function') {
2842 - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
2843 - }
2844 - var propValue = props[propName];
2845 - var propType = getPropType(propValue);
2846 - if (propType !== 'object') {
2847 - var locationName = ReactPropTypeLocationNames[location];
2848 - return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
2849 - }
2850 - for (var key in propValue) {
2851 - if (propValue.hasOwnProperty(key)) {
2852 - var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key);
2853 - if (error instanceof Error) {
2854 - return error;
2855 - }
2856 - }
2857 - }
2858 - return null;
2859 - }
2860 - return createChainableTypeChecker(validate);
2861 -}
2862 -
2863 -function createUnionTypeChecker(arrayOfTypeCheckers) {
2864 - if (!Array.isArray(arrayOfTypeCheckers)) {
2865 - "development" !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
2866 - return emptyFunction.thatReturnsNull;
2867 - }
2868 -
2869 - function validate(props, propName, componentName, location, propFullName) {
2870 - for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
2871 - var checker = arrayOfTypeCheckers[i];
2872 - if (checker(props, propName, componentName, location, propFullName) == null) {
2873 - return null;
2874 - }
2875 - }
2876 -
2877 - var locationName = ReactPropTypeLocationNames[location];
2878 - return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
2879 - }
2880 - return createChainableTypeChecker(validate);
2881 -}
2882 -
2883 -function createNodeChecker() {
2884 - function validate(props, propName, componentName, location, propFullName) {
2885 - if (!isNode(props[propName])) {
2886 - var locationName = ReactPropTypeLocationNames[location];
2887 - return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
2888 - }
2889 - return null;
2890 - }
2891 - return createChainableTypeChecker(validate);
2892 -}
2893 -
2894 -function createShapeTypeChecker(shapeTypes) {
2895 - function validate(props, propName, componentName, location, propFullName) {
2896 - var propValue = props[propName];
2897 - var propType = getPropType(propValue);
2898 - if (propType !== 'object') {
2899 - var locationName = ReactPropTypeLocationNames[location];
2900 - return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
2901 - }
2902 - for (var key in shapeTypes) {
2903 - var checker = shapeTypes[key];
2904 - if (!checker) {
2905 - continue;
2906 - }
2907 - var error = checker(propValue, key, componentName, location, propFullName + '.' + key);
2908 - if (error) {
2909 - return error;
2910 - }
2911 - }
2912 - return null;
2913 - }
2914 - return createChainableTypeChecker(validate);
2915 -}
2916 -
2917 -function isNode(propValue) {
2918 - switch (typeof propValue) {
2919 - case 'number':
2920 - case 'string':
2921 - case 'undefined':
2922 - return true;
2923 - case 'boolean':
2924 - return !propValue;
2925 - case 'object':
2926 - if (Array.isArray(propValue)) {
2927 - return propValue.every(isNode);
2928 - }
2929 - if (propValue === null || ReactElement.isValidElement(propValue)) {
2930 - return true;
2931 - }
2932 -
2933 - var iteratorFn = getIteratorFn(propValue);
2934 - if (iteratorFn) {
2935 - var iterator = iteratorFn.call(propValue);
2936 - var step;
2937 - if (iteratorFn !== propValue.entries) {
2938 - while (!(step = iterator.next()).done) {
2939 - if (!isNode(step.value)) {
2940 - return false;
2941 - }
2942 - }
2943 - } else {
2944 - // Iterator will provide entry [k,v] tuples rather than values.
2945 - while (!(step = iterator.next()).done) {
2946 - var entry = step.value;
2947 - if (entry) {
2948 - if (!isNode(entry[1])) {
2949 - return false;
2950 - }
2951 - }
2952 - }
2953 - }
2954 - } else {
2955 - return false;
2956 - }
2957 -
2958 - return true;
2959 - default:
2960 - return false;
2961 - }
2962 -}
2963 -
2964 -function isSymbol(propType, propValue) {
2965 - // Native Symbol.
2966 - if (propType === 'symbol') {
2967 - return true;
2968 - }
2969 -
2970 - // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
2971 - if (propValue['@@toStringTag'] === 'Symbol') {
2972 - return true;
2973 - }
2974 -
2975 - // Fallback for non-spec compliant Symbols which are polyfilled.
2976 - if (typeof Symbol === 'function' && propValue instanceof Symbol) {
2977 - return true;
2978 - }
2979 -
2980 - return false;
2981 -}
2982 -
2983 -// Equivalent of `typeof` but with special handling for array and regexp.
2984 -function getPropType(propValue) {
2985 - var propType = typeof propValue;
2986 - if (Array.isArray(propValue)) {
2987 - return 'array';
2988 - }
2989 - if (propValue instanceof RegExp) {
2990 - // Old webkits (at least until Android 4.0) return 'function' rather than
2991 - // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
2992 - // passes PropTypes.object.
2993 - return 'object';
2994 - }
2995 - if (isSymbol(propType, propValue)) {
2996 - return 'symbol';
2997 - }
2998 - return propType;
2999 -}
3000 -
3001 -// This handles more types than `getPropType`. Only used for error messages.
3002 -// See `createPrimitiveTypeChecker`.
3003 -function getPreciseType(propValue) {
3004 - var propType = getPropType(propValue);
3005 - if (propType === 'object') {
3006 - if (propValue instanceof Date) {
3007 - return 'date';
3008 - } else if (propValue instanceof RegExp) {
3009 - return 'regexp';
3010 - }
3011 - }
3012 - return propType;
3013 -}
3014 -
3015 -// Returns class name of the object, if any.
3016 -function getClassName(propValue) {
3017 - if (!propValue.constructor || !propValue.constructor.name) {
3018 - return ANONYMOUS;
3019 - }
3020 - return propValue.constructor.name;
3021 -}
3022 -
3023 -module.exports = ReactPropTypes;
3024 -},{"10":10,"14":14,"23":23,"25":25,"27":27,"29":29,"30":30}],16:[function(_dereq_,module,exports){
3025 -/**
3026 - * Copyright 2013-present, Facebook, Inc.
3027 - * All rights reserved.
3028 - *
3029 - * This source code is licensed under the BSD-style license found in the
3030 - * LICENSE file in the root directory of this source tree. An additional grant
3031 - * of patent rights can be found in the PATENTS file in the same directory.
3032 - *
3033 - */
3034 -
3035 -'use strict';
3036 -
3037 -var _assign = _dereq_(31);
3038 -
3039 -var ReactComponent = _dereq_(6);
3040 -var ReactNoopUpdateQueue = _dereq_(13);
3041 -
3042 -var emptyObject = _dereq_(28);
3043 -
3044 -/**
3045 - * Base class helpers for the updating state of a component.
3046 - */
3047 -function ReactPureComponent(props, context, updater) {
3048 - // Duplicated from ReactComponent.
3049 - this.props = props;
3050 - this.context = context;
3051 - this.refs = emptyObject;
3052 - // We initialize the default updater but the real one gets injected by the
3053 - // renderer.
3054 - this.updater = updater || ReactNoopUpdateQueue;
3055 -}
3056 -
3057 -function ComponentDummy() {}
3058 -ComponentDummy.prototype = ReactComponent.prototype;
3059 -ReactPureComponent.prototype = new ComponentDummy();
3060 -ReactPureComponent.prototype.constructor = ReactPureComponent;
3061 -// Avoid an extra prototype jump for these methods.
3062 -_assign(ReactPureComponent.prototype, ReactComponent.prototype);
3063 -ReactPureComponent.prototype.isPureReactComponent = true;
3064 -
3065 -module.exports = ReactPureComponent;
3066 -},{"13":13,"28":28,"31":31,"6":6}],17:[function(_dereq_,module,exports){
3067 -/**
3068 - * Copyright 2013-present, Facebook, Inc.
3069 - * All rights reserved.
3070 - *
3071 - * This source code is licensed under the BSD-style license found in the
3072 - * LICENSE file in the root directory of this source tree. An additional grant
3073 - * of patent rights can be found in the PATENTS file in the same directory.
3074 - *
3075 - *
3076 - */
3077 -
3078 -'use strict';
3079 -
3080 -module.exports = {
3081 - IndeterminateComponent: 0, // Before we know whether it is functional or class
3082 - FunctionalComponent: 1,
3083 - ClassComponent: 2,
3084 - HostRoot: 3, // Root of a host tree. Could be nested inside another node.
3085 - HostPortal: 4, // A subtree. Could be an entry point to a different renderer.
3086 - HostComponent: 5,
3087 - HostText: 6,
3088 - CoroutineComponent: 7,
3089 - CoroutineHandlerPhase: 8,
3090 - YieldComponent: 9,
3091 - Fragment: 10
3092 -};
3093 -},{}],18:[function(_dereq_,module,exports){
3094 -/**
3095 - * Copyright 2013-present, Facebook, Inc.
3096 - * All rights reserved.
3097 - *
3098 - * This source code is licensed under the BSD-style license found in the
3099 - * LICENSE file in the root directory of this source tree. An additional grant
3100 - * of patent rights can be found in the PATENTS file in the same directory.
3101 - *
3102 - */
3103 -
3104 -'use strict';
3105 -
3106 -var _assign = _dereq_(31);
3107 -
3108 -var React = _dereq_(3);
3109 -
3110 -// `version` will be added here by the React module.
3111 -var ReactUMDEntry = _assign({
3112 - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {
3113 - ReactCurrentOwner: _dereq_(8)
3114 - }
3115 -}, React);
3116 -
3117 -if ("development" !== 'production') {
3118 - _assign(ReactUMDEntry.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, {
3119 - // ReactComponentTreeHook should not be included in production.
3120 - ReactComponentTreeHook: _dereq_(7)
3121 - });
3122 -}
3123 -
3124 -module.exports = ReactUMDEntry;
3125 -},{"3":3,"31":31,"7":7,"8":8}],19:[function(_dereq_,module,exports){
3126 -/**
3127 - * Copyright 2013-present, Facebook, Inc.
3128 - * All rights reserved.
3129 - *
3130 - * This source code is licensed under the BSD-style license found in the
3131 - * LICENSE file in the root directory of this source tree. An additional grant
3132 - * of patent rights can be found in the PATENTS file in the same directory.
3133 - *
3134 - */
3135 -
3136 -'use strict';
3137 -
3138 -module.exports = '16.0.0-alpha';
3139 -},{}],20:[function(_dereq_,module,exports){
3140 -/**
3141 - * Copyright 2013-present, Facebook, Inc.
3142 - * All rights reserved.
3143 - *
3144 - * This source code is licensed under the BSD-style license found in the
3145 - * LICENSE file in the root directory of this source tree. An additional grant
3146 - * of patent rights can be found in the PATENTS file in the same directory.
3147 - *
3148 - *
3149 - */
3150 -
3151 -'use strict';
3152 -
3153 -var canDefineProperty = false;
3154 -if ("development" !== 'production') {
3155 - try {
3156 - // $FlowFixMe https://github.com/facebook/flow/issues/285
3157 - Object.defineProperty({}, 'x', { get: function () {} });
3158 - canDefineProperty = true;
3159 - } catch (x) {
3160 - // IE will fail on defineProperty
3161 - }
3162 -}
3163 -
3164 -module.exports = canDefineProperty;
3165 -},{}],21:[function(_dereq_,module,exports){
3166 -(function (process){
3167 -/**
3168 - * Copyright 2013-present, Facebook, Inc.
3169 - * All rights reserved.
3170 - *
3171 - * This source code is licensed under the BSD-style license found in the
3172 - * LICENSE file in the root directory of this source tree. An additional grant
3173 - * of patent rights can be found in the PATENTS file in the same directory.
3174 - *
3175 - */
3176 -
3177 -'use strict';
3178 -
3179 -var _prodInvariant = _dereq_(25);
3180 -
3181 -var ReactPropTypeLocationNames = _dereq_(14);
3182 -
3183 -var invariant = _dereq_(29);
3184 -var warning = _dereq_(30);
3185 -
3186 -var ReactComponentTreeHook;
3187 -
3188 -if (typeof process !== 'undefined' && process.env && "development" === 'test') {
3189 - // Temporary hack.
3190 - // Inline requires don't work well with Jest:
3191 - // https://github.com/facebook/react/issues/7240
3192 - // Remove the inline requires when we don't need them anymore:
3193 - // https://github.com/facebook/react/pull/7178
3194 - ReactComponentTreeHook = _dereq_(7);
3195 -}
3196 -
3197 -var loggedTypeFailures = {};
3198 -
3199 -/**
3200 - * Assert that the values match with the type specs.
3201 - * Error messages are memorized and will only be shown once.
3202 - *
3203 - * @param {object} typeSpecs Map of name to a ReactPropType
3204 - * @param {object} values Runtime values that need to be type-checked
3205 - * @param {string} location e.g. "prop", "context", "child context"
3206 - * @param {string} componentName Name of the component for error messages.
3207 - * @param {?object} element The React element that is being type-checked
3208 - * @param {?number} workInProgressOrDebugID The React component instance that is being type-checked
3209 - * @private
3210 - */
3211 -function checkReactTypeSpec(typeSpecs, values, location, componentName, element,
3212 -// It is only safe to pass fiber if it is the work-in-progress version, and
3213 -workInProgressOrDebugID) {
3214 - for (var typeSpecName in typeSpecs) {
3215 - if (typeSpecs.hasOwnProperty(typeSpecName)) {
3216 - var error;
3217 - // Prop type validation may throw. In case they do, we don't want to
3218 - // fail the render phase where it didn't fail before. So we log it.
3219 - // After these have been cleaned up, we'll let them throw.
3220 - try {
3221 - // This is intentionally an invariant that gets caught. It's the same
3222 - // behavior as without this statement except with a better message.
3223 - !(typeof typeSpecs[typeSpecName] === 'function') ? "development" !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant('84', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName) : void 0;
3224 - error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location);
3225 - } catch (ex) {
3226 - error = ex;
3227 - }
3228 - "development" !== 'production' ? warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;
3229 - if (error instanceof Error && !(error.message in loggedTypeFailures)) {
3230 - // Only monitor this failure once because there tends to be a lot of the
3231 - // same error.
3232 - loggedTypeFailures[error.message] = true;
3233 -
3234 - var componentStackInfo = '';
3235 -
3236 - if ("development" !== 'production') {
3237 - if (!ReactComponentTreeHook) {
3238 - ReactComponentTreeHook = _dereq_(7);
3239 - }
3240 - if (workInProgressOrDebugID != null) {
3241 - if (typeof workInProgressOrDebugID === 'number') {
3242 - // DebugID from Stack.
3243 - var debugID = workInProgressOrDebugID;
3244 - componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);
3245 - } else if (typeof workInProgressOrDebugID.tag === 'number') {
3246 - // This is a Fiber.
3247 - // The stack will only be correct if this is a work in progress
3248 - // version and we're calling it during reconciliation.
3249 - var workInProgress = workInProgressOrDebugID;
3250 - componentStackInfo = ReactComponentTreeHook.getStackAddendumByWorkInProgressFiber(workInProgress);
3251 - }
3252 - } else if (element !== null) {
3253 - componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);
3254 - }
3255 - }
3256 -
3257 - "development" !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;
3258 - }
3259 - }
3260 - }
3261 -}
3262 -
3263 -module.exports = checkReactTypeSpec;
3264 -}).call(this,undefined)
3265 -},{"14":14,"25":25,"29":29,"30":30,"7":7}],22:[function(_dereq_,module,exports){
3266 -/**
3267 - * Copyright 2013-present, Facebook, Inc.
3268 - * All rights reserved.
3269 - *
3270 - * This source code is licensed under the BSD-style license found in the
3271 - * LICENSE file in the root directory of this source tree. An additional grant
3272 - * of patent rights can be found in the PATENTS file in the same directory.
3273 - *
3274 - *
3275 - */
3276 -
3277 -'use strict';
3278 -
3279 -function getComponentName(instanceOrFiber) {
3280 - if ("development" !== 'production') {
3281 - if (typeof instanceOrFiber.getName === 'function') {
3282 - // Stack reconciler
3283 - var instance = instanceOrFiber;
3284 - return instance.getName() || 'Component';
3285 - }
3286 - if (typeof instanceOrFiber.tag === 'number') {
3287 - // Fiber reconciler
3288 - var fiber = instanceOrFiber;
3289 - var type = fiber.type;
3290 -
3291 - if (typeof type === 'string') {
3292 - return type;
3293 - }
3294 - if (typeof type === 'function') {
3295 - return type.displayName || type.name || null;
3296 - }
3297 - }
3298 - }
3299 - return null;
3300 -}
3301 -
3302 -module.exports = getComponentName;
3303 -},{}],23:[function(_dereq_,module,exports){
3304 -/**
3305 - * Copyright 2013-present, Facebook, Inc.
3306 - * All rights reserved.
3307 - *
3308 - * This source code is licensed under the BSD-style license found in the
3309 - * LICENSE file in the root directory of this source tree. An additional grant
3310 - * of patent rights can be found in the PATENTS file in the same directory.
3311 - *
3312 - *
3313 - */
3314 -
3315 -'use strict';
3316 -
3317 -/* global Symbol */
3318 -
3319 -var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
3320 -var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
3321 -
3322 -/**
3323 - * Returns the iterator method function contained on the iterable object.
3324 - *
3325 - * Be sure to invoke the function with the iterable as context:
3326 - *
3327 - * var iteratorFn = getIteratorFn(myIterable);
3328 - * if (iteratorFn) {
3329 - * var iterator = iteratorFn.call(myIterable);
3330 - * ...
3331 - * }
3332 - *
3333 - * @param {?object} maybeIterable
3334 - * @return {?function}
3335 - */
3336 -function getIteratorFn(maybeIterable) {
3337 - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
3338 - if (typeof iteratorFn === 'function') {
3339 - return iteratorFn;
3340 - }
3341 -}
3342 -
3343 -module.exports = getIteratorFn;
3344 -},{}],24:[function(_dereq_,module,exports){
3345 -/**
3346 - * Copyright 2013-present, Facebook, Inc.
3347 - * All rights reserved.
3348 - *
3349 - * This source code is licensed under the BSD-style license found in the
3350 - * LICENSE file in the root directory of this source tree. An additional grant
3351 - * of patent rights can be found in the PATENTS file in the same directory.
3352 - *
3353 - */
3354 -'use strict';
3355 -
3356 -var _prodInvariant = _dereq_(25);
3357 -
3358 -var ReactElement = _dereq_(10);
3359 -
3360 -var invariant = _dereq_(29);
3361 -
3362 -/**
3363 - * Returns the first child in a collection of children and verifies that there
3364 - * is only one child in the collection.
3365 - *
3366 - * See https://facebook.github.io/react/docs/react-api.html#react.children.only
3367 - *
3368 - * The current implementation of this function assumes that a single child gets
3369 - * passed without a wrapper, but the purpose of this helper function is to
3370 - * abstract away the particular structure of children.
3371 - *
3372 - * @param {?object} children Child collection structure.
3373 - * @return {ReactElement} The first and only `ReactElement` contained in the
3374 - * structure.
3375 - */
3376 -function onlyChild(children) {
3377 - !ReactElement.isValidElement(children) ? "development" !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;
3378 - return children;
3379 -}
3380 -
3381 -module.exports = onlyChild;
3382 -},{"10":10,"25":25,"29":29}],25:[function(_dereq_,module,exports){
3383 -/**
3384 - * Copyright (c) 2013-present, Facebook, Inc.
3385 - * All rights reserved.
3386 - *
3387 - * This source code is licensed under the BSD-style license found in the
3388 - * LICENSE file in the root directory of this source tree. An additional grant
3389 - * of patent rights can be found in the PATENTS file in the same directory.
3390 - *
3391 - *
3392 - */
3393 -'use strict';
3394 -
3395 -/**
3396 - * WARNING: DO NOT manually require this module.
3397 - * This is a replacement for `invariant(...)` used by the error code system
3398 - * and will _only_ be required by the corresponding babel pass.
3399 - * It always throws.
3400 - */
3401 -
3402 -function reactProdInvariant(code) {
3403 - var argCount = arguments.length - 1;
3404 -
3405 - var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;
3406 -
3407 - for (var argIdx = 0; argIdx < argCount; argIdx++) {
3408 - message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);
3409 - }
3410 -
3411 - message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';
3412 -
3413 - var error = new Error(message);
3414 - error.name = 'Invariant Violation';
3415 - error.framesToPop = 1; // we don't care about reactProdInvariant's own frame
3416 -
3417 - throw error;
3418 -}
3419 -
3420 -module.exports = reactProdInvariant;
3421 -},{}],26:[function(_dereq_,module,exports){
3422 -/**
3423 - * Copyright 2013-present, Facebook, Inc.
3424 - * All rights reserved.
3425 - *
3426 - * This source code is licensed under the BSD-style license found in the
3427 - * LICENSE file in the root directory of this source tree. An additional grant
3428 - * of patent rights can be found in the PATENTS file in the same directory.
3429 - *
3430 - */
3431 -
3432 -'use strict';
3433 -
3434 -var _prodInvariant = _dereq_(25);
3435 -
3436 -var ReactCurrentOwner = _dereq_(8);
3437 -var REACT_ELEMENT_TYPE = _dereq_(11);
3438 -
3439 -var getIteratorFn = _dereq_(23);
3440 -var invariant = _dereq_(29);
3441 -var KeyEscapeUtils = _dereq_(1);
3442 -var warning = _dereq_(30);
3443 -
3444 -var SEPARATOR = '.';
3445 -var SUBSEPARATOR = ':';
3446 -
3447 -/**
3448 - * This is inlined from ReactElement since this file is shared between
3449 - * isomorphic and renderers. We could extract this to a
3450 - *
3451 - */
3452 -
3453 -/**
3454 - * TODO: Test that a single child and an array with one item have the same key
3455 - * pattern.
3456 - */
3457 -
3458 -var didWarnAboutMaps = false;
3459 -
3460 -/**
3461 - * Generate a key string that identifies a component within a set.
3462 - *
3463 - * @param {*} component A component that could contain a manual key.
3464 - * @param {number} index Index that is used if a manual key is not provided.
3465 - * @return {string}
3466 - */
3467 -function getComponentKey(component, index) {
3468 - // Do some typechecking here since we call this blindly. We want to ensure
3469 - // that we don't block potential future ES APIs.
3470 - if (component && typeof component === 'object' && component.key != null) {
3471 - // Explicit key
3472 - return KeyEscapeUtils.escape(component.key);
3473 - }
3474 - // Implicit key determined by the index in the set
3475 - return index.toString(36);
3476 -}
3477 -
3478 -/**
3479 - * @param {?*} children Children tree container.
3480 - * @param {!string} nameSoFar Name of the key path so far.
3481 - * @param {!function} callback Callback to invoke with each child found.
3482 - * @param {?*} traverseContext Used to pass information throughout the traversal
3483 - * process.
3484 - * @return {!number} The number of children in this subtree.
3485 - */
3486 -function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
3487 - var type = typeof children;
3488 -
3489 - if (type === 'undefined' || type === 'boolean') {
3490 - // All of the above are perceived as null.
3491 - children = null;
3492 - }
3493 -
3494 - if (children === null || type === 'string' || type === 'number' ||
3495 - // The following is inlined from ReactElement. This means we can optimize
3496 - // some checks. React Fiber also inlines this logic for similar purposes.
3497 - type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {
3498 - callback(traverseContext, children,
3499 - // If it's the only child, treat the name as if it was wrapped in an array
3500 - // so that it's consistent if the number of children grows.
3501 - nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
3502 - return 1;
3503 - }
3504 -
3505 - var child;
3506 - var nextName;
3507 - var subtreeCount = 0; // Count of children found in the current subtree.
3508 - var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
3509 -
3510 - if (Array.isArray(children)) {
3511 - for (var i = 0; i < children.length; i++) {
3512 - child = children[i];
3513 - nextName = nextNamePrefix + getComponentKey(child, i);
3514 - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
3515 - }
3516 - } else {
3517 - var iteratorFn = getIteratorFn(children);
3518 - if (iteratorFn) {
3519 - var iterator = iteratorFn.call(children);
3520 - var step;
3521 - if (iteratorFn !== children.entries) {
3522 - var ii = 0;
3523 - while (!(step = iterator.next()).done) {
3524 - child = step.value;
3525 - nextName = nextNamePrefix + getComponentKey(child, ii++);
3526 - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
3527 - }
3528 - } else {
3529 - if ("development" !== 'production') {
3530 - var mapsAsChildrenAddendum = '';
3531 - if (ReactCurrentOwner.current) {
3532 - var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();
3533 - if (mapsAsChildrenOwnerName) {
3534 - mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';
3535 - }
3536 - }
3537 - "development" !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;
3538 - didWarnAboutMaps = true;
3539 - }
3540 - // Iterator will provide entry [k,v] tuples rather than values.
3541 - while (!(step = iterator.next()).done) {
3542 - var entry = step.value;
3543 - if (entry) {
3544 - child = entry[1];
3545 - nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);
3546 - subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
3547 - }
3548 - }
3549 - }
3550 - } else if (type === 'object') {
3551 - var addendum = '';
3552 - if ("development" !== 'production') {
3553 - addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';
3554 - if (children._isReactElement) {
3555 - addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';
3556 - }
3557 - if (ReactCurrentOwner.current) {
3558 - var name = ReactCurrentOwner.current.getName();
3559 - if (name) {
3560 - addendum += ' Check the render method of `' + name + '`.';
3561 - }
3562 - }
3563 - }
3564 - var childrenString = String(children);
3565 - !false ? "development" !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;
3566 - }
3567 - }
3568 -
3569 - return subtreeCount;
3570 -}
3571 -
3572 -/**
3573 - * Traverses children that are typically specified as `props.children`, but
3574 - * might also be specified through attributes:
3575 - *
3576 - * - `traverseAllChildren(this.props.children, ...)`
3577 - * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
3578 - *
3579 - * The `traverseContext` is an optional argument that is passed through the
3580 - * entire traversal. It can be used to store accumulations or anything else that
3581 - * the callback might find relevant.
3582 - *
3583 - * @param {?*} children Children tree object.
3584 - * @param {!function} callback To invoke upon traversing each child.
3585 - * @param {?*} traverseContext Context for traversal.
3586 - * @return {!number} The number of children in this subtree.
3587 - */
3588 -function traverseAllChildren(children, callback, traverseContext) {
3589 - if (children == null) {
3590 - return 0;
3591 - }
3592 -
3593 - return traverseAllChildrenImpl(children, '', callback, traverseContext);
3594 -}
3595 -
3596 -module.exports = traverseAllChildren;
3597 -},{"1":1,"11":11,"23":23,"25":25,"29":29,"30":30,"8":8}],27:[function(_dereq_,module,exports){
3598 -"use strict";
3599 -
3600 -/**
3601 - * Copyright (c) 2013-present, Facebook, Inc.
3602 - * All rights reserved.
3603 - *
3604 - * This source code is licensed under the BSD-style license found in the
3605 - * LICENSE file in the root directory of this source tree. An additional grant
3606 - * of patent rights can be found in the PATENTS file in the same directory.
3607 - *
3608 - *
3609 - */
3610 -
3611 -function makeEmptyFunction(arg) {
3612 - return function () {
3613 - return arg;
3614 - };
3615 -}
3616 -
3617 -/**
3618 - * This function accepts and discards inputs; it has no side effects. This is
3619 - * primarily useful idiomatically for overridable function endpoints which
3620 - * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
3621 - */
3622 -var emptyFunction = function emptyFunction() {};
3623 -
3624 -emptyFunction.thatReturns = makeEmptyFunction;
3625 -emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
3626 -emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
3627 -emptyFunction.thatReturnsNull = makeEmptyFunction(null);
3628 -emptyFunction.thatReturnsThis = function () {
3629 - return this;
3630 -};
3631 -emptyFunction.thatReturnsArgument = function (arg) {
3632 - return arg;
3633 -};
3634 -
3635 -module.exports = emptyFunction;
3636 -},{}],28:[function(_dereq_,module,exports){
3637 -/**
3638 - * Copyright (c) 2013-present, Facebook, Inc.
3639 - * All rights reserved.
3640 - *
3641 - * This source code is licensed under the BSD-style license found in the
3642 - * LICENSE file in the root directory of this source tree. An additional grant
3643 - * of patent rights can be found in the PATENTS file in the same directory.
3644 - *
3645 - */
3646 -
3647 -'use strict';
3648 -
3649 -var emptyObject = {};
3650 -
3651 -if ("development" !== 'production') {
3652 - Object.freeze(emptyObject);
3653 -}
3654 -
3655 -module.exports = emptyObject;
3656 -},{}],29:[function(_dereq_,module,exports){
3657 -/**
3658 - * Copyright (c) 2013-present, Facebook, Inc.
3659 - * All rights reserved.
3660 - *
3661 - * This source code is licensed under the BSD-style license found in the
3662 - * LICENSE file in the root directory of this source tree. An additional grant
3663 - * of patent rights can be found in the PATENTS file in the same directory.
3664 - *
3665 - */
3666 -
3667 -'use strict';
3668 -
3669 -/**
3670 - * Use invariant() to assert state which your program assumes to be true.
3671 - *
3672 - * Provide sprintf-style format (only %s is supported) and arguments
3673 - * to provide information about what broke and what you were
3674 - * expecting.
3675 - *
3676 - * The invariant message will be stripped in production, but the invariant
3677 - * will remain to ensure logic does not differ in production.
3678 - */
3679 -
3680 -function invariant(condition, format, a, b, c, d, e, f) {
3681 - if ("development" !== 'production') {
3682 - if (format === undefined) {
3683 - throw new Error('invariant requires an error message argument');
3684 - }
3685 - }
3686 -
3687 - if (!condition) {
3688 - var error;
3689 - if (format === undefined) {
3690 - error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
3691 - } else {
3692 - var args = [a, b, c, d, e, f];
3693 - var argIndex = 0;
3694 - error = new Error(format.replace(/%s/g, function () {
3695 - return args[argIndex++];
3696 - }));
3697 - error.name = 'Invariant Violation';
3698 - }
3699 -
3700 - error.framesToPop = 1; // we don't care about invariant's own frame
3701 - throw error;
3702 - }
3703 -}
3704 -
3705 -module.exports = invariant;
3706 -},{}],30:[function(_dereq_,module,exports){
3707 -/**
3708 - * Copyright 2014-2015, Facebook, Inc.
3709 - * All rights reserved.
3710 - *
3711 - * This source code is licensed under the BSD-style license found in the
3712 - * LICENSE file in the root directory of this source tree. An additional grant
3713 - * of patent rights can be found in the PATENTS file in the same directory.
3714 - *
3715 - */
3716 -
3717 -'use strict';
3718 -
3719 -var emptyFunction = _dereq_(27);
3720 -
3721 -/**
3722 - * Similar to invariant but only logs a warning if the condition is not met.
3723 - * This can be used to log issues in development environments in critical
3724 - * paths. Removing the logging code for production environments will keep the
3725 - * same logic and follow the same code paths.
3726 - */
3727 -
3728 -var warning = emptyFunction;
3729 -
3730 -if ("development" !== 'production') {
3731 - (function () {
3732 - var printWarning = function printWarning(format) {
3733 - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
3734 - args[_key - 1] = arguments[_key];
3735 - }
3736 -
3737 - var argIndex = 0;
3738 - var message = 'Warning: ' + format.replace(/%s/g, function () {
3739 - return args[argIndex++];
3740 - });
3741 - if (typeof console !== 'undefined') {
3742 - console.error(message);
3743 - }
3744 - try {
3745 - // --- Welcome to debugging React ---
3746 - // This error was thrown as a convenience so that you can use this stack
3747 - // to find the callsite that caused this warning to fire.
3748 - throw new Error(message);
3749 - } catch (x) {}
3750 - };
3751 -
3752 - warning = function warning(condition, format) {
3753 - if (format === undefined) {
3754 - throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
3755 - }
3756 -
3757 - if (format.indexOf('Failed Composite propType: ') === 0) {
3758 - return; // Ignore CompositeComponent proptype check.
3759 - }
3760 -
3761 - if (!condition) {
3762 - for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
3763 - args[_key2 - 2] = arguments[_key2];
3764 - }
3765 -
3766 - printWarning.apply(undefined, [format].concat(args));
3767 - }
3768 - };
3769 - })();
3770 -}
3771 -
3772 -module.exports = warning;
3773 -},{"27":27}],31:[function(_dereq_,module,exports){
3774 -'use strict';
3775 -/* eslint-disable no-unused-vars */
3776 -var hasOwnProperty = Object.prototype.hasOwnProperty;
3777 -var propIsEnumerable = Object.prototype.propertyIsEnumerable;
3778 -
3779 -function toObject(val) {
3780 - if (val === null || val === undefined) {
3781 - throw new TypeError('Object.assign cannot be called with null or undefined');
3782 - }
3783 -
3784 - return Object(val);
3785 -}
3786 -
3787 -function shouldUseNative() {
3788 - try {
3789 - if (!Object.assign) {
3790 - return false;
3791 - }
3792 -
3793 - // Detect buggy property enumeration order in older V8 versions.
3794 -
3795 - // https://bugs.chromium.org/p/v8/issues/detail?id=4118
3796 - var test1 = new String('abc'); // eslint-disable-line
3797 - test1[5] = 'de';
3798 - if (Object.getOwnPropertyNames(test1)[0] === '5') {
3799 - return false;
3800 - }
3801 -
3802 - // https://bugs.chromium.org/p/v8/issues/detail?id=3056
3803 - var test2 = {};
3804 - for (var i = 0; i < 10; i++) {
3805 - test2['_' + String.fromCharCode(i)] = i;
3806 - }
3807 - var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
3808 - return test2[n];
3809 - });
3810 - if (order2.join('') !== '0123456789') {
3811 - return false;
3812 - }
3813 -
3814 - // https://bugs.chromium.org/p/v8/issues/detail?id=3056
3815 - var test3 = {};
3816 - 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
3817 - test3[letter] = letter;
3818 - });
3819 - if (Object.keys(Object.assign({}, test3)).join('') !==
3820 - 'abcdefghijklmnopqrst') {
3821 - return false;
3822 - }
3823 -
3824 - return true;
3825 - } catch (e) {
3826 - // We don't expect any of the above to throw, but better to be safe.
3827 - return false;
3828 - }
3829 -}
3830 -
3831 -module.exports = shouldUseNative() ? Object.assign : function (target, source) {
3832 - var from;
3833 - var to = toObject(target);
3834 - var symbols;
3835 -
3836 - for (var s = 1; s < arguments.length; s++) {
3837 - from = Object(arguments[s]);
3838 -
3839 - for (var key in from) {
3840 - if (hasOwnProperty.call(from, key)) {
3841 - to[key] = from[key];
3842 - }
3843 - }
3844 -
3845 - if (Object.getOwnPropertySymbols) {
3846 - symbols = Object.getOwnPropertySymbols(from);
3847 - for (var i = 0; i < symbols.length; i++) {
3848 - if (propIsEnumerable.call(from, symbols[i])) {
3849 - to[symbols[i]] = from[symbols[i]];
3850 - }
3851 - }
3852 - }
3853 - }
3854 -
3855 - return to;
3856 -};
3857 -
3858 -},{}]},{},[18])(18)
3859 -});
\ No newline at end of file