UNPKG

2.15 MBJavaScriptView Raw
1/******/ (function(modules) { // webpackBootstrap
2/******/ // The module cache
3/******/ var installedModules = {};
4
5/******/ // The require function
6/******/ function __webpack_require__(moduleId) {
7
8/******/ // Check if module is in cache
9/******/ if(installedModules[moduleId])
10/******/ return installedModules[moduleId].exports;
11
12/******/ // Create a new module (and put it into the cache)
13/******/ var module = installedModules[moduleId] = {
14/******/ exports: {},
15/******/ id: moduleId,
16/******/ loaded: false
17/******/ };
18
19/******/ // Execute the module function
20/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21
22/******/ // Flag the module as loaded
23/******/ module.loaded = true;
24
25/******/ // Return the exports of the module
26/******/ return module.exports;
27/******/ }
28
29
30/******/ // expose the modules object (__webpack_modules__)
31/******/ __webpack_require__.m = modules;
32
33/******/ // expose the module cache
34/******/ __webpack_require__.c = installedModules;
35
36/******/ // __webpack_public_path__
37/******/ __webpack_require__.p = "";
38
39/******/ // Load entry module and return exports
40/******/ return __webpack_require__(0);
41/******/ })
42/************************************************************************/
43/******/ ([
44/* 0 */
45/***/ function(module, exports, __webpack_require__) {
46
47 'use strict';
48
49 var _react = __webpack_require__(89);
50
51 var _react2 = _interopRequireDefault(_react);
52
53 var _reactDom = __webpack_require__(122);
54
55 var _reactRouter = __webpack_require__(260);
56
57 var _LoginRoutes = __webpack_require__(323);
58
59 var _LoginRoutes2 = _interopRequireDefault(_LoginRoutes);
60
61 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
62
63 /* global document, require */
64
65 /**
66 * Entry point for login/register page.
67 * @author pmeijer / https://github.com/pmeijer
68 */
69
70 // Libraries
71 __webpack_require__(602);
72 // Self-defined
73
74 __webpack_require__(626);
75
76 (0, _reactDom.render)(_react2.default.createElement(_reactRouter.Router, { history: _reactRouter.browserHistory, routes: _LoginRoutes2.default }), document.getElementById('mainEntry'));
77
78/***/ },
79/* 1 */,
80/* 2 */,
81/* 3 */,
82/* 4 */,
83/* 5 */,
84/* 6 */,
85/* 7 */,
86/* 8 */,
87/* 9 */,
88/* 10 */,
89/* 11 */,
90/* 12 */,
91/* 13 */,
92/* 14 */,
93/* 15 */,
94/* 16 */,
95/* 17 */,
96/* 18 */,
97/* 19 */,
98/* 20 */,
99/* 21 */,
100/* 22 */,
101/* 23 */,
102/* 24 */,
103/* 25 */,
104/* 26 */,
105/* 27 */,
106/* 28 */,
107/* 29 */,
108/* 30 */,
109/* 31 */,
110/* 32 */,
111/* 33 */,
112/* 34 */,
113/* 35 */,
114/* 36 */,
115/* 37 */,
116/* 38 */,
117/* 39 */,
118/* 40 */,
119/* 41 */,
120/* 42 */,
121/* 43 */,
122/* 44 */,
123/* 45 */,
124/* 46 */,
125/* 47 */,
126/* 48 */,
127/* 49 */,
128/* 50 */,
129/* 51 */,
130/* 52 */,
131/* 53 */,
132/* 54 */,
133/* 55 */,
134/* 56 */,
135/* 57 */,
136/* 58 */,
137/* 59 */,
138/* 60 */,
139/* 61 */,
140/* 62 */,
141/* 63 */,
142/* 64 */,
143/* 65 */,
144/* 66 */,
145/* 67 */,
146/* 68 */,
147/* 69 */,
148/* 70 */,
149/* 71 */,
150/* 72 */,
151/* 73 */,
152/* 74 */,
153/* 75 */,
154/* 76 */,
155/* 77 */,
156/* 78 */,
157/* 79 */,
158/* 80 */,
159/* 81 */,
160/* 82 */,
161/* 83 */,
162/* 84 */,
163/* 85 */,
164/* 86 */,
165/* 87 */,
166/* 88 */,
167/* 89 */
168/***/ function(module, exports, __webpack_require__) {
169
170 'use strict';
171
172 module.exports = __webpack_require__(90);
173
174
175/***/ },
176/* 90 */
177/***/ function(module, exports, __webpack_require__) {
178
179 /**
180 * Copyright 2013-present, Facebook, Inc.
181 * All rights reserved.
182 *
183 * This source code is licensed under the BSD-style license found in the
184 * LICENSE file in the root directory of this source tree. An additional grant
185 * of patent rights can be found in the PATENTS file in the same directory.
186 *
187 * @providesModule React
188 */
189
190 'use strict';
191
192 var _assign = __webpack_require__(91);
193
194 var ReactChildren = __webpack_require__(92);
195 var ReactComponent = __webpack_require__(104);
196 var ReactPureComponent = __webpack_require__(107);
197 var ReactClass = __webpack_require__(108);
198 var ReactDOMFactories = __webpack_require__(113);
199 var ReactElement = __webpack_require__(96);
200 var ReactPropTypes = __webpack_require__(119);
201 var ReactVersion = __webpack_require__(120);
202
203 var onlyChild = __webpack_require__(121);
204 var warning = __webpack_require__(98);
205
206 var createElement = ReactElement.createElement;
207 var createFactory = ReactElement.createFactory;
208 var cloneElement = ReactElement.cloneElement;
209
210 if ((undefined) !== 'production') {
211 var ReactElementValidator = __webpack_require__(114);
212 createElement = ReactElementValidator.createElement;
213 createFactory = ReactElementValidator.createFactory;
214 cloneElement = ReactElementValidator.cloneElement;
215 }
216
217 var __spread = _assign;
218
219 if ((undefined) !== 'production') {
220 var warned = false;
221 __spread = function () {
222 (undefined) !== '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;
223 warned = true;
224 return _assign.apply(null, arguments);
225 };
226 }
227
228 var React = {
229
230 // Modern
231
232 Children: {
233 map: ReactChildren.map,
234 forEach: ReactChildren.forEach,
235 count: ReactChildren.count,
236 toArray: ReactChildren.toArray,
237 only: onlyChild
238 },
239
240 Component: ReactComponent,
241 PureComponent: ReactPureComponent,
242
243 createElement: createElement,
244 cloneElement: cloneElement,
245 isValidElement: ReactElement.isValidElement,
246
247 // Classic
248
249 PropTypes: ReactPropTypes,
250 createClass: ReactClass.createClass,
251 createFactory: createFactory,
252 createMixin: function (mixin) {
253 // Currently a noop. Will be used to validate and trace mixins.
254 return mixin;
255 },
256
257 // This looks DOM specific but these are actually isomorphic helpers
258 // since they are just generating DOM strings.
259 DOM: ReactDOMFactories,
260
261 version: ReactVersion,
262
263 // Deprecated hook for JSX spread, don't use this for anything.
264 __spread: __spread
265 };
266
267 module.exports = React;
268
269/***/ },
270/* 91 */
271/***/ function(module, exports) {
272
273 'use strict';
274 /* eslint-disable no-unused-vars */
275 var hasOwnProperty = Object.prototype.hasOwnProperty;
276 var propIsEnumerable = Object.prototype.propertyIsEnumerable;
277
278 function toObject(val) {
279 if (val === null || val === undefined) {
280 throw new TypeError('Object.assign cannot be called with null or undefined');
281 }
282
283 return Object(val);
284 }
285
286 function shouldUseNative() {
287 try {
288 if (!Object.assign) {
289 return false;
290 }
291
292 // Detect buggy property enumeration order in older V8 versions.
293
294 // https://bugs.chromium.org/p/v8/issues/detail?id=4118
295 var test1 = new String('abc'); // eslint-disable-line
296 test1[5] = 'de';
297 if (Object.getOwnPropertyNames(test1)[0] === '5') {
298 return false;
299 }
300
301 // https://bugs.chromium.org/p/v8/issues/detail?id=3056
302 var test2 = {};
303 for (var i = 0; i < 10; i++) {
304 test2['_' + String.fromCharCode(i)] = i;
305 }
306 var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
307 return test2[n];
308 });
309 if (order2.join('') !== '0123456789') {
310 return false;
311 }
312
313 // https://bugs.chromium.org/p/v8/issues/detail?id=3056
314 var test3 = {};
315 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
316 test3[letter] = letter;
317 });
318 if (Object.keys(Object.assign({}, test3)).join('') !==
319 'abcdefghijklmnopqrst') {
320 return false;
321 }
322
323 return true;
324 } catch (e) {
325 // We don't expect any of the above to throw, but better to be safe.
326 return false;
327 }
328 }
329
330 module.exports = shouldUseNative() ? Object.assign : function (target, source) {
331 var from;
332 var to = toObject(target);
333 var symbols;
334
335 for (var s = 1; s < arguments.length; s++) {
336 from = Object(arguments[s]);
337
338 for (var key in from) {
339 if (hasOwnProperty.call(from, key)) {
340 to[key] = from[key];
341 }
342 }
343
344 if (Object.getOwnPropertySymbols) {
345 symbols = Object.getOwnPropertySymbols(from);
346 for (var i = 0; i < symbols.length; i++) {
347 if (propIsEnumerable.call(from, symbols[i])) {
348 to[symbols[i]] = from[symbols[i]];
349 }
350 }
351 }
352 }
353
354 return to;
355 };
356
357
358/***/ },
359/* 92 */
360/***/ function(module, exports, __webpack_require__) {
361
362 /**
363 * Copyright 2013-present, Facebook, Inc.
364 * All rights reserved.
365 *
366 * This source code is licensed under the BSD-style license found in the
367 * LICENSE file in the root directory of this source tree. An additional grant
368 * of patent rights can be found in the PATENTS file in the same directory.
369 *
370 * @providesModule ReactChildren
371 */
372
373 'use strict';
374
375 var PooledClass = __webpack_require__(93);
376 var ReactElement = __webpack_require__(96);
377
378 var emptyFunction = __webpack_require__(99);
379 var traverseAllChildren = __webpack_require__(101);
380
381 var twoArgumentPooler = PooledClass.twoArgumentPooler;
382 var fourArgumentPooler = PooledClass.fourArgumentPooler;
383
384 var userProvidedKeyEscapeRegex = /\/+/g;
385 function escapeUserProvidedKey(text) {
386 return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');
387 }
388
389 /**
390 * PooledClass representing the bookkeeping associated with performing a child
391 * traversal. Allows avoiding binding callbacks.
392 *
393 * @constructor ForEachBookKeeping
394 * @param {!function} forEachFunction Function to perform traversal with.
395 * @param {?*} forEachContext Context to perform context with.
396 */
397 function ForEachBookKeeping(forEachFunction, forEachContext) {
398 this.func = forEachFunction;
399 this.context = forEachContext;
400 this.count = 0;
401 }
402 ForEachBookKeeping.prototype.destructor = function () {
403 this.func = null;
404 this.context = null;
405 this.count = 0;
406 };
407 PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);
408
409 function forEachSingleChild(bookKeeping, child, name) {
410 var func = bookKeeping.func;
411 var context = bookKeeping.context;
412
413 func.call(context, child, bookKeeping.count++);
414 }
415
416 /**
417 * Iterates through children that are typically specified as `props.children`.
418 *
419 * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach
420 *
421 * The provided forEachFunc(child, index) will be called for each
422 * leaf child.
423 *
424 * @param {?*} children Children tree container.
425 * @param {function(*, int)} forEachFunc
426 * @param {*} forEachContext Context for forEachContext.
427 */
428 function forEachChildren(children, forEachFunc, forEachContext) {
429 if (children == null) {
430 return children;
431 }
432 var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);
433 traverseAllChildren(children, forEachSingleChild, traverseContext);
434 ForEachBookKeeping.release(traverseContext);
435 }
436
437 /**
438 * PooledClass representing the bookkeeping associated with performing a child
439 * mapping. Allows avoiding binding callbacks.
440 *
441 * @constructor MapBookKeeping
442 * @param {!*} mapResult Object containing the ordered map of results.
443 * @param {!function} mapFunction Function to perform mapping with.
444 * @param {?*} mapContext Context to perform mapping with.
445 */
446 function MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {
447 this.result = mapResult;
448 this.keyPrefix = keyPrefix;
449 this.func = mapFunction;
450 this.context = mapContext;
451 this.count = 0;
452 }
453 MapBookKeeping.prototype.destructor = function () {
454 this.result = null;
455 this.keyPrefix = null;
456 this.func = null;
457 this.context = null;
458 this.count = 0;
459 };
460 PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);
461
462 function mapSingleChildIntoContext(bookKeeping, child, childKey) {
463 var result = bookKeeping.result;
464 var keyPrefix = bookKeeping.keyPrefix;
465 var func = bookKeeping.func;
466 var context = bookKeeping.context;
467
468
469 var mappedChild = func.call(context, child, bookKeeping.count++);
470 if (Array.isArray(mappedChild)) {
471 mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);
472 } else if (mappedChild != null) {
473 if (ReactElement.isValidElement(mappedChild)) {
474 mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,
475 // Keep both the (mapped) and old keys if they differ, just as
476 // traverseAllChildren used to do for objects as children
477 keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);
478 }
479 result.push(mappedChild);
480 }
481 }
482
483 function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
484 var escapedPrefix = '';
485 if (prefix != null) {
486 escapedPrefix = escapeUserProvidedKey(prefix) + '/';
487 }
488 var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);
489 traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);
490 MapBookKeeping.release(traverseContext);
491 }
492
493 /**
494 * Maps children that are typically specified as `props.children`.
495 *
496 * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map
497 *
498 * The provided mapFunction(child, key, index) will be called for each
499 * leaf child.
500 *
501 * @param {?*} children Children tree container.
502 * @param {function(*, int)} func The map function.
503 * @param {*} context Context for mapFunction.
504 * @return {object} Object containing the ordered map of results.
505 */
506 function mapChildren(children, func, context) {
507 if (children == null) {
508 return children;
509 }
510 var result = [];
511 mapIntoWithKeyPrefixInternal(children, result, null, func, context);
512 return result;
513 }
514
515 function forEachSingleChildDummy(traverseContext, child, name) {
516 return null;
517 }
518
519 /**
520 * Count the number of children that are typically specified as
521 * `props.children`.
522 *
523 * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count
524 *
525 * @param {?*} children Children tree container.
526 * @return {number} The number of children.
527 */
528 function countChildren(children, context) {
529 return traverseAllChildren(children, forEachSingleChildDummy, null);
530 }
531
532 /**
533 * Flatten a children object (typically specified as `props.children`) and
534 * return an array with appropriately re-keyed children.
535 *
536 * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray
537 */
538 function toArray(children) {
539 var result = [];
540 mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);
541 return result;
542 }
543
544 var ReactChildren = {
545 forEach: forEachChildren,
546 map: mapChildren,
547 mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,
548 count: countChildren,
549 toArray: toArray
550 };
551
552 module.exports = ReactChildren;
553
554/***/ },
555/* 93 */
556/***/ function(module, exports, __webpack_require__) {
557
558 /**
559 * Copyright 2013-present, Facebook, Inc.
560 * All rights reserved.
561 *
562 * This source code is licensed under the BSD-style license found in the
563 * LICENSE file in the root directory of this source tree. An additional grant
564 * of patent rights can be found in the PATENTS file in the same directory.
565 *
566 * @providesModule PooledClass
567 */
568
569 'use strict';
570
571 var _prodInvariant = __webpack_require__(94);
572
573 var invariant = __webpack_require__(95);
574
575 /**
576 * Static poolers. Several custom versions for each potential number of
577 * arguments. A completely generic pooler is easy to implement, but would
578 * require accessing the `arguments` object. In each of these, `this` refers to
579 * the Class itself, not an instance. If any others are needed, simply add them
580 * here, or in their own files.
581 */
582 var oneArgumentPooler = function (copyFieldsFrom) {
583 var Klass = this;
584 if (Klass.instancePool.length) {
585 var instance = Klass.instancePool.pop();
586 Klass.call(instance, copyFieldsFrom);
587 return instance;
588 } else {
589 return new Klass(copyFieldsFrom);
590 }
591 };
592
593 var twoArgumentPooler = function (a1, a2) {
594 var Klass = this;
595 if (Klass.instancePool.length) {
596 var instance = Klass.instancePool.pop();
597 Klass.call(instance, a1, a2);
598 return instance;
599 } else {
600 return new Klass(a1, a2);
601 }
602 };
603
604 var threeArgumentPooler = function (a1, a2, a3) {
605 var Klass = this;
606 if (Klass.instancePool.length) {
607 var instance = Klass.instancePool.pop();
608 Klass.call(instance, a1, a2, a3);
609 return instance;
610 } else {
611 return new Klass(a1, a2, a3);
612 }
613 };
614
615 var fourArgumentPooler = function (a1, a2, a3, a4) {
616 var Klass = this;
617 if (Klass.instancePool.length) {
618 var instance = Klass.instancePool.pop();
619 Klass.call(instance, a1, a2, a3, a4);
620 return instance;
621 } else {
622 return new Klass(a1, a2, a3, a4);
623 }
624 };
625
626 var fiveArgumentPooler = function (a1, a2, a3, a4, a5) {
627 var Klass = this;
628 if (Klass.instancePool.length) {
629 var instance = Klass.instancePool.pop();
630 Klass.call(instance, a1, a2, a3, a4, a5);
631 return instance;
632 } else {
633 return new Klass(a1, a2, a3, a4, a5);
634 }
635 };
636
637 var standardReleaser = function (instance) {
638 var Klass = this;
639 !(instance instanceof Klass) ? (undefined) !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;
640 instance.destructor();
641 if (Klass.instancePool.length < Klass.poolSize) {
642 Klass.instancePool.push(instance);
643 }
644 };
645
646 var DEFAULT_POOL_SIZE = 10;
647 var DEFAULT_POOLER = oneArgumentPooler;
648
649 /**
650 * Augments `CopyConstructor` to be a poolable class, augmenting only the class
651 * itself (statically) not adding any prototypical fields. Any CopyConstructor
652 * you give this may have a `poolSize` property, and will look for a
653 * prototypical `destructor` on instances.
654 *
655 * @param {Function} CopyConstructor Constructor that can be used to reset.
656 * @param {Function} pooler Customizable pooler.
657 */
658 var addPoolingTo = function (CopyConstructor, pooler) {
659 var NewKlass = CopyConstructor;
660 NewKlass.instancePool = [];
661 NewKlass.getPooled = pooler || DEFAULT_POOLER;
662 if (!NewKlass.poolSize) {
663 NewKlass.poolSize = DEFAULT_POOL_SIZE;
664 }
665 NewKlass.release = standardReleaser;
666 return NewKlass;
667 };
668
669 var PooledClass = {
670 addPoolingTo: addPoolingTo,
671 oneArgumentPooler: oneArgumentPooler,
672 twoArgumentPooler: twoArgumentPooler,
673 threeArgumentPooler: threeArgumentPooler,
674 fourArgumentPooler: fourArgumentPooler,
675 fiveArgumentPooler: fiveArgumentPooler
676 };
677
678 module.exports = PooledClass;
679
680/***/ },
681/* 94 */
682/***/ function(module, exports) {
683
684 /**
685 * Copyright (c) 2013-present, Facebook, Inc.
686 * All rights reserved.
687 *
688 * This source code is licensed under the BSD-style license found in the
689 * LICENSE file in the root directory of this source tree. An additional grant
690 * of patent rights can be found in the PATENTS file in the same directory.
691 *
692 * @providesModule reactProdInvariant
693 *
694 */
695 'use strict';
696
697 /**
698 * WARNING: DO NOT manually require this module.
699 * This is a replacement for `invariant(...)` used by the error code system
700 * and will _only_ be required by the corresponding babel pass.
701 * It always throws.
702 */
703
704 function reactProdInvariant(code) {
705 var argCount = arguments.length - 1;
706
707 var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;
708
709 for (var argIdx = 0; argIdx < argCount; argIdx++) {
710 message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);
711 }
712
713 message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';
714
715 var error = new Error(message);
716 error.name = 'Invariant Violation';
717 error.framesToPop = 1; // we don't care about reactProdInvariant's own frame
718
719 throw error;
720 }
721
722 module.exports = reactProdInvariant;
723
724/***/ },
725/* 95 */
726/***/ function(module, exports, __webpack_require__) {
727
728 /**
729 * Copyright (c) 2013-present, Facebook, Inc.
730 * All rights reserved.
731 *
732 * This source code is licensed under the BSD-style license found in the
733 * LICENSE file in the root directory of this source tree. An additional grant
734 * of patent rights can be found in the PATENTS file in the same directory.
735 *
736 */
737
738 'use strict';
739
740 /**
741 * Use invariant() to assert state which your program assumes to be true.
742 *
743 * Provide sprintf-style format (only %s is supported) and arguments
744 * to provide information about what broke and what you were
745 * expecting.
746 *
747 * The invariant message will be stripped in production, but the invariant
748 * will remain to ensure logic does not differ in production.
749 */
750
751 function invariant(condition, format, a, b, c, d, e, f) {
752 if ((undefined) !== 'production') {
753 if (format === undefined) {
754 throw new Error('invariant requires an error message argument');
755 }
756 }
757
758 if (!condition) {
759 var error;
760 if (format === undefined) {
761 error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
762 } else {
763 var args = [a, b, c, d, e, f];
764 var argIndex = 0;
765 error = new Error(format.replace(/%s/g, function () {
766 return args[argIndex++];
767 }));
768 error.name = 'Invariant Violation';
769 }
770
771 error.framesToPop = 1; // we don't care about invariant's own frame
772 throw error;
773 }
774 }
775
776 module.exports = invariant;
777
778/***/ },
779/* 96 */
780/***/ function(module, exports, __webpack_require__) {
781
782 /**
783 * Copyright 2014-present, Facebook, Inc.
784 * All rights reserved.
785 *
786 * This source code is licensed under the BSD-style license found in the
787 * LICENSE file in the root directory of this source tree. An additional grant
788 * of patent rights can be found in the PATENTS file in the same directory.
789 *
790 * @providesModule ReactElement
791 */
792
793 'use strict';
794
795 var _assign = __webpack_require__(91);
796
797 var ReactCurrentOwner = __webpack_require__(97);
798
799 var warning = __webpack_require__(98);
800 var canDefineProperty = __webpack_require__(100);
801 var hasOwnProperty = Object.prototype.hasOwnProperty;
802
803 // The Symbol used to tag the ReactElement type. If there is no native Symbol
804 // nor polyfill, then a plain number is used for performance.
805 var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
806
807 var RESERVED_PROPS = {
808 key: true,
809 ref: true,
810 __self: true,
811 __source: true
812 };
813
814 var specialPropKeyWarningShown, specialPropRefWarningShown;
815
816 function hasValidRef(config) {
817 if ((undefined) !== 'production') {
818 if (hasOwnProperty.call(config, 'ref')) {
819 var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
820 if (getter && getter.isReactWarning) {
821 return false;
822 }
823 }
824 }
825 return config.ref !== undefined;
826 }
827
828 function hasValidKey(config) {
829 if ((undefined) !== 'production') {
830 if (hasOwnProperty.call(config, 'key')) {
831 var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
832 if (getter && getter.isReactWarning) {
833 return false;
834 }
835 }
836 }
837 return config.key !== undefined;
838 }
839
840 function defineKeyPropWarningGetter(props, displayName) {
841 var warnAboutAccessingKey = function () {
842 if (!specialPropKeyWarningShown) {
843 specialPropKeyWarningShown = true;
844 (undefined) !== '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;
845 }
846 };
847 warnAboutAccessingKey.isReactWarning = true;
848 Object.defineProperty(props, 'key', {
849 get: warnAboutAccessingKey,
850 configurable: true
851 });
852 }
853
854 function defineRefPropWarningGetter(props, displayName) {
855 var warnAboutAccessingRef = function () {
856 if (!specialPropRefWarningShown) {
857 specialPropRefWarningShown = true;
858 (undefined) !== '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;
859 }
860 };
861 warnAboutAccessingRef.isReactWarning = true;
862 Object.defineProperty(props, 'ref', {
863 get: warnAboutAccessingRef,
864 configurable: true
865 });
866 }
867
868 /**
869 * Factory method to create a new React element. This no longer adheres to
870 * the class pattern, so do not use new to call it. Also, no instanceof check
871 * will work. Instead test $$typeof field against Symbol.for('react.element') to check
872 * if something is a React Element.
873 *
874 * @param {*} type
875 * @param {*} key
876 * @param {string|object} ref
877 * @param {*} self A *temporary* helper to detect places where `this` is
878 * different from the `owner` when React.createElement is called, so that we
879 * can warn. We want to get rid of owner and replace string `ref`s with arrow
880 * functions, and as long as `this` and owner are the same, there will be no
881 * change in behavior.
882 * @param {*} source An annotation object (added by a transpiler or otherwise)
883 * indicating filename, line number, and/or other information.
884 * @param {*} owner
885 * @param {*} props
886 * @internal
887 */
888 var ReactElement = function (type, key, ref, self, source, owner, props) {
889 var element = {
890 // This tag allow us to uniquely identify this as a React Element
891 $$typeof: REACT_ELEMENT_TYPE,
892
893 // Built-in properties that belong on the element
894 type: type,
895 key: key,
896 ref: ref,
897 props: props,
898
899 // Record the component responsible for creating this element.
900 _owner: owner
901 };
902
903 if ((undefined) !== 'production') {
904 // The validation flag is currently mutative. We put it on
905 // an external backing store so that we can freeze the whole object.
906 // This can be replaced with a WeakMap once they are implemented in
907 // commonly used development environments.
908 element._store = {};
909 var shadowChildren = Array.isArray(props.children) ? props.children.slice(0) : props.children;
910
911 // To make comparing ReactElements easier for testing purposes, we make
912 // the validation flag non-enumerable (where possible, which should
913 // include every environment we run tests in), so the test framework
914 // ignores it.
915 if (canDefineProperty) {
916 Object.defineProperty(element._store, 'validated', {
917 configurable: false,
918 enumerable: false,
919 writable: true,
920 value: false
921 });
922 // self and source are DEV only properties.
923 Object.defineProperty(element, '_self', {
924 configurable: false,
925 enumerable: false,
926 writable: false,
927 value: self
928 });
929 Object.defineProperty(element, '_shadowChildren', {
930 configurable: false,
931 enumerable: false,
932 writable: false,
933 value: shadowChildren
934 });
935 // Two elements created in two different places should be considered
936 // equal for testing purposes and therefore we hide it from enumeration.
937 Object.defineProperty(element, '_source', {
938 configurable: false,
939 enumerable: false,
940 writable: false,
941 value: source
942 });
943 } else {
944 element._store.validated = false;
945 element._self = self;
946 element._shadowChildren = shadowChildren;
947 element._source = source;
948 }
949 if (Object.freeze) {
950 Object.freeze(element.props);
951 Object.freeze(element);
952 }
953 }
954
955 return element;
956 };
957
958 /**
959 * Create and return a new ReactElement of the given type.
960 * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement
961 */
962 ReactElement.createElement = function (type, config, children) {
963 var propName;
964
965 // Reserved names are extracted
966 var props = {};
967
968 var key = null;
969 var ref = null;
970 var self = null;
971 var source = null;
972
973 if (config != null) {
974 if (hasValidRef(config)) {
975 ref = config.ref;
976 }
977 if (hasValidKey(config)) {
978 key = '' + config.key;
979 }
980
981 self = config.__self === undefined ? null : config.__self;
982 source = config.__source === undefined ? null : config.__source;
983 // Remaining properties are added to a new props object
984 for (propName in config) {
985 if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
986 props[propName] = config[propName];
987 }
988 }
989 }
990
991 // Children can be more than one argument, and those are transferred onto
992 // the newly allocated props object.
993 var childrenLength = arguments.length - 2;
994 if (childrenLength === 1) {
995 props.children = children;
996 } else if (childrenLength > 1) {
997 var childArray = Array(childrenLength);
998 for (var i = 0; i < childrenLength; i++) {
999 childArray[i] = arguments[i + 2];
1000 }
1001 props.children = childArray;
1002 }
1003
1004 // Resolve default props
1005 if (type && type.defaultProps) {
1006 var defaultProps = type.defaultProps;
1007 for (propName in defaultProps) {
1008 if (props[propName] === undefined) {
1009 props[propName] = defaultProps[propName];
1010 }
1011 }
1012 }
1013 if ((undefined) !== 'production') {
1014 if (key || ref) {
1015 if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {
1016 var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
1017 if (key) {
1018 defineKeyPropWarningGetter(props, displayName);
1019 }
1020 if (ref) {
1021 defineRefPropWarningGetter(props, displayName);
1022 }
1023 }
1024 }
1025 }
1026 return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
1027 };
1028
1029 /**
1030 * Return a function that produces ReactElements of a given type.
1031 * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory
1032 */
1033 ReactElement.createFactory = function (type) {
1034 var factory = ReactElement.createElement.bind(null, type);
1035 // Expose the type on the factory and the prototype so that it can be
1036 // easily accessed on elements. E.g. `<Foo />.type === Foo`.
1037 // This should not be named `constructor` since this may not be the function
1038 // that created the element, and it may not even be a constructor.
1039 // Legacy hook TODO: Warn if this is accessed
1040 factory.type = type;
1041 return factory;
1042 };
1043
1044 ReactElement.cloneAndReplaceKey = function (oldElement, newKey) {
1045 var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
1046
1047 return newElement;
1048 };
1049
1050 /**
1051 * Clone and return a new ReactElement using element as the starting point.
1052 * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement
1053 */
1054 ReactElement.cloneElement = function (element, config, children) {
1055 var propName;
1056
1057 // Original props are copied
1058 var props = _assign({}, element.props);
1059
1060 // Reserved names are extracted
1061 var key = element.key;
1062 var ref = element.ref;
1063 // Self is preserved since the owner is preserved.
1064 var self = element._self;
1065 // Source is preserved since cloneElement is unlikely to be targeted by a
1066 // transpiler, and the original source is probably a better indicator of the
1067 // true owner.
1068 var source = element._source;
1069
1070 // Owner will be preserved, unless ref is overridden
1071 var owner = element._owner;
1072
1073 if (config != null) {
1074 if (hasValidRef(config)) {
1075 // Silently steal the ref from the parent.
1076 ref = config.ref;
1077 owner = ReactCurrentOwner.current;
1078 }
1079 if (hasValidKey(config)) {
1080 key = '' + config.key;
1081 }
1082
1083 // Remaining properties override existing props
1084 var defaultProps;
1085 if (element.type && element.type.defaultProps) {
1086 defaultProps = element.type.defaultProps;
1087 }
1088 for (propName in config) {
1089 if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
1090 if (config[propName] === undefined && defaultProps !== undefined) {
1091 // Resolve default props
1092 props[propName] = defaultProps[propName];
1093 } else {
1094 props[propName] = config[propName];
1095 }
1096 }
1097 }
1098 }
1099
1100 // Children can be more than one argument, and those are transferred onto
1101 // the newly allocated props object.
1102 var childrenLength = arguments.length - 2;
1103 if (childrenLength === 1) {
1104 props.children = children;
1105 } else if (childrenLength > 1) {
1106 var childArray = Array(childrenLength);
1107 for (var i = 0; i < childrenLength; i++) {
1108 childArray[i] = arguments[i + 2];
1109 }
1110 props.children = childArray;
1111 }
1112
1113 return ReactElement(element.type, key, ref, self, source, owner, props);
1114 };
1115
1116 /**
1117 * Verifies the object is a ReactElement.
1118 * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement
1119 * @param {?object} object
1120 * @return {boolean} True if `object` is a valid component.
1121 * @final
1122 */
1123 ReactElement.isValidElement = function (object) {
1124 return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
1125 };
1126
1127 ReactElement.REACT_ELEMENT_TYPE = REACT_ELEMENT_TYPE;
1128
1129 module.exports = ReactElement;
1130
1131/***/ },
1132/* 97 */
1133/***/ function(module, exports) {
1134
1135 /**
1136 * Copyright 2013-present, Facebook, Inc.
1137 * All rights reserved.
1138 *
1139 * This source code is licensed under the BSD-style license found in the
1140 * LICENSE file in the root directory of this source tree. An additional grant
1141 * of patent rights can be found in the PATENTS file in the same directory.
1142 *
1143 * @providesModule ReactCurrentOwner
1144 */
1145
1146 'use strict';
1147
1148 /**
1149 * Keeps track of the current owner.
1150 *
1151 * The current owner is the component who should own any components that are
1152 * currently being constructed.
1153 */
1154
1155 var ReactCurrentOwner = {
1156
1157 /**
1158 * @internal
1159 * @type {ReactComponent}
1160 */
1161 current: null
1162
1163 };
1164
1165 module.exports = ReactCurrentOwner;
1166
1167/***/ },
1168/* 98 */
1169/***/ function(module, exports, __webpack_require__) {
1170
1171 /**
1172 * Copyright 2014-2015, Facebook, Inc.
1173 * All rights reserved.
1174 *
1175 * This source code is licensed under the BSD-style license found in the
1176 * LICENSE file in the root directory of this source tree. An additional grant
1177 * of patent rights can be found in the PATENTS file in the same directory.
1178 *
1179 */
1180
1181 'use strict';
1182
1183 var emptyFunction = __webpack_require__(99);
1184
1185 /**
1186 * Similar to invariant but only logs a warning if the condition is not met.
1187 * This can be used to log issues in development environments in critical
1188 * paths. Removing the logging code for production environments will keep the
1189 * same logic and follow the same code paths.
1190 */
1191
1192 var warning = emptyFunction;
1193
1194 if ((undefined) !== 'production') {
1195 (function () {
1196 var printWarning = function printWarning(format) {
1197 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1198 args[_key - 1] = arguments[_key];
1199 }
1200
1201 var argIndex = 0;
1202 var message = 'Warning: ' + format.replace(/%s/g, function () {
1203 return args[argIndex++];
1204 });
1205 if (typeof console !== 'undefined') {
1206 console.error(message);
1207 }
1208 try {
1209 // --- Welcome to debugging React ---
1210 // This error was thrown as a convenience so that you can use this stack
1211 // to find the callsite that caused this warning to fire.
1212 throw new Error(message);
1213 } catch (x) {}
1214 };
1215
1216 warning = function warning(condition, format) {
1217 if (format === undefined) {
1218 throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
1219 }
1220
1221 if (format.indexOf('Failed Composite propType: ') === 0) {
1222 return; // Ignore CompositeComponent proptype check.
1223 }
1224
1225 if (!condition) {
1226 for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
1227 args[_key2 - 2] = arguments[_key2];
1228 }
1229
1230 printWarning.apply(undefined, [format].concat(args));
1231 }
1232 };
1233 })();
1234 }
1235
1236 module.exports = warning;
1237
1238/***/ },
1239/* 99 */
1240/***/ function(module, exports) {
1241
1242 "use strict";
1243
1244 /**
1245 * Copyright (c) 2013-present, Facebook, Inc.
1246 * All rights reserved.
1247 *
1248 * This source code is licensed under the BSD-style license found in the
1249 * LICENSE file in the root directory of this source tree. An additional grant
1250 * of patent rights can be found in the PATENTS file in the same directory.
1251 *
1252 *
1253 */
1254
1255 function makeEmptyFunction(arg) {
1256 return function () {
1257 return arg;
1258 };
1259 }
1260
1261 /**
1262 * This function accepts and discards inputs; it has no side effects. This is
1263 * primarily useful idiomatically for overridable function endpoints which
1264 * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
1265 */
1266 var emptyFunction = function emptyFunction() {};
1267
1268 emptyFunction.thatReturns = makeEmptyFunction;
1269 emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
1270 emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
1271 emptyFunction.thatReturnsNull = makeEmptyFunction(null);
1272 emptyFunction.thatReturnsThis = function () {
1273 return this;
1274 };
1275 emptyFunction.thatReturnsArgument = function (arg) {
1276 return arg;
1277 };
1278
1279 module.exports = emptyFunction;
1280
1281/***/ },
1282/* 100 */
1283/***/ function(module, exports, __webpack_require__) {
1284
1285 /**
1286 * Copyright 2013-present, Facebook, Inc.
1287 * All rights reserved.
1288 *
1289 * This source code is licensed under the BSD-style license found in the
1290 * LICENSE file in the root directory of this source tree. An additional grant
1291 * of patent rights can be found in the PATENTS file in the same directory.
1292 *
1293 * @providesModule canDefineProperty
1294 */
1295
1296 'use strict';
1297
1298 var canDefineProperty = false;
1299 if ((undefined) !== 'production') {
1300 try {
1301 Object.defineProperty({}, 'x', { get: function () {} });
1302 canDefineProperty = true;
1303 } catch (x) {
1304 // IE will fail on defineProperty
1305 }
1306 }
1307
1308 module.exports = canDefineProperty;
1309
1310/***/ },
1311/* 101 */
1312/***/ function(module, exports, __webpack_require__) {
1313
1314 /**
1315 * Copyright 2013-present, Facebook, Inc.
1316 * All rights reserved.
1317 *
1318 * This source code is licensed under the BSD-style license found in the
1319 * LICENSE file in the root directory of this source tree. An additional grant
1320 * of patent rights can be found in the PATENTS file in the same directory.
1321 *
1322 * @providesModule traverseAllChildren
1323 */
1324
1325 'use strict';
1326
1327 var _prodInvariant = __webpack_require__(94);
1328
1329 var ReactCurrentOwner = __webpack_require__(97);
1330 var ReactElement = __webpack_require__(96);
1331
1332 var getIteratorFn = __webpack_require__(102);
1333 var invariant = __webpack_require__(95);
1334 var KeyEscapeUtils = __webpack_require__(103);
1335 var warning = __webpack_require__(98);
1336
1337 var SEPARATOR = '.';
1338 var SUBSEPARATOR = ':';
1339
1340 /**
1341 * TODO: Test that a single child and an array with one item have the same key
1342 * pattern.
1343 */
1344
1345 var didWarnAboutMaps = false;
1346
1347 /**
1348 * Generate a key string that identifies a component within a set.
1349 *
1350 * @param {*} component A component that could contain a manual key.
1351 * @param {number} index Index that is used if a manual key is not provided.
1352 * @return {string}
1353 */
1354 function getComponentKey(component, index) {
1355 // Do some typechecking here since we call this blindly. We want to ensure
1356 // that we don't block potential future ES APIs.
1357 if (component && typeof component === 'object' && component.key != null) {
1358 // Explicit key
1359 return KeyEscapeUtils.escape(component.key);
1360 }
1361 // Implicit key determined by the index in the set
1362 return index.toString(36);
1363 }
1364
1365 /**
1366 * @param {?*} children Children tree container.
1367 * @param {!string} nameSoFar Name of the key path so far.
1368 * @param {!function} callback Callback to invoke with each child found.
1369 * @param {?*} traverseContext Used to pass information throughout the traversal
1370 * process.
1371 * @return {!number} The number of children in this subtree.
1372 */
1373 function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
1374 var type = typeof children;
1375
1376 if (type === 'undefined' || type === 'boolean') {
1377 // All of the above are perceived as null.
1378 children = null;
1379 }
1380
1381 if (children === null || type === 'string' || type === 'number' || ReactElement.isValidElement(children)) {
1382 callback(traverseContext, children,
1383 // If it's the only child, treat the name as if it was wrapped in an array
1384 // so that it's consistent if the number of children grows.
1385 nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
1386 return 1;
1387 }
1388
1389 var child;
1390 var nextName;
1391 var subtreeCount = 0; // Count of children found in the current subtree.
1392 var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
1393
1394 if (Array.isArray(children)) {
1395 for (var i = 0; i < children.length; i++) {
1396 child = children[i];
1397 nextName = nextNamePrefix + getComponentKey(child, i);
1398 subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
1399 }
1400 } else {
1401 var iteratorFn = getIteratorFn(children);
1402 if (iteratorFn) {
1403 var iterator = iteratorFn.call(children);
1404 var step;
1405 if (iteratorFn !== children.entries) {
1406 var ii = 0;
1407 while (!(step = iterator.next()).done) {
1408 child = step.value;
1409 nextName = nextNamePrefix + getComponentKey(child, ii++);
1410 subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
1411 }
1412 } else {
1413 if ((undefined) !== 'production') {
1414 var mapsAsChildrenAddendum = '';
1415 if (ReactCurrentOwner.current) {
1416 var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();
1417 if (mapsAsChildrenOwnerName) {
1418 mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';
1419 }
1420 }
1421 (undefined) !== '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;
1422 didWarnAboutMaps = true;
1423 }
1424 // Iterator will provide entry [k,v] tuples rather than values.
1425 while (!(step = iterator.next()).done) {
1426 var entry = step.value;
1427 if (entry) {
1428 child = entry[1];
1429 nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);
1430 subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
1431 }
1432 }
1433 }
1434 } else if (type === 'object') {
1435 var addendum = '';
1436 if ((undefined) !== 'production') {
1437 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.';
1438 if (children._isReactElement) {
1439 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.';
1440 }
1441 if (ReactCurrentOwner.current) {
1442 var name = ReactCurrentOwner.current.getName();
1443 if (name) {
1444 addendum += ' Check the render method of `' + name + '`.';
1445 }
1446 }
1447 }
1448 var childrenString = String(children);
1449 true ? (undefined) !== '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;
1450 }
1451 }
1452
1453 return subtreeCount;
1454 }
1455
1456 /**
1457 * Traverses children that are typically specified as `props.children`, but
1458 * might also be specified through attributes:
1459 *
1460 * - `traverseAllChildren(this.props.children, ...)`
1461 * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
1462 *
1463 * The `traverseContext` is an optional argument that is passed through the
1464 * entire traversal. It can be used to store accumulations or anything else that
1465 * the callback might find relevant.
1466 *
1467 * @param {?*} children Children tree object.
1468 * @param {!function} callback To invoke upon traversing each child.
1469 * @param {?*} traverseContext Context for traversal.
1470 * @return {!number} The number of children in this subtree.
1471 */
1472 function traverseAllChildren(children, callback, traverseContext) {
1473 if (children == null) {
1474 return 0;
1475 }
1476
1477 return traverseAllChildrenImpl(children, '', callback, traverseContext);
1478 }
1479
1480 module.exports = traverseAllChildren;
1481
1482/***/ },
1483/* 102 */
1484/***/ function(module, exports) {
1485
1486 /**
1487 * Copyright 2013-present, Facebook, Inc.
1488 * All rights reserved.
1489 *
1490 * This source code is licensed under the BSD-style license found in the
1491 * LICENSE file in the root directory of this source tree. An additional grant
1492 * of patent rights can be found in the PATENTS file in the same directory.
1493 *
1494 * @providesModule getIteratorFn
1495 *
1496 */
1497
1498 'use strict';
1499
1500 /* global Symbol */
1501
1502 var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
1503 var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
1504
1505 /**
1506 * Returns the iterator method function contained on the iterable object.
1507 *
1508 * Be sure to invoke the function with the iterable as context:
1509 *
1510 * var iteratorFn = getIteratorFn(myIterable);
1511 * if (iteratorFn) {
1512 * var iterator = iteratorFn.call(myIterable);
1513 * ...
1514 * }
1515 *
1516 * @param {?object} maybeIterable
1517 * @return {?function}
1518 */
1519 function getIteratorFn(maybeIterable) {
1520 var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
1521 if (typeof iteratorFn === 'function') {
1522 return iteratorFn;
1523 }
1524 }
1525
1526 module.exports = getIteratorFn;
1527
1528/***/ },
1529/* 103 */
1530/***/ function(module, exports) {
1531
1532 /**
1533 * Copyright 2013-present, Facebook, Inc.
1534 * All rights reserved.
1535 *
1536 * This source code is licensed under the BSD-style license found in the
1537 * LICENSE file in the root directory of this source tree. An additional grant
1538 * of patent rights can be found in the PATENTS file in the same directory.
1539 *
1540 * @providesModule KeyEscapeUtils
1541 *
1542 */
1543
1544 'use strict';
1545
1546 /**
1547 * Escape and wrap key so it is safe to use as a reactid
1548 *
1549 * @param {string} key to be escaped.
1550 * @return {string} the escaped key.
1551 */
1552
1553 function escape(key) {
1554 var escapeRegex = /[=:]/g;
1555 var escaperLookup = {
1556 '=': '=0',
1557 ':': '=2'
1558 };
1559 var escapedString = ('' + key).replace(escapeRegex, function (match) {
1560 return escaperLookup[match];
1561 });
1562
1563 return '$' + escapedString;
1564 }
1565
1566 /**
1567 * Unescape and unwrap key for human-readable display
1568 *
1569 * @param {string} key to unescape.
1570 * @return {string} the unescaped key.
1571 */
1572 function unescape(key) {
1573 var unescapeRegex = /(=0|=2)/g;
1574 var unescaperLookup = {
1575 '=0': '=',
1576 '=2': ':'
1577 };
1578 var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
1579
1580 return ('' + keySubstring).replace(unescapeRegex, function (match) {
1581 return unescaperLookup[match];
1582 });
1583 }
1584
1585 var KeyEscapeUtils = {
1586 escape: escape,
1587 unescape: unescape
1588 };
1589
1590 module.exports = KeyEscapeUtils;
1591
1592/***/ },
1593/* 104 */
1594/***/ function(module, exports, __webpack_require__) {
1595
1596 /**
1597 * Copyright 2013-present, Facebook, Inc.
1598 * All rights reserved.
1599 *
1600 * This source code is licensed under the BSD-style license found in the
1601 * LICENSE file in the root directory of this source tree. An additional grant
1602 * of patent rights can be found in the PATENTS file in the same directory.
1603 *
1604 * @providesModule ReactComponent
1605 */
1606
1607 'use strict';
1608
1609 var _prodInvariant = __webpack_require__(94);
1610
1611 var ReactNoopUpdateQueue = __webpack_require__(105);
1612
1613 var canDefineProperty = __webpack_require__(100);
1614 var emptyObject = __webpack_require__(106);
1615 var invariant = __webpack_require__(95);
1616 var warning = __webpack_require__(98);
1617
1618 /**
1619 * Base class helpers for the updating state of a component.
1620 */
1621 function ReactComponent(props, context, updater) {
1622 this.props = props;
1623 this.context = context;
1624 this.refs = emptyObject;
1625 // We initialize the default updater but the real one gets injected by the
1626 // renderer.
1627 this.updater = updater || ReactNoopUpdateQueue;
1628 }
1629
1630 ReactComponent.prototype.isReactComponent = {};
1631
1632 /**
1633 * Sets a subset of the state. Always use this to mutate
1634 * state. You should treat `this.state` as immutable.
1635 *
1636 * There is no guarantee that `this.state` will be immediately updated, so
1637 * accessing `this.state` after calling this method may return the old value.
1638 *
1639 * There is no guarantee that calls to `setState` will run synchronously,
1640 * as they may eventually be batched together. You can provide an optional
1641 * callback that will be executed when the call to setState is actually
1642 * completed.
1643 *
1644 * When a function is provided to setState, it will be called at some point in
1645 * the future (not synchronously). It will be called with the up to date
1646 * component arguments (state, props, context). These values can be different
1647 * from this.* because your function may be called after receiveProps but before
1648 * shouldComponentUpdate, and this new state, props, and context will not yet be
1649 * assigned to this.
1650 *
1651 * @param {object|function} partialState Next partial state or function to
1652 * produce next partial state to be merged with current state.
1653 * @param {?function} callback Called after state is updated.
1654 * @final
1655 * @protected
1656 */
1657 ReactComponent.prototype.setState = function (partialState, callback) {
1658 !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? (undefined) !== '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;
1659 this.updater.enqueueSetState(this, partialState);
1660 if (callback) {
1661 this.updater.enqueueCallback(this, callback, 'setState');
1662 }
1663 };
1664
1665 /**
1666 * Forces an update. This should only be invoked when it is known with
1667 * certainty that we are **not** in a DOM transaction.
1668 *
1669 * You may want to call this when you know that some deeper aspect of the
1670 * component's state has changed but `setState` was not called.
1671 *
1672 * This will not invoke `shouldComponentUpdate`, but it will invoke
1673 * `componentWillUpdate` and `componentDidUpdate`.
1674 *
1675 * @param {?function} callback Called after update is complete.
1676 * @final
1677 * @protected
1678 */
1679 ReactComponent.prototype.forceUpdate = function (callback) {
1680 this.updater.enqueueForceUpdate(this);
1681 if (callback) {
1682 this.updater.enqueueCallback(this, callback, 'forceUpdate');
1683 }
1684 };
1685
1686 /**
1687 * Deprecated APIs. These APIs used to exist on classic React classes but since
1688 * we would like to deprecate them, we're not going to move them over to this
1689 * modern base class. Instead, we define a getter that warns if it's accessed.
1690 */
1691 if ((undefined) !== 'production') {
1692 var deprecatedAPIs = {
1693 isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
1694 replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
1695 };
1696 var defineDeprecationWarning = function (methodName, info) {
1697 if (canDefineProperty) {
1698 Object.defineProperty(ReactComponent.prototype, methodName, {
1699 get: function () {
1700 (undefined) !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;
1701 return undefined;
1702 }
1703 });
1704 }
1705 };
1706 for (var fnName in deprecatedAPIs) {
1707 if (deprecatedAPIs.hasOwnProperty(fnName)) {
1708 defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
1709 }
1710 }
1711 }
1712
1713 module.exports = ReactComponent;
1714
1715/***/ },
1716/* 105 */
1717/***/ function(module, exports, __webpack_require__) {
1718
1719 /**
1720 * Copyright 2015-present, Facebook, Inc.
1721 * All rights reserved.
1722 *
1723 * This source code is licensed under the BSD-style license found in the
1724 * LICENSE file in the root directory of this source tree. An additional grant
1725 * of patent rights can be found in the PATENTS file in the same directory.
1726 *
1727 * @providesModule ReactNoopUpdateQueue
1728 */
1729
1730 'use strict';
1731
1732 var warning = __webpack_require__(98);
1733
1734 function warnNoop(publicInstance, callerName) {
1735 if ((undefined) !== 'production') {
1736 var constructor = publicInstance.constructor;
1737 (undefined) !== '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;
1738 }
1739 }
1740
1741 /**
1742 * This is the abstract API for an update queue.
1743 */
1744 var ReactNoopUpdateQueue = {
1745
1746 /**
1747 * Checks whether or not this composite component is mounted.
1748 * @param {ReactClass} publicInstance The instance we want to test.
1749 * @return {boolean} True if mounted, false otherwise.
1750 * @protected
1751 * @final
1752 */
1753 isMounted: function (publicInstance) {
1754 return false;
1755 },
1756
1757 /**
1758 * Enqueue a callback that will be executed after all the pending updates
1759 * have processed.
1760 *
1761 * @param {ReactClass} publicInstance The instance to use as `this` context.
1762 * @param {?function} callback Called after state is updated.
1763 * @internal
1764 */
1765 enqueueCallback: function (publicInstance, callback) {},
1766
1767 /**
1768 * Forces an update. This should only be invoked when it is known with
1769 * certainty that we are **not** in a DOM transaction.
1770 *
1771 * You may want to call this when you know that some deeper aspect of the
1772 * component's state has changed but `setState` was not called.
1773 *
1774 * This will not invoke `shouldComponentUpdate`, but it will invoke
1775 * `componentWillUpdate` and `componentDidUpdate`.
1776 *
1777 * @param {ReactClass} publicInstance The instance that should rerender.
1778 * @internal
1779 */
1780 enqueueForceUpdate: function (publicInstance) {
1781 warnNoop(publicInstance, 'forceUpdate');
1782 },
1783
1784 /**
1785 * Replaces all of the state. Always use this or `setState` to mutate state.
1786 * You should treat `this.state` as immutable.
1787 *
1788 * There is no guarantee that `this.state` will be immediately updated, so
1789 * accessing `this.state` after calling this method may return the old value.
1790 *
1791 * @param {ReactClass} publicInstance The instance that should rerender.
1792 * @param {object} completeState Next state.
1793 * @internal
1794 */
1795 enqueueReplaceState: function (publicInstance, completeState) {
1796 warnNoop(publicInstance, 'replaceState');
1797 },
1798
1799 /**
1800 * Sets a subset of the state. This only exists because _pendingState is
1801 * internal. This provides a merging strategy that is not available to deep
1802 * properties which is confusing. TODO: Expose pendingState or don't use it
1803 * during the merge.
1804 *
1805 * @param {ReactClass} publicInstance The instance that should rerender.
1806 * @param {object} partialState Next partial state to be merged with state.
1807 * @internal
1808 */
1809 enqueueSetState: function (publicInstance, partialState) {
1810 warnNoop(publicInstance, 'setState');
1811 }
1812 };
1813
1814 module.exports = ReactNoopUpdateQueue;
1815
1816/***/ },
1817/* 106 */
1818/***/ function(module, exports, __webpack_require__) {
1819
1820 /**
1821 * Copyright (c) 2013-present, Facebook, Inc.
1822 * All rights reserved.
1823 *
1824 * This source code is licensed under the BSD-style license found in the
1825 * LICENSE file in the root directory of this source tree. An additional grant
1826 * of patent rights can be found in the PATENTS file in the same directory.
1827 *
1828 */
1829
1830 'use strict';
1831
1832 var emptyObject = {};
1833
1834 if ((undefined) !== 'production') {
1835 Object.freeze(emptyObject);
1836 }
1837
1838 module.exports = emptyObject;
1839
1840/***/ },
1841/* 107 */
1842/***/ function(module, exports, __webpack_require__) {
1843
1844 /**
1845 * Copyright 2013-present, Facebook, Inc.
1846 * All rights reserved.
1847 *
1848 * This source code is licensed under the BSD-style license found in the
1849 * LICENSE file in the root directory of this source tree. An additional grant
1850 * of patent rights can be found in the PATENTS file in the same directory.
1851 *
1852 * @providesModule ReactPureComponent
1853 */
1854
1855 'use strict';
1856
1857 var _assign = __webpack_require__(91);
1858
1859 var ReactComponent = __webpack_require__(104);
1860 var ReactNoopUpdateQueue = __webpack_require__(105);
1861
1862 var emptyObject = __webpack_require__(106);
1863
1864 /**
1865 * Base class helpers for the updating state of a component.
1866 */
1867 function ReactPureComponent(props, context, updater) {
1868 // Duplicated from ReactComponent.
1869 this.props = props;
1870 this.context = context;
1871 this.refs = emptyObject;
1872 // We initialize the default updater but the real one gets injected by the
1873 // renderer.
1874 this.updater = updater || ReactNoopUpdateQueue;
1875 }
1876
1877 function ComponentDummy() {}
1878 ComponentDummy.prototype = ReactComponent.prototype;
1879 ReactPureComponent.prototype = new ComponentDummy();
1880 ReactPureComponent.prototype.constructor = ReactPureComponent;
1881 // Avoid an extra prototype jump for these methods.
1882 _assign(ReactPureComponent.prototype, ReactComponent.prototype);
1883 ReactPureComponent.prototype.isPureReactComponent = true;
1884
1885 module.exports = ReactPureComponent;
1886
1887/***/ },
1888/* 108 */
1889/***/ function(module, exports, __webpack_require__) {
1890
1891 /**
1892 * Copyright 2013-present, Facebook, Inc.
1893 * All rights reserved.
1894 *
1895 * This source code is licensed under the BSD-style license found in the
1896 * LICENSE file in the root directory of this source tree. An additional grant
1897 * of patent rights can be found in the PATENTS file in the same directory.
1898 *
1899 * @providesModule ReactClass
1900 */
1901
1902 'use strict';
1903
1904 var _prodInvariant = __webpack_require__(94),
1905 _assign = __webpack_require__(91);
1906
1907 var ReactComponent = __webpack_require__(104);
1908 var ReactElement = __webpack_require__(96);
1909 var ReactPropTypeLocations = __webpack_require__(109);
1910 var ReactPropTypeLocationNames = __webpack_require__(111);
1911 var ReactNoopUpdateQueue = __webpack_require__(105);
1912
1913 var emptyObject = __webpack_require__(106);
1914 var invariant = __webpack_require__(95);
1915 var keyMirror = __webpack_require__(110);
1916 var keyOf = __webpack_require__(112);
1917 var warning = __webpack_require__(98);
1918
1919 var MIXINS_KEY = keyOf({ mixins: null });
1920
1921 /**
1922 * Policies that describe methods in `ReactClassInterface`.
1923 */
1924 var SpecPolicy = keyMirror({
1925 /**
1926 * These methods may be defined only once by the class specification or mixin.
1927 */
1928 DEFINE_ONCE: null,
1929 /**
1930 * These methods may be defined by both the class specification and mixins.
1931 * Subsequent definitions will be chained. These methods must return void.
1932 */
1933 DEFINE_MANY: null,
1934 /**
1935 * These methods are overriding the base class.
1936 */
1937 OVERRIDE_BASE: null,
1938 /**
1939 * These methods are similar to DEFINE_MANY, except we assume they return
1940 * objects. We try to merge the keys of the return values of all the mixed in
1941 * functions. If there is a key conflict we throw.
1942 */
1943 DEFINE_MANY_MERGED: null
1944 });
1945
1946 var injectedMixins = [];
1947
1948 /**
1949 * Composite components are higher-level components that compose other composite
1950 * or host components.
1951 *
1952 * To create a new type of `ReactClass`, pass a specification of
1953 * your new class to `React.createClass`. The only requirement of your class
1954 * specification is that you implement a `render` method.
1955 *
1956 * var MyComponent = React.createClass({
1957 * render: function() {
1958 * return <div>Hello World</div>;
1959 * }
1960 * });
1961 *
1962 * The class specification supports a specific protocol of methods that have
1963 * special meaning (e.g. `render`). See `ReactClassInterface` for
1964 * more the comprehensive protocol. Any other properties and methods in the
1965 * class specification will be available on the prototype.
1966 *
1967 * @interface ReactClassInterface
1968 * @internal
1969 */
1970 var ReactClassInterface = {
1971
1972 /**
1973 * An array of Mixin objects to include when defining your component.
1974 *
1975 * @type {array}
1976 * @optional
1977 */
1978 mixins: SpecPolicy.DEFINE_MANY,
1979
1980 /**
1981 * An object containing properties and methods that should be defined on
1982 * the component's constructor instead of its prototype (static methods).
1983 *
1984 * @type {object}
1985 * @optional
1986 */
1987 statics: SpecPolicy.DEFINE_MANY,
1988
1989 /**
1990 * Definition of prop types for this component.
1991 *
1992 * @type {object}
1993 * @optional
1994 */
1995 propTypes: SpecPolicy.DEFINE_MANY,
1996
1997 /**
1998 * Definition of context types for this component.
1999 *
2000 * @type {object}
2001 * @optional
2002 */
2003 contextTypes: SpecPolicy.DEFINE_MANY,
2004
2005 /**
2006 * Definition of context types this component sets for its children.
2007 *
2008 * @type {object}
2009 * @optional
2010 */
2011 childContextTypes: SpecPolicy.DEFINE_MANY,
2012
2013 // ==== Definition methods ====
2014
2015 /**
2016 * Invoked when the component is mounted. Values in the mapping will be set on
2017 * `this.props` if that prop is not specified (i.e. using an `in` check).
2018 *
2019 * This method is invoked before `getInitialState` and therefore cannot rely
2020 * on `this.state` or use `this.setState`.
2021 *
2022 * @return {object}
2023 * @optional
2024 */
2025 getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED,
2026
2027 /**
2028 * Invoked once before the component is mounted. The return value will be used
2029 * as the initial value of `this.state`.
2030 *
2031 * getInitialState: function() {
2032 * return {
2033 * isOn: false,
2034 * fooBaz: new BazFoo()
2035 * }
2036 * }
2037 *
2038 * @return {object}
2039 * @optional
2040 */
2041 getInitialState: SpecPolicy.DEFINE_MANY_MERGED,
2042
2043 /**
2044 * @return {object}
2045 * @optional
2046 */
2047 getChildContext: SpecPolicy.DEFINE_MANY_MERGED,
2048
2049 /**
2050 * Uses props from `this.props` and state from `this.state` to render the
2051 * structure of the component.
2052 *
2053 * No guarantees are made about when or how often this method is invoked, so
2054 * it must not have side effects.
2055 *
2056 * render: function() {
2057 * var name = this.props.name;
2058 * return <div>Hello, {name}!</div>;
2059 * }
2060 *
2061 * @return {ReactComponent}
2062 * @nosideeffects
2063 * @required
2064 */
2065 render: SpecPolicy.DEFINE_ONCE,
2066
2067 // ==== Delegate methods ====
2068
2069 /**
2070 * Invoked when the component is initially created and about to be mounted.
2071 * This may have side effects, but any external subscriptions or data created
2072 * by this method must be cleaned up in `componentWillUnmount`.
2073 *
2074 * @optional
2075 */
2076 componentWillMount: SpecPolicy.DEFINE_MANY,
2077
2078 /**
2079 * Invoked when the component has been mounted and has a DOM representation.
2080 * However, there is no guarantee that the DOM node is in the document.
2081 *
2082 * Use this as an opportunity to operate on the DOM when the component has
2083 * been mounted (initialized and rendered) for the first time.
2084 *
2085 * @param {DOMElement} rootNode DOM element representing the component.
2086 * @optional
2087 */
2088 componentDidMount: SpecPolicy.DEFINE_MANY,
2089
2090 /**
2091 * Invoked before the component receives new props.
2092 *
2093 * Use this as an opportunity to react to a prop transition by updating the
2094 * state using `this.setState`. Current props are accessed via `this.props`.
2095 *
2096 * componentWillReceiveProps: function(nextProps, nextContext) {
2097 * this.setState({
2098 * likesIncreasing: nextProps.likeCount > this.props.likeCount
2099 * });
2100 * }
2101 *
2102 * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop
2103 * transition may cause a state change, but the opposite is not true. If you
2104 * need it, you are probably looking for `componentWillUpdate`.
2105 *
2106 * @param {object} nextProps
2107 * @optional
2108 */
2109 componentWillReceiveProps: SpecPolicy.DEFINE_MANY,
2110
2111 /**
2112 * Invoked while deciding if the component should be updated as a result of
2113 * receiving new props, state and/or context.
2114 *
2115 * Use this as an opportunity to `return false` when you're certain that the
2116 * transition to the new props/state/context will not require a component
2117 * update.
2118 *
2119 * shouldComponentUpdate: function(nextProps, nextState, nextContext) {
2120 * return !equal(nextProps, this.props) ||
2121 * !equal(nextState, this.state) ||
2122 * !equal(nextContext, this.context);
2123 * }
2124 *
2125 * @param {object} nextProps
2126 * @param {?object} nextState
2127 * @param {?object} nextContext
2128 * @return {boolean} True if the component should update.
2129 * @optional
2130 */
2131 shouldComponentUpdate: SpecPolicy.DEFINE_ONCE,
2132
2133 /**
2134 * Invoked when the component is about to update due to a transition from
2135 * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`
2136 * and `nextContext`.
2137 *
2138 * Use this as an opportunity to perform preparation before an update occurs.
2139 *
2140 * NOTE: You **cannot** use `this.setState()` in this method.
2141 *
2142 * @param {object} nextProps
2143 * @param {?object} nextState
2144 * @param {?object} nextContext
2145 * @param {ReactReconcileTransaction} transaction
2146 * @optional
2147 */
2148 componentWillUpdate: SpecPolicy.DEFINE_MANY,
2149
2150 /**
2151 * Invoked when the component's DOM representation has been updated.
2152 *
2153 * Use this as an opportunity to operate on the DOM when the component has
2154 * been updated.
2155 *
2156 * @param {object} prevProps
2157 * @param {?object} prevState
2158 * @param {?object} prevContext
2159 * @param {DOMElement} rootNode DOM element representing the component.
2160 * @optional
2161 */
2162 componentDidUpdate: SpecPolicy.DEFINE_MANY,
2163
2164 /**
2165 * Invoked when the component is about to be removed from its parent and have
2166 * its DOM representation destroyed.
2167 *
2168 * Use this as an opportunity to deallocate any external resources.
2169 *
2170 * NOTE: There is no `componentDidUnmount` since your component will have been
2171 * destroyed by that point.
2172 *
2173 * @optional
2174 */
2175 componentWillUnmount: SpecPolicy.DEFINE_MANY,
2176
2177 // ==== Advanced methods ====
2178
2179 /**
2180 * Updates the component's currently mounted DOM representation.
2181 *
2182 * By default, this implements React's rendering and reconciliation algorithm.
2183 * Sophisticated clients may wish to override this.
2184 *
2185 * @param {ReactReconcileTransaction} transaction
2186 * @internal
2187 * @overridable
2188 */
2189 updateComponent: SpecPolicy.OVERRIDE_BASE
2190
2191 };
2192
2193 /**
2194 * Mapping from class specification keys to special processing functions.
2195 *
2196 * Although these are declared like instance properties in the specification
2197 * when defining classes using `React.createClass`, they are actually static
2198 * and are accessible on the constructor instead of the prototype. Despite
2199 * being static, they must be defined outside of the "statics" key under
2200 * which all other static methods are defined.
2201 */
2202 var RESERVED_SPEC_KEYS = {
2203 displayName: function (Constructor, displayName) {
2204 Constructor.displayName = displayName;
2205 },
2206 mixins: function (Constructor, mixins) {
2207 if (mixins) {
2208 for (var i = 0; i < mixins.length; i++) {
2209 mixSpecIntoComponent(Constructor, mixins[i]);
2210 }
2211 }
2212 },
2213 childContextTypes: function (Constructor, childContextTypes) {
2214 if ((undefined) !== 'production') {
2215 validateTypeDef(Constructor, childContextTypes, ReactPropTypeLocations.childContext);
2216 }
2217 Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);
2218 },
2219 contextTypes: function (Constructor, contextTypes) {
2220 if ((undefined) !== 'production') {
2221 validateTypeDef(Constructor, contextTypes, ReactPropTypeLocations.context);
2222 }
2223 Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);
2224 },
2225 /**
2226 * Special case getDefaultProps which should move into statics but requires
2227 * automatic merging.
2228 */
2229 getDefaultProps: function (Constructor, getDefaultProps) {
2230 if (Constructor.getDefaultProps) {
2231 Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);
2232 } else {
2233 Constructor.getDefaultProps = getDefaultProps;
2234 }
2235 },
2236 propTypes: function (Constructor, propTypes) {
2237 if ((undefined) !== 'production') {
2238 validateTypeDef(Constructor, propTypes, ReactPropTypeLocations.prop);
2239 }
2240 Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);
2241 },
2242 statics: function (Constructor, statics) {
2243 mixStaticSpecIntoComponent(Constructor, statics);
2244 },
2245 autobind: function () {} };
2246
2247 // noop
2248 function validateTypeDef(Constructor, typeDef, location) {
2249 for (var propName in typeDef) {
2250 if (typeDef.hasOwnProperty(propName)) {
2251 // use a warning instead of an invariant so components
2252 // don't show up in prod but only in __DEV__
2253 (undefined) !== '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;
2254 }
2255 }
2256 }
2257
2258 function validateMethodOverride(isAlreadyDefined, name) {
2259 var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;
2260
2261 // Disallow overriding of base class methods unless explicitly allowed.
2262 if (ReactClassMixin.hasOwnProperty(name)) {
2263 !(specPolicy === SpecPolicy.OVERRIDE_BASE) ? (undefined) !== '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;
2264 }
2265
2266 // Disallow defining methods more than once unless explicitly allowed.
2267 if (isAlreadyDefined) {
2268 !(specPolicy === SpecPolicy.DEFINE_MANY || specPolicy === SpecPolicy.DEFINE_MANY_MERGED) ? (undefined) !== '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;
2269 }
2270 }
2271
2272 /**
2273 * Mixin helper which handles policy validation and reserved
2274 * specification keys when building React classes.
2275 */
2276 function mixSpecIntoComponent(Constructor, spec) {
2277 if (!spec) {
2278 if ((undefined) !== 'production') {
2279 var typeofSpec = typeof spec;
2280 var isMixinValid = typeofSpec === 'object' && spec !== null;
2281
2282 (undefined) !== '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;
2283 }
2284
2285 return;
2286 }
2287
2288 !(typeof spec !== 'function') ? (undefined) !== '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;
2289 !!ReactElement.isValidElement(spec) ? (undefined) !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;
2290
2291 var proto = Constructor.prototype;
2292 var autoBindPairs = proto.__reactAutoBindPairs;
2293
2294 // By handling mixins before any other properties, we ensure the same
2295 // chaining order is applied to methods with DEFINE_MANY policy, whether
2296 // mixins are listed before or after these methods in the spec.
2297 if (spec.hasOwnProperty(MIXINS_KEY)) {
2298 RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);
2299 }
2300
2301 for (var name in spec) {
2302 if (!spec.hasOwnProperty(name)) {
2303 continue;
2304 }
2305
2306 if (name === MIXINS_KEY) {
2307 // We have already handled mixins in a special case above.
2308 continue;
2309 }
2310
2311 var property = spec[name];
2312 var isAlreadyDefined = proto.hasOwnProperty(name);
2313 validateMethodOverride(isAlreadyDefined, name);
2314
2315 if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {
2316 RESERVED_SPEC_KEYS[name](Constructor, property);
2317 } else {
2318 // Setup methods on prototype:
2319 // The following member methods should not be automatically bound:
2320 // 1. Expected ReactClass methods (in the "interface").
2321 // 2. Overridden methods (that were mixed in).
2322 var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);
2323 var isFunction = typeof property === 'function';
2324 var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;
2325
2326 if (shouldAutoBind) {
2327 autoBindPairs.push(name, property);
2328 proto[name] = property;
2329 } else {
2330 if (isAlreadyDefined) {
2331 var specPolicy = ReactClassInterface[name];
2332
2333 // These cases should already be caught by validateMethodOverride.
2334 !(isReactClassMethod && (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)) ? (undefined) !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;
2335
2336 // For methods which are defined more than once, call the existing
2337 // methods before calling the new property, merging if appropriate.
2338 if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) {
2339 proto[name] = createMergedResultFunction(proto[name], property);
2340 } else if (specPolicy === SpecPolicy.DEFINE_MANY) {
2341 proto[name] = createChainedFunction(proto[name], property);
2342 }
2343 } else {
2344 proto[name] = property;
2345 if ((undefined) !== 'production') {
2346 // Add verbose displayName to the function, which helps when looking
2347 // at profiling tools.
2348 if (typeof property === 'function' && spec.displayName) {
2349 proto[name].displayName = spec.displayName + '_' + name;
2350 }
2351 }
2352 }
2353 }
2354 }
2355 }
2356 }
2357
2358 function mixStaticSpecIntoComponent(Constructor, statics) {
2359 if (!statics) {
2360 return;
2361 }
2362 for (var name in statics) {
2363 var property = statics[name];
2364 if (!statics.hasOwnProperty(name)) {
2365 continue;
2366 }
2367
2368 var isReserved = name in RESERVED_SPEC_KEYS;
2369 !!isReserved ? (undefined) !== '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;
2370
2371 var isInherited = name in Constructor;
2372 !!isInherited ? (undefined) !== '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;
2373 Constructor[name] = property;
2374 }
2375 }
2376
2377 /**
2378 * Merge two objects, but throw if both contain the same key.
2379 *
2380 * @param {object} one The first object, which is mutated.
2381 * @param {object} two The second object
2382 * @return {object} one after it has been mutated to contain everything in two.
2383 */
2384 function mergeIntoWithNoDuplicateKeys(one, two) {
2385 !(one && two && typeof one === 'object' && typeof two === 'object') ? (undefined) !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;
2386
2387 for (var key in two) {
2388 if (two.hasOwnProperty(key)) {
2389 !(one[key] === undefined) ? (undefined) !== '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;
2390 one[key] = two[key];
2391 }
2392 }
2393 return one;
2394 }
2395
2396 /**
2397 * Creates a function that invokes two functions and merges their return values.
2398 *
2399 * @param {function} one Function to invoke first.
2400 * @param {function} two Function to invoke second.
2401 * @return {function} Function that invokes the two argument functions.
2402 * @private
2403 */
2404 function createMergedResultFunction(one, two) {
2405 return function mergedResult() {
2406 var a = one.apply(this, arguments);
2407 var b = two.apply(this, arguments);
2408 if (a == null) {
2409 return b;
2410 } else if (b == null) {
2411 return a;
2412 }
2413 var c = {};
2414 mergeIntoWithNoDuplicateKeys(c, a);
2415 mergeIntoWithNoDuplicateKeys(c, b);
2416 return c;
2417 };
2418 }
2419
2420 /**
2421 * Creates a function that invokes two functions and ignores their return vales.
2422 *
2423 * @param {function} one Function to invoke first.
2424 * @param {function} two Function to invoke second.
2425 * @return {function} Function that invokes the two argument functions.
2426 * @private
2427 */
2428 function createChainedFunction(one, two) {
2429 return function chainedFunction() {
2430 one.apply(this, arguments);
2431 two.apply(this, arguments);
2432 };
2433 }
2434
2435 /**
2436 * Binds a method to the component.
2437 *
2438 * @param {object} component Component whose method is going to be bound.
2439 * @param {function} method Method to be bound.
2440 * @return {function} The bound method.
2441 */
2442 function bindAutoBindMethod(component, method) {
2443 var boundMethod = method.bind(component);
2444 if ((undefined) !== 'production') {
2445 boundMethod.__reactBoundContext = component;
2446 boundMethod.__reactBoundMethod = method;
2447 boundMethod.__reactBoundArguments = null;
2448 var componentName = component.constructor.displayName;
2449 var _bind = boundMethod.bind;
2450 boundMethod.bind = function (newThis) {
2451 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2452 args[_key - 1] = arguments[_key];
2453 }
2454
2455 // User is trying to bind() an autobound method; we effectively will
2456 // ignore the value of "this" that the user is trying to use, so
2457 // let's warn.
2458 if (newThis !== component && newThis !== null) {
2459 (undefined) !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;
2460 } else if (!args.length) {
2461 (undefined) !== '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;
2462 return boundMethod;
2463 }
2464 var reboundMethod = _bind.apply(boundMethod, arguments);
2465 reboundMethod.__reactBoundContext = component;
2466 reboundMethod.__reactBoundMethod = method;
2467 reboundMethod.__reactBoundArguments = args;
2468 return reboundMethod;
2469 };
2470 }
2471 return boundMethod;
2472 }
2473
2474 /**
2475 * Binds all auto-bound methods in a component.
2476 *
2477 * @param {object} component Component whose method is going to be bound.
2478 */
2479 function bindAutoBindMethods(component) {
2480 var pairs = component.__reactAutoBindPairs;
2481 for (var i = 0; i < pairs.length; i += 2) {
2482 var autoBindKey = pairs[i];
2483 var method = pairs[i + 1];
2484 component[autoBindKey] = bindAutoBindMethod(component, method);
2485 }
2486 }
2487
2488 /**
2489 * Add more to the ReactClass base class. These are all legacy features and
2490 * therefore not already part of the modern ReactComponent.
2491 */
2492 var ReactClassMixin = {
2493
2494 /**
2495 * TODO: This will be deprecated because state should always keep a consistent
2496 * type signature and the only use case for this, is to avoid that.
2497 */
2498 replaceState: function (newState, callback) {
2499 this.updater.enqueueReplaceState(this, newState);
2500 if (callback) {
2501 this.updater.enqueueCallback(this, callback, 'replaceState');
2502 }
2503 },
2504
2505 /**
2506 * Checks whether or not this composite component is mounted.
2507 * @return {boolean} True if mounted, false otherwise.
2508 * @protected
2509 * @final
2510 */
2511 isMounted: function () {
2512 return this.updater.isMounted(this);
2513 }
2514 };
2515
2516 var ReactClassComponent = function () {};
2517 _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);
2518
2519 /**
2520 * Module for creating composite components.
2521 *
2522 * @class ReactClass
2523 */
2524 var ReactClass = {
2525
2526 /**
2527 * Creates a composite component class given a class specification.
2528 * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass
2529 *
2530 * @param {object} spec Class specification (which must define `render`).
2531 * @return {function} Component constructor function.
2532 * @public
2533 */
2534 createClass: function (spec) {
2535 var Constructor = function (props, context, updater) {
2536 // This constructor gets overridden by mocks. The argument is used
2537 // by mocks to assert on what gets mounted.
2538
2539 if ((undefined) !== 'production') {
2540 (undefined) !== '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;
2541 }
2542
2543 // Wire up auto-binding
2544 if (this.__reactAutoBindPairs.length) {
2545 bindAutoBindMethods(this);
2546 }
2547
2548 this.props = props;
2549 this.context = context;
2550 this.refs = emptyObject;
2551 this.updater = updater || ReactNoopUpdateQueue;
2552
2553 this.state = null;
2554
2555 // ReactClasses doesn't have constructors. Instead, they use the
2556 // getInitialState and componentWillMount methods for initialization.
2557
2558 var initialState = this.getInitialState ? this.getInitialState() : null;
2559 if ((undefined) !== 'production') {
2560 // We allow auto-mocks to proceed as if they're returning null.
2561 if (initialState === undefined && this.getInitialState._isMockFunction) {
2562 // This is probably bad practice. Consider warning here and
2563 // deprecating this convenience.
2564 initialState = null;
2565 }
2566 }
2567 !(typeof initialState === 'object' && !Array.isArray(initialState)) ? (undefined) !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;
2568
2569 this.state = initialState;
2570 };
2571 Constructor.prototype = new ReactClassComponent();
2572 Constructor.prototype.constructor = Constructor;
2573 Constructor.prototype.__reactAutoBindPairs = [];
2574
2575 injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));
2576
2577 mixSpecIntoComponent(Constructor, spec);
2578
2579 // Initialize the defaultProps property after all mixins have been merged.
2580 if (Constructor.getDefaultProps) {
2581 Constructor.defaultProps = Constructor.getDefaultProps();
2582 }
2583
2584 if ((undefined) !== 'production') {
2585 // This is a tag to indicate that the use of these method names is ok,
2586 // since it's used with createClass. If it's not, then it's likely a
2587 // mistake so we'll warn you to use the static property, property
2588 // initializer or constructor respectively.
2589 if (Constructor.getDefaultProps) {
2590 Constructor.getDefaultProps.isReactClassApproved = {};
2591 }
2592 if (Constructor.prototype.getInitialState) {
2593 Constructor.prototype.getInitialState.isReactClassApproved = {};
2594 }
2595 }
2596
2597 !Constructor.prototype.render ? (undefined) !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;
2598
2599 if ((undefined) !== 'production') {
2600 (undefined) !== '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;
2601 (undefined) !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;
2602 }
2603
2604 // Reduce time spent doing lookups by setting these on the prototype.
2605 for (var methodName in ReactClassInterface) {
2606 if (!Constructor.prototype[methodName]) {
2607 Constructor.prototype[methodName] = null;
2608 }
2609 }
2610
2611 return Constructor;
2612 },
2613
2614 injection: {
2615 injectMixin: function (mixin) {
2616 injectedMixins.push(mixin);
2617 }
2618 }
2619
2620 };
2621
2622 module.exports = ReactClass;
2623
2624/***/ },
2625/* 109 */
2626/***/ function(module, exports, __webpack_require__) {
2627
2628 /**
2629 * Copyright 2013-present, Facebook, Inc.
2630 * All rights reserved.
2631 *
2632 * This source code is licensed under the BSD-style license found in the
2633 * LICENSE file in the root directory of this source tree. An additional grant
2634 * of patent rights can be found in the PATENTS file in the same directory.
2635 *
2636 * @providesModule ReactPropTypeLocations
2637 */
2638
2639 'use strict';
2640
2641 var keyMirror = __webpack_require__(110);
2642
2643 var ReactPropTypeLocations = keyMirror({
2644 prop: null,
2645 context: null,
2646 childContext: null
2647 });
2648
2649 module.exports = ReactPropTypeLocations;
2650
2651/***/ },
2652/* 110 */
2653/***/ function(module, exports, __webpack_require__) {
2654
2655 /**
2656 * Copyright (c) 2013-present, Facebook, Inc.
2657 * All rights reserved.
2658 *
2659 * This source code is licensed under the BSD-style license found in the
2660 * LICENSE file in the root directory of this source tree. An additional grant
2661 * of patent rights can be found in the PATENTS file in the same directory.
2662 *
2663 * @typechecks static-only
2664 */
2665
2666 'use strict';
2667
2668 var invariant = __webpack_require__(95);
2669
2670 /**
2671 * Constructs an enumeration with keys equal to their value.
2672 *
2673 * For example:
2674 *
2675 * var COLORS = keyMirror({blue: null, red: null});
2676 * var myColor = COLORS.blue;
2677 * var isColorValid = !!COLORS[myColor];
2678 *
2679 * The last line could not be performed if the values of the generated enum were
2680 * not equal to their keys.
2681 *
2682 * Input: {key1: val1, key2: val2}
2683 * Output: {key1: key1, key2: key2}
2684 *
2685 * @param {object} obj
2686 * @return {object}
2687 */
2688 var keyMirror = function keyMirror(obj) {
2689 var ret = {};
2690 var key;
2691 !(obj instanceof Object && !Array.isArray(obj)) ? (undefined) !== 'production' ? invariant(false, 'keyMirror(...): Argument must be an object.') : invariant(false) : void 0;
2692 for (key in obj) {
2693 if (!obj.hasOwnProperty(key)) {
2694 continue;
2695 }
2696 ret[key] = key;
2697 }
2698 return ret;
2699 };
2700
2701 module.exports = keyMirror;
2702
2703/***/ },
2704/* 111 */
2705/***/ function(module, exports, __webpack_require__) {
2706
2707 /**
2708 * Copyright 2013-present, Facebook, Inc.
2709 * All rights reserved.
2710 *
2711 * This source code is licensed under the BSD-style license found in the
2712 * LICENSE file in the root directory of this source tree. An additional grant
2713 * of patent rights can be found in the PATENTS file in the same directory.
2714 *
2715 * @providesModule ReactPropTypeLocationNames
2716 */
2717
2718 'use strict';
2719
2720 var ReactPropTypeLocationNames = {};
2721
2722 if ((undefined) !== 'production') {
2723 ReactPropTypeLocationNames = {
2724 prop: 'prop',
2725 context: 'context',
2726 childContext: 'child context'
2727 };
2728 }
2729
2730 module.exports = ReactPropTypeLocationNames;
2731
2732/***/ },
2733/* 112 */
2734/***/ function(module, exports) {
2735
2736 "use strict";
2737
2738 /**
2739 * Copyright (c) 2013-present, Facebook, Inc.
2740 * All rights reserved.
2741 *
2742 * This source code is licensed under the BSD-style license found in the
2743 * LICENSE file in the root directory of this source tree. An additional grant
2744 * of patent rights can be found in the PATENTS file in the same directory.
2745 *
2746 */
2747
2748 /**
2749 * Allows extraction of a minified key. Let's the build system minify keys
2750 * without losing the ability to dynamically use key strings as values
2751 * themselves. Pass in an object with a single key/val pair and it will return
2752 * you the string key of that single record. Suppose you want to grab the
2753 * value for a key 'className' inside of an object. Key/val minification may
2754 * have aliased that key to be 'xa12'. keyOf({className: null}) will return
2755 * 'xa12' in that case. Resolve keys you want to use once at startup time, then
2756 * reuse those resolutions.
2757 */
2758 var keyOf = function keyOf(oneKeyObj) {
2759 var key;
2760 for (key in oneKeyObj) {
2761 if (!oneKeyObj.hasOwnProperty(key)) {
2762 continue;
2763 }
2764 return key;
2765 }
2766 return null;
2767 };
2768
2769 module.exports = keyOf;
2770
2771/***/ },
2772/* 113 */
2773/***/ function(module, exports, __webpack_require__) {
2774
2775 /**
2776 * Copyright 2013-present, Facebook, Inc.
2777 * All rights reserved.
2778 *
2779 * This source code is licensed under the BSD-style license found in the
2780 * LICENSE file in the root directory of this source tree. An additional grant
2781 * of patent rights can be found in the PATENTS file in the same directory.
2782 *
2783 * @providesModule ReactDOMFactories
2784 */
2785
2786 'use strict';
2787
2788 var ReactElement = __webpack_require__(96);
2789
2790 /**
2791 * Create a factory that creates HTML tag elements.
2792 *
2793 * @private
2794 */
2795 var createDOMFactory = ReactElement.createFactory;
2796 if ((undefined) !== 'production') {
2797 var ReactElementValidator = __webpack_require__(114);
2798 createDOMFactory = ReactElementValidator.createFactory;
2799 }
2800
2801 /**
2802 * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.
2803 * This is also accessible via `React.DOM`.
2804 *
2805 * @public
2806 */
2807 var ReactDOMFactories = {
2808 a: createDOMFactory('a'),
2809 abbr: createDOMFactory('abbr'),
2810 address: createDOMFactory('address'),
2811 area: createDOMFactory('area'),
2812 article: createDOMFactory('article'),
2813 aside: createDOMFactory('aside'),
2814 audio: createDOMFactory('audio'),
2815 b: createDOMFactory('b'),
2816 base: createDOMFactory('base'),
2817 bdi: createDOMFactory('bdi'),
2818 bdo: createDOMFactory('bdo'),
2819 big: createDOMFactory('big'),
2820 blockquote: createDOMFactory('blockquote'),
2821 body: createDOMFactory('body'),
2822 br: createDOMFactory('br'),
2823 button: createDOMFactory('button'),
2824 canvas: createDOMFactory('canvas'),
2825 caption: createDOMFactory('caption'),
2826 cite: createDOMFactory('cite'),
2827 code: createDOMFactory('code'),
2828 col: createDOMFactory('col'),
2829 colgroup: createDOMFactory('colgroup'),
2830 data: createDOMFactory('data'),
2831 datalist: createDOMFactory('datalist'),
2832 dd: createDOMFactory('dd'),
2833 del: createDOMFactory('del'),
2834 details: createDOMFactory('details'),
2835 dfn: createDOMFactory('dfn'),
2836 dialog: createDOMFactory('dialog'),
2837 div: createDOMFactory('div'),
2838 dl: createDOMFactory('dl'),
2839 dt: createDOMFactory('dt'),
2840 em: createDOMFactory('em'),
2841 embed: createDOMFactory('embed'),
2842 fieldset: createDOMFactory('fieldset'),
2843 figcaption: createDOMFactory('figcaption'),
2844 figure: createDOMFactory('figure'),
2845 footer: createDOMFactory('footer'),
2846 form: createDOMFactory('form'),
2847 h1: createDOMFactory('h1'),
2848 h2: createDOMFactory('h2'),
2849 h3: createDOMFactory('h3'),
2850 h4: createDOMFactory('h4'),
2851 h5: createDOMFactory('h5'),
2852 h6: createDOMFactory('h6'),
2853 head: createDOMFactory('head'),
2854 header: createDOMFactory('header'),
2855 hgroup: createDOMFactory('hgroup'),
2856 hr: createDOMFactory('hr'),
2857 html: createDOMFactory('html'),
2858 i: createDOMFactory('i'),
2859 iframe: createDOMFactory('iframe'),
2860 img: createDOMFactory('img'),
2861 input: createDOMFactory('input'),
2862 ins: createDOMFactory('ins'),
2863 kbd: createDOMFactory('kbd'),
2864 keygen: createDOMFactory('keygen'),
2865 label: createDOMFactory('label'),
2866 legend: createDOMFactory('legend'),
2867 li: createDOMFactory('li'),
2868 link: createDOMFactory('link'),
2869 main: createDOMFactory('main'),
2870 map: createDOMFactory('map'),
2871 mark: createDOMFactory('mark'),
2872 menu: createDOMFactory('menu'),
2873 menuitem: createDOMFactory('menuitem'),
2874 meta: createDOMFactory('meta'),
2875 meter: createDOMFactory('meter'),
2876 nav: createDOMFactory('nav'),
2877 noscript: createDOMFactory('noscript'),
2878 object: createDOMFactory('object'),
2879 ol: createDOMFactory('ol'),
2880 optgroup: createDOMFactory('optgroup'),
2881 option: createDOMFactory('option'),
2882 output: createDOMFactory('output'),
2883 p: createDOMFactory('p'),
2884 param: createDOMFactory('param'),
2885 picture: createDOMFactory('picture'),
2886 pre: createDOMFactory('pre'),
2887 progress: createDOMFactory('progress'),
2888 q: createDOMFactory('q'),
2889 rp: createDOMFactory('rp'),
2890 rt: createDOMFactory('rt'),
2891 ruby: createDOMFactory('ruby'),
2892 s: createDOMFactory('s'),
2893 samp: createDOMFactory('samp'),
2894 script: createDOMFactory('script'),
2895 section: createDOMFactory('section'),
2896 select: createDOMFactory('select'),
2897 small: createDOMFactory('small'),
2898 source: createDOMFactory('source'),
2899 span: createDOMFactory('span'),
2900 strong: createDOMFactory('strong'),
2901 style: createDOMFactory('style'),
2902 sub: createDOMFactory('sub'),
2903 summary: createDOMFactory('summary'),
2904 sup: createDOMFactory('sup'),
2905 table: createDOMFactory('table'),
2906 tbody: createDOMFactory('tbody'),
2907 td: createDOMFactory('td'),
2908 textarea: createDOMFactory('textarea'),
2909 tfoot: createDOMFactory('tfoot'),
2910 th: createDOMFactory('th'),
2911 thead: createDOMFactory('thead'),
2912 time: createDOMFactory('time'),
2913 title: createDOMFactory('title'),
2914 tr: createDOMFactory('tr'),
2915 track: createDOMFactory('track'),
2916 u: createDOMFactory('u'),
2917 ul: createDOMFactory('ul'),
2918 'var': createDOMFactory('var'),
2919 video: createDOMFactory('video'),
2920 wbr: createDOMFactory('wbr'),
2921
2922 // SVG
2923 circle: createDOMFactory('circle'),
2924 clipPath: createDOMFactory('clipPath'),
2925 defs: createDOMFactory('defs'),
2926 ellipse: createDOMFactory('ellipse'),
2927 g: createDOMFactory('g'),
2928 image: createDOMFactory('image'),
2929 line: createDOMFactory('line'),
2930 linearGradient: createDOMFactory('linearGradient'),
2931 mask: createDOMFactory('mask'),
2932 path: createDOMFactory('path'),
2933 pattern: createDOMFactory('pattern'),
2934 polygon: createDOMFactory('polygon'),
2935 polyline: createDOMFactory('polyline'),
2936 radialGradient: createDOMFactory('radialGradient'),
2937 rect: createDOMFactory('rect'),
2938 stop: createDOMFactory('stop'),
2939 svg: createDOMFactory('svg'),
2940 text: createDOMFactory('text'),
2941 tspan: createDOMFactory('tspan')
2942 };
2943
2944 module.exports = ReactDOMFactories;
2945
2946/***/ },
2947/* 114 */
2948/***/ function(module, exports, __webpack_require__) {
2949
2950 /**
2951 * Copyright 2014-present, Facebook, Inc.
2952 * All rights reserved.
2953 *
2954 * This source code is licensed under the BSD-style license found in the
2955 * LICENSE file in the root directory of this source tree. An additional grant
2956 * of patent rights can be found in the PATENTS file in the same directory.
2957 *
2958 * @providesModule ReactElementValidator
2959 */
2960
2961 /**
2962 * ReactElementValidator provides a wrapper around a element factory
2963 * which validates the props passed to the element. This is intended to be
2964 * used only in DEV and could be replaced by a static type checker for languages
2965 * that support it.
2966 */
2967
2968 'use strict';
2969
2970 var ReactCurrentOwner = __webpack_require__(97);
2971 var ReactComponentTreeHook = __webpack_require__(115);
2972 var ReactElement = __webpack_require__(96);
2973 var ReactPropTypeLocations = __webpack_require__(109);
2974
2975 var checkReactTypeSpec = __webpack_require__(116);
2976
2977 var canDefineProperty = __webpack_require__(100);
2978 var getIteratorFn = __webpack_require__(102);
2979 var warning = __webpack_require__(98);
2980
2981 function getDeclarationErrorAddendum() {
2982 if (ReactCurrentOwner.current) {
2983 var name = ReactCurrentOwner.current.getName();
2984 if (name) {
2985 return ' Check the render method of `' + name + '`.';
2986 }
2987 }
2988 return '';
2989 }
2990
2991 /**
2992 * Warn if there's no key explicitly set on dynamic arrays of children or
2993 * object keys are not valid. This allows us to keep track of children between
2994 * updates.
2995 */
2996 var ownerHasKeyUseWarning = {};
2997
2998 function getCurrentComponentErrorInfo(parentType) {
2999 var info = getDeclarationErrorAddendum();
3000
3001 if (!info) {
3002 var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
3003 if (parentName) {
3004 info = ' Check the top-level render call using <' + parentName + '>.';
3005 }
3006 }
3007 return info;
3008 }
3009
3010 /**
3011 * Warn if the element doesn't have an explicit key assigned to it.
3012 * This element is in an array. The array could grow and shrink or be
3013 * reordered. All children that haven't already been validated are required to
3014 * have a "key" property assigned to it. Error statuses are cached so a warning
3015 * will only be shown once.
3016 *
3017 * @internal
3018 * @param {ReactElement} element Element that requires a key.
3019 * @param {*} parentType element's parent's type.
3020 */
3021 function validateExplicitKey(element, parentType) {
3022 if (!element._store || element._store.validated || element.key != null) {
3023 return;
3024 }
3025 element._store.validated = true;
3026
3027 var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {});
3028
3029 var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
3030 if (memoizer[currentComponentErrorInfo]) {
3031 return;
3032 }
3033 memoizer[currentComponentErrorInfo] = true;
3034
3035 // Usually the current owner is the offender, but if it accepts children as a
3036 // property, it may be the creator of the child that's responsible for
3037 // assigning it a key.
3038 var childOwner = '';
3039 if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
3040 // Give the component that originally created this child.
3041 childOwner = ' It was passed a child from ' + element._owner.getName() + '.';
3042 }
3043
3044 (undefined) !== '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;
3045 }
3046
3047 /**
3048 * Ensure that every element either is passed in a static location, in an
3049 * array with an explicit keys property defined, or in an object literal
3050 * with valid key property.
3051 *
3052 * @internal
3053 * @param {ReactNode} node Statically passed child of any type.
3054 * @param {*} parentType node's parent's type.
3055 */
3056 function validateChildKeys(node, parentType) {
3057 if (typeof node !== 'object') {
3058 return;
3059 }
3060 if (Array.isArray(node)) {
3061 for (var i = 0; i < node.length; i++) {
3062 var child = node[i];
3063 if (ReactElement.isValidElement(child)) {
3064 validateExplicitKey(child, parentType);
3065 }
3066 }
3067 } else if (ReactElement.isValidElement(node)) {
3068 // This element was passed in a valid location.
3069 if (node._store) {
3070 node._store.validated = true;
3071 }
3072 } else if (node) {
3073 var iteratorFn = getIteratorFn(node);
3074 // Entry iterators provide implicit keys.
3075 if (iteratorFn) {
3076 if (iteratorFn !== node.entries) {
3077 var iterator = iteratorFn.call(node);
3078 var step;
3079 while (!(step = iterator.next()).done) {
3080 if (ReactElement.isValidElement(step.value)) {
3081 validateExplicitKey(step.value, parentType);
3082 }
3083 }
3084 }
3085 }
3086 }
3087 }
3088
3089 /**
3090 * Given an element, validate that its props follow the propTypes definition,
3091 * provided by the type.
3092 *
3093 * @param {ReactElement} element
3094 */
3095 function validatePropTypes(element) {
3096 var componentClass = element.type;
3097 if (typeof componentClass !== 'function') {
3098 return;
3099 }
3100 var name = componentClass.displayName || componentClass.name;
3101 if (componentClass.propTypes) {
3102 checkReactTypeSpec(componentClass.propTypes, element.props, ReactPropTypeLocations.prop, name, element, null);
3103 }
3104 if (typeof componentClass.getDefaultProps === 'function') {
3105 (undefined) !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;
3106 }
3107 }
3108
3109 var ReactElementValidator = {
3110
3111 createElement: function (type, props, children) {
3112 var validType = typeof type === 'string' || typeof type === 'function';
3113 // We warn in this case but don't throw. We expect the element creation to
3114 // succeed and there will likely be errors in render.
3115 if (!validType) {
3116 (undefined) !== 'production' ? warning(false, 'React.createElement: type should not be null, undefined, boolean, or ' + 'number. It should be a string (for DOM elements) or a ReactClass ' + '(for composite components).%s', getDeclarationErrorAddendum()) : void 0;
3117 }
3118
3119 var element = ReactElement.createElement.apply(this, arguments);
3120
3121 // The result can be nullish if a mock or a custom function is used.
3122 // TODO: Drop this when these are no longer allowed as the type argument.
3123 if (element == null) {
3124 return element;
3125 }
3126
3127 // Skip key warning if the type isn't valid since our key validation logic
3128 // doesn't expect a non-string/function type and can throw confusing errors.
3129 // We don't want exception behavior to differ between dev and prod.
3130 // (Rendering will throw with a helpful message and as soon as the type is
3131 // fixed, the key warnings will appear.)
3132 if (validType) {
3133 for (var i = 2; i < arguments.length; i++) {
3134 validateChildKeys(arguments[i], type);
3135 }
3136 }
3137
3138 validatePropTypes(element);
3139
3140 return element;
3141 },
3142
3143 createFactory: function (type) {
3144 var validatedFactory = ReactElementValidator.createElement.bind(null, type);
3145 // Legacy hook TODO: Warn if this is accessed
3146 validatedFactory.type = type;
3147
3148 if ((undefined) !== 'production') {
3149 if (canDefineProperty) {
3150 Object.defineProperty(validatedFactory, 'type', {
3151 enumerable: false,
3152 get: function () {
3153 (undefined) !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0;
3154 Object.defineProperty(this, 'type', {
3155 value: type
3156 });
3157 return type;
3158 }
3159 });
3160 }
3161 }
3162
3163 return validatedFactory;
3164 },
3165
3166 cloneElement: function (element, props, children) {
3167 var newElement = ReactElement.cloneElement.apply(this, arguments);
3168 for (var i = 2; i < arguments.length; i++) {
3169 validateChildKeys(arguments[i], newElement.type);
3170 }
3171 validatePropTypes(newElement);
3172 return newElement;
3173 }
3174
3175 };
3176
3177 module.exports = ReactElementValidator;
3178
3179/***/ },
3180/* 115 */
3181/***/ function(module, exports, __webpack_require__) {
3182
3183 /**
3184 * Copyright 2016-present, Facebook, Inc.
3185 * All rights reserved.
3186 *
3187 * This source code is licensed under the BSD-style license found in the
3188 * LICENSE file in the root directory of this source tree. An additional grant
3189 * of patent rights can be found in the PATENTS file in the same directory.
3190 *
3191 * @providesModule ReactComponentTreeHook
3192 */
3193
3194 'use strict';
3195
3196 var _prodInvariant = __webpack_require__(94);
3197
3198 var ReactCurrentOwner = __webpack_require__(97);
3199
3200 var invariant = __webpack_require__(95);
3201 var warning = __webpack_require__(98);
3202
3203 function isNative(fn) {
3204 // Based on isNative() from Lodash
3205 var funcToString = Function.prototype.toString;
3206 var hasOwnProperty = Object.prototype.hasOwnProperty;
3207 var reIsNative = RegExp('^' + funcToString
3208 // Take an example native function source for comparison
3209 .call(hasOwnProperty)
3210 // Strip regex characters so we can use it for regex
3211 .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
3212 // Remove hasOwnProperty from the template to make it generic
3213 .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
3214 try {
3215 var source = funcToString.call(fn);
3216 return reIsNative.test(source);
3217 } catch (err) {
3218 return false;
3219 }
3220 }
3221
3222 var canUseCollections =
3223 // Array.from
3224 typeof Array.from === 'function' &&
3225 // Map
3226 typeof Map === 'function' && isNative(Map) &&
3227 // Map.prototype.keys
3228 Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&
3229 // Set
3230 typeof Set === 'function' && isNative(Set) &&
3231 // Set.prototype.keys
3232 Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);
3233
3234 var itemMap;
3235 var rootIDSet;
3236
3237 var itemByKey;
3238 var rootByKey;
3239
3240 if (canUseCollections) {
3241 itemMap = new Map();
3242 rootIDSet = new Set();
3243 } else {
3244 itemByKey = {};
3245 rootByKey = {};
3246 }
3247
3248 var unmountedIDs = [];
3249
3250 // Use non-numeric keys to prevent V8 performance issues:
3251 // https://github.com/facebook/react/pull/7232
3252 function getKeyFromID(id) {
3253 return '.' + id;
3254 }
3255 function getIDFromKey(key) {
3256 return parseInt(key.substr(1), 10);
3257 }
3258
3259 function get(id) {
3260 if (canUseCollections) {
3261 return itemMap.get(id);
3262 } else {
3263 var key = getKeyFromID(id);
3264 return itemByKey[key];
3265 }
3266 }
3267
3268 function remove(id) {
3269 if (canUseCollections) {
3270 itemMap['delete'](id);
3271 } else {
3272 var key = getKeyFromID(id);
3273 delete itemByKey[key];
3274 }
3275 }
3276
3277 function create(id, element, parentID) {
3278 var item = {
3279 element: element,
3280 parentID: parentID,
3281 text: null,
3282 childIDs: [],
3283 isMounted: false,
3284 updateCount: 0
3285 };
3286
3287 if (canUseCollections) {
3288 itemMap.set(id, item);
3289 } else {
3290 var key = getKeyFromID(id);
3291 itemByKey[key] = item;
3292 }
3293 }
3294
3295 function addRoot(id) {
3296 if (canUseCollections) {
3297 rootIDSet.add(id);
3298 } else {
3299 var key = getKeyFromID(id);
3300 rootByKey[key] = true;
3301 }
3302 }
3303
3304 function removeRoot(id) {
3305 if (canUseCollections) {
3306 rootIDSet['delete'](id);
3307 } else {
3308 var key = getKeyFromID(id);
3309 delete rootByKey[key];
3310 }
3311 }
3312
3313 function getRegisteredIDs() {
3314 if (canUseCollections) {
3315 return Array.from(itemMap.keys());
3316 } else {
3317 return Object.keys(itemByKey).map(getIDFromKey);
3318 }
3319 }
3320
3321 function getRootIDs() {
3322 if (canUseCollections) {
3323 return Array.from(rootIDSet.keys());
3324 } else {
3325 return Object.keys(rootByKey).map(getIDFromKey);
3326 }
3327 }
3328
3329 function purgeDeep(id) {
3330 var item = get(id);
3331 if (item) {
3332 var childIDs = item.childIDs;
3333
3334 remove(id);
3335 childIDs.forEach(purgeDeep);
3336 }
3337 }
3338
3339 function describeComponentFrame(name, source, ownerName) {
3340 return '\n in ' + name + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');
3341 }
3342
3343 function getDisplayName(element) {
3344 if (element == null) {
3345 return '#empty';
3346 } else if (typeof element === 'string' || typeof element === 'number') {
3347 return '#text';
3348 } else if (typeof element.type === 'string') {
3349 return element.type;
3350 } else {
3351 return element.type.displayName || element.type.name || 'Unknown';
3352 }
3353 }
3354
3355 function describeID(id) {
3356 var name = ReactComponentTreeHook.getDisplayName(id);
3357 var element = ReactComponentTreeHook.getElement(id);
3358 var ownerID = ReactComponentTreeHook.getOwnerID(id);
3359 var ownerName;
3360 if (ownerID) {
3361 ownerName = ReactComponentTreeHook.getDisplayName(ownerID);
3362 }
3363 (undefined) !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;
3364 return describeComponentFrame(name, element && element._source, ownerName);
3365 }
3366
3367 var ReactComponentTreeHook = {
3368 onSetChildren: function (id, nextChildIDs) {
3369 var item = get(id);
3370 item.childIDs = nextChildIDs;
3371
3372 for (var i = 0; i < nextChildIDs.length; i++) {
3373 var nextChildID = nextChildIDs[i];
3374 var nextChild = get(nextChildID);
3375 !nextChild ? (undefined) !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;
3376 !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? (undefined) !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;
3377 !nextChild.isMounted ? (undefined) !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;
3378 if (nextChild.parentID == null) {
3379 nextChild.parentID = id;
3380 // TODO: This shouldn't be necessary but mounting a new root during in
3381 // componentWillMount currently causes not-yet-mounted components to
3382 // be purged from our tree data so their parent ID is missing.
3383 }
3384 !(nextChild.parentID === id) ? (undefined) !== '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;
3385 }
3386 },
3387 onBeforeMountComponent: function (id, element, parentID) {
3388 create(id, element, parentID);
3389 },
3390 onBeforeUpdateComponent: function (id, element) {
3391 var item = get(id);
3392 if (!item || !item.isMounted) {
3393 // We may end up here as a result of setState() in componentWillUnmount().
3394 // In this case, ignore the element.
3395 return;
3396 }
3397 item.element = element;
3398 },
3399 onMountComponent: function (id) {
3400 var item = get(id);
3401 item.isMounted = true;
3402 var isRoot = item.parentID === 0;
3403 if (isRoot) {
3404 addRoot(id);
3405 }
3406 },
3407 onUpdateComponent: function (id) {
3408 var item = get(id);
3409 if (!item || !item.isMounted) {
3410 // We may end up here as a result of setState() in componentWillUnmount().
3411 // In this case, ignore the element.
3412 return;
3413 }
3414 item.updateCount++;
3415 },
3416 onUnmountComponent: function (id) {
3417 var item = get(id);
3418 if (item) {
3419 // We need to check if it exists.
3420 // `item` might not exist if it is inside an error boundary, and a sibling
3421 // error boundary child threw while mounting. Then this instance never
3422 // got a chance to mount, but it still gets an unmounting event during
3423 // the error boundary cleanup.
3424 item.isMounted = false;
3425 var isRoot = item.parentID === 0;
3426 if (isRoot) {
3427 removeRoot(id);
3428 }
3429 }
3430 unmountedIDs.push(id);
3431 },
3432 purgeUnmountedComponents: function () {
3433 if (ReactComponentTreeHook._preventPurging) {
3434 // Should only be used for testing.
3435 return;
3436 }
3437
3438 for (var i = 0; i < unmountedIDs.length; i++) {
3439 var id = unmountedIDs[i];
3440 purgeDeep(id);
3441 }
3442 unmountedIDs.length = 0;
3443 },
3444 isMounted: function (id) {
3445 var item = get(id);
3446 return item ? item.isMounted : false;
3447 },
3448 getCurrentStackAddendum: function (topElement) {
3449 var info = '';
3450 if (topElement) {
3451 var type = topElement.type;
3452 var name = typeof type === 'function' ? type.displayName || type.name : type;
3453 var owner = topElement._owner;
3454 info += describeComponentFrame(name || 'Unknown', topElement._source, owner && owner.getName());
3455 }
3456
3457 var currentOwner = ReactCurrentOwner.current;
3458 var id = currentOwner && currentOwner._debugID;
3459
3460 info += ReactComponentTreeHook.getStackAddendumByID(id);
3461 return info;
3462 },
3463 getStackAddendumByID: function (id) {
3464 var info = '';
3465 while (id) {
3466 info += describeID(id);
3467 id = ReactComponentTreeHook.getParentID(id);
3468 }
3469 return info;
3470 },
3471 getChildIDs: function (id) {
3472 var item = get(id);
3473 return item ? item.childIDs : [];
3474 },
3475 getDisplayName: function (id) {
3476 var element = ReactComponentTreeHook.getElement(id);
3477 if (!element) {
3478 return null;
3479 }
3480 return getDisplayName(element);
3481 },
3482 getElement: function (id) {
3483 var item = get(id);
3484 return item ? item.element : null;
3485 },
3486 getOwnerID: function (id) {
3487 var element = ReactComponentTreeHook.getElement(id);
3488 if (!element || !element._owner) {
3489 return null;
3490 }
3491 return element._owner._debugID;
3492 },
3493 getParentID: function (id) {
3494 var item = get(id);
3495 return item ? item.parentID : null;
3496 },
3497 getSource: function (id) {
3498 var item = get(id);
3499 var element = item ? item.element : null;
3500 var source = element != null ? element._source : null;
3501 return source;
3502 },
3503 getText: function (id) {
3504 var element = ReactComponentTreeHook.getElement(id);
3505 if (typeof element === 'string') {
3506 return element;
3507 } else if (typeof element === 'number') {
3508 return '' + element;
3509 } else {
3510 return null;
3511 }
3512 },
3513 getUpdateCount: function (id) {
3514 var item = get(id);
3515 return item ? item.updateCount : 0;
3516 },
3517
3518
3519 getRegisteredIDs: getRegisteredIDs,
3520
3521 getRootIDs: getRootIDs
3522 };
3523
3524 module.exports = ReactComponentTreeHook;
3525
3526/***/ },
3527/* 116 */
3528/***/ function(module, exports, __webpack_require__) {
3529
3530 /* WEBPACK VAR INJECTION */(function(process) {/**
3531 * Copyright 2013-present, Facebook, Inc.
3532 * All rights reserved.
3533 *
3534 * This source code is licensed under the BSD-style license found in the
3535 * LICENSE file in the root directory of this source tree. An additional grant
3536 * of patent rights can be found in the PATENTS file in the same directory.
3537 *
3538 * @providesModule checkReactTypeSpec
3539 */
3540
3541 'use strict';
3542
3543 var _prodInvariant = __webpack_require__(94);
3544
3545 var ReactPropTypeLocationNames = __webpack_require__(111);
3546 var ReactPropTypesSecret = __webpack_require__(118);
3547
3548 var invariant = __webpack_require__(95);
3549 var warning = __webpack_require__(98);
3550
3551 var ReactComponentTreeHook;
3552
3553 if (typeof process !== 'undefined' && ({"NODE_ENV":undefined}) && (undefined) === 'test') {
3554 // Temporary hack.
3555 // Inline requires don't work well with Jest:
3556 // https://github.com/facebook/react/issues/7240
3557 // Remove the inline requires when we don't need them anymore:
3558 // https://github.com/facebook/react/pull/7178
3559 ReactComponentTreeHook = __webpack_require__(115);
3560 }
3561
3562 var loggedTypeFailures = {};
3563
3564 /**
3565 * Assert that the values match with the type specs.
3566 * Error messages are memorized and will only be shown once.
3567 *
3568 * @param {object} typeSpecs Map of name to a ReactPropType
3569 * @param {object} values Runtime values that need to be type-checked
3570 * @param {string} location e.g. "prop", "context", "child context"
3571 * @param {string} componentName Name of the component for error messages.
3572 * @param {?object} element The React element that is being type-checked
3573 * @param {?number} debugID The React component instance that is being type-checked
3574 * @private
3575 */
3576 function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {
3577 for (var typeSpecName in typeSpecs) {
3578 if (typeSpecs.hasOwnProperty(typeSpecName)) {
3579 var error;
3580 // Prop type validation may throw. In case they do, we don't want to
3581 // fail the render phase where it didn't fail before. So we log it.
3582 // After these have been cleaned up, we'll let them throw.
3583 try {
3584 // This is intentionally an invariant that gets caught. It's the same
3585 // behavior as without this statement except with a better message.
3586 !(typeof typeSpecs[typeSpecName] === 'function') ? (undefined) !== '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;
3587 error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
3588 } catch (ex) {
3589 error = ex;
3590 }
3591 (undefined) !== '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;
3592 if (error instanceof Error && !(error.message in loggedTypeFailures)) {
3593 // Only monitor this failure once because there tends to be a lot of the
3594 // same error.
3595 loggedTypeFailures[error.message] = true;
3596
3597 var componentStackInfo = '';
3598
3599 if ((undefined) !== 'production') {
3600 if (!ReactComponentTreeHook) {
3601 ReactComponentTreeHook = __webpack_require__(115);
3602 }
3603 if (debugID !== null) {
3604 componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);
3605 } else if (element !== null) {
3606 componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);
3607 }
3608 }
3609
3610 (undefined) !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;
3611 }
3612 }
3613 }
3614 }
3615
3616 module.exports = checkReactTypeSpec;
3617 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(117)))
3618
3619/***/ },
3620/* 117 */
3621/***/ function(module, exports) {
3622
3623 // shim for using process in browser
3624 var process = module.exports = {};
3625
3626 // cached from whatever global is present so that test runners that stub it
3627 // don't break things. But we need to wrap it in a try catch in case it is
3628 // wrapped in strict mode code which doesn't define any globals. It's inside a
3629 // function because try/catches deoptimize in certain engines.
3630
3631 var cachedSetTimeout;
3632 var cachedClearTimeout;
3633
3634 function defaultSetTimout() {
3635 throw new Error('setTimeout has not been defined');
3636 }
3637 function defaultClearTimeout () {
3638 throw new Error('clearTimeout has not been defined');
3639 }
3640 (function () {
3641 try {
3642 if (typeof setTimeout === 'function') {
3643 cachedSetTimeout = setTimeout;
3644 } else {
3645 cachedSetTimeout = defaultSetTimout;
3646 }
3647 } catch (e) {
3648 cachedSetTimeout = defaultSetTimout;
3649 }
3650 try {
3651 if (typeof clearTimeout === 'function') {
3652 cachedClearTimeout = clearTimeout;
3653 } else {
3654 cachedClearTimeout = defaultClearTimeout;
3655 }
3656 } catch (e) {
3657 cachedClearTimeout = defaultClearTimeout;
3658 }
3659 } ())
3660 function runTimeout(fun) {
3661 if (cachedSetTimeout === setTimeout) {
3662 //normal enviroments in sane situations
3663 return setTimeout(fun, 0);
3664 }
3665 // if setTimeout wasn't available but was latter defined
3666 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
3667 cachedSetTimeout = setTimeout;
3668 return setTimeout(fun, 0);
3669 }
3670 try {
3671 // when when somebody has screwed with setTimeout but no I.E. maddness
3672 return cachedSetTimeout(fun, 0);
3673 } catch(e){
3674 try {
3675 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
3676 return cachedSetTimeout.call(null, fun, 0);
3677 } catch(e){
3678 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
3679 return cachedSetTimeout.call(this, fun, 0);
3680 }
3681 }
3682
3683
3684 }
3685 function runClearTimeout(marker) {
3686 if (cachedClearTimeout === clearTimeout) {
3687 //normal enviroments in sane situations
3688 return clearTimeout(marker);
3689 }
3690 // if clearTimeout wasn't available but was latter defined
3691 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
3692 cachedClearTimeout = clearTimeout;
3693 return clearTimeout(marker);
3694 }
3695 try {
3696 // when when somebody has screwed with setTimeout but no I.E. maddness
3697 return cachedClearTimeout(marker);
3698 } catch (e){
3699 try {
3700 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
3701 return cachedClearTimeout.call(null, marker);
3702 } catch (e){
3703 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
3704 // Some versions of I.E. have different rules for clearTimeout vs setTimeout
3705 return cachedClearTimeout.call(this, marker);
3706 }
3707 }
3708
3709
3710
3711 }
3712 var queue = [];
3713 var draining = false;
3714 var currentQueue;
3715 var queueIndex = -1;
3716
3717 function cleanUpNextTick() {
3718 if (!draining || !currentQueue) {
3719 return;
3720 }
3721 draining = false;
3722 if (currentQueue.length) {
3723 queue = currentQueue.concat(queue);
3724 } else {
3725 queueIndex = -1;
3726 }
3727 if (queue.length) {
3728 drainQueue();
3729 }
3730 }
3731
3732 function drainQueue() {
3733 if (draining) {
3734 return;
3735 }
3736 var timeout = runTimeout(cleanUpNextTick);
3737 draining = true;
3738
3739 var len = queue.length;
3740 while(len) {
3741 currentQueue = queue;
3742 queue = [];
3743 while (++queueIndex < len) {
3744 if (currentQueue) {
3745 currentQueue[queueIndex].run();
3746 }
3747 }
3748 queueIndex = -1;
3749 len = queue.length;
3750 }
3751 currentQueue = null;
3752 draining = false;
3753 runClearTimeout(timeout);
3754 }
3755
3756 process.nextTick = function (fun) {
3757 var args = new Array(arguments.length - 1);
3758 if (arguments.length > 1) {
3759 for (var i = 1; i < arguments.length; i++) {
3760 args[i - 1] = arguments[i];
3761 }
3762 }
3763 queue.push(new Item(fun, args));
3764 if (queue.length === 1 && !draining) {
3765 runTimeout(drainQueue);
3766 }
3767 };
3768
3769 // v8 likes predictible objects
3770 function Item(fun, array) {
3771 this.fun = fun;
3772 this.array = array;
3773 }
3774 Item.prototype.run = function () {
3775 this.fun.apply(null, this.array);
3776 };
3777 process.title = 'browser';
3778 process.browser = true;
3779 process.env = {};
3780 process.argv = [];
3781 process.version = ''; // empty string to avoid regexp issues
3782 process.versions = {};
3783
3784 function noop() {}
3785
3786 process.on = noop;
3787 process.addListener = noop;
3788 process.once = noop;
3789 process.off = noop;
3790 process.removeListener = noop;
3791 process.removeAllListeners = noop;
3792 process.emit = noop;
3793
3794 process.binding = function (name) {
3795 throw new Error('process.binding is not supported');
3796 };
3797
3798 process.cwd = function () { return '/' };
3799 process.chdir = function (dir) {
3800 throw new Error('process.chdir is not supported');
3801 };
3802 process.umask = function() { return 0; };
3803
3804
3805/***/ },
3806/* 118 */
3807/***/ function(module, exports) {
3808
3809 /**
3810 * Copyright 2013-present, Facebook, Inc.
3811 * All rights reserved.
3812 *
3813 * This source code is licensed under the BSD-style license found in the
3814 * LICENSE file in the root directory of this source tree. An additional grant
3815 * of patent rights can be found in the PATENTS file in the same directory.
3816 *
3817 * @providesModule ReactPropTypesSecret
3818 */
3819
3820 'use strict';
3821
3822 var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
3823
3824 module.exports = ReactPropTypesSecret;
3825
3826/***/ },
3827/* 119 */
3828/***/ function(module, exports, __webpack_require__) {
3829
3830 /**
3831 * Copyright 2013-present, Facebook, Inc.
3832 * All rights reserved.
3833 *
3834 * This source code is licensed under the BSD-style license found in the
3835 * LICENSE file in the root directory of this source tree. An additional grant
3836 * of patent rights can be found in the PATENTS file in the same directory.
3837 *
3838 * @providesModule ReactPropTypes
3839 */
3840
3841 'use strict';
3842
3843 var ReactElement = __webpack_require__(96);
3844 var ReactPropTypeLocationNames = __webpack_require__(111);
3845 var ReactPropTypesSecret = __webpack_require__(118);
3846
3847 var emptyFunction = __webpack_require__(99);
3848 var getIteratorFn = __webpack_require__(102);
3849 var warning = __webpack_require__(98);
3850
3851 /**
3852 * Collection of methods that allow declaration and validation of props that are
3853 * supplied to React components. Example usage:
3854 *
3855 * var Props = require('ReactPropTypes');
3856 * var MyArticle = React.createClass({
3857 * propTypes: {
3858 * // An optional string prop named "description".
3859 * description: Props.string,
3860 *
3861 * // A required enum prop named "category".
3862 * category: Props.oneOf(['News','Photos']).isRequired,
3863 *
3864 * // A prop named "dialog" that requires an instance of Dialog.
3865 * dialog: Props.instanceOf(Dialog).isRequired
3866 * },
3867 * render: function() { ... }
3868 * });
3869 *
3870 * A more formal specification of how these methods are used:
3871 *
3872 * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
3873 * decl := ReactPropTypes.{type}(.isRequired)?
3874 *
3875 * Each and every declaration produces a function with the same signature. This
3876 * allows the creation of custom validation functions. For example:
3877 *
3878 * var MyLink = React.createClass({
3879 * propTypes: {
3880 * // An optional string or URI prop named "href".
3881 * href: function(props, propName, componentName) {
3882 * var propValue = props[propName];
3883 * if (propValue != null && typeof propValue !== 'string' &&
3884 * !(propValue instanceof URI)) {
3885 * return new Error(
3886 * 'Expected a string or an URI for ' + propName + ' in ' +
3887 * componentName
3888 * );
3889 * }
3890 * }
3891 * },
3892 * render: function() {...}
3893 * });
3894 *
3895 * @internal
3896 */
3897
3898 var ANONYMOUS = '<<anonymous>>';
3899
3900 var ReactPropTypes = {
3901 array: createPrimitiveTypeChecker('array'),
3902 bool: createPrimitiveTypeChecker('boolean'),
3903 func: createPrimitiveTypeChecker('function'),
3904 number: createPrimitiveTypeChecker('number'),
3905 object: createPrimitiveTypeChecker('object'),
3906 string: createPrimitiveTypeChecker('string'),
3907 symbol: createPrimitiveTypeChecker('symbol'),
3908
3909 any: createAnyTypeChecker(),
3910 arrayOf: createArrayOfTypeChecker,
3911 element: createElementTypeChecker(),
3912 instanceOf: createInstanceTypeChecker,
3913 node: createNodeChecker(),
3914 objectOf: createObjectOfTypeChecker,
3915 oneOf: createEnumTypeChecker,
3916 oneOfType: createUnionTypeChecker,
3917 shape: createShapeTypeChecker
3918 };
3919
3920 /**
3921 * inlined Object.is polyfill to avoid requiring consumers ship their own
3922 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
3923 */
3924 /*eslint-disable no-self-compare*/
3925 function is(x, y) {
3926 // SameValue algorithm
3927 if (x === y) {
3928 // Steps 1-5, 7-10
3929 // Steps 6.b-6.e: +0 != -0
3930 return x !== 0 || 1 / x === 1 / y;
3931 } else {
3932 // Step 6.a: NaN == NaN
3933 return x !== x && y !== y;
3934 }
3935 }
3936 /*eslint-enable no-self-compare*/
3937
3938 /**
3939 * We use an Error-like object for backward compatibility as people may call
3940 * PropTypes directly and inspect their output. However we don't use real
3941 * Errors anymore. We don't inspect their stack anyway, and creating them
3942 * is prohibitively expensive if they are created too often, such as what
3943 * happens in oneOfType() for any type before the one that matched.
3944 */
3945 function PropTypeError(message) {
3946 this.message = message;
3947 this.stack = '';
3948 }
3949 // Make `instanceof Error` still work for returned errors.
3950 PropTypeError.prototype = Error.prototype;
3951
3952 function createChainableTypeChecker(validate) {
3953 if ((undefined) !== 'production') {
3954 var manualPropTypeCallCache = {};
3955 }
3956 function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
3957 componentName = componentName || ANONYMOUS;
3958 propFullName = propFullName || propName;
3959 if ((undefined) !== 'production') {
3960 if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') {
3961 var cacheKey = componentName + ':' + propName;
3962 if (!manualPropTypeCallCache[cacheKey]) {
3963 (undefined) !== 'production' ? warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will not work in the next major version. You may be ' + 'seeing this warning due to a third-party PropTypes library. ' + 'See https://fb.me/react-warning-dont-call-proptypes for details.', propFullName, componentName) : void 0;
3964 manualPropTypeCallCache[cacheKey] = true;
3965 }
3966 }
3967 }
3968 if (props[propName] == null) {
3969 var locationName = ReactPropTypeLocationNames[location];
3970 if (isRequired) {
3971 return new PropTypeError('Required ' + locationName + ' `' + propFullName + '` was not specified in ' + ('`' + componentName + '`.'));
3972 }
3973 return null;
3974 } else {
3975 return validate(props, propName, componentName, location, propFullName);
3976 }
3977 }
3978
3979 var chainedCheckType = checkType.bind(null, false);
3980 chainedCheckType.isRequired = checkType.bind(null, true);
3981
3982 return chainedCheckType;
3983 }
3984
3985 function createPrimitiveTypeChecker(expectedType) {
3986 function validate(props, propName, componentName, location, propFullName, secret) {
3987 var propValue = props[propName];
3988 var propType = getPropType(propValue);
3989 if (propType !== expectedType) {
3990 var locationName = ReactPropTypeLocationNames[location];
3991 // `propValue` being instance of, say, date/regexp, pass the 'object'
3992 // check, but we can offer a more precise error message here rather than
3993 // 'of type `object`'.
3994 var preciseType = getPreciseType(propValue);
3995
3996 return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
3997 }
3998 return null;
3999 }
4000 return createChainableTypeChecker(validate);
4001 }
4002
4003 function createAnyTypeChecker() {
4004 return createChainableTypeChecker(emptyFunction.thatReturns(null));
4005 }
4006
4007 function createArrayOfTypeChecker(typeChecker) {
4008 function validate(props, propName, componentName, location, propFullName) {
4009 if (typeof typeChecker !== 'function') {
4010 return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
4011 }
4012 var propValue = props[propName];
4013 if (!Array.isArray(propValue)) {
4014 var locationName = ReactPropTypeLocationNames[location];
4015 var propType = getPropType(propValue);
4016 return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
4017 }
4018 for (var i = 0; i < propValue.length; i++) {
4019 var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
4020 if (error instanceof Error) {
4021 return error;
4022 }
4023 }
4024 return null;
4025 }
4026 return createChainableTypeChecker(validate);
4027 }
4028
4029 function createElementTypeChecker() {
4030 function validate(props, propName, componentName, location, propFullName) {
4031 var propValue = props[propName];
4032 if (!ReactElement.isValidElement(propValue)) {
4033 var locationName = ReactPropTypeLocationNames[location];
4034 var propType = getPropType(propValue);
4035 return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
4036 }
4037 return null;
4038 }
4039 return createChainableTypeChecker(validate);
4040 }
4041
4042 function createInstanceTypeChecker(expectedClass) {
4043 function validate(props, propName, componentName, location, propFullName) {
4044 if (!(props[propName] instanceof expectedClass)) {
4045 var locationName = ReactPropTypeLocationNames[location];
4046 var expectedClassName = expectedClass.name || ANONYMOUS;
4047 var actualClassName = getClassName(props[propName]);
4048 return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
4049 }
4050 return null;
4051 }
4052 return createChainableTypeChecker(validate);
4053 }
4054
4055 function createEnumTypeChecker(expectedValues) {
4056 if (!Array.isArray(expectedValues)) {
4057 (undefined) !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
4058 return emptyFunction.thatReturnsNull;
4059 }
4060
4061 function validate(props, propName, componentName, location, propFullName) {
4062 var propValue = props[propName];
4063 for (var i = 0; i < expectedValues.length; i++) {
4064 if (is(propValue, expectedValues[i])) {
4065 return null;
4066 }
4067 }
4068
4069 var locationName = ReactPropTypeLocationNames[location];
4070 var valuesString = JSON.stringify(expectedValues);
4071 return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
4072 }
4073 return createChainableTypeChecker(validate);
4074 }
4075
4076 function createObjectOfTypeChecker(typeChecker) {
4077 function validate(props, propName, componentName, location, propFullName) {
4078 if (typeof typeChecker !== 'function') {
4079 return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
4080 }
4081 var propValue = props[propName];
4082 var propType = getPropType(propValue);
4083 if (propType !== 'object') {
4084 var locationName = ReactPropTypeLocationNames[location];
4085 return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
4086 }
4087 for (var key in propValue) {
4088 if (propValue.hasOwnProperty(key)) {
4089 var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
4090 if (error instanceof Error) {
4091 return error;
4092 }
4093 }
4094 }
4095 return null;
4096 }
4097 return createChainableTypeChecker(validate);
4098 }
4099
4100 function createUnionTypeChecker(arrayOfTypeCheckers) {
4101 if (!Array.isArray(arrayOfTypeCheckers)) {
4102 (undefined) !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
4103 return emptyFunction.thatReturnsNull;
4104 }
4105
4106 function validate(props, propName, componentName, location, propFullName) {
4107 for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
4108 var checker = arrayOfTypeCheckers[i];
4109 if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
4110 return null;
4111 }
4112 }
4113
4114 var locationName = ReactPropTypeLocationNames[location];
4115 return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
4116 }
4117 return createChainableTypeChecker(validate);
4118 }
4119
4120 function createNodeChecker() {
4121 function validate(props, propName, componentName, location, propFullName) {
4122 if (!isNode(props[propName])) {
4123 var locationName = ReactPropTypeLocationNames[location];
4124 return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
4125 }
4126 return null;
4127 }
4128 return createChainableTypeChecker(validate);
4129 }
4130
4131 function createShapeTypeChecker(shapeTypes) {
4132 function validate(props, propName, componentName, location, propFullName) {
4133 var propValue = props[propName];
4134 var propType = getPropType(propValue);
4135 if (propType !== 'object') {
4136 var locationName = ReactPropTypeLocationNames[location];
4137 return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
4138 }
4139 for (var key in shapeTypes) {
4140 var checker = shapeTypes[key];
4141 if (!checker) {
4142 continue;
4143 }
4144 var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
4145 if (error) {
4146 return error;
4147 }
4148 }
4149 return null;
4150 }
4151 return createChainableTypeChecker(validate);
4152 }
4153
4154 function isNode(propValue) {
4155 switch (typeof propValue) {
4156 case 'number':
4157 case 'string':
4158 case 'undefined':
4159 return true;
4160 case 'boolean':
4161 return !propValue;
4162 case 'object':
4163 if (Array.isArray(propValue)) {
4164 return propValue.every(isNode);
4165 }
4166 if (propValue === null || ReactElement.isValidElement(propValue)) {
4167 return true;
4168 }
4169
4170 var iteratorFn = getIteratorFn(propValue);
4171 if (iteratorFn) {
4172 var iterator = iteratorFn.call(propValue);
4173 var step;
4174 if (iteratorFn !== propValue.entries) {
4175 while (!(step = iterator.next()).done) {
4176 if (!isNode(step.value)) {
4177 return false;
4178 }
4179 }
4180 } else {
4181 // Iterator will provide entry [k,v] tuples rather than values.
4182 while (!(step = iterator.next()).done) {
4183 var entry = step.value;
4184 if (entry) {
4185 if (!isNode(entry[1])) {
4186 return false;
4187 }
4188 }
4189 }
4190 }
4191 } else {
4192 return false;
4193 }
4194
4195 return true;
4196 default:
4197 return false;
4198 }
4199 }
4200
4201 function isSymbol(propType, propValue) {
4202 // Native Symbol.
4203 if (propType === 'symbol') {
4204 return true;
4205 }
4206
4207 // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
4208 if (propValue['@@toStringTag'] === 'Symbol') {
4209 return true;
4210 }
4211
4212 // Fallback for non-spec compliant Symbols which are polyfilled.
4213 if (typeof Symbol === 'function' && propValue instanceof Symbol) {
4214 return true;
4215 }
4216
4217 return false;
4218 }
4219
4220 // Equivalent of `typeof` but with special handling for array and regexp.
4221 function getPropType(propValue) {
4222 var propType = typeof propValue;
4223 if (Array.isArray(propValue)) {
4224 return 'array';
4225 }
4226 if (propValue instanceof RegExp) {
4227 // Old webkits (at least until Android 4.0) return 'function' rather than
4228 // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
4229 // passes PropTypes.object.
4230 return 'object';
4231 }
4232 if (isSymbol(propType, propValue)) {
4233 return 'symbol';
4234 }
4235 return propType;
4236 }
4237
4238 // This handles more types than `getPropType`. Only used for error messages.
4239 // See `createPrimitiveTypeChecker`.
4240 function getPreciseType(propValue) {
4241 var propType = getPropType(propValue);
4242 if (propType === 'object') {
4243 if (propValue instanceof Date) {
4244 return 'date';
4245 } else if (propValue instanceof RegExp) {
4246 return 'regexp';
4247 }
4248 }
4249 return propType;
4250 }
4251
4252 // Returns class name of the object, if any.
4253 function getClassName(propValue) {
4254 if (!propValue.constructor || !propValue.constructor.name) {
4255 return ANONYMOUS;
4256 }
4257 return propValue.constructor.name;
4258 }
4259
4260 module.exports = ReactPropTypes;
4261
4262/***/ },
4263/* 120 */
4264/***/ function(module, exports) {
4265
4266 /**
4267 * Copyright 2013-present, Facebook, Inc.
4268 * All rights reserved.
4269 *
4270 * This source code is licensed under the BSD-style license found in the
4271 * LICENSE file in the root directory of this source tree. An additional grant
4272 * of patent rights can be found in the PATENTS file in the same directory.
4273 *
4274 * @providesModule ReactVersion
4275 */
4276
4277 'use strict';
4278
4279 module.exports = '15.3.2';
4280
4281/***/ },
4282/* 121 */
4283/***/ function(module, exports, __webpack_require__) {
4284
4285 /**
4286 * Copyright 2013-present, Facebook, Inc.
4287 * All rights reserved.
4288 *
4289 * This source code is licensed under the BSD-style license found in the
4290 * LICENSE file in the root directory of this source tree. An additional grant
4291 * of patent rights can be found in the PATENTS file in the same directory.
4292 *
4293 * @providesModule onlyChild
4294 */
4295 'use strict';
4296
4297 var _prodInvariant = __webpack_require__(94);
4298
4299 var ReactElement = __webpack_require__(96);
4300
4301 var invariant = __webpack_require__(95);
4302
4303 /**
4304 * Returns the first child in a collection of children and verifies that there
4305 * is only one child in the collection.
4306 *
4307 * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only
4308 *
4309 * The current implementation of this function assumes that a single child gets
4310 * passed without a wrapper, but the purpose of this helper function is to
4311 * abstract away the particular structure of children.
4312 *
4313 * @param {?object} children Child collection structure.
4314 * @return {ReactElement} The first and only `ReactElement` contained in the
4315 * structure.
4316 */
4317 function onlyChild(children) {
4318 !ReactElement.isValidElement(children) ? (undefined) !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;
4319 return children;
4320 }
4321
4322 module.exports = onlyChild;
4323
4324/***/ },
4325/* 122 */
4326/***/ function(module, exports, __webpack_require__) {
4327
4328 'use strict';
4329
4330 module.exports = __webpack_require__(123);
4331
4332
4333/***/ },
4334/* 123 */
4335/***/ function(module, exports, __webpack_require__) {
4336
4337 /**
4338 * Copyright 2013-present, Facebook, Inc.
4339 * All rights reserved.
4340 *
4341 * This source code is licensed under the BSD-style license found in the
4342 * LICENSE file in the root directory of this source tree. An additional grant
4343 * of patent rights can be found in the PATENTS file in the same directory.
4344 *
4345 * @providesModule ReactDOM
4346 */
4347
4348 /* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/
4349
4350 'use strict';
4351
4352 var ReactDOMComponentTree = __webpack_require__(124);
4353 var ReactDefaultInjection = __webpack_require__(127);
4354 var ReactMount = __webpack_require__(250);
4355 var ReactReconciler = __webpack_require__(147);
4356 var ReactUpdates = __webpack_require__(144);
4357 var ReactVersion = __webpack_require__(120);
4358
4359 var findDOMNode = __webpack_require__(255);
4360 var getHostComponentFromComposite = __webpack_require__(256);
4361 var renderSubtreeIntoContainer = __webpack_require__(257);
4362 var warning = __webpack_require__(98);
4363
4364 ReactDefaultInjection.inject();
4365
4366 var ReactDOM = {
4367 findDOMNode: findDOMNode,
4368 render: ReactMount.render,
4369 unmountComponentAtNode: ReactMount.unmountComponentAtNode,
4370 version: ReactVersion,
4371
4372 /* eslint-disable camelcase */
4373 unstable_batchedUpdates: ReactUpdates.batchedUpdates,
4374 unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer
4375 };
4376
4377 // Inject the runtime into a devtools global hook regardless of browser.
4378 // Allows for debugging when the hook is injected on the page.
4379 /* eslint-enable camelcase */
4380 if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {
4381 __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({
4382 ComponentTree: {
4383 getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,
4384 getNodeFromInstance: function (inst) {
4385 // inst is an internal instance (but could be a composite)
4386 if (inst._renderedComponent) {
4387 inst = getHostComponentFromComposite(inst);
4388 }
4389 if (inst) {
4390 return ReactDOMComponentTree.getNodeFromInstance(inst);
4391 } else {
4392 return null;
4393 }
4394 }
4395 },
4396 Mount: ReactMount,
4397 Reconciler: ReactReconciler
4398 });
4399 }
4400
4401 if ((undefined) !== 'production') {
4402 var ExecutionEnvironment = __webpack_require__(137);
4403 if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
4404
4405 // First check if devtools is not installed
4406 if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
4407 // If we're in Chrome or Firefox, provide a download link if not installed.
4408 if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {
4409 // Firefox does not have the issue with devtools loaded over file://
4410 var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;
4411 console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');
4412 }
4413 }
4414
4415 var testFunc = function testFn() {};
4416 (undefined) !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;
4417
4418 // If we're in IE8, check to see if we are in compatibility mode and provide
4419 // information on preventing compatibility mode
4420 var ieCompatibilityMode = document.documentMode && document.documentMode < 8;
4421
4422 (undefined) !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv="X-UA-Compatible" content="IE=edge" />') : void 0;
4423
4424 var expectedFeatures = [
4425 // shims
4426 Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.split, String.prototype.trim];
4427
4428 for (var i = 0; i < expectedFeatures.length; i++) {
4429 if (!expectedFeatures[i]) {
4430 (undefined) !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;
4431 break;
4432 }
4433 }
4434 }
4435 }
4436
4437 if ((undefined) !== 'production') {
4438 var ReactInstrumentation = __webpack_require__(150);
4439 var ReactDOMUnknownPropertyHook = __webpack_require__(258);
4440 var ReactDOMNullInputValuePropHook = __webpack_require__(259);
4441
4442 ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);
4443 ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);
4444 }
4445
4446 module.exports = ReactDOM;
4447
4448/***/ },
4449/* 124 */
4450/***/ function(module, exports, __webpack_require__) {
4451
4452 /**
4453 * Copyright 2013-present, Facebook, Inc.
4454 * All rights reserved.
4455 *
4456 * This source code is licensed under the BSD-style license found in the
4457 * LICENSE file in the root directory of this source tree. An additional grant
4458 * of patent rights can be found in the PATENTS file in the same directory.
4459 *
4460 * @providesModule ReactDOMComponentTree
4461 */
4462
4463 'use strict';
4464
4465 var _prodInvariant = __webpack_require__(94);
4466
4467 var DOMProperty = __webpack_require__(125);
4468 var ReactDOMComponentFlags = __webpack_require__(126);
4469
4470 var invariant = __webpack_require__(95);
4471
4472 var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
4473 var Flags = ReactDOMComponentFlags;
4474
4475 var internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);
4476
4477 /**
4478 * Drill down (through composites and empty components) until we get a host or
4479 * host text component.
4480 *
4481 * This is pretty polymorphic but unavoidable with the current structure we have
4482 * for `_renderedChildren`.
4483 */
4484 function getRenderedHostOrTextFromComponent(component) {
4485 var rendered;
4486 while (rendered = component._renderedComponent) {
4487 component = rendered;
4488 }
4489 return component;
4490 }
4491
4492 /**
4493 * Populate `_hostNode` on the rendered host/text component with the given
4494 * DOM node. The passed `inst` can be a composite.
4495 */
4496 function precacheNode(inst, node) {
4497 var hostInst = getRenderedHostOrTextFromComponent(inst);
4498 hostInst._hostNode = node;
4499 node[internalInstanceKey] = hostInst;
4500 }
4501
4502 function uncacheNode(inst) {
4503 var node = inst._hostNode;
4504 if (node) {
4505 delete node[internalInstanceKey];
4506 inst._hostNode = null;
4507 }
4508 }
4509
4510 /**
4511 * Populate `_hostNode` on each child of `inst`, assuming that the children
4512 * match up with the DOM (element) children of `node`.
4513 *
4514 * We cache entire levels at once to avoid an n^2 problem where we access the
4515 * children of a node sequentially and have to walk from the start to our target
4516 * node every time.
4517 *
4518 * Since we update `_renderedChildren` and the actual DOM at (slightly)
4519 * different times, we could race here and see a newer `_renderedChildren` than
4520 * the DOM nodes we see. To avoid this, ReactMultiChild calls
4521 * `prepareToManageChildren` before we change `_renderedChildren`, at which
4522 * time the container's child nodes are always cached (until it unmounts).
4523 */
4524 function precacheChildNodes(inst, node) {
4525 if (inst._flags & Flags.hasCachedChildNodes) {
4526 return;
4527 }
4528 var children = inst._renderedChildren;
4529 var childNode = node.firstChild;
4530 outer: for (var name in children) {
4531 if (!children.hasOwnProperty(name)) {
4532 continue;
4533 }
4534 var childInst = children[name];
4535 var childID = getRenderedHostOrTextFromComponent(childInst)._domID;
4536 if (childID === 0) {
4537 // We're currently unmounting this child in ReactMultiChild; skip it.
4538 continue;
4539 }
4540 // We assume the child nodes are in the same order as the child instances.
4541 for (; childNode !== null; childNode = childNode.nextSibling) {
4542 if (childNode.nodeType === 1 && childNode.getAttribute(ATTR_NAME) === String(childID) || childNode.nodeType === 8 && childNode.nodeValue === ' react-text: ' + childID + ' ' || childNode.nodeType === 8 && childNode.nodeValue === ' react-empty: ' + childID + ' ') {
4543 precacheNode(childInst, childNode);
4544 continue outer;
4545 }
4546 }
4547 // We reached the end of the DOM children without finding an ID match.
4548 true ? (undefined) !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;
4549 }
4550 inst._flags |= Flags.hasCachedChildNodes;
4551 }
4552
4553 /**
4554 * Given a DOM node, return the closest ReactDOMComponent or
4555 * ReactDOMTextComponent instance ancestor.
4556 */
4557 function getClosestInstanceFromNode(node) {
4558 if (node[internalInstanceKey]) {
4559 return node[internalInstanceKey];
4560 }
4561
4562 // Walk up the tree until we find an ancestor whose instance we have cached.
4563 var parents = [];
4564 while (!node[internalInstanceKey]) {
4565 parents.push(node);
4566 if (node.parentNode) {
4567 node = node.parentNode;
4568 } else {
4569 // Top of the tree. This node must not be part of a React tree (or is
4570 // unmounted, potentially).
4571 return null;
4572 }
4573 }
4574
4575 var closest;
4576 var inst;
4577 for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {
4578 closest = inst;
4579 if (parents.length) {
4580 precacheChildNodes(inst, node);
4581 }
4582 }
4583
4584 return closest;
4585 }
4586
4587 /**
4588 * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent
4589 * instance, or null if the node was not rendered by this React.
4590 */
4591 function getInstanceFromNode(node) {
4592 var inst = getClosestInstanceFromNode(node);
4593 if (inst != null && inst._hostNode === node) {
4594 return inst;
4595 } else {
4596 return null;
4597 }
4598 }
4599
4600 /**
4601 * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding
4602 * DOM node.
4603 */
4604 function getNodeFromInstance(inst) {
4605 // Without this first invariant, passing a non-DOM-component triggers the next
4606 // invariant for a missing parent, which is super confusing.
4607 !(inst._hostNode !== undefined) ? (undefined) !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
4608
4609 if (inst._hostNode) {
4610 return inst._hostNode;
4611 }
4612
4613 // Walk up the tree until we find an ancestor whose DOM node we have cached.
4614 var parents = [];
4615 while (!inst._hostNode) {
4616 parents.push(inst);
4617 !inst._hostParent ? (undefined) !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;
4618 inst = inst._hostParent;
4619 }
4620
4621 // Now parents contains each ancestor that does *not* have a cached native
4622 // node, and `inst` is the deepest ancestor that does.
4623 for (; parents.length; inst = parents.pop()) {
4624 precacheChildNodes(inst, inst._hostNode);
4625 }
4626
4627 return inst._hostNode;
4628 }
4629
4630 var ReactDOMComponentTree = {
4631 getClosestInstanceFromNode: getClosestInstanceFromNode,
4632 getInstanceFromNode: getInstanceFromNode,
4633 getNodeFromInstance: getNodeFromInstance,
4634 precacheChildNodes: precacheChildNodes,
4635 precacheNode: precacheNode,
4636 uncacheNode: uncacheNode
4637 };
4638
4639 module.exports = ReactDOMComponentTree;
4640
4641/***/ },
4642/* 125 */
4643/***/ function(module, exports, __webpack_require__) {
4644
4645 /**
4646 * Copyright 2013-present, Facebook, Inc.
4647 * All rights reserved.
4648 *
4649 * This source code is licensed under the BSD-style license found in the
4650 * LICENSE file in the root directory of this source tree. An additional grant
4651 * of patent rights can be found in the PATENTS file in the same directory.
4652 *
4653 * @providesModule DOMProperty
4654 */
4655
4656 'use strict';
4657
4658 var _prodInvariant = __webpack_require__(94);
4659
4660 var invariant = __webpack_require__(95);
4661
4662 function checkMask(value, bitmask) {
4663 return (value & bitmask) === bitmask;
4664 }
4665
4666 var DOMPropertyInjection = {
4667 /**
4668 * Mapping from normalized, camelcased property names to a configuration that
4669 * specifies how the associated DOM property should be accessed or rendered.
4670 */
4671 MUST_USE_PROPERTY: 0x1,
4672 HAS_BOOLEAN_VALUE: 0x4,
4673 HAS_NUMERIC_VALUE: 0x8,
4674 HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,
4675 HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,
4676
4677 /**
4678 * Inject some specialized knowledge about the DOM. This takes a config object
4679 * with the following properties:
4680 *
4681 * isCustomAttribute: function that given an attribute name will return true
4682 * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*
4683 * attributes where it's impossible to enumerate all of the possible
4684 * attribute names,
4685 *
4686 * Properties: object mapping DOM property name to one of the
4687 * DOMPropertyInjection constants or null. If your attribute isn't in here,
4688 * it won't get written to the DOM.
4689 *
4690 * DOMAttributeNames: object mapping React attribute name to the DOM
4691 * attribute name. Attribute names not specified use the **lowercase**
4692 * normalized name.
4693 *
4694 * DOMAttributeNamespaces: object mapping React attribute name to the DOM
4695 * attribute namespace URL. (Attribute names not specified use no namespace.)
4696 *
4697 * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.
4698 * Property names not specified use the normalized name.
4699 *
4700 * DOMMutationMethods: Properties that require special mutation methods. If
4701 * `value` is undefined, the mutation method should unset the property.
4702 *
4703 * @param {object} domPropertyConfig the config as described above.
4704 */
4705 injectDOMPropertyConfig: function (domPropertyConfig) {
4706 var Injection = DOMPropertyInjection;
4707 var Properties = domPropertyConfig.Properties || {};
4708 var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};
4709 var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};
4710 var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};
4711 var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};
4712
4713 if (domPropertyConfig.isCustomAttribute) {
4714 DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);
4715 }
4716
4717 for (var propName in Properties) {
4718 !!DOMProperty.properties.hasOwnProperty(propName) ? (undefined) !== '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;
4719
4720 var lowerCased = propName.toLowerCase();
4721 var propConfig = Properties[propName];
4722
4723 var propertyInfo = {
4724 attributeName: lowerCased,
4725 attributeNamespace: null,
4726 propertyName: propName,
4727 mutationMethod: null,
4728
4729 mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),
4730 hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),
4731 hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),
4732 hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),
4733 hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)
4734 };
4735 !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? (undefined) !== '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;
4736
4737 if ((undefined) !== 'production') {
4738 DOMProperty.getPossibleStandardName[lowerCased] = propName;
4739 }
4740
4741 if (DOMAttributeNames.hasOwnProperty(propName)) {
4742 var attributeName = DOMAttributeNames[propName];
4743 propertyInfo.attributeName = attributeName;
4744 if ((undefined) !== 'production') {
4745 DOMProperty.getPossibleStandardName[attributeName] = propName;
4746 }
4747 }
4748
4749 if (DOMAttributeNamespaces.hasOwnProperty(propName)) {
4750 propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];
4751 }
4752
4753 if (DOMPropertyNames.hasOwnProperty(propName)) {
4754 propertyInfo.propertyName = DOMPropertyNames[propName];
4755 }
4756
4757 if (DOMMutationMethods.hasOwnProperty(propName)) {
4758 propertyInfo.mutationMethod = DOMMutationMethods[propName];
4759 }
4760
4761 DOMProperty.properties[propName] = propertyInfo;
4762 }
4763 }
4764 };
4765
4766 /* eslint-disable max-len */
4767 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';
4768 /* eslint-enable max-len */
4769
4770 /**
4771 * DOMProperty exports lookup objects that can be used like functions:
4772 *
4773 * > DOMProperty.isValid['id']
4774 * true
4775 * > DOMProperty.isValid['foobar']
4776 * undefined
4777 *
4778 * Although this may be confusing, it performs better in general.
4779 *
4780 * @see http://jsperf.com/key-exists
4781 * @see http://jsperf.com/key-missing
4782 */
4783 var DOMProperty = {
4784
4785 ID_ATTRIBUTE_NAME: 'data-reactid',
4786 ROOT_ATTRIBUTE_NAME: 'data-reactroot',
4787
4788 ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,
4789 ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040',
4790
4791 /**
4792 * Map from property "standard name" to an object with info about how to set
4793 * the property in the DOM. Each object contains:
4794 *
4795 * attributeName:
4796 * Used when rendering markup or with `*Attribute()`.
4797 * attributeNamespace
4798 * propertyName:
4799 * Used on DOM node instances. (This includes properties that mutate due to
4800 * external factors.)
4801 * mutationMethod:
4802 * If non-null, used instead of the property or `setAttribute()` after
4803 * initial render.
4804 * mustUseProperty:
4805 * Whether the property must be accessed and mutated as an object property.
4806 * hasBooleanValue:
4807 * Whether the property should be removed when set to a falsey value.
4808 * hasNumericValue:
4809 * Whether the property must be numeric or parse as a numeric and should be
4810 * removed when set to a falsey value.
4811 * hasPositiveNumericValue:
4812 * Whether the property must be positive numeric or parse as a positive
4813 * numeric and should be removed when set to a falsey value.
4814 * hasOverloadedBooleanValue:
4815 * Whether the property can be used as a flag as well as with a value.
4816 * Removed when strictly equal to false; present without a value when
4817 * strictly equal to true; present with a value otherwise.
4818 */
4819 properties: {},
4820
4821 /**
4822 * Mapping from lowercase property names to the properly cased version, used
4823 * to warn in the case of missing properties. Available only in __DEV__.
4824 * @type {Object}
4825 */
4826 getPossibleStandardName: (undefined) !== 'production' ? {} : null,
4827
4828 /**
4829 * All of the isCustomAttribute() functions that have been injected.
4830 */
4831 _isCustomAttributeFunctions: [],
4832
4833 /**
4834 * Checks whether a property name is a custom attribute.
4835 * @method
4836 */
4837 isCustomAttribute: function (attributeName) {
4838 for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {
4839 var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];
4840 if (isCustomAttributeFn(attributeName)) {
4841 return true;
4842 }
4843 }
4844 return false;
4845 },
4846
4847 injection: DOMPropertyInjection
4848 };
4849
4850 module.exports = DOMProperty;
4851
4852/***/ },
4853/* 126 */
4854/***/ function(module, exports) {
4855
4856 /**
4857 * Copyright 2015-present, Facebook, Inc.
4858 * All rights reserved.
4859 *
4860 * This source code is licensed under the BSD-style license found in the
4861 * LICENSE file in the root directory of this source tree. An additional grant
4862 * of patent rights can be found in the PATENTS file in the same directory.
4863 *
4864 * @providesModule ReactDOMComponentFlags
4865 */
4866
4867 'use strict';
4868
4869 var ReactDOMComponentFlags = {
4870 hasCachedChildNodes: 1 << 0
4871 };
4872
4873 module.exports = ReactDOMComponentFlags;
4874
4875/***/ },
4876/* 127 */
4877/***/ function(module, exports, __webpack_require__) {
4878
4879 /**
4880 * Copyright 2013-present, Facebook, Inc.
4881 * All rights reserved.
4882 *
4883 * This source code is licensed under the BSD-style license found in the
4884 * LICENSE file in the root directory of this source tree. An additional grant
4885 * of patent rights can be found in the PATENTS file in the same directory.
4886 *
4887 * @providesModule ReactDefaultInjection
4888 */
4889
4890 'use strict';
4891
4892 var BeforeInputEventPlugin = __webpack_require__(128);
4893 var ChangeEventPlugin = __webpack_require__(143);
4894 var DefaultEventPluginOrder = __webpack_require__(161);
4895 var EnterLeaveEventPlugin = __webpack_require__(162);
4896 var HTMLDOMPropertyConfig = __webpack_require__(167);
4897 var ReactComponentBrowserEnvironment = __webpack_require__(168);
4898 var ReactDOMComponent = __webpack_require__(182);
4899 var ReactDOMComponentTree = __webpack_require__(124);
4900 var ReactDOMEmptyComponent = __webpack_require__(221);
4901 var ReactDOMTreeTraversal = __webpack_require__(222);
4902 var ReactDOMTextComponent = __webpack_require__(223);
4903 var ReactDefaultBatchingStrategy = __webpack_require__(224);
4904 var ReactEventListener = __webpack_require__(225);
4905 var ReactInjection = __webpack_require__(228);
4906 var ReactReconcileTransaction = __webpack_require__(229);
4907 var SVGDOMPropertyConfig = __webpack_require__(237);
4908 var SelectEventPlugin = __webpack_require__(238);
4909 var SimpleEventPlugin = __webpack_require__(239);
4910
4911 var alreadyInjected = false;
4912
4913 function inject() {
4914 if (alreadyInjected) {
4915 // TODO: This is currently true because these injections are shared between
4916 // the client and the server package. They should be built independently
4917 // and not share any injection state. Then this problem will be solved.
4918 return;
4919 }
4920 alreadyInjected = true;
4921
4922 ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);
4923
4924 /**
4925 * Inject modules for resolving DOM hierarchy and plugin ordering.
4926 */
4927 ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);
4928 ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);
4929 ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);
4930
4931 /**
4932 * Some important event plugins included by default (without having to require
4933 * them).
4934 */
4935 ReactInjection.EventPluginHub.injectEventPluginsByName({
4936 SimpleEventPlugin: SimpleEventPlugin,
4937 EnterLeaveEventPlugin: EnterLeaveEventPlugin,
4938 ChangeEventPlugin: ChangeEventPlugin,
4939 SelectEventPlugin: SelectEventPlugin,
4940 BeforeInputEventPlugin: BeforeInputEventPlugin
4941 });
4942
4943 ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);
4944
4945 ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);
4946
4947 ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
4948 ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);
4949
4950 ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {
4951 return new ReactDOMEmptyComponent(instantiate);
4952 });
4953
4954 ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);
4955 ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);
4956
4957 ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);
4958 }
4959
4960 module.exports = {
4961 inject: inject
4962 };
4963
4964/***/ },
4965/* 128 */
4966/***/ function(module, exports, __webpack_require__) {
4967
4968 /**
4969 * Copyright 2013-present Facebook, Inc.
4970 * All rights reserved.
4971 *
4972 * This source code is licensed under the BSD-style license found in the
4973 * LICENSE file in the root directory of this source tree. An additional grant
4974 * of patent rights can be found in the PATENTS file in the same directory.
4975 *
4976 * @providesModule BeforeInputEventPlugin
4977 */
4978
4979 'use strict';
4980
4981 var EventConstants = __webpack_require__(129);
4982 var EventPropagators = __webpack_require__(130);
4983 var ExecutionEnvironment = __webpack_require__(137);
4984 var FallbackCompositionState = __webpack_require__(138);
4985 var SyntheticCompositionEvent = __webpack_require__(140);
4986 var SyntheticInputEvent = __webpack_require__(142);
4987
4988 var keyOf = __webpack_require__(112);
4989
4990 var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
4991 var START_KEYCODE = 229;
4992
4993 var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;
4994
4995 var documentMode = null;
4996 if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {
4997 documentMode = document.documentMode;
4998 }
4999
5000 // Webkit offers a very useful `textInput` event that can be used to
5001 // directly represent `beforeInput`. The IE `textinput` event is not as
5002 // useful, so we don't use it.
5003 var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();
5004
5005 // In IE9+, we have access to composition events, but the data supplied
5006 // by the native compositionend event may be incorrect. Japanese ideographic
5007 // spaces, for instance (\u3000) are not recorded correctly.
5008 var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);
5009
5010 /**
5011 * Opera <= 12 includes TextEvent in window, but does not fire
5012 * text input events. Rely on keypress instead.
5013 */
5014 function isPresto() {
5015 var opera = window.opera;
5016 return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;
5017 }
5018
5019 var SPACEBAR_CODE = 32;
5020 var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);
5021
5022 var topLevelTypes = EventConstants.topLevelTypes;
5023
5024 // Events and their corresponding property names.
5025 var eventTypes = {
5026 beforeInput: {
5027 phasedRegistrationNames: {
5028 bubbled: keyOf({ onBeforeInput: null }),
5029 captured: keyOf({ onBeforeInputCapture: null })
5030 },
5031 dependencies: [topLevelTypes.topCompositionEnd, topLevelTypes.topKeyPress, topLevelTypes.topTextInput, topLevelTypes.topPaste]
5032 },
5033 compositionEnd: {
5034 phasedRegistrationNames: {
5035 bubbled: keyOf({ onCompositionEnd: null }),
5036 captured: keyOf({ onCompositionEndCapture: null })
5037 },
5038 dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionEnd, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown]
5039 },
5040 compositionStart: {
5041 phasedRegistrationNames: {
5042 bubbled: keyOf({ onCompositionStart: null }),
5043 captured: keyOf({ onCompositionStartCapture: null })
5044 },
5045 dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionStart, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown]
5046 },
5047 compositionUpdate: {
5048 phasedRegistrationNames: {
5049 bubbled: keyOf({ onCompositionUpdate: null }),
5050 captured: keyOf({ onCompositionUpdateCapture: null })
5051 },
5052 dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionUpdate, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown]
5053 }
5054 };
5055
5056 // Track whether we've ever handled a keypress on the space key.
5057 var hasSpaceKeypress = false;
5058
5059 /**
5060 * Return whether a native keypress event is assumed to be a command.
5061 * This is required because Firefox fires `keypress` events for key commands
5062 * (cut, copy, select-all, etc.) even though no character is inserted.
5063 */
5064 function isKeypressCommand(nativeEvent) {
5065 return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&
5066 // ctrlKey && altKey is equivalent to AltGr, and is not a command.
5067 !(nativeEvent.ctrlKey && nativeEvent.altKey);
5068 }
5069
5070 /**
5071 * Translate native top level events into event types.
5072 *
5073 * @param {string} topLevelType
5074 * @return {object}
5075 */
5076 function getCompositionEventType(topLevelType) {
5077 switch (topLevelType) {
5078 case topLevelTypes.topCompositionStart:
5079 return eventTypes.compositionStart;
5080 case topLevelTypes.topCompositionEnd:
5081 return eventTypes.compositionEnd;
5082 case topLevelTypes.topCompositionUpdate:
5083 return eventTypes.compositionUpdate;
5084 }
5085 }
5086
5087 /**
5088 * Does our fallback best-guess model think this event signifies that
5089 * composition has begun?
5090 *
5091 * @param {string} topLevelType
5092 * @param {object} nativeEvent
5093 * @return {boolean}
5094 */
5095 function isFallbackCompositionStart(topLevelType, nativeEvent) {
5096 return topLevelType === topLevelTypes.topKeyDown && nativeEvent.keyCode === START_KEYCODE;
5097 }
5098
5099 /**
5100 * Does our fallback mode think that this event is the end of composition?
5101 *
5102 * @param {string} topLevelType
5103 * @param {object} nativeEvent
5104 * @return {boolean}
5105 */
5106 function isFallbackCompositionEnd(topLevelType, nativeEvent) {
5107 switch (topLevelType) {
5108 case topLevelTypes.topKeyUp:
5109 // Command keys insert or clear IME input.
5110 return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;
5111 case topLevelTypes.topKeyDown:
5112 // Expect IME keyCode on each keydown. If we get any other
5113 // code we must have exited earlier.
5114 return nativeEvent.keyCode !== START_KEYCODE;
5115 case topLevelTypes.topKeyPress:
5116 case topLevelTypes.topMouseDown:
5117 case topLevelTypes.topBlur:
5118 // Events are not possible without cancelling IME.
5119 return true;
5120 default:
5121 return false;
5122 }
5123 }
5124
5125 /**
5126 * Google Input Tools provides composition data via a CustomEvent,
5127 * with the `data` property populated in the `detail` object. If this
5128 * is available on the event object, use it. If not, this is a plain
5129 * composition event and we have nothing special to extract.
5130 *
5131 * @param {object} nativeEvent
5132 * @return {?string}
5133 */
5134 function getDataFromCustomEvent(nativeEvent) {
5135 var detail = nativeEvent.detail;
5136 if (typeof detail === 'object' && 'data' in detail) {
5137 return detail.data;
5138 }
5139 return null;
5140 }
5141
5142 // Track the current IME composition fallback object, if any.
5143 var currentComposition = null;
5144
5145 /**
5146 * @return {?object} A SyntheticCompositionEvent.
5147 */
5148 function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5149 var eventType;
5150 var fallbackData;
5151
5152 if (canUseCompositionEvent) {
5153 eventType = getCompositionEventType(topLevelType);
5154 } else if (!currentComposition) {
5155 if (isFallbackCompositionStart(topLevelType, nativeEvent)) {
5156 eventType = eventTypes.compositionStart;
5157 }
5158 } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {
5159 eventType = eventTypes.compositionEnd;
5160 }
5161
5162 if (!eventType) {
5163 return null;
5164 }
5165
5166 if (useFallbackCompositionData) {
5167 // The current composition is stored statically and must not be
5168 // overwritten while composition continues.
5169 if (!currentComposition && eventType === eventTypes.compositionStart) {
5170 currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);
5171 } else if (eventType === eventTypes.compositionEnd) {
5172 if (currentComposition) {
5173 fallbackData = currentComposition.getData();
5174 }
5175 }
5176 }
5177
5178 var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);
5179
5180 if (fallbackData) {
5181 // Inject data generated from fallback path into the synthetic event.
5182 // This matches the property of native CompositionEventInterface.
5183 event.data = fallbackData;
5184 } else {
5185 var customData = getDataFromCustomEvent(nativeEvent);
5186 if (customData !== null) {
5187 event.data = customData;
5188 }
5189 }
5190
5191 EventPropagators.accumulateTwoPhaseDispatches(event);
5192 return event;
5193 }
5194
5195 /**
5196 * @param {string} topLevelType Record from `EventConstants`.
5197 * @param {object} nativeEvent Native browser event.
5198 * @return {?string} The string corresponding to this `beforeInput` event.
5199 */
5200 function getNativeBeforeInputChars(topLevelType, nativeEvent) {
5201 switch (topLevelType) {
5202 case topLevelTypes.topCompositionEnd:
5203 return getDataFromCustomEvent(nativeEvent);
5204 case topLevelTypes.topKeyPress:
5205 /**
5206 * If native `textInput` events are available, our goal is to make
5207 * use of them. However, there is a special case: the spacebar key.
5208 * In Webkit, preventing default on a spacebar `textInput` event
5209 * cancels character insertion, but it *also* causes the browser
5210 * to fall back to its default spacebar behavior of scrolling the
5211 * page.
5212 *
5213 * Tracking at:
5214 * https://code.google.com/p/chromium/issues/detail?id=355103
5215 *
5216 * To avoid this issue, use the keypress event as if no `textInput`
5217 * event is available.
5218 */
5219 var which = nativeEvent.which;
5220 if (which !== SPACEBAR_CODE) {
5221 return null;
5222 }
5223
5224 hasSpaceKeypress = true;
5225 return SPACEBAR_CHAR;
5226
5227 case topLevelTypes.topTextInput:
5228 // Record the characters to be added to the DOM.
5229 var chars = nativeEvent.data;
5230
5231 // If it's a spacebar character, assume that we have already handled
5232 // it at the keypress level and bail immediately. Android Chrome
5233 // doesn't give us keycodes, so we need to blacklist it.
5234 if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
5235 return null;
5236 }
5237
5238 return chars;
5239
5240 default:
5241 // For other native event types, do nothing.
5242 return null;
5243 }
5244 }
5245
5246 /**
5247 * For browsers that do not provide the `textInput` event, extract the
5248 * appropriate string to use for SyntheticInputEvent.
5249 *
5250 * @param {string} topLevelType Record from `EventConstants`.
5251 * @param {object} nativeEvent Native browser event.
5252 * @return {?string} The fallback string for this `beforeInput` event.
5253 */
5254 function getFallbackBeforeInputChars(topLevelType, nativeEvent) {
5255 // If we are currently composing (IME) and using a fallback to do so,
5256 // try to extract the composed characters from the fallback object.
5257 // If composition event is available, we extract a string only at
5258 // compositionevent, otherwise extract it at fallback events.
5259 if (currentComposition) {
5260 if (topLevelType === topLevelTypes.topCompositionEnd || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {
5261 var chars = currentComposition.getData();
5262 FallbackCompositionState.release(currentComposition);
5263 currentComposition = null;
5264 return chars;
5265 }
5266 return null;
5267 }
5268
5269 switch (topLevelType) {
5270 case topLevelTypes.topPaste:
5271 // If a paste event occurs after a keypress, throw out the input
5272 // chars. Paste events should not lead to BeforeInput events.
5273 return null;
5274 case topLevelTypes.topKeyPress:
5275 /**
5276 * As of v27, Firefox may fire keypress events even when no character
5277 * will be inserted. A few possibilities:
5278 *
5279 * - `which` is `0`. Arrow keys, Esc key, etc.
5280 *
5281 * - `which` is the pressed key code, but no char is available.
5282 * Ex: 'AltGr + d` in Polish. There is no modified character for
5283 * this key combination and no character is inserted into the
5284 * document, but FF fires the keypress for char code `100` anyway.
5285 * No `input` event will occur.
5286 *
5287 * - `which` is the pressed key code, but a command combination is
5288 * being used. Ex: `Cmd+C`. No character is inserted, and no
5289 * `input` event will occur.
5290 */
5291 if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {
5292 return String.fromCharCode(nativeEvent.which);
5293 }
5294 return null;
5295 case topLevelTypes.topCompositionEnd:
5296 return useFallbackCompositionData ? null : nativeEvent.data;
5297 default:
5298 return null;
5299 }
5300 }
5301
5302 /**
5303 * Extract a SyntheticInputEvent for `beforeInput`, based on either native
5304 * `textInput` or fallback behavior.
5305 *
5306 * @return {?object} A SyntheticInputEvent.
5307 */
5308 function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5309 var chars;
5310
5311 if (canUseTextInputEvent) {
5312 chars = getNativeBeforeInputChars(topLevelType, nativeEvent);
5313 } else {
5314 chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);
5315 }
5316
5317 // If no characters are being inserted, no BeforeInput event should
5318 // be fired.
5319 if (!chars) {
5320 return null;
5321 }
5322
5323 var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);
5324
5325 event.data = chars;
5326 EventPropagators.accumulateTwoPhaseDispatches(event);
5327 return event;
5328 }
5329
5330 /**
5331 * Create an `onBeforeInput` event to match
5332 * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
5333 *
5334 * This event plugin is based on the native `textInput` event
5335 * available in Chrome, Safari, Opera, and IE. This event fires after
5336 * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
5337 *
5338 * `beforeInput` is spec'd but not implemented in any browsers, and
5339 * the `input` event does not provide any useful information about what has
5340 * actually been added, contrary to the spec. Thus, `textInput` is the best
5341 * available event to identify the characters that have actually been inserted
5342 * into the target node.
5343 *
5344 * This plugin is also responsible for emitting `composition` events, thus
5345 * allowing us to share composition fallback code for both `beforeInput` and
5346 * `composition` event types.
5347 */
5348 var BeforeInputEventPlugin = {
5349
5350 eventTypes: eventTypes,
5351
5352 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5353 return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];
5354 }
5355 };
5356
5357 module.exports = BeforeInputEventPlugin;
5358
5359/***/ },
5360/* 129 */
5361/***/ function(module, exports, __webpack_require__) {
5362
5363 /**
5364 * Copyright 2013-present, Facebook, Inc.
5365 * All rights reserved.
5366 *
5367 * This source code is licensed under the BSD-style license found in the
5368 * LICENSE file in the root directory of this source tree. An additional grant
5369 * of patent rights can be found in the PATENTS file in the same directory.
5370 *
5371 * @providesModule EventConstants
5372 */
5373
5374 'use strict';
5375
5376 var keyMirror = __webpack_require__(110);
5377
5378 var PropagationPhases = keyMirror({ bubbled: null, captured: null });
5379
5380 /**
5381 * Types of raw signals from the browser caught at the top level.
5382 */
5383 var topLevelTypes = keyMirror({
5384 topAbort: null,
5385 topAnimationEnd: null,
5386 topAnimationIteration: null,
5387 topAnimationStart: null,
5388 topBlur: null,
5389 topCanPlay: null,
5390 topCanPlayThrough: null,
5391 topChange: null,
5392 topClick: null,
5393 topCompositionEnd: null,
5394 topCompositionStart: null,
5395 topCompositionUpdate: null,
5396 topContextMenu: null,
5397 topCopy: null,
5398 topCut: null,
5399 topDoubleClick: null,
5400 topDrag: null,
5401 topDragEnd: null,
5402 topDragEnter: null,
5403 topDragExit: null,
5404 topDragLeave: null,
5405 topDragOver: null,
5406 topDragStart: null,
5407 topDrop: null,
5408 topDurationChange: null,
5409 topEmptied: null,
5410 topEncrypted: null,
5411 topEnded: null,
5412 topError: null,
5413 topFocus: null,
5414 topInput: null,
5415 topInvalid: null,
5416 topKeyDown: null,
5417 topKeyPress: null,
5418 topKeyUp: null,
5419 topLoad: null,
5420 topLoadedData: null,
5421 topLoadedMetadata: null,
5422 topLoadStart: null,
5423 topMouseDown: null,
5424 topMouseMove: null,
5425 topMouseOut: null,
5426 topMouseOver: null,
5427 topMouseUp: null,
5428 topPaste: null,
5429 topPause: null,
5430 topPlay: null,
5431 topPlaying: null,
5432 topProgress: null,
5433 topRateChange: null,
5434 topReset: null,
5435 topScroll: null,
5436 topSeeked: null,
5437 topSeeking: null,
5438 topSelectionChange: null,
5439 topStalled: null,
5440 topSubmit: null,
5441 topSuspend: null,
5442 topTextInput: null,
5443 topTimeUpdate: null,
5444 topTouchCancel: null,
5445 topTouchEnd: null,
5446 topTouchMove: null,
5447 topTouchStart: null,
5448 topTransitionEnd: null,
5449 topVolumeChange: null,
5450 topWaiting: null,
5451 topWheel: null
5452 });
5453
5454 var EventConstants = {
5455 topLevelTypes: topLevelTypes,
5456 PropagationPhases: PropagationPhases
5457 };
5458
5459 module.exports = EventConstants;
5460
5461/***/ },
5462/* 130 */
5463/***/ function(module, exports, __webpack_require__) {
5464
5465 /**
5466 * Copyright 2013-present, Facebook, Inc.
5467 * All rights reserved.
5468 *
5469 * This source code is licensed under the BSD-style license found in the
5470 * LICENSE file in the root directory of this source tree. An additional grant
5471 * of patent rights can be found in the PATENTS file in the same directory.
5472 *
5473 * @providesModule EventPropagators
5474 */
5475
5476 'use strict';
5477
5478 var EventConstants = __webpack_require__(129);
5479 var EventPluginHub = __webpack_require__(131);
5480 var EventPluginUtils = __webpack_require__(133);
5481
5482 var accumulateInto = __webpack_require__(135);
5483 var forEachAccumulated = __webpack_require__(136);
5484 var warning = __webpack_require__(98);
5485
5486 var PropagationPhases = EventConstants.PropagationPhases;
5487 var getListener = EventPluginHub.getListener;
5488
5489 /**
5490 * Some event types have a notion of different registration names for different
5491 * "phases" of propagation. This finds listeners by a given phase.
5492 */
5493 function listenerAtPhase(inst, event, propagationPhase) {
5494 var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];
5495 return getListener(inst, registrationName);
5496 }
5497
5498 /**
5499 * Tags a `SyntheticEvent` with dispatched listeners. Creating this function
5500 * here, allows us to not have to bind or create functions for each event.
5501 * Mutating the event's members allows us to not have to create a wrapping
5502 * "dispatch" object that pairs the event with the listener.
5503 */
5504 function accumulateDirectionalDispatches(inst, upwards, event) {
5505 if ((undefined) !== 'production') {
5506 (undefined) !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;
5507 }
5508 var phase = upwards ? PropagationPhases.bubbled : PropagationPhases.captured;
5509 var listener = listenerAtPhase(inst, event, phase);
5510 if (listener) {
5511 event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
5512 event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
5513 }
5514 }
5515
5516 /**
5517 * Collect dispatches (must be entirely collected before dispatching - see unit
5518 * tests). Lazily allocate the array to conserve memory. We must loop through
5519 * each event and perform the traversal for each one. We cannot perform a
5520 * single traversal for the entire collection of events because each event may
5521 * have a different target.
5522 */
5523 function accumulateTwoPhaseDispatchesSingle(event) {
5524 if (event && event.dispatchConfig.phasedRegistrationNames) {
5525 EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);
5526 }
5527 }
5528
5529 /**
5530 * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.
5531 */
5532 function accumulateTwoPhaseDispatchesSingleSkipTarget(event) {
5533 if (event && event.dispatchConfig.phasedRegistrationNames) {
5534 var targetInst = event._targetInst;
5535 var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;
5536 EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);
5537 }
5538 }
5539
5540 /**
5541 * Accumulates without regard to direction, does not look for phased
5542 * registration names. Same as `accumulateDirectDispatchesSingle` but without
5543 * requiring that the `dispatchMarker` be the same as the dispatched ID.
5544 */
5545 function accumulateDispatches(inst, ignoredDirection, event) {
5546 if (event && event.dispatchConfig.registrationName) {
5547 var registrationName = event.dispatchConfig.registrationName;
5548 var listener = getListener(inst, registrationName);
5549 if (listener) {
5550 event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
5551 event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
5552 }
5553 }
5554 }
5555
5556 /**
5557 * Accumulates dispatches on an `SyntheticEvent`, but only for the
5558 * `dispatchMarker`.
5559 * @param {SyntheticEvent} event
5560 */
5561 function accumulateDirectDispatchesSingle(event) {
5562 if (event && event.dispatchConfig.registrationName) {
5563 accumulateDispatches(event._targetInst, null, event);
5564 }
5565 }
5566
5567 function accumulateTwoPhaseDispatches(events) {
5568 forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);
5569 }
5570
5571 function accumulateTwoPhaseDispatchesSkipTarget(events) {
5572 forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);
5573 }
5574
5575 function accumulateEnterLeaveDispatches(leave, enter, from, to) {
5576 EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);
5577 }
5578
5579 function accumulateDirectDispatches(events) {
5580 forEachAccumulated(events, accumulateDirectDispatchesSingle);
5581 }
5582
5583 /**
5584 * A small set of propagation patterns, each of which will accept a small amount
5585 * of information, and generate a set of "dispatch ready event objects" - which
5586 * are sets of events that have already been annotated with a set of dispatched
5587 * listener functions/ids. The API is designed this way to discourage these
5588 * propagation strategies from actually executing the dispatches, since we
5589 * always want to collect the entire set of dispatches before executing event a
5590 * single one.
5591 *
5592 * @constructor EventPropagators
5593 */
5594 var EventPropagators = {
5595 accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,
5596 accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,
5597 accumulateDirectDispatches: accumulateDirectDispatches,
5598 accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches
5599 };
5600
5601 module.exports = EventPropagators;
5602
5603/***/ },
5604/* 131 */
5605/***/ function(module, exports, __webpack_require__) {
5606
5607 /**
5608 * Copyright 2013-present, Facebook, Inc.
5609 * All rights reserved.
5610 *
5611 * This source code is licensed under the BSD-style license found in the
5612 * LICENSE file in the root directory of this source tree. An additional grant
5613 * of patent rights can be found in the PATENTS file in the same directory.
5614 *
5615 * @providesModule EventPluginHub
5616 */
5617
5618 'use strict';
5619
5620 var _prodInvariant = __webpack_require__(94);
5621
5622 var EventPluginRegistry = __webpack_require__(132);
5623 var EventPluginUtils = __webpack_require__(133);
5624 var ReactErrorUtils = __webpack_require__(134);
5625
5626 var accumulateInto = __webpack_require__(135);
5627 var forEachAccumulated = __webpack_require__(136);
5628 var invariant = __webpack_require__(95);
5629
5630 /**
5631 * Internal store for event listeners
5632 */
5633 var listenerBank = {};
5634
5635 /**
5636 * Internal queue of events that have accumulated their dispatches and are
5637 * waiting to have their dispatches executed.
5638 */
5639 var eventQueue = null;
5640
5641 /**
5642 * Dispatches an event and releases it back into the pool, unless persistent.
5643 *
5644 * @param {?object} event Synthetic event to be dispatched.
5645 * @param {boolean} simulated If the event is simulated (changes exn behavior)
5646 * @private
5647 */
5648 var executeDispatchesAndRelease = function (event, simulated) {
5649 if (event) {
5650 EventPluginUtils.executeDispatchesInOrder(event, simulated);
5651
5652 if (!event.isPersistent()) {
5653 event.constructor.release(event);
5654 }
5655 }
5656 };
5657 var executeDispatchesAndReleaseSimulated = function (e) {
5658 return executeDispatchesAndRelease(e, true);
5659 };
5660 var executeDispatchesAndReleaseTopLevel = function (e) {
5661 return executeDispatchesAndRelease(e, false);
5662 };
5663
5664 var getDictionaryKey = function (inst) {
5665 // Prevents V8 performance issue:
5666 // https://github.com/facebook/react/pull/7232
5667 return '.' + inst._rootNodeID;
5668 };
5669
5670 /**
5671 * This is a unified interface for event plugins to be installed and configured.
5672 *
5673 * Event plugins can implement the following properties:
5674 *
5675 * `extractEvents` {function(string, DOMEventTarget, string, object): *}
5676 * Required. When a top-level event is fired, this method is expected to
5677 * extract synthetic events that will in turn be queued and dispatched.
5678 *
5679 * `eventTypes` {object}
5680 * Optional, plugins that fire events must publish a mapping of registration
5681 * names that are used to register listeners. Values of this mapping must
5682 * be objects that contain `registrationName` or `phasedRegistrationNames`.
5683 *
5684 * `executeDispatch` {function(object, function, string)}
5685 * Optional, allows plugins to override how an event gets dispatched. By
5686 * default, the listener is simply invoked.
5687 *
5688 * Each plugin that is injected into `EventsPluginHub` is immediately operable.
5689 *
5690 * @public
5691 */
5692 var EventPluginHub = {
5693
5694 /**
5695 * Methods for injecting dependencies.
5696 */
5697 injection: {
5698
5699 /**
5700 * @param {array} InjectedEventPluginOrder
5701 * @public
5702 */
5703 injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,
5704
5705 /**
5706 * @param {object} injectedNamesToPlugins Map from names to plugin modules.
5707 */
5708 injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName
5709
5710 },
5711
5712 /**
5713 * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.
5714 *
5715 * @param {object} inst The instance, which is the source of events.
5716 * @param {string} registrationName Name of listener (e.g. `onClick`).
5717 * @param {function} listener The callback to store.
5718 */
5719 putListener: function (inst, registrationName, listener) {
5720 !(typeof listener === 'function') ? (undefined) !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;
5721
5722 var key = getDictionaryKey(inst);
5723 var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});
5724 bankForRegistrationName[key] = listener;
5725
5726 var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
5727 if (PluginModule && PluginModule.didPutListener) {
5728 PluginModule.didPutListener(inst, registrationName, listener);
5729 }
5730 },
5731
5732 /**
5733 * @param {object} inst The instance, which is the source of events.
5734 * @param {string} registrationName Name of listener (e.g. `onClick`).
5735 * @return {?function} The stored callback.
5736 */
5737 getListener: function (inst, registrationName) {
5738 var bankForRegistrationName = listenerBank[registrationName];
5739 var key = getDictionaryKey(inst);
5740 return bankForRegistrationName && bankForRegistrationName[key];
5741 },
5742
5743 /**
5744 * Deletes a listener from the registration bank.
5745 *
5746 * @param {object} inst The instance, which is the source of events.
5747 * @param {string} registrationName Name of listener (e.g. `onClick`).
5748 */
5749 deleteListener: function (inst, registrationName) {
5750 var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
5751 if (PluginModule && PluginModule.willDeleteListener) {
5752 PluginModule.willDeleteListener(inst, registrationName);
5753 }
5754
5755 var bankForRegistrationName = listenerBank[registrationName];
5756 // TODO: This should never be null -- when is it?
5757 if (bankForRegistrationName) {
5758 var key = getDictionaryKey(inst);
5759 delete bankForRegistrationName[key];
5760 }
5761 },
5762
5763 /**
5764 * Deletes all listeners for the DOM element with the supplied ID.
5765 *
5766 * @param {object} inst The instance, which is the source of events.
5767 */
5768 deleteAllListeners: function (inst) {
5769 var key = getDictionaryKey(inst);
5770 for (var registrationName in listenerBank) {
5771 if (!listenerBank.hasOwnProperty(registrationName)) {
5772 continue;
5773 }
5774
5775 if (!listenerBank[registrationName][key]) {
5776 continue;
5777 }
5778
5779 var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
5780 if (PluginModule && PluginModule.willDeleteListener) {
5781 PluginModule.willDeleteListener(inst, registrationName);
5782 }
5783
5784 delete listenerBank[registrationName][key];
5785 }
5786 },
5787
5788 /**
5789 * Allows registered plugins an opportunity to extract events from top-level
5790 * native browser events.
5791 *
5792 * @return {*} An accumulation of synthetic events.
5793 * @internal
5794 */
5795 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5796 var events;
5797 var plugins = EventPluginRegistry.plugins;
5798 for (var i = 0; i < plugins.length; i++) {
5799 // Not every plugin in the ordering may be loaded at runtime.
5800 var possiblePlugin = plugins[i];
5801 if (possiblePlugin) {
5802 var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);
5803 if (extractedEvents) {
5804 events = accumulateInto(events, extractedEvents);
5805 }
5806 }
5807 }
5808 return events;
5809 },
5810
5811 /**
5812 * Enqueues a synthetic event that should be dispatched when
5813 * `processEventQueue` is invoked.
5814 *
5815 * @param {*} events An accumulation of synthetic events.
5816 * @internal
5817 */
5818 enqueueEvents: function (events) {
5819 if (events) {
5820 eventQueue = accumulateInto(eventQueue, events);
5821 }
5822 },
5823
5824 /**
5825 * Dispatches all synthetic events on the event queue.
5826 *
5827 * @internal
5828 */
5829 processEventQueue: function (simulated) {
5830 // Set `eventQueue` to null before processing it so that we can tell if more
5831 // events get enqueued while processing.
5832 var processingEventQueue = eventQueue;
5833 eventQueue = null;
5834 if (simulated) {
5835 forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);
5836 } else {
5837 forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);
5838 }
5839 !!eventQueue ? (undefined) !== '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;
5840 // This would be a good time to rethrow if any of the event handlers threw.
5841 ReactErrorUtils.rethrowCaughtError();
5842 },
5843
5844 /**
5845 * These are needed for tests only. Do not use!
5846 */
5847 __purge: function () {
5848 listenerBank = {};
5849 },
5850
5851 __getListenerBank: function () {
5852 return listenerBank;
5853 }
5854
5855 };
5856
5857 module.exports = EventPluginHub;
5858
5859/***/ },
5860/* 132 */
5861/***/ function(module, exports, __webpack_require__) {
5862
5863 /**
5864 * Copyright 2013-present, Facebook, Inc.
5865 * All rights reserved.
5866 *
5867 * This source code is licensed under the BSD-style license found in the
5868 * LICENSE file in the root directory of this source tree. An additional grant
5869 * of patent rights can be found in the PATENTS file in the same directory.
5870 *
5871 * @providesModule EventPluginRegistry
5872 */
5873
5874 'use strict';
5875
5876 var _prodInvariant = __webpack_require__(94);
5877
5878 var invariant = __webpack_require__(95);
5879
5880 /**
5881 * Injectable ordering of event plugins.
5882 */
5883 var EventPluginOrder = null;
5884
5885 /**
5886 * Injectable mapping from names to event plugin modules.
5887 */
5888 var namesToPlugins = {};
5889
5890 /**
5891 * Recomputes the plugin list using the injected plugins and plugin ordering.
5892 *
5893 * @private
5894 */
5895 function recomputePluginOrdering() {
5896 if (!EventPluginOrder) {
5897 // Wait until an `EventPluginOrder` is injected.
5898 return;
5899 }
5900 for (var pluginName in namesToPlugins) {
5901 var PluginModule = namesToPlugins[pluginName];
5902 var pluginIndex = EventPluginOrder.indexOf(pluginName);
5903 !(pluginIndex > -1) ? (undefined) !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;
5904 if (EventPluginRegistry.plugins[pluginIndex]) {
5905 continue;
5906 }
5907 !PluginModule.extractEvents ? (undefined) !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;
5908 EventPluginRegistry.plugins[pluginIndex] = PluginModule;
5909 var publishedEvents = PluginModule.eventTypes;
5910 for (var eventName in publishedEvents) {
5911 !publishEventForPlugin(publishedEvents[eventName], PluginModule, eventName) ? (undefined) !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;
5912 }
5913 }
5914 }
5915
5916 /**
5917 * Publishes an event so that it can be dispatched by the supplied plugin.
5918 *
5919 * @param {object} dispatchConfig Dispatch configuration for the event.
5920 * @param {object} PluginModule Plugin publishing the event.
5921 * @return {boolean} True if the event was successfully published.
5922 * @private
5923 */
5924 function publishEventForPlugin(dispatchConfig, PluginModule, eventName) {
5925 !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? (undefined) !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;
5926 EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;
5927
5928 var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
5929 if (phasedRegistrationNames) {
5930 for (var phaseName in phasedRegistrationNames) {
5931 if (phasedRegistrationNames.hasOwnProperty(phaseName)) {
5932 var phasedRegistrationName = phasedRegistrationNames[phaseName];
5933 publishRegistrationName(phasedRegistrationName, PluginModule, eventName);
5934 }
5935 }
5936 return true;
5937 } else if (dispatchConfig.registrationName) {
5938 publishRegistrationName(dispatchConfig.registrationName, PluginModule, eventName);
5939 return true;
5940 }
5941 return false;
5942 }
5943
5944 /**
5945 * Publishes a registration name that is used to identify dispatched events and
5946 * can be used with `EventPluginHub.putListener` to register listeners.
5947 *
5948 * @param {string} registrationName Registration name to add.
5949 * @param {object} PluginModule Plugin publishing the event.
5950 * @private
5951 */
5952 function publishRegistrationName(registrationName, PluginModule, eventName) {
5953 !!EventPluginRegistry.registrationNameModules[registrationName] ? (undefined) !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;
5954 EventPluginRegistry.registrationNameModules[registrationName] = PluginModule;
5955 EventPluginRegistry.registrationNameDependencies[registrationName] = PluginModule.eventTypes[eventName].dependencies;
5956
5957 if ((undefined) !== 'production') {
5958 var lowerCasedName = registrationName.toLowerCase();
5959 EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;
5960
5961 if (registrationName === 'onDoubleClick') {
5962 EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;
5963 }
5964 }
5965 }
5966
5967 /**
5968 * Registers plugins so that they can extract and dispatch events.
5969 *
5970 * @see {EventPluginHub}
5971 */
5972 var EventPluginRegistry = {
5973
5974 /**
5975 * Ordered list of injected plugins.
5976 */
5977 plugins: [],
5978
5979 /**
5980 * Mapping from event name to dispatch config
5981 */
5982 eventNameDispatchConfigs: {},
5983
5984 /**
5985 * Mapping from registration name to plugin module
5986 */
5987 registrationNameModules: {},
5988
5989 /**
5990 * Mapping from registration name to event name
5991 */
5992 registrationNameDependencies: {},
5993
5994 /**
5995 * Mapping from lowercase registration names to the properly cased version,
5996 * used to warn in the case of missing event handlers. Available
5997 * only in __DEV__.
5998 * @type {Object}
5999 */
6000 possibleRegistrationNames: (undefined) !== 'production' ? {} : null,
6001
6002 /**
6003 * Injects an ordering of plugins (by plugin name). This allows the ordering
6004 * to be decoupled from injection of the actual plugins so that ordering is
6005 * always deterministic regardless of packaging, on-the-fly injection, etc.
6006 *
6007 * @param {array} InjectedEventPluginOrder
6008 * @internal
6009 * @see {EventPluginHub.injection.injectEventPluginOrder}
6010 */
6011 injectEventPluginOrder: function (InjectedEventPluginOrder) {
6012 !!EventPluginOrder ? (undefined) !== '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;
6013 // Clone the ordering so it cannot be dynamically mutated.
6014 EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);
6015 recomputePluginOrdering();
6016 },
6017
6018 /**
6019 * Injects plugins to be used by `EventPluginHub`. The plugin names must be
6020 * in the ordering injected by `injectEventPluginOrder`.
6021 *
6022 * Plugins can be injected as part of page initialization or on-the-fly.
6023 *
6024 * @param {object} injectedNamesToPlugins Map from names to plugin modules.
6025 * @internal
6026 * @see {EventPluginHub.injection.injectEventPluginsByName}
6027 */
6028 injectEventPluginsByName: function (injectedNamesToPlugins) {
6029 var isOrderingDirty = false;
6030 for (var pluginName in injectedNamesToPlugins) {
6031 if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {
6032 continue;
6033 }
6034 var PluginModule = injectedNamesToPlugins[pluginName];
6035 if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== PluginModule) {
6036 !!namesToPlugins[pluginName] ? (undefined) !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;
6037 namesToPlugins[pluginName] = PluginModule;
6038 isOrderingDirty = true;
6039 }
6040 }
6041 if (isOrderingDirty) {
6042 recomputePluginOrdering();
6043 }
6044 },
6045
6046 /**
6047 * Looks up the plugin for the supplied event.
6048 *
6049 * @param {object} event A synthetic event.
6050 * @return {?object} The plugin that created the supplied event.
6051 * @internal
6052 */
6053 getPluginModuleForEvent: function (event) {
6054 var dispatchConfig = event.dispatchConfig;
6055 if (dispatchConfig.registrationName) {
6056 return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;
6057 }
6058 for (var phase in dispatchConfig.phasedRegistrationNames) {
6059 if (!dispatchConfig.phasedRegistrationNames.hasOwnProperty(phase)) {
6060 continue;
6061 }
6062 var PluginModule = EventPluginRegistry.registrationNameModules[dispatchConfig.phasedRegistrationNames[phase]];
6063 if (PluginModule) {
6064 return PluginModule;
6065 }
6066 }
6067 return null;
6068 },
6069
6070 /**
6071 * Exposed for unit testing.
6072 * @private
6073 */
6074 _resetEventPlugins: function () {
6075 EventPluginOrder = null;
6076 for (var pluginName in namesToPlugins) {
6077 if (namesToPlugins.hasOwnProperty(pluginName)) {
6078 delete namesToPlugins[pluginName];
6079 }
6080 }
6081 EventPluginRegistry.plugins.length = 0;
6082
6083 var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;
6084 for (var eventName in eventNameDispatchConfigs) {
6085 if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {
6086 delete eventNameDispatchConfigs[eventName];
6087 }
6088 }
6089
6090 var registrationNameModules = EventPluginRegistry.registrationNameModules;
6091 for (var registrationName in registrationNameModules) {
6092 if (registrationNameModules.hasOwnProperty(registrationName)) {
6093 delete registrationNameModules[registrationName];
6094 }
6095 }
6096
6097 if ((undefined) !== 'production') {
6098 var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;
6099 for (var lowerCasedName in possibleRegistrationNames) {
6100 if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {
6101 delete possibleRegistrationNames[lowerCasedName];
6102 }
6103 }
6104 }
6105 }
6106
6107 };
6108
6109 module.exports = EventPluginRegistry;
6110
6111/***/ },
6112/* 133 */
6113/***/ function(module, exports, __webpack_require__) {
6114
6115 /**
6116 * Copyright 2013-present, Facebook, Inc.
6117 * All rights reserved.
6118 *
6119 * This source code is licensed under the BSD-style license found in the
6120 * LICENSE file in the root directory of this source tree. An additional grant
6121 * of patent rights can be found in the PATENTS file in the same directory.
6122 *
6123 * @providesModule EventPluginUtils
6124 */
6125
6126 'use strict';
6127
6128 var _prodInvariant = __webpack_require__(94);
6129
6130 var EventConstants = __webpack_require__(129);
6131 var ReactErrorUtils = __webpack_require__(134);
6132
6133 var invariant = __webpack_require__(95);
6134 var warning = __webpack_require__(98);
6135
6136 /**
6137 * Injected dependencies:
6138 */
6139
6140 /**
6141 * - `ComponentTree`: [required] Module that can convert between React instances
6142 * and actual node references.
6143 */
6144 var ComponentTree;
6145 var TreeTraversal;
6146 var injection = {
6147 injectComponentTree: function (Injected) {
6148 ComponentTree = Injected;
6149 if ((undefined) !== 'production') {
6150 (undefined) !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;
6151 }
6152 },
6153 injectTreeTraversal: function (Injected) {
6154 TreeTraversal = Injected;
6155 if ((undefined) !== 'production') {
6156 (undefined) !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;
6157 }
6158 }
6159 };
6160
6161 var topLevelTypes = EventConstants.topLevelTypes;
6162
6163 function isEndish(topLevelType) {
6164 return topLevelType === topLevelTypes.topMouseUp || topLevelType === topLevelTypes.topTouchEnd || topLevelType === topLevelTypes.topTouchCancel;
6165 }
6166
6167 function isMoveish(topLevelType) {
6168 return topLevelType === topLevelTypes.topMouseMove || topLevelType === topLevelTypes.topTouchMove;
6169 }
6170 function isStartish(topLevelType) {
6171 return topLevelType === topLevelTypes.topMouseDown || topLevelType === topLevelTypes.topTouchStart;
6172 }
6173
6174 var validateEventDispatches;
6175 if ((undefined) !== 'production') {
6176 validateEventDispatches = function (event) {
6177 var dispatchListeners = event._dispatchListeners;
6178 var dispatchInstances = event._dispatchInstances;
6179
6180 var listenersIsArr = Array.isArray(dispatchListeners);
6181 var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;
6182
6183 var instancesIsArr = Array.isArray(dispatchInstances);
6184 var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;
6185
6186 (undefined) !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;
6187 };
6188 }
6189
6190 /**
6191 * Dispatch the event to the listener.
6192 * @param {SyntheticEvent} event SyntheticEvent to handle
6193 * @param {boolean} simulated If the event is simulated (changes exn behavior)
6194 * @param {function} listener Application-level callback
6195 * @param {*} inst Internal component instance
6196 */
6197 function executeDispatch(event, simulated, listener, inst) {
6198 var type = event.type || 'unknown-event';
6199 event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);
6200 if (simulated) {
6201 ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);
6202 } else {
6203 ReactErrorUtils.invokeGuardedCallback(type, listener, event);
6204 }
6205 event.currentTarget = null;
6206 }
6207
6208 /**
6209 * Standard/simple iteration through an event's collected dispatches.
6210 */
6211 function executeDispatchesInOrder(event, simulated) {
6212 var dispatchListeners = event._dispatchListeners;
6213 var dispatchInstances = event._dispatchInstances;
6214 if ((undefined) !== 'production') {
6215 validateEventDispatches(event);
6216 }
6217 if (Array.isArray(dispatchListeners)) {
6218 for (var i = 0; i < dispatchListeners.length; i++) {
6219 if (event.isPropagationStopped()) {
6220 break;
6221 }
6222 // Listeners and Instances are two parallel arrays that are always in sync.
6223 executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);
6224 }
6225 } else if (dispatchListeners) {
6226 executeDispatch(event, simulated, dispatchListeners, dispatchInstances);
6227 }
6228 event._dispatchListeners = null;
6229 event._dispatchInstances = null;
6230 }
6231
6232 /**
6233 * Standard/simple iteration through an event's collected dispatches, but stops
6234 * at the first dispatch execution returning true, and returns that id.
6235 *
6236 * @return {?string} id of the first dispatch execution who's listener returns
6237 * true, or null if no listener returned true.
6238 */
6239 function executeDispatchesInOrderStopAtTrueImpl(event) {
6240 var dispatchListeners = event._dispatchListeners;
6241 var dispatchInstances = event._dispatchInstances;
6242 if ((undefined) !== 'production') {
6243 validateEventDispatches(event);
6244 }
6245 if (Array.isArray(dispatchListeners)) {
6246 for (var i = 0; i < dispatchListeners.length; i++) {
6247 if (event.isPropagationStopped()) {
6248 break;
6249 }
6250 // Listeners and Instances are two parallel arrays that are always in sync.
6251 if (dispatchListeners[i](event, dispatchInstances[i])) {
6252 return dispatchInstances[i];
6253 }
6254 }
6255 } else if (dispatchListeners) {
6256 if (dispatchListeners(event, dispatchInstances)) {
6257 return dispatchInstances;
6258 }
6259 }
6260 return null;
6261 }
6262
6263 /**
6264 * @see executeDispatchesInOrderStopAtTrueImpl
6265 */
6266 function executeDispatchesInOrderStopAtTrue(event) {
6267 var ret = executeDispatchesInOrderStopAtTrueImpl(event);
6268 event._dispatchInstances = null;
6269 event._dispatchListeners = null;
6270 return ret;
6271 }
6272
6273 /**
6274 * Execution of a "direct" dispatch - there must be at most one dispatch
6275 * accumulated on the event or it is considered an error. It doesn't really make
6276 * sense for an event with multiple dispatches (bubbled) to keep track of the
6277 * return values at each dispatch execution, but it does tend to make sense when
6278 * dealing with "direct" dispatches.
6279 *
6280 * @return {*} The return value of executing the single dispatch.
6281 */
6282 function executeDirectDispatch(event) {
6283 if ((undefined) !== 'production') {
6284 validateEventDispatches(event);
6285 }
6286 var dispatchListener = event._dispatchListeners;
6287 var dispatchInstance = event._dispatchInstances;
6288 !!Array.isArray(dispatchListener) ? (undefined) !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;
6289 event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;
6290 var res = dispatchListener ? dispatchListener(event) : null;
6291 event.currentTarget = null;
6292 event._dispatchListeners = null;
6293 event._dispatchInstances = null;
6294 return res;
6295 }
6296
6297 /**
6298 * @param {SyntheticEvent} event
6299 * @return {boolean} True iff number of dispatches accumulated is greater than 0.
6300 */
6301 function hasDispatches(event) {
6302 return !!event._dispatchListeners;
6303 }
6304
6305 /**
6306 * General utilities that are useful in creating custom Event Plugins.
6307 */
6308 var EventPluginUtils = {
6309 isEndish: isEndish,
6310 isMoveish: isMoveish,
6311 isStartish: isStartish,
6312
6313 executeDirectDispatch: executeDirectDispatch,
6314 executeDispatchesInOrder: executeDispatchesInOrder,
6315 executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,
6316 hasDispatches: hasDispatches,
6317
6318 getInstanceFromNode: function (node) {
6319 return ComponentTree.getInstanceFromNode(node);
6320 },
6321 getNodeFromInstance: function (node) {
6322 return ComponentTree.getNodeFromInstance(node);
6323 },
6324 isAncestor: function (a, b) {
6325 return TreeTraversal.isAncestor(a, b);
6326 },
6327 getLowestCommonAncestor: function (a, b) {
6328 return TreeTraversal.getLowestCommonAncestor(a, b);
6329 },
6330 getParentInstance: function (inst) {
6331 return TreeTraversal.getParentInstance(inst);
6332 },
6333 traverseTwoPhase: function (target, fn, arg) {
6334 return TreeTraversal.traverseTwoPhase(target, fn, arg);
6335 },
6336 traverseEnterLeave: function (from, to, fn, argFrom, argTo) {
6337 return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);
6338 },
6339
6340 injection: injection
6341 };
6342
6343 module.exports = EventPluginUtils;
6344
6345/***/ },
6346/* 134 */
6347/***/ function(module, exports, __webpack_require__) {
6348
6349 /**
6350 * Copyright 2013-present, Facebook, Inc.
6351 * All rights reserved.
6352 *
6353 * This source code is licensed under the BSD-style license found in the
6354 * LICENSE file in the root directory of this source tree. An additional grant
6355 * of patent rights can be found in the PATENTS file in the same directory.
6356 *
6357 * @providesModule ReactErrorUtils
6358 */
6359
6360 'use strict';
6361
6362 var caughtError = null;
6363
6364 /**
6365 * Call a function while guarding against errors that happens within it.
6366 *
6367 * @param {?String} name of the guard to use for logging or debugging
6368 * @param {Function} func The function to invoke
6369 * @param {*} a First argument
6370 * @param {*} b Second argument
6371 */
6372 function invokeGuardedCallback(name, func, a, b) {
6373 try {
6374 return func(a, b);
6375 } catch (x) {
6376 if (caughtError === null) {
6377 caughtError = x;
6378 }
6379 return undefined;
6380 }
6381 }
6382
6383 var ReactErrorUtils = {
6384 invokeGuardedCallback: invokeGuardedCallback,
6385
6386 /**
6387 * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event
6388 * handler are sure to be rethrown by rethrowCaughtError.
6389 */
6390 invokeGuardedCallbackWithCatch: invokeGuardedCallback,
6391
6392 /**
6393 * During execution of guarded functions we will capture the first error which
6394 * we will rethrow to be handled by the top level error handler.
6395 */
6396 rethrowCaughtError: function () {
6397 if (caughtError) {
6398 var error = caughtError;
6399 caughtError = null;
6400 throw error;
6401 }
6402 }
6403 };
6404
6405 if ((undefined) !== 'production') {
6406 /**
6407 * To help development we can get better devtools integration by simulating a
6408 * real browser event.
6409 */
6410 if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {
6411 var fakeNode = document.createElement('react');
6412 ReactErrorUtils.invokeGuardedCallback = function (name, func, a, b) {
6413 var boundFunc = func.bind(null, a, b);
6414 var evtType = 'react-' + name;
6415 fakeNode.addEventListener(evtType, boundFunc, false);
6416 var evt = document.createEvent('Event');
6417 evt.initEvent(evtType, false, false);
6418 fakeNode.dispatchEvent(evt);
6419 fakeNode.removeEventListener(evtType, boundFunc, false);
6420 };
6421 }
6422 }
6423
6424 module.exports = ReactErrorUtils;
6425
6426/***/ },
6427/* 135 */
6428/***/ function(module, exports, __webpack_require__) {
6429
6430 /**
6431 * Copyright 2014-present, Facebook, Inc.
6432 * All rights reserved.
6433 *
6434 * This source code is licensed under the BSD-style license found in the
6435 * LICENSE file in the root directory of this source tree. An additional grant
6436 * of patent rights can be found in the PATENTS file in the same directory.
6437 *
6438 * @providesModule accumulateInto
6439 *
6440 */
6441
6442 'use strict';
6443
6444 var _prodInvariant = __webpack_require__(94);
6445
6446 var invariant = __webpack_require__(95);
6447
6448 /**
6449 * Accumulates items that must not be null or undefined into the first one. This
6450 * is used to conserve memory by avoiding array allocations, and thus sacrifices
6451 * API cleanness. Since `current` can be null before being passed in and not
6452 * null after this function, make sure to assign it back to `current`:
6453 *
6454 * `a = accumulateInto(a, b);`
6455 *
6456 * This API should be sparingly used. Try `accumulate` for something cleaner.
6457 *
6458 * @return {*|array<*>} An accumulation of items.
6459 */
6460
6461 function accumulateInto(current, next) {
6462 !(next != null) ? (undefined) !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;
6463
6464 if (current == null) {
6465 return next;
6466 }
6467
6468 // Both are not empty. Warning: Never call x.concat(y) when you are not
6469 // certain that x is an Array (x could be a string with concat method).
6470 if (Array.isArray(current)) {
6471 if (Array.isArray(next)) {
6472 current.push.apply(current, next);
6473 return current;
6474 }
6475 current.push(next);
6476 return current;
6477 }
6478
6479 if (Array.isArray(next)) {
6480 // A bit too dangerous to mutate `next`.
6481 return [current].concat(next);
6482 }
6483
6484 return [current, next];
6485 }
6486
6487 module.exports = accumulateInto;
6488
6489/***/ },
6490/* 136 */
6491/***/ function(module, exports) {
6492
6493 /**
6494 * Copyright 2013-present, Facebook, Inc.
6495 * All rights reserved.
6496 *
6497 * This source code is licensed under the BSD-style license found in the
6498 * LICENSE file in the root directory of this source tree. An additional grant
6499 * of patent rights can be found in the PATENTS file in the same directory.
6500 *
6501 * @providesModule forEachAccumulated
6502 *
6503 */
6504
6505 'use strict';
6506
6507 /**
6508 * @param {array} arr an "accumulation" of items which is either an Array or
6509 * a single item. Useful when paired with the `accumulate` module. This is a
6510 * simple utility that allows us to reason about a collection of items, but
6511 * handling the case when there is exactly one item (and we do not need to
6512 * allocate an array).
6513 */
6514
6515 function forEachAccumulated(arr, cb, scope) {
6516 if (Array.isArray(arr)) {
6517 arr.forEach(cb, scope);
6518 } else if (arr) {
6519 cb.call(scope, arr);
6520 }
6521 }
6522
6523 module.exports = forEachAccumulated;
6524
6525/***/ },
6526/* 137 */
6527/***/ function(module, exports) {
6528
6529 /**
6530 * Copyright (c) 2013-present, Facebook, Inc.
6531 * All rights reserved.
6532 *
6533 * This source code is licensed under the BSD-style license found in the
6534 * LICENSE file in the root directory of this source tree. An additional grant
6535 * of patent rights can be found in the PATENTS file in the same directory.
6536 *
6537 */
6538
6539 'use strict';
6540
6541 var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
6542
6543 /**
6544 * Simple, lightweight module assisting with the detection and context of
6545 * Worker. Helps avoid circular dependencies and allows code to reason about
6546 * whether or not they are in a Worker, even if they never include the main
6547 * `ReactWorker` dependency.
6548 */
6549 var ExecutionEnvironment = {
6550
6551 canUseDOM: canUseDOM,
6552
6553 canUseWorkers: typeof Worker !== 'undefined',
6554
6555 canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),
6556
6557 canUseViewport: canUseDOM && !!window.screen,
6558
6559 isInWorker: !canUseDOM // For now, this is true - might change in the future.
6560
6561 };
6562
6563 module.exports = ExecutionEnvironment;
6564
6565/***/ },
6566/* 138 */
6567/***/ function(module, exports, __webpack_require__) {
6568
6569 /**
6570 * Copyright 2013-present, Facebook, Inc.
6571 * All rights reserved.
6572 *
6573 * This source code is licensed under the BSD-style license found in the
6574 * LICENSE file in the root directory of this source tree. An additional grant
6575 * of patent rights can be found in the PATENTS file in the same directory.
6576 *
6577 * @providesModule FallbackCompositionState
6578 */
6579
6580 'use strict';
6581
6582 var _assign = __webpack_require__(91);
6583
6584 var PooledClass = __webpack_require__(93);
6585
6586 var getTextContentAccessor = __webpack_require__(139);
6587
6588 /**
6589 * This helper class stores information about text content of a target node,
6590 * allowing comparison of content before and after a given event.
6591 *
6592 * Identify the node where selection currently begins, then observe
6593 * both its text content and its current position in the DOM. Since the
6594 * browser may natively replace the target node during composition, we can
6595 * use its position to find its replacement.
6596 *
6597 * @param {DOMEventTarget} root
6598 */
6599 function FallbackCompositionState(root) {
6600 this._root = root;
6601 this._startText = this.getText();
6602 this._fallbackText = null;
6603 }
6604
6605 _assign(FallbackCompositionState.prototype, {
6606 destructor: function () {
6607 this._root = null;
6608 this._startText = null;
6609 this._fallbackText = null;
6610 },
6611
6612 /**
6613 * Get current text of input.
6614 *
6615 * @return {string}
6616 */
6617 getText: function () {
6618 if ('value' in this._root) {
6619 return this._root.value;
6620 }
6621 return this._root[getTextContentAccessor()];
6622 },
6623
6624 /**
6625 * Determine the differing substring between the initially stored
6626 * text content and the current content.
6627 *
6628 * @return {string}
6629 */
6630 getData: function () {
6631 if (this._fallbackText) {
6632 return this._fallbackText;
6633 }
6634
6635 var start;
6636 var startValue = this._startText;
6637 var startLength = startValue.length;
6638 var end;
6639 var endValue = this.getText();
6640 var endLength = endValue.length;
6641
6642 for (start = 0; start < startLength; start++) {
6643 if (startValue[start] !== endValue[start]) {
6644 break;
6645 }
6646 }
6647
6648 var minEnd = startLength - start;
6649 for (end = 1; end <= minEnd; end++) {
6650 if (startValue[startLength - end] !== endValue[endLength - end]) {
6651 break;
6652 }
6653 }
6654
6655 var sliceTail = end > 1 ? 1 - end : undefined;
6656 this._fallbackText = endValue.slice(start, sliceTail);
6657 return this._fallbackText;
6658 }
6659 });
6660
6661 PooledClass.addPoolingTo(FallbackCompositionState);
6662
6663 module.exports = FallbackCompositionState;
6664
6665/***/ },
6666/* 139 */
6667/***/ function(module, exports, __webpack_require__) {
6668
6669 /**
6670 * Copyright 2013-present, Facebook, Inc.
6671 * All rights reserved.
6672 *
6673 * This source code is licensed under the BSD-style license found in the
6674 * LICENSE file in the root directory of this source tree. An additional grant
6675 * of patent rights can be found in the PATENTS file in the same directory.
6676 *
6677 * @providesModule getTextContentAccessor
6678 */
6679
6680 'use strict';
6681
6682 var ExecutionEnvironment = __webpack_require__(137);
6683
6684 var contentKey = null;
6685
6686 /**
6687 * Gets the key used to access text content on a DOM node.
6688 *
6689 * @return {?string} Key used to access text content.
6690 * @internal
6691 */
6692 function getTextContentAccessor() {
6693 if (!contentKey && ExecutionEnvironment.canUseDOM) {
6694 // Prefer textContent to innerText because many browsers support both but
6695 // SVG <text> elements don't support innerText even when <div> does.
6696 contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';
6697 }
6698 return contentKey;
6699 }
6700
6701 module.exports = getTextContentAccessor;
6702
6703/***/ },
6704/* 140 */
6705/***/ function(module, exports, __webpack_require__) {
6706
6707 /**
6708 * Copyright 2013-present, Facebook, Inc.
6709 * All rights reserved.
6710 *
6711 * This source code is licensed under the BSD-style license found in the
6712 * LICENSE file in the root directory of this source tree. An additional grant
6713 * of patent rights can be found in the PATENTS file in the same directory.
6714 *
6715 * @providesModule SyntheticCompositionEvent
6716 */
6717
6718 'use strict';
6719
6720 var SyntheticEvent = __webpack_require__(141);
6721
6722 /**
6723 * @interface Event
6724 * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents
6725 */
6726 var CompositionEventInterface = {
6727 data: null
6728 };
6729
6730 /**
6731 * @param {object} dispatchConfig Configuration used to dispatch this event.
6732 * @param {string} dispatchMarker Marker identifying the event target.
6733 * @param {object} nativeEvent Native browser event.
6734 * @extends {SyntheticUIEvent}
6735 */
6736 function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
6737 return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
6738 }
6739
6740 SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);
6741
6742 module.exports = SyntheticCompositionEvent;
6743
6744/***/ },
6745/* 141 */
6746/***/ function(module, exports, __webpack_require__) {
6747
6748 /**
6749 * Copyright 2013-present, Facebook, Inc.
6750 * All rights reserved.
6751 *
6752 * This source code is licensed under the BSD-style license found in the
6753 * LICENSE file in the root directory of this source tree. An additional grant
6754 * of patent rights can be found in the PATENTS file in the same directory.
6755 *
6756 * @providesModule SyntheticEvent
6757 */
6758
6759 'use strict';
6760
6761 var _assign = __webpack_require__(91);
6762
6763 var PooledClass = __webpack_require__(93);
6764
6765 var emptyFunction = __webpack_require__(99);
6766 var warning = __webpack_require__(98);
6767
6768 var didWarnForAddedNewProperty = false;
6769 var isProxySupported = typeof Proxy === 'function';
6770
6771 var shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];
6772
6773 /**
6774 * @interface Event
6775 * @see http://www.w3.org/TR/DOM-Level-3-Events/
6776 */
6777 var EventInterface = {
6778 type: null,
6779 target: null,
6780 // currentTarget is set when dispatching; no use in copying it here
6781 currentTarget: emptyFunction.thatReturnsNull,
6782 eventPhase: null,
6783 bubbles: null,
6784 cancelable: null,
6785 timeStamp: function (event) {
6786 return event.timeStamp || Date.now();
6787 },
6788 defaultPrevented: null,
6789 isTrusted: null
6790 };
6791
6792 /**
6793 * Synthetic events are dispatched by event plugins, typically in response to a
6794 * top-level event delegation handler.
6795 *
6796 * These systems should generally use pooling to reduce the frequency of garbage
6797 * collection. The system should check `isPersistent` to determine whether the
6798 * event should be released into the pool after being dispatched. Users that
6799 * need a persisted event should invoke `persist`.
6800 *
6801 * Synthetic events (and subclasses) implement the DOM Level 3 Events API by
6802 * normalizing browser quirks. Subclasses do not necessarily have to implement a
6803 * DOM interface; custom application-specific events can also subclass this.
6804 *
6805 * @param {object} dispatchConfig Configuration used to dispatch this event.
6806 * @param {*} targetInst Marker identifying the event target.
6807 * @param {object} nativeEvent Native browser event.
6808 * @param {DOMEventTarget} nativeEventTarget Target node.
6809 */
6810 function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {
6811 if ((undefined) !== 'production') {
6812 // these have a getter/setter for warnings
6813 delete this.nativeEvent;
6814 delete this.preventDefault;
6815 delete this.stopPropagation;
6816 }
6817
6818 this.dispatchConfig = dispatchConfig;
6819 this._targetInst = targetInst;
6820 this.nativeEvent = nativeEvent;
6821
6822 var Interface = this.constructor.Interface;
6823 for (var propName in Interface) {
6824 if (!Interface.hasOwnProperty(propName)) {
6825 continue;
6826 }
6827 if ((undefined) !== 'production') {
6828 delete this[propName]; // this has a getter/setter for warnings
6829 }
6830 var normalize = Interface[propName];
6831 if (normalize) {
6832 this[propName] = normalize(nativeEvent);
6833 } else {
6834 if (propName === 'target') {
6835 this.target = nativeEventTarget;
6836 } else {
6837 this[propName] = nativeEvent[propName];
6838 }
6839 }
6840 }
6841
6842 var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;
6843 if (defaultPrevented) {
6844 this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
6845 } else {
6846 this.isDefaultPrevented = emptyFunction.thatReturnsFalse;
6847 }
6848 this.isPropagationStopped = emptyFunction.thatReturnsFalse;
6849 return this;
6850 }
6851
6852 _assign(SyntheticEvent.prototype, {
6853
6854 preventDefault: function () {
6855 this.defaultPrevented = true;
6856 var event = this.nativeEvent;
6857 if (!event) {
6858 return;
6859 }
6860
6861 if (event.preventDefault) {
6862 event.preventDefault();
6863 } else if (typeof event.returnValue !== 'unknown') {
6864 // eslint-disable-line valid-typeof
6865 event.returnValue = false;
6866 }
6867 this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
6868 },
6869
6870 stopPropagation: function () {
6871 var event = this.nativeEvent;
6872 if (!event) {
6873 return;
6874 }
6875
6876 if (event.stopPropagation) {
6877 event.stopPropagation();
6878 } else if (typeof event.cancelBubble !== 'unknown') {
6879 // eslint-disable-line valid-typeof
6880 // The ChangeEventPlugin registers a "propertychange" event for
6881 // IE. This event does not support bubbling or cancelling, and
6882 // any references to cancelBubble throw "Member not found". A
6883 // typeof check of "unknown" circumvents this issue (and is also
6884 // IE specific).
6885 event.cancelBubble = true;
6886 }
6887
6888 this.isPropagationStopped = emptyFunction.thatReturnsTrue;
6889 },
6890
6891 /**
6892 * We release all dispatched `SyntheticEvent`s after each event loop, adding
6893 * them back into the pool. This allows a way to hold onto a reference that
6894 * won't be added back into the pool.
6895 */
6896 persist: function () {
6897 this.isPersistent = emptyFunction.thatReturnsTrue;
6898 },
6899
6900 /**
6901 * Checks if this event should be released back into the pool.
6902 *
6903 * @return {boolean} True if this should not be released, false otherwise.
6904 */
6905 isPersistent: emptyFunction.thatReturnsFalse,
6906
6907 /**
6908 * `PooledClass` looks for `destructor` on each instance it releases.
6909 */
6910 destructor: function () {
6911 var Interface = this.constructor.Interface;
6912 for (var propName in Interface) {
6913 if ((undefined) !== 'production') {
6914 Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));
6915 } else {
6916 this[propName] = null;
6917 }
6918 }
6919 for (var i = 0; i < shouldBeReleasedProperties.length; i++) {
6920 this[shouldBeReleasedProperties[i]] = null;
6921 }
6922 if ((undefined) !== 'production') {
6923 Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));
6924 Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));
6925 Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));
6926 }
6927 }
6928
6929 });
6930
6931 SyntheticEvent.Interface = EventInterface;
6932
6933 if ((undefined) !== 'production') {
6934 if (isProxySupported) {
6935 /*eslint-disable no-func-assign */
6936 SyntheticEvent = new Proxy(SyntheticEvent, {
6937 construct: function (target, args) {
6938 return this.apply(target, Object.create(target.prototype), args);
6939 },
6940 apply: function (constructor, that, args) {
6941 return new Proxy(constructor.apply(that, args), {
6942 set: function (target, prop, value) {
6943 if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {
6944 (undefined) !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\'re ' + 'seeing this, you\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;
6945 didWarnForAddedNewProperty = true;
6946 }
6947 target[prop] = value;
6948 return true;
6949 }
6950 });
6951 }
6952 });
6953 /*eslint-enable no-func-assign */
6954 }
6955 }
6956 /**
6957 * Helper to reduce boilerplate when creating subclasses.
6958 *
6959 * @param {function} Class
6960 * @param {?object} Interface
6961 */
6962 SyntheticEvent.augmentClass = function (Class, Interface) {
6963 var Super = this;
6964
6965 var E = function () {};
6966 E.prototype = Super.prototype;
6967 var prototype = new E();
6968
6969 _assign(prototype, Class.prototype);
6970 Class.prototype = prototype;
6971 Class.prototype.constructor = Class;
6972
6973 Class.Interface = _assign({}, Super.Interface, Interface);
6974 Class.augmentClass = Super.augmentClass;
6975
6976 PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);
6977 };
6978
6979 PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);
6980
6981 module.exports = SyntheticEvent;
6982
6983 /**
6984 * Helper to nullify syntheticEvent instance properties when destructing
6985 *
6986 * @param {object} SyntheticEvent
6987 * @param {String} propName
6988 * @return {object} defineProperty object
6989 */
6990 function getPooledWarningPropertyDefinition(propName, getVal) {
6991 var isFunction = typeof getVal === 'function';
6992 return {
6993 configurable: true,
6994 set: set,
6995 get: get
6996 };
6997
6998 function set(val) {
6999 var action = isFunction ? 'setting the method' : 'setting the property';
7000 warn(action, 'This is effectively a no-op');
7001 return val;
7002 }
7003
7004 function get() {
7005 var action = isFunction ? 'accessing the method' : 'accessing the property';
7006 var result = isFunction ? 'This is a no-op function' : 'This is set to null';
7007 warn(action, result);
7008 return getVal;
7009 }
7010
7011 function warn(action, result) {
7012 var warningCondition = false;
7013 (undefined) !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\'re seeing this, ' + 'you\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;
7014 }
7015 }
7016
7017/***/ },
7018/* 142 */
7019/***/ function(module, exports, __webpack_require__) {
7020
7021 /**
7022 * Copyright 2013-present, Facebook, Inc.
7023 * All rights reserved.
7024 *
7025 * This source code is licensed under the BSD-style license found in the
7026 * LICENSE file in the root directory of this source tree. An additional grant
7027 * of patent rights can be found in the PATENTS file in the same directory.
7028 *
7029 * @providesModule SyntheticInputEvent
7030 */
7031
7032 'use strict';
7033
7034 var SyntheticEvent = __webpack_require__(141);
7035
7036 /**
7037 * @interface Event
7038 * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105
7039 * /#events-inputevents
7040 */
7041 var InputEventInterface = {
7042 data: null
7043 };
7044
7045 /**
7046 * @param {object} dispatchConfig Configuration used to dispatch this event.
7047 * @param {string} dispatchMarker Marker identifying the event target.
7048 * @param {object} nativeEvent Native browser event.
7049 * @extends {SyntheticUIEvent}
7050 */
7051 function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
7052 return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
7053 }
7054
7055 SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);
7056
7057 module.exports = SyntheticInputEvent;
7058
7059/***/ },
7060/* 143 */
7061/***/ function(module, exports, __webpack_require__) {
7062
7063 /**
7064 * Copyright 2013-present, Facebook, Inc.
7065 * All rights reserved.
7066 *
7067 * This source code is licensed under the BSD-style license found in the
7068 * LICENSE file in the root directory of this source tree. An additional grant
7069 * of patent rights can be found in the PATENTS file in the same directory.
7070 *
7071 * @providesModule ChangeEventPlugin
7072 */
7073
7074 'use strict';
7075
7076 var EventConstants = __webpack_require__(129);
7077 var EventPluginHub = __webpack_require__(131);
7078 var EventPropagators = __webpack_require__(130);
7079 var ExecutionEnvironment = __webpack_require__(137);
7080 var ReactDOMComponentTree = __webpack_require__(124);
7081 var ReactUpdates = __webpack_require__(144);
7082 var SyntheticEvent = __webpack_require__(141);
7083
7084 var getEventTarget = __webpack_require__(158);
7085 var isEventSupported = __webpack_require__(159);
7086 var isTextInputElement = __webpack_require__(160);
7087 var keyOf = __webpack_require__(112);
7088
7089 var topLevelTypes = EventConstants.topLevelTypes;
7090
7091 var eventTypes = {
7092 change: {
7093 phasedRegistrationNames: {
7094 bubbled: keyOf({ onChange: null }),
7095 captured: keyOf({ onChangeCapture: null })
7096 },
7097 dependencies: [topLevelTypes.topBlur, topLevelTypes.topChange, topLevelTypes.topClick, topLevelTypes.topFocus, topLevelTypes.topInput, topLevelTypes.topKeyDown, topLevelTypes.topKeyUp, topLevelTypes.topSelectionChange]
7098 }
7099 };
7100
7101 /**
7102 * For IE shims
7103 */
7104 var activeElement = null;
7105 var activeElementInst = null;
7106 var activeElementValue = null;
7107 var activeElementValueProp = null;
7108
7109 /**
7110 * SECTION: handle `change` event
7111 */
7112 function shouldUseChangeEvent(elem) {
7113 var nodeName = elem.nodeName && elem.nodeName.toLowerCase();
7114 return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';
7115 }
7116
7117 var doesChangeEventBubble = false;
7118 if (ExecutionEnvironment.canUseDOM) {
7119 // See `handleChange` comment below
7120 doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);
7121 }
7122
7123 function manualDispatchChangeEvent(nativeEvent) {
7124 var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));
7125 EventPropagators.accumulateTwoPhaseDispatches(event);
7126
7127 // If change and propertychange bubbled, we'd just bind to it like all the
7128 // other events and have it go through ReactBrowserEventEmitter. Since it
7129 // doesn't, we manually listen for the events and so we have to enqueue and
7130 // process the abstract event manually.
7131 //
7132 // Batching is necessary here in order to ensure that all event handlers run
7133 // before the next rerender (including event handlers attached to ancestor
7134 // elements instead of directly on the input). Without this, controlled
7135 // components don't work properly in conjunction with event bubbling because
7136 // the component is rerendered and the value reverted before all the event
7137 // handlers can run. See https://github.com/facebook/react/issues/708.
7138 ReactUpdates.batchedUpdates(runEventInBatch, event);
7139 }
7140
7141 function runEventInBatch(event) {
7142 EventPluginHub.enqueueEvents(event);
7143 EventPluginHub.processEventQueue(false);
7144 }
7145
7146 function startWatchingForChangeEventIE8(target, targetInst) {
7147 activeElement = target;
7148 activeElementInst = targetInst;
7149 activeElement.attachEvent('onchange', manualDispatchChangeEvent);
7150 }
7151
7152 function stopWatchingForChangeEventIE8() {
7153 if (!activeElement) {
7154 return;
7155 }
7156 activeElement.detachEvent('onchange', manualDispatchChangeEvent);
7157 activeElement = null;
7158 activeElementInst = null;
7159 }
7160
7161 function getTargetInstForChangeEvent(topLevelType, targetInst) {
7162 if (topLevelType === topLevelTypes.topChange) {
7163 return targetInst;
7164 }
7165 }
7166 function handleEventsForChangeEventIE8(topLevelType, target, targetInst) {
7167 if (topLevelType === topLevelTypes.topFocus) {
7168 // stopWatching() should be a noop here but we call it just in case we
7169 // missed a blur event somehow.
7170 stopWatchingForChangeEventIE8();
7171 startWatchingForChangeEventIE8(target, targetInst);
7172 } else if (topLevelType === topLevelTypes.topBlur) {
7173 stopWatchingForChangeEventIE8();
7174 }
7175 }
7176
7177 /**
7178 * SECTION: handle `input` event
7179 */
7180 var isInputEventSupported = false;
7181 if (ExecutionEnvironment.canUseDOM) {
7182 // IE9 claims to support the input event but fails to trigger it when
7183 // deleting text, so we ignore its input events.
7184 // IE10+ fire input events to often, such when a placeholder
7185 // changes or when an input with a placeholder is focused.
7186 isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);
7187 }
7188
7189 /**
7190 * (For IE <=11) Replacement getter/setter for the `value` property that gets
7191 * set on the active element.
7192 */
7193 var newValueProp = {
7194 get: function () {
7195 return activeElementValueProp.get.call(this);
7196 },
7197 set: function (val) {
7198 // Cast to a string so we can do equality checks.
7199 activeElementValue = '' + val;
7200 activeElementValueProp.set.call(this, val);
7201 }
7202 };
7203
7204 /**
7205 * (For IE <=11) Starts tracking propertychange events on the passed-in element
7206 * and override the value property so that we can distinguish user events from
7207 * value changes in JS.
7208 */
7209 function startWatchingForValueChange(target, targetInst) {
7210 activeElement = target;
7211 activeElementInst = targetInst;
7212 activeElementValue = target.value;
7213 activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');
7214
7215 // Not guarded in a canDefineProperty check: IE8 supports defineProperty only
7216 // on DOM elements
7217 Object.defineProperty(activeElement, 'value', newValueProp);
7218 if (activeElement.attachEvent) {
7219 activeElement.attachEvent('onpropertychange', handlePropertyChange);
7220 } else {
7221 activeElement.addEventListener('propertychange', handlePropertyChange, false);
7222 }
7223 }
7224
7225 /**
7226 * (For IE <=11) Removes the event listeners from the currently-tracked element,
7227 * if any exists.
7228 */
7229 function stopWatchingForValueChange() {
7230 if (!activeElement) {
7231 return;
7232 }
7233
7234 // delete restores the original property definition
7235 delete activeElement.value;
7236
7237 if (activeElement.detachEvent) {
7238 activeElement.detachEvent('onpropertychange', handlePropertyChange);
7239 } else {
7240 activeElement.removeEventListener('propertychange', handlePropertyChange, false);
7241 }
7242
7243 activeElement = null;
7244 activeElementInst = null;
7245 activeElementValue = null;
7246 activeElementValueProp = null;
7247 }
7248
7249 /**
7250 * (For IE <=11) Handles a propertychange event, sending a `change` event if
7251 * the value of the active element has changed.
7252 */
7253 function handlePropertyChange(nativeEvent) {
7254 if (nativeEvent.propertyName !== 'value') {
7255 return;
7256 }
7257 var value = nativeEvent.srcElement.value;
7258 if (value === activeElementValue) {
7259 return;
7260 }
7261 activeElementValue = value;
7262
7263 manualDispatchChangeEvent(nativeEvent);
7264 }
7265
7266 /**
7267 * If a `change` event should be fired, returns the target's ID.
7268 */
7269 function getTargetInstForInputEvent(topLevelType, targetInst) {
7270 if (topLevelType === topLevelTypes.topInput) {
7271 // In modern browsers (i.e., not IE8 or IE9), the input event is exactly
7272 // what we want so fall through here and trigger an abstract event
7273 return targetInst;
7274 }
7275 }
7276
7277 function handleEventsForInputEventIE(topLevelType, target, targetInst) {
7278 if (topLevelType === topLevelTypes.topFocus) {
7279 // In IE8, we can capture almost all .value changes by adding a
7280 // propertychange handler and looking for events with propertyName
7281 // equal to 'value'
7282 // In IE9-11, propertychange fires for most input events but is buggy and
7283 // doesn't fire when text is deleted, but conveniently, selectionchange
7284 // appears to fire in all of the remaining cases so we catch those and
7285 // forward the event if the value has changed
7286 // In either case, we don't want to call the event handler if the value
7287 // is changed from JS so we redefine a setter for `.value` that updates
7288 // our activeElementValue variable, allowing us to ignore those changes
7289 //
7290 // stopWatching() should be a noop here but we call it just in case we
7291 // missed a blur event somehow.
7292 stopWatchingForValueChange();
7293 startWatchingForValueChange(target, targetInst);
7294 } else if (topLevelType === topLevelTypes.topBlur) {
7295 stopWatchingForValueChange();
7296 }
7297 }
7298
7299 // For IE8 and IE9.
7300 function getTargetInstForInputEventIE(topLevelType, targetInst) {
7301 if (topLevelType === topLevelTypes.topSelectionChange || topLevelType === topLevelTypes.topKeyUp || topLevelType === topLevelTypes.topKeyDown) {
7302 // On the selectionchange event, the target is just document which isn't
7303 // helpful for us so just check activeElement instead.
7304 //
7305 // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
7306 // propertychange on the first input event after setting `value` from a
7307 // script and fires only keydown, keypress, keyup. Catching keyup usually
7308 // gets it and catching keydown lets us fire an event for the first
7309 // keystroke if user does a key repeat (it'll be a little delayed: right
7310 // before the second keystroke). Other input methods (e.g., paste) seem to
7311 // fire selectionchange normally.
7312 if (activeElement && activeElement.value !== activeElementValue) {
7313 activeElementValue = activeElement.value;
7314 return activeElementInst;
7315 }
7316 }
7317 }
7318
7319 /**
7320 * SECTION: handle `click` event
7321 */
7322 function shouldUseClickEvent(elem) {
7323 // Use the `click` event to detect changes to checkbox and radio inputs.
7324 // This approach works across all browsers, whereas `change` does not fire
7325 // until `blur` in IE8.
7326 return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');
7327 }
7328
7329 function getTargetInstForClickEvent(topLevelType, targetInst) {
7330 if (topLevelType === topLevelTypes.topClick) {
7331 return targetInst;
7332 }
7333 }
7334
7335 /**
7336 * This plugin creates an `onChange` event that normalizes change events
7337 * across form elements. This event fires at a time when it's possible to
7338 * change the element's value without seeing a flicker.
7339 *
7340 * Supported elements are:
7341 * - input (see `isTextInputElement`)
7342 * - textarea
7343 * - select
7344 */
7345 var ChangeEventPlugin = {
7346
7347 eventTypes: eventTypes,
7348
7349 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
7350 var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;
7351
7352 var getTargetInstFunc, handleEventFunc;
7353 if (shouldUseChangeEvent(targetNode)) {
7354 if (doesChangeEventBubble) {
7355 getTargetInstFunc = getTargetInstForChangeEvent;
7356 } else {
7357 handleEventFunc = handleEventsForChangeEventIE8;
7358 }
7359 } else if (isTextInputElement(targetNode)) {
7360 if (isInputEventSupported) {
7361 getTargetInstFunc = getTargetInstForInputEvent;
7362 } else {
7363 getTargetInstFunc = getTargetInstForInputEventIE;
7364 handleEventFunc = handleEventsForInputEventIE;
7365 }
7366 } else if (shouldUseClickEvent(targetNode)) {
7367 getTargetInstFunc = getTargetInstForClickEvent;
7368 }
7369
7370 if (getTargetInstFunc) {
7371 var inst = getTargetInstFunc(topLevelType, targetInst);
7372 if (inst) {
7373 var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);
7374 event.type = 'change';
7375 EventPropagators.accumulateTwoPhaseDispatches(event);
7376 return event;
7377 }
7378 }
7379
7380 if (handleEventFunc) {
7381 handleEventFunc(topLevelType, targetNode, targetInst);
7382 }
7383 }
7384
7385 };
7386
7387 module.exports = ChangeEventPlugin;
7388
7389/***/ },
7390/* 144 */
7391/***/ function(module, exports, __webpack_require__) {
7392
7393 /**
7394 * Copyright 2013-present, Facebook, Inc.
7395 * All rights reserved.
7396 *
7397 * This source code is licensed under the BSD-style license found in the
7398 * LICENSE file in the root directory of this source tree. An additional grant
7399 * of patent rights can be found in the PATENTS file in the same directory.
7400 *
7401 * @providesModule ReactUpdates
7402 */
7403
7404 'use strict';
7405
7406 var _prodInvariant = __webpack_require__(94),
7407 _assign = __webpack_require__(91);
7408
7409 var CallbackQueue = __webpack_require__(145);
7410 var PooledClass = __webpack_require__(93);
7411 var ReactFeatureFlags = __webpack_require__(146);
7412 var ReactReconciler = __webpack_require__(147);
7413 var Transaction = __webpack_require__(157);
7414
7415 var invariant = __webpack_require__(95);
7416
7417 var dirtyComponents = [];
7418 var updateBatchNumber = 0;
7419 var asapCallbackQueue = CallbackQueue.getPooled();
7420 var asapEnqueued = false;
7421
7422 var batchingStrategy = null;
7423
7424 function ensureInjected() {
7425 !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? (undefined) !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;
7426 }
7427
7428 var NESTED_UPDATES = {
7429 initialize: function () {
7430 this.dirtyComponentsLength = dirtyComponents.length;
7431 },
7432 close: function () {
7433 if (this.dirtyComponentsLength !== dirtyComponents.length) {
7434 // Additional updates were enqueued by componentDidUpdate handlers or
7435 // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run
7436 // these new updates so that if A's componentDidUpdate calls setState on
7437 // B, B will update before the callback A's updater provided when calling
7438 // setState.
7439 dirtyComponents.splice(0, this.dirtyComponentsLength);
7440 flushBatchedUpdates();
7441 } else {
7442 dirtyComponents.length = 0;
7443 }
7444 }
7445 };
7446
7447 var UPDATE_QUEUEING = {
7448 initialize: function () {
7449 this.callbackQueue.reset();
7450 },
7451 close: function () {
7452 this.callbackQueue.notifyAll();
7453 }
7454 };
7455
7456 var TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];
7457
7458 function ReactUpdatesFlushTransaction() {
7459 this.reinitializeTransaction();
7460 this.dirtyComponentsLength = null;
7461 this.callbackQueue = CallbackQueue.getPooled();
7462 this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(
7463 /* useCreateElement */true);
7464 }
7465
7466 _assign(ReactUpdatesFlushTransaction.prototype, Transaction.Mixin, {
7467 getTransactionWrappers: function () {
7468 return TRANSACTION_WRAPPERS;
7469 },
7470
7471 destructor: function () {
7472 this.dirtyComponentsLength = null;
7473 CallbackQueue.release(this.callbackQueue);
7474 this.callbackQueue = null;
7475 ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);
7476 this.reconcileTransaction = null;
7477 },
7478
7479 perform: function (method, scope, a) {
7480 // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`
7481 // with this transaction's wrappers around it.
7482 return Transaction.Mixin.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);
7483 }
7484 });
7485
7486 PooledClass.addPoolingTo(ReactUpdatesFlushTransaction);
7487
7488 function batchedUpdates(callback, a, b, c, d, e) {
7489 ensureInjected();
7490 batchingStrategy.batchedUpdates(callback, a, b, c, d, e);
7491 }
7492
7493 /**
7494 * Array comparator for ReactComponents by mount ordering.
7495 *
7496 * @param {ReactComponent} c1 first component you're comparing
7497 * @param {ReactComponent} c2 second component you're comparing
7498 * @return {number} Return value usable by Array.prototype.sort().
7499 */
7500 function mountOrderComparator(c1, c2) {
7501 return c1._mountOrder - c2._mountOrder;
7502 }
7503
7504 function runBatchedUpdates(transaction) {
7505 var len = transaction.dirtyComponentsLength;
7506 !(len === dirtyComponents.length) ? (undefined) !== 'production' ? invariant(false, 'Expected flush transaction\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;
7507
7508 // Since reconciling a component higher in the owner hierarchy usually (not
7509 // always -- see shouldComponentUpdate()) will reconcile children, reconcile
7510 // them before their children by sorting the array.
7511 dirtyComponents.sort(mountOrderComparator);
7512
7513 // Any updates enqueued while reconciling must be performed after this entire
7514 // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and
7515 // C, B could update twice in a single batch if C's render enqueues an update
7516 // to B (since B would have already updated, we should skip it, and the only
7517 // way we can know to do so is by checking the batch counter).
7518 updateBatchNumber++;
7519
7520 for (var i = 0; i < len; i++) {
7521 // If a component is unmounted before pending changes apply, it will still
7522 // be here, but we assume that it has cleared its _pendingCallbacks and
7523 // that performUpdateIfNecessary is a noop.
7524 var component = dirtyComponents[i];
7525
7526 // If performUpdateIfNecessary happens to enqueue any new updates, we
7527 // shouldn't execute the callbacks until the next render happens, so
7528 // stash the callbacks first
7529 var callbacks = component._pendingCallbacks;
7530 component._pendingCallbacks = null;
7531
7532 var markerName;
7533 if (ReactFeatureFlags.logTopLevelRenders) {
7534 var namedComponent = component;
7535 // Duck type TopLevelWrapper. This is probably always true.
7536 if (component._currentElement.props === component._renderedComponent._currentElement) {
7537 namedComponent = component._renderedComponent;
7538 }
7539 markerName = 'React update: ' + namedComponent.getName();
7540 console.time(markerName);
7541 }
7542
7543 ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);
7544
7545 if (markerName) {
7546 console.timeEnd(markerName);
7547 }
7548
7549 if (callbacks) {
7550 for (var j = 0; j < callbacks.length; j++) {
7551 transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());
7552 }
7553 }
7554 }
7555 }
7556
7557 var flushBatchedUpdates = function () {
7558 // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents
7559 // array and perform any updates enqueued by mount-ready handlers (i.e.,
7560 // componentDidUpdate) but we need to check here too in order to catch
7561 // updates enqueued by setState callbacks and asap calls.
7562 while (dirtyComponents.length || asapEnqueued) {
7563 if (dirtyComponents.length) {
7564 var transaction = ReactUpdatesFlushTransaction.getPooled();
7565 transaction.perform(runBatchedUpdates, null, transaction);
7566 ReactUpdatesFlushTransaction.release(transaction);
7567 }
7568
7569 if (asapEnqueued) {
7570 asapEnqueued = false;
7571 var queue = asapCallbackQueue;
7572 asapCallbackQueue = CallbackQueue.getPooled();
7573 queue.notifyAll();
7574 CallbackQueue.release(queue);
7575 }
7576 }
7577 };
7578
7579 /**
7580 * Mark a component as needing a rerender, adding an optional callback to a
7581 * list of functions which will be executed once the rerender occurs.
7582 */
7583 function enqueueUpdate(component) {
7584 ensureInjected();
7585
7586 // Various parts of our code (such as ReactCompositeComponent's
7587 // _renderValidatedComponent) assume that calls to render aren't nested;
7588 // verify that that's the case. (This is called by each top-level update
7589 // function, like setState, forceUpdate, etc.; creation and
7590 // destruction of top-level components is guarded in ReactMount.)
7591
7592 if (!batchingStrategy.isBatchingUpdates) {
7593 batchingStrategy.batchedUpdates(enqueueUpdate, component);
7594 return;
7595 }
7596
7597 dirtyComponents.push(component);
7598 if (component._updateBatchNumber == null) {
7599 component._updateBatchNumber = updateBatchNumber + 1;
7600 }
7601 }
7602
7603 /**
7604 * Enqueue a callback to be run at the end of the current batching cycle. Throws
7605 * if no updates are currently being performed.
7606 */
7607 function asap(callback, context) {
7608 !batchingStrategy.isBatchingUpdates ? (undefined) !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;
7609 asapCallbackQueue.enqueue(callback, context);
7610 asapEnqueued = true;
7611 }
7612
7613 var ReactUpdatesInjection = {
7614 injectReconcileTransaction: function (ReconcileTransaction) {
7615 !ReconcileTransaction ? (undefined) !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;
7616 ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;
7617 },
7618
7619 injectBatchingStrategy: function (_batchingStrategy) {
7620 !_batchingStrategy ? (undefined) !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;
7621 !(typeof _batchingStrategy.batchedUpdates === 'function') ? (undefined) !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;
7622 !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? (undefined) !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;
7623 batchingStrategy = _batchingStrategy;
7624 }
7625 };
7626
7627 var ReactUpdates = {
7628 /**
7629 * React references `ReactReconcileTransaction` using this property in order
7630 * to allow dependency injection.
7631 *
7632 * @internal
7633 */
7634 ReactReconcileTransaction: null,
7635
7636 batchedUpdates: batchedUpdates,
7637 enqueueUpdate: enqueueUpdate,
7638 flushBatchedUpdates: flushBatchedUpdates,
7639 injection: ReactUpdatesInjection,
7640 asap: asap
7641 };
7642
7643 module.exports = ReactUpdates;
7644
7645/***/ },
7646/* 145 */
7647/***/ function(module, exports, __webpack_require__) {
7648
7649 /**
7650 * Copyright 2013-present, Facebook, Inc.
7651 * All rights reserved.
7652 *
7653 * This source code is licensed under the BSD-style license found in the
7654 * LICENSE file in the root directory of this source tree. An additional grant
7655 * of patent rights can be found in the PATENTS file in the same directory.
7656 *
7657 * @providesModule CallbackQueue
7658 */
7659
7660 'use strict';
7661
7662 var _prodInvariant = __webpack_require__(94),
7663 _assign = __webpack_require__(91);
7664
7665 var PooledClass = __webpack_require__(93);
7666
7667 var invariant = __webpack_require__(95);
7668
7669 /**
7670 * A specialized pseudo-event module to help keep track of components waiting to
7671 * be notified when their DOM representations are available for use.
7672 *
7673 * This implements `PooledClass`, so you should never need to instantiate this.
7674 * Instead, use `CallbackQueue.getPooled()`.
7675 *
7676 * @class ReactMountReady
7677 * @implements PooledClass
7678 * @internal
7679 */
7680 function CallbackQueue() {
7681 this._callbacks = null;
7682 this._contexts = null;
7683 }
7684
7685 _assign(CallbackQueue.prototype, {
7686
7687 /**
7688 * Enqueues a callback to be invoked when `notifyAll` is invoked.
7689 *
7690 * @param {function} callback Invoked when `notifyAll` is invoked.
7691 * @param {?object} context Context to call `callback` with.
7692 * @internal
7693 */
7694 enqueue: function (callback, context) {
7695 this._callbacks = this._callbacks || [];
7696 this._contexts = this._contexts || [];
7697 this._callbacks.push(callback);
7698 this._contexts.push(context);
7699 },
7700
7701 /**
7702 * Invokes all enqueued callbacks and clears the queue. This is invoked after
7703 * the DOM representation of a component has been created or updated.
7704 *
7705 * @internal
7706 */
7707 notifyAll: function () {
7708 var callbacks = this._callbacks;
7709 var contexts = this._contexts;
7710 if (callbacks) {
7711 !(callbacks.length === contexts.length) ? (undefined) !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;
7712 this._callbacks = null;
7713 this._contexts = null;
7714 for (var i = 0; i < callbacks.length; i++) {
7715 callbacks[i].call(contexts[i]);
7716 }
7717 callbacks.length = 0;
7718 contexts.length = 0;
7719 }
7720 },
7721
7722 checkpoint: function () {
7723 return this._callbacks ? this._callbacks.length : 0;
7724 },
7725
7726 rollback: function (len) {
7727 if (this._callbacks) {
7728 this._callbacks.length = len;
7729 this._contexts.length = len;
7730 }
7731 },
7732
7733 /**
7734 * Resets the internal queue.
7735 *
7736 * @internal
7737 */
7738 reset: function () {
7739 this._callbacks = null;
7740 this._contexts = null;
7741 },
7742
7743 /**
7744 * `PooledClass` looks for this.
7745 */
7746 destructor: function () {
7747 this.reset();
7748 }
7749
7750 });
7751
7752 PooledClass.addPoolingTo(CallbackQueue);
7753
7754 module.exports = CallbackQueue;
7755
7756/***/ },
7757/* 146 */
7758/***/ function(module, exports) {
7759
7760 /**
7761 * Copyright 2013-present, Facebook, Inc.
7762 * All rights reserved.
7763 *
7764 * This source code is licensed under the BSD-style license found in the
7765 * LICENSE file in the root directory of this source tree. An additional grant
7766 * of patent rights can be found in the PATENTS file in the same directory.
7767 *
7768 * @providesModule ReactFeatureFlags
7769 *
7770 */
7771
7772 'use strict';
7773
7774 var ReactFeatureFlags = {
7775 // When true, call console.time() before and .timeEnd() after each top-level
7776 // render (both initial renders and updates). Useful when looking at prod-mode
7777 // timeline profiles in Chrome, for example.
7778 logTopLevelRenders: false
7779 };
7780
7781 module.exports = ReactFeatureFlags;
7782
7783/***/ },
7784/* 147 */
7785/***/ function(module, exports, __webpack_require__) {
7786
7787 /**
7788 * Copyright 2013-present, Facebook, Inc.
7789 * All rights reserved.
7790 *
7791 * This source code is licensed under the BSD-style license found in the
7792 * LICENSE file in the root directory of this source tree. An additional grant
7793 * of patent rights can be found in the PATENTS file in the same directory.
7794 *
7795 * @providesModule ReactReconciler
7796 */
7797
7798 'use strict';
7799
7800 var ReactRef = __webpack_require__(148);
7801 var ReactInstrumentation = __webpack_require__(150);
7802
7803 var warning = __webpack_require__(98);
7804
7805 /**
7806 * Helper to call ReactRef.attachRefs with this composite component, split out
7807 * to avoid allocations in the transaction mount-ready queue.
7808 */
7809 function attachRefs() {
7810 ReactRef.attachRefs(this, this._currentElement);
7811 }
7812
7813 var ReactReconciler = {
7814
7815 /**
7816 * Initializes the component, renders markup, and registers event listeners.
7817 *
7818 * @param {ReactComponent} internalInstance
7819 * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
7820 * @param {?object} the containing host component instance
7821 * @param {?object} info about the host container
7822 * @return {?string} Rendered markup to be inserted into the DOM.
7823 * @final
7824 * @internal
7825 */
7826 mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots
7827 ) {
7828 if ((undefined) !== 'production') {
7829 if (internalInstance._debugID !== 0) {
7830 ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);
7831 }
7832 }
7833 var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);
7834 if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {
7835 transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
7836 }
7837 if ((undefined) !== 'production') {
7838 if (internalInstance._debugID !== 0) {
7839 ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);
7840 }
7841 }
7842 return markup;
7843 },
7844
7845 /**
7846 * Returns a value that can be passed to
7847 * ReactComponentEnvironment.replaceNodeWithMarkup.
7848 */
7849 getHostNode: function (internalInstance) {
7850 return internalInstance.getHostNode();
7851 },
7852
7853 /**
7854 * Releases any resources allocated by `mountComponent`.
7855 *
7856 * @final
7857 * @internal
7858 */
7859 unmountComponent: function (internalInstance, safely) {
7860 if ((undefined) !== 'production') {
7861 if (internalInstance._debugID !== 0) {
7862 ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);
7863 }
7864 }
7865 ReactRef.detachRefs(internalInstance, internalInstance._currentElement);
7866 internalInstance.unmountComponent(safely);
7867 if ((undefined) !== 'production') {
7868 if (internalInstance._debugID !== 0) {
7869 ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);
7870 }
7871 }
7872 },
7873
7874 /**
7875 * Update a component using a new element.
7876 *
7877 * @param {ReactComponent} internalInstance
7878 * @param {ReactElement} nextElement
7879 * @param {ReactReconcileTransaction} transaction
7880 * @param {object} context
7881 * @internal
7882 */
7883 receiveComponent: function (internalInstance, nextElement, transaction, context) {
7884 var prevElement = internalInstance._currentElement;
7885
7886 if (nextElement === prevElement && context === internalInstance._context) {
7887 // Since elements are immutable after the owner is rendered,
7888 // we can do a cheap identity compare here to determine if this is a
7889 // superfluous reconcile. It's possible for state to be mutable but such
7890 // change should trigger an update of the owner which would recreate
7891 // the element. We explicitly check for the existence of an owner since
7892 // it's possible for an element created outside a composite to be
7893 // deeply mutated and reused.
7894
7895 // TODO: Bailing out early is just a perf optimization right?
7896 // TODO: Removing the return statement should affect correctness?
7897 return;
7898 }
7899
7900 if ((undefined) !== 'production') {
7901 if (internalInstance._debugID !== 0) {
7902 ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);
7903 }
7904 }
7905
7906 var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);
7907
7908 if (refsChanged) {
7909 ReactRef.detachRefs(internalInstance, prevElement);
7910 }
7911
7912 internalInstance.receiveComponent(nextElement, transaction, context);
7913
7914 if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {
7915 transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
7916 }
7917
7918 if ((undefined) !== 'production') {
7919 if (internalInstance._debugID !== 0) {
7920 ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
7921 }
7922 }
7923 },
7924
7925 /**
7926 * Flush any dirty changes in a component.
7927 *
7928 * @param {ReactComponent} internalInstance
7929 * @param {ReactReconcileTransaction} transaction
7930 * @internal
7931 */
7932 performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {
7933 if (internalInstance._updateBatchNumber !== updateBatchNumber) {
7934 // The component's enqueued batch number should always be the current
7935 // batch or the following one.
7936 (undefined) !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;
7937 return;
7938 }
7939 if ((undefined) !== 'production') {
7940 if (internalInstance._debugID !== 0) {
7941 ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);
7942 }
7943 }
7944 internalInstance.performUpdateIfNecessary(transaction);
7945 if ((undefined) !== 'production') {
7946 if (internalInstance._debugID !== 0) {
7947 ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
7948 }
7949 }
7950 }
7951
7952 };
7953
7954 module.exports = ReactReconciler;
7955
7956/***/ },
7957/* 148 */
7958/***/ function(module, exports, __webpack_require__) {
7959
7960 /**
7961 * Copyright 2013-present, Facebook, Inc.
7962 * All rights reserved.
7963 *
7964 * This source code is licensed under the BSD-style license found in the
7965 * LICENSE file in the root directory of this source tree. An additional grant
7966 * of patent rights can be found in the PATENTS file in the same directory.
7967 *
7968 * @providesModule ReactRef
7969 */
7970
7971 'use strict';
7972
7973 var ReactOwner = __webpack_require__(149);
7974
7975 var ReactRef = {};
7976
7977 function attachRef(ref, component, owner) {
7978 if (typeof ref === 'function') {
7979 ref(component.getPublicInstance());
7980 } else {
7981 // Legacy ref
7982 ReactOwner.addComponentAsRefTo(component, ref, owner);
7983 }
7984 }
7985
7986 function detachRef(ref, component, owner) {
7987 if (typeof ref === 'function') {
7988 ref(null);
7989 } else {
7990 // Legacy ref
7991 ReactOwner.removeComponentAsRefFrom(component, ref, owner);
7992 }
7993 }
7994
7995 ReactRef.attachRefs = function (instance, element) {
7996 if (element === null || element === false) {
7997 return;
7998 }
7999 var ref = element.ref;
8000 if (ref != null) {
8001 attachRef(ref, instance, element._owner);
8002 }
8003 };
8004
8005 ReactRef.shouldUpdateRefs = function (prevElement, nextElement) {
8006 // If either the owner or a `ref` has changed, make sure the newest owner
8007 // has stored a reference to `this`, and the previous owner (if different)
8008 // has forgotten the reference to `this`. We use the element instead
8009 // of the public this.props because the post processing cannot determine
8010 // a ref. The ref conceptually lives on the element.
8011
8012 // TODO: Should this even be possible? The owner cannot change because
8013 // it's forbidden by shouldUpdateReactComponent. The ref can change
8014 // if you swap the keys of but not the refs. Reconsider where this check
8015 // is made. It probably belongs where the key checking and
8016 // instantiateReactComponent is done.
8017
8018 var prevEmpty = prevElement === null || prevElement === false;
8019 var nextEmpty = nextElement === null || nextElement === false;
8020
8021 return (
8022 // This has a few false positives w/r/t empty components.
8023 prevEmpty || nextEmpty || nextElement.ref !== prevElement.ref ||
8024 // If owner changes but we have an unchanged function ref, don't update refs
8025 typeof nextElement.ref === 'string' && nextElement._owner !== prevElement._owner
8026 );
8027 };
8028
8029 ReactRef.detachRefs = function (instance, element) {
8030 if (element === null || element === false) {
8031 return;
8032 }
8033 var ref = element.ref;
8034 if (ref != null) {
8035 detachRef(ref, instance, element._owner);
8036 }
8037 };
8038
8039 module.exports = ReactRef;
8040
8041/***/ },
8042/* 149 */
8043/***/ function(module, exports, __webpack_require__) {
8044
8045 /**
8046 * Copyright 2013-present, Facebook, Inc.
8047 * All rights reserved.
8048 *
8049 * This source code is licensed under the BSD-style license found in the
8050 * LICENSE file in the root directory of this source tree. An additional grant
8051 * of patent rights can be found in the PATENTS file in the same directory.
8052 *
8053 * @providesModule ReactOwner
8054 */
8055
8056 'use strict';
8057
8058 var _prodInvariant = __webpack_require__(94);
8059
8060 var invariant = __webpack_require__(95);
8061
8062 /**
8063 * ReactOwners are capable of storing references to owned components.
8064 *
8065 * All components are capable of //being// referenced by owner components, but
8066 * only ReactOwner components are capable of //referencing// owned components.
8067 * The named reference is known as a "ref".
8068 *
8069 * Refs are available when mounted and updated during reconciliation.
8070 *
8071 * var MyComponent = React.createClass({
8072 * render: function() {
8073 * return (
8074 * <div onClick={this.handleClick}>
8075 * <CustomComponent ref="custom" />
8076 * </div>
8077 * );
8078 * },
8079 * handleClick: function() {
8080 * this.refs.custom.handleClick();
8081 * },
8082 * componentDidMount: function() {
8083 * this.refs.custom.initialize();
8084 * }
8085 * });
8086 *
8087 * Refs should rarely be used. When refs are used, they should only be done to
8088 * control data that is not handled by React's data flow.
8089 *
8090 * @class ReactOwner
8091 */
8092 var ReactOwner = {
8093
8094 /**
8095 * @param {?object} object
8096 * @return {boolean} True if `object` is a valid owner.
8097 * @final
8098 */
8099 isValidOwner: function (object) {
8100 return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');
8101 },
8102
8103 /**
8104 * Adds a component by ref to an owner component.
8105 *
8106 * @param {ReactComponent} component Component to reference.
8107 * @param {string} ref Name by which to refer to the component.
8108 * @param {ReactOwner} owner Component on which to record the ref.
8109 * @final
8110 * @internal
8111 */
8112 addComponentAsRefTo: function (component, ref, owner) {
8113 !ReactOwner.isValidOwner(owner) ? (undefined) !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;
8114 owner.attachRef(ref, component);
8115 },
8116
8117 /**
8118 * Removes a component by ref from an owner component.
8119 *
8120 * @param {ReactComponent} component Component to dereference.
8121 * @param {string} ref Name of the ref to remove.
8122 * @param {ReactOwner} owner Component on which the ref is recorded.
8123 * @final
8124 * @internal
8125 */
8126 removeComponentAsRefFrom: function (component, ref, owner) {
8127 !ReactOwner.isValidOwner(owner) ? (undefined) !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;
8128 var ownerPublicInstance = owner.getPublicInstance();
8129 // Check that `component`'s owner is still alive and that `component` is still the current ref
8130 // because we do not want to detach the ref if another component stole it.
8131 if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {
8132 owner.detachRef(ref);
8133 }
8134 }
8135
8136 };
8137
8138 module.exports = ReactOwner;
8139
8140/***/ },
8141/* 150 */
8142/***/ function(module, exports, __webpack_require__) {
8143
8144 /**
8145 * Copyright 2016-present, Facebook, Inc.
8146 * All rights reserved.
8147 *
8148 * This source code is licensed under the BSD-style license found in the
8149 * LICENSE file in the root directory of this source tree. An additional grant
8150 * of patent rights can be found in the PATENTS file in the same directory.
8151 *
8152 * @providesModule ReactInstrumentation
8153 */
8154
8155 'use strict';
8156
8157 var debugTool = null;
8158
8159 if ((undefined) !== 'production') {
8160 var ReactDebugTool = __webpack_require__(151);
8161 debugTool = ReactDebugTool;
8162 }
8163
8164 module.exports = { debugTool: debugTool };
8165
8166/***/ },
8167/* 151 */
8168/***/ function(module, exports, __webpack_require__) {
8169
8170 /**
8171 * Copyright 2016-present, Facebook, Inc.
8172 * All rights reserved.
8173 *
8174 * This source code is licensed under the BSD-style license found in the
8175 * LICENSE file in the root directory of this source tree. An additional grant
8176 * of patent rights can be found in the PATENTS file in the same directory.
8177 *
8178 * @providesModule ReactDebugTool
8179 */
8180
8181 'use strict';
8182
8183 var ReactInvalidSetStateWarningHook = __webpack_require__(152);
8184 var ReactHostOperationHistoryHook = __webpack_require__(153);
8185 var ReactComponentTreeHook = __webpack_require__(115);
8186 var ReactChildrenMutationWarningHook = __webpack_require__(154);
8187 var ExecutionEnvironment = __webpack_require__(137);
8188
8189 var performanceNow = __webpack_require__(155);
8190 var warning = __webpack_require__(98);
8191
8192 var hooks = [];
8193 var didHookThrowForEvent = {};
8194
8195 function callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) {
8196 try {
8197 fn.call(context, arg1, arg2, arg3, arg4, arg5);
8198 } catch (e) {
8199 (undefined) !== 'production' ? warning(didHookThrowForEvent[event], 'Exception thrown by hook while handling %s: %s', event, e + '\n' + e.stack) : void 0;
8200 didHookThrowForEvent[event] = true;
8201 }
8202 }
8203
8204 function emitEvent(event, arg1, arg2, arg3, arg4, arg5) {
8205 for (var i = 0; i < hooks.length; i++) {
8206 var hook = hooks[i];
8207 var fn = hook[event];
8208 if (fn) {
8209 callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5);
8210 }
8211 }
8212 }
8213
8214 var isProfiling = false;
8215 var flushHistory = [];
8216 var lifeCycleTimerStack = [];
8217 var currentFlushNesting = 0;
8218 var currentFlushMeasurements = null;
8219 var currentFlushStartTime = null;
8220 var currentTimerDebugID = null;
8221 var currentTimerStartTime = null;
8222 var currentTimerNestedFlushDuration = null;
8223 var currentTimerType = null;
8224
8225 var lifeCycleTimerHasWarned = false;
8226
8227 function clearHistory() {
8228 ReactComponentTreeHook.purgeUnmountedComponents();
8229 ReactHostOperationHistoryHook.clearHistory();
8230 }
8231
8232 function getTreeSnapshot(registeredIDs) {
8233 return registeredIDs.reduce(function (tree, id) {
8234 var ownerID = ReactComponentTreeHook.getOwnerID(id);
8235 var parentID = ReactComponentTreeHook.getParentID(id);
8236 tree[id] = {
8237 displayName: ReactComponentTreeHook.getDisplayName(id),
8238 text: ReactComponentTreeHook.getText(id),
8239 updateCount: ReactComponentTreeHook.getUpdateCount(id),
8240 childIDs: ReactComponentTreeHook.getChildIDs(id),
8241 // Text nodes don't have owners but this is close enough.
8242 ownerID: ownerID || ReactComponentTreeHook.getOwnerID(parentID),
8243 parentID: parentID
8244 };
8245 return tree;
8246 }, {});
8247 }
8248
8249 function resetMeasurements() {
8250 var previousStartTime = currentFlushStartTime;
8251 var previousMeasurements = currentFlushMeasurements || [];
8252 var previousOperations = ReactHostOperationHistoryHook.getHistory();
8253
8254 if (currentFlushNesting === 0) {
8255 currentFlushStartTime = null;
8256 currentFlushMeasurements = null;
8257 clearHistory();
8258 return;
8259 }
8260
8261 if (previousMeasurements.length || previousOperations.length) {
8262 var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();
8263 flushHistory.push({
8264 duration: performanceNow() - previousStartTime,
8265 measurements: previousMeasurements || [],
8266 operations: previousOperations || [],
8267 treeSnapshot: getTreeSnapshot(registeredIDs)
8268 });
8269 }
8270
8271 clearHistory();
8272 currentFlushStartTime = performanceNow();
8273 currentFlushMeasurements = [];
8274 }
8275
8276 function checkDebugID(debugID) {
8277 var allowRoot = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
8278
8279 if (allowRoot && debugID === 0) {
8280 return;
8281 }
8282 if (!debugID) {
8283 (undefined) !== 'production' ? warning(false, 'ReactDebugTool: debugID may not be empty.') : void 0;
8284 }
8285 }
8286
8287 function beginLifeCycleTimer(debugID, timerType) {
8288 if (currentFlushNesting === 0) {
8289 return;
8290 }
8291 if (currentTimerType && !lifeCycleTimerHasWarned) {
8292 (undefined) !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'Did not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;
8293 lifeCycleTimerHasWarned = true;
8294 }
8295 currentTimerStartTime = performanceNow();
8296 currentTimerNestedFlushDuration = 0;
8297 currentTimerDebugID = debugID;
8298 currentTimerType = timerType;
8299 }
8300
8301 function endLifeCycleTimer(debugID, timerType) {
8302 if (currentFlushNesting === 0) {
8303 return;
8304 }
8305 if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {
8306 (undefined) !== 'production' ? warning(false, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;
8307 lifeCycleTimerHasWarned = true;
8308 }
8309 if (isProfiling) {
8310 currentFlushMeasurements.push({
8311 timerType: timerType,
8312 instanceID: debugID,
8313 duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration
8314 });
8315 }
8316 currentTimerStartTime = null;
8317 currentTimerNestedFlushDuration = null;
8318 currentTimerDebugID = null;
8319 currentTimerType = null;
8320 }
8321
8322 function pauseCurrentLifeCycleTimer() {
8323 var currentTimer = {
8324 startTime: currentTimerStartTime,
8325 nestedFlushStartTime: performanceNow(),
8326 debugID: currentTimerDebugID,
8327 timerType: currentTimerType
8328 };
8329 lifeCycleTimerStack.push(currentTimer);
8330 currentTimerStartTime = null;
8331 currentTimerNestedFlushDuration = null;
8332 currentTimerDebugID = null;
8333 currentTimerType = null;
8334 }
8335
8336 function resumeCurrentLifeCycleTimer() {
8337 var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop();
8338
8339 var startTime = _lifeCycleTimerStack$.startTime;
8340 var nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime;
8341 var debugID = _lifeCycleTimerStack$.debugID;
8342 var timerType = _lifeCycleTimerStack$.timerType;
8343
8344 var nestedFlushDuration = performanceNow() - nestedFlushStartTime;
8345 currentTimerStartTime = startTime;
8346 currentTimerNestedFlushDuration += nestedFlushDuration;
8347 currentTimerDebugID = debugID;
8348 currentTimerType = timerType;
8349 }
8350
8351 var ReactDebugTool = {
8352 addHook: function (hook) {
8353 hooks.push(hook);
8354 },
8355 removeHook: function (hook) {
8356 for (var i = 0; i < hooks.length; i++) {
8357 if (hooks[i] === hook) {
8358 hooks.splice(i, 1);
8359 i--;
8360 }
8361 }
8362 },
8363 isProfiling: function () {
8364 return isProfiling;
8365 },
8366 beginProfiling: function () {
8367 if (isProfiling) {
8368 return;
8369 }
8370
8371 isProfiling = true;
8372 flushHistory.length = 0;
8373 resetMeasurements();
8374 ReactDebugTool.addHook(ReactHostOperationHistoryHook);
8375 },
8376 endProfiling: function () {
8377 if (!isProfiling) {
8378 return;
8379 }
8380
8381 isProfiling = false;
8382 resetMeasurements();
8383 ReactDebugTool.removeHook(ReactHostOperationHistoryHook);
8384 },
8385 getFlushHistory: function () {
8386 return flushHistory;
8387 },
8388 onBeginFlush: function () {
8389 currentFlushNesting++;
8390 resetMeasurements();
8391 pauseCurrentLifeCycleTimer();
8392 emitEvent('onBeginFlush');
8393 },
8394 onEndFlush: function () {
8395 resetMeasurements();
8396 currentFlushNesting--;
8397 resumeCurrentLifeCycleTimer();
8398 emitEvent('onEndFlush');
8399 },
8400 onBeginLifeCycleTimer: function (debugID, timerType) {
8401 checkDebugID(debugID);
8402 emitEvent('onBeginLifeCycleTimer', debugID, timerType);
8403 beginLifeCycleTimer(debugID, timerType);
8404 },
8405 onEndLifeCycleTimer: function (debugID, timerType) {
8406 checkDebugID(debugID);
8407 endLifeCycleTimer(debugID, timerType);
8408 emitEvent('onEndLifeCycleTimer', debugID, timerType);
8409 },
8410 onBeginProcessingChildContext: function () {
8411 emitEvent('onBeginProcessingChildContext');
8412 },
8413 onEndProcessingChildContext: function () {
8414 emitEvent('onEndProcessingChildContext');
8415 },
8416 onHostOperation: function (debugID, type, payload) {
8417 checkDebugID(debugID);
8418 emitEvent('onHostOperation', debugID, type, payload);
8419 },
8420 onSetState: function () {
8421 emitEvent('onSetState');
8422 },
8423 onSetChildren: function (debugID, childDebugIDs) {
8424 checkDebugID(debugID);
8425 childDebugIDs.forEach(checkDebugID);
8426 emitEvent('onSetChildren', debugID, childDebugIDs);
8427 },
8428 onBeforeMountComponent: function (debugID, element, parentDebugID) {
8429 checkDebugID(debugID);
8430 checkDebugID(parentDebugID, true);
8431 emitEvent('onBeforeMountComponent', debugID, element, parentDebugID);
8432 },
8433 onMountComponent: function (debugID) {
8434 checkDebugID(debugID);
8435 emitEvent('onMountComponent', debugID);
8436 },
8437 onBeforeUpdateComponent: function (debugID, element) {
8438 checkDebugID(debugID);
8439 emitEvent('onBeforeUpdateComponent', debugID, element);
8440 },
8441 onUpdateComponent: function (debugID) {
8442 checkDebugID(debugID);
8443 emitEvent('onUpdateComponent', debugID);
8444 },
8445 onBeforeUnmountComponent: function (debugID) {
8446 checkDebugID(debugID);
8447 emitEvent('onBeforeUnmountComponent', debugID);
8448 },
8449 onUnmountComponent: function (debugID) {
8450 checkDebugID(debugID);
8451 emitEvent('onUnmountComponent', debugID);
8452 },
8453 onTestEvent: function () {
8454 emitEvent('onTestEvent');
8455 }
8456 };
8457
8458 // TODO remove these when RN/www gets updated
8459 ReactDebugTool.addDevtool = ReactDebugTool.addHook;
8460 ReactDebugTool.removeDevtool = ReactDebugTool.removeHook;
8461
8462 ReactDebugTool.addHook(ReactInvalidSetStateWarningHook);
8463 ReactDebugTool.addHook(ReactComponentTreeHook);
8464 ReactDebugTool.addHook(ReactChildrenMutationWarningHook);
8465 var url = ExecutionEnvironment.canUseDOM && window.location.href || '';
8466 if (/[?&]react_perf\b/.test(url)) {
8467 ReactDebugTool.beginProfiling();
8468 }
8469
8470 module.exports = ReactDebugTool;
8471
8472/***/ },
8473/* 152 */
8474/***/ function(module, exports, __webpack_require__) {
8475
8476 /**
8477 * Copyright 2016-present, Facebook, Inc.
8478 * All rights reserved.
8479 *
8480 * This source code is licensed under the BSD-style license found in the
8481 * LICENSE file in the root directory of this source tree. An additional grant
8482 * of patent rights can be found in the PATENTS file in the same directory.
8483 *
8484 * @providesModule ReactInvalidSetStateWarningHook
8485 */
8486
8487 'use strict';
8488
8489 var warning = __webpack_require__(98);
8490
8491 if ((undefined) !== 'production') {
8492 var processingChildContext = false;
8493
8494 var warnInvalidSetState = function () {
8495 (undefined) !== 'production' ? warning(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()') : void 0;
8496 };
8497 }
8498
8499 var ReactInvalidSetStateWarningHook = {
8500 onBeginProcessingChildContext: function () {
8501 processingChildContext = true;
8502 },
8503 onEndProcessingChildContext: function () {
8504 processingChildContext = false;
8505 },
8506 onSetState: function () {
8507 warnInvalidSetState();
8508 }
8509 };
8510
8511 module.exports = ReactInvalidSetStateWarningHook;
8512
8513/***/ },
8514/* 153 */
8515/***/ function(module, exports) {
8516
8517 /**
8518 * Copyright 2016-present, Facebook, Inc.
8519 * All rights reserved.
8520 *
8521 * This source code is licensed under the BSD-style license found in the
8522 * LICENSE file in the root directory of this source tree. An additional grant
8523 * of patent rights can be found in the PATENTS file in the same directory.
8524 *
8525 * @providesModule ReactHostOperationHistoryHook
8526 */
8527
8528 'use strict';
8529
8530 var history = [];
8531
8532 var ReactHostOperationHistoryHook = {
8533 onHostOperation: function (debugID, type, payload) {
8534 history.push({
8535 instanceID: debugID,
8536 type: type,
8537 payload: payload
8538 });
8539 },
8540 clearHistory: function () {
8541 if (ReactHostOperationHistoryHook._preventClearing) {
8542 // Should only be used for tests.
8543 return;
8544 }
8545
8546 history = [];
8547 },
8548 getHistory: function () {
8549 return history;
8550 }
8551 };
8552
8553 module.exports = ReactHostOperationHistoryHook;
8554
8555/***/ },
8556/* 154 */
8557/***/ function(module, exports, __webpack_require__) {
8558
8559 /**
8560 * Copyright 2013-present, Facebook, Inc.
8561 * All rights reserved.
8562 *
8563 * This source code is licensed under the BSD-style license found in the
8564 * LICENSE file in the root directory of this source tree. An additional grant
8565 * of patent rights can be found in the PATENTS file in the same directory.
8566 *
8567 * @providesModule ReactChildrenMutationWarningHook
8568 */
8569
8570 'use strict';
8571
8572 var ReactComponentTreeHook = __webpack_require__(115);
8573
8574 var warning = __webpack_require__(98);
8575
8576 function handleElement(debugID, element) {
8577 if (element == null) {
8578 return;
8579 }
8580 if (element._shadowChildren === undefined) {
8581 return;
8582 }
8583 if (element._shadowChildren === element.props.children) {
8584 return;
8585 }
8586 var isMutated = false;
8587 if (Array.isArray(element._shadowChildren)) {
8588 if (element._shadowChildren.length === element.props.children.length) {
8589 for (var i = 0; i < element._shadowChildren.length; i++) {
8590 if (element._shadowChildren[i] !== element.props.children[i]) {
8591 isMutated = true;
8592 }
8593 }
8594 } else {
8595 isMutated = true;
8596 }
8597 }
8598 if (!Array.isArray(element._shadowChildren) || isMutated) {
8599 (undefined) !== 'production' ? warning(false, 'Component\'s children should not be mutated.%s', ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
8600 }
8601 }
8602
8603 var ReactChildrenMutationWarningHook = {
8604 onMountComponent: function (debugID) {
8605 handleElement(debugID, ReactComponentTreeHook.getElement(debugID));
8606 },
8607 onUpdateComponent: function (debugID) {
8608 handleElement(debugID, ReactComponentTreeHook.getElement(debugID));
8609 }
8610 };
8611
8612 module.exports = ReactChildrenMutationWarningHook;
8613
8614/***/ },
8615/* 155 */
8616/***/ function(module, exports, __webpack_require__) {
8617
8618 'use strict';
8619
8620 /**
8621 * Copyright (c) 2013-present, Facebook, Inc.
8622 * All rights reserved.
8623 *
8624 * This source code is licensed under the BSD-style license found in the
8625 * LICENSE file in the root directory of this source tree. An additional grant
8626 * of patent rights can be found in the PATENTS file in the same directory.
8627 *
8628 * @typechecks
8629 */
8630
8631 var performance = __webpack_require__(156);
8632
8633 var performanceNow;
8634
8635 /**
8636 * Detect if we can use `window.performance.now()` and gracefully fallback to
8637 * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now
8638 * because of Facebook's testing infrastructure.
8639 */
8640 if (performance.now) {
8641 performanceNow = function performanceNow() {
8642 return performance.now();
8643 };
8644 } else {
8645 performanceNow = function performanceNow() {
8646 return Date.now();
8647 };
8648 }
8649
8650 module.exports = performanceNow;
8651
8652/***/ },
8653/* 156 */
8654/***/ function(module, exports, __webpack_require__) {
8655
8656 /**
8657 * Copyright (c) 2013-present, Facebook, Inc.
8658 * All rights reserved.
8659 *
8660 * This source code is licensed under the BSD-style license found in the
8661 * LICENSE file in the root directory of this source tree. An additional grant
8662 * of patent rights can be found in the PATENTS file in the same directory.
8663 *
8664 * @typechecks
8665 */
8666
8667 'use strict';
8668
8669 var ExecutionEnvironment = __webpack_require__(137);
8670
8671 var performance;
8672
8673 if (ExecutionEnvironment.canUseDOM) {
8674 performance = window.performance || window.msPerformance || window.webkitPerformance;
8675 }
8676
8677 module.exports = performance || {};
8678
8679/***/ },
8680/* 157 */
8681/***/ function(module, exports, __webpack_require__) {
8682
8683 /**
8684 * Copyright 2013-present, Facebook, Inc.
8685 * All rights reserved.
8686 *
8687 * This source code is licensed under the BSD-style license found in the
8688 * LICENSE file in the root directory of this source tree. An additional grant
8689 * of patent rights can be found in the PATENTS file in the same directory.
8690 *
8691 * @providesModule Transaction
8692 */
8693
8694 'use strict';
8695
8696 var _prodInvariant = __webpack_require__(94);
8697
8698 var invariant = __webpack_require__(95);
8699
8700 /**
8701 * `Transaction` creates a black box that is able to wrap any method such that
8702 * certain invariants are maintained before and after the method is invoked
8703 * (Even if an exception is thrown while invoking the wrapped method). Whoever
8704 * instantiates a transaction can provide enforcers of the invariants at
8705 * creation time. The `Transaction` class itself will supply one additional
8706 * automatic invariant for you - the invariant that any transaction instance
8707 * should not be run while it is already being run. You would typically create a
8708 * single instance of a `Transaction` for reuse multiple times, that potentially
8709 * is used to wrap several different methods. Wrappers are extremely simple -
8710 * they only require implementing two methods.
8711 *
8712 * <pre>
8713 * wrappers (injected at creation time)
8714 * + +
8715 * | |
8716 * +-----------------|--------|--------------+
8717 * | v | |
8718 * | +---------------+ | |
8719 * | +--| wrapper1 |---|----+ |
8720 * | | +---------------+ v | |
8721 * | | +-------------+ | |
8722 * | | +----| wrapper2 |--------+ |
8723 * | | | +-------------+ | | |
8724 * | | | | | |
8725 * | v v v v | wrapper
8726 * | +---+ +---+ +---------+ +---+ +---+ | invariants
8727 * perform(anyMethod) | | | | | | | | | | | | maintained
8728 * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->
8729 * | | | | | | | | | | | |
8730 * | | | | | | | | | | | |
8731 * | | | | | | | | | | | |
8732 * | +---+ +---+ +---------+ +---+ +---+ |
8733 * | initialize close |
8734 * +-----------------------------------------+
8735 * </pre>
8736 *
8737 * Use cases:
8738 * - Preserving the input selection ranges before/after reconciliation.
8739 * Restoring selection even in the event of an unexpected error.
8740 * - Deactivating events while rearranging the DOM, preventing blurs/focuses,
8741 * while guaranteeing that afterwards, the event system is reactivated.
8742 * - Flushing a queue of collected DOM mutations to the main UI thread after a
8743 * reconciliation takes place in a worker thread.
8744 * - Invoking any collected `componentDidUpdate` callbacks after rendering new
8745 * content.
8746 * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue
8747 * to preserve the `scrollTop` (an automatic scroll aware DOM).
8748 * - (Future use case): Layout calculations before and after DOM updates.
8749 *
8750 * Transactional plugin API:
8751 * - A module that has an `initialize` method that returns any precomputation.
8752 * - and a `close` method that accepts the precomputation. `close` is invoked
8753 * when the wrapped process is completed, or has failed.
8754 *
8755 * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules
8756 * that implement `initialize` and `close`.
8757 * @return {Transaction} Single transaction for reuse in thread.
8758 *
8759 * @class Transaction
8760 */
8761 var Mixin = {
8762 /**
8763 * Sets up this instance so that it is prepared for collecting metrics. Does
8764 * so such that this setup method may be used on an instance that is already
8765 * initialized, in a way that does not consume additional memory upon reuse.
8766 * That can be useful if you decide to make your subclass of this mixin a
8767 * "PooledClass".
8768 */
8769 reinitializeTransaction: function () {
8770 this.transactionWrappers = this.getTransactionWrappers();
8771 if (this.wrapperInitData) {
8772 this.wrapperInitData.length = 0;
8773 } else {
8774 this.wrapperInitData = [];
8775 }
8776 this._isInTransaction = false;
8777 },
8778
8779 _isInTransaction: false,
8780
8781 /**
8782 * @abstract
8783 * @return {Array<TransactionWrapper>} Array of transaction wrappers.
8784 */
8785 getTransactionWrappers: null,
8786
8787 isInTransaction: function () {
8788 return !!this._isInTransaction;
8789 },
8790
8791 /**
8792 * Executes the function within a safety window. Use this for the top level
8793 * methods that result in large amounts of computation/mutations that would
8794 * need to be safety checked. The optional arguments helps prevent the need
8795 * to bind in many cases.
8796 *
8797 * @param {function} method Member of scope to call.
8798 * @param {Object} scope Scope to invoke from.
8799 * @param {Object?=} a Argument to pass to the method.
8800 * @param {Object?=} b Argument to pass to the method.
8801 * @param {Object?=} c Argument to pass to the method.
8802 * @param {Object?=} d Argument to pass to the method.
8803 * @param {Object?=} e Argument to pass to the method.
8804 * @param {Object?=} f Argument to pass to the method.
8805 *
8806 * @return {*} Return value from `method`.
8807 */
8808 perform: function (method, scope, a, b, c, d, e, f) {
8809 !!this.isInTransaction() ? (undefined) !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;
8810 var errorThrown;
8811 var ret;
8812 try {
8813 this._isInTransaction = true;
8814 // Catching errors makes debugging more difficult, so we start with
8815 // errorThrown set to true before setting it to false after calling
8816 // close -- if it's still set to true in the finally block, it means
8817 // one of these calls threw.
8818 errorThrown = true;
8819 this.initializeAll(0);
8820 ret = method.call(scope, a, b, c, d, e, f);
8821 errorThrown = false;
8822 } finally {
8823 try {
8824 if (errorThrown) {
8825 // If `method` throws, prefer to show that stack trace over any thrown
8826 // by invoking `closeAll`.
8827 try {
8828 this.closeAll(0);
8829 } catch (err) {}
8830 } else {
8831 // Since `method` didn't throw, we don't want to silence the exception
8832 // here.
8833 this.closeAll(0);
8834 }
8835 } finally {
8836 this._isInTransaction = false;
8837 }
8838 }
8839 return ret;
8840 },
8841
8842 initializeAll: function (startIndex) {
8843 var transactionWrappers = this.transactionWrappers;
8844 for (var i = startIndex; i < transactionWrappers.length; i++) {
8845 var wrapper = transactionWrappers[i];
8846 try {
8847 // Catching errors makes debugging more difficult, so we start with the
8848 // OBSERVED_ERROR state before overwriting it with the real return value
8849 // of initialize -- if it's still set to OBSERVED_ERROR in the finally
8850 // block, it means wrapper.initialize threw.
8851 this.wrapperInitData[i] = Transaction.OBSERVED_ERROR;
8852 this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;
8853 } finally {
8854 if (this.wrapperInitData[i] === Transaction.OBSERVED_ERROR) {
8855 // The initializer for wrapper i threw an error; initialize the
8856 // remaining wrappers but silence any exceptions from them to ensure
8857 // that the first error is the one to bubble up.
8858 try {
8859 this.initializeAll(i + 1);
8860 } catch (err) {}
8861 }
8862 }
8863 }
8864 },
8865
8866 /**
8867 * Invokes each of `this.transactionWrappers.close[i]` functions, passing into
8868 * them the respective return values of `this.transactionWrappers.init[i]`
8869 * (`close`rs that correspond to initializers that failed will not be
8870 * invoked).
8871 */
8872 closeAll: function (startIndex) {
8873 !this.isInTransaction() ? (undefined) !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;
8874 var transactionWrappers = this.transactionWrappers;
8875 for (var i = startIndex; i < transactionWrappers.length; i++) {
8876 var wrapper = transactionWrappers[i];
8877 var initData = this.wrapperInitData[i];
8878 var errorThrown;
8879 try {
8880 // Catching errors makes debugging more difficult, so we start with
8881 // errorThrown set to true before setting it to false after calling
8882 // close -- if it's still set to true in the finally block, it means
8883 // wrapper.close threw.
8884 errorThrown = true;
8885 if (initData !== Transaction.OBSERVED_ERROR && wrapper.close) {
8886 wrapper.close.call(this, initData);
8887 }
8888 errorThrown = false;
8889 } finally {
8890 if (errorThrown) {
8891 // The closer for wrapper i threw an error; close the remaining
8892 // wrappers but silence any exceptions from them to ensure that the
8893 // first error is the one to bubble up.
8894 try {
8895 this.closeAll(i + 1);
8896 } catch (e) {}
8897 }
8898 }
8899 }
8900 this.wrapperInitData.length = 0;
8901 }
8902 };
8903
8904 var Transaction = {
8905
8906 Mixin: Mixin,
8907
8908 /**
8909 * Token to look for to determine if an error occurred.
8910 */
8911 OBSERVED_ERROR: {}
8912
8913 };
8914
8915 module.exports = Transaction;
8916
8917/***/ },
8918/* 158 */
8919/***/ function(module, exports) {
8920
8921 /**
8922 * Copyright 2013-present, Facebook, Inc.
8923 * All rights reserved.
8924 *
8925 * This source code is licensed under the BSD-style license found in the
8926 * LICENSE file in the root directory of this source tree. An additional grant
8927 * of patent rights can be found in the PATENTS file in the same directory.
8928 *
8929 * @providesModule getEventTarget
8930 */
8931
8932 'use strict';
8933
8934 /**
8935 * Gets the target node from a native browser event by accounting for
8936 * inconsistencies in browser DOM APIs.
8937 *
8938 * @param {object} nativeEvent Native browser event.
8939 * @return {DOMEventTarget} Target node.
8940 */
8941
8942 function getEventTarget(nativeEvent) {
8943 var target = nativeEvent.target || nativeEvent.srcElement || window;
8944
8945 // Normalize SVG <use> element events #4963
8946 if (target.correspondingUseElement) {
8947 target = target.correspondingUseElement;
8948 }
8949
8950 // Safari may fire events on text nodes (Node.TEXT_NODE is 3).
8951 // @see http://www.quirksmode.org/js/events_properties.html
8952 return target.nodeType === 3 ? target.parentNode : target;
8953 }
8954
8955 module.exports = getEventTarget;
8956
8957/***/ },
8958/* 159 */
8959/***/ function(module, exports, __webpack_require__) {
8960
8961 /**
8962 * Copyright 2013-present, Facebook, Inc.
8963 * All rights reserved.
8964 *
8965 * This source code is licensed under the BSD-style license found in the
8966 * LICENSE file in the root directory of this source tree. An additional grant
8967 * of patent rights can be found in the PATENTS file in the same directory.
8968 *
8969 * @providesModule isEventSupported
8970 */
8971
8972 'use strict';
8973
8974 var ExecutionEnvironment = __webpack_require__(137);
8975
8976 var useHasFeature;
8977 if (ExecutionEnvironment.canUseDOM) {
8978 useHasFeature = document.implementation && document.implementation.hasFeature &&
8979 // always returns true in newer browsers as per the standard.
8980 // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
8981 document.implementation.hasFeature('', '') !== true;
8982 }
8983
8984 /**
8985 * Checks if an event is supported in the current execution environment.
8986 *
8987 * NOTE: This will not work correctly for non-generic events such as `change`,
8988 * `reset`, `load`, `error`, and `select`.
8989 *
8990 * Borrows from Modernizr.
8991 *
8992 * @param {string} eventNameSuffix Event name, e.g. "click".
8993 * @param {?boolean} capture Check if the capture phase is supported.
8994 * @return {boolean} True if the event is supported.
8995 * @internal
8996 * @license Modernizr 3.0.0pre (Custom Build) | MIT
8997 */
8998 function isEventSupported(eventNameSuffix, capture) {
8999 if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {
9000 return false;
9001 }
9002
9003 var eventName = 'on' + eventNameSuffix;
9004 var isSupported = eventName in document;
9005
9006 if (!isSupported) {
9007 var element = document.createElement('div');
9008 element.setAttribute(eventName, 'return;');
9009 isSupported = typeof element[eventName] === 'function';
9010 }
9011
9012 if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {
9013 // This is the only way to test support for the `wheel` event in IE9+.
9014 isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
9015 }
9016
9017 return isSupported;
9018 }
9019
9020 module.exports = isEventSupported;
9021
9022/***/ },
9023/* 160 */
9024/***/ function(module, exports) {
9025
9026 /**
9027 * Copyright 2013-present, Facebook, Inc.
9028 * All rights reserved.
9029 *
9030 * This source code is licensed under the BSD-style license found in the
9031 * LICENSE file in the root directory of this source tree. An additional grant
9032 * of patent rights can be found in the PATENTS file in the same directory.
9033 *
9034 * @providesModule isTextInputElement
9035 *
9036 */
9037
9038 'use strict';
9039
9040 /**
9041 * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
9042 */
9043
9044 var supportedInputTypes = {
9045 'color': true,
9046 'date': true,
9047 'datetime': true,
9048 'datetime-local': true,
9049 'email': true,
9050 'month': true,
9051 'number': true,
9052 'password': true,
9053 'range': true,
9054 'search': true,
9055 'tel': true,
9056 'text': true,
9057 'time': true,
9058 'url': true,
9059 'week': true
9060 };
9061
9062 function isTextInputElement(elem) {
9063 var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
9064
9065 if (nodeName === 'input') {
9066 return !!supportedInputTypes[elem.type];
9067 }
9068
9069 if (nodeName === 'textarea') {
9070 return true;
9071 }
9072
9073 return false;
9074 }
9075
9076 module.exports = isTextInputElement;
9077
9078/***/ },
9079/* 161 */
9080/***/ function(module, exports, __webpack_require__) {
9081
9082 /**
9083 * Copyright 2013-present, Facebook, Inc.
9084 * All rights reserved.
9085 *
9086 * This source code is licensed under the BSD-style license found in the
9087 * LICENSE file in the root directory of this source tree. An additional grant
9088 * of patent rights can be found in the PATENTS file in the same directory.
9089 *
9090 * @providesModule DefaultEventPluginOrder
9091 */
9092
9093 'use strict';
9094
9095 var keyOf = __webpack_require__(112);
9096
9097 /**
9098 * Module that is injectable into `EventPluginHub`, that specifies a
9099 * deterministic ordering of `EventPlugin`s. A convenient way to reason about
9100 * plugins, without having to package every one of them. This is better than
9101 * having plugins be ordered in the same order that they are injected because
9102 * that ordering would be influenced by the packaging order.
9103 * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that
9104 * preventing default on events is convenient in `SimpleEventPlugin` handlers.
9105 */
9106 var DefaultEventPluginOrder = [keyOf({ ResponderEventPlugin: null }), keyOf({ SimpleEventPlugin: null }), keyOf({ TapEventPlugin: null }), keyOf({ EnterLeaveEventPlugin: null }), keyOf({ ChangeEventPlugin: null }), keyOf({ SelectEventPlugin: null }), keyOf({ BeforeInputEventPlugin: null })];
9107
9108 module.exports = DefaultEventPluginOrder;
9109
9110/***/ },
9111/* 162 */
9112/***/ function(module, exports, __webpack_require__) {
9113
9114 /**
9115 * Copyright 2013-present, Facebook, Inc.
9116 * All rights reserved.
9117 *
9118 * This source code is licensed under the BSD-style license found in the
9119 * LICENSE file in the root directory of this source tree. An additional grant
9120 * of patent rights can be found in the PATENTS file in the same directory.
9121 *
9122 * @providesModule EnterLeaveEventPlugin
9123 */
9124
9125 'use strict';
9126
9127 var EventConstants = __webpack_require__(129);
9128 var EventPropagators = __webpack_require__(130);
9129 var ReactDOMComponentTree = __webpack_require__(124);
9130 var SyntheticMouseEvent = __webpack_require__(163);
9131
9132 var keyOf = __webpack_require__(112);
9133
9134 var topLevelTypes = EventConstants.topLevelTypes;
9135
9136 var eventTypes = {
9137 mouseEnter: {
9138 registrationName: keyOf({ onMouseEnter: null }),
9139 dependencies: [topLevelTypes.topMouseOut, topLevelTypes.topMouseOver]
9140 },
9141 mouseLeave: {
9142 registrationName: keyOf({ onMouseLeave: null }),
9143 dependencies: [topLevelTypes.topMouseOut, topLevelTypes.topMouseOver]
9144 }
9145 };
9146
9147 var EnterLeaveEventPlugin = {
9148
9149 eventTypes: eventTypes,
9150
9151 /**
9152 * For almost every interaction we care about, there will be both a top-level
9153 * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that
9154 * we do not extract duplicate events. However, moving the mouse into the
9155 * browser from outside will not fire a `mouseout` event. In this case, we use
9156 * the `mouseover` top-level event.
9157 */
9158 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
9159 if (topLevelType === topLevelTypes.topMouseOver && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {
9160 return null;
9161 }
9162 if (topLevelType !== topLevelTypes.topMouseOut && topLevelType !== topLevelTypes.topMouseOver) {
9163 // Must not be a mouse in or mouse out - ignoring.
9164 return null;
9165 }
9166
9167 var win;
9168 if (nativeEventTarget.window === nativeEventTarget) {
9169 // `nativeEventTarget` is probably a window object.
9170 win = nativeEventTarget;
9171 } else {
9172 // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
9173 var doc = nativeEventTarget.ownerDocument;
9174 if (doc) {
9175 win = doc.defaultView || doc.parentWindow;
9176 } else {
9177 win = window;
9178 }
9179 }
9180
9181 var from;
9182 var to;
9183 if (topLevelType === topLevelTypes.topMouseOut) {
9184 from = targetInst;
9185 var related = nativeEvent.relatedTarget || nativeEvent.toElement;
9186 to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;
9187 } else {
9188 // Moving to a node from outside the window.
9189 from = null;
9190 to = targetInst;
9191 }
9192
9193 if (from === to) {
9194 // Nothing pertains to our managed components.
9195 return null;
9196 }
9197
9198 var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);
9199 var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);
9200
9201 var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);
9202 leave.type = 'mouseleave';
9203 leave.target = fromNode;
9204 leave.relatedTarget = toNode;
9205
9206 var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);
9207 enter.type = 'mouseenter';
9208 enter.target = toNode;
9209 enter.relatedTarget = fromNode;
9210
9211 EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);
9212
9213 return [leave, enter];
9214 }
9215
9216 };
9217
9218 module.exports = EnterLeaveEventPlugin;
9219
9220/***/ },
9221/* 163 */
9222/***/ function(module, exports, __webpack_require__) {
9223
9224 /**
9225 * Copyright 2013-present, Facebook, Inc.
9226 * All rights reserved.
9227 *
9228 * This source code is licensed under the BSD-style license found in the
9229 * LICENSE file in the root directory of this source tree. An additional grant
9230 * of patent rights can be found in the PATENTS file in the same directory.
9231 *
9232 * @providesModule SyntheticMouseEvent
9233 */
9234
9235 'use strict';
9236
9237 var SyntheticUIEvent = __webpack_require__(164);
9238 var ViewportMetrics = __webpack_require__(165);
9239
9240 var getEventModifierState = __webpack_require__(166);
9241
9242 /**
9243 * @interface MouseEvent
9244 * @see http://www.w3.org/TR/DOM-Level-3-Events/
9245 */
9246 var MouseEventInterface = {
9247 screenX: null,
9248 screenY: null,
9249 clientX: null,
9250 clientY: null,
9251 ctrlKey: null,
9252 shiftKey: null,
9253 altKey: null,
9254 metaKey: null,
9255 getModifierState: getEventModifierState,
9256 button: function (event) {
9257 // Webkit, Firefox, IE9+
9258 // which: 1 2 3
9259 // button: 0 1 2 (standard)
9260 var button = event.button;
9261 if ('which' in event) {
9262 return button;
9263 }
9264 // IE<9
9265 // which: undefined
9266 // button: 0 0 0
9267 // button: 1 4 2 (onmouseup)
9268 return button === 2 ? 2 : button === 4 ? 1 : 0;
9269 },
9270 buttons: null,
9271 relatedTarget: function (event) {
9272 return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);
9273 },
9274 // "Proprietary" Interface.
9275 pageX: function (event) {
9276 return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;
9277 },
9278 pageY: function (event) {
9279 return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;
9280 }
9281 };
9282
9283 /**
9284 * @param {object} dispatchConfig Configuration used to dispatch this event.
9285 * @param {string} dispatchMarker Marker identifying the event target.
9286 * @param {object} nativeEvent Native browser event.
9287 * @extends {SyntheticUIEvent}
9288 */
9289 function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
9290 return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
9291 }
9292
9293 SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
9294
9295 module.exports = SyntheticMouseEvent;
9296
9297/***/ },
9298/* 164 */
9299/***/ function(module, exports, __webpack_require__) {
9300
9301 /**
9302 * Copyright 2013-present, Facebook, Inc.
9303 * All rights reserved.
9304 *
9305 * This source code is licensed under the BSD-style license found in the
9306 * LICENSE file in the root directory of this source tree. An additional grant
9307 * of patent rights can be found in the PATENTS file in the same directory.
9308 *
9309 * @providesModule SyntheticUIEvent
9310 */
9311
9312 'use strict';
9313
9314 var SyntheticEvent = __webpack_require__(141);
9315
9316 var getEventTarget = __webpack_require__(158);
9317
9318 /**
9319 * @interface UIEvent
9320 * @see http://www.w3.org/TR/DOM-Level-3-Events/
9321 */
9322 var UIEventInterface = {
9323 view: function (event) {
9324 if (event.view) {
9325 return event.view;
9326 }
9327
9328 var target = getEventTarget(event);
9329 if (target.window === target) {
9330 // target is a window object
9331 return target;
9332 }
9333
9334 var doc = target.ownerDocument;
9335 // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
9336 if (doc) {
9337 return doc.defaultView || doc.parentWindow;
9338 } else {
9339 return window;
9340 }
9341 },
9342 detail: function (event) {
9343 return event.detail || 0;
9344 }
9345 };
9346
9347 /**
9348 * @param {object} dispatchConfig Configuration used to dispatch this event.
9349 * @param {string} dispatchMarker Marker identifying the event target.
9350 * @param {object} nativeEvent Native browser event.
9351 * @extends {SyntheticEvent}
9352 */
9353 function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
9354 return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
9355 }
9356
9357 SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
9358
9359 module.exports = SyntheticUIEvent;
9360
9361/***/ },
9362/* 165 */
9363/***/ function(module, exports) {
9364
9365 /**
9366 * Copyright 2013-present, Facebook, Inc.
9367 * All rights reserved.
9368 *
9369 * This source code is licensed under the BSD-style license found in the
9370 * LICENSE file in the root directory of this source tree. An additional grant
9371 * of patent rights can be found in the PATENTS file in the same directory.
9372 *
9373 * @providesModule ViewportMetrics
9374 */
9375
9376 'use strict';
9377
9378 var ViewportMetrics = {
9379
9380 currentScrollLeft: 0,
9381
9382 currentScrollTop: 0,
9383
9384 refreshScrollValues: function (scrollPosition) {
9385 ViewportMetrics.currentScrollLeft = scrollPosition.x;
9386 ViewportMetrics.currentScrollTop = scrollPosition.y;
9387 }
9388
9389 };
9390
9391 module.exports = ViewportMetrics;
9392
9393/***/ },
9394/* 166 */
9395/***/ function(module, exports) {
9396
9397 /**
9398 * Copyright 2013-present, Facebook, Inc.
9399 * All rights reserved.
9400 *
9401 * This source code is licensed under the BSD-style license found in the
9402 * LICENSE file in the root directory of this source tree. An additional grant
9403 * of patent rights can be found in the PATENTS file in the same directory.
9404 *
9405 * @providesModule getEventModifierState
9406 */
9407
9408 'use strict';
9409
9410 /**
9411 * Translation from modifier key to the associated property in the event.
9412 * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers
9413 */
9414
9415 var modifierKeyToProp = {
9416 'Alt': 'altKey',
9417 'Control': 'ctrlKey',
9418 'Meta': 'metaKey',
9419 'Shift': 'shiftKey'
9420 };
9421
9422 // IE8 does not implement getModifierState so we simply map it to the only
9423 // modifier keys exposed by the event itself, does not support Lock-keys.
9424 // Currently, all major browsers except Chrome seems to support Lock-keys.
9425 function modifierStateGetter(keyArg) {
9426 var syntheticEvent = this;
9427 var nativeEvent = syntheticEvent.nativeEvent;
9428 if (nativeEvent.getModifierState) {
9429 return nativeEvent.getModifierState(keyArg);
9430 }
9431 var keyProp = modifierKeyToProp[keyArg];
9432 return keyProp ? !!nativeEvent[keyProp] : false;
9433 }
9434
9435 function getEventModifierState(nativeEvent) {
9436 return modifierStateGetter;
9437 }
9438
9439 module.exports = getEventModifierState;
9440
9441/***/ },
9442/* 167 */
9443/***/ function(module, exports, __webpack_require__) {
9444
9445 /**
9446 * Copyright 2013-present, Facebook, Inc.
9447 * All rights reserved.
9448 *
9449 * This source code is licensed under the BSD-style license found in the
9450 * LICENSE file in the root directory of this source tree. An additional grant
9451 * of patent rights can be found in the PATENTS file in the same directory.
9452 *
9453 * @providesModule HTMLDOMPropertyConfig
9454 */
9455
9456 'use strict';
9457
9458 var DOMProperty = __webpack_require__(125);
9459
9460 var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
9461 var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
9462 var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;
9463 var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
9464 var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
9465
9466 var HTMLDOMPropertyConfig = {
9467 isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),
9468 Properties: {
9469 /**
9470 * Standard Properties
9471 */
9472 accept: 0,
9473 acceptCharset: 0,
9474 accessKey: 0,
9475 action: 0,
9476 allowFullScreen: HAS_BOOLEAN_VALUE,
9477 allowTransparency: 0,
9478 alt: 0,
9479 // specifies target context for links with `preload` type
9480 as: 0,
9481 async: HAS_BOOLEAN_VALUE,
9482 autoComplete: 0,
9483 // autoFocus is polyfilled/normalized by AutoFocusUtils
9484 // autoFocus: HAS_BOOLEAN_VALUE,
9485 autoPlay: HAS_BOOLEAN_VALUE,
9486 capture: HAS_BOOLEAN_VALUE,
9487 cellPadding: 0,
9488 cellSpacing: 0,
9489 charSet: 0,
9490 challenge: 0,
9491 checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9492 cite: 0,
9493 classID: 0,
9494 className: 0,
9495 cols: HAS_POSITIVE_NUMERIC_VALUE,
9496 colSpan: 0,
9497 content: 0,
9498 contentEditable: 0,
9499 contextMenu: 0,
9500 controls: HAS_BOOLEAN_VALUE,
9501 coords: 0,
9502 crossOrigin: 0,
9503 data: 0, // For `<object />` acts as `src`.
9504 dateTime: 0,
9505 'default': HAS_BOOLEAN_VALUE,
9506 defer: HAS_BOOLEAN_VALUE,
9507 dir: 0,
9508 disabled: HAS_BOOLEAN_VALUE,
9509 download: HAS_OVERLOADED_BOOLEAN_VALUE,
9510 draggable: 0,
9511 encType: 0,
9512 form: 0,
9513 formAction: 0,
9514 formEncType: 0,
9515 formMethod: 0,
9516 formNoValidate: HAS_BOOLEAN_VALUE,
9517 formTarget: 0,
9518 frameBorder: 0,
9519 headers: 0,
9520 height: 0,
9521 hidden: HAS_BOOLEAN_VALUE,
9522 high: 0,
9523 href: 0,
9524 hrefLang: 0,
9525 htmlFor: 0,
9526 httpEquiv: 0,
9527 icon: 0,
9528 id: 0,
9529 inputMode: 0,
9530 integrity: 0,
9531 is: 0,
9532 keyParams: 0,
9533 keyType: 0,
9534 kind: 0,
9535 label: 0,
9536 lang: 0,
9537 list: 0,
9538 loop: HAS_BOOLEAN_VALUE,
9539 low: 0,
9540 manifest: 0,
9541 marginHeight: 0,
9542 marginWidth: 0,
9543 max: 0,
9544 maxLength: 0,
9545 media: 0,
9546 mediaGroup: 0,
9547 method: 0,
9548 min: 0,
9549 minLength: 0,
9550 // Caution; `option.selected` is not updated if `select.multiple` is
9551 // disabled with `removeAttribute`.
9552 multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9553 muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9554 name: 0,
9555 nonce: 0,
9556 noValidate: HAS_BOOLEAN_VALUE,
9557 open: HAS_BOOLEAN_VALUE,
9558 optimum: 0,
9559 pattern: 0,
9560 placeholder: 0,
9561 playsInline: HAS_BOOLEAN_VALUE,
9562 poster: 0,
9563 preload: 0,
9564 profile: 0,
9565 radioGroup: 0,
9566 readOnly: HAS_BOOLEAN_VALUE,
9567 referrerPolicy: 0,
9568 rel: 0,
9569 required: HAS_BOOLEAN_VALUE,
9570 reversed: HAS_BOOLEAN_VALUE,
9571 role: 0,
9572 rows: HAS_POSITIVE_NUMERIC_VALUE,
9573 rowSpan: HAS_NUMERIC_VALUE,
9574 sandbox: 0,
9575 scope: 0,
9576 scoped: HAS_BOOLEAN_VALUE,
9577 scrolling: 0,
9578 seamless: HAS_BOOLEAN_VALUE,
9579 selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9580 shape: 0,
9581 size: HAS_POSITIVE_NUMERIC_VALUE,
9582 sizes: 0,
9583 span: HAS_POSITIVE_NUMERIC_VALUE,
9584 spellCheck: 0,
9585 src: 0,
9586 srcDoc: 0,
9587 srcLang: 0,
9588 srcSet: 0,
9589 start: HAS_NUMERIC_VALUE,
9590 step: 0,
9591 style: 0,
9592 summary: 0,
9593 tabIndex: 0,
9594 target: 0,
9595 title: 0,
9596 // Setting .type throws on non-<input> tags
9597 type: 0,
9598 useMap: 0,
9599 value: 0,
9600 width: 0,
9601 wmode: 0,
9602 wrap: 0,
9603
9604 /**
9605 * RDFa Properties
9606 */
9607 about: 0,
9608 datatype: 0,
9609 inlist: 0,
9610 prefix: 0,
9611 // property is also supported for OpenGraph in meta tags.
9612 property: 0,
9613 resource: 0,
9614 'typeof': 0,
9615 vocab: 0,
9616
9617 /**
9618 * Non-standard Properties
9619 */
9620 // autoCapitalize and autoCorrect are supported in Mobile Safari for
9621 // keyboard hints.
9622 autoCapitalize: 0,
9623 autoCorrect: 0,
9624 // autoSave allows WebKit/Blink to persist values of input fields on page reloads
9625 autoSave: 0,
9626 // color is for Safari mask-icon link
9627 color: 0,
9628 // itemProp, itemScope, itemType are for
9629 // Microdata support. See http://schema.org/docs/gs.html
9630 itemProp: 0,
9631 itemScope: HAS_BOOLEAN_VALUE,
9632 itemType: 0,
9633 // itemID and itemRef are for Microdata support as well but
9634 // only specified in the WHATWG spec document. See
9635 // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api
9636 itemID: 0,
9637 itemRef: 0,
9638 // results show looking glass icon and recent searches on input
9639 // search fields in WebKit/Blink
9640 results: 0,
9641 // IE-only attribute that specifies security restrictions on an iframe
9642 // as an alternative to the sandbox attribute on IE<10
9643 security: 0,
9644 // IE-only attribute that controls focus behavior
9645 unselectable: 0
9646 },
9647 DOMAttributeNames: {
9648 acceptCharset: 'accept-charset',
9649 className: 'class',
9650 htmlFor: 'for',
9651 httpEquiv: 'http-equiv'
9652 },
9653 DOMPropertyNames: {}
9654 };
9655
9656 module.exports = HTMLDOMPropertyConfig;
9657
9658/***/ },
9659/* 168 */
9660/***/ function(module, exports, __webpack_require__) {
9661
9662 /**
9663 * Copyright 2013-present, Facebook, Inc.
9664 * All rights reserved.
9665 *
9666 * This source code is licensed under the BSD-style license found in the
9667 * LICENSE file in the root directory of this source tree. An additional grant
9668 * of patent rights can be found in the PATENTS file in the same directory.
9669 *
9670 * @providesModule ReactComponentBrowserEnvironment
9671 */
9672
9673 'use strict';
9674
9675 var DOMChildrenOperations = __webpack_require__(169);
9676 var ReactDOMIDOperations = __webpack_require__(181);
9677
9678 /**
9679 * Abstracts away all functionality of the reconciler that requires knowledge of
9680 * the browser context. TODO: These callers should be refactored to avoid the
9681 * need for this injection.
9682 */
9683 var ReactComponentBrowserEnvironment = {
9684
9685 processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,
9686
9687 replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup
9688
9689 };
9690
9691 module.exports = ReactComponentBrowserEnvironment;
9692
9693/***/ },
9694/* 169 */
9695/***/ function(module, exports, __webpack_require__) {
9696
9697 /**
9698 * Copyright 2013-present, Facebook, Inc.
9699 * All rights reserved.
9700 *
9701 * This source code is licensed under the BSD-style license found in the
9702 * LICENSE file in the root directory of this source tree. An additional grant
9703 * of patent rights can be found in the PATENTS file in the same directory.
9704 *
9705 * @providesModule DOMChildrenOperations
9706 */
9707
9708 'use strict';
9709
9710 var DOMLazyTree = __webpack_require__(170);
9711 var Danger = __webpack_require__(176);
9712 var ReactMultiChildUpdateTypes = __webpack_require__(180);
9713 var ReactDOMComponentTree = __webpack_require__(124);
9714 var ReactInstrumentation = __webpack_require__(150);
9715
9716 var createMicrosoftUnsafeLocalFunction = __webpack_require__(173);
9717 var setInnerHTML = __webpack_require__(172);
9718 var setTextContent = __webpack_require__(174);
9719
9720 function getNodeAfter(parentNode, node) {
9721 // Special case for text components, which return [open, close] comments
9722 // from getHostNode.
9723 if (Array.isArray(node)) {
9724 node = node[1];
9725 }
9726 return node ? node.nextSibling : parentNode.firstChild;
9727 }
9728
9729 /**
9730 * Inserts `childNode` as a child of `parentNode` at the `index`.
9731 *
9732 * @param {DOMElement} parentNode Parent node in which to insert.
9733 * @param {DOMElement} childNode Child node to insert.
9734 * @param {number} index Index at which to insert the child.
9735 * @internal
9736 */
9737 var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {
9738 // We rely exclusively on `insertBefore(node, null)` instead of also using
9739 // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so
9740 // we are careful to use `null`.)
9741 parentNode.insertBefore(childNode, referenceNode);
9742 });
9743
9744 function insertLazyTreeChildAt(parentNode, childTree, referenceNode) {
9745 DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);
9746 }
9747
9748 function moveChild(parentNode, childNode, referenceNode) {
9749 if (Array.isArray(childNode)) {
9750 moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);
9751 } else {
9752 insertChildAt(parentNode, childNode, referenceNode);
9753 }
9754 }
9755
9756 function removeChild(parentNode, childNode) {
9757 if (Array.isArray(childNode)) {
9758 var closingComment = childNode[1];
9759 childNode = childNode[0];
9760 removeDelimitedText(parentNode, childNode, closingComment);
9761 parentNode.removeChild(closingComment);
9762 }
9763 parentNode.removeChild(childNode);
9764 }
9765
9766 function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {
9767 var node = openingComment;
9768 while (true) {
9769 var nextNode = node.nextSibling;
9770 insertChildAt(parentNode, node, referenceNode);
9771 if (node === closingComment) {
9772 break;
9773 }
9774 node = nextNode;
9775 }
9776 }
9777
9778 function removeDelimitedText(parentNode, startNode, closingComment) {
9779 while (true) {
9780 var node = startNode.nextSibling;
9781 if (node === closingComment) {
9782 // The closing comment is removed by ReactMultiChild.
9783 break;
9784 } else {
9785 parentNode.removeChild(node);
9786 }
9787 }
9788 }
9789
9790 function replaceDelimitedText(openingComment, closingComment, stringText) {
9791 var parentNode = openingComment.parentNode;
9792 var nodeAfterComment = openingComment.nextSibling;
9793 if (nodeAfterComment === closingComment) {
9794 // There are no text nodes between the opening and closing comments; insert
9795 // a new one if stringText isn't empty.
9796 if (stringText) {
9797 insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);
9798 }
9799 } else {
9800 if (stringText) {
9801 // Set the text content of the first node after the opening comment, and
9802 // remove all following nodes up until the closing comment.
9803 setTextContent(nodeAfterComment, stringText);
9804 removeDelimitedText(parentNode, nodeAfterComment, closingComment);
9805 } else {
9806 removeDelimitedText(parentNode, openingComment, closingComment);
9807 }
9808 }
9809
9810 if ((undefined) !== 'production') {
9811 ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID, 'replace text', stringText);
9812 }
9813 }
9814
9815 var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;
9816 if ((undefined) !== 'production') {
9817 dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {
9818 Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);
9819 if (prevInstance._debugID !== 0) {
9820 ReactInstrumentation.debugTool.onHostOperation(prevInstance._debugID, 'replace with', markup.toString());
9821 } else {
9822 var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);
9823 if (nextInstance._debugID !== 0) {
9824 ReactInstrumentation.debugTool.onHostOperation(nextInstance._debugID, 'mount', markup.toString());
9825 }
9826 }
9827 };
9828 }
9829
9830 /**
9831 * Operations for updating with DOM children.
9832 */
9833 var DOMChildrenOperations = {
9834
9835 dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,
9836
9837 replaceDelimitedText: replaceDelimitedText,
9838
9839 /**
9840 * Updates a component's children by processing a series of updates. The
9841 * update configurations are each expected to have a `parentNode` property.
9842 *
9843 * @param {array<object>} updates List of update configurations.
9844 * @internal
9845 */
9846 processUpdates: function (parentNode, updates) {
9847 if ((undefined) !== 'production') {
9848 var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;
9849 }
9850
9851 for (var k = 0; k < updates.length; k++) {
9852 var update = updates[k];
9853 switch (update.type) {
9854 case ReactMultiChildUpdateTypes.INSERT_MARKUP:
9855 insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));
9856 if ((undefined) !== 'production') {
9857 ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'insert child', { toIndex: update.toIndex, content: update.content.toString() });
9858 }
9859 break;
9860 case ReactMultiChildUpdateTypes.MOVE_EXISTING:
9861 moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));
9862 if ((undefined) !== 'production') {
9863 ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'move child', { fromIndex: update.fromIndex, toIndex: update.toIndex });
9864 }
9865 break;
9866 case ReactMultiChildUpdateTypes.SET_MARKUP:
9867 setInnerHTML(parentNode, update.content);
9868 if ((undefined) !== 'production') {
9869 ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'replace children', update.content.toString());
9870 }
9871 break;
9872 case ReactMultiChildUpdateTypes.TEXT_CONTENT:
9873 setTextContent(parentNode, update.content);
9874 if ((undefined) !== 'production') {
9875 ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'replace text', update.content.toString());
9876 }
9877 break;
9878 case ReactMultiChildUpdateTypes.REMOVE_NODE:
9879 removeChild(parentNode, update.fromNode);
9880 if ((undefined) !== 'production') {
9881 ReactInstrumentation.debugTool.onHostOperation(parentNodeDebugID, 'remove child', { fromIndex: update.fromIndex });
9882 }
9883 break;
9884 }
9885 }
9886 }
9887
9888 };
9889
9890 module.exports = DOMChildrenOperations;
9891
9892/***/ },
9893/* 170 */
9894/***/ function(module, exports, __webpack_require__) {
9895
9896 /**
9897 * Copyright 2015-present, Facebook, Inc.
9898 * All rights reserved.
9899 *
9900 * This source code is licensed under the BSD-style license found in the
9901 * LICENSE file in the root directory of this source tree. An additional grant
9902 * of patent rights can be found in the PATENTS file in the same directory.
9903 *
9904 * @providesModule DOMLazyTree
9905 */
9906
9907 'use strict';
9908
9909 var DOMNamespaces = __webpack_require__(171);
9910 var setInnerHTML = __webpack_require__(172);
9911
9912 var createMicrosoftUnsafeLocalFunction = __webpack_require__(173);
9913 var setTextContent = __webpack_require__(174);
9914
9915 var ELEMENT_NODE_TYPE = 1;
9916 var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
9917
9918 /**
9919 * In IE (8-11) and Edge, appending nodes with no children is dramatically
9920 * faster than appending a full subtree, so we essentially queue up the
9921 * .appendChild calls here and apply them so each node is added to its parent
9922 * before any children are added.
9923 *
9924 * In other browsers, doing so is slower or neutral compared to the other order
9925 * (in Firefox, twice as slow) so we only do this inversion in IE.
9926 *
9927 * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.
9928 */
9929 var enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\bEdge\/\d/.test(navigator.userAgent);
9930
9931 function insertTreeChildren(tree) {
9932 if (!enableLazy) {
9933 return;
9934 }
9935 var node = tree.node;
9936 var children = tree.children;
9937 if (children.length) {
9938 for (var i = 0; i < children.length; i++) {
9939 insertTreeBefore(node, children[i], null);
9940 }
9941 } else if (tree.html != null) {
9942 setInnerHTML(node, tree.html);
9943 } else if (tree.text != null) {
9944 setTextContent(node, tree.text);
9945 }
9946 }
9947
9948 var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {
9949 // DocumentFragments aren't actually part of the DOM after insertion so
9950 // appending children won't update the DOM. We need to ensure the fragment
9951 // is properly populated first, breaking out of our lazy approach for just
9952 // this level. Also, some <object> plugins (like Flash Player) will read
9953 // <param> nodes immediately upon insertion into the DOM, so <object>
9954 // must also be populated prior to insertion into the DOM.
9955 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)) {
9956 insertTreeChildren(tree);
9957 parentNode.insertBefore(tree.node, referenceNode);
9958 } else {
9959 parentNode.insertBefore(tree.node, referenceNode);
9960 insertTreeChildren(tree);
9961 }
9962 });
9963
9964 function replaceChildWithTree(oldNode, newTree) {
9965 oldNode.parentNode.replaceChild(newTree.node, oldNode);
9966 insertTreeChildren(newTree);
9967 }
9968
9969 function queueChild(parentTree, childTree) {
9970 if (enableLazy) {
9971 parentTree.children.push(childTree);
9972 } else {
9973 parentTree.node.appendChild(childTree.node);
9974 }
9975 }
9976
9977 function queueHTML(tree, html) {
9978 if (enableLazy) {
9979 tree.html = html;
9980 } else {
9981 setInnerHTML(tree.node, html);
9982 }
9983 }
9984
9985 function queueText(tree, text) {
9986 if (enableLazy) {
9987 tree.text = text;
9988 } else {
9989 setTextContent(tree.node, text);
9990 }
9991 }
9992
9993 function toString() {
9994 return this.node.nodeName;
9995 }
9996
9997 function DOMLazyTree(node) {
9998 return {
9999 node: node,
10000 children: [],
10001 html: null,
10002 text: null,
10003 toString: toString
10004 };
10005 }
10006
10007 DOMLazyTree.insertTreeBefore = insertTreeBefore;
10008 DOMLazyTree.replaceChildWithTree = replaceChildWithTree;
10009 DOMLazyTree.queueChild = queueChild;
10010 DOMLazyTree.queueHTML = queueHTML;
10011 DOMLazyTree.queueText = queueText;
10012
10013 module.exports = DOMLazyTree;
10014
10015/***/ },
10016/* 171 */
10017/***/ function(module, exports) {
10018
10019 /**
10020 * Copyright 2013-present, Facebook, Inc.
10021 * All rights reserved.
10022 *
10023 * This source code is licensed under the BSD-style license found in the
10024 * LICENSE file in the root directory of this source tree. An additional grant
10025 * of patent rights can be found in the PATENTS file in the same directory.
10026 *
10027 * @providesModule DOMNamespaces
10028 */
10029
10030 'use strict';
10031
10032 var DOMNamespaces = {
10033 html: 'http://www.w3.org/1999/xhtml',
10034 mathml: 'http://www.w3.org/1998/Math/MathML',
10035 svg: 'http://www.w3.org/2000/svg'
10036 };
10037
10038 module.exports = DOMNamespaces;
10039
10040/***/ },
10041/* 172 */
10042/***/ function(module, exports, __webpack_require__) {
10043
10044 /**
10045 * Copyright 2013-present, Facebook, Inc.
10046 * All rights reserved.
10047 *
10048 * This source code is licensed under the BSD-style license found in the
10049 * LICENSE file in the root directory of this source tree. An additional grant
10050 * of patent rights can be found in the PATENTS file in the same directory.
10051 *
10052 * @providesModule setInnerHTML
10053 */
10054
10055 'use strict';
10056
10057 var ExecutionEnvironment = __webpack_require__(137);
10058 var DOMNamespaces = __webpack_require__(171);
10059
10060 var WHITESPACE_TEST = /^[ \r\n\t\f]/;
10061 var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/;
10062
10063 var createMicrosoftUnsafeLocalFunction = __webpack_require__(173);
10064
10065 // SVG temp container for IE lacking innerHTML
10066 var reusableSVGContainer;
10067
10068 /**
10069 * Set the innerHTML property of a node, ensuring that whitespace is preserved
10070 * even in IE8.
10071 *
10072 * @param {DOMElement} node
10073 * @param {string} html
10074 * @internal
10075 */
10076 var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {
10077 // IE does not have innerHTML for SVG nodes, so instead we inject the
10078 // new markup in a temp node and then move the child nodes across into
10079 // the target node
10080 if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {
10081 reusableSVGContainer = reusableSVGContainer || document.createElement('div');
10082 reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';
10083 var svgNode = reusableSVGContainer.firstChild;
10084 while (svgNode.firstChild) {
10085 node.appendChild(svgNode.firstChild);
10086 }
10087 } else {
10088 node.innerHTML = html;
10089 }
10090 });
10091
10092 if (ExecutionEnvironment.canUseDOM) {
10093 // IE8: When updating a just created node with innerHTML only leading
10094 // whitespace is removed. When updating an existing node with innerHTML
10095 // whitespace in root TextNodes is also collapsed.
10096 // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html
10097
10098 // Feature detection; only IE8 is known to behave improperly like this.
10099 var testElement = document.createElement('div');
10100 testElement.innerHTML = ' ';
10101 if (testElement.innerHTML === '') {
10102 setInnerHTML = function (node, html) {
10103 // Magic theory: IE8 supposedly differentiates between added and updated
10104 // nodes when processing innerHTML, innerHTML on updated nodes suffers
10105 // from worse whitespace behavior. Re-adding a node like this triggers
10106 // the initial and more favorable whitespace behavior.
10107 // TODO: What to do on a detached node?
10108 if (node.parentNode) {
10109 node.parentNode.replaceChild(node, node);
10110 }
10111
10112 // We also implement a workaround for non-visible tags disappearing into
10113 // thin air on IE8, this only happens if there is no visible text
10114 // in-front of the non-visible tags. Piggyback on the whitespace fix
10115 // and simply check if any non-visible tags appear in the source.
10116 if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {
10117 // Recover leading whitespace by temporarily prepending any character.
10118 // \uFEFF has the potential advantage of being zero-width/invisible.
10119 // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode
10120 // in hopes that this is preserved even if "\uFEFF" is transformed to
10121 // the actual Unicode character (by Babel, for example).
10122 // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216
10123 node.innerHTML = String.fromCharCode(0xFEFF) + html;
10124
10125 // deleteData leaves an empty `TextNode` which offsets the index of all
10126 // children. Definitely want to avoid this.
10127 var textNode = node.firstChild;
10128 if (textNode.data.length === 1) {
10129 node.removeChild(textNode);
10130 } else {
10131 textNode.deleteData(0, 1);
10132 }
10133 } else {
10134 node.innerHTML = html;
10135 }
10136 };
10137 }
10138 testElement = null;
10139 }
10140
10141 module.exports = setInnerHTML;
10142
10143/***/ },
10144/* 173 */
10145/***/ function(module, exports) {
10146
10147 /**
10148 * Copyright 2013-present, Facebook, Inc.
10149 * All rights reserved.
10150 *
10151 * This source code is licensed under the BSD-style license found in the
10152 * LICENSE file in the root directory of this source tree. An additional grant
10153 * of patent rights can be found in the PATENTS file in the same directory.
10154 *
10155 * @providesModule createMicrosoftUnsafeLocalFunction
10156 */
10157
10158 /* globals MSApp */
10159
10160 'use strict';
10161
10162 /**
10163 * Create a function which has 'unsafe' privileges (required by windows8 apps)
10164 */
10165
10166 var createMicrosoftUnsafeLocalFunction = function (func) {
10167 if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {
10168 return function (arg0, arg1, arg2, arg3) {
10169 MSApp.execUnsafeLocalFunction(function () {
10170 return func(arg0, arg1, arg2, arg3);
10171 });
10172 };
10173 } else {
10174 return func;
10175 }
10176 };
10177
10178 module.exports = createMicrosoftUnsafeLocalFunction;
10179
10180/***/ },
10181/* 174 */
10182/***/ function(module, exports, __webpack_require__) {
10183
10184 /**
10185 * Copyright 2013-present, Facebook, Inc.
10186 * All rights reserved.
10187 *
10188 * This source code is licensed under the BSD-style license found in the
10189 * LICENSE file in the root directory of this source tree. An additional grant
10190 * of patent rights can be found in the PATENTS file in the same directory.
10191 *
10192 * @providesModule setTextContent
10193 */
10194
10195 'use strict';
10196
10197 var ExecutionEnvironment = __webpack_require__(137);
10198 var escapeTextContentForBrowser = __webpack_require__(175);
10199 var setInnerHTML = __webpack_require__(172);
10200
10201 /**
10202 * Set the textContent property of a node, ensuring that whitespace is preserved
10203 * even in IE8. innerText is a poor substitute for textContent and, among many
10204 * issues, inserts <br> instead of the literal newline chars. innerHTML behaves
10205 * as it should.
10206 *
10207 * @param {DOMElement} node
10208 * @param {string} text
10209 * @internal
10210 */
10211 var setTextContent = function (node, text) {
10212 if (text) {
10213 var firstChild = node.firstChild;
10214
10215 if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {
10216 firstChild.nodeValue = text;
10217 return;
10218 }
10219 }
10220 node.textContent = text;
10221 };
10222
10223 if (ExecutionEnvironment.canUseDOM) {
10224 if (!('textContent' in document.documentElement)) {
10225 setTextContent = function (node, text) {
10226 setInnerHTML(node, escapeTextContentForBrowser(text));
10227 };
10228 }
10229 }
10230
10231 module.exports = setTextContent;
10232
10233/***/ },
10234/* 175 */
10235/***/ function(module, exports) {
10236
10237 /**
10238 * Copyright 2016-present, Facebook, Inc.
10239 * All rights reserved.
10240 *
10241 * This source code is licensed under the BSD-style license found in the
10242 * LICENSE file in the root directory of this source tree. An additional grant
10243 * of patent rights can be found in the PATENTS file in the same directory.
10244 *
10245 * Based on the escape-html library, which is used under the MIT License below:
10246 *
10247 * Copyright (c) 2012-2013 TJ Holowaychuk
10248 * Copyright (c) 2015 Andreas Lubbe
10249 * Copyright (c) 2015 Tiancheng "Timothy" Gu
10250 *
10251 * Permission is hereby granted, free of charge, to any person obtaining
10252 * a copy of this software and associated documentation files (the
10253 * 'Software'), to deal in the Software without restriction, including
10254 * without limitation the rights to use, copy, modify, merge, publish,
10255 * distribute, sublicense, and/or sell copies of the Software, and to
10256 * permit persons to whom the Software is furnished to do so, subject to
10257 * the following conditions:
10258 *
10259 * The above copyright notice and this permission notice shall be
10260 * included in all copies or substantial portions of the Software.
10261 *
10262 * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
10263 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10264 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
10265 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
10266 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10267 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
10268 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10269 *
10270 * @providesModule escapeTextContentForBrowser
10271 */
10272
10273 'use strict';
10274
10275 // code copied and modified from escape-html
10276 /**
10277 * Module variables.
10278 * @private
10279 */
10280
10281 var matchHtmlRegExp = /["'&<>]/;
10282
10283 /**
10284 * Escape special characters in the given string of html.
10285 *
10286 * @param {string} string The string to escape for inserting into HTML
10287 * @return {string}
10288 * @public
10289 */
10290
10291 function escapeHtml(string) {
10292 var str = '' + string;
10293 var match = matchHtmlRegExp.exec(str);
10294
10295 if (!match) {
10296 return str;
10297 }
10298
10299 var escape;
10300 var html = '';
10301 var index = 0;
10302 var lastIndex = 0;
10303
10304 for (index = match.index; index < str.length; index++) {
10305 switch (str.charCodeAt(index)) {
10306 case 34:
10307 // "
10308 escape = '&quot;';
10309 break;
10310 case 38:
10311 // &
10312 escape = '&amp;';
10313 break;
10314 case 39:
10315 // '
10316 escape = '&#x27;'; // modified from escape-html; used to be '&#39'
10317 break;
10318 case 60:
10319 // <
10320 escape = '&lt;';
10321 break;
10322 case 62:
10323 // >
10324 escape = '&gt;';
10325 break;
10326 default:
10327 continue;
10328 }
10329
10330 if (lastIndex !== index) {
10331 html += str.substring(lastIndex, index);
10332 }
10333
10334 lastIndex = index + 1;
10335 html += escape;
10336 }
10337
10338 return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
10339 }
10340 // end code copied and modified from escape-html
10341
10342
10343 /**
10344 * Escapes text to prevent scripting attacks.
10345 *
10346 * @param {*} text Text value to escape.
10347 * @return {string} An escaped string.
10348 */
10349 function escapeTextContentForBrowser(text) {
10350 if (typeof text === 'boolean' || typeof text === 'number') {
10351 // this shortcircuit helps perf for types that we know will never have
10352 // special characters, especially given that this function is used often
10353 // for numeric dom ids.
10354 return '' + text;
10355 }
10356 return escapeHtml(text);
10357 }
10358
10359 module.exports = escapeTextContentForBrowser;
10360
10361/***/ },
10362/* 176 */
10363/***/ function(module, exports, __webpack_require__) {
10364
10365 /**
10366 * Copyright 2013-present, Facebook, Inc.
10367 * All rights reserved.
10368 *
10369 * This source code is licensed under the BSD-style license found in the
10370 * LICENSE file in the root directory of this source tree. An additional grant
10371 * of patent rights can be found in the PATENTS file in the same directory.
10372 *
10373 * @providesModule Danger
10374 */
10375
10376 'use strict';
10377
10378 var _prodInvariant = __webpack_require__(94);
10379
10380 var DOMLazyTree = __webpack_require__(170);
10381 var ExecutionEnvironment = __webpack_require__(137);
10382
10383 var createNodesFromMarkup = __webpack_require__(177);
10384 var emptyFunction = __webpack_require__(99);
10385 var invariant = __webpack_require__(95);
10386
10387 var Danger = {
10388
10389 /**
10390 * Replaces a node with a string of markup at its current position within its
10391 * parent. The markup must render into a single root node.
10392 *
10393 * @param {DOMElement} oldChild Child node to replace.
10394 * @param {string} markup Markup to render in place of the child node.
10395 * @internal
10396 */
10397 dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {
10398 !ExecutionEnvironment.canUseDOM ? (undefined) !== '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;
10399 !markup ? (undefined) !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;
10400 !(oldChild.nodeName !== 'HTML') ? (undefined) !== '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;
10401
10402 if (typeof markup === 'string') {
10403 var newChild = createNodesFromMarkup(markup, emptyFunction)[0];
10404 oldChild.parentNode.replaceChild(newChild, oldChild);
10405 } else {
10406 DOMLazyTree.replaceChildWithTree(oldChild, markup);
10407 }
10408 }
10409
10410 };
10411
10412 module.exports = Danger;
10413
10414/***/ },
10415/* 177 */
10416/***/ function(module, exports, __webpack_require__) {
10417
10418 'use strict';
10419
10420 /**
10421 * Copyright (c) 2013-present, Facebook, Inc.
10422 * All rights reserved.
10423 *
10424 * This source code is licensed under the BSD-style license found in the
10425 * LICENSE file in the root directory of this source tree. An additional grant
10426 * of patent rights can be found in the PATENTS file in the same directory.
10427 *
10428 * @typechecks
10429 */
10430
10431 /*eslint-disable fb-www/unsafe-html*/
10432
10433 var ExecutionEnvironment = __webpack_require__(137);
10434
10435 var createArrayFromMixed = __webpack_require__(178);
10436 var getMarkupWrap = __webpack_require__(179);
10437 var invariant = __webpack_require__(95);
10438
10439 /**
10440 * Dummy container used to render all markup.
10441 */
10442 var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;
10443
10444 /**
10445 * Pattern used by `getNodeName`.
10446 */
10447 var nodeNamePattern = /^\s*<(\w+)/;
10448
10449 /**
10450 * Extracts the `nodeName` of the first element in a string of markup.
10451 *
10452 * @param {string} markup String of markup.
10453 * @return {?string} Node name of the supplied markup.
10454 */
10455 function getNodeName(markup) {
10456 var nodeNameMatch = markup.match(nodeNamePattern);
10457 return nodeNameMatch && nodeNameMatch[1].toLowerCase();
10458 }
10459
10460 /**
10461 * Creates an array containing the nodes rendered from the supplied markup. The
10462 * optionally supplied `handleScript` function will be invoked once for each
10463 * <script> element that is rendered. If no `handleScript` function is supplied,
10464 * an exception is thrown if any <script> elements are rendered.
10465 *
10466 * @param {string} markup A string of valid HTML markup.
10467 * @param {?function} handleScript Invoked once for each rendered <script>.
10468 * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.
10469 */
10470 function createNodesFromMarkup(markup, handleScript) {
10471 var node = dummyNode;
10472 !!!dummyNode ? (undefined) !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;
10473 var nodeName = getNodeName(markup);
10474
10475 var wrap = nodeName && getMarkupWrap(nodeName);
10476 if (wrap) {
10477 node.innerHTML = wrap[1] + markup + wrap[2];
10478
10479 var wrapDepth = wrap[0];
10480 while (wrapDepth--) {
10481 node = node.lastChild;
10482 }
10483 } else {
10484 node.innerHTML = markup;
10485 }
10486
10487 var scripts = node.getElementsByTagName('script');
10488 if (scripts.length) {
10489 !handleScript ? (undefined) !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;
10490 createArrayFromMixed(scripts).forEach(handleScript);
10491 }
10492
10493 var nodes = Array.from(node.childNodes);
10494 while (node.lastChild) {
10495 node.removeChild(node.lastChild);
10496 }
10497 return nodes;
10498 }
10499
10500 module.exports = createNodesFromMarkup;
10501
10502/***/ },
10503/* 178 */
10504/***/ function(module, exports, __webpack_require__) {
10505
10506 'use strict';
10507
10508 /**
10509 * Copyright (c) 2013-present, Facebook, Inc.
10510 * All rights reserved.
10511 *
10512 * This source code is licensed under the BSD-style license found in the
10513 * LICENSE file in the root directory of this source tree. An additional grant
10514 * of patent rights can be found in the PATENTS file in the same directory.
10515 *
10516 * @typechecks
10517 */
10518
10519 var invariant = __webpack_require__(95);
10520
10521 /**
10522 * Convert array-like objects to arrays.
10523 *
10524 * This API assumes the caller knows the contents of the data type. For less
10525 * well defined inputs use createArrayFromMixed.
10526 *
10527 * @param {object|function|filelist} obj
10528 * @return {array}
10529 */
10530 function toArray(obj) {
10531 var length = obj.length;
10532
10533 // Some browsers builtin objects can report typeof 'function' (e.g. NodeList
10534 // in old versions of Safari).
10535 !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? (undefined) !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;
10536
10537 !(typeof length === 'number') ? (undefined) !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;
10538
10539 !(length === 0 || length - 1 in obj) ? (undefined) !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;
10540
10541 !(typeof obj.callee !== 'function') ? (undefined) !== 'production' ? invariant(false, 'toArray: Object can\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;
10542
10543 // Old IE doesn't give collections access to hasOwnProperty. Assume inputs
10544 // without method will throw during the slice call and skip straight to the
10545 // fallback.
10546 if (obj.hasOwnProperty) {
10547 try {
10548 return Array.prototype.slice.call(obj);
10549 } catch (e) {
10550 // IE < 9 does not support Array#slice on collections objects
10551 }
10552 }
10553
10554 // Fall back to copying key by key. This assumes all keys have a value,
10555 // so will not preserve sparsely populated inputs.
10556 var ret = Array(length);
10557 for (var ii = 0; ii < length; ii++) {
10558 ret[ii] = obj[ii];
10559 }
10560 return ret;
10561 }
10562
10563 /**
10564 * Perform a heuristic test to determine if an object is "array-like".
10565 *
10566 * A monk asked Joshu, a Zen master, "Has a dog Buddha nature?"
10567 * Joshu replied: "Mu."
10568 *
10569 * This function determines if its argument has "array nature": it returns
10570 * true if the argument is an actual array, an `arguments' object, or an
10571 * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).
10572 *
10573 * It will return false for other array-like objects like Filelist.
10574 *
10575 * @param {*} obj
10576 * @return {boolean}
10577 */
10578 function hasArrayNature(obj) {
10579 return (
10580 // not null/false
10581 !!obj && (
10582 // arrays are objects, NodeLists are functions in Safari
10583 typeof obj == 'object' || typeof obj == 'function') &&
10584 // quacks like an array
10585 'length' in obj &&
10586 // not window
10587 !('setInterval' in obj) &&
10588 // no DOM node should be considered an array-like
10589 // a 'select' element has 'length' and 'item' properties on IE8
10590 typeof obj.nodeType != 'number' && (
10591 // a real array
10592 Array.isArray(obj) ||
10593 // arguments
10594 'callee' in obj ||
10595 // HTMLCollection/NodeList
10596 'item' in obj)
10597 );
10598 }
10599
10600 /**
10601 * Ensure that the argument is an array by wrapping it in an array if it is not.
10602 * Creates a copy of the argument if it is already an array.
10603 *
10604 * This is mostly useful idiomatically:
10605 *
10606 * var createArrayFromMixed = require('createArrayFromMixed');
10607 *
10608 * function takesOneOrMoreThings(things) {
10609 * things = createArrayFromMixed(things);
10610 * ...
10611 * }
10612 *
10613 * This allows you to treat `things' as an array, but accept scalars in the API.
10614 *
10615 * If you need to convert an array-like object, like `arguments`, into an array
10616 * use toArray instead.
10617 *
10618 * @param {*} obj
10619 * @return {array}
10620 */
10621 function createArrayFromMixed(obj) {
10622 if (!hasArrayNature(obj)) {
10623 return [obj];
10624 } else if (Array.isArray(obj)) {
10625 return obj.slice();
10626 } else {
10627 return toArray(obj);
10628 }
10629 }
10630
10631 module.exports = createArrayFromMixed;
10632
10633/***/ },
10634/* 179 */
10635/***/ function(module, exports, __webpack_require__) {
10636
10637 'use strict';
10638
10639 /**
10640 * Copyright (c) 2013-present, Facebook, Inc.
10641 * All rights reserved.
10642 *
10643 * This source code is licensed under the BSD-style license found in the
10644 * LICENSE file in the root directory of this source tree. An additional grant
10645 * of patent rights can be found in the PATENTS file in the same directory.
10646 *
10647 */
10648
10649 /*eslint-disable fb-www/unsafe-html */
10650
10651 var ExecutionEnvironment = __webpack_require__(137);
10652
10653 var invariant = __webpack_require__(95);
10654
10655 /**
10656 * Dummy container used to detect which wraps are necessary.
10657 */
10658 var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;
10659
10660 /**
10661 * Some browsers cannot use `innerHTML` to render certain elements standalone,
10662 * so we wrap them, render the wrapped nodes, then extract the desired node.
10663 *
10664 * In IE8, certain elements cannot render alone, so wrap all elements ('*').
10665 */
10666
10667 var shouldWrap = {};
10668
10669 var selectWrap = [1, '<select multiple="true">', '</select>'];
10670 var tableWrap = [1, '<table>', '</table>'];
10671 var trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];
10672
10673 var svgWrap = [1, '<svg xmlns="http://www.w3.org/2000/svg">', '</svg>'];
10674
10675 var markupWrap = {
10676 '*': [1, '?<div>', '</div>'],
10677
10678 'area': [1, '<map>', '</map>'],
10679 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],
10680 'legend': [1, '<fieldset>', '</fieldset>'],
10681 'param': [1, '<object>', '</object>'],
10682 'tr': [2, '<table><tbody>', '</tbody></table>'],
10683
10684 'optgroup': selectWrap,
10685 'option': selectWrap,
10686
10687 'caption': tableWrap,
10688 'colgroup': tableWrap,
10689 'tbody': tableWrap,
10690 'tfoot': tableWrap,
10691 'thead': tableWrap,
10692
10693 'td': trWrap,
10694 'th': trWrap
10695 };
10696
10697 // Initialize the SVG elements since we know they'll always need to be wrapped
10698 // consistently. If they are created inside a <div> they will be initialized in
10699 // the wrong namespace (and will not display).
10700 var svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];
10701 svgElements.forEach(function (nodeName) {
10702 markupWrap[nodeName] = svgWrap;
10703 shouldWrap[nodeName] = true;
10704 });
10705
10706 /**
10707 * Gets the markup wrap configuration for the supplied `nodeName`.
10708 *
10709 * NOTE: This lazily detects which wraps are necessary for the current browser.
10710 *
10711 * @param {string} nodeName Lowercase `nodeName`.
10712 * @return {?array} Markup wrap configuration, if applicable.
10713 */
10714 function getMarkupWrap(nodeName) {
10715 !!!dummyNode ? (undefined) !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;
10716 if (!markupWrap.hasOwnProperty(nodeName)) {
10717 nodeName = '*';
10718 }
10719 if (!shouldWrap.hasOwnProperty(nodeName)) {
10720 if (nodeName === '*') {
10721 dummyNode.innerHTML = '<link />';
10722 } else {
10723 dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';
10724 }
10725 shouldWrap[nodeName] = !dummyNode.firstChild;
10726 }
10727 return shouldWrap[nodeName] ? markupWrap[nodeName] : null;
10728 }
10729
10730 module.exports = getMarkupWrap;
10731
10732/***/ },
10733/* 180 */
10734/***/ function(module, exports, __webpack_require__) {
10735
10736 /**
10737 * Copyright 2013-present, Facebook, Inc.
10738 * All rights reserved.
10739 *
10740 * This source code is licensed under the BSD-style license found in the
10741 * LICENSE file in the root directory of this source tree. An additional grant
10742 * of patent rights can be found in the PATENTS file in the same directory.
10743 *
10744 * @providesModule ReactMultiChildUpdateTypes
10745 */
10746
10747 'use strict';
10748
10749 var keyMirror = __webpack_require__(110);
10750
10751 /**
10752 * When a component's children are updated, a series of update configuration
10753 * objects are created in order to batch and serialize the required changes.
10754 *
10755 * Enumerates all the possible types of update configurations.
10756 *
10757 * @internal
10758 */
10759 var ReactMultiChildUpdateTypes = keyMirror({
10760 INSERT_MARKUP: null,
10761 MOVE_EXISTING: null,
10762 REMOVE_NODE: null,
10763 SET_MARKUP: null,
10764 TEXT_CONTENT: null
10765 });
10766
10767 module.exports = ReactMultiChildUpdateTypes;
10768
10769/***/ },
10770/* 181 */
10771/***/ function(module, exports, __webpack_require__) {
10772
10773 /**
10774 * Copyright 2013-present, Facebook, Inc.
10775 * All rights reserved.
10776 *
10777 * This source code is licensed under the BSD-style license found in the
10778 * LICENSE file in the root directory of this source tree. An additional grant
10779 * of patent rights can be found in the PATENTS file in the same directory.
10780 *
10781 * @providesModule ReactDOMIDOperations
10782 */
10783
10784 'use strict';
10785
10786 var DOMChildrenOperations = __webpack_require__(169);
10787 var ReactDOMComponentTree = __webpack_require__(124);
10788
10789 /**
10790 * Operations used to process updates to DOM nodes.
10791 */
10792 var ReactDOMIDOperations = {
10793
10794 /**
10795 * Updates a component's children by processing a series of updates.
10796 *
10797 * @param {array<object>} updates List of update configurations.
10798 * @internal
10799 */
10800 dangerouslyProcessChildrenUpdates: function (parentInst, updates) {
10801 var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);
10802 DOMChildrenOperations.processUpdates(node, updates);
10803 }
10804 };
10805
10806 module.exports = ReactDOMIDOperations;
10807
10808/***/ },
10809/* 182 */
10810/***/ function(module, exports, __webpack_require__) {
10811
10812 /**
10813 * Copyright 2013-present, Facebook, Inc.
10814 * All rights reserved.
10815 *
10816 * This source code is licensed under the BSD-style license found in the
10817 * LICENSE file in the root directory of this source tree. An additional grant
10818 * of patent rights can be found in the PATENTS file in the same directory.
10819 *
10820 * @providesModule ReactDOMComponent
10821 */
10822
10823 /* global hasOwnProperty:true */
10824
10825 'use strict';
10826
10827 var _prodInvariant = __webpack_require__(94),
10828 _assign = __webpack_require__(91);
10829
10830 var AutoFocusUtils = __webpack_require__(183);
10831 var CSSPropertyOperations = __webpack_require__(185);
10832 var DOMLazyTree = __webpack_require__(170);
10833 var DOMNamespaces = __webpack_require__(171);
10834 var DOMProperty = __webpack_require__(125);
10835 var DOMPropertyOperations = __webpack_require__(193);
10836 var EventConstants = __webpack_require__(129);
10837 var EventPluginHub = __webpack_require__(131);
10838 var EventPluginRegistry = __webpack_require__(132);
10839 var ReactBrowserEventEmitter = __webpack_require__(195);
10840 var ReactDOMButton = __webpack_require__(198);
10841 var ReactDOMComponentFlags = __webpack_require__(126);
10842 var ReactDOMComponentTree = __webpack_require__(124);
10843 var ReactDOMInput = __webpack_require__(200);
10844 var ReactDOMOption = __webpack_require__(202);
10845 var ReactDOMSelect = __webpack_require__(203);
10846 var ReactDOMTextarea = __webpack_require__(204);
10847 var ReactInstrumentation = __webpack_require__(150);
10848 var ReactMultiChild = __webpack_require__(205);
10849 var ReactServerRenderingTransaction = __webpack_require__(217);
10850
10851 var emptyFunction = __webpack_require__(99);
10852 var escapeTextContentForBrowser = __webpack_require__(175);
10853 var invariant = __webpack_require__(95);
10854 var isEventSupported = __webpack_require__(159);
10855 var keyOf = __webpack_require__(112);
10856 var shallowEqual = __webpack_require__(212);
10857 var validateDOMNesting = __webpack_require__(220);
10858 var warning = __webpack_require__(98);
10859
10860 var Flags = ReactDOMComponentFlags;
10861 var deleteListener = EventPluginHub.deleteListener;
10862 var getNode = ReactDOMComponentTree.getNodeFromInstance;
10863 var listenTo = ReactBrowserEventEmitter.listenTo;
10864 var registrationNameModules = EventPluginRegistry.registrationNameModules;
10865
10866 // For quickly matching children type, to test if can be treated as content.
10867 var CONTENT_TYPES = { 'string': true, 'number': true };
10868
10869 var STYLE = keyOf({ style: null });
10870 var HTML = keyOf({ __html: null });
10871 var RESERVED_PROPS = {
10872 children: null,
10873 dangerouslySetInnerHTML: null,
10874 suppressContentEditableWarning: null
10875 };
10876
10877 // Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).
10878 var DOC_FRAGMENT_TYPE = 11;
10879
10880 function getDeclarationErrorAddendum(internalInstance) {
10881 if (internalInstance) {
10882 var owner = internalInstance._currentElement._owner || null;
10883 if (owner) {
10884 var name = owner.getName();
10885 if (name) {
10886 return ' This DOM node was rendered by `' + name + '`.';
10887 }
10888 }
10889 }
10890 return '';
10891 }
10892
10893 function friendlyStringify(obj) {
10894 if (typeof obj === 'object') {
10895 if (Array.isArray(obj)) {
10896 return '[' + obj.map(friendlyStringify).join(', ') + ']';
10897 } else {
10898 var pairs = [];
10899 for (var key in obj) {
10900 if (Object.prototype.hasOwnProperty.call(obj, key)) {
10901 var keyEscaped = /^[a-z$_][\w$_]*$/i.test(key) ? key : JSON.stringify(key);
10902 pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));
10903 }
10904 }
10905 return '{' + pairs.join(', ') + '}';
10906 }
10907 } else if (typeof obj === 'string') {
10908 return JSON.stringify(obj);
10909 } else if (typeof obj === 'function') {
10910 return '[function object]';
10911 }
10912 // Differs from JSON.stringify in that undefined because undefined and that
10913 // inf and nan don't become null
10914 return String(obj);
10915 }
10916
10917 var styleMutationWarning = {};
10918
10919 function checkAndWarnForMutatedStyle(style1, style2, component) {
10920 if (style1 == null || style2 == null) {
10921 return;
10922 }
10923 if (shallowEqual(style1, style2)) {
10924 return;
10925 }
10926
10927 var componentName = component._tag;
10928 var owner = component._currentElement._owner;
10929 var ownerName;
10930 if (owner) {
10931 ownerName = owner.getName();
10932 }
10933
10934 var hash = ownerName + '|' + componentName;
10935
10936 if (styleMutationWarning.hasOwnProperty(hash)) {
10937 return;
10938 }
10939
10940 styleMutationWarning[hash] = true;
10941
10942 (undefined) !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;
10943 }
10944
10945 /**
10946 * @param {object} component
10947 * @param {?object} props
10948 */
10949 function assertValidProps(component, props) {
10950 if (!props) {
10951 return;
10952 }
10953 // Note the use of `==` which checks for null or undefined.
10954 if (voidElementTags[component._tag]) {
10955 !(props.children == null && props.dangerouslySetInnerHTML == null) ? (undefined) !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;
10956 }
10957 if (props.dangerouslySetInnerHTML != null) {
10958 !(props.children == null) ? (undefined) !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;
10959 !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? (undefined) !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;
10960 }
10961 if ((undefined) !== 'production') {
10962 (undefined) !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;
10963 (undefined) !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;
10964 (undefined) !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;
10965 }
10966 !(props.style == null || typeof props.style === 'object') ? (undefined) !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \'em\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;
10967 }
10968
10969 function enqueuePutListener(inst, registrationName, listener, transaction) {
10970 if (transaction instanceof ReactServerRenderingTransaction) {
10971 return;
10972 }
10973 if ((undefined) !== 'production') {
10974 // IE8 has no API for event capturing and the `onScroll` event doesn't
10975 // bubble.
10976 (undefined) !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\'t support the `onScroll` event') : void 0;
10977 }
10978 var containerInfo = inst._hostContainerInfo;
10979 var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;
10980 var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;
10981 listenTo(registrationName, doc);
10982 transaction.getReactMountReady().enqueue(putListener, {
10983 inst: inst,
10984 registrationName: registrationName,
10985 listener: listener
10986 });
10987 }
10988
10989 function putListener() {
10990 var listenerToPut = this;
10991 EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);
10992 }
10993
10994 function inputPostMount() {
10995 var inst = this;
10996 ReactDOMInput.postMountWrapper(inst);
10997 }
10998
10999 function textareaPostMount() {
11000 var inst = this;
11001 ReactDOMTextarea.postMountWrapper(inst);
11002 }
11003
11004 function optionPostMount() {
11005 var inst = this;
11006 ReactDOMOption.postMountWrapper(inst);
11007 }
11008
11009 var setAndValidateContentChildDev = emptyFunction;
11010 if ((undefined) !== 'production') {
11011 setAndValidateContentChildDev = function (content) {
11012 var hasExistingContent = this._contentDebugID != null;
11013 var debugID = this._debugID;
11014 // This ID represents the inlined child that has no backing instance:
11015 var contentDebugID = -debugID;
11016
11017 if (content == null) {
11018 if (hasExistingContent) {
11019 ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);
11020 }
11021 this._contentDebugID = null;
11022 return;
11023 }
11024
11025 validateDOMNesting(null, String(content), this, this._ancestorInfo);
11026 this._contentDebugID = contentDebugID;
11027 if (hasExistingContent) {
11028 ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);
11029 ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);
11030 } else {
11031 ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);
11032 ReactInstrumentation.debugTool.onMountComponent(contentDebugID);
11033 ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);
11034 }
11035 };
11036 }
11037
11038 // There are so many media events, it makes sense to just
11039 // maintain a list rather than create a `trapBubbledEvent` for each
11040 var mediaEvents = {
11041 topAbort: 'abort',
11042 topCanPlay: 'canplay',
11043 topCanPlayThrough: 'canplaythrough',
11044 topDurationChange: 'durationchange',
11045 topEmptied: 'emptied',
11046 topEncrypted: 'encrypted',
11047 topEnded: 'ended',
11048 topError: 'error',
11049 topLoadedData: 'loadeddata',
11050 topLoadedMetadata: 'loadedmetadata',
11051 topLoadStart: 'loadstart',
11052 topPause: 'pause',
11053 topPlay: 'play',
11054 topPlaying: 'playing',
11055 topProgress: 'progress',
11056 topRateChange: 'ratechange',
11057 topSeeked: 'seeked',
11058 topSeeking: 'seeking',
11059 topStalled: 'stalled',
11060 topSuspend: 'suspend',
11061 topTimeUpdate: 'timeupdate',
11062 topVolumeChange: 'volumechange',
11063 topWaiting: 'waiting'
11064 };
11065
11066 function trapBubbledEventsLocal() {
11067 var inst = this;
11068 // If a component renders to null or if another component fatals and causes
11069 // the state of the tree to be corrupted, `node` here can be null.
11070 !inst._rootNodeID ? (undefined) !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;
11071 var node = getNode(inst);
11072 !node ? (undefined) !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;
11073
11074 switch (inst._tag) {
11075 case 'iframe':
11076 case 'object':
11077 inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topLoad, 'load', node)];
11078 break;
11079 case 'video':
11080 case 'audio':
11081
11082 inst._wrapperState.listeners = [];
11083 // Create listener for each media event
11084 for (var event in mediaEvents) {
11085 if (mediaEvents.hasOwnProperty(event)) {
11086 inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes[event], mediaEvents[event], node));
11087 }
11088 }
11089 break;
11090 case 'source':
11091 inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topError, 'error', node)];
11092 break;
11093 case 'img':
11094 inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topError, 'error', node), ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topLoad, 'load', node)];
11095 break;
11096 case 'form':
11097 inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topReset, 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topSubmit, 'submit', node)];
11098 break;
11099 case 'input':
11100 case 'select':
11101 case 'textarea':
11102 inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topInvalid, 'invalid', node)];
11103 break;
11104 }
11105 }
11106
11107 function postUpdateSelectWrapper() {
11108 ReactDOMSelect.postUpdateWrapper(this);
11109 }
11110
11111 // For HTML, certain tags should omit their close tag. We keep a whitelist for
11112 // those special-case tags.
11113
11114 var omittedCloseTags = {
11115 'area': true,
11116 'base': true,
11117 'br': true,
11118 'col': true,
11119 'embed': true,
11120 'hr': true,
11121 'img': true,
11122 'input': true,
11123 'keygen': true,
11124 'link': true,
11125 'meta': true,
11126 'param': true,
11127 'source': true,
11128 'track': true,
11129 'wbr': true
11130 };
11131
11132 // NOTE: menuitem's close tag should be omitted, but that causes problems.
11133 var newlineEatingTags = {
11134 'listing': true,
11135 'pre': true,
11136 'textarea': true
11137 };
11138
11139 // For HTML, certain tags cannot have children. This has the same purpose as
11140 // `omittedCloseTags` except that `menuitem` should still have its closing tag.
11141
11142 var voidElementTags = _assign({
11143 'menuitem': true
11144 }, omittedCloseTags);
11145
11146 // We accept any tag to be rendered but since this gets injected into arbitrary
11147 // HTML, we want to make sure that it's a safe tag.
11148 // http://www.w3.org/TR/REC-xml/#NT-Name
11149
11150 var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/; // Simplified subset
11151 var validatedTagCache = {};
11152 var hasOwnProperty = {}.hasOwnProperty;
11153
11154 function validateDangerousTag(tag) {
11155 if (!hasOwnProperty.call(validatedTagCache, tag)) {
11156 !VALID_TAG_REGEX.test(tag) ? (undefined) !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;
11157 validatedTagCache[tag] = true;
11158 }
11159 }
11160
11161 function isCustomComponent(tagName, props) {
11162 return tagName.indexOf('-') >= 0 || props.is != null;
11163 }
11164
11165 var globalIdCounter = 1;
11166
11167 /**
11168 * Creates a new React class that is idempotent and capable of containing other
11169 * React components. It accepts event listeners and DOM properties that are
11170 * valid according to `DOMProperty`.
11171 *
11172 * - Event listeners: `onClick`, `onMouseDown`, etc.
11173 * - DOM properties: `className`, `name`, `title`, etc.
11174 *
11175 * The `style` property functions differently from the DOM API. It accepts an
11176 * object mapping of style properties to values.
11177 *
11178 * @constructor ReactDOMComponent
11179 * @extends ReactMultiChild
11180 */
11181 function ReactDOMComponent(element) {
11182 var tag = element.type;
11183 validateDangerousTag(tag);
11184 this._currentElement = element;
11185 this._tag = tag.toLowerCase();
11186 this._namespaceURI = null;
11187 this._renderedChildren = null;
11188 this._previousStyle = null;
11189 this._previousStyleCopy = null;
11190 this._hostNode = null;
11191 this._hostParent = null;
11192 this._rootNodeID = 0;
11193 this._domID = 0;
11194 this._hostContainerInfo = null;
11195 this._wrapperState = null;
11196 this._topLevelWrapper = null;
11197 this._flags = 0;
11198 if ((undefined) !== 'production') {
11199 this._ancestorInfo = null;
11200 setAndValidateContentChildDev.call(this, null);
11201 }
11202 }
11203
11204 ReactDOMComponent.displayName = 'ReactDOMComponent';
11205
11206 ReactDOMComponent.Mixin = {
11207
11208 /**
11209 * Generates root tag markup then recurses. This method has side effects and
11210 * is not idempotent.
11211 *
11212 * @internal
11213 * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11214 * @param {?ReactDOMComponent} the parent component instance
11215 * @param {?object} info about the host container
11216 * @param {object} context
11217 * @return {string} The computed markup.
11218 */
11219 mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
11220 this._rootNodeID = globalIdCounter++;
11221 this._domID = hostContainerInfo._idCounter++;
11222 this._hostParent = hostParent;
11223 this._hostContainerInfo = hostContainerInfo;
11224
11225 var props = this._currentElement.props;
11226
11227 switch (this._tag) {
11228 case 'audio':
11229 case 'form':
11230 case 'iframe':
11231 case 'img':
11232 case 'link':
11233 case 'object':
11234 case 'source':
11235 case 'video':
11236 this._wrapperState = {
11237 listeners: null
11238 };
11239 transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11240 break;
11241 case 'button':
11242 props = ReactDOMButton.getHostProps(this, props, hostParent);
11243 break;
11244 case 'input':
11245 ReactDOMInput.mountWrapper(this, props, hostParent);
11246 props = ReactDOMInput.getHostProps(this, props);
11247 transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11248 break;
11249 case 'option':
11250 ReactDOMOption.mountWrapper(this, props, hostParent);
11251 props = ReactDOMOption.getHostProps(this, props);
11252 break;
11253 case 'select':
11254 ReactDOMSelect.mountWrapper(this, props, hostParent);
11255 props = ReactDOMSelect.getHostProps(this, props);
11256 transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11257 break;
11258 case 'textarea':
11259 ReactDOMTextarea.mountWrapper(this, props, hostParent);
11260 props = ReactDOMTextarea.getHostProps(this, props);
11261 transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11262 break;
11263 }
11264
11265 assertValidProps(this, props);
11266
11267 // We create tags in the namespace of their parent container, except HTML
11268 // tags get no namespace.
11269 var namespaceURI;
11270 var parentTag;
11271 if (hostParent != null) {
11272 namespaceURI = hostParent._namespaceURI;
11273 parentTag = hostParent._tag;
11274 } else if (hostContainerInfo._tag) {
11275 namespaceURI = hostContainerInfo._namespaceURI;
11276 parentTag = hostContainerInfo._tag;
11277 }
11278 if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {
11279 namespaceURI = DOMNamespaces.html;
11280 }
11281 if (namespaceURI === DOMNamespaces.html) {
11282 if (this._tag === 'svg') {
11283 namespaceURI = DOMNamespaces.svg;
11284 } else if (this._tag === 'math') {
11285 namespaceURI = DOMNamespaces.mathml;
11286 }
11287 }
11288 this._namespaceURI = namespaceURI;
11289
11290 if ((undefined) !== 'production') {
11291 var parentInfo;
11292 if (hostParent != null) {
11293 parentInfo = hostParent._ancestorInfo;
11294 } else if (hostContainerInfo._tag) {
11295 parentInfo = hostContainerInfo._ancestorInfo;
11296 }
11297 if (parentInfo) {
11298 // parentInfo should always be present except for the top-level
11299 // component when server rendering
11300 validateDOMNesting(this._tag, null, this, parentInfo);
11301 }
11302 this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);
11303 }
11304
11305 var mountImage;
11306 if (transaction.useCreateElement) {
11307 var ownerDocument = hostContainerInfo._ownerDocument;
11308 var el;
11309 if (namespaceURI === DOMNamespaces.html) {
11310 if (this._tag === 'script') {
11311 // Create the script via .innerHTML so its "parser-inserted" flag is
11312 // set to true and it does not execute
11313 var div = ownerDocument.createElement('div');
11314 var type = this._currentElement.type;
11315 div.innerHTML = '<' + type + '></' + type + '>';
11316 el = div.removeChild(div.firstChild);
11317 } else if (props.is) {
11318 el = ownerDocument.createElement(this._currentElement.type, props.is);
11319 } else {
11320 // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.
11321 // See discussion in https://github.com/facebook/react/pull/6896
11322 // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
11323 el = ownerDocument.createElement(this._currentElement.type);
11324 }
11325 } else {
11326 el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);
11327 }
11328 ReactDOMComponentTree.precacheNode(this, el);
11329 this._flags |= Flags.hasCachedChildNodes;
11330 if (!this._hostParent) {
11331 DOMPropertyOperations.setAttributeForRoot(el);
11332 }
11333 this._updateDOMProperties(null, props, transaction);
11334 var lazyTree = DOMLazyTree(el);
11335 this._createInitialChildren(transaction, props, context, lazyTree);
11336 mountImage = lazyTree;
11337 } else {
11338 var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);
11339 var tagContent = this._createContentMarkup(transaction, props, context);
11340 if (!tagContent && omittedCloseTags[this._tag]) {
11341 mountImage = tagOpen + '/>';
11342 } else {
11343 mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';
11344 }
11345 }
11346
11347 switch (this._tag) {
11348 case 'input':
11349 transaction.getReactMountReady().enqueue(inputPostMount, this);
11350 if (props.autoFocus) {
11351 transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11352 }
11353 break;
11354 case 'textarea':
11355 transaction.getReactMountReady().enqueue(textareaPostMount, this);
11356 if (props.autoFocus) {
11357 transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11358 }
11359 break;
11360 case 'select':
11361 if (props.autoFocus) {
11362 transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11363 }
11364 break;
11365 case 'button':
11366 if (props.autoFocus) {
11367 transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11368 }
11369 break;
11370 case 'option':
11371 transaction.getReactMountReady().enqueue(optionPostMount, this);
11372 break;
11373 }
11374
11375 return mountImage;
11376 },
11377
11378 /**
11379 * Creates markup for the open tag and all attributes.
11380 *
11381 * This method has side effects because events get registered.
11382 *
11383 * Iterating over object properties is faster than iterating over arrays.
11384 * @see http://jsperf.com/obj-vs-arr-iteration
11385 *
11386 * @private
11387 * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11388 * @param {object} props
11389 * @return {string} Markup of opening tag.
11390 */
11391 _createOpenTagMarkupAndPutListeners: function (transaction, props) {
11392 var ret = '<' + this._currentElement.type;
11393
11394 for (var propKey in props) {
11395 if (!props.hasOwnProperty(propKey)) {
11396 continue;
11397 }
11398 var propValue = props[propKey];
11399 if (propValue == null) {
11400 continue;
11401 }
11402 if (registrationNameModules.hasOwnProperty(propKey)) {
11403 if (propValue) {
11404 enqueuePutListener(this, propKey, propValue, transaction);
11405 }
11406 } else {
11407 if (propKey === STYLE) {
11408 if (propValue) {
11409 if ((undefined) !== 'production') {
11410 // See `_updateDOMProperties`. style block
11411 this._previousStyle = propValue;
11412 }
11413 propValue = this._previousStyleCopy = _assign({}, props.style);
11414 }
11415 propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);
11416 }
11417 var markup = null;
11418 if (this._tag != null && isCustomComponent(this._tag, props)) {
11419 if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
11420 markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);
11421 }
11422 } else {
11423 markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);
11424 }
11425 if (markup) {
11426 ret += ' ' + markup;
11427 }
11428 }
11429 }
11430
11431 // For static pages, no need to put React ID and checksum. Saves lots of
11432 // bytes.
11433 if (transaction.renderToStaticMarkup) {
11434 return ret;
11435 }
11436
11437 if (!this._hostParent) {
11438 ret += ' ' + DOMPropertyOperations.createMarkupForRoot();
11439 }
11440 ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);
11441 return ret;
11442 },
11443
11444 /**
11445 * Creates markup for the content between the tags.
11446 *
11447 * @private
11448 * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11449 * @param {object} props
11450 * @param {object} context
11451 * @return {string} Content markup.
11452 */
11453 _createContentMarkup: function (transaction, props, context) {
11454 var ret = '';
11455
11456 // Intentional use of != to avoid catching zero/false.
11457 var innerHTML = props.dangerouslySetInnerHTML;
11458 if (innerHTML != null) {
11459 if (innerHTML.__html != null) {
11460 ret = innerHTML.__html;
11461 }
11462 } else {
11463 var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;
11464 var childrenToUse = contentToUse != null ? null : props.children;
11465 if (contentToUse != null) {
11466 // TODO: Validate that text is allowed as a child of this node
11467 ret = escapeTextContentForBrowser(contentToUse);
11468 if ((undefined) !== 'production') {
11469 setAndValidateContentChildDev.call(this, contentToUse);
11470 }
11471 } else if (childrenToUse != null) {
11472 var mountImages = this.mountChildren(childrenToUse, transaction, context);
11473 ret = mountImages.join('');
11474 }
11475 }
11476 if (newlineEatingTags[this._tag] && ret.charAt(0) === '\n') {
11477 // text/html ignores the first character in these tags if it's a newline
11478 // Prefer to break application/xml over text/html (for now) by adding
11479 // a newline specifically to get eaten by the parser. (Alternately for
11480 // textareas, replacing "^\n" with "\r\n" doesn't get eaten, and the first
11481 // \r is normalized out by HTMLTextAreaElement#value.)
11482 // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>
11483 // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>
11484 // See: <http://www.w3.org/TR/html5/syntax.html#newlines>
11485 // See: Parsing of "textarea" "listing" and "pre" elements
11486 // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>
11487 return '\n' + ret;
11488 } else {
11489 return ret;
11490 }
11491 },
11492
11493 _createInitialChildren: function (transaction, props, context, lazyTree) {
11494 // Intentional use of != to avoid catching zero/false.
11495 var innerHTML = props.dangerouslySetInnerHTML;
11496 if (innerHTML != null) {
11497 if (innerHTML.__html != null) {
11498 DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);
11499 }
11500 } else {
11501 var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;
11502 var childrenToUse = contentToUse != null ? null : props.children;
11503 if (contentToUse != null) {
11504 // TODO: Validate that text is allowed as a child of this node
11505 if ((undefined) !== 'production') {
11506 setAndValidateContentChildDev.call(this, contentToUse);
11507 }
11508 DOMLazyTree.queueText(lazyTree, contentToUse);
11509 } else if (childrenToUse != null) {
11510 var mountImages = this.mountChildren(childrenToUse, transaction, context);
11511 for (var i = 0; i < mountImages.length; i++) {
11512 DOMLazyTree.queueChild(lazyTree, mountImages[i]);
11513 }
11514 }
11515 }
11516 },
11517
11518 /**
11519 * Receives a next element and updates the component.
11520 *
11521 * @internal
11522 * @param {ReactElement} nextElement
11523 * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11524 * @param {object} context
11525 */
11526 receiveComponent: function (nextElement, transaction, context) {
11527 var prevElement = this._currentElement;
11528 this._currentElement = nextElement;
11529 this.updateComponent(transaction, prevElement, nextElement, context);
11530 },
11531
11532 /**
11533 * Updates a DOM component after it has already been allocated and
11534 * attached to the DOM. Reconciles the root DOM node, then recurses.
11535 *
11536 * @param {ReactReconcileTransaction} transaction
11537 * @param {ReactElement} prevElement
11538 * @param {ReactElement} nextElement
11539 * @internal
11540 * @overridable
11541 */
11542 updateComponent: function (transaction, prevElement, nextElement, context) {
11543 var lastProps = prevElement.props;
11544 var nextProps = this._currentElement.props;
11545
11546 switch (this._tag) {
11547 case 'button':
11548 lastProps = ReactDOMButton.getHostProps(this, lastProps);
11549 nextProps = ReactDOMButton.getHostProps(this, nextProps);
11550 break;
11551 case 'input':
11552 lastProps = ReactDOMInput.getHostProps(this, lastProps);
11553 nextProps = ReactDOMInput.getHostProps(this, nextProps);
11554 break;
11555 case 'option':
11556 lastProps = ReactDOMOption.getHostProps(this, lastProps);
11557 nextProps = ReactDOMOption.getHostProps(this, nextProps);
11558 break;
11559 case 'select':
11560 lastProps = ReactDOMSelect.getHostProps(this, lastProps);
11561 nextProps = ReactDOMSelect.getHostProps(this, nextProps);
11562 break;
11563 case 'textarea':
11564 lastProps = ReactDOMTextarea.getHostProps(this, lastProps);
11565 nextProps = ReactDOMTextarea.getHostProps(this, nextProps);
11566 break;
11567 }
11568
11569 assertValidProps(this, nextProps);
11570 this._updateDOMProperties(lastProps, nextProps, transaction);
11571 this._updateDOMChildren(lastProps, nextProps, transaction, context);
11572
11573 switch (this._tag) {
11574 case 'input':
11575 // Update the wrapper around inputs *after* updating props. This has to
11576 // happen after `_updateDOMProperties`. Otherwise HTML5 input validations
11577 // raise warnings and prevent the new value from being assigned.
11578 ReactDOMInput.updateWrapper(this);
11579 break;
11580 case 'textarea':
11581 ReactDOMTextarea.updateWrapper(this);
11582 break;
11583 case 'select':
11584 // <select> value update needs to occur after <option> children
11585 // reconciliation
11586 transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);
11587 break;
11588 }
11589 },
11590
11591 /**
11592 * Reconciles the properties by detecting differences in property values and
11593 * updating the DOM as necessary. This function is probably the single most
11594 * critical path for performance optimization.
11595 *
11596 * TODO: Benchmark whether checking for changed values in memory actually
11597 * improves performance (especially statically positioned elements).
11598 * TODO: Benchmark the effects of putting this at the top since 99% of props
11599 * do not change for a given reconciliation.
11600 * TODO: Benchmark areas that can be improved with caching.
11601 *
11602 * @private
11603 * @param {object} lastProps
11604 * @param {object} nextProps
11605 * @param {?DOMElement} node
11606 */
11607 _updateDOMProperties: function (lastProps, nextProps, transaction) {
11608 var propKey;
11609 var styleName;
11610 var styleUpdates;
11611 for (propKey in lastProps) {
11612 if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {
11613 continue;
11614 }
11615 if (propKey === STYLE) {
11616 var lastStyle = this._previousStyleCopy;
11617 for (styleName in lastStyle) {
11618 if (lastStyle.hasOwnProperty(styleName)) {
11619 styleUpdates = styleUpdates || {};
11620 styleUpdates[styleName] = '';
11621 }
11622 }
11623 this._previousStyleCopy = null;
11624 } else if (registrationNameModules.hasOwnProperty(propKey)) {
11625 if (lastProps[propKey]) {
11626 // Only call deleteListener if there was a listener previously or
11627 // else willDeleteListener gets called when there wasn't actually a
11628 // listener (e.g., onClick={null})
11629 deleteListener(this, propKey);
11630 }
11631 } else if (isCustomComponent(this._tag, lastProps)) {
11632 if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
11633 DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);
11634 }
11635 } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {
11636 DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);
11637 }
11638 }
11639 for (propKey in nextProps) {
11640 var nextProp = nextProps[propKey];
11641 var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;
11642 if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {
11643 continue;
11644 }
11645 if (propKey === STYLE) {
11646 if (nextProp) {
11647 if ((undefined) !== 'production') {
11648 checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);
11649 this._previousStyle = nextProp;
11650 }
11651 nextProp = this._previousStyleCopy = _assign({}, nextProp);
11652 } else {
11653 this._previousStyleCopy = null;
11654 }
11655 if (lastProp) {
11656 // Unset styles on `lastProp` but not on `nextProp`.
11657 for (styleName in lastProp) {
11658 if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {
11659 styleUpdates = styleUpdates || {};
11660 styleUpdates[styleName] = '';
11661 }
11662 }
11663 // Update styles that changed since `lastProp`.
11664 for (styleName in nextProp) {
11665 if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {
11666 styleUpdates = styleUpdates || {};
11667 styleUpdates[styleName] = nextProp[styleName];
11668 }
11669 }
11670 } else {
11671 // Relies on `updateStylesByID` not mutating `styleUpdates`.
11672 styleUpdates = nextProp;
11673 }
11674 } else if (registrationNameModules.hasOwnProperty(propKey)) {
11675 if (nextProp) {
11676 enqueuePutListener(this, propKey, nextProp, transaction);
11677 } else if (lastProp) {
11678 deleteListener(this, propKey);
11679 }
11680 } else if (isCustomComponent(this._tag, nextProps)) {
11681 if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
11682 DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);
11683 }
11684 } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {
11685 var node = getNode(this);
11686 // If we're updating to null or undefined, we should remove the property
11687 // from the DOM node instead of inadvertently setting to a string. This
11688 // brings us in line with the same behavior we have on initial render.
11689 if (nextProp != null) {
11690 DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);
11691 } else {
11692 DOMPropertyOperations.deleteValueForProperty(node, propKey);
11693 }
11694 }
11695 }
11696 if (styleUpdates) {
11697 CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);
11698 }
11699 },
11700
11701 /**
11702 * Reconciles the children with the various properties that affect the
11703 * children content.
11704 *
11705 * @param {object} lastProps
11706 * @param {object} nextProps
11707 * @param {ReactReconcileTransaction} transaction
11708 * @param {object} context
11709 */
11710 _updateDOMChildren: function (lastProps, nextProps, transaction, context) {
11711 var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;
11712 var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;
11713
11714 var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;
11715 var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;
11716
11717 // Note the use of `!=` which checks for null or undefined.
11718 var lastChildren = lastContent != null ? null : lastProps.children;
11719 var nextChildren = nextContent != null ? null : nextProps.children;
11720
11721 // If we're switching from children to content/html or vice versa, remove
11722 // the old content
11723 var lastHasContentOrHtml = lastContent != null || lastHtml != null;
11724 var nextHasContentOrHtml = nextContent != null || nextHtml != null;
11725 if (lastChildren != null && nextChildren == null) {
11726 this.updateChildren(null, transaction, context);
11727 } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {
11728 this.updateTextContent('');
11729 if ((undefined) !== 'production') {
11730 ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
11731 }
11732 }
11733
11734 if (nextContent != null) {
11735 if (lastContent !== nextContent) {
11736 this.updateTextContent('' + nextContent);
11737 if ((undefined) !== 'production') {
11738 setAndValidateContentChildDev.call(this, nextContent);
11739 }
11740 }
11741 } else if (nextHtml != null) {
11742 if (lastHtml !== nextHtml) {
11743 this.updateMarkup('' + nextHtml);
11744 }
11745 if ((undefined) !== 'production') {
11746 ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
11747 }
11748 } else if (nextChildren != null) {
11749 if ((undefined) !== 'production') {
11750 setAndValidateContentChildDev.call(this, null);
11751 }
11752
11753 this.updateChildren(nextChildren, transaction, context);
11754 }
11755 },
11756
11757 getHostNode: function () {
11758 return getNode(this);
11759 },
11760
11761 /**
11762 * Destroys all event registrations for this instance. Does not remove from
11763 * the DOM. That must be done by the parent.
11764 *
11765 * @internal
11766 */
11767 unmountComponent: function (safely) {
11768 switch (this._tag) {
11769 case 'audio':
11770 case 'form':
11771 case 'iframe':
11772 case 'img':
11773 case 'link':
11774 case 'object':
11775 case 'source':
11776 case 'video':
11777 var listeners = this._wrapperState.listeners;
11778 if (listeners) {
11779 for (var i = 0; i < listeners.length; i++) {
11780 listeners[i].remove();
11781 }
11782 }
11783 break;
11784 case 'html':
11785 case 'head':
11786 case 'body':
11787 /**
11788 * Components like <html> <head> and <body> can't be removed or added
11789 * easily in a cross-browser way, however it's valuable to be able to
11790 * take advantage of React's reconciliation for styling and <title>
11791 * management. So we just document it and throw in dangerous cases.
11792 */
11793 true ? (undefined) !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;
11794 break;
11795 }
11796
11797 this.unmountChildren(safely);
11798 ReactDOMComponentTree.uncacheNode(this);
11799 EventPluginHub.deleteAllListeners(this);
11800 this._rootNodeID = 0;
11801 this._domID = 0;
11802 this._wrapperState = null;
11803
11804 if ((undefined) !== 'production') {
11805 setAndValidateContentChildDev.call(this, null);
11806 }
11807 },
11808
11809 getPublicInstance: function () {
11810 return getNode(this);
11811 }
11812
11813 };
11814
11815 _assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);
11816
11817 module.exports = ReactDOMComponent;
11818
11819/***/ },
11820/* 183 */
11821/***/ function(module, exports, __webpack_require__) {
11822
11823 /**
11824 * Copyright 2013-present, Facebook, Inc.
11825 * All rights reserved.
11826 *
11827 * This source code is licensed under the BSD-style license found in the
11828 * LICENSE file in the root directory of this source tree. An additional grant
11829 * of patent rights can be found in the PATENTS file in the same directory.
11830 *
11831 * @providesModule AutoFocusUtils
11832 */
11833
11834 'use strict';
11835
11836 var ReactDOMComponentTree = __webpack_require__(124);
11837
11838 var focusNode = __webpack_require__(184);
11839
11840 var AutoFocusUtils = {
11841 focusDOMComponent: function () {
11842 focusNode(ReactDOMComponentTree.getNodeFromInstance(this));
11843 }
11844 };
11845
11846 module.exports = AutoFocusUtils;
11847
11848/***/ },
11849/* 184 */
11850/***/ function(module, exports) {
11851
11852 /**
11853 * Copyright (c) 2013-present, Facebook, Inc.
11854 * All rights reserved.
11855 *
11856 * This source code is licensed under the BSD-style license found in the
11857 * LICENSE file in the root directory of this source tree. An additional grant
11858 * of patent rights can be found in the PATENTS file in the same directory.
11859 *
11860 */
11861
11862 'use strict';
11863
11864 /**
11865 * @param {DOMElement} node input/textarea to focus
11866 */
11867
11868 function focusNode(node) {
11869 // IE8 can throw "Can't move focus to the control because it is invisible,
11870 // not enabled, or of a type that does not accept the focus." for all kinds of
11871 // reasons that are too expensive and fragile to test.
11872 try {
11873 node.focus();
11874 } catch (e) {}
11875 }
11876
11877 module.exports = focusNode;
11878
11879/***/ },
11880/* 185 */
11881/***/ function(module, exports, __webpack_require__) {
11882
11883 /**
11884 * Copyright 2013-present, Facebook, Inc.
11885 * All rights reserved.
11886 *
11887 * This source code is licensed under the BSD-style license found in the
11888 * LICENSE file in the root directory of this source tree. An additional grant
11889 * of patent rights can be found in the PATENTS file in the same directory.
11890 *
11891 * @providesModule CSSPropertyOperations
11892 */
11893
11894 'use strict';
11895
11896 var CSSProperty = __webpack_require__(186);
11897 var ExecutionEnvironment = __webpack_require__(137);
11898 var ReactInstrumentation = __webpack_require__(150);
11899
11900 var camelizeStyleName = __webpack_require__(187);
11901 var dangerousStyleValue = __webpack_require__(189);
11902 var hyphenateStyleName = __webpack_require__(190);
11903 var memoizeStringOnly = __webpack_require__(192);
11904 var warning = __webpack_require__(98);
11905
11906 var processStyleName = memoizeStringOnly(function (styleName) {
11907 return hyphenateStyleName(styleName);
11908 });
11909
11910 var hasShorthandPropertyBug = false;
11911 var styleFloatAccessor = 'cssFloat';
11912 if (ExecutionEnvironment.canUseDOM) {
11913 var tempStyle = document.createElement('div').style;
11914 try {
11915 // IE8 throws "Invalid argument." if resetting shorthand style properties.
11916 tempStyle.font = '';
11917 } catch (e) {
11918 hasShorthandPropertyBug = true;
11919 }
11920 // IE8 only supports accessing cssFloat (standard) as styleFloat
11921 if (document.documentElement.style.cssFloat === undefined) {
11922 styleFloatAccessor = 'styleFloat';
11923 }
11924 }
11925
11926 if ((undefined) !== 'production') {
11927 // 'msTransform' is correct, but the other prefixes should be capitalized
11928 var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
11929
11930 // style values shouldn't contain a semicolon
11931 var badStyleValueWithSemicolonPattern = /;\s*$/;
11932
11933 var warnedStyleNames = {};
11934 var warnedStyleValues = {};
11935 var warnedForNaNValue = false;
11936
11937 var warnHyphenatedStyleName = function (name, owner) {
11938 if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
11939 return;
11940 }
11941
11942 warnedStyleNames[name] = true;
11943 (undefined) !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;
11944 };
11945
11946 var warnBadVendoredStyleName = function (name, owner) {
11947 if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
11948 return;
11949 }
11950
11951 warnedStyleNames[name] = true;
11952 (undefined) !== '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;
11953 };
11954
11955 var warnStyleValueWithSemicolon = function (name, value, owner) {
11956 if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
11957 return;
11958 }
11959
11960 warnedStyleValues[value] = true;
11961 (undefined) !== 'production' ? warning(false, 'Style property values shouldn\'t contain a semicolon.%s ' + 'Try "%s: %s" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;
11962 };
11963
11964 var warnStyleValueIsNaN = function (name, value, owner) {
11965 if (warnedForNaNValue) {
11966 return;
11967 }
11968
11969 warnedForNaNValue = true;
11970 (undefined) !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;
11971 };
11972
11973 var checkRenderMessage = function (owner) {
11974 if (owner) {
11975 var name = owner.getName();
11976 if (name) {
11977 return ' Check the render method of `' + name + '`.';
11978 }
11979 }
11980 return '';
11981 };
11982
11983 /**
11984 * @param {string} name
11985 * @param {*} value
11986 * @param {ReactDOMComponent} component
11987 */
11988 var warnValidStyle = function (name, value, component) {
11989 var owner;
11990 if (component) {
11991 owner = component._currentElement._owner;
11992 }
11993 if (name.indexOf('-') > -1) {
11994 warnHyphenatedStyleName(name, owner);
11995 } else if (badVendoredStyleNamePattern.test(name)) {
11996 warnBadVendoredStyleName(name, owner);
11997 } else if (badStyleValueWithSemicolonPattern.test(value)) {
11998 warnStyleValueWithSemicolon(name, value, owner);
11999 }
12000
12001 if (typeof value === 'number' && isNaN(value)) {
12002 warnStyleValueIsNaN(name, value, owner);
12003 }
12004 };
12005 }
12006
12007 /**
12008 * Operations for dealing with CSS properties.
12009 */
12010 var CSSPropertyOperations = {
12011
12012 /**
12013 * Serializes a mapping of style properties for use as inline styles:
12014 *
12015 * > createMarkupForStyles({width: '200px', height: 0})
12016 * "width:200px;height:0;"
12017 *
12018 * Undefined values are ignored so that declarative programming is easier.
12019 * The result should be HTML-escaped before insertion into the DOM.
12020 *
12021 * @param {object} styles
12022 * @param {ReactDOMComponent} component
12023 * @return {?string}
12024 */
12025 createMarkupForStyles: function (styles, component) {
12026 var serialized = '';
12027 for (var styleName in styles) {
12028 if (!styles.hasOwnProperty(styleName)) {
12029 continue;
12030 }
12031 var styleValue = styles[styleName];
12032 if ((undefined) !== 'production') {
12033 warnValidStyle(styleName, styleValue, component);
12034 }
12035 if (styleValue != null) {
12036 serialized += processStyleName(styleName) + ':';
12037 serialized += dangerousStyleValue(styleName, styleValue, component) + ';';
12038 }
12039 }
12040 return serialized || null;
12041 },
12042
12043 /**
12044 * Sets the value for multiple styles on a node. If a value is specified as
12045 * '' (empty string), the corresponding style property will be unset.
12046 *
12047 * @param {DOMElement} node
12048 * @param {object} styles
12049 * @param {ReactDOMComponent} component
12050 */
12051 setValueForStyles: function (node, styles, component) {
12052 if ((undefined) !== 'production') {
12053 ReactInstrumentation.debugTool.onHostOperation(component._debugID, 'update styles', styles);
12054 }
12055
12056 var style = node.style;
12057 for (var styleName in styles) {
12058 if (!styles.hasOwnProperty(styleName)) {
12059 continue;
12060 }
12061 if ((undefined) !== 'production') {
12062 warnValidStyle(styleName, styles[styleName], component);
12063 }
12064 var styleValue = dangerousStyleValue(styleName, styles[styleName], component);
12065 if (styleName === 'float' || styleName === 'cssFloat') {
12066 styleName = styleFloatAccessor;
12067 }
12068 if (styleValue) {
12069 style[styleName] = styleValue;
12070 } else {
12071 var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];
12072 if (expansion) {
12073 // Shorthand property that IE8 won't like unsetting, so unset each
12074 // component to placate it
12075 for (var individualStyleName in expansion) {
12076 style[individualStyleName] = '';
12077 }
12078 } else {
12079 style[styleName] = '';
12080 }
12081 }
12082 }
12083 }
12084
12085 };
12086
12087 module.exports = CSSPropertyOperations;
12088
12089/***/ },
12090/* 186 */
12091/***/ function(module, exports) {
12092
12093 /**
12094 * Copyright 2013-present, Facebook, Inc.
12095 * All rights reserved.
12096 *
12097 * This source code is licensed under the BSD-style license found in the
12098 * LICENSE file in the root directory of this source tree. An additional grant
12099 * of patent rights can be found in the PATENTS file in the same directory.
12100 *
12101 * @providesModule CSSProperty
12102 */
12103
12104 'use strict';
12105
12106 /**
12107 * CSS properties which accept numbers but are not in units of "px".
12108 */
12109
12110 var isUnitlessNumber = {
12111 animationIterationCount: true,
12112 borderImageOutset: true,
12113 borderImageSlice: true,
12114 borderImageWidth: true,
12115 boxFlex: true,
12116 boxFlexGroup: true,
12117 boxOrdinalGroup: true,
12118 columnCount: true,
12119 flex: true,
12120 flexGrow: true,
12121 flexPositive: true,
12122 flexShrink: true,
12123 flexNegative: true,
12124 flexOrder: true,
12125 gridRow: true,
12126 gridColumn: true,
12127 fontWeight: true,
12128 lineClamp: true,
12129 lineHeight: true,
12130 opacity: true,
12131 order: true,
12132 orphans: true,
12133 tabSize: true,
12134 widows: true,
12135 zIndex: true,
12136 zoom: true,
12137
12138 // SVG-related properties
12139 fillOpacity: true,
12140 floodOpacity: true,
12141 stopOpacity: true,
12142 strokeDasharray: true,
12143 strokeDashoffset: true,
12144 strokeMiterlimit: true,
12145 strokeOpacity: true,
12146 strokeWidth: true
12147 };
12148
12149 /**
12150 * @param {string} prefix vendor-specific prefix, eg: Webkit
12151 * @param {string} key style name, eg: transitionDuration
12152 * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
12153 * WebkitTransitionDuration
12154 */
12155 function prefixKey(prefix, key) {
12156 return prefix + key.charAt(0).toUpperCase() + key.substring(1);
12157 }
12158
12159 /**
12160 * Support style names that may come passed in prefixed by adding permutations
12161 * of vendor prefixes.
12162 */
12163 var prefixes = ['Webkit', 'ms', 'Moz', 'O'];
12164
12165 // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
12166 // infinite loop, because it iterates over the newly added props too.
12167 Object.keys(isUnitlessNumber).forEach(function (prop) {
12168 prefixes.forEach(function (prefix) {
12169 isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
12170 });
12171 });
12172
12173 /**
12174 * Most style properties can be unset by doing .style[prop] = '' but IE8
12175 * doesn't like doing that with shorthand properties so for the properties that
12176 * IE8 breaks on, which are listed here, we instead unset each of the
12177 * individual properties. See http://bugs.jquery.com/ticket/12385.
12178 * The 4-value 'clock' properties like margin, padding, border-width seem to
12179 * behave without any problems. Curiously, list-style works too without any
12180 * special prodding.
12181 */
12182 var shorthandPropertyExpansions = {
12183 background: {
12184 backgroundAttachment: true,
12185 backgroundColor: true,
12186 backgroundImage: true,
12187 backgroundPositionX: true,
12188 backgroundPositionY: true,
12189 backgroundRepeat: true
12190 },
12191 backgroundPosition: {
12192 backgroundPositionX: true,
12193 backgroundPositionY: true
12194 },
12195 border: {
12196 borderWidth: true,
12197 borderStyle: true,
12198 borderColor: true
12199 },
12200 borderBottom: {
12201 borderBottomWidth: true,
12202 borderBottomStyle: true,
12203 borderBottomColor: true
12204 },
12205 borderLeft: {
12206 borderLeftWidth: true,
12207 borderLeftStyle: true,
12208 borderLeftColor: true
12209 },
12210 borderRight: {
12211 borderRightWidth: true,
12212 borderRightStyle: true,
12213 borderRightColor: true
12214 },
12215 borderTop: {
12216 borderTopWidth: true,
12217 borderTopStyle: true,
12218 borderTopColor: true
12219 },
12220 font: {
12221 fontStyle: true,
12222 fontVariant: true,
12223 fontWeight: true,
12224 fontSize: true,
12225 lineHeight: true,
12226 fontFamily: true
12227 },
12228 outline: {
12229 outlineWidth: true,
12230 outlineStyle: true,
12231 outlineColor: true
12232 }
12233 };
12234
12235 var CSSProperty = {
12236 isUnitlessNumber: isUnitlessNumber,
12237 shorthandPropertyExpansions: shorthandPropertyExpansions
12238 };
12239
12240 module.exports = CSSProperty;
12241
12242/***/ },
12243/* 187 */
12244/***/ function(module, exports, __webpack_require__) {
12245
12246 /**
12247 * Copyright (c) 2013-present, Facebook, Inc.
12248 * All rights reserved.
12249 *
12250 * This source code is licensed under the BSD-style license found in the
12251 * LICENSE file in the root directory of this source tree. An additional grant
12252 * of patent rights can be found in the PATENTS file in the same directory.
12253 *
12254 * @typechecks
12255 */
12256
12257 'use strict';
12258
12259 var camelize = __webpack_require__(188);
12260
12261 var msPattern = /^-ms-/;
12262
12263 /**
12264 * Camelcases a hyphenated CSS property name, for example:
12265 *
12266 * > camelizeStyleName('background-color')
12267 * < "backgroundColor"
12268 * > camelizeStyleName('-moz-transition')
12269 * < "MozTransition"
12270 * > camelizeStyleName('-ms-transition')
12271 * < "msTransition"
12272 *
12273 * As Andi Smith suggests
12274 * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix
12275 * is converted to lowercase `ms`.
12276 *
12277 * @param {string} string
12278 * @return {string}
12279 */
12280 function camelizeStyleName(string) {
12281 return camelize(string.replace(msPattern, 'ms-'));
12282 }
12283
12284 module.exports = camelizeStyleName;
12285
12286/***/ },
12287/* 188 */
12288/***/ function(module, exports) {
12289
12290 "use strict";
12291
12292 /**
12293 * Copyright (c) 2013-present, Facebook, Inc.
12294 * All rights reserved.
12295 *
12296 * This source code is licensed under the BSD-style license found in the
12297 * LICENSE file in the root directory of this source tree. An additional grant
12298 * of patent rights can be found in the PATENTS file in the same directory.
12299 *
12300 * @typechecks
12301 */
12302
12303 var _hyphenPattern = /-(.)/g;
12304
12305 /**
12306 * Camelcases a hyphenated string, for example:
12307 *
12308 * > camelize('background-color')
12309 * < "backgroundColor"
12310 *
12311 * @param {string} string
12312 * @return {string}
12313 */
12314 function camelize(string) {
12315 return string.replace(_hyphenPattern, function (_, character) {
12316 return character.toUpperCase();
12317 });
12318 }
12319
12320 module.exports = camelize;
12321
12322/***/ },
12323/* 189 */
12324/***/ function(module, exports, __webpack_require__) {
12325
12326 /**
12327 * Copyright 2013-present, Facebook, Inc.
12328 * All rights reserved.
12329 *
12330 * This source code is licensed under the BSD-style license found in the
12331 * LICENSE file in the root directory of this source tree. An additional grant
12332 * of patent rights can be found in the PATENTS file in the same directory.
12333 *
12334 * @providesModule dangerousStyleValue
12335 */
12336
12337 'use strict';
12338
12339 var CSSProperty = __webpack_require__(186);
12340 var warning = __webpack_require__(98);
12341
12342 var isUnitlessNumber = CSSProperty.isUnitlessNumber;
12343 var styleWarnings = {};
12344
12345 /**
12346 * Convert a value into the proper css writable value. The style name `name`
12347 * should be logical (no hyphens), as specified
12348 * in `CSSProperty.isUnitlessNumber`.
12349 *
12350 * @param {string} name CSS property name such as `topMargin`.
12351 * @param {*} value CSS property value such as `10px`.
12352 * @param {ReactDOMComponent} component
12353 * @return {string} Normalized style value with dimensions applied.
12354 */
12355 function dangerousStyleValue(name, value, component) {
12356 // Note that we've removed escapeTextForBrowser() calls here since the
12357 // whole string will be escaped when the attribute is injected into
12358 // the markup. If you provide unsafe user data here they can inject
12359 // arbitrary CSS which may be problematic (I couldn't repro this):
12360 // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
12361 // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/
12362 // This is not an XSS hole but instead a potential CSS injection issue
12363 // which has lead to a greater discussion about how we're going to
12364 // trust URLs moving forward. See #2115901
12365
12366 var isEmpty = value == null || typeof value === 'boolean' || value === '';
12367 if (isEmpty) {
12368 return '';
12369 }
12370
12371 var isNonNumeric = isNaN(value);
12372 if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {
12373 return '' + value; // cast to string
12374 }
12375
12376 if (typeof value === 'string') {
12377 if ((undefined) !== 'production') {
12378 // Allow '0' to pass through without warning. 0 is already special and
12379 // doesn't require units, so we don't need to warn about it.
12380 if (component && value !== '0') {
12381 var owner = component._currentElement._owner;
12382 var ownerName = owner ? owner.getName() : null;
12383 if (ownerName && !styleWarnings[ownerName]) {
12384 styleWarnings[ownerName] = {};
12385 }
12386 var warned = false;
12387 if (ownerName) {
12388 var warnings = styleWarnings[ownerName];
12389 warned = warnings[name];
12390 if (!warned) {
12391 warnings[name] = true;
12392 }
12393 }
12394 if (!warned) {
12395 (undefined) !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;
12396 }
12397 }
12398 }
12399 value = value.trim();
12400 }
12401 return value + 'px';
12402 }
12403
12404 module.exports = dangerousStyleValue;
12405
12406/***/ },
12407/* 190 */
12408/***/ function(module, exports, __webpack_require__) {
12409
12410 /**
12411 * Copyright (c) 2013-present, Facebook, Inc.
12412 * All rights reserved.
12413 *
12414 * This source code is licensed under the BSD-style license found in the
12415 * LICENSE file in the root directory of this source tree. An additional grant
12416 * of patent rights can be found in the PATENTS file in the same directory.
12417 *
12418 * @typechecks
12419 */
12420
12421 'use strict';
12422
12423 var hyphenate = __webpack_require__(191);
12424
12425 var msPattern = /^ms-/;
12426
12427 /**
12428 * Hyphenates a camelcased CSS property name, for example:
12429 *
12430 * > hyphenateStyleName('backgroundColor')
12431 * < "background-color"
12432 * > hyphenateStyleName('MozTransition')
12433 * < "-moz-transition"
12434 * > hyphenateStyleName('msTransition')
12435 * < "-ms-transition"
12436 *
12437 * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
12438 * is converted to `-ms-`.
12439 *
12440 * @param {string} string
12441 * @return {string}
12442 */
12443 function hyphenateStyleName(string) {
12444 return hyphenate(string).replace(msPattern, '-ms-');
12445 }
12446
12447 module.exports = hyphenateStyleName;
12448
12449/***/ },
12450/* 191 */
12451/***/ function(module, exports) {
12452
12453 'use strict';
12454
12455 /**
12456 * Copyright (c) 2013-present, Facebook, Inc.
12457 * All rights reserved.
12458 *
12459 * This source code is licensed under the BSD-style license found in the
12460 * LICENSE file in the root directory of this source tree. An additional grant
12461 * of patent rights can be found in the PATENTS file in the same directory.
12462 *
12463 * @typechecks
12464 */
12465
12466 var _uppercasePattern = /([A-Z])/g;
12467
12468 /**
12469 * Hyphenates a camelcased string, for example:
12470 *
12471 * > hyphenate('backgroundColor')
12472 * < "background-color"
12473 *
12474 * For CSS style names, use `hyphenateStyleName` instead which works properly
12475 * with all vendor prefixes, including `ms`.
12476 *
12477 * @param {string} string
12478 * @return {string}
12479 */
12480 function hyphenate(string) {
12481 return string.replace(_uppercasePattern, '-$1').toLowerCase();
12482 }
12483
12484 module.exports = hyphenate;
12485
12486/***/ },
12487/* 192 */
12488/***/ function(module, exports) {
12489
12490 /**
12491 * Copyright (c) 2013-present, Facebook, Inc.
12492 * All rights reserved.
12493 *
12494 * This source code is licensed under the BSD-style license found in the
12495 * LICENSE file in the root directory of this source tree. An additional grant
12496 * of patent rights can be found in the PATENTS file in the same directory.
12497 *
12498 *
12499 * @typechecks static-only
12500 */
12501
12502 'use strict';
12503
12504 /**
12505 * Memoizes the return value of a function that accepts one string argument.
12506 */
12507
12508 function memoizeStringOnly(callback) {
12509 var cache = {};
12510 return function (string) {
12511 if (!cache.hasOwnProperty(string)) {
12512 cache[string] = callback.call(this, string);
12513 }
12514 return cache[string];
12515 };
12516 }
12517
12518 module.exports = memoizeStringOnly;
12519
12520/***/ },
12521/* 193 */
12522/***/ function(module, exports, __webpack_require__) {
12523
12524 /**
12525 * Copyright 2013-present, Facebook, Inc.
12526 * All rights reserved.
12527 *
12528 * This source code is licensed under the BSD-style license found in the
12529 * LICENSE file in the root directory of this source tree. An additional grant
12530 * of patent rights can be found in the PATENTS file in the same directory.
12531 *
12532 * @providesModule DOMPropertyOperations
12533 */
12534
12535 'use strict';
12536
12537 var DOMProperty = __webpack_require__(125);
12538 var ReactDOMComponentTree = __webpack_require__(124);
12539 var ReactInstrumentation = __webpack_require__(150);
12540
12541 var quoteAttributeValueForBrowser = __webpack_require__(194);
12542 var warning = __webpack_require__(98);
12543
12544 var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
12545 var illegalAttributeNameCache = {};
12546 var validatedAttributeNameCache = {};
12547
12548 function isAttributeNameSafe(attributeName) {
12549 if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {
12550 return true;
12551 }
12552 if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {
12553 return false;
12554 }
12555 if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
12556 validatedAttributeNameCache[attributeName] = true;
12557 return true;
12558 }
12559 illegalAttributeNameCache[attributeName] = true;
12560 (undefined) !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;
12561 return false;
12562 }
12563
12564 function shouldIgnoreValue(propertyInfo, value) {
12565 return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;
12566 }
12567
12568 /**
12569 * Operations for dealing with DOM properties.
12570 */
12571 var DOMPropertyOperations = {
12572
12573 /**
12574 * Creates markup for the ID property.
12575 *
12576 * @param {string} id Unescaped ID.
12577 * @return {string} Markup string.
12578 */
12579 createMarkupForID: function (id) {
12580 return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);
12581 },
12582
12583 setAttributeForID: function (node, id) {
12584 node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);
12585 },
12586
12587 createMarkupForRoot: function () {
12588 return DOMProperty.ROOT_ATTRIBUTE_NAME + '=""';
12589 },
12590
12591 setAttributeForRoot: function (node) {
12592 node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');
12593 },
12594
12595 /**
12596 * Creates markup for a property.
12597 *
12598 * @param {string} name
12599 * @param {*} value
12600 * @return {?string} Markup string, or null if the property was invalid.
12601 */
12602 createMarkupForProperty: function (name, value) {
12603 var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
12604 if (propertyInfo) {
12605 if (shouldIgnoreValue(propertyInfo, value)) {
12606 return '';
12607 }
12608 var attributeName = propertyInfo.attributeName;
12609 if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
12610 return attributeName + '=""';
12611 }
12612 return attributeName + '=' + quoteAttributeValueForBrowser(value);
12613 } else if (DOMProperty.isCustomAttribute(name)) {
12614 if (value == null) {
12615 return '';
12616 }
12617 return name + '=' + quoteAttributeValueForBrowser(value);
12618 }
12619 return null;
12620 },
12621
12622 /**
12623 * Creates markup for a custom property.
12624 *
12625 * @param {string} name
12626 * @param {*} value
12627 * @return {string} Markup string, or empty string if the property was invalid.
12628 */
12629 createMarkupForCustomAttribute: function (name, value) {
12630 if (!isAttributeNameSafe(name) || value == null) {
12631 return '';
12632 }
12633 return name + '=' + quoteAttributeValueForBrowser(value);
12634 },
12635
12636 /**
12637 * Sets the value for a property on a node.
12638 *
12639 * @param {DOMElement} node
12640 * @param {string} name
12641 * @param {*} value
12642 */
12643 setValueForProperty: function (node, name, value) {
12644 var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
12645 if (propertyInfo) {
12646 var mutationMethod = propertyInfo.mutationMethod;
12647 if (mutationMethod) {
12648 mutationMethod(node, value);
12649 } else if (shouldIgnoreValue(propertyInfo, value)) {
12650 this.deleteValueForProperty(node, name);
12651 return;
12652 } else if (propertyInfo.mustUseProperty) {
12653 // Contrary to `setAttribute`, object properties are properly
12654 // `toString`ed by IE8/9.
12655 node[propertyInfo.propertyName] = value;
12656 } else {
12657 var attributeName = propertyInfo.attributeName;
12658 var namespace = propertyInfo.attributeNamespace;
12659 // `setAttribute` with objects becomes only `[object]` in IE8/9,
12660 // ('' + value) makes it output the correct toString()-value.
12661 if (namespace) {
12662 node.setAttributeNS(namespace, attributeName, '' + value);
12663 } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
12664 node.setAttribute(attributeName, '');
12665 } else {
12666 node.setAttribute(attributeName, '' + value);
12667 }
12668 }
12669 } else if (DOMProperty.isCustomAttribute(name)) {
12670 DOMPropertyOperations.setValueForAttribute(node, name, value);
12671 return;
12672 }
12673
12674 if ((undefined) !== 'production') {
12675 var payload = {};
12676 payload[name] = value;
12677 ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'update attribute', payload);
12678 }
12679 },
12680
12681 setValueForAttribute: function (node, name, value) {
12682 if (!isAttributeNameSafe(name)) {
12683 return;
12684 }
12685 if (value == null) {
12686 node.removeAttribute(name);
12687 } else {
12688 node.setAttribute(name, '' + value);
12689 }
12690
12691 if ((undefined) !== 'production') {
12692 var payload = {};
12693 payload[name] = value;
12694 ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'update attribute', payload);
12695 }
12696 },
12697
12698 /**
12699 * Deletes an attributes from a node.
12700 *
12701 * @param {DOMElement} node
12702 * @param {string} name
12703 */
12704 deleteValueForAttribute: function (node, name) {
12705 node.removeAttribute(name);
12706 if ((undefined) !== 'production') {
12707 ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'remove attribute', name);
12708 }
12709 },
12710
12711 /**
12712 * Deletes the value for a property on a node.
12713 *
12714 * @param {DOMElement} node
12715 * @param {string} name
12716 */
12717 deleteValueForProperty: function (node, name) {
12718 var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
12719 if (propertyInfo) {
12720 var mutationMethod = propertyInfo.mutationMethod;
12721 if (mutationMethod) {
12722 mutationMethod(node, undefined);
12723 } else if (propertyInfo.mustUseProperty) {
12724 var propName = propertyInfo.propertyName;
12725 if (propertyInfo.hasBooleanValue) {
12726 node[propName] = false;
12727 } else {
12728 node[propName] = '';
12729 }
12730 } else {
12731 node.removeAttribute(propertyInfo.attributeName);
12732 }
12733 } else if (DOMProperty.isCustomAttribute(name)) {
12734 node.removeAttribute(name);
12735 }
12736
12737 if ((undefined) !== 'production') {
12738 ReactInstrumentation.debugTool.onHostOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'remove attribute', name);
12739 }
12740 }
12741
12742 };
12743
12744 module.exports = DOMPropertyOperations;
12745
12746/***/ },
12747/* 194 */
12748/***/ function(module, exports, __webpack_require__) {
12749
12750 /**
12751 * Copyright 2013-present, Facebook, Inc.
12752 * All rights reserved.
12753 *
12754 * This source code is licensed under the BSD-style license found in the
12755 * LICENSE file in the root directory of this source tree. An additional grant
12756 * of patent rights can be found in the PATENTS file in the same directory.
12757 *
12758 * @providesModule quoteAttributeValueForBrowser
12759 */
12760
12761 'use strict';
12762
12763 var escapeTextContentForBrowser = __webpack_require__(175);
12764
12765 /**
12766 * Escapes attribute value to prevent scripting attacks.
12767 *
12768 * @param {*} value Value to escape.
12769 * @return {string} An escaped string.
12770 */
12771 function quoteAttributeValueForBrowser(value) {
12772 return '"' + escapeTextContentForBrowser(value) + '"';
12773 }
12774
12775 module.exports = quoteAttributeValueForBrowser;
12776
12777/***/ },
12778/* 195 */
12779/***/ function(module, exports, __webpack_require__) {
12780
12781 /**
12782 * Copyright 2013-present, Facebook, Inc.
12783 * All rights reserved.
12784 *
12785 * This source code is licensed under the BSD-style license found in the
12786 * LICENSE file in the root directory of this source tree. An additional grant
12787 * of patent rights can be found in the PATENTS file in the same directory.
12788 *
12789 * @providesModule ReactBrowserEventEmitter
12790 */
12791
12792 'use strict';
12793
12794 var _assign = __webpack_require__(91);
12795
12796 var EventConstants = __webpack_require__(129);
12797 var EventPluginRegistry = __webpack_require__(132);
12798 var ReactEventEmitterMixin = __webpack_require__(196);
12799 var ViewportMetrics = __webpack_require__(165);
12800
12801 var getVendorPrefixedEventName = __webpack_require__(197);
12802 var isEventSupported = __webpack_require__(159);
12803
12804 /**
12805 * Summary of `ReactBrowserEventEmitter` event handling:
12806 *
12807 * - Top-level delegation is used to trap most native browser events. This
12808 * may only occur in the main thread and is the responsibility of
12809 * ReactEventListener, which is injected and can therefore support pluggable
12810 * event sources. This is the only work that occurs in the main thread.
12811 *
12812 * - We normalize and de-duplicate events to account for browser quirks. This
12813 * may be done in the worker thread.
12814 *
12815 * - Forward these native events (with the associated top-level type used to
12816 * trap it) to `EventPluginHub`, which in turn will ask plugins if they want
12817 * to extract any synthetic events.
12818 *
12819 * - The `EventPluginHub` will then process each event by annotating them with
12820 * "dispatches", a sequence of listeners and IDs that care about that event.
12821 *
12822 * - The `EventPluginHub` then dispatches the events.
12823 *
12824 * Overview of React and the event system:
12825 *
12826 * +------------+ .
12827 * | DOM | .
12828 * +------------+ .
12829 * | .
12830 * v .
12831 * +------------+ .
12832 * | ReactEvent | .
12833 * | Listener | .
12834 * +------------+ . +-----------+
12835 * | . +--------+|SimpleEvent|
12836 * | . | |Plugin |
12837 * +-----|------+ . v +-----------+
12838 * | | | . +--------------+ +------------+
12839 * | +-----------.--->|EventPluginHub| | Event |
12840 * | | . | | +-----------+ | Propagators|
12841 * | ReactEvent | . | | |TapEvent | |------------|
12842 * | Emitter | . | |<---+|Plugin | |other plugin|
12843 * | | . | | +-----------+ | utilities |
12844 * | +-----------.--->| | +------------+
12845 * | | | . +--------------+
12846 * +-----|------+ . ^ +-----------+
12847 * | . | |Enter/Leave|
12848 * + . +-------+|Plugin |
12849 * +-------------+ . +-----------+
12850 * | application | .
12851 * |-------------| .
12852 * | | .
12853 * | | .
12854 * +-------------+ .
12855 * .
12856 * React Core . General Purpose Event Plugin System
12857 */
12858
12859 var hasEventPageXY;
12860 var alreadyListeningTo = {};
12861 var isMonitoringScrollValue = false;
12862 var reactTopListenersCounter = 0;
12863
12864 // For events like 'submit' which don't consistently bubble (which we trap at a
12865 // lower node than `document`), binding at `document` would cause duplicate
12866 // events so we don't include them here
12867 var topEventMapping = {
12868 topAbort: 'abort',
12869 topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',
12870 topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',
12871 topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',
12872 topBlur: 'blur',
12873 topCanPlay: 'canplay',
12874 topCanPlayThrough: 'canplaythrough',
12875 topChange: 'change',
12876 topClick: 'click',
12877 topCompositionEnd: 'compositionend',
12878 topCompositionStart: 'compositionstart',
12879 topCompositionUpdate: 'compositionupdate',
12880 topContextMenu: 'contextmenu',
12881 topCopy: 'copy',
12882 topCut: 'cut',
12883 topDoubleClick: 'dblclick',
12884 topDrag: 'drag',
12885 topDragEnd: 'dragend',
12886 topDragEnter: 'dragenter',
12887 topDragExit: 'dragexit',
12888 topDragLeave: 'dragleave',
12889 topDragOver: 'dragover',
12890 topDragStart: 'dragstart',
12891 topDrop: 'drop',
12892 topDurationChange: 'durationchange',
12893 topEmptied: 'emptied',
12894 topEncrypted: 'encrypted',
12895 topEnded: 'ended',
12896 topError: 'error',
12897 topFocus: 'focus',
12898 topInput: 'input',
12899 topKeyDown: 'keydown',
12900 topKeyPress: 'keypress',
12901 topKeyUp: 'keyup',
12902 topLoadedData: 'loadeddata',
12903 topLoadedMetadata: 'loadedmetadata',
12904 topLoadStart: 'loadstart',
12905 topMouseDown: 'mousedown',
12906 topMouseMove: 'mousemove',
12907 topMouseOut: 'mouseout',
12908 topMouseOver: 'mouseover',
12909 topMouseUp: 'mouseup',
12910 topPaste: 'paste',
12911 topPause: 'pause',
12912 topPlay: 'play',
12913 topPlaying: 'playing',
12914 topProgress: 'progress',
12915 topRateChange: 'ratechange',
12916 topScroll: 'scroll',
12917 topSeeked: 'seeked',
12918 topSeeking: 'seeking',
12919 topSelectionChange: 'selectionchange',
12920 topStalled: 'stalled',
12921 topSuspend: 'suspend',
12922 topTextInput: 'textInput',
12923 topTimeUpdate: 'timeupdate',
12924 topTouchCancel: 'touchcancel',
12925 topTouchEnd: 'touchend',
12926 topTouchMove: 'touchmove',
12927 topTouchStart: 'touchstart',
12928 topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',
12929 topVolumeChange: 'volumechange',
12930 topWaiting: 'waiting',
12931 topWheel: 'wheel'
12932 };
12933
12934 /**
12935 * To ensure no conflicts with other potential React instances on the page
12936 */
12937 var topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);
12938
12939 function getListeningForDocument(mountAt) {
12940 // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`
12941 // directly.
12942 if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {
12943 mountAt[topListenersIDKey] = reactTopListenersCounter++;
12944 alreadyListeningTo[mountAt[topListenersIDKey]] = {};
12945 }
12946 return alreadyListeningTo[mountAt[topListenersIDKey]];
12947 }
12948
12949 /**
12950 * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For
12951 * example:
12952 *
12953 * EventPluginHub.putListener('myID', 'onClick', myFunction);
12954 *
12955 * This would allocate a "registration" of `('onClick', myFunction)` on 'myID'.
12956 *
12957 * @internal
12958 */
12959 var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {
12960
12961 /**
12962 * Injectable event backend
12963 */
12964 ReactEventListener: null,
12965
12966 injection: {
12967 /**
12968 * @param {object} ReactEventListener
12969 */
12970 injectReactEventListener: function (ReactEventListener) {
12971 ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);
12972 ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;
12973 }
12974 },
12975
12976 /**
12977 * Sets whether or not any created callbacks should be enabled.
12978 *
12979 * @param {boolean} enabled True if callbacks should be enabled.
12980 */
12981 setEnabled: function (enabled) {
12982 if (ReactBrowserEventEmitter.ReactEventListener) {
12983 ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);
12984 }
12985 },
12986
12987 /**
12988 * @return {boolean} True if callbacks are enabled.
12989 */
12990 isEnabled: function () {
12991 return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());
12992 },
12993
12994 /**
12995 * We listen for bubbled touch events on the document object.
12996 *
12997 * Firefox v8.01 (and possibly others) exhibited strange behavior when
12998 * mounting `onmousemove` events at some node that was not the document
12999 * element. The symptoms were that if your mouse is not moving over something
13000 * contained within that mount point (for example on the background) the
13001 * top-level listeners for `onmousemove` won't be called. However, if you
13002 * register the `mousemove` on the document object, then it will of course
13003 * catch all `mousemove`s. This along with iOS quirks, justifies restricting
13004 * top-level listeners to the document object only, at least for these
13005 * movement types of events and possibly all events.
13006 *
13007 * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
13008 *
13009 * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but
13010 * they bubble to document.
13011 *
13012 * @param {string} registrationName Name of listener (e.g. `onClick`).
13013 * @param {object} contentDocumentHandle Document which owns the container
13014 */
13015 listenTo: function (registrationName, contentDocumentHandle) {
13016 var mountAt = contentDocumentHandle;
13017 var isListening = getListeningForDocument(mountAt);
13018 var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];
13019
13020 var topLevelTypes = EventConstants.topLevelTypes;
13021 for (var i = 0; i < dependencies.length; i++) {
13022 var dependency = dependencies[i];
13023 if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {
13024 if (dependency === topLevelTypes.topWheel) {
13025 if (isEventSupported('wheel')) {
13026 ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, 'wheel', mountAt);
13027 } else if (isEventSupported('mousewheel')) {
13028 ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, 'mousewheel', mountAt);
13029 } else {
13030 // Firefox needs to capture a different mouse scroll event.
13031 // @see http://www.quirksmode.org/dom/events/tests/scroll.html
13032 ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topWheel, 'DOMMouseScroll', mountAt);
13033 }
13034 } else if (dependency === topLevelTypes.topScroll) {
13035
13036 if (isEventSupported('scroll', true)) {
13037 ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topScroll, 'scroll', mountAt);
13038 } else {
13039 ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topScroll, 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);
13040 }
13041 } else if (dependency === topLevelTypes.topFocus || dependency === topLevelTypes.topBlur) {
13042
13043 if (isEventSupported('focus', true)) {
13044 ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topFocus, 'focus', mountAt);
13045 ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelTypes.topBlur, 'blur', mountAt);
13046 } else if (isEventSupported('focusin')) {
13047 // IE has `focusin` and `focusout` events which bubble.
13048 // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html
13049 ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topFocus, 'focusin', mountAt);
13050 ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelTypes.topBlur, 'focusout', mountAt);
13051 }
13052
13053 // to make sure blur and focus event listeners are only attached once
13054 isListening[topLevelTypes.topBlur] = true;
13055 isListening[topLevelTypes.topFocus] = true;
13056 } else if (topEventMapping.hasOwnProperty(dependency)) {
13057 ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);
13058 }
13059
13060 isListening[dependency] = true;
13061 }
13062 }
13063 },
13064
13065 trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {
13066 return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);
13067 },
13068
13069 trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {
13070 return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);
13071 },
13072
13073 /**
13074 * Protect against document.createEvent() returning null
13075 * Some popup blocker extensions appear to do this:
13076 * https://github.com/facebook/react/issues/6887
13077 */
13078 supportsEventPageXY: function () {
13079 if (!document.createEvent) {
13080 return false;
13081 }
13082 var ev = document.createEvent('MouseEvent');
13083 return ev != null && 'pageX' in ev;
13084 },
13085
13086 /**
13087 * Listens to window scroll and resize events. We cache scroll values so that
13088 * application code can access them without triggering reflows.
13089 *
13090 * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when
13091 * pageX/pageY isn't supported (legacy browsers).
13092 *
13093 * NOTE: Scroll events do not bubble.
13094 *
13095 * @see http://www.quirksmode.org/dom/events/scroll.html
13096 */
13097 ensureScrollValueMonitoring: function () {
13098 if (hasEventPageXY === undefined) {
13099 hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();
13100 }
13101 if (!hasEventPageXY && !isMonitoringScrollValue) {
13102 var refresh = ViewportMetrics.refreshScrollValues;
13103 ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);
13104 isMonitoringScrollValue = true;
13105 }
13106 }
13107
13108 });
13109
13110 module.exports = ReactBrowserEventEmitter;
13111
13112/***/ },
13113/* 196 */
13114/***/ function(module, exports, __webpack_require__) {
13115
13116 /**
13117 * Copyright 2013-present, Facebook, Inc.
13118 * All rights reserved.
13119 *
13120 * This source code is licensed under the BSD-style license found in the
13121 * LICENSE file in the root directory of this source tree. An additional grant
13122 * of patent rights can be found in the PATENTS file in the same directory.
13123 *
13124 * @providesModule ReactEventEmitterMixin
13125 */
13126
13127 'use strict';
13128
13129 var EventPluginHub = __webpack_require__(131);
13130
13131 function runEventQueueInBatch(events) {
13132 EventPluginHub.enqueueEvents(events);
13133 EventPluginHub.processEventQueue(false);
13134 }
13135
13136 var ReactEventEmitterMixin = {
13137
13138 /**
13139 * Streams a fired top-level event to `EventPluginHub` where plugins have the
13140 * opportunity to create `ReactEvent`s to be dispatched.
13141 */
13142 handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
13143 var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);
13144 runEventQueueInBatch(events);
13145 }
13146 };
13147
13148 module.exports = ReactEventEmitterMixin;
13149
13150/***/ },
13151/* 197 */
13152/***/ function(module, exports, __webpack_require__) {
13153
13154 /**
13155 * Copyright 2013-present, Facebook, Inc.
13156 * All rights reserved.
13157 *
13158 * This source code is licensed under the BSD-style license found in the
13159 * LICENSE file in the root directory of this source tree. An additional grant
13160 * of patent rights can be found in the PATENTS file in the same directory.
13161 *
13162 * @providesModule getVendorPrefixedEventName
13163 */
13164
13165 'use strict';
13166
13167 var ExecutionEnvironment = __webpack_require__(137);
13168
13169 /**
13170 * Generate a mapping of standard vendor prefixes using the defined style property and event name.
13171 *
13172 * @param {string} styleProp
13173 * @param {string} eventName
13174 * @returns {object}
13175 */
13176 function makePrefixMap(styleProp, eventName) {
13177 var prefixes = {};
13178
13179 prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
13180 prefixes['Webkit' + styleProp] = 'webkit' + eventName;
13181 prefixes['Moz' + styleProp] = 'moz' + eventName;
13182 prefixes['ms' + styleProp] = 'MS' + eventName;
13183 prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();
13184
13185 return prefixes;
13186 }
13187
13188 /**
13189 * A list of event names to a configurable list of vendor prefixes.
13190 */
13191 var vendorPrefixes = {
13192 animationend: makePrefixMap('Animation', 'AnimationEnd'),
13193 animationiteration: makePrefixMap('Animation', 'AnimationIteration'),
13194 animationstart: makePrefixMap('Animation', 'AnimationStart'),
13195 transitionend: makePrefixMap('Transition', 'TransitionEnd')
13196 };
13197
13198 /**
13199 * Event names that have already been detected and prefixed (if applicable).
13200 */
13201 var prefixedEventNames = {};
13202
13203 /**
13204 * Element to check for prefixes on.
13205 */
13206 var style = {};
13207
13208 /**
13209 * Bootstrap if a DOM exists.
13210 */
13211 if (ExecutionEnvironment.canUseDOM) {
13212 style = document.createElement('div').style;
13213
13214 // On some platforms, in particular some releases of Android 4.x,
13215 // the un-prefixed "animation" and "transition" properties are defined on the
13216 // style object but the events that fire will still be prefixed, so we need
13217 // to check if the un-prefixed events are usable, and if not remove them from the map.
13218 if (!('AnimationEvent' in window)) {
13219 delete vendorPrefixes.animationend.animation;
13220 delete vendorPrefixes.animationiteration.animation;
13221 delete vendorPrefixes.animationstart.animation;
13222 }
13223
13224 // Same as above
13225 if (!('TransitionEvent' in window)) {
13226 delete vendorPrefixes.transitionend.transition;
13227 }
13228 }
13229
13230 /**
13231 * Attempts to determine the correct vendor prefixed event name.
13232 *
13233 * @param {string} eventName
13234 * @returns {string}
13235 */
13236 function getVendorPrefixedEventName(eventName) {
13237 if (prefixedEventNames[eventName]) {
13238 return prefixedEventNames[eventName];
13239 } else if (!vendorPrefixes[eventName]) {
13240 return eventName;
13241 }
13242
13243 var prefixMap = vendorPrefixes[eventName];
13244
13245 for (var styleProp in prefixMap) {
13246 if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {
13247 return prefixedEventNames[eventName] = prefixMap[styleProp];
13248 }
13249 }
13250
13251 return '';
13252 }
13253
13254 module.exports = getVendorPrefixedEventName;
13255
13256/***/ },
13257/* 198 */
13258/***/ function(module, exports, __webpack_require__) {
13259
13260 /**
13261 * Copyright 2013-present, Facebook, Inc.
13262 * All rights reserved.
13263 *
13264 * This source code is licensed under the BSD-style license found in the
13265 * LICENSE file in the root directory of this source tree. An additional grant
13266 * of patent rights can be found in the PATENTS file in the same directory.
13267 *
13268 * @providesModule ReactDOMButton
13269 */
13270
13271 'use strict';
13272
13273 var DisabledInputUtils = __webpack_require__(199);
13274
13275 /**
13276 * Implements a <button> host component that does not receive mouse events
13277 * when `disabled` is set.
13278 */
13279 var ReactDOMButton = {
13280 getHostProps: DisabledInputUtils.getHostProps
13281 };
13282
13283 module.exports = ReactDOMButton;
13284
13285/***/ },
13286/* 199 */
13287/***/ function(module, exports) {
13288
13289 /**
13290 * Copyright 2013-present, Facebook, Inc.
13291 * All rights reserved.
13292 *
13293 * This source code is licensed under the BSD-style license found in the
13294 * LICENSE file in the root directory of this source tree. An additional grant
13295 * of patent rights can be found in the PATENTS file in the same directory.
13296 *
13297 * @providesModule DisabledInputUtils
13298 */
13299
13300 'use strict';
13301
13302 var disableableMouseListenerNames = {
13303 onClick: true,
13304 onDoubleClick: true,
13305 onMouseDown: true,
13306 onMouseMove: true,
13307 onMouseUp: true,
13308
13309 onClickCapture: true,
13310 onDoubleClickCapture: true,
13311 onMouseDownCapture: true,
13312 onMouseMoveCapture: true,
13313 onMouseUpCapture: true
13314 };
13315
13316 /**
13317 * Implements a host component that does not receive mouse events
13318 * when `disabled` is set.
13319 */
13320 var DisabledInputUtils = {
13321 getHostProps: function (inst, props) {
13322 if (!props.disabled) {
13323 return props;
13324 }
13325
13326 // Copy the props, except the mouse listeners
13327 var hostProps = {};
13328 for (var key in props) {
13329 if (!disableableMouseListenerNames[key] && props.hasOwnProperty(key)) {
13330 hostProps[key] = props[key];
13331 }
13332 }
13333
13334 return hostProps;
13335 }
13336 };
13337
13338 module.exports = DisabledInputUtils;
13339
13340/***/ },
13341/* 200 */
13342/***/ function(module, exports, __webpack_require__) {
13343
13344 /**
13345 * Copyright 2013-present, Facebook, Inc.
13346 * All rights reserved.
13347 *
13348 * This source code is licensed under the BSD-style license found in the
13349 * LICENSE file in the root directory of this source tree. An additional grant
13350 * of patent rights can be found in the PATENTS file in the same directory.
13351 *
13352 * @providesModule ReactDOMInput
13353 */
13354
13355 'use strict';
13356
13357 var _prodInvariant = __webpack_require__(94),
13358 _assign = __webpack_require__(91);
13359
13360 var DisabledInputUtils = __webpack_require__(199);
13361 var DOMPropertyOperations = __webpack_require__(193);
13362 var LinkedValueUtils = __webpack_require__(201);
13363 var ReactDOMComponentTree = __webpack_require__(124);
13364 var ReactUpdates = __webpack_require__(144);
13365
13366 var invariant = __webpack_require__(95);
13367 var warning = __webpack_require__(98);
13368
13369 var didWarnValueLink = false;
13370 var didWarnCheckedLink = false;
13371 var didWarnValueDefaultValue = false;
13372 var didWarnCheckedDefaultChecked = false;
13373 var didWarnControlledToUncontrolled = false;
13374 var didWarnUncontrolledToControlled = false;
13375
13376 function forceUpdateIfMounted() {
13377 if (this._rootNodeID) {
13378 // DOM component is still mounted; update
13379 ReactDOMInput.updateWrapper(this);
13380 }
13381 }
13382
13383 function isControlled(props) {
13384 var usesChecked = props.type === 'checkbox' || props.type === 'radio';
13385 return usesChecked ? props.checked != null : props.value != null;
13386 }
13387
13388 /**
13389 * Implements an <input> host component that allows setting these optional
13390 * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.
13391 *
13392 * If `checked` or `value` are not supplied (or null/undefined), user actions
13393 * that affect the checked state or value will trigger updates to the element.
13394 *
13395 * If they are supplied (and not null/undefined), the rendered element will not
13396 * trigger updates to the element. Instead, the props must change in order for
13397 * the rendered element to be updated.
13398 *
13399 * The rendered element will be initialized as unchecked (or `defaultChecked`)
13400 * with an empty value (or `defaultValue`).
13401 *
13402 * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html
13403 */
13404 var ReactDOMInput = {
13405 getHostProps: function (inst, props) {
13406 var value = LinkedValueUtils.getValue(props);
13407 var checked = LinkedValueUtils.getChecked(props);
13408
13409 var hostProps = _assign({
13410 // Make sure we set .type before any other properties (setting .value
13411 // before .type means .value is lost in IE11 and below)
13412 type: undefined,
13413 // Make sure we set .step before .value (setting .value before .step
13414 // means .value is rounded on mount, based upon step precision)
13415 step: undefined,
13416 // Make sure we set .min & .max before .value (to ensure proper order
13417 // in corner cases such as min or max deriving from value, e.g. Issue #7170)
13418 min: undefined,
13419 max: undefined
13420 }, DisabledInputUtils.getHostProps(inst, props), {
13421 defaultChecked: undefined,
13422 defaultValue: undefined,
13423 value: value != null ? value : inst._wrapperState.initialValue,
13424 checked: checked != null ? checked : inst._wrapperState.initialChecked,
13425 onChange: inst._wrapperState.onChange
13426 });
13427
13428 return hostProps;
13429 },
13430
13431 mountWrapper: function (inst, props) {
13432 if ((undefined) !== 'production') {
13433 LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);
13434
13435 var owner = inst._currentElement._owner;
13436
13437 if (props.valueLink !== undefined && !didWarnValueLink) {
13438 (undefined) !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;
13439 didWarnValueLink = true;
13440 }
13441 if (props.checkedLink !== undefined && !didWarnCheckedLink) {
13442 (undefined) !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;
13443 didWarnCheckedLink = true;
13444 }
13445 if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {
13446 (undefined) !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
13447 didWarnCheckedDefaultChecked = true;
13448 }
13449 if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
13450 (undefined) !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
13451 didWarnValueDefaultValue = true;
13452 }
13453 }
13454
13455 var defaultValue = props.defaultValue;
13456 inst._wrapperState = {
13457 initialChecked: props.checked != null ? props.checked : props.defaultChecked,
13458 initialValue: props.value != null ? props.value : defaultValue,
13459 listeners: null,
13460 onChange: _handleChange.bind(inst)
13461 };
13462
13463 if ((undefined) !== 'production') {
13464 inst._wrapperState.controlled = isControlled(props);
13465 }
13466 },
13467
13468 updateWrapper: function (inst) {
13469 var props = inst._currentElement.props;
13470
13471 if ((undefined) !== 'production') {
13472 var controlled = isControlled(props);
13473 var owner = inst._currentElement._owner;
13474
13475 if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {
13476 (undefined) !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
13477 didWarnUncontrolledToControlled = true;
13478 }
13479 if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {
13480 (undefined) !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
13481 didWarnControlledToUncontrolled = true;
13482 }
13483 }
13484
13485 // TODO: Shouldn't this be getChecked(props)?
13486 var checked = props.checked;
13487 if (checked != null) {
13488 DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);
13489 }
13490
13491 var node = ReactDOMComponentTree.getNodeFromInstance(inst);
13492 var value = LinkedValueUtils.getValue(props);
13493 if (value != null) {
13494
13495 // Cast `value` to a string to ensure the value is set correctly. While
13496 // browsers typically do this as necessary, jsdom doesn't.
13497 var newValue = '' + value;
13498
13499 // To avoid side effects (such as losing text selection), only set value if changed
13500 if (newValue !== node.value) {
13501 node.value = newValue;
13502 }
13503 } else {
13504 if (props.value == null && props.defaultValue != null) {
13505 node.defaultValue = '' + props.defaultValue;
13506 }
13507 if (props.checked == null && props.defaultChecked != null) {
13508 node.defaultChecked = !!props.defaultChecked;
13509 }
13510 }
13511 },
13512
13513 postMountWrapper: function (inst) {
13514 var props = inst._currentElement.props;
13515
13516 // This is in postMount because we need access to the DOM node, which is not
13517 // available until after the component has mounted.
13518 var node = ReactDOMComponentTree.getNodeFromInstance(inst);
13519
13520 // Detach value from defaultValue. We won't do anything if we're working on
13521 // submit or reset inputs as those values & defaultValues are linked. They
13522 // are not resetable nodes so this operation doesn't matter and actually
13523 // removes browser-default values (eg "Submit Query") when no value is
13524 // provided.
13525
13526 switch (props.type) {
13527 case 'submit':
13528 case 'reset':
13529 break;
13530 case 'color':
13531 case 'date':
13532 case 'datetime':
13533 case 'datetime-local':
13534 case 'month':
13535 case 'time':
13536 case 'week':
13537 // This fixes the no-show issue on iOS Safari and Android Chrome:
13538 // https://github.com/facebook/react/issues/7233
13539 node.value = '';
13540 node.value = node.defaultValue;
13541 break;
13542 default:
13543 node.value = node.value;
13544 break;
13545 }
13546
13547 // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug
13548 // this is needed to work around a chrome bug where setting defaultChecked
13549 // will sometimes influence the value of checked (even after detachment).
13550 // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416
13551 // We need to temporarily unset name to avoid disrupting radio button groups.
13552 var name = node.name;
13553 if (name !== '') {
13554 node.name = '';
13555 }
13556 node.defaultChecked = !node.defaultChecked;
13557 node.defaultChecked = !node.defaultChecked;
13558 if (name !== '') {
13559 node.name = name;
13560 }
13561 }
13562 };
13563
13564 function _handleChange(event) {
13565 var props = this._currentElement.props;
13566
13567 var returnValue = LinkedValueUtils.executeOnChange(props, event);
13568
13569 // Here we use asap to wait until all updates have propagated, which
13570 // is important when using controlled components within layers:
13571 // https://github.com/facebook/react/issues/1698
13572 ReactUpdates.asap(forceUpdateIfMounted, this);
13573
13574 var name = props.name;
13575 if (props.type === 'radio' && name != null) {
13576 var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);
13577 var queryRoot = rootNode;
13578
13579 while (queryRoot.parentNode) {
13580 queryRoot = queryRoot.parentNode;
13581 }
13582
13583 // If `rootNode.form` was non-null, then we could try `form.elements`,
13584 // but that sometimes behaves strangely in IE8. We could also try using
13585 // `form.getElementsByName`, but that will only return direct children
13586 // and won't include inputs that use the HTML5 `form=` attribute. Since
13587 // the input might not even be in a form, let's just use the global
13588 // `querySelectorAll` to ensure we don't miss anything.
13589 var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]');
13590
13591 for (var i = 0; i < group.length; i++) {
13592 var otherNode = group[i];
13593 if (otherNode === rootNode || otherNode.form !== rootNode.form) {
13594 continue;
13595 }
13596 // This will throw if radio buttons rendered by different copies of React
13597 // and the same name are rendered into the same form (same as #1939).
13598 // That's probably okay; we don't support it just as we don't support
13599 // mixing React radio buttons with non-React ones.
13600 var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);
13601 !otherInstance ? (undefined) !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;
13602 // If this is a controlled radio button group, forcing the input that
13603 // was previously checked to update will cause it to be come re-checked
13604 // as appropriate.
13605 ReactUpdates.asap(forceUpdateIfMounted, otherInstance);
13606 }
13607 }
13608
13609 return returnValue;
13610 }
13611
13612 module.exports = ReactDOMInput;
13613
13614/***/ },
13615/* 201 */
13616/***/ function(module, exports, __webpack_require__) {
13617
13618 /**
13619 * Copyright 2013-present, Facebook, Inc.
13620 * All rights reserved.
13621 *
13622 * This source code is licensed under the BSD-style license found in the
13623 * LICENSE file in the root directory of this source tree. An additional grant
13624 * of patent rights can be found in the PATENTS file in the same directory.
13625 *
13626 * @providesModule LinkedValueUtils
13627 */
13628
13629 'use strict';
13630
13631 var _prodInvariant = __webpack_require__(94);
13632
13633 var ReactPropTypes = __webpack_require__(119);
13634 var ReactPropTypeLocations = __webpack_require__(109);
13635 var ReactPropTypesSecret = __webpack_require__(118);
13636
13637 var invariant = __webpack_require__(95);
13638 var warning = __webpack_require__(98);
13639
13640 var hasReadOnlyValue = {
13641 'button': true,
13642 'checkbox': true,
13643 'image': true,
13644 'hidden': true,
13645 'radio': true,
13646 'reset': true,
13647 'submit': true
13648 };
13649
13650 function _assertSingleLink(inputProps) {
13651 !(inputProps.checkedLink == null || inputProps.valueLink == null) ? (undefined) !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;
13652 }
13653 function _assertValueLink(inputProps) {
13654 _assertSingleLink(inputProps);
13655 !(inputProps.value == null && inputProps.onChange == null) ? (undefined) !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\'t want to use valueLink.') : _prodInvariant('88') : void 0;
13656 }
13657
13658 function _assertCheckedLink(inputProps) {
13659 _assertSingleLink(inputProps);
13660 !(inputProps.checked == null && inputProps.onChange == null) ? (undefined) !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\'t want to use checkedLink') : _prodInvariant('89') : void 0;
13661 }
13662
13663 var propTypes = {
13664 value: function (props, propName, componentName) {
13665 if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {
13666 return null;
13667 }
13668 return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');
13669 },
13670 checked: function (props, propName, componentName) {
13671 if (!props[propName] || props.onChange || props.readOnly || props.disabled) {
13672 return null;
13673 }
13674 return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');
13675 },
13676 onChange: ReactPropTypes.func
13677 };
13678
13679 var loggedTypeFailures = {};
13680 function getDeclarationErrorAddendum(owner) {
13681 if (owner) {
13682 var name = owner.getName();
13683 if (name) {
13684 return ' Check the render method of `' + name + '`.';
13685 }
13686 }
13687 return '';
13688 }
13689
13690 /**
13691 * Provide a linked `value` attribute for controlled forms. You should not use
13692 * this outside of the ReactDOM controlled form components.
13693 */
13694 var LinkedValueUtils = {
13695 checkPropTypes: function (tagName, props, owner) {
13696 for (var propName in propTypes) {
13697 if (propTypes.hasOwnProperty(propName)) {
13698 var error = propTypes[propName](props, propName, tagName, ReactPropTypeLocations.prop, null, ReactPropTypesSecret);
13699 }
13700 if (error instanceof Error && !(error.message in loggedTypeFailures)) {
13701 // Only monitor this failure once because there tends to be a lot of the
13702 // same error.
13703 loggedTypeFailures[error.message] = true;
13704
13705 var addendum = getDeclarationErrorAddendum(owner);
13706 (undefined) !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;
13707 }
13708 }
13709 },
13710
13711 /**
13712 * @param {object} inputProps Props for form component
13713 * @return {*} current value of the input either from value prop or link.
13714 */
13715 getValue: function (inputProps) {
13716 if (inputProps.valueLink) {
13717 _assertValueLink(inputProps);
13718 return inputProps.valueLink.value;
13719 }
13720 return inputProps.value;
13721 },
13722
13723 /**
13724 * @param {object} inputProps Props for form component
13725 * @return {*} current checked status of the input either from checked prop
13726 * or link.
13727 */
13728 getChecked: function (inputProps) {
13729 if (inputProps.checkedLink) {
13730 _assertCheckedLink(inputProps);
13731 return inputProps.checkedLink.value;
13732 }
13733 return inputProps.checked;
13734 },
13735
13736 /**
13737 * @param {object} inputProps Props for form component
13738 * @param {SyntheticEvent} event change event to handle
13739 */
13740 executeOnChange: function (inputProps, event) {
13741 if (inputProps.valueLink) {
13742 _assertValueLink(inputProps);
13743 return inputProps.valueLink.requestChange(event.target.value);
13744 } else if (inputProps.checkedLink) {
13745 _assertCheckedLink(inputProps);
13746 return inputProps.checkedLink.requestChange(event.target.checked);
13747 } else if (inputProps.onChange) {
13748 return inputProps.onChange.call(undefined, event);
13749 }
13750 }
13751 };
13752
13753 module.exports = LinkedValueUtils;
13754
13755/***/ },
13756/* 202 */
13757/***/ function(module, exports, __webpack_require__) {
13758
13759 /**
13760 * Copyright 2013-present, Facebook, Inc.
13761 * All rights reserved.
13762 *
13763 * This source code is licensed under the BSD-style license found in the
13764 * LICENSE file in the root directory of this source tree. An additional grant
13765 * of patent rights can be found in the PATENTS file in the same directory.
13766 *
13767 * @providesModule ReactDOMOption
13768 */
13769
13770 'use strict';
13771
13772 var _assign = __webpack_require__(91);
13773
13774 var ReactChildren = __webpack_require__(92);
13775 var ReactDOMComponentTree = __webpack_require__(124);
13776 var ReactDOMSelect = __webpack_require__(203);
13777
13778 var warning = __webpack_require__(98);
13779 var didWarnInvalidOptionChildren = false;
13780
13781 function flattenChildren(children) {
13782 var content = '';
13783
13784 // Flatten children and warn if they aren't strings or numbers;
13785 // invalid types are ignored.
13786 ReactChildren.forEach(children, function (child) {
13787 if (child == null) {
13788 return;
13789 }
13790 if (typeof child === 'string' || typeof child === 'number') {
13791 content += child;
13792 } else if (!didWarnInvalidOptionChildren) {
13793 didWarnInvalidOptionChildren = true;
13794 (undefined) !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;
13795 }
13796 });
13797
13798 return content;
13799 }
13800
13801 /**
13802 * Implements an <option> host component that warns when `selected` is set.
13803 */
13804 var ReactDOMOption = {
13805 mountWrapper: function (inst, props, hostParent) {
13806 // TODO (yungsters): Remove support for `selected` in <option>.
13807 if ((undefined) !== 'production') {
13808 (undefined) !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;
13809 }
13810
13811 // Look up whether this option is 'selected'
13812 var selectValue = null;
13813 if (hostParent != null) {
13814 var selectParent = hostParent;
13815
13816 if (selectParent._tag === 'optgroup') {
13817 selectParent = selectParent._hostParent;
13818 }
13819
13820 if (selectParent != null && selectParent._tag === 'select') {
13821 selectValue = ReactDOMSelect.getSelectValueContext(selectParent);
13822 }
13823 }
13824
13825 // If the value is null (e.g., no specified value or after initial mount)
13826 // or missing (e.g., for <datalist>), we don't change props.selected
13827 var selected = null;
13828 if (selectValue != null) {
13829 var value;
13830 if (props.value != null) {
13831 value = props.value + '';
13832 } else {
13833 value = flattenChildren(props.children);
13834 }
13835 selected = false;
13836 if (Array.isArray(selectValue)) {
13837 // multiple
13838 for (var i = 0; i < selectValue.length; i++) {
13839 if ('' + selectValue[i] === value) {
13840 selected = true;
13841 break;
13842 }
13843 }
13844 } else {
13845 selected = '' + selectValue === value;
13846 }
13847 }
13848
13849 inst._wrapperState = { selected: selected };
13850 },
13851
13852 postMountWrapper: function (inst) {
13853 // value="" should make a value attribute (#6219)
13854 var props = inst._currentElement.props;
13855 if (props.value != null) {
13856 var node = ReactDOMComponentTree.getNodeFromInstance(inst);
13857 node.setAttribute('value', props.value);
13858 }
13859 },
13860
13861 getHostProps: function (inst, props) {
13862 var hostProps = _assign({ selected: undefined, children: undefined }, props);
13863
13864 // Read state only from initial mount because <select> updates value
13865 // manually; we need the initial state only for server rendering
13866 if (inst._wrapperState.selected != null) {
13867 hostProps.selected = inst._wrapperState.selected;
13868 }
13869
13870 var content = flattenChildren(props.children);
13871
13872 if (content) {
13873 hostProps.children = content;
13874 }
13875
13876 return hostProps;
13877 }
13878
13879 };
13880
13881 module.exports = ReactDOMOption;
13882
13883/***/ },
13884/* 203 */
13885/***/ function(module, exports, __webpack_require__) {
13886
13887 /**
13888 * Copyright 2013-present, Facebook, Inc.
13889 * All rights reserved.
13890 *
13891 * This source code is licensed under the BSD-style license found in the
13892 * LICENSE file in the root directory of this source tree. An additional grant
13893 * of patent rights can be found in the PATENTS file in the same directory.
13894 *
13895 * @providesModule ReactDOMSelect
13896 */
13897
13898 'use strict';
13899
13900 var _assign = __webpack_require__(91);
13901
13902 var DisabledInputUtils = __webpack_require__(199);
13903 var LinkedValueUtils = __webpack_require__(201);
13904 var ReactDOMComponentTree = __webpack_require__(124);
13905 var ReactUpdates = __webpack_require__(144);
13906
13907 var warning = __webpack_require__(98);
13908
13909 var didWarnValueLink = false;
13910 var didWarnValueDefaultValue = false;
13911
13912 function updateOptionsIfPendingUpdateAndMounted() {
13913 if (this._rootNodeID && this._wrapperState.pendingUpdate) {
13914 this._wrapperState.pendingUpdate = false;
13915
13916 var props = this._currentElement.props;
13917 var value = LinkedValueUtils.getValue(props);
13918
13919 if (value != null) {
13920 updateOptions(this, Boolean(props.multiple), value);
13921 }
13922 }
13923 }
13924
13925 function getDeclarationErrorAddendum(owner) {
13926 if (owner) {
13927 var name = owner.getName();
13928 if (name) {
13929 return ' Check the render method of `' + name + '`.';
13930 }
13931 }
13932 return '';
13933 }
13934
13935 var valuePropNames = ['value', 'defaultValue'];
13936
13937 /**
13938 * Validation function for `value` and `defaultValue`.
13939 * @private
13940 */
13941 function checkSelectPropTypes(inst, props) {
13942 var owner = inst._currentElement._owner;
13943 LinkedValueUtils.checkPropTypes('select', props, owner);
13944
13945 if (props.valueLink !== undefined && !didWarnValueLink) {
13946 (undefined) !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;
13947 didWarnValueLink = true;
13948 }
13949
13950 for (var i = 0; i < valuePropNames.length; i++) {
13951 var propName = valuePropNames[i];
13952 if (props[propName] == null) {
13953 continue;
13954 }
13955 var isArray = Array.isArray(props[propName]);
13956 if (props.multiple && !isArray) {
13957 (undefined) !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;
13958 } else if (!props.multiple && isArray) {
13959 (undefined) !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;
13960 }
13961 }
13962 }
13963
13964 /**
13965 * @param {ReactDOMComponent} inst
13966 * @param {boolean} multiple
13967 * @param {*} propValue A stringable (with `multiple`, a list of stringables).
13968 * @private
13969 */
13970 function updateOptions(inst, multiple, propValue) {
13971 var selectedValue, i;
13972 var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;
13973
13974 if (multiple) {
13975 selectedValue = {};
13976 for (i = 0; i < propValue.length; i++) {
13977 selectedValue['' + propValue[i]] = true;
13978 }
13979 for (i = 0; i < options.length; i++) {
13980 var selected = selectedValue.hasOwnProperty(options[i].value);
13981 if (options[i].selected !== selected) {
13982 options[i].selected = selected;
13983 }
13984 }
13985 } else {
13986 // Do not set `select.value` as exact behavior isn't consistent across all
13987 // browsers for all cases.
13988 selectedValue = '' + propValue;
13989 for (i = 0; i < options.length; i++) {
13990 if (options[i].value === selectedValue) {
13991 options[i].selected = true;
13992 return;
13993 }
13994 }
13995 if (options.length) {
13996 options[0].selected = true;
13997 }
13998 }
13999 }
14000
14001 /**
14002 * Implements a <select> host component that allows optionally setting the
14003 * props `value` and `defaultValue`. If `multiple` is false, the prop must be a
14004 * stringable. If `multiple` is true, the prop must be an array of stringables.
14005 *
14006 * If `value` is not supplied (or null/undefined), user actions that change the
14007 * selected option will trigger updates to the rendered options.
14008 *
14009 * If it is supplied (and not null/undefined), the rendered options will not
14010 * update in response to user actions. Instead, the `value` prop must change in
14011 * order for the rendered options to update.
14012 *
14013 * If `defaultValue` is provided, any options with the supplied values will be
14014 * selected.
14015 */
14016 var ReactDOMSelect = {
14017 getHostProps: function (inst, props) {
14018 return _assign({}, DisabledInputUtils.getHostProps(inst, props), {
14019 onChange: inst._wrapperState.onChange,
14020 value: undefined
14021 });
14022 },
14023
14024 mountWrapper: function (inst, props) {
14025 if ((undefined) !== 'production') {
14026 checkSelectPropTypes(inst, props);
14027 }
14028
14029 var value = LinkedValueUtils.getValue(props);
14030 inst._wrapperState = {
14031 pendingUpdate: false,
14032 initialValue: value != null ? value : props.defaultValue,
14033 listeners: null,
14034 onChange: _handleChange.bind(inst),
14035 wasMultiple: Boolean(props.multiple)
14036 };
14037
14038 if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
14039 (undefined) !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;
14040 didWarnValueDefaultValue = true;
14041 }
14042 },
14043
14044 getSelectValueContext: function (inst) {
14045 // ReactDOMOption looks at this initial value so the initial generated
14046 // markup has correct `selected` attributes
14047 return inst._wrapperState.initialValue;
14048 },
14049
14050 postUpdateWrapper: function (inst) {
14051 var props = inst._currentElement.props;
14052
14053 // After the initial mount, we control selected-ness manually so don't pass
14054 // this value down
14055 inst._wrapperState.initialValue = undefined;
14056
14057 var wasMultiple = inst._wrapperState.wasMultiple;
14058 inst._wrapperState.wasMultiple = Boolean(props.multiple);
14059
14060 var value = LinkedValueUtils.getValue(props);
14061 if (value != null) {
14062 inst._wrapperState.pendingUpdate = false;
14063 updateOptions(inst, Boolean(props.multiple), value);
14064 } else if (wasMultiple !== Boolean(props.multiple)) {
14065 // For simplicity, reapply `defaultValue` if `multiple` is toggled.
14066 if (props.defaultValue != null) {
14067 updateOptions(inst, Boolean(props.multiple), props.defaultValue);
14068 } else {
14069 // Revert the select back to its default unselected state.
14070 updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');
14071 }
14072 }
14073 }
14074 };
14075
14076 function _handleChange(event) {
14077 var props = this._currentElement.props;
14078 var returnValue = LinkedValueUtils.executeOnChange(props, event);
14079
14080 if (this._rootNodeID) {
14081 this._wrapperState.pendingUpdate = true;
14082 }
14083 ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);
14084 return returnValue;
14085 }
14086
14087 module.exports = ReactDOMSelect;
14088
14089/***/ },
14090/* 204 */
14091/***/ function(module, exports, __webpack_require__) {
14092
14093 /**
14094 * Copyright 2013-present, Facebook, Inc.
14095 * All rights reserved.
14096 *
14097 * This source code is licensed under the BSD-style license found in the
14098 * LICENSE file in the root directory of this source tree. An additional grant
14099 * of patent rights can be found in the PATENTS file in the same directory.
14100 *
14101 * @providesModule ReactDOMTextarea
14102 */
14103
14104 'use strict';
14105
14106 var _prodInvariant = __webpack_require__(94),
14107 _assign = __webpack_require__(91);
14108
14109 var DisabledInputUtils = __webpack_require__(199);
14110 var LinkedValueUtils = __webpack_require__(201);
14111 var ReactDOMComponentTree = __webpack_require__(124);
14112 var ReactUpdates = __webpack_require__(144);
14113
14114 var invariant = __webpack_require__(95);
14115 var warning = __webpack_require__(98);
14116
14117 var didWarnValueLink = false;
14118 var didWarnValDefaultVal = false;
14119
14120 function forceUpdateIfMounted() {
14121 if (this._rootNodeID) {
14122 // DOM component is still mounted; update
14123 ReactDOMTextarea.updateWrapper(this);
14124 }
14125 }
14126
14127 /**
14128 * Implements a <textarea> host component that allows setting `value`, and
14129 * `defaultValue`. This differs from the traditional DOM API because value is
14130 * usually set as PCDATA children.
14131 *
14132 * If `value` is not supplied (or null/undefined), user actions that affect the
14133 * value will trigger updates to the element.
14134 *
14135 * If `value` is supplied (and not null/undefined), the rendered element will
14136 * not trigger updates to the element. Instead, the `value` prop must change in
14137 * order for the rendered element to be updated.
14138 *
14139 * The rendered element will be initialized with an empty value, the prop
14140 * `defaultValue` if specified, or the children content (deprecated).
14141 */
14142 var ReactDOMTextarea = {
14143 getHostProps: function (inst, props) {
14144 !(props.dangerouslySetInnerHTML == null) ? (undefined) !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;
14145
14146 // Always set children to the same thing. In IE9, the selection range will
14147 // get reset if `textContent` is mutated. We could add a check in setTextContent
14148 // to only set the value if/when the value differs from the node value (which would
14149 // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.
14150 // The value can be a boolean or object so that's why it's forced to be a string.
14151 var hostProps = _assign({}, DisabledInputUtils.getHostProps(inst, props), {
14152 value: undefined,
14153 defaultValue: undefined,
14154 children: '' + inst._wrapperState.initialValue,
14155 onChange: inst._wrapperState.onChange
14156 });
14157
14158 return hostProps;
14159 },
14160
14161 mountWrapper: function (inst, props) {
14162 if ((undefined) !== 'production') {
14163 LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);
14164 if (props.valueLink !== undefined && !didWarnValueLink) {
14165 (undefined) !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;
14166 didWarnValueLink = true;
14167 }
14168 if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {
14169 (undefined) !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;
14170 didWarnValDefaultVal = true;
14171 }
14172 }
14173
14174 var value = LinkedValueUtils.getValue(props);
14175 var initialValue = value;
14176
14177 // Only bother fetching default value if we're going to use it
14178 if (value == null) {
14179 var defaultValue = props.defaultValue;
14180 // TODO (yungsters): Remove support for children content in <textarea>.
14181 var children = props.children;
14182 if (children != null) {
14183 if ((undefined) !== 'production') {
14184 (undefined) !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;
14185 }
14186 !(defaultValue == null) ? (undefined) !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;
14187 if (Array.isArray(children)) {
14188 !(children.length <= 1) ? (undefined) !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;
14189 children = children[0];
14190 }
14191
14192 defaultValue = '' + children;
14193 }
14194 if (defaultValue == null) {
14195 defaultValue = '';
14196 }
14197 initialValue = defaultValue;
14198 }
14199
14200 inst._wrapperState = {
14201 initialValue: '' + initialValue,
14202 listeners: null,
14203 onChange: _handleChange.bind(inst)
14204 };
14205 },
14206
14207 updateWrapper: function (inst) {
14208 var props = inst._currentElement.props;
14209
14210 var node = ReactDOMComponentTree.getNodeFromInstance(inst);
14211 var value = LinkedValueUtils.getValue(props);
14212 if (value != null) {
14213 // Cast `value` to a string to ensure the value is set correctly. While
14214 // browsers typically do this as necessary, jsdom doesn't.
14215 var newValue = '' + value;
14216
14217 // To avoid side effects (such as losing text selection), only set value if changed
14218 if (newValue !== node.value) {
14219 node.value = newValue;
14220 }
14221 if (props.defaultValue == null) {
14222 node.defaultValue = newValue;
14223 }
14224 }
14225 if (props.defaultValue != null) {
14226 node.defaultValue = props.defaultValue;
14227 }
14228 },
14229
14230 postMountWrapper: function (inst) {
14231 // This is in postMount because we need access to the DOM node, which is not
14232 // available until after the component has mounted.
14233 var node = ReactDOMComponentTree.getNodeFromInstance(inst);
14234
14235 // Warning: node.value may be the empty string at this point (IE11) if placeholder is set.
14236 node.value = node.textContent; // Detach value from defaultValue
14237 }
14238 };
14239
14240 function _handleChange(event) {
14241 var props = this._currentElement.props;
14242 var returnValue = LinkedValueUtils.executeOnChange(props, event);
14243 ReactUpdates.asap(forceUpdateIfMounted, this);
14244 return returnValue;
14245 }
14246
14247 module.exports = ReactDOMTextarea;
14248
14249/***/ },
14250/* 205 */
14251/***/ function(module, exports, __webpack_require__) {
14252
14253 /**
14254 * Copyright 2013-present, Facebook, Inc.
14255 * All rights reserved.
14256 *
14257 * This source code is licensed under the BSD-style license found in the
14258 * LICENSE file in the root directory of this source tree. An additional grant
14259 * of patent rights can be found in the PATENTS file in the same directory.
14260 *
14261 * @providesModule ReactMultiChild
14262 */
14263
14264 'use strict';
14265
14266 var _prodInvariant = __webpack_require__(94);
14267
14268 var ReactComponentEnvironment = __webpack_require__(206);
14269 var ReactInstanceMap = __webpack_require__(207);
14270 var ReactInstrumentation = __webpack_require__(150);
14271 var ReactMultiChildUpdateTypes = __webpack_require__(180);
14272
14273 var ReactCurrentOwner = __webpack_require__(97);
14274 var ReactReconciler = __webpack_require__(147);
14275 var ReactChildReconciler = __webpack_require__(208);
14276
14277 var emptyFunction = __webpack_require__(99);
14278 var flattenChildren = __webpack_require__(216);
14279 var invariant = __webpack_require__(95);
14280
14281 /**
14282 * Make an update for markup to be rendered and inserted at a supplied index.
14283 *
14284 * @param {string} markup Markup that renders into an element.
14285 * @param {number} toIndex Destination index.
14286 * @private
14287 */
14288 function makeInsertMarkup(markup, afterNode, toIndex) {
14289 // NOTE: Null values reduce hidden classes.
14290 return {
14291 type: ReactMultiChildUpdateTypes.INSERT_MARKUP,
14292 content: markup,
14293 fromIndex: null,
14294 fromNode: null,
14295 toIndex: toIndex,
14296 afterNode: afterNode
14297 };
14298 }
14299
14300 /**
14301 * Make an update for moving an existing element to another index.
14302 *
14303 * @param {number} fromIndex Source index of the existing element.
14304 * @param {number} toIndex Destination index of the element.
14305 * @private
14306 */
14307 function makeMove(child, afterNode, toIndex) {
14308 // NOTE: Null values reduce hidden classes.
14309 return {
14310 type: ReactMultiChildUpdateTypes.MOVE_EXISTING,
14311 content: null,
14312 fromIndex: child._mountIndex,
14313 fromNode: ReactReconciler.getHostNode(child),
14314 toIndex: toIndex,
14315 afterNode: afterNode
14316 };
14317 }
14318
14319 /**
14320 * Make an update for removing an element at an index.
14321 *
14322 * @param {number} fromIndex Index of the element to remove.
14323 * @private
14324 */
14325 function makeRemove(child, node) {
14326 // NOTE: Null values reduce hidden classes.
14327 return {
14328 type: ReactMultiChildUpdateTypes.REMOVE_NODE,
14329 content: null,
14330 fromIndex: child._mountIndex,
14331 fromNode: node,
14332 toIndex: null,
14333 afterNode: null
14334 };
14335 }
14336
14337 /**
14338 * Make an update for setting the markup of a node.
14339 *
14340 * @param {string} markup Markup that renders into an element.
14341 * @private
14342 */
14343 function makeSetMarkup(markup) {
14344 // NOTE: Null values reduce hidden classes.
14345 return {
14346 type: ReactMultiChildUpdateTypes.SET_MARKUP,
14347 content: markup,
14348 fromIndex: null,
14349 fromNode: null,
14350 toIndex: null,
14351 afterNode: null
14352 };
14353 }
14354
14355 /**
14356 * Make an update for setting the text content.
14357 *
14358 * @param {string} textContent Text content to set.
14359 * @private
14360 */
14361 function makeTextContent(textContent) {
14362 // NOTE: Null values reduce hidden classes.
14363 return {
14364 type: ReactMultiChildUpdateTypes.TEXT_CONTENT,
14365 content: textContent,
14366 fromIndex: null,
14367 fromNode: null,
14368 toIndex: null,
14369 afterNode: null
14370 };
14371 }
14372
14373 /**
14374 * Push an update, if any, onto the queue. Creates a new queue if none is
14375 * passed and always returns the queue. Mutative.
14376 */
14377 function enqueue(queue, update) {
14378 if (update) {
14379 queue = queue || [];
14380 queue.push(update);
14381 }
14382 return queue;
14383 }
14384
14385 /**
14386 * Processes any enqueued updates.
14387 *
14388 * @private
14389 */
14390 function processQueue(inst, updateQueue) {
14391 ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);
14392 }
14393
14394 var setChildrenForInstrumentation = emptyFunction;
14395 if ((undefined) !== 'production') {
14396 var getDebugID = function (inst) {
14397 if (!inst._debugID) {
14398 // Check for ART-like instances. TODO: This is silly/gross.
14399 var internal;
14400 if (internal = ReactInstanceMap.get(inst)) {
14401 inst = internal;
14402 }
14403 }
14404 return inst._debugID;
14405 };
14406 setChildrenForInstrumentation = function (children) {
14407 var debugID = getDebugID(this);
14408 // TODO: React Native empty components are also multichild.
14409 // This means they still get into this method but don't have _debugID.
14410 if (debugID !== 0) {
14411 ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {
14412 return children[key]._debugID;
14413 }) : []);
14414 }
14415 };
14416 }
14417
14418 /**
14419 * ReactMultiChild are capable of reconciling multiple children.
14420 *
14421 * @class ReactMultiChild
14422 * @internal
14423 */
14424 var ReactMultiChild = {
14425
14426 /**
14427 * Provides common functionality for components that must reconcile multiple
14428 * children. This is used by `ReactDOMComponent` to mount, update, and
14429 * unmount child components.
14430 *
14431 * @lends {ReactMultiChild.prototype}
14432 */
14433 Mixin: {
14434
14435 _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {
14436 if ((undefined) !== 'production') {
14437 var selfDebugID = getDebugID(this);
14438 if (this._currentElement) {
14439 try {
14440 ReactCurrentOwner.current = this._currentElement._owner;
14441 return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);
14442 } finally {
14443 ReactCurrentOwner.current = null;
14444 }
14445 }
14446 }
14447 return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);
14448 },
14449
14450 _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {
14451 var nextChildren;
14452 var selfDebugID = 0;
14453 if ((undefined) !== 'production') {
14454 selfDebugID = getDebugID(this);
14455 if (this._currentElement) {
14456 try {
14457 ReactCurrentOwner.current = this._currentElement._owner;
14458 nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);
14459 } finally {
14460 ReactCurrentOwner.current = null;
14461 }
14462 ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);
14463 return nextChildren;
14464 }
14465 }
14466 nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);
14467 ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);
14468 return nextChildren;
14469 },
14470
14471 /**
14472 * Generates a "mount image" for each of the supplied children. In the case
14473 * of `ReactDOMComponent`, a mount image is a string of markup.
14474 *
14475 * @param {?object} nestedChildren Nested child maps.
14476 * @return {array} An array of mounted representations.
14477 * @internal
14478 */
14479 mountChildren: function (nestedChildren, transaction, context) {
14480 var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);
14481 this._renderedChildren = children;
14482
14483 var mountImages = [];
14484 var index = 0;
14485 for (var name in children) {
14486 if (children.hasOwnProperty(name)) {
14487 var child = children[name];
14488 var selfDebugID = 0;
14489 if ((undefined) !== 'production') {
14490 selfDebugID = getDebugID(this);
14491 }
14492 var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);
14493 child._mountIndex = index++;
14494 mountImages.push(mountImage);
14495 }
14496 }
14497
14498 if ((undefined) !== 'production') {
14499 setChildrenForInstrumentation.call(this, children);
14500 }
14501
14502 return mountImages;
14503 },
14504
14505 /**
14506 * Replaces any rendered children with a text content string.
14507 *
14508 * @param {string} nextContent String of content.
14509 * @internal
14510 */
14511 updateTextContent: function (nextContent) {
14512 var prevChildren = this._renderedChildren;
14513 // Remove any rendered children.
14514 ReactChildReconciler.unmountChildren(prevChildren, false);
14515 for (var name in prevChildren) {
14516 if (prevChildren.hasOwnProperty(name)) {
14517 true ? (undefined) !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;
14518 }
14519 }
14520 // Set new text content.
14521 var updates = [makeTextContent(nextContent)];
14522 processQueue(this, updates);
14523 },
14524
14525 /**
14526 * Replaces any rendered children with a markup string.
14527 *
14528 * @param {string} nextMarkup String of markup.
14529 * @internal
14530 */
14531 updateMarkup: function (nextMarkup) {
14532 var prevChildren = this._renderedChildren;
14533 // Remove any rendered children.
14534 ReactChildReconciler.unmountChildren(prevChildren, false);
14535 for (var name in prevChildren) {
14536 if (prevChildren.hasOwnProperty(name)) {
14537 true ? (undefined) !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;
14538 }
14539 }
14540 var updates = [makeSetMarkup(nextMarkup)];
14541 processQueue(this, updates);
14542 },
14543
14544 /**
14545 * Updates the rendered children with new children.
14546 *
14547 * @param {?object} nextNestedChildrenElements Nested child element maps.
14548 * @param {ReactReconcileTransaction} transaction
14549 * @internal
14550 */
14551 updateChildren: function (nextNestedChildrenElements, transaction, context) {
14552 // Hook used by React ART
14553 this._updateChildren(nextNestedChildrenElements, transaction, context);
14554 },
14555
14556 /**
14557 * @param {?object} nextNestedChildrenElements Nested child element maps.
14558 * @param {ReactReconcileTransaction} transaction
14559 * @final
14560 * @protected
14561 */
14562 _updateChildren: function (nextNestedChildrenElements, transaction, context) {
14563 var prevChildren = this._renderedChildren;
14564 var removedNodes = {};
14565 var mountImages = [];
14566 var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);
14567 if (!nextChildren && !prevChildren) {
14568 return;
14569 }
14570 var updates = null;
14571 var name;
14572 // `nextIndex` will increment for each child in `nextChildren`, but
14573 // `lastIndex` will be the last index visited in `prevChildren`.
14574 var nextIndex = 0;
14575 var lastIndex = 0;
14576 // `nextMountIndex` will increment for each newly mounted child.
14577 var nextMountIndex = 0;
14578 var lastPlacedNode = null;
14579 for (name in nextChildren) {
14580 if (!nextChildren.hasOwnProperty(name)) {
14581 continue;
14582 }
14583 var prevChild = prevChildren && prevChildren[name];
14584 var nextChild = nextChildren[name];
14585 if (prevChild === nextChild) {
14586 updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));
14587 lastIndex = Math.max(prevChild._mountIndex, lastIndex);
14588 prevChild._mountIndex = nextIndex;
14589 } else {
14590 if (prevChild) {
14591 // Update `lastIndex` before `_mountIndex` gets unset by unmounting.
14592 lastIndex = Math.max(prevChild._mountIndex, lastIndex);
14593 // The `removedNodes` loop below will actually remove the child.
14594 }
14595 // The child must be instantiated before it's mounted.
14596 updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));
14597 nextMountIndex++;
14598 }
14599 nextIndex++;
14600 lastPlacedNode = ReactReconciler.getHostNode(nextChild);
14601 }
14602 // Remove children that are no longer present.
14603 for (name in removedNodes) {
14604 if (removedNodes.hasOwnProperty(name)) {
14605 updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));
14606 }
14607 }
14608 if (updates) {
14609 processQueue(this, updates);
14610 }
14611 this._renderedChildren = nextChildren;
14612
14613 if ((undefined) !== 'production') {
14614 setChildrenForInstrumentation.call(this, nextChildren);
14615 }
14616 },
14617
14618 /**
14619 * Unmounts all rendered children. This should be used to clean up children
14620 * when this component is unmounted. It does not actually perform any
14621 * backend operations.
14622 *
14623 * @internal
14624 */
14625 unmountChildren: function (safely) {
14626 var renderedChildren = this._renderedChildren;
14627 ReactChildReconciler.unmountChildren(renderedChildren, safely);
14628 this._renderedChildren = null;
14629 },
14630
14631 /**
14632 * Moves a child component to the supplied index.
14633 *
14634 * @param {ReactComponent} child Component to move.
14635 * @param {number} toIndex Destination index of the element.
14636 * @param {number} lastIndex Last index visited of the siblings of `child`.
14637 * @protected
14638 */
14639 moveChild: function (child, afterNode, toIndex, lastIndex) {
14640 // If the index of `child` is less than `lastIndex`, then it needs to
14641 // be moved. Otherwise, we do not need to move it because a child will be
14642 // inserted or moved before `child`.
14643 if (child._mountIndex < lastIndex) {
14644 return makeMove(child, afterNode, toIndex);
14645 }
14646 },
14647
14648 /**
14649 * Creates a child component.
14650 *
14651 * @param {ReactComponent} child Component to create.
14652 * @param {string} mountImage Markup to insert.
14653 * @protected
14654 */
14655 createChild: function (child, afterNode, mountImage) {
14656 return makeInsertMarkup(mountImage, afterNode, child._mountIndex);
14657 },
14658
14659 /**
14660 * Removes a child component.
14661 *
14662 * @param {ReactComponent} child Child to remove.
14663 * @protected
14664 */
14665 removeChild: function (child, node) {
14666 return makeRemove(child, node);
14667 },
14668
14669 /**
14670 * Mounts a child with the supplied name.
14671 *
14672 * NOTE: This is part of `updateChildren` and is here for readability.
14673 *
14674 * @param {ReactComponent} child Component to mount.
14675 * @param {string} name Name of the child.
14676 * @param {number} index Index at which to insert the child.
14677 * @param {ReactReconcileTransaction} transaction
14678 * @private
14679 */
14680 _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {
14681 child._mountIndex = index;
14682 return this.createChild(child, afterNode, mountImage);
14683 },
14684
14685 /**
14686 * Unmounts a rendered child.
14687 *
14688 * NOTE: This is part of `updateChildren` and is here for readability.
14689 *
14690 * @param {ReactComponent} child Component to unmount.
14691 * @private
14692 */
14693 _unmountChild: function (child, node) {
14694 var update = this.removeChild(child, node);
14695 child._mountIndex = null;
14696 return update;
14697 }
14698
14699 }
14700
14701 };
14702
14703 module.exports = ReactMultiChild;
14704
14705/***/ },
14706/* 206 */
14707/***/ function(module, exports, __webpack_require__) {
14708
14709 /**
14710 * Copyright 2014-present, Facebook, Inc.
14711 * All rights reserved.
14712 *
14713 * This source code is licensed under the BSD-style license found in the
14714 * LICENSE file in the root directory of this source tree. An additional grant
14715 * of patent rights can be found in the PATENTS file in the same directory.
14716 *
14717 * @providesModule ReactComponentEnvironment
14718 */
14719
14720 'use strict';
14721
14722 var _prodInvariant = __webpack_require__(94);
14723
14724 var invariant = __webpack_require__(95);
14725
14726 var injected = false;
14727
14728 var ReactComponentEnvironment = {
14729
14730 /**
14731 * Optionally injectable hook for swapping out mount images in the middle of
14732 * the tree.
14733 */
14734 replaceNodeWithMarkup: null,
14735
14736 /**
14737 * Optionally injectable hook for processing a queue of child updates. Will
14738 * later move into MultiChildComponents.
14739 */
14740 processChildrenUpdates: null,
14741
14742 injection: {
14743 injectEnvironment: function (environment) {
14744 !!injected ? (undefined) !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;
14745 ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;
14746 ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;
14747 injected = true;
14748 }
14749 }
14750
14751 };
14752
14753 module.exports = ReactComponentEnvironment;
14754
14755/***/ },
14756/* 207 */
14757/***/ function(module, exports) {
14758
14759 /**
14760 * Copyright 2013-present, Facebook, Inc.
14761 * All rights reserved.
14762 *
14763 * This source code is licensed under the BSD-style license found in the
14764 * LICENSE file in the root directory of this source tree. An additional grant
14765 * of patent rights can be found in the PATENTS file in the same directory.
14766 *
14767 * @providesModule ReactInstanceMap
14768 */
14769
14770 'use strict';
14771
14772 /**
14773 * `ReactInstanceMap` maintains a mapping from a public facing stateful
14774 * instance (key) and the internal representation (value). This allows public
14775 * methods to accept the user facing instance as an argument and map them back
14776 * to internal methods.
14777 */
14778
14779 // TODO: Replace this with ES6: var ReactInstanceMap = new Map();
14780
14781 var ReactInstanceMap = {
14782
14783 /**
14784 * This API should be called `delete` but we'd have to make sure to always
14785 * transform these to strings for IE support. When this transform is fully
14786 * supported we can rename it.
14787 */
14788 remove: function (key) {
14789 key._reactInternalInstance = undefined;
14790 },
14791
14792 get: function (key) {
14793 return key._reactInternalInstance;
14794 },
14795
14796 has: function (key) {
14797 return key._reactInternalInstance !== undefined;
14798 },
14799
14800 set: function (key, value) {
14801 key._reactInternalInstance = value;
14802 }
14803
14804 };
14805
14806 module.exports = ReactInstanceMap;
14807
14808/***/ },
14809/* 208 */
14810/***/ function(module, exports, __webpack_require__) {
14811
14812 /* WEBPACK VAR INJECTION */(function(process) {/**
14813 * Copyright 2014-present, Facebook, Inc.
14814 * All rights reserved.
14815 *
14816 * This source code is licensed under the BSD-style license found in the
14817 * LICENSE file in the root directory of this source tree. An additional grant
14818 * of patent rights can be found in the PATENTS file in the same directory.
14819 *
14820 * @providesModule ReactChildReconciler
14821 */
14822
14823 'use strict';
14824
14825 var ReactReconciler = __webpack_require__(147);
14826
14827 var instantiateReactComponent = __webpack_require__(209);
14828 var KeyEscapeUtils = __webpack_require__(103);
14829 var shouldUpdateReactComponent = __webpack_require__(213);
14830 var traverseAllChildren = __webpack_require__(101);
14831 var warning = __webpack_require__(98);
14832
14833 var ReactComponentTreeHook;
14834
14835 if (typeof process !== 'undefined' && ({"NODE_ENV":undefined}) && (undefined) === 'test') {
14836 // Temporary hack.
14837 // Inline requires don't work well with Jest:
14838 // https://github.com/facebook/react/issues/7240
14839 // Remove the inline requires when we don't need them anymore:
14840 // https://github.com/facebook/react/pull/7178
14841 ReactComponentTreeHook = __webpack_require__(115);
14842 }
14843
14844 function instantiateChild(childInstances, child, name, selfDebugID) {
14845 // We found a component instance.
14846 var keyUnique = childInstances[name] === undefined;
14847 if ((undefined) !== 'production') {
14848 if (!ReactComponentTreeHook) {
14849 ReactComponentTreeHook = __webpack_require__(115);
14850 }
14851 if (!keyUnique) {
14852 (undefined) !== '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;
14853 }
14854 }
14855 if (child != null && keyUnique) {
14856 childInstances[name] = instantiateReactComponent(child, true);
14857 }
14858 }
14859
14860 /**
14861 * ReactChildReconciler provides helpers for initializing or updating a set of
14862 * children. Its output is suitable for passing it onto ReactMultiChild which
14863 * does diffed reordering and insertion.
14864 */
14865 var ReactChildReconciler = {
14866 /**
14867 * Generates a "mount image" for each of the supplied children. In the case
14868 * of `ReactDOMComponent`, a mount image is a string of markup.
14869 *
14870 * @param {?object} nestedChildNodes Nested child maps.
14871 * @return {?object} A set of child instances.
14872 * @internal
14873 */
14874 instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots
14875 ) {
14876 if (nestedChildNodes == null) {
14877 return null;
14878 }
14879 var childInstances = {};
14880
14881 if ((undefined) !== 'production') {
14882 traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {
14883 return instantiateChild(childInsts, child, name, selfDebugID);
14884 }, childInstances);
14885 } else {
14886 traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);
14887 }
14888 return childInstances;
14889 },
14890
14891 /**
14892 * Updates the rendered children and returns a new set of children.
14893 *
14894 * @param {?object} prevChildren Previously initialized set of children.
14895 * @param {?object} nextChildren Flat child element maps.
14896 * @param {ReactReconcileTransaction} transaction
14897 * @param {object} context
14898 * @return {?object} A new set of child instances.
14899 * @internal
14900 */
14901 updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots
14902 ) {
14903 // We currently don't have a way to track moves here but if we use iterators
14904 // instead of for..in we can zip the iterators and check if an item has
14905 // moved.
14906 // TODO: If nothing has changed, return the prevChildren object so that we
14907 // can quickly bailout if nothing has changed.
14908 if (!nextChildren && !prevChildren) {
14909 return;
14910 }
14911 var name;
14912 var prevChild;
14913 for (name in nextChildren) {
14914 if (!nextChildren.hasOwnProperty(name)) {
14915 continue;
14916 }
14917 prevChild = prevChildren && prevChildren[name];
14918 var prevElement = prevChild && prevChild._currentElement;
14919 var nextElement = nextChildren[name];
14920 if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {
14921 ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);
14922 nextChildren[name] = prevChild;
14923 } else {
14924 if (prevChild) {
14925 removedNodes[name] = ReactReconciler.getHostNode(prevChild);
14926 ReactReconciler.unmountComponent(prevChild, false);
14927 }
14928 // The child must be instantiated before it's mounted.
14929 var nextChildInstance = instantiateReactComponent(nextElement, true);
14930 nextChildren[name] = nextChildInstance;
14931 // Creating mount image now ensures refs are resolved in right order
14932 // (see https://github.com/facebook/react/pull/7101 for explanation).
14933 var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);
14934 mountImages.push(nextChildMountImage);
14935 }
14936 }
14937 // Unmount children that are no longer present.
14938 for (name in prevChildren) {
14939 if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {
14940 prevChild = prevChildren[name];
14941 removedNodes[name] = ReactReconciler.getHostNode(prevChild);
14942 ReactReconciler.unmountComponent(prevChild, false);
14943 }
14944 }
14945 },
14946
14947 /**
14948 * Unmounts all rendered children. This should be used to clean up children
14949 * when this component is unmounted.
14950 *
14951 * @param {?object} renderedChildren Previously initialized set of children.
14952 * @internal
14953 */
14954 unmountChildren: function (renderedChildren, safely) {
14955 for (var name in renderedChildren) {
14956 if (renderedChildren.hasOwnProperty(name)) {
14957 var renderedChild = renderedChildren[name];
14958 ReactReconciler.unmountComponent(renderedChild, safely);
14959 }
14960 }
14961 }
14962
14963 };
14964
14965 module.exports = ReactChildReconciler;
14966 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(117)))
14967
14968/***/ },
14969/* 209 */
14970/***/ function(module, exports, __webpack_require__) {
14971
14972 /**
14973 * Copyright 2013-present, Facebook, Inc.
14974 * All rights reserved.
14975 *
14976 * This source code is licensed under the BSD-style license found in the
14977 * LICENSE file in the root directory of this source tree. An additional grant
14978 * of patent rights can be found in the PATENTS file in the same directory.
14979 *
14980 * @providesModule instantiateReactComponent
14981 */
14982
14983 'use strict';
14984
14985 var _prodInvariant = __webpack_require__(94),
14986 _assign = __webpack_require__(91);
14987
14988 var ReactCompositeComponent = __webpack_require__(210);
14989 var ReactEmptyComponent = __webpack_require__(214);
14990 var ReactHostComponent = __webpack_require__(215);
14991
14992 var invariant = __webpack_require__(95);
14993 var warning = __webpack_require__(98);
14994
14995 // To avoid a cyclic dependency, we create the final class in this module
14996 var ReactCompositeComponentWrapper = function (element) {
14997 this.construct(element);
14998 };
14999 _assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent.Mixin, {
15000 _instantiateReactComponent: instantiateReactComponent
15001 });
15002
15003 function getDeclarationErrorAddendum(owner) {
15004 if (owner) {
15005 var name = owner.getName();
15006 if (name) {
15007 return ' Check the render method of `' + name + '`.';
15008 }
15009 }
15010 return '';
15011 }
15012
15013 /**
15014 * Check if the type reference is a known internal type. I.e. not a user
15015 * provided composite type.
15016 *
15017 * @param {function} type
15018 * @return {boolean} Returns true if this is a valid internal type.
15019 */
15020 function isInternalComponentType(type) {
15021 return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';
15022 }
15023
15024 var nextDebugID = 1;
15025
15026 /**
15027 * Given a ReactNode, create an instance that will actually be mounted.
15028 *
15029 * @param {ReactNode} node
15030 * @param {boolean} shouldHaveDebugID
15031 * @return {object} A new instance of the element's constructor.
15032 * @protected
15033 */
15034 function instantiateReactComponent(node, shouldHaveDebugID) {
15035 var instance;
15036
15037 if (node === null || node === false) {
15038 instance = ReactEmptyComponent.create(instantiateReactComponent);
15039 } else if (typeof node === 'object') {
15040 var element = node;
15041 !(element && (typeof element.type === 'function' || typeof element.type === 'string')) ? (undefined) !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', element.type == null ? element.type : typeof element.type, getDeclarationErrorAddendum(element._owner)) : _prodInvariant('130', element.type == null ? element.type : typeof element.type, getDeclarationErrorAddendum(element._owner)) : void 0;
15042
15043 // Special case string values
15044 if (typeof element.type === 'string') {
15045 instance = ReactHostComponent.createInternalComponent(element);
15046 } else if (isInternalComponentType(element.type)) {
15047 // This is temporarily available for custom components that are not string
15048 // representations. I.e. ART. Once those are updated to use the string
15049 // representation, we can drop this code path.
15050 instance = new element.type(element);
15051
15052 // We renamed this. Allow the old name for compat. :(
15053 if (!instance.getHostNode) {
15054 instance.getHostNode = instance.getNativeNode;
15055 }
15056 } else {
15057 instance = new ReactCompositeComponentWrapper(element);
15058 }
15059 } else if (typeof node === 'string' || typeof node === 'number') {
15060 instance = ReactHostComponent.createInstanceForText(node);
15061 } else {
15062 true ? (undefined) !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;
15063 }
15064
15065 if ((undefined) !== 'production') {
15066 (undefined) !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;
15067 }
15068
15069 // These two fields are used by the DOM and ART diffing algorithms
15070 // respectively. Instead of using expandos on components, we should be
15071 // storing the state needed by the diffing algorithms elsewhere.
15072 instance._mountIndex = 0;
15073 instance._mountImage = null;
15074
15075 if ((undefined) !== 'production') {
15076 instance._debugID = shouldHaveDebugID ? nextDebugID++ : 0;
15077 }
15078
15079 // Internal instances should fully constructed at this point, so they should
15080 // not get any new fields added to them at this point.
15081 if ((undefined) !== 'production') {
15082 if (Object.preventExtensions) {
15083 Object.preventExtensions(instance);
15084 }
15085 }
15086
15087 return instance;
15088 }
15089
15090 module.exports = instantiateReactComponent;
15091
15092/***/ },
15093/* 210 */
15094/***/ function(module, exports, __webpack_require__) {
15095
15096 /**
15097 * Copyright 2013-present, Facebook, Inc.
15098 * All rights reserved.
15099 *
15100 * This source code is licensed under the BSD-style license found in the
15101 * LICENSE file in the root directory of this source tree. An additional grant
15102 * of patent rights can be found in the PATENTS file in the same directory.
15103 *
15104 * @providesModule ReactCompositeComponent
15105 */
15106
15107 'use strict';
15108
15109 var _prodInvariant = __webpack_require__(94),
15110 _assign = __webpack_require__(91);
15111
15112 var ReactComponentEnvironment = __webpack_require__(206);
15113 var ReactCurrentOwner = __webpack_require__(97);
15114 var ReactElement = __webpack_require__(96);
15115 var ReactErrorUtils = __webpack_require__(134);
15116 var ReactInstanceMap = __webpack_require__(207);
15117 var ReactInstrumentation = __webpack_require__(150);
15118 var ReactNodeTypes = __webpack_require__(211);
15119 var ReactPropTypeLocations = __webpack_require__(109);
15120 var ReactReconciler = __webpack_require__(147);
15121
15122 var checkReactTypeSpec = __webpack_require__(116);
15123 var emptyObject = __webpack_require__(106);
15124 var invariant = __webpack_require__(95);
15125 var shallowEqual = __webpack_require__(212);
15126 var shouldUpdateReactComponent = __webpack_require__(213);
15127 var warning = __webpack_require__(98);
15128
15129 var CompositeTypes = {
15130 ImpureClass: 0,
15131 PureClass: 1,
15132 StatelessFunctional: 2
15133 };
15134
15135 function StatelessComponent(Component) {}
15136 StatelessComponent.prototype.render = function () {
15137 var Component = ReactInstanceMap.get(this)._currentElement.type;
15138 var element = Component(this.props, this.context, this.updater);
15139 warnIfInvalidElement(Component, element);
15140 return element;
15141 };
15142
15143 function warnIfInvalidElement(Component, element) {
15144 if ((undefined) !== 'production') {
15145 (undefined) !== 'production' ? warning(element === null || element === false || ReactElement.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;
15146 (undefined) !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;
15147 }
15148 }
15149
15150 function shouldConstruct(Component) {
15151 return !!(Component.prototype && Component.prototype.isReactComponent);
15152 }
15153
15154 function isPureComponent(Component) {
15155 return !!(Component.prototype && Component.prototype.isPureReactComponent);
15156 }
15157
15158 // Separated into a function to contain deoptimizations caused by try/finally.
15159 function measureLifeCyclePerf(fn, debugID, timerType) {
15160 if (debugID === 0) {
15161 // Top-level wrappers (see ReactMount) and empty components (see
15162 // ReactDOMEmptyComponent) are invisible to hooks and devtools.
15163 // Both are implementation details that should go away in the future.
15164 return fn();
15165 }
15166
15167 ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);
15168 try {
15169 return fn();
15170 } finally {
15171 ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);
15172 }
15173 }
15174
15175 /**
15176 * ------------------ The Life-Cycle of a Composite Component ------------------
15177 *
15178 * - constructor: Initialization of state. The instance is now retained.
15179 * - componentWillMount
15180 * - render
15181 * - [children's constructors]
15182 * - [children's componentWillMount and render]
15183 * - [children's componentDidMount]
15184 * - componentDidMount
15185 *
15186 * Update Phases:
15187 * - componentWillReceiveProps (only called if parent updated)
15188 * - shouldComponentUpdate
15189 * - componentWillUpdate
15190 * - render
15191 * - [children's constructors or receive props phases]
15192 * - componentDidUpdate
15193 *
15194 * - componentWillUnmount
15195 * - [children's componentWillUnmount]
15196 * - [children destroyed]
15197 * - (destroyed): The instance is now blank, released by React and ready for GC.
15198 *
15199 * -----------------------------------------------------------------------------
15200 */
15201
15202 /**
15203 * An incrementing ID assigned to each component when it is mounted. This is
15204 * used to enforce the order in which `ReactUpdates` updates dirty components.
15205 *
15206 * @private
15207 */
15208 var nextMountID = 1;
15209
15210 /**
15211 * @lends {ReactCompositeComponent.prototype}
15212 */
15213 var ReactCompositeComponentMixin = {
15214
15215 /**
15216 * Base constructor for all composite component.
15217 *
15218 * @param {ReactElement} element
15219 * @final
15220 * @internal
15221 */
15222 construct: function (element) {
15223 this._currentElement = element;
15224 this._rootNodeID = 0;
15225 this._compositeType = null;
15226 this._instance = null;
15227 this._hostParent = null;
15228 this._hostContainerInfo = null;
15229
15230 // See ReactUpdateQueue
15231 this._updateBatchNumber = null;
15232 this._pendingElement = null;
15233 this._pendingStateQueue = null;
15234 this._pendingReplaceState = false;
15235 this._pendingForceUpdate = false;
15236
15237 this._renderedNodeType = null;
15238 this._renderedComponent = null;
15239 this._context = null;
15240 this._mountOrder = 0;
15241 this._topLevelWrapper = null;
15242
15243 // See ReactUpdates and ReactUpdateQueue.
15244 this._pendingCallbacks = null;
15245
15246 // ComponentWillUnmount shall only be called once
15247 this._calledComponentWillUnmount = false;
15248
15249 if ((undefined) !== 'production') {
15250 this._warnedAboutRefsInRender = false;
15251 }
15252 },
15253
15254 /**
15255 * Initializes the component, renders markup, and registers event listeners.
15256 *
15257 * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
15258 * @param {?object} hostParent
15259 * @param {?object} hostContainerInfo
15260 * @param {?object} context
15261 * @return {?string} Rendered markup to be inserted into the DOM.
15262 * @final
15263 * @internal
15264 */
15265 mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
15266 var _this = this;
15267
15268 this._context = context;
15269 this._mountOrder = nextMountID++;
15270 this._hostParent = hostParent;
15271 this._hostContainerInfo = hostContainerInfo;
15272
15273 var publicProps = this._currentElement.props;
15274 var publicContext = this._processContext(context);
15275
15276 var Component = this._currentElement.type;
15277
15278 var updateQueue = transaction.getUpdateQueue();
15279
15280 // Initialize the public class
15281 var doConstruct = shouldConstruct(Component);
15282 var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);
15283 var renderedElement;
15284
15285 // Support functional components
15286 if (!doConstruct && (inst == null || inst.render == null)) {
15287 renderedElement = inst;
15288 warnIfInvalidElement(Component, renderedElement);
15289 !(inst === null || inst === false || ReactElement.isValidElement(inst)) ? (undefined) !== '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;
15290 inst = new StatelessComponent(Component);
15291 this._compositeType = CompositeTypes.StatelessFunctional;
15292 } else {
15293 if (isPureComponent(Component)) {
15294 this._compositeType = CompositeTypes.PureClass;
15295 } else {
15296 this._compositeType = CompositeTypes.ImpureClass;
15297 }
15298 }
15299
15300 if ((undefined) !== 'production') {
15301 // This will throw later in _renderValidatedComponent, but add an early
15302 // warning now to help debugging
15303 if (inst.render == null) {
15304 (undefined) !== '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;
15305 }
15306
15307 var propsMutated = inst.props !== publicProps;
15308 var componentName = Component.displayName || Component.name || 'Component';
15309
15310 (undefined) !== '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;
15311 }
15312
15313 // These should be set up in the constructor, but as a convenience for
15314 // simpler class abstractions, we set them up after the fact.
15315 inst.props = publicProps;
15316 inst.context = publicContext;
15317 inst.refs = emptyObject;
15318 inst.updater = updateQueue;
15319
15320 this._instance = inst;
15321
15322 // Store a reference from the instance back to the internal representation
15323 ReactInstanceMap.set(inst, this);
15324
15325 if ((undefined) !== 'production') {
15326 // Since plain JS classes are defined without any special initialization
15327 // logic, we can not catch common errors early. Therefore, we have to
15328 // catch them here, at initialization time, instead.
15329 (undefined) !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved, '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;
15330 (undefined) !== '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;
15331 (undefined) !== '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;
15332 (undefined) !== '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;
15333 (undefined) !== '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;
15334 (undefined) !== '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;
15335 (undefined) !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;
15336 }
15337
15338 var initialState = inst.state;
15339 if (initialState === undefined) {
15340 inst.state = initialState = null;
15341 }
15342 !(typeof initialState === 'object' && !Array.isArray(initialState)) ? (undefined) !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;
15343
15344 this._pendingStateQueue = null;
15345 this._pendingReplaceState = false;
15346 this._pendingForceUpdate = false;
15347
15348 var markup;
15349 if (inst.unstable_handleError) {
15350 markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);
15351 } else {
15352 markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
15353 }
15354
15355 if (inst.componentDidMount) {
15356 if ((undefined) !== 'production') {
15357 transaction.getReactMountReady().enqueue(function () {
15358 measureLifeCyclePerf(function () {
15359 return inst.componentDidMount();
15360 }, _this._debugID, 'componentDidMount');
15361 });
15362 } else {
15363 transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
15364 }
15365 }
15366
15367 return markup;
15368 },
15369
15370 _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {
15371 if ((undefined) !== 'production') {
15372 ReactCurrentOwner.current = this;
15373 try {
15374 return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
15375 } finally {
15376 ReactCurrentOwner.current = null;
15377 }
15378 } else {
15379 return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
15380 }
15381 },
15382
15383 _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {
15384 var Component = this._currentElement.type;
15385
15386 if (doConstruct) {
15387 if ((undefined) !== 'production') {
15388 return measureLifeCyclePerf(function () {
15389 return new Component(publicProps, publicContext, updateQueue);
15390 }, this._debugID, 'ctor');
15391 } else {
15392 return new Component(publicProps, publicContext, updateQueue);
15393 }
15394 }
15395
15396 // This can still be an instance in case of factory components
15397 // but we'll count this as time spent rendering as the more common case.
15398 if ((undefined) !== 'production') {
15399 return measureLifeCyclePerf(function () {
15400 return Component(publicProps, publicContext, updateQueue);
15401 }, this._debugID, 'render');
15402 } else {
15403 return Component(publicProps, publicContext, updateQueue);
15404 }
15405 },
15406
15407 performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
15408 var markup;
15409 var checkpoint = transaction.checkpoint();
15410 try {
15411 markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
15412 } catch (e) {
15413 // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint
15414 transaction.rollback(checkpoint);
15415 this._instance.unstable_handleError(e);
15416 if (this._pendingStateQueue) {
15417 this._instance.state = this._processPendingState(this._instance.props, this._instance.context);
15418 }
15419 checkpoint = transaction.checkpoint();
15420
15421 this._renderedComponent.unmountComponent(true);
15422 transaction.rollback(checkpoint);
15423
15424 // Try again - we've informed the component about the error, so they can render an error message this time.
15425 // If this throws again, the error will bubble up (and can be caught by a higher error boundary).
15426 markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
15427 }
15428 return markup;
15429 },
15430
15431 performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
15432 var inst = this._instance;
15433
15434 var debugID = 0;
15435 if ((undefined) !== 'production') {
15436 debugID = this._debugID;
15437 }
15438
15439 if (inst.componentWillMount) {
15440 if ((undefined) !== 'production') {
15441 measureLifeCyclePerf(function () {
15442 return inst.componentWillMount();
15443 }, debugID, 'componentWillMount');
15444 } else {
15445 inst.componentWillMount();
15446 }
15447 // When mounting, calls to `setState` by `componentWillMount` will set
15448 // `this._pendingStateQueue` without triggering a re-render.
15449 if (this._pendingStateQueue) {
15450 inst.state = this._processPendingState(inst.props, inst.context);
15451 }
15452 }
15453
15454 // If not a stateless component, we now render
15455 if (renderedElement === undefined) {
15456 renderedElement = this._renderValidatedComponent();
15457 }
15458
15459 var nodeType = ReactNodeTypes.getType(renderedElement);
15460 this._renderedNodeType = nodeType;
15461 var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */
15462 );
15463 this._renderedComponent = child;
15464
15465 var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);
15466
15467 if ((undefined) !== 'production') {
15468 if (debugID !== 0) {
15469 var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];
15470 ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);
15471 }
15472 }
15473
15474 return markup;
15475 },
15476
15477 getHostNode: function () {
15478 return ReactReconciler.getHostNode(this._renderedComponent);
15479 },
15480
15481 /**
15482 * Releases any resources allocated by `mountComponent`.
15483 *
15484 * @final
15485 * @internal
15486 */
15487 unmountComponent: function (safely) {
15488 if (!this._renderedComponent) {
15489 return;
15490 }
15491
15492 var inst = this._instance;
15493
15494 if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {
15495 inst._calledComponentWillUnmount = true;
15496
15497 if (safely) {
15498 var name = this.getName() + '.componentWillUnmount()';
15499 ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));
15500 } else {
15501 if ((undefined) !== 'production') {
15502 measureLifeCyclePerf(function () {
15503 return inst.componentWillUnmount();
15504 }, this._debugID, 'componentWillUnmount');
15505 } else {
15506 inst.componentWillUnmount();
15507 }
15508 }
15509 }
15510
15511 if (this._renderedComponent) {
15512 ReactReconciler.unmountComponent(this._renderedComponent, safely);
15513 this._renderedNodeType = null;
15514 this._renderedComponent = null;
15515 this._instance = null;
15516 }
15517
15518 // Reset pending fields
15519 // Even if this component is scheduled for another update in ReactUpdates,
15520 // it would still be ignored because these fields are reset.
15521 this._pendingStateQueue = null;
15522 this._pendingReplaceState = false;
15523 this._pendingForceUpdate = false;
15524 this._pendingCallbacks = null;
15525 this._pendingElement = null;
15526
15527 // These fields do not really need to be reset since this object is no
15528 // longer accessible.
15529 this._context = null;
15530 this._rootNodeID = 0;
15531 this._topLevelWrapper = null;
15532
15533 // Delete the reference from the instance to this internal representation
15534 // which allow the internals to be properly cleaned up even if the user
15535 // leaks a reference to the public instance.
15536 ReactInstanceMap.remove(inst);
15537
15538 // Some existing components rely on inst.props even after they've been
15539 // destroyed (in event handlers).
15540 // TODO: inst.props = null;
15541 // TODO: inst.state = null;
15542 // TODO: inst.context = null;
15543 },
15544
15545 /**
15546 * Filters the context object to only contain keys specified in
15547 * `contextTypes`
15548 *
15549 * @param {object} context
15550 * @return {?object}
15551 * @private
15552 */
15553 _maskContext: function (context) {
15554 var Component = this._currentElement.type;
15555 var contextTypes = Component.contextTypes;
15556 if (!contextTypes) {
15557 return emptyObject;
15558 }
15559 var maskedContext = {};
15560 for (var contextName in contextTypes) {
15561 maskedContext[contextName] = context[contextName];
15562 }
15563 return maskedContext;
15564 },
15565
15566 /**
15567 * Filters the context object to only contain keys specified in
15568 * `contextTypes`, and asserts that they are valid.
15569 *
15570 * @param {object} context
15571 * @return {?object}
15572 * @private
15573 */
15574 _processContext: function (context) {
15575 var maskedContext = this._maskContext(context);
15576 if ((undefined) !== 'production') {
15577 var Component = this._currentElement.type;
15578 if (Component.contextTypes) {
15579 this._checkContextTypes(Component.contextTypes, maskedContext, ReactPropTypeLocations.context);
15580 }
15581 }
15582 return maskedContext;
15583 },
15584
15585 /**
15586 * @param {object} currentContext
15587 * @return {object}
15588 * @private
15589 */
15590 _processChildContext: function (currentContext) {
15591 var Component = this._currentElement.type;
15592 var inst = this._instance;
15593 var childContext;
15594
15595 if (inst.getChildContext) {
15596 if ((undefined) !== 'production') {
15597 ReactInstrumentation.debugTool.onBeginProcessingChildContext();
15598 try {
15599 childContext = inst.getChildContext();
15600 } finally {
15601 ReactInstrumentation.debugTool.onEndProcessingChildContext();
15602 }
15603 } else {
15604 childContext = inst.getChildContext();
15605 }
15606 }
15607
15608 if (childContext) {
15609 !(typeof Component.childContextTypes === 'object') ? (undefined) !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;
15610 if ((undefined) !== 'production') {
15611 this._checkContextTypes(Component.childContextTypes, childContext, ReactPropTypeLocations.childContext);
15612 }
15613 for (var name in childContext) {
15614 !(name in Component.childContextTypes) ? (undefined) !== 'production' ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;
15615 }
15616 return _assign({}, currentContext, childContext);
15617 }
15618 return currentContext;
15619 },
15620
15621 /**
15622 * Assert that the context types are valid
15623 *
15624 * @param {object} typeSpecs Map of context field to a ReactPropType
15625 * @param {object} values Runtime values that need to be type-checked
15626 * @param {string} location e.g. "prop", "context", "child context"
15627 * @private
15628 */
15629 _checkContextTypes: function (typeSpecs, values, location) {
15630 checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);
15631 },
15632
15633 receiveComponent: function (nextElement, transaction, nextContext) {
15634 var prevElement = this._currentElement;
15635 var prevContext = this._context;
15636
15637 this._pendingElement = null;
15638
15639 this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);
15640 },
15641
15642 /**
15643 * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`
15644 * is set, update the component.
15645 *
15646 * @param {ReactReconcileTransaction} transaction
15647 * @internal
15648 */
15649 performUpdateIfNecessary: function (transaction) {
15650 if (this._pendingElement != null) {
15651 ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);
15652 } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {
15653 this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);
15654 } else {
15655 this._updateBatchNumber = null;
15656 }
15657 },
15658
15659 /**
15660 * Perform an update to a mounted component. The componentWillReceiveProps and
15661 * shouldComponentUpdate methods are called, then (assuming the update isn't
15662 * skipped) the remaining update lifecycle methods are called and the DOM
15663 * representation is updated.
15664 *
15665 * By default, this implements React's rendering and reconciliation algorithm.
15666 * Sophisticated clients may wish to override this.
15667 *
15668 * @param {ReactReconcileTransaction} transaction
15669 * @param {ReactElement} prevParentElement
15670 * @param {ReactElement} nextParentElement
15671 * @internal
15672 * @overridable
15673 */
15674 updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {
15675 var inst = this._instance;
15676 !(inst != null) ? (undefined) !== '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;
15677
15678 var willReceive = false;
15679 var nextContext;
15680
15681 // Determine if the context has changed or not
15682 if (this._context === nextUnmaskedContext) {
15683 nextContext = inst.context;
15684 } else {
15685 nextContext = this._processContext(nextUnmaskedContext);
15686 willReceive = true;
15687 }
15688
15689 var prevProps = prevParentElement.props;
15690 var nextProps = nextParentElement.props;
15691
15692 // Not a simple state update but a props update
15693 if (prevParentElement !== nextParentElement) {
15694 willReceive = true;
15695 }
15696
15697 // An update here will schedule an update but immediately set
15698 // _pendingStateQueue which will ensure that any state updates gets
15699 // immediately reconciled instead of waiting for the next batch.
15700 if (willReceive && inst.componentWillReceiveProps) {
15701 if ((undefined) !== 'production') {
15702 measureLifeCyclePerf(function () {
15703 return inst.componentWillReceiveProps(nextProps, nextContext);
15704 }, this._debugID, 'componentWillReceiveProps');
15705 } else {
15706 inst.componentWillReceiveProps(nextProps, nextContext);
15707 }
15708 }
15709
15710 var nextState = this._processPendingState(nextProps, nextContext);
15711 var shouldUpdate = true;
15712
15713 if (!this._pendingForceUpdate) {
15714 if (inst.shouldComponentUpdate) {
15715 if ((undefined) !== 'production') {
15716 shouldUpdate = measureLifeCyclePerf(function () {
15717 return inst.shouldComponentUpdate(nextProps, nextState, nextContext);
15718 }, this._debugID, 'shouldComponentUpdate');
15719 } else {
15720 shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);
15721 }
15722 } else {
15723 if (this._compositeType === CompositeTypes.PureClass) {
15724 shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);
15725 }
15726 }
15727 }
15728
15729 if ((undefined) !== 'production') {
15730 (undefined) !== '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;
15731 }
15732
15733 this._updateBatchNumber = null;
15734 if (shouldUpdate) {
15735 this._pendingForceUpdate = false;
15736 // Will set `this.props`, `this.state` and `this.context`.
15737 this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);
15738 } else {
15739 // If it's determined that a component should not update, we still want
15740 // to set props and state but we shortcut the rest of the update.
15741 this._currentElement = nextParentElement;
15742 this._context = nextUnmaskedContext;
15743 inst.props = nextProps;
15744 inst.state = nextState;
15745 inst.context = nextContext;
15746 }
15747 },
15748
15749 _processPendingState: function (props, context) {
15750 var inst = this._instance;
15751 var queue = this._pendingStateQueue;
15752 var replace = this._pendingReplaceState;
15753 this._pendingReplaceState = false;
15754 this._pendingStateQueue = null;
15755
15756 if (!queue) {
15757 return inst.state;
15758 }
15759
15760 if (replace && queue.length === 1) {
15761 return queue[0];
15762 }
15763
15764 var nextState = _assign({}, replace ? queue[0] : inst.state);
15765 for (var i = replace ? 1 : 0; i < queue.length; i++) {
15766 var partial = queue[i];
15767 _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);
15768 }
15769
15770 return nextState;
15771 },
15772
15773 /**
15774 * Merges new props and state, notifies delegate methods of update and
15775 * performs update.
15776 *
15777 * @param {ReactElement} nextElement Next element
15778 * @param {object} nextProps Next public object to set as properties.
15779 * @param {?object} nextState Next object to set as state.
15780 * @param {?object} nextContext Next public object to set as context.
15781 * @param {ReactReconcileTransaction} transaction
15782 * @param {?object} unmaskedContext
15783 * @private
15784 */
15785 _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {
15786 var _this2 = this;
15787
15788 var inst = this._instance;
15789
15790 var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);
15791 var prevProps;
15792 var prevState;
15793 var prevContext;
15794 if (hasComponentDidUpdate) {
15795 prevProps = inst.props;
15796 prevState = inst.state;
15797 prevContext = inst.context;
15798 }
15799
15800 if (inst.componentWillUpdate) {
15801 if ((undefined) !== 'production') {
15802 measureLifeCyclePerf(function () {
15803 return inst.componentWillUpdate(nextProps, nextState, nextContext);
15804 }, this._debugID, 'componentWillUpdate');
15805 } else {
15806 inst.componentWillUpdate(nextProps, nextState, nextContext);
15807 }
15808 }
15809
15810 this._currentElement = nextElement;
15811 this._context = unmaskedContext;
15812 inst.props = nextProps;
15813 inst.state = nextState;
15814 inst.context = nextContext;
15815
15816 this._updateRenderedComponent(transaction, unmaskedContext);
15817
15818 if (hasComponentDidUpdate) {
15819 if ((undefined) !== 'production') {
15820 transaction.getReactMountReady().enqueue(function () {
15821 measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');
15822 });
15823 } else {
15824 transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);
15825 }
15826 }
15827 },
15828
15829 /**
15830 * Call the component's `render` method and update the DOM accordingly.
15831 *
15832 * @param {ReactReconcileTransaction} transaction
15833 * @internal
15834 */
15835 _updateRenderedComponent: function (transaction, context) {
15836 var prevComponentInstance = this._renderedComponent;
15837 var prevRenderedElement = prevComponentInstance._currentElement;
15838 var nextRenderedElement = this._renderValidatedComponent();
15839
15840 var debugID = 0;
15841 if ((undefined) !== 'production') {
15842 debugID = this._debugID;
15843 }
15844
15845 if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {
15846 ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));
15847 } else {
15848 var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);
15849 ReactReconciler.unmountComponent(prevComponentInstance, false);
15850
15851 var nodeType = ReactNodeTypes.getType(nextRenderedElement);
15852 this._renderedNodeType = nodeType;
15853 var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */
15854 );
15855 this._renderedComponent = child;
15856
15857 var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);
15858
15859 if ((undefined) !== 'production') {
15860 if (debugID !== 0) {
15861 var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];
15862 ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);
15863 }
15864 }
15865
15866 this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);
15867 }
15868 },
15869
15870 /**
15871 * Overridden in shallow rendering.
15872 *
15873 * @protected
15874 */
15875 _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {
15876 ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);
15877 },
15878
15879 /**
15880 * @protected
15881 */
15882 _renderValidatedComponentWithoutOwnerOrContext: function () {
15883 var inst = this._instance;
15884 var renderedComponent;
15885
15886 if ((undefined) !== 'production') {
15887 renderedComponent = measureLifeCyclePerf(function () {
15888 return inst.render();
15889 }, this._debugID, 'render');
15890 } else {
15891 renderedComponent = inst.render();
15892 }
15893
15894 if ((undefined) !== 'production') {
15895 // We allow auto-mocks to proceed as if they're returning null.
15896 if (renderedComponent === undefined && inst.render._isMockFunction) {
15897 // This is probably bad practice. Consider warning here and
15898 // deprecating this convenience.
15899 renderedComponent = null;
15900 }
15901 }
15902
15903 return renderedComponent;
15904 },
15905
15906 /**
15907 * @private
15908 */
15909 _renderValidatedComponent: function () {
15910 var renderedComponent;
15911 if ((undefined) !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {
15912 ReactCurrentOwner.current = this;
15913 try {
15914 renderedComponent = this._renderValidatedComponentWithoutOwnerOrContext();
15915 } finally {
15916 ReactCurrentOwner.current = null;
15917 }
15918 } else {
15919 renderedComponent = this._renderValidatedComponentWithoutOwnerOrContext();
15920 }
15921 !(
15922 // TODO: An `isValidNode` function would probably be more appropriate
15923 renderedComponent === null || renderedComponent === false || ReactElement.isValidElement(renderedComponent)) ? (undefined) !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;
15924
15925 return renderedComponent;
15926 },
15927
15928 /**
15929 * Lazily allocates the refs object and stores `component` as `ref`.
15930 *
15931 * @param {string} ref Reference name.
15932 * @param {component} component Component to store as `ref`.
15933 * @final
15934 * @private
15935 */
15936 attachRef: function (ref, component) {
15937 var inst = this.getPublicInstance();
15938 !(inst != null) ? (undefined) !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;
15939 var publicComponentInstance = component.getPublicInstance();
15940 if ((undefined) !== 'production') {
15941 var componentName = component && component.getName ? component.getName() : 'a component';
15942 (undefined) !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref "%s" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;
15943 }
15944 var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;
15945 refs[ref] = publicComponentInstance;
15946 },
15947
15948 /**
15949 * Detaches a reference name.
15950 *
15951 * @param {string} ref Name to dereference.
15952 * @final
15953 * @private
15954 */
15955 detachRef: function (ref) {
15956 var refs = this.getPublicInstance().refs;
15957 delete refs[ref];
15958 },
15959
15960 /**
15961 * Get a text description of the component that can be used to identify it
15962 * in error messages.
15963 * @return {string} The name or null.
15964 * @internal
15965 */
15966 getName: function () {
15967 var type = this._currentElement.type;
15968 var constructor = this._instance && this._instance.constructor;
15969 return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;
15970 },
15971
15972 /**
15973 * Get the publicly accessible representation of this component - i.e. what
15974 * is exposed by refs and returned by render. Can be null for stateless
15975 * components.
15976 *
15977 * @return {ReactComponent} the public component instance.
15978 * @internal
15979 */
15980 getPublicInstance: function () {
15981 var inst = this._instance;
15982 if (this._compositeType === CompositeTypes.StatelessFunctional) {
15983 return null;
15984 }
15985 return inst;
15986 },
15987
15988 // Stub
15989 _instantiateReactComponent: null
15990
15991 };
15992
15993 var ReactCompositeComponent = {
15994
15995 Mixin: ReactCompositeComponentMixin
15996
15997 };
15998
15999 module.exports = ReactCompositeComponent;
16000
16001/***/ },
16002/* 211 */
16003/***/ function(module, exports, __webpack_require__) {
16004
16005 /**
16006 * Copyright 2013-present, Facebook, Inc.
16007 * All rights reserved.
16008 *
16009 * This source code is licensed under the BSD-style license found in the
16010 * LICENSE file in the root directory of this source tree. An additional grant
16011 * of patent rights can be found in the PATENTS file in the same directory.
16012 *
16013 * @providesModule ReactNodeTypes
16014 *
16015 */
16016
16017 'use strict';
16018
16019 var _prodInvariant = __webpack_require__(94);
16020
16021 var ReactElement = __webpack_require__(96);
16022
16023 var invariant = __webpack_require__(95);
16024
16025 var ReactNodeTypes = {
16026 HOST: 0,
16027 COMPOSITE: 1,
16028 EMPTY: 2,
16029
16030 getType: function (node) {
16031 if (node === null || node === false) {
16032 return ReactNodeTypes.EMPTY;
16033 } else if (ReactElement.isValidElement(node)) {
16034 if (typeof node.type === 'function') {
16035 return ReactNodeTypes.COMPOSITE;
16036 } else {
16037 return ReactNodeTypes.HOST;
16038 }
16039 }
16040 true ? (undefined) !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;
16041 }
16042 };
16043
16044 module.exports = ReactNodeTypes;
16045
16046/***/ },
16047/* 212 */
16048/***/ function(module, exports) {
16049
16050 /**
16051 * Copyright (c) 2013-present, Facebook, Inc.
16052 * All rights reserved.
16053 *
16054 * This source code is licensed under the BSD-style license found in the
16055 * LICENSE file in the root directory of this source tree. An additional grant
16056 * of patent rights can be found in the PATENTS file in the same directory.
16057 *
16058 * @typechecks
16059 *
16060 */
16061
16062 /*eslint-disable no-self-compare */
16063
16064 'use strict';
16065
16066 var hasOwnProperty = Object.prototype.hasOwnProperty;
16067
16068 /**
16069 * inlined Object.is polyfill to avoid requiring consumers ship their own
16070 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
16071 */
16072 function is(x, y) {
16073 // SameValue algorithm
16074 if (x === y) {
16075 // Steps 1-5, 7-10
16076 // Steps 6.b-6.e: +0 != -0
16077 // Added the nonzero y check to make Flow happy, but it is redundant
16078 return x !== 0 || y !== 0 || 1 / x === 1 / y;
16079 } else {
16080 // Step 6.a: NaN == NaN
16081 return x !== x && y !== y;
16082 }
16083 }
16084
16085 /**
16086 * Performs equality by iterating through keys on an object and returning false
16087 * when any key has values which are not strictly equal between the arguments.
16088 * Returns true when the values of all keys are strictly equal.
16089 */
16090 function shallowEqual(objA, objB) {
16091 if (is(objA, objB)) {
16092 return true;
16093 }
16094
16095 if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
16096 return false;
16097 }
16098
16099 var keysA = Object.keys(objA);
16100 var keysB = Object.keys(objB);
16101
16102 if (keysA.length !== keysB.length) {
16103 return false;
16104 }
16105
16106 // Test for A's keys different from B.
16107 for (var i = 0; i < keysA.length; i++) {
16108 if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
16109 return false;
16110 }
16111 }
16112
16113 return true;
16114 }
16115
16116 module.exports = shallowEqual;
16117
16118/***/ },
16119/* 213 */
16120/***/ function(module, exports) {
16121
16122 /**
16123 * Copyright 2013-present, Facebook, Inc.
16124 * All rights reserved.
16125 *
16126 * This source code is licensed under the BSD-style license found in the
16127 * LICENSE file in the root directory of this source tree. An additional grant
16128 * of patent rights can be found in the PATENTS file in the same directory.
16129 *
16130 * @providesModule shouldUpdateReactComponent
16131 */
16132
16133 'use strict';
16134
16135 /**
16136 * Given a `prevElement` and `nextElement`, determines if the existing
16137 * instance should be updated as opposed to being destroyed or replaced by a new
16138 * instance. Both arguments are elements. This ensures that this logic can
16139 * operate on stateless trees without any backing instance.
16140 *
16141 * @param {?object} prevElement
16142 * @param {?object} nextElement
16143 * @return {boolean} True if the existing instance should be updated.
16144 * @protected
16145 */
16146
16147 function shouldUpdateReactComponent(prevElement, nextElement) {
16148 var prevEmpty = prevElement === null || prevElement === false;
16149 var nextEmpty = nextElement === null || nextElement === false;
16150 if (prevEmpty || nextEmpty) {
16151 return prevEmpty === nextEmpty;
16152 }
16153
16154 var prevType = typeof prevElement;
16155 var nextType = typeof nextElement;
16156 if (prevType === 'string' || prevType === 'number') {
16157 return nextType === 'string' || nextType === 'number';
16158 } else {
16159 return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;
16160 }
16161 }
16162
16163 module.exports = shouldUpdateReactComponent;
16164
16165/***/ },
16166/* 214 */
16167/***/ function(module, exports) {
16168
16169 /**
16170 * Copyright 2014-present, Facebook, Inc.
16171 * All rights reserved.
16172 *
16173 * This source code is licensed under the BSD-style license found in the
16174 * LICENSE file in the root directory of this source tree. An additional grant
16175 * of patent rights can be found in the PATENTS file in the same directory.
16176 *
16177 * @providesModule ReactEmptyComponent
16178 */
16179
16180 'use strict';
16181
16182 var emptyComponentFactory;
16183
16184 var ReactEmptyComponentInjection = {
16185 injectEmptyComponentFactory: function (factory) {
16186 emptyComponentFactory = factory;
16187 }
16188 };
16189
16190 var ReactEmptyComponent = {
16191 create: function (instantiate) {
16192 return emptyComponentFactory(instantiate);
16193 }
16194 };
16195
16196 ReactEmptyComponent.injection = ReactEmptyComponentInjection;
16197
16198 module.exports = ReactEmptyComponent;
16199
16200/***/ },
16201/* 215 */
16202/***/ function(module, exports, __webpack_require__) {
16203
16204 /**
16205 * Copyright 2014-present, Facebook, Inc.
16206 * All rights reserved.
16207 *
16208 * This source code is licensed under the BSD-style license found in the
16209 * LICENSE file in the root directory of this source tree. An additional grant
16210 * of patent rights can be found in the PATENTS file in the same directory.
16211 *
16212 * @providesModule ReactHostComponent
16213 */
16214
16215 'use strict';
16216
16217 var _prodInvariant = __webpack_require__(94),
16218 _assign = __webpack_require__(91);
16219
16220 var invariant = __webpack_require__(95);
16221
16222 var genericComponentClass = null;
16223 // This registry keeps track of wrapper classes around host tags.
16224 var tagToComponentClass = {};
16225 var textComponentClass = null;
16226
16227 var ReactHostComponentInjection = {
16228 // This accepts a class that receives the tag string. This is a catch all
16229 // that can render any kind of tag.
16230 injectGenericComponentClass: function (componentClass) {
16231 genericComponentClass = componentClass;
16232 },
16233 // This accepts a text component class that takes the text string to be
16234 // rendered as props.
16235 injectTextComponentClass: function (componentClass) {
16236 textComponentClass = componentClass;
16237 },
16238 // This accepts a keyed object with classes as values. Each key represents a
16239 // tag. That particular tag will use this class instead of the generic one.
16240 injectComponentClasses: function (componentClasses) {
16241 _assign(tagToComponentClass, componentClasses);
16242 }
16243 };
16244
16245 /**
16246 * Get a host internal component class for a specific tag.
16247 *
16248 * @param {ReactElement} element The element to create.
16249 * @return {function} The internal class constructor function.
16250 */
16251 function createInternalComponent(element) {
16252 !genericComponentClass ? (undefined) !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;
16253 return new genericComponentClass(element);
16254 }
16255
16256 /**
16257 * @param {ReactText} text
16258 * @return {ReactComponent}
16259 */
16260 function createInstanceForText(text) {
16261 return new textComponentClass(text);
16262 }
16263
16264 /**
16265 * @param {ReactComponent} component
16266 * @return {boolean}
16267 */
16268 function isTextComponent(component) {
16269 return component instanceof textComponentClass;
16270 }
16271
16272 var ReactHostComponent = {
16273 createInternalComponent: createInternalComponent,
16274 createInstanceForText: createInstanceForText,
16275 isTextComponent: isTextComponent,
16276 injection: ReactHostComponentInjection
16277 };
16278
16279 module.exports = ReactHostComponent;
16280
16281/***/ },
16282/* 216 */
16283/***/ function(module, exports, __webpack_require__) {
16284
16285 /* WEBPACK VAR INJECTION */(function(process) {/**
16286 * Copyright 2013-present, Facebook, Inc.
16287 * All rights reserved.
16288 *
16289 * This source code is licensed under the BSD-style license found in the
16290 * LICENSE file in the root directory of this source tree. An additional grant
16291 * of patent rights can be found in the PATENTS file in the same directory.
16292 *
16293 * @providesModule flattenChildren
16294 *
16295 */
16296
16297 'use strict';
16298
16299 var KeyEscapeUtils = __webpack_require__(103);
16300 var traverseAllChildren = __webpack_require__(101);
16301 var warning = __webpack_require__(98);
16302
16303 var ReactComponentTreeHook;
16304
16305 if (typeof process !== 'undefined' && ({"NODE_ENV":undefined}) && (undefined) === 'test') {
16306 // Temporary hack.
16307 // Inline requires don't work well with Jest:
16308 // https://github.com/facebook/react/issues/7240
16309 // Remove the inline requires when we don't need them anymore:
16310 // https://github.com/facebook/react/pull/7178
16311 ReactComponentTreeHook = __webpack_require__(115);
16312 }
16313
16314 /**
16315 * @param {function} traverseContext Context passed through traversal.
16316 * @param {?ReactComponent} child React child component.
16317 * @param {!string} name String name of key path to child.
16318 * @param {number=} selfDebugID Optional debugID of the current internal instance.
16319 */
16320 function flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {
16321 // We found a component instance.
16322 if (traverseContext && typeof traverseContext === 'object') {
16323 var result = traverseContext;
16324 var keyUnique = result[name] === undefined;
16325 if ((undefined) !== 'production') {
16326 if (!ReactComponentTreeHook) {
16327 ReactComponentTreeHook = __webpack_require__(115);
16328 }
16329 if (!keyUnique) {
16330 (undefined) !== '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;
16331 }
16332 }
16333 if (keyUnique && child != null) {
16334 result[name] = child;
16335 }
16336 }
16337 }
16338
16339 /**
16340 * Flattens children that are typically specified as `props.children`. Any null
16341 * children will not be included in the resulting object.
16342 * @return {!object} flattened children keyed by name.
16343 */
16344 function flattenChildren(children, selfDebugID) {
16345 if (children == null) {
16346 return children;
16347 }
16348 var result = {};
16349
16350 if ((undefined) !== 'production') {
16351 traverseAllChildren(children, function (traverseContext, child, name) {
16352 return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);
16353 }, result);
16354 } else {
16355 traverseAllChildren(children, flattenSingleChildIntoContext, result);
16356 }
16357 return result;
16358 }
16359
16360 module.exports = flattenChildren;
16361 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(117)))
16362
16363/***/ },
16364/* 217 */
16365/***/ function(module, exports, __webpack_require__) {
16366
16367 /**
16368 * Copyright 2014-present, Facebook, Inc.
16369 * All rights reserved.
16370 *
16371 * This source code is licensed under the BSD-style license found in the
16372 * LICENSE file in the root directory of this source tree. An additional grant
16373 * of patent rights can be found in the PATENTS file in the same directory.
16374 *
16375 * @providesModule ReactServerRenderingTransaction
16376 */
16377
16378 'use strict';
16379
16380 var _assign = __webpack_require__(91);
16381
16382 var PooledClass = __webpack_require__(93);
16383 var Transaction = __webpack_require__(157);
16384 var ReactInstrumentation = __webpack_require__(150);
16385 var ReactServerUpdateQueue = __webpack_require__(218);
16386
16387 /**
16388 * Executed within the scope of the `Transaction` instance. Consider these as
16389 * being member methods, but with an implied ordering while being isolated from
16390 * each other.
16391 */
16392 var TRANSACTION_WRAPPERS = [];
16393
16394 if ((undefined) !== 'production') {
16395 TRANSACTION_WRAPPERS.push({
16396 initialize: ReactInstrumentation.debugTool.onBeginFlush,
16397 close: ReactInstrumentation.debugTool.onEndFlush
16398 });
16399 }
16400
16401 var noopCallbackQueue = {
16402 enqueue: function () {}
16403 };
16404
16405 /**
16406 * @class ReactServerRenderingTransaction
16407 * @param {boolean} renderToStaticMarkup
16408 */
16409 function ReactServerRenderingTransaction(renderToStaticMarkup) {
16410 this.reinitializeTransaction();
16411 this.renderToStaticMarkup = renderToStaticMarkup;
16412 this.useCreateElement = false;
16413 this.updateQueue = new ReactServerUpdateQueue(this);
16414 }
16415
16416 var Mixin = {
16417 /**
16418 * @see Transaction
16419 * @abstract
16420 * @final
16421 * @return {array} Empty list of operation wrap procedures.
16422 */
16423 getTransactionWrappers: function () {
16424 return TRANSACTION_WRAPPERS;
16425 },
16426
16427 /**
16428 * @return {object} The queue to collect `onDOMReady` callbacks with.
16429 */
16430 getReactMountReady: function () {
16431 return noopCallbackQueue;
16432 },
16433
16434 /**
16435 * @return {object} The queue to collect React async events.
16436 */
16437 getUpdateQueue: function () {
16438 return this.updateQueue;
16439 },
16440
16441 /**
16442 * `PooledClass` looks for this, and will invoke this before allowing this
16443 * instance to be reused.
16444 */
16445 destructor: function () {},
16446
16447 checkpoint: function () {},
16448
16449 rollback: function () {}
16450 };
16451
16452 _assign(ReactServerRenderingTransaction.prototype, Transaction.Mixin, Mixin);
16453
16454 PooledClass.addPoolingTo(ReactServerRenderingTransaction);
16455
16456 module.exports = ReactServerRenderingTransaction;
16457
16458/***/ },
16459/* 218 */
16460/***/ function(module, exports, __webpack_require__) {
16461
16462 /**
16463 * Copyright 2015-present, Facebook, Inc.
16464 * All rights reserved.
16465 *
16466 * This source code is licensed under the BSD-style license found in the
16467 * LICENSE file in the root directory of this source tree. An additional grant
16468 * of patent rights can be found in the PATENTS file in the same directory.
16469 *
16470 * @providesModule ReactServerUpdateQueue
16471 *
16472 */
16473
16474 'use strict';
16475
16476 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
16477
16478 var ReactUpdateQueue = __webpack_require__(219);
16479 var Transaction = __webpack_require__(157);
16480 var warning = __webpack_require__(98);
16481
16482 function warnNoop(publicInstance, callerName) {
16483 if ((undefined) !== 'production') {
16484 var constructor = publicInstance.constructor;
16485 (undefined) !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;
16486 }
16487 }
16488
16489 /**
16490 * This is the update queue used for server rendering.
16491 * It delegates to ReactUpdateQueue while server rendering is in progress and
16492 * switches to ReactNoopUpdateQueue after the transaction has completed.
16493 * @class ReactServerUpdateQueue
16494 * @param {Transaction} transaction
16495 */
16496
16497 var ReactServerUpdateQueue = function () {
16498 /* :: transaction: Transaction; */
16499
16500 function ReactServerUpdateQueue(transaction) {
16501 _classCallCheck(this, ReactServerUpdateQueue);
16502
16503 this.transaction = transaction;
16504 }
16505
16506 /**
16507 * Checks whether or not this composite component is mounted.
16508 * @param {ReactClass} publicInstance The instance we want to test.
16509 * @return {boolean} True if mounted, false otherwise.
16510 * @protected
16511 * @final
16512 */
16513
16514
16515 ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {
16516 return false;
16517 };
16518
16519 /**
16520 * Enqueue a callback that will be executed after all the pending updates
16521 * have processed.
16522 *
16523 * @param {ReactClass} publicInstance The instance to use as `this` context.
16524 * @param {?function} callback Called after state is updated.
16525 * @internal
16526 */
16527
16528
16529 ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {
16530 if (this.transaction.isInTransaction()) {
16531 ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);
16532 }
16533 };
16534
16535 /**
16536 * Forces an update. This should only be invoked when it is known with
16537 * certainty that we are **not** in a DOM transaction.
16538 *
16539 * You may want to call this when you know that some deeper aspect of the
16540 * component's state has changed but `setState` was not called.
16541 *
16542 * This will not invoke `shouldComponentUpdate`, but it will invoke
16543 * `componentWillUpdate` and `componentDidUpdate`.
16544 *
16545 * @param {ReactClass} publicInstance The instance that should rerender.
16546 * @internal
16547 */
16548
16549
16550 ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {
16551 if (this.transaction.isInTransaction()) {
16552 ReactUpdateQueue.enqueueForceUpdate(publicInstance);
16553 } else {
16554 warnNoop(publicInstance, 'forceUpdate');
16555 }
16556 };
16557
16558 /**
16559 * Replaces all of the state. Always use this or `setState` to mutate state.
16560 * You should treat `this.state` as immutable.
16561 *
16562 * There is no guarantee that `this.state` will be immediately updated, so
16563 * accessing `this.state` after calling this method may return the old value.
16564 *
16565 * @param {ReactClass} publicInstance The instance that should rerender.
16566 * @param {object|function} completeState Next state.
16567 * @internal
16568 */
16569
16570
16571 ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {
16572 if (this.transaction.isInTransaction()) {
16573 ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);
16574 } else {
16575 warnNoop(publicInstance, 'replaceState');
16576 }
16577 };
16578
16579 /**
16580 * Sets a subset of the state. This only exists because _pendingState is
16581 * internal. This provides a merging strategy that is not available to deep
16582 * properties which is confusing. TODO: Expose pendingState or don't use it
16583 * during the merge.
16584 *
16585 * @param {ReactClass} publicInstance The instance that should rerender.
16586 * @param {object|function} partialState Next partial state to be merged with state.
16587 * @internal
16588 */
16589
16590
16591 ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {
16592 if (this.transaction.isInTransaction()) {
16593 ReactUpdateQueue.enqueueSetState(publicInstance, partialState);
16594 } else {
16595 warnNoop(publicInstance, 'setState');
16596 }
16597 };
16598
16599 return ReactServerUpdateQueue;
16600 }();
16601
16602 module.exports = ReactServerUpdateQueue;
16603
16604/***/ },
16605/* 219 */
16606/***/ function(module, exports, __webpack_require__) {
16607
16608 /**
16609 * Copyright 2015-present, Facebook, Inc.
16610 * All rights reserved.
16611 *
16612 * This source code is licensed under the BSD-style license found in the
16613 * LICENSE file in the root directory of this source tree. An additional grant
16614 * of patent rights can be found in the PATENTS file in the same directory.
16615 *
16616 * @providesModule ReactUpdateQueue
16617 */
16618
16619 'use strict';
16620
16621 var _prodInvariant = __webpack_require__(94);
16622
16623 var ReactCurrentOwner = __webpack_require__(97);
16624 var ReactInstanceMap = __webpack_require__(207);
16625 var ReactInstrumentation = __webpack_require__(150);
16626 var ReactUpdates = __webpack_require__(144);
16627
16628 var invariant = __webpack_require__(95);
16629 var warning = __webpack_require__(98);
16630
16631 function enqueueUpdate(internalInstance) {
16632 ReactUpdates.enqueueUpdate(internalInstance);
16633 }
16634
16635 function formatUnexpectedArgument(arg) {
16636 var type = typeof arg;
16637 if (type !== 'object') {
16638 return type;
16639 }
16640 var displayName = arg.constructor && arg.constructor.name || type;
16641 var keys = Object.keys(arg);
16642 if (keys.length > 0 && keys.length < 20) {
16643 return displayName + ' (keys: ' + keys.join(', ') + ')';
16644 }
16645 return displayName;
16646 }
16647
16648 function getInternalInstanceReadyForUpdate(publicInstance, callerName) {
16649 var internalInstance = ReactInstanceMap.get(publicInstance);
16650 if (!internalInstance) {
16651 if ((undefined) !== 'production') {
16652 var ctor = publicInstance.constructor;
16653 // Only warn when we have a callerName. Otherwise we should be silent.
16654 // We're probably calling from enqueueCallback. We don't want to warn
16655 // there because we already warned for the corresponding lifecycle method.
16656 (undefined) !== 'production' ? warning(!callerName, '%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, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;
16657 }
16658 return null;
16659 }
16660
16661 if ((undefined) !== 'production') {
16662 (undefined) !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;
16663 }
16664
16665 return internalInstance;
16666 }
16667
16668 /**
16669 * ReactUpdateQueue allows for state updates to be scheduled into a later
16670 * reconciliation step.
16671 */
16672 var ReactUpdateQueue = {
16673
16674 /**
16675 * Checks whether or not this composite component is mounted.
16676 * @param {ReactClass} publicInstance The instance we want to test.
16677 * @return {boolean} True if mounted, false otherwise.
16678 * @protected
16679 * @final
16680 */
16681 isMounted: function (publicInstance) {
16682 if ((undefined) !== 'production') {
16683 var owner = ReactCurrentOwner.current;
16684 if (owner !== null) {
16685 (undefined) !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;
16686 owner._warnedAboutRefsInRender = true;
16687 }
16688 }
16689 var internalInstance = ReactInstanceMap.get(publicInstance);
16690 if (internalInstance) {
16691 // During componentWillMount and render this will still be null but after
16692 // that will always render to something. At least for now. So we can use
16693 // this hack.
16694 return !!internalInstance._renderedComponent;
16695 } else {
16696 return false;
16697 }
16698 },
16699
16700 /**
16701 * Enqueue a callback that will be executed after all the pending updates
16702 * have processed.
16703 *
16704 * @param {ReactClass} publicInstance The instance to use as `this` context.
16705 * @param {?function} callback Called after state is updated.
16706 * @param {string} callerName Name of the calling function in the public API.
16707 * @internal
16708 */
16709 enqueueCallback: function (publicInstance, callback, callerName) {
16710 ReactUpdateQueue.validateCallback(callback, callerName);
16711 var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);
16712
16713 // Previously we would throw an error if we didn't have an internal
16714 // instance. Since we want to make it a no-op instead, we mirror the same
16715 // behavior we have in other enqueue* methods.
16716 // We also need to ignore callbacks in componentWillMount. See
16717 // enqueueUpdates.
16718 if (!internalInstance) {
16719 return null;
16720 }
16721
16722 if (internalInstance._pendingCallbacks) {
16723 internalInstance._pendingCallbacks.push(callback);
16724 } else {
16725 internalInstance._pendingCallbacks = [callback];
16726 }
16727 // TODO: The callback here is ignored when setState is called from
16728 // componentWillMount. Either fix it or disallow doing so completely in
16729 // favor of getInitialState. Alternatively, we can disallow
16730 // componentWillMount during server-side rendering.
16731 enqueueUpdate(internalInstance);
16732 },
16733
16734 enqueueCallbackInternal: function (internalInstance, callback) {
16735 if (internalInstance._pendingCallbacks) {
16736 internalInstance._pendingCallbacks.push(callback);
16737 } else {
16738 internalInstance._pendingCallbacks = [callback];
16739 }
16740 enqueueUpdate(internalInstance);
16741 },
16742
16743 /**
16744 * Forces an update. This should only be invoked when it is known with
16745 * certainty that we are **not** in a DOM transaction.
16746 *
16747 * You may want to call this when you know that some deeper aspect of the
16748 * component's state has changed but `setState` was not called.
16749 *
16750 * This will not invoke `shouldComponentUpdate`, but it will invoke
16751 * `componentWillUpdate` and `componentDidUpdate`.
16752 *
16753 * @param {ReactClass} publicInstance The instance that should rerender.
16754 * @internal
16755 */
16756 enqueueForceUpdate: function (publicInstance) {
16757 var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');
16758
16759 if (!internalInstance) {
16760 return;
16761 }
16762
16763 internalInstance._pendingForceUpdate = true;
16764
16765 enqueueUpdate(internalInstance);
16766 },
16767
16768 /**
16769 * Replaces all of the state. Always use this or `setState` to mutate state.
16770 * You should treat `this.state` as immutable.
16771 *
16772 * There is no guarantee that `this.state` will be immediately updated, so
16773 * accessing `this.state` after calling this method may return the old value.
16774 *
16775 * @param {ReactClass} publicInstance The instance that should rerender.
16776 * @param {object} completeState Next state.
16777 * @internal
16778 */
16779 enqueueReplaceState: function (publicInstance, completeState) {
16780 var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');
16781
16782 if (!internalInstance) {
16783 return;
16784 }
16785
16786 internalInstance._pendingStateQueue = [completeState];
16787 internalInstance._pendingReplaceState = true;
16788
16789 enqueueUpdate(internalInstance);
16790 },
16791
16792 /**
16793 * Sets a subset of the state. This only exists because _pendingState is
16794 * internal. This provides a merging strategy that is not available to deep
16795 * properties which is confusing. TODO: Expose pendingState or don't use it
16796 * during the merge.
16797 *
16798 * @param {ReactClass} publicInstance The instance that should rerender.
16799 * @param {object} partialState Next partial state to be merged with state.
16800 * @internal
16801 */
16802 enqueueSetState: function (publicInstance, partialState) {
16803 if ((undefined) !== 'production') {
16804 ReactInstrumentation.debugTool.onSetState();
16805 (undefined) !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;
16806 }
16807
16808 var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');
16809
16810 if (!internalInstance) {
16811 return;
16812 }
16813
16814 var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);
16815 queue.push(partialState);
16816
16817 enqueueUpdate(internalInstance);
16818 },
16819
16820 enqueueElementInternal: function (internalInstance, nextElement, nextContext) {
16821 internalInstance._pendingElement = nextElement;
16822 // TODO: introduce _pendingContext instead of setting it directly.
16823 internalInstance._context = nextContext;
16824 enqueueUpdate(internalInstance);
16825 },
16826
16827 validateCallback: function (callback, callerName) {
16828 !(!callback || typeof callback === 'function') ? (undefined) !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;
16829 }
16830
16831 };
16832
16833 module.exports = ReactUpdateQueue;
16834
16835/***/ },
16836/* 220 */
16837/***/ function(module, exports, __webpack_require__) {
16838
16839 /**
16840 * Copyright 2015-present, Facebook, Inc.
16841 * All rights reserved.
16842 *
16843 * This source code is licensed under the BSD-style license found in the
16844 * LICENSE file in the root directory of this source tree. An additional grant
16845 * of patent rights can be found in the PATENTS file in the same directory.
16846 *
16847 * @providesModule validateDOMNesting
16848 */
16849
16850 'use strict';
16851
16852 var _assign = __webpack_require__(91);
16853
16854 var emptyFunction = __webpack_require__(99);
16855 var warning = __webpack_require__(98);
16856
16857 var validateDOMNesting = emptyFunction;
16858
16859 if ((undefined) !== 'production') {
16860 // This validation code was written based on the HTML5 parsing spec:
16861 // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
16862 //
16863 // Note: this does not catch all invalid nesting, nor does it try to (as it's
16864 // not clear what practical benefit doing so provides); instead, we warn only
16865 // for cases where the parser will give a parse tree differing from what React
16866 // intended. For example, <b><div></div></b> is invalid but we don't warn
16867 // because it still parses correctly; we do warn for other cases like nested
16868 // <p> tags where the beginning of the second element implicitly closes the
16869 // first, causing a confusing mess.
16870
16871 // https://html.spec.whatwg.org/multipage/syntax.html#special
16872 var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];
16873
16874 // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
16875 var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',
16876
16877 // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point
16878 // TODO: Distinguish by namespace here -- for <title>, including it here
16879 // errs on the side of fewer warnings
16880 'foreignObject', 'desc', 'title'];
16881
16882 // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope
16883 var buttonScopeTags = inScopeTags.concat(['button']);
16884
16885 // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags
16886 var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];
16887
16888 var emptyAncestorInfo = {
16889 current: null,
16890
16891 formTag: null,
16892 aTagInScope: null,
16893 buttonTagInScope: null,
16894 nobrTagInScope: null,
16895 pTagInButtonScope: null,
16896
16897 listItemTagAutoclosing: null,
16898 dlItemTagAutoclosing: null
16899 };
16900
16901 var updatedAncestorInfo = function (oldInfo, tag, instance) {
16902 var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);
16903 var info = { tag: tag, instance: instance };
16904
16905 if (inScopeTags.indexOf(tag) !== -1) {
16906 ancestorInfo.aTagInScope = null;
16907 ancestorInfo.buttonTagInScope = null;
16908 ancestorInfo.nobrTagInScope = null;
16909 }
16910 if (buttonScopeTags.indexOf(tag) !== -1) {
16911 ancestorInfo.pTagInButtonScope = null;
16912 }
16913
16914 // See rules for 'li', 'dd', 'dt' start tags in
16915 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
16916 if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {
16917 ancestorInfo.listItemTagAutoclosing = null;
16918 ancestorInfo.dlItemTagAutoclosing = null;
16919 }
16920
16921 ancestorInfo.current = info;
16922
16923 if (tag === 'form') {
16924 ancestorInfo.formTag = info;
16925 }
16926 if (tag === 'a') {
16927 ancestorInfo.aTagInScope = info;
16928 }
16929 if (tag === 'button') {
16930 ancestorInfo.buttonTagInScope = info;
16931 }
16932 if (tag === 'nobr') {
16933 ancestorInfo.nobrTagInScope = info;
16934 }
16935 if (tag === 'p') {
16936 ancestorInfo.pTagInButtonScope = info;
16937 }
16938 if (tag === 'li') {
16939 ancestorInfo.listItemTagAutoclosing = info;
16940 }
16941 if (tag === 'dd' || tag === 'dt') {
16942 ancestorInfo.dlItemTagAutoclosing = info;
16943 }
16944
16945 return ancestorInfo;
16946 };
16947
16948 /**
16949 * Returns whether
16950 */
16951 var isTagValidWithParent = function (tag, parentTag) {
16952 // First, let's check if we're in an unusual parsing mode...
16953 switch (parentTag) {
16954 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect
16955 case 'select':
16956 return tag === 'option' || tag === 'optgroup' || tag === '#text';
16957 case 'optgroup':
16958 return tag === 'option' || tag === '#text';
16959 // Strictly speaking, seeing an <option> doesn't mean we're in a <select>
16960 // but
16961 case 'option':
16962 return tag === '#text';
16963
16964 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd
16965 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption
16966 // No special behavior since these rules fall back to "in body" mode for
16967 // all except special table nodes which cause bad parsing behavior anyway.
16968
16969 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr
16970 case 'tr':
16971 return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';
16972
16973 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody
16974 case 'tbody':
16975 case 'thead':
16976 case 'tfoot':
16977 return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';
16978
16979 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup
16980 case 'colgroup':
16981 return tag === 'col' || tag === 'template';
16982
16983 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable
16984 case 'table':
16985 return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';
16986
16987 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead
16988 case 'head':
16989 return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';
16990
16991 // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element
16992 case 'html':
16993 return tag === 'head' || tag === 'body';
16994 case '#document':
16995 return tag === 'html';
16996 }
16997
16998 // Probably in the "in body" parsing mode, so we outlaw only tag combos
16999 // where the parsing rules cause implicit opens or closes to be added.
17000 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
17001 switch (tag) {
17002 case 'h1':
17003 case 'h2':
17004 case 'h3':
17005 case 'h4':
17006 case 'h5':
17007 case 'h6':
17008 return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';
17009
17010 case 'rp':
17011 case 'rt':
17012 return impliedEndTags.indexOf(parentTag) === -1;
17013
17014 case 'body':
17015 case 'caption':
17016 case 'col':
17017 case 'colgroup':
17018 case 'frame':
17019 case 'head':
17020 case 'html':
17021 case 'tbody':
17022 case 'td':
17023 case 'tfoot':
17024 case 'th':
17025 case 'thead':
17026 case 'tr':
17027 // These tags are only valid with a few parents that have special child
17028 // parsing rules -- if we're down here, then none of those matched and
17029 // so we allow it only if we don't know what the parent is, as all other
17030 // cases are invalid.
17031 return parentTag == null;
17032 }
17033
17034 return true;
17035 };
17036
17037 /**
17038 * Returns whether
17039 */
17040 var findInvalidAncestorForTag = function (tag, ancestorInfo) {
17041 switch (tag) {
17042 case 'address':
17043 case 'article':
17044 case 'aside':
17045 case 'blockquote':
17046 case 'center':
17047 case 'details':
17048 case 'dialog':
17049 case 'dir':
17050 case 'div':
17051 case 'dl':
17052 case 'fieldset':
17053 case 'figcaption':
17054 case 'figure':
17055 case 'footer':
17056 case 'header':
17057 case 'hgroup':
17058 case 'main':
17059 case 'menu':
17060 case 'nav':
17061 case 'ol':
17062 case 'p':
17063 case 'section':
17064 case 'summary':
17065 case 'ul':
17066
17067 case 'pre':
17068 case 'listing':
17069
17070 case 'table':
17071
17072 case 'hr':
17073
17074 case 'xmp':
17075
17076 case 'h1':
17077 case 'h2':
17078 case 'h3':
17079 case 'h4':
17080 case 'h5':
17081 case 'h6':
17082 return ancestorInfo.pTagInButtonScope;
17083
17084 case 'form':
17085 return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;
17086
17087 case 'li':
17088 return ancestorInfo.listItemTagAutoclosing;
17089
17090 case 'dd':
17091 case 'dt':
17092 return ancestorInfo.dlItemTagAutoclosing;
17093
17094 case 'button':
17095 return ancestorInfo.buttonTagInScope;
17096
17097 case 'a':
17098 // Spec says something about storing a list of markers, but it sounds
17099 // equivalent to this check.
17100 return ancestorInfo.aTagInScope;
17101
17102 case 'nobr':
17103 return ancestorInfo.nobrTagInScope;
17104 }
17105
17106 return null;
17107 };
17108
17109 /**
17110 * Given a ReactCompositeComponent instance, return a list of its recursive
17111 * owners, starting at the root and ending with the instance itself.
17112 */
17113 var findOwnerStack = function (instance) {
17114 if (!instance) {
17115 return [];
17116 }
17117
17118 var stack = [];
17119 do {
17120 stack.push(instance);
17121 } while (instance = instance._currentElement._owner);
17122 stack.reverse();
17123 return stack;
17124 };
17125
17126 var didWarn = {};
17127
17128 validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {
17129 ancestorInfo = ancestorInfo || emptyAncestorInfo;
17130 var parentInfo = ancestorInfo.current;
17131 var parentTag = parentInfo && parentInfo.tag;
17132
17133 if (childText != null) {
17134 (undefined) !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;
17135 childTag = '#text';
17136 }
17137
17138 var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;
17139 var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);
17140 var problematic = invalidParent || invalidAncestor;
17141
17142 if (problematic) {
17143 var ancestorTag = problematic.tag;
17144 var ancestorInstance = problematic.instance;
17145
17146 var childOwner = childInstance && childInstance._currentElement._owner;
17147 var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;
17148
17149 var childOwners = findOwnerStack(childOwner);
17150 var ancestorOwners = findOwnerStack(ancestorOwner);
17151
17152 var minStackLen = Math.min(childOwners.length, ancestorOwners.length);
17153 var i;
17154
17155 var deepestCommon = -1;
17156 for (i = 0; i < minStackLen; i++) {
17157 if (childOwners[i] === ancestorOwners[i]) {
17158 deepestCommon = i;
17159 } else {
17160 break;
17161 }
17162 }
17163
17164 var UNKNOWN = '(unknown)';
17165 var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {
17166 return inst.getName() || UNKNOWN;
17167 });
17168 var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {
17169 return inst.getName() || UNKNOWN;
17170 });
17171 var ownerInfo = [].concat(
17172 // If the parent and child instances have a common owner ancestor, start
17173 // with that -- otherwise we just start with the parent's owners.
17174 deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,
17175 // If we're warning about an invalid (non-parent) ancestry, add '...'
17176 invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');
17177
17178 var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;
17179 if (didWarn[warnKey]) {
17180 return;
17181 }
17182 didWarn[warnKey] = true;
17183
17184 var tagDisplayName = childTag;
17185 var whitespaceInfo = '';
17186 if (childTag === '#text') {
17187 if (/\S/.test(childText)) {
17188 tagDisplayName = 'Text nodes';
17189 } else {
17190 tagDisplayName = 'Whitespace text nodes';
17191 whitespaceInfo = ' Make sure you don\'t have any extra whitespace between tags on ' + 'each line of your source code.';
17192 }
17193 } else {
17194 tagDisplayName = '<' + childTag + '>';
17195 }
17196
17197 if (invalidParent) {
17198 var info = '';
17199 if (ancestorTag === 'table' && childTag === 'tr') {
17200 info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';
17201 }
17202 (undefined) !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;
17203 } else {
17204 (undefined) !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;
17205 }
17206 }
17207 };
17208
17209 validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;
17210
17211 // For testing
17212 validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {
17213 ancestorInfo = ancestorInfo || emptyAncestorInfo;
17214 var parentInfo = ancestorInfo.current;
17215 var parentTag = parentInfo && parentInfo.tag;
17216 return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);
17217 };
17218 }
17219
17220 module.exports = validateDOMNesting;
17221
17222/***/ },
17223/* 221 */
17224/***/ function(module, exports, __webpack_require__) {
17225
17226 /**
17227 * Copyright 2014-present, Facebook, Inc.
17228 * All rights reserved.
17229 *
17230 * This source code is licensed under the BSD-style license found in the
17231 * LICENSE file in the root directory of this source tree. An additional grant
17232 * of patent rights can be found in the PATENTS file in the same directory.
17233 *
17234 * @providesModule ReactDOMEmptyComponent
17235 */
17236
17237 'use strict';
17238
17239 var _assign = __webpack_require__(91);
17240
17241 var DOMLazyTree = __webpack_require__(170);
17242 var ReactDOMComponentTree = __webpack_require__(124);
17243
17244 var ReactDOMEmptyComponent = function (instantiate) {
17245 // ReactCompositeComponent uses this:
17246 this._currentElement = null;
17247 // ReactDOMComponentTree uses these:
17248 this._hostNode = null;
17249 this._hostParent = null;
17250 this._hostContainerInfo = null;
17251 this._domID = 0;
17252 };
17253 _assign(ReactDOMEmptyComponent.prototype, {
17254 mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
17255 var domID = hostContainerInfo._idCounter++;
17256 this._domID = domID;
17257 this._hostParent = hostParent;
17258 this._hostContainerInfo = hostContainerInfo;
17259
17260 var nodeValue = ' react-empty: ' + this._domID + ' ';
17261 if (transaction.useCreateElement) {
17262 var ownerDocument = hostContainerInfo._ownerDocument;
17263 var node = ownerDocument.createComment(nodeValue);
17264 ReactDOMComponentTree.precacheNode(this, node);
17265 return DOMLazyTree(node);
17266 } else {
17267 if (transaction.renderToStaticMarkup) {
17268 // Normally we'd insert a comment node, but since this is a situation
17269 // where React won't take over (static pages), we can simply return
17270 // nothing.
17271 return '';
17272 }
17273 return '<!--' + nodeValue + '-->';
17274 }
17275 },
17276 receiveComponent: function () {},
17277 getHostNode: function () {
17278 return ReactDOMComponentTree.getNodeFromInstance(this);
17279 },
17280 unmountComponent: function () {
17281 ReactDOMComponentTree.uncacheNode(this);
17282 }
17283 });
17284
17285 module.exports = ReactDOMEmptyComponent;
17286
17287/***/ },
17288/* 222 */
17289/***/ function(module, exports, __webpack_require__) {
17290
17291 /**
17292 * Copyright 2015-present, Facebook, Inc.
17293 * All rights reserved.
17294 *
17295 * This source code is licensed under the BSD-style license found in the
17296 * LICENSE file in the root directory of this source tree. An additional grant
17297 * of patent rights can be found in the PATENTS file in the same directory.
17298 *
17299 * @providesModule ReactDOMTreeTraversal
17300 */
17301
17302 'use strict';
17303
17304 var _prodInvariant = __webpack_require__(94);
17305
17306 var invariant = __webpack_require__(95);
17307
17308 /**
17309 * Return the lowest common ancestor of A and B, or null if they are in
17310 * different trees.
17311 */
17312 function getLowestCommonAncestor(instA, instB) {
17313 !('_hostNode' in instA) ? (undefined) !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
17314 !('_hostNode' in instB) ? (undefined) !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
17315
17316 var depthA = 0;
17317 for (var tempA = instA; tempA; tempA = tempA._hostParent) {
17318 depthA++;
17319 }
17320 var depthB = 0;
17321 for (var tempB = instB; tempB; tempB = tempB._hostParent) {
17322 depthB++;
17323 }
17324
17325 // If A is deeper, crawl up.
17326 while (depthA - depthB > 0) {
17327 instA = instA._hostParent;
17328 depthA--;
17329 }
17330
17331 // If B is deeper, crawl up.
17332 while (depthB - depthA > 0) {
17333 instB = instB._hostParent;
17334 depthB--;
17335 }
17336
17337 // Walk in lockstep until we find a match.
17338 var depth = depthA;
17339 while (depth--) {
17340 if (instA === instB) {
17341 return instA;
17342 }
17343 instA = instA._hostParent;
17344 instB = instB._hostParent;
17345 }
17346 return null;
17347 }
17348
17349 /**
17350 * Return if A is an ancestor of B.
17351 */
17352 function isAncestor(instA, instB) {
17353 !('_hostNode' in instA) ? (undefined) !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;
17354 !('_hostNode' in instB) ? (undefined) !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;
17355
17356 while (instB) {
17357 if (instB === instA) {
17358 return true;
17359 }
17360 instB = instB._hostParent;
17361 }
17362 return false;
17363 }
17364
17365 /**
17366 * Return the parent instance of the passed-in instance.
17367 */
17368 function getParentInstance(inst) {
17369 !('_hostNode' in inst) ? (undefined) !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;
17370
17371 return inst._hostParent;
17372 }
17373
17374 /**
17375 * Simulates the traversal of a two-phase, capture/bubble event dispatch.
17376 */
17377 function traverseTwoPhase(inst, fn, arg) {
17378 var path = [];
17379 while (inst) {
17380 path.push(inst);
17381 inst = inst._hostParent;
17382 }
17383 var i;
17384 for (i = path.length; i-- > 0;) {
17385 fn(path[i], false, arg);
17386 }
17387 for (i = 0; i < path.length; i++) {
17388 fn(path[i], true, arg);
17389 }
17390 }
17391
17392 /**
17393 * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that
17394 * should would receive a `mouseEnter` or `mouseLeave` event.
17395 *
17396 * Does not invoke the callback on the nearest common ancestor because nothing
17397 * "entered" or "left" that element.
17398 */
17399 function traverseEnterLeave(from, to, fn, argFrom, argTo) {
17400 var common = from && to ? getLowestCommonAncestor(from, to) : null;
17401 var pathFrom = [];
17402 while (from && from !== common) {
17403 pathFrom.push(from);
17404 from = from._hostParent;
17405 }
17406 var pathTo = [];
17407 while (to && to !== common) {
17408 pathTo.push(to);
17409 to = to._hostParent;
17410 }
17411 var i;
17412 for (i = 0; i < pathFrom.length; i++) {
17413 fn(pathFrom[i], true, argFrom);
17414 }
17415 for (i = pathTo.length; i-- > 0;) {
17416 fn(pathTo[i], false, argTo);
17417 }
17418 }
17419
17420 module.exports = {
17421 isAncestor: isAncestor,
17422 getLowestCommonAncestor: getLowestCommonAncestor,
17423 getParentInstance: getParentInstance,
17424 traverseTwoPhase: traverseTwoPhase,
17425 traverseEnterLeave: traverseEnterLeave
17426 };
17427
17428/***/ },
17429/* 223 */
17430/***/ function(module, exports, __webpack_require__) {
17431
17432 /**
17433 * Copyright 2013-present, Facebook, Inc.
17434 * All rights reserved.
17435 *
17436 * This source code is licensed under the BSD-style license found in the
17437 * LICENSE file in the root directory of this source tree. An additional grant
17438 * of patent rights can be found in the PATENTS file in the same directory.
17439 *
17440 * @providesModule ReactDOMTextComponent
17441 */
17442
17443 'use strict';
17444
17445 var _prodInvariant = __webpack_require__(94),
17446 _assign = __webpack_require__(91);
17447
17448 var DOMChildrenOperations = __webpack_require__(169);
17449 var DOMLazyTree = __webpack_require__(170);
17450 var ReactDOMComponentTree = __webpack_require__(124);
17451
17452 var escapeTextContentForBrowser = __webpack_require__(175);
17453 var invariant = __webpack_require__(95);
17454 var validateDOMNesting = __webpack_require__(220);
17455
17456 /**
17457 * Text nodes violate a couple assumptions that React makes about components:
17458 *
17459 * - When mounting text into the DOM, adjacent text nodes are merged.
17460 * - Text nodes cannot be assigned a React root ID.
17461 *
17462 * This component is used to wrap strings between comment nodes so that they
17463 * can undergo the same reconciliation that is applied to elements.
17464 *
17465 * TODO: Investigate representing React components in the DOM with text nodes.
17466 *
17467 * @class ReactDOMTextComponent
17468 * @extends ReactComponent
17469 * @internal
17470 */
17471 var ReactDOMTextComponent = function (text) {
17472 // TODO: This is really a ReactText (ReactNode), not a ReactElement
17473 this._currentElement = text;
17474 this._stringText = '' + text;
17475 // ReactDOMComponentTree uses these:
17476 this._hostNode = null;
17477 this._hostParent = null;
17478
17479 // Properties
17480 this._domID = 0;
17481 this._mountIndex = 0;
17482 this._closingComment = null;
17483 this._commentNodes = null;
17484 };
17485
17486 _assign(ReactDOMTextComponent.prototype, {
17487
17488 /**
17489 * Creates the markup for this text node. This node is not intended to have
17490 * any features besides containing text content.
17491 *
17492 * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
17493 * @return {string} Markup for this text node.
17494 * @internal
17495 */
17496 mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
17497 if ((undefined) !== 'production') {
17498 var parentInfo;
17499 if (hostParent != null) {
17500 parentInfo = hostParent._ancestorInfo;
17501 } else if (hostContainerInfo != null) {
17502 parentInfo = hostContainerInfo._ancestorInfo;
17503 }
17504 if (parentInfo) {
17505 // parentInfo should always be present except for the top-level
17506 // component when server rendering
17507 validateDOMNesting(null, this._stringText, this, parentInfo);
17508 }
17509 }
17510
17511 var domID = hostContainerInfo._idCounter++;
17512 var openingValue = ' react-text: ' + domID + ' ';
17513 var closingValue = ' /react-text ';
17514 this._domID = domID;
17515 this._hostParent = hostParent;
17516 if (transaction.useCreateElement) {
17517 var ownerDocument = hostContainerInfo._ownerDocument;
17518 var openingComment = ownerDocument.createComment(openingValue);
17519 var closingComment = ownerDocument.createComment(closingValue);
17520 var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());
17521 DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));
17522 if (this._stringText) {
17523 DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));
17524 }
17525 DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));
17526 ReactDOMComponentTree.precacheNode(this, openingComment);
17527 this._closingComment = closingComment;
17528 return lazyTree;
17529 } else {
17530 var escapedText = escapeTextContentForBrowser(this._stringText);
17531
17532 if (transaction.renderToStaticMarkup) {
17533 // Normally we'd wrap this between comment nodes for the reasons stated
17534 // above, but since this is a situation where React won't take over
17535 // (static pages), we can simply return the text as it is.
17536 return escapedText;
17537 }
17538
17539 return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';
17540 }
17541 },
17542
17543 /**
17544 * Updates this component by updating the text content.
17545 *
17546 * @param {ReactText} nextText The next text content
17547 * @param {ReactReconcileTransaction} transaction
17548 * @internal
17549 */
17550 receiveComponent: function (nextText, transaction) {
17551 if (nextText !== this._currentElement) {
17552 this._currentElement = nextText;
17553 var nextStringText = '' + nextText;
17554 if (nextStringText !== this._stringText) {
17555 // TODO: Save this as pending props and use performUpdateIfNecessary
17556 // and/or updateComponent to do the actual update for consistency with
17557 // other component types?
17558 this._stringText = nextStringText;
17559 var commentNodes = this.getHostNode();
17560 DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);
17561 }
17562 }
17563 },
17564
17565 getHostNode: function () {
17566 var hostNode = this._commentNodes;
17567 if (hostNode) {
17568 return hostNode;
17569 }
17570 if (!this._closingComment) {
17571 var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);
17572 var node = openingComment.nextSibling;
17573 while (true) {
17574 !(node != null) ? (undefined) !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;
17575 if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {
17576 this._closingComment = node;
17577 break;
17578 }
17579 node = node.nextSibling;
17580 }
17581 }
17582 hostNode = [this._hostNode, this._closingComment];
17583 this._commentNodes = hostNode;
17584 return hostNode;
17585 },
17586
17587 unmountComponent: function () {
17588 this._closingComment = null;
17589 this._commentNodes = null;
17590 ReactDOMComponentTree.uncacheNode(this);
17591 }
17592
17593 });
17594
17595 module.exports = ReactDOMTextComponent;
17596
17597/***/ },
17598/* 224 */
17599/***/ function(module, exports, __webpack_require__) {
17600
17601 /**
17602 * Copyright 2013-present, Facebook, Inc.
17603 * All rights reserved.
17604 *
17605 * This source code is licensed under the BSD-style license found in the
17606 * LICENSE file in the root directory of this source tree. An additional grant
17607 * of patent rights can be found in the PATENTS file in the same directory.
17608 *
17609 * @providesModule ReactDefaultBatchingStrategy
17610 */
17611
17612 'use strict';
17613
17614 var _assign = __webpack_require__(91);
17615
17616 var ReactUpdates = __webpack_require__(144);
17617 var Transaction = __webpack_require__(157);
17618
17619 var emptyFunction = __webpack_require__(99);
17620
17621 var RESET_BATCHED_UPDATES = {
17622 initialize: emptyFunction,
17623 close: function () {
17624 ReactDefaultBatchingStrategy.isBatchingUpdates = false;
17625 }
17626 };
17627
17628 var FLUSH_BATCHED_UPDATES = {
17629 initialize: emptyFunction,
17630 close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)
17631 };
17632
17633 var TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];
17634
17635 function ReactDefaultBatchingStrategyTransaction() {
17636 this.reinitializeTransaction();
17637 }
17638
17639 _assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction.Mixin, {
17640 getTransactionWrappers: function () {
17641 return TRANSACTION_WRAPPERS;
17642 }
17643 });
17644
17645 var transaction = new ReactDefaultBatchingStrategyTransaction();
17646
17647 var ReactDefaultBatchingStrategy = {
17648 isBatchingUpdates: false,
17649
17650 /**
17651 * Call the provided function in a context within which calls to `setState`
17652 * and friends are batched such that components aren't updated unnecessarily.
17653 */
17654 batchedUpdates: function (callback, a, b, c, d, e) {
17655 var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;
17656
17657 ReactDefaultBatchingStrategy.isBatchingUpdates = true;
17658
17659 // The code is written this way to avoid extra allocations
17660 if (alreadyBatchingUpdates) {
17661 callback(a, b, c, d, e);
17662 } else {
17663 transaction.perform(callback, null, a, b, c, d, e);
17664 }
17665 }
17666 };
17667
17668 module.exports = ReactDefaultBatchingStrategy;
17669
17670/***/ },
17671/* 225 */
17672/***/ function(module, exports, __webpack_require__) {
17673
17674 /**
17675 * Copyright 2013-present, Facebook, Inc.
17676 * All rights reserved.
17677 *
17678 * This source code is licensed under the BSD-style license found in the
17679 * LICENSE file in the root directory of this source tree. An additional grant
17680 * of patent rights can be found in the PATENTS file in the same directory.
17681 *
17682 * @providesModule ReactEventListener
17683 */
17684
17685 'use strict';
17686
17687 var _assign = __webpack_require__(91);
17688
17689 var EventListener = __webpack_require__(226);
17690 var ExecutionEnvironment = __webpack_require__(137);
17691 var PooledClass = __webpack_require__(93);
17692 var ReactDOMComponentTree = __webpack_require__(124);
17693 var ReactUpdates = __webpack_require__(144);
17694
17695 var getEventTarget = __webpack_require__(158);
17696 var getUnboundedScrollPosition = __webpack_require__(227);
17697
17698 /**
17699 * Find the deepest React component completely containing the root of the
17700 * passed-in instance (for use when entire React trees are nested within each
17701 * other). If React trees are not nested, returns null.
17702 */
17703 function findParent(inst) {
17704 // TODO: It may be a good idea to cache this to prevent unnecessary DOM
17705 // traversal, but caching is difficult to do correctly without using a
17706 // mutation observer to listen for all DOM changes.
17707 while (inst._hostParent) {
17708 inst = inst._hostParent;
17709 }
17710 var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);
17711 var container = rootNode.parentNode;
17712 return ReactDOMComponentTree.getClosestInstanceFromNode(container);
17713 }
17714
17715 // Used to store ancestor hierarchy in top level callback
17716 function TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {
17717 this.topLevelType = topLevelType;
17718 this.nativeEvent = nativeEvent;
17719 this.ancestors = [];
17720 }
17721 _assign(TopLevelCallbackBookKeeping.prototype, {
17722 destructor: function () {
17723 this.topLevelType = null;
17724 this.nativeEvent = null;
17725 this.ancestors.length = 0;
17726 }
17727 });
17728 PooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);
17729
17730 function handleTopLevelImpl(bookKeeping) {
17731 var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);
17732 var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);
17733
17734 // Loop through the hierarchy, in case there's any nested components.
17735 // It's important that we build the array of ancestors before calling any
17736 // event handlers, because event handlers can modify the DOM, leading to
17737 // inconsistencies with ReactMount's node cache. See #1105.
17738 var ancestor = targetInst;
17739 do {
17740 bookKeeping.ancestors.push(ancestor);
17741 ancestor = ancestor && findParent(ancestor);
17742 } while (ancestor);
17743
17744 for (var i = 0; i < bookKeeping.ancestors.length; i++) {
17745 targetInst = bookKeeping.ancestors[i];
17746 ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));
17747 }
17748 }
17749
17750 function scrollValueMonitor(cb) {
17751 var scrollPosition = getUnboundedScrollPosition(window);
17752 cb(scrollPosition);
17753 }
17754
17755 var ReactEventListener = {
17756 _enabled: true,
17757 _handleTopLevel: null,
17758
17759 WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,
17760
17761 setHandleTopLevel: function (handleTopLevel) {
17762 ReactEventListener._handleTopLevel = handleTopLevel;
17763 },
17764
17765 setEnabled: function (enabled) {
17766 ReactEventListener._enabled = !!enabled;
17767 },
17768
17769 isEnabled: function () {
17770 return ReactEventListener._enabled;
17771 },
17772
17773 /**
17774 * Traps top-level events by using event bubbling.
17775 *
17776 * @param {string} topLevelType Record from `EventConstants`.
17777 * @param {string} handlerBaseName Event name (e.g. "click").
17778 * @param {object} handle Element on which to attach listener.
17779 * @return {?object} An object with a remove function which will forcefully
17780 * remove the listener.
17781 * @internal
17782 */
17783 trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {
17784 var element = handle;
17785 if (!element) {
17786 return null;
17787 }
17788 return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));
17789 },
17790
17791 /**
17792 * Traps a top-level event by using event capturing.
17793 *
17794 * @param {string} topLevelType Record from `EventConstants`.
17795 * @param {string} handlerBaseName Event name (e.g. "click").
17796 * @param {object} handle Element on which to attach listener.
17797 * @return {?object} An object with a remove function which will forcefully
17798 * remove the listener.
17799 * @internal
17800 */
17801 trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {
17802 var element = handle;
17803 if (!element) {
17804 return null;
17805 }
17806 return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));
17807 },
17808
17809 monitorScrollValue: function (refresh) {
17810 var callback = scrollValueMonitor.bind(null, refresh);
17811 EventListener.listen(window, 'scroll', callback);
17812 },
17813
17814 dispatchEvent: function (topLevelType, nativeEvent) {
17815 if (!ReactEventListener._enabled) {
17816 return;
17817 }
17818
17819 var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);
17820 try {
17821 // Event queue being processed in the same cycle allows
17822 // `preventDefault`.
17823 ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);
17824 } finally {
17825 TopLevelCallbackBookKeeping.release(bookKeeping);
17826 }
17827 }
17828 };
17829
17830 module.exports = ReactEventListener;
17831
17832/***/ },
17833/* 226 */
17834/***/ function(module, exports, __webpack_require__) {
17835
17836 'use strict';
17837
17838 /**
17839 * Copyright (c) 2013-present, Facebook, Inc.
17840 *
17841 * Licensed under the Apache License, Version 2.0 (the "License");
17842 * you may not use this file except in compliance with the License.
17843 * You may obtain a copy of the License at
17844 *
17845 * http://www.apache.org/licenses/LICENSE-2.0
17846 *
17847 * Unless required by applicable law or agreed to in writing, software
17848 * distributed under the License is distributed on an "AS IS" BASIS,
17849 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17850 * See the License for the specific language governing permissions and
17851 * limitations under the License.
17852 *
17853 * @typechecks
17854 */
17855
17856 var emptyFunction = __webpack_require__(99);
17857
17858 /**
17859 * Upstream version of event listener. Does not take into account specific
17860 * nature of platform.
17861 */
17862 var EventListener = {
17863 /**
17864 * Listen to DOM events during the bubble phase.
17865 *
17866 * @param {DOMEventTarget} target DOM element to register listener on.
17867 * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.
17868 * @param {function} callback Callback function.
17869 * @return {object} Object with a `remove` method.
17870 */
17871 listen: function listen(target, eventType, callback) {
17872 if (target.addEventListener) {
17873 target.addEventListener(eventType, callback, false);
17874 return {
17875 remove: function remove() {
17876 target.removeEventListener(eventType, callback, false);
17877 }
17878 };
17879 } else if (target.attachEvent) {
17880 target.attachEvent('on' + eventType, callback);
17881 return {
17882 remove: function remove() {
17883 target.detachEvent('on' + eventType, callback);
17884 }
17885 };
17886 }
17887 },
17888
17889 /**
17890 * Listen to DOM events during the capture phase.
17891 *
17892 * @param {DOMEventTarget} target DOM element to register listener on.
17893 * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.
17894 * @param {function} callback Callback function.
17895 * @return {object} Object with a `remove` method.
17896 */
17897 capture: function capture(target, eventType, callback) {
17898 if (target.addEventListener) {
17899 target.addEventListener(eventType, callback, true);
17900 return {
17901 remove: function remove() {
17902 target.removeEventListener(eventType, callback, true);
17903 }
17904 };
17905 } else {
17906 if ((undefined) !== 'production') {
17907 console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');
17908 }
17909 return {
17910 remove: emptyFunction
17911 };
17912 }
17913 },
17914
17915 registerDefault: function registerDefault() {}
17916 };
17917
17918 module.exports = EventListener;
17919
17920/***/ },
17921/* 227 */
17922/***/ function(module, exports) {
17923
17924 /**
17925 * Copyright (c) 2013-present, Facebook, Inc.
17926 * All rights reserved.
17927 *
17928 * This source code is licensed under the BSD-style license found in the
17929 * LICENSE file in the root directory of this source tree. An additional grant
17930 * of patent rights can be found in the PATENTS file in the same directory.
17931 *
17932 * @typechecks
17933 */
17934
17935 'use strict';
17936
17937 /**
17938 * Gets the scroll position of the supplied element or window.
17939 *
17940 * The return values are unbounded, unlike `getScrollPosition`. This means they
17941 * may be negative or exceed the element boundaries (which is possible using
17942 * inertial scrolling).
17943 *
17944 * @param {DOMWindow|DOMElement} scrollable
17945 * @return {object} Map with `x` and `y` keys.
17946 */
17947
17948 function getUnboundedScrollPosition(scrollable) {
17949 if (scrollable === window) {
17950 return {
17951 x: window.pageXOffset || document.documentElement.scrollLeft,
17952 y: window.pageYOffset || document.documentElement.scrollTop
17953 };
17954 }
17955 return {
17956 x: scrollable.scrollLeft,
17957 y: scrollable.scrollTop
17958 };
17959 }
17960
17961 module.exports = getUnboundedScrollPosition;
17962
17963/***/ },
17964/* 228 */
17965/***/ function(module, exports, __webpack_require__) {
17966
17967 /**
17968 * Copyright 2013-present, Facebook, Inc.
17969 * All rights reserved.
17970 *
17971 * This source code is licensed under the BSD-style license found in the
17972 * LICENSE file in the root directory of this source tree. An additional grant
17973 * of patent rights can be found in the PATENTS file in the same directory.
17974 *
17975 * @providesModule ReactInjection
17976 */
17977
17978 'use strict';
17979
17980 var DOMProperty = __webpack_require__(125);
17981 var EventPluginHub = __webpack_require__(131);
17982 var EventPluginUtils = __webpack_require__(133);
17983 var ReactComponentEnvironment = __webpack_require__(206);
17984 var ReactClass = __webpack_require__(108);
17985 var ReactEmptyComponent = __webpack_require__(214);
17986 var ReactBrowserEventEmitter = __webpack_require__(195);
17987 var ReactHostComponent = __webpack_require__(215);
17988 var ReactUpdates = __webpack_require__(144);
17989
17990 var ReactInjection = {
17991 Component: ReactComponentEnvironment.injection,
17992 Class: ReactClass.injection,
17993 DOMProperty: DOMProperty.injection,
17994 EmptyComponent: ReactEmptyComponent.injection,
17995 EventPluginHub: EventPluginHub.injection,
17996 EventPluginUtils: EventPluginUtils.injection,
17997 EventEmitter: ReactBrowserEventEmitter.injection,
17998 HostComponent: ReactHostComponent.injection,
17999 Updates: ReactUpdates.injection
18000 };
18001
18002 module.exports = ReactInjection;
18003
18004/***/ },
18005/* 229 */
18006/***/ function(module, exports, __webpack_require__) {
18007
18008 /**
18009 * Copyright 2013-present, Facebook, Inc.
18010 * All rights reserved.
18011 *
18012 * This source code is licensed under the BSD-style license found in the
18013 * LICENSE file in the root directory of this source tree. An additional grant
18014 * of patent rights can be found in the PATENTS file in the same directory.
18015 *
18016 * @providesModule ReactReconcileTransaction
18017 */
18018
18019 'use strict';
18020
18021 var _assign = __webpack_require__(91);
18022
18023 var CallbackQueue = __webpack_require__(145);
18024 var PooledClass = __webpack_require__(93);
18025 var ReactBrowserEventEmitter = __webpack_require__(195);
18026 var ReactInputSelection = __webpack_require__(230);
18027 var ReactInstrumentation = __webpack_require__(150);
18028 var Transaction = __webpack_require__(157);
18029 var ReactUpdateQueue = __webpack_require__(219);
18030
18031 /**
18032 * Ensures that, when possible, the selection range (currently selected text
18033 * input) is not disturbed by performing the transaction.
18034 */
18035 var SELECTION_RESTORATION = {
18036 /**
18037 * @return {Selection} Selection information.
18038 */
18039 initialize: ReactInputSelection.getSelectionInformation,
18040 /**
18041 * @param {Selection} sel Selection information returned from `initialize`.
18042 */
18043 close: ReactInputSelection.restoreSelection
18044 };
18045
18046 /**
18047 * Suppresses events (blur/focus) that could be inadvertently dispatched due to
18048 * high level DOM manipulations (like temporarily removing a text input from the
18049 * DOM).
18050 */
18051 var EVENT_SUPPRESSION = {
18052 /**
18053 * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before
18054 * the reconciliation.
18055 */
18056 initialize: function () {
18057 var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();
18058 ReactBrowserEventEmitter.setEnabled(false);
18059 return currentlyEnabled;
18060 },
18061
18062 /**
18063 * @param {boolean} previouslyEnabled Enabled status of
18064 * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`
18065 * restores the previous value.
18066 */
18067 close: function (previouslyEnabled) {
18068 ReactBrowserEventEmitter.setEnabled(previouslyEnabled);
18069 }
18070 };
18071
18072 /**
18073 * Provides a queue for collecting `componentDidMount` and
18074 * `componentDidUpdate` callbacks during the transaction.
18075 */
18076 var ON_DOM_READY_QUEUEING = {
18077 /**
18078 * Initializes the internal `onDOMReady` queue.
18079 */
18080 initialize: function () {
18081 this.reactMountReady.reset();
18082 },
18083
18084 /**
18085 * After DOM is flushed, invoke all registered `onDOMReady` callbacks.
18086 */
18087 close: function () {
18088 this.reactMountReady.notifyAll();
18089 }
18090 };
18091
18092 /**
18093 * Executed within the scope of the `Transaction` instance. Consider these as
18094 * being member methods, but with an implied ordering while being isolated from
18095 * each other.
18096 */
18097 var TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];
18098
18099 if ((undefined) !== 'production') {
18100 TRANSACTION_WRAPPERS.push({
18101 initialize: ReactInstrumentation.debugTool.onBeginFlush,
18102 close: ReactInstrumentation.debugTool.onEndFlush
18103 });
18104 }
18105
18106 /**
18107 * Currently:
18108 * - The order that these are listed in the transaction is critical:
18109 * - Suppresses events.
18110 * - Restores selection range.
18111 *
18112 * Future:
18113 * - Restore document/overflow scroll positions that were unintentionally
18114 * modified via DOM insertions above the top viewport boundary.
18115 * - Implement/integrate with customized constraint based layout system and keep
18116 * track of which dimensions must be remeasured.
18117 *
18118 * @class ReactReconcileTransaction
18119 */
18120 function ReactReconcileTransaction(useCreateElement) {
18121 this.reinitializeTransaction();
18122 // Only server-side rendering really needs this option (see
18123 // `ReactServerRendering`), but server-side uses
18124 // `ReactServerRenderingTransaction` instead. This option is here so that it's
18125 // accessible and defaults to false when `ReactDOMComponent` and
18126 // `ReactDOMTextComponent` checks it in `mountComponent`.`
18127 this.renderToStaticMarkup = false;
18128 this.reactMountReady = CallbackQueue.getPooled(null);
18129 this.useCreateElement = useCreateElement;
18130 }
18131
18132 var Mixin = {
18133 /**
18134 * @see Transaction
18135 * @abstract
18136 * @final
18137 * @return {array<object>} List of operation wrap procedures.
18138 * TODO: convert to array<TransactionWrapper>
18139 */
18140 getTransactionWrappers: function () {
18141 return TRANSACTION_WRAPPERS;
18142 },
18143
18144 /**
18145 * @return {object} The queue to collect `onDOMReady` callbacks with.
18146 */
18147 getReactMountReady: function () {
18148 return this.reactMountReady;
18149 },
18150
18151 /**
18152 * @return {object} The queue to collect React async events.
18153 */
18154 getUpdateQueue: function () {
18155 return ReactUpdateQueue;
18156 },
18157
18158 /**
18159 * Save current transaction state -- if the return value from this method is
18160 * passed to `rollback`, the transaction will be reset to that state.
18161 */
18162 checkpoint: function () {
18163 // reactMountReady is the our only stateful wrapper
18164 return this.reactMountReady.checkpoint();
18165 },
18166
18167 rollback: function (checkpoint) {
18168 this.reactMountReady.rollback(checkpoint);
18169 },
18170
18171 /**
18172 * `PooledClass` looks for this, and will invoke this before allowing this
18173 * instance to be reused.
18174 */
18175 destructor: function () {
18176 CallbackQueue.release(this.reactMountReady);
18177 this.reactMountReady = null;
18178 }
18179 };
18180
18181 _assign(ReactReconcileTransaction.prototype, Transaction.Mixin, Mixin);
18182
18183 PooledClass.addPoolingTo(ReactReconcileTransaction);
18184
18185 module.exports = ReactReconcileTransaction;
18186
18187/***/ },
18188/* 230 */
18189/***/ function(module, exports, __webpack_require__) {
18190
18191 /**
18192 * Copyright 2013-present, Facebook, Inc.
18193 * All rights reserved.
18194 *
18195 * This source code is licensed under the BSD-style license found in the
18196 * LICENSE file in the root directory of this source tree. An additional grant
18197 * of patent rights can be found in the PATENTS file in the same directory.
18198 *
18199 * @providesModule ReactInputSelection
18200 */
18201
18202 'use strict';
18203
18204 var ReactDOMSelection = __webpack_require__(231);
18205
18206 var containsNode = __webpack_require__(233);
18207 var focusNode = __webpack_require__(184);
18208 var getActiveElement = __webpack_require__(236);
18209
18210 function isInDocument(node) {
18211 return containsNode(document.documentElement, node);
18212 }
18213
18214 /**
18215 * @ReactInputSelection: React input selection module. Based on Selection.js,
18216 * but modified to be suitable for react and has a couple of bug fixes (doesn't
18217 * assume buttons have range selections allowed).
18218 * Input selection module for React.
18219 */
18220 var ReactInputSelection = {
18221
18222 hasSelectionCapabilities: function (elem) {
18223 var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
18224 return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');
18225 },
18226
18227 getSelectionInformation: function () {
18228 var focusedElem = getActiveElement();
18229 return {
18230 focusedElem: focusedElem,
18231 selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null
18232 };
18233 },
18234
18235 /**
18236 * @restoreSelection: If any selection information was potentially lost,
18237 * restore it. This is useful when performing operations that could remove dom
18238 * nodes and place them back in, resulting in focus being lost.
18239 */
18240 restoreSelection: function (priorSelectionInformation) {
18241 var curFocusedElem = getActiveElement();
18242 var priorFocusedElem = priorSelectionInformation.focusedElem;
18243 var priorSelectionRange = priorSelectionInformation.selectionRange;
18244 if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {
18245 if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {
18246 ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);
18247 }
18248 focusNode(priorFocusedElem);
18249 }
18250 },
18251
18252 /**
18253 * @getSelection: Gets the selection bounds of a focused textarea, input or
18254 * contentEditable node.
18255 * -@input: Look up selection bounds of this input
18256 * -@return {start: selectionStart, end: selectionEnd}
18257 */
18258 getSelection: function (input) {
18259 var selection;
18260
18261 if ('selectionStart' in input) {
18262 // Modern browser with input or textarea.
18263 selection = {
18264 start: input.selectionStart,
18265 end: input.selectionEnd
18266 };
18267 } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {
18268 // IE8 input.
18269 var range = document.selection.createRange();
18270 // There can only be one selection per document in IE, so it must
18271 // be in our element.
18272 if (range.parentElement() === input) {
18273 selection = {
18274 start: -range.moveStart('character', -input.value.length),
18275 end: -range.moveEnd('character', -input.value.length)
18276 };
18277 }
18278 } else {
18279 // Content editable or old IE textarea.
18280 selection = ReactDOMSelection.getOffsets(input);
18281 }
18282
18283 return selection || { start: 0, end: 0 };
18284 },
18285
18286 /**
18287 * @setSelection: Sets the selection bounds of a textarea or input and focuses
18288 * the input.
18289 * -@input Set selection bounds of this input or textarea
18290 * -@offsets Object of same form that is returned from get*
18291 */
18292 setSelection: function (input, offsets) {
18293 var start = offsets.start;
18294 var end = offsets.end;
18295 if (end === undefined) {
18296 end = start;
18297 }
18298
18299 if ('selectionStart' in input) {
18300 input.selectionStart = start;
18301 input.selectionEnd = Math.min(end, input.value.length);
18302 } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {
18303 var range = input.createTextRange();
18304 range.collapse(true);
18305 range.moveStart('character', start);
18306 range.moveEnd('character', end - start);
18307 range.select();
18308 } else {
18309 ReactDOMSelection.setOffsets(input, offsets);
18310 }
18311 }
18312 };
18313
18314 module.exports = ReactInputSelection;
18315
18316/***/ },
18317/* 231 */
18318/***/ function(module, exports, __webpack_require__) {
18319
18320 /**
18321 * Copyright 2013-present, Facebook, Inc.
18322 * All rights reserved.
18323 *
18324 * This source code is licensed under the BSD-style license found in the
18325 * LICENSE file in the root directory of this source tree. An additional grant
18326 * of patent rights can be found in the PATENTS file in the same directory.
18327 *
18328 * @providesModule ReactDOMSelection
18329 */
18330
18331 'use strict';
18332
18333 var ExecutionEnvironment = __webpack_require__(137);
18334
18335 var getNodeForCharacterOffset = __webpack_require__(232);
18336 var getTextContentAccessor = __webpack_require__(139);
18337
18338 /**
18339 * While `isCollapsed` is available on the Selection object and `collapsed`
18340 * is available on the Range object, IE11 sometimes gets them wrong.
18341 * If the anchor/focus nodes and offsets are the same, the range is collapsed.
18342 */
18343 function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {
18344 return anchorNode === focusNode && anchorOffset === focusOffset;
18345 }
18346
18347 /**
18348 * Get the appropriate anchor and focus node/offset pairs for IE.
18349 *
18350 * The catch here is that IE's selection API doesn't provide information
18351 * about whether the selection is forward or backward, so we have to
18352 * behave as though it's always forward.
18353 *
18354 * IE text differs from modern selection in that it behaves as though
18355 * block elements end with a new line. This means character offsets will
18356 * differ between the two APIs.
18357 *
18358 * @param {DOMElement} node
18359 * @return {object}
18360 */
18361 function getIEOffsets(node) {
18362 var selection = document.selection;
18363 var selectedRange = selection.createRange();
18364 var selectedLength = selectedRange.text.length;
18365
18366 // Duplicate selection so we can move range without breaking user selection.
18367 var fromStart = selectedRange.duplicate();
18368 fromStart.moveToElementText(node);
18369 fromStart.setEndPoint('EndToStart', selectedRange);
18370
18371 var startOffset = fromStart.text.length;
18372 var endOffset = startOffset + selectedLength;
18373
18374 return {
18375 start: startOffset,
18376 end: endOffset
18377 };
18378 }
18379
18380 /**
18381 * @param {DOMElement} node
18382 * @return {?object}
18383 */
18384 function getModernOffsets(node) {
18385 var selection = window.getSelection && window.getSelection();
18386
18387 if (!selection || selection.rangeCount === 0) {
18388 return null;
18389 }
18390
18391 var anchorNode = selection.anchorNode;
18392 var anchorOffset = selection.anchorOffset;
18393 var focusNode = selection.focusNode;
18394 var focusOffset = selection.focusOffset;
18395
18396 var currentRange = selection.getRangeAt(0);
18397
18398 // In Firefox, range.startContainer and range.endContainer can be "anonymous
18399 // divs", e.g. the up/down buttons on an <input type="number">. Anonymous
18400 // divs do not seem to expose properties, triggering a "Permission denied
18401 // error" if any of its properties are accessed. The only seemingly possible
18402 // way to avoid erroring is to access a property that typically works for
18403 // non-anonymous divs and catch any error that may otherwise arise. See
18404 // https://bugzilla.mozilla.org/show_bug.cgi?id=208427
18405 try {
18406 /* eslint-disable no-unused-expressions */
18407 currentRange.startContainer.nodeType;
18408 currentRange.endContainer.nodeType;
18409 /* eslint-enable no-unused-expressions */
18410 } catch (e) {
18411 return null;
18412 }
18413
18414 // If the node and offset values are the same, the selection is collapsed.
18415 // `Selection.isCollapsed` is available natively, but IE sometimes gets
18416 // this value wrong.
18417 var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);
18418
18419 var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;
18420
18421 var tempRange = currentRange.cloneRange();
18422 tempRange.selectNodeContents(node);
18423 tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);
18424
18425 var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);
18426
18427 var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;
18428 var end = start + rangeLength;
18429
18430 // Detect whether the selection is backward.
18431 var detectionRange = document.createRange();
18432 detectionRange.setStart(anchorNode, anchorOffset);
18433 detectionRange.setEnd(focusNode, focusOffset);
18434 var isBackward = detectionRange.collapsed;
18435
18436 return {
18437 start: isBackward ? end : start,
18438 end: isBackward ? start : end
18439 };
18440 }
18441
18442 /**
18443 * @param {DOMElement|DOMTextNode} node
18444 * @param {object} offsets
18445 */
18446 function setIEOffsets(node, offsets) {
18447 var range = document.selection.createRange().duplicate();
18448 var start, end;
18449
18450 if (offsets.end === undefined) {
18451 start = offsets.start;
18452 end = start;
18453 } else if (offsets.start > offsets.end) {
18454 start = offsets.end;
18455 end = offsets.start;
18456 } else {
18457 start = offsets.start;
18458 end = offsets.end;
18459 }
18460
18461 range.moveToElementText(node);
18462 range.moveStart('character', start);
18463 range.setEndPoint('EndToStart', range);
18464 range.moveEnd('character', end - start);
18465 range.select();
18466 }
18467
18468 /**
18469 * In modern non-IE browsers, we can support both forward and backward
18470 * selections.
18471 *
18472 * Note: IE10+ supports the Selection object, but it does not support
18473 * the `extend` method, which means that even in modern IE, it's not possible
18474 * to programmatically create a backward selection. Thus, for all IE
18475 * versions, we use the old IE API to create our selections.
18476 *
18477 * @param {DOMElement|DOMTextNode} node
18478 * @param {object} offsets
18479 */
18480 function setModernOffsets(node, offsets) {
18481 if (!window.getSelection) {
18482 return;
18483 }
18484
18485 var selection = window.getSelection();
18486 var length = node[getTextContentAccessor()].length;
18487 var start = Math.min(offsets.start, length);
18488 var end = offsets.end === undefined ? start : Math.min(offsets.end, length);
18489
18490 // IE 11 uses modern selection, but doesn't support the extend method.
18491 // Flip backward selections, so we can set with a single range.
18492 if (!selection.extend && start > end) {
18493 var temp = end;
18494 end = start;
18495 start = temp;
18496 }
18497
18498 var startMarker = getNodeForCharacterOffset(node, start);
18499 var endMarker = getNodeForCharacterOffset(node, end);
18500
18501 if (startMarker && endMarker) {
18502 var range = document.createRange();
18503 range.setStart(startMarker.node, startMarker.offset);
18504 selection.removeAllRanges();
18505
18506 if (start > end) {
18507 selection.addRange(range);
18508 selection.extend(endMarker.node, endMarker.offset);
18509 } else {
18510 range.setEnd(endMarker.node, endMarker.offset);
18511 selection.addRange(range);
18512 }
18513 }
18514 }
18515
18516 var useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);
18517
18518 var ReactDOMSelection = {
18519 /**
18520 * @param {DOMElement} node
18521 */
18522 getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,
18523
18524 /**
18525 * @param {DOMElement|DOMTextNode} node
18526 * @param {object} offsets
18527 */
18528 setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets
18529 };
18530
18531 module.exports = ReactDOMSelection;
18532
18533/***/ },
18534/* 232 */
18535/***/ function(module, exports) {
18536
18537 /**
18538 * Copyright 2013-present, Facebook, Inc.
18539 * All rights reserved.
18540 *
18541 * This source code is licensed under the BSD-style license found in the
18542 * LICENSE file in the root directory of this source tree. An additional grant
18543 * of patent rights can be found in the PATENTS file in the same directory.
18544 *
18545 * @providesModule getNodeForCharacterOffset
18546 */
18547
18548 'use strict';
18549
18550 /**
18551 * Given any node return the first leaf node without children.
18552 *
18553 * @param {DOMElement|DOMTextNode} node
18554 * @return {DOMElement|DOMTextNode}
18555 */
18556
18557 function getLeafNode(node) {
18558 while (node && node.firstChild) {
18559 node = node.firstChild;
18560 }
18561 return node;
18562 }
18563
18564 /**
18565 * Get the next sibling within a container. This will walk up the
18566 * DOM if a node's siblings have been exhausted.
18567 *
18568 * @param {DOMElement|DOMTextNode} node
18569 * @return {?DOMElement|DOMTextNode}
18570 */
18571 function getSiblingNode(node) {
18572 while (node) {
18573 if (node.nextSibling) {
18574 return node.nextSibling;
18575 }
18576 node = node.parentNode;
18577 }
18578 }
18579
18580 /**
18581 * Get object describing the nodes which contain characters at offset.
18582 *
18583 * @param {DOMElement|DOMTextNode} root
18584 * @param {number} offset
18585 * @return {?object}
18586 */
18587 function getNodeForCharacterOffset(root, offset) {
18588 var node = getLeafNode(root);
18589 var nodeStart = 0;
18590 var nodeEnd = 0;
18591
18592 while (node) {
18593 if (node.nodeType === 3) {
18594 nodeEnd = nodeStart + node.textContent.length;
18595
18596 if (nodeStart <= offset && nodeEnd >= offset) {
18597 return {
18598 node: node,
18599 offset: offset - nodeStart
18600 };
18601 }
18602
18603 nodeStart = nodeEnd;
18604 }
18605
18606 node = getLeafNode(getSiblingNode(node));
18607 }
18608 }
18609
18610 module.exports = getNodeForCharacterOffset;
18611
18612/***/ },
18613/* 233 */
18614/***/ function(module, exports, __webpack_require__) {
18615
18616 'use strict';
18617
18618 /**
18619 * Copyright (c) 2013-present, Facebook, Inc.
18620 * All rights reserved.
18621 *
18622 * This source code is licensed under the BSD-style license found in the
18623 * LICENSE file in the root directory of this source tree. An additional grant
18624 * of patent rights can be found in the PATENTS file in the same directory.
18625 *
18626 *
18627 */
18628
18629 var isTextNode = __webpack_require__(234);
18630
18631 /*eslint-disable no-bitwise */
18632
18633 /**
18634 * Checks if a given DOM node contains or is another DOM node.
18635 */
18636 function containsNode(outerNode, innerNode) {
18637 if (!outerNode || !innerNode) {
18638 return false;
18639 } else if (outerNode === innerNode) {
18640 return true;
18641 } else if (isTextNode(outerNode)) {
18642 return false;
18643 } else if (isTextNode(innerNode)) {
18644 return containsNode(outerNode, innerNode.parentNode);
18645 } else if ('contains' in outerNode) {
18646 return outerNode.contains(innerNode);
18647 } else if (outerNode.compareDocumentPosition) {
18648 return !!(outerNode.compareDocumentPosition(innerNode) & 16);
18649 } else {
18650 return false;
18651 }
18652 }
18653
18654 module.exports = containsNode;
18655
18656/***/ },
18657/* 234 */
18658/***/ function(module, exports, __webpack_require__) {
18659
18660 'use strict';
18661
18662 /**
18663 * Copyright (c) 2013-present, Facebook, Inc.
18664 * All rights reserved.
18665 *
18666 * This source code is licensed under the BSD-style license found in the
18667 * LICENSE file in the root directory of this source tree. An additional grant
18668 * of patent rights can be found in the PATENTS file in the same directory.
18669 *
18670 * @typechecks
18671 */
18672
18673 var isNode = __webpack_require__(235);
18674
18675 /**
18676 * @param {*} object The object to check.
18677 * @return {boolean} Whether or not the object is a DOM text node.
18678 */
18679 function isTextNode(object) {
18680 return isNode(object) && object.nodeType == 3;
18681 }
18682
18683 module.exports = isTextNode;
18684
18685/***/ },
18686/* 235 */
18687/***/ function(module, exports) {
18688
18689 'use strict';
18690
18691 /**
18692 * Copyright (c) 2013-present, Facebook, Inc.
18693 * All rights reserved.
18694 *
18695 * This source code is licensed under the BSD-style license found in the
18696 * LICENSE file in the root directory of this source tree. An additional grant
18697 * of patent rights can be found in the PATENTS file in the same directory.
18698 *
18699 * @typechecks
18700 */
18701
18702 /**
18703 * @param {*} object The object to check.
18704 * @return {boolean} Whether or not the object is a DOM node.
18705 */
18706 function isNode(object) {
18707 return !!(object && (typeof Node === 'function' ? object instanceof Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));
18708 }
18709
18710 module.exports = isNode;
18711
18712/***/ },
18713/* 236 */
18714/***/ function(module, exports) {
18715
18716 'use strict';
18717
18718 /**
18719 * Copyright (c) 2013-present, Facebook, Inc.
18720 * All rights reserved.
18721 *
18722 * This source code is licensed under the BSD-style license found in the
18723 * LICENSE file in the root directory of this source tree. An additional grant
18724 * of patent rights can be found in the PATENTS file in the same directory.
18725 *
18726 * @typechecks
18727 */
18728
18729 /* eslint-disable fb-www/typeof-undefined */
18730
18731 /**
18732 * Same as document.activeElement but wraps in a try-catch block. In IE it is
18733 * not safe to call document.activeElement if there is nothing focused.
18734 *
18735 * The activeElement will be null only if the document or document body is not
18736 * yet defined.
18737 */
18738 function getActiveElement() /*?DOMElement*/{
18739 if (typeof document === 'undefined') {
18740 return null;
18741 }
18742 try {
18743 return document.activeElement || document.body;
18744 } catch (e) {
18745 return document.body;
18746 }
18747 }
18748
18749 module.exports = getActiveElement;
18750
18751/***/ },
18752/* 237 */
18753/***/ function(module, exports) {
18754
18755 /**
18756 * Copyright 2013-present, Facebook, Inc.
18757 * All rights reserved.
18758 *
18759 * This source code is licensed under the BSD-style license found in the
18760 * LICENSE file in the root directory of this source tree. An additional grant
18761 * of patent rights can be found in the PATENTS file in the same directory.
18762 *
18763 * @providesModule SVGDOMPropertyConfig
18764 */
18765
18766 'use strict';
18767
18768 var NS = {
18769 xlink: 'http://www.w3.org/1999/xlink',
18770 xml: 'http://www.w3.org/XML/1998/namespace'
18771 };
18772
18773 // We use attributes for everything SVG so let's avoid some duplication and run
18774 // code instead.
18775 // The following are all specified in the HTML config already so we exclude here.
18776 // - class (as className)
18777 // - color
18778 // - height
18779 // - id
18780 // - lang
18781 // - max
18782 // - media
18783 // - method
18784 // - min
18785 // - name
18786 // - style
18787 // - target
18788 // - type
18789 // - width
18790 var ATTRS = {
18791 accentHeight: 'accent-height',
18792 accumulate: 0,
18793 additive: 0,
18794 alignmentBaseline: 'alignment-baseline',
18795 allowReorder: 'allowReorder',
18796 alphabetic: 0,
18797 amplitude: 0,
18798 arabicForm: 'arabic-form',
18799 ascent: 0,
18800 attributeName: 'attributeName',
18801 attributeType: 'attributeType',
18802 autoReverse: 'autoReverse',
18803 azimuth: 0,
18804 baseFrequency: 'baseFrequency',
18805 baseProfile: 'baseProfile',
18806 baselineShift: 'baseline-shift',
18807 bbox: 0,
18808 begin: 0,
18809 bias: 0,
18810 by: 0,
18811 calcMode: 'calcMode',
18812 capHeight: 'cap-height',
18813 clip: 0,
18814 clipPath: 'clip-path',
18815 clipRule: 'clip-rule',
18816 clipPathUnits: 'clipPathUnits',
18817 colorInterpolation: 'color-interpolation',
18818 colorInterpolationFilters: 'color-interpolation-filters',
18819 colorProfile: 'color-profile',
18820 colorRendering: 'color-rendering',
18821 contentScriptType: 'contentScriptType',
18822 contentStyleType: 'contentStyleType',
18823 cursor: 0,
18824 cx: 0,
18825 cy: 0,
18826 d: 0,
18827 decelerate: 0,
18828 descent: 0,
18829 diffuseConstant: 'diffuseConstant',
18830 direction: 0,
18831 display: 0,
18832 divisor: 0,
18833 dominantBaseline: 'dominant-baseline',
18834 dur: 0,
18835 dx: 0,
18836 dy: 0,
18837 edgeMode: 'edgeMode',
18838 elevation: 0,
18839 enableBackground: 'enable-background',
18840 end: 0,
18841 exponent: 0,
18842 externalResourcesRequired: 'externalResourcesRequired',
18843 fill: 0,
18844 fillOpacity: 'fill-opacity',
18845 fillRule: 'fill-rule',
18846 filter: 0,
18847 filterRes: 'filterRes',
18848 filterUnits: 'filterUnits',
18849 floodColor: 'flood-color',
18850 floodOpacity: 'flood-opacity',
18851 focusable: 0,
18852 fontFamily: 'font-family',
18853 fontSize: 'font-size',
18854 fontSizeAdjust: 'font-size-adjust',
18855 fontStretch: 'font-stretch',
18856 fontStyle: 'font-style',
18857 fontVariant: 'font-variant',
18858 fontWeight: 'font-weight',
18859 format: 0,
18860 from: 0,
18861 fx: 0,
18862 fy: 0,
18863 g1: 0,
18864 g2: 0,
18865 glyphName: 'glyph-name',
18866 glyphOrientationHorizontal: 'glyph-orientation-horizontal',
18867 glyphOrientationVertical: 'glyph-orientation-vertical',
18868 glyphRef: 'glyphRef',
18869 gradientTransform: 'gradientTransform',
18870 gradientUnits: 'gradientUnits',
18871 hanging: 0,
18872 horizAdvX: 'horiz-adv-x',
18873 horizOriginX: 'horiz-origin-x',
18874 ideographic: 0,
18875 imageRendering: 'image-rendering',
18876 'in': 0,
18877 in2: 0,
18878 intercept: 0,
18879 k: 0,
18880 k1: 0,
18881 k2: 0,
18882 k3: 0,
18883 k4: 0,
18884 kernelMatrix: 'kernelMatrix',
18885 kernelUnitLength: 'kernelUnitLength',
18886 kerning: 0,
18887 keyPoints: 'keyPoints',
18888 keySplines: 'keySplines',
18889 keyTimes: 'keyTimes',
18890 lengthAdjust: 'lengthAdjust',
18891 letterSpacing: 'letter-spacing',
18892 lightingColor: 'lighting-color',
18893 limitingConeAngle: 'limitingConeAngle',
18894 local: 0,
18895 markerEnd: 'marker-end',
18896 markerMid: 'marker-mid',
18897 markerStart: 'marker-start',
18898 markerHeight: 'markerHeight',
18899 markerUnits: 'markerUnits',
18900 markerWidth: 'markerWidth',
18901 mask: 0,
18902 maskContentUnits: 'maskContentUnits',
18903 maskUnits: 'maskUnits',
18904 mathematical: 0,
18905 mode: 0,
18906 numOctaves: 'numOctaves',
18907 offset: 0,
18908 opacity: 0,
18909 operator: 0,
18910 order: 0,
18911 orient: 0,
18912 orientation: 0,
18913 origin: 0,
18914 overflow: 0,
18915 overlinePosition: 'overline-position',
18916 overlineThickness: 'overline-thickness',
18917 paintOrder: 'paint-order',
18918 panose1: 'panose-1',
18919 pathLength: 'pathLength',
18920 patternContentUnits: 'patternContentUnits',
18921 patternTransform: 'patternTransform',
18922 patternUnits: 'patternUnits',
18923 pointerEvents: 'pointer-events',
18924 points: 0,
18925 pointsAtX: 'pointsAtX',
18926 pointsAtY: 'pointsAtY',
18927 pointsAtZ: 'pointsAtZ',
18928 preserveAlpha: 'preserveAlpha',
18929 preserveAspectRatio: 'preserveAspectRatio',
18930 primitiveUnits: 'primitiveUnits',
18931 r: 0,
18932 radius: 0,
18933 refX: 'refX',
18934 refY: 'refY',
18935 renderingIntent: 'rendering-intent',
18936 repeatCount: 'repeatCount',
18937 repeatDur: 'repeatDur',
18938 requiredExtensions: 'requiredExtensions',
18939 requiredFeatures: 'requiredFeatures',
18940 restart: 0,
18941 result: 0,
18942 rotate: 0,
18943 rx: 0,
18944 ry: 0,
18945 scale: 0,
18946 seed: 0,
18947 shapeRendering: 'shape-rendering',
18948 slope: 0,
18949 spacing: 0,
18950 specularConstant: 'specularConstant',
18951 specularExponent: 'specularExponent',
18952 speed: 0,
18953 spreadMethod: 'spreadMethod',
18954 startOffset: 'startOffset',
18955 stdDeviation: 'stdDeviation',
18956 stemh: 0,
18957 stemv: 0,
18958 stitchTiles: 'stitchTiles',
18959 stopColor: 'stop-color',
18960 stopOpacity: 'stop-opacity',
18961 strikethroughPosition: 'strikethrough-position',
18962 strikethroughThickness: 'strikethrough-thickness',
18963 string: 0,
18964 stroke: 0,
18965 strokeDasharray: 'stroke-dasharray',
18966 strokeDashoffset: 'stroke-dashoffset',
18967 strokeLinecap: 'stroke-linecap',
18968 strokeLinejoin: 'stroke-linejoin',
18969 strokeMiterlimit: 'stroke-miterlimit',
18970 strokeOpacity: 'stroke-opacity',
18971 strokeWidth: 'stroke-width',
18972 surfaceScale: 'surfaceScale',
18973 systemLanguage: 'systemLanguage',
18974 tableValues: 'tableValues',
18975 targetX: 'targetX',
18976 targetY: 'targetY',
18977 textAnchor: 'text-anchor',
18978 textDecoration: 'text-decoration',
18979 textRendering: 'text-rendering',
18980 textLength: 'textLength',
18981 to: 0,
18982 transform: 0,
18983 u1: 0,
18984 u2: 0,
18985 underlinePosition: 'underline-position',
18986 underlineThickness: 'underline-thickness',
18987 unicode: 0,
18988 unicodeBidi: 'unicode-bidi',
18989 unicodeRange: 'unicode-range',
18990 unitsPerEm: 'units-per-em',
18991 vAlphabetic: 'v-alphabetic',
18992 vHanging: 'v-hanging',
18993 vIdeographic: 'v-ideographic',
18994 vMathematical: 'v-mathematical',
18995 values: 0,
18996 vectorEffect: 'vector-effect',
18997 version: 0,
18998 vertAdvY: 'vert-adv-y',
18999 vertOriginX: 'vert-origin-x',
19000 vertOriginY: 'vert-origin-y',
19001 viewBox: 'viewBox',
19002 viewTarget: 'viewTarget',
19003 visibility: 0,
19004 widths: 0,
19005 wordSpacing: 'word-spacing',
19006 writingMode: 'writing-mode',
19007 x: 0,
19008 xHeight: 'x-height',
19009 x1: 0,
19010 x2: 0,
19011 xChannelSelector: 'xChannelSelector',
19012 xlinkActuate: 'xlink:actuate',
19013 xlinkArcrole: 'xlink:arcrole',
19014 xlinkHref: 'xlink:href',
19015 xlinkRole: 'xlink:role',
19016 xlinkShow: 'xlink:show',
19017 xlinkTitle: 'xlink:title',
19018 xlinkType: 'xlink:type',
19019 xmlBase: 'xml:base',
19020 xmlns: 0,
19021 xmlnsXlink: 'xmlns:xlink',
19022 xmlLang: 'xml:lang',
19023 xmlSpace: 'xml:space',
19024 y: 0,
19025 y1: 0,
19026 y2: 0,
19027 yChannelSelector: 'yChannelSelector',
19028 z: 0,
19029 zoomAndPan: 'zoomAndPan'
19030 };
19031
19032 var SVGDOMPropertyConfig = {
19033 Properties: {},
19034 DOMAttributeNamespaces: {
19035 xlinkActuate: NS.xlink,
19036 xlinkArcrole: NS.xlink,
19037 xlinkHref: NS.xlink,
19038 xlinkRole: NS.xlink,
19039 xlinkShow: NS.xlink,
19040 xlinkTitle: NS.xlink,
19041 xlinkType: NS.xlink,
19042 xmlBase: NS.xml,
19043 xmlLang: NS.xml,
19044 xmlSpace: NS.xml
19045 },
19046 DOMAttributeNames: {}
19047 };
19048
19049 Object.keys(ATTRS).forEach(function (key) {
19050 SVGDOMPropertyConfig.Properties[key] = 0;
19051 if (ATTRS[key]) {
19052 SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];
19053 }
19054 });
19055
19056 module.exports = SVGDOMPropertyConfig;
19057
19058/***/ },
19059/* 238 */
19060/***/ function(module, exports, __webpack_require__) {
19061
19062 /**
19063 * Copyright 2013-present, Facebook, Inc.
19064 * All rights reserved.
19065 *
19066 * This source code is licensed under the BSD-style license found in the
19067 * LICENSE file in the root directory of this source tree. An additional grant
19068 * of patent rights can be found in the PATENTS file in the same directory.
19069 *
19070 * @providesModule SelectEventPlugin
19071 */
19072
19073 'use strict';
19074
19075 var EventConstants = __webpack_require__(129);
19076 var EventPropagators = __webpack_require__(130);
19077 var ExecutionEnvironment = __webpack_require__(137);
19078 var ReactDOMComponentTree = __webpack_require__(124);
19079 var ReactInputSelection = __webpack_require__(230);
19080 var SyntheticEvent = __webpack_require__(141);
19081
19082 var getActiveElement = __webpack_require__(236);
19083 var isTextInputElement = __webpack_require__(160);
19084 var keyOf = __webpack_require__(112);
19085 var shallowEqual = __webpack_require__(212);
19086
19087 var topLevelTypes = EventConstants.topLevelTypes;
19088
19089 var skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;
19090
19091 var eventTypes = {
19092 select: {
19093 phasedRegistrationNames: {
19094 bubbled: keyOf({ onSelect: null }),
19095 captured: keyOf({ onSelectCapture: null })
19096 },
19097 dependencies: [topLevelTypes.topBlur, topLevelTypes.topContextMenu, topLevelTypes.topFocus, topLevelTypes.topKeyDown, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown, topLevelTypes.topMouseUp, topLevelTypes.topSelectionChange]
19098 }
19099 };
19100
19101 var activeElement = null;
19102 var activeElementInst = null;
19103 var lastSelection = null;
19104 var mouseDown = false;
19105
19106 // Track whether a listener exists for this plugin. If none exist, we do
19107 // not extract events. See #3639.
19108 var hasListener = false;
19109 var ON_SELECT_KEY = keyOf({ onSelect: null });
19110
19111 /**
19112 * Get an object which is a unique representation of the current selection.
19113 *
19114 * The return value will not be consistent across nodes or browsers, but
19115 * two identical selections on the same node will return identical objects.
19116 *
19117 * @param {DOMElement} node
19118 * @return {object}
19119 */
19120 function getSelection(node) {
19121 if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {
19122 return {
19123 start: node.selectionStart,
19124 end: node.selectionEnd
19125 };
19126 } else if (window.getSelection) {
19127 var selection = window.getSelection();
19128 return {
19129 anchorNode: selection.anchorNode,
19130 anchorOffset: selection.anchorOffset,
19131 focusNode: selection.focusNode,
19132 focusOffset: selection.focusOffset
19133 };
19134 } else if (document.selection) {
19135 var range = document.selection.createRange();
19136 return {
19137 parentElement: range.parentElement(),
19138 text: range.text,
19139 top: range.boundingTop,
19140 left: range.boundingLeft
19141 };
19142 }
19143 }
19144
19145 /**
19146 * Poll selection to see whether it's changed.
19147 *
19148 * @param {object} nativeEvent
19149 * @return {?SyntheticEvent}
19150 */
19151 function constructSelectEvent(nativeEvent, nativeEventTarget) {
19152 // Ensure we have the right element, and that the user is not dragging a
19153 // selection (this matches native `select` event behavior). In HTML5, select
19154 // fires only on input and textarea thus if there's no focused element we
19155 // won't dispatch.
19156 if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {
19157 return null;
19158 }
19159
19160 // Only fire when selection has actually changed.
19161 var currentSelection = getSelection(activeElement);
19162 if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {
19163 lastSelection = currentSelection;
19164
19165 var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);
19166
19167 syntheticEvent.type = 'select';
19168 syntheticEvent.target = activeElement;
19169
19170 EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);
19171
19172 return syntheticEvent;
19173 }
19174
19175 return null;
19176 }
19177
19178 /**
19179 * This plugin creates an `onSelect` event that normalizes select events
19180 * across form elements.
19181 *
19182 * Supported elements are:
19183 * - input (see `isTextInputElement`)
19184 * - textarea
19185 * - contentEditable
19186 *
19187 * This differs from native browser implementations in the following ways:
19188 * - Fires on contentEditable fields as well as inputs.
19189 * - Fires for collapsed selection.
19190 * - Fires after user input.
19191 */
19192 var SelectEventPlugin = {
19193
19194 eventTypes: eventTypes,
19195
19196 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
19197 if (!hasListener) {
19198 return null;
19199 }
19200
19201 var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;
19202
19203 switch (topLevelType) {
19204 // Track the input node that has focus.
19205 case topLevelTypes.topFocus:
19206 if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {
19207 activeElement = targetNode;
19208 activeElementInst = targetInst;
19209 lastSelection = null;
19210 }
19211 break;
19212 case topLevelTypes.topBlur:
19213 activeElement = null;
19214 activeElementInst = null;
19215 lastSelection = null;
19216 break;
19217
19218 // Don't fire the event while the user is dragging. This matches the
19219 // semantics of the native select event.
19220 case topLevelTypes.topMouseDown:
19221 mouseDown = true;
19222 break;
19223 case topLevelTypes.topContextMenu:
19224 case topLevelTypes.topMouseUp:
19225 mouseDown = false;
19226 return constructSelectEvent(nativeEvent, nativeEventTarget);
19227
19228 // Chrome and IE fire non-standard event when selection is changed (and
19229 // sometimes when it hasn't). IE's event fires out of order with respect
19230 // to key and input events on deletion, so we discard it.
19231 //
19232 // Firefox doesn't support selectionchange, so check selection status
19233 // after each key entry. The selection changes after keydown and before
19234 // keyup, but we check on keydown as well in the case of holding down a
19235 // key, when multiple keydown events are fired but only one keyup is.
19236 // This is also our approach for IE handling, for the reason above.
19237 case topLevelTypes.topSelectionChange:
19238 if (skipSelectionChangeEvent) {
19239 break;
19240 }
19241 // falls through
19242 case topLevelTypes.topKeyDown:
19243 case topLevelTypes.topKeyUp:
19244 return constructSelectEvent(nativeEvent, nativeEventTarget);
19245 }
19246
19247 return null;
19248 },
19249
19250 didPutListener: function (inst, registrationName, listener) {
19251 if (registrationName === ON_SELECT_KEY) {
19252 hasListener = true;
19253 }
19254 }
19255 };
19256
19257 module.exports = SelectEventPlugin;
19258
19259/***/ },
19260/* 239 */
19261/***/ function(module, exports, __webpack_require__) {
19262
19263 /**
19264 * Copyright 2013-present, Facebook, Inc.
19265 * All rights reserved.
19266 *
19267 * This source code is licensed under the BSD-style license found in the
19268 * LICENSE file in the root directory of this source tree. An additional grant
19269 * of patent rights can be found in the PATENTS file in the same directory.
19270 *
19271 * @providesModule SimpleEventPlugin
19272 */
19273
19274 'use strict';
19275
19276 var _prodInvariant = __webpack_require__(94);
19277
19278 var EventConstants = __webpack_require__(129);
19279 var EventListener = __webpack_require__(226);
19280 var EventPropagators = __webpack_require__(130);
19281 var ReactDOMComponentTree = __webpack_require__(124);
19282 var SyntheticAnimationEvent = __webpack_require__(240);
19283 var SyntheticClipboardEvent = __webpack_require__(241);
19284 var SyntheticEvent = __webpack_require__(141);
19285 var SyntheticFocusEvent = __webpack_require__(242);
19286 var SyntheticKeyboardEvent = __webpack_require__(243);
19287 var SyntheticMouseEvent = __webpack_require__(163);
19288 var SyntheticDragEvent = __webpack_require__(246);
19289 var SyntheticTouchEvent = __webpack_require__(247);
19290 var SyntheticTransitionEvent = __webpack_require__(248);
19291 var SyntheticUIEvent = __webpack_require__(164);
19292 var SyntheticWheelEvent = __webpack_require__(249);
19293
19294 var emptyFunction = __webpack_require__(99);
19295 var getEventCharCode = __webpack_require__(244);
19296 var invariant = __webpack_require__(95);
19297 var keyOf = __webpack_require__(112);
19298
19299 var topLevelTypes = EventConstants.topLevelTypes;
19300
19301 var eventTypes = {
19302 abort: {
19303 phasedRegistrationNames: {
19304 bubbled: keyOf({ onAbort: true }),
19305 captured: keyOf({ onAbortCapture: true })
19306 }
19307 },
19308 animationEnd: {
19309 phasedRegistrationNames: {
19310 bubbled: keyOf({ onAnimationEnd: true }),
19311 captured: keyOf({ onAnimationEndCapture: true })
19312 }
19313 },
19314 animationIteration: {
19315 phasedRegistrationNames: {
19316 bubbled: keyOf({ onAnimationIteration: true }),
19317 captured: keyOf({ onAnimationIterationCapture: true })
19318 }
19319 },
19320 animationStart: {
19321 phasedRegistrationNames: {
19322 bubbled: keyOf({ onAnimationStart: true }),
19323 captured: keyOf({ onAnimationStartCapture: true })
19324 }
19325 },
19326 blur: {
19327 phasedRegistrationNames: {
19328 bubbled: keyOf({ onBlur: true }),
19329 captured: keyOf({ onBlurCapture: true })
19330 }
19331 },
19332 canPlay: {
19333 phasedRegistrationNames: {
19334 bubbled: keyOf({ onCanPlay: true }),
19335 captured: keyOf({ onCanPlayCapture: true })
19336 }
19337 },
19338 canPlayThrough: {
19339 phasedRegistrationNames: {
19340 bubbled: keyOf({ onCanPlayThrough: true }),
19341 captured: keyOf({ onCanPlayThroughCapture: true })
19342 }
19343 },
19344 click: {
19345 phasedRegistrationNames: {
19346 bubbled: keyOf({ onClick: true }),
19347 captured: keyOf({ onClickCapture: true })
19348 }
19349 },
19350 contextMenu: {
19351 phasedRegistrationNames: {
19352 bubbled: keyOf({ onContextMenu: true }),
19353 captured: keyOf({ onContextMenuCapture: true })
19354 }
19355 },
19356 copy: {
19357 phasedRegistrationNames: {
19358 bubbled: keyOf({ onCopy: true }),
19359 captured: keyOf({ onCopyCapture: true })
19360 }
19361 },
19362 cut: {
19363 phasedRegistrationNames: {
19364 bubbled: keyOf({ onCut: true }),
19365 captured: keyOf({ onCutCapture: true })
19366 }
19367 },
19368 doubleClick: {
19369 phasedRegistrationNames: {
19370 bubbled: keyOf({ onDoubleClick: true }),
19371 captured: keyOf({ onDoubleClickCapture: true })
19372 }
19373 },
19374 drag: {
19375 phasedRegistrationNames: {
19376 bubbled: keyOf({ onDrag: true }),
19377 captured: keyOf({ onDragCapture: true })
19378 }
19379 },
19380 dragEnd: {
19381 phasedRegistrationNames: {
19382 bubbled: keyOf({ onDragEnd: true }),
19383 captured: keyOf({ onDragEndCapture: true })
19384 }
19385 },
19386 dragEnter: {
19387 phasedRegistrationNames: {
19388 bubbled: keyOf({ onDragEnter: true }),
19389 captured: keyOf({ onDragEnterCapture: true })
19390 }
19391 },
19392 dragExit: {
19393 phasedRegistrationNames: {
19394 bubbled: keyOf({ onDragExit: true }),
19395 captured: keyOf({ onDragExitCapture: true })
19396 }
19397 },
19398 dragLeave: {
19399 phasedRegistrationNames: {
19400 bubbled: keyOf({ onDragLeave: true }),
19401 captured: keyOf({ onDragLeaveCapture: true })
19402 }
19403 },
19404 dragOver: {
19405 phasedRegistrationNames: {
19406 bubbled: keyOf({ onDragOver: true }),
19407 captured: keyOf({ onDragOverCapture: true })
19408 }
19409 },
19410 dragStart: {
19411 phasedRegistrationNames: {
19412 bubbled: keyOf({ onDragStart: true }),
19413 captured: keyOf({ onDragStartCapture: true })
19414 }
19415 },
19416 drop: {
19417 phasedRegistrationNames: {
19418 bubbled: keyOf({ onDrop: true }),
19419 captured: keyOf({ onDropCapture: true })
19420 }
19421 },
19422 durationChange: {
19423 phasedRegistrationNames: {
19424 bubbled: keyOf({ onDurationChange: true }),
19425 captured: keyOf({ onDurationChangeCapture: true })
19426 }
19427 },
19428 emptied: {
19429 phasedRegistrationNames: {
19430 bubbled: keyOf({ onEmptied: true }),
19431 captured: keyOf({ onEmptiedCapture: true })
19432 }
19433 },
19434 encrypted: {
19435 phasedRegistrationNames: {
19436 bubbled: keyOf({ onEncrypted: true }),
19437 captured: keyOf({ onEncryptedCapture: true })
19438 }
19439 },
19440 ended: {
19441 phasedRegistrationNames: {
19442 bubbled: keyOf({ onEnded: true }),
19443 captured: keyOf({ onEndedCapture: true })
19444 }
19445 },
19446 error: {
19447 phasedRegistrationNames: {
19448 bubbled: keyOf({ onError: true }),
19449 captured: keyOf({ onErrorCapture: true })
19450 }
19451 },
19452 focus: {
19453 phasedRegistrationNames: {
19454 bubbled: keyOf({ onFocus: true }),
19455 captured: keyOf({ onFocusCapture: true })
19456 }
19457 },
19458 input: {
19459 phasedRegistrationNames: {
19460 bubbled: keyOf({ onInput: true }),
19461 captured: keyOf({ onInputCapture: true })
19462 }
19463 },
19464 invalid: {
19465 phasedRegistrationNames: {
19466 bubbled: keyOf({ onInvalid: true }),
19467 captured: keyOf({ onInvalidCapture: true })
19468 }
19469 },
19470 keyDown: {
19471 phasedRegistrationNames: {
19472 bubbled: keyOf({ onKeyDown: true }),
19473 captured: keyOf({ onKeyDownCapture: true })
19474 }
19475 },
19476 keyPress: {
19477 phasedRegistrationNames: {
19478 bubbled: keyOf({ onKeyPress: true }),
19479 captured: keyOf({ onKeyPressCapture: true })
19480 }
19481 },
19482 keyUp: {
19483 phasedRegistrationNames: {
19484 bubbled: keyOf({ onKeyUp: true }),
19485 captured: keyOf({ onKeyUpCapture: true })
19486 }
19487 },
19488 load: {
19489 phasedRegistrationNames: {
19490 bubbled: keyOf({ onLoad: true }),
19491 captured: keyOf({ onLoadCapture: true })
19492 }
19493 },
19494 loadedData: {
19495 phasedRegistrationNames: {
19496 bubbled: keyOf({ onLoadedData: true }),
19497 captured: keyOf({ onLoadedDataCapture: true })
19498 }
19499 },
19500 loadedMetadata: {
19501 phasedRegistrationNames: {
19502 bubbled: keyOf({ onLoadedMetadata: true }),
19503 captured: keyOf({ onLoadedMetadataCapture: true })
19504 }
19505 },
19506 loadStart: {
19507 phasedRegistrationNames: {
19508 bubbled: keyOf({ onLoadStart: true }),
19509 captured: keyOf({ onLoadStartCapture: true })
19510 }
19511 },
19512 // Note: We do not allow listening to mouseOver events. Instead, use the
19513 // onMouseEnter/onMouseLeave created by `EnterLeaveEventPlugin`.
19514 mouseDown: {
19515 phasedRegistrationNames: {
19516 bubbled: keyOf({ onMouseDown: true }),
19517 captured: keyOf({ onMouseDownCapture: true })
19518 }
19519 },
19520 mouseMove: {
19521 phasedRegistrationNames: {
19522 bubbled: keyOf({ onMouseMove: true }),
19523 captured: keyOf({ onMouseMoveCapture: true })
19524 }
19525 },
19526 mouseOut: {
19527 phasedRegistrationNames: {
19528 bubbled: keyOf({ onMouseOut: true }),
19529 captured: keyOf({ onMouseOutCapture: true })
19530 }
19531 },
19532 mouseOver: {
19533 phasedRegistrationNames: {
19534 bubbled: keyOf({ onMouseOver: true }),
19535 captured: keyOf({ onMouseOverCapture: true })
19536 }
19537 },
19538 mouseUp: {
19539 phasedRegistrationNames: {
19540 bubbled: keyOf({ onMouseUp: true }),
19541 captured: keyOf({ onMouseUpCapture: true })
19542 }
19543 },
19544 paste: {
19545 phasedRegistrationNames: {
19546 bubbled: keyOf({ onPaste: true }),
19547 captured: keyOf({ onPasteCapture: true })
19548 }
19549 },
19550 pause: {
19551 phasedRegistrationNames: {
19552 bubbled: keyOf({ onPause: true }),
19553 captured: keyOf({ onPauseCapture: true })
19554 }
19555 },
19556 play: {
19557 phasedRegistrationNames: {
19558 bubbled: keyOf({ onPlay: true }),
19559 captured: keyOf({ onPlayCapture: true })
19560 }
19561 },
19562 playing: {
19563 phasedRegistrationNames: {
19564 bubbled: keyOf({ onPlaying: true }),
19565 captured: keyOf({ onPlayingCapture: true })
19566 }
19567 },
19568 progress: {
19569 phasedRegistrationNames: {
19570 bubbled: keyOf({ onProgress: true }),
19571 captured: keyOf({ onProgressCapture: true })
19572 }
19573 },
19574 rateChange: {
19575 phasedRegistrationNames: {
19576 bubbled: keyOf({ onRateChange: true }),
19577 captured: keyOf({ onRateChangeCapture: true })
19578 }
19579 },
19580 reset: {
19581 phasedRegistrationNames: {
19582 bubbled: keyOf({ onReset: true }),
19583 captured: keyOf({ onResetCapture: true })
19584 }
19585 },
19586 scroll: {
19587 phasedRegistrationNames: {
19588 bubbled: keyOf({ onScroll: true }),
19589 captured: keyOf({ onScrollCapture: true })
19590 }
19591 },
19592 seeked: {
19593 phasedRegistrationNames: {
19594 bubbled: keyOf({ onSeeked: true }),
19595 captured: keyOf({ onSeekedCapture: true })
19596 }
19597 },
19598 seeking: {
19599 phasedRegistrationNames: {
19600 bubbled: keyOf({ onSeeking: true }),
19601 captured: keyOf({ onSeekingCapture: true })
19602 }
19603 },
19604 stalled: {
19605 phasedRegistrationNames: {
19606 bubbled: keyOf({ onStalled: true }),
19607 captured: keyOf({ onStalledCapture: true })
19608 }
19609 },
19610 submit: {
19611 phasedRegistrationNames: {
19612 bubbled: keyOf({ onSubmit: true }),
19613 captured: keyOf({ onSubmitCapture: true })
19614 }
19615 },
19616 suspend: {
19617 phasedRegistrationNames: {
19618 bubbled: keyOf({ onSuspend: true }),
19619 captured: keyOf({ onSuspendCapture: true })
19620 }
19621 },
19622 timeUpdate: {
19623 phasedRegistrationNames: {
19624 bubbled: keyOf({ onTimeUpdate: true }),
19625 captured: keyOf({ onTimeUpdateCapture: true })
19626 }
19627 },
19628 touchCancel: {
19629 phasedRegistrationNames: {
19630 bubbled: keyOf({ onTouchCancel: true }),
19631 captured: keyOf({ onTouchCancelCapture: true })
19632 }
19633 },
19634 touchEnd: {
19635 phasedRegistrationNames: {
19636 bubbled: keyOf({ onTouchEnd: true }),
19637 captured: keyOf({ onTouchEndCapture: true })
19638 }
19639 },
19640 touchMove: {
19641 phasedRegistrationNames: {
19642 bubbled: keyOf({ onTouchMove: true }),
19643 captured: keyOf({ onTouchMoveCapture: true })
19644 }
19645 },
19646 touchStart: {
19647 phasedRegistrationNames: {
19648 bubbled: keyOf({ onTouchStart: true }),
19649 captured: keyOf({ onTouchStartCapture: true })
19650 }
19651 },
19652 transitionEnd: {
19653 phasedRegistrationNames: {
19654 bubbled: keyOf({ onTransitionEnd: true }),
19655 captured: keyOf({ onTransitionEndCapture: true })
19656 }
19657 },
19658 volumeChange: {
19659 phasedRegistrationNames: {
19660 bubbled: keyOf({ onVolumeChange: true }),
19661 captured: keyOf({ onVolumeChangeCapture: true })
19662 }
19663 },
19664 waiting: {
19665 phasedRegistrationNames: {
19666 bubbled: keyOf({ onWaiting: true }),
19667 captured: keyOf({ onWaitingCapture: true })
19668 }
19669 },
19670 wheel: {
19671 phasedRegistrationNames: {
19672 bubbled: keyOf({ onWheel: true }),
19673 captured: keyOf({ onWheelCapture: true })
19674 }
19675 }
19676 };
19677
19678 var topLevelEventsToDispatchConfig = {
19679 topAbort: eventTypes.abort,
19680 topAnimationEnd: eventTypes.animationEnd,
19681 topAnimationIteration: eventTypes.animationIteration,
19682 topAnimationStart: eventTypes.animationStart,
19683 topBlur: eventTypes.blur,
19684 topCanPlay: eventTypes.canPlay,
19685 topCanPlayThrough: eventTypes.canPlayThrough,
19686 topClick: eventTypes.click,
19687 topContextMenu: eventTypes.contextMenu,
19688 topCopy: eventTypes.copy,
19689 topCut: eventTypes.cut,
19690 topDoubleClick: eventTypes.doubleClick,
19691 topDrag: eventTypes.drag,
19692 topDragEnd: eventTypes.dragEnd,
19693 topDragEnter: eventTypes.dragEnter,
19694 topDragExit: eventTypes.dragExit,
19695 topDragLeave: eventTypes.dragLeave,
19696 topDragOver: eventTypes.dragOver,
19697 topDragStart: eventTypes.dragStart,
19698 topDrop: eventTypes.drop,
19699 topDurationChange: eventTypes.durationChange,
19700 topEmptied: eventTypes.emptied,
19701 topEncrypted: eventTypes.encrypted,
19702 topEnded: eventTypes.ended,
19703 topError: eventTypes.error,
19704 topFocus: eventTypes.focus,
19705 topInput: eventTypes.input,
19706 topInvalid: eventTypes.invalid,
19707 topKeyDown: eventTypes.keyDown,
19708 topKeyPress: eventTypes.keyPress,
19709 topKeyUp: eventTypes.keyUp,
19710 topLoad: eventTypes.load,
19711 topLoadedData: eventTypes.loadedData,
19712 topLoadedMetadata: eventTypes.loadedMetadata,
19713 topLoadStart: eventTypes.loadStart,
19714 topMouseDown: eventTypes.mouseDown,
19715 topMouseMove: eventTypes.mouseMove,
19716 topMouseOut: eventTypes.mouseOut,
19717 topMouseOver: eventTypes.mouseOver,
19718 topMouseUp: eventTypes.mouseUp,
19719 topPaste: eventTypes.paste,
19720 topPause: eventTypes.pause,
19721 topPlay: eventTypes.play,
19722 topPlaying: eventTypes.playing,
19723 topProgress: eventTypes.progress,
19724 topRateChange: eventTypes.rateChange,
19725 topReset: eventTypes.reset,
19726 topScroll: eventTypes.scroll,
19727 topSeeked: eventTypes.seeked,
19728 topSeeking: eventTypes.seeking,
19729 topStalled: eventTypes.stalled,
19730 topSubmit: eventTypes.submit,
19731 topSuspend: eventTypes.suspend,
19732 topTimeUpdate: eventTypes.timeUpdate,
19733 topTouchCancel: eventTypes.touchCancel,
19734 topTouchEnd: eventTypes.touchEnd,
19735 topTouchMove: eventTypes.touchMove,
19736 topTouchStart: eventTypes.touchStart,
19737 topTransitionEnd: eventTypes.transitionEnd,
19738 topVolumeChange: eventTypes.volumeChange,
19739 topWaiting: eventTypes.waiting,
19740 topWheel: eventTypes.wheel
19741 };
19742
19743 for (var type in topLevelEventsToDispatchConfig) {
19744 topLevelEventsToDispatchConfig[type].dependencies = [type];
19745 }
19746
19747 var ON_CLICK_KEY = keyOf({ onClick: null });
19748 var onClickListeners = {};
19749
19750 function getDictionaryKey(inst) {
19751 // Prevents V8 performance issue:
19752 // https://github.com/facebook/react/pull/7232
19753 return '.' + inst._rootNodeID;
19754 }
19755
19756 var SimpleEventPlugin = {
19757
19758 eventTypes: eventTypes,
19759
19760 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
19761 var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];
19762 if (!dispatchConfig) {
19763 return null;
19764 }
19765 var EventConstructor;
19766 switch (topLevelType) {
19767 case topLevelTypes.topAbort:
19768 case topLevelTypes.topCanPlay:
19769 case topLevelTypes.topCanPlayThrough:
19770 case topLevelTypes.topDurationChange:
19771 case topLevelTypes.topEmptied:
19772 case topLevelTypes.topEncrypted:
19773 case topLevelTypes.topEnded:
19774 case topLevelTypes.topError:
19775 case topLevelTypes.topInput:
19776 case topLevelTypes.topInvalid:
19777 case topLevelTypes.topLoad:
19778 case topLevelTypes.topLoadedData:
19779 case topLevelTypes.topLoadedMetadata:
19780 case topLevelTypes.topLoadStart:
19781 case topLevelTypes.topPause:
19782 case topLevelTypes.topPlay:
19783 case topLevelTypes.topPlaying:
19784 case topLevelTypes.topProgress:
19785 case topLevelTypes.topRateChange:
19786 case topLevelTypes.topReset:
19787 case topLevelTypes.topSeeked:
19788 case topLevelTypes.topSeeking:
19789 case topLevelTypes.topStalled:
19790 case topLevelTypes.topSubmit:
19791 case topLevelTypes.topSuspend:
19792 case topLevelTypes.topTimeUpdate:
19793 case topLevelTypes.topVolumeChange:
19794 case topLevelTypes.topWaiting:
19795 // HTML Events
19796 // @see http://www.w3.org/TR/html5/index.html#events-0
19797 EventConstructor = SyntheticEvent;
19798 break;
19799 case topLevelTypes.topKeyPress:
19800 // Firefox creates a keypress event for function keys too. This removes
19801 // the unwanted keypress events. Enter is however both printable and
19802 // non-printable. One would expect Tab to be as well (but it isn't).
19803 if (getEventCharCode(nativeEvent) === 0) {
19804 return null;
19805 }
19806 /* falls through */
19807 case topLevelTypes.topKeyDown:
19808 case topLevelTypes.topKeyUp:
19809 EventConstructor = SyntheticKeyboardEvent;
19810 break;
19811 case topLevelTypes.topBlur:
19812 case topLevelTypes.topFocus:
19813 EventConstructor = SyntheticFocusEvent;
19814 break;
19815 case topLevelTypes.topClick:
19816 // Firefox creates a click event on right mouse clicks. This removes the
19817 // unwanted click events.
19818 if (nativeEvent.button === 2) {
19819 return null;
19820 }
19821 /* falls through */
19822 case topLevelTypes.topContextMenu:
19823 case topLevelTypes.topDoubleClick:
19824 case topLevelTypes.topMouseDown:
19825 case topLevelTypes.topMouseMove:
19826 case topLevelTypes.topMouseOut:
19827 case topLevelTypes.topMouseOver:
19828 case topLevelTypes.topMouseUp:
19829 EventConstructor = SyntheticMouseEvent;
19830 break;
19831 case topLevelTypes.topDrag:
19832 case topLevelTypes.topDragEnd:
19833 case topLevelTypes.topDragEnter:
19834 case topLevelTypes.topDragExit:
19835 case topLevelTypes.topDragLeave:
19836 case topLevelTypes.topDragOver:
19837 case topLevelTypes.topDragStart:
19838 case topLevelTypes.topDrop:
19839 EventConstructor = SyntheticDragEvent;
19840 break;
19841 case topLevelTypes.topTouchCancel:
19842 case topLevelTypes.topTouchEnd:
19843 case topLevelTypes.topTouchMove:
19844 case topLevelTypes.topTouchStart:
19845 EventConstructor = SyntheticTouchEvent;
19846 break;
19847 case topLevelTypes.topAnimationEnd:
19848 case topLevelTypes.topAnimationIteration:
19849 case topLevelTypes.topAnimationStart:
19850 EventConstructor = SyntheticAnimationEvent;
19851 break;
19852 case topLevelTypes.topTransitionEnd:
19853 EventConstructor = SyntheticTransitionEvent;
19854 break;
19855 case topLevelTypes.topScroll:
19856 EventConstructor = SyntheticUIEvent;
19857 break;
19858 case topLevelTypes.topWheel:
19859 EventConstructor = SyntheticWheelEvent;
19860 break;
19861 case topLevelTypes.topCopy:
19862 case topLevelTypes.topCut:
19863 case topLevelTypes.topPaste:
19864 EventConstructor = SyntheticClipboardEvent;
19865 break;
19866 }
19867 !EventConstructor ? (undefined) !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;
19868 var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);
19869 EventPropagators.accumulateTwoPhaseDispatches(event);
19870 return event;
19871 },
19872
19873 didPutListener: function (inst, registrationName, listener) {
19874 // Mobile Safari does not fire properly bubble click events on
19875 // non-interactive elements, which means delegated click listeners do not
19876 // fire. The workaround for this bug involves attaching an empty click
19877 // listener on the target node.
19878 if (registrationName === ON_CLICK_KEY) {
19879 var key = getDictionaryKey(inst);
19880 var node = ReactDOMComponentTree.getNodeFromInstance(inst);
19881 if (!onClickListeners[key]) {
19882 onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);
19883 }
19884 }
19885 },
19886
19887 willDeleteListener: function (inst, registrationName) {
19888 if (registrationName === ON_CLICK_KEY) {
19889 var key = getDictionaryKey(inst);
19890 onClickListeners[key].remove();
19891 delete onClickListeners[key];
19892 }
19893 }
19894
19895 };
19896
19897 module.exports = SimpleEventPlugin;
19898
19899/***/ },
19900/* 240 */
19901/***/ function(module, exports, __webpack_require__) {
19902
19903 /**
19904 * Copyright 2013-present, Facebook, Inc.
19905 * All rights reserved.
19906 *
19907 * This source code is licensed under the BSD-style license found in the
19908 * LICENSE file in the root directory of this source tree. An additional grant
19909 * of patent rights can be found in the PATENTS file in the same directory.
19910 *
19911 * @providesModule SyntheticAnimationEvent
19912 */
19913
19914 'use strict';
19915
19916 var SyntheticEvent = __webpack_require__(141);
19917
19918 /**
19919 * @interface Event
19920 * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface
19921 * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent
19922 */
19923 var AnimationEventInterface = {
19924 animationName: null,
19925 elapsedTime: null,
19926 pseudoElement: null
19927 };
19928
19929 /**
19930 * @param {object} dispatchConfig Configuration used to dispatch this event.
19931 * @param {string} dispatchMarker Marker identifying the event target.
19932 * @param {object} nativeEvent Native browser event.
19933 * @extends {SyntheticEvent}
19934 */
19935 function SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
19936 return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
19937 }
19938
19939 SyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);
19940
19941 module.exports = SyntheticAnimationEvent;
19942
19943/***/ },
19944/* 241 */
19945/***/ function(module, exports, __webpack_require__) {
19946
19947 /**
19948 * Copyright 2013-present, Facebook, Inc.
19949 * All rights reserved.
19950 *
19951 * This source code is licensed under the BSD-style license found in the
19952 * LICENSE file in the root directory of this source tree. An additional grant
19953 * of patent rights can be found in the PATENTS file in the same directory.
19954 *
19955 * @providesModule SyntheticClipboardEvent
19956 */
19957
19958 'use strict';
19959
19960 var SyntheticEvent = __webpack_require__(141);
19961
19962 /**
19963 * @interface Event
19964 * @see http://www.w3.org/TR/clipboard-apis/
19965 */
19966 var ClipboardEventInterface = {
19967 clipboardData: function (event) {
19968 return 'clipboardData' in event ? event.clipboardData : window.clipboardData;
19969 }
19970 };
19971
19972 /**
19973 * @param {object} dispatchConfig Configuration used to dispatch this event.
19974 * @param {string} dispatchMarker Marker identifying the event target.
19975 * @param {object} nativeEvent Native browser event.
19976 * @extends {SyntheticUIEvent}
19977 */
19978 function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
19979 return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
19980 }
19981
19982 SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);
19983
19984 module.exports = SyntheticClipboardEvent;
19985
19986/***/ },
19987/* 242 */
19988/***/ function(module, exports, __webpack_require__) {
19989
19990 /**
19991 * Copyright 2013-present, Facebook, Inc.
19992 * All rights reserved.
19993 *
19994 * This source code is licensed under the BSD-style license found in the
19995 * LICENSE file in the root directory of this source tree. An additional grant
19996 * of patent rights can be found in the PATENTS file in the same directory.
19997 *
19998 * @providesModule SyntheticFocusEvent
19999 */
20000
20001 'use strict';
20002
20003 var SyntheticUIEvent = __webpack_require__(164);
20004
20005 /**
20006 * @interface FocusEvent
20007 * @see http://www.w3.org/TR/DOM-Level-3-Events/
20008 */
20009 var FocusEventInterface = {
20010 relatedTarget: null
20011 };
20012
20013 /**
20014 * @param {object} dispatchConfig Configuration used to dispatch this event.
20015 * @param {string} dispatchMarker Marker identifying the event target.
20016 * @param {object} nativeEvent Native browser event.
20017 * @extends {SyntheticUIEvent}
20018 */
20019 function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20020 return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20021 }
20022
20023 SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);
20024
20025 module.exports = SyntheticFocusEvent;
20026
20027/***/ },
20028/* 243 */
20029/***/ function(module, exports, __webpack_require__) {
20030
20031 /**
20032 * Copyright 2013-present, Facebook, Inc.
20033 * All rights reserved.
20034 *
20035 * This source code is licensed under the BSD-style license found in the
20036 * LICENSE file in the root directory of this source tree. An additional grant
20037 * of patent rights can be found in the PATENTS file in the same directory.
20038 *
20039 * @providesModule SyntheticKeyboardEvent
20040 */
20041
20042 'use strict';
20043
20044 var SyntheticUIEvent = __webpack_require__(164);
20045
20046 var getEventCharCode = __webpack_require__(244);
20047 var getEventKey = __webpack_require__(245);
20048 var getEventModifierState = __webpack_require__(166);
20049
20050 /**
20051 * @interface KeyboardEvent
20052 * @see http://www.w3.org/TR/DOM-Level-3-Events/
20053 */
20054 var KeyboardEventInterface = {
20055 key: getEventKey,
20056 location: null,
20057 ctrlKey: null,
20058 shiftKey: null,
20059 altKey: null,
20060 metaKey: null,
20061 repeat: null,
20062 locale: null,
20063 getModifierState: getEventModifierState,
20064 // Legacy Interface
20065 charCode: function (event) {
20066 // `charCode` is the result of a KeyPress event and represents the value of
20067 // the actual printable character.
20068
20069 // KeyPress is deprecated, but its replacement is not yet final and not
20070 // implemented in any major browser. Only KeyPress has charCode.
20071 if (event.type === 'keypress') {
20072 return getEventCharCode(event);
20073 }
20074 return 0;
20075 },
20076 keyCode: function (event) {
20077 // `keyCode` is the result of a KeyDown/Up event and represents the value of
20078 // physical keyboard key.
20079
20080 // The actual meaning of the value depends on the users' keyboard layout
20081 // which cannot be detected. Assuming that it is a US keyboard layout
20082 // provides a surprisingly accurate mapping for US and European users.
20083 // Due to this, it is left to the user to implement at this time.
20084 if (event.type === 'keydown' || event.type === 'keyup') {
20085 return event.keyCode;
20086 }
20087 return 0;
20088 },
20089 which: function (event) {
20090 // `which` is an alias for either `keyCode` or `charCode` depending on the
20091 // type of the event.
20092 if (event.type === 'keypress') {
20093 return getEventCharCode(event);
20094 }
20095 if (event.type === 'keydown' || event.type === 'keyup') {
20096 return event.keyCode;
20097 }
20098 return 0;
20099 }
20100 };
20101
20102 /**
20103 * @param {object} dispatchConfig Configuration used to dispatch this event.
20104 * @param {string} dispatchMarker Marker identifying the event target.
20105 * @param {object} nativeEvent Native browser event.
20106 * @extends {SyntheticUIEvent}
20107 */
20108 function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20109 return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20110 }
20111
20112 SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);
20113
20114 module.exports = SyntheticKeyboardEvent;
20115
20116/***/ },
20117/* 244 */
20118/***/ function(module, exports) {
20119
20120 /**
20121 * Copyright 2013-present, Facebook, Inc.
20122 * All rights reserved.
20123 *
20124 * This source code is licensed under the BSD-style license found in the
20125 * LICENSE file in the root directory of this source tree. An additional grant
20126 * of patent rights can be found in the PATENTS file in the same directory.
20127 *
20128 * @providesModule getEventCharCode
20129 */
20130
20131 'use strict';
20132
20133 /**
20134 * `charCode` represents the actual "character code" and is safe to use with
20135 * `String.fromCharCode`. As such, only keys that correspond to printable
20136 * characters produce a valid `charCode`, the only exception to this is Enter.
20137 * The Tab-key is considered non-printable and does not have a `charCode`,
20138 * presumably because it does not produce a tab-character in browsers.
20139 *
20140 * @param {object} nativeEvent Native browser event.
20141 * @return {number} Normalized `charCode` property.
20142 */
20143
20144 function getEventCharCode(nativeEvent) {
20145 var charCode;
20146 var keyCode = nativeEvent.keyCode;
20147
20148 if ('charCode' in nativeEvent) {
20149 charCode = nativeEvent.charCode;
20150
20151 // FF does not set `charCode` for the Enter-key, check against `keyCode`.
20152 if (charCode === 0 && keyCode === 13) {
20153 charCode = 13;
20154 }
20155 } else {
20156 // IE8 does not implement `charCode`, but `keyCode` has the correct value.
20157 charCode = keyCode;
20158 }
20159
20160 // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.
20161 // Must not discard the (non-)printable Enter-key.
20162 if (charCode >= 32 || charCode === 13) {
20163 return charCode;
20164 }
20165
20166 return 0;
20167 }
20168
20169 module.exports = getEventCharCode;
20170
20171/***/ },
20172/* 245 */
20173/***/ function(module, exports, __webpack_require__) {
20174
20175 /**
20176 * Copyright 2013-present, Facebook, Inc.
20177 * All rights reserved.
20178 *
20179 * This source code is licensed under the BSD-style license found in the
20180 * LICENSE file in the root directory of this source tree. An additional grant
20181 * of patent rights can be found in the PATENTS file in the same directory.
20182 *
20183 * @providesModule getEventKey
20184 */
20185
20186 'use strict';
20187
20188 var getEventCharCode = __webpack_require__(244);
20189
20190 /**
20191 * Normalization of deprecated HTML5 `key` values
20192 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
20193 */
20194 var normalizeKey = {
20195 'Esc': 'Escape',
20196 'Spacebar': ' ',
20197 'Left': 'ArrowLeft',
20198 'Up': 'ArrowUp',
20199 'Right': 'ArrowRight',
20200 'Down': 'ArrowDown',
20201 'Del': 'Delete',
20202 'Win': 'OS',
20203 'Menu': 'ContextMenu',
20204 'Apps': 'ContextMenu',
20205 'Scroll': 'ScrollLock',
20206 'MozPrintableKey': 'Unidentified'
20207 };
20208
20209 /**
20210 * Translation from legacy `keyCode` to HTML5 `key`
20211 * Only special keys supported, all others depend on keyboard layout or browser
20212 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
20213 */
20214 var translateToKey = {
20215 8: 'Backspace',
20216 9: 'Tab',
20217 12: 'Clear',
20218 13: 'Enter',
20219 16: 'Shift',
20220 17: 'Control',
20221 18: 'Alt',
20222 19: 'Pause',
20223 20: 'CapsLock',
20224 27: 'Escape',
20225 32: ' ',
20226 33: 'PageUp',
20227 34: 'PageDown',
20228 35: 'End',
20229 36: 'Home',
20230 37: 'ArrowLeft',
20231 38: 'ArrowUp',
20232 39: 'ArrowRight',
20233 40: 'ArrowDown',
20234 45: 'Insert',
20235 46: 'Delete',
20236 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',
20237 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',
20238 144: 'NumLock',
20239 145: 'ScrollLock',
20240 224: 'Meta'
20241 };
20242
20243 /**
20244 * @param {object} nativeEvent Native browser event.
20245 * @return {string} Normalized `key` property.
20246 */
20247 function getEventKey(nativeEvent) {
20248 if (nativeEvent.key) {
20249 // Normalize inconsistent values reported by browsers due to
20250 // implementations of a working draft specification.
20251
20252 // FireFox implements `key` but returns `MozPrintableKey` for all
20253 // printable characters (normalized to `Unidentified`), ignore it.
20254 var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
20255 if (key !== 'Unidentified') {
20256 return key;
20257 }
20258 }
20259
20260 // Browser does not implement `key`, polyfill as much of it as we can.
20261 if (nativeEvent.type === 'keypress') {
20262 var charCode = getEventCharCode(nativeEvent);
20263
20264 // The enter-key is technically both printable and non-printable and can
20265 // thus be captured by `keypress`, no other non-printable key should.
20266 return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);
20267 }
20268 if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {
20269 // While user keyboard layout determines the actual meaning of each
20270 // `keyCode` value, almost all function keys have a universal value.
20271 return translateToKey[nativeEvent.keyCode] || 'Unidentified';
20272 }
20273 return '';
20274 }
20275
20276 module.exports = getEventKey;
20277
20278/***/ },
20279/* 246 */
20280/***/ function(module, exports, __webpack_require__) {
20281
20282 /**
20283 * Copyright 2013-present, Facebook, Inc.
20284 * All rights reserved.
20285 *
20286 * This source code is licensed under the BSD-style license found in the
20287 * LICENSE file in the root directory of this source tree. An additional grant
20288 * of patent rights can be found in the PATENTS file in the same directory.
20289 *
20290 * @providesModule SyntheticDragEvent
20291 */
20292
20293 'use strict';
20294
20295 var SyntheticMouseEvent = __webpack_require__(163);
20296
20297 /**
20298 * @interface DragEvent
20299 * @see http://www.w3.org/TR/DOM-Level-3-Events/
20300 */
20301 var DragEventInterface = {
20302 dataTransfer: null
20303 };
20304
20305 /**
20306 * @param {object} dispatchConfig Configuration used to dispatch this event.
20307 * @param {string} dispatchMarker Marker identifying the event target.
20308 * @param {object} nativeEvent Native browser event.
20309 * @extends {SyntheticUIEvent}
20310 */
20311 function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20312 return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20313 }
20314
20315 SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);
20316
20317 module.exports = SyntheticDragEvent;
20318
20319/***/ },
20320/* 247 */
20321/***/ function(module, exports, __webpack_require__) {
20322
20323 /**
20324 * Copyright 2013-present, Facebook, Inc.
20325 * All rights reserved.
20326 *
20327 * This source code is licensed under the BSD-style license found in the
20328 * LICENSE file in the root directory of this source tree. An additional grant
20329 * of patent rights can be found in the PATENTS file in the same directory.
20330 *
20331 * @providesModule SyntheticTouchEvent
20332 */
20333
20334 'use strict';
20335
20336 var SyntheticUIEvent = __webpack_require__(164);
20337
20338 var getEventModifierState = __webpack_require__(166);
20339
20340 /**
20341 * @interface TouchEvent
20342 * @see http://www.w3.org/TR/touch-events/
20343 */
20344 var TouchEventInterface = {
20345 touches: null,
20346 targetTouches: null,
20347 changedTouches: null,
20348 altKey: null,
20349 metaKey: null,
20350 ctrlKey: null,
20351 shiftKey: null,
20352 getModifierState: getEventModifierState
20353 };
20354
20355 /**
20356 * @param {object} dispatchConfig Configuration used to dispatch this event.
20357 * @param {string} dispatchMarker Marker identifying the event target.
20358 * @param {object} nativeEvent Native browser event.
20359 * @extends {SyntheticUIEvent}
20360 */
20361 function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20362 return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20363 }
20364
20365 SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);
20366
20367 module.exports = SyntheticTouchEvent;
20368
20369/***/ },
20370/* 248 */
20371/***/ function(module, exports, __webpack_require__) {
20372
20373 /**
20374 * Copyright 2013-present, Facebook, Inc.
20375 * All rights reserved.
20376 *
20377 * This source code is licensed under the BSD-style license found in the
20378 * LICENSE file in the root directory of this source tree. An additional grant
20379 * of patent rights can be found in the PATENTS file in the same directory.
20380 *
20381 * @providesModule SyntheticTransitionEvent
20382 */
20383
20384 'use strict';
20385
20386 var SyntheticEvent = __webpack_require__(141);
20387
20388 /**
20389 * @interface Event
20390 * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-
20391 * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent
20392 */
20393 var TransitionEventInterface = {
20394 propertyName: null,
20395 elapsedTime: null,
20396 pseudoElement: null
20397 };
20398
20399 /**
20400 * @param {object} dispatchConfig Configuration used to dispatch this event.
20401 * @param {string} dispatchMarker Marker identifying the event target.
20402 * @param {object} nativeEvent Native browser event.
20403 * @extends {SyntheticEvent}
20404 */
20405 function SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20406 return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20407 }
20408
20409 SyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);
20410
20411 module.exports = SyntheticTransitionEvent;
20412
20413/***/ },
20414/* 249 */
20415/***/ function(module, exports, __webpack_require__) {
20416
20417 /**
20418 * Copyright 2013-present, Facebook, Inc.
20419 * All rights reserved.
20420 *
20421 * This source code is licensed under the BSD-style license found in the
20422 * LICENSE file in the root directory of this source tree. An additional grant
20423 * of patent rights can be found in the PATENTS file in the same directory.
20424 *
20425 * @providesModule SyntheticWheelEvent
20426 */
20427
20428 'use strict';
20429
20430 var SyntheticMouseEvent = __webpack_require__(163);
20431
20432 /**
20433 * @interface WheelEvent
20434 * @see http://www.w3.org/TR/DOM-Level-3-Events/
20435 */
20436 var WheelEventInterface = {
20437 deltaX: function (event) {
20438 return 'deltaX' in event ? event.deltaX :
20439 // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
20440 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;
20441 },
20442 deltaY: function (event) {
20443 return 'deltaY' in event ? event.deltaY :
20444 // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
20445 'wheelDeltaY' in event ? -event.wheelDeltaY :
20446 // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
20447 'wheelDelta' in event ? -event.wheelDelta : 0;
20448 },
20449 deltaZ: null,
20450
20451 // Browsers without "deltaMode" is reporting in raw wheel delta where one
20452 // notch on the scroll is always +/- 120, roughly equivalent to pixels.
20453 // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
20454 // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
20455 deltaMode: null
20456 };
20457
20458 /**
20459 * @param {object} dispatchConfig Configuration used to dispatch this event.
20460 * @param {string} dispatchMarker Marker identifying the event target.
20461 * @param {object} nativeEvent Native browser event.
20462 * @extends {SyntheticMouseEvent}
20463 */
20464 function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20465 return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20466 }
20467
20468 SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
20469
20470 module.exports = SyntheticWheelEvent;
20471
20472/***/ },
20473/* 250 */
20474/***/ function(module, exports, __webpack_require__) {
20475
20476 /**
20477 * Copyright 2013-present, Facebook, Inc.
20478 * All rights reserved.
20479 *
20480 * This source code is licensed under the BSD-style license found in the
20481 * LICENSE file in the root directory of this source tree. An additional grant
20482 * of patent rights can be found in the PATENTS file in the same directory.
20483 *
20484 * @providesModule ReactMount
20485 */
20486
20487 'use strict';
20488
20489 var _prodInvariant = __webpack_require__(94);
20490
20491 var DOMLazyTree = __webpack_require__(170);
20492 var DOMProperty = __webpack_require__(125);
20493 var ReactBrowserEventEmitter = __webpack_require__(195);
20494 var ReactCurrentOwner = __webpack_require__(97);
20495 var ReactDOMComponentTree = __webpack_require__(124);
20496 var ReactDOMContainerInfo = __webpack_require__(251);
20497 var ReactDOMFeatureFlags = __webpack_require__(252);
20498 var ReactElement = __webpack_require__(96);
20499 var ReactFeatureFlags = __webpack_require__(146);
20500 var ReactInstanceMap = __webpack_require__(207);
20501 var ReactInstrumentation = __webpack_require__(150);
20502 var ReactMarkupChecksum = __webpack_require__(253);
20503 var ReactReconciler = __webpack_require__(147);
20504 var ReactUpdateQueue = __webpack_require__(219);
20505 var ReactUpdates = __webpack_require__(144);
20506
20507 var emptyObject = __webpack_require__(106);
20508 var instantiateReactComponent = __webpack_require__(209);
20509 var invariant = __webpack_require__(95);
20510 var setInnerHTML = __webpack_require__(172);
20511 var shouldUpdateReactComponent = __webpack_require__(213);
20512 var warning = __webpack_require__(98);
20513
20514 var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
20515 var ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;
20516
20517 var ELEMENT_NODE_TYPE = 1;
20518 var DOC_NODE_TYPE = 9;
20519 var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
20520
20521 var instancesByReactRootID = {};
20522
20523 /**
20524 * Finds the index of the first character
20525 * that's not common between the two given strings.
20526 *
20527 * @return {number} the index of the character where the strings diverge
20528 */
20529 function firstDifferenceIndex(string1, string2) {
20530 var minLen = Math.min(string1.length, string2.length);
20531 for (var i = 0; i < minLen; i++) {
20532 if (string1.charAt(i) !== string2.charAt(i)) {
20533 return i;
20534 }
20535 }
20536 return string1.length === string2.length ? -1 : minLen;
20537 }
20538
20539 /**
20540 * @param {DOMElement|DOMDocument} container DOM element that may contain
20541 * a React component
20542 * @return {?*} DOM element that may have the reactRoot ID, or null.
20543 */
20544 function getReactRootElementInContainer(container) {
20545 if (!container) {
20546 return null;
20547 }
20548
20549 if (container.nodeType === DOC_NODE_TYPE) {
20550 return container.documentElement;
20551 } else {
20552 return container.firstChild;
20553 }
20554 }
20555
20556 function internalGetID(node) {
20557 // If node is something like a window, document, or text node, none of
20558 // which support attributes or a .getAttribute method, gracefully return
20559 // the empty string, as if the attribute were missing.
20560 return node.getAttribute && node.getAttribute(ATTR_NAME) || '';
20561 }
20562
20563 /**
20564 * Mounts this component and inserts it into the DOM.
20565 *
20566 * @param {ReactComponent} componentInstance The instance to mount.
20567 * @param {DOMElement} container DOM element to mount into.
20568 * @param {ReactReconcileTransaction} transaction
20569 * @param {boolean} shouldReuseMarkup If true, do not insert markup
20570 */
20571 function mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {
20572 var markerName;
20573 if (ReactFeatureFlags.logTopLevelRenders) {
20574 var wrappedElement = wrapperInstance._currentElement.props;
20575 var type = wrappedElement.type;
20576 markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);
20577 console.time(markerName);
20578 }
20579
20580 var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */
20581 );
20582
20583 if (markerName) {
20584 console.timeEnd(markerName);
20585 }
20586
20587 wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;
20588 ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);
20589 }
20590
20591 /**
20592 * Batched mount.
20593 *
20594 * @param {ReactComponent} componentInstance The instance to mount.
20595 * @param {DOMElement} container DOM element to mount into.
20596 * @param {boolean} shouldReuseMarkup If true, do not insert markup
20597 */
20598 function batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {
20599 var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(
20600 /* useCreateElement */
20601 !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);
20602 transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);
20603 ReactUpdates.ReactReconcileTransaction.release(transaction);
20604 }
20605
20606 /**
20607 * Unmounts a component and removes it from the DOM.
20608 *
20609 * @param {ReactComponent} instance React component instance.
20610 * @param {DOMElement} container DOM element to unmount from.
20611 * @final
20612 * @internal
20613 * @see {ReactMount.unmountComponentAtNode}
20614 */
20615 function unmountComponentFromNode(instance, container, safely) {
20616 if ((undefined) !== 'production') {
20617 ReactInstrumentation.debugTool.onBeginFlush();
20618 }
20619 ReactReconciler.unmountComponent(instance, safely);
20620 if ((undefined) !== 'production') {
20621 ReactInstrumentation.debugTool.onEndFlush();
20622 }
20623
20624 if (container.nodeType === DOC_NODE_TYPE) {
20625 container = container.documentElement;
20626 }
20627
20628 // http://jsperf.com/emptying-a-node
20629 while (container.lastChild) {
20630 container.removeChild(container.lastChild);
20631 }
20632 }
20633
20634 /**
20635 * True if the supplied DOM node has a direct React-rendered child that is
20636 * not a React root element. Useful for warning in `render`,
20637 * `unmountComponentAtNode`, etc.
20638 *
20639 * @param {?DOMElement} node The candidate DOM node.
20640 * @return {boolean} True if the DOM element contains a direct child that was
20641 * rendered by React but is not a root element.
20642 * @internal
20643 */
20644 function hasNonRootReactChild(container) {
20645 var rootEl = getReactRootElementInContainer(container);
20646 if (rootEl) {
20647 var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);
20648 return !!(inst && inst._hostParent);
20649 }
20650 }
20651
20652 /**
20653 * True if the supplied DOM node is a React DOM element and
20654 * it has been rendered by another copy of React.
20655 *
20656 * @param {?DOMElement} node The candidate DOM node.
20657 * @return {boolean} True if the DOM has been rendered by another copy of React
20658 * @internal
20659 */
20660 function nodeIsRenderedByOtherInstance(container) {
20661 var rootEl = getReactRootElementInContainer(container);
20662 return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));
20663 }
20664
20665 /**
20666 * True if the supplied DOM node is a valid node element.
20667 *
20668 * @param {?DOMElement} node The candidate DOM node.
20669 * @return {boolean} True if the DOM is a valid DOM node.
20670 * @internal
20671 */
20672 function isValidContainer(node) {
20673 return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));
20674 }
20675
20676 /**
20677 * True if the supplied DOM node is a valid React node element.
20678 *
20679 * @param {?DOMElement} node The candidate DOM node.
20680 * @return {boolean} True if the DOM is a valid React DOM node.
20681 * @internal
20682 */
20683 function isReactNode(node) {
20684 return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));
20685 }
20686
20687 function getHostRootInstanceInContainer(container) {
20688 var rootEl = getReactRootElementInContainer(container);
20689 var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);
20690 return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;
20691 }
20692
20693 function getTopLevelWrapperInContainer(container) {
20694 var root = getHostRootInstanceInContainer(container);
20695 return root ? root._hostContainerInfo._topLevelWrapper : null;
20696 }
20697
20698 /**
20699 * Temporary (?) hack so that we can store all top-level pending updates on
20700 * composites instead of having to worry about different types of components
20701 * here.
20702 */
20703 var topLevelRootCounter = 1;
20704 var TopLevelWrapper = function () {
20705 this.rootID = topLevelRootCounter++;
20706 };
20707 TopLevelWrapper.prototype.isReactComponent = {};
20708 if ((undefined) !== 'production') {
20709 TopLevelWrapper.displayName = 'TopLevelWrapper';
20710 }
20711 TopLevelWrapper.prototype.render = function () {
20712 // this.props is actually a ReactElement
20713 return this.props;
20714 };
20715
20716 /**
20717 * Mounting is the process of initializing a React component by creating its
20718 * representative DOM elements and inserting them into a supplied `container`.
20719 * Any prior content inside `container` is destroyed in the process.
20720 *
20721 * ReactMount.render(
20722 * component,
20723 * document.getElementById('container')
20724 * );
20725 *
20726 * <div id="container"> <-- Supplied `container`.
20727 * <div data-reactid=".3"> <-- Rendered reactRoot of React
20728 * // ... component.
20729 * </div>
20730 * </div>
20731 *
20732 * Inside of `container`, the first element rendered is the "reactRoot".
20733 */
20734 var ReactMount = {
20735
20736 TopLevelWrapper: TopLevelWrapper,
20737
20738 /**
20739 * Used by devtools. The keys are not important.
20740 */
20741 _instancesByReactRootID: instancesByReactRootID,
20742
20743 /**
20744 * This is a hook provided to support rendering React components while
20745 * ensuring that the apparent scroll position of its `container` does not
20746 * change.
20747 *
20748 * @param {DOMElement} container The `container` being rendered into.
20749 * @param {function} renderCallback This must be called once to do the render.
20750 */
20751 scrollMonitor: function (container, renderCallback) {
20752 renderCallback();
20753 },
20754
20755 /**
20756 * Take a component that's already mounted into the DOM and replace its props
20757 * @param {ReactComponent} prevComponent component instance already in the DOM
20758 * @param {ReactElement} nextElement component instance to render
20759 * @param {DOMElement} container container to render into
20760 * @param {?function} callback function triggered on completion
20761 */
20762 _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {
20763 ReactMount.scrollMonitor(container, function () {
20764 ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);
20765 if (callback) {
20766 ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);
20767 }
20768 });
20769
20770 return prevComponent;
20771 },
20772
20773 /**
20774 * Render a new component into the DOM. Hooked by hooks!
20775 *
20776 * @param {ReactElement} nextElement element to render
20777 * @param {DOMElement} container container to render into
20778 * @param {boolean} shouldReuseMarkup if we should skip the markup insertion
20779 * @return {ReactComponent} nextComponent
20780 */
20781 _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {
20782 // Various parts of our code (such as ReactCompositeComponent's
20783 // _renderValidatedComponent) assume that calls to render aren't nested;
20784 // verify that that's the case.
20785 (undefined) !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;
20786
20787 !isValidContainer(container) ? (undefined) !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;
20788
20789 ReactBrowserEventEmitter.ensureScrollValueMonitoring();
20790 var componentInstance = instantiateReactComponent(nextElement, false);
20791
20792 // The initial render is synchronous but any updates that happen during
20793 // rendering, in componentWillMount or componentDidMount, will be batched
20794 // according to the current batching strategy.
20795
20796 ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);
20797
20798 var wrapperID = componentInstance._instance.rootID;
20799 instancesByReactRootID[wrapperID] = componentInstance;
20800
20801 return componentInstance;
20802 },
20803
20804 /**
20805 * Renders a React component into the DOM in the supplied `container`.
20806 *
20807 * If the React component was previously rendered into `container`, this will
20808 * perform an update on it and only mutate the DOM as necessary to reflect the
20809 * latest React component.
20810 *
20811 * @param {ReactComponent} parentComponent The conceptual parent of this render tree.
20812 * @param {ReactElement} nextElement Component element to render.
20813 * @param {DOMElement} container DOM element to render into.
20814 * @param {?function} callback function triggered on completion
20815 * @return {ReactComponent} Component instance rendered in `container`.
20816 */
20817 renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {
20818 !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? (undefined) !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;
20819 return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);
20820 },
20821
20822 _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {
20823 ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');
20824 !ReactElement.isValidElement(nextElement) ? (undefined) !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \'div\', pass ' + 'React.createElement(\'div\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :
20825 // Check if it quacks like an element
20826 nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \'div\', pass ' + 'React.createElement(\'div\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;
20827
20828 (undefined) !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;
20829
20830 var nextWrappedElement = ReactElement(TopLevelWrapper, null, null, null, null, null, nextElement);
20831
20832 var nextContext;
20833 if (parentComponent) {
20834 var parentInst = ReactInstanceMap.get(parentComponent);
20835 nextContext = parentInst._processChildContext(parentInst._context);
20836 } else {
20837 nextContext = emptyObject;
20838 }
20839
20840 var prevComponent = getTopLevelWrapperInContainer(container);
20841
20842 if (prevComponent) {
20843 var prevWrappedElement = prevComponent._currentElement;
20844 var prevElement = prevWrappedElement.props;
20845 if (shouldUpdateReactComponent(prevElement, nextElement)) {
20846 var publicInst = prevComponent._renderedComponent.getPublicInstance();
20847 var updatedCallback = callback && function () {
20848 callback.call(publicInst);
20849 };
20850 ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);
20851 return publicInst;
20852 } else {
20853 ReactMount.unmountComponentAtNode(container);
20854 }
20855 }
20856
20857 var reactRootElement = getReactRootElementInContainer(container);
20858 var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);
20859 var containerHasNonRootReactChild = hasNonRootReactChild(container);
20860
20861 if ((undefined) !== 'production') {
20862 (undefined) !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;
20863
20864 if (!containerHasReactMarkup || reactRootElement.nextSibling) {
20865 var rootElementSibling = reactRootElement;
20866 while (rootElementSibling) {
20867 if (internalGetID(rootElementSibling)) {
20868 (undefined) !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;
20869 break;
20870 }
20871 rootElementSibling = rootElementSibling.nextSibling;
20872 }
20873 }
20874 }
20875
20876 var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;
20877 var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();
20878 if (callback) {
20879 callback.call(component);
20880 }
20881 return component;
20882 },
20883
20884 /**
20885 * Renders a React component into the DOM in the supplied `container`.
20886 * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render
20887 *
20888 * If the React component was previously rendered into `container`, this will
20889 * perform an update on it and only mutate the DOM as necessary to reflect the
20890 * latest React component.
20891 *
20892 * @param {ReactElement} nextElement Component element to render.
20893 * @param {DOMElement} container DOM element to render into.
20894 * @param {?function} callback function triggered on completion
20895 * @return {ReactComponent} Component instance rendered in `container`.
20896 */
20897 render: function (nextElement, container, callback) {
20898 return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);
20899 },
20900
20901 /**
20902 * Unmounts and destroys the React component rendered in the `container`.
20903 * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode
20904 *
20905 * @param {DOMElement} container DOM element containing a React component.
20906 * @return {boolean} True if a component was found in and unmounted from
20907 * `container`
20908 */
20909 unmountComponentAtNode: function (container) {
20910 // Various parts of our code (such as ReactCompositeComponent's
20911 // _renderValidatedComponent) assume that calls to render aren't nested;
20912 // verify that that's the case. (Strictly speaking, unmounting won't cause a
20913 // render but we still don't expect to be in a render call here.)
20914 (undefined) !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;
20915
20916 !isValidContainer(container) ? (undefined) !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;
20917
20918 if ((undefined) !== 'production') {
20919 (undefined) !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;
20920 }
20921
20922 var prevComponent = getTopLevelWrapperInContainer(container);
20923 if (!prevComponent) {
20924 // Check if the node being unmounted was rendered by React, but isn't a
20925 // root node.
20926 var containerHasNonRootReactChild = hasNonRootReactChild(container);
20927
20928 // Check if the container itself is a React root node.
20929 var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);
20930
20931 if ((undefined) !== 'production') {
20932 (undefined) !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;
20933 }
20934
20935 return false;
20936 }
20937 delete instancesByReactRootID[prevComponent._instance.rootID];
20938 ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);
20939 return true;
20940 },
20941
20942 _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {
20943 !isValidContainer(container) ? (undefined) !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;
20944
20945 if (shouldReuseMarkup) {
20946 var rootElement = getReactRootElementInContainer(container);
20947 if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {
20948 ReactDOMComponentTree.precacheNode(instance, rootElement);
20949 return;
20950 } else {
20951 var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
20952 rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
20953
20954 var rootMarkup = rootElement.outerHTML;
20955 rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);
20956
20957 var normalizedMarkup = markup;
20958 if ((undefined) !== 'production') {
20959 // because rootMarkup is retrieved from the DOM, various normalizations
20960 // will have occurred which will not be present in `markup`. Here,
20961 // insert markup into a <div> or <iframe> depending on the container
20962 // type to perform the same normalizations before comparing.
20963 var normalizer;
20964 if (container.nodeType === ELEMENT_NODE_TYPE) {
20965 normalizer = document.createElement('div');
20966 normalizer.innerHTML = markup;
20967 normalizedMarkup = normalizer.innerHTML;
20968 } else {
20969 normalizer = document.createElement('iframe');
20970 document.body.appendChild(normalizer);
20971 normalizer.contentDocument.write(markup);
20972 normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;
20973 document.body.removeChild(normalizer);
20974 }
20975 }
20976
20977 var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);
20978 var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);
20979
20980 !(container.nodeType !== DOC_NODE_TYPE) ? (undefined) !== 'production' ? invariant(false, 'You\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\n%s', difference) : _prodInvariant('42', difference) : void 0;
20981
20982 if ((undefined) !== 'production') {
20983 (undefined) !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\n%s', difference) : void 0;
20984 }
20985 }
20986 }
20987
20988 !(container.nodeType !== DOC_NODE_TYPE) ? (undefined) !== 'production' ? invariant(false, 'You\'re trying to render a component to the document but you didn\'t use server rendering. We can\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;
20989
20990 if (transaction.useCreateElement) {
20991 while (container.lastChild) {
20992 container.removeChild(container.lastChild);
20993 }
20994 DOMLazyTree.insertTreeBefore(container, markup, null);
20995 } else {
20996 setInnerHTML(container, markup);
20997 ReactDOMComponentTree.precacheNode(instance, container.firstChild);
20998 }
20999
21000 if ((undefined) !== 'production') {
21001 var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);
21002 if (hostNode._debugID !== 0) {
21003 ReactInstrumentation.debugTool.onHostOperation(hostNode._debugID, 'mount', markup.toString());
21004 }
21005 }
21006 }
21007 };
21008
21009 module.exports = ReactMount;
21010
21011/***/ },
21012/* 251 */
21013/***/ function(module, exports, __webpack_require__) {
21014
21015 /**
21016 * Copyright 2013-present, Facebook, Inc.
21017 * All rights reserved.
21018 *
21019 * This source code is licensed under the BSD-style license found in the
21020 * LICENSE file in the root directory of this source tree. An additional grant
21021 * of patent rights can be found in the PATENTS file in the same directory.
21022 *
21023 * @providesModule ReactDOMContainerInfo
21024 */
21025
21026 'use strict';
21027
21028 var validateDOMNesting = __webpack_require__(220);
21029
21030 var DOC_NODE_TYPE = 9;
21031
21032 function ReactDOMContainerInfo(topLevelWrapper, node) {
21033 var info = {
21034 _topLevelWrapper: topLevelWrapper,
21035 _idCounter: 1,
21036 _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,
21037 _node: node,
21038 _tag: node ? node.nodeName.toLowerCase() : null,
21039 _namespaceURI: node ? node.namespaceURI : null
21040 };
21041 if ((undefined) !== 'production') {
21042 info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;
21043 }
21044 return info;
21045 }
21046
21047 module.exports = ReactDOMContainerInfo;
21048
21049/***/ },
21050/* 252 */
21051/***/ function(module, exports) {
21052
21053 /**
21054 * Copyright 2013-present, Facebook, Inc.
21055 * All rights reserved.
21056 *
21057 * This source code is licensed under the BSD-style license found in the
21058 * LICENSE file in the root directory of this source tree. An additional grant
21059 * of patent rights can be found in the PATENTS file in the same directory.
21060 *
21061 * @providesModule ReactDOMFeatureFlags
21062 */
21063
21064 'use strict';
21065
21066 var ReactDOMFeatureFlags = {
21067 useCreateElement: true
21068 };
21069
21070 module.exports = ReactDOMFeatureFlags;
21071
21072/***/ },
21073/* 253 */
21074/***/ function(module, exports, __webpack_require__) {
21075
21076 /**
21077 * Copyright 2013-present, Facebook, Inc.
21078 * All rights reserved.
21079 *
21080 * This source code is licensed under the BSD-style license found in the
21081 * LICENSE file in the root directory of this source tree. An additional grant
21082 * of patent rights can be found in the PATENTS file in the same directory.
21083 *
21084 * @providesModule ReactMarkupChecksum
21085 */
21086
21087 'use strict';
21088
21089 var adler32 = __webpack_require__(254);
21090
21091 var TAG_END = /\/?>/;
21092 var COMMENT_START = /^<\!\-\-/;
21093
21094 var ReactMarkupChecksum = {
21095 CHECKSUM_ATTR_NAME: 'data-react-checksum',
21096
21097 /**
21098 * @param {string} markup Markup string
21099 * @return {string} Markup string with checksum attribute attached
21100 */
21101 addChecksumToMarkup: function (markup) {
21102 var checksum = adler32(markup);
21103
21104 // Add checksum (handle both parent tags, comments and self-closing tags)
21105 if (COMMENT_START.test(markup)) {
21106 return markup;
21107 } else {
21108 return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '"$&');
21109 }
21110 },
21111
21112 /**
21113 * @param {string} markup to use
21114 * @param {DOMElement} element root React element
21115 * @returns {boolean} whether or not the markup is the same
21116 */
21117 canReuseMarkup: function (markup, element) {
21118 var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
21119 existingChecksum = existingChecksum && parseInt(existingChecksum, 10);
21120 var markupChecksum = adler32(markup);
21121 return markupChecksum === existingChecksum;
21122 }
21123 };
21124
21125 module.exports = ReactMarkupChecksum;
21126
21127/***/ },
21128/* 254 */
21129/***/ function(module, exports) {
21130
21131 /**
21132 * Copyright 2013-present, Facebook, Inc.
21133 * All rights reserved.
21134 *
21135 * This source code is licensed under the BSD-style license found in the
21136 * LICENSE file in the root directory of this source tree. An additional grant
21137 * of patent rights can be found in the PATENTS file in the same directory.
21138 *
21139 * @providesModule adler32
21140 *
21141 */
21142
21143 'use strict';
21144
21145 var MOD = 65521;
21146
21147 // adler32 is not cryptographically strong, and is only used to sanity check that
21148 // markup generated on the server matches the markup generated on the client.
21149 // This implementation (a modified version of the SheetJS version) has been optimized
21150 // for our use case, at the expense of conforming to the adler32 specification
21151 // for non-ascii inputs.
21152 function adler32(data) {
21153 var a = 1;
21154 var b = 0;
21155 var i = 0;
21156 var l = data.length;
21157 var m = l & ~0x3;
21158 while (i < m) {
21159 var n = Math.min(i + 4096, m);
21160 for (; i < n; i += 4) {
21161 b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));
21162 }
21163 a %= MOD;
21164 b %= MOD;
21165 }
21166 for (; i < l; i++) {
21167 b += a += data.charCodeAt(i);
21168 }
21169 a %= MOD;
21170 b %= MOD;
21171 return a | b << 16;
21172 }
21173
21174 module.exports = adler32;
21175
21176/***/ },
21177/* 255 */
21178/***/ function(module, exports, __webpack_require__) {
21179
21180 /**
21181 * Copyright 2013-present, Facebook, Inc.
21182 * All rights reserved.
21183 *
21184 * This source code is licensed under the BSD-style license found in the
21185 * LICENSE file in the root directory of this source tree. An additional grant
21186 * of patent rights can be found in the PATENTS file in the same directory.
21187 *
21188 * @providesModule findDOMNode
21189 */
21190
21191 'use strict';
21192
21193 var _prodInvariant = __webpack_require__(94);
21194
21195 var ReactCurrentOwner = __webpack_require__(97);
21196 var ReactDOMComponentTree = __webpack_require__(124);
21197 var ReactInstanceMap = __webpack_require__(207);
21198
21199 var getHostComponentFromComposite = __webpack_require__(256);
21200 var invariant = __webpack_require__(95);
21201 var warning = __webpack_require__(98);
21202
21203 /**
21204 * Returns the DOM node rendered by this element.
21205 *
21206 * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode
21207 *
21208 * @param {ReactComponent|DOMElement} componentOrElement
21209 * @return {?DOMElement} The root node of this element.
21210 */
21211 function findDOMNode(componentOrElement) {
21212 if ((undefined) !== 'production') {
21213 var owner = ReactCurrentOwner.current;
21214 if (owner !== null) {
21215 (undefined) !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;
21216 owner._warnedAboutRefsInRender = true;
21217 }
21218 }
21219 if (componentOrElement == null) {
21220 return null;
21221 }
21222 if (componentOrElement.nodeType === 1) {
21223 return componentOrElement;
21224 }
21225
21226 var inst = ReactInstanceMap.get(componentOrElement);
21227 if (inst) {
21228 inst = getHostComponentFromComposite(inst);
21229 return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;
21230 }
21231
21232 if (typeof componentOrElement.render === 'function') {
21233 true ? (undefined) !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;
21234 } else {
21235 true ? (undefined) !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;
21236 }
21237 }
21238
21239 module.exports = findDOMNode;
21240
21241/***/ },
21242/* 256 */
21243/***/ function(module, exports, __webpack_require__) {
21244
21245 /**
21246 * Copyright 2013-present, Facebook, Inc.
21247 * All rights reserved.
21248 *
21249 * This source code is licensed under the BSD-style license found in the
21250 * LICENSE file in the root directory of this source tree. An additional grant
21251 * of patent rights can be found in the PATENTS file in the same directory.
21252 *
21253 * @providesModule getHostComponentFromComposite
21254 */
21255
21256 'use strict';
21257
21258 var ReactNodeTypes = __webpack_require__(211);
21259
21260 function getHostComponentFromComposite(inst) {
21261 var type;
21262
21263 while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {
21264 inst = inst._renderedComponent;
21265 }
21266
21267 if (type === ReactNodeTypes.HOST) {
21268 return inst._renderedComponent;
21269 } else if (type === ReactNodeTypes.EMPTY) {
21270 return null;
21271 }
21272 }
21273
21274 module.exports = getHostComponentFromComposite;
21275
21276/***/ },
21277/* 257 */
21278/***/ function(module, exports, __webpack_require__) {
21279
21280 /**
21281 * Copyright 2013-present, Facebook, Inc.
21282 * All rights reserved.
21283 *
21284 * This source code is licensed under the BSD-style license found in the
21285 * LICENSE file in the root directory of this source tree. An additional grant
21286 * of patent rights can be found in the PATENTS file in the same directory.
21287 *
21288 * @providesModule renderSubtreeIntoContainer
21289 */
21290
21291 'use strict';
21292
21293 var ReactMount = __webpack_require__(250);
21294
21295 module.exports = ReactMount.renderSubtreeIntoContainer;
21296
21297/***/ },
21298/* 258 */
21299/***/ function(module, exports, __webpack_require__) {
21300
21301 /**
21302 * Copyright 2013-present, Facebook, Inc.
21303 * All rights reserved.
21304 *
21305 * This source code is licensed under the BSD-style license found in the
21306 * LICENSE file in the root directory of this source tree. An additional grant
21307 * of patent rights can be found in the PATENTS file in the same directory.
21308 *
21309 * @providesModule ReactDOMUnknownPropertyHook
21310 */
21311
21312 'use strict';
21313
21314 var DOMProperty = __webpack_require__(125);
21315 var EventPluginRegistry = __webpack_require__(132);
21316 var ReactComponentTreeHook = __webpack_require__(115);
21317
21318 var warning = __webpack_require__(98);
21319
21320 if ((undefined) !== 'production') {
21321 var reactProps = {
21322 children: true,
21323 dangerouslySetInnerHTML: true,
21324 key: true,
21325 ref: true,
21326
21327 autoFocus: true,
21328 defaultValue: true,
21329 valueLink: true,
21330 defaultChecked: true,
21331 checkedLink: true,
21332 innerHTML: true,
21333 suppressContentEditableWarning: true,
21334 onFocusIn: true,
21335 onFocusOut: true
21336 };
21337 var warnedProperties = {};
21338
21339 var validateProperty = function (tagName, name, debugID) {
21340 if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) {
21341 return true;
21342 }
21343 if (reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {
21344 return true;
21345 }
21346 if (EventPluginRegistry.registrationNameModules.hasOwnProperty(name)) {
21347 return true;
21348 }
21349 warnedProperties[name] = true;
21350 var lowerCasedName = name.toLowerCase();
21351
21352 // data-* attributes should be lowercase; suggest the lowercase version
21353 var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;
21354
21355 var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null;
21356
21357 if (standardName != null) {
21358 (undefined) !== 'production' ? warning(false, 'Unknown DOM property %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21359 return true;
21360 } else if (registrationName != null) {
21361 (undefined) !== 'production' ? warning(false, 'Unknown event handler property %s. Did you mean `%s`?%s', name, registrationName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21362 return true;
21363 } else {
21364 // We were unable to guess which prop the user intended.
21365 // It is likely that the user was just blindly spreading/forwarding props
21366 // Components should be careful to only render valid props/attributes.
21367 // Warning will be invoked in warnUnknownProperties to allow grouping.
21368 return false;
21369 }
21370 };
21371 }
21372
21373 var warnUnknownProperties = function (debugID, element) {
21374 var unknownProps = [];
21375 for (var key in element.props) {
21376 var isValid = validateProperty(element.type, key, debugID);
21377 if (!isValid) {
21378 unknownProps.push(key);
21379 }
21380 }
21381
21382 var unknownPropString = unknownProps.map(function (prop) {
21383 return '`' + prop + '`';
21384 }).join(', ');
21385
21386 if (unknownProps.length === 1) {
21387 (undefined) !== 'production' ? warning(false, 'Unknown prop %s on <%s> tag. Remove this prop from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21388 } else if (unknownProps.length > 1) {
21389 (undefined) !== 'production' ? warning(false, 'Unknown props %s on <%s> tag. Remove these props from the element. ' + 'For details, see https://fb.me/react-unknown-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21390 }
21391 };
21392
21393 function handleElement(debugID, element) {
21394 if (element == null || typeof element.type !== 'string') {
21395 return;
21396 }
21397 if (element.type.indexOf('-') >= 0 || element.props.is) {
21398 return;
21399 }
21400 warnUnknownProperties(debugID, element);
21401 }
21402
21403 var ReactDOMUnknownPropertyHook = {
21404 onBeforeMountComponent: function (debugID, element) {
21405 handleElement(debugID, element);
21406 },
21407 onBeforeUpdateComponent: function (debugID, element) {
21408 handleElement(debugID, element);
21409 }
21410 };
21411
21412 module.exports = ReactDOMUnknownPropertyHook;
21413
21414/***/ },
21415/* 259 */
21416/***/ function(module, exports, __webpack_require__) {
21417
21418 /**
21419 * Copyright 2013-present, Facebook, Inc.
21420 * All rights reserved.
21421 *
21422 * This source code is licensed under the BSD-style license found in the
21423 * LICENSE file in the root directory of this source tree. An additional grant
21424 * of patent rights can be found in the PATENTS file in the same directory.
21425 *
21426 * @providesModule ReactDOMNullInputValuePropHook
21427 */
21428
21429 'use strict';
21430
21431 var ReactComponentTreeHook = __webpack_require__(115);
21432
21433 var warning = __webpack_require__(98);
21434
21435 var didWarnValueNull = false;
21436
21437 function handleElement(debugID, element) {
21438 if (element == null) {
21439 return;
21440 }
21441 if (element.type !== 'input' && element.type !== 'textarea' && element.type !== 'select') {
21442 return;
21443 }
21444 if (element.props != null && element.props.value === null && !didWarnValueNull) {
21445 (undefined) !== 'production' ? warning(false, '`value` prop on `%s` should not be null. ' + 'Consider using the empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21446
21447 didWarnValueNull = true;
21448 }
21449 }
21450
21451 var ReactDOMNullInputValuePropHook = {
21452 onBeforeMountComponent: function (debugID, element) {
21453 handleElement(debugID, element);
21454 },
21455 onBeforeUpdateComponent: function (debugID, element) {
21456 handleElement(debugID, element);
21457 }
21458 };
21459
21460 module.exports = ReactDOMNullInputValuePropHook;
21461
21462/***/ },
21463/* 260 */
21464/***/ function(module, exports, __webpack_require__) {
21465
21466 'use strict';
21467
21468 exports.__esModule = true;
21469 exports.createMemoryHistory = exports.hashHistory = exports.browserHistory = exports.applyRouterMiddleware = exports.formatPattern = exports.useRouterHistory = exports.match = exports.routerShape = exports.locationShape = exports.PropTypes = exports.RoutingContext = exports.RouterContext = exports.createRoutes = exports.useRoutes = exports.RouteContext = exports.Lifecycle = exports.History = exports.Route = exports.Redirect = exports.IndexRoute = exports.IndexRedirect = exports.withRouter = exports.IndexLink = exports.Link = exports.Router = undefined;
21470
21471 var _RouteUtils = __webpack_require__(261);
21472
21473 Object.defineProperty(exports, 'createRoutes', {
21474 enumerable: true,
21475 get: function get() {
21476 return _RouteUtils.createRoutes;
21477 }
21478 });
21479
21480 var _PropTypes2 = __webpack_require__(262);
21481
21482 Object.defineProperty(exports, 'locationShape', {
21483 enumerable: true,
21484 get: function get() {
21485 return _PropTypes2.locationShape;
21486 }
21487 });
21488 Object.defineProperty(exports, 'routerShape', {
21489 enumerable: true,
21490 get: function get() {
21491 return _PropTypes2.routerShape;
21492 }
21493 });
21494
21495 var _PatternUtils = __webpack_require__(267);
21496
21497 Object.defineProperty(exports, 'formatPattern', {
21498 enumerable: true,
21499 get: function get() {
21500 return _PatternUtils.formatPattern;
21501 }
21502 });
21503
21504 var _Router2 = __webpack_require__(269);
21505
21506 var _Router3 = _interopRequireDefault(_Router2);
21507
21508 var _Link2 = __webpack_require__(300);
21509
21510 var _Link3 = _interopRequireDefault(_Link2);
21511
21512 var _IndexLink2 = __webpack_require__(301);
21513
21514 var _IndexLink3 = _interopRequireDefault(_IndexLink2);
21515
21516 var _withRouter2 = __webpack_require__(302);
21517
21518 var _withRouter3 = _interopRequireDefault(_withRouter2);
21519
21520 var _IndexRedirect2 = __webpack_require__(304);
21521
21522 var _IndexRedirect3 = _interopRequireDefault(_IndexRedirect2);
21523
21524 var _IndexRoute2 = __webpack_require__(306);
21525
21526 var _IndexRoute3 = _interopRequireDefault(_IndexRoute2);
21527
21528 var _Redirect2 = __webpack_require__(305);
21529
21530 var _Redirect3 = _interopRequireDefault(_Redirect2);
21531
21532 var _Route2 = __webpack_require__(307);
21533
21534 var _Route3 = _interopRequireDefault(_Route2);
21535
21536 var _History2 = __webpack_require__(308);
21537
21538 var _History3 = _interopRequireDefault(_History2);
21539
21540 var _Lifecycle2 = __webpack_require__(309);
21541
21542 var _Lifecycle3 = _interopRequireDefault(_Lifecycle2);
21543
21544 var _RouteContext2 = __webpack_require__(310);
21545
21546 var _RouteContext3 = _interopRequireDefault(_RouteContext2);
21547
21548 var _useRoutes2 = __webpack_require__(311);
21549
21550 var _useRoutes3 = _interopRequireDefault(_useRoutes2);
21551
21552 var _RouterContext2 = __webpack_require__(297);
21553
21554 var _RouterContext3 = _interopRequireDefault(_RouterContext2);
21555
21556 var _RoutingContext2 = __webpack_require__(312);
21557
21558 var _RoutingContext3 = _interopRequireDefault(_RoutingContext2);
21559
21560 var _PropTypes3 = _interopRequireDefault(_PropTypes2);
21561
21562 var _match2 = __webpack_require__(313);
21563
21564 var _match3 = _interopRequireDefault(_match2);
21565
21566 var _useRouterHistory2 = __webpack_require__(317);
21567
21568 var _useRouterHistory3 = _interopRequireDefault(_useRouterHistory2);
21569
21570 var _applyRouterMiddleware2 = __webpack_require__(318);
21571
21572 var _applyRouterMiddleware3 = _interopRequireDefault(_applyRouterMiddleware2);
21573
21574 var _browserHistory2 = __webpack_require__(319);
21575
21576 var _browserHistory3 = _interopRequireDefault(_browserHistory2);
21577
21578 var _hashHistory2 = __webpack_require__(322);
21579
21580 var _hashHistory3 = _interopRequireDefault(_hashHistory2);
21581
21582 var _createMemoryHistory2 = __webpack_require__(314);
21583
21584 var _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2);
21585
21586 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21587
21588 exports.Router = _Router3.default; /* components */
21589
21590 exports.Link = _Link3.default;
21591 exports.IndexLink = _IndexLink3.default;
21592 exports.withRouter = _withRouter3.default;
21593
21594 /* components (configuration) */
21595
21596 exports.IndexRedirect = _IndexRedirect3.default;
21597 exports.IndexRoute = _IndexRoute3.default;
21598 exports.Redirect = _Redirect3.default;
21599 exports.Route = _Route3.default;
21600
21601 /* mixins */
21602
21603 exports.History = _History3.default;
21604 exports.Lifecycle = _Lifecycle3.default;
21605 exports.RouteContext = _RouteContext3.default;
21606
21607 /* utils */
21608
21609 exports.useRoutes = _useRoutes3.default;
21610 exports.RouterContext = _RouterContext3.default;
21611 exports.RoutingContext = _RoutingContext3.default;
21612 exports.PropTypes = _PropTypes3.default;
21613 exports.match = _match3.default;
21614 exports.useRouterHistory = _useRouterHistory3.default;
21615 exports.applyRouterMiddleware = _applyRouterMiddleware3.default;
21616
21617 /* histories */
21618
21619 exports.browserHistory = _browserHistory3.default;
21620 exports.hashHistory = _hashHistory3.default;
21621 exports.createMemoryHistory = _createMemoryHistory3.default;
21622
21623/***/ },
21624/* 261 */
21625/***/ function(module, exports, __webpack_require__) {
21626
21627 'use strict';
21628
21629 exports.__esModule = true;
21630
21631 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
21632
21633 exports.isReactChildren = isReactChildren;
21634 exports.createRouteFromReactElement = createRouteFromReactElement;
21635 exports.createRoutesFromReactChildren = createRoutesFromReactChildren;
21636 exports.createRoutes = createRoutes;
21637
21638 var _react = __webpack_require__(89);
21639
21640 var _react2 = _interopRequireDefault(_react);
21641
21642 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21643
21644 function isValidChild(object) {
21645 return object == null || _react2.default.isValidElement(object);
21646 }
21647
21648 function isReactChildren(object) {
21649 return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);
21650 }
21651
21652 function createRoute(defaultProps, props) {
21653 return _extends({}, defaultProps, props);
21654 }
21655
21656 function createRouteFromReactElement(element) {
21657 var type = element.type;
21658 var route = createRoute(type.defaultProps, element.props);
21659
21660 if (route.children) {
21661 var childRoutes = createRoutesFromReactChildren(route.children, route);
21662
21663 if (childRoutes.length) route.childRoutes = childRoutes;
21664
21665 delete route.children;
21666 }
21667
21668 return route;
21669 }
21670
21671 /**
21672 * Creates and returns a routes object from the given ReactChildren. JSX
21673 * provides a convenient way to visualize how routes in the hierarchy are
21674 * nested.
21675 *
21676 * import { Route, createRoutesFromReactChildren } from 'react-router'
21677 *
21678 * const routes = createRoutesFromReactChildren(
21679 * <Route component={App}>
21680 * <Route path="home" component={Dashboard}/>
21681 * <Route path="news" component={NewsFeed}/>
21682 * </Route>
21683 * )
21684 *
21685 * Note: This method is automatically used when you provide <Route> children
21686 * to a <Router> component.
21687 */
21688 function createRoutesFromReactChildren(children, parentRoute) {
21689 var routes = [];
21690
21691 _react2.default.Children.forEach(children, function (element) {
21692 if (_react2.default.isValidElement(element)) {
21693 // Component classes may have a static create* method.
21694 if (element.type.createRouteFromReactElement) {
21695 var route = element.type.createRouteFromReactElement(element, parentRoute);
21696
21697 if (route) routes.push(route);
21698 } else {
21699 routes.push(createRouteFromReactElement(element));
21700 }
21701 }
21702 });
21703
21704 return routes;
21705 }
21706
21707 /**
21708 * Creates and returns an array of routes from the given object which
21709 * may be a JSX route, a plain object route, or an array of either.
21710 */
21711 function createRoutes(routes) {
21712 if (isReactChildren(routes)) {
21713 routes = createRoutesFromReactChildren(routes);
21714 } else if (routes && !Array.isArray(routes)) {
21715 routes = [routes];
21716 }
21717
21718 return routes;
21719 }
21720
21721/***/ },
21722/* 262 */
21723/***/ function(module, exports, __webpack_require__) {
21724
21725 'use strict';
21726
21727 exports.__esModule = true;
21728 exports.router = exports.routes = exports.route = exports.components = exports.component = exports.location = exports.history = exports.falsy = exports.locationShape = exports.routerShape = undefined;
21729
21730 var _react = __webpack_require__(89);
21731
21732 var _deprecateObjectProperties = __webpack_require__(263);
21733
21734 var _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);
21735
21736 var _InternalPropTypes = __webpack_require__(266);
21737
21738 var InternalPropTypes = _interopRequireWildcard(_InternalPropTypes);
21739
21740 var _routerWarning = __webpack_require__(264);
21741
21742 var _routerWarning2 = _interopRequireDefault(_routerWarning);
21743
21744 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
21745
21746 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21747
21748 var func = _react.PropTypes.func;
21749 var object = _react.PropTypes.object;
21750 var shape = _react.PropTypes.shape;
21751 var string = _react.PropTypes.string;
21752 var routerShape = exports.routerShape = shape({
21753 push: func.isRequired,
21754 replace: func.isRequired,
21755 go: func.isRequired,
21756 goBack: func.isRequired,
21757 goForward: func.isRequired,
21758 setRouteLeaveHook: func.isRequired,
21759 isActive: func.isRequired
21760 });
21761
21762 var locationShape = exports.locationShape = shape({
21763 pathname: string.isRequired,
21764 search: string.isRequired,
21765 state: object,
21766 action: string.isRequired,
21767 key: string
21768 });
21769
21770 // Deprecated stuff below:
21771
21772 var falsy = exports.falsy = InternalPropTypes.falsy;
21773 var history = exports.history = InternalPropTypes.history;
21774 var location = exports.location = locationShape;
21775 var component = exports.component = InternalPropTypes.component;
21776 var components = exports.components = InternalPropTypes.components;
21777 var route = exports.route = InternalPropTypes.route;
21778 var routes = exports.routes = InternalPropTypes.routes;
21779 var router = exports.router = routerShape;
21780
21781 if ((undefined) !== 'production') {
21782 (function () {
21783 var deprecatePropType = function deprecatePropType(propType, message) {
21784 return function () {
21785 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;
21786 return propType.apply(undefined, arguments);
21787 };
21788 };
21789
21790 var deprecateInternalPropType = function deprecateInternalPropType(propType) {
21791 return deprecatePropType(propType, 'This prop type is not intended for external use, and was previously exported by mistake. These internal prop types are deprecated for external use, and will be removed in a later version.');
21792 };
21793
21794 var deprecateRenamedPropType = function deprecateRenamedPropType(propType, name) {
21795 return deprecatePropType(propType, 'The `' + name + '` prop type is now exported as `' + name + 'Shape` to avoid name conflicts. This export is deprecated and will be removed in a later version.');
21796 };
21797
21798 exports.falsy = falsy = deprecateInternalPropType(falsy);
21799 exports.history = history = deprecateInternalPropType(history);
21800 exports.component = component = deprecateInternalPropType(component);
21801 exports.components = components = deprecateInternalPropType(components);
21802 exports.route = route = deprecateInternalPropType(route);
21803 exports.routes = routes = deprecateInternalPropType(routes);
21804
21805 exports.location = location = deprecateRenamedPropType(location, 'location');
21806 exports.router = router = deprecateRenamedPropType(router, 'router');
21807 })();
21808 }
21809
21810 var defaultExport = {
21811 falsy: falsy,
21812 history: history,
21813 location: location,
21814 component: component,
21815 components: components,
21816 route: route,
21817 // For some reason, routes was never here.
21818 router: router
21819 };
21820
21821 if ((undefined) !== 'production') {
21822 defaultExport = (0, _deprecateObjectProperties2.default)(defaultExport, 'The default export from `react-router/lib/PropTypes` is deprecated. Please use the named exports instead.');
21823 }
21824
21825 exports.default = defaultExport;
21826
21827/***/ },
21828/* 263 */
21829/***/ function(module, exports, __webpack_require__) {
21830
21831 'use strict';
21832
21833 exports.__esModule = true;
21834 exports.canUseMembrane = undefined;
21835
21836 var _routerWarning = __webpack_require__(264);
21837
21838 var _routerWarning2 = _interopRequireDefault(_routerWarning);
21839
21840 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21841
21842 var canUseMembrane = exports.canUseMembrane = false;
21843
21844 // No-op by default.
21845 var deprecateObjectProperties = function deprecateObjectProperties(object) {
21846 return object;
21847 };
21848
21849 if ((undefined) !== 'production') {
21850 try {
21851 if (Object.defineProperty({}, 'x', {
21852 get: function get() {
21853 return true;
21854 }
21855 }).x) {
21856 exports.canUseMembrane = canUseMembrane = true;
21857 }
21858 /* eslint-disable no-empty */
21859 } catch (e) {}
21860 /* eslint-enable no-empty */
21861
21862 if (canUseMembrane) {
21863 deprecateObjectProperties = function deprecateObjectProperties(object, message) {
21864 // Wrap the deprecated object in a membrane to warn on property access.
21865 var membrane = {};
21866
21867 var _loop = function _loop(prop) {
21868 if (!Object.prototype.hasOwnProperty.call(object, prop)) {
21869 return 'continue';
21870 }
21871
21872 if (typeof object[prop] === 'function') {
21873 // Can't use fat arrow here because of use of arguments below.
21874 membrane[prop] = function () {
21875 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;
21876 return object[prop].apply(object, arguments);
21877 };
21878 return 'continue';
21879 }
21880
21881 // These properties are non-enumerable to prevent React dev tools from
21882 // seeing them and causing spurious warnings when accessing them. In
21883 // principle this could be done with a proxy, but support for the
21884 // ownKeys trap on proxies is not universal, even among browsers that
21885 // otherwise support proxies.
21886 Object.defineProperty(membrane, prop, {
21887 get: function get() {
21888 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, message) : void 0;
21889 return object[prop];
21890 }
21891 });
21892 };
21893
21894 for (var prop in object) {
21895 var _ret = _loop(prop);
21896
21897 if (_ret === 'continue') continue;
21898 }
21899
21900 return membrane;
21901 };
21902 }
21903 }
21904
21905 exports.default = deprecateObjectProperties;
21906
21907/***/ },
21908/* 264 */
21909/***/ function(module, exports, __webpack_require__) {
21910
21911 'use strict';
21912
21913 exports.__esModule = true;
21914 exports.default = routerWarning;
21915 exports._resetWarned = _resetWarned;
21916
21917 var _warning = __webpack_require__(265);
21918
21919 var _warning2 = _interopRequireDefault(_warning);
21920
21921 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21922
21923 var warned = {};
21924
21925 function routerWarning(falseToWarn, message) {
21926 // Only issue deprecation warnings once.
21927 if (message.indexOf('deprecated') !== -1) {
21928 if (warned[message]) {
21929 return;
21930 }
21931
21932 warned[message] = true;
21933 }
21934
21935 message = '[react-router] ' + message;
21936
21937 for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
21938 args[_key - 2] = arguments[_key];
21939 }
21940
21941 _warning2.default.apply(undefined, [falseToWarn, message].concat(args));
21942 }
21943
21944 function _resetWarned() {
21945 warned = {};
21946 }
21947
21948/***/ },
21949/* 265 */
21950/***/ function(module, exports, __webpack_require__) {
21951
21952 /**
21953 * Copyright 2014-2015, Facebook, Inc.
21954 * All rights reserved.
21955 *
21956 * This source code is licensed under the BSD-style license found in the
21957 * LICENSE file in the root directory of this source tree. An additional grant
21958 * of patent rights can be found in the PATENTS file in the same directory.
21959 */
21960
21961 'use strict';
21962
21963 /**
21964 * Similar to invariant but only logs a warning if the condition is not met.
21965 * This can be used to log issues in development environments in critical
21966 * paths. Removing the logging code for production environments will keep the
21967 * same logic and follow the same code paths.
21968 */
21969
21970 var warning = function() {};
21971
21972 if ((undefined) !== 'production') {
21973 warning = function(condition, format, args) {
21974 var len = arguments.length;
21975 args = new Array(len > 2 ? len - 2 : 0);
21976 for (var key = 2; key < len; key++) {
21977 args[key - 2] = arguments[key];
21978 }
21979 if (format === undefined) {
21980 throw new Error(
21981 '`warning(condition, format, ...args)` requires a warning ' +
21982 'message argument'
21983 );
21984 }
21985
21986 if (format.length < 10 || (/^[s\W]*$/).test(format)) {
21987 throw new Error(
21988 'The warning format should be able to uniquely identify this ' +
21989 'warning. Please, use a more descriptive format than: ' + format
21990 );
21991 }
21992
21993 if (!condition) {
21994 var argIndex = 0;
21995 var message = 'Warning: ' +
21996 format.replace(/%s/g, function() {
21997 return args[argIndex++];
21998 });
21999 if (typeof console !== 'undefined') {
22000 console.error(message);
22001 }
22002 try {
22003 // This error was thrown as a convenience so that you can use this stack
22004 // to find the callsite that caused this warning to fire.
22005 throw new Error(message);
22006 } catch(x) {}
22007 }
22008 };
22009 }
22010
22011 module.exports = warning;
22012
22013
22014/***/ },
22015/* 266 */
22016/***/ function(module, exports, __webpack_require__) {
22017
22018 'use strict';
22019
22020 exports.__esModule = true;
22021 exports.routes = exports.route = exports.components = exports.component = exports.history = undefined;
22022 exports.falsy = falsy;
22023
22024 var _react = __webpack_require__(89);
22025
22026 var func = _react.PropTypes.func;
22027 var object = _react.PropTypes.object;
22028 var arrayOf = _react.PropTypes.arrayOf;
22029 var oneOfType = _react.PropTypes.oneOfType;
22030 var element = _react.PropTypes.element;
22031 var shape = _react.PropTypes.shape;
22032 var string = _react.PropTypes.string;
22033 function falsy(props, propName, componentName) {
22034 if (props[propName]) return new Error('<' + componentName + '> should not have a "' + propName + '" prop');
22035 }
22036
22037 var history = exports.history = shape({
22038 listen: func.isRequired,
22039 push: func.isRequired,
22040 replace: func.isRequired,
22041 go: func.isRequired,
22042 goBack: func.isRequired,
22043 goForward: func.isRequired
22044 });
22045
22046 var component = exports.component = oneOfType([func, string]);
22047 var components = exports.components = oneOfType([component, object]);
22048 var route = exports.route = oneOfType([object, element]);
22049 var routes = exports.routes = oneOfType([route, arrayOf(route)]);
22050
22051/***/ },
22052/* 267 */
22053/***/ function(module, exports, __webpack_require__) {
22054
22055 'use strict';
22056
22057 exports.__esModule = true;
22058 exports.compilePattern = compilePattern;
22059 exports.matchPattern = matchPattern;
22060 exports.getParamNames = getParamNames;
22061 exports.getParams = getParams;
22062 exports.formatPattern = formatPattern;
22063
22064 var _invariant = __webpack_require__(268);
22065
22066 var _invariant2 = _interopRequireDefault(_invariant);
22067
22068 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22069
22070 function escapeRegExp(string) {
22071 return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
22072 }
22073
22074 function _compilePattern(pattern) {
22075 var regexpSource = '';
22076 var paramNames = [];
22077 var tokens = [];
22078
22079 var match = void 0,
22080 lastIndex = 0,
22081 matcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|\*\*|\*|\(|\)/g;
22082 while (match = matcher.exec(pattern)) {
22083 if (match.index !== lastIndex) {
22084 tokens.push(pattern.slice(lastIndex, match.index));
22085 regexpSource += escapeRegExp(pattern.slice(lastIndex, match.index));
22086 }
22087
22088 if (match[1]) {
22089 regexpSource += '([^/]+)';
22090 paramNames.push(match[1]);
22091 } else if (match[0] === '**') {
22092 regexpSource += '(.*)';
22093 paramNames.push('splat');
22094 } else if (match[0] === '*') {
22095 regexpSource += '(.*?)';
22096 paramNames.push('splat');
22097 } else if (match[0] === '(') {
22098 regexpSource += '(?:';
22099 } else if (match[0] === ')') {
22100 regexpSource += ')?';
22101 }
22102
22103 tokens.push(match[0]);
22104
22105 lastIndex = matcher.lastIndex;
22106 }
22107
22108 if (lastIndex !== pattern.length) {
22109 tokens.push(pattern.slice(lastIndex, pattern.length));
22110 regexpSource += escapeRegExp(pattern.slice(lastIndex, pattern.length));
22111 }
22112
22113 return {
22114 pattern: pattern,
22115 regexpSource: regexpSource,
22116 paramNames: paramNames,
22117 tokens: tokens
22118 };
22119 }
22120
22121 var CompiledPatternsCache = Object.create(null);
22122
22123 function compilePattern(pattern) {
22124 if (!CompiledPatternsCache[pattern]) CompiledPatternsCache[pattern] = _compilePattern(pattern);
22125
22126 return CompiledPatternsCache[pattern];
22127 }
22128
22129 /**
22130 * Attempts to match a pattern on the given pathname. Patterns may use
22131 * the following special characters:
22132 *
22133 * - :paramName Matches a URL segment up to the next /, ?, or #. The
22134 * captured string is considered a "param"
22135 * - () Wraps a segment of the URL that is optional
22136 * - * Consumes (non-greedy) all characters up to the next
22137 * character in the pattern, or to the end of the URL if
22138 * there is none
22139 * - ** Consumes (greedy) all characters up to the next character
22140 * in the pattern, or to the end of the URL if there is none
22141 *
22142 * The function calls callback(error, matched) when finished.
22143 * The return value is an object with the following properties:
22144 *
22145 * - remainingPathname
22146 * - paramNames
22147 * - paramValues
22148 */
22149 function matchPattern(pattern, pathname) {
22150 // Ensure pattern starts with leading slash for consistency with pathname.
22151 if (pattern.charAt(0) !== '/') {
22152 pattern = '/' + pattern;
22153 }
22154
22155 var _compilePattern2 = compilePattern(pattern);
22156
22157 var regexpSource = _compilePattern2.regexpSource;
22158 var paramNames = _compilePattern2.paramNames;
22159 var tokens = _compilePattern2.tokens;
22160
22161
22162 if (pattern.charAt(pattern.length - 1) !== '/') {
22163 regexpSource += '/?'; // Allow optional path separator at end.
22164 }
22165
22166 // Special-case patterns like '*' for catch-all routes.
22167 if (tokens[tokens.length - 1] === '*') {
22168 regexpSource += '$';
22169 }
22170
22171 var match = pathname.match(new RegExp('^' + regexpSource, 'i'));
22172 if (match == null) {
22173 return null;
22174 }
22175
22176 var matchedPath = match[0];
22177 var remainingPathname = pathname.substr(matchedPath.length);
22178
22179 if (remainingPathname) {
22180 // Require that the match ends at a path separator, if we didn't match
22181 // the full path, so any remaining pathname is a new path segment.
22182 if (matchedPath.charAt(matchedPath.length - 1) !== '/') {
22183 return null;
22184 }
22185
22186 // If there is a remaining pathname, treat the path separator as part of
22187 // the remaining pathname for properly continuing the match.
22188 remainingPathname = '/' + remainingPathname;
22189 }
22190
22191 return {
22192 remainingPathname: remainingPathname,
22193 paramNames: paramNames,
22194 paramValues: match.slice(1).map(function (v) {
22195 return v && decodeURIComponent(v);
22196 })
22197 };
22198 }
22199
22200 function getParamNames(pattern) {
22201 return compilePattern(pattern).paramNames;
22202 }
22203
22204 function getParams(pattern, pathname) {
22205 var match = matchPattern(pattern, pathname);
22206 if (!match) {
22207 return null;
22208 }
22209
22210 var paramNames = match.paramNames;
22211 var paramValues = match.paramValues;
22212
22213 var params = {};
22214
22215 paramNames.forEach(function (paramName, index) {
22216 params[paramName] = paramValues[index];
22217 });
22218
22219 return params;
22220 }
22221
22222 /**
22223 * Returns a version of the given pattern with params interpolated. Throws
22224 * if there is a dynamic segment of the pattern for which there is no param.
22225 */
22226 function formatPattern(pattern, params) {
22227 params = params || {};
22228
22229 var _compilePattern3 = compilePattern(pattern);
22230
22231 var tokens = _compilePattern3.tokens;
22232
22233 var parenCount = 0,
22234 pathname = '',
22235 splatIndex = 0;
22236
22237 var token = void 0,
22238 paramName = void 0,
22239 paramValue = void 0;
22240 for (var i = 0, len = tokens.length; i < len; ++i) {
22241 token = tokens[i];
22242
22243 if (token === '*' || token === '**') {
22244 paramValue = Array.isArray(params.splat) ? params.splat[splatIndex++] : params.splat;
22245
22246 !(paramValue != null || parenCount > 0) ? (undefined) !== 'production' ? (0, _invariant2.default)(false, 'Missing splat #%s for path "%s"', splatIndex, pattern) : (0, _invariant2.default)(false) : void 0;
22247
22248 if (paramValue != null) pathname += encodeURI(paramValue);
22249 } else if (token === '(') {
22250 parenCount += 1;
22251 } else if (token === ')') {
22252 parenCount -= 1;
22253 } else if (token.charAt(0) === ':') {
22254 paramName = token.substring(1);
22255 paramValue = params[paramName];
22256
22257 !(paramValue != null || parenCount > 0) ? (undefined) !== 'production' ? (0, _invariant2.default)(false, 'Missing "%s" parameter for path "%s"', paramName, pattern) : (0, _invariant2.default)(false) : void 0;
22258
22259 if (paramValue != null) pathname += encodeURIComponent(paramValue);
22260 } else {
22261 pathname += token;
22262 }
22263 }
22264
22265 return pathname.replace(/\/+/g, '/');
22266 }
22267
22268/***/ },
22269/* 268 */
22270/***/ function(module, exports, __webpack_require__) {
22271
22272 /**
22273 * Copyright 2013-2015, Facebook, Inc.
22274 * All rights reserved.
22275 *
22276 * This source code is licensed under the BSD-style license found in the
22277 * LICENSE file in the root directory of this source tree. An additional grant
22278 * of patent rights can be found in the PATENTS file in the same directory.
22279 */
22280
22281 'use strict';
22282
22283 /**
22284 * Use invariant() to assert state which your program assumes to be true.
22285 *
22286 * Provide sprintf-style format (only %s is supported) and arguments
22287 * to provide information about what broke and what you were
22288 * expecting.
22289 *
22290 * The invariant message will be stripped in production, but the invariant
22291 * will remain to ensure logic does not differ in production.
22292 */
22293
22294 var invariant = function(condition, format, a, b, c, d, e, f) {
22295 if ((undefined) !== 'production') {
22296 if (format === undefined) {
22297 throw new Error('invariant requires an error message argument');
22298 }
22299 }
22300
22301 if (!condition) {
22302 var error;
22303 if (format === undefined) {
22304 error = new Error(
22305 'Minified exception occurred; use the non-minified dev environment ' +
22306 'for the full error message and additional helpful warnings.'
22307 );
22308 } else {
22309 var args = [a, b, c, d, e, f];
22310 var argIndex = 0;
22311 error = new Error(
22312 format.replace(/%s/g, function() { return args[argIndex++]; })
22313 );
22314 error.name = 'Invariant Violation';
22315 }
22316
22317 error.framesToPop = 1; // we don't care about invariant's own frame
22318 throw error;
22319 }
22320 };
22321
22322 module.exports = invariant;
22323
22324
22325/***/ },
22326/* 269 */
22327/***/ function(module, exports, __webpack_require__) {
22328
22329 'use strict';
22330
22331 exports.__esModule = true;
22332
22333 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
22334
22335 var _createHashHistory = __webpack_require__(270);
22336
22337 var _createHashHistory2 = _interopRequireDefault(_createHashHistory);
22338
22339 var _useQueries = __webpack_require__(286);
22340
22341 var _useQueries2 = _interopRequireDefault(_useQueries);
22342
22343 var _invariant = __webpack_require__(268);
22344
22345 var _invariant2 = _interopRequireDefault(_invariant);
22346
22347 var _react = __webpack_require__(89);
22348
22349 var _react2 = _interopRequireDefault(_react);
22350
22351 var _createTransitionManager = __webpack_require__(289);
22352
22353 var _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);
22354
22355 var _InternalPropTypes = __webpack_require__(266);
22356
22357 var _RouterContext = __webpack_require__(297);
22358
22359 var _RouterContext2 = _interopRequireDefault(_RouterContext);
22360
22361 var _RouteUtils = __webpack_require__(261);
22362
22363 var _RouterUtils = __webpack_require__(299);
22364
22365 var _routerWarning = __webpack_require__(264);
22366
22367 var _routerWarning2 = _interopRequireDefault(_routerWarning);
22368
22369 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22370
22371 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
22372
22373 function isDeprecatedHistory(history) {
22374 return !history || !history.__v2_compatible__;
22375 }
22376
22377 /* istanbul ignore next: sanity check */
22378 function isUnsupportedHistory(history) {
22379 // v3 histories expose getCurrentLocation, but aren't currently supported.
22380 return history && history.getCurrentLocation;
22381 }
22382
22383 var _React$PropTypes = _react2.default.PropTypes;
22384 var func = _React$PropTypes.func;
22385 var object = _React$PropTypes.object;
22386
22387 /**
22388 * A <Router> is a high-level API for automatically setting up
22389 * a router that renders a <RouterContext> with all the props
22390 * it needs each time the URL changes.
22391 */
22392
22393 var Router = _react2.default.createClass({
22394 displayName: 'Router',
22395
22396
22397 propTypes: {
22398 history: object,
22399 children: _InternalPropTypes.routes,
22400 routes: _InternalPropTypes.routes, // alias for children
22401 render: func,
22402 createElement: func,
22403 onError: func,
22404 onUpdate: func,
22405
22406 // Deprecated:
22407 parseQueryString: func,
22408 stringifyQuery: func,
22409
22410 // PRIVATE: For client-side rehydration of server match.
22411 matchContext: object
22412 },
22413
22414 getDefaultProps: function getDefaultProps() {
22415 return {
22416 render: function render(props) {
22417 return _react2.default.createElement(_RouterContext2.default, props);
22418 }
22419 };
22420 },
22421 getInitialState: function getInitialState() {
22422 return {
22423 location: null,
22424 routes: null,
22425 params: null,
22426 components: null
22427 };
22428 },
22429 handleError: function handleError(error) {
22430 if (this.props.onError) {
22431 this.props.onError.call(this, error);
22432 } else {
22433 // Throw errors by default so we don't silently swallow them!
22434 throw error; // This error probably occurred in getChildRoutes or getComponents.
22435 }
22436 },
22437 componentWillMount: function componentWillMount() {
22438 var _this = this;
22439
22440 var _props = this.props;
22441 var parseQueryString = _props.parseQueryString;
22442 var stringifyQuery = _props.stringifyQuery;
22443
22444 (undefined) !== 'production' ? (0, _routerWarning2.default)(!(parseQueryString || stringifyQuery), '`parseQueryString` and `stringifyQuery` are deprecated. Please create a custom history. http://tiny.cc/router-customquerystring') : void 0;
22445
22446 var _createRouterObjects = this.createRouterObjects();
22447
22448 var history = _createRouterObjects.history;
22449 var transitionManager = _createRouterObjects.transitionManager;
22450 var router = _createRouterObjects.router;
22451
22452
22453 this._unlisten = transitionManager.listen(function (error, state) {
22454 if (error) {
22455 _this.handleError(error);
22456 } else {
22457 _this.setState(state, _this.props.onUpdate);
22458 }
22459 });
22460
22461 this.history = history;
22462 this.router = router;
22463 },
22464 createRouterObjects: function createRouterObjects() {
22465 var matchContext = this.props.matchContext;
22466
22467 if (matchContext) {
22468 return matchContext;
22469 }
22470
22471 var history = this.props.history;
22472 var _props2 = this.props;
22473 var routes = _props2.routes;
22474 var children = _props2.children;
22475
22476
22477 !!isUnsupportedHistory(history) ? (undefined) !== 'production' ? (0, _invariant2.default)(false, 'You have provided a history object created with history v3.x. ' + 'This version of React Router is not compatible with v3 history ' + 'objects. Please use history v2.x instead.') : (0, _invariant2.default)(false) : void 0;
22478
22479 if (isDeprecatedHistory(history)) {
22480 history = this.wrapDeprecatedHistory(history);
22481 }
22482
22483 var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes || children));
22484 var router = (0, _RouterUtils.createRouterObject)(history, transitionManager);
22485 var routingHistory = (0, _RouterUtils.createRoutingHistory)(history, transitionManager);
22486
22487 return { history: routingHistory, transitionManager: transitionManager, router: router };
22488 },
22489 wrapDeprecatedHistory: function wrapDeprecatedHistory(history) {
22490 var _props3 = this.props;
22491 var parseQueryString = _props3.parseQueryString;
22492 var stringifyQuery = _props3.stringifyQuery;
22493
22494
22495 var createHistory = void 0;
22496 if (history) {
22497 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, 'It appears you have provided a deprecated history object to `<Router/>`, please use a history provided by ' + 'React Router with `import { browserHistory } from \'react-router\'` or `import { hashHistory } from \'react-router\'`. ' + 'If you are using a custom history please create it with `useRouterHistory`, see http://tiny.cc/router-usinghistory for details.') : void 0;
22498 createHistory = function createHistory() {
22499 return history;
22500 };
22501 } else {
22502 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, '`Router` no longer defaults the history prop to hash history. Please use the `hashHistory` singleton instead. http://tiny.cc/router-defaulthistory') : void 0;
22503 createHistory = _createHashHistory2.default;
22504 }
22505
22506 return (0, _useQueries2.default)(createHistory)({ parseQueryString: parseQueryString, stringifyQuery: stringifyQuery });
22507 },
22508
22509
22510 /* istanbul ignore next: sanity check */
22511 componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
22512 (undefined) !== 'production' ? (0, _routerWarning2.default)(nextProps.history === this.props.history, 'You cannot change <Router history>; it will be ignored') : void 0;
22513
22514 (undefined) !== 'production' ? (0, _routerWarning2.default)((nextProps.routes || nextProps.children) === (this.props.routes || this.props.children), 'You cannot change <Router routes>; it will be ignored') : void 0;
22515 },
22516 componentWillUnmount: function componentWillUnmount() {
22517 if (this._unlisten) this._unlisten();
22518 },
22519 render: function render() {
22520 var _state = this.state;
22521 var location = _state.location;
22522 var routes = _state.routes;
22523 var params = _state.params;
22524 var components = _state.components;
22525 var _props4 = this.props;
22526 var createElement = _props4.createElement;
22527 var render = _props4.render;
22528
22529 var props = _objectWithoutProperties(_props4, ['createElement', 'render']);
22530
22531 if (location == null) return null; // Async match
22532
22533 // Only forward non-Router-specific props to routing context, as those are
22534 // the only ones that might be custom routing context props.
22535 Object.keys(Router.propTypes).forEach(function (propType) {
22536 return delete props[propType];
22537 });
22538
22539 return render(_extends({}, props, {
22540 history: this.history,
22541 router: this.router,
22542 location: location,
22543 routes: routes,
22544 params: params,
22545 components: components,
22546 createElement: createElement
22547 }));
22548 }
22549 });
22550
22551 exports.default = Router;
22552 module.exports = exports['default'];
22553
22554/***/ },
22555/* 270 */
22556/***/ function(module, exports, __webpack_require__) {
22557
22558 'use strict';
22559
22560 exports.__esModule = true;
22561
22562 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
22563
22564 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
22565
22566 var _warning = __webpack_require__(271);
22567
22568 var _warning2 = _interopRequireDefault(_warning);
22569
22570 var _invariant = __webpack_require__(268);
22571
22572 var _invariant2 = _interopRequireDefault(_invariant);
22573
22574 var _Actions = __webpack_require__(272);
22575
22576 var _PathUtils = __webpack_require__(273);
22577
22578 var _ExecutionEnvironment = __webpack_require__(274);
22579
22580 var _DOMUtils = __webpack_require__(275);
22581
22582 var _DOMStateStorage = __webpack_require__(276);
22583
22584 var _createDOMHistory = __webpack_require__(277);
22585
22586 var _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);
22587
22588 function isAbsolutePath(path) {
22589 return typeof path === 'string' && path.charAt(0) === '/';
22590 }
22591
22592 function ensureSlash() {
22593 var path = _DOMUtils.getHashPath();
22594
22595 if (isAbsolutePath(path)) return true;
22596
22597 _DOMUtils.replaceHashPath('/' + path);
22598
22599 return false;
22600 }
22601
22602 function addQueryStringValueToPath(path, key, value) {
22603 return path + (path.indexOf('?') === -1 ? '?' : '&') + (key + '=' + value);
22604 }
22605
22606 function stripQueryStringValueFromPath(path, key) {
22607 return path.replace(new RegExp('[?&]?' + key + '=[a-zA-Z0-9]+'), '');
22608 }
22609
22610 function getQueryStringValueFromPath(path, key) {
22611 var match = path.match(new RegExp('\\?.*?\\b' + key + '=(.+?)\\b'));
22612 return match && match[1];
22613 }
22614
22615 var DefaultQueryKey = '_k';
22616
22617 function createHashHistory() {
22618 var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
22619
22620 !_ExecutionEnvironment.canUseDOM ? (undefined) !== 'production' ? _invariant2['default'](false, 'Hash history needs a DOM') : _invariant2['default'](false) : undefined;
22621
22622 var queryKey = options.queryKey;
22623
22624 if (queryKey === undefined || !!queryKey) queryKey = typeof queryKey === 'string' ? queryKey : DefaultQueryKey;
22625
22626 function getCurrentLocation() {
22627 var path = _DOMUtils.getHashPath();
22628
22629 var key = undefined,
22630 state = undefined;
22631 if (queryKey) {
22632 key = getQueryStringValueFromPath(path, queryKey);
22633 path = stripQueryStringValueFromPath(path, queryKey);
22634
22635 if (key) {
22636 state = _DOMStateStorage.readState(key);
22637 } else {
22638 state = null;
22639 key = history.createKey();
22640 _DOMUtils.replaceHashPath(addQueryStringValueToPath(path, queryKey, key));
22641 }
22642 } else {
22643 key = state = null;
22644 }
22645
22646 var location = _PathUtils.parsePath(path);
22647
22648 return history.createLocation(_extends({}, location, { state: state }), undefined, key);
22649 }
22650
22651 function startHashChangeListener(_ref) {
22652 var transitionTo = _ref.transitionTo;
22653
22654 function hashChangeListener() {
22655 if (!ensureSlash()) return; // Always make sure hashes are preceeded with a /.
22656
22657 transitionTo(getCurrentLocation());
22658 }
22659
22660 ensureSlash();
22661 _DOMUtils.addEventListener(window, 'hashchange', hashChangeListener);
22662
22663 return function () {
22664 _DOMUtils.removeEventListener(window, 'hashchange', hashChangeListener);
22665 };
22666 }
22667
22668 function finishTransition(location) {
22669 var basename = location.basename;
22670 var pathname = location.pathname;
22671 var search = location.search;
22672 var state = location.state;
22673 var action = location.action;
22674 var key = location.key;
22675
22676 if (action === _Actions.POP) return; // Nothing to do.
22677
22678 var path = (basename || '') + pathname + search;
22679
22680 if (queryKey) {
22681 path = addQueryStringValueToPath(path, queryKey, key);
22682 _DOMStateStorage.saveState(key, state);
22683 } else {
22684 // Drop key and state.
22685 location.key = location.state = null;
22686 }
22687
22688 var currentHash = _DOMUtils.getHashPath();
22689
22690 if (action === _Actions.PUSH) {
22691 if (currentHash !== path) {
22692 window.location.hash = path;
22693 } else {
22694 (undefined) !== 'production' ? _warning2['default'](false, 'You cannot PUSH the same path using hash history') : undefined;
22695 }
22696 } else if (currentHash !== path) {
22697 // REPLACE
22698 _DOMUtils.replaceHashPath(path);
22699 }
22700 }
22701
22702 var history = _createDOMHistory2['default'](_extends({}, options, {
22703 getCurrentLocation: getCurrentLocation,
22704 finishTransition: finishTransition,
22705 saveState: _DOMStateStorage.saveState
22706 }));
22707
22708 var listenerCount = 0,
22709 stopHashChangeListener = undefined;
22710
22711 function listenBefore(listener) {
22712 if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);
22713
22714 var unlisten = history.listenBefore(listener);
22715
22716 return function () {
22717 unlisten();
22718
22719 if (--listenerCount === 0) stopHashChangeListener();
22720 };
22721 }
22722
22723 function listen(listener) {
22724 if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);
22725
22726 var unlisten = history.listen(listener);
22727
22728 return function () {
22729 unlisten();
22730
22731 if (--listenerCount === 0) stopHashChangeListener();
22732 };
22733 }
22734
22735 function push(location) {
22736 (undefined) !== 'production' ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;
22737
22738 history.push(location);
22739 }
22740
22741 function replace(location) {
22742 (undefined) !== 'production' ? _warning2['default'](queryKey || location.state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;
22743
22744 history.replace(location);
22745 }
22746
22747 var goIsSupportedWithoutReload = _DOMUtils.supportsGoWithoutReloadUsingHash();
22748
22749 function go(n) {
22750 (undefined) !== 'production' ? _warning2['default'](goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : undefined;
22751
22752 history.go(n);
22753 }
22754
22755 function createHref(path) {
22756 return '#' + history.createHref(path);
22757 }
22758
22759 // deprecated
22760 function registerTransitionHook(hook) {
22761 if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history);
22762
22763 history.registerTransitionHook(hook);
22764 }
22765
22766 // deprecated
22767 function unregisterTransitionHook(hook) {
22768 history.unregisterTransitionHook(hook);
22769
22770 if (--listenerCount === 0) stopHashChangeListener();
22771 }
22772
22773 // deprecated
22774 function pushState(state, path) {
22775 (undefined) !== 'production' ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;
22776
22777 history.pushState(state, path);
22778 }
22779
22780 // deprecated
22781 function replaceState(state, path) {
22782 (undefined) !== 'production' ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined;
22783
22784 history.replaceState(state, path);
22785 }
22786
22787 return _extends({}, history, {
22788 listenBefore: listenBefore,
22789 listen: listen,
22790 push: push,
22791 replace: replace,
22792 go: go,
22793 createHref: createHref,
22794
22795 registerTransitionHook: registerTransitionHook, // deprecated - warning is in createHistory
22796 unregisterTransitionHook: unregisterTransitionHook, // deprecated - warning is in createHistory
22797 pushState: pushState, // deprecated - warning is in createHistory
22798 replaceState: replaceState // deprecated - warning is in createHistory
22799 });
22800 }
22801
22802 exports['default'] = createHashHistory;
22803 module.exports = exports['default'];
22804
22805/***/ },
22806/* 271 */
22807/***/ function(module, exports, __webpack_require__) {
22808
22809 /**
22810 * Copyright 2014-2015, Facebook, Inc.
22811 * All rights reserved.
22812 *
22813 * This source code is licensed under the BSD-style license found in the
22814 * LICENSE file in the root directory of this source tree. An additional grant
22815 * of patent rights can be found in the PATENTS file in the same directory.
22816 */
22817
22818 'use strict';
22819
22820 /**
22821 * Similar to invariant but only logs a warning if the condition is not met.
22822 * This can be used to log issues in development environments in critical
22823 * paths. Removing the logging code for production environments will keep the
22824 * same logic and follow the same code paths.
22825 */
22826
22827 var warning = function() {};
22828
22829 if ((undefined) !== 'production') {
22830 warning = function(condition, format, args) {
22831 var len = arguments.length;
22832 args = new Array(len > 2 ? len - 2 : 0);
22833 for (var key = 2; key < len; key++) {
22834 args[key - 2] = arguments[key];
22835 }
22836 if (format === undefined) {
22837 throw new Error(
22838 '`warning(condition, format, ...args)` requires a warning ' +
22839 'message argument'
22840 );
22841 }
22842
22843 if (format.length < 10 || (/^[s\W]*$/).test(format)) {
22844 throw new Error(
22845 'The warning format should be able to uniquely identify this ' +
22846 'warning. Please, use a more descriptive format than: ' + format
22847 );
22848 }
22849
22850 if (!condition) {
22851 var argIndex = 0;
22852 var message = 'Warning: ' +
22853 format.replace(/%s/g, function() {
22854 return args[argIndex++];
22855 });
22856 if (typeof console !== 'undefined') {
22857 console.error(message);
22858 }
22859 try {
22860 // This error was thrown as a convenience so that you can use this stack
22861 // to find the callsite that caused this warning to fire.
22862 throw new Error(message);
22863 } catch(x) {}
22864 }
22865 };
22866 }
22867
22868 module.exports = warning;
22869
22870
22871/***/ },
22872/* 272 */
22873/***/ function(module, exports) {
22874
22875 /**
22876 * Indicates that navigation was caused by a call to history.push.
22877 */
22878 'use strict';
22879
22880 exports.__esModule = true;
22881 var PUSH = 'PUSH';
22882
22883 exports.PUSH = PUSH;
22884 /**
22885 * Indicates that navigation was caused by a call to history.replace.
22886 */
22887 var REPLACE = 'REPLACE';
22888
22889 exports.REPLACE = REPLACE;
22890 /**
22891 * Indicates that navigation was caused by some other action such
22892 * as using a browser's back/forward buttons and/or manually manipulating
22893 * the URL in a browser's location bar. This is the default.
22894 *
22895 * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate
22896 * for more information.
22897 */
22898 var POP = 'POP';
22899
22900 exports.POP = POP;
22901 exports['default'] = {
22902 PUSH: PUSH,
22903 REPLACE: REPLACE,
22904 POP: POP
22905 };
22906
22907/***/ },
22908/* 273 */
22909/***/ function(module, exports, __webpack_require__) {
22910
22911 'use strict';
22912
22913 exports.__esModule = true;
22914 exports.extractPath = extractPath;
22915 exports.parsePath = parsePath;
22916
22917 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
22918
22919 var _warning = __webpack_require__(271);
22920
22921 var _warning2 = _interopRequireDefault(_warning);
22922
22923 function extractPath(string) {
22924 var match = string.match(/^https?:\/\/[^\/]*/);
22925
22926 if (match == null) return string;
22927
22928 return string.substring(match[0].length);
22929 }
22930
22931 function parsePath(path) {
22932 var pathname = extractPath(path);
22933 var search = '';
22934 var hash = '';
22935
22936 (undefined) !== 'production' ? _warning2['default'](path === pathname, 'A path must be pathname + search + hash only, not a fully qualified URL like "%s"', path) : undefined;
22937
22938 var hashIndex = pathname.indexOf('#');
22939 if (hashIndex !== -1) {
22940 hash = pathname.substring(hashIndex);
22941 pathname = pathname.substring(0, hashIndex);
22942 }
22943
22944 var searchIndex = pathname.indexOf('?');
22945 if (searchIndex !== -1) {
22946 search = pathname.substring(searchIndex);
22947 pathname = pathname.substring(0, searchIndex);
22948 }
22949
22950 if (pathname === '') pathname = '/';
22951
22952 return {
22953 pathname: pathname,
22954 search: search,
22955 hash: hash
22956 };
22957 }
22958
22959/***/ },
22960/* 274 */
22961/***/ function(module, exports) {
22962
22963 'use strict';
22964
22965 exports.__esModule = true;
22966 var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
22967 exports.canUseDOM = canUseDOM;
22968
22969/***/ },
22970/* 275 */
22971/***/ function(module, exports) {
22972
22973 'use strict';
22974
22975 exports.__esModule = true;
22976 exports.addEventListener = addEventListener;
22977 exports.removeEventListener = removeEventListener;
22978 exports.getHashPath = getHashPath;
22979 exports.replaceHashPath = replaceHashPath;
22980 exports.getWindowPath = getWindowPath;
22981 exports.go = go;
22982 exports.getUserConfirmation = getUserConfirmation;
22983 exports.supportsHistory = supportsHistory;
22984 exports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash;
22985
22986 function addEventListener(node, event, listener) {
22987 if (node.addEventListener) {
22988 node.addEventListener(event, listener, false);
22989 } else {
22990 node.attachEvent('on' + event, listener);
22991 }
22992 }
22993
22994 function removeEventListener(node, event, listener) {
22995 if (node.removeEventListener) {
22996 node.removeEventListener(event, listener, false);
22997 } else {
22998 node.detachEvent('on' + event, listener);
22999 }
23000 }
23001
23002 function getHashPath() {
23003 // We can't use window.location.hash here because it's not
23004 // consistent across browsers - Firefox will pre-decode it!
23005 return window.location.href.split('#')[1] || '';
23006 }
23007
23008 function replaceHashPath(path) {
23009 window.location.replace(window.location.pathname + window.location.search + '#' + path);
23010 }
23011
23012 function getWindowPath() {
23013 return window.location.pathname + window.location.search + window.location.hash;
23014 }
23015
23016 function go(n) {
23017 if (n) window.history.go(n);
23018 }
23019
23020 function getUserConfirmation(message, callback) {
23021 callback(window.confirm(message));
23022 }
23023
23024 /**
23025 * Returns true if the HTML5 history API is supported. Taken from Modernizr.
23026 *
23027 * https://github.com/Modernizr/Modernizr/blob/master/LICENSE
23028 * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js
23029 * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586
23030 */
23031
23032 function supportsHistory() {
23033 var ua = navigator.userAgent;
23034 if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {
23035 return false;
23036 }
23037 return window.history && 'pushState' in window.history;
23038 }
23039
23040 /**
23041 * Returns false if using go(n) with hash history causes a full page reload.
23042 */
23043
23044 function supportsGoWithoutReloadUsingHash() {
23045 var ua = navigator.userAgent;
23046 return ua.indexOf('Firefox') === -1;
23047 }
23048
23049/***/ },
23050/* 276 */
23051/***/ function(module, exports, __webpack_require__) {
23052
23053 /*eslint-disable no-empty */
23054 'use strict';
23055
23056 exports.__esModule = true;
23057 exports.saveState = saveState;
23058 exports.readState = readState;
23059
23060 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
23061
23062 var _warning = __webpack_require__(271);
23063
23064 var _warning2 = _interopRequireDefault(_warning);
23065
23066 var KeyPrefix = '@@History/';
23067 var QuotaExceededErrors = ['QuotaExceededError', 'QUOTA_EXCEEDED_ERR'];
23068
23069 var SecurityError = 'SecurityError';
23070
23071 function createKey(key) {
23072 return KeyPrefix + key;
23073 }
23074
23075 function saveState(key, state) {
23076 try {
23077 if (state == null) {
23078 window.sessionStorage.removeItem(createKey(key));
23079 } else {
23080 window.sessionStorage.setItem(createKey(key), JSON.stringify(state));
23081 }
23082 } catch (error) {
23083 if (error.name === SecurityError) {
23084 // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any
23085 // attempt to access window.sessionStorage.
23086 (undefined) !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined;
23087
23088 return;
23089 }
23090
23091 if (QuotaExceededErrors.indexOf(error.name) >= 0 && window.sessionStorage.length === 0) {
23092 // Safari "private mode" throws QuotaExceededError.
23093 (undefined) !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined;
23094
23095 return;
23096 }
23097
23098 throw error;
23099 }
23100 }
23101
23102 function readState(key) {
23103 var json = undefined;
23104 try {
23105 json = window.sessionStorage.getItem(createKey(key));
23106 } catch (error) {
23107 if (error.name === SecurityError) {
23108 // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any
23109 // attempt to access window.sessionStorage.
23110 (undefined) !== 'production' ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined;
23111
23112 return null;
23113 }
23114 }
23115
23116 if (json) {
23117 try {
23118 return JSON.parse(json);
23119 } catch (error) {
23120 // Ignore invalid JSON.
23121 }
23122 }
23123
23124 return null;
23125 }
23126
23127/***/ },
23128/* 277 */
23129/***/ function(module, exports, __webpack_require__) {
23130
23131 'use strict';
23132
23133 exports.__esModule = true;
23134
23135 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
23136
23137 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
23138
23139 var _invariant = __webpack_require__(268);
23140
23141 var _invariant2 = _interopRequireDefault(_invariant);
23142
23143 var _ExecutionEnvironment = __webpack_require__(274);
23144
23145 var _DOMUtils = __webpack_require__(275);
23146
23147 var _createHistory = __webpack_require__(278);
23148
23149 var _createHistory2 = _interopRequireDefault(_createHistory);
23150
23151 function createDOMHistory(options) {
23152 var history = _createHistory2['default'](_extends({
23153 getUserConfirmation: _DOMUtils.getUserConfirmation
23154 }, options, {
23155 go: _DOMUtils.go
23156 }));
23157
23158 function listen(listener) {
23159 !_ExecutionEnvironment.canUseDOM ? (undefined) !== 'production' ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined;
23160
23161 return history.listen(listener);
23162 }
23163
23164 return _extends({}, history, {
23165 listen: listen
23166 });
23167 }
23168
23169 exports['default'] = createDOMHistory;
23170 module.exports = exports['default'];
23171
23172/***/ },
23173/* 278 */
23174/***/ function(module, exports, __webpack_require__) {
23175
23176 'use strict';
23177
23178 exports.__esModule = true;
23179
23180 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
23181
23182 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
23183
23184 var _warning = __webpack_require__(271);
23185
23186 var _warning2 = _interopRequireDefault(_warning);
23187
23188 var _deepEqual = __webpack_require__(279);
23189
23190 var _deepEqual2 = _interopRequireDefault(_deepEqual);
23191
23192 var _PathUtils = __webpack_require__(273);
23193
23194 var _AsyncUtils = __webpack_require__(282);
23195
23196 var _Actions = __webpack_require__(272);
23197
23198 var _createLocation2 = __webpack_require__(283);
23199
23200 var _createLocation3 = _interopRequireDefault(_createLocation2);
23201
23202 var _runTransitionHook = __webpack_require__(284);
23203
23204 var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
23205
23206 var _deprecate = __webpack_require__(285);
23207
23208 var _deprecate2 = _interopRequireDefault(_deprecate);
23209
23210 function createRandomKey(length) {
23211 return Math.random().toString(36).substr(2, length);
23212 }
23213
23214 function locationsAreEqual(a, b) {
23215 return a.pathname === b.pathname && a.search === b.search &&
23216 //a.action === b.action && // Different action !== location change.
23217 a.key === b.key && _deepEqual2['default'](a.state, b.state);
23218 }
23219
23220 var DefaultKeyLength = 6;
23221
23222 function createHistory() {
23223 var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
23224 var getCurrentLocation = options.getCurrentLocation;
23225 var finishTransition = options.finishTransition;
23226 var saveState = options.saveState;
23227 var go = options.go;
23228 var getUserConfirmation = options.getUserConfirmation;
23229 var keyLength = options.keyLength;
23230
23231 if (typeof keyLength !== 'number') keyLength = DefaultKeyLength;
23232
23233 var transitionHooks = [];
23234
23235 function listenBefore(hook) {
23236 transitionHooks.push(hook);
23237
23238 return function () {
23239 transitionHooks = transitionHooks.filter(function (item) {
23240 return item !== hook;
23241 });
23242 };
23243 }
23244
23245 var allKeys = [];
23246 var changeListeners = [];
23247 var location = undefined;
23248
23249 function getCurrent() {
23250 if (pendingLocation && pendingLocation.action === _Actions.POP) {
23251 return allKeys.indexOf(pendingLocation.key);
23252 } else if (location) {
23253 return allKeys.indexOf(location.key);
23254 } else {
23255 return -1;
23256 }
23257 }
23258
23259 function updateLocation(newLocation) {
23260 var current = getCurrent();
23261
23262 location = newLocation;
23263
23264 if (location.action === _Actions.PUSH) {
23265 allKeys = [].concat(allKeys.slice(0, current + 1), [location.key]);
23266 } else if (location.action === _Actions.REPLACE) {
23267 allKeys[current] = location.key;
23268 }
23269
23270 changeListeners.forEach(function (listener) {
23271 listener(location);
23272 });
23273 }
23274
23275 function listen(listener) {
23276 changeListeners.push(listener);
23277
23278 if (location) {
23279 listener(location);
23280 } else {
23281 var _location = getCurrentLocation();
23282 allKeys = [_location.key];
23283 updateLocation(_location);
23284 }
23285
23286 return function () {
23287 changeListeners = changeListeners.filter(function (item) {
23288 return item !== listener;
23289 });
23290 };
23291 }
23292
23293 function confirmTransitionTo(location, callback) {
23294 _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) {
23295 _runTransitionHook2['default'](transitionHooks[index], location, function (result) {
23296 if (result != null) {
23297 done(result);
23298 } else {
23299 next();
23300 }
23301 });
23302 }, function (message) {
23303 if (getUserConfirmation && typeof message === 'string') {
23304 getUserConfirmation(message, function (ok) {
23305 callback(ok !== false);
23306 });
23307 } else {
23308 callback(message !== false);
23309 }
23310 });
23311 }
23312
23313 var pendingLocation = undefined;
23314
23315 function transitionTo(nextLocation) {
23316 if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do.
23317
23318 pendingLocation = nextLocation;
23319
23320 confirmTransitionTo(nextLocation, function (ok) {
23321 if (pendingLocation !== nextLocation) return; // Transition was interrupted.
23322
23323 if (ok) {
23324 // treat PUSH to current path like REPLACE to be consistent with browsers
23325 if (nextLocation.action === _Actions.PUSH) {
23326 var prevPath = createPath(location);
23327 var nextPath = createPath(nextLocation);
23328
23329 if (nextPath === prevPath && _deepEqual2['default'](location.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;
23330 }
23331
23332 if (finishTransition(nextLocation) !== false) updateLocation(nextLocation);
23333 } else if (location && nextLocation.action === _Actions.POP) {
23334 var prevIndex = allKeys.indexOf(location.key);
23335 var nextIndex = allKeys.indexOf(nextLocation.key);
23336
23337 if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL.
23338 }
23339 });
23340 }
23341
23342 function push(location) {
23343 transitionTo(createLocation(location, _Actions.PUSH, createKey()));
23344 }
23345
23346 function replace(location) {
23347 transitionTo(createLocation(location, _Actions.REPLACE, createKey()));
23348 }
23349
23350 function goBack() {
23351 go(-1);
23352 }
23353
23354 function goForward() {
23355 go(1);
23356 }
23357
23358 function createKey() {
23359 return createRandomKey(keyLength);
23360 }
23361
23362 function createPath(location) {
23363 if (location == null || typeof location === 'string') return location;
23364
23365 var pathname = location.pathname;
23366 var search = location.search;
23367 var hash = location.hash;
23368
23369 var result = pathname;
23370
23371 if (search) result += search;
23372
23373 if (hash) result += hash;
23374
23375 return result;
23376 }
23377
23378 function createHref(location) {
23379 return createPath(location);
23380 }
23381
23382 function createLocation(location, action) {
23383 var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];
23384
23385 if (typeof action === 'object') {
23386 (undefined) !== 'production' ? _warning2['default'](false, 'The state (2nd) argument to history.createLocation is deprecated; use a ' + 'location descriptor instead') : undefined;
23387
23388 if (typeof location === 'string') location = _PathUtils.parsePath(location);
23389
23390 location = _extends({}, location, { state: action });
23391
23392 action = key;
23393 key = arguments[3] || createKey();
23394 }
23395
23396 return _createLocation3['default'](location, action, key);
23397 }
23398
23399 // deprecated
23400 function setState(state) {
23401 if (location) {
23402 updateLocationState(location, state);
23403 updateLocation(location);
23404 } else {
23405 updateLocationState(getCurrentLocation(), state);
23406 }
23407 }
23408
23409 function updateLocationState(location, state) {
23410 location.state = _extends({}, location.state, state);
23411 saveState(location.key, location.state);
23412 }
23413
23414 // deprecated
23415 function registerTransitionHook(hook) {
23416 if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook);
23417 }
23418
23419 // deprecated
23420 function unregisterTransitionHook(hook) {
23421 transitionHooks = transitionHooks.filter(function (item) {
23422 return item !== hook;
23423 });
23424 }
23425
23426 // deprecated
23427 function pushState(state, path) {
23428 if (typeof path === 'string') path = _PathUtils.parsePath(path);
23429
23430 push(_extends({ state: state }, path));
23431 }
23432
23433 // deprecated
23434 function replaceState(state, path) {
23435 if (typeof path === 'string') path = _PathUtils.parsePath(path);
23436
23437 replace(_extends({ state: state }, path));
23438 }
23439
23440 return {
23441 listenBefore: listenBefore,
23442 listen: listen,
23443 transitionTo: transitionTo,
23444 push: push,
23445 replace: replace,
23446 go: go,
23447 goBack: goBack,
23448 goForward: goForward,
23449 createKey: createKey,
23450 createPath: createPath,
23451 createHref: createHref,
23452 createLocation: createLocation,
23453
23454 setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'),
23455 registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'),
23456 unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'),
23457 pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),
23458 replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')
23459 };
23460 }
23461
23462 exports['default'] = createHistory;
23463 module.exports = exports['default'];
23464
23465/***/ },
23466/* 279 */
23467/***/ function(module, exports, __webpack_require__) {
23468
23469 var pSlice = Array.prototype.slice;
23470 var objectKeys = __webpack_require__(280);
23471 var isArguments = __webpack_require__(281);
23472
23473 var deepEqual = module.exports = function (actual, expected, opts) {
23474 if (!opts) opts = {};
23475 // 7.1. All identical values are equivalent, as determined by ===.
23476 if (actual === expected) {
23477 return true;
23478
23479 } else if (actual instanceof Date && expected instanceof Date) {
23480 return actual.getTime() === expected.getTime();
23481
23482 // 7.3. Other pairs that do not both pass typeof value == 'object',
23483 // equivalence is determined by ==.
23484 } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {
23485 return opts.strict ? actual === expected : actual == expected;
23486
23487 // 7.4. For all other Object pairs, including Array objects, equivalence is
23488 // determined by having the same number of owned properties (as verified
23489 // with Object.prototype.hasOwnProperty.call), the same set of keys
23490 // (although not necessarily the same order), equivalent values for every
23491 // corresponding key, and an identical 'prototype' property. Note: this
23492 // accounts for both named and indexed properties on Arrays.
23493 } else {
23494 return objEquiv(actual, expected, opts);
23495 }
23496 }
23497
23498 function isUndefinedOrNull(value) {
23499 return value === null || value === undefined;
23500 }
23501
23502 function isBuffer (x) {
23503 if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
23504 if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
23505 return false;
23506 }
23507 if (x.length > 0 && typeof x[0] !== 'number') return false;
23508 return true;
23509 }
23510
23511 function objEquiv(a, b, opts) {
23512 var i, key;
23513 if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
23514 return false;
23515 // an identical 'prototype' property.
23516 if (a.prototype !== b.prototype) return false;
23517 //~~~I've managed to break Object.keys through screwy arguments passing.
23518 // Converting to array solves the problem.
23519 if (isArguments(a)) {
23520 if (!isArguments(b)) {
23521 return false;
23522 }
23523 a = pSlice.call(a);
23524 b = pSlice.call(b);
23525 return deepEqual(a, b, opts);
23526 }
23527 if (isBuffer(a)) {
23528 if (!isBuffer(b)) {
23529 return false;
23530 }
23531 if (a.length !== b.length) return false;
23532 for (i = 0; i < a.length; i++) {
23533 if (a[i] !== b[i]) return false;
23534 }
23535 return true;
23536 }
23537 try {
23538 var ka = objectKeys(a),
23539 kb = objectKeys(b);
23540 } catch (e) {//happens when one is a string literal and the other isn't
23541 return false;
23542 }
23543 // having the same number of owned properties (keys incorporates
23544 // hasOwnProperty)
23545 if (ka.length != kb.length)
23546 return false;
23547 //the same set of keys (although not necessarily the same order),
23548 ka.sort();
23549 kb.sort();
23550 //~~~cheap key test
23551 for (i = ka.length - 1; i >= 0; i--) {
23552 if (ka[i] != kb[i])
23553 return false;
23554 }
23555 //equivalent values for every corresponding key, and
23556 //~~~possibly expensive deep test
23557 for (i = ka.length - 1; i >= 0; i--) {
23558 key = ka[i];
23559 if (!deepEqual(a[key], b[key], opts)) return false;
23560 }
23561 return typeof a === typeof b;
23562 }
23563
23564
23565/***/ },
23566/* 280 */
23567/***/ function(module, exports) {
23568
23569 exports = module.exports = typeof Object.keys === 'function'
23570 ? Object.keys : shim;
23571
23572 exports.shim = shim;
23573 function shim (obj) {
23574 var keys = [];
23575 for (var key in obj) keys.push(key);
23576 return keys;
23577 }
23578
23579
23580/***/ },
23581/* 281 */
23582/***/ function(module, exports) {
23583
23584 var supportsArgumentsClass = (function(){
23585 return Object.prototype.toString.call(arguments)
23586 })() == '[object Arguments]';
23587
23588 exports = module.exports = supportsArgumentsClass ? supported : unsupported;
23589
23590 exports.supported = supported;
23591 function supported(object) {
23592 return Object.prototype.toString.call(object) == '[object Arguments]';
23593 };
23594
23595 exports.unsupported = unsupported;
23596 function unsupported(object){
23597 return object &&
23598 typeof object == 'object' &&
23599 typeof object.length == 'number' &&
23600 Object.prototype.hasOwnProperty.call(object, 'callee') &&
23601 !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
23602 false;
23603 };
23604
23605
23606/***/ },
23607/* 282 */
23608/***/ function(module, exports) {
23609
23610 "use strict";
23611
23612 exports.__esModule = true;
23613 var _slice = Array.prototype.slice;
23614 exports.loopAsync = loopAsync;
23615
23616 function loopAsync(turns, work, callback) {
23617 var currentTurn = 0,
23618 isDone = false;
23619 var sync = false,
23620 hasNext = false,
23621 doneArgs = undefined;
23622
23623 function done() {
23624 isDone = true;
23625 if (sync) {
23626 // Iterate instead of recursing if possible.
23627 doneArgs = [].concat(_slice.call(arguments));
23628 return;
23629 }
23630
23631 callback.apply(this, arguments);
23632 }
23633
23634 function next() {
23635 if (isDone) {
23636 return;
23637 }
23638
23639 hasNext = true;
23640 if (sync) {
23641 // Iterate instead of recursing if possible.
23642 return;
23643 }
23644
23645 sync = true;
23646
23647 while (!isDone && currentTurn < turns && hasNext) {
23648 hasNext = false;
23649 work.call(this, currentTurn++, next, done);
23650 }
23651
23652 sync = false;
23653
23654 if (isDone) {
23655 // This means the loop finished synchronously.
23656 callback.apply(this, doneArgs);
23657 return;
23658 }
23659
23660 if (currentTurn >= turns && hasNext) {
23661 isDone = true;
23662 callback();
23663 }
23664 }
23665
23666 next();
23667 }
23668
23669/***/ },
23670/* 283 */
23671/***/ function(module, exports, __webpack_require__) {
23672
23673 'use strict';
23674
23675 exports.__esModule = true;
23676
23677 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
23678
23679 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
23680
23681 var _warning = __webpack_require__(271);
23682
23683 var _warning2 = _interopRequireDefault(_warning);
23684
23685 var _Actions = __webpack_require__(272);
23686
23687 var _PathUtils = __webpack_require__(273);
23688
23689 function createLocation() {
23690 var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];
23691 var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];
23692 var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
23693
23694 var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
23695
23696 if (typeof location === 'string') location = _PathUtils.parsePath(location);
23697
23698 if (typeof action === 'object') {
23699 (undefined) !== 'production' ? _warning2['default'](false, 'The state (2nd) argument to createLocation is deprecated; use a ' + 'location descriptor instead') : undefined;
23700
23701 location = _extends({}, location, { state: action });
23702
23703 action = key || _Actions.POP;
23704 key = _fourthArg;
23705 }
23706
23707 var pathname = location.pathname || '/';
23708 var search = location.search || '';
23709 var hash = location.hash || '';
23710 var state = location.state || null;
23711
23712 return {
23713 pathname: pathname,
23714 search: search,
23715 hash: hash,
23716 state: state,
23717 action: action,
23718 key: key
23719 };
23720 }
23721
23722 exports['default'] = createLocation;
23723 module.exports = exports['default'];
23724
23725/***/ },
23726/* 284 */
23727/***/ function(module, exports, __webpack_require__) {
23728
23729 'use strict';
23730
23731 exports.__esModule = true;
23732
23733 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
23734
23735 var _warning = __webpack_require__(271);
23736
23737 var _warning2 = _interopRequireDefault(_warning);
23738
23739 function runTransitionHook(hook, location, callback) {
23740 var result = hook(location, callback);
23741
23742 if (hook.length < 2) {
23743 // Assume the hook runs synchronously and automatically
23744 // call the callback with the return value.
23745 callback(result);
23746 } else {
23747 (undefined) !== 'production' ? _warning2['default'](result === undefined, 'You should not "return" in a transition hook with a callback argument; call the callback instead') : undefined;
23748 }
23749 }
23750
23751 exports['default'] = runTransitionHook;
23752 module.exports = exports['default'];
23753
23754/***/ },
23755/* 285 */
23756/***/ function(module, exports, __webpack_require__) {
23757
23758 'use strict';
23759
23760 exports.__esModule = true;
23761
23762 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
23763
23764 var _warning = __webpack_require__(271);
23765
23766 var _warning2 = _interopRequireDefault(_warning);
23767
23768 function deprecate(fn, message) {
23769 return function () {
23770 (undefined) !== 'production' ? _warning2['default'](false, '[history] ' + message) : undefined;
23771 return fn.apply(this, arguments);
23772 };
23773 }
23774
23775 exports['default'] = deprecate;
23776 module.exports = exports['default'];
23777
23778/***/ },
23779/* 286 */
23780/***/ function(module, exports, __webpack_require__) {
23781
23782 'use strict';
23783
23784 exports.__esModule = true;
23785
23786 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
23787
23788 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
23789
23790 var _warning = __webpack_require__(271);
23791
23792 var _warning2 = _interopRequireDefault(_warning);
23793
23794 var _queryString = __webpack_require__(287);
23795
23796 var _runTransitionHook = __webpack_require__(284);
23797
23798 var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
23799
23800 var _PathUtils = __webpack_require__(273);
23801
23802 var _deprecate = __webpack_require__(285);
23803
23804 var _deprecate2 = _interopRequireDefault(_deprecate);
23805
23806 var SEARCH_BASE_KEY = '$searchBase';
23807
23808 function defaultStringifyQuery(query) {
23809 return _queryString.stringify(query).replace(/%20/g, '+');
23810 }
23811
23812 var defaultParseQueryString = _queryString.parse;
23813
23814 function isNestedObject(object) {
23815 for (var p in object) {
23816 if (Object.prototype.hasOwnProperty.call(object, p) && typeof object[p] === 'object' && !Array.isArray(object[p]) && object[p] !== null) return true;
23817 }return false;
23818 }
23819
23820 /**
23821 * Returns a new createHistory function that may be used to create
23822 * history objects that know how to handle URL queries.
23823 */
23824 function useQueries(createHistory) {
23825 return function () {
23826 var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
23827
23828 var history = createHistory(options);
23829
23830 var stringifyQuery = options.stringifyQuery;
23831 var parseQueryString = options.parseQueryString;
23832
23833 if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;
23834
23835 if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;
23836
23837 function addQuery(location) {
23838 if (location.query == null) {
23839 var search = location.search;
23840
23841 location.query = parseQueryString(search.substring(1));
23842 location[SEARCH_BASE_KEY] = { search: search, searchBase: '' };
23843 }
23844
23845 // TODO: Instead of all the book-keeping here, this should just strip the
23846 // stringified query from the search.
23847
23848 return location;
23849 }
23850
23851 function appendQuery(location, query) {
23852 var _extends2;
23853
23854 var searchBaseSpec = location[SEARCH_BASE_KEY];
23855 var queryString = query ? stringifyQuery(query) : '';
23856 if (!searchBaseSpec && !queryString) {
23857 return location;
23858 }
23859
23860 (undefined) !== 'production' ? _warning2['default'](stringifyQuery !== defaultStringifyQuery || !isNestedObject(query), 'useQueries does not stringify nested query objects by default; ' + 'use a custom stringifyQuery function') : undefined;
23861
23862 if (typeof location === 'string') location = _PathUtils.parsePath(location);
23863
23864 var searchBase = undefined;
23865 if (searchBaseSpec && location.search === searchBaseSpec.search) {
23866 searchBase = searchBaseSpec.searchBase;
23867 } else {
23868 searchBase = location.search || '';
23869 }
23870
23871 var search = searchBase;
23872 if (queryString) {
23873 search += (search ? '&' : '?') + queryString;
23874 }
23875
23876 return _extends({}, location, (_extends2 = {
23877 search: search
23878 }, _extends2[SEARCH_BASE_KEY] = { search: search, searchBase: searchBase }, _extends2));
23879 }
23880
23881 // Override all read methods with query-aware versions.
23882 function listenBefore(hook) {
23883 return history.listenBefore(function (location, callback) {
23884 _runTransitionHook2['default'](hook, addQuery(location), callback);
23885 });
23886 }
23887
23888 function listen(listener) {
23889 return history.listen(function (location) {
23890 listener(addQuery(location));
23891 });
23892 }
23893
23894 // Override all write methods with query-aware versions.
23895 function push(location) {
23896 history.push(appendQuery(location, location.query));
23897 }
23898
23899 function replace(location) {
23900 history.replace(appendQuery(location, location.query));
23901 }
23902
23903 function createPath(location, query) {
23904 (undefined) !== 'production' ? _warning2['default'](!query, 'the query argument to createPath is deprecated; use a location descriptor instead') : undefined;
23905
23906 return history.createPath(appendQuery(location, query || location.query));
23907 }
23908
23909 function createHref(location, query) {
23910 (undefined) !== 'production' ? _warning2['default'](!query, 'the query argument to createHref is deprecated; use a location descriptor instead') : undefined;
23911
23912 return history.createHref(appendQuery(location, query || location.query));
23913 }
23914
23915 function createLocation(location) {
23916 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
23917 args[_key - 1] = arguments[_key];
23918 }
23919
23920 var fullLocation = history.createLocation.apply(history, [appendQuery(location, location.query)].concat(args));
23921 if (location.query) {
23922 fullLocation.query = location.query;
23923 }
23924 return addQuery(fullLocation);
23925 }
23926
23927 // deprecated
23928 function pushState(state, path, query) {
23929 if (typeof path === 'string') path = _PathUtils.parsePath(path);
23930
23931 push(_extends({ state: state }, path, { query: query }));
23932 }
23933
23934 // deprecated
23935 function replaceState(state, path, query) {
23936 if (typeof path === 'string') path = _PathUtils.parsePath(path);
23937
23938 replace(_extends({ state: state }, path, { query: query }));
23939 }
23940
23941 return _extends({}, history, {
23942 listenBefore: listenBefore,
23943 listen: listen,
23944 push: push,
23945 replace: replace,
23946 createPath: createPath,
23947 createHref: createHref,
23948 createLocation: createLocation,
23949
23950 pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),
23951 replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')
23952 });
23953 };
23954 }
23955
23956 exports['default'] = useQueries;
23957 module.exports = exports['default'];
23958
23959/***/ },
23960/* 287 */
23961/***/ function(module, exports, __webpack_require__) {
23962
23963 'use strict';
23964 var strictUriEncode = __webpack_require__(288);
23965
23966 exports.extract = function (str) {
23967 return str.split('?')[1] || '';
23968 };
23969
23970 exports.parse = function (str) {
23971 if (typeof str !== 'string') {
23972 return {};
23973 }
23974
23975 str = str.trim().replace(/^(\?|#|&)/, '');
23976
23977 if (!str) {
23978 return {};
23979 }
23980
23981 return str.split('&').reduce(function (ret, param) {
23982 var parts = param.replace(/\+/g, ' ').split('=');
23983 // Firefox (pre 40) decodes `%3D` to `=`
23984 // https://github.com/sindresorhus/query-string/pull/37
23985 var key = parts.shift();
23986 var val = parts.length > 0 ? parts.join('=') : undefined;
23987
23988 key = decodeURIComponent(key);
23989
23990 // missing `=` should be `null`:
23991 // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
23992 val = val === undefined ? null : decodeURIComponent(val);
23993
23994 if (!ret.hasOwnProperty(key)) {
23995 ret[key] = val;
23996 } else if (Array.isArray(ret[key])) {
23997 ret[key].push(val);
23998 } else {
23999 ret[key] = [ret[key], val];
24000 }
24001
24002 return ret;
24003 }, {});
24004 };
24005
24006 exports.stringify = function (obj) {
24007 return obj ? Object.keys(obj).sort().map(function (key) {
24008 var val = obj[key];
24009
24010 if (val === undefined) {
24011 return '';
24012 }
24013
24014 if (val === null) {
24015 return key;
24016 }
24017
24018 if (Array.isArray(val)) {
24019 return val.slice().sort().map(function (val2) {
24020 return strictUriEncode(key) + '=' + strictUriEncode(val2);
24021 }).join('&');
24022 }
24023
24024 return strictUriEncode(key) + '=' + strictUriEncode(val);
24025 }).filter(function (x) {
24026 return x.length > 0;
24027 }).join('&') : '';
24028 };
24029
24030
24031/***/ },
24032/* 288 */
24033/***/ function(module, exports) {
24034
24035 'use strict';
24036 module.exports = function (str) {
24037 return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
24038 return '%' + c.charCodeAt(0).toString(16).toUpperCase();
24039 });
24040 };
24041
24042
24043/***/ },
24044/* 289 */
24045/***/ function(module, exports, __webpack_require__) {
24046
24047 'use strict';
24048
24049 exports.__esModule = true;
24050
24051 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
24052
24053 exports.default = createTransitionManager;
24054
24055 var _routerWarning = __webpack_require__(264);
24056
24057 var _routerWarning2 = _interopRequireDefault(_routerWarning);
24058
24059 var _computeChangedRoutes2 = __webpack_require__(290);
24060
24061 var _computeChangedRoutes3 = _interopRequireDefault(_computeChangedRoutes2);
24062
24063 var _TransitionUtils = __webpack_require__(291);
24064
24065 var _isActive2 = __webpack_require__(293);
24066
24067 var _isActive3 = _interopRequireDefault(_isActive2);
24068
24069 var _getComponents = __webpack_require__(294);
24070
24071 var _getComponents2 = _interopRequireDefault(_getComponents);
24072
24073 var _matchRoutes = __webpack_require__(296);
24074
24075 var _matchRoutes2 = _interopRequireDefault(_matchRoutes);
24076
24077 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24078
24079 function hasAnyProperties(object) {
24080 for (var p in object) {
24081 if (Object.prototype.hasOwnProperty.call(object, p)) return true;
24082 }return false;
24083 }
24084
24085 function createTransitionManager(history, routes) {
24086 var state = {};
24087
24088 // Signature should be (location, indexOnly), but needs to support (path,
24089 // query, indexOnly)
24090 function isActive(location) {
24091 var indexOnlyOrDeprecatedQuery = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
24092 var deprecatedIndexOnly = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
24093
24094 var indexOnly = void 0;
24095 if (indexOnlyOrDeprecatedQuery && indexOnlyOrDeprecatedQuery !== true || deprecatedIndexOnly !== null) {
24096 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, '`isActive(pathname, query, indexOnly) is deprecated; use `isActive(location, indexOnly)` with a location descriptor instead. http://tiny.cc/router-isActivedeprecated') : void 0;
24097 location = { pathname: location, query: indexOnlyOrDeprecatedQuery };
24098 indexOnly = deprecatedIndexOnly || false;
24099 } else {
24100 location = history.createLocation(location);
24101 indexOnly = indexOnlyOrDeprecatedQuery;
24102 }
24103
24104 return (0, _isActive3.default)(location, indexOnly, state.location, state.routes, state.params);
24105 }
24106
24107 var partialNextState = void 0;
24108
24109 function match(location, callback) {
24110 if (partialNextState && partialNextState.location === location) {
24111 // Continue from where we left off.
24112 finishMatch(partialNextState, callback);
24113 } else {
24114 (0, _matchRoutes2.default)(routes, location, function (error, nextState) {
24115 if (error) {
24116 callback(error);
24117 } else if (nextState) {
24118 finishMatch(_extends({}, nextState, { location: location }), callback);
24119 } else {
24120 callback();
24121 }
24122 });
24123 }
24124 }
24125
24126 function finishMatch(nextState, callback) {
24127 var _computeChangedRoutes = (0, _computeChangedRoutes3.default)(state, nextState);
24128
24129 var leaveRoutes = _computeChangedRoutes.leaveRoutes;
24130 var changeRoutes = _computeChangedRoutes.changeRoutes;
24131 var enterRoutes = _computeChangedRoutes.enterRoutes;
24132
24133
24134 (0, _TransitionUtils.runLeaveHooks)(leaveRoutes, state);
24135
24136 // Tear down confirmation hooks for left routes
24137 leaveRoutes.filter(function (route) {
24138 return enterRoutes.indexOf(route) === -1;
24139 }).forEach(removeListenBeforeHooksForRoute);
24140
24141 // change and enter hooks are run in series
24142 (0, _TransitionUtils.runChangeHooks)(changeRoutes, state, nextState, function (error, redirectInfo) {
24143 if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);
24144
24145 (0, _TransitionUtils.runEnterHooks)(enterRoutes, nextState, finishEnterHooks);
24146 });
24147
24148 function finishEnterHooks(error, redirectInfo) {
24149 if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);
24150
24151 // TODO: Fetch components after state is updated.
24152 (0, _getComponents2.default)(nextState, function (error, components) {
24153 if (error) {
24154 callback(error);
24155 } else {
24156 // TODO: Make match a pure function and have some other API
24157 // for "match and update state".
24158 callback(null, null, state = _extends({}, nextState, { components: components }));
24159 }
24160 });
24161 }
24162
24163 function handleErrorOrRedirect(error, redirectInfo) {
24164 if (error) callback(error);else callback(null, redirectInfo);
24165 }
24166 }
24167
24168 var RouteGuid = 1;
24169
24170 function getRouteID(route) {
24171 var create = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
24172
24173 return route.__id__ || create && (route.__id__ = RouteGuid++);
24174 }
24175
24176 var RouteHooks = Object.create(null);
24177
24178 function getRouteHooksForRoutes(routes) {
24179 return routes.reduce(function (hooks, route) {
24180 hooks.push.apply(hooks, RouteHooks[getRouteID(route)]);
24181 return hooks;
24182 }, []);
24183 }
24184
24185 function transitionHook(location, callback) {
24186 (0, _matchRoutes2.default)(routes, location, function (error, nextState) {
24187 if (nextState == null) {
24188 // TODO: We didn't actually match anything, but hang
24189 // onto error/nextState so we don't have to matchRoutes
24190 // again in the listen callback.
24191 callback();
24192 return;
24193 }
24194
24195 // Cache some state here so we don't have to
24196 // matchRoutes() again in the listen callback.
24197 partialNextState = _extends({}, nextState, { location: location });
24198
24199 var hooks = getRouteHooksForRoutes((0, _computeChangedRoutes3.default)(state, partialNextState).leaveRoutes);
24200
24201 var result = void 0;
24202 for (var i = 0, len = hooks.length; result == null && i < len; ++i) {
24203 // Passing the location arg here indicates to
24204 // the user that this is a transition hook.
24205 result = hooks[i](location);
24206 }
24207
24208 callback(result);
24209 });
24210 }
24211
24212 /* istanbul ignore next: untestable with Karma */
24213 function beforeUnloadHook() {
24214 // Synchronously check to see if any route hooks want
24215 // to prevent the current window/tab from closing.
24216 if (state.routes) {
24217 var hooks = getRouteHooksForRoutes(state.routes);
24218
24219 var message = void 0;
24220 for (var i = 0, len = hooks.length; typeof message !== 'string' && i < len; ++i) {
24221 // Passing no args indicates to the user that this is a
24222 // beforeunload hook. We don't know the next location.
24223 message = hooks[i]();
24224 }
24225
24226 return message;
24227 }
24228 }
24229
24230 var unlistenBefore = void 0,
24231 unlistenBeforeUnload = void 0;
24232
24233 function removeListenBeforeHooksForRoute(route) {
24234 var routeID = getRouteID(route, false);
24235 if (!routeID) {
24236 return;
24237 }
24238
24239 delete RouteHooks[routeID];
24240
24241 if (!hasAnyProperties(RouteHooks)) {
24242 // teardown transition & beforeunload hooks
24243 if (unlistenBefore) {
24244 unlistenBefore();
24245 unlistenBefore = null;
24246 }
24247
24248 if (unlistenBeforeUnload) {
24249 unlistenBeforeUnload();
24250 unlistenBeforeUnload = null;
24251 }
24252 }
24253 }
24254
24255 /**
24256 * Registers the given hook function to run before leaving the given route.
24257 *
24258 * During a normal transition, the hook function receives the next location
24259 * as its only argument and can return either a prompt message (string) to show the user,
24260 * to make sure they want to leave the page; or `false`, to prevent the transition.
24261 * Any other return value will have no effect.
24262 *
24263 * During the beforeunload event (in browsers) the hook receives no arguments.
24264 * In this case it must return a prompt message to prevent the transition.
24265 *
24266 * Returns a function that may be used to unbind the listener.
24267 */
24268 function listenBeforeLeavingRoute(route, hook) {
24269 // TODO: Warn if they register for a route that isn't currently
24270 // active. They're probably doing something wrong, like re-creating
24271 // route objects on every location change.
24272 var routeID = getRouteID(route);
24273 var hooks = RouteHooks[routeID];
24274
24275 if (!hooks) {
24276 var thereWereNoRouteHooks = !hasAnyProperties(RouteHooks);
24277
24278 RouteHooks[routeID] = [hook];
24279
24280 if (thereWereNoRouteHooks) {
24281 // setup transition & beforeunload hooks
24282 unlistenBefore = history.listenBefore(transitionHook);
24283
24284 if (history.listenBeforeUnload) unlistenBeforeUnload = history.listenBeforeUnload(beforeUnloadHook);
24285 }
24286 } else {
24287 if (hooks.indexOf(hook) === -1) {
24288 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, 'adding multiple leave hooks for the same route is deprecated; manage multiple confirmations in your own code instead') : void 0;
24289
24290 hooks.push(hook);
24291 }
24292 }
24293
24294 return function () {
24295 var hooks = RouteHooks[routeID];
24296
24297 if (hooks) {
24298 var newHooks = hooks.filter(function (item) {
24299 return item !== hook;
24300 });
24301
24302 if (newHooks.length === 0) {
24303 removeListenBeforeHooksForRoute(route);
24304 } else {
24305 RouteHooks[routeID] = newHooks;
24306 }
24307 }
24308 };
24309 }
24310
24311 /**
24312 * This is the API for stateful environments. As the location
24313 * changes, we update state and call the listener. We can also
24314 * gracefully handle errors and redirects.
24315 */
24316 function listen(listener) {
24317 // TODO: Only use a single history listener. Otherwise we'll
24318 // end up with multiple concurrent calls to match.
24319 return history.listen(function (location) {
24320 if (state.location === location) {
24321 listener(null, state);
24322 } else {
24323 match(location, function (error, redirectLocation, nextState) {
24324 if (error) {
24325 listener(error);
24326 } else if (redirectLocation) {
24327 history.replace(redirectLocation);
24328 } else if (nextState) {
24329 listener(null, nextState);
24330 } else {
24331 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, 'Location "%s" did not match any routes', location.pathname + location.search + location.hash) : void 0;
24332 }
24333 });
24334 }
24335 });
24336 }
24337
24338 return {
24339 isActive: isActive,
24340 match: match,
24341 listenBeforeLeavingRoute: listenBeforeLeavingRoute,
24342 listen: listen
24343 };
24344 }
24345
24346 //export default useRoutes
24347
24348 module.exports = exports['default'];
24349
24350/***/ },
24351/* 290 */
24352/***/ function(module, exports, __webpack_require__) {
24353
24354 'use strict';
24355
24356 exports.__esModule = true;
24357
24358 var _PatternUtils = __webpack_require__(267);
24359
24360 function routeParamsChanged(route, prevState, nextState) {
24361 if (!route.path) return false;
24362
24363 var paramNames = (0, _PatternUtils.getParamNames)(route.path);
24364
24365 return paramNames.some(function (paramName) {
24366 return prevState.params[paramName] !== nextState.params[paramName];
24367 });
24368 }
24369
24370 /**
24371 * Returns an object of { leaveRoutes, changeRoutes, enterRoutes } determined by
24372 * the change from prevState to nextState. We leave routes if either
24373 * 1) they are not in the next state or 2) they are in the next state
24374 * but their params have changed (i.e. /users/123 => /users/456).
24375 *
24376 * leaveRoutes are ordered starting at the leaf route of the tree
24377 * we're leaving up to the common parent route. enterRoutes are ordered
24378 * from the top of the tree we're entering down to the leaf route.
24379 *
24380 * changeRoutes are any routes that didn't leave or enter during
24381 * the transition.
24382 */
24383 function computeChangedRoutes(prevState, nextState) {
24384 var prevRoutes = prevState && prevState.routes;
24385 var nextRoutes = nextState.routes;
24386
24387 var leaveRoutes = void 0,
24388 changeRoutes = void 0,
24389 enterRoutes = void 0;
24390 if (prevRoutes) {
24391 (function () {
24392 var parentIsLeaving = false;
24393 leaveRoutes = prevRoutes.filter(function (route) {
24394 if (parentIsLeaving) {
24395 return true;
24396 } else {
24397 var isLeaving = nextRoutes.indexOf(route) === -1 || routeParamsChanged(route, prevState, nextState);
24398 if (isLeaving) parentIsLeaving = true;
24399 return isLeaving;
24400 }
24401 });
24402
24403 // onLeave hooks start at the leaf route.
24404 leaveRoutes.reverse();
24405
24406 enterRoutes = [];
24407 changeRoutes = [];
24408
24409 nextRoutes.forEach(function (route) {
24410 var isNew = prevRoutes.indexOf(route) === -1;
24411 var paramsChanged = leaveRoutes.indexOf(route) !== -1;
24412
24413 if (isNew || paramsChanged) enterRoutes.push(route);else changeRoutes.push(route);
24414 });
24415 })();
24416 } else {
24417 leaveRoutes = [];
24418 changeRoutes = [];
24419 enterRoutes = nextRoutes;
24420 }
24421
24422 return {
24423 leaveRoutes: leaveRoutes,
24424 changeRoutes: changeRoutes,
24425 enterRoutes: enterRoutes
24426 };
24427 }
24428
24429 exports.default = computeChangedRoutes;
24430 module.exports = exports['default'];
24431
24432/***/ },
24433/* 291 */
24434/***/ function(module, exports, __webpack_require__) {
24435
24436 'use strict';
24437
24438 exports.__esModule = true;
24439 exports.runEnterHooks = runEnterHooks;
24440 exports.runChangeHooks = runChangeHooks;
24441 exports.runLeaveHooks = runLeaveHooks;
24442
24443 var _AsyncUtils = __webpack_require__(292);
24444
24445 var _routerWarning = __webpack_require__(264);
24446
24447 var _routerWarning2 = _interopRequireDefault(_routerWarning);
24448
24449 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24450
24451 function createTransitionHook(hook, route, asyncArity) {
24452 return function () {
24453 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
24454 args[_key] = arguments[_key];
24455 }
24456
24457 hook.apply(route, args);
24458
24459 if (hook.length < asyncArity) {
24460 var callback = args[args.length - 1];
24461 // Assume hook executes synchronously and
24462 // automatically call the callback.
24463 callback();
24464 }
24465 };
24466 }
24467
24468 function getEnterHooks(routes) {
24469 return routes.reduce(function (hooks, route) {
24470 if (route.onEnter) hooks.push(createTransitionHook(route.onEnter, route, 3));
24471
24472 return hooks;
24473 }, []);
24474 }
24475
24476 function getChangeHooks(routes) {
24477 return routes.reduce(function (hooks, route) {
24478 if (route.onChange) hooks.push(createTransitionHook(route.onChange, route, 4));
24479 return hooks;
24480 }, []);
24481 }
24482
24483 function runTransitionHooks(length, iter, callback) {
24484 if (!length) {
24485 callback();
24486 return;
24487 }
24488
24489 var redirectInfo = void 0;
24490 function replace(location, deprecatedPathname, deprecatedQuery) {
24491 if (deprecatedPathname) {
24492 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, '`replaceState(state, pathname, query) is deprecated; use `replace(location)` with a location descriptor instead. http://tiny.cc/router-isActivedeprecated') : void 0;
24493 redirectInfo = {
24494 pathname: deprecatedPathname,
24495 query: deprecatedQuery,
24496 state: location
24497 };
24498
24499 return;
24500 }
24501
24502 redirectInfo = location;
24503 }
24504
24505 (0, _AsyncUtils.loopAsync)(length, function (index, next, done) {
24506 iter(index, replace, function (error) {
24507 if (error || redirectInfo) {
24508 done(error, redirectInfo); // No need to continue.
24509 } else {
24510 next();
24511 }
24512 });
24513 }, callback);
24514 }
24515
24516 /**
24517 * Runs all onEnter hooks in the given array of routes in order
24518 * with onEnter(nextState, replace, callback) and calls
24519 * callback(error, redirectInfo) when finished. The first hook
24520 * to use replace short-circuits the loop.
24521 *
24522 * If a hook needs to run asynchronously, it may use the callback
24523 * function. However, doing so will cause the transition to pause,
24524 * which could lead to a non-responsive UI if the hook is slow.
24525 */
24526 function runEnterHooks(routes, nextState, callback) {
24527 var hooks = getEnterHooks(routes);
24528 return runTransitionHooks(hooks.length, function (index, replace, next) {
24529 hooks[index](nextState, replace, next);
24530 }, callback);
24531 }
24532
24533 /**
24534 * Runs all onChange hooks in the given array of routes in order
24535 * with onChange(prevState, nextState, replace, callback) and calls
24536 * callback(error, redirectInfo) when finished. The first hook
24537 * to use replace short-circuits the loop.
24538 *
24539 * If a hook needs to run asynchronously, it may use the callback
24540 * function. However, doing so will cause the transition to pause,
24541 * which could lead to a non-responsive UI if the hook is slow.
24542 */
24543 function runChangeHooks(routes, state, nextState, callback) {
24544 var hooks = getChangeHooks(routes);
24545 return runTransitionHooks(hooks.length, function (index, replace, next) {
24546 hooks[index](state, nextState, replace, next);
24547 }, callback);
24548 }
24549
24550 /**
24551 * Runs all onLeave hooks in the given array of routes in order.
24552 */
24553 function runLeaveHooks(routes, prevState) {
24554 for (var i = 0, len = routes.length; i < len; ++i) {
24555 if (routes[i].onLeave) routes[i].onLeave.call(routes[i], prevState);
24556 }
24557 }
24558
24559/***/ },
24560/* 292 */
24561/***/ function(module, exports) {
24562
24563 "use strict";
24564
24565 exports.__esModule = true;
24566 exports.loopAsync = loopAsync;
24567 exports.mapAsync = mapAsync;
24568 function loopAsync(turns, work, callback) {
24569 var currentTurn = 0,
24570 isDone = false;
24571 var sync = false,
24572 hasNext = false,
24573 doneArgs = void 0;
24574
24575 function done() {
24576 isDone = true;
24577 if (sync) {
24578 // Iterate instead of recursing if possible.
24579 doneArgs = [].concat(Array.prototype.slice.call(arguments));
24580 return;
24581 }
24582
24583 callback.apply(this, arguments);
24584 }
24585
24586 function next() {
24587 if (isDone) {
24588 return;
24589 }
24590
24591 hasNext = true;
24592 if (sync) {
24593 // Iterate instead of recursing if possible.
24594 return;
24595 }
24596
24597 sync = true;
24598
24599 while (!isDone && currentTurn < turns && hasNext) {
24600 hasNext = false;
24601 work.call(this, currentTurn++, next, done);
24602 }
24603
24604 sync = false;
24605
24606 if (isDone) {
24607 // This means the loop finished synchronously.
24608 callback.apply(this, doneArgs);
24609 return;
24610 }
24611
24612 if (currentTurn >= turns && hasNext) {
24613 isDone = true;
24614 callback();
24615 }
24616 }
24617
24618 next();
24619 }
24620
24621 function mapAsync(array, work, callback) {
24622 var length = array.length;
24623 var values = [];
24624
24625 if (length === 0) return callback(null, values);
24626
24627 var isDone = false,
24628 doneCount = 0;
24629
24630 function done(index, error, value) {
24631 if (isDone) return;
24632
24633 if (error) {
24634 isDone = true;
24635 callback(error);
24636 } else {
24637 values[index] = value;
24638
24639 isDone = ++doneCount === length;
24640
24641 if (isDone) callback(null, values);
24642 }
24643 }
24644
24645 array.forEach(function (item, index) {
24646 work(item, index, function (error, value) {
24647 done(index, error, value);
24648 });
24649 });
24650 }
24651
24652/***/ },
24653/* 293 */
24654/***/ function(module, exports, __webpack_require__) {
24655
24656 'use strict';
24657
24658 exports.__esModule = true;
24659
24660 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
24661
24662 exports.default = isActive;
24663
24664 var _PatternUtils = __webpack_require__(267);
24665
24666 function deepEqual(a, b) {
24667 if (a == b) return true;
24668
24669 if (a == null || b == null) return false;
24670
24671 if (Array.isArray(a)) {
24672 return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {
24673 return deepEqual(item, b[index]);
24674 });
24675 }
24676
24677 if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {
24678 for (var p in a) {
24679 if (!Object.prototype.hasOwnProperty.call(a, p)) {
24680 continue;
24681 }
24682
24683 if (a[p] === undefined) {
24684 if (b[p] !== undefined) {
24685 return false;
24686 }
24687 } else if (!Object.prototype.hasOwnProperty.call(b, p)) {
24688 return false;
24689 } else if (!deepEqual(a[p], b[p])) {
24690 return false;
24691 }
24692 }
24693
24694 return true;
24695 }
24696
24697 return String(a) === String(b);
24698 }
24699
24700 /**
24701 * Returns true if the current pathname matches the supplied one, net of
24702 * leading and trailing slash normalization. This is sufficient for an
24703 * indexOnly route match.
24704 */
24705 function pathIsActive(pathname, currentPathname) {
24706 // Normalize leading slash for consistency. Leading slash on pathname has
24707 // already been normalized in isActive. See caveat there.
24708 if (currentPathname.charAt(0) !== '/') {
24709 currentPathname = '/' + currentPathname;
24710 }
24711
24712 // Normalize the end of both path names too. Maybe `/foo/` shouldn't show
24713 // `/foo` as active, but in this case, we would already have failed the
24714 // match.
24715 if (pathname.charAt(pathname.length - 1) !== '/') {
24716 pathname += '/';
24717 }
24718 if (currentPathname.charAt(currentPathname.length - 1) !== '/') {
24719 currentPathname += '/';
24720 }
24721
24722 return currentPathname === pathname;
24723 }
24724
24725 /**
24726 * Returns true if the given pathname matches the active routes and params.
24727 */
24728 function routeIsActive(pathname, routes, params) {
24729 var remainingPathname = pathname,
24730 paramNames = [],
24731 paramValues = [];
24732
24733 // for...of would work here but it's probably slower post-transpilation.
24734 for (var i = 0, len = routes.length; i < len; ++i) {
24735 var route = routes[i];
24736 var pattern = route.path || '';
24737
24738 if (pattern.charAt(0) === '/') {
24739 remainingPathname = pathname;
24740 paramNames = [];
24741 paramValues = [];
24742 }
24743
24744 if (remainingPathname !== null && pattern) {
24745 var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);
24746 if (matched) {
24747 remainingPathname = matched.remainingPathname;
24748 paramNames = [].concat(paramNames, matched.paramNames);
24749 paramValues = [].concat(paramValues, matched.paramValues);
24750 } else {
24751 remainingPathname = null;
24752 }
24753
24754 if (remainingPathname === '') {
24755 // We have an exact match on the route. Just check that all the params
24756 // match.
24757 // FIXME: This doesn't work on repeated params.
24758 return paramNames.every(function (paramName, index) {
24759 return String(paramValues[index]) === String(params[paramName]);
24760 });
24761 }
24762 }
24763 }
24764
24765 return false;
24766 }
24767
24768 /**
24769 * Returns true if all key/value pairs in the given query are
24770 * currently active.
24771 */
24772 function queryIsActive(query, activeQuery) {
24773 if (activeQuery == null) return query == null;
24774
24775 if (query == null) return true;
24776
24777 return deepEqual(query, activeQuery);
24778 }
24779
24780 /**
24781 * Returns true if a <Link> to the given pathname/query combination is
24782 * currently active.
24783 */
24784 function isActive(_ref, indexOnly, currentLocation, routes, params) {
24785 var pathname = _ref.pathname;
24786 var query = _ref.query;
24787
24788 if (currentLocation == null) return false;
24789
24790 // TODO: This is a bit ugly. It keeps around support for treating pathnames
24791 // without preceding slashes as absolute paths, but possibly also works
24792 // around the same quirks with basenames as in matchRoutes.
24793 if (pathname.charAt(0) !== '/') {
24794 pathname = '/' + pathname;
24795 }
24796
24797 if (!pathIsActive(pathname, currentLocation.pathname)) {
24798 // The path check is necessary and sufficient for indexOnly, but otherwise
24799 // we still need to check the routes.
24800 if (indexOnly || !routeIsActive(pathname, routes, params)) {
24801 return false;
24802 }
24803 }
24804
24805 return queryIsActive(query, currentLocation.query);
24806 }
24807 module.exports = exports['default'];
24808
24809/***/ },
24810/* 294 */
24811/***/ function(module, exports, __webpack_require__) {
24812
24813 'use strict';
24814
24815 exports.__esModule = true;
24816
24817 var _AsyncUtils = __webpack_require__(292);
24818
24819 var _makeStateWithLocation = __webpack_require__(295);
24820
24821 var _makeStateWithLocation2 = _interopRequireDefault(_makeStateWithLocation);
24822
24823 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24824
24825 function getComponentsForRoute(nextState, route, callback) {
24826 if (route.component || route.components) {
24827 callback(null, route.component || route.components);
24828 return;
24829 }
24830
24831 var getComponent = route.getComponent || route.getComponents;
24832 if (!getComponent) {
24833 callback();
24834 return;
24835 }
24836
24837 var location = nextState.location;
24838
24839 var nextStateWithLocation = (0, _makeStateWithLocation2.default)(nextState, location);
24840
24841 getComponent.call(route, nextStateWithLocation, callback);
24842 }
24843
24844 /**
24845 * Asynchronously fetches all components needed for the given router
24846 * state and calls callback(error, components) when finished.
24847 *
24848 * Note: This operation may finish synchronously if no routes have an
24849 * asynchronous getComponents method.
24850 */
24851 function getComponents(nextState, callback) {
24852 (0, _AsyncUtils.mapAsync)(nextState.routes, function (route, index, callback) {
24853 getComponentsForRoute(nextState, route, callback);
24854 }, callback);
24855 }
24856
24857 exports.default = getComponents;
24858 module.exports = exports['default'];
24859
24860/***/ },
24861/* 295 */
24862/***/ function(module, exports, __webpack_require__) {
24863
24864 'use strict';
24865
24866 exports.__esModule = true;
24867
24868 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
24869
24870 exports.default = makeStateWithLocation;
24871
24872 var _deprecateObjectProperties = __webpack_require__(263);
24873
24874 var _routerWarning = __webpack_require__(264);
24875
24876 var _routerWarning2 = _interopRequireDefault(_routerWarning);
24877
24878 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24879
24880 function makeStateWithLocation(state, location) {
24881 if ((undefined) !== 'production' && _deprecateObjectProperties.canUseMembrane) {
24882 var stateWithLocation = _extends({}, state);
24883
24884 // I don't use deprecateObjectProperties here because I want to keep the
24885 // same code path between development and production, in that we just
24886 // assign extra properties to the copy of the state object in both cases.
24887
24888 var _loop = function _loop(prop) {
24889 if (!Object.prototype.hasOwnProperty.call(location, prop)) {
24890 return 'continue';
24891 }
24892
24893 Object.defineProperty(stateWithLocation, prop, {
24894 get: function get() {
24895 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, 'Accessing location properties directly from the first argument to `getComponent`, `getComponents`, `getChildRoutes`, and `getIndexRoute` is deprecated. That argument is now the router state (`nextState` or `partialNextState`) rather than the location. To access the location, use `nextState.location` or `partialNextState.location`.') : void 0;
24896 return location[prop];
24897 }
24898 });
24899 };
24900
24901 for (var prop in location) {
24902 var _ret = _loop(prop);
24903
24904 if (_ret === 'continue') continue;
24905 }
24906
24907 return stateWithLocation;
24908 }
24909
24910 return _extends({}, state, location);
24911 }
24912 module.exports = exports['default'];
24913
24914/***/ },
24915/* 296 */
24916/***/ function(module, exports, __webpack_require__) {
24917
24918 'use strict';
24919
24920 exports.__esModule = true;
24921
24922 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
24923
24924 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
24925
24926 exports.default = matchRoutes;
24927
24928 var _AsyncUtils = __webpack_require__(292);
24929
24930 var _makeStateWithLocation = __webpack_require__(295);
24931
24932 var _makeStateWithLocation2 = _interopRequireDefault(_makeStateWithLocation);
24933
24934 var _PatternUtils = __webpack_require__(267);
24935
24936 var _routerWarning = __webpack_require__(264);
24937
24938 var _routerWarning2 = _interopRequireDefault(_routerWarning);
24939
24940 var _RouteUtils = __webpack_require__(261);
24941
24942 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24943
24944 function getChildRoutes(route, location, paramNames, paramValues, callback) {
24945 if (route.childRoutes) {
24946 return [null, route.childRoutes];
24947 }
24948 if (!route.getChildRoutes) {
24949 return [];
24950 }
24951
24952 var sync = true,
24953 result = void 0;
24954
24955 var partialNextState = {
24956 location: location,
24957 params: createParams(paramNames, paramValues)
24958 };
24959
24960 var partialNextStateWithLocation = (0, _makeStateWithLocation2.default)(partialNextState, location);
24961
24962 route.getChildRoutes(partialNextStateWithLocation, function (error, childRoutes) {
24963 childRoutes = !error && (0, _RouteUtils.createRoutes)(childRoutes);
24964 if (sync) {
24965 result = [error, childRoutes];
24966 return;
24967 }
24968
24969 callback(error, childRoutes);
24970 });
24971
24972 sync = false;
24973 return result; // Might be undefined.
24974 }
24975
24976 function getIndexRoute(route, location, paramNames, paramValues, callback) {
24977 if (route.indexRoute) {
24978 callback(null, route.indexRoute);
24979 } else if (route.getIndexRoute) {
24980 var partialNextState = {
24981 location: location,
24982 params: createParams(paramNames, paramValues)
24983 };
24984
24985 var partialNextStateWithLocation = (0, _makeStateWithLocation2.default)(partialNextState, location);
24986
24987 route.getIndexRoute(partialNextStateWithLocation, function (error, indexRoute) {
24988 callback(error, !error && (0, _RouteUtils.createRoutes)(indexRoute)[0]);
24989 });
24990 } else if (route.childRoutes) {
24991 (function () {
24992 var pathless = route.childRoutes.filter(function (childRoute) {
24993 return !childRoute.path;
24994 });
24995
24996 (0, _AsyncUtils.loopAsync)(pathless.length, function (index, next, done) {
24997 getIndexRoute(pathless[index], location, paramNames, paramValues, function (error, indexRoute) {
24998 if (error || indexRoute) {
24999 var routes = [pathless[index]].concat(Array.isArray(indexRoute) ? indexRoute : [indexRoute]);
25000 done(error, routes);
25001 } else {
25002 next();
25003 }
25004 });
25005 }, function (err, routes) {
25006 callback(null, routes);
25007 });
25008 })();
25009 } else {
25010 callback();
25011 }
25012 }
25013
25014 function assignParams(params, paramNames, paramValues) {
25015 return paramNames.reduce(function (params, paramName, index) {
25016 var paramValue = paramValues && paramValues[index];
25017
25018 if (Array.isArray(params[paramName])) {
25019 params[paramName].push(paramValue);
25020 } else if (paramName in params) {
25021 params[paramName] = [params[paramName], paramValue];
25022 } else {
25023 params[paramName] = paramValue;
25024 }
25025
25026 return params;
25027 }, params);
25028 }
25029
25030 function createParams(paramNames, paramValues) {
25031 return assignParams({}, paramNames, paramValues);
25032 }
25033
25034 function matchRouteDeep(route, location, remainingPathname, paramNames, paramValues, callback) {
25035 var pattern = route.path || '';
25036
25037 if (pattern.charAt(0) === '/') {
25038 remainingPathname = location.pathname;
25039 paramNames = [];
25040 paramValues = [];
25041 }
25042
25043 // Only try to match the path if the route actually has a pattern, and if
25044 // we're not just searching for potential nested absolute paths.
25045 if (remainingPathname !== null && pattern) {
25046 try {
25047 var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);
25048 if (matched) {
25049 remainingPathname = matched.remainingPathname;
25050 paramNames = [].concat(paramNames, matched.paramNames);
25051 paramValues = [].concat(paramValues, matched.paramValues);
25052 } else {
25053 remainingPathname = null;
25054 }
25055 } catch (error) {
25056 callback(error);
25057 }
25058
25059 // By assumption, pattern is non-empty here, which is the prerequisite for
25060 // actually terminating a match.
25061 if (remainingPathname === '') {
25062 var _ret2 = function () {
25063 var match = {
25064 routes: [route],
25065 params: createParams(paramNames, paramValues)
25066 };
25067
25068 getIndexRoute(route, location, paramNames, paramValues, function (error, indexRoute) {
25069 if (error) {
25070 callback(error);
25071 } else {
25072 if (Array.isArray(indexRoute)) {
25073 var _match$routes;
25074
25075 (undefined) !== 'production' ? (0, _routerWarning2.default)(indexRoute.every(function (route) {
25076 return !route.path;
25077 }), 'Index routes should not have paths') : void 0;
25078 (_match$routes = match.routes).push.apply(_match$routes, indexRoute);
25079 } else if (indexRoute) {
25080 (undefined) !== 'production' ? (0, _routerWarning2.default)(!indexRoute.path, 'Index routes should not have paths') : void 0;
25081 match.routes.push(indexRoute);
25082 }
25083
25084 callback(null, match);
25085 }
25086 });
25087
25088 return {
25089 v: void 0
25090 };
25091 }();
25092
25093 if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === "object") return _ret2.v;
25094 }
25095 }
25096
25097 if (remainingPathname != null || route.childRoutes) {
25098 // Either a) this route matched at least some of the path or b)
25099 // we don't have to load this route's children asynchronously. In
25100 // either case continue checking for matches in the subtree.
25101 var onChildRoutes = function onChildRoutes(error, childRoutes) {
25102 if (error) {
25103 callback(error);
25104 } else if (childRoutes) {
25105 // Check the child routes to see if any of them match.
25106 matchRoutes(childRoutes, location, function (error, match) {
25107 if (error) {
25108 callback(error);
25109 } else if (match) {
25110 // A child route matched! Augment the match and pass it up the stack.
25111 match.routes.unshift(route);
25112 callback(null, match);
25113 } else {
25114 callback();
25115 }
25116 }, remainingPathname, paramNames, paramValues);
25117 } else {
25118 callback();
25119 }
25120 };
25121
25122 var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);
25123 if (result) {
25124 onChildRoutes.apply(undefined, result);
25125 }
25126 } else {
25127 callback();
25128 }
25129 }
25130
25131 /**
25132 * Asynchronously matches the given location to a set of routes and calls
25133 * callback(error, state) when finished. The state object will have the
25134 * following properties:
25135 *
25136 * - routes An array of routes that matched, in hierarchical order
25137 * - params An object of URL parameters
25138 *
25139 * Note: This operation may finish synchronously if no routes have an
25140 * asynchronous getChildRoutes method.
25141 */
25142 function matchRoutes(routes, location, callback, remainingPathname) {
25143 var paramNames = arguments.length <= 4 || arguments[4] === undefined ? [] : arguments[4];
25144 var paramValues = arguments.length <= 5 || arguments[5] === undefined ? [] : arguments[5];
25145
25146 if (remainingPathname === undefined) {
25147 // TODO: This is a little bit ugly, but it works around a quirk in history
25148 // that strips the leading slash from pathnames when using basenames with
25149 // trailing slashes.
25150 if (location.pathname.charAt(0) !== '/') {
25151 location = _extends({}, location, {
25152 pathname: '/' + location.pathname
25153 });
25154 }
25155 remainingPathname = location.pathname;
25156 }
25157
25158 (0, _AsyncUtils.loopAsync)(routes.length, function (index, next, done) {
25159 matchRouteDeep(routes[index], location, remainingPathname, paramNames, paramValues, function (error, match) {
25160 if (error || match) {
25161 done(error, match);
25162 } else {
25163 next();
25164 }
25165 });
25166 }, callback);
25167 }
25168 module.exports = exports['default'];
25169
25170/***/ },
25171/* 297 */
25172/***/ function(module, exports, __webpack_require__) {
25173
25174 'use strict';
25175
25176 exports.__esModule = true;
25177
25178 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
25179
25180 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
25181
25182 var _invariant = __webpack_require__(268);
25183
25184 var _invariant2 = _interopRequireDefault(_invariant);
25185
25186 var _react = __webpack_require__(89);
25187
25188 var _react2 = _interopRequireDefault(_react);
25189
25190 var _deprecateObjectProperties = __webpack_require__(263);
25191
25192 var _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);
25193
25194 var _getRouteParams = __webpack_require__(298);
25195
25196 var _getRouteParams2 = _interopRequireDefault(_getRouteParams);
25197
25198 var _RouteUtils = __webpack_require__(261);
25199
25200 var _routerWarning = __webpack_require__(264);
25201
25202 var _routerWarning2 = _interopRequireDefault(_routerWarning);
25203
25204 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25205
25206 var _React$PropTypes = _react2.default.PropTypes;
25207 var array = _React$PropTypes.array;
25208 var func = _React$PropTypes.func;
25209 var object = _React$PropTypes.object;
25210
25211 /**
25212 * A <RouterContext> renders the component tree for a given router state
25213 * and sets the history object and the current location in context.
25214 */
25215
25216 var RouterContext = _react2.default.createClass({
25217 displayName: 'RouterContext',
25218
25219
25220 propTypes: {
25221 history: object,
25222 router: object.isRequired,
25223 location: object.isRequired,
25224 routes: array.isRequired,
25225 params: object.isRequired,
25226 components: array.isRequired,
25227 createElement: func.isRequired
25228 },
25229
25230 getDefaultProps: function getDefaultProps() {
25231 return {
25232 createElement: _react2.default.createElement
25233 };
25234 },
25235
25236
25237 childContextTypes: {
25238 history: object,
25239 location: object.isRequired,
25240 router: object.isRequired
25241 },
25242
25243 getChildContext: function getChildContext() {
25244 var _props = this.props;
25245 var router = _props.router;
25246 var history = _props.history;
25247 var location = _props.location;
25248
25249 if (!router) {
25250 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, '`<RouterContext>` expects a `router` rather than a `history`') : void 0;
25251
25252 router = _extends({}, history, {
25253 setRouteLeaveHook: history.listenBeforeLeavingRoute
25254 });
25255 delete router.listenBeforeLeavingRoute;
25256 }
25257
25258 if ((undefined) !== 'production') {
25259 location = (0, _deprecateObjectProperties2.default)(location, '`context.location` is deprecated, please use a route component\'s `props.location` instead. http://tiny.cc/router-accessinglocation');
25260 }
25261
25262 return { history: history, location: location, router: router };
25263 },
25264 createElement: function createElement(component, props) {
25265 return component == null ? null : this.props.createElement(component, props);
25266 },
25267 render: function render() {
25268 var _this = this;
25269
25270 var _props2 = this.props;
25271 var history = _props2.history;
25272 var location = _props2.location;
25273 var routes = _props2.routes;
25274 var params = _props2.params;
25275 var components = _props2.components;
25276
25277 var element = null;
25278
25279 if (components) {
25280 element = components.reduceRight(function (element, components, index) {
25281 if (components == null) return element; // Don't create new children; use the grandchildren.
25282
25283 var route = routes[index];
25284 var routeParams = (0, _getRouteParams2.default)(route, params);
25285 var props = {
25286 history: history,
25287 location: location,
25288 params: params,
25289 route: route,
25290 routeParams: routeParams,
25291 routes: routes
25292 };
25293
25294 if ((0, _RouteUtils.isReactChildren)(element)) {
25295 props.children = element;
25296 } else if (element) {
25297 for (var prop in element) {
25298 if (Object.prototype.hasOwnProperty.call(element, prop)) props[prop] = element[prop];
25299 }
25300 }
25301
25302 if ((typeof components === 'undefined' ? 'undefined' : _typeof(components)) === 'object') {
25303 var elements = {};
25304
25305 for (var key in components) {
25306 if (Object.prototype.hasOwnProperty.call(components, key)) {
25307 // Pass through the key as a prop to createElement to allow
25308 // custom createElement functions to know which named component
25309 // they're rendering, for e.g. matching up to fetched data.
25310 elements[key] = _this.createElement(components[key], _extends({
25311 key: key }, props));
25312 }
25313 }
25314
25315 return elements;
25316 }
25317
25318 return _this.createElement(components, props);
25319 }, element);
25320 }
25321
25322 !(element === null || element === false || _react2.default.isValidElement(element)) ? (undefined) !== 'production' ? (0, _invariant2.default)(false, 'The root route must render a single element') : (0, _invariant2.default)(false) : void 0;
25323
25324 return element;
25325 }
25326 });
25327
25328 exports.default = RouterContext;
25329 module.exports = exports['default'];
25330
25331/***/ },
25332/* 298 */
25333/***/ function(module, exports, __webpack_require__) {
25334
25335 'use strict';
25336
25337 exports.__esModule = true;
25338
25339 var _PatternUtils = __webpack_require__(267);
25340
25341 /**
25342 * Extracts an object of params the given route cares about from
25343 * the given params object.
25344 */
25345 function getRouteParams(route, params) {
25346 var routeParams = {};
25347
25348 if (!route.path) return routeParams;
25349
25350 (0, _PatternUtils.getParamNames)(route.path).forEach(function (p) {
25351 if (Object.prototype.hasOwnProperty.call(params, p)) {
25352 routeParams[p] = params[p];
25353 }
25354 });
25355
25356 return routeParams;
25357 }
25358
25359 exports.default = getRouteParams;
25360 module.exports = exports['default'];
25361
25362/***/ },
25363/* 299 */
25364/***/ function(module, exports, __webpack_require__) {
25365
25366 'use strict';
25367
25368 exports.__esModule = true;
25369
25370 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
25371
25372 exports.createRouterObject = createRouterObject;
25373 exports.createRoutingHistory = createRoutingHistory;
25374
25375 var _deprecateObjectProperties = __webpack_require__(263);
25376
25377 var _deprecateObjectProperties2 = _interopRequireDefault(_deprecateObjectProperties);
25378
25379 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25380
25381 function createRouterObject(history, transitionManager) {
25382 return _extends({}, history, {
25383 setRouteLeaveHook: transitionManager.listenBeforeLeavingRoute,
25384 isActive: transitionManager.isActive
25385 });
25386 }
25387
25388 // deprecated
25389 function createRoutingHistory(history, transitionManager) {
25390 history = _extends({}, history, transitionManager);
25391
25392 if ((undefined) !== 'production') {
25393 history = (0, _deprecateObjectProperties2.default)(history, '`props.history` and `context.history` are deprecated. Please use `context.router`. http://tiny.cc/router-contextchanges');
25394 }
25395
25396 return history;
25397 }
25398
25399/***/ },
25400/* 300 */
25401/***/ function(module, exports, __webpack_require__) {
25402
25403 'use strict';
25404
25405 exports.__esModule = true;
25406
25407 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
25408
25409 var _react = __webpack_require__(89);
25410
25411 var _react2 = _interopRequireDefault(_react);
25412
25413 var _routerWarning = __webpack_require__(264);
25414
25415 var _routerWarning2 = _interopRequireDefault(_routerWarning);
25416
25417 var _invariant = __webpack_require__(268);
25418
25419 var _invariant2 = _interopRequireDefault(_invariant);
25420
25421 var _PropTypes = __webpack_require__(262);
25422
25423 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25424
25425 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
25426
25427 var _React$PropTypes = _react2.default.PropTypes;
25428 var bool = _React$PropTypes.bool;
25429 var object = _React$PropTypes.object;
25430 var string = _React$PropTypes.string;
25431 var func = _React$PropTypes.func;
25432 var oneOfType = _React$PropTypes.oneOfType;
25433
25434
25435 function isLeftClickEvent(event) {
25436 return event.button === 0;
25437 }
25438
25439 function isModifiedEvent(event) {
25440 return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
25441 }
25442
25443 // TODO: De-duplicate against hasAnyProperties in createTransitionManager.
25444 function isEmptyObject(object) {
25445 for (var p in object) {
25446 if (Object.prototype.hasOwnProperty.call(object, p)) return false;
25447 }return true;
25448 }
25449
25450 function createLocationDescriptor(to, _ref) {
25451 var query = _ref.query;
25452 var hash = _ref.hash;
25453 var state = _ref.state;
25454
25455 if (query || hash || state) {
25456 return { pathname: to, query: query, hash: hash, state: state };
25457 }
25458
25459 return to;
25460 }
25461
25462 /**
25463 * A <Link> is used to create an <a> element that links to a route.
25464 * When that route is active, the link gets the value of its
25465 * activeClassName prop.
25466 *
25467 * For example, assuming you have the following route:
25468 *
25469 * <Route path="/posts/:postID" component={Post} />
25470 *
25471 * You could use the following component to link to that route:
25472 *
25473 * <Link to={`/posts/${post.id}`} />
25474 *
25475 * Links may pass along location state and/or query string parameters
25476 * in the state/query props, respectively.
25477 *
25478 * <Link ... query={{ show: true }} state={{ the: 'state' }} />
25479 */
25480 var Link = _react2.default.createClass({
25481 displayName: 'Link',
25482
25483
25484 contextTypes: {
25485 router: _PropTypes.routerShape
25486 },
25487
25488 propTypes: {
25489 to: oneOfType([string, object]),
25490 query: object,
25491 hash: string,
25492 state: object,
25493 activeStyle: object,
25494 activeClassName: string,
25495 onlyActiveOnIndex: bool.isRequired,
25496 onClick: func,
25497 target: string
25498 },
25499
25500 getDefaultProps: function getDefaultProps() {
25501 return {
25502 onlyActiveOnIndex: false,
25503 style: {}
25504 };
25505 },
25506 handleClick: function handleClick(event) {
25507 if (this.props.onClick) this.props.onClick(event);
25508
25509 if (event.defaultPrevented) return;
25510
25511 !this.context.router ? (undefined) !== 'production' ? (0, _invariant2.default)(false, '<Link>s rendered outside of a router context cannot navigate.') : (0, _invariant2.default)(false) : void 0;
25512
25513 if (isModifiedEvent(event) || !isLeftClickEvent(event)) return;
25514
25515 // If target prop is set (e.g. to "_blank"), let browser handle link.
25516 /* istanbul ignore if: untestable with Karma */
25517 if (this.props.target) return;
25518
25519 event.preventDefault();
25520
25521 var _props = this.props;
25522 var to = _props.to;
25523 var query = _props.query;
25524 var hash = _props.hash;
25525 var state = _props.state;
25526
25527 var location = createLocationDescriptor(to, { query: query, hash: hash, state: state });
25528
25529 this.context.router.push(location);
25530 },
25531 render: function render() {
25532 var _props2 = this.props;
25533 var to = _props2.to;
25534 var query = _props2.query;
25535 var hash = _props2.hash;
25536 var state = _props2.state;
25537 var activeClassName = _props2.activeClassName;
25538 var activeStyle = _props2.activeStyle;
25539 var onlyActiveOnIndex = _props2.onlyActiveOnIndex;
25540
25541 var props = _objectWithoutProperties(_props2, ['to', 'query', 'hash', 'state', 'activeClassName', 'activeStyle', 'onlyActiveOnIndex']);
25542
25543 (undefined) !== 'production' ? (0, _routerWarning2.default)(!(query || hash || state), 'the `query`, `hash`, and `state` props on `<Link>` are deprecated, use `<Link to={{ pathname, query, hash, state }}/>. http://tiny.cc/router-isActivedeprecated') : void 0;
25544
25545 // Ignore if rendered outside the context of router, simplifies unit testing.
25546 var router = this.context.router;
25547
25548
25549 if (router) {
25550 // If user does not specify a `to` prop, return an empty anchor tag.
25551 if (to == null) {
25552 return _react2.default.createElement('a', props);
25553 }
25554
25555 var location = createLocationDescriptor(to, { query: query, hash: hash, state: state });
25556 props.href = router.createHref(location);
25557
25558 if (activeClassName || activeStyle != null && !isEmptyObject(activeStyle)) {
25559 if (router.isActive(location, onlyActiveOnIndex)) {
25560 if (activeClassName) {
25561 if (props.className) {
25562 props.className += ' ' + activeClassName;
25563 } else {
25564 props.className = activeClassName;
25565 }
25566 }
25567
25568 if (activeStyle) props.style = _extends({}, props.style, activeStyle);
25569 }
25570 }
25571 }
25572
25573 return _react2.default.createElement('a', _extends({}, props, { onClick: this.handleClick }));
25574 }
25575 });
25576
25577 exports.default = Link;
25578 module.exports = exports['default'];
25579
25580/***/ },
25581/* 301 */
25582/***/ function(module, exports, __webpack_require__) {
25583
25584 'use strict';
25585
25586 exports.__esModule = true;
25587
25588 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
25589
25590 var _react = __webpack_require__(89);
25591
25592 var _react2 = _interopRequireDefault(_react);
25593
25594 var _Link = __webpack_require__(300);
25595
25596 var _Link2 = _interopRequireDefault(_Link);
25597
25598 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25599
25600 /**
25601 * An <IndexLink> is used to link to an <IndexRoute>.
25602 */
25603 var IndexLink = _react2.default.createClass({
25604 displayName: 'IndexLink',
25605 render: function render() {
25606 return _react2.default.createElement(_Link2.default, _extends({}, this.props, { onlyActiveOnIndex: true }));
25607 }
25608 });
25609
25610 exports.default = IndexLink;
25611 module.exports = exports['default'];
25612
25613/***/ },
25614/* 302 */
25615/***/ function(module, exports, __webpack_require__) {
25616
25617 'use strict';
25618
25619 exports.__esModule = true;
25620
25621 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
25622
25623 exports.default = withRouter;
25624
25625 var _invariant = __webpack_require__(268);
25626
25627 var _invariant2 = _interopRequireDefault(_invariant);
25628
25629 var _react = __webpack_require__(89);
25630
25631 var _react2 = _interopRequireDefault(_react);
25632
25633 var _hoistNonReactStatics = __webpack_require__(303);
25634
25635 var _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);
25636
25637 var _PropTypes = __webpack_require__(262);
25638
25639 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25640
25641 function getDisplayName(WrappedComponent) {
25642 return WrappedComponent.displayName || WrappedComponent.name || 'Component';
25643 }
25644
25645 function withRouter(WrappedComponent, options) {
25646 var withRef = options && options.withRef;
25647
25648 var WithRouter = _react2.default.createClass({
25649 displayName: 'WithRouter',
25650
25651 contextTypes: { router: _PropTypes.routerShape },
25652 propTypes: { router: _PropTypes.routerShape },
25653
25654 getWrappedInstance: function getWrappedInstance() {
25655 !withRef ? (undefined) !== 'production' ? (0, _invariant2.default)(false, 'To access the wrapped instance, you need to specify ' + '`{ withRef: true }` as the second argument of the withRouter() call.') : (0, _invariant2.default)(false) : void 0;
25656
25657 return this.wrappedInstance;
25658 },
25659 render: function render() {
25660 var _this = this;
25661
25662 var router = this.props.router || this.context.router;
25663 var props = _extends({}, this.props, { router: router });
25664
25665 if (withRef) {
25666 props.ref = function (c) {
25667 _this.wrappedInstance = c;
25668 };
25669 }
25670
25671 return _react2.default.createElement(WrappedComponent, props);
25672 }
25673 });
25674
25675 WithRouter.displayName = 'withRouter(' + getDisplayName(WrappedComponent) + ')';
25676 WithRouter.WrappedComponent = WrappedComponent;
25677
25678 return (0, _hoistNonReactStatics2.default)(WithRouter, WrappedComponent);
25679 }
25680 module.exports = exports['default'];
25681
25682/***/ },
25683/* 303 */
25684/***/ function(module, exports) {
25685
25686 /**
25687 * Copyright 2015, Yahoo! Inc.
25688 * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
25689 */
25690 'use strict';
25691
25692 var REACT_STATICS = {
25693 childContextTypes: true,
25694 contextTypes: true,
25695 defaultProps: true,
25696 displayName: true,
25697 getDefaultProps: true,
25698 mixins: true,
25699 propTypes: true,
25700 type: true
25701 };
25702
25703 var KNOWN_STATICS = {
25704 name: true,
25705 length: true,
25706 prototype: true,
25707 caller: true,
25708 arguments: true,
25709 arity: true
25710 };
25711
25712 var isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';
25713
25714 module.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {
25715 if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components
25716 var keys = Object.getOwnPropertyNames(sourceComponent);
25717
25718 /* istanbul ignore else */
25719 if (isGetOwnPropertySymbolsAvailable) {
25720 keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));
25721 }
25722
25723 for (var i = 0; i < keys.length; ++i) {
25724 if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {
25725 try {
25726 targetComponent[keys[i]] = sourceComponent[keys[i]];
25727 } catch (error) {
25728
25729 }
25730 }
25731 }
25732 }
25733
25734 return targetComponent;
25735 };
25736
25737
25738/***/ },
25739/* 304 */
25740/***/ function(module, exports, __webpack_require__) {
25741
25742 'use strict';
25743
25744 exports.__esModule = true;
25745
25746 var _react = __webpack_require__(89);
25747
25748 var _react2 = _interopRequireDefault(_react);
25749
25750 var _routerWarning = __webpack_require__(264);
25751
25752 var _routerWarning2 = _interopRequireDefault(_routerWarning);
25753
25754 var _invariant = __webpack_require__(268);
25755
25756 var _invariant2 = _interopRequireDefault(_invariant);
25757
25758 var _Redirect = __webpack_require__(305);
25759
25760 var _Redirect2 = _interopRequireDefault(_Redirect);
25761
25762 var _InternalPropTypes = __webpack_require__(266);
25763
25764 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25765
25766 var _React$PropTypes = _react2.default.PropTypes;
25767 var string = _React$PropTypes.string;
25768 var object = _React$PropTypes.object;
25769
25770 /**
25771 * An <IndexRedirect> is used to redirect from an indexRoute.
25772 */
25773
25774 var IndexRedirect = _react2.default.createClass({
25775 displayName: 'IndexRedirect',
25776
25777
25778 statics: {
25779 createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {
25780 /* istanbul ignore else: sanity check */
25781 if (parentRoute) {
25782 parentRoute.indexRoute = _Redirect2.default.createRouteFromReactElement(element);
25783 } else {
25784 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRedirect> does not make sense at the root of your route config') : void 0;
25785 }
25786 }
25787 },
25788
25789 propTypes: {
25790 to: string.isRequired,
25791 query: object,
25792 state: object,
25793 onEnter: _InternalPropTypes.falsy,
25794 children: _InternalPropTypes.falsy
25795 },
25796
25797 /* istanbul ignore next: sanity check */
25798 render: function render() {
25799 true ? (undefined) !== 'production' ? (0, _invariant2.default)(false, '<IndexRedirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;
25800 }
25801 });
25802
25803 exports.default = IndexRedirect;
25804 module.exports = exports['default'];
25805
25806/***/ },
25807/* 305 */
25808/***/ function(module, exports, __webpack_require__) {
25809
25810 'use strict';
25811
25812 exports.__esModule = true;
25813
25814 var _react = __webpack_require__(89);
25815
25816 var _react2 = _interopRequireDefault(_react);
25817
25818 var _invariant = __webpack_require__(268);
25819
25820 var _invariant2 = _interopRequireDefault(_invariant);
25821
25822 var _RouteUtils = __webpack_require__(261);
25823
25824 var _PatternUtils = __webpack_require__(267);
25825
25826 var _InternalPropTypes = __webpack_require__(266);
25827
25828 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25829
25830 var _React$PropTypes = _react2.default.PropTypes;
25831 var string = _React$PropTypes.string;
25832 var object = _React$PropTypes.object;
25833
25834 /**
25835 * A <Redirect> is used to declare another URL path a client should
25836 * be sent to when they request a given URL.
25837 *
25838 * Redirects are placed alongside routes in the route configuration
25839 * and are traversed in the same manner.
25840 */
25841
25842 var Redirect = _react2.default.createClass({
25843 displayName: 'Redirect',
25844
25845
25846 statics: {
25847 createRouteFromReactElement: function createRouteFromReactElement(element) {
25848 var route = (0, _RouteUtils.createRouteFromReactElement)(element);
25849
25850 if (route.from) route.path = route.from;
25851
25852 route.onEnter = function (nextState, replace) {
25853 var location = nextState.location;
25854 var params = nextState.params;
25855
25856
25857 var pathname = void 0;
25858 if (route.to.charAt(0) === '/') {
25859 pathname = (0, _PatternUtils.formatPattern)(route.to, params);
25860 } else if (!route.to) {
25861 pathname = location.pathname;
25862 } else {
25863 var routeIndex = nextState.routes.indexOf(route);
25864 var parentPattern = Redirect.getRoutePattern(nextState.routes, routeIndex - 1);
25865 var pattern = parentPattern.replace(/\/*$/, '/') + route.to;
25866 pathname = (0, _PatternUtils.formatPattern)(pattern, params);
25867 }
25868
25869 replace({
25870 pathname: pathname,
25871 query: route.query || location.query,
25872 state: route.state || location.state
25873 });
25874 };
25875
25876 return route;
25877 },
25878 getRoutePattern: function getRoutePattern(routes, routeIndex) {
25879 var parentPattern = '';
25880
25881 for (var i = routeIndex; i >= 0; i--) {
25882 var route = routes[i];
25883 var pattern = route.path || '';
25884
25885 parentPattern = pattern.replace(/\/*$/, '/') + parentPattern;
25886
25887 if (pattern.indexOf('/') === 0) break;
25888 }
25889
25890 return '/' + parentPattern;
25891 }
25892 },
25893
25894 propTypes: {
25895 path: string,
25896 from: string, // Alias for path
25897 to: string.isRequired,
25898 query: object,
25899 state: object,
25900 onEnter: _InternalPropTypes.falsy,
25901 children: _InternalPropTypes.falsy
25902 },
25903
25904 /* istanbul ignore next: sanity check */
25905 render: function render() {
25906 true ? (undefined) !== 'production' ? (0, _invariant2.default)(false, '<Redirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;
25907 }
25908 });
25909
25910 exports.default = Redirect;
25911 module.exports = exports['default'];
25912
25913/***/ },
25914/* 306 */
25915/***/ function(module, exports, __webpack_require__) {
25916
25917 'use strict';
25918
25919 exports.__esModule = true;
25920
25921 var _react = __webpack_require__(89);
25922
25923 var _react2 = _interopRequireDefault(_react);
25924
25925 var _routerWarning = __webpack_require__(264);
25926
25927 var _routerWarning2 = _interopRequireDefault(_routerWarning);
25928
25929 var _invariant = __webpack_require__(268);
25930
25931 var _invariant2 = _interopRequireDefault(_invariant);
25932
25933 var _RouteUtils = __webpack_require__(261);
25934
25935 var _InternalPropTypes = __webpack_require__(266);
25936
25937 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25938
25939 var func = _react2.default.PropTypes.func;
25940
25941 /**
25942 * An <IndexRoute> is used to specify its parent's <Route indexRoute> in
25943 * a JSX route config.
25944 */
25945
25946 var IndexRoute = _react2.default.createClass({
25947 displayName: 'IndexRoute',
25948
25949
25950 statics: {
25951 createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {
25952 /* istanbul ignore else: sanity check */
25953 if (parentRoute) {
25954 parentRoute.indexRoute = (0, _RouteUtils.createRouteFromReactElement)(element);
25955 } else {
25956 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRoute> does not make sense at the root of your route config') : void 0;
25957 }
25958 }
25959 },
25960
25961 propTypes: {
25962 path: _InternalPropTypes.falsy,
25963 component: _InternalPropTypes.component,
25964 components: _InternalPropTypes.components,
25965 getComponent: func,
25966 getComponents: func
25967 },
25968
25969 /* istanbul ignore next: sanity check */
25970 render: function render() {
25971 true ? (undefined) !== 'production' ? (0, _invariant2.default)(false, '<IndexRoute> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;
25972 }
25973 });
25974
25975 exports.default = IndexRoute;
25976 module.exports = exports['default'];
25977
25978/***/ },
25979/* 307 */
25980/***/ function(module, exports, __webpack_require__) {
25981
25982 'use strict';
25983
25984 exports.__esModule = true;
25985
25986 var _react = __webpack_require__(89);
25987
25988 var _react2 = _interopRequireDefault(_react);
25989
25990 var _invariant = __webpack_require__(268);
25991
25992 var _invariant2 = _interopRequireDefault(_invariant);
25993
25994 var _RouteUtils = __webpack_require__(261);
25995
25996 var _InternalPropTypes = __webpack_require__(266);
25997
25998 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25999
26000 var _React$PropTypes = _react2.default.PropTypes;
26001 var string = _React$PropTypes.string;
26002 var func = _React$PropTypes.func;
26003
26004 /**
26005 * A <Route> is used to declare which components are rendered to the
26006 * page when the URL matches a given pattern.
26007 *
26008 * Routes are arranged in a nested tree structure. When a new URL is
26009 * requested, the tree is searched depth-first to find a route whose
26010 * path matches the URL. When one is found, all routes in the tree
26011 * that lead to it are considered "active" and their components are
26012 * rendered into the DOM, nested in the same order as in the tree.
26013 */
26014
26015 var Route = _react2.default.createClass({
26016 displayName: 'Route',
26017
26018
26019 statics: {
26020 createRouteFromReactElement: _RouteUtils.createRouteFromReactElement
26021 },
26022
26023 propTypes: {
26024 path: string,
26025 component: _InternalPropTypes.component,
26026 components: _InternalPropTypes.components,
26027 getComponent: func,
26028 getComponents: func
26029 },
26030
26031 /* istanbul ignore next: sanity check */
26032 render: function render() {
26033 true ? (undefined) !== 'production' ? (0, _invariant2.default)(false, '<Route> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;
26034 }
26035 });
26036
26037 exports.default = Route;
26038 module.exports = exports['default'];
26039
26040/***/ },
26041/* 308 */
26042/***/ function(module, exports, __webpack_require__) {
26043
26044 'use strict';
26045
26046 exports.__esModule = true;
26047
26048 var _routerWarning = __webpack_require__(264);
26049
26050 var _routerWarning2 = _interopRequireDefault(_routerWarning);
26051
26052 var _InternalPropTypes = __webpack_require__(266);
26053
26054 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26055
26056 /**
26057 * A mixin that adds the "history" instance variable to components.
26058 */
26059 var History = {
26060
26061 contextTypes: {
26062 history: _InternalPropTypes.history
26063 },
26064
26065 componentWillMount: function componentWillMount() {
26066 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, 'the `History` mixin is deprecated, please access `context.router` with your own `contextTypes`. http://tiny.cc/router-historymixin') : void 0;
26067 this.history = this.context.history;
26068 }
26069 };
26070
26071 exports.default = History;
26072 module.exports = exports['default'];
26073
26074/***/ },
26075/* 309 */
26076/***/ function(module, exports, __webpack_require__) {
26077
26078 'use strict';
26079
26080 exports.__esModule = true;
26081
26082 var _routerWarning = __webpack_require__(264);
26083
26084 var _routerWarning2 = _interopRequireDefault(_routerWarning);
26085
26086 var _react = __webpack_require__(89);
26087
26088 var _react2 = _interopRequireDefault(_react);
26089
26090 var _invariant = __webpack_require__(268);
26091
26092 var _invariant2 = _interopRequireDefault(_invariant);
26093
26094 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26095
26096 var object = _react2.default.PropTypes.object;
26097
26098 /**
26099 * The Lifecycle mixin adds the routerWillLeave lifecycle method to a
26100 * component that may be used to cancel a transition or prompt the user
26101 * for confirmation.
26102 *
26103 * On standard transitions, routerWillLeave receives a single argument: the
26104 * location we're transitioning to. To cancel the transition, return false.
26105 * To prompt the user for confirmation, return a prompt message (string).
26106 *
26107 * During the beforeunload event (assuming you're using the useBeforeUnload
26108 * history enhancer), routerWillLeave does not receive a location object
26109 * because it isn't possible for us to know the location we're transitioning
26110 * to. In this case routerWillLeave must return a prompt message to prevent
26111 * the user from closing the window/tab.
26112 */
26113
26114 var Lifecycle = {
26115
26116 contextTypes: {
26117 history: object.isRequired,
26118 // Nested children receive the route as context, either
26119 // set by the route component using the RouteContext mixin
26120 // or by some other ancestor.
26121 route: object
26122 },
26123
26124 propTypes: {
26125 // Route components receive the route object as a prop.
26126 route: object
26127 },
26128
26129 componentDidMount: function componentDidMount() {
26130 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, 'the `Lifecycle` mixin is deprecated, please use `context.router.setRouteLeaveHook(route, hook)`. http://tiny.cc/router-lifecyclemixin') : void 0;
26131 !this.routerWillLeave ? (undefined) !== 'production' ? (0, _invariant2.default)(false, 'The Lifecycle mixin requires you to define a routerWillLeave method') : (0, _invariant2.default)(false) : void 0;
26132
26133 var route = this.props.route || this.context.route;
26134
26135 !route ? (undefined) !== 'production' ? (0, _invariant2.default)(false, 'The Lifecycle mixin must be used on either a) a <Route component> or ' + 'b) a descendant of a <Route component> that uses the RouteContext mixin') : (0, _invariant2.default)(false) : void 0;
26136
26137 this._unlistenBeforeLeavingRoute = this.context.history.listenBeforeLeavingRoute(route, this.routerWillLeave);
26138 },
26139 componentWillUnmount: function componentWillUnmount() {
26140 if (this._unlistenBeforeLeavingRoute) this._unlistenBeforeLeavingRoute();
26141 }
26142 };
26143
26144 exports.default = Lifecycle;
26145 module.exports = exports['default'];
26146
26147/***/ },
26148/* 310 */
26149/***/ function(module, exports, __webpack_require__) {
26150
26151 'use strict';
26152
26153 exports.__esModule = true;
26154
26155 var _routerWarning = __webpack_require__(264);
26156
26157 var _routerWarning2 = _interopRequireDefault(_routerWarning);
26158
26159 var _react = __webpack_require__(89);
26160
26161 var _react2 = _interopRequireDefault(_react);
26162
26163 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26164
26165 var object = _react2.default.PropTypes.object;
26166
26167 /**
26168 * The RouteContext mixin provides a convenient way for route
26169 * components to set the route in context. This is needed for
26170 * routes that render elements that want to use the Lifecycle
26171 * mixin to prevent transitions.
26172 */
26173
26174 var RouteContext = {
26175
26176 propTypes: {
26177 route: object.isRequired
26178 },
26179
26180 childContextTypes: {
26181 route: object.isRequired
26182 },
26183
26184 getChildContext: function getChildContext() {
26185 return {
26186 route: this.props.route
26187 };
26188 },
26189 componentWillMount: function componentWillMount() {
26190 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, 'The `RouteContext` mixin is deprecated. You can provide `this.props.route` on context with your own `contextTypes`. http://tiny.cc/router-routecontextmixin') : void 0;
26191 }
26192 };
26193
26194 exports.default = RouteContext;
26195 module.exports = exports['default'];
26196
26197/***/ },
26198/* 311 */
26199/***/ function(module, exports, __webpack_require__) {
26200
26201 'use strict';
26202
26203 exports.__esModule = true;
26204
26205 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
26206
26207 var _useQueries = __webpack_require__(286);
26208
26209 var _useQueries2 = _interopRequireDefault(_useQueries);
26210
26211 var _createTransitionManager = __webpack_require__(289);
26212
26213 var _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);
26214
26215 var _routerWarning = __webpack_require__(264);
26216
26217 var _routerWarning2 = _interopRequireDefault(_routerWarning);
26218
26219 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26220
26221 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
26222
26223 /**
26224 * Returns a new createHistory function that may be used to create
26225 * history objects that know about routing.
26226 *
26227 * Enhances history objects with the following methods:
26228 *
26229 * - listen((error, nextState) => {})
26230 * - listenBeforeLeavingRoute(route, (nextLocation) => {})
26231 * - match(location, (error, redirectLocation, nextState) => {})
26232 * - isActive(pathname, query, indexOnly=false)
26233 */
26234 function useRoutes(createHistory) {
26235 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, '`useRoutes` is deprecated. Please use `createTransitionManager` instead.') : void 0;
26236
26237 return function () {
26238 var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
26239
26240 var routes = _ref.routes;
26241
26242 var options = _objectWithoutProperties(_ref, ['routes']);
26243
26244 var history = (0, _useQueries2.default)(createHistory)(options);
26245 var transitionManager = (0, _createTransitionManager2.default)(history, routes);
26246 return _extends({}, history, transitionManager);
26247 };
26248 }
26249
26250 exports.default = useRoutes;
26251 module.exports = exports['default'];
26252
26253/***/ },
26254/* 312 */
26255/***/ function(module, exports, __webpack_require__) {
26256
26257 'use strict';
26258
26259 exports.__esModule = true;
26260
26261 var _react = __webpack_require__(89);
26262
26263 var _react2 = _interopRequireDefault(_react);
26264
26265 var _RouterContext = __webpack_require__(297);
26266
26267 var _RouterContext2 = _interopRequireDefault(_RouterContext);
26268
26269 var _routerWarning = __webpack_require__(264);
26270
26271 var _routerWarning2 = _interopRequireDefault(_routerWarning);
26272
26273 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26274
26275 var RoutingContext = _react2.default.createClass({
26276 displayName: 'RoutingContext',
26277 componentWillMount: function componentWillMount() {
26278 (undefined) !== 'production' ? (0, _routerWarning2.default)(false, '`RoutingContext` has been renamed to `RouterContext`. Please use `import { RouterContext } from \'react-router\'`. http://tiny.cc/router-routercontext') : void 0;
26279 },
26280 render: function render() {
26281 return _react2.default.createElement(_RouterContext2.default, this.props);
26282 }
26283 });
26284
26285 exports.default = RoutingContext;
26286 module.exports = exports['default'];
26287
26288/***/ },
26289/* 313 */
26290/***/ function(module, exports, __webpack_require__) {
26291
26292 'use strict';
26293
26294 exports.__esModule = true;
26295
26296 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
26297
26298 var _Actions = __webpack_require__(272);
26299
26300 var _invariant = __webpack_require__(268);
26301
26302 var _invariant2 = _interopRequireDefault(_invariant);
26303
26304 var _createMemoryHistory = __webpack_require__(314);
26305
26306 var _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);
26307
26308 var _createTransitionManager = __webpack_require__(289);
26309
26310 var _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);
26311
26312 var _RouteUtils = __webpack_require__(261);
26313
26314 var _RouterUtils = __webpack_require__(299);
26315
26316 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26317
26318 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
26319
26320 /**
26321 * A high-level API to be used for server-side rendering.
26322 *
26323 * This function matches a location to a set of routes and calls
26324 * callback(error, redirectLocation, renderProps) when finished.
26325 *
26326 * Note: You probably don't want to use this in a browser unless you're using
26327 * server-side rendering with async routes.
26328 */
26329 function match(_ref, callback) {
26330 var history = _ref.history;
26331 var routes = _ref.routes;
26332 var location = _ref.location;
26333
26334 var options = _objectWithoutProperties(_ref, ['history', 'routes', 'location']);
26335
26336 !(history || location) ? (undefined) !== 'production' ? (0, _invariant2.default)(false, 'match needs a history or a location') : (0, _invariant2.default)(false) : void 0;
26337
26338 history = history ? history : (0, _createMemoryHistory2.default)(options);
26339 var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes));
26340
26341 var unlisten = void 0;
26342
26343 if (location) {
26344 // Allow match({ location: '/the/path', ... })
26345 location = history.createLocation(location);
26346 } else {
26347 // Pick up the location from the history via synchronous history.listen
26348 // call if needed.
26349 unlisten = history.listen(function (historyLocation) {
26350 location = historyLocation;
26351 });
26352 }
26353
26354 var router = (0, _RouterUtils.createRouterObject)(history, transitionManager);
26355 history = (0, _RouterUtils.createRoutingHistory)(history, transitionManager);
26356
26357 transitionManager.match(location, function (error, redirectLocation, nextState) {
26358 callback(error, redirectLocation && router.createLocation(redirectLocation, _Actions.REPLACE), nextState && _extends({}, nextState, {
26359 history: history,
26360 router: router,
26361 matchContext: { history: history, transitionManager: transitionManager, router: router }
26362 }));
26363
26364 // Defer removing the listener to here to prevent DOM histories from having
26365 // to unwind DOM event listeners unnecessarily, in case callback renders a
26366 // <Router> and attaches another history listener.
26367 if (unlisten) {
26368 unlisten();
26369 }
26370 });
26371 }
26372
26373 exports.default = match;
26374 module.exports = exports['default'];
26375
26376/***/ },
26377/* 314 */
26378/***/ function(module, exports, __webpack_require__) {
26379
26380 'use strict';
26381
26382 exports.__esModule = true;
26383 exports.default = createMemoryHistory;
26384
26385 var _useQueries = __webpack_require__(286);
26386
26387 var _useQueries2 = _interopRequireDefault(_useQueries);
26388
26389 var _useBasename = __webpack_require__(315);
26390
26391 var _useBasename2 = _interopRequireDefault(_useBasename);
26392
26393 var _createMemoryHistory = __webpack_require__(316);
26394
26395 var _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);
26396
26397 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26398
26399 function createMemoryHistory(options) {
26400 // signatures and type checking differ between `useRoutes` and
26401 // `createMemoryHistory`, have to create `memoryHistory` first because
26402 // `useQueries` doesn't understand the signature
26403 var memoryHistory = (0, _createMemoryHistory2.default)(options);
26404 var createHistory = function createHistory() {
26405 return memoryHistory;
26406 };
26407 var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);
26408 history.__v2_compatible__ = true;
26409 return history;
26410 }
26411 module.exports = exports['default'];
26412
26413/***/ },
26414/* 315 */
26415/***/ function(module, exports, __webpack_require__) {
26416
26417 'use strict';
26418
26419 exports.__esModule = true;
26420
26421 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
26422
26423 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
26424
26425 var _warning = __webpack_require__(271);
26426
26427 var _warning2 = _interopRequireDefault(_warning);
26428
26429 var _ExecutionEnvironment = __webpack_require__(274);
26430
26431 var _PathUtils = __webpack_require__(273);
26432
26433 var _runTransitionHook = __webpack_require__(284);
26434
26435 var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
26436
26437 var _deprecate = __webpack_require__(285);
26438
26439 var _deprecate2 = _interopRequireDefault(_deprecate);
26440
26441 function useBasename(createHistory) {
26442 return function () {
26443 var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
26444
26445 var history = createHistory(options);
26446
26447 var basename = options.basename;
26448
26449 var checkedBaseHref = false;
26450
26451 function checkBaseHref() {
26452 if (checkedBaseHref) {
26453 return;
26454 }
26455
26456 // Automatically use the value of <base href> in HTML
26457 // documents as basename if it's not explicitly given.
26458 if (basename == null && _ExecutionEnvironment.canUseDOM) {
26459 var base = document.getElementsByTagName('base')[0];
26460 var baseHref = base && base.getAttribute('href');
26461
26462 if (baseHref != null) {
26463 basename = baseHref;
26464
26465 (undefined) !== 'production' ? _warning2['default'](false, 'Automatically setting basename using <base href> is deprecated and will ' + 'be removed in the next major release. The semantics of <base href> are ' + 'subtly different from basename. Please pass the basename explicitly in ' + 'the options to createHistory') : undefined;
26466 }
26467 }
26468
26469 checkedBaseHref = true;
26470 }
26471
26472 function addBasename(location) {
26473 checkBaseHref();
26474
26475 if (basename && location.basename == null) {
26476 if (location.pathname.indexOf(basename) === 0) {
26477 location.pathname = location.pathname.substring(basename.length);
26478 location.basename = basename;
26479
26480 if (location.pathname === '') location.pathname = '/';
26481 } else {
26482 location.basename = '';
26483 }
26484 }
26485
26486 return location;
26487 }
26488
26489 function prependBasename(location) {
26490 checkBaseHref();
26491
26492 if (!basename) return location;
26493
26494 if (typeof location === 'string') location = _PathUtils.parsePath(location);
26495
26496 var pname = location.pathname;
26497 var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';
26498 var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;
26499 var pathname = normalizedBasename + normalizedPathname;
26500
26501 return _extends({}, location, {
26502 pathname: pathname
26503 });
26504 }
26505
26506 // Override all read methods with basename-aware versions.
26507 function listenBefore(hook) {
26508 return history.listenBefore(function (location, callback) {
26509 _runTransitionHook2['default'](hook, addBasename(location), callback);
26510 });
26511 }
26512
26513 function listen(listener) {
26514 return history.listen(function (location) {
26515 listener(addBasename(location));
26516 });
26517 }
26518
26519 // Override all write methods with basename-aware versions.
26520 function push(location) {
26521 history.push(prependBasename(location));
26522 }
26523
26524 function replace(location) {
26525 history.replace(prependBasename(location));
26526 }
26527
26528 function createPath(location) {
26529 return history.createPath(prependBasename(location));
26530 }
26531
26532 function createHref(location) {
26533 return history.createHref(prependBasename(location));
26534 }
26535
26536 function createLocation(location) {
26537 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
26538 args[_key - 1] = arguments[_key];
26539 }
26540
26541 return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));
26542 }
26543
26544 // deprecated
26545 function pushState(state, path) {
26546 if (typeof path === 'string') path = _PathUtils.parsePath(path);
26547
26548 push(_extends({ state: state }, path));
26549 }
26550
26551 // deprecated
26552 function replaceState(state, path) {
26553 if (typeof path === 'string') path = _PathUtils.parsePath(path);
26554
26555 replace(_extends({ state: state }, path));
26556 }
26557
26558 return _extends({}, history, {
26559 listenBefore: listenBefore,
26560 listen: listen,
26561 push: push,
26562 replace: replace,
26563 createPath: createPath,
26564 createHref: createHref,
26565 createLocation: createLocation,
26566
26567 pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),
26568 replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')
26569 });
26570 };
26571 }
26572
26573 exports['default'] = useBasename;
26574 module.exports = exports['default'];
26575
26576/***/ },
26577/* 316 */
26578/***/ function(module, exports, __webpack_require__) {
26579
26580 'use strict';
26581
26582 exports.__esModule = true;
26583
26584 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
26585
26586 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
26587
26588 var _warning = __webpack_require__(271);
26589
26590 var _warning2 = _interopRequireDefault(_warning);
26591
26592 var _invariant = __webpack_require__(268);
26593
26594 var _invariant2 = _interopRequireDefault(_invariant);
26595
26596 var _PathUtils = __webpack_require__(273);
26597
26598 var _Actions = __webpack_require__(272);
26599
26600 var _createHistory = __webpack_require__(278);
26601
26602 var _createHistory2 = _interopRequireDefault(_createHistory);
26603
26604 function createStateStorage(entries) {
26605 return entries.filter(function (entry) {
26606 return entry.state;
26607 }).reduce(function (memo, entry) {
26608 memo[entry.key] = entry.state;
26609 return memo;
26610 }, {});
26611 }
26612
26613 function createMemoryHistory() {
26614 var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
26615
26616 if (Array.isArray(options)) {
26617 options = { entries: options };
26618 } else if (typeof options === 'string') {
26619 options = { entries: [options] };
26620 }
26621
26622 var history = _createHistory2['default'](_extends({}, options, {
26623 getCurrentLocation: getCurrentLocation,
26624 finishTransition: finishTransition,
26625 saveState: saveState,
26626 go: go
26627 }));
26628
26629 var _options = options;
26630 var entries = _options.entries;
26631 var current = _options.current;
26632
26633 if (typeof entries === 'string') {
26634 entries = [entries];
26635 } else if (!Array.isArray(entries)) {
26636 entries = ['/'];
26637 }
26638
26639 entries = entries.map(function (entry) {
26640 var key = history.createKey();
26641
26642 if (typeof entry === 'string') return { pathname: entry, key: key };
26643
26644 if (typeof entry === 'object' && entry) return _extends({}, entry, { key: key });
26645
26646 true ? (undefined) !== 'production' ? _invariant2['default'](false, 'Unable to create history entry from %s', entry) : _invariant2['default'](false) : undefined;
26647 });
26648
26649 if (current == null) {
26650 current = entries.length - 1;
26651 } else {
26652 !(current >= 0 && current < entries.length) ? (undefined) !== 'production' ? _invariant2['default'](false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : _invariant2['default'](false) : undefined;
26653 }
26654
26655 var storage = createStateStorage(entries);
26656
26657 function saveState(key, state) {
26658 storage[key] = state;
26659 }
26660
26661 function readState(key) {
26662 return storage[key];
26663 }
26664
26665 function getCurrentLocation() {
26666 var entry = entries[current];
26667 var basename = entry.basename;
26668 var pathname = entry.pathname;
26669 var search = entry.search;
26670
26671 var path = (basename || '') + pathname + (search || '');
26672
26673 var key = undefined,
26674 state = undefined;
26675 if (entry.key) {
26676 key = entry.key;
26677 state = readState(key);
26678 } else {
26679 key = history.createKey();
26680 state = null;
26681 entry.key = key;
26682 }
26683
26684 var location = _PathUtils.parsePath(path);
26685
26686 return history.createLocation(_extends({}, location, { state: state }), undefined, key);
26687 }
26688
26689 function canGo(n) {
26690 var index = current + n;
26691 return index >= 0 && index < entries.length;
26692 }
26693
26694 function go(n) {
26695 if (n) {
26696 if (!canGo(n)) {
26697 (undefined) !== 'production' ? _warning2['default'](false, 'Cannot go(%s) there is not enough history', n) : undefined;
26698 return;
26699 }
26700
26701 current += n;
26702
26703 var currentLocation = getCurrentLocation();
26704
26705 // change action to POP
26706 history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));
26707 }
26708 }
26709
26710 function finishTransition(location) {
26711 switch (location.action) {
26712 case _Actions.PUSH:
26713 current += 1;
26714
26715 // if we are not on the top of stack
26716 // remove rest and push new
26717 if (current < entries.length) entries.splice(current);
26718
26719 entries.push(location);
26720 saveState(location.key, location.state);
26721 break;
26722 case _Actions.REPLACE:
26723 entries[current] = location;
26724 saveState(location.key, location.state);
26725 break;
26726 }
26727 }
26728
26729 return history;
26730 }
26731
26732 exports['default'] = createMemoryHistory;
26733 module.exports = exports['default'];
26734
26735/***/ },
26736/* 317 */
26737/***/ function(module, exports, __webpack_require__) {
26738
26739 'use strict';
26740
26741 exports.__esModule = true;
26742 exports.default = useRouterHistory;
26743
26744 var _useQueries = __webpack_require__(286);
26745
26746 var _useQueries2 = _interopRequireDefault(_useQueries);
26747
26748 var _useBasename = __webpack_require__(315);
26749
26750 var _useBasename2 = _interopRequireDefault(_useBasename);
26751
26752 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26753
26754 function useRouterHistory(createHistory) {
26755 return function (options) {
26756 var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);
26757 history.__v2_compatible__ = true;
26758 return history;
26759 };
26760 }
26761 module.exports = exports['default'];
26762
26763/***/ },
26764/* 318 */
26765/***/ function(module, exports, __webpack_require__) {
26766
26767 'use strict';
26768
26769 exports.__esModule = true;
26770
26771 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
26772
26773 var _react = __webpack_require__(89);
26774
26775 var _react2 = _interopRequireDefault(_react);
26776
26777 var _RouterContext = __webpack_require__(297);
26778
26779 var _RouterContext2 = _interopRequireDefault(_RouterContext);
26780
26781 var _routerWarning = __webpack_require__(264);
26782
26783 var _routerWarning2 = _interopRequireDefault(_routerWarning);
26784
26785 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26786
26787 exports.default = function () {
26788 for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
26789 middlewares[_key] = arguments[_key];
26790 }
26791
26792 if ((undefined) !== 'production') {
26793 middlewares.forEach(function (middleware, index) {
26794 (undefined) !== 'production' ? (0, _routerWarning2.default)(middleware.renderRouterContext || middleware.renderRouteComponent, 'The middleware specified at index ' + index + ' does not appear to be ' + 'a valid React Router middleware.') : void 0;
26795 });
26796 }
26797
26798 var withContext = middlewares.map(function (middleware) {
26799 return middleware.renderRouterContext;
26800 }).filter(Boolean);
26801 var withComponent = middlewares.map(function (middleware) {
26802 return middleware.renderRouteComponent;
26803 }).filter(Boolean);
26804
26805 var makeCreateElement = function makeCreateElement() {
26806 var baseCreateElement = arguments.length <= 0 || arguments[0] === undefined ? _react.createElement : arguments[0];
26807 return function (Component, props) {
26808 return withComponent.reduceRight(function (previous, renderRouteComponent) {
26809 return renderRouteComponent(previous, props);
26810 }, baseCreateElement(Component, props));
26811 };
26812 };
26813
26814 return function (renderProps) {
26815 return withContext.reduceRight(function (previous, renderRouterContext) {
26816 return renderRouterContext(previous, renderProps);
26817 }, _react2.default.createElement(_RouterContext2.default, _extends({}, renderProps, {
26818 createElement: makeCreateElement(renderProps.createElement)
26819 })));
26820 };
26821 };
26822
26823 module.exports = exports['default'];
26824
26825/***/ },
26826/* 319 */
26827/***/ function(module, exports, __webpack_require__) {
26828
26829 'use strict';
26830
26831 exports.__esModule = true;
26832
26833 var _createBrowserHistory = __webpack_require__(320);
26834
26835 var _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);
26836
26837 var _createRouterHistory = __webpack_require__(321);
26838
26839 var _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);
26840
26841 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26842
26843 exports.default = (0, _createRouterHistory2.default)(_createBrowserHistory2.default);
26844 module.exports = exports['default'];
26845
26846/***/ },
26847/* 320 */
26848/***/ function(module, exports, __webpack_require__) {
26849
26850 'use strict';
26851
26852 exports.__esModule = true;
26853
26854 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
26855
26856 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
26857
26858 var _invariant = __webpack_require__(268);
26859
26860 var _invariant2 = _interopRequireDefault(_invariant);
26861
26862 var _Actions = __webpack_require__(272);
26863
26864 var _PathUtils = __webpack_require__(273);
26865
26866 var _ExecutionEnvironment = __webpack_require__(274);
26867
26868 var _DOMUtils = __webpack_require__(275);
26869
26870 var _DOMStateStorage = __webpack_require__(276);
26871
26872 var _createDOMHistory = __webpack_require__(277);
26873
26874 var _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);
26875
26876 /**
26877 * Creates and returns a history object that uses HTML5's history API
26878 * (pushState, replaceState, and the popstate event) to manage history.
26879 * This is the recommended method of managing history in browsers because
26880 * it provides the cleanest URLs.
26881 *
26882 * Note: In browsers that do not support the HTML5 history API full
26883 * page reloads will be used to preserve URLs.
26884 */
26885 function createBrowserHistory() {
26886 var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
26887
26888 !_ExecutionEnvironment.canUseDOM ? (undefined) !== 'production' ? _invariant2['default'](false, 'Browser history needs a DOM') : _invariant2['default'](false) : undefined;
26889
26890 var forceRefresh = options.forceRefresh;
26891
26892 var isSupported = _DOMUtils.supportsHistory();
26893 var useRefresh = !isSupported || forceRefresh;
26894
26895 function getCurrentLocation(historyState) {
26896 try {
26897 historyState = historyState || window.history.state || {};
26898 } catch (e) {
26899 historyState = {};
26900 }
26901
26902 var path = _DOMUtils.getWindowPath();
26903 var _historyState = historyState;
26904 var key = _historyState.key;
26905
26906 var state = undefined;
26907 if (key) {
26908 state = _DOMStateStorage.readState(key);
26909 } else {
26910 state = null;
26911 key = history.createKey();
26912
26913 if (isSupported) window.history.replaceState(_extends({}, historyState, { key: key }), null);
26914 }
26915
26916 var location = _PathUtils.parsePath(path);
26917
26918 return history.createLocation(_extends({}, location, { state: state }), undefined, key);
26919 }
26920
26921 function startPopStateListener(_ref) {
26922 var transitionTo = _ref.transitionTo;
26923
26924 function popStateListener(event) {
26925 if (event.state === undefined) return; // Ignore extraneous popstate events in WebKit.
26926
26927 transitionTo(getCurrentLocation(event.state));
26928 }
26929
26930 _DOMUtils.addEventListener(window, 'popstate', popStateListener);
26931
26932 return function () {
26933 _DOMUtils.removeEventListener(window, 'popstate', popStateListener);
26934 };
26935 }
26936
26937 function finishTransition(location) {
26938 var basename = location.basename;
26939 var pathname = location.pathname;
26940 var search = location.search;
26941 var hash = location.hash;
26942 var state = location.state;
26943 var action = location.action;
26944 var key = location.key;
26945
26946 if (action === _Actions.POP) return; // Nothing to do.
26947
26948 _DOMStateStorage.saveState(key, state);
26949
26950 var path = (basename || '') + pathname + search + hash;
26951 var historyState = {
26952 key: key
26953 };
26954
26955 if (action === _Actions.PUSH) {
26956 if (useRefresh) {
26957 window.location.href = path;
26958 return false; // Prevent location update.
26959 } else {
26960 window.history.pushState(historyState, null, path);
26961 }
26962 } else {
26963 // REPLACE
26964 if (useRefresh) {
26965 window.location.replace(path);
26966 return false; // Prevent location update.
26967 } else {
26968 window.history.replaceState(historyState, null, path);
26969 }
26970 }
26971 }
26972
26973 var history = _createDOMHistory2['default'](_extends({}, options, {
26974 getCurrentLocation: getCurrentLocation,
26975 finishTransition: finishTransition,
26976 saveState: _DOMStateStorage.saveState
26977 }));
26978
26979 var listenerCount = 0,
26980 stopPopStateListener = undefined;
26981
26982 function listenBefore(listener) {
26983 if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);
26984
26985 var unlisten = history.listenBefore(listener);
26986
26987 return function () {
26988 unlisten();
26989
26990 if (--listenerCount === 0) stopPopStateListener();
26991 };
26992 }
26993
26994 function listen(listener) {
26995 if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);
26996
26997 var unlisten = history.listen(listener);
26998
26999 return function () {
27000 unlisten();
27001
27002 if (--listenerCount === 0) stopPopStateListener();
27003 };
27004 }
27005
27006 // deprecated
27007 function registerTransitionHook(hook) {
27008 if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);
27009
27010 history.registerTransitionHook(hook);
27011 }
27012
27013 // deprecated
27014 function unregisterTransitionHook(hook) {
27015 history.unregisterTransitionHook(hook);
27016
27017 if (--listenerCount === 0) stopPopStateListener();
27018 }
27019
27020 return _extends({}, history, {
27021 listenBefore: listenBefore,
27022 listen: listen,
27023 registerTransitionHook: registerTransitionHook,
27024 unregisterTransitionHook: unregisterTransitionHook
27025 });
27026 }
27027
27028 exports['default'] = createBrowserHistory;
27029 module.exports = exports['default'];
27030
27031/***/ },
27032/* 321 */
27033/***/ function(module, exports, __webpack_require__) {
27034
27035 'use strict';
27036
27037 exports.__esModule = true;
27038
27039 exports.default = function (createHistory) {
27040 var history = void 0;
27041 if (canUseDOM) history = (0, _useRouterHistory2.default)(createHistory)();
27042 return history;
27043 };
27044
27045 var _useRouterHistory = __webpack_require__(317);
27046
27047 var _useRouterHistory2 = _interopRequireDefault(_useRouterHistory);
27048
27049 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27050
27051 var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
27052
27053 module.exports = exports['default'];
27054
27055/***/ },
27056/* 322 */
27057/***/ function(module, exports, __webpack_require__) {
27058
27059 'use strict';
27060
27061 exports.__esModule = true;
27062
27063 var _createHashHistory = __webpack_require__(270);
27064
27065 var _createHashHistory2 = _interopRequireDefault(_createHashHistory);
27066
27067 var _createRouterHistory = __webpack_require__(321);
27068
27069 var _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);
27070
27071 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27072
27073 exports.default = (0, _createRouterHistory2.default)(_createHashHistory2.default);
27074 module.exports = exports['default'];
27075
27076/***/ },
27077/* 323 */
27078/***/ function(module, exports, __webpack_require__) {
27079
27080 'use strict';
27081
27082 Object.defineProperty(exports, "__esModule", {
27083 value: true
27084 });
27085
27086 var _react = __webpack_require__(89);
27087
27088 var _react2 = _interopRequireDefault(_react);
27089
27090 var _reactRouter = __webpack_require__(260);
27091
27092 var _app = __webpack_require__(324);
27093
27094 var _app2 = _interopRequireDefault(_app);
27095
27096 var _LoginForm = __webpack_require__(333);
27097
27098 var _LoginForm2 = _interopRequireDefault(_LoginForm);
27099
27100 var _RegisterPage = __webpack_require__(599);
27101
27102 var _RegisterPage2 = _interopRequireDefault(_RegisterPage);
27103
27104 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27105
27106 var basePath = document.getElementById('baseUrlHolder').getAttribute('data');
27107 // Self-defined
27108 /* global document, require */
27109
27110 /**
27111 * Routes for login/register
27112 * @author patrickkerrypei / https://github.com/patrickkerrypei
27113 */
27114
27115 // Libraries
27116 exports.default = _react2.default.createElement(
27117 _reactRouter.Route,
27118 { path: basePath, component: _app2.default, basePath: basePath },
27119 _react2.default.createElement(_reactRouter.Route, { path: 'login', component: _LoginForm2.default }),
27120 _react2.default.createElement(_reactRouter.Route, { path: 'register', component: _RegisterPage2.default })
27121 );
27122
27123/***/ },
27124/* 324 */
27125/***/ function(module, exports, __webpack_require__) {
27126
27127 'use strict';
27128
27129 Object.defineProperty(exports, "__esModule", {
27130 value: true
27131 });
27132
27133 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
27134
27135 var _react = __webpack_require__(89);
27136
27137 var _react2 = _interopRequireDefault(_react);
27138
27139 var _loginClient = __webpack_require__(325);
27140
27141 var _loginClient2 = _interopRequireDefault(_loginClient);
27142
27143 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27144
27145 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27146
27147 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
27148
27149 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
27150 * @author pmeijer / https://github.com/pmeijer
27151 */
27152
27153 // Libraries
27154
27155 // Self-defined
27156
27157
27158 var App = function (_Component) {
27159 _inherits(App, _Component);
27160
27161 function App(props) {
27162 _classCallCheck(this, App);
27163
27164 var _this = _possibleConstructorReturn(this, (App.__proto__ || Object.getPrototypeOf(App)).call(this, props));
27165
27166 _this.loginClient = new _loginClient2.default();
27167
27168 if (typeof window.sessionStorage.getItem('originalReferrer') !== 'string') {
27169 // Use top in case embedded in iframe.
27170 window.sessionStorage.setItem('originalReferrer', window.top.document.referrer);
27171 }
27172 return _this;
27173 }
27174
27175 _createClass(App, [{
27176 key: 'render',
27177 value: function render() {
27178 var _this2 = this;
27179
27180 // Passing props through the route
27181 var FormWithBasePath = _react2.default.Children.map(this.props.children, function (child) {
27182 return _react2.default.cloneElement(child, {
27183 loginClient: _this2.loginClient,
27184 basePath: _this2.props.route.basePath
27185 });
27186 });
27187
27188 return _react2.default.createElement(
27189 'div',
27190 { className: 'login-box' },
27191 _react2.default.createElement(
27192 'div',
27193 { className: 'login-logo' },
27194 _react2.default.createElement(
27195 'b',
27196 null,
27197 'GME'
27198 ),
27199 'Profile'
27200 ),
27201 FormWithBasePath
27202 );
27203 }
27204 }]);
27205
27206 return App;
27207 }(_react.Component);
27208
27209 exports.default = App;
27210
27211
27212 App.propTypes = {
27213 route: _react2.default.PropTypes.shape({
27214 basePath: _react2.default.PropTypes.string.isRequired
27215 })
27216 };
27217
27218/***/ },
27219/* 325 */
27220/***/ function(module, exports, __webpack_require__) {
27221
27222 'use strict';
27223
27224 Object.defineProperty(exports, "__esModule", {
27225 value: true
27226 });
27227
27228 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
27229
27230 var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
27231
27232 var _baseClient = __webpack_require__(326);
27233
27234 var _baseClient2 = _interopRequireDefault(_baseClient);
27235
27236 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27237
27238 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27239
27240 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
27241
27242 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
27243 * @author pmeijer / https://github.com/pmeijer
27244 * @author patrickkerrypei / https://github.com/patrickkerrypei
27245 */
27246
27247 /* eslint-env node, browser */
27248
27249 /**
27250 * Class for logging in and registering user. Note that these post requests do not require
27251 * the user to be authenticated.
27252 * @class
27253 */
27254 var LoginClient = function (_BaseClient) {
27255 _inherits(LoginClient, _BaseClient);
27256
27257 function LoginClient() {
27258 var baseUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
27259
27260 _classCallCheck(this, LoginClient);
27261
27262 return _possibleConstructorReturn(this, (LoginClient.__proto__ || Object.getPrototypeOf(LoginClient)).call(this, baseUrl));
27263 }
27264
27265 /**
27266 * Post request for logging in as userId.
27267 * If successful client will be redirected to the path given in query parameter
27268 * @param {string} userId - id of user
27269 * @param {string} password - password of user
27270 * @return {Promise} resolves if successfully logged in.
27271 */
27272
27273
27274 _createClass(LoginClient, [{
27275 key: 'login',
27276 value: function login(userId, password) {
27277 var data = {
27278 userId: userId,
27279 password: password
27280 };
27281
27282 return _get(LoginClient.prototype.__proto__ || Object.getPrototypeOf(LoginClient.prototype), 'post', this).call(this, ['/login'], data);
27283 }
27284
27285 /**
27286 * Post request for registering a new user.
27287 * @param {string} userId - Id of new user
27288 * @param {string} password - Password for user
27289 * @param {string} [email=''] - optional email address.
27290 * @return {Promise} - resolves if successfully added user, rejects otherwise.
27291 */
27292
27293 }, {
27294 key: 'register',
27295 value: function register(userId, password, email) {
27296 var data = {
27297 userId: userId,
27298 password: password,
27299 email: email || ''
27300 };
27301
27302 return _get(LoginClient.prototype.__proto__ || Object.getPrototypeOf(LoginClient.prototype), 'post', this).call(this, ['/api', 'register'], data);
27303 }
27304 }, {
27305 key: 'getGmeConfig',
27306 value: function getGmeConfig() {
27307 return _get(LoginClient.prototype.__proto__ || Object.getPrototypeOf(LoginClient.prototype), 'get', this).call(this, ['/gmeConfig.json']);
27308 }
27309 }]);
27310
27311 return LoginClient;
27312 }(_baseClient2.default);
27313
27314 exports.default = LoginClient;
27315
27316/***/ },
27317/* 326 */
27318/***/ function(module, exports, __webpack_require__) {
27319
27320 'use strict';
27321
27322 Object.defineProperty(exports, "__esModule", {
27323 value: true
27324 });
27325
27326 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**
27327 * Base client with core requests
27328 * @author patrickkerrypei / https://github.com/patrickkerrypei
27329 */
27330
27331 /* eslint-env node, browser */
27332
27333
27334 var _superagent = __webpack_require__(327);
27335
27336 var _superagent2 = _interopRequireDefault(_superagent);
27337
27338 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27339
27340 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27341
27342 var BaseClient = function () {
27343 function BaseClient(baseUrl) {
27344 _classCallCheck(this, BaseClient);
27345
27346 this.baseUrl = baseUrl;
27347 }
27348
27349 /**
27350 * General GET request
27351 * @param {Array} path - path (ex. ['projects', 'ownerId', 'projectName'])
27352 * @param {Object} query - query if any (ex. {n: 100})
27353 * @return {Promise} //TODO: How to document the resolved value.
27354 */
27355
27356
27357 _createClass(BaseClient, [{
27358 key: 'get',
27359 value: function get(path) {
27360 var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
27361
27362 var url = this.baseUrl + path.join('/') + '/';
27363
27364 return new Promise(function (resolve, reject) {
27365 _superagent2.default.get(url).query(query).end(function (err, res) {
27366 if (err || !res.ok) {
27367 console.error(err); // eslint-disable-line no-console
27368 reject(err);
27369 } else {
27370 resolve(res.body);
27371 }
27372 });
27373 });
27374 }
27375
27376 /**
27377 * General PATCH request
27378 * @param {Array} path - path (ex. ['projects', 'ownerId', 'projectName'])
27379 * @param {object} value - value to be updated
27380 * @return {Promise} //TODO: How to document the resolved value.
27381 */
27382
27383 }, {
27384 key: 'patch',
27385 value: function patch(path, value) {
27386 var url = this.baseUrl + path.join('/') + '/';
27387
27388 return new Promise(function (resolve, reject) {
27389 _superagent2.default.patch(url).send(value).end(function (err, res) {
27390 if (err) {
27391 console.error(err); // eslint-disable-line no-console
27392 reject(err);
27393 } else {
27394 resolve(res.body);
27395 }
27396 });
27397 });
27398 }
27399
27400 /**
27401 * General POST request
27402 * @param {Array} path - path (ex. ['projects', 'ownerId', 'projectName'])
27403 * @param {object} data - data to be sent (ex. {userId: 'exampleId', password: 'examplePassword'})
27404 * @return {Promise} //TODO: How to document the resolved value.
27405 */
27406
27407 }, {
27408 key: 'post',
27409 value: function post(path) {
27410 var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
27411
27412 var url = this.baseUrl + path.join('/') + '/';
27413
27414 return new Promise(function (resolve, reject) {
27415 _superagent2.default.post(url).send(data).end(function (err, res) {
27416 if (err) {
27417 console.error(err); // eslint-disable-line no-console
27418 reject(err);
27419 } else {
27420 resolve(res);
27421 }
27422 });
27423 });
27424 }
27425
27426 /**
27427 * General PUT request
27428 * @param {Array} path - path (ex. ['projects', 'ownerId', 'projectName'])
27429 * @param {object} value - value to be set
27430 * @return {Promise} //TODO: How to document the resolved value.
27431 */
27432
27433 }, {
27434 key: 'put',
27435 value: function put(path) {
27436 var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
27437
27438 var url = this.baseUrl + path.join('/') + '/';
27439
27440 return new Promise(function (resolve, reject) {
27441 _superagent2.default.put(url).send(value).end(function (err, res) {
27442 if (err) {
27443 console.error(err); // eslint-disable-line no-console
27444 reject(err);
27445 } else {
27446 resolve(res.body);
27447 }
27448 });
27449 });
27450 }
27451
27452 /**
27453 * General DELETE request
27454 * @param {Array} path - path (ex. ['projects', 'ownerId', 'projectName'])
27455 * @param {Object} query - query if any (ex. {force: true})
27456 * @return {Promise} //TODO: How to document the resolved value.
27457 */
27458
27459 }, {
27460 key: 'delete',
27461 value: function _delete(path) {
27462 var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
27463
27464 var url = this.baseUrl + path.join('/') + '/';
27465
27466 return new Promise(function (resolve, reject) {
27467 _superagent2.default.delete(url).query(query).end(function (err, res) {
27468 if (err || !res.ok) {
27469 console.error(err); // eslint-disable-line no-console
27470 reject(err);
27471 } else {
27472 resolve(res.body);
27473 }
27474 });
27475 });
27476 }
27477 }]);
27478
27479 return BaseClient;
27480 }();
27481
27482 exports.default = BaseClient;
27483
27484/***/ },
27485/* 327 */
27486/***/ function(module, exports, __webpack_require__) {
27487
27488 /**
27489 * Module dependencies.
27490 */
27491
27492 var Emitter = __webpack_require__(328);
27493 var reduce = __webpack_require__(329);
27494 var requestBase = __webpack_require__(330);
27495 var isObject = __webpack_require__(331);
27496
27497 /**
27498 * Root reference for iframes.
27499 */
27500
27501 var root;
27502 if (typeof window !== 'undefined') { // Browser window
27503 root = window;
27504 } else if (typeof self !== 'undefined') { // Web Worker
27505 root = self;
27506 } else { // Other environments
27507 root = this;
27508 }
27509
27510 /**
27511 * Noop.
27512 */
27513
27514 function noop(){};
27515
27516 /**
27517 * Check if `obj` is a host object,
27518 * we don't want to serialize these :)
27519 *
27520 * TODO: future proof, move to compoent land
27521 *
27522 * @param {Object} obj
27523 * @return {Boolean}
27524 * @api private
27525 */
27526
27527 function isHost(obj) {
27528 var str = {}.toString.call(obj);
27529
27530 switch (str) {
27531 case '[object File]':
27532 case '[object Blob]':
27533 case '[object FormData]':
27534 return true;
27535 default:
27536 return false;
27537 }
27538 }
27539
27540 /**
27541 * Expose `request`.
27542 */
27543
27544 var request = module.exports = __webpack_require__(332).bind(null, Request);
27545
27546 /**
27547 * Determine XHR.
27548 */
27549
27550 request.getXHR = function () {
27551 if (root.XMLHttpRequest
27552 && (!root.location || 'file:' != root.location.protocol
27553 || !root.ActiveXObject)) {
27554 return new XMLHttpRequest;
27555 } else {
27556 try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}
27557 try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}
27558 try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}
27559 try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}
27560 }
27561 return false;
27562 };
27563
27564 /**
27565 * Removes leading and trailing whitespace, added to support IE.
27566 *
27567 * @param {String} s
27568 * @return {String}
27569 * @api private
27570 */
27571
27572 var trim = ''.trim
27573 ? function(s) { return s.trim(); }
27574 : function(s) { return s.replace(/(^\s*|\s*$)/g, ''); };
27575
27576 /**
27577 * Serialize the given `obj`.
27578 *
27579 * @param {Object} obj
27580 * @return {String}
27581 * @api private
27582 */
27583
27584 function serialize(obj) {
27585 if (!isObject(obj)) return obj;
27586 var pairs = [];
27587 for (var key in obj) {
27588 if (null != obj[key]) {
27589 pushEncodedKeyValuePair(pairs, key, obj[key]);
27590 }
27591 }
27592 return pairs.join('&');
27593 }
27594
27595 /**
27596 * Helps 'serialize' with serializing arrays.
27597 * Mutates the pairs array.
27598 *
27599 * @param {Array} pairs
27600 * @param {String} key
27601 * @param {Mixed} val
27602 */
27603
27604 function pushEncodedKeyValuePair(pairs, key, val) {
27605 if (Array.isArray(val)) {
27606 return val.forEach(function(v) {
27607 pushEncodedKeyValuePair(pairs, key, v);
27608 });
27609 }
27610 pairs.push(encodeURIComponent(key)
27611 + '=' + encodeURIComponent(val));
27612 }
27613
27614 /**
27615 * Expose serialization method.
27616 */
27617
27618 request.serializeObject = serialize;
27619
27620 /**
27621 * Parse the given x-www-form-urlencoded `str`.
27622 *
27623 * @param {String} str
27624 * @return {Object}
27625 * @api private
27626 */
27627
27628 function parseString(str) {
27629 var obj = {};
27630 var pairs = str.split('&');
27631 var parts;
27632 var pair;
27633
27634 for (var i = 0, len = pairs.length; i < len; ++i) {
27635 pair = pairs[i];
27636 parts = pair.split('=');
27637 obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
27638 }
27639
27640 return obj;
27641 }
27642
27643 /**
27644 * Expose parser.
27645 */
27646
27647 request.parseString = parseString;
27648
27649 /**
27650 * Default MIME type map.
27651 *
27652 * superagent.types.xml = 'application/xml';
27653 *
27654 */
27655
27656 request.types = {
27657 html: 'text/html',
27658 json: 'application/json',
27659 xml: 'application/xml',
27660 urlencoded: 'application/x-www-form-urlencoded',
27661 'form': 'application/x-www-form-urlencoded',
27662 'form-data': 'application/x-www-form-urlencoded'
27663 };
27664
27665 /**
27666 * Default serialization map.
27667 *
27668 * superagent.serialize['application/xml'] = function(obj){
27669 * return 'generated xml here';
27670 * };
27671 *
27672 */
27673
27674 request.serialize = {
27675 'application/x-www-form-urlencoded': serialize,
27676 'application/json': JSON.stringify
27677 };
27678
27679 /**
27680 * Default parsers.
27681 *
27682 * superagent.parse['application/xml'] = function(str){
27683 * return { object parsed from str };
27684 * };
27685 *
27686 */
27687
27688 request.parse = {
27689 'application/x-www-form-urlencoded': parseString,
27690 'application/json': JSON.parse
27691 };
27692
27693 /**
27694 * Parse the given header `str` into
27695 * an object containing the mapped fields.
27696 *
27697 * @param {String} str
27698 * @return {Object}
27699 * @api private
27700 */
27701
27702 function parseHeader(str) {
27703 var lines = str.split(/\r?\n/);
27704 var fields = {};
27705 var index;
27706 var line;
27707 var field;
27708 var val;
27709
27710 lines.pop(); // trailing CRLF
27711
27712 for (var i = 0, len = lines.length; i < len; ++i) {
27713 line = lines[i];
27714 index = line.indexOf(':');
27715 field = line.slice(0, index).toLowerCase();
27716 val = trim(line.slice(index + 1));
27717 fields[field] = val;
27718 }
27719
27720 return fields;
27721 }
27722
27723 /**
27724 * Check if `mime` is json or has +json structured syntax suffix.
27725 *
27726 * @param {String} mime
27727 * @return {Boolean}
27728 * @api private
27729 */
27730
27731 function isJSON(mime) {
27732 return /[\/+]json\b/.test(mime);
27733 }
27734
27735 /**
27736 * Return the mime type for the given `str`.
27737 *
27738 * @param {String} str
27739 * @return {String}
27740 * @api private
27741 */
27742
27743 function type(str){
27744 return str.split(/ *; */).shift();
27745 };
27746
27747 /**
27748 * Return header field parameters.
27749 *
27750 * @param {String} str
27751 * @return {Object}
27752 * @api private
27753 */
27754
27755 function params(str){
27756 return reduce(str.split(/ *; */), function(obj, str){
27757 var parts = str.split(/ *= */)
27758 , key = parts.shift()
27759 , val = parts.shift();
27760
27761 if (key && val) obj[key] = val;
27762 return obj;
27763 }, {});
27764 };
27765
27766 /**
27767 * Initialize a new `Response` with the given `xhr`.
27768 *
27769 * - set flags (.ok, .error, etc)
27770 * - parse header
27771 *
27772 * Examples:
27773 *
27774 * Aliasing `superagent` as `request` is nice:
27775 *
27776 * request = superagent;
27777 *
27778 * We can use the promise-like API, or pass callbacks:
27779 *
27780 * request.get('/').end(function(res){});
27781 * request.get('/', function(res){});
27782 *
27783 * Sending data can be chained:
27784 *
27785 * request
27786 * .post('/user')
27787 * .send({ name: 'tj' })
27788 * .end(function(res){});
27789 *
27790 * Or passed to `.send()`:
27791 *
27792 * request
27793 * .post('/user')
27794 * .send({ name: 'tj' }, function(res){});
27795 *
27796 * Or passed to `.post()`:
27797 *
27798 * request
27799 * .post('/user', { name: 'tj' })
27800 * .end(function(res){});
27801 *
27802 * Or further reduced to a single call for simple cases:
27803 *
27804 * request
27805 * .post('/user', { name: 'tj' }, function(res){});
27806 *
27807 * @param {XMLHTTPRequest} xhr
27808 * @param {Object} options
27809 * @api private
27810 */
27811
27812 function Response(req, options) {
27813 options = options || {};
27814 this.req = req;
27815 this.xhr = this.req.xhr;
27816 // responseText is accessible only if responseType is '' or 'text' and on older browsers
27817 this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')
27818 ? this.xhr.responseText
27819 : null;
27820 this.statusText = this.req.xhr.statusText;
27821 this.setStatusProperties(this.xhr.status);
27822 this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());
27823 // getAllResponseHeaders sometimes falsely returns "" for CORS requests, but
27824 // getResponseHeader still works. so we get content-type even if getting
27825 // other headers fails.
27826 this.header['content-type'] = this.xhr.getResponseHeader('content-type');
27827 this.setHeaderProperties(this.header);
27828 this.body = this.req.method != 'HEAD'
27829 ? this.parseBody(this.text ? this.text : this.xhr.response)
27830 : null;
27831 }
27832
27833 /**
27834 * Get case-insensitive `field` value.
27835 *
27836 * @param {String} field
27837 * @return {String}
27838 * @api public
27839 */
27840
27841 Response.prototype.get = function(field){
27842 return this.header[field.toLowerCase()];
27843 };
27844
27845 /**
27846 * Set header related properties:
27847 *
27848 * - `.type` the content type without params
27849 *
27850 * A response of "Content-Type: text/plain; charset=utf-8"
27851 * will provide you with a `.type` of "text/plain".
27852 *
27853 * @param {Object} header
27854 * @api private
27855 */
27856
27857 Response.prototype.setHeaderProperties = function(header){
27858 // content-type
27859 var ct = this.header['content-type'] || '';
27860 this.type = type(ct);
27861
27862 // params
27863 var obj = params(ct);
27864 for (var key in obj) this[key] = obj[key];
27865 };
27866
27867 /**
27868 * Parse the given body `str`.
27869 *
27870 * Used for auto-parsing of bodies. Parsers
27871 * are defined on the `superagent.parse` object.
27872 *
27873 * @param {String} str
27874 * @return {Mixed}
27875 * @api private
27876 */
27877
27878 Response.prototype.parseBody = function(str){
27879 var parse = request.parse[this.type];
27880 if (!parse && isJSON(this.type)) {
27881 parse = request.parse['application/json'];
27882 }
27883 return parse && str && (str.length || str instanceof Object)
27884 ? parse(str)
27885 : null;
27886 };
27887
27888 /**
27889 * Set flags such as `.ok` based on `status`.
27890 *
27891 * For example a 2xx response will give you a `.ok` of __true__
27892 * whereas 5xx will be __false__ and `.error` will be __true__. The
27893 * `.clientError` and `.serverError` are also available to be more
27894 * specific, and `.statusType` is the class of error ranging from 1..5
27895 * sometimes useful for mapping respond colors etc.
27896 *
27897 * "sugar" properties are also defined for common cases. Currently providing:
27898 *
27899 * - .noContent
27900 * - .badRequest
27901 * - .unauthorized
27902 * - .notAcceptable
27903 * - .notFound
27904 *
27905 * @param {Number} status
27906 * @api private
27907 */
27908
27909 Response.prototype.setStatusProperties = function(status){
27910 // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request
27911 if (status === 1223) {
27912 status = 204;
27913 }
27914
27915 var type = status / 100 | 0;
27916
27917 // status / class
27918 this.status = this.statusCode = status;
27919 this.statusType = type;
27920
27921 // basics
27922 this.info = 1 == type;
27923 this.ok = 2 == type;
27924 this.clientError = 4 == type;
27925 this.serverError = 5 == type;
27926 this.error = (4 == type || 5 == type)
27927 ? this.toError()
27928 : false;
27929
27930 // sugar
27931 this.accepted = 202 == status;
27932 this.noContent = 204 == status;
27933 this.badRequest = 400 == status;
27934 this.unauthorized = 401 == status;
27935 this.notAcceptable = 406 == status;
27936 this.notFound = 404 == status;
27937 this.forbidden = 403 == status;
27938 };
27939
27940 /**
27941 * Return an `Error` representative of this response.
27942 *
27943 * @return {Error}
27944 * @api public
27945 */
27946
27947 Response.prototype.toError = function(){
27948 var req = this.req;
27949 var method = req.method;
27950 var url = req.url;
27951
27952 var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';
27953 var err = new Error(msg);
27954 err.status = this.status;
27955 err.method = method;
27956 err.url = url;
27957
27958 return err;
27959 };
27960
27961 /**
27962 * Expose `Response`.
27963 */
27964
27965 request.Response = Response;
27966
27967 /**
27968 * Initialize a new `Request` with the given `method` and `url`.
27969 *
27970 * @param {String} method
27971 * @param {String} url
27972 * @api public
27973 */
27974
27975 function Request(method, url) {
27976 var self = this;
27977 this._query = this._query || [];
27978 this.method = method;
27979 this.url = url;
27980 this.header = {}; // preserves header name case
27981 this._header = {}; // coerces header names to lowercase
27982 this.on('end', function(){
27983 var err = null;
27984 var res = null;
27985
27986 try {
27987 res = new Response(self);
27988 } catch(e) {
27989 err = new Error('Parser is unable to parse the response');
27990 err.parse = true;
27991 err.original = e;
27992 // issue #675: return the raw response if the response parsing fails
27993 err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;
27994 // issue #876: return the http status code if the response parsing fails
27995 err.statusCode = self.xhr && self.xhr.status ? self.xhr.status : null;
27996 return self.callback(err);
27997 }
27998
27999 self.emit('response', res);
28000
28001 if (err) {
28002 return self.callback(err, res);
28003 }
28004
28005 if (res.status >= 200 && res.status < 300) {
28006 return self.callback(err, res);
28007 }
28008
28009 var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');
28010 new_err.original = err;
28011 new_err.response = res;
28012 new_err.status = res.status;
28013
28014 self.callback(new_err, res);
28015 });
28016 }
28017
28018 /**
28019 * Mixin `Emitter` and `requestBase`.
28020 */
28021
28022 Emitter(Request.prototype);
28023 for (var key in requestBase) {
28024 Request.prototype[key] = requestBase[key];
28025 }
28026
28027 /**
28028 * Abort the request, and clear potential timeout.
28029 *
28030 * @return {Request}
28031 * @api public
28032 */
28033
28034 Request.prototype.abort = function(){
28035 if (this.aborted) return;
28036 this.aborted = true;
28037 this.xhr && this.xhr.abort();
28038 this.clearTimeout();
28039 this.emit('abort');
28040 return this;
28041 };
28042
28043 /**
28044 * Set Content-Type to `type`, mapping values from `request.types`.
28045 *
28046 * Examples:
28047 *
28048 * superagent.types.xml = 'application/xml';
28049 *
28050 * request.post('/')
28051 * .type('xml')
28052 * .send(xmlstring)
28053 * .end(callback);
28054 *
28055 * request.post('/')
28056 * .type('application/xml')
28057 * .send(xmlstring)
28058 * .end(callback);
28059 *
28060 * @param {String} type
28061 * @return {Request} for chaining
28062 * @api public
28063 */
28064
28065 Request.prototype.type = function(type){
28066 this.set('Content-Type', request.types[type] || type);
28067 return this;
28068 };
28069
28070 /**
28071 * Set responseType to `val`. Presently valid responseTypes are 'blob' and
28072 * 'arraybuffer'.
28073 *
28074 * Examples:
28075 *
28076 * req.get('/')
28077 * .responseType('blob')
28078 * .end(callback);
28079 *
28080 * @param {String} val
28081 * @return {Request} for chaining
28082 * @api public
28083 */
28084
28085 Request.prototype.responseType = function(val){
28086 this._responseType = val;
28087 return this;
28088 };
28089
28090 /**
28091 * Set Accept to `type`, mapping values from `request.types`.
28092 *
28093 * Examples:
28094 *
28095 * superagent.types.json = 'application/json';
28096 *
28097 * request.get('/agent')
28098 * .accept('json')
28099 * .end(callback);
28100 *
28101 * request.get('/agent')
28102 * .accept('application/json')
28103 * .end(callback);
28104 *
28105 * @param {String} accept
28106 * @return {Request} for chaining
28107 * @api public
28108 */
28109
28110 Request.prototype.accept = function(type){
28111 this.set('Accept', request.types[type] || type);
28112 return this;
28113 };
28114
28115 /**
28116 * Set Authorization field value with `user` and `pass`.
28117 *
28118 * @param {String} user
28119 * @param {String} pass
28120 * @param {Object} options with 'type' property 'auto' or 'basic' (default 'basic')
28121 * @return {Request} for chaining
28122 * @api public
28123 */
28124
28125 Request.prototype.auth = function(user, pass, options){
28126 if (!options) {
28127 options = {
28128 type: 'basic'
28129 }
28130 }
28131
28132 switch (options.type) {
28133 case 'basic':
28134 var str = btoa(user + ':' + pass);
28135 this.set('Authorization', 'Basic ' + str);
28136 break;
28137
28138 case 'auto':
28139 this.username = user;
28140 this.password = pass;
28141 break;
28142 }
28143 return this;
28144 };
28145
28146 /**
28147 * Add query-string `val`.
28148 *
28149 * Examples:
28150 *
28151 * request.get('/shoes')
28152 * .query('size=10')
28153 * .query({ color: 'blue' })
28154 *
28155 * @param {Object|String} val
28156 * @return {Request} for chaining
28157 * @api public
28158 */
28159
28160 Request.prototype.query = function(val){
28161 if ('string' != typeof val) val = serialize(val);
28162 if (val) this._query.push(val);
28163 return this;
28164 };
28165
28166 /**
28167 * Queue the given `file` as an attachment to the specified `field`,
28168 * with optional `filename`.
28169 *
28170 * ``` js
28171 * request.post('/upload')
28172 * .attach(new Blob(['<a id="a"><b id="b">hey!</b></a>'], { type: "text/html"}))
28173 * .end(callback);
28174 * ```
28175 *
28176 * @param {String} field
28177 * @param {Blob|File} file
28178 * @param {String} filename
28179 * @return {Request} for chaining
28180 * @api public
28181 */
28182
28183 Request.prototype.attach = function(field, file, filename){
28184 this._getFormData().append(field, file, filename || file.name);
28185 return this;
28186 };
28187
28188 Request.prototype._getFormData = function(){
28189 if (!this._formData) {
28190 this._formData = new root.FormData();
28191 }
28192 return this._formData;
28193 };
28194
28195 /**
28196 * Send `data` as the request body, defaulting the `.type()` to "json" when
28197 * an object is given.
28198 *
28199 * Examples:
28200 *
28201 * // manual json
28202 * request.post('/user')
28203 * .type('json')
28204 * .send('{"name":"tj"}')
28205 * .end(callback)
28206 *
28207 * // auto json
28208 * request.post('/user')
28209 * .send({ name: 'tj' })
28210 * .end(callback)
28211 *
28212 * // manual x-www-form-urlencoded
28213 * request.post('/user')
28214 * .type('form')
28215 * .send('name=tj')
28216 * .end(callback)
28217 *
28218 * // auto x-www-form-urlencoded
28219 * request.post('/user')
28220 * .type('form')
28221 * .send({ name: 'tj' })
28222 * .end(callback)
28223 *
28224 * // defaults to x-www-form-urlencoded
28225 * request.post('/user')
28226 * .send('name=tobi')
28227 * .send('species=ferret')
28228 * .end(callback)
28229 *
28230 * @param {String|Object} data
28231 * @return {Request} for chaining
28232 * @api public
28233 */
28234
28235 Request.prototype.send = function(data){
28236 var obj = isObject(data);
28237 var type = this._header['content-type'];
28238
28239 // merge
28240 if (obj && isObject(this._data)) {
28241 for (var key in data) {
28242 this._data[key] = data[key];
28243 }
28244 } else if ('string' == typeof data) {
28245 if (!type) this.type('form');
28246 type = this._header['content-type'];
28247 if ('application/x-www-form-urlencoded' == type) {
28248 this._data = this._data
28249 ? this._data + '&' + data
28250 : data;
28251 } else {
28252 this._data = (this._data || '') + data;
28253 }
28254 } else {
28255 this._data = data;
28256 }
28257
28258 if (!obj || isHost(data)) return this;
28259 if (!type) this.type('json');
28260 return this;
28261 };
28262
28263 /**
28264 * @deprecated
28265 */
28266 Response.prototype.parse = function serialize(fn){
28267 if (root.console) {
28268 console.warn("Client-side parse() method has been renamed to serialize(). This method is not compatible with superagent v2.0");
28269 }
28270 this.serialize(fn);
28271 return this;
28272 };
28273
28274 Response.prototype.serialize = function serialize(fn){
28275 this._parser = fn;
28276 return this;
28277 };
28278
28279 /**
28280 * Invoke the callback with `err` and `res`
28281 * and handle arity check.
28282 *
28283 * @param {Error} err
28284 * @param {Response} res
28285 * @api private
28286 */
28287
28288 Request.prototype.callback = function(err, res){
28289 var fn = this._callback;
28290 this.clearTimeout();
28291 fn(err, res);
28292 };
28293
28294 /**
28295 * Invoke callback with x-domain error.
28296 *
28297 * @api private
28298 */
28299
28300 Request.prototype.crossDomainError = function(){
28301 var err = new Error('Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');
28302 err.crossDomain = true;
28303
28304 err.status = this.status;
28305 err.method = this.method;
28306 err.url = this.url;
28307
28308 this.callback(err);
28309 };
28310
28311 /**
28312 * Invoke callback with timeout error.
28313 *
28314 * @api private
28315 */
28316
28317 Request.prototype.timeoutError = function(){
28318 var timeout = this._timeout;
28319 var err = new Error('timeout of ' + timeout + 'ms exceeded');
28320 err.timeout = timeout;
28321 this.callback(err);
28322 };
28323
28324 /**
28325 * Enable transmission of cookies with x-domain requests.
28326 *
28327 * Note that for this to work the origin must not be
28328 * using "Access-Control-Allow-Origin" with a wildcard,
28329 * and also must set "Access-Control-Allow-Credentials"
28330 * to "true".
28331 *
28332 * @api public
28333 */
28334
28335 Request.prototype.withCredentials = function(){
28336 this._withCredentials = true;
28337 return this;
28338 };
28339
28340 /**
28341 * Initiate request, invoking callback `fn(res)`
28342 * with an instanceof `Response`.
28343 *
28344 * @param {Function} fn
28345 * @return {Request} for chaining
28346 * @api public
28347 */
28348
28349 Request.prototype.end = function(fn){
28350 var self = this;
28351 var xhr = this.xhr = request.getXHR();
28352 var query = this._query.join('&');
28353 var timeout = this._timeout;
28354 var data = this._formData || this._data;
28355
28356 // store callback
28357 this._callback = fn || noop;
28358
28359 // state change
28360 xhr.onreadystatechange = function(){
28361 if (4 != xhr.readyState) return;
28362
28363 // In IE9, reads to any property (e.g. status) off of an aborted XHR will
28364 // result in the error "Could not complete the operation due to error c00c023f"
28365 var status;
28366 try { status = xhr.status } catch(e) { status = 0; }
28367
28368 if (0 == status) {
28369 if (self.timedout) return self.timeoutError();
28370 if (self.aborted) return;
28371 return self.crossDomainError();
28372 }
28373 self.emit('end');
28374 };
28375
28376 // progress
28377 var handleProgress = function(e){
28378 if (e.total > 0) {
28379 e.percent = e.loaded / e.total * 100;
28380 }
28381 e.direction = 'download';
28382 self.emit('progress', e);
28383 };
28384 if (this.hasListeners('progress')) {
28385 xhr.onprogress = handleProgress;
28386 }
28387 try {
28388 if (xhr.upload && this.hasListeners('progress')) {
28389 xhr.upload.onprogress = handleProgress;
28390 }
28391 } catch(e) {
28392 // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.
28393 // Reported here:
28394 // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context
28395 }
28396
28397 // timeout
28398 if (timeout && !this._timer) {
28399 this._timer = setTimeout(function(){
28400 self.timedout = true;
28401 self.abort();
28402 }, timeout);
28403 }
28404
28405 // querystring
28406 if (query) {
28407 query = request.serializeObject(query);
28408 this.url += ~this.url.indexOf('?')
28409 ? '&' + query
28410 : '?' + query;
28411 }
28412
28413 // initiate request
28414 if (this.username && this.password) {
28415 xhr.open(this.method, this.url, true, this.username, this.password);
28416 } else {
28417 xhr.open(this.method, this.url, true);
28418 }
28419
28420 // CORS
28421 if (this._withCredentials) xhr.withCredentials = true;
28422
28423 // body
28424 if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {
28425 // serialize stuff
28426 var contentType = this._header['content-type'];
28427 var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];
28428 if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];
28429 if (serialize) data = serialize(data);
28430 }
28431
28432 // set header fields
28433 for (var field in this.header) {
28434 if (null == this.header[field]) continue;
28435 xhr.setRequestHeader(field, this.header[field]);
28436 }
28437
28438 if (this._responseType) {
28439 xhr.responseType = this._responseType;
28440 }
28441
28442 // send stuff
28443 this.emit('request', this);
28444
28445 // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)
28446 // We need null here if data is undefined
28447 xhr.send(typeof data !== 'undefined' ? data : null);
28448 return this;
28449 };
28450
28451
28452 /**
28453 * Expose `Request`.
28454 */
28455
28456 request.Request = Request;
28457
28458 /**
28459 * GET `url` with optional callback `fn(res)`.
28460 *
28461 * @param {String} url
28462 * @param {Mixed|Function} data or fn
28463 * @param {Function} fn
28464 * @return {Request}
28465 * @api public
28466 */
28467
28468 request.get = function(url, data, fn){
28469 var req = request('GET', url);
28470 if ('function' == typeof data) fn = data, data = null;
28471 if (data) req.query(data);
28472 if (fn) req.end(fn);
28473 return req;
28474 };
28475
28476 /**
28477 * HEAD `url` with optional callback `fn(res)`.
28478 *
28479 * @param {String} url
28480 * @param {Mixed|Function} data or fn
28481 * @param {Function} fn
28482 * @return {Request}
28483 * @api public
28484 */
28485
28486 request.head = function(url, data, fn){
28487 var req = request('HEAD', url);
28488 if ('function' == typeof data) fn = data, data = null;
28489 if (data) req.send(data);
28490 if (fn) req.end(fn);
28491 return req;
28492 };
28493
28494 /**
28495 * DELETE `url` with optional callback `fn(res)`.
28496 *
28497 * @param {String} url
28498 * @param {Function} fn
28499 * @return {Request}
28500 * @api public
28501 */
28502
28503 function del(url, fn){
28504 var req = request('DELETE', url);
28505 if (fn) req.end(fn);
28506 return req;
28507 };
28508
28509 request['del'] = del;
28510 request['delete'] = del;
28511
28512 /**
28513 * PATCH `url` with optional `data` and callback `fn(res)`.
28514 *
28515 * @param {String} url
28516 * @param {Mixed} data
28517 * @param {Function} fn
28518 * @return {Request}
28519 * @api public
28520 */
28521
28522 request.patch = function(url, data, fn){
28523 var req = request('PATCH', url);
28524 if ('function' == typeof data) fn = data, data = null;
28525 if (data) req.send(data);
28526 if (fn) req.end(fn);
28527 return req;
28528 };
28529
28530 /**
28531 * POST `url` with optional `data` and callback `fn(res)`.
28532 *
28533 * @param {String} url
28534 * @param {Mixed} data
28535 * @param {Function} fn
28536 * @return {Request}
28537 * @api public
28538 */
28539
28540 request.post = function(url, data, fn){
28541 var req = request('POST', url);
28542 if ('function' == typeof data) fn = data, data = null;
28543 if (data) req.send(data);
28544 if (fn) req.end(fn);
28545 return req;
28546 };
28547
28548 /**
28549 * PUT `url` with optional `data` and callback `fn(res)`.
28550 *
28551 * @param {String} url
28552 * @param {Mixed|Function} data or fn
28553 * @param {Function} fn
28554 * @return {Request}
28555 * @api public
28556 */
28557
28558 request.put = function(url, data, fn){
28559 var req = request('PUT', url);
28560 if ('function' == typeof data) fn = data, data = null;
28561 if (data) req.send(data);
28562 if (fn) req.end(fn);
28563 return req;
28564 };
28565
28566
28567/***/ },
28568/* 328 */
28569/***/ function(module, exports, __webpack_require__) {
28570
28571
28572 /**
28573 * Expose `Emitter`.
28574 */
28575
28576 if (true) {
28577 module.exports = Emitter;
28578 }
28579
28580 /**
28581 * Initialize a new `Emitter`.
28582 *
28583 * @api public
28584 */
28585
28586 function Emitter(obj) {
28587 if (obj) return mixin(obj);
28588 };
28589
28590 /**
28591 * Mixin the emitter properties.
28592 *
28593 * @param {Object} obj
28594 * @return {Object}
28595 * @api private
28596 */
28597
28598 function mixin(obj) {
28599 for (var key in Emitter.prototype) {
28600 obj[key] = Emitter.prototype[key];
28601 }
28602 return obj;
28603 }
28604
28605 /**
28606 * Listen on the given `event` with `fn`.
28607 *
28608 * @param {String} event
28609 * @param {Function} fn
28610 * @return {Emitter}
28611 * @api public
28612 */
28613
28614 Emitter.prototype.on =
28615 Emitter.prototype.addEventListener = function(event, fn){
28616 this._callbacks = this._callbacks || {};
28617 (this._callbacks['$' + event] = this._callbacks['$' + event] || [])
28618 .push(fn);
28619 return this;
28620 };
28621
28622 /**
28623 * Adds an `event` listener that will be invoked a single
28624 * time then automatically removed.
28625 *
28626 * @param {String} event
28627 * @param {Function} fn
28628 * @return {Emitter}
28629 * @api public
28630 */
28631
28632 Emitter.prototype.once = function(event, fn){
28633 function on() {
28634 this.off(event, on);
28635 fn.apply(this, arguments);
28636 }
28637
28638 on.fn = fn;
28639 this.on(event, on);
28640 return this;
28641 };
28642
28643 /**
28644 * Remove the given callback for `event` or all
28645 * registered callbacks.
28646 *
28647 * @param {String} event
28648 * @param {Function} fn
28649 * @return {Emitter}
28650 * @api public
28651 */
28652
28653 Emitter.prototype.off =
28654 Emitter.prototype.removeListener =
28655 Emitter.prototype.removeAllListeners =
28656 Emitter.prototype.removeEventListener = function(event, fn){
28657 this._callbacks = this._callbacks || {};
28658
28659 // all
28660 if (0 == arguments.length) {
28661 this._callbacks = {};
28662 return this;
28663 }
28664
28665 // specific event
28666 var callbacks = this._callbacks['$' + event];
28667 if (!callbacks) return this;
28668
28669 // remove all handlers
28670 if (1 == arguments.length) {
28671 delete this._callbacks['$' + event];
28672 return this;
28673 }
28674
28675 // remove specific handler
28676 var cb;
28677 for (var i = 0; i < callbacks.length; i++) {
28678 cb = callbacks[i];
28679 if (cb === fn || cb.fn === fn) {
28680 callbacks.splice(i, 1);
28681 break;
28682 }
28683 }
28684 return this;
28685 };
28686
28687 /**
28688 * Emit `event` with the given args.
28689 *
28690 * @param {String} event
28691 * @param {Mixed} ...
28692 * @return {Emitter}
28693 */
28694
28695 Emitter.prototype.emit = function(event){
28696 this._callbacks = this._callbacks || {};
28697 var args = [].slice.call(arguments, 1)
28698 , callbacks = this._callbacks['$' + event];
28699
28700 if (callbacks) {
28701 callbacks = callbacks.slice(0);
28702 for (var i = 0, len = callbacks.length; i < len; ++i) {
28703 callbacks[i].apply(this, args);
28704 }
28705 }
28706
28707 return this;
28708 };
28709
28710 /**
28711 * Return array of callbacks for `event`.
28712 *
28713 * @param {String} event
28714 * @return {Array}
28715 * @api public
28716 */
28717
28718 Emitter.prototype.listeners = function(event){
28719 this._callbacks = this._callbacks || {};
28720 return this._callbacks['$' + event] || [];
28721 };
28722
28723 /**
28724 * Check if this emitter has `event` handlers.
28725 *
28726 * @param {String} event
28727 * @return {Boolean}
28728 * @api public
28729 */
28730
28731 Emitter.prototype.hasListeners = function(event){
28732 return !! this.listeners(event).length;
28733 };
28734
28735
28736/***/ },
28737/* 329 */
28738/***/ function(module, exports) {
28739
28740
28741 /**
28742 * Reduce `arr` with `fn`.
28743 *
28744 * @param {Array} arr
28745 * @param {Function} fn
28746 * @param {Mixed} initial
28747 *
28748 * TODO: combatible error handling?
28749 */
28750
28751 module.exports = function(arr, fn, initial){
28752 var idx = 0;
28753 var len = arr.length;
28754 var curr = arguments.length == 3
28755 ? initial
28756 : arr[idx++];
28757
28758 while (idx < len) {
28759 curr = fn.call(null, curr, arr[idx], ++idx, arr);
28760 }
28761
28762 return curr;
28763 };
28764
28765/***/ },
28766/* 330 */
28767/***/ function(module, exports, __webpack_require__) {
28768
28769 /**
28770 * Module of mixed-in functions shared between node and client code
28771 */
28772 var isObject = __webpack_require__(331);
28773
28774 /**
28775 * Clear previous timeout.
28776 *
28777 * @return {Request} for chaining
28778 * @api public
28779 */
28780
28781 exports.clearTimeout = function _clearTimeout(){
28782 this._timeout = 0;
28783 clearTimeout(this._timer);
28784 return this;
28785 };
28786
28787 /**
28788 * Force given parser
28789 *
28790 * Sets the body parser no matter type.
28791 *
28792 * @param {Function}
28793 * @api public
28794 */
28795
28796 exports.parse = function parse(fn){
28797 this._parser = fn;
28798 return this;
28799 };
28800
28801 /**
28802 * Set timeout to `ms`.
28803 *
28804 * @param {Number} ms
28805 * @return {Request} for chaining
28806 * @api public
28807 */
28808
28809 exports.timeout = function timeout(ms){
28810 this._timeout = ms;
28811 return this;
28812 };
28813
28814 /**
28815 * Faux promise support
28816 *
28817 * @param {Function} fulfill
28818 * @param {Function} reject
28819 * @return {Request}
28820 */
28821
28822 exports.then = function then(fulfill, reject) {
28823 return this.end(function(err, res) {
28824 err ? reject(err) : fulfill(res);
28825 });
28826 }
28827
28828 /**
28829 * Allow for extension
28830 */
28831
28832 exports.use = function use(fn) {
28833 fn(this);
28834 return this;
28835 }
28836
28837
28838 /**
28839 * Get request header `field`.
28840 * Case-insensitive.
28841 *
28842 * @param {String} field
28843 * @return {String}
28844 * @api public
28845 */
28846
28847 exports.get = function(field){
28848 return this._header[field.toLowerCase()];
28849 };
28850
28851 /**
28852 * Get case-insensitive header `field` value.
28853 * This is a deprecated internal API. Use `.get(field)` instead.
28854 *
28855 * (getHeader is no longer used internally by the superagent code base)
28856 *
28857 * @param {String} field
28858 * @return {String}
28859 * @api private
28860 * @deprecated
28861 */
28862
28863 exports.getHeader = exports.get;
28864
28865 /**
28866 * Set header `field` to `val`, or multiple fields with one object.
28867 * Case-insensitive.
28868 *
28869 * Examples:
28870 *
28871 * req.get('/')
28872 * .set('Accept', 'application/json')
28873 * .set('X-API-Key', 'foobar')
28874 * .end(callback);
28875 *
28876 * req.get('/')
28877 * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })
28878 * .end(callback);
28879 *
28880 * @param {String|Object} field
28881 * @param {String} val
28882 * @return {Request} for chaining
28883 * @api public
28884 */
28885
28886 exports.set = function(field, val){
28887 if (isObject(field)) {
28888 for (var key in field) {
28889 this.set(key, field[key]);
28890 }
28891 return this;
28892 }
28893 this._header[field.toLowerCase()] = val;
28894 this.header[field] = val;
28895 return this;
28896 };
28897
28898 /**
28899 * Remove header `field`.
28900 * Case-insensitive.
28901 *
28902 * Example:
28903 *
28904 * req.get('/')
28905 * .unset('User-Agent')
28906 * .end(callback);
28907 *
28908 * @param {String} field
28909 */
28910 exports.unset = function(field){
28911 delete this._header[field.toLowerCase()];
28912 delete this.header[field];
28913 return this;
28914 };
28915
28916 /**
28917 * Write the field `name` and `val` for "multipart/form-data"
28918 * request bodies.
28919 *
28920 * ``` js
28921 * request.post('/upload')
28922 * .field('foo', 'bar')
28923 * .end(callback);
28924 * ```
28925 *
28926 * @param {String} name
28927 * @param {String|Blob|File|Buffer|fs.ReadStream} val
28928 * @return {Request} for chaining
28929 * @api public
28930 */
28931 exports.field = function(name, val) {
28932 this._getFormData().append(name, val);
28933 return this;
28934 };
28935
28936
28937/***/ },
28938/* 331 */
28939/***/ function(module, exports) {
28940
28941 /**
28942 * Check if `obj` is an object.
28943 *
28944 * @param {Object} obj
28945 * @return {Boolean}
28946 * @api private
28947 */
28948
28949 function isObject(obj) {
28950 return null != obj && 'object' == typeof obj;
28951 }
28952
28953 module.exports = isObject;
28954
28955
28956/***/ },
28957/* 332 */
28958/***/ function(module, exports) {
28959
28960 // The node and browser modules expose versions of this with the
28961 // appropriate constructor function bound as first argument
28962 /**
28963 * Issue a request:
28964 *
28965 * Examples:
28966 *
28967 * request('GET', '/users').end(callback)
28968 * request('/users').end(callback)
28969 * request('/users', callback)
28970 *
28971 * @param {String} method
28972 * @param {String|Function} url or callback
28973 * @return {Request}
28974 * @api public
28975 */
28976
28977 function request(RequestConstructor, method, url) {
28978 // callback
28979 if ('function' == typeof url) {
28980 return new RequestConstructor('GET', method).end(url);
28981 }
28982
28983 // url first
28984 if (2 == arguments.length) {
28985 return new RequestConstructor('GET', method);
28986 }
28987
28988 return new RequestConstructor(method, url);
28989 }
28990
28991 module.exports = request;
28992
28993
28994/***/ },
28995/* 333 */
28996/***/ function(module, exports, __webpack_require__) {
28997
28998 'use strict';
28999
29000 Object.defineProperty(exports, "__esModule", {
29001 value: true
29002 });
29003
29004 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
29005
29006 var _react = __webpack_require__(89);
29007
29008 var _react2 = _interopRequireDefault(_react);
29009
29010 var _reactBootstrap = __webpack_require__(334);
29011
29012 var _reactRouter = __webpack_require__(260);
29013
29014 var _LoginField = __webpack_require__(597);
29015
29016 var _LoginField2 = _interopRequireDefault(_LoginField);
29017
29018 var _style = __webpack_require__(598);
29019
29020 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29021
29022 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
29023
29024 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
29025
29026 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* global window */
29027
29028 /**
29029 * @author pmeijer / https://github.com/pmeijer
29030 * @author patrickkerrypei / https://github.com/patrickkerrypei
29031 */
29032
29033 // Libraries
29034
29035 // Self-defined
29036
29037 // Style
29038
29039
29040 var LoginForm = function (_Component) {
29041 _inherits(LoginForm, _Component);
29042
29043 function LoginForm(props) {
29044 _classCallCheck(this, LoginForm);
29045
29046 var _this = _possibleConstructorReturn(this, (LoginForm.__proto__ || Object.getPrototypeOf(LoginForm)).call(this, props));
29047
29048 _this.state = {
29049 allowGuests: false,
29050 allowUserRegistration: false,
29051 password: '',
29052 rememberMe: false,
29053 userId: '',
29054 validCredentials: true
29055 };
29056 // Event handlers
29057 _this.onClickSignIn = _this.onClickSignIn.bind(_this); // Allows click to release focus vs enter key
29058 _this.onClickSignInSmallDevice = _this.onClickSignInSmallDevice.bind(_this);
29059 _this.onGuestLogIn = _this.onGuestLogIn.bind(_this);
29060 _this.onGuestLogInSmallDevice = _this.onGuestLogInSmallDevice.bind(_this);
29061 _this.onLogIn = _this.onLogIn.bind(_this);
29062 _this.onPasswordChange = _this.onPasswordChange.bind(_this);
29063 _this.onRememberMeChange = _this.onRememberMeChange.bind(_this);
29064 _this.onUserIdChange = _this.onUserIdChange.bind(_this);
29065 return _this;
29066 }
29067
29068 _createClass(LoginForm, [{
29069 key: 'componentDidMount',
29070 value: function componentDidMount() {
29071 var _this2 = this;
29072
29073 this.props.loginClient.getGmeConfig().then(function (gmeConfig) {
29074 _this2.setState({
29075 allowGuests: gmeConfig.authentication.allowGuests,
29076 allowUserRegistration: gmeConfig.authentication.allowUserRegistration
29077 });
29078 });
29079 }
29080 }, {
29081 key: 'onClickSignIn',
29082 value: function onClickSignIn(event) {
29083 // Release focus
29084 event.target.blur();
29085
29086 this.onLogIn();
29087 }
29088 }, {
29089 key: 'onClickSignInSmallDevice',
29090 value: function onClickSignInSmallDevice(event) {
29091 // Release focus
29092 event.target.blur();
29093
29094 this.onLogIn(true);
29095 }
29096 }, {
29097 key: 'onGuestLogIn',
29098 value: function onGuestLogIn() {
29099 _reactRouter.browserHistory.push('/');
29100 window.location.reload();
29101 }
29102 }, {
29103 key: 'onGuestLogInSmallDevice',
29104 value: function onGuestLogInSmallDevice() {
29105 _reactRouter.browserHistory.push(this.props.basePath);
29106 window.location.reload();
29107 }
29108 }, {
29109 key: 'onPasswordChange',
29110 value: function onPasswordChange(event) {
29111 this.setState({
29112 password: event.target.value
29113 });
29114 }
29115 }, {
29116 key: 'onRememberMeChange',
29117 value: function onRememberMeChange() {
29118 this.setState({
29119 rememberMe: !this.state.rememberMe
29120 });
29121 }
29122 }, {
29123 key: 'onLogIn',
29124 value: function onLogIn(isSmallDevice) {
29125 var _this3 = this;
29126
29127 this.props.loginClient.login(this.state.userId, this.state.password).then(function (res) {
29128 if (/2\d\d/.test(res.statusCode)) {
29129
29130 var redirectPath = /redirect=(\S+)/.exec(window.location.href) ? /redirect=(\S+)/.exec(window.location.href)[1] : '',
29131 nextLocation = '';
29132
29133 if (redirectPath === '') {
29134 nextLocation = _this3.props.basePath;
29135 } else {
29136 nextLocation = window.decodeURIComponent(redirectPath);
29137 }
29138
29139 _reactRouter.browserHistory.push(nextLocation);
29140 window.location.reload();
29141 }
29142 }).catch(function (err) {
29143 console.error(err); // eslint-disable-line no-console
29144 // Reset fields
29145 _this3.setState({
29146 password: '',
29147 rememberMe: false,
29148 validCredentials: false
29149 });
29150 });
29151 }
29152 }, {
29153 key: 'onUserIdChange',
29154 value: function onUserIdChange(event) {
29155 this.setState({
29156 userId: event.target.value
29157 });
29158 }
29159 }, {
29160 key: 'render',
29161 value: function render() {
29162 return _react2.default.createElement(
29163 'div',
29164 { className: 'login-box-body' },
29165 _react2.default.createElement(
29166 'p',
29167 { className: 'login-box-msg' },
29168 'Sign in to start your session'
29169 ),
29170 !this.state.validCredentials ? _react2.default.createElement(
29171 'div',
29172 null,
29173 _react2.default.createElement(
29174 'div',
29175 { className: 'row' },
29176 _react2.default.createElement(
29177 'div',
29178 { className: 'col-sm-12', style: _style.LoginForm.invalidLogin.column },
29179 _react2.default.createElement(
29180 'span',
29181 { style: _style.LoginForm.invalidLogin.text },
29182 'Invalid username or password'
29183 )
29184 )
29185 ),
29186 _react2.default.createElement('br', null)
29187 ) : null,
29188 _react2.default.createElement(
29189 'form',
29190 { autoComplete: 'on', method: 'post' },
29191 _react2.default.createElement(_LoginField2.default, { autoFocus: true,
29192 hint: 'User ID',
29193 iconClass: 'glyphicon glyphicon-user',
29194 name: 'username',
29195 onInputChange: this.onUserIdChange,
29196 valid: true,
29197 value: this.state.userId }),
29198 _react2.default.createElement(_LoginField2.default, { hint: 'Password',
29199 iconClass: 'glyphicon glyphicon-lock',
29200 name: 'password',
29201 onEnter: this.onLogIn,
29202 onInputChange: this.onPasswordChange,
29203 textType: 'password',
29204 valid: this.state.validCredentials,
29205 value: this.state.password }),
29206 _react2.default.createElement(
29207 'div',
29208 { className: 'row' },
29209 _react2.default.createElement(
29210 'div',
29211 { className: 'col-sm-5', style: { paddingTop: "10px" } },
29212 this.state.allowUserRegistration ? _react2.default.createElement(
29213 _reactRouter.Link,
29214 { to: this.props.basePath + 'register' },
29215 'Register'
29216 ) : null
29217 ),
29218 _react2.default.createElement(
29219 'div',
29220 { className: 'col-sm-7' },
29221 _react2.default.createElement(
29222 'div',
29223 { style: { float: "right", marginTop: "5px" } },
29224 _react2.default.createElement(
29225 _reactBootstrap.ButtonGroup,
29226 { className: 'hidden-xs' },
29227 this.state.allowGuests ? _react2.default.createElement(
29228 _reactBootstrap.Button,
29229 { bsStyle: 'warning',
29230 onClick: this.onGuestLogIn },
29231 'Guest'
29232 ) : null,
29233 _react2.default.createElement(
29234 _reactBootstrap.Button,
29235 { bsStyle: 'primary',
29236 onClick: this.onClickSignIn },
29237 'Sign In'
29238 )
29239 ),
29240 _react2.default.createElement(
29241 _reactBootstrap.ButtonGroup,
29242 { className: 'visible-xs' },
29243 this.state.allowGuests ? _react2.default.createElement(
29244 _reactBootstrap.Button,
29245 { bsStyle: 'warning',
29246 onClick: this.onGuestLogInSmallDevice },
29247 'Guest'
29248 ) : null,
29249 _react2.default.createElement(
29250 _reactBootstrap.Button,
29251 { bsStyle: 'primary',
29252 onClick: this.onClickSignInSmallDevice },
29253 'Sign In'
29254 )
29255 )
29256 )
29257 )
29258 )
29259 )
29260 );
29261 }
29262 }]);
29263
29264 return LoginForm;
29265 }(_react.Component);
29266
29267 exports.default = LoginForm;
29268
29269
29270 LoginForm.propTypes = {
29271 basePath: _react.PropTypes.string,
29272 loginClient: _react.PropTypes.object
29273 };
29274
29275/***/ },
29276/* 334 */
29277/***/ function(module, exports, __webpack_require__) {
29278
29279 'use strict';
29280
29281 var _interopRequireDefault = __webpack_require__(335)['default'];
29282
29283 var _interopRequireWildcard = __webpack_require__(336)['default'];
29284
29285 exports.__esModule = true;
29286
29287 var _Accordion2 = __webpack_require__(337);
29288
29289 var _Accordion3 = _interopRequireDefault(_Accordion2);
29290
29291 exports.Accordion = _Accordion3['default'];
29292
29293 var _Alert2 = __webpack_require__(366);
29294
29295 var _Alert3 = _interopRequireDefault(_Alert2);
29296
29297 exports.Alert = _Alert3['default'];
29298
29299 var _Badge2 = __webpack_require__(368);
29300
29301 var _Badge3 = _interopRequireDefault(_Badge2);
29302
29303 exports.Badge = _Badge3['default'];
29304
29305 var _Breadcrumb2 = __webpack_require__(369);
29306
29307 var _Breadcrumb3 = _interopRequireDefault(_Breadcrumb2);
29308
29309 exports.Breadcrumb = _Breadcrumb3['default'];
29310
29311 var _BreadcrumbItem2 = __webpack_require__(370);
29312
29313 var _BreadcrumbItem3 = _interopRequireDefault(_BreadcrumbItem2);
29314
29315 exports.BreadcrumbItem = _BreadcrumbItem3['default'];
29316
29317 var _Button2 = __webpack_require__(382);
29318
29319 var _Button3 = _interopRequireDefault(_Button2);
29320
29321 exports.Button = _Button3['default'];
29322
29323 var _ButtonGroup2 = __webpack_require__(383);
29324
29325 var _ButtonGroup3 = _interopRequireDefault(_ButtonGroup2);
29326
29327 exports.ButtonGroup = _ButtonGroup3['default'];
29328
29329 var _ButtonInput2 = __webpack_require__(385);
29330
29331 var _ButtonInput3 = _interopRequireDefault(_ButtonInput2);
29332
29333 exports.ButtonInput = _ButtonInput3['default'];
29334
29335 var _ButtonToolbar2 = __webpack_require__(392);
29336
29337 var _ButtonToolbar3 = _interopRequireDefault(_ButtonToolbar2);
29338
29339 exports.ButtonToolbar = _ButtonToolbar3['default'];
29340
29341 var _Carousel2 = __webpack_require__(393);
29342
29343 var _Carousel3 = _interopRequireDefault(_Carousel2);
29344
29345 exports.Carousel = _Carousel3['default'];
29346
29347 var _CarouselItem2 = __webpack_require__(395);
29348
29349 var _CarouselItem3 = _interopRequireDefault(_CarouselItem2);
29350
29351 exports.CarouselItem = _CarouselItem3['default'];
29352
29353 var _Checkbox2 = __webpack_require__(397);
29354
29355 var _Checkbox3 = _interopRequireDefault(_Checkbox2);
29356
29357 exports.Checkbox = _Checkbox3['default'];
29358
29359 var _Clearfix2 = __webpack_require__(398);
29360
29361 var _Clearfix3 = _interopRequireDefault(_Clearfix2);
29362
29363 exports.Clearfix = _Clearfix3['default'];
29364
29365 var _ControlLabel2 = __webpack_require__(399);
29366
29367 var _ControlLabel3 = _interopRequireDefault(_ControlLabel2);
29368
29369 exports.ControlLabel = _ControlLabel3['default'];
29370
29371 var _Col2 = __webpack_require__(400);
29372
29373 var _Col3 = _interopRequireDefault(_Col2);
29374
29375 exports.Col = _Col3['default'];
29376
29377 var _Collapse2 = __webpack_require__(401);
29378
29379 var _Collapse3 = _interopRequireDefault(_Collapse2);
29380
29381 exports.Collapse = _Collapse3['default'];
29382
29383 var _Dropdown2 = __webpack_require__(415);
29384
29385 var _Dropdown3 = _interopRequireDefault(_Dropdown2);
29386
29387 exports.Dropdown = _Dropdown3['default'];
29388
29389 var _DropdownButton2 = __webpack_require__(500);
29390
29391 var _DropdownButton3 = _interopRequireDefault(_DropdownButton2);
29392
29393 exports.DropdownButton = _DropdownButton3['default'];
29394
29395 var _Fade2 = __webpack_require__(502);
29396
29397 var _Fade3 = _interopRequireDefault(_Fade2);
29398
29399 exports.Fade = _Fade3['default'];
29400
29401 var _Form2 = __webpack_require__(503);
29402
29403 var _Form3 = _interopRequireDefault(_Form2);
29404
29405 exports.Form = _Form3['default'];
29406
29407 var _FormControl2 = __webpack_require__(504);
29408
29409 var _FormControl3 = _interopRequireDefault(_FormControl2);
29410
29411 exports.FormControl = _FormControl3['default'];
29412
29413 var _FormGroup2 = __webpack_require__(386);
29414
29415 var _FormGroup3 = _interopRequireDefault(_FormGroup2);
29416
29417 exports.FormGroup = _FormGroup3['default'];
29418
29419 var _Glyphicon2 = __webpack_require__(388);
29420
29421 var _Glyphicon3 = _interopRequireDefault(_Glyphicon2);
29422
29423 exports.Glyphicon = _Glyphicon3['default'];
29424
29425 var _Grid2 = __webpack_require__(507);
29426
29427 var _Grid3 = _interopRequireDefault(_Grid2);
29428
29429 exports.Grid = _Grid3['default'];
29430
29431 var _HelpBlock2 = __webpack_require__(508);
29432
29433 var _HelpBlock3 = _interopRequireDefault(_HelpBlock2);
29434
29435 exports.HelpBlock = _HelpBlock3['default'];
29436
29437 var _Image2 = __webpack_require__(509);
29438
29439 var _Image3 = _interopRequireDefault(_Image2);
29440
29441 exports.Image = _Image3['default'];
29442
29443 var _Input2 = __webpack_require__(510);
29444
29445 var _Input3 = _interopRequireDefault(_Input2);
29446
29447 exports.Input = _Input3['default'];
29448
29449 var _InputGroup2 = __webpack_require__(513);
29450
29451 var _InputGroup3 = _interopRequireDefault(_InputGroup2);
29452
29453 exports.InputGroup = _InputGroup3['default'];
29454
29455 var _Interpolate2 = __webpack_require__(516);
29456
29457 var _Interpolate3 = _interopRequireDefault(_Interpolate2);
29458
29459 exports.Interpolate = _Interpolate3['default'];
29460
29461 var _Jumbotron2 = __webpack_require__(517);
29462
29463 var _Jumbotron3 = _interopRequireDefault(_Jumbotron2);
29464
29465 exports.Jumbotron = _Jumbotron3['default'];
29466
29467 var _Label2 = __webpack_require__(518);
29468
29469 var _Label3 = _interopRequireDefault(_Label2);
29470
29471 exports.Label = _Label3['default'];
29472
29473 var _ListGroup2 = __webpack_require__(519);
29474
29475 var _ListGroup3 = _interopRequireDefault(_ListGroup2);
29476
29477 exports.ListGroup = _ListGroup3['default'];
29478
29479 var _ListGroupItem2 = __webpack_require__(520);
29480
29481 var _ListGroupItem3 = _interopRequireDefault(_ListGroupItem2);
29482
29483 exports.ListGroupItem = _ListGroupItem3['default'];
29484
29485 var _Media2 = __webpack_require__(521);
29486
29487 var _Media3 = _interopRequireDefault(_Media2);
29488
29489 exports.Media = _Media3['default'];
29490
29491 var _MenuItem2 = __webpack_require__(528);
29492
29493 var _MenuItem3 = _interopRequireDefault(_MenuItem2);
29494
29495 exports.MenuItem = _MenuItem3['default'];
29496
29497 var _Modal2 = __webpack_require__(529);
29498
29499 var _Modal3 = _interopRequireDefault(_Modal2);
29500
29501 exports.Modal = _Modal3['default'];
29502
29503 var _ModalBody2 = __webpack_require__(551);
29504
29505 var _ModalBody3 = _interopRequireDefault(_ModalBody2);
29506
29507 exports.ModalBody = _ModalBody3['default'];
29508
29509 var _ModalFooter2 = __webpack_require__(554);
29510
29511 var _ModalFooter3 = _interopRequireDefault(_ModalFooter2);
29512
29513 exports.ModalFooter = _ModalFooter3['default'];
29514
29515 var _ModalHeader2 = __webpack_require__(552);
29516
29517 var _ModalHeader3 = _interopRequireDefault(_ModalHeader2);
29518
29519 exports.ModalHeader = _ModalHeader3['default'];
29520
29521 var _ModalTitle2 = __webpack_require__(553);
29522
29523 var _ModalTitle3 = _interopRequireDefault(_ModalTitle2);
29524
29525 exports.ModalTitle = _ModalTitle3['default'];
29526
29527 var _Nav2 = __webpack_require__(555);
29528
29529 var _Nav3 = _interopRequireDefault(_Nav2);
29530
29531 exports.Nav = _Nav3['default'];
29532
29533 var _Navbar2 = __webpack_require__(557);
29534
29535 var _Navbar3 = _interopRequireDefault(_Navbar2);
29536
29537 exports.Navbar = _Navbar3['default'];
29538
29539 var _NavbarBrand2 = __webpack_require__(558);
29540
29541 var _NavbarBrand3 = _interopRequireDefault(_NavbarBrand2);
29542
29543 exports.NavbarBrand = _NavbarBrand3['default'];
29544
29545 var _NavDropdown2 = __webpack_require__(562);
29546
29547 var _NavDropdown3 = _interopRequireDefault(_NavDropdown2);
29548
29549 exports.NavDropdown = _NavDropdown3['default'];
29550
29551 var _NavItem2 = __webpack_require__(563);
29552
29553 var _NavItem3 = _interopRequireDefault(_NavItem2);
29554
29555 exports.NavItem = _NavItem3['default'];
29556
29557 var _Overlay2 = __webpack_require__(564);
29558
29559 var _Overlay3 = _interopRequireDefault(_Overlay2);
29560
29561 exports.Overlay = _Overlay3['default'];
29562
29563 var _OverlayTrigger2 = __webpack_require__(573);
29564
29565 var _OverlayTrigger3 = _interopRequireDefault(_OverlayTrigger2);
29566
29567 exports.OverlayTrigger = _OverlayTrigger3['default'];
29568
29569 var _PageHeader2 = __webpack_require__(574);
29570
29571 var _PageHeader3 = _interopRequireDefault(_PageHeader2);
29572
29573 exports.PageHeader = _PageHeader3['default'];
29574
29575 var _PageItem2 = __webpack_require__(575);
29576
29577 var _PageItem3 = _interopRequireDefault(_PageItem2);
29578
29579 exports.PageItem = _PageItem3['default'];
29580
29581 var _Pager2 = __webpack_require__(576);
29582
29583 var _Pager3 = _interopRequireDefault(_Pager2);
29584
29585 exports.Pager = _Pager3['default'];
29586
29587 var _Pagination2 = __webpack_require__(577);
29588
29589 var _Pagination3 = _interopRequireDefault(_Pagination2);
29590
29591 exports.Pagination = _Pagination3['default'];
29592
29593 var _Panel2 = __webpack_require__(579);
29594
29595 var _Panel3 = _interopRequireDefault(_Panel2);
29596
29597 exports.Panel = _Panel3['default'];
29598
29599 var _PanelGroup2 = __webpack_require__(354);
29600
29601 var _PanelGroup3 = _interopRequireDefault(_PanelGroup2);
29602
29603 exports.PanelGroup = _PanelGroup3['default'];
29604
29605 var _Popover2 = __webpack_require__(580);
29606
29607 var _Popover3 = _interopRequireDefault(_Popover2);
29608
29609 exports.Popover = _Popover3['default'];
29610
29611 var _ProgressBar2 = __webpack_require__(581);
29612
29613 var _ProgressBar3 = _interopRequireDefault(_ProgressBar2);
29614
29615 exports.ProgressBar = _ProgressBar3['default'];
29616
29617 var _Radio2 = __webpack_require__(582);
29618
29619 var _Radio3 = _interopRequireDefault(_Radio2);
29620
29621 exports.Radio = _Radio3['default'];
29622
29623 var _ResponsiveEmbed2 = __webpack_require__(583);
29624
29625 var _ResponsiveEmbed3 = _interopRequireDefault(_ResponsiveEmbed2);
29626
29627 exports.ResponsiveEmbed = _ResponsiveEmbed3['default'];
29628
29629 var _Row2 = __webpack_require__(584);
29630
29631 var _Row3 = _interopRequireDefault(_Row2);
29632
29633 exports.Row = _Row3['default'];
29634
29635 var _SafeAnchor2 = __webpack_require__(371);
29636
29637 var _SafeAnchor3 = _interopRequireDefault(_SafeAnchor2);
29638
29639 exports.SafeAnchor = _SafeAnchor3['default'];
29640
29641 var _SplitButton2 = __webpack_require__(585);
29642
29643 var _SplitButton3 = _interopRequireDefault(_SplitButton2);
29644
29645 exports.SplitButton = _SplitButton3['default'];
29646
29647 var _Tab2 = __webpack_require__(587);
29648
29649 var _Tab3 = _interopRequireDefault(_Tab2);
29650
29651 exports.Tab = _Tab3['default'];
29652
29653 var _TabContainer2 = __webpack_require__(589);
29654
29655 var _TabContainer3 = _interopRequireDefault(_TabContainer2);
29656
29657 exports.TabContainer = _TabContainer3['default'];
29658
29659 var _TabContent2 = __webpack_require__(590);
29660
29661 var _TabContent3 = _interopRequireDefault(_TabContent2);
29662
29663 exports.TabContent = _TabContent3['default'];
29664
29665 var _Table2 = __webpack_require__(591);
29666
29667 var _Table3 = _interopRequireDefault(_Table2);
29668
29669 exports.Table = _Table3['default'];
29670
29671 var _TabPane2 = __webpack_require__(588);
29672
29673 var _TabPane3 = _interopRequireDefault(_TabPane2);
29674
29675 exports.TabPane = _TabPane3['default'];
29676
29677 var _Tabs2 = __webpack_require__(592);
29678
29679 var _Tabs3 = _interopRequireDefault(_Tabs2);
29680
29681 exports.Tabs = _Tabs3['default'];
29682
29683 var _Thumbnail2 = __webpack_require__(593);
29684
29685 var _Thumbnail3 = _interopRequireDefault(_Thumbnail2);
29686
29687 exports.Thumbnail = _Thumbnail3['default'];
29688
29689 var _Tooltip2 = __webpack_require__(594);
29690
29691 var _Tooltip3 = _interopRequireDefault(_Tooltip2);
29692
29693 exports.Tooltip = _Tooltip3['default'];
29694
29695 var _Well2 = __webpack_require__(595);
29696
29697 var _Well3 = _interopRequireDefault(_Well2);
29698
29699 exports.Well = _Well3['default'];
29700
29701 var _FormControls2 = __webpack_require__(511);
29702
29703 var _FormControls = _interopRequireWildcard(_FormControls2);
29704
29705 exports.FormControls = _FormControls;
29706
29707 var _utils2 = __webpack_require__(596);
29708
29709 var _utils = _interopRequireWildcard(_utils2);
29710
29711 exports.utils = _utils;
29712
29713/***/ },
29714/* 335 */
29715/***/ function(module, exports) {
29716
29717 "use strict";
29718
29719 exports["default"] = function (obj) {
29720 return obj && obj.__esModule ? obj : {
29721 "default": obj
29722 };
29723 };
29724
29725 exports.__esModule = true;
29726
29727/***/ },
29728/* 336 */
29729/***/ function(module, exports) {
29730
29731 "use strict";
29732
29733 exports["default"] = function (obj) {
29734 if (obj && obj.__esModule) {
29735 return obj;
29736 } else {
29737 var newObj = {};
29738
29739 if (obj != null) {
29740 for (var key in obj) {
29741 if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
29742 }
29743 }
29744
29745 newObj["default"] = obj;
29746 return newObj;
29747 }
29748 };
29749
29750 exports.__esModule = true;
29751
29752/***/ },
29753/* 337 */
29754/***/ function(module, exports, __webpack_require__) {
29755
29756 'use strict';
29757
29758 var _extends = __webpack_require__(338)['default'];
29759
29760 var _interopRequireDefault = __webpack_require__(335)['default'];
29761
29762 exports.__esModule = true;
29763
29764 var _react = __webpack_require__(89);
29765
29766 var _react2 = _interopRequireDefault(_react);
29767
29768 var _PanelGroup = __webpack_require__(354);
29769
29770 var _PanelGroup2 = _interopRequireDefault(_PanelGroup);
29771
29772 var Accordion = _react2['default'].createClass({
29773 displayName: 'Accordion',
29774
29775 render: function render() {
29776 return _react2['default'].createElement(
29777 _PanelGroup2['default'],
29778 _extends({}, this.props, { accordion: true }),
29779 this.props.children
29780 );
29781 }
29782 });
29783
29784 exports['default'] = Accordion;
29785 module.exports = exports['default'];
29786
29787/***/ },
29788/* 338 */
29789/***/ function(module, exports, __webpack_require__) {
29790
29791 "use strict";
29792
29793 var _Object$assign = __webpack_require__(339)["default"];
29794
29795 exports["default"] = _Object$assign || function (target) {
29796 for (var i = 1; i < arguments.length; i++) {
29797 var source = arguments[i];
29798
29799 for (var key in source) {
29800 if (Object.prototype.hasOwnProperty.call(source, key)) {
29801 target[key] = source[key];
29802 }
29803 }
29804 }
29805
29806 return target;
29807 };
29808
29809 exports.__esModule = true;
29810
29811/***/ },
29812/* 339 */
29813/***/ function(module, exports, __webpack_require__) {
29814
29815 module.exports = { "default": __webpack_require__(340), __esModule: true };
29816
29817/***/ },
29818/* 340 */
29819/***/ function(module, exports, __webpack_require__) {
29820
29821 __webpack_require__(341);
29822 module.exports = __webpack_require__(344).Object.assign;
29823
29824/***/ },
29825/* 341 */
29826/***/ function(module, exports, __webpack_require__) {
29827
29828 // 19.1.3.1 Object.assign(target, source)
29829 var $export = __webpack_require__(342);
29830
29831 $export($export.S + $export.F, 'Object', {assign: __webpack_require__(347)});
29832
29833/***/ },
29834/* 342 */
29835/***/ function(module, exports, __webpack_require__) {
29836
29837 var global = __webpack_require__(343)
29838 , core = __webpack_require__(344)
29839 , ctx = __webpack_require__(345)
29840 , PROTOTYPE = 'prototype';
29841
29842 var $export = function(type, name, source){
29843 var IS_FORCED = type & $export.F
29844 , IS_GLOBAL = type & $export.G
29845 , IS_STATIC = type & $export.S
29846 , IS_PROTO = type & $export.P
29847 , IS_BIND = type & $export.B
29848 , IS_WRAP = type & $export.W
29849 , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
29850 , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
29851 , key, own, out;
29852 if(IS_GLOBAL)source = name;
29853 for(key in source){
29854 // contains in native
29855 own = !IS_FORCED && target && key in target;
29856 if(own && key in exports)continue;
29857 // export native or passed
29858 out = own ? target[key] : source[key];
29859 // prevent global pollution for namespaces
29860 exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
29861 // bind timers to global for call from export context
29862 : IS_BIND && own ? ctx(out, global)
29863 // wrap global constructors for prevent change them in library
29864 : IS_WRAP && target[key] == out ? (function(C){
29865 var F = function(param){
29866 return this instanceof C ? new C(param) : C(param);
29867 };
29868 F[PROTOTYPE] = C[PROTOTYPE];
29869 return F;
29870 // make static versions for prototype methods
29871 })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
29872 if(IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;
29873 }
29874 };
29875 // type bitmap
29876 $export.F = 1; // forced
29877 $export.G = 2; // global
29878 $export.S = 4; // static
29879 $export.P = 8; // proto
29880 $export.B = 16; // bind
29881 $export.W = 32; // wrap
29882 module.exports = $export;
29883
29884/***/ },
29885/* 343 */
29886/***/ function(module, exports) {
29887
29888 // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
29889 var global = module.exports = typeof window != 'undefined' && window.Math == Math
29890 ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
29891 if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
29892
29893/***/ },
29894/* 344 */
29895/***/ function(module, exports) {
29896
29897 var core = module.exports = {version: '1.2.6'};
29898 if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
29899
29900/***/ },
29901/* 345 */
29902/***/ function(module, exports, __webpack_require__) {
29903
29904 // optional / simple context binding
29905 var aFunction = __webpack_require__(346);
29906 module.exports = function(fn, that, length){
29907 aFunction(fn);
29908 if(that === undefined)return fn;
29909 switch(length){
29910 case 1: return function(a){
29911 return fn.call(that, a);
29912 };
29913 case 2: return function(a, b){
29914 return fn.call(that, a, b);
29915 };
29916 case 3: return function(a, b, c){
29917 return fn.call(that, a, b, c);
29918 };
29919 }
29920 return function(/* ...args */){
29921 return fn.apply(that, arguments);
29922 };
29923 };
29924
29925/***/ },
29926/* 346 */
29927/***/ function(module, exports) {
29928
29929 module.exports = function(it){
29930 if(typeof it != 'function')throw TypeError(it + ' is not a function!');
29931 return it;
29932 };
29933
29934/***/ },
29935/* 347 */
29936/***/ function(module, exports, __webpack_require__) {
29937
29938 // 19.1.2.1 Object.assign(target, source, ...)
29939 var $ = __webpack_require__(348)
29940 , toObject = __webpack_require__(349)
29941 , IObject = __webpack_require__(351);
29942
29943 // should work with symbols and should have deterministic property order (V8 bug)
29944 module.exports = __webpack_require__(353)(function(){
29945 var a = Object.assign
29946 , A = {}
29947 , B = {}
29948 , S = Symbol()
29949 , K = 'abcdefghijklmnopqrst';
29950 A[S] = 7;
29951 K.split('').forEach(function(k){ B[k] = k; });
29952 return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K;
29953 }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
29954 var T = toObject(target)
29955 , $$ = arguments
29956 , $$len = $$.length
29957 , index = 1
29958 , getKeys = $.getKeys
29959 , getSymbols = $.getSymbols
29960 , isEnum = $.isEnum;
29961 while($$len > index){
29962 var S = IObject($$[index++])
29963 , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
29964 , length = keys.length
29965 , j = 0
29966 , key;
29967 while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
29968 }
29969 return T;
29970 } : Object.assign;
29971
29972/***/ },
29973/* 348 */
29974/***/ function(module, exports) {
29975
29976 var $Object = Object;
29977 module.exports = {
29978 create: $Object.create,
29979 getProto: $Object.getPrototypeOf,
29980 isEnum: {}.propertyIsEnumerable,
29981 getDesc: $Object.getOwnPropertyDescriptor,
29982 setDesc: $Object.defineProperty,
29983 setDescs: $Object.defineProperties,
29984 getKeys: $Object.keys,
29985 getNames: $Object.getOwnPropertyNames,
29986 getSymbols: $Object.getOwnPropertySymbols,
29987 each: [].forEach
29988 };
29989
29990/***/ },
29991/* 349 */
29992/***/ function(module, exports, __webpack_require__) {
29993
29994 // 7.1.13 ToObject(argument)
29995 var defined = __webpack_require__(350);
29996 module.exports = function(it){
29997 return Object(defined(it));
29998 };
29999
30000/***/ },
30001/* 350 */
30002/***/ function(module, exports) {
30003
30004 // 7.2.1 RequireObjectCoercible(argument)
30005 module.exports = function(it){
30006 if(it == undefined)throw TypeError("Can't call method on " + it);
30007 return it;
30008 };
30009
30010/***/ },
30011/* 351 */
30012/***/ function(module, exports, __webpack_require__) {
30013
30014 // fallback for non-array-like ES3 and non-enumerable old V8 strings
30015 var cof = __webpack_require__(352);
30016 module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
30017 return cof(it) == 'String' ? it.split('') : Object(it);
30018 };
30019
30020/***/ },
30021/* 352 */
30022/***/ function(module, exports) {
30023
30024 var toString = {}.toString;
30025
30026 module.exports = function(it){
30027 return toString.call(it).slice(8, -1);
30028 };
30029
30030/***/ },
30031/* 353 */
30032/***/ function(module, exports) {
30033
30034 module.exports = function(exec){
30035 try {
30036 return !!exec();
30037 } catch(e){
30038 return true;
30039 }
30040 };
30041
30042/***/ },
30043/* 354 */
30044/***/ function(module, exports, __webpack_require__) {
30045
30046 'use strict';
30047
30048 var _objectWithoutProperties = __webpack_require__(355)['default'];
30049
30050 var _extends = __webpack_require__(338)['default'];
30051
30052 var _interopRequireDefault = __webpack_require__(335)['default'];
30053
30054 exports.__esModule = true;
30055
30056 var _classnames = __webpack_require__(356);
30057
30058 var _classnames2 = _interopRequireDefault(_classnames);
30059
30060 var _react = __webpack_require__(89);
30061
30062 var _react2 = _interopRequireDefault(_react);
30063
30064 var _utilsBootstrapUtils = __webpack_require__(357);
30065
30066 var _utilsValidComponentChildren = __webpack_require__(365);
30067
30068 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
30069
30070 var PanelGroup = _react2['default'].createClass({
30071 displayName: 'PanelGroup',
30072
30073 propTypes: {
30074 accordion: _react2['default'].PropTypes.bool,
30075 activeKey: _react2['default'].PropTypes.any,
30076 className: _react2['default'].PropTypes.string,
30077 children: _react2['default'].PropTypes.node,
30078 defaultActiveKey: _react2['default'].PropTypes.any,
30079 onSelect: _react2['default'].PropTypes.func
30080 },
30081
30082 getDefaultProps: function getDefaultProps() {
30083 return {
30084 accordion: false
30085 };
30086 },
30087
30088 getInitialState: function getInitialState() {
30089 var defaultActiveKey = this.props.defaultActiveKey;
30090
30091 return {
30092 activeKey: defaultActiveKey
30093 };
30094 },
30095
30096 render: function render() {
30097 var classes = _utilsBootstrapUtils.getClassSet(this.props);
30098 var _props = this.props;
30099 var className = _props.className;
30100
30101 var props = _objectWithoutProperties(_props, ['className']);
30102
30103 if (this.props.accordion) {
30104 props.role = 'tablist';
30105 }
30106 return _react2['default'].createElement(
30107 'div',
30108 _extends({}, props, { className: _classnames2['default'](className, classes), onSelect: null }),
30109 _utilsValidComponentChildren2['default'].map(props.children, this.renderPanel)
30110 );
30111 },
30112
30113 renderPanel: function renderPanel(child, index) {
30114 var activeKey = this.props.activeKey != null ? this.props.activeKey : this.state.activeKey;
30115
30116 var props = {
30117 bsStyle: child.props.bsStyle || this.props.bsStyle,
30118 key: child.key ? child.key : index,
30119 ref: child.ref
30120 };
30121
30122 if (this.props.accordion) {
30123 props.headerRole = 'tab';
30124 props.panelRole = 'tabpanel';
30125 props.collapsible = true;
30126 props.expanded = child.props.eventKey === activeKey;
30127 props.onSelect = this.handleSelect;
30128 }
30129
30130 return _react.cloneElement(child, props);
30131 },
30132
30133 shouldComponentUpdate: function shouldComponentUpdate() {
30134 // Defer any updates to this component during the `onSelect` handler.
30135 return !this._isChanging;
30136 },
30137
30138 handleSelect: function handleSelect(key, e) {
30139 e.preventDefault();
30140
30141 if (this.props.onSelect) {
30142 this._isChanging = true;
30143 this.props.onSelect(key, e);
30144 this._isChanging = false;
30145 }
30146
30147 if (this.state.activeKey === key) {
30148 key = null;
30149 }
30150
30151 this.setState({
30152 activeKey: key
30153 });
30154 }
30155 });
30156
30157 exports['default'] = _utilsBootstrapUtils.bsClass('panel-group', PanelGroup);
30158 module.exports = exports['default'];
30159
30160/***/ },
30161/* 355 */
30162/***/ function(module, exports) {
30163
30164 "use strict";
30165
30166 exports["default"] = function (obj, keys) {
30167 var target = {};
30168
30169 for (var i in obj) {
30170 if (keys.indexOf(i) >= 0) continue;
30171 if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
30172 target[i] = obj[i];
30173 }
30174
30175 return target;
30176 };
30177
30178 exports.__esModule = true;
30179
30180/***/ },
30181/* 356 */
30182/***/ function(module, exports, __webpack_require__) {
30183
30184 var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
30185 Copyright (c) 2016 Jed Watson.
30186 Licensed under the MIT License (MIT), see
30187 http://jedwatson.github.io/classnames
30188 */
30189 /* global define */
30190
30191 (function () {
30192 'use strict';
30193
30194 var hasOwn = {}.hasOwnProperty;
30195
30196 function classNames () {
30197 var classes = [];
30198
30199 for (var i = 0; i < arguments.length; i++) {
30200 var arg = arguments[i];
30201 if (!arg) continue;
30202
30203 var argType = typeof arg;
30204
30205 if (argType === 'string' || argType === 'number') {
30206 classes.push(arg);
30207 } else if (Array.isArray(arg)) {
30208 classes.push(classNames.apply(null, arg));
30209 } else if (argType === 'object') {
30210 for (var key in arg) {
30211 if (hasOwn.call(arg, key) && arg[key]) {
30212 classes.push(key);
30213 }
30214 }
30215 }
30216 }
30217
30218 return classes.join(' ');
30219 }
30220
30221 if (typeof module !== 'undefined' && module.exports) {
30222 module.exports = classNames;
30223 } else if (true) {
30224 // register as 'classnames', consistent with npm package name
30225 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
30226 return classNames;
30227 }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
30228 } else {
30229 window.classNames = classNames;
30230 }
30231 }());
30232
30233
30234/***/ },
30235/* 357 */
30236/***/ function(module, exports, __webpack_require__) {
30237
30238 'use strict';
30239
30240 var _extends = __webpack_require__(338)['default'];
30241
30242 var _interopRequireDefault = __webpack_require__(335)['default'];
30243
30244 exports.__esModule = true;
30245 exports.prefix = prefix;
30246 exports.getClassSet = getClassSet;
30247 exports.addStyle = addStyle;
30248
30249 var _react = __webpack_require__(89);
30250
30251 var _styleMaps = __webpack_require__(358);
30252
30253 var _styleMaps2 = _interopRequireDefault(_styleMaps);
30254
30255 var _invariant = __webpack_require__(268);
30256
30257 var _invariant2 = _interopRequireDefault(_invariant);
30258
30259 function curry(fn) {
30260 return function () {
30261 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
30262 args[_key] = arguments[_key];
30263 }
30264
30265 var last = args[args.length - 1];
30266 if (typeof last === 'function') {
30267 return fn.apply(undefined, args);
30268 }
30269 return function (Component) {
30270 return fn.apply(undefined, args.concat([Component]));
30271 };
30272 };
30273 }
30274
30275 function prefix(props, variant) {
30276 if (props === undefined) props = {};
30277
30278 !(props.bsClass || '').trim() ? (undefined) !== 'production' ? _invariant2['default'](false, 'A `bsClass` prop is required for this component') : _invariant2['default'](false) : undefined;
30279 return props.bsClass + (variant ? '-' + variant : '');
30280 }
30281
30282 var bsClass = curry(function (defaultClass, Component) {
30283 var propTypes = Component.propTypes || (Component.propTypes = {});
30284 var defaultProps = Component.defaultProps || (Component.defaultProps = {});
30285
30286 propTypes.bsClass = _react.PropTypes.string;
30287 defaultProps.bsClass = defaultClass;
30288
30289 return Component;
30290 });
30291
30292 exports.bsClass = bsClass;
30293 var bsStyles = curry(function (styles, defaultStyle, Component) {
30294 if (typeof defaultStyle !== 'string') {
30295 Component = defaultStyle;
30296 defaultStyle = undefined;
30297 }
30298
30299 var existing = Component.STYLES || [];
30300 var propTypes = Component.propTypes || {};
30301
30302 styles.forEach(function (style) {
30303 if (existing.indexOf(style) === -1) {
30304 existing.push(style);
30305 }
30306 });
30307
30308 var propType = _react.PropTypes.oneOf(existing);
30309
30310 // expose the values on the propType function for documentation
30311 Component.STYLES = propType._values = existing;
30312
30313 Component.propTypes = _extends({}, propTypes, {
30314 bsStyle: propType
30315 });
30316
30317 if (defaultStyle !== undefined) {
30318 var defaultProps = Component.defaultProps || (Component.defaultProps = {});
30319 defaultProps.bsStyle = defaultStyle;
30320 }
30321
30322 return Component;
30323 });
30324
30325 exports.bsStyles = bsStyles;
30326 var bsSizes = curry(function (sizes, defaultSize, Component) {
30327 if (typeof defaultSize !== 'string') {
30328 Component = defaultSize;
30329 defaultSize = undefined;
30330 }
30331
30332 var existing = Component.SIZES || [];
30333 var propTypes = Component.propTypes || {};
30334
30335 sizes.forEach(function (size) {
30336 if (existing.indexOf(size) === -1) {
30337 existing.push(size);
30338 }
30339 });
30340
30341 var values = [];
30342 existing.forEach(function (size) {
30343 var mappedSize = _styleMaps2['default'].SIZES[size];
30344 if (mappedSize && mappedSize !== size) {
30345 values.push(mappedSize);
30346 }
30347
30348 values.push(size);
30349 });
30350
30351 var propType = _react.PropTypes.oneOf(values);
30352 propType._values = values;
30353
30354 // expose the values on the propType function for documentation
30355 Component.SIZES = existing;
30356
30357 Component.propTypes = _extends({}, propTypes, {
30358 bsSize: propType
30359 });
30360
30361 if (defaultSize !== undefined) {
30362 if (!Component.defaultProps) {
30363 Component.defaultProps = {};
30364 }
30365 Component.defaultProps.bsSize = defaultSize;
30366 }
30367
30368 return Component;
30369 });
30370
30371 exports.bsSizes = bsSizes;
30372
30373 function getClassSet(props) {
30374 var _classes;
30375
30376 var classes = (_classes = {}, _classes[prefix(props)] = true, _classes);
30377
30378 if (props.bsSize) {
30379 var bsSize = _styleMaps2['default'].SIZES[props.bsSize] || bsSize;
30380 classes[prefix(props, bsSize)] = true;
30381 }
30382
30383 if (props.bsStyle) {
30384 classes[prefix(props, props.bsStyle)] = true;
30385 }
30386
30387 return classes;
30388 }
30389
30390 /**
30391 * Add a style variant to a Component. Mutates the propTypes of the component
30392 * in order to validate the new variant.
30393 */
30394
30395 function addStyle(Component) {
30396 for (var _len2 = arguments.length, styleVariant = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
30397 styleVariant[_key2 - 1] = arguments[_key2];
30398 }
30399
30400 bsStyles(styleVariant, Component);
30401 }
30402
30403 var _curry = curry;
30404 exports._curry = _curry;
30405
30406/***/ },
30407/* 358 */
30408/***/ function(module, exports, __webpack_require__) {
30409
30410 'use strict';
30411
30412 var _Object$assign = __webpack_require__(339)['default'];
30413
30414 var _Object$create = __webpack_require__(359)['default'];
30415
30416 var _Object$keys = __webpack_require__(361)['default'];
30417
30418 exports.__esModule = true;
30419
30420 var constant = function constant(obj) {
30421 return _Object$assign(_Object$create({
30422 values: function values() {
30423 var _this = this;
30424
30425 return _Object$keys(this).map(function (k) {
30426 return _this[k];
30427 });
30428 }
30429 }), obj);
30430 };
30431
30432 var styleMaps = {
30433
30434 SIZES: {
30435 'large': 'lg',
30436 'medium': 'md',
30437 'small': 'sm',
30438 'xsmall': 'xs',
30439 'lg': 'lg',
30440 'md': 'md',
30441 'sm': 'sm',
30442 'xs': 'xs'
30443 },
30444 GRID_COLUMNS: 12
30445 };
30446
30447 var Sizes = constant({
30448 LARGE: 'large',
30449 MEDIUM: 'medium',
30450 SMALL: 'small',
30451 XSMALL: 'xsmall'
30452 });
30453
30454 exports.Sizes = Sizes;
30455 var State = constant({
30456 SUCCESS: 'success',
30457 WARNING: 'warning',
30458 DANGER: 'danger',
30459 INFO: 'info'
30460 });
30461
30462 exports.State = State;
30463 var DEFAULT = 'default';
30464 exports.DEFAULT = DEFAULT;
30465 var PRIMARY = 'primary';
30466 exports.PRIMARY = PRIMARY;
30467 var LINK = 'link';
30468 exports.LINK = LINK;
30469 var INVERSE = 'inverse';
30470
30471 exports.INVERSE = INVERSE;
30472 exports['default'] = styleMaps;
30473
30474/***/ },
30475/* 359 */
30476/***/ function(module, exports, __webpack_require__) {
30477
30478 module.exports = { "default": __webpack_require__(360), __esModule: true };
30479
30480/***/ },
30481/* 360 */
30482/***/ function(module, exports, __webpack_require__) {
30483
30484 var $ = __webpack_require__(348);
30485 module.exports = function create(P, D){
30486 return $.create(P, D);
30487 };
30488
30489/***/ },
30490/* 361 */
30491/***/ function(module, exports, __webpack_require__) {
30492
30493 module.exports = { "default": __webpack_require__(362), __esModule: true };
30494
30495/***/ },
30496/* 362 */
30497/***/ function(module, exports, __webpack_require__) {
30498
30499 __webpack_require__(363);
30500 module.exports = __webpack_require__(344).Object.keys;
30501
30502/***/ },
30503/* 363 */
30504/***/ function(module, exports, __webpack_require__) {
30505
30506 // 19.1.2.14 Object.keys(O)
30507 var toObject = __webpack_require__(349);
30508
30509 __webpack_require__(364)('keys', function($keys){
30510 return function keys(it){
30511 return $keys(toObject(it));
30512 };
30513 });
30514
30515/***/ },
30516/* 364 */
30517/***/ function(module, exports, __webpack_require__) {
30518
30519 // most Object methods by ES6 should accept primitives
30520 var $export = __webpack_require__(342)
30521 , core = __webpack_require__(344)
30522 , fails = __webpack_require__(353);
30523 module.exports = function(KEY, exec){
30524 var fn = (core.Object || {})[KEY] || Object[KEY]
30525 , exp = {};
30526 exp[KEY] = exec(fn);
30527 $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
30528 };
30529
30530/***/ },
30531/* 365 */
30532/***/ function(module, exports, __webpack_require__) {
30533
30534 'use strict';
30535
30536 var _interopRequireDefault = __webpack_require__(335)['default'];
30537
30538 exports.__esModule = true;
30539
30540 var _react = __webpack_require__(89);
30541
30542 var _react2 = _interopRequireDefault(_react);
30543
30544 // FIXME: This should really be ValidElementChildren.
30545
30546 /**
30547 * Iterates through children that are typically specified as `props.children`,
30548 * but only maps over children that are "valid components".
30549 *
30550 * The mapFunction provided index will be normalised to the components mapped,
30551 * so an invalid component would not increase the index.
30552 *
30553 * @param {?*} children Children tree container.
30554 * @param {function(*, int)} func.
30555 * @param {*} context Context for func.
30556 * @return {object} Object containing the ordered map of results.
30557 */
30558 function map(children, func, context) {
30559 var index = 0;
30560
30561 return _react2['default'].Children.map(children, function (child) {
30562 if (!_react2['default'].isValidElement(child)) {
30563 return child;
30564 }
30565
30566 return func.call(context, child, index++);
30567 });
30568 }
30569
30570 /**
30571 * Iterates through children that are "valid components".
30572 *
30573 * The provided forEachFunc(child, index) will be called for each
30574 * leaf child with the index reflecting the position relative to "valid components".
30575 *
30576 * @param {?*} children Children tree container.
30577 * @param {function(*, int)} func.
30578 * @param {*} context Context for context.
30579 */
30580 function forEach(children, func, context) {
30581 var index = 0;
30582
30583 _react2['default'].Children.forEach(children, function (child) {
30584 if (!_react2['default'].isValidElement(child)) {
30585 return;
30586 }
30587
30588 func.call(context, child, index++);
30589 });
30590 }
30591
30592 /**
30593 * Count the number of "valid components" in the Children container.
30594 *
30595 * @param {?*} children Children tree container.
30596 * @returns {number}
30597 */
30598 function count(children) {
30599 var result = 0;
30600
30601 _react2['default'].Children.forEach(children, function (child) {
30602 if (!_react2['default'].isValidElement(child)) {
30603 return;
30604 }
30605
30606 ++result;
30607 });
30608
30609 return result;
30610 }
30611
30612 /**
30613 * Finds children that are typically specified as `props.children`,
30614 * but only iterates over children that are "valid components".
30615 *
30616 * The provided forEachFunc(child, index) will be called for each
30617 * leaf child with the index reflecting the position relative to "valid components".
30618 *
30619 * @param {?*} children Children tree container.
30620 * @param {function(*, int)} func.
30621 * @param {*} context Context for func.
30622 * @returns {array} of children that meet the func return statement
30623 */
30624 function filter(children, func, context) {
30625 var index = 0;
30626 var result = [];
30627
30628 _react2['default'].Children.forEach(children, function (child) {
30629 if (!_react2['default'].isValidElement(child)) {
30630 return;
30631 }
30632
30633 if (func.call(context, child, index++)) {
30634 result.push(child);
30635 }
30636 });
30637
30638 return result;
30639 }
30640
30641 function find(children, func, context) {
30642 var index = 0;
30643 var result = undefined;
30644
30645 _react2['default'].Children.forEach(children, function (child) {
30646 if (result) {
30647 return;
30648 }
30649 if (!_react2['default'].isValidElement(child)) {
30650 return;
30651 }
30652
30653 if (func.call(context, child, index++)) {
30654 result = child;
30655 }
30656 });
30657
30658 return result;
30659 }
30660
30661 function some(children, func, context) {
30662 var index = 0;
30663 var result = false;
30664
30665 _react2['default'].Children.forEach(children, function (child) {
30666 if (result) {
30667 return;
30668 }
30669 if (!_react2['default'].isValidElement(child)) {
30670 return;
30671 }
30672
30673 if (func.call(context, child, index++)) {
30674 result = true;
30675 }
30676 });
30677
30678 return result;
30679 }
30680
30681 exports['default'] = {
30682 map: map,
30683 forEach: forEach,
30684 count: count,
30685 find: find,
30686 filter: filter,
30687 some: some
30688 };
30689 module.exports = exports['default'];
30690
30691/***/ },
30692/* 366 */
30693/***/ function(module, exports, __webpack_require__) {
30694
30695 'use strict';
30696
30697 var _extends = __webpack_require__(338)['default'];
30698
30699 var _interopRequireDefault = __webpack_require__(335)['default'];
30700
30701 exports.__esModule = true;
30702
30703 var _classnames = __webpack_require__(356);
30704
30705 var _classnames2 = _interopRequireDefault(_classnames);
30706
30707 var _react = __webpack_require__(89);
30708
30709 var _react2 = _interopRequireDefault(_react);
30710
30711 var _reactPropTypesLibDeprecated = __webpack_require__(367);
30712
30713 var _reactPropTypesLibDeprecated2 = _interopRequireDefault(_reactPropTypesLibDeprecated);
30714
30715 var _styleMaps = __webpack_require__(358);
30716
30717 var _utilsBootstrapUtils = __webpack_require__(357);
30718
30719 var Alert = _react2['default'].createClass({
30720 displayName: 'Alert',
30721
30722 propTypes: {
30723 onDismiss: _react2['default'].PropTypes.func,
30724 /**
30725 * @private
30726 */
30727 dismissAfter: _reactPropTypesLibDeprecated2['default'](_react2['default'].PropTypes.number, 'No longer supported.'),
30728 closeLabel: _react2['default'].PropTypes.string
30729 },
30730
30731 getDefaultProps: function getDefaultProps() {
30732 return {
30733 closeLabel: 'Close Alert'
30734 };
30735 },
30736
30737 renderDismissButton: function renderDismissButton() {
30738 return _react2['default'].createElement(
30739 'button',
30740 {
30741 type: 'button',
30742 className: 'close',
30743 onClick: this.props.onDismiss,
30744 'aria-hidden': 'true',
30745 tabIndex: '-1'
30746 },
30747 _react2['default'].createElement(
30748 'span',
30749 null,
30750 '×'
30751 )
30752 );
30753 },
30754
30755 renderSrOnlyDismissButton: function renderSrOnlyDismissButton() {
30756 return _react2['default'].createElement(
30757 'button',
30758 {
30759 type: 'button',
30760 className: 'close sr-only',
30761 onClick: this.props.onDismiss
30762 },
30763 this.props.closeLabel
30764 );
30765 },
30766
30767 render: function render() {
30768 var classes = _utilsBootstrapUtils.getClassSet(this.props);
30769 var isDismissable = !!this.props.onDismiss;
30770
30771 classes[_utilsBootstrapUtils.prefix(this.props, 'dismissable')] = isDismissable;
30772
30773 return _react2['default'].createElement(
30774 'div',
30775 _extends({}, this.props, {
30776 role: 'alert',
30777 className: _classnames2['default'](this.props.className, classes)
30778 }),
30779 isDismissable ? this.renderDismissButton() : null,
30780 this.props.children,
30781 isDismissable ? this.renderSrOnlyDismissButton() : null
30782 );
30783 },
30784
30785 componentDidMount: function componentDidMount() {
30786 if (this.props.dismissAfter && this.props.onDismiss) {
30787 this.dismissTimer = setTimeout(this.props.onDismiss, this.props.dismissAfter);
30788 }
30789 },
30790
30791 componentWillUnmount: function componentWillUnmount() {
30792 clearTimeout(this.dismissTimer);
30793 }
30794 });
30795
30796 exports['default'] = _utilsBootstrapUtils.bsStyles(_styleMaps.State.values(), _styleMaps.State.INFO, _utilsBootstrapUtils.bsClass('alert', Alert));
30797 module.exports = exports['default'];
30798
30799/***/ },
30800/* 367 */
30801/***/ function(module, exports, __webpack_require__) {
30802
30803 'use strict';
30804
30805 exports.__esModule = true;
30806 exports['default'] = deprecated;
30807
30808 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
30809
30810 var _warning = __webpack_require__(271);
30811
30812 var _warning2 = _interopRequireDefault(_warning);
30813
30814 var warned = {};
30815
30816 function deprecated(propType, explanation) {
30817 return function validate(props, propName, componentName) {
30818 if (props[propName] != null) {
30819 var message = '"' + propName + '" property of "' + componentName + '" has been deprecated.\n' + explanation;
30820 if (!warned[message]) {
30821 _warning2['default'](false, message);
30822 warned[message] = true;
30823 }
30824 }
30825
30826 return propType(props, propName, componentName);
30827 };
30828 }
30829
30830 function _resetWarned() {
30831 warned = {};
30832 }
30833
30834 deprecated._resetWarned = _resetWarned;
30835 module.exports = exports['default'];
30836
30837/***/ },
30838/* 368 */
30839/***/ function(module, exports, __webpack_require__) {
30840
30841 'use strict';
30842
30843 var _extends = __webpack_require__(338)['default'];
30844
30845 var _interopRequireDefault = __webpack_require__(335)['default'];
30846
30847 exports.__esModule = true;
30848
30849 var _classnames = __webpack_require__(356);
30850
30851 var _classnames2 = _interopRequireDefault(_classnames);
30852
30853 var _react = __webpack_require__(89);
30854
30855 var _react2 = _interopRequireDefault(_react);
30856
30857 var _utilsBootstrapUtils = __webpack_require__(357);
30858
30859 var _utilsValidComponentChildren = __webpack_require__(365);
30860
30861 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
30862
30863 var Badge = _react2['default'].createClass({
30864 displayName: 'Badge',
30865
30866 propTypes: {
30867 pullRight: _react2['default'].PropTypes.bool
30868 },
30869
30870 getDefaultProps: function getDefaultProps() {
30871 return {
30872 pullRight: false,
30873 bsClass: 'badge'
30874 };
30875 },
30876
30877 hasContent: function hasContent() {
30878 var children = this.props.children;
30879
30880 return _utilsValidComponentChildren2['default'].count(children) > 0 || _react2['default'].Children.count(children) > 1 || typeof children === 'string' || typeof children === 'number';
30881 },
30882
30883 render: function render() {
30884 var _classes;
30885
30886 var classes = (_classes = {
30887 'pull-right': this.props.pullRight
30888 }, _classes[_utilsBootstrapUtils.prefix(this.props)] = this.hasContent(), _classes);
30889 return _react2['default'].createElement(
30890 'span',
30891 _extends({}, this.props, {
30892 className: _classnames2['default'](this.props.className, classes)
30893 }),
30894 this.props.children
30895 );
30896 }
30897 });
30898
30899 exports['default'] = Badge;
30900 module.exports = exports['default'];
30901
30902/***/ },
30903/* 369 */
30904/***/ function(module, exports, __webpack_require__) {
30905
30906 'use strict';
30907
30908 var _objectWithoutProperties = __webpack_require__(355)['default'];
30909
30910 var _extends = __webpack_require__(338)['default'];
30911
30912 var _interopRequireDefault = __webpack_require__(335)['default'];
30913
30914 exports.__esModule = true;
30915
30916 var _react = __webpack_require__(89);
30917
30918 var _react2 = _interopRequireDefault(_react);
30919
30920 var _classnames = __webpack_require__(356);
30921
30922 var _classnames2 = _interopRequireDefault(_classnames);
30923
30924 var _utilsValidComponentChildren = __webpack_require__(365);
30925
30926 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
30927
30928 var _BreadcrumbItem = __webpack_require__(370);
30929
30930 var _BreadcrumbItem2 = _interopRequireDefault(_BreadcrumbItem);
30931
30932 var Breadcrumb = _react2['default'].createClass({
30933 displayName: 'Breadcrumb',
30934
30935 propTypes: {
30936 /**
30937 * bootstrap className
30938 * @private
30939 */
30940 bsClass: _react2['default'].PropTypes.string
30941 },
30942
30943 getDefaultProps: function getDefaultProps() {
30944 return {
30945 bsClass: 'breadcrumb'
30946 };
30947 },
30948
30949 render: function render() {
30950 var _props = this.props;
30951 var className = _props.className;
30952
30953 var props = _objectWithoutProperties(_props, ['className']);
30954
30955 return _react2['default'].createElement(
30956 'ol',
30957 _extends({}, props, {
30958 role: 'navigation',
30959 'aria-label': 'breadcrumbs',
30960 className: _classnames2['default'](className, this.props.bsClass) }),
30961 _utilsValidComponentChildren2['default'].map(this.props.children, this.renderBreadcrumbItem)
30962 );
30963 },
30964
30965 renderBreadcrumbItem: function renderBreadcrumbItem(child, index) {
30966 return _react.cloneElement(child, { key: child.key || index });
30967 }
30968 });
30969
30970 Breadcrumb.Item = _BreadcrumbItem2['default'];
30971
30972 exports['default'] = Breadcrumb;
30973 module.exports = exports['default'];
30974
30975/***/ },
30976/* 370 */
30977/***/ function(module, exports, __webpack_require__) {
30978
30979 'use strict';
30980
30981 var _objectWithoutProperties = __webpack_require__(355)['default'];
30982
30983 var _extends = __webpack_require__(338)['default'];
30984
30985 var _interopRequireDefault = __webpack_require__(335)['default'];
30986
30987 exports.__esModule = true;
30988
30989 var _classnames = __webpack_require__(356);
30990
30991 var _classnames2 = _interopRequireDefault(_classnames);
30992
30993 var _react = __webpack_require__(89);
30994
30995 var _react2 = _interopRequireDefault(_react);
30996
30997 var _SafeAnchor = __webpack_require__(371);
30998
30999 var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
31000
31001 var BreadcrumbItem = _react2['default'].createClass({
31002 displayName: 'BreadcrumbItem',
31003
31004 propTypes: {
31005 /**
31006 * If set to true, renders `span` instead of `a`
31007 */
31008 active: _react2['default'].PropTypes.bool,
31009 /**
31010 * HTML id for the wrapper `li` element
31011 */
31012 id: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number]),
31013 /**
31014 * HTML id for the inner `a` element
31015 */
31016 linkId: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number]),
31017 /**
31018 * `href` attribute for the inner `a` element
31019 */
31020 href: _react2['default'].PropTypes.string,
31021 /**
31022 * `title` attribute for the inner `a` element
31023 */
31024 title: _react2['default'].PropTypes.node,
31025 /**
31026 * `target` attribute for the inner `a` element
31027 */
31028 target: _react2['default'].PropTypes.string
31029 },
31030
31031 getDefaultProps: function getDefaultProps() {
31032 return {
31033 active: false
31034 };
31035 },
31036
31037 render: function render() {
31038 var _props = this.props;
31039 var active = _props.active;
31040 var className = _props.className;
31041 var id = _props.id;
31042 var linkId = _props.linkId;
31043 var children = _props.children;
31044 var href = _props.href;
31045 var title = _props.title;
31046 var target = _props.target;
31047
31048 var props = _objectWithoutProperties(_props, ['active', 'className', 'id', 'linkId', 'children', 'href', 'title', 'target']);
31049
31050 var linkProps = {
31051 href: href,
31052 title: title,
31053 target: target,
31054 id: linkId
31055 };
31056
31057 return _react2['default'].createElement(
31058 'li',
31059 { id: id, className: _classnames2['default'](className, { active: active }) },
31060 active ? _react2['default'].createElement(
31061 'span',
31062 props,
31063 children
31064 ) : _react2['default'].createElement(
31065 _SafeAnchor2['default'],
31066 _extends({}, props, linkProps),
31067 children
31068 )
31069 );
31070 }
31071 });
31072
31073 exports['default'] = BreadcrumbItem;
31074 module.exports = exports['default'];
31075
31076/***/ },
31077/* 371 */
31078/***/ function(module, exports, __webpack_require__) {
31079
31080 'use strict';
31081
31082 var _inherits = __webpack_require__(372)['default'];
31083
31084 var _classCallCheck = __webpack_require__(379)['default'];
31085
31086 var _extends = __webpack_require__(338)['default'];
31087
31088 var _objectWithoutProperties = __webpack_require__(355)['default'];
31089
31090 var _interopRequireDefault = __webpack_require__(335)['default'];
31091
31092 exports.__esModule = true;
31093
31094 var _react = __webpack_require__(89);
31095
31096 var _react2 = _interopRequireDefault(_react);
31097
31098 var _reactPropTypesLibElementType = __webpack_require__(380);
31099
31100 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
31101
31102 function isTrivialHref(href) {
31103 return !href || href.trim() === '#';
31104 }
31105
31106 /**
31107 * There are situations due to browser quirks or bootstrap css where
31108 * an anchor tag is needed, when semantically a button tag is the
31109 * better choice. SafeAnchor ensures that when an anchor is used like a
31110 * button its accessible. It also emulates input `disabled` behavior for
31111 * links, which is usually desirable for Buttons, NavItems, MenuItems, etc.
31112 */
31113
31114 var SafeAnchor = (function (_React$Component) {
31115 _inherits(SafeAnchor, _React$Component);
31116
31117 function SafeAnchor(props) {
31118 _classCallCheck(this, SafeAnchor);
31119
31120 _React$Component.call(this, props);
31121 this.handleClick = this.handleClick.bind(this);
31122 }
31123
31124 SafeAnchor.prototype.render = function render() {
31125 var _props = this.props;
31126 var href = _props.href;
31127 var role = _props.role;
31128 var tabIndex = _props.tabIndex;
31129 var disabled = _props.disabled;
31130 var style = _props.style;
31131
31132 var props = _objectWithoutProperties(_props, ['href', 'role', 'tabIndex', 'disabled', 'style']);
31133
31134 var Component = this.props.componentClass || 'a';
31135
31136 if (isTrivialHref(href)) {
31137 role = role || 'button';
31138 // we want to make sure there is a href attribute on the node
31139 // otherwise, the cursor incorrectly styled (except with role='button')
31140 href = href || '';
31141 }
31142
31143 if (disabled) {
31144 tabIndex = -1;
31145 style = _extends({ pointerEvents: 'none' }, style);
31146 }
31147
31148 return _react2['default'].createElement(Component, _extends({}, props, {
31149 role: role,
31150 href: href,
31151 style: style,
31152 tabIndex: tabIndex,
31153 onClick: this.handleClick
31154 }));
31155 };
31156
31157 SafeAnchor.prototype.handleClick = function handleClick(event) {
31158 var _props2 = this.props;
31159 var disabled = _props2.disabled;
31160 var href = _props2.href;
31161 var onClick = _props2.onClick;
31162
31163 if (disabled || isTrivialHref(href)) {
31164 event.preventDefault();
31165 }
31166
31167 if (disabled) {
31168 event.stopPropagation();
31169 return;
31170 }
31171
31172 if (onClick) {
31173 onClick(event);
31174 }
31175 };
31176
31177 return SafeAnchor;
31178 })(_react2['default'].Component);
31179
31180 exports['default'] = SafeAnchor;
31181
31182 SafeAnchor.propTypes = {
31183 href: _react2['default'].PropTypes.string,
31184 onClick: _react2['default'].PropTypes.func,
31185 disabled: _react2['default'].PropTypes.bool,
31186 role: _react2['default'].PropTypes.string,
31187 tabIndex: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.number, _react2['default'].PropTypes.string]),
31188 /**
31189 * this is sort of silly but needed for Button
31190 */
31191 componentClass: _reactPropTypesLibElementType2['default']
31192 };
31193 module.exports = exports['default'];
31194
31195/***/ },
31196/* 372 */
31197/***/ function(module, exports, __webpack_require__) {
31198
31199 "use strict";
31200
31201 var _Object$create = __webpack_require__(359)["default"];
31202
31203 var _Object$setPrototypeOf = __webpack_require__(373)["default"];
31204
31205 exports["default"] = function (subClass, superClass) {
31206 if (typeof superClass !== "function" && superClass !== null) {
31207 throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
31208 }
31209
31210 subClass.prototype = _Object$create(superClass && superClass.prototype, {
31211 constructor: {
31212 value: subClass,
31213 enumerable: false,
31214 writable: true,
31215 configurable: true
31216 }
31217 });
31218 if (superClass) _Object$setPrototypeOf ? _Object$setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
31219 };
31220
31221 exports.__esModule = true;
31222
31223/***/ },
31224/* 373 */
31225/***/ function(module, exports, __webpack_require__) {
31226
31227 module.exports = { "default": __webpack_require__(374), __esModule: true };
31228
31229/***/ },
31230/* 374 */
31231/***/ function(module, exports, __webpack_require__) {
31232
31233 __webpack_require__(375);
31234 module.exports = __webpack_require__(344).Object.setPrototypeOf;
31235
31236/***/ },
31237/* 375 */
31238/***/ function(module, exports, __webpack_require__) {
31239
31240 // 19.1.3.19 Object.setPrototypeOf(O, proto)
31241 var $export = __webpack_require__(342);
31242 $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(376).set});
31243
31244/***/ },
31245/* 376 */
31246/***/ function(module, exports, __webpack_require__) {
31247
31248 // Works with __proto__ only. Old v8 can't work with null proto objects.
31249 /* eslint-disable no-proto */
31250 var getDesc = __webpack_require__(348).getDesc
31251 , isObject = __webpack_require__(377)
31252 , anObject = __webpack_require__(378);
31253 var check = function(O, proto){
31254 anObject(O);
31255 if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
31256 };
31257 module.exports = {
31258 set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
31259 function(test, buggy, set){
31260 try {
31261 set = __webpack_require__(345)(Function.call, getDesc(Object.prototype, '__proto__').set, 2);
31262 set(test, []);
31263 buggy = !(test instanceof Array);
31264 } catch(e){ buggy = true; }
31265 return function setPrototypeOf(O, proto){
31266 check(O, proto);
31267 if(buggy)O.__proto__ = proto;
31268 else set(O, proto);
31269 return O;
31270 };
31271 }({}, false) : undefined),
31272 check: check
31273 };
31274
31275/***/ },
31276/* 377 */
31277/***/ function(module, exports) {
31278
31279 module.exports = function(it){
31280 return typeof it === 'object' ? it !== null : typeof it === 'function';
31281 };
31282
31283/***/ },
31284/* 378 */
31285/***/ function(module, exports, __webpack_require__) {
31286
31287 var isObject = __webpack_require__(377);
31288 module.exports = function(it){
31289 if(!isObject(it))throw TypeError(it + ' is not an object!');
31290 return it;
31291 };
31292
31293/***/ },
31294/* 379 */
31295/***/ function(module, exports) {
31296
31297 "use strict";
31298
31299 exports["default"] = function (instance, Constructor) {
31300 if (!(instance instanceof Constructor)) {
31301 throw new TypeError("Cannot call a class as a function");
31302 }
31303 };
31304
31305 exports.__esModule = true;
31306
31307/***/ },
31308/* 380 */
31309/***/ function(module, exports, __webpack_require__) {
31310
31311 'use strict';
31312
31313 exports.__esModule = true;
31314
31315 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
31316
31317 var _react = __webpack_require__(89);
31318
31319 var _react2 = _interopRequireDefault(_react);
31320
31321 var _common = __webpack_require__(381);
31322
31323 /**
31324 * Checks whether a prop provides a type of element.
31325 *
31326 * The type of element can be provided in two forms:
31327 * - tag name (string)
31328 * - a return value of React.createClass(...)
31329 *
31330 * @param props
31331 * @param propName
31332 * @param componentName
31333 * @returns {Error|undefined}
31334 */
31335
31336 function validate(props, propName, componentName) {
31337 var errBeginning = _common.errMsg(props, propName, componentName, '. Expected an Element `type`');
31338
31339 if (typeof props[propName] !== 'function') {
31340 if (_react2['default'].isValidElement(props[propName])) {
31341 return new Error(errBeginning + ', not an actual Element');
31342 }
31343
31344 if (typeof props[propName] !== 'string') {
31345 return new Error(errBeginning + ' such as a tag name or return value of React.createClass(...)');
31346 }
31347 }
31348 }
31349
31350 exports['default'] = _common.createChainableTypeChecker(validate);
31351 module.exports = exports['default'];
31352
31353/***/ },
31354/* 381 */
31355/***/ function(module, exports) {
31356
31357 'use strict';
31358
31359 exports.__esModule = true;
31360 exports.errMsg = errMsg;
31361 exports.createChainableTypeChecker = createChainableTypeChecker;
31362
31363 function errMsg(props, propName, componentName, msgContinuation) {
31364 return 'Invalid prop \'' + propName + '\' of value \'' + props[propName] + '\'' + (' supplied to \'' + componentName + '\'' + msgContinuation);
31365 }
31366
31367 /**
31368 * Create chain-able isRequired validator
31369 *
31370 * Largely copied directly from:
31371 * https://github.com/facebook/react/blob/0.11-stable/src/core/ReactPropTypes.js#L94
31372 */
31373
31374 function createChainableTypeChecker(validate) {
31375 function checkType(isRequired, props, propName, componentName) {
31376 componentName = componentName || '<<anonymous>>';
31377 if (props[propName] == null) {
31378 if (isRequired) {
31379 return new Error('Required prop \'' + propName + '\' was not specified in \'' + componentName + '\'.');
31380 }
31381 } else {
31382 return validate(props, propName, componentName);
31383 }
31384 }
31385
31386 var chainedCheckType = checkType.bind(null, false);
31387 chainedCheckType.isRequired = checkType.bind(null, true);
31388
31389 return chainedCheckType;
31390 }
31391
31392/***/ },
31393/* 382 */
31394/***/ function(module, exports, __webpack_require__) {
31395
31396 'use strict';
31397
31398 var _inherits = __webpack_require__(372)['default'];
31399
31400 var _classCallCheck = __webpack_require__(379)['default'];
31401
31402 var _extends = __webpack_require__(338)['default'];
31403
31404 var _interopRequireDefault = __webpack_require__(335)['default'];
31405
31406 exports.__esModule = true;
31407
31408 var _classnames = __webpack_require__(356);
31409
31410 var _classnames2 = _interopRequireDefault(_classnames);
31411
31412 var _react = __webpack_require__(89);
31413
31414 var _react2 = _interopRequireDefault(_react);
31415
31416 var _reactPropTypesLibElementType = __webpack_require__(380);
31417
31418 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
31419
31420 var _styleMaps = __webpack_require__(358);
31421
31422 var _utilsBootstrapUtils = __webpack_require__(357);
31423
31424 var _SafeAnchor = __webpack_require__(371);
31425
31426 var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
31427
31428 var ButtonStyles = _styleMaps.State.values().concat(_styleMaps.DEFAULT, _styleMaps.PRIMARY, _styleMaps.LINK);
31429
31430 var types = ['button', 'reset', 'submit'];
31431
31432 var Button = (function (_React$Component) {
31433 _inherits(Button, _React$Component);
31434
31435 function Button(props, context) {
31436 _classCallCheck(this, Button);
31437
31438 _React$Component.call(this, props, context);
31439 }
31440
31441 Button.prototype.render = function render() {
31442 var _extends2;
31443
31444 var classes = this.props.navDropdown ? {} : _utilsBootstrapUtils.getClassSet(this.props);
31445 var renderFuncName = undefined;
31446
31447 var blockClass = _utilsBootstrapUtils.prefix(this.props, 'block');
31448
31449 classes = _extends((_extends2 = {
31450 active: this.props.active
31451 }, _extends2[blockClass] = this.props.block, _extends2), classes);
31452
31453 if (this.props.navItem) {
31454 return this.renderNavItem(classes);
31455 }
31456
31457 renderFuncName = this.props.href || this.props.target || this.props.navDropdown ? 'renderAnchor' : 'renderButton';
31458
31459 return this[renderFuncName](classes);
31460 };
31461
31462 Button.prototype.renderAnchor = function renderAnchor(classes) {
31463 var _props = this.props;
31464 var disabled = _props.disabled;
31465 var href = _props.href;
31466
31467 classes.disabled = disabled;
31468
31469 return _react2['default'].createElement(
31470 _SafeAnchor2['default'],
31471 _extends({}, this.props, {
31472 href: href || '#',
31473 className: _classnames2['default'](this.props.className, classes)
31474 }),
31475 this.props.children
31476 );
31477 };
31478
31479 Button.prototype.renderButton = function renderButton(classes) {
31480 var Component = this.props.componentClass || 'button';
31481
31482 return _react2['default'].createElement(
31483 Component,
31484 _extends({}, this.props, {
31485 type: this.props.type || 'button',
31486 className: _classnames2['default'](this.props.className, classes) }),
31487 this.props.children
31488 );
31489 };
31490
31491 Button.prototype.renderNavItem = function renderNavItem(classes) {
31492 var liClasses = {
31493 active: this.props.active
31494 };
31495
31496 return _react2['default'].createElement(
31497 'li',
31498 { className: _classnames2['default'](liClasses) },
31499 this.renderAnchor(classes)
31500 );
31501 };
31502
31503 return Button;
31504 })(_react2['default'].Component);
31505
31506 Button.propTypes = {
31507 active: _react2['default'].PropTypes.bool,
31508 disabled: _react2['default'].PropTypes.bool,
31509 block: _react2['default'].PropTypes.bool,
31510 navItem: _react2['default'].PropTypes.bool,
31511 navDropdown: _react2['default'].PropTypes.bool,
31512 onClick: _react2['default'].PropTypes.func,
31513 /**
31514 * You can use a custom element for this component
31515 */
31516 componentClass: _reactPropTypesLibElementType2['default'],
31517 href: _react2['default'].PropTypes.string,
31518 target: _react2['default'].PropTypes.string,
31519 /**
31520 * Defines HTML button type Attribute
31521 * @type {("button"|"reset"|"submit")}
31522 * @defaultValue 'button'
31523 */
31524 type: _react2['default'].PropTypes.oneOf(types)
31525 };
31526
31527 Button.defaultProps = {
31528 active: false,
31529 block: false,
31530 disabled: false,
31531 navItem: false,
31532 navDropdown: false
31533 };
31534
31535 Button.types = types;
31536
31537 exports['default'] = _utilsBootstrapUtils.bsStyles(ButtonStyles, _styleMaps.DEFAULT, _utilsBootstrapUtils.bsSizes([_styleMaps.Sizes.LARGE, _styleMaps.Sizes.SMALL, _styleMaps.Sizes.XSMALL], _utilsBootstrapUtils.bsClass('btn', Button)));
31538 module.exports = exports['default'];
31539
31540/***/ },
31541/* 383 */
31542/***/ function(module, exports, __webpack_require__) {
31543
31544 'use strict';
31545
31546 var _extends = __webpack_require__(338)['default'];
31547
31548 var _interopRequireDefault = __webpack_require__(335)['default'];
31549
31550 exports.__esModule = true;
31551
31552 var _classnames = __webpack_require__(356);
31553
31554 var _classnames2 = _interopRequireDefault(_classnames);
31555
31556 var _react = __webpack_require__(89);
31557
31558 var _react2 = _interopRequireDefault(_react);
31559
31560 var _reactPropTypesLibAll = __webpack_require__(384);
31561
31562 var _reactPropTypesLibAll2 = _interopRequireDefault(_reactPropTypesLibAll);
31563
31564 var _utilsBootstrapUtils = __webpack_require__(357);
31565
31566 var _Button = __webpack_require__(382);
31567
31568 var _Button2 = _interopRequireDefault(_Button);
31569
31570 var ButtonGroup = _react2['default'].createClass({
31571 displayName: 'ButtonGroup',
31572
31573 propTypes: {
31574 vertical: _react2['default'].PropTypes.bool,
31575 justified: _react2['default'].PropTypes.bool,
31576 /**
31577 * Display block buttons, only useful when used with the "vertical" prop.
31578 * @type {bool}
31579 */
31580 block: _reactPropTypesLibAll2['default'](_react2['default'].PropTypes.bool, function (props) {
31581 if (props.block && !props.vertical) {
31582 return new Error('The block property requires the vertical property to be set to have any effect');
31583 }
31584 })
31585 },
31586
31587 getDefaultProps: function getDefaultProps() {
31588 return {
31589 block: false,
31590 justified: false,
31591 vertical: false
31592 };
31593 },
31594
31595 render: function render() {
31596 var classes = _utilsBootstrapUtils.getClassSet(this.props);
31597
31598 classes[_utilsBootstrapUtils.prefix(this.props)] = !this.props.vertical;
31599 classes[_utilsBootstrapUtils.prefix(this.props, 'vertical')] = this.props.vertical;
31600 classes[_utilsBootstrapUtils.prefix(this.props, 'justified')] = this.props.justified;
31601
31602 // this is annoying, since the class is `btn-block` not `btn-group-block`
31603 classes[_utilsBootstrapUtils.prefix(_Button2['default'].defaultProps, 'block')] = this.props.block;
31604
31605 return _react2['default'].createElement(
31606 'div',
31607 _extends({}, this.props, {
31608 className: _classnames2['default'](this.props.className, classes)
31609 }),
31610 this.props.children
31611 );
31612 }
31613 });
31614
31615 exports['default'] = _utilsBootstrapUtils.bsClass('btn-group', ButtonGroup);
31616 module.exports = exports['default'];
31617
31618/***/ },
31619/* 384 */
31620/***/ function(module, exports, __webpack_require__) {
31621
31622 'use strict';
31623
31624 exports.__esModule = true;
31625 exports['default'] = all;
31626
31627 var _common = __webpack_require__(381);
31628
31629 function all() {
31630 for (var _len = arguments.length, propTypes = Array(_len), _key = 0; _key < _len; _key++) {
31631 propTypes[_key] = arguments[_key];
31632 }
31633
31634 if (propTypes === undefined) {
31635 throw new Error('No validations provided');
31636 }
31637
31638 if (propTypes.some(function (propType) {
31639 return typeof propType !== 'function';
31640 })) {
31641 throw new Error('Invalid arguments, must be functions');
31642 }
31643
31644 if (propTypes.length === 0) {
31645 throw new Error('No validations provided');
31646 }
31647
31648 function validate(props, propName, componentName) {
31649 for (var i = 0; i < propTypes.length; i++) {
31650 var result = propTypes[i](props, propName, componentName);
31651
31652 if (result !== undefined && result !== null) {
31653 return result;
31654 }
31655 }
31656 }
31657
31658 return _common.createChainableTypeChecker(validate);
31659 }
31660
31661 module.exports = exports['default'];
31662
31663/***/ },
31664/* 385 */
31665/***/ function(module, exports, __webpack_require__) {
31666
31667 'use strict';
31668
31669 var _inherits = __webpack_require__(372)['default'];
31670
31671 var _classCallCheck = __webpack_require__(379)['default'];
31672
31673 var _objectWithoutProperties = __webpack_require__(355)['default'];
31674
31675 var _extends = __webpack_require__(338)['default'];
31676
31677 var _interopRequireDefault = __webpack_require__(335)['default'];
31678
31679 exports.__esModule = true;
31680
31681 var _react = __webpack_require__(89);
31682
31683 var _react2 = _interopRequireDefault(_react);
31684
31685 var _Button = __webpack_require__(382);
31686
31687 var _Button2 = _interopRequireDefault(_Button);
31688
31689 var _FormGroup = __webpack_require__(386);
31690
31691 var _FormGroup2 = _interopRequireDefault(_FormGroup);
31692
31693 var _InputBase2 = __webpack_require__(387);
31694
31695 var _InputBase3 = _interopRequireDefault(_InputBase2);
31696
31697 var _utilsChildrenValueInputValidation = __webpack_require__(389);
31698
31699 var _utilsChildrenValueInputValidation2 = _interopRequireDefault(_utilsChildrenValueInputValidation);
31700
31701 var _utilsDeprecationWarning = __webpack_require__(391);
31702
31703 var _utilsDeprecationWarning2 = _interopRequireDefault(_utilsDeprecationWarning);
31704
31705 var ButtonInput = (function (_InputBase) {
31706 _inherits(ButtonInput, _InputBase);
31707
31708 function ButtonInput() {
31709 _classCallCheck(this, ButtonInput);
31710
31711 _InputBase.apply(this, arguments);
31712 }
31713
31714 ButtonInput.prototype.renderFormGroup = function renderFormGroup(children) {
31715 var _props = this.props;
31716 var bsStyle = _props.bsStyle;
31717 var value = _props.value;
31718
31719 var other = _objectWithoutProperties(_props, ['bsStyle', 'value']);
31720
31721 return _react2['default'].createElement(
31722 _FormGroup2['default'],
31723 other,
31724 children
31725 );
31726 };
31727
31728 ButtonInput.prototype.renderInput = function renderInput() {
31729 var _props2 = this.props;
31730 var children = _props2.children;
31731 var value = _props2.value;
31732
31733 var other = _objectWithoutProperties(_props2, ['children', 'value']);
31734
31735 var val = children ? children : value;
31736 return _react2['default'].createElement(_Button2['default'], _extends({}, other, { componentClass: 'input', ref: 'input', key: 'input', value: val }));
31737 };
31738
31739 return ButtonInput;
31740 })(_InputBase3['default']);
31741
31742 ButtonInput.types = _Button2['default'].types;
31743
31744 ButtonInput.defaultProps = {
31745 type: 'button'
31746 };
31747
31748 ButtonInput.propTypes = {
31749 type: _react2['default'].PropTypes.oneOf(ButtonInput.types),
31750 bsStyle: function bsStyle() {
31751 // defer to Button propTypes of bsStyle
31752 return null;
31753 },
31754 children: _utilsChildrenValueInputValidation2['default'],
31755 value: _utilsChildrenValueInputValidation2['default']
31756 };
31757
31758 exports['default'] = _utilsDeprecationWarning2['default'].wrapper(ButtonInput, '`<ButtonInput>`', '`<Button>` directly');
31759 module.exports = exports['default'];
31760
31761/***/ },
31762/* 386 */
31763/***/ function(module, exports, __webpack_require__) {
31764
31765 'use strict';
31766
31767 var _inherits = __webpack_require__(372)['default'];
31768
31769 var _classCallCheck = __webpack_require__(379)['default'];
31770
31771 var _extends = __webpack_require__(338)['default'];
31772
31773 var _objectWithoutProperties = __webpack_require__(355)['default'];
31774
31775 var _interopRequireDefault = __webpack_require__(335)['default'];
31776
31777 exports.__esModule = true;
31778
31779 var _classnames = __webpack_require__(356);
31780
31781 var _classnames2 = _interopRequireDefault(_classnames);
31782
31783 var _react = __webpack_require__(89);
31784
31785 var _react2 = _interopRequireDefault(_react);
31786
31787 var _reactPropTypesLibDeprecated = __webpack_require__(367);
31788
31789 var _reactPropTypesLibDeprecated2 = _interopRequireDefault(_reactPropTypesLibDeprecated);
31790
31791 var _styleMaps = __webpack_require__(358);
31792
31793 var _utilsBootstrapUtils = __webpack_require__(357);
31794
31795 var _utilsValidComponentChildren = __webpack_require__(365);
31796
31797 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
31798
31799 var propTypes = {
31800 /**
31801 * Sets `id` on `<FormControl>` and `htmlFor` on `<FormGroup.Label>`.
31802 */
31803 controlId: _react2['default'].PropTypes.string,
31804 /**
31805 * @private
31806 */
31807 standalone: _reactPropTypesLibDeprecated2['default'](_react2['default'].PropTypes.bool, 'Use a `<FormControl>` or `<InputGroup>` directly.'),
31808 validationState: _react2['default'].PropTypes.oneOf(['success', 'warning', 'error']),
31809 /**
31810 * @private
31811 */
31812 bsStyle: _reactPropTypesLibDeprecated2['default'](_react2['default'].PropTypes.oneOf(['success', 'warning', 'error']), 'Use `validationState`'),
31813 /**
31814 * @private
31815 */
31816 hasFeedback: _reactPropTypesLibDeprecated2['default'](_react2['default'].PropTypes.bool, 'Use a `<FormControl.Feedback>` element.'),
31817 /**
31818 * @private
31819 */
31820 groupClassName: _reactPropTypesLibDeprecated2['default'](_react2['default'].PropTypes.string, 'Use `className`.')
31821 };
31822
31823 var childContextTypes = {
31824 $bs_formGroup: _react2['default'].PropTypes.object.isRequired
31825 };
31826
31827 var FormGroup = (function (_React$Component) {
31828 _inherits(FormGroup, _React$Component);
31829
31830 function FormGroup() {
31831 _classCallCheck(this, FormGroup);
31832
31833 _React$Component.apply(this, arguments);
31834 }
31835
31836 FormGroup.prototype.getChildContext = function getChildContext() {
31837 var _props = this.props;
31838 var controlId = _props.controlId;
31839 var bsStyle = _props.bsStyle;
31840 var _props$validationState = _props.validationState;
31841 var validationState = _props$validationState === undefined ? bsStyle : _props$validationState;
31842
31843 return {
31844 $bs_formGroup: {
31845 controlId: controlId,
31846 validationState: validationState
31847 }
31848 };
31849 };
31850
31851 FormGroup.prototype.hasFeedback = function hasFeedback(children) {
31852 var _this = this;
31853
31854 return _utilsValidComponentChildren2['default'].some(children, function (child) {
31855 return child.props.bsRole === 'feedback' || child.props.children && _this.hasFeedback(child.props.children);
31856 });
31857 };
31858
31859 FormGroup.prototype.render = function render() {
31860 var _props2 = this.props;
31861 var standalone = _props2.standalone;
31862 var bsStyle = _props2.bsStyle;
31863 var _props2$validationState = _props2.validationState;
31864 var validationState = _props2$validationState === undefined ? bsStyle : _props2$validationState;
31865 var groupClassName = _props2.groupClassName;
31866 var _props2$className = _props2.className;
31867 var className = _props2$className === undefined ? groupClassName : _props2$className;
31868 var children = _props2.children;
31869 var _props2$hasFeedback = _props2.hasFeedback;
31870 var hasFeedback = _props2$hasFeedback === undefined ? this.hasFeedback(children) : _props2$hasFeedback;
31871
31872 var props = _objectWithoutProperties(_props2, ['standalone', 'bsStyle', 'validationState', 'groupClassName', 'className', 'children', 'hasFeedback']);
31873
31874 delete props.bsClass;
31875 delete props.bsSize;
31876 delete props.controlId;
31877
31878 var classes = _extends({}, !standalone && _utilsBootstrapUtils.getClassSet(this.props), {
31879 'has-feedback': hasFeedback
31880 });
31881 if (validationState) {
31882 classes['has-' + validationState] = true;
31883 }
31884
31885 return _react2['default'].createElement(
31886 'div',
31887 _extends({}, props, { className: _classnames2['default'](className, classes) }),
31888 children
31889 );
31890 };
31891
31892 return FormGroup;
31893 })(_react2['default'].Component);
31894
31895 FormGroup.propTypes = propTypes;
31896 FormGroup.childContextTypes = childContextTypes;
31897
31898 exports['default'] = _utilsBootstrapUtils.bsClass('form-group', _utilsBootstrapUtils.bsSizes([_styleMaps.Sizes.LARGE, _styleMaps.Sizes.SMALL], FormGroup));
31899 module.exports = exports['default'];
31900
31901/***/ },
31902/* 387 */
31903/***/ function(module, exports, __webpack_require__) {
31904
31905 'use strict';
31906
31907 var _inherits = __webpack_require__(372)['default'];
31908
31909 var _classCallCheck = __webpack_require__(379)['default'];
31910
31911 var _extends = __webpack_require__(338)['default'];
31912
31913 var _interopRequireDefault = __webpack_require__(335)['default'];
31914
31915 exports.__esModule = true;
31916
31917 var _classnames = __webpack_require__(356);
31918
31919 var _classnames2 = _interopRequireDefault(_classnames);
31920
31921 var _react = __webpack_require__(89);
31922
31923 var _react2 = _interopRequireDefault(_react);
31924
31925 var _FormGroup = __webpack_require__(386);
31926
31927 var _FormGroup2 = _interopRequireDefault(_FormGroup);
31928
31929 var _Glyphicon = __webpack_require__(388);
31930
31931 var _Glyphicon2 = _interopRequireDefault(_Glyphicon);
31932
31933 var InputBase = (function (_React$Component) {
31934 _inherits(InputBase, _React$Component);
31935
31936 function InputBase() {
31937 _classCallCheck(this, InputBase);
31938
31939 _React$Component.apply(this, arguments);
31940 }
31941
31942 InputBase.prototype.getInputDOMNode = function getInputDOMNode() {
31943 return this.refs.input;
31944 };
31945
31946 InputBase.prototype.getValue = function getValue() {
31947 if (this.props.type === 'static') {
31948 return this.props.value;
31949 } else if (this.props.type) {
31950 if (this.props.type === 'select' && this.props.multiple) {
31951 return this.getSelectedOptions();
31952 }
31953 return this.getInputDOMNode().value;
31954 }
31955 throw new Error('Cannot use getValue without specifying input type.');
31956 };
31957
31958 InputBase.prototype.getChecked = function getChecked() {
31959 return this.getInputDOMNode().checked;
31960 };
31961
31962 InputBase.prototype.getSelectedOptions = function getSelectedOptions() {
31963 var values = [];
31964
31965 Array.prototype.forEach.call(this.getInputDOMNode().getElementsByTagName('option'), function (option) {
31966 if (option.selected) {
31967 var value = option.getAttribute('value') || option.innerHtml;
31968 values.push(value);
31969 }
31970 });
31971
31972 return values;
31973 };
31974
31975 InputBase.prototype.isCheckboxOrRadio = function isCheckboxOrRadio() {
31976 return this.props.type === 'checkbox' || this.props.type === 'radio';
31977 };
31978
31979 InputBase.prototype.isFile = function isFile() {
31980 return this.props.type === 'file';
31981 };
31982
31983 InputBase.prototype.renderInputGroup = function renderInputGroup(children) {
31984 var addonBefore = this.props.addonBefore ? _react2['default'].createElement(
31985 'span',
31986 { className: 'input-group-addon', key: 'addonBefore' },
31987 this.props.addonBefore
31988 ) : null;
31989
31990 var addonAfter = this.props.addonAfter ? _react2['default'].createElement(
31991 'span',
31992 { className: 'input-group-addon', key: 'addonAfter' },
31993 this.props.addonAfter
31994 ) : null;
31995
31996 var buttonBefore = this.props.buttonBefore ? _react2['default'].createElement(
31997 'span',
31998 { className: 'input-group-btn' },
31999 this.props.buttonBefore
32000 ) : null;
32001
32002 var buttonAfter = this.props.buttonAfter ? _react2['default'].createElement(
32003 'span',
32004 { className: 'input-group-btn' },
32005 this.props.buttonAfter
32006 ) : null;
32007
32008 var inputGroupClassName = undefined;
32009 switch (this.props.bsSize) {
32010 case 'small':
32011 inputGroupClassName = 'input-group-sm';break;
32012 case 'large':
32013 inputGroupClassName = 'input-group-lg';break;
32014 default:
32015 }
32016
32017 return addonBefore || addonAfter || buttonBefore || buttonAfter ? _react2['default'].createElement(
32018 'div',
32019 { className: _classnames2['default'](inputGroupClassName, 'input-group'), key: 'input-group' },
32020 addonBefore,
32021 buttonBefore,
32022 children,
32023 addonAfter,
32024 buttonAfter
32025 ) : children;
32026 };
32027
32028 InputBase.prototype.renderIcon = function renderIcon() {
32029 if (this.props.hasFeedback) {
32030 if (this.props.feedbackIcon) {
32031 return _react2['default'].cloneElement(this.props.feedbackIcon, { formControlFeedback: true });
32032 }
32033
32034 switch (this.props.bsStyle) {
32035 case 'success':
32036 return _react2['default'].createElement(_Glyphicon2['default'], { formControlFeedback: true, glyph: 'ok', key: 'icon' });
32037 case 'warning':
32038 return _react2['default'].createElement(_Glyphicon2['default'], { formControlFeedback: true, glyph: 'warning-sign', key: 'icon' });
32039 case 'error':
32040 return _react2['default'].createElement(_Glyphicon2['default'], { formControlFeedback: true, glyph: 'remove', key: 'icon' });
32041 default:
32042 return _react2['default'].createElement('span', { className: 'form-control-feedback', key: 'icon' });
32043 }
32044 } else {
32045 return null;
32046 }
32047 };
32048
32049 InputBase.prototype.renderHelp = function renderHelp() {
32050 return this.props.help ? _react2['default'].createElement(
32051 'span',
32052 { className: 'help-block', key: 'help' },
32053 this.props.help
32054 ) : null;
32055 };
32056
32057 InputBase.prototype.renderCheckboxAndRadioWrapper = function renderCheckboxAndRadioWrapper(children) {
32058 var classes = {
32059 'checkbox': this.props.type === 'checkbox',
32060 'radio': this.props.type === 'radio'
32061 };
32062
32063 return _react2['default'].createElement(
32064 'div',
32065 { className: _classnames2['default'](classes), key: 'checkboxRadioWrapper' },
32066 children
32067 );
32068 };
32069
32070 InputBase.prototype.renderWrapper = function renderWrapper(children) {
32071 return this.props.wrapperClassName ? _react2['default'].createElement(
32072 'div',
32073 { className: this.props.wrapperClassName, key: 'wrapper' },
32074 children
32075 ) : children;
32076 };
32077
32078 InputBase.prototype.renderLabel = function renderLabel(children) {
32079 var classes = {
32080 'control-label': !this.isCheckboxOrRadio()
32081 };
32082 classes[this.props.labelClassName] = this.props.labelClassName;
32083
32084 return this.props.label ? _react2['default'].createElement(
32085 'label',
32086 { htmlFor: this.props.id, className: _classnames2['default'](classes), key: 'label' },
32087 children,
32088 this.props.label
32089 ) : children;
32090 };
32091
32092 InputBase.prototype.renderInput = function renderInput() {
32093 if (!this.props.type) {
32094 return this.props.children;
32095 }
32096
32097 switch (this.props.type) {
32098 case 'select':
32099 return _react2['default'].createElement(
32100 'select',
32101 _extends({}, this.props, { className: _classnames2['default'](this.props.className, 'form-control'), ref: 'input', key: 'input' }),
32102 this.props.children
32103 );
32104 case 'textarea':
32105 return _react2['default'].createElement('textarea', _extends({}, this.props, { className: _classnames2['default'](this.props.className, 'form-control'), ref: 'input', key: 'input' }));
32106 case 'static':
32107 return _react2['default'].createElement(
32108 'p',
32109 _extends({}, this.props, { className: _classnames2['default'](this.props.className, 'form-control-static'), ref: 'input', key: 'input' }),
32110 this.props.value
32111 );
32112 default:
32113 var className = this.isCheckboxOrRadio() || this.isFile() ? '' : 'form-control';
32114 return _react2['default'].createElement('input', _extends({}, this.props, { className: _classnames2['default'](this.props.className, className), ref: 'input', key: 'input' }));
32115 }
32116 };
32117
32118 InputBase.prototype.renderFormGroup = function renderFormGroup(children) {
32119 return _react2['default'].createElement(
32120 _FormGroup2['default'],
32121 this.props,
32122 children
32123 );
32124 };
32125
32126 InputBase.prototype.renderChildren = function renderChildren() {
32127 return !this.isCheckboxOrRadio() ? [this.renderLabel(), this.renderWrapper([this.renderInputGroup(this.renderInput()), this.renderIcon(), this.renderHelp()])] : this.renderWrapper([this.renderCheckboxAndRadioWrapper(this.renderLabel(this.renderInput())), this.renderHelp()]);
32128 };
32129
32130 InputBase.prototype.render = function render() {
32131 var children = this.renderChildren();
32132 return this.renderFormGroup(children);
32133 };
32134
32135 return InputBase;
32136 })(_react2['default'].Component);
32137
32138 InputBase.propTypes = {
32139 type: _react2['default'].PropTypes.string,
32140 label: _react2['default'].PropTypes.node,
32141 help: _react2['default'].PropTypes.node,
32142 addonBefore: _react2['default'].PropTypes.node,
32143 addonAfter: _react2['default'].PropTypes.node,
32144 buttonBefore: _react2['default'].PropTypes.node,
32145 buttonAfter: _react2['default'].PropTypes.node,
32146 bsSize: _react2['default'].PropTypes.oneOf(['small', 'medium', 'large']),
32147 bsStyle: _react2['default'].PropTypes.oneOf(['success', 'warning', 'error']),
32148 hasFeedback: _react2['default'].PropTypes.bool,
32149 feedbackIcon: _react2['default'].PropTypes.node,
32150 id: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number]),
32151 groupClassName: _react2['default'].PropTypes.string,
32152 wrapperClassName: _react2['default'].PropTypes.string,
32153 labelClassName: _react2['default'].PropTypes.string,
32154 multiple: _react2['default'].PropTypes.bool,
32155 disabled: _react2['default'].PropTypes.bool,
32156 value: _react2['default'].PropTypes.any
32157 };
32158
32159 InputBase.defaultProps = {
32160 disabled: false,
32161 hasFeedback: false,
32162 multiple: false
32163 };
32164
32165 exports['default'] = InputBase;
32166 module.exports = exports['default'];
32167
32168/***/ },
32169/* 388 */
32170/***/ function(module, exports, __webpack_require__) {
32171
32172 'use strict';
32173
32174 var _extends = __webpack_require__(338)['default'];
32175
32176 var _interopRequireDefault = __webpack_require__(335)['default'];
32177
32178 exports.__esModule = true;
32179
32180 var _classnames = __webpack_require__(356);
32181
32182 var _classnames2 = _interopRequireDefault(_classnames);
32183
32184 var _react = __webpack_require__(89);
32185
32186 var _react2 = _interopRequireDefault(_react);
32187
32188 var _reactPropTypesLibDeprecated = __webpack_require__(367);
32189
32190 var _reactPropTypesLibDeprecated2 = _interopRequireDefault(_reactPropTypesLibDeprecated);
32191
32192 var Glyphicon = _react2['default'].createClass({
32193 displayName: 'Glyphicon',
32194
32195 propTypes: {
32196 /**
32197 * bootstrap className
32198 * @private
32199 */
32200 bsClass: _react2['default'].PropTypes.string,
32201 /**
32202 * An icon name. See e.g. http://getbootstrap.com/components/#glyphicons
32203 */
32204 glyph: _react2['default'].PropTypes.string.isRequired,
32205 /**
32206 * Adds 'form-control-feedback' class
32207 * @private
32208 */
32209 formControlFeedback: _reactPropTypesLibDeprecated2['default'](_react2['default'].PropTypes.bool, 'Use `<FormControl.Feedback>`.')
32210 },
32211
32212 getDefaultProps: function getDefaultProps() {
32213 return {
32214 bsClass: 'glyphicon'
32215 };
32216 },
32217
32218 render: function render() {
32219 var _classNames;
32220
32221 var className = _classnames2['default'](this.props.className, (_classNames = {}, _classNames[this.props.bsClass] = true, _classNames['glyphicon-' + this.props.glyph] = true, _classNames['form-control-feedback'] = this.props.formControlFeedback, _classNames));
32222
32223 return _react2['default'].createElement(
32224 'span',
32225 _extends({}, this.props, { className: className }),
32226 this.props.children
32227 );
32228 }
32229 });
32230
32231 exports['default'] = Glyphicon;
32232 module.exports = exports['default'];
32233
32234/***/ },
32235/* 389 */
32236/***/ function(module, exports, __webpack_require__) {
32237
32238 'use strict';
32239
32240 var _interopRequireDefault = __webpack_require__(335)['default'];
32241
32242 exports.__esModule = true;
32243 exports['default'] = valueValidation;
32244
32245 var _react = __webpack_require__(89);
32246
32247 var _react2 = _interopRequireDefault(_react);
32248
32249 var _reactPropTypesLibSinglePropFrom = __webpack_require__(390);
32250
32251 var _reactPropTypesLibSinglePropFrom2 = _interopRequireDefault(_reactPropTypesLibSinglePropFrom);
32252
32253 function valueValidation(props, propName, componentName) {
32254 var error = _reactPropTypesLibSinglePropFrom2['default']('children', 'value')(props, propName, componentName);
32255
32256 if (!error) {
32257 error = _react2['default'].PropTypes.node(props, propName, componentName);
32258 }
32259
32260 return error;
32261 }
32262
32263 module.exports = exports['default'];
32264
32265/***/ },
32266/* 390 */
32267/***/ function(module, exports) {
32268
32269 /**
32270 * Checks if only one of the listed properties is in use. An error is given
32271 * if multiple have a value
32272 *
32273 * @param props
32274 * @param propName
32275 * @param componentName
32276 * @returns {Error|undefined}
32277 */
32278 'use strict';
32279
32280 exports.__esModule = true;
32281 exports['default'] = createSinglePropFromChecker;
32282
32283 function createSinglePropFromChecker() {
32284 for (var _len = arguments.length, arrOfProps = Array(_len), _key = 0; _key < _len; _key++) {
32285 arrOfProps[_key] = arguments[_key];
32286 }
32287
32288 function validate(props, propName) {
32289 var usedPropCount = arrOfProps.map(function (listedProp) {
32290 return props[listedProp];
32291 }).reduce(function (acc, curr) {
32292 return acc + (curr !== undefined ? 1 : 0);
32293 }, 0);
32294
32295 if (usedPropCount > 1) {
32296 var first = arrOfProps[0];
32297 var others = arrOfProps.slice(1);
32298
32299 var message = others.join(', ') + ' and ' + first;
32300 return new Error('Invalid prop \'' + propName + '\', only one of the following ' + ('may be provided: ' + message));
32301 }
32302 }
32303 return validate;
32304 }
32305
32306 module.exports = exports['default'];
32307
32308/***/ },
32309/* 391 */
32310/***/ function(module, exports, __webpack_require__) {
32311
32312 'use strict';
32313
32314 var _inherits = __webpack_require__(372)['default'];
32315
32316 var _classCallCheck = __webpack_require__(379)['default'];
32317
32318 var _interopRequireDefault = __webpack_require__(335)['default'];
32319
32320 exports.__esModule = true;
32321 exports._resetWarned = _resetWarned;
32322
32323 var _warning = __webpack_require__(271);
32324
32325 var _warning2 = _interopRequireDefault(_warning);
32326
32327 var warned = {};
32328
32329 function deprecationWarning(oldname, newname, link) {
32330 var message = undefined;
32331
32332 if (typeof oldname === 'object') {
32333 message = oldname.message;
32334 } else {
32335 message = oldname + ' is deprecated. Use ' + newname + ' instead.';
32336
32337 if (link) {
32338 message += '\nYou can read more about it at ' + link;
32339 }
32340 }
32341
32342 if (warned[message]) {
32343 return;
32344 }
32345
32346 (undefined) !== 'production' ? _warning2['default'](false, message) : undefined;
32347 warned[message] = true;
32348 }
32349
32350 deprecationWarning.wrapper = function (Component) {
32351 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
32352 args[_key - 1] = arguments[_key];
32353 }
32354
32355 return (function (_Component) {
32356 _inherits(DeprecatedComponent, _Component);
32357
32358 function DeprecatedComponent() {
32359 _classCallCheck(this, DeprecatedComponent);
32360
32361 _Component.apply(this, arguments);
32362 }
32363
32364 DeprecatedComponent.prototype.componentWillMount = function componentWillMount() {
32365 deprecationWarning.apply(undefined, args);
32366
32367 if (_Component.prototype.componentWillMount) {
32368 var _Component$prototype$componentWillMount;
32369
32370 for (var _len2 = arguments.length, methodArgs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
32371 methodArgs[_key2] = arguments[_key2];
32372 }
32373
32374 (_Component$prototype$componentWillMount = _Component.prototype.componentWillMount).call.apply(_Component$prototype$componentWillMount, [this].concat(methodArgs));
32375 }
32376 };
32377
32378 return DeprecatedComponent;
32379 })(Component);
32380 };
32381
32382 exports['default'] = deprecationWarning;
32383
32384 function _resetWarned() {
32385 warned = {};
32386 }
32387
32388/***/ },
32389/* 392 */
32390/***/ function(module, exports, __webpack_require__) {
32391
32392 'use strict';
32393
32394 var _extends = __webpack_require__(338)['default'];
32395
32396 var _interopRequireDefault = __webpack_require__(335)['default'];
32397
32398 exports.__esModule = true;
32399
32400 var _classnames = __webpack_require__(356);
32401
32402 var _classnames2 = _interopRequireDefault(_classnames);
32403
32404 var _react = __webpack_require__(89);
32405
32406 var _react2 = _interopRequireDefault(_react);
32407
32408 var _utilsBootstrapUtils = __webpack_require__(357);
32409
32410 var _Button = __webpack_require__(382);
32411
32412 var _Button2 = _interopRequireDefault(_Button);
32413
32414 var ButtonToolbar = _react2['default'].createClass({
32415 displayName: 'ButtonToolbar',
32416
32417 propTypes: {
32418 bsSize: _Button2['default'].propTypes.bsSize
32419 },
32420
32421 getDefaultProps: function getDefaultProps() {
32422 return {
32423 bsClass: 'btn-toolbar'
32424 };
32425 },
32426
32427 render: function render() {
32428 var classes = _utilsBootstrapUtils.getClassSet(this.props);
32429
32430 return _react2['default'].createElement(
32431 'div',
32432 _extends({}, this.props, {
32433 role: 'toolbar',
32434 className: _classnames2['default'](this.props.className, classes)
32435 }),
32436 this.props.children
32437 );
32438 }
32439 });
32440
32441 exports['default'] = ButtonToolbar;
32442 module.exports = exports['default'];
32443
32444/***/ },
32445/* 393 */
32446/***/ function(module, exports, __webpack_require__) {
32447
32448 'use strict';
32449
32450 var _extends = __webpack_require__(338)['default'];
32451
32452 var _Object$assign = __webpack_require__(339)['default'];
32453
32454 var _interopRequireDefault = __webpack_require__(335)['default'];
32455
32456 exports.__esModule = true;
32457
32458 var _classnames = __webpack_require__(356);
32459
32460 var _classnames2 = _interopRequireDefault(_classnames);
32461
32462 var _react = __webpack_require__(89);
32463
32464 var _react2 = _interopRequireDefault(_react);
32465
32466 var _utilsBootstrapUtils = __webpack_require__(357);
32467
32468 var _utilsValidComponentChildren = __webpack_require__(365);
32469
32470 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
32471
32472 var _CarouselCaption = __webpack_require__(394);
32473
32474 var _CarouselCaption2 = _interopRequireDefault(_CarouselCaption);
32475
32476 var _CarouselItem = __webpack_require__(395);
32477
32478 var _CarouselItem2 = _interopRequireDefault(_CarouselItem);
32479
32480 var _Glyphicon = __webpack_require__(388);
32481
32482 var _Glyphicon2 = _interopRequireDefault(_Glyphicon);
32483
32484 var Carousel = _react2['default'].createClass({
32485 displayName: 'Carousel',
32486
32487 propTypes: {
32488 slide: _react2['default'].PropTypes.bool,
32489 indicators: _react2['default'].PropTypes.bool,
32490 interval: _react2['default'].PropTypes.number,
32491 controls: _react2['default'].PropTypes.bool,
32492 pauseOnHover: _react2['default'].PropTypes.bool,
32493 wrap: _react2['default'].PropTypes.bool,
32494 /**
32495 * Callback fired when the active item changes.
32496 *
32497 * ```js
32498 * (eventKey: any) => any | (eventKey: any, event: Object) => any
32499 * ```
32500 *
32501 * If this callback takes two or more arguments, the second argument will
32502 * be a persisted event object with `direction` set to the direction of the
32503 * transition.
32504 */
32505 onSelect: _react2['default'].PropTypes.func,
32506 onSlideEnd: _react2['default'].PropTypes.func,
32507 activeIndex: _react2['default'].PropTypes.number,
32508 defaultActiveIndex: _react2['default'].PropTypes.number,
32509 direction: _react2['default'].PropTypes.oneOf(['prev', 'next']),
32510 prevIcon: _react2['default'].PropTypes.node,
32511 nextIcon: _react2['default'].PropTypes.node
32512 },
32513
32514 getDefaultProps: function getDefaultProps() {
32515 return {
32516 bsClass: 'carousel',
32517 slide: true,
32518 interval: 5000,
32519 pauseOnHover: true,
32520 wrap: true,
32521 indicators: true,
32522 controls: true,
32523 prevIcon: _react2['default'].createElement(_Glyphicon2['default'], { glyph: 'chevron-left' }),
32524 nextIcon: _react2['default'].createElement(_Glyphicon2['default'], { glyph: 'chevron-right' })
32525 };
32526 },
32527
32528 getInitialState: function getInitialState() {
32529 return {
32530 activeIndex: this.props.defaultActiveIndex == null ? 0 : this.props.defaultActiveIndex,
32531 previousActiveIndex: null,
32532 direction: null
32533 };
32534 },
32535
32536 getDirection: function getDirection(prevIndex, index) {
32537 if (prevIndex === index) {
32538 return null;
32539 }
32540
32541 return prevIndex > index ? 'prev' : 'next';
32542 },
32543
32544 componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
32545 var activeIndex = this.getActiveIndex();
32546
32547 if (nextProps.activeIndex != null && nextProps.activeIndex !== activeIndex) {
32548 clearTimeout(this.timeout);
32549 this.setState({
32550 previousActiveIndex: activeIndex,
32551 direction: nextProps.direction != null ? nextProps.direction : this.getDirection(activeIndex, nextProps.activeIndex)
32552 });
32553 }
32554 },
32555
32556 componentDidMount: function componentDidMount() {
32557 this.waitForNext();
32558 },
32559
32560 componentWillUnmount: function componentWillUnmount() {
32561 clearTimeout(this.timeout);
32562 },
32563
32564 next: function next(e) {
32565 if (e) {
32566 e.preventDefault();
32567 }
32568
32569 var index = this.getActiveIndex() + 1;
32570 var count = _utilsValidComponentChildren2['default'].count(this.props.children);
32571
32572 if (index > count - 1) {
32573 if (!this.props.wrap) {
32574 return;
32575 }
32576 index = 0;
32577 }
32578
32579 this.handleSelect(index, e, 'next');
32580 },
32581
32582 prev: function prev(e) {
32583 if (e) {
32584 e.preventDefault();
32585 }
32586
32587 var index = this.getActiveIndex() - 1;
32588
32589 if (index < 0) {
32590 if (!this.props.wrap) {
32591 return;
32592 }
32593 index = _utilsValidComponentChildren2['default'].count(this.props.children) - 1;
32594 }
32595
32596 this.handleSelect(index, e, 'prev');
32597 },
32598
32599 pause: function pause() {
32600 this.isPaused = true;
32601 clearTimeout(this.timeout);
32602 },
32603
32604 play: function play() {
32605 this.isPaused = false;
32606 this.waitForNext();
32607 },
32608
32609 waitForNext: function waitForNext() {
32610 if (!this.isPaused && this.props.slide && this.props.interval && this.props.activeIndex == null) {
32611 this.timeout = setTimeout(this.next, this.props.interval);
32612 }
32613 },
32614
32615 handleMouseOver: function handleMouseOver() {
32616 if (this.props.pauseOnHover) {
32617 this.pause();
32618 }
32619 },
32620
32621 handleMouseOut: function handleMouseOut() {
32622 if (this.isPaused) {
32623 this.play();
32624 }
32625 },
32626
32627 render: function render() {
32628 var _classes;
32629
32630 var classes = (_classes = {}, _classes[_utilsBootstrapUtils.prefix(this.props)] = true, _classes.slide = this.props.slide, _classes);
32631
32632 return _react2['default'].createElement(
32633 'div',
32634 _extends({}, this.props, {
32635 className: _classnames2['default'](this.props.className, classes),
32636 onMouseOver: this.handleMouseOver,
32637 onMouseOut: this.handleMouseOut
32638 }),
32639 this.props.indicators ? this.renderIndicators() : null,
32640 _react2['default'].createElement(
32641 'div',
32642 {
32643 ref: 'inner',
32644 className: _utilsBootstrapUtils.prefix(this.props, 'inner')
32645 },
32646 _utilsValidComponentChildren2['default'].map(this.props.children, this.renderItem)
32647 ),
32648 this.props.controls ? this.renderControls() : null
32649 );
32650 },
32651
32652 renderPrev: function renderPrev() {
32653 var classes = 'left ' + _utilsBootstrapUtils.prefix(this.props, 'control');
32654
32655 return _react2['default'].createElement(
32656 'a',
32657 { className: classes, href: '#prev', key: 0, onClick: this.prev },
32658 this.props.prevIcon
32659 );
32660 },
32661
32662 renderNext: function renderNext() {
32663 var classes = 'right ' + _utilsBootstrapUtils.prefix(this.props, 'control');
32664
32665 return _react2['default'].createElement(
32666 'a',
32667 { className: classes, href: '#next', key: 1, onClick: this.next },
32668 this.props.nextIcon
32669 );
32670 },
32671
32672 renderControls: function renderControls() {
32673 if (!this.props.wrap) {
32674 var activeIndex = this.getActiveIndex();
32675 var count = _utilsValidComponentChildren2['default'].count(this.props.children);
32676
32677 return [activeIndex !== 0 ? this.renderPrev() : null, activeIndex !== count - 1 ? this.renderNext() : null];
32678 }
32679
32680 return [this.renderPrev(), this.renderNext()];
32681 },
32682
32683 renderIndicator: function renderIndicator(child, index) {
32684 var _this = this;
32685
32686 var className = index === this.getActiveIndex() ? 'active' : null;
32687
32688 return _react2['default'].createElement('li', {
32689 key: index,
32690 className: className,
32691 onClick: function (e) {
32692 return _this.handleSelect(index, e, null);
32693 } });
32694 },
32695
32696 renderIndicators: function renderIndicators() {
32697 var _this2 = this;
32698
32699 var indicators = [];
32700 _utilsValidComponentChildren2['default'].forEach(this.props.children, function (child, index) {
32701 indicators.push(_this2.renderIndicator(child, index),
32702
32703 // Force whitespace between indicator elements, bootstrap
32704 // requires this for correct spacing of elements.
32705 ' ');
32706 }, this);
32707
32708 return _react2['default'].createElement(
32709 'ol',
32710 { className: _utilsBootstrapUtils.prefix(this.props, 'indicators') },
32711 indicators
32712 );
32713 },
32714
32715 getActiveIndex: function getActiveIndex() {
32716 return this.props.activeIndex != null ? this.props.activeIndex : this.state.activeIndex;
32717 },
32718
32719 handleItemAnimateOutEnd: function handleItemAnimateOutEnd() {
32720 var _this3 = this;
32721
32722 this.setState({
32723 previousActiveIndex: null,
32724 direction: null
32725 }, function () {
32726 _this3.waitForNext();
32727
32728 if (_this3.props.onSlideEnd) {
32729 _this3.props.onSlideEnd();
32730 }
32731 });
32732 },
32733
32734 renderItem: function renderItem(child, index) {
32735 var activeIndex = this.getActiveIndex();
32736 var isActive = index === activeIndex;
32737 var isPreviousActive = this.state.previousActiveIndex != null && this.state.previousActiveIndex === index && this.props.slide;
32738
32739 return _react.cloneElement(child, {
32740 active: isActive,
32741 ref: child.ref,
32742 key: child.key ? child.key : index,
32743 index: index,
32744 animateOut: isPreviousActive,
32745 animateIn: isActive && this.state.previousActiveIndex != null && this.props.slide,
32746 direction: this.state.direction,
32747 onAnimateOutEnd: isPreviousActive ? this.handleItemAnimateOutEnd : null
32748 });
32749 },
32750
32751 handleSelect: function handleSelect(index, e, direction) {
32752 clearTimeout(this.timeout);
32753
32754 if (this.isMounted()) {
32755 var previousActiveIndex = this.getActiveIndex();
32756 direction = direction || this.getDirection(previousActiveIndex, index);
32757
32758 var onSelect = this.props.onSelect;
32759
32760 if (onSelect) {
32761 if (onSelect.length > 1) {
32762 // React SyntheticEvents are pooled, so we need to remove this event
32763 // from the pool to add a custom property. To avoid unnecessarily
32764 // removing objects from the pool, only do this when the listener
32765 // actually wants the event.
32766 e.persist();
32767 e.direction = direction;
32768
32769 onSelect(index, e);
32770 } else {
32771 onSelect(index);
32772 }
32773 }
32774
32775 if (this.props.activeIndex == null && index !== previousActiveIndex) {
32776 if (this.state.previousActiveIndex != null) {
32777 // If currently animating don't activate the new index.
32778 // TODO: look into queuing this canceled call and
32779 // animating after the current animation has ended.
32780 return;
32781 }
32782
32783 this.setState({
32784 activeIndex: index,
32785 previousActiveIndex: previousActiveIndex,
32786 direction: direction
32787 });
32788 }
32789 }
32790 }
32791 });
32792
32793 Carousel = _Object$assign(Carousel, { Caption: _CarouselCaption2['default'], Item: _CarouselItem2['default'] });
32794
32795 exports['default'] = Carousel;
32796 module.exports = exports['default'];
32797
32798/***/ },
32799/* 394 */
32800/***/ function(module, exports, __webpack_require__) {
32801
32802 'use strict';
32803
32804 var _extends = __webpack_require__(338)['default'];
32805
32806 var _interopRequireDefault = __webpack_require__(335)['default'];
32807
32808 exports.__esModule = true;
32809
32810 var _classnames = __webpack_require__(356);
32811
32812 var _classnames2 = _interopRequireDefault(_classnames);
32813
32814 var _react = __webpack_require__(89);
32815
32816 var _react2 = _interopRequireDefault(_react);
32817
32818 var _reactPropTypesLibElementType = __webpack_require__(380);
32819
32820 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
32821
32822 var CarouselCaption = _react2['default'].createClass({
32823 displayName: 'Carousel.Caption',
32824 propTypes: {
32825 /**
32826 * You can use a custom element for this component
32827 */
32828 componentClass: _reactPropTypesLibElementType2['default']
32829 },
32830
32831 getDefaultProps: function getDefaultProps() {
32832 return {
32833 componentClass: 'div'
32834 };
32835 },
32836
32837 render: function render() {
32838 var ComponentClass = this.props.componentClass;
32839
32840 return _react2['default'].createElement(
32841 ComponentClass,
32842 _extends({}, this.props, { className: _classnames2['default'](this.props.className, 'carousel-caption') }),
32843 this.props.children
32844 );
32845 }
32846 });
32847
32848 exports['default'] = CarouselCaption;
32849 module.exports = exports['default'];
32850
32851/***/ },
32852/* 395 */
32853/***/ function(module, exports, __webpack_require__) {
32854
32855 'use strict';
32856
32857 var _extends = __webpack_require__(338)['default'];
32858
32859 var _interopRequireDefault = __webpack_require__(335)['default'];
32860
32861 exports.__esModule = true;
32862
32863 var _classnames = __webpack_require__(356);
32864
32865 var _classnames2 = _interopRequireDefault(_classnames);
32866
32867 var _react = __webpack_require__(89);
32868
32869 var _react2 = _interopRequireDefault(_react);
32870
32871 var _reactDom = __webpack_require__(122);
32872
32873 var _reactDom2 = _interopRequireDefault(_reactDom);
32874
32875 var _utilsBootstrapUtils = __webpack_require__(357);
32876
32877 var _utilsTransitionEvents = __webpack_require__(396);
32878
32879 var _utilsTransitionEvents2 = _interopRequireDefault(_utilsTransitionEvents);
32880
32881 var CarouselItem = _react2['default'].createClass({
32882 displayName: 'CarouselItem',
32883
32884 propTypes: {
32885 direction: _react2['default'].PropTypes.oneOf(['prev', 'next']),
32886 onAnimateOutEnd: _react2['default'].PropTypes.func,
32887 active: _react2['default'].PropTypes.bool,
32888 animateIn: _react2['default'].PropTypes.bool,
32889 animateOut: _react2['default'].PropTypes.bool,
32890 caption: _react2['default'].PropTypes.node,
32891 index: _react2['default'].PropTypes.number
32892 },
32893
32894 getInitialState: function getInitialState() {
32895 return {
32896 direction: null
32897 };
32898 },
32899
32900 getDefaultProps: function getDefaultProps() {
32901 return {
32902 bsStyle: 'carousel',
32903 active: false,
32904 animateIn: false,
32905 animateOut: false
32906 };
32907 },
32908
32909 handleAnimateOutEnd: function handleAnimateOutEnd() {
32910 if (this.props.onAnimateOutEnd && this.isMounted()) {
32911 this.props.onAnimateOutEnd(this.props.index);
32912 }
32913 },
32914
32915 componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
32916 if (this.props.active !== nextProps.active) {
32917 this.setState({
32918 direction: null
32919 });
32920 }
32921 },
32922
32923 componentDidUpdate: function componentDidUpdate(prevProps) {
32924 if (!this.props.active && prevProps.active) {
32925 _utilsTransitionEvents2['default'].addEndEventListener(_reactDom2['default'].findDOMNode(this), this.handleAnimateOutEnd);
32926 }
32927
32928 if (this.props.active !== prevProps.active) {
32929 setTimeout(this.startAnimation, 20);
32930 }
32931 },
32932
32933 startAnimation: function startAnimation() {
32934 if (!this.isMounted()) {
32935 return;
32936 }
32937
32938 this.setState({
32939 direction: this.props.direction === 'prev' ? 'right' : 'left'
32940 });
32941 },
32942
32943 render: function render() {
32944 var classes = {
32945 item: true,
32946 active: this.props.active && !this.props.animateIn || this.props.animateOut,
32947 next: this.props.active && this.props.animateIn && this.props.direction === 'next',
32948 prev: this.props.active && this.props.animateIn && this.props.direction === 'prev'
32949 };
32950
32951 if (this.state.direction && (this.props.animateIn || this.props.animateOut)) {
32952 classes[this.state.direction] = true;
32953 }
32954
32955 return _react2['default'].createElement(
32956 'div',
32957 _extends({}, this.props, { className: _classnames2['default'](this.props.className, classes) }),
32958 this.props.children,
32959 this.props.caption ? this.renderCaption() : null
32960 );
32961 },
32962
32963 renderCaption: function renderCaption() {
32964 var classes = _utilsBootstrapUtils.prefix(this.props, 'caption');
32965
32966 return _react2['default'].createElement(
32967 'div',
32968 { className: classes },
32969 this.props.caption
32970 );
32971 }
32972 });
32973
32974 exports['default'] = CarouselItem;
32975 module.exports = exports['default'];
32976
32977/***/ },
32978/* 396 */
32979/***/ function(module, exports) {
32980
32981 /**
32982 * Copyright 2013-2014, Facebook, Inc.
32983 * All rights reserved.
32984 *
32985 * This file contains a modified version of:
32986 * https://github.com/facebook/react/blob/v0.12.0/src/addons/transitions/ReactTransitionEvents.js
32987 *
32988 * This source code is licensed under the BSD-style license found here:
32989 * https://github.com/facebook/react/blob/v0.12.0/LICENSE
32990 * An additional grant of patent rights can be found here:
32991 * https://github.com/facebook/react/blob/v0.12.0/PATENTS
32992 */
32993
32994 'use strict';
32995
32996 exports.__esModule = true;
32997 var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
32998
32999 /**
33000 * EVENT_NAME_MAP is used to determine which event fired when a
33001 * transition/animation ends, based on the style property used to
33002 * define that event.
33003 */
33004 var EVENT_NAME_MAP = {
33005 transitionend: {
33006 'transition': 'transitionend',
33007 'WebkitTransition': 'webkitTransitionEnd',
33008 'MozTransition': 'mozTransitionEnd',
33009 'OTransition': 'oTransitionEnd',
33010 'msTransition': 'MSTransitionEnd'
33011 },
33012
33013 animationend: {
33014 'animation': 'animationend',
33015 'WebkitAnimation': 'webkitAnimationEnd',
33016 'MozAnimation': 'mozAnimationEnd',
33017 'OAnimation': 'oAnimationEnd',
33018 'msAnimation': 'MSAnimationEnd'
33019 }
33020 };
33021
33022 var endEvents = [];
33023
33024 function detectEvents() {
33025 var testEl = document.createElement('div');
33026 var style = testEl.style;
33027
33028 // On some platforms, in particular some releases of Android 4.x,
33029 // the un-prefixed "animation" and "transition" properties are defined on the
33030 // style object but the events that fire will still be prefixed, so we need
33031 // to check if the un-prefixed events are useable, and if not remove them
33032 // from the map
33033 if (!('AnimationEvent' in window)) {
33034 delete EVENT_NAME_MAP.animationend.animation;
33035 }
33036
33037 if (!('TransitionEvent' in window)) {
33038 delete EVENT_NAME_MAP.transitionend.transition;
33039 }
33040
33041 for (var baseEventName in EVENT_NAME_MAP) {
33042 // eslint-disable-line guard-for-in
33043 var baseEvents = EVENT_NAME_MAP[baseEventName];
33044 for (var styleName in baseEvents) {
33045 if (styleName in style) {
33046 endEvents.push(baseEvents[styleName]);
33047 break;
33048 }
33049 }
33050 }
33051 }
33052
33053 if (canUseDOM) {
33054 detectEvents();
33055 }
33056
33057 // We use the raw {add|remove}EventListener() call because EventListener
33058 // does not know how to remove event listeners and we really should
33059 // clean up. Also, these events are not triggered in older browsers
33060 // so we should be A-OK here.
33061
33062 function addEventListener(node, eventName, eventListener) {
33063 node.addEventListener(eventName, eventListener, false);
33064 }
33065
33066 function removeEventListener(node, eventName, eventListener) {
33067 node.removeEventListener(eventName, eventListener, false);
33068 }
33069
33070 var ReactTransitionEvents = {
33071 addEndEventListener: function addEndEventListener(node, eventListener) {
33072 if (endEvents.length === 0) {
33073 // If CSS transitions are not supported, trigger an "end animation"
33074 // event immediately.
33075 window.setTimeout(eventListener, 0);
33076 return;
33077 }
33078 endEvents.forEach(function (endEvent) {
33079 addEventListener(node, endEvent, eventListener);
33080 });
33081 },
33082
33083 removeEndEventListener: function removeEndEventListener(node, eventListener) {
33084 if (endEvents.length === 0) {
33085 return;
33086 }
33087 endEvents.forEach(function (endEvent) {
33088 removeEventListener(node, endEvent, eventListener);
33089 });
33090 }
33091 };
33092
33093 exports['default'] = ReactTransitionEvents;
33094 module.exports = exports['default'];
33095
33096/***/ },
33097/* 397 */
33098/***/ function(module, exports, __webpack_require__) {
33099
33100 'use strict';
33101
33102 var _inherits = __webpack_require__(372)['default'];
33103
33104 var _classCallCheck = __webpack_require__(379)['default'];
33105
33106 var _extends = __webpack_require__(338)['default'];
33107
33108 var _objectWithoutProperties = __webpack_require__(355)['default'];
33109
33110 var _interopRequireDefault = __webpack_require__(335)['default'];
33111
33112 exports.__esModule = true;
33113
33114 var _classnames = __webpack_require__(356);
33115
33116 var _classnames2 = _interopRequireDefault(_classnames);
33117
33118 var _react = __webpack_require__(89);
33119
33120 var _react2 = _interopRequireDefault(_react);
33121
33122 var _warning = __webpack_require__(271);
33123
33124 var _warning2 = _interopRequireDefault(_warning);
33125
33126 var _utilsBootstrapUtils = __webpack_require__(357);
33127
33128 var propTypes = {
33129 inline: _react2['default'].PropTypes.bool,
33130 disabled: _react2['default'].PropTypes.bool,
33131 /**
33132 * Only valid if `inline` is not set.
33133 */
33134 validationState: _react2['default'].PropTypes.oneOf(['success', 'warning', 'error']),
33135 /**
33136 * Attaches a ref to the `<input>` element. Only functions can be used here.
33137 *
33138 * ```js
33139 * <Checkbox inputRef={ref => { this.input = ref; }} />
33140 * ```
33141 */
33142 inputRef: _react2['default'].PropTypes.func
33143 };
33144
33145 var defaultProps = {
33146 inline: false,
33147 disabled: false
33148 };
33149
33150 var Checkbox = (function (_React$Component) {
33151 _inherits(Checkbox, _React$Component);
33152
33153 function Checkbox() {
33154 _classCallCheck(this, Checkbox);
33155
33156 _React$Component.apply(this, arguments);
33157 }
33158
33159 Checkbox.prototype.render = function render() {
33160 var _props = this.props;
33161 var inline = _props.inline;
33162 var disabled = _props.disabled;
33163 var validationState = _props.validationState;
33164 var inputRef = _props.inputRef;
33165 var className = _props.className;
33166 var style = _props.style;
33167 var children = _props.children;
33168
33169 var props = _objectWithoutProperties(_props, ['inline', 'disabled', 'validationState', 'inputRef', 'className', 'style', 'children']);
33170
33171 delete props.bsClass;
33172
33173 var input = _react2['default'].createElement('input', _extends({}, props, {
33174 ref: inputRef,
33175 type: 'checkbox',
33176 disabled: disabled
33177 }));
33178
33179 if (inline) {
33180 var _classes;
33181
33182 var _classes2 = (_classes = {}, _classes[_utilsBootstrapUtils.prefix(this.props, 'inline')] = true, _classes.disabled = disabled, _classes);
33183
33184 // Use a warning here instead of in propTypes to get better-looking
33185 // generated documentation.
33186 (undefined) !== 'production' ? _warning2['default'](!validationState, '`validationState` is ignored on `<Checkbox inline>`. To display ' + 'validation state on an inline checkbox, set `validationState` on a ' + 'parent `<FormGroup>` or other element instead.') : undefined;
33187
33188 return _react2['default'].createElement(
33189 'label',
33190 { className: _classnames2['default'](className, _classes2), style: style },
33191 input,
33192 children
33193 );
33194 }
33195
33196 var classes = _extends({}, _utilsBootstrapUtils.getClassSet(this.props), {
33197 disabled: disabled
33198 });
33199 if (validationState) {
33200 classes['has-' + validationState] = true;
33201 }
33202
33203 return _react2['default'].createElement(
33204 'div',
33205 { className: _classnames2['default'](className, classes), style: style },
33206 _react2['default'].createElement(
33207 'label',
33208 null,
33209 input,
33210 children
33211 )
33212 );
33213 };
33214
33215 return Checkbox;
33216 })(_react2['default'].Component);
33217
33218 Checkbox.propTypes = propTypes;
33219 Checkbox.defaultProps = defaultProps;
33220
33221 exports['default'] = _utilsBootstrapUtils.bsClass('checkbox', Checkbox);
33222 module.exports = exports['default'];
33223
33224/***/ },
33225/* 398 */
33226/***/ function(module, exports, __webpack_require__) {
33227
33228 'use strict';
33229
33230 var _extends = __webpack_require__(338)['default'];
33231
33232 var _Object$keys = __webpack_require__(361)['default'];
33233
33234 var _interopRequireDefault = __webpack_require__(335)['default'];
33235
33236 exports.__esModule = true;
33237
33238 var _react = __webpack_require__(89);
33239
33240 var _react2 = _interopRequireDefault(_react);
33241
33242 var _classnames = __webpack_require__(356);
33243
33244 var _classnames2 = _interopRequireDefault(_classnames);
33245
33246 var _styleMaps = __webpack_require__(358);
33247
33248 var _styleMaps2 = _interopRequireDefault(_styleMaps);
33249
33250 var _reactPropTypesLibElementType = __webpack_require__(380);
33251
33252 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
33253
33254 var Clearfix = _react2['default'].createClass({
33255 displayName: 'Clearfix',
33256
33257 propTypes: {
33258 /**
33259 * You can use a custom element for this component
33260 */
33261 componentClass: _reactPropTypesLibElementType2['default'],
33262 /**
33263 * Apply clearfix
33264 *
33265 * on Extra small devices Phones
33266 *
33267 * adds class `visible-xs-block`
33268 */
33269 visibleXsBlock: _react2['default'].PropTypes.bool,
33270 /**
33271 * Apply clearfix
33272 *
33273 * on Small devices Tablets
33274 *
33275 * adds class `visible-sm-block`
33276 */
33277 visibleSmBlock: _react2['default'].PropTypes.bool,
33278 /**
33279 * Apply clearfix
33280 *
33281 * on Medium devices Desktops
33282 *
33283 * adds class `visible-md-block`
33284 */
33285 visibleMdBlock: _react2['default'].PropTypes.bool,
33286 /**
33287 * Apply clearfix
33288 *
33289 * on Large devices Desktops
33290 *
33291 * adds class `visible-lg-block`
33292 */
33293 visibleLgBlock: _react2['default'].PropTypes.bool
33294 },
33295
33296 getDefaultProps: function getDefaultProps() {
33297 return {
33298 componentClass: 'div'
33299 };
33300 },
33301
33302 render: function render() {
33303 var _this = this;
33304
33305 var ComponentClass = this.props.componentClass;
33306
33307 var classes = {};
33308
33309 _Object$keys(_styleMaps2['default'].SIZES).forEach(function (key) {
33310 var size = _styleMaps2['default'].SIZES[key];
33311
33312 classes['visible-' + size + '-block'] = _this.props['visible' + size.charAt(0).toUpperCase() + size.slice(1) + 'Block'];
33313 }, this);
33314
33315 return _react2['default'].createElement(
33316 ComponentClass,
33317 _extends({}, this.props, { className: _classnames2['default'](this.props.className, 'clearfix', classes) }),
33318 this.props.children
33319 );
33320 }
33321 });
33322
33323 exports['default'] = Clearfix;
33324 module.exports = exports['default'];
33325
33326/***/ },
33327/* 399 */
33328/***/ function(module, exports, __webpack_require__) {
33329
33330 'use strict';
33331
33332 var _inherits = __webpack_require__(372)['default'];
33333
33334 var _classCallCheck = __webpack_require__(379)['default'];
33335
33336 var _extends = __webpack_require__(338)['default'];
33337
33338 var _objectWithoutProperties = __webpack_require__(355)['default'];
33339
33340 var _interopRequireDefault = __webpack_require__(335)['default'];
33341
33342 exports.__esModule = true;
33343
33344 var _classnames = __webpack_require__(356);
33345
33346 var _classnames2 = _interopRequireDefault(_classnames);
33347
33348 var _react = __webpack_require__(89);
33349
33350 var _react2 = _interopRequireDefault(_react);
33351
33352 var _warning = __webpack_require__(271);
33353
33354 var _warning2 = _interopRequireDefault(_warning);
33355
33356 var _utilsBootstrapUtils = __webpack_require__(357);
33357
33358 var propTypes = {
33359 /**
33360 * Uses `controlId` from `<FormGroup>` if not explicitly specified.
33361 */
33362 htmlFor: _react2['default'].PropTypes.string,
33363 srOnly: _react2['default'].PropTypes.bool
33364 };
33365
33366 var defaultProps = {
33367 srOnly: false
33368 };
33369
33370 var contextTypes = {
33371 $bs_formGroup: _react2['default'].PropTypes.object
33372 };
33373
33374 var ControlLabel = (function (_React$Component) {
33375 _inherits(ControlLabel, _React$Component);
33376
33377 function ControlLabel() {
33378 _classCallCheck(this, ControlLabel);
33379
33380 _React$Component.apply(this, arguments);
33381 }
33382
33383 ControlLabel.prototype.render = function render() {
33384 var formGroup = this.context.$bs_formGroup;
33385 var controlId = formGroup && formGroup.controlId;
33386
33387 var _props = this.props;
33388 var _props$htmlFor = _props.htmlFor;
33389 var htmlFor = _props$htmlFor === undefined ? controlId : _props$htmlFor;
33390 var srOnly = _props.srOnly;
33391 var className = _props.className;
33392
33393 var props = _objectWithoutProperties(_props, ['htmlFor', 'srOnly', 'className']);
33394
33395 (undefined) !== 'production' ? _warning2['default'](controlId == null || htmlFor === controlId, '`controlId` is ignored on `<ControlLabel>` when `htmlFor` is specified.') : undefined;
33396
33397 delete props.bsClass;
33398
33399 var classes = _extends({}, _utilsBootstrapUtils.getClassSet(this.props), {
33400 'sr-only': srOnly
33401 });
33402
33403 return _react2['default'].createElement('label', _extends({}, props, {
33404 htmlFor: htmlFor,
33405 className: _classnames2['default'](className, classes)
33406 }));
33407 };
33408
33409 return ControlLabel;
33410 })(_react2['default'].Component);
33411
33412 ControlLabel.propTypes = propTypes;
33413 ControlLabel.defaultProps = defaultProps;
33414 ControlLabel.contextTypes = contextTypes;
33415
33416 exports['default'] = _utilsBootstrapUtils.bsClass('control-label', ControlLabel);
33417 module.exports = exports['default'];
33418
33419/***/ },
33420/* 400 */
33421/***/ function(module, exports, __webpack_require__) {
33422
33423 'use strict';
33424
33425 var _extends = __webpack_require__(338)['default'];
33426
33427 var _Object$keys = __webpack_require__(361)['default'];
33428
33429 var _interopRequireDefault = __webpack_require__(335)['default'];
33430
33431 exports.__esModule = true;
33432
33433 var _react = __webpack_require__(89);
33434
33435 var _react2 = _interopRequireDefault(_react);
33436
33437 var _classnames = __webpack_require__(356);
33438
33439 var _classnames2 = _interopRequireDefault(_classnames);
33440
33441 var _styleMaps = __webpack_require__(358);
33442
33443 var _styleMaps2 = _interopRequireDefault(_styleMaps);
33444
33445 var _reactPropTypesLibElementType = __webpack_require__(380);
33446
33447 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
33448
33449 var Col = _react2['default'].createClass({
33450 displayName: 'Col',
33451
33452 propTypes: {
33453 /**
33454 * The number of columns you wish to span
33455 *
33456 * for Extra small devices Phones (<768px)
33457 *
33458 * class-prefix `col-xs-`
33459 */
33460 xs: _react2['default'].PropTypes.number,
33461 /**
33462 * The number of columns you wish to span
33463 *
33464 * for Small devices Tablets (≥768px)
33465 *
33466 * class-prefix `col-sm-`
33467 */
33468 sm: _react2['default'].PropTypes.number,
33469 /**
33470 * The number of columns you wish to span
33471 *
33472 * for Medium devices Desktops (≥992px)
33473 *
33474 * class-prefix `col-md-`
33475 */
33476 md: _react2['default'].PropTypes.number,
33477 /**
33478 * The number of columns you wish to span
33479 *
33480 * for Large devices Desktops (≥1200px)
33481 *
33482 * class-prefix `col-lg-`
33483 */
33484 lg: _react2['default'].PropTypes.number,
33485 /**
33486 * Hide column
33487 *
33488 * on Extra small devices Phones
33489 *
33490 * adds class `hidden-xs`
33491 */
33492 xsHidden: _react2['default'].PropTypes.bool,
33493 /**
33494 * Hide column
33495 *
33496 * on Small devices Tablets
33497 *
33498 * adds class `hidden-sm`
33499 */
33500 smHidden: _react2['default'].PropTypes.bool,
33501 /**
33502 * Hide column
33503 *
33504 * on Medium devices Desktops
33505 *
33506 * adds class `hidden-md`
33507 */
33508 mdHidden: _react2['default'].PropTypes.bool,
33509 /**
33510 * Hide column
33511 *
33512 * on Large devices Desktops
33513 *
33514 * adds class `hidden-lg`
33515 */
33516 lgHidden: _react2['default'].PropTypes.bool,
33517 /**
33518 * Move columns to the right
33519 *
33520 * for Extra small devices Phones
33521 *
33522 * class-prefix `col-xs-offset-`
33523 */
33524 xsOffset: _react2['default'].PropTypes.number,
33525 /**
33526 * Move columns to the right
33527 *
33528 * for Small devices Tablets
33529 *
33530 * class-prefix `col-sm-offset-`
33531 */
33532 smOffset: _react2['default'].PropTypes.number,
33533 /**
33534 * Move columns to the right
33535 *
33536 * for Medium devices Desktops
33537 *
33538 * class-prefix `col-md-offset-`
33539 */
33540 mdOffset: _react2['default'].PropTypes.number,
33541 /**
33542 * Move columns to the right
33543 *
33544 * for Large devices Desktops
33545 *
33546 * class-prefix `col-lg-offset-`
33547 */
33548 lgOffset: _react2['default'].PropTypes.number,
33549 /**
33550 * Change the order of grid columns to the right
33551 *
33552 * for Extra small devices Phones
33553 *
33554 * class-prefix `col-xs-push-`
33555 */
33556 xsPush: _react2['default'].PropTypes.number,
33557 /**
33558 * Change the order of grid columns to the right
33559 *
33560 * for Small devices Tablets
33561 *
33562 * class-prefix `col-sm-push-`
33563 */
33564 smPush: _react2['default'].PropTypes.number,
33565 /**
33566 * Change the order of grid columns to the right
33567 *
33568 * for Medium devices Desktops
33569 *
33570 * class-prefix `col-md-push-`
33571 */
33572 mdPush: _react2['default'].PropTypes.number,
33573 /**
33574 * Change the order of grid columns to the right
33575 *
33576 * for Large devices Desktops
33577 *
33578 * class-prefix `col-lg-push-`
33579 */
33580 lgPush: _react2['default'].PropTypes.number,
33581 /**
33582 * Change the order of grid columns to the left
33583 *
33584 * for Extra small devices Phones
33585 *
33586 * class-prefix `col-xs-pull-`
33587 */
33588 xsPull: _react2['default'].PropTypes.number,
33589 /**
33590 * Change the order of grid columns to the left
33591 *
33592 * for Small devices Tablets
33593 *
33594 * class-prefix `col-sm-pull-`
33595 */
33596 smPull: _react2['default'].PropTypes.number,
33597 /**
33598 * Change the order of grid columns to the left
33599 *
33600 * for Medium devices Desktops
33601 *
33602 * class-prefix `col-md-pull-`
33603 */
33604 mdPull: _react2['default'].PropTypes.number,
33605 /**
33606 * Change the order of grid columns to the left
33607 *
33608 * for Large devices Desktops
33609 *
33610 * class-prefix `col-lg-pull-`
33611 */
33612 lgPull: _react2['default'].PropTypes.number,
33613 /**
33614 * You can use a custom element for this component
33615 */
33616 componentClass: _reactPropTypesLibElementType2['default']
33617 },
33618
33619 getDefaultProps: function getDefaultProps() {
33620 return {
33621 componentClass: 'div'
33622 };
33623 },
33624
33625 render: function render() {
33626 var _this = this;
33627
33628 var ComponentClass = this.props.componentClass;
33629 var classes = {};
33630
33631 _Object$keys(_styleMaps2['default'].SIZES).forEach(function (key) {
33632 var size = _styleMaps2['default'].SIZES[key];
33633 var prop = size;
33634 var classPart = size + '-';
33635
33636 if (_this.props[prop]) {
33637 classes['col-' + classPart + _this.props[prop]] = true;
33638 }
33639
33640 classes['hidden-' + size] = _this.props[size + 'Hidden'];
33641
33642 prop = size + 'Offset';
33643 classPart = size + '-offset-';
33644 if (_this.props[prop] >= 0) {
33645 classes['col-' + classPart + _this.props[prop]] = true;
33646 }
33647
33648 prop = size + 'Push';
33649 classPart = size + '-push-';
33650 if (_this.props[prop] >= 0) {
33651 classes['col-' + classPart + _this.props[prop]] = true;
33652 }
33653
33654 prop = size + 'Pull';
33655 classPart = size + '-pull-';
33656 if (_this.props[prop] >= 0) {
33657 classes['col-' + classPart + _this.props[prop]] = true;
33658 }
33659 }, this);
33660
33661 return _react2['default'].createElement(
33662 ComponentClass,
33663 _extends({}, this.props, { className: _classnames2['default'](this.props.className, classes) }),
33664 this.props.children
33665 );
33666 }
33667 });
33668
33669 exports['default'] = Col;
33670 module.exports = exports['default'];
33671
33672/***/ },
33673/* 401 */
33674/***/ function(module, exports, __webpack_require__) {
33675
33676 'use strict';
33677
33678 var _inherits = __webpack_require__(372)['default'];
33679
33680 var _classCallCheck = __webpack_require__(379)['default'];
33681
33682 var _extends = __webpack_require__(338)['default'];
33683
33684 var _interopRequireDefault = __webpack_require__(335)['default'];
33685
33686 exports.__esModule = true;
33687
33688 var _domHelpersStyle = __webpack_require__(402);
33689
33690 var _domHelpersStyle2 = _interopRequireDefault(_domHelpersStyle);
33691
33692 var _react = __webpack_require__(89);
33693
33694 var _react2 = _interopRequireDefault(_react);
33695
33696 var _classnames = __webpack_require__(356);
33697
33698 var _classnames2 = _interopRequireDefault(_classnames);
33699
33700 var _reactOverlaysLibTransition = __webpack_require__(410);
33701
33702 var _reactOverlaysLibTransition2 = _interopRequireDefault(_reactOverlaysLibTransition);
33703
33704 var _utilsCreateChainedFunction = __webpack_require__(414);
33705
33706 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
33707
33708 var capitalize = function capitalize(str) {
33709 return str[0].toUpperCase() + str.substr(1);
33710 };
33711
33712 // reading a dimension prop will cause the browser to recalculate,
33713 // which will let our animations work
33714 var triggerBrowserReflow = function triggerBrowserReflow(node) {
33715 return node.offsetHeight;
33716 };
33717
33718 var MARGINS = {
33719 height: ['marginTop', 'marginBottom'],
33720 width: ['marginLeft', 'marginRight']
33721 };
33722
33723 function getDimensionValue(dimension, elem) {
33724 var value = elem['offset' + capitalize(dimension)];
33725 var margins = MARGINS[dimension];
33726
33727 return value + parseInt(_domHelpersStyle2['default'](elem, margins[0]), 10) + parseInt(_domHelpersStyle2['default'](elem, margins[1]), 10);
33728 }
33729
33730 var Collapse = (function (_React$Component) {
33731 _inherits(Collapse, _React$Component);
33732
33733 function Collapse(props, context) {
33734 _classCallCheck(this, Collapse);
33735
33736 _React$Component.call(this, props, context);
33737
33738 this.onEnterListener = this.handleEnter.bind(this);
33739 this.onEnteringListener = this.handleEntering.bind(this);
33740 this.onEnteredListener = this.handleEntered.bind(this);
33741 this.onExitListener = this.handleExit.bind(this);
33742 this.onExitingListener = this.handleExiting.bind(this);
33743 }
33744
33745 // Explicitly copied from Transition for doc generation.
33746 // TODO: Remove duplication once #977 is resolved.
33747
33748 Collapse.prototype.render = function render() {
33749 var enter = _utilsCreateChainedFunction2['default'](this.onEnterListener, this.props.onEnter);
33750 var entering = _utilsCreateChainedFunction2['default'](this.onEnteringListener, this.props.onEntering);
33751 var entered = _utilsCreateChainedFunction2['default'](this.onEnteredListener, this.props.onEntered);
33752 var exit = _utilsCreateChainedFunction2['default'](this.onExitListener, this.props.onExit);
33753 var exiting = _utilsCreateChainedFunction2['default'](this.onExitingListener, this.props.onExiting);
33754
33755 return _react2['default'].createElement(
33756 _reactOverlaysLibTransition2['default'],
33757 _extends({
33758 ref: 'transition'
33759 }, this.props, {
33760 'aria-expanded': this.props.role ? this.props['in'] : null,
33761 className: _classnames2['default'](this.props.className, { width: this._dimension() === 'width' }),
33762 exitedClassName: 'collapse',
33763 exitingClassName: 'collapsing',
33764 enteredClassName: 'collapse in',
33765 enteringClassName: 'collapsing',
33766 onEnter: enter,
33767 onEntering: entering,
33768 onEntered: entered,
33769 onExit: exit,
33770 onExiting: exiting,
33771 onExited: this.props.onExited
33772 }),
33773 this.props.children
33774 );
33775 };
33776
33777 /* -- Expanding -- */
33778
33779 Collapse.prototype.handleEnter = function handleEnter(elem) {
33780 var dimension = this._dimension();
33781 elem.style[dimension] = '0';
33782 };
33783
33784 Collapse.prototype.handleEntering = function handleEntering(elem) {
33785 var dimension = this._dimension();
33786
33787 elem.style[dimension] = this._getScrollDimensionValue(elem, dimension);
33788 };
33789
33790 Collapse.prototype.handleEntered = function handleEntered(elem) {
33791 var dimension = this._dimension();
33792 elem.style[dimension] = null;
33793 };
33794
33795 /* -- Collapsing -- */
33796
33797 Collapse.prototype.handleExit = function handleExit(elem) {
33798 var dimension = this._dimension();
33799
33800 elem.style[dimension] = this.props.getDimensionValue(dimension, elem) + 'px';
33801 };
33802
33803 Collapse.prototype.handleExiting = function handleExiting(elem) {
33804 var dimension = this._dimension();
33805
33806 triggerBrowserReflow(elem);
33807 elem.style[dimension] = '0';
33808 };
33809
33810 Collapse.prototype._dimension = function _dimension() {
33811 return typeof this.props.dimension === 'function' ? this.props.dimension() : this.props.dimension;
33812 };
33813
33814 // for testing
33815
33816 Collapse.prototype._getTransitionInstance = function _getTransitionInstance() {
33817 return this.refs.transition;
33818 };
33819
33820 Collapse.prototype._getScrollDimensionValue = function _getScrollDimensionValue(elem, dimension) {
33821 return elem['scroll' + capitalize(dimension)] + 'px';
33822 };
33823
33824 return Collapse;
33825 })(_react2['default'].Component);
33826
33827 Collapse.propTypes = {
33828 /**
33829 * Show the component; triggers the expand or collapse animation
33830 */
33831 'in': _react2['default'].PropTypes.bool,
33832
33833 /**
33834 * Unmount the component (remove it from the DOM) when it is collapsed
33835 */
33836 unmountOnExit: _react2['default'].PropTypes.bool,
33837
33838 /**
33839 * Run the expand animation when the component mounts, if it is initially
33840 * shown
33841 */
33842 transitionAppear: _react2['default'].PropTypes.bool,
33843
33844 /**
33845 * Duration of the collapse animation in milliseconds, to ensure that
33846 * finishing callbacks are fired even if the original browser transition end
33847 * events are canceled
33848 */
33849 timeout: _react2['default'].PropTypes.number,
33850
33851 /**
33852 * Callback fired before the component expands
33853 */
33854 onEnter: _react2['default'].PropTypes.func,
33855 /**
33856 * Callback fired after the component starts to expand
33857 */
33858 onEntering: _react2['default'].PropTypes.func,
33859 /**
33860 * Callback fired after the component has expanded
33861 */
33862 onEntered: _react2['default'].PropTypes.func,
33863 /**
33864 * Callback fired before the component collapses
33865 */
33866 onExit: _react2['default'].PropTypes.func,
33867 /**
33868 * Callback fired after the component starts to collapse
33869 */
33870 onExiting: _react2['default'].PropTypes.func,
33871 /**
33872 * Callback fired after the component has collapsed
33873 */
33874 onExited: _react2['default'].PropTypes.func,
33875
33876 /**
33877 * The dimension used when collapsing, or a function that returns the
33878 * dimension
33879 *
33880 * _Note: Bootstrap only partially supports 'width'!
33881 * You will need to supply your own CSS animation for the `.width` CSS class._
33882 */
33883 dimension: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.oneOf(['height', 'width']), _react2['default'].PropTypes.func]),
33884
33885 /**
33886 * Function that returns the height or width of the animating DOM node
33887 *
33888 * Allows for providing some custom logic for how much the Collapse component
33889 * should animate in its specified dimension. Called with the current
33890 * dimension prop value and the DOM node.
33891 */
33892 getDimensionValue: _react2['default'].PropTypes.func,
33893
33894 /**
33895 * ARIA role of collapsible element
33896 */
33897 role: _react2['default'].PropTypes.string
33898 };
33899
33900 Collapse.defaultProps = {
33901 'in': false,
33902 timeout: 300,
33903 unmountOnExit: false,
33904 transitionAppear: false,
33905
33906 dimension: 'height',
33907 getDimensionValue: getDimensionValue
33908 };
33909
33910 exports['default'] = Collapse;
33911 module.exports = exports['default'];
33912
33913/***/ },
33914/* 402 */
33915/***/ function(module, exports, __webpack_require__) {
33916
33917 'use strict';
33918
33919 var camelize = __webpack_require__(403),
33920 hyphenate = __webpack_require__(405),
33921 _getComputedStyle = __webpack_require__(407),
33922 removeStyle = __webpack_require__(409);
33923
33924 var has = Object.prototype.hasOwnProperty;
33925
33926 module.exports = function style(node, property, value) {
33927 var css = '',
33928 props = property;
33929
33930 if (typeof property === 'string') {
33931
33932 if (value === undefined) return node.style[camelize(property)] || _getComputedStyle(node).getPropertyValue(hyphenate(property));else (props = {})[property] = value;
33933 }
33934
33935 for (var key in props) if (has.call(props, key)) {
33936 !props[key] && props[key] !== 0 ? removeStyle(node, hyphenate(key)) : css += hyphenate(key) + ':' + props[key] + ';';
33937 }
33938
33939 node.style.cssText += ';' + css;
33940 };
33941
33942/***/ },
33943/* 403 */
33944/***/ function(module, exports, __webpack_require__) {
33945
33946 /**
33947 * Copyright 2014-2015, Facebook, Inc.
33948 * All rights reserved.
33949 * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js
33950 */
33951
33952 'use strict';
33953 var camelize = __webpack_require__(404);
33954 var msPattern = /^-ms-/;
33955
33956 module.exports = function camelizeStyleName(string) {
33957 return camelize(string.replace(msPattern, 'ms-'));
33958 };
33959
33960/***/ },
33961/* 404 */
33962/***/ function(module, exports) {
33963
33964 "use strict";
33965
33966 var rHyphen = /-(.)/g;
33967
33968 module.exports = function camelize(string) {
33969 return string.replace(rHyphen, function (_, chr) {
33970 return chr.toUpperCase();
33971 });
33972 };
33973
33974/***/ },
33975/* 405 */
33976/***/ function(module, exports, __webpack_require__) {
33977
33978 /**
33979 * Copyright 2013-2014, Facebook, Inc.
33980 * All rights reserved.
33981 * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js
33982 */
33983
33984 "use strict";
33985
33986 var hyphenate = __webpack_require__(406);
33987 var msPattern = /^ms-/;
33988
33989 module.exports = function hyphenateStyleName(string) {
33990 return hyphenate(string).replace(msPattern, "-ms-");
33991 };
33992
33993/***/ },
33994/* 406 */
33995/***/ function(module, exports) {
33996
33997 'use strict';
33998
33999 var rUpper = /([A-Z])/g;
34000
34001 module.exports = function hyphenate(string) {
34002 return string.replace(rUpper, '-$1').toLowerCase();
34003 };
34004
34005/***/ },
34006/* 407 */
34007/***/ function(module, exports, __webpack_require__) {
34008
34009 'use strict';
34010
34011 var babelHelpers = __webpack_require__(408);
34012
34013 var _utilCamelizeStyle = __webpack_require__(403);
34014
34015 var _utilCamelizeStyle2 = babelHelpers.interopRequireDefault(_utilCamelizeStyle);
34016
34017 var rposition = /^(top|right|bottom|left)$/;
34018 var rnumnonpx = /^([+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/i;
34019
34020 module.exports = function _getComputedStyle(node) {
34021 if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');
34022 var doc = node.ownerDocument;
34023
34024 return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : { //ie 8 "magic" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72
34025 getPropertyValue: function getPropertyValue(prop) {
34026 var style = node.style;
34027
34028 prop = (0, _utilCamelizeStyle2['default'])(prop);
34029
34030 if (prop == 'float') prop = 'styleFloat';
34031
34032 var current = node.currentStyle[prop] || null;
34033
34034 if (current == null && style && style[prop]) current = style[prop];
34035
34036 if (rnumnonpx.test(current) && !rposition.test(prop)) {
34037 // Remember the original values
34038 var left = style.left;
34039 var runStyle = node.runtimeStyle;
34040 var rsLeft = runStyle && runStyle.left;
34041
34042 // Put in the new values to get a computed value out
34043 if (rsLeft) runStyle.left = node.currentStyle.left;
34044
34045 style.left = prop === 'fontSize' ? '1em' : current;
34046 current = style.pixelLeft + 'px';
34047
34048 // Revert the changed values
34049 style.left = left;
34050 if (rsLeft) runStyle.left = rsLeft;
34051 }
34052
34053 return current;
34054 }
34055 };
34056 };
34057
34058/***/ },
34059/* 408 */
34060/***/ function(module, exports, __webpack_require__) {
34061
34062 var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root, factory) {
34063 if (true) {
34064 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
34065 } else if (typeof exports === "object") {
34066 factory(exports);
34067 } else {
34068 factory(root.babelHelpers = {});
34069 }
34070 })(this, function (global) {
34071 var babelHelpers = global;
34072
34073 babelHelpers.interopRequireDefault = function (obj) {
34074 return obj && obj.__esModule ? obj : {
34075 "default": obj
34076 };
34077 };
34078
34079 babelHelpers._extends = Object.assign || function (target) {
34080 for (var i = 1; i < arguments.length; i++) {
34081 var source = arguments[i];
34082
34083 for (var key in source) {
34084 if (Object.prototype.hasOwnProperty.call(source, key)) {
34085 target[key] = source[key];
34086 }
34087 }
34088 }
34089
34090 return target;
34091 };
34092 })
34093
34094/***/ },
34095/* 409 */
34096/***/ function(module, exports) {
34097
34098 'use strict';
34099
34100 module.exports = function removeStyle(node, key) {
34101 return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);
34102 };
34103
34104/***/ },
34105/* 410 */
34106/***/ function(module, exports, __webpack_require__) {
34107
34108 'use strict';
34109
34110 Object.defineProperty(exports, "__esModule", {
34111 value: true
34112 });
34113 exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = undefined;
34114
34115 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
34116
34117 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
34118
34119 var _react = __webpack_require__(89);
34120
34121 var _react2 = _interopRequireDefault(_react);
34122
34123 var _reactDom = __webpack_require__(122);
34124
34125 var _reactDom2 = _interopRequireDefault(_reactDom);
34126
34127 var _properties = __webpack_require__(411);
34128
34129 var _properties2 = _interopRequireDefault(_properties);
34130
34131 var _on = __webpack_require__(413);
34132
34133 var _on2 = _interopRequireDefault(_on);
34134
34135 var _classnames = __webpack_require__(356);
34136
34137 var _classnames2 = _interopRequireDefault(_classnames);
34138
34139 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34140
34141 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
34142
34143 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
34144
34145 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
34146
34147 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
34148
34149 var transitionEndEvent = _properties2.default.end;
34150
34151 var UNMOUNTED = exports.UNMOUNTED = 0;
34152 var EXITED = exports.EXITED = 1;
34153 var ENTERING = exports.ENTERING = 2;
34154 var ENTERED = exports.ENTERED = 3;
34155 var EXITING = exports.EXITING = 4;
34156
34157 /**
34158 * The Transition component lets you define and run css transitions with a simple declarative api.
34159 * It works similar to React's own [CSSTransitionGroup](http://facebook.github.io/react/docs/animation.html#high-level-api-reactcsstransitiongroup)
34160 * but is specifically optimized for transitioning a single child "in" or "out".
34161 *
34162 * You don't even need to use class based css transitions if you don't want to (but it is easiest).
34163 * The extensive set of lifecyle callbacks means you have control over
34164 * the transitioning now at each step of the way.
34165 */
34166
34167 var Transition = function (_React$Component) {
34168 _inherits(Transition, _React$Component);
34169
34170 function Transition(props, context) {
34171 _classCallCheck(this, Transition);
34172
34173 var _this = _possibleConstructorReturn(this, (Transition.__proto__ || Object.getPrototypeOf(Transition)).call(this, props, context));
34174
34175 var initialStatus = void 0;
34176 if (props.in) {
34177 // Start enter transition in componentDidMount.
34178 initialStatus = props.transitionAppear ? EXITED : ENTERED;
34179 } else {
34180 initialStatus = props.unmountOnExit ? UNMOUNTED : EXITED;
34181 }
34182 _this.state = { status: initialStatus };
34183
34184 _this.nextCallback = null;
34185 return _this;
34186 }
34187
34188 _createClass(Transition, [{
34189 key: 'componentDidMount',
34190 value: function componentDidMount() {
34191 if (this.props.transitionAppear && this.props.in) {
34192 this.performEnter(this.props);
34193 }
34194 }
34195 }, {
34196 key: 'componentWillReceiveProps',
34197 value: function componentWillReceiveProps(nextProps) {
34198 if (nextProps.in && this.props.unmountOnExit) {
34199 if (this.state.status === UNMOUNTED) {
34200 // Start enter transition in componentDidUpdate.
34201 this.setState({ status: EXITED });
34202 }
34203 } else {
34204 this._needsUpdate = true;
34205 }
34206 }
34207 }, {
34208 key: 'componentDidUpdate',
34209 value: function componentDidUpdate() {
34210 var status = this.state.status;
34211
34212 if (this.props.unmountOnExit && status === EXITED) {
34213 // EXITED is always a transitional state to either ENTERING or UNMOUNTED
34214 // when using unmountOnExit.
34215 if (this.props.in) {
34216 this.performEnter(this.props);
34217 } else {
34218 this.setState({ status: UNMOUNTED });
34219 }
34220
34221 return;
34222 }
34223
34224 // guard ensures we are only responding to prop changes
34225 if (this._needsUpdate) {
34226 this._needsUpdate = false;
34227
34228 if (this.props.in) {
34229 if (status === EXITING) {
34230 this.performEnter(this.props);
34231 } else if (status === EXITED) {
34232 this.performEnter(this.props);
34233 }
34234 // Otherwise we're already entering or entered.
34235 } else {
34236 if (status === ENTERING || status === ENTERED) {
34237 this.performExit(this.props);
34238 }
34239 // Otherwise we're already exited or exiting.
34240 }
34241 }
34242 }
34243 }, {
34244 key: 'componentWillUnmount',
34245 value: function componentWillUnmount() {
34246 this.cancelNextCallback();
34247 }
34248 }, {
34249 key: 'performEnter',
34250 value: function performEnter(props) {
34251 var _this2 = this;
34252
34253 this.cancelNextCallback();
34254 var node = _reactDom2.default.findDOMNode(this);
34255
34256 // Not this.props, because we might be about to receive new props.
34257 props.onEnter(node);
34258
34259 this.safeSetState({ status: ENTERING }, function () {
34260 _this2.props.onEntering(node);
34261
34262 _this2.onTransitionEnd(node, function () {
34263 _this2.safeSetState({ status: ENTERED }, function () {
34264 _this2.props.onEntered(node);
34265 });
34266 });
34267 });
34268 }
34269 }, {
34270 key: 'performExit',
34271 value: function performExit(props) {
34272 var _this3 = this;
34273
34274 this.cancelNextCallback();
34275 var node = _reactDom2.default.findDOMNode(this);
34276
34277 // Not this.props, because we might be about to receive new props.
34278 props.onExit(node);
34279
34280 this.safeSetState({ status: EXITING }, function () {
34281 _this3.props.onExiting(node);
34282
34283 _this3.onTransitionEnd(node, function () {
34284 _this3.safeSetState({ status: EXITED }, function () {
34285 _this3.props.onExited(node);
34286 });
34287 });
34288 });
34289 }
34290 }, {
34291 key: 'cancelNextCallback',
34292 value: function cancelNextCallback() {
34293 if (this.nextCallback !== null) {
34294 this.nextCallback.cancel();
34295 this.nextCallback = null;
34296 }
34297 }
34298 }, {
34299 key: 'safeSetState',
34300 value: function safeSetState(nextState, callback) {
34301 // This shouldn't be necessary, but there are weird race conditions with
34302 // setState callbacks and unmounting in testing, so always make sure that
34303 // we can cancel any pending setState callbacks after we unmount.
34304 this.setState(nextState, this.setNextCallback(callback));
34305 }
34306 }, {
34307 key: 'setNextCallback',
34308 value: function setNextCallback(callback) {
34309 var _this4 = this;
34310
34311 var active = true;
34312
34313 this.nextCallback = function (event) {
34314 if (active) {
34315 active = false;
34316 _this4.nextCallback = null;
34317
34318 callback(event);
34319 }
34320 };
34321
34322 this.nextCallback.cancel = function () {
34323 active = false;
34324 };
34325
34326 return this.nextCallback;
34327 }
34328 }, {
34329 key: 'onTransitionEnd',
34330 value: function onTransitionEnd(node, handler) {
34331 this.setNextCallback(handler);
34332
34333 if (node) {
34334 (0, _on2.default)(node, transitionEndEvent, this.nextCallback);
34335 setTimeout(this.nextCallback, this.props.timeout);
34336 } else {
34337 setTimeout(this.nextCallback, 0);
34338 }
34339 }
34340 }, {
34341 key: 'render',
34342 value: function render() {
34343 var status = this.state.status;
34344 if (status === UNMOUNTED) {
34345 return null;
34346 }
34347
34348 var _props = this.props;
34349 var children = _props.children;
34350 var className = _props.className;
34351
34352 var childProps = _objectWithoutProperties(_props, ['children', 'className']);
34353
34354 Object.keys(Transition.propTypes).forEach(function (key) {
34355 return delete childProps[key];
34356 });
34357
34358 var transitionClassName = void 0;
34359 if (status === EXITED) {
34360 transitionClassName = this.props.exitedClassName;
34361 } else if (status === ENTERING) {
34362 transitionClassName = this.props.enteringClassName;
34363 } else if (status === ENTERED) {
34364 transitionClassName = this.props.enteredClassName;
34365 } else if (status === EXITING) {
34366 transitionClassName = this.props.exitingClassName;
34367 }
34368
34369 var child = _react2.default.Children.only(children);
34370 return _react2.default.cloneElement(child, _extends({}, childProps, {
34371 className: (0, _classnames2.default)(child.props.className, className, transitionClassName)
34372 }));
34373 }
34374 }]);
34375
34376 return Transition;
34377 }(_react2.default.Component);
34378
34379 Transition.propTypes = {
34380 /**
34381 * Show the component; triggers the enter or exit animation
34382 */
34383 in: _react2.default.PropTypes.bool,
34384
34385 /**
34386 * Unmount the component (remove it from the DOM) when it is not shown
34387 */
34388 unmountOnExit: _react2.default.PropTypes.bool,
34389
34390 /**
34391 * Run the enter animation when the component mounts, if it is initially
34392 * shown
34393 */
34394 transitionAppear: _react2.default.PropTypes.bool,
34395
34396 /**
34397 * A Timeout for the animation, in milliseconds, to ensure that a node doesn't
34398 * transition indefinately if the browser transitionEnd events are
34399 * canceled or interrupted.
34400 *
34401 * By default this is set to a high number (5 seconds) as a failsafe. You should consider
34402 * setting this to the duration of your animation (or a bit above it).
34403 */
34404 timeout: _react2.default.PropTypes.number,
34405
34406 /**
34407 * CSS class or classes applied when the component is exited
34408 */
34409 exitedClassName: _react2.default.PropTypes.string,
34410 /**
34411 * CSS class or classes applied while the component is exiting
34412 */
34413 exitingClassName: _react2.default.PropTypes.string,
34414 /**
34415 * CSS class or classes applied when the component is entered
34416 */
34417 enteredClassName: _react2.default.PropTypes.string,
34418 /**
34419 * CSS class or classes applied while the component is entering
34420 */
34421 enteringClassName: _react2.default.PropTypes.string,
34422
34423 /**
34424 * Callback fired before the "entering" classes are applied
34425 */
34426 onEnter: _react2.default.PropTypes.func,
34427 /**
34428 * Callback fired after the "entering" classes are applied
34429 */
34430 onEntering: _react2.default.PropTypes.func,
34431 /**
34432 * Callback fired after the "enter" classes are applied
34433 */
34434 onEntered: _react2.default.PropTypes.func,
34435 /**
34436 * Callback fired before the "exiting" classes are applied
34437 */
34438 onExit: _react2.default.PropTypes.func,
34439 /**
34440 * Callback fired after the "exiting" classes are applied
34441 */
34442 onExiting: _react2.default.PropTypes.func,
34443 /**
34444 * Callback fired after the "exited" classes are applied
34445 */
34446 onExited: _react2.default.PropTypes.func
34447 };
34448
34449 // Name the function so it is clearer in the documentation
34450 function noop() {}
34451
34452 Transition.displayName = 'Transition';
34453
34454 Transition.defaultProps = {
34455 in: false,
34456 unmountOnExit: false,
34457 transitionAppear: false,
34458
34459 timeout: 5000,
34460
34461 onEnter: noop,
34462 onEntering: noop,
34463 onEntered: noop,
34464
34465 onExit: noop,
34466 onExiting: noop,
34467 onExited: noop
34468 };
34469
34470 exports.default = Transition;
34471
34472/***/ },
34473/* 411 */
34474/***/ function(module, exports, __webpack_require__) {
34475
34476 'use strict';
34477 var canUseDOM = __webpack_require__(412);
34478
34479 var has = Object.prototype.hasOwnProperty,
34480 transform = 'transform',
34481 transition = {},
34482 transitionTiming,
34483 transitionDuration,
34484 transitionProperty,
34485 transitionDelay;
34486
34487 if (canUseDOM) {
34488 transition = getTransitionProperties();
34489
34490 transform = transition.prefix + transform;
34491
34492 transitionProperty = transition.prefix + 'transition-property';
34493 transitionDuration = transition.prefix + 'transition-duration';
34494 transitionDelay = transition.prefix + 'transition-delay';
34495 transitionTiming = transition.prefix + 'transition-timing-function';
34496 }
34497
34498 module.exports = {
34499 transform: transform,
34500 end: transition.end,
34501 property: transitionProperty,
34502 timing: transitionTiming,
34503 delay: transitionDelay,
34504 duration: transitionDuration
34505 };
34506
34507 function getTransitionProperties() {
34508 var endEvent,
34509 prefix = '',
34510 transitions = {
34511 O: 'otransitionend',
34512 Moz: 'transitionend',
34513 Webkit: 'webkitTransitionEnd',
34514 ms: 'MSTransitionEnd'
34515 };
34516
34517 var element = document.createElement('div');
34518
34519 for (var vendor in transitions) if (has.call(transitions, vendor)) {
34520 if (element.style[vendor + 'TransitionProperty'] !== undefined) {
34521 prefix = '-' + vendor.toLowerCase() + '-';
34522 endEvent = transitions[vendor];
34523 break;
34524 }
34525 }
34526
34527 if (!endEvent && element.style.transitionProperty !== undefined) endEvent = 'transitionend';
34528
34529 return { end: endEvent, prefix: prefix };
34530 }
34531
34532/***/ },
34533/* 412 */
34534/***/ function(module, exports) {
34535
34536 'use strict';
34537 module.exports = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
34538
34539/***/ },
34540/* 413 */
34541/***/ function(module, exports, __webpack_require__) {
34542
34543 'use strict';
34544 var canUseDOM = __webpack_require__(412);
34545 var on = function on() {};
34546
34547 if (canUseDOM) {
34548 on = (function () {
34549
34550 if (document.addEventListener) return function (node, eventName, handler, capture) {
34551 return node.addEventListener(eventName, handler, capture || false);
34552 };else if (document.attachEvent) return function (node, eventName, handler) {
34553 return node.attachEvent('on' + eventName, handler);
34554 };
34555 })();
34556 }
34557
34558 module.exports = on;
34559
34560/***/ },
34561/* 414 */
34562/***/ function(module, exports) {
34563
34564 /**
34565 * Safe chained function
34566 *
34567 * Will only create a new function if needed,
34568 * otherwise will pass back existing functions or null.
34569 *
34570 * @param {function} functions to chain
34571 * @returns {function|null}
34572 */
34573 'use strict';
34574
34575 exports.__esModule = true;
34576 function createChainedFunction() {
34577 for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
34578 funcs[_key] = arguments[_key];
34579 }
34580
34581 return funcs.filter(function (f) {
34582 return f != null;
34583 }).reduce(function (acc, f) {
34584 if (typeof f !== 'function') {
34585 throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');
34586 }
34587
34588 if (acc === null) {
34589 return f;
34590 }
34591
34592 return function chainedFunction() {
34593 for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
34594 args[_key2] = arguments[_key2];
34595 }
34596
34597 acc.apply(this, args);
34598 f.apply(this, args);
34599 };
34600 }, null);
34601 }
34602
34603 exports['default'] = createChainedFunction;
34604 module.exports = exports['default'];
34605
34606/***/ },
34607/* 415 */
34608/***/ function(module, exports, __webpack_require__) {
34609
34610 'use strict';
34611
34612 var _inherits = __webpack_require__(372)['default'];
34613
34614 var _classCallCheck = __webpack_require__(379)['default'];
34615
34616 var _extends = __webpack_require__(338)['default'];
34617
34618 var _interopRequireDefault = __webpack_require__(335)['default'];
34619
34620 exports.__esModule = true;
34621
34622 var _classnames = __webpack_require__(356);
34623
34624 var _classnames2 = _interopRequireDefault(_classnames);
34625
34626 var _domHelpersActiveElement = __webpack_require__(416);
34627
34628 var _domHelpersActiveElement2 = _interopRequireDefault(_domHelpersActiveElement);
34629
34630 var _domHelpersQueryContains = __webpack_require__(418);
34631
34632 var _domHelpersQueryContains2 = _interopRequireDefault(_domHelpersQueryContains);
34633
34634 var _keycode = __webpack_require__(419);
34635
34636 var _keycode2 = _interopRequireDefault(_keycode);
34637
34638 var _lodashCompatCollectionFind = __webpack_require__(420);
34639
34640 var _lodashCompatCollectionFind2 = _interopRequireDefault(_lodashCompatCollectionFind);
34641
34642 var _lodashCompatObjectOmit = __webpack_require__(473);
34643
34644 var _lodashCompatObjectOmit2 = _interopRequireDefault(_lodashCompatObjectOmit);
34645
34646 var _react = __webpack_require__(89);
34647
34648 var _react2 = _interopRequireDefault(_react);
34649
34650 var _reactDom = __webpack_require__(122);
34651
34652 var _reactDom2 = _interopRequireDefault(_reactDom);
34653
34654 var _reactPropTypesLibAll = __webpack_require__(384);
34655
34656 var _reactPropTypesLibAll2 = _interopRequireDefault(_reactPropTypesLibAll);
34657
34658 var _reactPropTypesLibElementType = __webpack_require__(380);
34659
34660 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
34661
34662 var _reactPropTypesLibIsRequiredForA11y = __webpack_require__(488);
34663
34664 var _reactPropTypesLibIsRequiredForA11y2 = _interopRequireDefault(_reactPropTypesLibIsRequiredForA11y);
34665
34666 var _uncontrollable = __webpack_require__(489);
34667
34668 var _uncontrollable2 = _interopRequireDefault(_uncontrollable);
34669
34670 var _warning = __webpack_require__(271);
34671
34672 var _warning2 = _interopRequireDefault(_warning);
34673
34674 var _utilsBootstrapUtils = __webpack_require__(357);
34675
34676 var _utilsCreateChainedFunction = __webpack_require__(414);
34677
34678 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
34679
34680 var _utilsCustomPropTypes = __webpack_require__(492);
34681
34682 var _utilsCustomPropTypes2 = _interopRequireDefault(_utilsCustomPropTypes);
34683
34684 var _utilsValidComponentChildren = __webpack_require__(365);
34685
34686 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
34687
34688 var _ButtonGroup = __webpack_require__(383);
34689
34690 var _ButtonGroup2 = _interopRequireDefault(_ButtonGroup);
34691
34692 var _DropdownMenu = __webpack_require__(494);
34693
34694 var _DropdownMenu2 = _interopRequireDefault(_DropdownMenu);
34695
34696 var _DropdownToggle = __webpack_require__(499);
34697
34698 var _DropdownToggle2 = _interopRequireDefault(_DropdownToggle);
34699
34700 var TOGGLE_ROLE = _DropdownToggle2['default'].defaultProps.bsRole;
34701 var MENU_ROLE = _DropdownMenu2['default'].defaultProps.bsRole;
34702
34703 var Dropdown = (function (_React$Component) {
34704 _inherits(Dropdown, _React$Component);
34705
34706 function Dropdown(props) {
34707 _classCallCheck(this, Dropdown);
34708
34709 _React$Component.call(this, props);
34710
34711 this.Toggle = _DropdownToggle2['default'];
34712
34713 this.toggleOpen = this.toggleOpen.bind(this);
34714 this.handleClick = this.handleClick.bind(this);
34715 this.handleKeyDown = this.handleKeyDown.bind(this);
34716 this.handleClose = this.handleClose.bind(this);
34717 this.extractChildren = this.extractChildren.bind(this);
34718
34719 this.refineMenu = this.refineMenu.bind(this);
34720 this.refineToggle = this.refineToggle.bind(this);
34721
34722 this.childExtractors = [{
34723 key: 'toggle',
34724 matches: function matches(child) {
34725 return child.props.bsRole === TOGGLE_ROLE;
34726 },
34727 refine: this.refineToggle
34728 }, {
34729 key: 'menu',
34730 exclusive: true,
34731 matches: function matches(child) {
34732 return child.props.bsRole === MENU_ROLE;
34733 },
34734 refine: this.refineMenu
34735 }];
34736
34737 this.state = {};
34738
34739 this.lastOpenEventType = null;
34740 }
34741
34742 Dropdown.prototype.componentDidMount = function componentDidMount() {
34743 this.focusNextOnOpen();
34744 };
34745
34746 Dropdown.prototype.componentWillUpdate = function componentWillUpdate(nextProps) {
34747 if (!nextProps.open && this.props.open) {
34748 this._focusInDropdown = _domHelpersQueryContains2['default'](_reactDom2['default'].findDOMNode(this.menu), _domHelpersActiveElement2['default'](document));
34749 }
34750 };
34751
34752 Dropdown.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {
34753 if (this.props.open && !prevProps.open) {
34754 this.focusNextOnOpen();
34755 }
34756
34757 if (!this.props.open && prevProps.open) {
34758 // if focus hasn't already moved from the menu lets return it
34759 // to the toggle
34760 if (this._focusInDropdown) {
34761 this._focusInDropdown = false;
34762 this.focus();
34763 }
34764 }
34765 };
34766
34767 Dropdown.prototype.render = function render() {
34768 var _rootClasses;
34769
34770 var children = this.extractChildren();
34771 var Component = this.props.componentClass;
34772
34773 var props = _lodashCompatObjectOmit2['default'](this.props, ['id', 'bsClass', 'role', 'onSelect']);
34774 var className = _utilsBootstrapUtils.prefix(this.props);
34775
34776 var rootClasses = (_rootClasses = {
34777 open: this.props.open,
34778 disabled: this.props.disabled
34779 }, _rootClasses[className] = !this.props.dropup, _rootClasses.dropup = this.props.dropup, _rootClasses);
34780
34781 return _react2['default'].createElement(
34782 Component,
34783 _extends({}, props, {
34784 className: _classnames2['default'](this.props.className, rootClasses)
34785 }),
34786 children
34787 );
34788 };
34789
34790 Dropdown.prototype.toggleOpen = function toggleOpen() {
34791 var eventType = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];
34792
34793 var open = !this.props.open;
34794
34795 if (open) {
34796 this.lastOpenEventType = eventType;
34797 }
34798
34799 if (this.props.onToggle) {
34800 this.props.onToggle(open);
34801 }
34802 };
34803
34804 Dropdown.prototype.handleClick = function handleClick() {
34805 if (this.props.disabled) {
34806 return;
34807 }
34808
34809 this.toggleOpen('click');
34810 };
34811
34812 Dropdown.prototype.handleKeyDown = function handleKeyDown(event) {
34813 if (this.props.disabled) {
34814 return;
34815 }
34816
34817 switch (event.keyCode) {
34818 case _keycode2['default'].codes.down:
34819 if (!this.props.open) {
34820 this.toggleOpen('keydown');
34821 } else if (this.menu.focusNext) {
34822 this.menu.focusNext();
34823 }
34824 event.preventDefault();
34825 break;
34826 case _keycode2['default'].codes.esc:
34827 case _keycode2['default'].codes.tab:
34828 this.handleClose(event);
34829 break;
34830 default:
34831 }
34832 };
34833
34834 Dropdown.prototype.handleClose = function handleClose() {
34835 if (!this.props.open) {
34836 return;
34837 }
34838
34839 this.toggleOpen();
34840 };
34841
34842 Dropdown.prototype.focusNextOnOpen = function focusNextOnOpen() {
34843 var menu = this.menu;
34844
34845 if (!menu.focusNext) {
34846 return;
34847 }
34848
34849 if (this.lastOpenEventType === 'keydown' || this.props.role === 'menuitem') {
34850 menu.focusNext();
34851 }
34852 };
34853
34854 Dropdown.prototype.focus = function focus() {
34855 var toggle = _reactDom2['default'].findDOMNode(this.toggle);
34856
34857 if (toggle && toggle.focus) {
34858 toggle.focus();
34859 }
34860 };
34861
34862 Dropdown.prototype.extractChildren = function extractChildren() {
34863 var _this = this;
34864
34865 var open = !!this.props.open;
34866 var seen = {};
34867
34868 return _utilsValidComponentChildren2['default'].map(this.props.children, function (child) {
34869 var extractor = _lodashCompatCollectionFind2['default'](_this.childExtractors, function (x) {
34870 return x.matches(child);
34871 });
34872
34873 if (extractor) {
34874 if (seen[extractor.key]) {
34875 return false;
34876 }
34877
34878 seen[extractor.key] = extractor.exclusive;
34879 child = extractor.refine(child, open);
34880 }
34881
34882 return child;
34883 });
34884 };
34885
34886 Dropdown.prototype.refineMenu = function refineMenu(menu, open) {
34887 var _this2 = this;
34888
34889 var ref = function ref(r) {
34890 return _this2.menu = r;
34891 };
34892
34893 if (typeof menu.ref === 'string') {
34894 (undefined) !== 'production' ? _warning2['default'](false, 'String refs are not supported on `<Dropdown.Menu>` components. ' + 'To apply a ref to the component use the callback signature: \n\n ' + 'https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute') : undefined;
34895 } else {
34896 ref = _utilsCreateChainedFunction2['default'](menu.ref, ref);
34897 }
34898
34899 var menuProps = {
34900 ref: ref,
34901 open: open,
34902 labelledBy: this.props.id,
34903 pullRight: this.props.pullRight,
34904 bsClass: this.props.bsClass
34905 };
34906
34907 menuProps.onClose = _utilsCreateChainedFunction2['default'](menu.props.onClose, this.props.onClose, this.handleClose);
34908
34909 menuProps.onSelect = _utilsCreateChainedFunction2['default'](menu.props.onSelect, this.props.onSelect, this.handleClose);
34910
34911 return _react.cloneElement(menu, menuProps, menu.props.children);
34912 };
34913
34914 Dropdown.prototype.refineToggle = function refineToggle(toggle, open) {
34915 var _this3 = this;
34916
34917 var ref = function ref(r) {
34918 return _this3.toggle = r;
34919 };
34920
34921 if (typeof toggle.ref === 'string') {
34922 (undefined) !== 'production' ? _warning2['default'](false, 'String refs are not supported on `<Dropdown.Toggle>` components. ' + 'To apply a ref to the component use the callback signature: \n\n ' + 'https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute') : undefined;
34923 } else {
34924 ref = _utilsCreateChainedFunction2['default'](toggle.ref, ref);
34925 }
34926
34927 var toggleProps = {
34928 ref: ref,
34929 open: open,
34930 id: this.props.id,
34931 role: this.props.role
34932 };
34933
34934 toggleProps.onClick = _utilsCreateChainedFunction2['default'](toggle.props.onClick, this.handleClick);
34935
34936 toggleProps.onKeyDown = _utilsCreateChainedFunction2['default'](toggle.props.onKeyDown, this.handleKeyDown);
34937
34938 return _react.cloneElement(toggle, toggleProps, toggle.props.children);
34939 };
34940
34941 return Dropdown;
34942 })(_react2['default'].Component);
34943
34944 Dropdown.Toggle = _DropdownToggle2['default'];
34945
34946 Dropdown.TOGGLE_ROLE = TOGGLE_ROLE;
34947 Dropdown.MENU_ROLE = MENU_ROLE;
34948
34949 Dropdown.defaultProps = {
34950 componentClass: _ButtonGroup2['default'],
34951 bsClass: 'dropdown'
34952 };
34953
34954 Dropdown.propTypes = {
34955
34956 bsClass: _react2['default'].PropTypes.string,
34957
34958 /**
34959 * The menu will open above the dropdown button, instead of below it.
34960 */
34961 dropup: _react2['default'].PropTypes.bool,
34962
34963 /**
34964 * An html id attribute, necessary for assistive technologies, such as screen readers.
34965 * @type {string|number}
34966 * @required
34967 */
34968 id: _reactPropTypesLibIsRequiredForA11y2['default'](_react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number])),
34969
34970 componentClass: _reactPropTypesLibElementType2['default'],
34971
34972 /**
34973 * The children of a Dropdown may be a `<Dropdown.Toggle/>` or a `<Dropdown.Menu/>`.
34974 * @type {node}
34975 */
34976 children: _reactPropTypesLibAll2['default'](_utilsCustomPropTypes2['default'].requiredRoles(TOGGLE_ROLE, MENU_ROLE), _utilsCustomPropTypes2['default'].exclusiveRoles(MENU_ROLE)),
34977
34978 /**
34979 * Whether or not component is disabled.
34980 */
34981 disabled: _react2['default'].PropTypes.bool,
34982
34983 /**
34984 * Align the menu to the right side of the Dropdown toggle
34985 */
34986 pullRight: _react2['default'].PropTypes.bool,
34987
34988 /**
34989 * Whether or not the Dropdown is visible.
34990 *
34991 * @controllable onToggle
34992 */
34993 open: _react2['default'].PropTypes.bool,
34994
34995 /**
34996 * A callback fired when the Dropdown closes.
34997 */
34998 onClose: _react2['default'].PropTypes.func,
34999
35000 /**
35001 * A callback fired when the Dropdown wishes to change visibility. Called with the requested
35002 * `open` value.
35003 *
35004 * ```js
35005 * function(Boolean isOpen) {}
35006 * ```
35007 * @controllable open
35008 */
35009 onToggle: _react2['default'].PropTypes.func,
35010
35011 /**
35012 * A callback fired when a menu item is selected.
35013 *
35014 * ```js
35015 * (eventKey: any, event: Object) => any
35016 * ```
35017 */
35018 onSelect: _react2['default'].PropTypes.func,
35019
35020 /**
35021 * If `'menuitem'`, causes the dropdown to behave like a menu item rather than
35022 * a menu button.
35023 */
35024 role: _react2['default'].PropTypes.string
35025 };
35026
35027 Dropdown = _uncontrollable2['default'](Dropdown, { open: 'onToggle' });
35028
35029 Dropdown.Toggle = _DropdownToggle2['default'];
35030 Dropdown.Menu = _DropdownMenu2['default'];
35031
35032 exports['default'] = Dropdown;
35033 module.exports = exports['default'];
35034
35035/***/ },
35036/* 416 */
35037/***/ function(module, exports, __webpack_require__) {
35038
35039 'use strict';
35040
35041 var babelHelpers = __webpack_require__(408);
35042
35043 exports.__esModule = true;
35044
35045 /**
35046 * document.activeElement
35047 */
35048 exports['default'] = activeElement;
35049
35050 var _ownerDocument = __webpack_require__(417);
35051
35052 var _ownerDocument2 = babelHelpers.interopRequireDefault(_ownerDocument);
35053
35054 function activeElement() {
35055 var doc = arguments[0] === undefined ? document : arguments[0];
35056
35057 try {
35058 return doc.activeElement;
35059 } catch (e) {}
35060 }
35061
35062 module.exports = exports['default'];
35063
35064/***/ },
35065/* 417 */
35066/***/ function(module, exports) {
35067
35068 "use strict";
35069
35070 exports.__esModule = true;
35071 exports["default"] = ownerDocument;
35072
35073 function ownerDocument(node) {
35074 return node && node.ownerDocument || document;
35075 }
35076
35077 module.exports = exports["default"];
35078
35079/***/ },
35080/* 418 */
35081/***/ function(module, exports, __webpack_require__) {
35082
35083 'use strict';
35084 var canUseDOM = __webpack_require__(412);
35085
35086 var contains = (function () {
35087 var root = canUseDOM && document.documentElement;
35088
35089 return root && root.contains ? function (context, node) {
35090 return context.contains(node);
35091 } : root && root.compareDocumentPosition ? function (context, node) {
35092 return context === node || !!(context.compareDocumentPosition(node) & 16);
35093 } : function (context, node) {
35094 if (node) do {
35095 if (node === context) return true;
35096 } while (node = node.parentNode);
35097
35098 return false;
35099 };
35100 })();
35101
35102 module.exports = contains;
35103
35104/***/ },
35105/* 419 */
35106/***/ function(module, exports) {
35107
35108 // Source: http://jsfiddle.net/vWx8V/
35109 // http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes
35110
35111 /**
35112 * Conenience method returns corresponding value for given keyName or keyCode.
35113 *
35114 * @param {Mixed} keyCode {Number} or keyName {String}
35115 * @return {Mixed}
35116 * @api public
35117 */
35118
35119 exports = module.exports = function(searchInput) {
35120 // Keyboard Events
35121 if (searchInput && 'object' === typeof searchInput) {
35122 var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode
35123 if (hasKeyCode) searchInput = hasKeyCode
35124 }
35125
35126 // Numbers
35127 if ('number' === typeof searchInput) return names[searchInput]
35128
35129 // Everything else (cast to string)
35130 var search = String(searchInput)
35131
35132 // check codes
35133 var foundNamedKey = codes[search.toLowerCase()]
35134 if (foundNamedKey) return foundNamedKey
35135
35136 // check aliases
35137 var foundNamedKey = aliases[search.toLowerCase()]
35138 if (foundNamedKey) return foundNamedKey
35139
35140 // weird character?
35141 if (search.length === 1) return search.charCodeAt(0)
35142
35143 return undefined
35144 }
35145
35146 /**
35147 * Get by name
35148 *
35149 * exports.code['enter'] // => 13
35150 */
35151
35152 var codes = exports.code = exports.codes = {
35153 'backspace': 8,
35154 'tab': 9,
35155 'enter': 13,
35156 'shift': 16,
35157 'ctrl': 17,
35158 'alt': 18,
35159 'pause/break': 19,
35160 'caps lock': 20,
35161 'esc': 27,
35162 'space': 32,
35163 'page up': 33,
35164 'page down': 34,
35165 'end': 35,
35166 'home': 36,
35167 'left': 37,
35168 'up': 38,
35169 'right': 39,
35170 'down': 40,
35171 'insert': 45,
35172 'delete': 46,
35173 'command': 91,
35174 'left command': 91,
35175 'right command': 93,
35176 'numpad *': 106,
35177 'numpad +': 107,
35178 'numpad -': 109,
35179 'numpad .': 110,
35180 'numpad /': 111,
35181 'num lock': 144,
35182 'scroll lock': 145,
35183 'my computer': 182,
35184 'my calculator': 183,
35185 ';': 186,
35186 '=': 187,
35187 ',': 188,
35188 '-': 189,
35189 '.': 190,
35190 '/': 191,
35191 '`': 192,
35192 '[': 219,
35193 '\\': 220,
35194 ']': 221,
35195 "'": 222
35196 }
35197
35198 // Helper aliases
35199
35200 var aliases = exports.aliases = {
35201 'windows': 91,
35202 '⇧': 16,
35203 '⌥': 18,
35204 '⌃': 17,
35205 '⌘': 91,
35206 'ctl': 17,
35207 'control': 17,
35208 'option': 18,
35209 'pause': 19,
35210 'break': 19,
35211 'caps': 20,
35212 'return': 13,
35213 'escape': 27,
35214 'spc': 32,
35215 'pgup': 33,
35216 'pgdn': 34,
35217 'ins': 45,
35218 'del': 46,
35219 'cmd': 91
35220 }
35221
35222
35223 /*!
35224 * Programatically add the following
35225 */
35226
35227 // lower case chars
35228 for (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32
35229
35230 // numbers
35231 for (var i = 48; i < 58; i++) codes[i - 48] = i
35232
35233 // function keys
35234 for (i = 1; i < 13; i++) codes['f'+i] = i + 111
35235
35236 // numpad keys
35237 for (i = 0; i < 10; i++) codes['numpad '+i] = i + 96
35238
35239 /**
35240 * Get by code
35241 *
35242 * exports.name[13] // => 'Enter'
35243 */
35244
35245 var names = exports.names = exports.title = {} // title for backward compat
35246
35247 // Create reverse mapping
35248 for (i in codes) names[codes[i]] = i
35249
35250 // Add aliases
35251 for (var alias in aliases) {
35252 codes[alias] = aliases[alias]
35253 }
35254
35255
35256/***/ },
35257/* 420 */
35258/***/ function(module, exports, __webpack_require__) {
35259
35260 var baseEach = __webpack_require__(421),
35261 createFind = __webpack_require__(446);
35262
35263 /**
35264 * Iterates over elements of `collection`, returning the first element
35265 * `predicate` returns truthy for. The predicate is bound to `thisArg` and
35266 * invoked with three arguments: (value, index|key, collection).
35267 *
35268 * If a property name is provided for `predicate` the created `_.property`
35269 * style callback returns the property value of the given element.
35270 *
35271 * If a value is also provided for `thisArg` the created `_.matchesProperty`
35272 * style callback returns `true` for elements that have a matching property
35273 * value, else `false`.
35274 *
35275 * If an object is provided for `predicate` the created `_.matches` style
35276 * callback returns `true` for elements that have the properties of the given
35277 * object, else `false`.
35278 *
35279 * @static
35280 * @memberOf _
35281 * @alias detect
35282 * @category Collection
35283 * @param {Array|Object|string} collection The collection to search.
35284 * @param {Function|Object|string} [predicate=_.identity] The function invoked
35285 * per iteration.
35286 * @param {*} [thisArg] The `this` binding of `predicate`.
35287 * @returns {*} Returns the matched element, else `undefined`.
35288 * @example
35289 *
35290 * var users = [
35291 * { 'user': 'barney', 'age': 36, 'active': true },
35292 * { 'user': 'fred', 'age': 40, 'active': false },
35293 * { 'user': 'pebbles', 'age': 1, 'active': true }
35294 * ];
35295 *
35296 * _.result(_.find(users, function(chr) {
35297 * return chr.age < 40;
35298 * }), 'user');
35299 * // => 'barney'
35300 *
35301 * // using the `_.matches` callback shorthand
35302 * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');
35303 * // => 'pebbles'
35304 *
35305 * // using the `_.matchesProperty` callback shorthand
35306 * _.result(_.find(users, 'active', false), 'user');
35307 * // => 'fred'
35308 *
35309 * // using the `_.property` callback shorthand
35310 * _.result(_.find(users, 'active'), 'user');
35311 * // => 'barney'
35312 */
35313 var find = createFind(baseEach);
35314
35315 module.exports = find;
35316
35317
35318/***/ },
35319/* 421 */
35320/***/ function(module, exports, __webpack_require__) {
35321
35322 var baseForOwn = __webpack_require__(422),
35323 createBaseEach = __webpack_require__(445);
35324
35325 /**
35326 * The base implementation of `_.forEach` without support for callback
35327 * shorthands and `this` binding.
35328 *
35329 * @private
35330 * @param {Array|Object|string} collection The collection to iterate over.
35331 * @param {Function} iteratee The function invoked per iteration.
35332 * @returns {Array|Object|string} Returns `collection`.
35333 */
35334 var baseEach = createBaseEach(baseForOwn);
35335
35336 module.exports = baseEach;
35337
35338
35339/***/ },
35340/* 422 */
35341/***/ function(module, exports, __webpack_require__) {
35342
35343 var baseFor = __webpack_require__(423),
35344 keys = __webpack_require__(430);
35345
35346 /**
35347 * The base implementation of `_.forOwn` without support for callback
35348 * shorthands and `this` binding.
35349 *
35350 * @private
35351 * @param {Object} object The object to iterate over.
35352 * @param {Function} iteratee The function invoked per iteration.
35353 * @returns {Object} Returns `object`.
35354 */
35355 function baseForOwn(object, iteratee) {
35356 return baseFor(object, iteratee, keys);
35357 }
35358
35359 module.exports = baseForOwn;
35360
35361
35362/***/ },
35363/* 423 */
35364/***/ function(module, exports, __webpack_require__) {
35365
35366 var createBaseFor = __webpack_require__(424);
35367
35368 /**
35369 * The base implementation of `baseForIn` and `baseForOwn` which iterates
35370 * over `object` properties returned by `keysFunc` invoking `iteratee` for
35371 * each property. Iteratee functions may exit iteration early by explicitly
35372 * returning `false`.
35373 *
35374 * @private
35375 * @param {Object} object The object to iterate over.
35376 * @param {Function} iteratee The function invoked per iteration.
35377 * @param {Function} keysFunc The function to get the keys of `object`.
35378 * @returns {Object} Returns `object`.
35379 */
35380 var baseFor = createBaseFor();
35381
35382 module.exports = baseFor;
35383
35384
35385/***/ },
35386/* 424 */
35387/***/ function(module, exports, __webpack_require__) {
35388
35389 var toObject = __webpack_require__(425);
35390
35391 /**
35392 * Creates a base function for `_.forIn` or `_.forInRight`.
35393 *
35394 * @private
35395 * @param {boolean} [fromRight] Specify iterating from right to left.
35396 * @returns {Function} Returns the new base function.
35397 */
35398 function createBaseFor(fromRight) {
35399 return function(object, iteratee, keysFunc) {
35400 var iterable = toObject(object),
35401 props = keysFunc(object),
35402 length = props.length,
35403 index = fromRight ? length : -1;
35404
35405 while ((fromRight ? index-- : ++index < length)) {
35406 var key = props[index];
35407 if (iteratee(iterable[key], key, iterable) === false) {
35408 break;
35409 }
35410 }
35411 return object;
35412 };
35413 }
35414
35415 module.exports = createBaseFor;
35416
35417
35418/***/ },
35419/* 425 */
35420/***/ function(module, exports, __webpack_require__) {
35421
35422 var isObject = __webpack_require__(426),
35423 isString = __webpack_require__(427),
35424 support = __webpack_require__(429);
35425
35426 /**
35427 * Converts `value` to an object if it's not one.
35428 *
35429 * @private
35430 * @param {*} value The value to process.
35431 * @returns {Object} Returns the object.
35432 */
35433 function toObject(value) {
35434 if (support.unindexedChars && isString(value)) {
35435 var index = -1,
35436 length = value.length,
35437 result = Object(value);
35438
35439 while (++index < length) {
35440 result[index] = value.charAt(index);
35441 }
35442 return result;
35443 }
35444 return isObject(value) ? value : Object(value);
35445 }
35446
35447 module.exports = toObject;
35448
35449
35450/***/ },
35451/* 426 */
35452/***/ function(module, exports) {
35453
35454 /**
35455 * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
35456 * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
35457 *
35458 * @static
35459 * @memberOf _
35460 * @category Lang
35461 * @param {*} value The value to check.
35462 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
35463 * @example
35464 *
35465 * _.isObject({});
35466 * // => true
35467 *
35468 * _.isObject([1, 2, 3]);
35469 * // => true
35470 *
35471 * _.isObject(1);
35472 * // => false
35473 */
35474 function isObject(value) {
35475 // Avoid a V8 JIT bug in Chrome 19-20.
35476 // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
35477 var type = typeof value;
35478 return !!value && (type == 'object' || type == 'function');
35479 }
35480
35481 module.exports = isObject;
35482
35483
35484/***/ },
35485/* 427 */
35486/***/ function(module, exports, __webpack_require__) {
35487
35488 var isObjectLike = __webpack_require__(428);
35489
35490 /** `Object#toString` result references. */
35491 var stringTag = '[object String]';
35492
35493 /** Used for native method references. */
35494 var objectProto = Object.prototype;
35495
35496 /**
35497 * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
35498 * of values.
35499 */
35500 var objToString = objectProto.toString;
35501
35502 /**
35503 * Checks if `value` is classified as a `String` primitive or object.
35504 *
35505 * @static
35506 * @memberOf _
35507 * @category Lang
35508 * @param {*} value The value to check.
35509 * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
35510 * @example
35511 *
35512 * _.isString('abc');
35513 * // => true
35514 *
35515 * _.isString(1);
35516 * // => false
35517 */
35518 function isString(value) {
35519 return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);
35520 }
35521
35522 module.exports = isString;
35523
35524
35525/***/ },
35526/* 428 */
35527/***/ function(module, exports) {
35528
35529 /**
35530 * Checks if `value` is object-like.
35531 *
35532 * @private
35533 * @param {*} value The value to check.
35534 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
35535 */
35536 function isObjectLike(value) {
35537 return !!value && typeof value == 'object';
35538 }
35539
35540 module.exports = isObjectLike;
35541
35542
35543/***/ },
35544/* 429 */
35545/***/ function(module, exports) {
35546
35547 /** Used for native method references. */
35548 var arrayProto = Array.prototype,
35549 errorProto = Error.prototype,
35550 objectProto = Object.prototype;
35551
35552 /** Native method references. */
35553 var propertyIsEnumerable = objectProto.propertyIsEnumerable,
35554 splice = arrayProto.splice;
35555
35556 /**
35557 * An object environment feature flags.
35558 *
35559 * @static
35560 * @memberOf _
35561 * @type Object
35562 */
35563 var support = {};
35564
35565 (function(x) {
35566 var Ctor = function() { this.x = x; },
35567 object = { '0': x, 'length': x },
35568 props = [];
35569
35570 Ctor.prototype = { 'valueOf': x, 'y': x };
35571 for (var key in new Ctor) { props.push(key); }
35572
35573 /**
35574 * Detect if `name` or `message` properties of `Error.prototype` are
35575 * enumerable by default (IE < 9, Safari < 5.1).
35576 *
35577 * @memberOf _.support
35578 * @type boolean
35579 */
35580 support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||
35581 propertyIsEnumerable.call(errorProto, 'name');
35582
35583 /**
35584 * Detect if `prototype` properties are enumerable by default.
35585 *
35586 * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1
35587 * (if the prototype or a property on the prototype has been set)
35588 * incorrectly set the `[[Enumerable]]` value of a function's `prototype`
35589 * property to `true`.
35590 *
35591 * @memberOf _.support
35592 * @type boolean
35593 */
35594 support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');
35595
35596 /**
35597 * Detect if properties shadowing those on `Object.prototype` are non-enumerable.
35598 *
35599 * In IE < 9 an object's own properties, shadowing non-enumerable ones,
35600 * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).
35601 *
35602 * @memberOf _.support
35603 * @type boolean
35604 */
35605 support.nonEnumShadows = !/valueOf/.test(props);
35606
35607 /**
35608 * Detect if own properties are iterated after inherited properties (IE < 9).
35609 *
35610 * @memberOf _.support
35611 * @type boolean
35612 */
35613 support.ownLast = props[0] != 'x';
35614
35615 /**
35616 * Detect if `Array#shift` and `Array#splice` augment array-like objects
35617 * correctly.
35618 *
35619 * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array
35620 * `shift()` and `splice()` functions that fail to remove the last element,
35621 * `value[0]`, of array-like objects even though the "length" property is
35622 * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,
35623 * while `splice()` is buggy regardless of mode in IE < 9.
35624 *
35625 * @memberOf _.support
35626 * @type boolean
35627 */
35628 support.spliceObjects = (splice.call(object, 0, 1), !object[0]);
35629
35630 /**
35631 * Detect lack of support for accessing string characters by index.
35632 *
35633 * IE < 8 can't access characters by index. IE 8 can only access characters
35634 * by index on string literals, not string objects.
35635 *
35636 * @memberOf _.support
35637 * @type boolean
35638 */
35639 support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';
35640 }(1, 0));
35641
35642 module.exports = support;
35643
35644
35645/***/ },
35646/* 430 */
35647/***/ function(module, exports, __webpack_require__) {
35648
35649 var getNative = __webpack_require__(431),
35650 isArrayLike = __webpack_require__(435),
35651 isObject = __webpack_require__(426),
35652 shimKeys = __webpack_require__(439),
35653 support = __webpack_require__(429);
35654
35655 /* Native method references for those with the same name as other `lodash` methods. */
35656 var nativeKeys = getNative(Object, 'keys');
35657
35658 /**
35659 * Creates an array of the own enumerable property names of `object`.
35660 *
35661 * **Note:** Non-object values are coerced to objects. See the
35662 * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
35663 * for more details.
35664 *
35665 * @static
35666 * @memberOf _
35667 * @category Object
35668 * @param {Object} object The object to query.
35669 * @returns {Array} Returns the array of property names.
35670 * @example
35671 *
35672 * function Foo() {
35673 * this.a = 1;
35674 * this.b = 2;
35675 * }
35676 *
35677 * Foo.prototype.c = 3;
35678 *
35679 * _.keys(new Foo);
35680 * // => ['a', 'b'] (iteration order is not guaranteed)
35681 *
35682 * _.keys('hi');
35683 * // => ['0', '1']
35684 */
35685 var keys = !nativeKeys ? shimKeys : function(object) {
35686 var Ctor = object == null ? undefined : object.constructor;
35687 if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
35688 (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {
35689 return shimKeys(object);
35690 }
35691 return isObject(object) ? nativeKeys(object) : [];
35692 };
35693
35694 module.exports = keys;
35695
35696
35697/***/ },
35698/* 431 */
35699/***/ function(module, exports, __webpack_require__) {
35700
35701 var isNative = __webpack_require__(432);
35702
35703 /**
35704 * Gets the native function at `key` of `object`.
35705 *
35706 * @private
35707 * @param {Object} object The object to query.
35708 * @param {string} key The key of the method to get.
35709 * @returns {*} Returns the function if it's native, else `undefined`.
35710 */
35711 function getNative(object, key) {
35712 var value = object == null ? undefined : object[key];
35713 return isNative(value) ? value : undefined;
35714 }
35715
35716 module.exports = getNative;
35717
35718
35719/***/ },
35720/* 432 */
35721/***/ function(module, exports, __webpack_require__) {
35722
35723 var isFunction = __webpack_require__(433),
35724 isHostObject = __webpack_require__(434),
35725 isObjectLike = __webpack_require__(428);
35726
35727 /** Used to detect host constructors (Safari > 5). */
35728 var reIsHostCtor = /^\[object .+?Constructor\]$/;
35729
35730 /** Used for native method references. */
35731 var objectProto = Object.prototype;
35732
35733 /** Used to resolve the decompiled source of functions. */
35734 var fnToString = Function.prototype.toString;
35735
35736 /** Used to check objects for own properties. */
35737 var hasOwnProperty = objectProto.hasOwnProperty;
35738
35739 /** Used to detect if a method is native. */
35740 var reIsNative = RegExp('^' +
35741 fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
35742 .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
35743 );
35744
35745 /**
35746 * Checks if `value` is a native function.
35747 *
35748 * @static
35749 * @memberOf _
35750 * @category Lang
35751 * @param {*} value The value to check.
35752 * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
35753 * @example
35754 *
35755 * _.isNative(Array.prototype.push);
35756 * // => true
35757 *
35758 * _.isNative(_);
35759 * // => false
35760 */
35761 function isNative(value) {
35762 if (value == null) {
35763 return false;
35764 }
35765 if (isFunction(value)) {
35766 return reIsNative.test(fnToString.call(value));
35767 }
35768 return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);
35769 }
35770
35771 module.exports = isNative;
35772
35773
35774/***/ },
35775/* 433 */
35776/***/ function(module, exports, __webpack_require__) {
35777
35778 var isObject = __webpack_require__(426);
35779
35780 /** `Object#toString` result references. */
35781 var funcTag = '[object Function]';
35782
35783 /** Used for native method references. */
35784 var objectProto = Object.prototype;
35785
35786 /**
35787 * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
35788 * of values.
35789 */
35790 var objToString = objectProto.toString;
35791
35792 /**
35793 * Checks if `value` is classified as a `Function` object.
35794 *
35795 * @static
35796 * @memberOf _
35797 * @category Lang
35798 * @param {*} value The value to check.
35799 * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
35800 * @example
35801 *
35802 * _.isFunction(_);
35803 * // => true
35804 *
35805 * _.isFunction(/abc/);
35806 * // => false
35807 */
35808 function isFunction(value) {
35809 // The use of `Object#toString` avoids issues with the `typeof` operator
35810 // in older versions of Chrome and Safari which return 'function' for regexes
35811 // and Safari 8 which returns 'object' for typed array constructors.
35812 return isObject(value) && objToString.call(value) == funcTag;
35813 }
35814
35815 module.exports = isFunction;
35816
35817
35818/***/ },
35819/* 434 */
35820/***/ function(module, exports) {
35821
35822 /**
35823 * Checks if `value` is a host object in IE < 9.
35824 *
35825 * @private
35826 * @param {*} value The value to check.
35827 * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
35828 */
35829 var isHostObject = (function() {
35830 try {
35831 Object({ 'toString': 0 } + '');
35832 } catch(e) {
35833 return function() { return false; };
35834 }
35835 return function(value) {
35836 // IE < 9 presents many host objects as `Object` objects that can coerce
35837 // to strings despite having improperly defined `toString` methods.
35838 return typeof value.toString != 'function' && typeof (value + '') == 'string';
35839 };
35840 }());
35841
35842 module.exports = isHostObject;
35843
35844
35845/***/ },
35846/* 435 */
35847/***/ function(module, exports, __webpack_require__) {
35848
35849 var getLength = __webpack_require__(436),
35850 isLength = __webpack_require__(438);
35851
35852 /**
35853 * Checks if `value` is array-like.
35854 *
35855 * @private
35856 * @param {*} value The value to check.
35857 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
35858 */
35859 function isArrayLike(value) {
35860 return value != null && isLength(getLength(value));
35861 }
35862
35863 module.exports = isArrayLike;
35864
35865
35866/***/ },
35867/* 436 */
35868/***/ function(module, exports, __webpack_require__) {
35869
35870 var baseProperty = __webpack_require__(437);
35871
35872 /**
35873 * Gets the "length" property value of `object`.
35874 *
35875 * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
35876 * that affects Safari on at least iOS 8.1-8.3 ARM64.
35877 *
35878 * @private
35879 * @param {Object} object The object to query.
35880 * @returns {*} Returns the "length" value.
35881 */
35882 var getLength = baseProperty('length');
35883
35884 module.exports = getLength;
35885
35886
35887/***/ },
35888/* 437 */
35889/***/ function(module, exports, __webpack_require__) {
35890
35891 var toObject = __webpack_require__(425);
35892
35893 /**
35894 * The base implementation of `_.property` without support for deep paths.
35895 *
35896 * @private
35897 * @param {string} key The key of the property to get.
35898 * @returns {Function} Returns the new function.
35899 */
35900 function baseProperty(key) {
35901 return function(object) {
35902 return object == null ? undefined : toObject(object)[key];
35903 };
35904 }
35905
35906 module.exports = baseProperty;
35907
35908
35909/***/ },
35910/* 438 */
35911/***/ function(module, exports) {
35912
35913 /**
35914 * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
35915 * of an array-like value.
35916 */
35917 var MAX_SAFE_INTEGER = 9007199254740991;
35918
35919 /**
35920 * Checks if `value` is a valid array-like length.
35921 *
35922 * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
35923 *
35924 * @private
35925 * @param {*} value The value to check.
35926 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
35927 */
35928 function isLength(value) {
35929 return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
35930 }
35931
35932 module.exports = isLength;
35933
35934
35935/***/ },
35936/* 439 */
35937/***/ function(module, exports, __webpack_require__) {
35938
35939 var isArguments = __webpack_require__(440),
35940 isArray = __webpack_require__(441),
35941 isIndex = __webpack_require__(442),
35942 isLength = __webpack_require__(438),
35943 isString = __webpack_require__(427),
35944 keysIn = __webpack_require__(443);
35945
35946 /** Used for native method references. */
35947 var objectProto = Object.prototype;
35948
35949 /** Used to check objects for own properties. */
35950 var hasOwnProperty = objectProto.hasOwnProperty;
35951
35952 /**
35953 * A fallback implementation of `Object.keys` which creates an array of the
35954 * own enumerable property names of `object`.
35955 *
35956 * @private
35957 * @param {Object} object The object to query.
35958 * @returns {Array} Returns the array of property names.
35959 */
35960 function shimKeys(object) {
35961 var props = keysIn(object),
35962 propsLength = props.length,
35963 length = propsLength && object.length;
35964
35965 var allowIndexes = !!length && isLength(length) &&
35966 (isArray(object) || isArguments(object) || isString(object));
35967
35968 var index = -1,
35969 result = [];
35970
35971 while (++index < propsLength) {
35972 var key = props[index];
35973 if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
35974 result.push(key);
35975 }
35976 }
35977 return result;
35978 }
35979
35980 module.exports = shimKeys;
35981
35982
35983/***/ },
35984/* 440 */
35985/***/ function(module, exports, __webpack_require__) {
35986
35987 var isArrayLike = __webpack_require__(435),
35988 isObjectLike = __webpack_require__(428);
35989
35990 /** Used for native method references. */
35991 var objectProto = Object.prototype;
35992
35993 /** Used to check objects for own properties. */
35994 var hasOwnProperty = objectProto.hasOwnProperty;
35995
35996 /** Native method references. */
35997 var propertyIsEnumerable = objectProto.propertyIsEnumerable;
35998
35999 /**
36000 * Checks if `value` is classified as an `arguments` object.
36001 *
36002 * @static
36003 * @memberOf _
36004 * @category Lang
36005 * @param {*} value The value to check.
36006 * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
36007 * @example
36008 *
36009 * _.isArguments(function() { return arguments; }());
36010 * // => true
36011 *
36012 * _.isArguments([1, 2, 3]);
36013 * // => false
36014 */
36015 function isArguments(value) {
36016 return isObjectLike(value) && isArrayLike(value) &&
36017 hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
36018 }
36019
36020 module.exports = isArguments;
36021
36022
36023/***/ },
36024/* 441 */
36025/***/ function(module, exports, __webpack_require__) {
36026
36027 var getNative = __webpack_require__(431),
36028 isLength = __webpack_require__(438),
36029 isObjectLike = __webpack_require__(428);
36030
36031 /** `Object#toString` result references. */
36032 var arrayTag = '[object Array]';
36033
36034 /** Used for native method references. */
36035 var objectProto = Object.prototype;
36036
36037 /**
36038 * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
36039 * of values.
36040 */
36041 var objToString = objectProto.toString;
36042
36043 /* Native method references for those with the same name as other `lodash` methods. */
36044 var nativeIsArray = getNative(Array, 'isArray');
36045
36046 /**
36047 * Checks if `value` is classified as an `Array` object.
36048 *
36049 * @static
36050 * @memberOf _
36051 * @category Lang
36052 * @param {*} value The value to check.
36053 * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
36054 * @example
36055 *
36056 * _.isArray([1, 2, 3]);
36057 * // => true
36058 *
36059 * _.isArray(function() { return arguments; }());
36060 * // => false
36061 */
36062 var isArray = nativeIsArray || function(value) {
36063 return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
36064 };
36065
36066 module.exports = isArray;
36067
36068
36069/***/ },
36070/* 442 */
36071/***/ function(module, exports) {
36072
36073 /** Used to detect unsigned integer values. */
36074 var reIsUint = /^\d+$/;
36075
36076 /**
36077 * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
36078 * of an array-like value.
36079 */
36080 var MAX_SAFE_INTEGER = 9007199254740991;
36081
36082 /**
36083 * Checks if `value` is a valid array-like index.
36084 *
36085 * @private
36086 * @param {*} value The value to check.
36087 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
36088 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
36089 */
36090 function isIndex(value, length) {
36091 value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
36092 length = length == null ? MAX_SAFE_INTEGER : length;
36093 return value > -1 && value % 1 == 0 && value < length;
36094 }
36095
36096 module.exports = isIndex;
36097
36098
36099/***/ },
36100/* 443 */
36101/***/ function(module, exports, __webpack_require__) {
36102
36103 var arrayEach = __webpack_require__(444),
36104 isArguments = __webpack_require__(440),
36105 isArray = __webpack_require__(441),
36106 isFunction = __webpack_require__(433),
36107 isIndex = __webpack_require__(442),
36108 isLength = __webpack_require__(438),
36109 isObject = __webpack_require__(426),
36110 isString = __webpack_require__(427),
36111 support = __webpack_require__(429);
36112
36113 /** `Object#toString` result references. */
36114 var arrayTag = '[object Array]',
36115 boolTag = '[object Boolean]',
36116 dateTag = '[object Date]',
36117 errorTag = '[object Error]',
36118 funcTag = '[object Function]',
36119 numberTag = '[object Number]',
36120 objectTag = '[object Object]',
36121 regexpTag = '[object RegExp]',
36122 stringTag = '[object String]';
36123
36124 /** Used to fix the JScript `[[DontEnum]]` bug. */
36125 var shadowProps = [
36126 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',
36127 'toLocaleString', 'toString', 'valueOf'
36128 ];
36129
36130 /** Used for native method references. */
36131 var errorProto = Error.prototype,
36132 objectProto = Object.prototype,
36133 stringProto = String.prototype;
36134
36135 /** Used to check objects for own properties. */
36136 var hasOwnProperty = objectProto.hasOwnProperty;
36137
36138 /**
36139 * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
36140 * of values.
36141 */
36142 var objToString = objectProto.toString;
36143
36144 /** Used to avoid iterating over non-enumerable properties in IE < 9. */
36145 var nonEnumProps = {};
36146 nonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };
36147 nonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };
36148 nonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };
36149 nonEnumProps[objectTag] = { 'constructor': true };
36150
36151 arrayEach(shadowProps, function(key) {
36152 for (var tag in nonEnumProps) {
36153 if (hasOwnProperty.call(nonEnumProps, tag)) {
36154 var props = nonEnumProps[tag];
36155 props[key] = hasOwnProperty.call(props, key);
36156 }
36157 }
36158 });
36159
36160 /**
36161 * Creates an array of the own and inherited enumerable property names of `object`.
36162 *
36163 * **Note:** Non-object values are coerced to objects.
36164 *
36165 * @static
36166 * @memberOf _
36167 * @category Object
36168 * @param {Object} object The object to query.
36169 * @returns {Array} Returns the array of property names.
36170 * @example
36171 *
36172 * function Foo() {
36173 * this.a = 1;
36174 * this.b = 2;
36175 * }
36176 *
36177 * Foo.prototype.c = 3;
36178 *
36179 * _.keysIn(new Foo);
36180 * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
36181 */
36182 function keysIn(object) {
36183 if (object == null) {
36184 return [];
36185 }
36186 if (!isObject(object)) {
36187 object = Object(object);
36188 }
36189 var length = object.length;
36190
36191 length = (length && isLength(length) &&
36192 (isArray(object) || isArguments(object) || isString(object)) && length) || 0;
36193
36194 var Ctor = object.constructor,
36195 index = -1,
36196 proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,
36197 isProto = proto === object,
36198 result = Array(length),
36199 skipIndexes = length > 0,
36200 skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),
36201 skipProto = support.enumPrototypes && isFunction(object);
36202
36203 while (++index < length) {
36204 result[index] = (index + '');
36205 }
36206 // lodash skips the `constructor` property when it infers it's iterating
36207 // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`
36208 // attribute of an existing property and the `constructor` property of a
36209 // prototype defaults to non-enumerable.
36210 for (var key in object) {
36211 if (!(skipProto && key == 'prototype') &&
36212 !(skipErrorProps && (key == 'message' || key == 'name')) &&
36213 !(skipIndexes && isIndex(key, length)) &&
36214 !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
36215 result.push(key);
36216 }
36217 }
36218 if (support.nonEnumShadows && object !== objectProto) {
36219 var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),
36220 nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];
36221
36222 if (tag == objectTag) {
36223 proto = objectProto;
36224 }
36225 length = shadowProps.length;
36226 while (length--) {
36227 key = shadowProps[length];
36228 var nonEnum = nonEnums[key];
36229 if (!(isProto && nonEnum) &&
36230 (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {
36231 result.push(key);
36232 }
36233 }
36234 }
36235 return result;
36236 }
36237
36238 module.exports = keysIn;
36239
36240
36241/***/ },
36242/* 444 */
36243/***/ function(module, exports) {
36244
36245 /**
36246 * A specialized version of `_.forEach` for arrays without support for callback
36247 * shorthands and `this` binding.
36248 *
36249 * @private
36250 * @param {Array} array The array to iterate over.
36251 * @param {Function} iteratee The function invoked per iteration.
36252 * @returns {Array} Returns `array`.
36253 */
36254 function arrayEach(array, iteratee) {
36255 var index = -1,
36256 length = array.length;
36257
36258 while (++index < length) {
36259 if (iteratee(array[index], index, array) === false) {
36260 break;
36261 }
36262 }
36263 return array;
36264 }
36265
36266 module.exports = arrayEach;
36267
36268
36269/***/ },
36270/* 445 */
36271/***/ function(module, exports, __webpack_require__) {
36272
36273 var getLength = __webpack_require__(436),
36274 isLength = __webpack_require__(438),
36275 toObject = __webpack_require__(425);
36276
36277 /**
36278 * Creates a `baseEach` or `baseEachRight` function.
36279 *
36280 * @private
36281 * @param {Function} eachFunc The function to iterate over a collection.
36282 * @param {boolean} [fromRight] Specify iterating from right to left.
36283 * @returns {Function} Returns the new base function.
36284 */
36285 function createBaseEach(eachFunc, fromRight) {
36286 return function(collection, iteratee) {
36287 var length = collection ? getLength(collection) : 0;
36288 if (!isLength(length)) {
36289 return eachFunc(collection, iteratee);
36290 }
36291 var index = fromRight ? length : -1,
36292 iterable = toObject(collection);
36293
36294 while ((fromRight ? index-- : ++index < length)) {
36295 if (iteratee(iterable[index], index, iterable) === false) {
36296 break;
36297 }
36298 }
36299 return collection;
36300 };
36301 }
36302
36303 module.exports = createBaseEach;
36304
36305
36306/***/ },
36307/* 446 */
36308/***/ function(module, exports, __webpack_require__) {
36309
36310 var baseCallback = __webpack_require__(447),
36311 baseFind = __webpack_require__(471),
36312 baseFindIndex = __webpack_require__(472),
36313 isArray = __webpack_require__(441);
36314
36315 /**
36316 * Creates a `_.find` or `_.findLast` function.
36317 *
36318 * @private
36319 * @param {Function} eachFunc The function to iterate over a collection.
36320 * @param {boolean} [fromRight] Specify iterating from right to left.
36321 * @returns {Function} Returns the new find function.
36322 */
36323 function createFind(eachFunc, fromRight) {
36324 return function(collection, predicate, thisArg) {
36325 predicate = baseCallback(predicate, thisArg, 3);
36326 if (isArray(collection)) {
36327 var index = baseFindIndex(collection, predicate, fromRight);
36328 return index > -1 ? collection[index] : undefined;
36329 }
36330 return baseFind(collection, predicate, eachFunc);
36331 };
36332 }
36333
36334 module.exports = createFind;
36335
36336
36337/***/ },
36338/* 447 */
36339/***/ function(module, exports, __webpack_require__) {
36340
36341 var baseMatches = __webpack_require__(448),
36342 baseMatchesProperty = __webpack_require__(460),
36343 bindCallback = __webpack_require__(467),
36344 identity = __webpack_require__(468),
36345 property = __webpack_require__(469);
36346
36347 /**
36348 * The base implementation of `_.callback` which supports specifying the
36349 * number of arguments to provide to `func`.
36350 *
36351 * @private
36352 * @param {*} [func=_.identity] The value to convert to a callback.
36353 * @param {*} [thisArg] The `this` binding of `func`.
36354 * @param {number} [argCount] The number of arguments to provide to `func`.
36355 * @returns {Function} Returns the callback.
36356 */
36357 function baseCallback(func, thisArg, argCount) {
36358 var type = typeof func;
36359 if (type == 'function') {
36360 return thisArg === undefined
36361 ? func
36362 : bindCallback(func, thisArg, argCount);
36363 }
36364 if (func == null) {
36365 return identity;
36366 }
36367 if (type == 'object') {
36368 return baseMatches(func);
36369 }
36370 return thisArg === undefined
36371 ? property(func)
36372 : baseMatchesProperty(func, thisArg);
36373 }
36374
36375 module.exports = baseCallback;
36376
36377
36378/***/ },
36379/* 448 */
36380/***/ function(module, exports, __webpack_require__) {
36381
36382 var baseIsMatch = __webpack_require__(449),
36383 getMatchData = __webpack_require__(457),
36384 toObject = __webpack_require__(425);
36385
36386 /**
36387 * The base implementation of `_.matches` which does not clone `source`.
36388 *
36389 * @private
36390 * @param {Object} source The object of property values to match.
36391 * @returns {Function} Returns the new function.
36392 */
36393 function baseMatches(source) {
36394 var matchData = getMatchData(source);
36395 if (matchData.length == 1 && matchData[0][2]) {
36396 var key = matchData[0][0],
36397 value = matchData[0][1];
36398
36399 return function(object) {
36400 if (object == null) {
36401 return false;
36402 }
36403 object = toObject(object);
36404 return object[key] === value && (value !== undefined || (key in object));
36405 };
36406 }
36407 return function(object) {
36408 return baseIsMatch(object, matchData);
36409 };
36410 }
36411
36412 module.exports = baseMatches;
36413
36414
36415/***/ },
36416/* 449 */
36417/***/ function(module, exports, __webpack_require__) {
36418
36419 var baseIsEqual = __webpack_require__(450),
36420 toObject = __webpack_require__(425);
36421
36422 /**
36423 * The base implementation of `_.isMatch` without support for callback
36424 * shorthands and `this` binding.
36425 *
36426 * @private
36427 * @param {Object} object The object to inspect.
36428 * @param {Array} matchData The propery names, values, and compare flags to match.
36429 * @param {Function} [customizer] The function to customize comparing objects.
36430 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
36431 */
36432 function baseIsMatch(object, matchData, customizer) {
36433 var index = matchData.length,
36434 length = index,
36435 noCustomizer = !customizer;
36436
36437 if (object == null) {
36438 return !length;
36439 }
36440 object = toObject(object);
36441 while (index--) {
36442 var data = matchData[index];
36443 if ((noCustomizer && data[2])
36444 ? data[1] !== object[data[0]]
36445 : !(data[0] in object)
36446 ) {
36447 return false;
36448 }
36449 }
36450 while (++index < length) {
36451 data = matchData[index];
36452 var key = data[0],
36453 objValue = object[key],
36454 srcValue = data[1];
36455
36456 if (noCustomizer && data[2]) {
36457 if (objValue === undefined && !(key in object)) {
36458 return false;
36459 }
36460 } else {
36461 var result = customizer ? customizer(objValue, srcValue, key) : undefined;
36462 if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {
36463 return false;
36464 }
36465 }
36466 }
36467 return true;
36468 }
36469
36470 module.exports = baseIsMatch;
36471
36472
36473/***/ },
36474/* 450 */
36475/***/ function(module, exports, __webpack_require__) {
36476
36477 var baseIsEqualDeep = __webpack_require__(451),
36478 isObject = __webpack_require__(426),
36479 isObjectLike = __webpack_require__(428);
36480
36481 /**
36482 * The base implementation of `_.isEqual` without support for `this` binding
36483 * `customizer` functions.
36484 *
36485 * @private
36486 * @param {*} value The value to compare.
36487 * @param {*} other The other value to compare.
36488 * @param {Function} [customizer] The function to customize comparing values.
36489 * @param {boolean} [isLoose] Specify performing partial comparisons.
36490 * @param {Array} [stackA] Tracks traversed `value` objects.
36491 * @param {Array} [stackB] Tracks traversed `other` objects.
36492 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
36493 */
36494 function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
36495 if (value === other) {
36496 return true;
36497 }
36498 if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
36499 return value !== value && other !== other;
36500 }
36501 return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
36502 }
36503
36504 module.exports = baseIsEqual;
36505
36506
36507/***/ },
36508/* 451 */
36509/***/ function(module, exports, __webpack_require__) {
36510
36511 var equalArrays = __webpack_require__(452),
36512 equalByTag = __webpack_require__(454),
36513 equalObjects = __webpack_require__(455),
36514 isArray = __webpack_require__(441),
36515 isHostObject = __webpack_require__(434),
36516 isTypedArray = __webpack_require__(456);
36517
36518 /** `Object#toString` result references. */
36519 var argsTag = '[object Arguments]',
36520 arrayTag = '[object Array]',
36521 objectTag = '[object Object]';
36522
36523 /** Used for native method references. */
36524 var objectProto = Object.prototype;
36525
36526 /** Used to check objects for own properties. */
36527 var hasOwnProperty = objectProto.hasOwnProperty;
36528
36529 /**
36530 * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
36531 * of values.
36532 */
36533 var objToString = objectProto.toString;
36534
36535 /**
36536 * A specialized version of `baseIsEqual` for arrays and objects which performs
36537 * deep comparisons and tracks traversed objects enabling objects with circular
36538 * references to be compared.
36539 *
36540 * @private
36541 * @param {Object} object The object to compare.
36542 * @param {Object} other The other object to compare.
36543 * @param {Function} equalFunc The function to determine equivalents of values.
36544 * @param {Function} [customizer] The function to customize comparing objects.
36545 * @param {boolean} [isLoose] Specify performing partial comparisons.
36546 * @param {Array} [stackA=[]] Tracks traversed `value` objects.
36547 * @param {Array} [stackB=[]] Tracks traversed `other` objects.
36548 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
36549 */
36550 function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
36551 var objIsArr = isArray(object),
36552 othIsArr = isArray(other),
36553 objTag = arrayTag,
36554 othTag = arrayTag;
36555
36556 if (!objIsArr) {
36557 objTag = objToString.call(object);
36558 if (objTag == argsTag) {
36559 objTag = objectTag;
36560 } else if (objTag != objectTag) {
36561 objIsArr = isTypedArray(object);
36562 }
36563 }
36564 if (!othIsArr) {
36565 othTag = objToString.call(other);
36566 if (othTag == argsTag) {
36567 othTag = objectTag;
36568 } else if (othTag != objectTag) {
36569 othIsArr = isTypedArray(other);
36570 }
36571 }
36572 var objIsObj = objTag == objectTag && !isHostObject(object),
36573 othIsObj = othTag == objectTag && !isHostObject(other),
36574 isSameTag = objTag == othTag;
36575
36576 if (isSameTag && !(objIsArr || objIsObj)) {
36577 return equalByTag(object, other, objTag);
36578 }
36579 if (!isLoose) {
36580 var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
36581 othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
36582
36583 if (objIsWrapped || othIsWrapped) {
36584 return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
36585 }
36586 }
36587 if (!isSameTag) {
36588 return false;
36589 }
36590 // Assume cyclic values are equal.
36591 // For more information on detecting circular references see https://es5.github.io/#JO.
36592 stackA || (stackA = []);
36593 stackB || (stackB = []);
36594
36595 var length = stackA.length;
36596 while (length--) {
36597 if (stackA[length] == object) {
36598 return stackB[length] == other;
36599 }
36600 }
36601 // Add `object` and `other` to the stack of traversed objects.
36602 stackA.push(object);
36603 stackB.push(other);
36604
36605 var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);
36606
36607 stackA.pop();
36608 stackB.pop();
36609
36610 return result;
36611 }
36612
36613 module.exports = baseIsEqualDeep;
36614
36615
36616/***/ },
36617/* 452 */
36618/***/ function(module, exports, __webpack_require__) {
36619
36620 var arraySome = __webpack_require__(453);
36621
36622 /**
36623 * A specialized version of `baseIsEqualDeep` for arrays with support for
36624 * partial deep comparisons.
36625 *
36626 * @private
36627 * @param {Array} array The array to compare.
36628 * @param {Array} other The other array to compare.
36629 * @param {Function} equalFunc The function to determine equivalents of values.
36630 * @param {Function} [customizer] The function to customize comparing arrays.
36631 * @param {boolean} [isLoose] Specify performing partial comparisons.
36632 * @param {Array} [stackA] Tracks traversed `value` objects.
36633 * @param {Array} [stackB] Tracks traversed `other` objects.
36634 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
36635 */
36636 function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
36637 var index = -1,
36638 arrLength = array.length,
36639 othLength = other.length;
36640
36641 if (arrLength != othLength && !(isLoose && othLength > arrLength)) {
36642 return false;
36643 }
36644 // Ignore non-index properties.
36645 while (++index < arrLength) {
36646 var arrValue = array[index],
36647 othValue = other[index],
36648 result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;
36649
36650 if (result !== undefined) {
36651 if (result) {
36652 continue;
36653 }
36654 return false;
36655 }
36656 // Recursively compare arrays (susceptible to call stack limits).
36657 if (isLoose) {
36658 if (!arraySome(other, function(othValue) {
36659 return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
36660 })) {
36661 return false;
36662 }
36663 } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {
36664 return false;
36665 }
36666 }
36667 return true;
36668 }
36669
36670 module.exports = equalArrays;
36671
36672
36673/***/ },
36674/* 453 */
36675/***/ function(module, exports) {
36676
36677 /**
36678 * A specialized version of `_.some` for arrays without support for callback
36679 * shorthands and `this` binding.
36680 *
36681 * @private
36682 * @param {Array} array The array to iterate over.
36683 * @param {Function} predicate The function invoked per iteration.
36684 * @returns {boolean} Returns `true` if any element passes the predicate check,
36685 * else `false`.
36686 */
36687 function arraySome(array, predicate) {
36688 var index = -1,
36689 length = array.length;
36690
36691 while (++index < length) {
36692 if (predicate(array[index], index, array)) {
36693 return true;
36694 }
36695 }
36696 return false;
36697 }
36698
36699 module.exports = arraySome;
36700
36701
36702/***/ },
36703/* 454 */
36704/***/ function(module, exports) {
36705
36706 /** `Object#toString` result references. */
36707 var boolTag = '[object Boolean]',
36708 dateTag = '[object Date]',
36709 errorTag = '[object Error]',
36710 numberTag = '[object Number]',
36711 regexpTag = '[object RegExp]',
36712 stringTag = '[object String]';
36713
36714 /**
36715 * A specialized version of `baseIsEqualDeep` for comparing objects of
36716 * the same `toStringTag`.
36717 *
36718 * **Note:** This function only supports comparing values with tags of
36719 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
36720 *
36721 * @private
36722 * @param {Object} object The object to compare.
36723 * @param {Object} other The other object to compare.
36724 * @param {string} tag The `toStringTag` of the objects to compare.
36725 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
36726 */
36727 function equalByTag(object, other, tag) {
36728 switch (tag) {
36729 case boolTag:
36730 case dateTag:
36731 // Coerce dates and booleans to numbers, dates to milliseconds and booleans
36732 // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.
36733 return +object == +other;
36734
36735 case errorTag:
36736 return object.name == other.name && object.message == other.message;
36737
36738 case numberTag:
36739 // Treat `NaN` vs. `NaN` as equal.
36740 return (object != +object)
36741 ? other != +other
36742 : object == +other;
36743
36744 case regexpTag:
36745 case stringTag:
36746 // Coerce regexes to strings and treat strings primitives and string
36747 // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.
36748 return object == (other + '');
36749 }
36750 return false;
36751 }
36752
36753 module.exports = equalByTag;
36754
36755
36756/***/ },
36757/* 455 */
36758/***/ function(module, exports, __webpack_require__) {
36759
36760 var keys = __webpack_require__(430);
36761
36762 /** Used for native method references. */
36763 var objectProto = Object.prototype;
36764
36765 /** Used to check objects for own properties. */
36766 var hasOwnProperty = objectProto.hasOwnProperty;
36767
36768 /**
36769 * A specialized version of `baseIsEqualDeep` for objects with support for
36770 * partial deep comparisons.
36771 *
36772 * @private
36773 * @param {Object} object The object to compare.
36774 * @param {Object} other The other object to compare.
36775 * @param {Function} equalFunc The function to determine equivalents of values.
36776 * @param {Function} [customizer] The function to customize comparing values.
36777 * @param {boolean} [isLoose] Specify performing partial comparisons.
36778 * @param {Array} [stackA] Tracks traversed `value` objects.
36779 * @param {Array} [stackB] Tracks traversed `other` objects.
36780 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
36781 */
36782 function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
36783 var objProps = keys(object),
36784 objLength = objProps.length,
36785 othProps = keys(other),
36786 othLength = othProps.length;
36787
36788 if (objLength != othLength && !isLoose) {
36789 return false;
36790 }
36791 var index = objLength;
36792 while (index--) {
36793 var key = objProps[index];
36794 if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {
36795 return false;
36796 }
36797 }
36798 var skipCtor = isLoose;
36799 while (++index < objLength) {
36800 key = objProps[index];
36801 var objValue = object[key],
36802 othValue = other[key],
36803 result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;
36804
36805 // Recursively compare objects (susceptible to call stack limits).
36806 if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {
36807 return false;
36808 }
36809 skipCtor || (skipCtor = key == 'constructor');
36810 }
36811 if (!skipCtor) {
36812 var objCtor = object.constructor,
36813 othCtor = other.constructor;
36814
36815 // Non `Object` object instances with different constructors are not equal.
36816 if (objCtor != othCtor &&
36817 ('constructor' in object && 'constructor' in other) &&
36818 !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
36819 typeof othCtor == 'function' && othCtor instanceof othCtor)) {
36820 return false;
36821 }
36822 }
36823 return true;
36824 }
36825
36826 module.exports = equalObjects;
36827
36828
36829/***/ },
36830/* 456 */
36831/***/ function(module, exports, __webpack_require__) {
36832
36833 var isLength = __webpack_require__(438),
36834 isObjectLike = __webpack_require__(428);
36835
36836 /** `Object#toString` result references. */
36837 var argsTag = '[object Arguments]',
36838 arrayTag = '[object Array]',
36839 boolTag = '[object Boolean]',
36840 dateTag = '[object Date]',
36841 errorTag = '[object Error]',
36842 funcTag = '[object Function]',
36843 mapTag = '[object Map]',
36844 numberTag = '[object Number]',
36845 objectTag = '[object Object]',
36846 regexpTag = '[object RegExp]',
36847 setTag = '[object Set]',
36848 stringTag = '[object String]',
36849 weakMapTag = '[object WeakMap]';
36850
36851 var arrayBufferTag = '[object ArrayBuffer]',
36852 float32Tag = '[object Float32Array]',
36853 float64Tag = '[object Float64Array]',
36854 int8Tag = '[object Int8Array]',
36855 int16Tag = '[object Int16Array]',
36856 int32Tag = '[object Int32Array]',
36857 uint8Tag = '[object Uint8Array]',
36858 uint8ClampedTag = '[object Uint8ClampedArray]',
36859 uint16Tag = '[object Uint16Array]',
36860 uint32Tag = '[object Uint32Array]';
36861
36862 /** Used to identify `toStringTag` values of typed arrays. */
36863 var typedArrayTags = {};
36864 typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
36865 typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
36866 typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
36867 typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
36868 typedArrayTags[uint32Tag] = true;
36869 typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
36870 typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
36871 typedArrayTags[dateTag] = typedArrayTags[errorTag] =
36872 typedArrayTags[funcTag] = typedArrayTags[mapTag] =
36873 typedArrayTags[numberTag] = typedArrayTags[objectTag] =
36874 typedArrayTags[regexpTag] = typedArrayTags[setTag] =
36875 typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
36876
36877 /** Used for native method references. */
36878 var objectProto = Object.prototype;
36879
36880 /**
36881 * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
36882 * of values.
36883 */
36884 var objToString = objectProto.toString;
36885
36886 /**
36887 * Checks if `value` is classified as a typed array.
36888 *
36889 * @static
36890 * @memberOf _
36891 * @category Lang
36892 * @param {*} value The value to check.
36893 * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
36894 * @example
36895 *
36896 * _.isTypedArray(new Uint8Array);
36897 * // => true
36898 *
36899 * _.isTypedArray([]);
36900 * // => false
36901 */
36902 function isTypedArray(value) {
36903 return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];
36904 }
36905
36906 module.exports = isTypedArray;
36907
36908
36909/***/ },
36910/* 457 */
36911/***/ function(module, exports, __webpack_require__) {
36912
36913 var isStrictComparable = __webpack_require__(458),
36914 pairs = __webpack_require__(459);
36915
36916 /**
36917 * Gets the propery names, values, and compare flags of `object`.
36918 *
36919 * @private
36920 * @param {Object} object The object to query.
36921 * @returns {Array} Returns the match data of `object`.
36922 */
36923 function getMatchData(object) {
36924 var result = pairs(object),
36925 length = result.length;
36926
36927 while (length--) {
36928 result[length][2] = isStrictComparable(result[length][1]);
36929 }
36930 return result;
36931 }
36932
36933 module.exports = getMatchData;
36934
36935
36936/***/ },
36937/* 458 */
36938/***/ function(module, exports, __webpack_require__) {
36939
36940 var isObject = __webpack_require__(426);
36941
36942 /**
36943 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
36944 *
36945 * @private
36946 * @param {*} value The value to check.
36947 * @returns {boolean} Returns `true` if `value` if suitable for strict
36948 * equality comparisons, else `false`.
36949 */
36950 function isStrictComparable(value) {
36951 return value === value && !isObject(value);
36952 }
36953
36954 module.exports = isStrictComparable;
36955
36956
36957/***/ },
36958/* 459 */
36959/***/ function(module, exports, __webpack_require__) {
36960
36961 var keys = __webpack_require__(430),
36962 toObject = __webpack_require__(425);
36963
36964 /**
36965 * Creates a two dimensional array of the key-value pairs for `object`,
36966 * e.g. `[[key1, value1], [key2, value2]]`.
36967 *
36968 * @static
36969 * @memberOf _
36970 * @category Object
36971 * @param {Object} object The object to query.
36972 * @returns {Array} Returns the new array of key-value pairs.
36973 * @example
36974 *
36975 * _.pairs({ 'barney': 36, 'fred': 40 });
36976 * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)
36977 */
36978 function pairs(object) {
36979 object = toObject(object);
36980
36981 var index = -1,
36982 props = keys(object),
36983 length = props.length,
36984 result = Array(length);
36985
36986 while (++index < length) {
36987 var key = props[index];
36988 result[index] = [key, object[key]];
36989 }
36990 return result;
36991 }
36992
36993 module.exports = pairs;
36994
36995
36996/***/ },
36997/* 460 */
36998/***/ function(module, exports, __webpack_require__) {
36999
37000 var baseGet = __webpack_require__(461),
37001 baseIsEqual = __webpack_require__(450),
37002 baseSlice = __webpack_require__(462),
37003 isArray = __webpack_require__(441),
37004 isKey = __webpack_require__(463),
37005 isStrictComparable = __webpack_require__(458),
37006 last = __webpack_require__(464),
37007 toObject = __webpack_require__(425),
37008 toPath = __webpack_require__(465);
37009
37010 /**
37011 * The base implementation of `_.matchesProperty` which does not clone `srcValue`.
37012 *
37013 * @private
37014 * @param {string} path The path of the property to get.
37015 * @param {*} srcValue The value to compare.
37016 * @returns {Function} Returns the new function.
37017 */
37018 function baseMatchesProperty(path, srcValue) {
37019 var isArr = isArray(path),
37020 isCommon = isKey(path) && isStrictComparable(srcValue),
37021 pathKey = (path + '');
37022
37023 path = toPath(path);
37024 return function(object) {
37025 if (object == null) {
37026 return false;
37027 }
37028 var key = pathKey;
37029 object = toObject(object);
37030 if ((isArr || !isCommon) && !(key in object)) {
37031 object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
37032 if (object == null) {
37033 return false;
37034 }
37035 key = last(path);
37036 object = toObject(object);
37037 }
37038 return object[key] === srcValue
37039 ? (srcValue !== undefined || (key in object))
37040 : baseIsEqual(srcValue, object[key], undefined, true);
37041 };
37042 }
37043
37044 module.exports = baseMatchesProperty;
37045
37046
37047/***/ },
37048/* 461 */
37049/***/ function(module, exports, __webpack_require__) {
37050
37051 var toObject = __webpack_require__(425);
37052
37053 /**
37054 * The base implementation of `get` without support for string paths
37055 * and default values.
37056 *
37057 * @private
37058 * @param {Object} object The object to query.
37059 * @param {Array} path The path of the property to get.
37060 * @param {string} [pathKey] The key representation of path.
37061 * @returns {*} Returns the resolved value.
37062 */
37063 function baseGet(object, path, pathKey) {
37064 if (object == null) {
37065 return;
37066 }
37067 object = toObject(object);
37068 if (pathKey !== undefined && pathKey in object) {
37069 path = [pathKey];
37070 }
37071 var index = 0,
37072 length = path.length;
37073
37074 while (object != null && index < length) {
37075 object = toObject(object)[path[index++]];
37076 }
37077 return (index && index == length) ? object : undefined;
37078 }
37079
37080 module.exports = baseGet;
37081
37082
37083/***/ },
37084/* 462 */
37085/***/ function(module, exports) {
37086
37087 /**
37088 * The base implementation of `_.slice` without an iteratee call guard.
37089 *
37090 * @private
37091 * @param {Array} array The array to slice.
37092 * @param {number} [start=0] The start position.
37093 * @param {number} [end=array.length] The end position.
37094 * @returns {Array} Returns the slice of `array`.
37095 */
37096 function baseSlice(array, start, end) {
37097 var index = -1,
37098 length = array.length;
37099
37100 start = start == null ? 0 : (+start || 0);
37101 if (start < 0) {
37102 start = -start > length ? 0 : (length + start);
37103 }
37104 end = (end === undefined || end > length) ? length : (+end || 0);
37105 if (end < 0) {
37106 end += length;
37107 }
37108 length = start > end ? 0 : ((end - start) >>> 0);
37109 start >>>= 0;
37110
37111 var result = Array(length);
37112 while (++index < length) {
37113 result[index] = array[index + start];
37114 }
37115 return result;
37116 }
37117
37118 module.exports = baseSlice;
37119
37120
37121/***/ },
37122/* 463 */
37123/***/ function(module, exports, __webpack_require__) {
37124
37125 var isArray = __webpack_require__(441),
37126 toObject = __webpack_require__(425);
37127
37128 /** Used to match property names within property paths. */
37129 var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
37130 reIsPlainProp = /^\w*$/;
37131
37132 /**
37133 * Checks if `value` is a property name and not a property path.
37134 *
37135 * @private
37136 * @param {*} value The value to check.
37137 * @param {Object} [object] The object to query keys on.
37138 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
37139 */
37140 function isKey(value, object) {
37141 var type = typeof value;
37142 if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {
37143 return true;
37144 }
37145 if (isArray(value)) {
37146 return false;
37147 }
37148 var result = !reIsDeepProp.test(value);
37149 return result || (object != null && value in toObject(object));
37150 }
37151
37152 module.exports = isKey;
37153
37154
37155/***/ },
37156/* 464 */
37157/***/ function(module, exports) {
37158
37159 /**
37160 * Gets the last element of `array`.
37161 *
37162 * @static
37163 * @memberOf _
37164 * @category Array
37165 * @param {Array} array The array to query.
37166 * @returns {*} Returns the last element of `array`.
37167 * @example
37168 *
37169 * _.last([1, 2, 3]);
37170 * // => 3
37171 */
37172 function last(array) {
37173 var length = array ? array.length : 0;
37174 return length ? array[length - 1] : undefined;
37175 }
37176
37177 module.exports = last;
37178
37179
37180/***/ },
37181/* 465 */
37182/***/ function(module, exports, __webpack_require__) {
37183
37184 var baseToString = __webpack_require__(466),
37185 isArray = __webpack_require__(441);
37186
37187 /** Used to match property names within property paths. */
37188 var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
37189
37190 /** Used to match backslashes in property paths. */
37191 var reEscapeChar = /\\(\\)?/g;
37192
37193 /**
37194 * Converts `value` to property path array if it's not one.
37195 *
37196 * @private
37197 * @param {*} value The value to process.
37198 * @returns {Array} Returns the property path array.
37199 */
37200 function toPath(value) {
37201 if (isArray(value)) {
37202 return value;
37203 }
37204 var result = [];
37205 baseToString(value).replace(rePropName, function(match, number, quote, string) {
37206 result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
37207 });
37208 return result;
37209 }
37210
37211 module.exports = toPath;
37212
37213
37214/***/ },
37215/* 466 */
37216/***/ function(module, exports) {
37217
37218 /**
37219 * Converts `value` to a string if it's not one. An empty string is returned
37220 * for `null` or `undefined` values.
37221 *
37222 * @private
37223 * @param {*} value The value to process.
37224 * @returns {string} Returns the string.
37225 */
37226 function baseToString(value) {
37227 return value == null ? '' : (value + '');
37228 }
37229
37230 module.exports = baseToString;
37231
37232
37233/***/ },
37234/* 467 */
37235/***/ function(module, exports, __webpack_require__) {
37236
37237 var identity = __webpack_require__(468);
37238
37239 /**
37240 * A specialized version of `baseCallback` which only supports `this` binding
37241 * and specifying the number of arguments to provide to `func`.
37242 *
37243 * @private
37244 * @param {Function} func The function to bind.
37245 * @param {*} thisArg The `this` binding of `func`.
37246 * @param {number} [argCount] The number of arguments to provide to `func`.
37247 * @returns {Function} Returns the callback.
37248 */
37249 function bindCallback(func, thisArg, argCount) {
37250 if (typeof func != 'function') {
37251 return identity;
37252 }
37253 if (thisArg === undefined) {
37254 return func;
37255 }
37256 switch (argCount) {
37257 case 1: return function(value) {
37258 return func.call(thisArg, value);
37259 };
37260 case 3: return function(value, index, collection) {
37261 return func.call(thisArg, value, index, collection);
37262 };
37263 case 4: return function(accumulator, value, index, collection) {
37264 return func.call(thisArg, accumulator, value, index, collection);
37265 };
37266 case 5: return function(value, other, key, object, source) {
37267 return func.call(thisArg, value, other, key, object, source);
37268 };
37269 }
37270 return function() {
37271 return func.apply(thisArg, arguments);
37272 };
37273 }
37274
37275 module.exports = bindCallback;
37276
37277
37278/***/ },
37279/* 468 */
37280/***/ function(module, exports) {
37281
37282 /**
37283 * This method returns the first argument provided to it.
37284 *
37285 * @static
37286 * @memberOf _
37287 * @category Utility
37288 * @param {*} value Any value.
37289 * @returns {*} Returns `value`.
37290 * @example
37291 *
37292 * var object = { 'user': 'fred' };
37293 *
37294 * _.identity(object) === object;
37295 * // => true
37296 */
37297 function identity(value) {
37298 return value;
37299 }
37300
37301 module.exports = identity;
37302
37303
37304/***/ },
37305/* 469 */
37306/***/ function(module, exports, __webpack_require__) {
37307
37308 var baseProperty = __webpack_require__(437),
37309 basePropertyDeep = __webpack_require__(470),
37310 isKey = __webpack_require__(463);
37311
37312 /**
37313 * Creates a function that returns the property value at `path` on a
37314 * given object.
37315 *
37316 * @static
37317 * @memberOf _
37318 * @category Utility
37319 * @param {Array|string} path The path of the property to get.
37320 * @returns {Function} Returns the new function.
37321 * @example
37322 *
37323 * var objects = [
37324 * { 'a': { 'b': { 'c': 2 } } },
37325 * { 'a': { 'b': { 'c': 1 } } }
37326 * ];
37327 *
37328 * _.map(objects, _.property('a.b.c'));
37329 * // => [2, 1]
37330 *
37331 * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
37332 * // => [1, 2]
37333 */
37334 function property(path) {
37335 return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
37336 }
37337
37338 module.exports = property;
37339
37340
37341/***/ },
37342/* 470 */
37343/***/ function(module, exports, __webpack_require__) {
37344
37345 var baseGet = __webpack_require__(461),
37346 toPath = __webpack_require__(465);
37347
37348 /**
37349 * A specialized version of `baseProperty` which supports deep paths.
37350 *
37351 * @private
37352 * @param {Array|string} path The path of the property to get.
37353 * @returns {Function} Returns the new function.
37354 */
37355 function basePropertyDeep(path) {
37356 var pathKey = (path + '');
37357 path = toPath(path);
37358 return function(object) {
37359 return baseGet(object, path, pathKey);
37360 };
37361 }
37362
37363 module.exports = basePropertyDeep;
37364
37365
37366/***/ },
37367/* 471 */
37368/***/ function(module, exports) {
37369
37370 /**
37371 * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
37372 * without support for callback shorthands and `this` binding, which iterates
37373 * over `collection` using the provided `eachFunc`.
37374 *
37375 * @private
37376 * @param {Array|Object|string} collection The collection to search.
37377 * @param {Function} predicate The function invoked per iteration.
37378 * @param {Function} eachFunc The function to iterate over `collection`.
37379 * @param {boolean} [retKey] Specify returning the key of the found element
37380 * instead of the element itself.
37381 * @returns {*} Returns the found element or its key, else `undefined`.
37382 */
37383 function baseFind(collection, predicate, eachFunc, retKey) {
37384 var result;
37385 eachFunc(collection, function(value, key, collection) {
37386 if (predicate(value, key, collection)) {
37387 result = retKey ? key : value;
37388 return false;
37389 }
37390 });
37391 return result;
37392 }
37393
37394 module.exports = baseFind;
37395
37396
37397/***/ },
37398/* 472 */
37399/***/ function(module, exports) {
37400
37401 /**
37402 * The base implementation of `_.findIndex` and `_.findLastIndex` without
37403 * support for callback shorthands and `this` binding.
37404 *
37405 * @private
37406 * @param {Array} array The array to search.
37407 * @param {Function} predicate The function invoked per iteration.
37408 * @param {boolean} [fromRight] Specify iterating from right to left.
37409 * @returns {number} Returns the index of the matched value, else `-1`.
37410 */
37411 function baseFindIndex(array, predicate, fromRight) {
37412 var length = array.length,
37413 index = fromRight ? length : -1;
37414
37415 while ((fromRight ? index-- : ++index < length)) {
37416 if (predicate(array[index], index, array)) {
37417 return index;
37418 }
37419 }
37420 return -1;
37421 }
37422
37423 module.exports = baseFindIndex;
37424
37425
37426/***/ },
37427/* 473 */
37428/***/ function(module, exports, __webpack_require__) {
37429
37430 var arrayMap = __webpack_require__(474),
37431 baseDifference = __webpack_require__(475),
37432 baseFlatten = __webpack_require__(482),
37433 bindCallback = __webpack_require__(467),
37434 keysIn = __webpack_require__(443),
37435 pickByArray = __webpack_require__(484),
37436 pickByCallback = __webpack_require__(485),
37437 restParam = __webpack_require__(487);
37438
37439 /**
37440 * The opposite of `_.pick`; this method creates an object composed of the
37441 * own and inherited enumerable properties of `object` that are not omitted.
37442 *
37443 * @static
37444 * @memberOf _
37445 * @category Object
37446 * @param {Object} object The source object.
37447 * @param {Function|...(string|string[])} [predicate] The function invoked per
37448 * iteration or property names to omit, specified as individual property
37449 * names or arrays of property names.
37450 * @param {*} [thisArg] The `this` binding of `predicate`.
37451 * @returns {Object} Returns the new object.
37452 * @example
37453 *
37454 * var object = { 'user': 'fred', 'age': 40 };
37455 *
37456 * _.omit(object, 'age');
37457 * // => { 'user': 'fred' }
37458 *
37459 * _.omit(object, _.isNumber);
37460 * // => { 'user': 'fred' }
37461 */
37462 var omit = restParam(function(object, props) {
37463 if (object == null) {
37464 return {};
37465 }
37466 if (typeof props[0] != 'function') {
37467 var props = arrayMap(baseFlatten(props), String);
37468 return pickByArray(object, baseDifference(keysIn(object), props));
37469 }
37470 var predicate = bindCallback(props[0], props[1], 3);
37471 return pickByCallback(object, function(value, key, object) {
37472 return !predicate(value, key, object);
37473 });
37474 });
37475
37476 module.exports = omit;
37477
37478
37479/***/ },
37480/* 474 */
37481/***/ function(module, exports) {
37482
37483 /**
37484 * A specialized version of `_.map` for arrays without support for callback
37485 * shorthands and `this` binding.
37486 *
37487 * @private
37488 * @param {Array} array The array to iterate over.
37489 * @param {Function} iteratee The function invoked per iteration.
37490 * @returns {Array} Returns the new mapped array.
37491 */
37492 function arrayMap(array, iteratee) {
37493 var index = -1,
37494 length = array.length,
37495 result = Array(length);
37496
37497 while (++index < length) {
37498 result[index] = iteratee(array[index], index, array);
37499 }
37500 return result;
37501 }
37502
37503 module.exports = arrayMap;
37504
37505
37506/***/ },
37507/* 475 */
37508/***/ function(module, exports, __webpack_require__) {
37509
37510 var baseIndexOf = __webpack_require__(476),
37511 cacheIndexOf = __webpack_require__(478),
37512 createCache = __webpack_require__(479);
37513
37514 /** Used as the size to enable large array optimizations. */
37515 var LARGE_ARRAY_SIZE = 200;
37516
37517 /**
37518 * The base implementation of `_.difference` which accepts a single array
37519 * of values to exclude.
37520 *
37521 * @private
37522 * @param {Array} array The array to inspect.
37523 * @param {Array} values The values to exclude.
37524 * @returns {Array} Returns the new array of filtered values.
37525 */
37526 function baseDifference(array, values) {
37527 var length = array ? array.length : 0,
37528 result = [];
37529
37530 if (!length) {
37531 return result;
37532 }
37533 var index = -1,
37534 indexOf = baseIndexOf,
37535 isCommon = true,
37536 cache = (isCommon && values.length >= LARGE_ARRAY_SIZE) ? createCache(values) : null,
37537 valuesLength = values.length;
37538
37539 if (cache) {
37540 indexOf = cacheIndexOf;
37541 isCommon = false;
37542 values = cache;
37543 }
37544 outer:
37545 while (++index < length) {
37546 var value = array[index];
37547
37548 if (isCommon && value === value) {
37549 var valuesIndex = valuesLength;
37550 while (valuesIndex--) {
37551 if (values[valuesIndex] === value) {
37552 continue outer;
37553 }
37554 }
37555 result.push(value);
37556 }
37557 else if (indexOf(values, value, 0) < 0) {
37558 result.push(value);
37559 }
37560 }
37561 return result;
37562 }
37563
37564 module.exports = baseDifference;
37565
37566
37567/***/ },
37568/* 476 */
37569/***/ function(module, exports, __webpack_require__) {
37570
37571 var indexOfNaN = __webpack_require__(477);
37572
37573 /**
37574 * The base implementation of `_.indexOf` without support for binary searches.
37575 *
37576 * @private
37577 * @param {Array} array The array to search.
37578 * @param {*} value The value to search for.
37579 * @param {number} fromIndex The index to search from.
37580 * @returns {number} Returns the index of the matched value, else `-1`.
37581 */
37582 function baseIndexOf(array, value, fromIndex) {
37583 if (value !== value) {
37584 return indexOfNaN(array, fromIndex);
37585 }
37586 var index = fromIndex - 1,
37587 length = array.length;
37588
37589 while (++index < length) {
37590 if (array[index] === value) {
37591 return index;
37592 }
37593 }
37594 return -1;
37595 }
37596
37597 module.exports = baseIndexOf;
37598
37599
37600/***/ },
37601/* 477 */
37602/***/ function(module, exports) {
37603
37604 /**
37605 * Gets the index at which the first occurrence of `NaN` is found in `array`.
37606 *
37607 * @private
37608 * @param {Array} array The array to search.
37609 * @param {number} fromIndex The index to search from.
37610 * @param {boolean} [fromRight] Specify iterating from right to left.
37611 * @returns {number} Returns the index of the matched `NaN`, else `-1`.
37612 */
37613 function indexOfNaN(array, fromIndex, fromRight) {
37614 var length = array.length,
37615 index = fromIndex + (fromRight ? 0 : -1);
37616
37617 while ((fromRight ? index-- : ++index < length)) {
37618 var other = array[index];
37619 if (other !== other) {
37620 return index;
37621 }
37622 }
37623 return -1;
37624 }
37625
37626 module.exports = indexOfNaN;
37627
37628
37629/***/ },
37630/* 478 */
37631/***/ function(module, exports, __webpack_require__) {
37632
37633 var isObject = __webpack_require__(426);
37634
37635 /**
37636 * Checks if `value` is in `cache` mimicking the return signature of
37637 * `_.indexOf` by returning `0` if the value is found, else `-1`.
37638 *
37639 * @private
37640 * @param {Object} cache The cache to search.
37641 * @param {*} value The value to search for.
37642 * @returns {number} Returns `0` if `value` is found, else `-1`.
37643 */
37644 function cacheIndexOf(cache, value) {
37645 var data = cache.data,
37646 result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
37647
37648 return result ? 0 : -1;
37649 }
37650
37651 module.exports = cacheIndexOf;
37652
37653
37654/***/ },
37655/* 479 */
37656/***/ function(module, exports, __webpack_require__) {
37657
37658 /* WEBPACK VAR INJECTION */(function(global) {var SetCache = __webpack_require__(480),
37659 getNative = __webpack_require__(431);
37660
37661 /** Native method references. */
37662 var Set = getNative(global, 'Set');
37663
37664 /* Native method references for those with the same name as other `lodash` methods. */
37665 var nativeCreate = getNative(Object, 'create');
37666
37667 /**
37668 * Creates a `Set` cache object to optimize linear searches of large arrays.
37669 *
37670 * @private
37671 * @param {Array} [values] The values to cache.
37672 * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
37673 */
37674 function createCache(values) {
37675 return (nativeCreate && Set) ? new SetCache(values) : null;
37676 }
37677
37678 module.exports = createCache;
37679
37680 /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
37681
37682/***/ },
37683/* 480 */
37684/***/ function(module, exports, __webpack_require__) {
37685
37686 /* WEBPACK VAR INJECTION */(function(global) {var cachePush = __webpack_require__(481),
37687 getNative = __webpack_require__(431);
37688
37689 /** Native method references. */
37690 var Set = getNative(global, 'Set');
37691
37692 /* Native method references for those with the same name as other `lodash` methods. */
37693 var nativeCreate = getNative(Object, 'create');
37694
37695 /**
37696 *
37697 * Creates a cache object to store unique values.
37698 *
37699 * @private
37700 * @param {Array} [values] The values to cache.
37701 */
37702 function SetCache(values) {
37703 var length = values ? values.length : 0;
37704
37705 this.data = { 'hash': nativeCreate(null), 'set': new Set };
37706 while (length--) {
37707 this.push(values[length]);
37708 }
37709 }
37710
37711 // Add functions to the `Set` cache.
37712 SetCache.prototype.push = cachePush;
37713
37714 module.exports = SetCache;
37715
37716 /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
37717
37718/***/ },
37719/* 481 */
37720/***/ function(module, exports, __webpack_require__) {
37721
37722 var isObject = __webpack_require__(426);
37723
37724 /**
37725 * Adds `value` to the cache.
37726 *
37727 * @private
37728 * @name push
37729 * @memberOf SetCache
37730 * @param {*} value The value to cache.
37731 */
37732 function cachePush(value) {
37733 var data = this.data;
37734 if (typeof value == 'string' || isObject(value)) {
37735 data.set.add(value);
37736 } else {
37737 data.hash[value] = true;
37738 }
37739 }
37740
37741 module.exports = cachePush;
37742
37743
37744/***/ },
37745/* 482 */
37746/***/ function(module, exports, __webpack_require__) {
37747
37748 var arrayPush = __webpack_require__(483),
37749 isArguments = __webpack_require__(440),
37750 isArray = __webpack_require__(441),
37751 isArrayLike = __webpack_require__(435),
37752 isObjectLike = __webpack_require__(428);
37753
37754 /**
37755 * The base implementation of `_.flatten` with added support for restricting
37756 * flattening and specifying the start index.
37757 *
37758 * @private
37759 * @param {Array} array The array to flatten.
37760 * @param {boolean} [isDeep] Specify a deep flatten.
37761 * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.
37762 * @param {Array} [result=[]] The initial result value.
37763 * @returns {Array} Returns the new flattened array.
37764 */
37765 function baseFlatten(array, isDeep, isStrict, result) {
37766 result || (result = []);
37767
37768 var index = -1,
37769 length = array.length;
37770
37771 while (++index < length) {
37772 var value = array[index];
37773 if (isObjectLike(value) && isArrayLike(value) &&
37774 (isStrict || isArray(value) || isArguments(value))) {
37775 if (isDeep) {
37776 // Recursively flatten arrays (susceptible to call stack limits).
37777 baseFlatten(value, isDeep, isStrict, result);
37778 } else {
37779 arrayPush(result, value);
37780 }
37781 } else if (!isStrict) {
37782 result[result.length] = value;
37783 }
37784 }
37785 return result;
37786 }
37787
37788 module.exports = baseFlatten;
37789
37790
37791/***/ },
37792/* 483 */
37793/***/ function(module, exports) {
37794
37795 /**
37796 * Appends the elements of `values` to `array`.
37797 *
37798 * @private
37799 * @param {Array} array The array to modify.
37800 * @param {Array} values The values to append.
37801 * @returns {Array} Returns `array`.
37802 */
37803 function arrayPush(array, values) {
37804 var index = -1,
37805 length = values.length,
37806 offset = array.length;
37807
37808 while (++index < length) {
37809 array[offset + index] = values[index];
37810 }
37811 return array;
37812 }
37813
37814 module.exports = arrayPush;
37815
37816
37817/***/ },
37818/* 484 */
37819/***/ function(module, exports, __webpack_require__) {
37820
37821 var toObject = __webpack_require__(425);
37822
37823 /**
37824 * A specialized version of `_.pick` which picks `object` properties specified
37825 * by `props`.
37826 *
37827 * @private
37828 * @param {Object} object The source object.
37829 * @param {string[]} props The property names to pick.
37830 * @returns {Object} Returns the new object.
37831 */
37832 function pickByArray(object, props) {
37833 object = toObject(object);
37834
37835 var index = -1,
37836 length = props.length,
37837 result = {};
37838
37839 while (++index < length) {
37840 var key = props[index];
37841 if (key in object) {
37842 result[key] = object[key];
37843 }
37844 }
37845 return result;
37846 }
37847
37848 module.exports = pickByArray;
37849
37850
37851/***/ },
37852/* 485 */
37853/***/ function(module, exports, __webpack_require__) {
37854
37855 var baseForIn = __webpack_require__(486);
37856
37857 /**
37858 * A specialized version of `_.pick` which picks `object` properties `predicate`
37859 * returns truthy for.
37860 *
37861 * @private
37862 * @param {Object} object The source object.
37863 * @param {Function} predicate The function invoked per iteration.
37864 * @returns {Object} Returns the new object.
37865 */
37866 function pickByCallback(object, predicate) {
37867 var result = {};
37868 baseForIn(object, function(value, key, object) {
37869 if (predicate(value, key, object)) {
37870 result[key] = value;
37871 }
37872 });
37873 return result;
37874 }
37875
37876 module.exports = pickByCallback;
37877
37878
37879/***/ },
37880/* 486 */
37881/***/ function(module, exports, __webpack_require__) {
37882
37883 var baseFor = __webpack_require__(423),
37884 keysIn = __webpack_require__(443);
37885
37886 /**
37887 * The base implementation of `_.forIn` without support for callback
37888 * shorthands and `this` binding.
37889 *
37890 * @private
37891 * @param {Object} object The object to iterate over.
37892 * @param {Function} iteratee The function invoked per iteration.
37893 * @returns {Object} Returns `object`.
37894 */
37895 function baseForIn(object, iteratee) {
37896 return baseFor(object, iteratee, keysIn);
37897 }
37898
37899 module.exports = baseForIn;
37900
37901
37902/***/ },
37903/* 487 */
37904/***/ function(module, exports) {
37905
37906 /** Used as the `TypeError` message for "Functions" methods. */
37907 var FUNC_ERROR_TEXT = 'Expected a function';
37908
37909 /* Native method references for those with the same name as other `lodash` methods. */
37910 var nativeMax = Math.max;
37911
37912 /**
37913 * Creates a function that invokes `func` with the `this` binding of the
37914 * created function and arguments from `start` and beyond provided as an array.
37915 *
37916 * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).
37917 *
37918 * @static
37919 * @memberOf _
37920 * @category Function
37921 * @param {Function} func The function to apply a rest parameter to.
37922 * @param {number} [start=func.length-1] The start position of the rest parameter.
37923 * @returns {Function} Returns the new function.
37924 * @example
37925 *
37926 * var say = _.restParam(function(what, names) {
37927 * return what + ' ' + _.initial(names).join(', ') +
37928 * (_.size(names) > 1 ? ', & ' : '') + _.last(names);
37929 * });
37930 *
37931 * say('hello', 'fred', 'barney', 'pebbles');
37932 * // => 'hello fred, barney, & pebbles'
37933 */
37934 function restParam(func, start) {
37935 if (typeof func != 'function') {
37936 throw new TypeError(FUNC_ERROR_TEXT);
37937 }
37938 start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
37939 return function() {
37940 var args = arguments,
37941 index = -1,
37942 length = nativeMax(args.length - start, 0),
37943 rest = Array(length);
37944
37945 while (++index < length) {
37946 rest[index] = args[start + index];
37947 }
37948 switch (start) {
37949 case 0: return func.call(this, rest);
37950 case 1: return func.call(this, args[0], rest);
37951 case 2: return func.call(this, args[0], args[1], rest);
37952 }
37953 var otherArgs = Array(start + 1);
37954 index = -1;
37955 while (++index < start) {
37956 otherArgs[index] = args[index];
37957 }
37958 otherArgs[start] = rest;
37959 return func.apply(this, otherArgs);
37960 };
37961 }
37962
37963 module.exports = restParam;
37964
37965
37966/***/ },
37967/* 488 */
37968/***/ function(module, exports) {
37969
37970 "use strict";
37971
37972 exports.__esModule = true;
37973 exports["default"] = isRequiredForA11y;
37974
37975 function isRequiredForA11y(propType) {
37976 return function validate(props, propName, componentName) {
37977 if (props[propName] == null) {
37978 return new Error("The prop '" + propName + "' is required to make '" + componentName + "' accessible" + " for users using assistive technologies such as screen readers");
37979 }
37980
37981 return propType(props, propName, componentName);
37982 };
37983 }
37984
37985 module.exports = exports["default"];
37986
37987/***/ },
37988/* 489 */
37989/***/ function(module, exports, __webpack_require__) {
37990
37991 'use strict';
37992
37993 exports.__esModule = true;
37994
37995 var _createUncontrollable = __webpack_require__(490);
37996
37997 var _createUncontrollable2 = _interopRequireDefault(_createUncontrollable);
37998
37999 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38000
38001 var mixin = {
38002 shouldComponentUpdate: function shouldComponentUpdate() {
38003 //let the forceUpdate trigger the update
38004 return !this._notifying;
38005 }
38006 };
38007
38008 function set(component, propName, handler, value, args) {
38009 if (handler) {
38010 component._notifying = true;
38011 handler.call.apply(handler, [component, value].concat(args));
38012 component._notifying = false;
38013 }
38014
38015 component._values[propName] = value;
38016
38017 if (component.isMounted()) component.forceUpdate();
38018 }
38019
38020 exports.default = (0, _createUncontrollable2.default)([mixin], set);
38021 module.exports = exports['default'];
38022
38023/***/ },
38024/* 490 */
38025/***/ function(module, exports, __webpack_require__) {
38026
38027 'use strict';
38028
38029 exports.__esModule = true;
38030
38031 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
38032
38033 exports.default = createUncontrollable;
38034
38035 var _react = __webpack_require__(89);
38036
38037 var _react2 = _interopRequireDefault(_react);
38038
38039 var _invariant = __webpack_require__(268);
38040
38041 var _invariant2 = _interopRequireDefault(_invariant);
38042
38043 var _utils = __webpack_require__(491);
38044
38045 var utils = _interopRequireWildcard(_utils);
38046
38047 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
38048
38049 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38050
38051 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
38052
38053 function createUncontrollable(mixins, set) {
38054
38055 return uncontrollable;
38056
38057 function uncontrollable(Component, controlledValues) {
38058 var methods = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
38059
38060 var displayName = Component.displayName || Component.name || 'Component',
38061 basePropTypes = utils.getType(Component).propTypes,
38062 isCompositeComponent = utils.isReactComponent(Component),
38063 propTypes;
38064
38065 propTypes = utils.uncontrolledPropTypes(controlledValues, basePropTypes, displayName);
38066
38067 (0, _invariant2.default)(isCompositeComponent || !methods.length, '[uncontrollable] stateless function components cannot pass through methods ' + 'becasue they have no associated instances. Check component: ' + displayName + ', ' + 'attempting to pass through methods: ' + methods.join(', '));
38068 methods = utils.transform(methods, function (obj, method) {
38069 obj[method] = function () {
38070 var _refs$inner;
38071
38072 return (_refs$inner = this.refs.inner)[method].apply(_refs$inner, arguments);
38073 };
38074 }, {});
38075
38076 var component = _react2.default.createClass(_extends({
38077
38078 displayName: 'Uncontrolled(' + displayName + ')',
38079
38080 mixins: mixins,
38081
38082 propTypes: propTypes
38083
38084 }, methods, {
38085 componentWillMount: function componentWillMount() {
38086 var props = this.props,
38087 keys = Object.keys(controlledValues);
38088
38089 this._values = utils.transform(keys, function (values, key) {
38090 values[key] = props[utils.defaultKey(key)];
38091 }, {});
38092 },
38093
38094
38095 /**
38096 * If a prop switches from controlled to Uncontrolled
38097 * reset its value to the defaultValue
38098 */
38099 componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
38100 var _this = this;
38101
38102 var props = this.props,
38103 keys = Object.keys(controlledValues);
38104
38105 keys.forEach(function (key) {
38106 if (utils.getValue(nextProps, key) === undefined && utils.getValue(props, key) !== undefined) {
38107 _this._values[key] = nextProps[utils.defaultKey(key)];
38108 }
38109 });
38110 },
38111 render: function render() {
38112 var _this2 = this;
38113
38114 var newProps = {};
38115 var _props = this.props;
38116 var valueLink = _props.valueLink;
38117 var checkedLink = _props.checkedLink;
38118
38119 var props = _objectWithoutProperties(_props, ['valueLink', 'checkedLink']);
38120
38121 utils.each(controlledValues, function (handle, propName) {
38122 var linkPropName = utils.getLinkName(propName),
38123 prop = _this2.props[propName];
38124
38125 if (linkPropName && !isProp(_this2.props, propName) && isProp(_this2.props, linkPropName)) {
38126 prop = _this2.props[linkPropName].value;
38127 }
38128
38129 newProps[propName] = prop !== undefined ? prop : _this2._values[propName];
38130
38131 newProps[handle] = setAndNotify.bind(_this2, propName);
38132 });
38133
38134 newProps = _extends({}, props, newProps, {
38135 ref: isCompositeComponent ? 'inner' : null
38136 });
38137
38138 return _react2.default.createElement(Component, newProps);
38139 }
38140 }));
38141
38142 component.ControlledComponent = Component;
38143
38144 /**
38145 * useful when wrapping a Component and you want to control
38146 * everything
38147 */
38148 component.deferControlTo = function (newComponent) {
38149 var additions = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
38150 var nextMethods = arguments[2];
38151
38152 return uncontrollable(newComponent, _extends({}, controlledValues, additions), nextMethods);
38153 };
38154
38155 return component;
38156
38157 function setAndNotify(propName, value) {
38158 var linkName = utils.getLinkName(propName),
38159 handler = this.props[controlledValues[propName]];
38160
38161 if (linkName && isProp(this.props, linkName) && !handler) {
38162 handler = this.props[linkName].requestChange;
38163 }
38164
38165 for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
38166 args[_key - 2] = arguments[_key];
38167 }
38168
38169 set(this, propName, handler, value, args);
38170 }
38171
38172 function isProp(props, prop) {
38173 return props[prop] !== undefined;
38174 }
38175 }
38176 }
38177 module.exports = exports['default'];
38178
38179/***/ },
38180/* 491 */
38181/***/ function(module, exports, __webpack_require__) {
38182
38183 'use strict';
38184
38185 exports.__esModule = true;
38186 exports.version = undefined;
38187 exports.customPropType = customPropType;
38188 exports.uncontrolledPropTypes = uncontrolledPropTypes;
38189 exports.getType = getType;
38190 exports.getValue = getValue;
38191 exports.getLinkName = getLinkName;
38192 exports.defaultKey = defaultKey;
38193 exports.chain = chain;
38194 exports.transform = transform;
38195 exports.each = each;
38196 exports.isReactComponent = isReactComponent;
38197 exports.has = has;
38198
38199 var _react = __webpack_require__(89);
38200
38201 var _react2 = _interopRequireDefault(_react);
38202
38203 var _invariant = __webpack_require__(268);
38204
38205 var _invariant2 = _interopRequireDefault(_invariant);
38206
38207 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38208
38209 function customPropType(handler, propType, name) {
38210
38211 return function (props, propName) {
38212
38213 if (props[propName] !== undefined) {
38214 if (!props[handler]) {
38215 return new Error('You have provided a `' + propName + '` prop to ' + '`' + name + '` without an `' + handler + '` handler. This will render a read-only field. ' + 'If the field should be mutable use `' + defaultKey(propName) + '`. Otherwise, set `' + handler + '`');
38216 }
38217
38218 return propType && propType(props, propName, name);
38219 }
38220 };
38221 }
38222
38223 function uncontrolledPropTypes(controlledValues, basePropTypes, displayName) {
38224 var propTypes = {};
38225
38226 if ((undefined) !== 'production' && basePropTypes) {
38227 transform(controlledValues, function (obj, handler, prop) {
38228 var type = basePropTypes[prop];
38229
38230 (0, _invariant2.default)(typeof handler === 'string' && handler.trim().length, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop);
38231
38232 obj[prop] = customPropType(handler, type, displayName);
38233
38234 if (type !== undefined) obj[defaultKey(prop)] = type;
38235 }, propTypes);
38236 }
38237
38238 return propTypes;
38239 }
38240
38241 var version = exports.version = _react2.default.version.split('.').map(parseFloat);
38242
38243 function getType(component) {
38244 if (version[0] >= 15 || version[0] === 0 && version[1] >= 13) return component;
38245
38246 return component.type;
38247 }
38248
38249 function getValue(props, name) {
38250 var linkPropName = getLinkName(name);
38251
38252 if (linkPropName && !isProp(props, name) && isProp(props, linkPropName)) return props[linkPropName].value;
38253
38254 return props[name];
38255 }
38256
38257 function isProp(props, prop) {
38258 return props[prop] !== undefined;
38259 }
38260
38261 function getLinkName(name) {
38262 return name === 'value' ? 'valueLink' : name === 'checked' ? 'checkedLink' : null;
38263 }
38264
38265 function defaultKey(key) {
38266 return 'default' + key.charAt(0).toUpperCase() + key.substr(1);
38267 }
38268
38269 function chain(thisArg, a, b) {
38270 return function chainedFunction() {
38271 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
38272 args[_key] = arguments[_key];
38273 }
38274
38275 a && a.call.apply(a, [thisArg].concat(args));
38276 b && b.call.apply(b, [thisArg].concat(args));
38277 };
38278 }
38279
38280 function transform(obj, cb, seed) {
38281 each(obj, cb.bind(null, seed = seed || (Array.isArray(obj) ? [] : {})));
38282 return seed;
38283 }
38284
38285 function each(obj, cb, thisArg) {
38286 if (Array.isArray(obj)) return obj.forEach(cb, thisArg);
38287
38288 for (var key in obj) {
38289 if (has(obj, key)) cb.call(thisArg, obj[key], key, obj);
38290 }
38291 }
38292
38293 /**
38294 * Copyright (c) 2013-present, Facebook, Inc.
38295 * All rights reserved.
38296 *
38297 * This source code is licensed under the BSD-style license found in the
38298 * LICENSE file in the root directory of this source tree. An additional grant
38299 * of patent rights can be found in the PATENTS file in the same directory.
38300 */
38301 function isReactComponent(component) {
38302 return !!(component && component.prototype && component.prototype.isReactComponent);
38303 }
38304
38305 function has(o, k) {
38306 return o ? Object.prototype.hasOwnProperty.call(o, k) : false;
38307 }
38308
38309/***/ },
38310/* 492 */
38311/***/ function(module, exports, __webpack_require__) {
38312
38313 'use strict';
38314
38315 var _interopRequireDefault = __webpack_require__(335)['default'];
38316
38317 exports.__esModule = true;
38318
38319 var _reactPropTypesLibCommon = __webpack_require__(381);
38320
38321 var _childrenToArray = __webpack_require__(493);
38322
38323 var _childrenToArray2 = _interopRequireDefault(_childrenToArray);
38324
38325 exports['default'] = {
38326
38327 requiredRoles: function requiredRoles() {
38328 for (var _len = arguments.length, roles = Array(_len), _key = 0; _key < _len; _key++) {
38329 roles[_key] = arguments[_key];
38330 }
38331
38332 return _reactPropTypesLibCommon.createChainableTypeChecker(function requiredRolesValidator(props, propName, component) {
38333 var missing = undefined;
38334 var children = _childrenToArray2['default'](props.children);
38335
38336 var inRole = function inRole(role, child) {
38337 return role === child.props.bsRole;
38338 };
38339
38340 roles.every(function (role) {
38341 if (!children.some(function (child) {
38342 return inRole(role, child);
38343 })) {
38344 missing = role;
38345 return false;
38346 }
38347 return true;
38348 });
38349
38350 if (missing) {
38351 return new Error('(children) ' + component + ' - Missing a required child with bsRole: ' + missing + '. ' + (component + ' must have at least one child of each of the following bsRoles: ' + roles.join(', ')));
38352 }
38353 });
38354 },
38355
38356 exclusiveRoles: function exclusiveRoles() {
38357 for (var _len2 = arguments.length, roles = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
38358 roles[_key2] = arguments[_key2];
38359 }
38360
38361 return _reactPropTypesLibCommon.createChainableTypeChecker(function exclusiveRolesValidator(props, propName, component) {
38362 var children = _childrenToArray2['default'](props.children);
38363 var duplicate = undefined;
38364
38365 roles.every(function (role) {
38366 var childrenWithRole = children.filter(function (child) {
38367 return child.props.bsRole === role;
38368 });
38369
38370 if (childrenWithRole.length > 1) {
38371 duplicate = role;
38372 return false;
38373 }
38374 return true;
38375 });
38376
38377 if (duplicate) {
38378 return new Error('(children) ' + component + ' - Duplicate children detected of bsRole: ' + duplicate + '. ' + ('Only one child each allowed with the following bsRoles: ' + roles.join(', ')));
38379 }
38380 });
38381 }
38382 };
38383 module.exports = exports['default'];
38384
38385/***/ },
38386/* 493 */
38387/***/ function(module, exports, __webpack_require__) {
38388
38389 'use strict';
38390
38391 var _interopRequireDefault = __webpack_require__(335)['default'];
38392
38393 exports.__esModule = true;
38394 exports['default'] = childrenAsArray;
38395
38396 var _ValidComponentChildren = __webpack_require__(365);
38397
38398 var _ValidComponentChildren2 = _interopRequireDefault(_ValidComponentChildren);
38399
38400 function childrenAsArray(children) {
38401 var result = [];
38402
38403 if (children === undefined) {
38404 return result;
38405 }
38406
38407 _ValidComponentChildren2['default'].forEach(children, function (child) {
38408 result.push(child);
38409 });
38410
38411 return result;
38412 }
38413
38414 module.exports = exports['default'];
38415
38416/***/ },
38417/* 494 */
38418/***/ function(module, exports, __webpack_require__) {
38419
38420 'use strict';
38421
38422 var _inherits = __webpack_require__(372)['default'];
38423
38424 var _classCallCheck = __webpack_require__(379)['default'];
38425
38426 var _objectWithoutProperties = __webpack_require__(355)['default'];
38427
38428 var _extends = __webpack_require__(338)['default'];
38429
38430 var _interopRequireDefault = __webpack_require__(335)['default'];
38431
38432 exports.__esModule = true;
38433
38434 var _classnames = __webpack_require__(356);
38435
38436 var _classnames2 = _interopRequireDefault(_classnames);
38437
38438 var _keycode = __webpack_require__(419);
38439
38440 var _keycode2 = _interopRequireDefault(_keycode);
38441
38442 var _react = __webpack_require__(89);
38443
38444 var _react2 = _interopRequireDefault(_react);
38445
38446 var _reactDom = __webpack_require__(122);
38447
38448 var _reactDom2 = _interopRequireDefault(_reactDom);
38449
38450 var _utilsBootstrapUtils = __webpack_require__(357);
38451
38452 var _utilsCreateChainedFunction = __webpack_require__(414);
38453
38454 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
38455
38456 var _utilsValidComponentChildren = __webpack_require__(365);
38457
38458 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
38459
38460 var _reactOverlaysLibRootCloseWrapper = __webpack_require__(495);
38461
38462 var _reactOverlaysLibRootCloseWrapper2 = _interopRequireDefault(_reactOverlaysLibRootCloseWrapper);
38463
38464 var DropdownMenu = (function (_React$Component) {
38465 _inherits(DropdownMenu, _React$Component);
38466
38467 function DropdownMenu(props) {
38468 _classCallCheck(this, DropdownMenu);
38469
38470 _React$Component.call(this, props);
38471
38472 this.focusNext = this.focusNext.bind(this);
38473 this.focusPrevious = this.focusPrevious.bind(this);
38474 this.getFocusableMenuItems = this.getFocusableMenuItems.bind(this);
38475 this.getItemsAndActiveIndex = this.getItemsAndActiveIndex.bind(this);
38476
38477 this.handleKeyDown = this.handleKeyDown.bind(this);
38478 }
38479
38480 DropdownMenu.prototype.handleKeyDown = function handleKeyDown(event) {
38481 switch (event.keyCode) {
38482 case _keycode2['default'].codes.down:
38483 this.focusNext();
38484 event.preventDefault();
38485 break;
38486 case _keycode2['default'].codes.up:
38487 this.focusPrevious();
38488 event.preventDefault();
38489 break;
38490 case _keycode2['default'].codes.esc:
38491 case _keycode2['default'].codes.tab:
38492 this.props.onClose(event);
38493 break;
38494 default:
38495 }
38496 };
38497
38498 DropdownMenu.prototype.focusNext = function focusNext() {
38499 var _getItemsAndActiveIndex = this.getItemsAndActiveIndex();
38500
38501 var items = _getItemsAndActiveIndex.items;
38502 var activeItemIndex = _getItemsAndActiveIndex.activeItemIndex;
38503
38504 if (items.length === 0) {
38505 return;
38506 }
38507
38508 if (activeItemIndex === items.length - 1) {
38509 items[0].focus();
38510 return;
38511 }
38512
38513 items[activeItemIndex + 1].focus();
38514 };
38515
38516 DropdownMenu.prototype.focusPrevious = function focusPrevious() {
38517 var _getItemsAndActiveIndex2 = this.getItemsAndActiveIndex();
38518
38519 var items = _getItemsAndActiveIndex2.items;
38520 var activeItemIndex = _getItemsAndActiveIndex2.activeItemIndex;
38521
38522 if (activeItemIndex === 0) {
38523 items[items.length - 1].focus();
38524 return;
38525 }
38526
38527 items[activeItemIndex - 1].focus();
38528 };
38529
38530 DropdownMenu.prototype.getItemsAndActiveIndex = function getItemsAndActiveIndex() {
38531 var items = this.getFocusableMenuItems();
38532 var activeElement = document.activeElement;
38533 var activeItemIndex = items.indexOf(activeElement);
38534
38535 return { items: items, activeItemIndex: activeItemIndex };
38536 };
38537
38538 DropdownMenu.prototype.getFocusableMenuItems = function getFocusableMenuItems() {
38539 var menuNode = _reactDom2['default'].findDOMNode(this);
38540
38541 if (menuNode === undefined) {
38542 return [];
38543 }
38544
38545 return [].slice.call(menuNode.querySelectorAll('[tabIndex="-1"]'), 0);
38546 };
38547
38548 DropdownMenu.prototype.render = function render() {
38549 var _classes,
38550 _this = this;
38551
38552 var _props = this.props;
38553 var children = _props.children;
38554 var onSelect = _props.onSelect;
38555 var pullRight = _props.pullRight;
38556 var className = _props.className;
38557 var labelledBy = _props.labelledBy;
38558 var open = _props.open;
38559 var onClose = _props.onClose;
38560
38561 var props = _objectWithoutProperties(_props, ['children', 'onSelect', 'pullRight', 'className', 'labelledBy', 'open', 'onClose']);
38562
38563 var items = _utilsValidComponentChildren2['default'].map(children, function (child) {
38564 var childProps = child.props || {};
38565
38566 return _react2['default'].cloneElement(child, {
38567 onKeyDown: _utilsCreateChainedFunction2['default'](childProps.onKeyDown, _this.handleKeyDown),
38568 onSelect: _utilsCreateChainedFunction2['default'](childProps.onSelect, onSelect)
38569 }, childProps.children);
38570 });
38571
38572 var classes = (_classes = {}, _classes[_utilsBootstrapUtils.prefix(this.props, 'menu')] = true, _classes[_utilsBootstrapUtils.prefix(this.props, 'menu-right')] = pullRight, _classes);
38573
38574 var list = _react2['default'].createElement(
38575 'ul',
38576 _extends({
38577 className: _classnames2['default'](className, classes),
38578 role: 'menu',
38579 'aria-labelledby': labelledBy
38580 }, props),
38581 items
38582 );
38583
38584 if (open) {
38585 list = _react2['default'].createElement(
38586 _reactOverlaysLibRootCloseWrapper2['default'],
38587 { noWrap: true, onRootClose: onClose },
38588 list
38589 );
38590 }
38591
38592 return list;
38593 };
38594
38595 return DropdownMenu;
38596 })(_react2['default'].Component);
38597
38598 DropdownMenu.defaultProps = {
38599 bsRole: 'menu',
38600 bsClass: 'dropdown',
38601 pullRight: false
38602 };
38603
38604 DropdownMenu.propTypes = {
38605 open: _react2['default'].PropTypes.bool,
38606 pullRight: _react2['default'].PropTypes.bool,
38607 onClose: _react2['default'].PropTypes.func,
38608 labelledBy: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number]),
38609 onSelect: _react2['default'].PropTypes.func
38610 };
38611
38612 exports['default'] = DropdownMenu;
38613 module.exports = exports['default'];
38614
38615/***/ },
38616/* 495 */
38617/***/ function(module, exports, __webpack_require__) {
38618
38619 'use strict';
38620
38621 Object.defineProperty(exports, "__esModule", {
38622 value: true
38623 });
38624
38625 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
38626
38627 var _contains = __webpack_require__(418);
38628
38629 var _contains2 = _interopRequireDefault(_contains);
38630
38631 var _react = __webpack_require__(89);
38632
38633 var _react2 = _interopRequireDefault(_react);
38634
38635 var _reactDom = __webpack_require__(122);
38636
38637 var _reactDom2 = _interopRequireDefault(_reactDom);
38638
38639 var _addEventListener = __webpack_require__(496);
38640
38641 var _addEventListener2 = _interopRequireDefault(_addEventListener);
38642
38643 var _ownerDocument = __webpack_require__(498);
38644
38645 var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
38646
38647 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38648
38649 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
38650
38651 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
38652
38653 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
38654
38655 function isLeftClickEvent(event) {
38656 return event.button === 0;
38657 }
38658
38659 function isModifiedEvent(event) {
38660 return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
38661 }
38662
38663 var RootCloseWrapper = function (_React$Component) {
38664 _inherits(RootCloseWrapper, _React$Component);
38665
38666 function RootCloseWrapper(props, context) {
38667 _classCallCheck(this, RootCloseWrapper);
38668
38669 var _this = _possibleConstructorReturn(this, (RootCloseWrapper.__proto__ || Object.getPrototypeOf(RootCloseWrapper)).call(this, props, context));
38670
38671 _this.handleMouseCapture = function (e) {
38672 _this.preventMouseRootClose = isModifiedEvent(e) || !isLeftClickEvent(e) || (0, _contains2.default)(_reactDom2.default.findDOMNode(_this), e.target);
38673 };
38674
38675 _this.handleMouse = function () {
38676 if (!_this.preventMouseRootClose && _this.props.onRootClose) {
38677 _this.props.onRootClose();
38678 }
38679 };
38680
38681 _this.handleKeyUp = function (e) {
38682 if (e.keyCode === 27 && _this.props.onRootClose) {
38683 _this.props.onRootClose();
38684 }
38685 };
38686
38687 _this.preventMouseRootClose = false;
38688 return _this;
38689 }
38690
38691 _createClass(RootCloseWrapper, [{
38692 key: 'componentDidMount',
38693 value: function componentDidMount() {
38694 if (!this.props.disabled) {
38695 this.addEventListeners();
38696 }
38697 }
38698 }, {
38699 key: 'componentDidUpdate',
38700 value: function componentDidUpdate(prevProps) {
38701 if (!this.props.disabled && prevProps.disabled) {
38702 this.addEventListeners();
38703 } else if (this.props.disabled && !prevProps.disabled) {
38704 this.removeEventListeners();
38705 }
38706 }
38707 }, {
38708 key: 'componentWillUnmount',
38709 value: function componentWillUnmount() {
38710 if (!this.props.disabled) {
38711 this.removeEventListeners();
38712 }
38713 }
38714 }, {
38715 key: 'addEventListeners',
38716 value: function addEventListeners() {
38717 var event = this.props.event;
38718
38719 var doc = (0, _ownerDocument2.default)(this);
38720
38721 // Use capture for this listener so it fires before React's listener, to
38722 // avoid false positives in the contains() check below if the target DOM
38723 // element is removed in the React mouse callback.
38724 this.documentMouseCaptureListener = (0, _addEventListener2.default)(doc, event, this.handleMouseCapture, true);
38725
38726 this.documentMouseListener = (0, _addEventListener2.default)(doc, event, this.handleMouse);
38727
38728 this.documentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', this.handleKeyUp);
38729 }
38730 }, {
38731 key: 'removeEventListeners',
38732 value: function removeEventListeners() {
38733 if (this.documentMouseCaptureListener) {
38734 this.documentMouseCaptureListener.remove();
38735 }
38736
38737 if (this.documentMouseListener) {
38738 this.documentMouseListener.remove();
38739 }
38740
38741 if (this.documentKeyupListener) {
38742 this.documentKeyupListener.remove();
38743 }
38744 }
38745 }, {
38746 key: 'render',
38747 value: function render() {
38748 return this.props.children;
38749 }
38750 }]);
38751
38752 return RootCloseWrapper;
38753 }(_react2.default.Component);
38754
38755 exports.default = RootCloseWrapper;
38756
38757
38758 RootCloseWrapper.displayName = 'RootCloseWrapper';
38759
38760 RootCloseWrapper.propTypes = {
38761 onRootClose: _react2.default.PropTypes.func,
38762 children: _react2.default.PropTypes.element,
38763
38764 /**
38765 * Disable the the RootCloseWrapper, preventing it from triggering
38766 * `onRootClose`.
38767 */
38768 disabled: _react2.default.PropTypes.bool,
38769 /**
38770 * Choose which document mouse event to bind to
38771 */
38772 event: _react2.default.PropTypes.oneOf(['click', 'mousedown'])
38773 };
38774
38775 RootCloseWrapper.defaultProps = {
38776 event: 'click'
38777 };
38778 module.exports = exports['default'];
38779
38780/***/ },
38781/* 496 */
38782/***/ function(module, exports, __webpack_require__) {
38783
38784 'use strict';
38785
38786 Object.defineProperty(exports, "__esModule", {
38787 value: true
38788 });
38789
38790 exports.default = function (node, event, handler, capture) {
38791 (0, _on2.default)(node, event, handler, capture);
38792
38793 return {
38794 remove: function remove() {
38795 (0, _off2.default)(node, event, handler, capture);
38796 }
38797 };
38798 };
38799
38800 var _on = __webpack_require__(413);
38801
38802 var _on2 = _interopRequireDefault(_on);
38803
38804 var _off = __webpack_require__(497);
38805
38806 var _off2 = _interopRequireDefault(_off);
38807
38808 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38809
38810 module.exports = exports['default'];
38811
38812/***/ },
38813/* 497 */
38814/***/ function(module, exports, __webpack_require__) {
38815
38816 'use strict';
38817 var canUseDOM = __webpack_require__(412);
38818 var off = function off() {};
38819
38820 if (canUseDOM) {
38821
38822 off = (function () {
38823
38824 if (document.addEventListener) return function (node, eventName, handler, capture) {
38825 return node.removeEventListener(eventName, handler, capture || false);
38826 };else if (document.attachEvent) return function (node, eventName, handler) {
38827 return node.detachEvent('on' + eventName, handler);
38828 };
38829 })();
38830 }
38831
38832 module.exports = off;
38833
38834/***/ },
38835/* 498 */
38836/***/ function(module, exports, __webpack_require__) {
38837
38838 'use strict';
38839
38840 Object.defineProperty(exports, "__esModule", {
38841 value: true
38842 });
38843
38844 exports.default = function (componentOrElement) {
38845 return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));
38846 };
38847
38848 var _reactDom = __webpack_require__(122);
38849
38850 var _reactDom2 = _interopRequireDefault(_reactDom);
38851
38852 var _ownerDocument = __webpack_require__(417);
38853
38854 var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
38855
38856 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38857
38858 module.exports = exports['default'];
38859
38860/***/ },
38861/* 499 */
38862/***/ function(module, exports, __webpack_require__) {
38863
38864 'use strict';
38865
38866 var _inherits = __webpack_require__(372)['default'];
38867
38868 var _classCallCheck = __webpack_require__(379)['default'];
38869
38870 var _extends = __webpack_require__(338)['default'];
38871
38872 var _interopRequireDefault = __webpack_require__(335)['default'];
38873
38874 exports.__esModule = true;
38875
38876 var _react = __webpack_require__(89);
38877
38878 var _react2 = _interopRequireDefault(_react);
38879
38880 var _classnames = __webpack_require__(356);
38881
38882 var _classnames2 = _interopRequireDefault(_classnames);
38883
38884 var _Button = __webpack_require__(382);
38885
38886 var _Button2 = _interopRequireDefault(_Button);
38887
38888 var _SafeAnchor = __webpack_require__(371);
38889
38890 var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
38891
38892 var CARET = _react2['default'].createElement(
38893 'span',
38894 null,
38895 ' ',
38896 _react2['default'].createElement('span', { className: 'caret' })
38897 );
38898
38899 var DropdownToggle = (function (_React$Component) {
38900 _inherits(DropdownToggle, _React$Component);
38901
38902 function DropdownToggle() {
38903 _classCallCheck(this, DropdownToggle);
38904
38905 _React$Component.apply(this, arguments);
38906 }
38907
38908 DropdownToggle.prototype.render = function render() {
38909 var caret = this.props.noCaret ? null : CARET;
38910
38911 var classes = {
38912 'dropdown-toggle': true
38913 };
38914
38915 var Component = this.props.useAnchor ? _SafeAnchor2['default'] : _Button2['default'];
38916
38917 return _react2['default'].createElement(
38918 Component,
38919 _extends({}, this.props, {
38920 className: _classnames2['default'](classes, this.props.className),
38921 role: 'button',
38922 'aria-haspopup': true,
38923 'aria-expanded': this.props.open }),
38924 this.props.children || this.props.title,
38925 caret
38926 );
38927 };
38928
38929 return DropdownToggle;
38930 })(_react2['default'].Component);
38931
38932 exports['default'] = DropdownToggle;
38933
38934 DropdownToggle.defaultProps = {
38935 open: false,
38936 useAnchor: false,
38937 bsRole: 'toggle'
38938 };
38939
38940 DropdownToggle.propTypes = {
38941 bsRole: _react2['default'].PropTypes.string,
38942 noCaret: _react2['default'].PropTypes.bool,
38943 open: _react2['default'].PropTypes.bool,
38944 title: _react2['default'].PropTypes.string,
38945 useAnchor: _react2['default'].PropTypes.bool
38946 };
38947
38948 DropdownToggle.isToggle = true;
38949 DropdownToggle.titleProp = 'title';
38950 DropdownToggle.onClickProp = 'onClick';
38951 module.exports = exports['default'];
38952
38953/***/ },
38954/* 500 */
38955/***/ function(module, exports, __webpack_require__) {
38956
38957 'use strict';
38958
38959 var _inherits = __webpack_require__(372)['default'];
38960
38961 var _classCallCheck = __webpack_require__(379)['default'];
38962
38963 var _extends = __webpack_require__(338)['default'];
38964
38965 var _objectWithoutProperties = __webpack_require__(355)['default'];
38966
38967 var _Object$keys = __webpack_require__(361)['default'];
38968
38969 var _interopRequireDefault = __webpack_require__(335)['default'];
38970
38971 exports.__esModule = true;
38972
38973 var _react = __webpack_require__(89);
38974
38975 var _react2 = _interopRequireDefault(_react);
38976
38977 var _Dropdown = __webpack_require__(415);
38978
38979 var _Dropdown2 = _interopRequireDefault(_Dropdown);
38980
38981 var _lodashCompatObjectOmit = __webpack_require__(473);
38982
38983 var _lodashCompatObjectOmit2 = _interopRequireDefault(_lodashCompatObjectOmit);
38984
38985 var _lodashCompatObjectPick = __webpack_require__(501);
38986
38987 var _lodashCompatObjectPick2 = _interopRequireDefault(_lodashCompatObjectPick);
38988
38989 var _Button = __webpack_require__(382);
38990
38991 var _Button2 = _interopRequireDefault(_Button);
38992
38993 var DropdownButton = (function (_React$Component) {
38994 _inherits(DropdownButton, _React$Component);
38995
38996 function DropdownButton() {
38997 _classCallCheck(this, DropdownButton);
38998
38999 _React$Component.apply(this, arguments);
39000 }
39001
39002 DropdownButton.prototype.render = function render() {
39003 var _props = this.props;
39004 var bsStyle = _props.bsStyle;
39005 var bsSize = _props.bsSize;
39006 var disabled = _props.disabled;
39007 var _props2 = this.props;
39008 var title = _props2.title;
39009 var children = _props2.children;
39010
39011 var props = _objectWithoutProperties(_props2, ['title', 'children']);
39012
39013 var dropdownProps = _lodashCompatObjectPick2['default'](props, _Object$keys(_Dropdown2['default'].ControlledComponent.propTypes));
39014 var toggleProps = _lodashCompatObjectOmit2['default'](props, _Object$keys(_Dropdown2['default'].ControlledComponent.propTypes));
39015
39016 return _react2['default'].createElement(
39017 _Dropdown2['default'],
39018 _extends({}, dropdownProps, {
39019 bsSize: bsSize,
39020 bsStyle: bsStyle
39021 }),
39022 _react2['default'].createElement(
39023 _Dropdown2['default'].Toggle,
39024 _extends({}, toggleProps, {
39025 disabled: disabled
39026 }),
39027 title
39028 ),
39029 _react2['default'].createElement(
39030 _Dropdown2['default'].Menu,
39031 null,
39032 children
39033 )
39034 );
39035 };
39036
39037 return DropdownButton;
39038 })(_react2['default'].Component);
39039
39040 DropdownButton.propTypes = _extends({
39041 disabled: _react2['default'].PropTypes.bool,
39042 bsStyle: _Button2['default'].propTypes.bsStyle,
39043 bsSize: _Button2['default'].propTypes.bsSize,
39044
39045 /**
39046 * When used with the `title` prop, the noCaret option will not render a caret icon, in the toggle element.
39047 */
39048 noCaret: _react2['default'].PropTypes.bool,
39049 title: _react2['default'].PropTypes.node.isRequired
39050
39051 }, _Dropdown2['default'].propTypes);
39052
39053 DropdownButton.defaultProps = {
39054 disabled: false,
39055 pullRight: false,
39056 dropup: false,
39057 navItem: false,
39058 noCaret: false
39059 };
39060
39061 exports['default'] = DropdownButton;
39062 module.exports = exports['default'];
39063
39064/***/ },
39065/* 501 */
39066/***/ function(module, exports, __webpack_require__) {
39067
39068 var baseFlatten = __webpack_require__(482),
39069 bindCallback = __webpack_require__(467),
39070 pickByArray = __webpack_require__(484),
39071 pickByCallback = __webpack_require__(485),
39072 restParam = __webpack_require__(487);
39073
39074 /**
39075 * Creates an object composed of the picked `object` properties. Property
39076 * names may be specified as individual arguments or as arrays of property
39077 * names. If `predicate` is provided it's invoked for each property of `object`
39078 * picking the properties `predicate` returns truthy for. The predicate is
39079 * bound to `thisArg` and invoked with three arguments: (value, key, object).
39080 *
39081 * @static
39082 * @memberOf _
39083 * @category Object
39084 * @param {Object} object The source object.
39085 * @param {Function|...(string|string[])} [predicate] The function invoked per
39086 * iteration or property names to pick, specified as individual property
39087 * names or arrays of property names.
39088 * @param {*} [thisArg] The `this` binding of `predicate`.
39089 * @returns {Object} Returns the new object.
39090 * @example
39091 *
39092 * var object = { 'user': 'fred', 'age': 40 };
39093 *
39094 * _.pick(object, 'user');
39095 * // => { 'user': 'fred' }
39096 *
39097 * _.pick(object, _.isString);
39098 * // => { 'user': 'fred' }
39099 */
39100 var pick = restParam(function(object, props) {
39101 if (object == null) {
39102 return {};
39103 }
39104 return typeof props[0] == 'function'
39105 ? pickByCallback(object, bindCallback(props[0], props[1], 3))
39106 : pickByArray(object, baseFlatten(props));
39107 });
39108
39109 module.exports = pick;
39110
39111
39112/***/ },
39113/* 502 */
39114/***/ function(module, exports, __webpack_require__) {
39115
39116 'use strict';
39117
39118 var _inherits = __webpack_require__(372)['default'];
39119
39120 var _classCallCheck = __webpack_require__(379)['default'];
39121
39122 var _extends = __webpack_require__(338)['default'];
39123
39124 var _interopRequireDefault = __webpack_require__(335)['default'];
39125
39126 exports.__esModule = true;
39127
39128 var _react = __webpack_require__(89);
39129
39130 var _react2 = _interopRequireDefault(_react);
39131
39132 var _classnames = __webpack_require__(356);
39133
39134 var _classnames2 = _interopRequireDefault(_classnames);
39135
39136 var _reactOverlaysLibTransition = __webpack_require__(410);
39137
39138 var _reactOverlaysLibTransition2 = _interopRequireDefault(_reactOverlaysLibTransition);
39139
39140 var Fade = (function (_React$Component) {
39141 _inherits(Fade, _React$Component);
39142
39143 function Fade() {
39144 _classCallCheck(this, Fade);
39145
39146 _React$Component.apply(this, arguments);
39147 }
39148
39149 // Explicitly copied from Transition for doc generation.
39150 // TODO: Remove duplication once #977 is resolved.
39151
39152 Fade.prototype.render = function render() {
39153 var timeout = this.props.timeout;
39154
39155 return _react2['default'].createElement(
39156 _reactOverlaysLibTransition2['default'],
39157 _extends({}, this.props, {
39158 timeout: timeout,
39159 className: _classnames2['default'](this.props.className, 'fade'),
39160 enteredClassName: 'in',
39161 enteringClassName: 'in'
39162 }),
39163 this.props.children
39164 );
39165 };
39166
39167 return Fade;
39168 })(_react2['default'].Component);
39169
39170 Fade.propTypes = {
39171 /**
39172 * Show the component; triggers the fade in or fade out animation
39173 */
39174 'in': _react2['default'].PropTypes.bool,
39175
39176 /**
39177 * Unmount the component (remove it from the DOM) when it is faded out
39178 */
39179 unmountOnExit: _react2['default'].PropTypes.bool,
39180
39181 /**
39182 * Run the fade in animation when the component mounts, if it is initially
39183 * shown
39184 */
39185 transitionAppear: _react2['default'].PropTypes.bool,
39186
39187 /**
39188 * Duration of the fade animation in milliseconds, to ensure that finishing
39189 * callbacks are fired even if the original browser transition end events are
39190 * canceled
39191 */
39192 timeout: _react2['default'].PropTypes.number,
39193
39194 /**
39195 * Callback fired before the component fades in
39196 */
39197 onEnter: _react2['default'].PropTypes.func,
39198 /**
39199 * Callback fired after the component starts to fade in
39200 */
39201 onEntering: _react2['default'].PropTypes.func,
39202 /**
39203 * Callback fired after the has component faded in
39204 */
39205 onEntered: _react2['default'].PropTypes.func,
39206 /**
39207 * Callback fired before the component fades out
39208 */
39209 onExit: _react2['default'].PropTypes.func,
39210 /**
39211 * Callback fired after the component starts to fade out
39212 */
39213 onExiting: _react2['default'].PropTypes.func,
39214 /**
39215 * Callback fired after the component has faded out
39216 */
39217 onExited: _react2['default'].PropTypes.func
39218 };
39219
39220 Fade.defaultProps = {
39221 'in': false,
39222 timeout: 300,
39223 unmountOnExit: false,
39224 transitionAppear: false
39225 };
39226
39227 exports['default'] = Fade;
39228 module.exports = exports['default'];
39229
39230/***/ },
39231/* 503 */
39232/***/ function(module, exports, __webpack_require__) {
39233
39234 'use strict';
39235
39236 var _inherits = __webpack_require__(372)['default'];
39237
39238 var _classCallCheck = __webpack_require__(379)['default'];
39239
39240 var _objectWithoutProperties = __webpack_require__(355)['default'];
39241
39242 var _extends = __webpack_require__(338)['default'];
39243
39244 var _interopRequireDefault = __webpack_require__(335)['default'];
39245
39246 exports.__esModule = true;
39247
39248 var _classnames = __webpack_require__(356);
39249
39250 var _classnames2 = _interopRequireDefault(_classnames);
39251
39252 var _react = __webpack_require__(89);
39253
39254 var _react2 = _interopRequireDefault(_react);
39255
39256 var _reactPropTypesLibElementType = __webpack_require__(380);
39257
39258 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
39259
39260 var _utilsBootstrapUtils = __webpack_require__(357);
39261
39262 var propTypes = {
39263 horizontal: _react2['default'].PropTypes.bool,
39264 inline: _react2['default'].PropTypes.bool,
39265 componentClass: _reactPropTypesLibElementType2['default']
39266 };
39267
39268 var defaultProps = {
39269 horizontal: false,
39270 inline: false,
39271 componentClass: 'form'
39272 };
39273
39274 var Form = (function (_React$Component) {
39275 _inherits(Form, _React$Component);
39276
39277 function Form() {
39278 _classCallCheck(this, Form);
39279
39280 _React$Component.apply(this, arguments);
39281 }
39282
39283 Form.prototype.render = function render() {
39284 var _props = this.props;
39285 var horizontal = _props.horizontal;
39286 var inline = _props.inline;
39287 var Component = _props.componentClass;
39288 var className = _props.className;
39289
39290 var props = _objectWithoutProperties(_props, ['horizontal', 'inline', 'componentClass', 'className']);
39291
39292 delete props.bsClass;
39293
39294 var classes = [];
39295 if (horizontal) {
39296 classes.push(_utilsBootstrapUtils.prefix(this.props, 'horizontal'));
39297 }
39298 if (inline) {
39299 classes.push(_utilsBootstrapUtils.prefix(this.props, 'inline'));
39300 }
39301
39302 return _react2['default'].createElement(Component, _extends({}, props, { className: _classnames2['default'](className, classes) }));
39303 };
39304
39305 return Form;
39306 })(_react2['default'].Component);
39307
39308 Form.propTypes = propTypes;
39309 Form.defaultProps = defaultProps;
39310
39311 exports['default'] = _utilsBootstrapUtils.bsClass('form', Form);
39312 module.exports = exports['default'];
39313
39314/***/ },
39315/* 504 */
39316/***/ function(module, exports, __webpack_require__) {
39317
39318 'use strict';
39319
39320 var _inherits = __webpack_require__(372)['default'];
39321
39322 var _classCallCheck = __webpack_require__(379)['default'];
39323
39324 var _objectWithoutProperties = __webpack_require__(355)['default'];
39325
39326 var _extends = __webpack_require__(338)['default'];
39327
39328 var _interopRequireDefault = __webpack_require__(335)['default'];
39329
39330 exports.__esModule = true;
39331
39332 var _classnames = __webpack_require__(356);
39333
39334 var _classnames2 = _interopRequireDefault(_classnames);
39335
39336 var _react = __webpack_require__(89);
39337
39338 var _react2 = _interopRequireDefault(_react);
39339
39340 var _reactPropTypesLibElementType = __webpack_require__(380);
39341
39342 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
39343
39344 var _warning = __webpack_require__(271);
39345
39346 var _warning2 = _interopRequireDefault(_warning);
39347
39348 var _utilsBootstrapUtils = __webpack_require__(357);
39349
39350 var _FormControlFeedback = __webpack_require__(505);
39351
39352 var _FormControlFeedback2 = _interopRequireDefault(_FormControlFeedback);
39353
39354 var _FormControlStatic = __webpack_require__(506);
39355
39356 var _FormControlStatic2 = _interopRequireDefault(_FormControlStatic);
39357
39358 var propTypes = {
39359 componentClass: _reactPropTypesLibElementType2['default'],
39360 /**
39361 * Only relevant if `componentClass` is `'input'`.
39362 */
39363 type: _react2['default'].PropTypes.string,
39364 /**
39365 * Uses `controlId` from `<FormGroup>` if not explicitly specified.
39366 */
39367 id: _react2['default'].PropTypes.string
39368 };
39369
39370 var defaultProps = {
39371 componentClass: 'input'
39372 };
39373
39374 var contextTypes = {
39375 $bs_formGroup: _react2['default'].PropTypes.object
39376 };
39377
39378 var FormControl = (function (_React$Component) {
39379 _inherits(FormControl, _React$Component);
39380
39381 function FormControl() {
39382 _classCallCheck(this, FormControl);
39383
39384 _React$Component.apply(this, arguments);
39385 }
39386
39387 FormControl.prototype.render = function render() {
39388 var formGroup = this.context.$bs_formGroup;
39389 var controlId = formGroup && formGroup.controlId;
39390
39391 var _props = this.props;
39392 var Component = _props.componentClass;
39393 var type = _props.type;
39394 var _props$id = _props.id;
39395 var id = _props$id === undefined ? controlId : _props$id;
39396 var className = _props.className;
39397
39398 var props = _objectWithoutProperties(_props, ['componentClass', 'type', 'id', 'className']);
39399
39400 (undefined) !== 'production' ? _warning2['default'](controlId == null || id === controlId, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : undefined;
39401
39402 delete props.bsClass;
39403
39404 // input[type="file"] should not have .form-control.
39405 var classes = undefined;
39406 if (type !== 'file') {
39407 classes = _utilsBootstrapUtils.getClassSet(this.props);
39408 }
39409
39410 return _react2['default'].createElement(Component, _extends({}, props, {
39411 type: type,
39412 id: id,
39413 className: _classnames2['default'](className, classes)
39414 }));
39415 };
39416
39417 return FormControl;
39418 })(_react2['default'].Component);
39419
39420 FormControl.propTypes = propTypes;
39421 FormControl.defaultProps = defaultProps;
39422 FormControl.contextTypes = contextTypes;
39423
39424 FormControl.Feedback = _FormControlFeedback2['default'];
39425 FormControl.Static = _FormControlStatic2['default'];
39426
39427 exports['default'] = _utilsBootstrapUtils.bsClass('form-control', FormControl);
39428 module.exports = exports['default'];
39429
39430/***/ },
39431/* 505 */
39432/***/ function(module, exports, __webpack_require__) {
39433
39434 'use strict';
39435
39436 var _inherits = __webpack_require__(372)['default'];
39437
39438 var _classCallCheck = __webpack_require__(379)['default'];
39439
39440 var _extends = __webpack_require__(338)['default'];
39441
39442 var _objectWithoutProperties = __webpack_require__(355)['default'];
39443
39444 var _interopRequireDefault = __webpack_require__(335)['default'];
39445
39446 exports.__esModule = true;
39447
39448 var _classnames = __webpack_require__(356);
39449
39450 var _classnames2 = _interopRequireDefault(_classnames);
39451
39452 var _react = __webpack_require__(89);
39453
39454 var _react2 = _interopRequireDefault(_react);
39455
39456 var _utilsBootstrapUtils = __webpack_require__(357);
39457
39458 var _Glyphicon = __webpack_require__(388);
39459
39460 var _Glyphicon2 = _interopRequireDefault(_Glyphicon);
39461
39462 var defaultProps = {
39463 bsRole: 'feedback'
39464 };
39465
39466 var contextTypes = {
39467 $bs_formGroup: _react2['default'].PropTypes.object
39468 };
39469
39470 var FormControlFeedback = (function (_React$Component) {
39471 _inherits(FormControlFeedback, _React$Component);
39472
39473 function FormControlFeedback() {
39474 _classCallCheck(this, FormControlFeedback);
39475
39476 _React$Component.apply(this, arguments);
39477 }
39478
39479 FormControlFeedback.prototype.getGlyph = function getGlyph(validationState) {
39480 switch (validationState) {
39481 case 'success':
39482 return 'ok';
39483 case 'warning':
39484 return 'warning-sign';
39485 case 'error':
39486 return 'remove';
39487 default:
39488 return null;
39489 }
39490 };
39491
39492 FormControlFeedback.prototype.renderDefaultFeedback = function renderDefaultFeedback(formGroup, className, classes, props) {
39493 var glyph = this.getGlyph(formGroup && formGroup.validationState);
39494 if (!glyph) {
39495 return null;
39496 }
39497
39498 return _react2['default'].createElement(_Glyphicon2['default'], _extends({}, props, {
39499 glyph: glyph,
39500 className: _classnames2['default'](className, classes)
39501 }));
39502 };
39503
39504 FormControlFeedback.prototype.render = function render() {
39505 var _props = this.props;
39506 var className = _props.className;
39507 var children = _props.children;
39508
39509 var props = _objectWithoutProperties(_props, ['className', 'children']);
39510
39511 delete props.bsClass;
39512
39513 var classes = _utilsBootstrapUtils.getClassSet(this.props);
39514
39515 if (!children) {
39516 return this.renderDefaultFeedback(this.context.$bs_formGroup, className, classes, props);
39517 }
39518
39519 var child = _react2['default'].Children.only(children);
39520 return _react2['default'].cloneElement(child, _extends({}, props, {
39521 className: _classnames2['default'](child.props.className, className, classes)
39522 }));
39523 };
39524
39525 return FormControlFeedback;
39526 })(_react2['default'].Component);
39527
39528 FormControlFeedback.defaultProps = defaultProps;
39529 FormControlFeedback.contextTypes = contextTypes;
39530
39531 exports['default'] = _utilsBootstrapUtils.bsClass('form-control-feedback', FormControlFeedback);
39532 module.exports = exports['default'];
39533
39534/***/ },
39535/* 506 */
39536/***/ function(module, exports, __webpack_require__) {
39537
39538 'use strict';
39539
39540 var _inherits = __webpack_require__(372)['default'];
39541
39542 var _classCallCheck = __webpack_require__(379)['default'];
39543
39544 var _objectWithoutProperties = __webpack_require__(355)['default'];
39545
39546 var _extends = __webpack_require__(338)['default'];
39547
39548 var _interopRequireDefault = __webpack_require__(335)['default'];
39549
39550 exports.__esModule = true;
39551
39552 var _classnames = __webpack_require__(356);
39553
39554 var _classnames2 = _interopRequireDefault(_classnames);
39555
39556 var _react = __webpack_require__(89);
39557
39558 var _react2 = _interopRequireDefault(_react);
39559
39560 var _reactPropTypesLibElementType = __webpack_require__(380);
39561
39562 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
39563
39564 var _utilsBootstrapUtils = __webpack_require__(357);
39565
39566 var propTypes = {
39567 componentClass: _reactPropTypesLibElementType2['default']
39568 };
39569
39570 var defaultProps = {
39571 componentClass: 'p'
39572 };
39573
39574 var FormControlStatic = (function (_React$Component) {
39575 _inherits(FormControlStatic, _React$Component);
39576
39577 function FormControlStatic() {
39578 _classCallCheck(this, FormControlStatic);
39579
39580 _React$Component.apply(this, arguments);
39581 }
39582
39583 FormControlStatic.prototype.render = function render() {
39584 var _props = this.props;
39585 var Component = _props.componentClass;
39586 var className = _props.className;
39587
39588 var props = _objectWithoutProperties(_props, ['componentClass', 'className']);
39589
39590 delete props.bsClass;
39591
39592 var classes = _utilsBootstrapUtils.getClassSet(this.props);
39593
39594 return _react2['default'].createElement(Component, _extends({}, props, { className: _classnames2['default'](className, classes) }));
39595 };
39596
39597 return FormControlStatic;
39598 })(_react2['default'].Component);
39599
39600 FormControlStatic.propTypes = propTypes;
39601 FormControlStatic.defaultProps = defaultProps;
39602
39603 exports['default'] = _utilsBootstrapUtils.bsClass('form-control-static', FormControlStatic);
39604 module.exports = exports['default'];
39605
39606/***/ },
39607/* 507 */
39608/***/ function(module, exports, __webpack_require__) {
39609
39610 'use strict';
39611
39612 var _extends = __webpack_require__(338)['default'];
39613
39614 var _interopRequireDefault = __webpack_require__(335)['default'];
39615
39616 exports.__esModule = true;
39617
39618 var _react = __webpack_require__(89);
39619
39620 var _react2 = _interopRequireDefault(_react);
39621
39622 var _classnames = __webpack_require__(356);
39623
39624 var _classnames2 = _interopRequireDefault(_classnames);
39625
39626 var _reactPropTypesLibElementType = __webpack_require__(380);
39627
39628 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
39629
39630 var Grid = _react2['default'].createClass({
39631 displayName: 'Grid',
39632
39633 propTypes: {
39634 /**
39635 * Turn any fixed-width grid layout into a full-width layout by this property.
39636 *
39637 * Adds `container-fluid` class.
39638 */
39639 fluid: _react2['default'].PropTypes.bool,
39640 /**
39641 * You can use a custom element for this component
39642 */
39643 componentClass: _reactPropTypesLibElementType2['default']
39644 },
39645
39646 getDefaultProps: function getDefaultProps() {
39647 return {
39648 componentClass: 'div',
39649 fluid: false
39650 };
39651 },
39652
39653 render: function render() {
39654 var ComponentClass = this.props.componentClass;
39655 var className = this.props.fluid ? 'container-fluid' : 'container';
39656
39657 return _react2['default'].createElement(
39658 ComponentClass,
39659 _extends({}, this.props, {
39660 className: _classnames2['default'](this.props.className, className) }),
39661 this.props.children
39662 );
39663 }
39664 });
39665
39666 exports['default'] = Grid;
39667 module.exports = exports['default'];
39668
39669/***/ },
39670/* 508 */
39671/***/ function(module, exports, __webpack_require__) {
39672
39673 'use strict';
39674
39675 var _inherits = __webpack_require__(372)['default'];
39676
39677 var _classCallCheck = __webpack_require__(379)['default'];
39678
39679 var _objectWithoutProperties = __webpack_require__(355)['default'];
39680
39681 var _extends = __webpack_require__(338)['default'];
39682
39683 var _interopRequireDefault = __webpack_require__(335)['default'];
39684
39685 exports.__esModule = true;
39686
39687 var _classnames = __webpack_require__(356);
39688
39689 var _classnames2 = _interopRequireDefault(_classnames);
39690
39691 var _react = __webpack_require__(89);
39692
39693 var _react2 = _interopRequireDefault(_react);
39694
39695 var _utilsBootstrapUtils = __webpack_require__(357);
39696
39697 var HelpBlock = (function (_React$Component) {
39698 _inherits(HelpBlock, _React$Component);
39699
39700 function HelpBlock() {
39701 _classCallCheck(this, HelpBlock);
39702
39703 _React$Component.apply(this, arguments);
39704 }
39705
39706 HelpBlock.prototype.render = function render() {
39707 var _props = this.props;
39708 var className = _props.className;
39709
39710 var props = _objectWithoutProperties(_props, ['className']);
39711
39712 delete props.bsClass;
39713
39714 var classes = _utilsBootstrapUtils.getClassSet(this.props);
39715
39716 return _react2['default'].createElement('span', _extends({}, props, { className: _classnames2['default'](className, classes) }));
39717 };
39718
39719 return HelpBlock;
39720 })(_react2['default'].Component);
39721
39722 exports['default'] = _utilsBootstrapUtils.bsClass('help-block', HelpBlock);
39723 module.exports = exports['default'];
39724
39725/***/ },
39726/* 509 */
39727/***/ function(module, exports, __webpack_require__) {
39728
39729 'use strict';
39730
39731 var _extends = __webpack_require__(338)['default'];
39732
39733 var _interopRequireDefault = __webpack_require__(335)['default'];
39734
39735 exports.__esModule = true;
39736
39737 var _react = __webpack_require__(89);
39738
39739 var _react2 = _interopRequireDefault(_react);
39740
39741 var _classnames = __webpack_require__(356);
39742
39743 var _classnames2 = _interopRequireDefault(_classnames);
39744
39745 var Image = _react2['default'].createClass({
39746 displayName: 'Image',
39747
39748 propTypes: {
39749
39750 /**
39751 * Sets image as responsive image
39752 */
39753 responsive: _react2['default'].PropTypes.bool,
39754
39755 /**
39756 * Sets image shape as rounded
39757 */
39758 rounded: _react2['default'].PropTypes.bool,
39759
39760 /**
39761 * Sets image shape as circle
39762 */
39763 circle: _react2['default'].PropTypes.bool,
39764
39765 /**
39766 * Sets image shape as thumbnail
39767 */
39768 thumbnail: _react2['default'].PropTypes.bool
39769 },
39770
39771 getDefaultProps: function getDefaultProps() {
39772 return {
39773 responsive: false,
39774 rounded: false,
39775 circle: false,
39776 thumbnail: false
39777 };
39778 },
39779
39780 render: function render() {
39781 var classes = {
39782 'img-responsive': this.props.responsive,
39783 'img-rounded': this.props.rounded,
39784 'img-circle': this.props.circle,
39785 'img-thumbnail': this.props.thumbnail
39786 };
39787
39788 return _react2['default'].createElement('img', _extends({}, this.props, { className: _classnames2['default'](this.props.className, classes) }));
39789 }
39790 });
39791
39792 exports['default'] = Image;
39793 module.exports = exports['default'];
39794
39795/***/ },
39796/* 510 */
39797/***/ function(module, exports, __webpack_require__) {
39798
39799 'use strict';
39800
39801 var _inherits = __webpack_require__(372)['default'];
39802
39803 var _classCallCheck = __webpack_require__(379)['default'];
39804
39805 var _interopRequireDefault = __webpack_require__(335)['default'];
39806
39807 var _interopRequireWildcard = __webpack_require__(336)['default'];
39808
39809 exports.__esModule = true;
39810
39811 var _react = __webpack_require__(89);
39812
39813 var _react2 = _interopRequireDefault(_react);
39814
39815 var _FormControls = __webpack_require__(511);
39816
39817 var FormControls = _interopRequireWildcard(_FormControls);
39818
39819 var _InputBase2 = __webpack_require__(387);
39820
39821 var _InputBase3 = _interopRequireDefault(_InputBase2);
39822
39823 var _utilsDeprecationWarning = __webpack_require__(391);
39824
39825 var _utilsDeprecationWarning2 = _interopRequireDefault(_utilsDeprecationWarning);
39826
39827 var Input = (function (_InputBase) {
39828 _inherits(Input, _InputBase);
39829
39830 function Input() {
39831 _classCallCheck(this, Input);
39832
39833 _InputBase.apply(this, arguments);
39834 }
39835
39836 Input.prototype.render = function render() {
39837 if (this.props.type === 'static') {
39838 _utilsDeprecationWarning2['default']('Input type=static', 'FormControls.Static');
39839 return _react2['default'].createElement(FormControls.Static, this.props);
39840 }
39841
39842 return _InputBase.prototype.render.call(this);
39843 };
39844
39845 return Input;
39846 })(_InputBase3['default']);
39847
39848 Input.propTypes = {
39849 type: _react2['default'].PropTypes.string
39850 };
39851
39852 exports['default'] = _utilsDeprecationWarning2['default'].wrapper(Input, '`<Input>`', '`<FormControl>`, `<Checkbox>`, or `<Radio>`, with `<FormGroup>` and/or ' + '`<InputGroup>` as needed');
39853 module.exports = exports['default'];
39854
39855/***/ },
39856/* 511 */
39857/***/ function(module, exports, __webpack_require__) {
39858
39859 'use strict';
39860
39861 var _interopRequireDefault = __webpack_require__(335)['default'];
39862
39863 exports.__esModule = true;
39864
39865 var _Static2 = __webpack_require__(512);
39866
39867 var _Static3 = _interopRequireDefault(_Static2);
39868
39869 exports.Static = _Static3['default'];
39870
39871/***/ },
39872/* 512 */
39873/***/ function(module, exports, __webpack_require__) {
39874
39875 'use strict';
39876
39877 var _inherits = __webpack_require__(372)['default'];
39878
39879 var _classCallCheck = __webpack_require__(379)['default'];
39880
39881 var _objectWithoutProperties = __webpack_require__(355)['default'];
39882
39883 var _extends = __webpack_require__(338)['default'];
39884
39885 var _interopRequireDefault = __webpack_require__(335)['default'];
39886
39887 exports.__esModule = true;
39888
39889 var _classnames = __webpack_require__(356);
39890
39891 var _classnames2 = _interopRequireDefault(_classnames);
39892
39893 var _react = __webpack_require__(89);
39894
39895 var _react2 = _interopRequireDefault(_react);
39896
39897 var _reactPropTypesLibElementType = __webpack_require__(380);
39898
39899 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
39900
39901 var _InputBase2 = __webpack_require__(387);
39902
39903 var _InputBase3 = _interopRequireDefault(_InputBase2);
39904
39905 var _utilsChildrenValueInputValidation = __webpack_require__(389);
39906
39907 var _utilsChildrenValueInputValidation2 = _interopRequireDefault(_utilsChildrenValueInputValidation);
39908
39909 var _utilsDeprecationWarning = __webpack_require__(391);
39910
39911 var _utilsDeprecationWarning2 = _interopRequireDefault(_utilsDeprecationWarning);
39912
39913 var Static = (function (_InputBase) {
39914 _inherits(Static, _InputBase);
39915
39916 function Static() {
39917 _classCallCheck(this, Static);
39918
39919 _InputBase.apply(this, arguments);
39920 }
39921
39922 Static.prototype.getValue = function getValue() {
39923 var _props = this.props;
39924 var children = _props.children;
39925 var value = _props.value;
39926
39927 return children ? children : value;
39928 };
39929
39930 Static.prototype.renderInput = function renderInput() {
39931 var _props2 = this.props;
39932 var ComponentClass = _props2.componentClass;
39933
39934 var props = _objectWithoutProperties(_props2, ['componentClass']);
39935
39936 return _react2['default'].createElement(
39937 ComponentClass,
39938 _extends({}, props, { className: _classnames2['default'](props.className, 'form-control-static'), ref: 'input', key: 'input' }),
39939 this.getValue()
39940 );
39941 };
39942
39943 return Static;
39944 })(_InputBase3['default']);
39945
39946 Static.propTypes = {
39947 value: _utilsChildrenValueInputValidation2['default'],
39948 /**
39949 * You can override the default 'p' with a custom element
39950 */
39951 componentClass: _reactPropTypesLibElementType2['default'],
39952 children: _utilsChildrenValueInputValidation2['default']
39953 };
39954
39955 Static.defaultProps = {
39956 componentClass: 'p'
39957 };
39958
39959 exports['default'] = _utilsDeprecationWarning2['default'].wrapper(Static, '`<FormControls.Static>`', '`<FormControl.Static>`');
39960 module.exports = exports['default'];
39961
39962/***/ },
39963/* 513 */
39964/***/ function(module, exports, __webpack_require__) {
39965
39966 'use strict';
39967
39968 var _inherits = __webpack_require__(372)['default'];
39969
39970 var _classCallCheck = __webpack_require__(379)['default'];
39971
39972 var _objectWithoutProperties = __webpack_require__(355)['default'];
39973
39974 var _extends = __webpack_require__(338)['default'];
39975
39976 var _interopRequireDefault = __webpack_require__(335)['default'];
39977
39978 exports.__esModule = true;
39979
39980 var _classnames = __webpack_require__(356);
39981
39982 var _classnames2 = _interopRequireDefault(_classnames);
39983
39984 var _react = __webpack_require__(89);
39985
39986 var _react2 = _interopRequireDefault(_react);
39987
39988 var _styleMaps = __webpack_require__(358);
39989
39990 var _utilsBootstrapUtils = __webpack_require__(357);
39991
39992 var _InputGroupAddon = __webpack_require__(514);
39993
39994 var _InputGroupAddon2 = _interopRequireDefault(_InputGroupAddon);
39995
39996 var _InputGroupButton = __webpack_require__(515);
39997
39998 var _InputGroupButton2 = _interopRequireDefault(_InputGroupButton);
39999
40000 var InputGroup = (function (_React$Component) {
40001 _inherits(InputGroup, _React$Component);
40002
40003 function InputGroup() {
40004 _classCallCheck(this, InputGroup);
40005
40006 _React$Component.apply(this, arguments);
40007 }
40008
40009 InputGroup.prototype.render = function render() {
40010 var _props = this.props;
40011 var className = _props.className;
40012
40013 var props = _objectWithoutProperties(_props, ['className']);
40014
40015 delete props.bsClass;
40016 delete props.bsSize;
40017
40018 var classes = _utilsBootstrapUtils.getClassSet(this.props);
40019
40020 return _react2['default'].createElement('span', _extends({}, props, { className: _classnames2['default'](className, classes) }));
40021 };
40022
40023 return InputGroup;
40024 })(_react2['default'].Component);
40025
40026 InputGroup.Addon = _InputGroupAddon2['default'];
40027 InputGroup.Button = _InputGroupButton2['default'];
40028
40029 exports['default'] = _utilsBootstrapUtils.bsClass('input-group', _utilsBootstrapUtils.bsSizes([_styleMaps.Sizes.LARGE, _styleMaps.Sizes.SMALL], InputGroup));
40030 module.exports = exports['default'];
40031
40032/***/ },
40033/* 514 */
40034/***/ function(module, exports, __webpack_require__) {
40035
40036 'use strict';
40037
40038 var _inherits = __webpack_require__(372)['default'];
40039
40040 var _classCallCheck = __webpack_require__(379)['default'];
40041
40042 var _objectWithoutProperties = __webpack_require__(355)['default'];
40043
40044 var _extends = __webpack_require__(338)['default'];
40045
40046 var _interopRequireDefault = __webpack_require__(335)['default'];
40047
40048 exports.__esModule = true;
40049
40050 var _classnames = __webpack_require__(356);
40051
40052 var _classnames2 = _interopRequireDefault(_classnames);
40053
40054 var _react = __webpack_require__(89);
40055
40056 var _react2 = _interopRequireDefault(_react);
40057
40058 var _utilsBootstrapUtils = __webpack_require__(357);
40059
40060 var InputGroupAddon = (function (_React$Component) {
40061 _inherits(InputGroupAddon, _React$Component);
40062
40063 function InputGroupAddon() {
40064 _classCallCheck(this, InputGroupAddon);
40065
40066 _React$Component.apply(this, arguments);
40067 }
40068
40069 InputGroupAddon.prototype.render = function render() {
40070 var _props = this.props;
40071 var className = _props.className;
40072
40073 var props = _objectWithoutProperties(_props, ['className']);
40074
40075 delete props.bsClass;
40076
40077 var classes = _utilsBootstrapUtils.getClassSet(this.props);
40078
40079 return _react2['default'].createElement('span', _extends({}, props, { className: _classnames2['default'](className, classes) }));
40080 };
40081
40082 return InputGroupAddon;
40083 })(_react2['default'].Component);
40084
40085 exports['default'] = _utilsBootstrapUtils.bsClass('input-group-addon', InputGroupAddon);
40086 module.exports = exports['default'];
40087
40088/***/ },
40089/* 515 */
40090/***/ function(module, exports, __webpack_require__) {
40091
40092 'use strict';
40093
40094 var _inherits = __webpack_require__(372)['default'];
40095
40096 var _classCallCheck = __webpack_require__(379)['default'];
40097
40098 var _objectWithoutProperties = __webpack_require__(355)['default'];
40099
40100 var _extends = __webpack_require__(338)['default'];
40101
40102 var _interopRequireDefault = __webpack_require__(335)['default'];
40103
40104 exports.__esModule = true;
40105
40106 var _classnames = __webpack_require__(356);
40107
40108 var _classnames2 = _interopRequireDefault(_classnames);
40109
40110 var _react = __webpack_require__(89);
40111
40112 var _react2 = _interopRequireDefault(_react);
40113
40114 var _utilsBootstrapUtils = __webpack_require__(357);
40115
40116 var InputGroupButton = (function (_React$Component) {
40117 _inherits(InputGroupButton, _React$Component);
40118
40119 function InputGroupButton() {
40120 _classCallCheck(this, InputGroupButton);
40121
40122 _React$Component.apply(this, arguments);
40123 }
40124
40125 InputGroupButton.prototype.render = function render() {
40126 var _props = this.props;
40127 var className = _props.className;
40128
40129 var props = _objectWithoutProperties(_props, ['className']);
40130
40131 delete props.bsClass;
40132
40133 var classes = _utilsBootstrapUtils.getClassSet(this.props);
40134
40135 return _react2['default'].createElement('span', _extends({}, props, { className: _classnames2['default'](className, classes) }));
40136 };
40137
40138 return InputGroupButton;
40139 })(_react2['default'].Component);
40140
40141 exports['default'] = _utilsBootstrapUtils.bsClass('input-group-btn', InputGroupButton);
40142 module.exports = exports['default'];
40143
40144/***/ },
40145/* 516 */
40146/***/ function(module, exports, __webpack_require__) {
40147
40148 // https://www.npmjs.org/package/react-interpolate-component
40149 // TODO: Drop this in favor of es6 string interpolation
40150
40151 'use strict';
40152
40153 var _extends = __webpack_require__(338)['default'];
40154
40155 var _Object$assign = __webpack_require__(339)['default'];
40156
40157 var _interopRequireDefault = __webpack_require__(335)['default'];
40158
40159 exports.__esModule = true;
40160
40161 var _react = __webpack_require__(89);
40162
40163 var _react2 = _interopRequireDefault(_react);
40164
40165 var _utilsValidComponentChildren = __webpack_require__(365);
40166
40167 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
40168
40169 var REGEXP = /\%\((.+?)\)s/;
40170
40171 var Interpolate = _react2['default'].createClass({
40172 displayName: 'Interpolate',
40173
40174 propTypes: {
40175 component: _react2['default'].PropTypes.node,
40176 format: _react2['default'].PropTypes.string,
40177 unsafe: _react2['default'].PropTypes.bool
40178 },
40179
40180 getDefaultProps: function getDefaultProps() {
40181 return {
40182 component: 'span',
40183 unsafe: false
40184 };
40185 },
40186
40187 render: function render() {
40188 var format = _utilsValidComponentChildren2['default'].count(this.props.children) > 0 || typeof this.props.children === 'string' ? this.props.children : this.props.format;
40189 var parent = this.props.component;
40190 var unsafe = this.props.unsafe === true;
40191 var props = _extends({}, this.props);
40192
40193 delete props.children;
40194 delete props.format;
40195 delete props.component;
40196 delete props.unsafe;
40197
40198 if (unsafe) {
40199 var content = format.split(REGEXP).reduce(function (memo, match, index) {
40200 var html = undefined;
40201
40202 if (index % 2 === 0) {
40203 html = match;
40204 } else {
40205 html = props[match];
40206 delete props[match];
40207 }
40208
40209 if (_react2['default'].isValidElement(html)) {
40210 throw new Error('cannot interpolate a React component into unsafe text');
40211 }
40212
40213 memo += html;
40214
40215 return memo;
40216 }, '');
40217
40218 props.dangerouslySetInnerHTML = { __html: content };
40219
40220 return _react2['default'].createElement(parent, props);
40221 }
40222 var kids = format.split(REGEXP).reduce(function (memo, match, index) {
40223 var child = undefined;
40224
40225 if (index % 2 === 0) {
40226 if (match.length === 0) {
40227 return memo;
40228 }
40229
40230 child = match;
40231 } else {
40232 child = props[match];
40233 delete props[match];
40234 }
40235
40236 memo.push(child);
40237
40238 return memo;
40239 }, []);
40240
40241 return _react2['default'].createElement(parent, props, kids);
40242 }
40243 });
40244
40245 _Object$assign(Interpolate, { REGEXP: REGEXP });
40246
40247 exports['default'] = Interpolate;
40248 module.exports = exports['default'];
40249
40250/***/ },
40251/* 517 */
40252/***/ function(module, exports, __webpack_require__) {
40253
40254 'use strict';
40255
40256 var _extends = __webpack_require__(338)['default'];
40257
40258 var _interopRequireDefault = __webpack_require__(335)['default'];
40259
40260 exports.__esModule = true;
40261
40262 var _react = __webpack_require__(89);
40263
40264 var _react2 = _interopRequireDefault(_react);
40265
40266 var _classnames = __webpack_require__(356);
40267
40268 var _classnames2 = _interopRequireDefault(_classnames);
40269
40270 var _reactPropTypesLibElementType = __webpack_require__(380);
40271
40272 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
40273
40274 var Jumbotron = _react2['default'].createClass({
40275 displayName: 'Jumbotron',
40276
40277 propTypes: {
40278 /**
40279 * You can use a custom element for this component
40280 */
40281 componentClass: _reactPropTypesLibElementType2['default']
40282 },
40283
40284 getDefaultProps: function getDefaultProps() {
40285 return { componentClass: 'div' };
40286 },
40287
40288 render: function render() {
40289 var ComponentClass = this.props.componentClass;
40290
40291 return _react2['default'].createElement(
40292 ComponentClass,
40293 _extends({}, this.props, { className: _classnames2['default'](this.props.className, 'jumbotron') }),
40294 this.props.children
40295 );
40296 }
40297 });
40298
40299 exports['default'] = Jumbotron;
40300 module.exports = exports['default'];
40301
40302/***/ },
40303/* 518 */
40304/***/ function(module, exports, __webpack_require__) {
40305
40306 'use strict';
40307
40308 var _inherits = __webpack_require__(372)['default'];
40309
40310 var _classCallCheck = __webpack_require__(379)['default'];
40311
40312 var _extends = __webpack_require__(338)['default'];
40313
40314 var _interopRequireDefault = __webpack_require__(335)['default'];
40315
40316 exports.__esModule = true;
40317
40318 var _classnames = __webpack_require__(356);
40319
40320 var _classnames2 = _interopRequireDefault(_classnames);
40321
40322 var _react = __webpack_require__(89);
40323
40324 var _react2 = _interopRequireDefault(_react);
40325
40326 var _styleMaps = __webpack_require__(358);
40327
40328 var _utilsBootstrapUtils = __webpack_require__(357);
40329
40330 var Label = (function (_React$Component) {
40331 _inherits(Label, _React$Component);
40332
40333 function Label() {
40334 _classCallCheck(this, _Label);
40335
40336 _React$Component.apply(this, arguments);
40337 }
40338
40339 Label.prototype.render = function render() {
40340 var classes = _utilsBootstrapUtils.getClassSet(this.props);
40341
40342 return _react2['default'].createElement(
40343 'span',
40344 _extends({}, this.props, {
40345 className: _classnames2['default'](this.props.className, classes)
40346 }),
40347 this.props.children
40348 );
40349 };
40350
40351 var _Label = Label;
40352 Label = _utilsBootstrapUtils.bsStyles(_styleMaps.State.values().concat(_styleMaps.DEFAULT, _styleMaps.PRIMARY), _styleMaps.DEFAULT)(Label) || Label;
40353 Label = _utilsBootstrapUtils.bsClass('label')(Label) || Label;
40354 return Label;
40355 })(_react2['default'].Component);
40356
40357 exports['default'] = Label;
40358 module.exports = exports['default'];
40359
40360/***/ },
40361/* 519 */
40362/***/ function(module, exports, __webpack_require__) {
40363
40364 'use strict';
40365
40366 var _inherits = __webpack_require__(372)['default'];
40367
40368 var _classCallCheck = __webpack_require__(379)['default'];
40369
40370 var _extends = __webpack_require__(338)['default'];
40371
40372 var _interopRequireDefault = __webpack_require__(335)['default'];
40373
40374 exports.__esModule = true;
40375
40376 var _react = __webpack_require__(89);
40377
40378 var _react2 = _interopRequireDefault(_react);
40379
40380 var _ListGroupItem = __webpack_require__(520);
40381
40382 var _ListGroupItem2 = _interopRequireDefault(_ListGroupItem);
40383
40384 var _classnames = __webpack_require__(356);
40385
40386 var _classnames2 = _interopRequireDefault(_classnames);
40387
40388 var _utilsValidComponentChildren = __webpack_require__(365);
40389
40390 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
40391
40392 var ListGroup = (function (_React$Component) {
40393 _inherits(ListGroup, _React$Component);
40394
40395 function ListGroup() {
40396 _classCallCheck(this, ListGroup);
40397
40398 _React$Component.apply(this, arguments);
40399 }
40400
40401 ListGroup.prototype.render = function render() {
40402 var _this = this;
40403
40404 var items = _utilsValidComponentChildren2['default'].map(this.props.children, function (item, index) {
40405 return _react.cloneElement(item, { key: item.key ? item.key : index });
40406 });
40407
40408 if (this.areCustomChildren(items)) {
40409 var Component = this.props.componentClass;
40410 return _react2['default'].createElement(
40411 Component,
40412 _extends({}, this.props, {
40413 className: _classnames2['default'](this.props.className, 'list-group') }),
40414 items
40415 );
40416 }
40417
40418 var shouldRenderDiv = false;
40419
40420 if (!this.props.children) {
40421 shouldRenderDiv = true;
40422 } else {
40423 _utilsValidComponentChildren2['default'].forEach(this.props.children, function (child) {
40424 if (_this.isAnchorOrButton(child.props)) {
40425 shouldRenderDiv = true;
40426 }
40427 });
40428 }
40429
40430 return shouldRenderDiv ? this.renderDiv(items) : this.renderUL(items);
40431 };
40432
40433 ListGroup.prototype.isAnchorOrButton = function isAnchorOrButton(props) {
40434 return props.href || props.onClick;
40435 };
40436
40437 ListGroup.prototype.areCustomChildren = function areCustomChildren(children) {
40438 var customChildren = false;
40439
40440 _utilsValidComponentChildren2['default'].forEach(children, function (child) {
40441 if (child.type !== _ListGroupItem2['default']) {
40442 customChildren = true;
40443 }
40444 }, this);
40445
40446 return customChildren;
40447 };
40448
40449 ListGroup.prototype.renderUL = function renderUL(items) {
40450 var listItems = _utilsValidComponentChildren2['default'].map(items, function (item) {
40451 return _react.cloneElement(item, { listItem: true });
40452 });
40453
40454 return _react2['default'].createElement(
40455 'ul',
40456 _extends({}, this.props, {
40457 className: _classnames2['default'](this.props.className, 'list-group') }),
40458 listItems
40459 );
40460 };
40461
40462 ListGroup.prototype.renderDiv = function renderDiv(items) {
40463 return _react2['default'].createElement(
40464 'div',
40465 _extends({}, this.props, {
40466 className: _classnames2['default'](this.props.className, 'list-group') }),
40467 items
40468 );
40469 };
40470
40471 return ListGroup;
40472 })(_react2['default'].Component);
40473
40474 ListGroup.defaultProps = {
40475 componentClass: 'div'
40476 };
40477
40478 ListGroup.propTypes = {
40479 className: _react2['default'].PropTypes.string,
40480 /**
40481 * The element for ListGroup if children are
40482 * user-defined custom components.
40483 * @type {("ul"|"div")}
40484 */
40485 componentClass: _react2['default'].PropTypes.oneOf(['ul', 'div']),
40486 id: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number])
40487 };
40488
40489 exports['default'] = ListGroup;
40490 module.exports = exports['default'];
40491
40492/***/ },
40493/* 520 */
40494/***/ function(module, exports, __webpack_require__) {
40495
40496 'use strict';
40497
40498 var _inherits = __webpack_require__(372)['default'];
40499
40500 var _classCallCheck = __webpack_require__(379)['default'];
40501
40502 var _extends = __webpack_require__(338)['default'];
40503
40504 var _interopRequireDefault = __webpack_require__(335)['default'];
40505
40506 exports.__esModule = true;
40507
40508 var _classnames = __webpack_require__(356);
40509
40510 var _classnames2 = _interopRequireDefault(_classnames);
40511
40512 var _react = __webpack_require__(89);
40513
40514 var _react2 = _interopRequireDefault(_react);
40515
40516 var _styleMaps = __webpack_require__(358);
40517
40518 var _utilsBootstrapUtils = __webpack_require__(357);
40519
40520 var ListGroupItem = (function (_React$Component) {
40521 _inherits(ListGroupItem, _React$Component);
40522
40523 function ListGroupItem() {
40524 _classCallCheck(this, ListGroupItem);
40525
40526 _React$Component.apply(this, arguments);
40527 }
40528
40529 ListGroupItem.prototype.render = function render() {
40530 var classes = _utilsBootstrapUtils.getClassSet(this.props);
40531
40532 classes.active = this.props.active;
40533 classes.disabled = this.props.disabled;
40534
40535 if (this.props.href) {
40536 return this.renderAnchor(classes);
40537 } else if (this.props.onClick) {
40538 return this.renderButton(classes);
40539 } else if (this.props.listItem) {
40540 return this.renderLi(classes);
40541 }
40542
40543 return this.renderSpan(classes);
40544 };
40545
40546 ListGroupItem.prototype.renderLi = function renderLi(classes) {
40547 return _react2['default'].createElement(
40548 'li',
40549 _extends({}, this.props, { className: _classnames2['default'](this.props.className, classes) }),
40550 this.props.header ? this.renderStructuredContent() : this.props.children
40551 );
40552 };
40553
40554 ListGroupItem.prototype.renderAnchor = function renderAnchor(classes) {
40555 return _react2['default'].createElement(
40556 'a',
40557 _extends({}, this.props, {
40558 className: _classnames2['default'](this.props.className, classes)
40559 }),
40560 this.props.header ? this.renderStructuredContent() : this.props.children
40561 );
40562 };
40563
40564 ListGroupItem.prototype.renderButton = function renderButton(classes) {
40565 return _react2['default'].createElement(
40566 'button',
40567 _extends({
40568 type: 'button'
40569 }, this.props, {
40570 className: _classnames2['default'](this.props.className, classes) }),
40571 this.props.header ? this.renderStructuredContent() : this.props.children
40572 );
40573 };
40574
40575 ListGroupItem.prototype.renderSpan = function renderSpan(classes) {
40576 return _react2['default'].createElement(
40577 'span',
40578 _extends({}, this.props, { className: _classnames2['default'](this.props.className, classes) }),
40579 this.props.header ? this.renderStructuredContent() : this.props.children
40580 );
40581 };
40582
40583 ListGroupItem.prototype.renderStructuredContent = function renderStructuredContent() {
40584 var header = undefined;
40585 var headingClass = _utilsBootstrapUtils.prefix(this.props, 'heading');
40586
40587 if (_react2['default'].isValidElement(this.props.header)) {
40588 header = _react.cloneElement(this.props.header, {
40589 key: 'header',
40590 className: _classnames2['default'](this.props.header.props.className, headingClass)
40591 });
40592 } else {
40593 header = _react2['default'].createElement(
40594 'h4',
40595 { key: 'header', className: headingClass },
40596 this.props.header
40597 );
40598 }
40599
40600 var content = _react2['default'].createElement(
40601 'p',
40602 { key: 'content', className: _utilsBootstrapUtils.prefix(this.props, 'text') },
40603 this.props.children
40604 );
40605
40606 return [header, content];
40607 };
40608
40609 return ListGroupItem;
40610 })(_react2['default'].Component);
40611
40612 ListGroupItem.propTypes = {
40613 className: _react2['default'].PropTypes.string,
40614 active: _react2['default'].PropTypes.any,
40615 disabled: _react2['default'].PropTypes.any,
40616 header: _react2['default'].PropTypes.node,
40617 listItem: _react2['default'].PropTypes.bool,
40618 onClick: _react2['default'].PropTypes.func,
40619 eventKey: _react2['default'].PropTypes.any,
40620 href: _react2['default'].PropTypes.string,
40621 target: _react2['default'].PropTypes.string
40622 };
40623
40624 ListGroupItem.defaultTypes = {
40625 listItem: false
40626 };
40627
40628 exports['default'] = _utilsBootstrapUtils.bsStyles(_styleMaps.State.values(), _utilsBootstrapUtils.bsClass('list-group-item', ListGroupItem));
40629 module.exports = exports['default'];
40630
40631/***/ },
40632/* 521 */
40633/***/ function(module, exports, __webpack_require__) {
40634
40635 'use strict';
40636
40637 var _objectWithoutProperties = __webpack_require__(355)['default'];
40638
40639 var _extends = __webpack_require__(338)['default'];
40640
40641 var _Object$assign = __webpack_require__(339)['default'];
40642
40643 var _interopRequireDefault = __webpack_require__(335)['default'];
40644
40645 exports.__esModule = true;
40646
40647 var _react = __webpack_require__(89);
40648
40649 var _react2 = _interopRequireDefault(_react);
40650
40651 var _reactPropTypesLibElementType = __webpack_require__(380);
40652
40653 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
40654
40655 var _classnames = __webpack_require__(356);
40656
40657 var _classnames2 = _interopRequireDefault(_classnames);
40658
40659 var _MediaHeading = __webpack_require__(522);
40660
40661 var _MediaHeading2 = _interopRequireDefault(_MediaHeading);
40662
40663 var _MediaBody = __webpack_require__(523);
40664
40665 var _MediaBody2 = _interopRequireDefault(_MediaBody);
40666
40667 var _MediaLeft = __webpack_require__(524);
40668
40669 var _MediaLeft2 = _interopRequireDefault(_MediaLeft);
40670
40671 var _MediaRight = __webpack_require__(525);
40672
40673 var _MediaRight2 = _interopRequireDefault(_MediaRight);
40674
40675 var _MediaList = __webpack_require__(526);
40676
40677 var _MediaList2 = _interopRequireDefault(_MediaList);
40678
40679 var _MediaListItem = __webpack_require__(527);
40680
40681 var _MediaListItem2 = _interopRequireDefault(_MediaListItem);
40682
40683 var Media = _react2['default'].createClass({
40684 displayName: 'Media',
40685 propTypes: {
40686 /**
40687 * You can use a custom element for the media container
40688 */
40689 componentClass: _reactPropTypesLibElementType2['default']
40690 },
40691
40692 getDefaultProps: function getDefaultProps() {
40693 return {
40694 componentClass: 'div'
40695 };
40696 },
40697
40698 render: function render() {
40699 var _props = this.props;
40700 var ComponentClass = _props.componentClass;
40701 var className = _props.className;
40702
40703 var props = _objectWithoutProperties(_props, ['componentClass', 'className']);
40704
40705 return _react2['default'].createElement(ComponentClass, _extends({}, props, { className: _classnames2['default'](className, 'media') }));
40706 }
40707 });
40708
40709 Media = _Object$assign(Media, { Heading: _MediaHeading2['default'], Body: _MediaBody2['default'], Left: _MediaLeft2['default'], Right: _MediaRight2['default'], List: _MediaList2['default'], ListItem: _MediaListItem2['default'] });
40710
40711 exports['default'] = Media;
40712 module.exports = exports['default'];
40713
40714/***/ },
40715/* 522 */
40716/***/ function(module, exports, __webpack_require__) {
40717
40718 'use strict';
40719
40720 var _objectWithoutProperties = __webpack_require__(355)['default'];
40721
40722 var _extends = __webpack_require__(338)['default'];
40723
40724 var _interopRequireDefault = __webpack_require__(335)['default'];
40725
40726 exports.__esModule = true;
40727
40728 var _react = __webpack_require__(89);
40729
40730 var _react2 = _interopRequireDefault(_react);
40731
40732 var _reactPropTypesLibElementType = __webpack_require__(380);
40733
40734 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
40735
40736 var _classnames = __webpack_require__(356);
40737
40738 var _classnames2 = _interopRequireDefault(_classnames);
40739
40740 var MediaHeading = _react2['default'].createClass({
40741 displayName: 'Media.Heading',
40742 propTypes: {
40743 /**
40744 * You can use a custom element for the media heading
40745 */
40746 componentClass: _reactPropTypesLibElementType2['default']
40747 },
40748
40749 getDefaultProps: function getDefaultProps() {
40750 return {
40751 componentClass: 'h4'
40752 };
40753 },
40754
40755 render: function render() {
40756 var _props = this.props;
40757 var ComponentClass = _props.componentClass;
40758 var className = _props.className;
40759
40760 var props = _objectWithoutProperties(_props, ['componentClass', 'className']);
40761
40762 return _react2['default'].createElement(ComponentClass, _extends({}, props, { className: _classnames2['default'](className, 'media-heading') }));
40763 }
40764 });
40765
40766 exports['default'] = MediaHeading;
40767 module.exports = exports['default'];
40768
40769/***/ },
40770/* 523 */
40771/***/ function(module, exports, __webpack_require__) {
40772
40773 'use strict';
40774
40775 var _objectWithoutProperties = __webpack_require__(355)['default'];
40776
40777 var _extends = __webpack_require__(338)['default'];
40778
40779 var _interopRequireDefault = __webpack_require__(335)['default'];
40780
40781 exports.__esModule = true;
40782
40783 var _react = __webpack_require__(89);
40784
40785 var _react2 = _interopRequireDefault(_react);
40786
40787 var _reactPropTypesLibElementType = __webpack_require__(380);
40788
40789 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
40790
40791 var _classnames = __webpack_require__(356);
40792
40793 var _classnames2 = _interopRequireDefault(_classnames);
40794
40795 var MediaBody = _react2['default'].createClass({
40796 displayName: 'Media.Body',
40797 propTypes: {
40798 /**
40799 * You can use a custom element for the media body
40800 */
40801 componentClass: _reactPropTypesLibElementType2['default']
40802 },
40803
40804 getDefaultProps: function getDefaultProps() {
40805 return {
40806 componentClass: 'div'
40807 };
40808 },
40809
40810 render: function render() {
40811 var _props = this.props;
40812 var ComponentClass = _props.componentClass;
40813 var className = _props.className;
40814
40815 var props = _objectWithoutProperties(_props, ['componentClass', 'className']);
40816
40817 return _react2['default'].createElement(ComponentClass, _extends({}, props, { className: _classnames2['default'](className, 'media-body') }));
40818 }
40819 });
40820
40821 exports['default'] = MediaBody;
40822 module.exports = exports['default'];
40823
40824/***/ },
40825/* 524 */
40826/***/ function(module, exports, __webpack_require__) {
40827
40828 'use strict';
40829
40830 var _objectWithoutProperties = __webpack_require__(355)['default'];
40831
40832 var _extends = __webpack_require__(338)['default'];
40833
40834 var _interopRequireDefault = __webpack_require__(335)['default'];
40835
40836 exports.__esModule = true;
40837
40838 var _react = __webpack_require__(89);
40839
40840 var _react2 = _interopRequireDefault(_react);
40841
40842 var _classnames = __webpack_require__(356);
40843
40844 var _classnames2 = _interopRequireDefault(_classnames);
40845
40846 var MediaLeft = _react2['default'].createClass({
40847 displayName: 'Media.Left',
40848 propTypes: {
40849 /**
40850 * Align the media to the top, middle or bottom
40851 * of the media object
40852 */
40853 align: _react2['default'].PropTypes.oneOf(['top', 'middle', 'bottom'])
40854 },
40855
40856 render: function render() {
40857 var _classNames;
40858
40859 var _props = this.props;
40860 var align = _props.align;
40861 var className = _props.className;
40862
40863 var props = _objectWithoutProperties(_props, ['align', 'className']);
40864
40865 var classes = _classnames2['default'](className, 'media-left', (_classNames = {}, _classNames['media-' + align] = Boolean(align), _classNames));
40866
40867 // Only add the media-alignment class if align is passed in props
40868 return _react2['default'].createElement('div', _extends({}, props, { className: classes }));
40869 }
40870 });
40871
40872 exports['default'] = MediaLeft;
40873 module.exports = exports['default'];
40874
40875/***/ },
40876/* 525 */
40877/***/ function(module, exports, __webpack_require__) {
40878
40879 'use strict';
40880
40881 var _objectWithoutProperties = __webpack_require__(355)['default'];
40882
40883 var _extends = __webpack_require__(338)['default'];
40884
40885 var _interopRequireDefault = __webpack_require__(335)['default'];
40886
40887 exports.__esModule = true;
40888
40889 var _react = __webpack_require__(89);
40890
40891 var _react2 = _interopRequireDefault(_react);
40892
40893 var _classnames = __webpack_require__(356);
40894
40895 var _classnames2 = _interopRequireDefault(_classnames);
40896
40897 var MediaRight = _react2['default'].createClass({
40898 displayName: 'Media.Right',
40899 propTypes: {
40900 /**
40901 * Align the media to the top, middle or bottom
40902 * of the media object
40903 */
40904 align: _react2['default'].PropTypes.oneOf(['top', 'middle', 'bottom'])
40905 },
40906
40907 render: function render() {
40908 var _classNames;
40909
40910 var _props = this.props;
40911 var align = _props.align;
40912 var className = _props.className;
40913
40914 var props = _objectWithoutProperties(_props, ['align', 'className']);
40915
40916 var classes = _classnames2['default'](className, 'media-right', (_classNames = {}, _classNames['media-' + align] = Boolean(align), _classNames));
40917
40918 // Only add the media-alignment class if align is passed in props
40919 return _react2['default'].createElement('div', _extends({}, props, { className: classes }));
40920 }
40921 });
40922
40923 exports['default'] = MediaRight;
40924 module.exports = exports['default'];
40925
40926/***/ },
40927/* 526 */
40928/***/ function(module, exports, __webpack_require__) {
40929
40930 'use strict';
40931
40932 var _objectWithoutProperties = __webpack_require__(355)['default'];
40933
40934 var _extends = __webpack_require__(338)['default'];
40935
40936 var _interopRequireDefault = __webpack_require__(335)['default'];
40937
40938 exports.__esModule = true;
40939
40940 var _react = __webpack_require__(89);
40941
40942 var _react2 = _interopRequireDefault(_react);
40943
40944 var _classnames = __webpack_require__(356);
40945
40946 var _classnames2 = _interopRequireDefault(_classnames);
40947
40948 var MediaList = _react2['default'].createClass({
40949 displayName: 'Media.List',
40950 render: function render() {
40951 var _props = this.props;
40952 var className = _props.className;
40953
40954 var props = _objectWithoutProperties(_props, ['className']);
40955
40956 return _react2['default'].createElement('ul', _extends({}, props, { className: _classnames2['default'](className, 'media-list') }));
40957 }
40958 });
40959
40960 exports['default'] = MediaList;
40961 module.exports = exports['default'];
40962
40963/***/ },
40964/* 527 */
40965/***/ function(module, exports, __webpack_require__) {
40966
40967 'use strict';
40968
40969 var _objectWithoutProperties = __webpack_require__(355)['default'];
40970
40971 var _extends = __webpack_require__(338)['default'];
40972
40973 var _interopRequireDefault = __webpack_require__(335)['default'];
40974
40975 exports.__esModule = true;
40976
40977 var _react = __webpack_require__(89);
40978
40979 var _react2 = _interopRequireDefault(_react);
40980
40981 var _classnames = __webpack_require__(356);
40982
40983 var _classnames2 = _interopRequireDefault(_classnames);
40984
40985 var MediaListItem = _react2['default'].createClass({
40986 displayName: 'Media.ListItem',
40987 render: function render() {
40988 var _props = this.props;
40989 var className = _props.className;
40990
40991 var props = _objectWithoutProperties(_props, ['className']);
40992
40993 return _react2['default'].createElement('li', _extends({}, props, { className: _classnames2['default'](className, 'media') }));
40994 }
40995 });
40996
40997 exports['default'] = MediaListItem;
40998 module.exports = exports['default'];
40999
41000/***/ },
41001/* 528 */
41002/***/ function(module, exports, __webpack_require__) {
41003
41004 'use strict';
41005
41006 var _inherits = __webpack_require__(372)['default'];
41007
41008 var _classCallCheck = __webpack_require__(379)['default'];
41009
41010 var _objectWithoutProperties = __webpack_require__(355)['default'];
41011
41012 var _extends = __webpack_require__(338)['default'];
41013
41014 var _interopRequireDefault = __webpack_require__(335)['default'];
41015
41016 exports.__esModule = true;
41017
41018 var _classnames = __webpack_require__(356);
41019
41020 var _classnames2 = _interopRequireDefault(_classnames);
41021
41022 var _react = __webpack_require__(89);
41023
41024 var _react2 = _interopRequireDefault(_react);
41025
41026 var _reactPropTypesLibAll = __webpack_require__(384);
41027
41028 var _reactPropTypesLibAll2 = _interopRequireDefault(_reactPropTypesLibAll);
41029
41030 var _utilsBootstrapUtils = __webpack_require__(357);
41031
41032 var _utilsCreateChainedFunction = __webpack_require__(414);
41033
41034 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
41035
41036 var _SafeAnchor = __webpack_require__(371);
41037
41038 var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
41039
41040 var MenuItem = (function (_React$Component) {
41041 _inherits(MenuItem, _React$Component);
41042
41043 function MenuItem(props) {
41044 _classCallCheck(this, MenuItem);
41045
41046 _React$Component.call(this, props);
41047
41048 this.handleClick = this.handleClick.bind(this);
41049 }
41050
41051 MenuItem.prototype.handleClick = function handleClick(event) {
41052 if (!this.props.href || this.props.disabled) {
41053 event.preventDefault();
41054 }
41055
41056 if (this.props.disabled) {
41057 return;
41058 }
41059
41060 if (this.props.onSelect) {
41061 this.props.onSelect(this.props.eventKey, event);
41062 }
41063 };
41064
41065 MenuItem.prototype.render = function render() {
41066 if (this.props.divider) {
41067 return _react2['default'].createElement('li', {
41068 role: 'separator',
41069 className: _classnames2['default']('divider', this.props.className),
41070 style: this.props.style
41071 });
41072 }
41073
41074 if (this.props.header) {
41075 var headerClass = _utilsBootstrapUtils.prefix(this.props, 'header');
41076
41077 return _react2['default'].createElement(
41078 'li',
41079 {
41080 role: 'heading',
41081 className: _classnames2['default'](headerClass, this.props.className),
41082 style: this.props.style
41083 },
41084 this.props.children
41085 );
41086 }
41087
41088 var _props = this.props;
41089 var className = _props.className;
41090 var style = _props.style;
41091 var onClick = _props.onClick;
41092
41093 var props = _objectWithoutProperties(_props, ['className', 'style', 'onClick']);
41094
41095 delete props.onSelect;
41096
41097 var classes = {
41098 disabled: this.props.disabled,
41099 active: this.props.active
41100 };
41101
41102 return _react2['default'].createElement(
41103 'li',
41104 { role: 'presentation',
41105 className: _classnames2['default'](className, classes),
41106 style: style
41107 },
41108 _react2['default'].createElement(_SafeAnchor2['default'], _extends({}, props, {
41109 role: 'menuitem',
41110 tabIndex: '-1',
41111 onClick: _utilsCreateChainedFunction2['default'](onClick, this.handleClick)
41112 }))
41113 );
41114 };
41115
41116 return MenuItem;
41117 })(_react2['default'].Component);
41118
41119 MenuItem.propTypes = {
41120
41121 /**
41122 * Highlight the menu item as active.
41123 */
41124 active: _react2['default'].PropTypes.bool,
41125
41126 /**
41127 * Disable the menu item, making it unselectable.
41128 */
41129 disabled: _react2['default'].PropTypes.bool,
41130
41131 /**
41132 * Styles the menu item as a horizontal rule, providing visual separation between
41133 * groups of menu items.
41134 */
41135 divider: _reactPropTypesLibAll2['default'](_react2['default'].PropTypes.bool, function (props) {
41136 if (props.divider && props.children) {
41137 return new Error('Children will not be rendered for dividers');
41138 }
41139 }),
41140
41141 /**
41142 * Value passed to the `onSelect` handler, useful for identifying the selected menu item.
41143 */
41144 eventKey: _react2['default'].PropTypes.any,
41145
41146 /**
41147 * Styles the menu item as a header label, useful for describing a group of menu items.
41148 */
41149 header: _react2['default'].PropTypes.bool,
41150
41151 /**
41152 * HTML `href` attribute corresponding to `a.href`.
41153 */
41154 href: _react2['default'].PropTypes.string,
41155
41156 /**
41157 * HTML `target` attribute corresponding to `a.target`.
41158 */
41159 target: _react2['default'].PropTypes.string,
41160
41161 /**
41162 * HTML `title` attribute corresponding to `a.title`.
41163 */
41164 title: _react2['default'].PropTypes.string,
41165
41166 /**
41167 * Callback fired when the menu item is clicked.
41168 */
41169 onClick: _react2['default'].PropTypes.func,
41170
41171 onKeyDown: _react2['default'].PropTypes.func,
41172
41173 /**
41174 * Callback fired when the menu item is selected.
41175 *
41176 * ```js
41177 * (eventKey: any, event: Object) => any
41178 * ```
41179 */
41180 onSelect: _react2['default'].PropTypes.func,
41181
41182 /**
41183 * HTML `id` attribute.
41184 */
41185 id: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number])
41186 };
41187
41188 MenuItem.defaultProps = {
41189 divider: false,
41190 disabled: false,
41191 header: false
41192 };
41193
41194 exports['default'] = _utilsBootstrapUtils.bsClass('dropdown', MenuItem);
41195 module.exports = exports['default'];
41196
41197/***/ },
41198/* 529 */
41199/***/ function(module, exports, __webpack_require__) {
41200
41201 'use strict';
41202
41203 var _extends = __webpack_require__(338)['default'];
41204
41205 var _objectWithoutProperties = __webpack_require__(355)['default'];
41206
41207 var _Object$keys = __webpack_require__(361)['default'];
41208
41209 var _interopRequireDefault = __webpack_require__(335)['default'];
41210
41211 exports.__esModule = true;
41212
41213 var _classnames = __webpack_require__(356);
41214
41215 var _classnames2 = _interopRequireDefault(_classnames);
41216
41217 var _domHelpersEvents = __webpack_require__(530);
41218
41219 var _domHelpersEvents2 = _interopRequireDefault(_domHelpersEvents);
41220
41221 var _domHelpersOwnerDocument = __webpack_require__(417);
41222
41223 var _domHelpersOwnerDocument2 = _interopRequireDefault(_domHelpersOwnerDocument);
41224
41225 var _domHelpersUtilInDOM = __webpack_require__(412);
41226
41227 var _domHelpersUtilInDOM2 = _interopRequireDefault(_domHelpersUtilInDOM);
41228
41229 var _domHelpersUtilScrollbarSize = __webpack_require__(533);
41230
41231 var _domHelpersUtilScrollbarSize2 = _interopRequireDefault(_domHelpersUtilScrollbarSize);
41232
41233 var _lodashCompatObjectPick = __webpack_require__(501);
41234
41235 var _lodashCompatObjectPick2 = _interopRequireDefault(_lodashCompatObjectPick);
41236
41237 var _react = __webpack_require__(89);
41238
41239 var _react2 = _interopRequireDefault(_react);
41240
41241 var _reactDom = __webpack_require__(122);
41242
41243 var _reactDom2 = _interopRequireDefault(_reactDom);
41244
41245 var _reactOverlaysLibModal = __webpack_require__(534);
41246
41247 var _reactOverlaysLibModal2 = _interopRequireDefault(_reactOverlaysLibModal);
41248
41249 var _reactOverlaysLibUtilsIsOverflowing = __webpack_require__(546);
41250
41251 var _reactOverlaysLibUtilsIsOverflowing2 = _interopRequireDefault(_reactOverlaysLibUtilsIsOverflowing);
41252
41253 var _reactPropTypesLibDeprecated = __webpack_require__(367);
41254
41255 var _reactPropTypesLibDeprecated2 = _interopRequireDefault(_reactPropTypesLibDeprecated);
41256
41257 var _reactPropTypesLibElementType = __webpack_require__(380);
41258
41259 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
41260
41261 var _styleMaps = __webpack_require__(358);
41262
41263 var _utilsBootstrapUtils = __webpack_require__(357);
41264
41265 var _Fade = __webpack_require__(502);
41266
41267 var _Fade2 = _interopRequireDefault(_Fade);
41268
41269 var _ModalDialog = __webpack_require__(550);
41270
41271 var _ModalDialog2 = _interopRequireDefault(_ModalDialog);
41272
41273 var _ModalBody = __webpack_require__(551);
41274
41275 var _ModalBody2 = _interopRequireDefault(_ModalBody);
41276
41277 var _ModalHeader = __webpack_require__(552);
41278
41279 var _ModalHeader2 = _interopRequireDefault(_ModalHeader);
41280
41281 var _ModalTitle = __webpack_require__(553);
41282
41283 var _ModalTitle2 = _interopRequireDefault(_ModalTitle);
41284
41285 var _ModalFooter = __webpack_require__(554);
41286
41287 var _ModalFooter2 = _interopRequireDefault(_ModalFooter);
41288
41289 /* eslint-disable react/prop-types */
41290 var Modal = _react2['default'].createClass({
41291 displayName: 'Modal',
41292
41293 propTypes: _extends({}, _reactOverlaysLibModal2['default'].propTypes, _ModalDialog2['default'].propTypes, {
41294
41295 /**
41296 * Include a backdrop component. Specify 'static' for a backdrop that doesn't trigger an "onHide" when clicked.
41297 */
41298 backdrop: _react2['default'].PropTypes.oneOf(['static', true, false]),
41299
41300 /**
41301 * Close the modal when escape key is pressed
41302 */
41303 keyboard: _react2['default'].PropTypes.bool,
41304
41305 /**
41306 * Open and close the Modal with a slide and fade animation.
41307 */
41308 animation: _react2['default'].PropTypes.bool,
41309
41310 /**
41311 * A Component type that provides the modal content Markup. This is a useful prop when you want to use your own
41312 * styles and markup to create a custom modal component.
41313 */
41314 dialogComponentClass: _reactPropTypesLibElementType2['default'],
41315
41316 /**
41317 * @private
41318 */
41319 dialogComponent: _reactPropTypesLibDeprecated2['default'](_reactPropTypesLibElementType2['default'], 'Use `dialogComponentClass`.'),
41320
41321 /**
41322 * When `true` The modal will automatically shift focus to itself when it opens, and replace it to the last focused element when it closes.
41323 * Generally this should never be set to false as it makes the Modal less accessible to assistive technologies, like screen-readers.
41324 */
41325 autoFocus: _react2['default'].PropTypes.bool,
41326
41327 /**
41328 * When `true` The modal will prevent focus from leaving the Modal while open.
41329 * Consider leaving the default value here, as it is necessary to make the Modal work well with assistive technologies,
41330 * such as screen readers.
41331 */
41332 enforceFocus: _react2['default'].PropTypes.bool,
41333
41334 /**
41335 * Hide this from automatic props documentation generation.
41336 * @private
41337 */
41338 bsStyle: _react2['default'].PropTypes.string,
41339
41340 /**
41341 * When `true` The modal will show itself.
41342 */
41343 show: _react2['default'].PropTypes.bool,
41344
41345 /**
41346 * A callback fired when the header closeButton or non-static backdrop is
41347 * clicked. Required if either are specified.
41348 */
41349 onHide: _react2['default'].PropTypes.func,
41350
41351 /**
41352 * Callback fired before the Modal transitions in
41353 */
41354 onEnter: _react2['default'].PropTypes.func,
41355
41356 /**
41357 * Callback fired as the Modal begins to transition in
41358 */
41359 onEntering: _react2['default'].PropTypes.func,
41360
41361 /**
41362 * Callback fired after the Modal finishes transitioning in
41363 */
41364 onEntered: _react2['default'].PropTypes.func,
41365
41366 /**
41367 * Callback fired right before the Modal transitions out
41368 */
41369 onExit: _react2['default'].PropTypes.func,
41370
41371 /**
41372 * Callback fired as the Modal begins to transition out
41373 */
41374 onExiting: _react2['default'].PropTypes.func,
41375
41376 /**
41377 * Callback fired after the Modal finishes transitioning out
41378 */
41379 onExited: _react2['default'].PropTypes.func
41380 }),
41381
41382 childContextTypes: {
41383 '$bs_onModalHide': _react2['default'].PropTypes.func
41384 },
41385
41386 getDefaultProps: function getDefaultProps() {
41387 return _extends({}, _reactOverlaysLibModal2['default'].defaultProps, {
41388 bsClass: 'modal',
41389 animation: true,
41390 dialogComponentClass: _ModalDialog2['default']
41391 });
41392 },
41393
41394 getInitialState: function getInitialState() {
41395 return {
41396 modalStyles: {}
41397 };
41398 },
41399
41400 getChildContext: function getChildContext() {
41401 return {
41402 $bs_onModalHide: this.props.onHide
41403 };
41404 },
41405
41406 componentWillUnmount: function componentWillUnmount() {
41407 _domHelpersEvents2['default'].off(window, 'resize', this.handleWindowResize);
41408 },
41409
41410 render: function render() {
41411 var _this = this;
41412
41413 var _props = this.props;
41414 var className = _props.className;
41415 var children = _props.children;
41416 var dialogClassName = _props.dialogClassName;
41417 var animation = _props.animation;
41418
41419 var props = _objectWithoutProperties(_props, ['className', 'children', 'dialogClassName', 'animation']);
41420
41421 var modalStyles = this.state.modalStyles;
41422
41423 var inClass = { 'in': props.show && !animation };
41424 var Dialog = props.dialogComponent || props.dialogComponentClass;
41425
41426 var parentProps = _lodashCompatObjectPick2['default'](props, _Object$keys(_reactOverlaysLibModal2['default'].propTypes).concat(['onExit', 'onExiting', 'onEnter', 'onEntered']) // the rest are fired in _onHide() and _onShow()
41427 );
41428
41429 var modal = _react2['default'].createElement(
41430 Dialog,
41431 _extends({
41432 key: 'modal',
41433 ref: function (ref) {
41434 return _this._modal = ref;
41435 }
41436 }, props, {
41437 style: modalStyles,
41438 className: _classnames2['default'](className, inClass),
41439 dialogClassName: dialogClassName,
41440 onClick: props.backdrop === true ? this.handleDialogClick : null
41441 }),
41442 this.props.children
41443 );
41444
41445 return _react2['default'].createElement(
41446 _reactOverlaysLibModal2['default'],
41447 _extends({}, parentProps, {
41448 show: props.show,
41449 ref: function (ref) {
41450 _this._wrapper = ref && ref.refs.modal;
41451 _this._backdrop = ref && ref.refs.backdrop;
41452 },
41453 onEntering: this._onShow,
41454 onExited: this._onHide,
41455 backdropClassName: _classnames2['default'](_utilsBootstrapUtils.prefix(props, 'backdrop'), inClass),
41456 containerClassName: _utilsBootstrapUtils.prefix(props, 'open'),
41457 transition: animation ? _Fade2['default'] : undefined,
41458 dialogTransitionTimeout: Modal.TRANSITION_DURATION,
41459 backdropTransitionTimeout: Modal.BACKDROP_TRANSITION_DURATION
41460 }),
41461 modal
41462 );
41463 },
41464
41465 _onShow: function _onShow() {
41466 _domHelpersEvents2['default'].on(window, 'resize', this.handleWindowResize);
41467
41468 this.setState(this._getStyles());
41469
41470 if (this.props.onEntering) {
41471 var _props2;
41472
41473 (_props2 = this.props).onEntering.apply(_props2, arguments);
41474 }
41475 },
41476
41477 _onHide: function _onHide() {
41478 _domHelpersEvents2['default'].off(window, 'resize', this.handleWindowResize);
41479
41480 if (this.props.onExited) {
41481 var _props3;
41482
41483 (_props3 = this.props).onExited.apply(_props3, arguments);
41484 }
41485 },
41486
41487 handleDialogClick: function handleDialogClick(e) {
41488 if (e.target !== e.currentTarget) {
41489 return;
41490 }
41491
41492 this.props.onHide();
41493 },
41494
41495 handleWindowResize: function handleWindowResize() {
41496 this.setState(this._getStyles());
41497 },
41498
41499 _getStyles: function _getStyles() {
41500 if (!_domHelpersUtilInDOM2['default']) {
41501 return {};
41502 }
41503
41504 var node = _reactDom2['default'].findDOMNode(this._modal);
41505 var doc = _domHelpersOwnerDocument2['default'](node);
41506
41507 var scrollHt = node.scrollHeight;
41508 var bodyIsOverflowing = _reactOverlaysLibUtilsIsOverflowing2['default'](_reactDom2['default'].findDOMNode(this.props.container || doc.body));
41509 var modalIsOverflowing = scrollHt > doc.documentElement.clientHeight;
41510
41511 return {
41512 modalStyles: {
41513 paddingRight: bodyIsOverflowing && !modalIsOverflowing ? _domHelpersUtilScrollbarSize2['default']() : void 0,
41514 paddingLeft: !bodyIsOverflowing && modalIsOverflowing ? _domHelpersUtilScrollbarSize2['default']() : void 0
41515 }
41516 };
41517 }
41518 });
41519
41520 Modal.Body = _ModalBody2['default'];
41521 Modal.Header = _ModalHeader2['default'];
41522 Modal.Title = _ModalTitle2['default'];
41523 Modal.Footer = _ModalFooter2['default'];
41524
41525 Modal.Dialog = _ModalDialog2['default'];
41526
41527 Modal.TRANSITION_DURATION = 300;
41528 Modal.BACKDROP_TRANSITION_DURATION = 150;
41529
41530 exports['default'] = _utilsBootstrapUtils.bsSizes([_styleMaps.Sizes.LARGE, _styleMaps.Sizes.SMALL], _utilsBootstrapUtils.bsClass('modal', Modal));
41531 module.exports = exports['default'];
41532
41533/***/ },
41534/* 530 */
41535/***/ function(module, exports, __webpack_require__) {
41536
41537 'use strict';
41538 var on = __webpack_require__(413),
41539 off = __webpack_require__(497),
41540 filter = __webpack_require__(531);
41541
41542 module.exports = { on: on, off: off, filter: filter };
41543
41544/***/ },
41545/* 531 */
41546/***/ function(module, exports, __webpack_require__) {
41547
41548 'use strict';
41549
41550 var contains = __webpack_require__(418),
41551 qsa = __webpack_require__(532);
41552
41553 module.exports = function (selector, handler) {
41554 return function (e) {
41555 var top = e.currentTarget,
41556 target = e.target,
41557 matches = qsa(top, selector);
41558
41559 if (matches.some(function (match) {
41560 return contains(match, target);
41561 })) handler.call(this, e);
41562 };
41563 };
41564
41565/***/ },
41566/* 532 */
41567/***/ function(module, exports) {
41568
41569 'use strict';
41570 // Zepto.js
41571 // (c) 2010-2015 Thomas Fuchs
41572 // Zepto.js may be freely distributed under the MIT license.
41573 var simpleSelectorRE = /^[\w-]*$/,
41574 toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);
41575
41576 module.exports = function qsa(element, selector) {
41577 var maybeID = selector[0] === '#',
41578 maybeClass = selector[0] === '.',
41579 nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,
41580 isSimple = simpleSelectorRE.test(nameOnly),
41581 found;
41582
41583 if (isSimple) {
41584 if (maybeID) {
41585 element = element.getElementById ? element : document;
41586 return (found = element.getElementById(nameOnly)) ? [found] : [];
41587 }
41588
41589 if (element.getElementsByClassName && maybeClass) return toArray(element.getElementsByClassName(nameOnly));
41590
41591 return toArray(element.getElementsByTagName(selector));
41592 }
41593
41594 return toArray(element.querySelectorAll(selector));
41595 };
41596
41597/***/ },
41598/* 533 */
41599/***/ function(module, exports, __webpack_require__) {
41600
41601 'use strict';
41602
41603 var canUseDOM = __webpack_require__(412);
41604
41605 var size;
41606
41607 module.exports = function (recalc) {
41608 if (!size || recalc) {
41609 if (canUseDOM) {
41610 var scrollDiv = document.createElement('div');
41611
41612 scrollDiv.style.position = 'absolute';
41613 scrollDiv.style.top = '-9999px';
41614 scrollDiv.style.width = '50px';
41615 scrollDiv.style.height = '50px';
41616 scrollDiv.style.overflow = 'scroll';
41617
41618 document.body.appendChild(scrollDiv);
41619 size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
41620 document.body.removeChild(scrollDiv);
41621 }
41622 }
41623
41624 return size;
41625 };
41626
41627/***/ },
41628/* 534 */
41629/***/ function(module, exports, __webpack_require__) {
41630
41631 'use strict';
41632
41633 Object.defineProperty(exports, "__esModule", {
41634 value: true
41635 });
41636
41637 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /*eslint-disable react/prop-types */
41638
41639
41640 var _react = __webpack_require__(89);
41641
41642 var _react2 = _interopRequireDefault(_react);
41643
41644 var _warning = __webpack_require__(535);
41645
41646 var _warning2 = _interopRequireDefault(_warning);
41647
41648 var _componentOrElement = __webpack_require__(536);
41649
41650 var _componentOrElement2 = _interopRequireDefault(_componentOrElement);
41651
41652 var _elementType = __webpack_require__(538);
41653
41654 var _elementType2 = _interopRequireDefault(_elementType);
41655
41656 var _Portal = __webpack_require__(539);
41657
41658 var _Portal2 = _interopRequireDefault(_Portal);
41659
41660 var _ModalManager = __webpack_require__(541);
41661
41662 var _ModalManager2 = _interopRequireDefault(_ModalManager);
41663
41664 var _ownerDocument = __webpack_require__(498);
41665
41666 var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
41667
41668 var _addEventListener = __webpack_require__(496);
41669
41670 var _addEventListener2 = _interopRequireDefault(_addEventListener);
41671
41672 var _addFocusListener = __webpack_require__(549);
41673
41674 var _addFocusListener2 = _interopRequireDefault(_addFocusListener);
41675
41676 var _inDOM = __webpack_require__(412);
41677
41678 var _inDOM2 = _interopRequireDefault(_inDOM);
41679
41680 var _activeElement = __webpack_require__(416);
41681
41682 var _activeElement2 = _interopRequireDefault(_activeElement);
41683
41684 var _contains = __webpack_require__(418);
41685
41686 var _contains2 = _interopRequireDefault(_contains);
41687
41688 var _getContainer = __webpack_require__(540);
41689
41690 var _getContainer2 = _interopRequireDefault(_getContainer);
41691
41692 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41693
41694 var modalManager = new _ModalManager2.default();
41695
41696 /**
41697 * Love them or hate them, `<Modal/>` provides a solid foundation for creating dialogs, lightboxes, or whatever else.
41698 * The Modal component renders its `children` node in front of a backdrop component.
41699 *
41700 * The Modal offers a few helpful features over using just a `<Portal/>` component and some styles:
41701 *
41702 * - Manages dialog stacking when one-at-a-time just isn't enough.
41703 * - Creates a backdrop, for disabling interaction below the modal.
41704 * - It properly manages focus; moving to the modal content, and keeping it there until the modal is closed.
41705 * - It disables scrolling of the page content while open.
41706 * - Adds the appropriate ARIA roles are automatically.
41707 * - Easily pluggable animations via a `<Transition/>` component.
41708 *
41709 * Note that, in the same way the backdrop element prevents users from clicking or interacting
41710 * with the page content underneath the Modal, Screen readers also need to be signaled to not to
41711 * interact with page content while the Modal is open. To do this, we use a common technique of applying
41712 * the `aria-hidden='true'` attribute to the non-Modal elements in the Modal `container`. This means that for
41713 * a Modal to be truly modal, it should have a `container` that is _outside_ your app's
41714 * React hierarchy (such as the default: document.body).
41715 */
41716 var Modal = _react2.default.createClass({
41717 displayName: 'Modal',
41718
41719
41720 propTypes: _extends({}, _Portal2.default.propTypes, {
41721
41722 /**
41723 * Set the visibility of the Modal
41724 */
41725 show: _react2.default.PropTypes.bool,
41726
41727 /**
41728 * A Node, Component instance, or function that returns either. The Modal is appended to it's container element.
41729 *
41730 * For the sake of assistive technologies, the container should usually be the document body, so that the rest of the
41731 * page content can be placed behind a virtual backdrop as well as a visual one.
41732 */
41733 container: _react2.default.PropTypes.oneOfType([_componentOrElement2.default, _react2.default.PropTypes.func]),
41734
41735 /**
41736 * A callback fired when the Modal is opening.
41737 */
41738 onShow: _react2.default.PropTypes.func,
41739
41740 /**
41741 * A callback fired when either the backdrop is clicked, or the escape key is pressed.
41742 *
41743 * The `onHide` callback only signals intent from the Modal,
41744 * you must actually set the `show` prop to `false` for the Modal to close.
41745 */
41746 onHide: _react2.default.PropTypes.func,
41747
41748 /**
41749 * Include a backdrop component.
41750 */
41751 backdrop: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.bool, _react2.default.PropTypes.oneOf(['static'])]),
41752
41753 /**
41754 * A function that returns a backdrop component. Useful for custom
41755 * backdrop rendering.
41756 *
41757 * ```js
41758 * renderBackdrop={props => <MyBackdrop {...props} />}
41759 * ```
41760 */
41761 renderBackdrop: _react2.default.PropTypes.func,
41762
41763 /**
41764 * A callback fired when the escape key, if specified in `keyboard`, is pressed.
41765 */
41766 onEscapeKeyUp: _react2.default.PropTypes.func,
41767
41768 /**
41769 * A callback fired when the backdrop, if specified, is clicked.
41770 */
41771 onBackdropClick: _react2.default.PropTypes.func,
41772
41773 /**
41774 * A style object for the backdrop component.
41775 */
41776 backdropStyle: _react2.default.PropTypes.object,
41777
41778 /**
41779 * A css class or classes for the backdrop component.
41780 */
41781 backdropClassName: _react2.default.PropTypes.string,
41782
41783 /**
41784 * A css class or set of classes applied to the modal container when the modal is open,
41785 * and removed when it is closed.
41786 */
41787 containerClassName: _react2.default.PropTypes.string,
41788
41789 /**
41790 * Close the modal when escape key is pressed
41791 */
41792 keyboard: _react2.default.PropTypes.bool,
41793
41794 /**
41795 * A `<Transition/>` component to use for the dialog and backdrop components.
41796 */
41797 transition: _elementType2.default,
41798
41799 /**
41800 * The `timeout` of the dialog transition if specified. This number is used to ensure that
41801 * transition callbacks are always fired, even if browser transition events are canceled.
41802 *
41803 * See the Transition `timeout` prop for more infomation.
41804 */
41805 dialogTransitionTimeout: _react2.default.PropTypes.number,
41806
41807 /**
41808 * The `timeout` of the backdrop transition if specified. This number is used to
41809 * ensure that transition callbacks are always fired, even if browser transition events are canceled.
41810 *
41811 * See the Transition `timeout` prop for more infomation.
41812 */
41813 backdropTransitionTimeout: _react2.default.PropTypes.number,
41814
41815 /**
41816 * When `true` The modal will automatically shift focus to itself when it opens, and
41817 * replace it to the last focused element when it closes. This also
41818 * works correctly with any Modal children that have the `autoFocus` prop.
41819 *
41820 * Generally this should never be set to `false` as it makes the Modal less
41821 * accessible to assistive technologies, like screen readers.
41822 */
41823 autoFocus: _react2.default.PropTypes.bool,
41824
41825 /**
41826 * When `true` The modal will prevent focus from leaving the Modal while open.
41827 *
41828 * Generally this should never be set to `false` as it makes the Modal less
41829 * accessible to assistive technologies, like screen readers.
41830 */
41831 enforceFocus: _react2.default.PropTypes.bool,
41832
41833 /**
41834 * Callback fired before the Modal transitions in
41835 */
41836 onEnter: _react2.default.PropTypes.func,
41837
41838 /**
41839 * Callback fired as the Modal begins to transition in
41840 */
41841 onEntering: _react2.default.PropTypes.func,
41842
41843 /**
41844 * Callback fired after the Modal finishes transitioning in
41845 */
41846 onEntered: _react2.default.PropTypes.func,
41847
41848 /**
41849 * Callback fired right before the Modal transitions out
41850 */
41851 onExit: _react2.default.PropTypes.func,
41852
41853 /**
41854 * Callback fired as the Modal begins to transition out
41855 */
41856 onExiting: _react2.default.PropTypes.func,
41857
41858 /**
41859 * Callback fired after the Modal finishes transitioning out
41860 */
41861 onExited: _react2.default.PropTypes.func,
41862
41863 /**
41864 * A ModalManager instance used to track and manage the state of open
41865 * Modals. Useful when customizing how modals interact within a container
41866 */
41867 manager: _react2.default.PropTypes.object.isRequired
41868 }),
41869
41870 getDefaultProps: function getDefaultProps() {
41871 var noop = function noop() {};
41872
41873 return {
41874 show: false,
41875 backdrop: true,
41876 keyboard: true,
41877 autoFocus: true,
41878 enforceFocus: true,
41879 onHide: noop,
41880 manager: modalManager,
41881 renderBackdrop: function renderBackdrop(props) {
41882 return _react2.default.createElement('div', props);
41883 }
41884 };
41885 },
41886 getInitialState: function getInitialState() {
41887 return { exited: !this.props.show };
41888 },
41889 render: function render() {
41890 var _props = this.props;
41891 var show = _props.show;
41892 var container = _props.container;
41893 var children = _props.children;
41894 var Transition = _props.transition;
41895 var backdrop = _props.backdrop;
41896 var dialogTransitionTimeout = _props.dialogTransitionTimeout;
41897 var className = _props.className;
41898 var style = _props.style;
41899 var onExit = _props.onExit;
41900 var onExiting = _props.onExiting;
41901 var onEnter = _props.onEnter;
41902 var onEntering = _props.onEntering;
41903 var onEntered = _props.onEntered;
41904
41905
41906 var dialog = _react2.default.Children.only(children);
41907
41908 var mountModal = show || Transition && !this.state.exited;
41909 if (!mountModal) {
41910 return null;
41911 }
41912
41913 var _dialog$props = dialog.props;
41914 var role = _dialog$props.role;
41915 var tabIndex = _dialog$props.tabIndex;
41916
41917
41918 if (role === undefined || tabIndex === undefined) {
41919 dialog = (0, _react.cloneElement)(dialog, {
41920 role: role === undefined ? 'document' : role,
41921 tabIndex: tabIndex == null ? '-1' : tabIndex
41922 });
41923 }
41924
41925 if (Transition) {
41926 dialog = _react2.default.createElement(
41927 Transition,
41928 {
41929 transitionAppear: true,
41930 unmountOnExit: true,
41931 'in': show,
41932 timeout: dialogTransitionTimeout,
41933 onExit: onExit,
41934 onExiting: onExiting,
41935 onExited: this.handleHidden,
41936 onEnter: onEnter,
41937 onEntering: onEntering,
41938 onEntered: onEntered
41939 },
41940 dialog
41941 );
41942 }
41943
41944 return _react2.default.createElement(
41945 _Portal2.default,
41946 {
41947 ref: this.setMountNode,
41948 container: container
41949 },
41950 _react2.default.createElement(
41951 'div',
41952 {
41953 ref: 'modal',
41954 role: role || 'dialog',
41955 style: style,
41956 className: className
41957 },
41958 backdrop && this.renderBackdrop(),
41959 dialog
41960 )
41961 );
41962 },
41963 renderBackdrop: function renderBackdrop() {
41964 var _this = this;
41965
41966 var _props2 = this.props;
41967 var backdropStyle = _props2.backdropStyle;
41968 var backdropClassName = _props2.backdropClassName;
41969 var renderBackdrop = _props2.renderBackdrop;
41970 var Transition = _props2.transition;
41971 var backdropTransitionTimeout = _props2.backdropTransitionTimeout;
41972
41973
41974 var backdropRef = function backdropRef(ref) {
41975 return _this.backdrop = ref;
41976 };
41977
41978 var backdrop = _react2.default.createElement('div', {
41979 ref: backdropRef,
41980 style: this.props.backdropStyle,
41981 className: this.props.backdropClassName,
41982 onClick: this.handleBackdropClick
41983 });
41984
41985 if (Transition) {
41986 backdrop = _react2.default.createElement(
41987 Transition,
41988 { transitionAppear: true,
41989 'in': this.props.show,
41990 timeout: backdropTransitionTimeout
41991 },
41992 renderBackdrop({
41993 ref: backdropRef,
41994 style: backdropStyle,
41995 className: backdropClassName,
41996 onClick: this.handleBackdropClick
41997 })
41998 );
41999 }
42000
42001 return backdrop;
42002 },
42003 componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
42004 if (nextProps.show) {
42005 this.setState({ exited: false });
42006 } else if (!nextProps.transition) {
42007 // Otherwise let handleHidden take care of marking exited.
42008 this.setState({ exited: true });
42009 }
42010 },
42011 componentWillUpdate: function componentWillUpdate(nextProps) {
42012 if (!this.props.show && nextProps.show) {
42013 this.checkForFocus();
42014 }
42015 },
42016 componentDidMount: function componentDidMount() {
42017 if (this.props.show) {
42018 this.onShow();
42019 }
42020 },
42021 componentDidUpdate: function componentDidUpdate(prevProps) {
42022 var transition = this.props.transition;
42023
42024
42025 if (prevProps.show && !this.props.show && !transition) {
42026 // Otherwise handleHidden will call this.
42027 this.onHide();
42028 } else if (!prevProps.show && this.props.show) {
42029 this.onShow();
42030 }
42031 },
42032 componentWillUnmount: function componentWillUnmount() {
42033 var _props3 = this.props;
42034 var show = _props3.show;
42035 var transition = _props3.transition;
42036
42037
42038 if (show || transition && !this.state.exited) {
42039 this.onHide();
42040 }
42041 },
42042 onShow: function onShow() {
42043 var doc = (0, _ownerDocument2.default)(this);
42044 var container = (0, _getContainer2.default)(this.props.container, doc.body);
42045
42046 this.props.manager.add(this, container, this.props.containerClassName);
42047
42048 this._onDocumentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', this.handleDocumentKeyUp);
42049
42050 this._onFocusinListener = (0, _addFocusListener2.default)(this.enforceFocus);
42051
42052 this.focus();
42053
42054 if (this.props.onShow) {
42055 this.props.onShow();
42056 }
42057 },
42058 onHide: function onHide() {
42059 this.props.manager.remove(this);
42060
42061 this._onDocumentKeyupListener.remove();
42062
42063 this._onFocusinListener.remove();
42064
42065 this.restoreLastFocus();
42066 },
42067 setMountNode: function setMountNode(ref) {
42068 this.mountNode = ref ? ref.getMountNode() : ref;
42069 },
42070 handleHidden: function handleHidden() {
42071 this.setState({ exited: true });
42072 this.onHide();
42073
42074 if (this.props.onExited) {
42075 var _props4;
42076
42077 (_props4 = this.props).onExited.apply(_props4, arguments);
42078 }
42079 },
42080 handleBackdropClick: function handleBackdropClick(e) {
42081 if (e.target !== e.currentTarget) {
42082 return;
42083 }
42084
42085 if (this.props.onBackdropClick) {
42086 this.props.onBackdropClick(e);
42087 }
42088
42089 if (this.props.backdrop === true) {
42090 this.props.onHide();
42091 }
42092 },
42093 handleDocumentKeyUp: function handleDocumentKeyUp(e) {
42094 if (this.props.keyboard && e.keyCode === 27 && this.isTopModal()) {
42095 if (this.props.onEscapeKeyUp) {
42096 this.props.onEscapeKeyUp(e);
42097 }
42098 this.props.onHide();
42099 }
42100 },
42101 checkForFocus: function checkForFocus() {
42102 if (_inDOM2.default) {
42103 this.lastFocus = (0, _activeElement2.default)();
42104 }
42105 },
42106 focus: function focus() {
42107 var autoFocus = this.props.autoFocus;
42108 var modalContent = this.getDialogElement();
42109 var current = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));
42110 var focusInModal = current && (0, _contains2.default)(modalContent, current);
42111
42112 if (modalContent && autoFocus && !focusInModal) {
42113 this.lastFocus = current;
42114
42115 if (!modalContent.hasAttribute('tabIndex')) {
42116 modalContent.setAttribute('tabIndex', -1);
42117 (0, _warning2.default)(false, 'The modal content node does not accept focus. ' + 'For the benefit of assistive technologies, the tabIndex of the node is being set to "-1".');
42118 }
42119
42120 modalContent.focus();
42121 }
42122 },
42123 restoreLastFocus: function restoreLastFocus() {
42124 // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)
42125 if (this.lastFocus && this.lastFocus.focus) {
42126 this.lastFocus.focus();
42127 this.lastFocus = null;
42128 }
42129 },
42130 enforceFocus: function enforceFocus() {
42131 var enforceFocus = this.props.enforceFocus;
42132
42133
42134 if (!enforceFocus || !this.isMounted() || !this.isTopModal()) {
42135 return;
42136 }
42137
42138 var active = (0, _activeElement2.default)((0, _ownerDocument2.default)(this));
42139 var modal = this.getDialogElement();
42140
42141 if (modal && modal !== active && !(0, _contains2.default)(modal, active)) {
42142 modal.focus();
42143 }
42144 },
42145
42146
42147 //instead of a ref, which might conflict with one the parent applied.
42148 getDialogElement: function getDialogElement() {
42149 var node = this.refs.modal;
42150 return node && node.lastChild;
42151 },
42152 isTopModal: function isTopModal() {
42153 return this.props.manager.isTopModal(this);
42154 }
42155 });
42156
42157 Modal.Manager = _ModalManager2.default;
42158
42159 exports.default = Modal;
42160 module.exports = exports['default'];
42161
42162/***/ },
42163/* 535 */
42164/***/ function(module, exports, __webpack_require__) {
42165
42166 /**
42167 * Copyright 2014-2015, Facebook, Inc.
42168 * All rights reserved.
42169 *
42170 * This source code is licensed under the BSD-style license found in the
42171 * LICENSE file in the root directory of this source tree. An additional grant
42172 * of patent rights can be found in the PATENTS file in the same directory.
42173 */
42174
42175 'use strict';
42176
42177 /**
42178 * Similar to invariant but only logs a warning if the condition is not met.
42179 * This can be used to log issues in development environments in critical
42180 * paths. Removing the logging code for production environments will keep the
42181 * same logic and follow the same code paths.
42182 */
42183
42184 var warning = function() {};
42185
42186 if ((undefined) !== 'production') {
42187 warning = function(condition, format, args) {
42188 var len = arguments.length;
42189 args = new Array(len > 2 ? len - 2 : 0);
42190 for (var key = 2; key < len; key++) {
42191 args[key - 2] = arguments[key];
42192 }
42193 if (format === undefined) {
42194 throw new Error(
42195 '`warning(condition, format, ...args)` requires a warning ' +
42196 'message argument'
42197 );
42198 }
42199
42200 if (format.length < 10 || (/^[s\W]*$/).test(format)) {
42201 throw new Error(
42202 'The warning format should be able to uniquely identify this ' +
42203 'warning. Please, use a more descriptive format than: ' + format
42204 );
42205 }
42206
42207 if (!condition) {
42208 var argIndex = 0;
42209 var message = 'Warning: ' +
42210 format.replace(/%s/g, function() {
42211 return args[argIndex++];
42212 });
42213 if (typeof console !== 'undefined') {
42214 console.error(message);
42215 }
42216 try {
42217 // This error was thrown as a convenience so that you can use this stack
42218 // to find the callsite that caused this warning to fire.
42219 throw new Error(message);
42220 } catch(x) {}
42221 }
42222 };
42223 }
42224
42225 module.exports = warning;
42226
42227
42228/***/ },
42229/* 536 */
42230/***/ function(module, exports, __webpack_require__) {
42231
42232 'use strict';
42233
42234 exports.__esModule = true;
42235
42236 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
42237
42238 var _react = __webpack_require__(89);
42239
42240 var _react2 = _interopRequireDefault(_react);
42241
42242 var _createChainableTypeChecker = __webpack_require__(537);
42243
42244 var _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);
42245
42246 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
42247
42248 function validate(props, propName, componentName, location, propFullName) {
42249 var propValue = props[propName];
42250 var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);
42251
42252 if (_react2.default.isValidElement(propValue)) {
42253 return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');
42254 }
42255
42256 if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {
42257 return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');
42258 }
42259
42260 return null;
42261 }
42262
42263 exports.default = (0, _createChainableTypeChecker2.default)(validate);
42264
42265/***/ },
42266/* 537 */
42267/***/ function(module, exports) {
42268
42269 'use strict';
42270
42271 exports.__esModule = true;
42272 exports.default = createChainableTypeChecker;
42273 /**
42274 * Copyright 2013-present, Facebook, Inc.
42275 * All rights reserved.
42276 *
42277 * This source code is licensed under the BSD-style license found in the
42278 * LICENSE file in the root directory of this source tree. An additional grant
42279 * of patent rights can be found in the PATENTS file in the same directory.
42280 */
42281
42282 // Mostly taken from ReactPropTypes.
42283
42284 function createChainableTypeChecker(validate) {
42285 function checkType(isRequired, props, propName, componentName, location, propFullName) {
42286 var componentNameSafe = componentName || '<<anonymous>>';
42287 var propFullNameSafe = propFullName || propName;
42288
42289 if (props[propName] == null) {
42290 if (isRequired) {
42291 return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));
42292 }
42293
42294 return null;
42295 }
42296
42297 for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {
42298 args[_key - 6] = arguments[_key];
42299 }
42300
42301 return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));
42302 }
42303
42304 var chainedCheckType = checkType.bind(null, false);
42305 chainedCheckType.isRequired = checkType.bind(null, true);
42306
42307 return chainedCheckType;
42308 }
42309
42310/***/ },
42311/* 538 */
42312/***/ function(module, exports, __webpack_require__) {
42313
42314 'use strict';
42315
42316 exports.__esModule = true;
42317
42318 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
42319
42320 var _react = __webpack_require__(89);
42321
42322 var _react2 = _interopRequireDefault(_react);
42323
42324 var _createChainableTypeChecker = __webpack_require__(537);
42325
42326 var _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);
42327
42328 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
42329
42330 function elementType(props, propName, componentName, location, propFullName) {
42331 var propValue = props[propName];
42332 var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);
42333
42334 if (_react2.default.isValidElement(propValue)) {
42335 return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + 'or a ReactClass).');
42336 }
42337
42338 if (propType !== 'function' && propType !== 'string') {
42339 return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + 'or a ReactClass).');
42340 }
42341
42342 return null;
42343 }
42344
42345 exports.default = (0, _createChainableTypeChecker2.default)(elementType);
42346
42347/***/ },
42348/* 539 */
42349/***/ function(module, exports, __webpack_require__) {
42350
42351 'use strict';
42352
42353 Object.defineProperty(exports, "__esModule", {
42354 value: true
42355 });
42356
42357 var _react = __webpack_require__(89);
42358
42359 var _react2 = _interopRequireDefault(_react);
42360
42361 var _reactDom = __webpack_require__(122);
42362
42363 var _reactDom2 = _interopRequireDefault(_reactDom);
42364
42365 var _componentOrElement = __webpack_require__(536);
42366
42367 var _componentOrElement2 = _interopRequireDefault(_componentOrElement);
42368
42369 var _ownerDocument = __webpack_require__(498);
42370
42371 var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
42372
42373 var _getContainer = __webpack_require__(540);
42374
42375 var _getContainer2 = _interopRequireDefault(_getContainer);
42376
42377 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
42378
42379 /**
42380 * The `<Portal/>` component renders its children into a new "subtree" outside of current component hierarchy.
42381 * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.
42382 * The children of `<Portal/>` component will be appended to the `container` specified.
42383 */
42384 var Portal = _react2.default.createClass({
42385
42386 displayName: 'Portal',
42387
42388 propTypes: {
42389 /**
42390 * A Node, Component instance, or function that returns either. The `container` will have the Portal children
42391 * appended to it.
42392 */
42393 container: _react2.default.PropTypes.oneOfType([_componentOrElement2.default, _react2.default.PropTypes.func])
42394 },
42395
42396 componentDidMount: function componentDidMount() {
42397 this._renderOverlay();
42398 },
42399 componentDidUpdate: function componentDidUpdate() {
42400 this._renderOverlay();
42401 },
42402 componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
42403 if (this._overlayTarget && nextProps.container !== this.props.container) {
42404 this._portalContainerNode.removeChild(this._overlayTarget);
42405 this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);
42406 this._portalContainerNode.appendChild(this._overlayTarget);
42407 }
42408 },
42409 componentWillUnmount: function componentWillUnmount() {
42410 this._unrenderOverlay();
42411 this._unmountOverlayTarget();
42412 },
42413 _mountOverlayTarget: function _mountOverlayTarget() {
42414 if (!this._overlayTarget) {
42415 this._overlayTarget = document.createElement('div');
42416 this._portalContainerNode = (0, _getContainer2.default)(this.props.container, (0, _ownerDocument2.default)(this).body);
42417 this._portalContainerNode.appendChild(this._overlayTarget);
42418 }
42419 },
42420 _unmountOverlayTarget: function _unmountOverlayTarget() {
42421 if (this._overlayTarget) {
42422 this._portalContainerNode.removeChild(this._overlayTarget);
42423 this._overlayTarget = null;
42424 }
42425 this._portalContainerNode = null;
42426 },
42427 _renderOverlay: function _renderOverlay() {
42428
42429 var overlay = !this.props.children ? null : _react2.default.Children.only(this.props.children);
42430
42431 // Save reference for future access.
42432 if (overlay !== null) {
42433 this._mountOverlayTarget();
42434 this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(this, overlay, this._overlayTarget);
42435 } else {
42436 // Unrender if the component is null for transitions to null
42437 this._unrenderOverlay();
42438 this._unmountOverlayTarget();
42439 }
42440 },
42441 _unrenderOverlay: function _unrenderOverlay() {
42442 if (this._overlayTarget) {
42443 _reactDom2.default.unmountComponentAtNode(this._overlayTarget);
42444 this._overlayInstance = null;
42445 }
42446 },
42447 render: function render() {
42448 return null;
42449 },
42450 getMountNode: function getMountNode() {
42451 return this._overlayTarget;
42452 },
42453 getOverlayDOMNode: function getOverlayDOMNode() {
42454 if (!this.isMounted()) {
42455 throw new Error('getOverlayDOMNode(): A component must be mounted to have a DOM node.');
42456 }
42457
42458 if (this._overlayInstance) {
42459 return _reactDom2.default.findDOMNode(this._overlayInstance);
42460 }
42461
42462 return null;
42463 }
42464 });
42465
42466 exports.default = Portal;
42467 module.exports = exports['default'];
42468
42469/***/ },
42470/* 540 */
42471/***/ function(module, exports, __webpack_require__) {
42472
42473 'use strict';
42474
42475 Object.defineProperty(exports, "__esModule", {
42476 value: true
42477 });
42478 exports.default = getContainer;
42479
42480 var _reactDom = __webpack_require__(122);
42481
42482 var _reactDom2 = _interopRequireDefault(_reactDom);
42483
42484 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
42485
42486 function getContainer(container, defaultContainer) {
42487 container = typeof container === 'function' ? container() : container;
42488 return _reactDom2.default.findDOMNode(container) || defaultContainer;
42489 }
42490 module.exports = exports['default'];
42491
42492/***/ },
42493/* 541 */
42494/***/ function(module, exports, __webpack_require__) {
42495
42496 'use strict';
42497
42498 Object.defineProperty(exports, "__esModule", {
42499 value: true
42500 });
42501
42502 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
42503
42504 var _style = __webpack_require__(402);
42505
42506 var _style2 = _interopRequireDefault(_style);
42507
42508 var _class = __webpack_require__(542);
42509
42510 var _class2 = _interopRequireDefault(_class);
42511
42512 var _scrollbarSize = __webpack_require__(533);
42513
42514 var _scrollbarSize2 = _interopRequireDefault(_scrollbarSize);
42515
42516 var _isOverflowing = __webpack_require__(546);
42517
42518 var _isOverflowing2 = _interopRequireDefault(_isOverflowing);
42519
42520 var _manageAriaHidden = __webpack_require__(548);
42521
42522 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
42523
42524 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
42525
42526 function findIndexOf(arr, cb) {
42527 var idx = -1;
42528 arr.some(function (d, i) {
42529 if (cb(d, i)) {
42530 idx = i;
42531 return true;
42532 }
42533 });
42534 return idx;
42535 }
42536
42537 function findContainer(data, modal) {
42538 return findIndexOf(data, function (d) {
42539 return d.modals.indexOf(modal) !== -1;
42540 });
42541 }
42542
42543 function setContainerStyle(state, container) {
42544 var style = { overflow: 'hidden' };
42545
42546 // we are only interested in the actual `style` here
42547 // becasue we will override it
42548 state.style = {
42549 overflow: container.style.overflow,
42550 paddingRight: container.style.paddingRight
42551 };
42552
42553 if (state.overflowing) {
42554 // use computed style, here to get the real padding
42555 // to add our scrollbar width
42556 style.paddingRight = parseInt((0, _style2.default)(container, 'paddingRight') || 0, 10) + (0, _scrollbarSize2.default)() + 'px';
42557 }
42558
42559 (0, _style2.default)(container, style);
42560 }
42561
42562 function removeContainerStyle(_ref, container) {
42563 var style = _ref.style;
42564
42565
42566 Object.keys(style).forEach(function (key) {
42567 return container.style[key] = style[key];
42568 });
42569 }
42570 /**
42571 * Proper state managment for containers and the modals in those containers.
42572 *
42573 * @internal Used by the Modal to ensure proper styling of containers.
42574 */
42575
42576 var ModalManager = function () {
42577 function ModalManager() {
42578 var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
42579
42580 var _ref2$hideSiblingNode = _ref2.hideSiblingNodes;
42581 var hideSiblingNodes = _ref2$hideSiblingNode === undefined ? true : _ref2$hideSiblingNode;
42582 var _ref2$handleContainer = _ref2.handleContainerOverflow;
42583 var handleContainerOverflow = _ref2$handleContainer === undefined ? true : _ref2$handleContainer;
42584
42585 _classCallCheck(this, ModalManager);
42586
42587 this.hideSiblingNodes = hideSiblingNodes;
42588 this.handleContainerOverflow = handleContainerOverflow;
42589 this.modals = [];
42590 this.containers = [];
42591 this.data = [];
42592 }
42593
42594 _createClass(ModalManager, [{
42595 key: 'add',
42596 value: function add(modal, container, className) {
42597 var modalIdx = this.modals.indexOf(modal);
42598 var containerIdx = this.containers.indexOf(container);
42599
42600 if (modalIdx !== -1) {
42601 return modalIdx;
42602 }
42603
42604 modalIdx = this.modals.length;
42605 this.modals.push(modal);
42606
42607 if (this.hideSiblingNodes) {
42608 (0, _manageAriaHidden.hideSiblings)(container, modal.mountNode);
42609 }
42610
42611 if (containerIdx !== -1) {
42612 this.data[containerIdx].modals.push(modal);
42613 return modalIdx;
42614 }
42615
42616 var data = {
42617 modals: [modal],
42618 //right now only the first modal of a container will have its classes applied
42619 classes: className ? className.split(/\s+/) : [],
42620
42621 overflowing: (0, _isOverflowing2.default)(container)
42622 };
42623
42624 if (this.handleContainerOverflow) {
42625 setContainerStyle(data, container);
42626 }
42627
42628 data.classes.forEach(_class2.default.addClass.bind(null, container));
42629
42630 this.containers.push(container);
42631 this.data.push(data);
42632
42633 return modalIdx;
42634 }
42635 }, {
42636 key: 'remove',
42637 value: function remove(modal) {
42638 var modalIdx = this.modals.indexOf(modal);
42639
42640 if (modalIdx === -1) {
42641 return;
42642 }
42643
42644 var containerIdx = findContainer(this.data, modal);
42645 var data = this.data[containerIdx];
42646 var container = this.containers[containerIdx];
42647
42648 data.modals.splice(data.modals.indexOf(modal), 1);
42649
42650 this.modals.splice(modalIdx, 1);
42651
42652 // if that was the last modal in a container,
42653 // clean up the container
42654 if (data.modals.length === 0) {
42655 data.classes.forEach(_class2.default.removeClass.bind(null, container));
42656
42657 if (this.handleContainerOverflow) {
42658 removeContainerStyle(data, container);
42659 }
42660
42661 if (this.hideSiblingNodes) {
42662 (0, _manageAriaHidden.showSiblings)(container, modal.mountNode);
42663 }
42664 this.containers.splice(containerIdx, 1);
42665 this.data.splice(containerIdx, 1);
42666 } else if (this.hideSiblingNodes) {
42667 //otherwise make sure the next top modal is visible to a SR
42668 (0, _manageAriaHidden.ariaHidden)(false, data.modals[data.modals.length - 1].mountNode);
42669 }
42670 }
42671 }, {
42672 key: 'isTopModal',
42673 value: function isTopModal(modal) {
42674 return !!this.modals.length && this.modals[this.modals.length - 1] === modal;
42675 }
42676 }]);
42677
42678 return ModalManager;
42679 }();
42680
42681 exports.default = ModalManager;
42682 module.exports = exports['default'];
42683
42684/***/ },
42685/* 542 */
42686/***/ function(module, exports, __webpack_require__) {
42687
42688 'use strict';
42689
42690 module.exports = {
42691 addClass: __webpack_require__(543),
42692 removeClass: __webpack_require__(545),
42693 hasClass: __webpack_require__(544)
42694 };
42695
42696/***/ },
42697/* 543 */
42698/***/ function(module, exports, __webpack_require__) {
42699
42700 'use strict';
42701 var hasClass = __webpack_require__(544);
42702
42703 module.exports = function addClass(element, className) {
42704 if (element.classList) element.classList.add(className);else if (!hasClass(element)) element.className = element.className + ' ' + className;
42705 };
42706
42707/***/ },
42708/* 544 */
42709/***/ function(module, exports) {
42710
42711 'use strict';
42712 module.exports = function hasClass(element, className) {
42713 if (element.classList) return !!className && element.classList.contains(className);else return (' ' + element.className + ' ').indexOf(' ' + className + ' ') !== -1;
42714 };
42715
42716/***/ },
42717/* 545 */
42718/***/ function(module, exports) {
42719
42720 'use strict';
42721
42722 module.exports = function removeClass(element, className) {
42723 if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)', 'g'), '$1').replace(/\s+/g, ' ').replace(/^\s*|\s*$/g, '');
42724 };
42725
42726/***/ },
42727/* 546 */
42728/***/ function(module, exports, __webpack_require__) {
42729
42730 'use strict';
42731
42732 Object.defineProperty(exports, "__esModule", {
42733 value: true
42734 });
42735 exports.default = isOverflowing;
42736
42737 var _isWindow = __webpack_require__(547);
42738
42739 var _isWindow2 = _interopRequireDefault(_isWindow);
42740
42741 var _ownerDocument = __webpack_require__(417);
42742
42743 var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
42744
42745 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
42746
42747 function isBody(node) {
42748 return node && node.tagName.toLowerCase() === 'body';
42749 }
42750
42751 function bodyIsOverflowing(node) {
42752 var doc = (0, _ownerDocument2.default)(node);
42753 var win = (0, _isWindow2.default)(doc);
42754 var fullWidth = win.innerWidth;
42755
42756 // Support: ie8, no innerWidth
42757 if (!fullWidth) {
42758 var documentElementRect = doc.documentElement.getBoundingClientRect();
42759 fullWidth = documentElementRect.right - Math.abs(documentElementRect.left);
42760 }
42761
42762 return doc.body.clientWidth < fullWidth;
42763 }
42764
42765 function isOverflowing(container) {
42766 var win = (0, _isWindow2.default)(container);
42767
42768 return win || isBody(container) ? bodyIsOverflowing(container) : container.scrollHeight > container.clientHeight;
42769 }
42770 module.exports = exports['default'];
42771
42772/***/ },
42773/* 547 */
42774/***/ function(module, exports) {
42775
42776 'use strict';
42777
42778 module.exports = function getWindow(node) {
42779 return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;
42780 };
42781
42782/***/ },
42783/* 548 */
42784/***/ function(module, exports) {
42785
42786 'use strict';
42787
42788 Object.defineProperty(exports, "__esModule", {
42789 value: true
42790 });
42791 exports.ariaHidden = ariaHidden;
42792 exports.hideSiblings = hideSiblings;
42793 exports.showSiblings = showSiblings;
42794
42795 var BLACKLIST = ['template', 'script', 'style'];
42796
42797 var isHidable = function isHidable(_ref) {
42798 var nodeType = _ref.nodeType;
42799 var tagName = _ref.tagName;
42800 return nodeType === 1 && BLACKLIST.indexOf(tagName.toLowerCase()) === -1;
42801 };
42802
42803 var siblings = function siblings(container, mount, cb) {
42804 mount = [].concat(mount);
42805
42806 [].forEach.call(container.children, function (node) {
42807 if (mount.indexOf(node) === -1 && isHidable(node)) {
42808 cb(node);
42809 }
42810 });
42811 };
42812
42813 function ariaHidden(show, node) {
42814 if (!node) {
42815 return;
42816 }
42817 if (show) {
42818 node.setAttribute('aria-hidden', 'true');
42819 } else {
42820 node.removeAttribute('aria-hidden');
42821 }
42822 }
42823
42824 function hideSiblings(container, mountNode) {
42825 siblings(container, mountNode, function (node) {
42826 return ariaHidden(true, node);
42827 });
42828 }
42829
42830 function showSiblings(container, mountNode) {
42831 siblings(container, mountNode, function (node) {
42832 return ariaHidden(false, node);
42833 });
42834 }
42835
42836/***/ },
42837/* 549 */
42838/***/ function(module, exports) {
42839
42840 'use strict';
42841
42842 Object.defineProperty(exports, "__esModule", {
42843 value: true
42844 });
42845 exports.default = addFocusListener;
42846 /**
42847 * Firefox doesn't have a focusin event so using capture is easiest way to get bubbling
42848 * IE8 can't do addEventListener, but does have onfocusin, so we use that in ie8
42849 *
42850 * We only allow one Listener at a time to avoid stack overflows
42851 */
42852 function addFocusListener(handler) {
42853 var useFocusin = !document.addEventListener;
42854 var remove = void 0;
42855
42856 if (useFocusin) {
42857 document.attachEvent('onfocusin', handler);
42858 remove = function remove() {
42859 return document.detachEvent('onfocusin', handler);
42860 };
42861 } else {
42862 document.addEventListener('focus', handler, true);
42863 remove = function remove() {
42864 return document.removeEventListener('focus', handler, true);
42865 };
42866 }
42867
42868 return { remove: remove };
42869 }
42870 module.exports = exports['default'];
42871
42872/***/ },
42873/* 550 */
42874/***/ function(module, exports, __webpack_require__) {
42875
42876 'use strict';
42877
42878 var _extends = __webpack_require__(338)['default'];
42879
42880 var _interopRequireDefault = __webpack_require__(335)['default'];
42881
42882 exports.__esModule = true;
42883
42884 var _classnames = __webpack_require__(356);
42885
42886 var _classnames2 = _interopRequireDefault(_classnames);
42887
42888 var _react = __webpack_require__(89);
42889
42890 var _react2 = _interopRequireDefault(_react);
42891
42892 var _styleMaps = __webpack_require__(358);
42893
42894 var _utilsBootstrapUtils = __webpack_require__(357);
42895
42896 /* eslint-disable react/prop-types */
42897 var ModalDialog = _react2['default'].createClass({
42898 displayName: 'ModalDialog',
42899
42900 propTypes: {
42901 /**
42902 * A css class to apply to the Modal dialog DOM node.
42903 */
42904 dialogClassName: _react2['default'].PropTypes.string
42905 },
42906
42907 render: function render() {
42908 var modalStyle = _extends({
42909 display: 'block'
42910 }, this.props.style);
42911 var bsClassPrefix = _utilsBootstrapUtils.prefix(this.props);
42912 var dialogClasses = _utilsBootstrapUtils.getClassSet(this.props);
42913
42914 delete dialogClasses[bsClassPrefix];
42915 dialogClasses[_utilsBootstrapUtils.prefix(this.props, 'dialog')] = true;
42916
42917 return _react2['default'].createElement(
42918 'div',
42919 _extends({}, this.props, {
42920 title: null,
42921 tabIndex: '-1',
42922 role: 'dialog',
42923 style: modalStyle,
42924 className: _classnames2['default'](this.props.className, bsClassPrefix)
42925 }),
42926 _react2['default'].createElement(
42927 'div',
42928 { className: _classnames2['default'](this.props.dialogClassName, dialogClasses) },
42929 _react2['default'].createElement(
42930 'div',
42931 { className: _utilsBootstrapUtils.prefix(this.props, 'content'), role: 'document' },
42932 this.props.children
42933 )
42934 )
42935 );
42936 }
42937 });
42938
42939 exports['default'] = _utilsBootstrapUtils.bsSizes([_styleMaps.Sizes.LARGE, _styleMaps.Sizes.SMALL], _utilsBootstrapUtils.bsClass('modal', ModalDialog));
42940 module.exports = exports['default'];
42941
42942/***/ },
42943/* 551 */
42944/***/ function(module, exports, __webpack_require__) {
42945
42946 'use strict';
42947
42948 var _inherits = __webpack_require__(372)['default'];
42949
42950 var _classCallCheck = __webpack_require__(379)['default'];
42951
42952 var _extends = __webpack_require__(338)['default'];
42953
42954 var _interopRequireDefault = __webpack_require__(335)['default'];
42955
42956 exports.__esModule = true;
42957
42958 var _classnames = __webpack_require__(356);
42959
42960 var _classnames2 = _interopRequireDefault(_classnames);
42961
42962 var _react = __webpack_require__(89);
42963
42964 var _react2 = _interopRequireDefault(_react);
42965
42966 var _utilsBootstrapUtils = __webpack_require__(357);
42967
42968 var ModalBody = (function (_React$Component) {
42969 _inherits(ModalBody, _React$Component);
42970
42971 function ModalBody() {
42972 _classCallCheck(this, ModalBody);
42973
42974 _React$Component.apply(this, arguments);
42975 }
42976
42977 ModalBody.prototype.render = function render() {
42978 return _react2['default'].createElement(
42979 'div',
42980 _extends({}, this.props, {
42981 className: _classnames2['default'](this.props.className, _utilsBootstrapUtils.prefix(this.props, 'body'))
42982 }),
42983 this.props.children
42984 );
42985 };
42986
42987 return ModalBody;
42988 })(_react2['default'].Component);
42989
42990 exports['default'] = _utilsBootstrapUtils.bsClass('modal', ModalBody);
42991 module.exports = exports['default'];
42992
42993/***/ },
42994/* 552 */
42995/***/ function(module, exports, __webpack_require__) {
42996
42997 'use strict';
42998
42999 var _inherits = __webpack_require__(372)['default'];
43000
43001 var _classCallCheck = __webpack_require__(379)['default'];
43002
43003 var _objectWithoutProperties = __webpack_require__(355)['default'];
43004
43005 var _extends = __webpack_require__(338)['default'];
43006
43007 var _interopRequireDefault = __webpack_require__(335)['default'];
43008
43009 exports.__esModule = true;
43010
43011 var _classnames = __webpack_require__(356);
43012
43013 var _classnames2 = _interopRequireDefault(_classnames);
43014
43015 var _react = __webpack_require__(89);
43016
43017 var _react2 = _interopRequireDefault(_react);
43018
43019 var _utilsBootstrapUtils = __webpack_require__(357);
43020
43021 var _utilsCreateChainedFunction = __webpack_require__(414);
43022
43023 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
43024
43025 var ModalHeader = (function (_React$Component) {
43026 _inherits(ModalHeader, _React$Component);
43027
43028 function ModalHeader() {
43029 _classCallCheck(this, ModalHeader);
43030
43031 _React$Component.apply(this, arguments);
43032 }
43033
43034 ModalHeader.prototype.render = function render() {
43035 var _props = this.props;
43036 var label = _props['aria-label'];
43037
43038 var props = _objectWithoutProperties(_props, ['aria-label']);
43039
43040 var onHide = _utilsCreateChainedFunction2['default'](this.context.$bs_onModalHide, this.props.onHide);
43041
43042 return _react2['default'].createElement(
43043 'div',
43044 _extends({}, props, {
43045 className: _classnames2['default'](this.props.className, _utilsBootstrapUtils.prefix(this.props, 'header'))
43046 }),
43047 this.props.closeButton && _react2['default'].createElement(
43048 'button',
43049 {
43050 type: 'button',
43051 className: 'close',
43052 'aria-label': label,
43053 onClick: onHide },
43054 _react2['default'].createElement(
43055 'span',
43056 { 'aria-hidden': 'true' },
43057 '×'
43058 )
43059 ),
43060 this.props.children
43061 );
43062 };
43063
43064 return ModalHeader;
43065 })(_react2['default'].Component);
43066
43067 ModalHeader.propTypes = {
43068 /**
43069 * The 'aria-label' attribute provides an accessible label for the close button.
43070 * It is used for Assistive Technology when the label text is not readable.
43071 */
43072 'aria-label': _react2['default'].PropTypes.string,
43073
43074 bsClass: _react2['default'].PropTypes.string,
43075
43076 /**
43077 * Specify whether the Component should contain a close button
43078 */
43079 closeButton: _react2['default'].PropTypes.bool,
43080
43081 /**
43082 * A Callback fired when the close button is clicked. If used directly inside a Modal component, the onHide will automatically
43083 * be propagated up to the parent Modal `onHide`.
43084 */
43085 onHide: _react2['default'].PropTypes.func
43086 };
43087
43088 ModalHeader.contextTypes = {
43089 '$bs_onModalHide': _react2['default'].PropTypes.func
43090 };
43091
43092 ModalHeader.defaultProps = {
43093 'aria-label': 'Close',
43094 closeButton: false
43095 };
43096
43097 exports['default'] = _utilsBootstrapUtils.bsClass('modal', ModalHeader);
43098 module.exports = exports['default'];
43099
43100/***/ },
43101/* 553 */
43102/***/ function(module, exports, __webpack_require__) {
43103
43104 'use strict';
43105
43106 var _inherits = __webpack_require__(372)['default'];
43107
43108 var _classCallCheck = __webpack_require__(379)['default'];
43109
43110 var _extends = __webpack_require__(338)['default'];
43111
43112 var _interopRequireDefault = __webpack_require__(335)['default'];
43113
43114 exports.__esModule = true;
43115
43116 var _classnames = __webpack_require__(356);
43117
43118 var _classnames2 = _interopRequireDefault(_classnames);
43119
43120 var _react = __webpack_require__(89);
43121
43122 var _react2 = _interopRequireDefault(_react);
43123
43124 var _utilsBootstrapUtils = __webpack_require__(357);
43125
43126 var ModalTitle = (function (_React$Component) {
43127 _inherits(ModalTitle, _React$Component);
43128
43129 function ModalTitle() {
43130 _classCallCheck(this, ModalTitle);
43131
43132 _React$Component.apply(this, arguments);
43133 }
43134
43135 ModalTitle.prototype.render = function render() {
43136 return _react2['default'].createElement(
43137 'h4',
43138 _extends({}, this.props, {
43139 className: _classnames2['default'](this.props.className, _utilsBootstrapUtils.prefix(this.props, 'title'))
43140 }),
43141 this.props.children
43142 );
43143 };
43144
43145 return ModalTitle;
43146 })(_react2['default'].Component);
43147
43148 exports['default'] = _utilsBootstrapUtils.bsClass('modal', ModalTitle);
43149 module.exports = exports['default'];
43150
43151/***/ },
43152/* 554 */
43153/***/ function(module, exports, __webpack_require__) {
43154
43155 'use strict';
43156
43157 var _inherits = __webpack_require__(372)['default'];
43158
43159 var _classCallCheck = __webpack_require__(379)['default'];
43160
43161 var _extends = __webpack_require__(338)['default'];
43162
43163 var _interopRequireDefault = __webpack_require__(335)['default'];
43164
43165 exports.__esModule = true;
43166
43167 var _classnames = __webpack_require__(356);
43168
43169 var _classnames2 = _interopRequireDefault(_classnames);
43170
43171 var _react = __webpack_require__(89);
43172
43173 var _react2 = _interopRequireDefault(_react);
43174
43175 var _utilsBootstrapUtils = __webpack_require__(357);
43176
43177 var ModalFooter = (function (_React$Component) {
43178 _inherits(ModalFooter, _React$Component);
43179
43180 function ModalFooter() {
43181 _classCallCheck(this, ModalFooter);
43182
43183 _React$Component.apply(this, arguments);
43184 }
43185
43186 ModalFooter.prototype.render = function render() {
43187 return _react2['default'].createElement(
43188 'div',
43189 _extends({}, this.props, {
43190 className: _classnames2['default'](this.props.className, _utilsBootstrapUtils.prefix(this.props, 'footer'))
43191 }),
43192 this.props.children
43193 );
43194 };
43195
43196 return ModalFooter;
43197 })(_react2['default'].Component);
43198
43199 ModalFooter.propTypes = {
43200 /**
43201 * A css class applied to the Component
43202 */
43203 bsClass: _react2['default'].PropTypes.string
43204 };
43205
43206 ModalFooter.defaultProps = {
43207 bsClass: 'modal'
43208 };
43209
43210 exports['default'] = _utilsBootstrapUtils.bsClass('modal', ModalFooter);
43211 module.exports = exports['default'];
43212
43213/***/ },
43214/* 555 */
43215/***/ function(module, exports, __webpack_require__) {
43216
43217 'use strict';
43218
43219 var _inherits = __webpack_require__(372)['default'];
43220
43221 var _classCallCheck = __webpack_require__(379)['default'];
43222
43223 var _extends = __webpack_require__(338)['default'];
43224
43225 var _interopRequireDefault = __webpack_require__(335)['default'];
43226
43227 exports.__esModule = true;
43228
43229 var _classnames = __webpack_require__(356);
43230
43231 var _classnames2 = _interopRequireDefault(_classnames);
43232
43233 var _keycode = __webpack_require__(419);
43234
43235 var _keycode2 = _interopRequireDefault(_keycode);
43236
43237 var _react = __webpack_require__(89);
43238
43239 var _react2 = _interopRequireDefault(_react);
43240
43241 var _reactDom = __webpack_require__(122);
43242
43243 var _reactDom2 = _interopRequireDefault(_reactDom);
43244
43245 var _reactPropTypesLibAll = __webpack_require__(384);
43246
43247 var _reactPropTypesLibAll2 = _interopRequireDefault(_reactPropTypesLibAll);
43248
43249 var _warning = __webpack_require__(271);
43250
43251 var _warning2 = _interopRequireDefault(_warning);
43252
43253 var _utilsBootstrapUtils = __webpack_require__(357);
43254
43255 var _utilsCreateChainedFunction = __webpack_require__(414);
43256
43257 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
43258
43259 var _utilsTabUtils = __webpack_require__(556);
43260
43261 var _utilsValidComponentChildren = __webpack_require__(365);
43262
43263 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
43264
43265 var Nav = (function (_React$Component) {
43266 _inherits(Nav, _React$Component);
43267
43268 function Nav() {
43269 _classCallCheck(this, Nav);
43270
43271 _React$Component.apply(this, arguments);
43272 }
43273
43274 Nav.prototype.componentDidUpdate = function componentDidUpdate() {
43275 if (this._needsRefocus) {
43276 var ul = this.refs.ul && _reactDom2['default'].findDOMNode(this.refs.ul);
43277 var tabs = ul ? ul.children || [] : [];
43278 var tabIdx = this.eventKeys().indexOf(this.getActiveKey());
43279
43280 this._needsRefocus = false;
43281
43282 if (tabIdx !== -1) {
43283 var tabNode = tabs[tabIdx];
43284
43285 if (tabNode && tabNode.firstChild) {
43286 tabNode.firstChild.focus();
43287 }
43288 }
43289 }
43290 };
43291
43292 Nav.prototype.render = function render() {
43293 var className = this.props.className;
43294
43295 var isNavbar = this.props.navbar != null ? this.props.navbar : this.context.$bs_navbar;
43296
43297 var classes = _utilsBootstrapUtils.getClassSet(this.props);
43298
43299 classes[_utilsBootstrapUtils.prefix(this.props, 'stacked')] = this.props.stacked;
43300 classes[_utilsBootstrapUtils.prefix(this.props, 'justified')] = this.props.justified;
43301
43302 if (isNavbar) {
43303 var bsClass = this.context.$bs_navbar_bsClass || 'navbar';
43304
43305 classes[_utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'nav')] = true;
43306 classes[_utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'right')] = this.props.pullRight;
43307 classes[_utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'left')] = this.props.pullLeft;
43308 } else {
43309 classes['pull-right'] = this.props.pullRight;
43310 classes['pull-left'] = this.props.pullLeft;
43311 }
43312
43313 var list = _react2['default'].createElement(
43314 'ul',
43315 _extends({ ref: 'ul'
43316 }, this.props, {
43317 role: this.getNavRole(),
43318 className: _classnames2['default'](className, classes)
43319 }),
43320 _utilsValidComponentChildren2['default'].map(this.props.children, this.renderNavItem, this)
43321 );
43322
43323 return list;
43324 };
43325
43326 Nav.prototype.renderNavItem = function renderNavItem(child, index) {
43327 var onSelect = _utilsCreateChainedFunction2['default'](child.props.onSelect, this.props.onSelect);
43328 var active = this.isChildActive(child);
43329 var tabProps = this.getTabProps(child, active, onSelect);
43330
43331 return _react.cloneElement(child, _extends({
43332 active: active,
43333 activeKey: this.props.activeKey,
43334 activeHref: this.props.activeHref,
43335 onSelect: onSelect,
43336 key: child.key || index,
43337 navItem: true
43338 }, tabProps));
43339 };
43340
43341 Nav.prototype.getActiveKey = function getActiveKey() {
43342 var context = this.context.$bs_tabcontainer;
43343 if (!context) {
43344 return this.props.activeKey;
43345 }
43346
43347 (undefined) !== 'production' ? _warning2['default'](!(this.props.activeKey != null || this.props.activeHref), 'Specifing a Nav `activeKey` or `activeHref` prop in the context of a `TabContainer` is not supported. ' + 'Instead use `<TabContainer activeKey={' + this.props.activeKey + '} />`') : undefined;
43348
43349 return context.activeKey;
43350 };
43351
43352 Nav.prototype.isChildActive = function isChildActive(child) {
43353 var activeKey = this.getActiveKey();
43354
43355 if (this.context.$bs_tabcontainer) {
43356 (undefined) !== 'production' ? _warning2['default'](!child.props.active, 'Specifying a NavItem `active` prop in the context of a `TabContainer` is not supported. Instead ' + 'use `<TabContainer activeKey={' + child.props.eventKey + '} />`') : undefined;
43357
43358 return child.props.eventKey === activeKey;
43359 }
43360
43361 if (child.props.active) {
43362 return true;
43363 }
43364 if (this.props.activeKey != null) {
43365 if (child.props.eventKey === this.props.activeKey) {
43366 return true;
43367 }
43368 }
43369 if (this.props.activeHref != null) {
43370 if (child.props.href === this.props.activeHref) {
43371 return true;
43372 }
43373 }
43374
43375 return child.props.active;
43376 };
43377
43378 Nav.prototype.getTabProps = function getTabProps(child, isActive, onSelect) {
43379 var navRole = this.getNavRole();
43380 var context = this.context.$bs_tabcontainer;
43381
43382 if (!context && navRole !== 'tablist') {
43383 // No tab props here.
43384 return null;
43385 }
43386
43387 var _child$props = child.props;
43388 var id = _child$props.id;
43389 var controls = _child$props['aria-controls'];
43390 var eventKey = _child$props.eventKey;
43391 var role = _child$props.role;
43392 var onKeyDown = _child$props.onKeyDown;
43393 var _child$props$tabIndex = _child$props.tabIndex;
43394 var tabIndex = _child$props$tabIndex === undefined ? 0 : _child$props$tabIndex;
43395
43396 if (context && context.getId) {
43397 (undefined) !== 'production' ? _warning2['default'](!(id || controls), 'In the context of a TabContainer, NavItems are given generated `id` and `aria-controls` ' + 'attributes for the sake of proper component accessibility. Any provided ones will be ignored. ' + 'To control these attributes directly provide a `generateChildId` prop to the parent TabContainer.') : undefined;
43398
43399 id = context.getId(eventKey, _utilsTabUtils.TAB) || null;
43400 controls = context.getId(eventKey, _utilsTabUtils.PANE) || null;
43401 onSelect = _utilsCreateChainedFunction2['default'](onSelect, context.onSelect);
43402 }
43403
43404 if (navRole === 'tablist') {
43405 role = role || 'tab';
43406 onKeyDown = _utilsCreateChainedFunction2['default'](this.handleTabKeyDown.bind(this, onSelect || function () {}), onKeyDown);
43407 tabIndex = isActive ? tabIndex : -1;
43408 }
43409
43410 return {
43411 onSelect: onSelect,
43412 id: id,
43413 role: role,
43414 onKeyDown: onKeyDown,
43415 'aria-controls': controls,
43416 tabIndex: tabIndex
43417 };
43418 };
43419
43420 Nav.prototype.handleTabKeyDown = function handleTabKeyDown(onSelect, event) {
43421 var keys = this.eventKeys();
43422 var currentKey = this.getActiveKey() || keys[0];
43423 var next = undefined;
43424
43425 switch (event.keyCode) {
43426
43427 case _keycode2['default'].codes.left:
43428 case _keycode2['default'].codes.up:
43429 next = _utilsTabUtils.nextEnabled(this.props.children, currentKey, keys, false);
43430
43431 if (next && next !== currentKey) {
43432 event.preventDefault();
43433 onSelect(next);
43434 this._needsRefocus = true;
43435 }
43436 break;
43437 case _keycode2['default'].codes.right:
43438 case _keycode2['default'].codes.down:
43439 next = _utilsTabUtils.nextEnabled(this.props.children, currentKey, keys, true);
43440
43441 if (next && next !== currentKey) {
43442 event.preventDefault();
43443 onSelect(next);
43444 this._needsRefocus = true;
43445 }
43446 break;
43447 default:
43448 }
43449 };
43450
43451 Nav.prototype.eventKeys = function eventKeys() {
43452 var keys = [];
43453 _utilsValidComponentChildren2['default'].forEach(this.props.children, function (_ref) {
43454 var eventKey = _ref.props.eventKey;
43455 return keys.push(eventKey);
43456 });
43457 return keys;
43458 };
43459
43460 Nav.prototype.getNavRole = function getNavRole() {
43461 return this.props.role || (this.context.$bs_tabcontainer ? 'tablist' : null);
43462 };
43463
43464 return Nav;
43465 })(_react2['default'].Component);
43466
43467 Nav.propTypes = {
43468
43469 /**
43470 * Marks the child NavItem with a matching `href` prop as active.
43471 */
43472 activeHref: _react2['default'].PropTypes.string,
43473
43474 /**
43475 * Marks the NavItem with a matching `eventKey` as active. Has a
43476 * higher precedence over `activeHref`.
43477 */
43478 activeKey: _react2['default'].PropTypes.any,
43479
43480 /**
43481 * NavItems are be positioned vertically.
43482 */
43483 stacked: _react2['default'].PropTypes.bool,
43484
43485 justified: _reactPropTypesLibAll2['default'](_react2['default'].PropTypes.bool, function (_ref2) {
43486 var justified = _ref2.justified;
43487 var navbar = _ref2.navbar;
43488 return justified && navbar ? Error('justified navbar `Nav`s are not supported') : null;
43489 }),
43490
43491 /**
43492 * A callback fired when a NavItem is selected.
43493 *
43494 * ```js
43495 * function (
43496 * Any eventKey,
43497 * SyntheticEvent event?
43498 * )
43499 * ```
43500 */
43501 onSelect: _react2['default'].PropTypes.func,
43502
43503 /**
43504 * CSS classes for the wrapper `nav` element
43505 */
43506 className: _react2['default'].PropTypes.string,
43507 /**
43508 * HTML id for the wrapper `nav` element
43509 */
43510 id: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number]),
43511
43512 /**
43513 * ARIA role for the Nav, in the context of a TabContainer, the default will be set
43514 * to "tablist", but can be overridden by the Nav when set explicitly.
43515 *
43516 * When the role is set to "tablist" NavItem focus is managed according to the
43517 * ARIA authoring practices for tabs: https://www.w3.org/TR/2013/WD-wai-aria-practices-20130307/#tabpanel
43518 */
43519 role: _react2['default'].PropTypes.string,
43520
43521 /**
43522 * Apply styling an alignment for use in a Navbar. This prop will be set
43523 * automatically when the Nav is used inside a Navbar.
43524 */
43525 navbar: _react2['default'].PropTypes.bool,
43526
43527 /**
43528 * Float the Nav to the right. When `navbar` is `true` the appropriate
43529 * contextual classes are added as well.
43530 */
43531 pullRight: _react2['default'].PropTypes.bool,
43532
43533 /**
43534 * Float the Nav to the left. When `navbar` is `true` the appropriate
43535 * contextual classes are added as well.
43536 */
43537 pullLeft: _react2['default'].PropTypes.bool
43538 };
43539
43540 Nav.contextTypes = {
43541 $bs_navbar: _react2['default'].PropTypes.bool,
43542 $bs_navbar_bsClass: _react2['default'].PropTypes.string,
43543
43544 $bs_tabcontainer: _react2['default'].PropTypes.shape({
43545 activeKey: _react2['default'].PropTypes.any,
43546 onSelect: _react2['default'].PropTypes.func,
43547 getId: _react2['default'].PropTypes.func
43548 })
43549 };
43550
43551 Nav.defaultProps = {
43552 justified: false,
43553 pullRight: false,
43554 pullLeft: false,
43555 stacked: false
43556 };
43557
43558 exports['default'] = _utilsBootstrapUtils.bsClass('nav', _utilsBootstrapUtils.bsStyles(['tabs', 'pills'], Nav));
43559 module.exports = exports['default'];
43560
43561/***/ },
43562/* 556 */
43563/***/ function(module, exports, __webpack_require__) {
43564
43565 'use strict';
43566
43567 var _interopRequireDefault = __webpack_require__(335)['default'];
43568
43569 exports.__esModule = true;
43570 exports.nextEnabled = nextEnabled;
43571
43572 var _ValidComponentChildren = __webpack_require__(365);
43573
43574 var _ValidComponentChildren2 = _interopRequireDefault(_ValidComponentChildren);
43575
43576 var findChild = _ValidComponentChildren2['default'].find;
43577
43578 var TAB = 'tab';
43579 exports.TAB = TAB;
43580 var PANE = 'pane';
43581
43582 exports.PANE = PANE;
43583
43584 function nextEnabled(children, currentKey, keys, moveNext) {
43585 var lastIdx = keys.length - 1;
43586 var stopAt = keys[moveNext ? Math.max(lastIdx, 0) : 0];
43587 var nextKey = currentKey;
43588
43589 function getNext() {
43590 var idx = keys.indexOf(nextKey);
43591 nextKey = moveNext ? keys[Math.min(lastIdx, idx + 1)] : keys[Math.max(0, idx - 1)];
43592
43593 return findChild(children, function (_child) {
43594 return _child.props.eventKey === nextKey;
43595 });
43596 }
43597
43598 var next = getNext();
43599
43600 while (next.props.eventKey !== stopAt && next.props.disabled) {
43601 next = getNext();
43602 }
43603
43604 return next.props.disabled ? currentKey : next.props.eventKey;
43605 }
43606
43607/***/ },
43608/* 557 */
43609/***/ function(module, exports, __webpack_require__) {
43610
43611 /* eslint react/no-multi-comp: 0 */
43612 'use strict';
43613
43614 var _objectWithoutProperties = __webpack_require__(355)['default'];
43615
43616 var _extends = __webpack_require__(338)['default'];
43617
43618 var _interopRequireDefault = __webpack_require__(335)['default'];
43619
43620 exports.__esModule = true;
43621
43622 var _classnames = __webpack_require__(356);
43623
43624 var _classnames2 = _interopRequireDefault(_classnames);
43625
43626 var _react = __webpack_require__(89);
43627
43628 var _react2 = _interopRequireDefault(_react);
43629
43630 var _reactPropTypesLibElementType = __webpack_require__(380);
43631
43632 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
43633
43634 var _uncontrollable = __webpack_require__(489);
43635
43636 var _uncontrollable2 = _interopRequireDefault(_uncontrollable);
43637
43638 var _styleMaps = __webpack_require__(358);
43639
43640 var _utilsBootstrapUtils = __webpack_require__(357);
43641
43642 var _Grid = __webpack_require__(507);
43643
43644 var _Grid2 = _interopRequireDefault(_Grid);
43645
43646 var _NavbarBrand = __webpack_require__(558);
43647
43648 var _NavbarBrand2 = _interopRequireDefault(_NavbarBrand);
43649
43650 var _NavbarCollapse = __webpack_require__(559);
43651
43652 var _NavbarCollapse2 = _interopRequireDefault(_NavbarCollapse);
43653
43654 var _NavbarHeader = __webpack_require__(560);
43655
43656 var _NavbarHeader2 = _interopRequireDefault(_NavbarHeader);
43657
43658 var _NavbarToggle = __webpack_require__(561);
43659
43660 var _NavbarToggle2 = _interopRequireDefault(_NavbarToggle);
43661
43662 var Navbar = _react2['default'].createClass({
43663 displayName: 'Navbar',
43664
43665 propTypes: {
43666 /**
43667 * Create a fixed navbar along the top of the screen, that scrolls with the page
43668 */
43669 fixedTop: _react2['default'].PropTypes.bool,
43670 /**
43671 * Create a fixed navbar along the bottom of the screen, that scrolls with the page
43672 */
43673 fixedBottom: _react2['default'].PropTypes.bool,
43674 /**
43675 * Create a full-width navbar that scrolls away with the page
43676 */
43677 staticTop: _react2['default'].PropTypes.bool,
43678 /**
43679 * An alternative dark visual style for the Navbar
43680 */
43681 inverse: _react2['default'].PropTypes.bool,
43682 /**
43683 * Allow the Navbar to fluidly adjust to the page or container width, instead of at the
43684 * predefined screen breakpoints
43685 */
43686 fluid: _react2['default'].PropTypes.bool,
43687
43688 /**
43689 * Set a custom element for this component.
43690 */
43691 componentClass: _reactPropTypesLibElementType2['default'],
43692 /**
43693 * A callback fired when the `<Navbar>` body collapses or expands.
43694 * Fired when a `<Navbar.Toggle>` is clicked and called with the new `navExpanded` boolean value.
43695 *
43696 * @controllable navExpanded
43697 */
43698 onToggle: _react2['default'].PropTypes.func,
43699
43700 /**
43701 * Explicitly set the visiblity of the navbar body
43702 *
43703 * @controllable onToggle
43704 */
43705 expanded: _react2['default'].PropTypes.bool
43706
43707 },
43708
43709 childContextTypes: {
43710 $bs_navbar: _react.PropTypes.bool,
43711 $bs_navbar_bsClass: _react.PropTypes.string,
43712 $bs_navbar_onToggle: _react.PropTypes.func,
43713 $bs_navbar_expanded: _react.PropTypes.bool
43714 },
43715
43716 getDefaultProps: function getDefaultProps() {
43717 return {
43718 componentClass: 'nav',
43719 fixedTop: false,
43720 fixedBottom: false,
43721 staticTop: false,
43722 inverse: false,
43723 fluid: false
43724 };
43725 },
43726
43727 getChildContext: function getChildContext() {
43728 return {
43729 $bs_navbar: true,
43730 $bs_navbar_bsClass: this.props.bsClass,
43731 $bs_navbar_onToggle: this.handleToggle,
43732 $bs_navbar_expanded: this.props.expanded
43733 };
43734 },
43735
43736 handleToggle: function handleToggle() {
43737 this.props.onToggle(!this.props.expanded);
43738 },
43739
43740 isNavExpanded: function isNavExpanded() {
43741 return !!this.props.expanded;
43742 },
43743
43744 render: function render() {
43745 var _props = this.props;
43746 var fixedTop = _props.fixedTop;
43747 var fixedBottom = _props.fixedBottom;
43748 var staticTop = _props.staticTop;
43749 var inverse = _props.inverse;
43750 var ComponentClass = _props.componentClass;
43751 var fluid = _props.fluid;
43752 var className = _props.className;
43753 var children = _props.children;
43754
43755 var props = _objectWithoutProperties(_props, ['fixedTop', 'fixedBottom', 'staticTop', 'inverse', 'componentClass', 'fluid', 'className', 'children']);
43756
43757 // will result in some false positives but that seems better
43758 // than false negatives. strict `undefined` check allows explicit
43759 // "nulling" of the role if the user really doesn't want one
43760 if (props.role === undefined && ComponentClass !== 'nav') {
43761 props.role = 'navigation';
43762 }
43763
43764 if (inverse) {
43765 props.bsStyle = _styleMaps.INVERSE;
43766 }
43767
43768 var classes = _utilsBootstrapUtils.getClassSet(props);
43769
43770 classes[_utilsBootstrapUtils.prefix(this.props, 'fixed-top')] = fixedTop;
43771 classes[_utilsBootstrapUtils.prefix(this.props, 'fixed-bottom')] = fixedBottom;
43772 classes[_utilsBootstrapUtils.prefix(this.props, 'static-top')] = staticTop;
43773
43774 return _react2['default'].createElement(
43775 ComponentClass,
43776 _extends({}, props, { className: _classnames2['default'](className, classes) }),
43777 _react2['default'].createElement(
43778 _Grid2['default'],
43779 { fluid: fluid },
43780 children
43781 )
43782 );
43783 }
43784 });
43785
43786 var NAVBAR_STATES = [_styleMaps.DEFAULT, _styleMaps.INVERSE];
43787
43788 Navbar = _utilsBootstrapUtils.bsStyles(NAVBAR_STATES, _styleMaps.DEFAULT, _utilsBootstrapUtils.bsClass('navbar', _uncontrollable2['default'](Navbar, { expanded: 'onToggle' })));
43789
43790 function createSimpleWrapper(tag, suffix, displayName) {
43791 var wrapper = function wrapper(_ref, _ref2) {
43792 var Tag = _ref.componentClass;
43793 var className = _ref.className;
43794
43795 var props = _objectWithoutProperties(_ref, ['componentClass', 'className']);
43796
43797 var _classNames;
43798
43799 var _ref2$$bs_navbar_bsClass = _ref2.$bs_navbar_bsClass;
43800 var bsClass = _ref2$$bs_navbar_bsClass === undefined ? 'navbar' : _ref2$$bs_navbar_bsClass;
43801 return _react2['default'].createElement(Tag, _extends({}, props, {
43802 className: _classnames2['default'](className, _utilsBootstrapUtils.prefix({ bsClass: bsClass }, suffix), (_classNames = {}, _classNames[_utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'right')] = props.pullRight, _classNames[_utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'left')] = props.pullLeft, _classNames))
43803 }));
43804 };
43805
43806 wrapper.displayName = displayName;
43807
43808 wrapper.propTypes = {
43809 componentClass: _reactPropTypesLibElementType2['default'],
43810 pullRight: _react2['default'].PropTypes.bool,
43811 pullLeft: _react2['default'].PropTypes.bool
43812 };
43813 wrapper.defaultProps = {
43814 componentClass: tag,
43815 pullRight: false,
43816 pullLeft: false
43817 };
43818
43819 wrapper.contextTypes = {
43820 $bs_navbar_bsClass: _react.PropTypes.string
43821 };
43822
43823 return wrapper;
43824 }
43825
43826 Navbar.Brand = _NavbarBrand2['default'];
43827 Navbar.Header = _NavbarHeader2['default'];
43828 Navbar.Toggle = _NavbarToggle2['default'];
43829 Navbar.Collapse = _NavbarCollapse2['default'];
43830
43831 Navbar.Form = createSimpleWrapper('div', 'form', 'NavbarForm');
43832 Navbar.Text = createSimpleWrapper('p', 'text', 'NavbarText');
43833 Navbar.Link = createSimpleWrapper('a', 'link', 'NavbarLink');
43834
43835 exports['default'] = Navbar;
43836 module.exports = exports['default'];
43837
43838/***/ },
43839/* 558 */
43840/***/ function(module, exports, __webpack_require__) {
43841
43842 'use strict';
43843
43844 var _inherits = __webpack_require__(372)['default'];
43845
43846 var _classCallCheck = __webpack_require__(379)['default'];
43847
43848 var _objectWithoutProperties = __webpack_require__(355)['default'];
43849
43850 var _extends = __webpack_require__(338)['default'];
43851
43852 var _interopRequireDefault = __webpack_require__(335)['default'];
43853
43854 exports.__esModule = true;
43855
43856 var _classnames = __webpack_require__(356);
43857
43858 var _classnames2 = _interopRequireDefault(_classnames);
43859
43860 var _react = __webpack_require__(89);
43861
43862 var _react2 = _interopRequireDefault(_react);
43863
43864 var _utilsBootstrapUtils = __webpack_require__(357);
43865
43866 var NavbarBrand = (function (_React$Component) {
43867 _inherits(NavbarBrand, _React$Component);
43868
43869 function NavbarBrand() {
43870 _classCallCheck(this, NavbarBrand);
43871
43872 _React$Component.apply(this, arguments);
43873 }
43874
43875 NavbarBrand.prototype.render = function render() {
43876 var _props = this.props;
43877 var className = _props.className;
43878 var children = _props.children;
43879
43880 var props = _objectWithoutProperties(_props, ['className', 'children']);
43881
43882 var _context$$bs_navbar_bsClass = this.context.$bs_navbar_bsClass;
43883 var bsClass = _context$$bs_navbar_bsClass === undefined ? 'navbar' : _context$$bs_navbar_bsClass;
43884
43885 var brandClasses = _utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'brand');
43886
43887 if (_react2['default'].isValidElement(children)) {
43888 return _react2['default'].cloneElement(children, {
43889 className: _classnames2['default'](children.props.className, className, brandClasses)
43890 });
43891 }
43892
43893 return _react2['default'].createElement(
43894 'span',
43895 _extends({}, props, { className: _classnames2['default'](className, brandClasses) }),
43896 children
43897 );
43898 };
43899
43900 return NavbarBrand;
43901 })(_react2['default'].Component);
43902
43903 NavbarBrand.contextTypes = {
43904 $bs_navbar_bsClass: _react2['default'].PropTypes.string
43905 };
43906
43907 exports['default'] = NavbarBrand;
43908 module.exports = exports['default'];
43909
43910/***/ },
43911/* 559 */
43912/***/ function(module, exports, __webpack_require__) {
43913
43914 'use strict';
43915
43916 var _objectWithoutProperties = __webpack_require__(355)['default'];
43917
43918 var _extends = __webpack_require__(338)['default'];
43919
43920 var _interopRequireDefault = __webpack_require__(335)['default'];
43921
43922 exports.__esModule = true;
43923
43924 var _react = __webpack_require__(89);
43925
43926 var _react2 = _interopRequireDefault(_react);
43927
43928 var _utilsBootstrapUtils = __webpack_require__(357);
43929
43930 var _Collapse = __webpack_require__(401);
43931
43932 var _Collapse2 = _interopRequireDefault(_Collapse);
43933
43934 var NavbarCollapse = _react2['default'].createClass({
43935 displayName: 'NavbarCollapse',
43936
43937 contextTypes: {
43938 $bs_navbar_bsClass: _react.PropTypes.string,
43939 $bs_navbar_expanded: _react.PropTypes.bool
43940 },
43941
43942 render: function render() {
43943 var _props = this.props;
43944 var children = _props.children;
43945
43946 var props = _objectWithoutProperties(_props, ['children']);
43947
43948 var _context = this.context;
43949 var _context$$bs_navbar_bsClass = _context.$bs_navbar_bsClass;
43950 var bsClass = _context$$bs_navbar_bsClass === undefined ? 'navbar' : _context$$bs_navbar_bsClass;
43951 var expanded = _context.$bs_navbar_expanded;
43952
43953 return _react2['default'].createElement(
43954 _Collapse2['default'],
43955 _extends({ 'in': expanded }, props),
43956 _react2['default'].createElement(
43957 'div',
43958 { className: _utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'collapse') },
43959 children
43960 )
43961 );
43962 }
43963 });
43964
43965 exports['default'] = NavbarCollapse;
43966 module.exports = exports['default'];
43967
43968/***/ },
43969/* 560 */
43970/***/ function(module, exports, __webpack_require__) {
43971
43972 'use strict';
43973
43974 var _objectWithoutProperties = __webpack_require__(355)['default'];
43975
43976 var _extends = __webpack_require__(338)['default'];
43977
43978 var _interopRequireDefault = __webpack_require__(335)['default'];
43979
43980 exports.__esModule = true;
43981
43982 var _classnames = __webpack_require__(356);
43983
43984 var _classnames2 = _interopRequireDefault(_classnames);
43985
43986 var _react = __webpack_require__(89);
43987
43988 var _react2 = _interopRequireDefault(_react);
43989
43990 var _utilsBootstrapUtils = __webpack_require__(357);
43991
43992 var NavbarHeader = _react2['default'].createClass({
43993 displayName: 'NavbarHeader',
43994
43995 contextTypes: {
43996 $bs_navbar_bsClass: _react.PropTypes.string
43997 },
43998
43999 render: function render() {
44000 var _props = this.props;
44001 var className = _props.className;
44002
44003 var props = _objectWithoutProperties(_props, ['className']);
44004
44005 var _context$$bs_navbar_bsClass = this.context.$bs_navbar_bsClass;
44006 var bsClass = _context$$bs_navbar_bsClass === undefined ? 'navbar' : _context$$bs_navbar_bsClass;
44007
44008 var headerClasses = _utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'header');
44009
44010 return _react2['default'].createElement('div', _extends({}, props, { className: _classnames2['default'](className, headerClasses) }));
44011 }
44012 });
44013
44014 exports['default'] = NavbarHeader;
44015 module.exports = exports['default'];
44016
44017/***/ },
44018/* 561 */
44019/***/ function(module, exports, __webpack_require__) {
44020
44021 'use strict';
44022
44023 var _extends = __webpack_require__(338)['default'];
44024
44025 var _objectWithoutProperties = __webpack_require__(355)['default'];
44026
44027 var _interopRequireDefault = __webpack_require__(335)['default'];
44028
44029 exports.__esModule = true;
44030
44031 var _classnames = __webpack_require__(356);
44032
44033 var _classnames2 = _interopRequireDefault(_classnames);
44034
44035 var _react = __webpack_require__(89);
44036
44037 var _react2 = _interopRequireDefault(_react);
44038
44039 var _utilsBootstrapUtils = __webpack_require__(357);
44040
44041 var _utilsCreateChainedFunction = __webpack_require__(414);
44042
44043 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
44044
44045 var NavbarToggle = _react2['default'].createClass({
44046 displayName: 'NavbarToggle',
44047
44048 propTypes: {
44049 onClick: _react2['default'].PropTypes.func,
44050 /**
44051 * The toggle content, if left empty it will render the default toggle (seen above).
44052 */
44053 children: _react.PropTypes.node
44054 },
44055
44056 contextTypes: {
44057 $bs_navbar_bsClass: _react.PropTypes.string,
44058 $bs_navbar_onToggle: _react.PropTypes.func,
44059 $bs_navbar_expanded: _react.PropTypes.bool
44060 },
44061
44062 render: function render() {
44063 var _props = this.props;
44064 var onClick = _props.onClick;
44065 var className = _props.className;
44066 var children = _props.children;
44067
44068 var props = _objectWithoutProperties(_props, ['onClick', 'className', 'children']);
44069
44070 var _context = this.context;
44071 var _context$$bs_navbar_bsClass = _context.$bs_navbar_bsClass;
44072 var bsClass = _context$$bs_navbar_bsClass === undefined ? 'navbar' : _context$$bs_navbar_bsClass;
44073 var onToggle = _context.$bs_navbar_onToggle;
44074 var expanded = _context.$bs_navbar_expanded;
44075
44076 var buttonProps = _extends({
44077 type: 'button'
44078 }, props, {
44079 onClick: _utilsCreateChainedFunction2['default'](onClick, onToggle),
44080 className: _classnames2['default'](className, _utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'toggle'), !expanded && 'collapsed')
44081 });
44082
44083 if (children) {
44084 return _react2['default'].createElement(
44085 'button',
44086 buttonProps,
44087 children
44088 );
44089 }
44090
44091 return _react2['default'].createElement(
44092 'button',
44093 buttonProps,
44094 _react2['default'].createElement(
44095 'span',
44096 { className: 'sr-only' },
44097 'Toggle navigation'
44098 ),
44099 _react2['default'].createElement('span', { className: 'icon-bar' }),
44100 _react2['default'].createElement('span', { className: 'icon-bar' }),
44101 _react2['default'].createElement('span', { className: 'icon-bar' })
44102 );
44103 }
44104 });
44105
44106 exports['default'] = NavbarToggle;
44107 module.exports = exports['default'];
44108
44109/***/ },
44110/* 562 */
44111/***/ function(module, exports, __webpack_require__) {
44112
44113 'use strict';
44114
44115 var _inherits = __webpack_require__(372)['default'];
44116
44117 var _classCallCheck = __webpack_require__(379)['default'];
44118
44119 var _extends = __webpack_require__(338)['default'];
44120
44121 var _objectWithoutProperties = __webpack_require__(355)['default'];
44122
44123 var _interopRequireDefault = __webpack_require__(335)['default'];
44124
44125 exports.__esModule = true;
44126
44127 var _react = __webpack_require__(89);
44128
44129 var _react2 = _interopRequireDefault(_react);
44130
44131 var _Dropdown = __webpack_require__(415);
44132
44133 var _Dropdown2 = _interopRequireDefault(_Dropdown);
44134
44135 var NavDropdown = (function (_React$Component) {
44136 _inherits(NavDropdown, _React$Component);
44137
44138 function NavDropdown() {
44139 _classCallCheck(this, NavDropdown);
44140
44141 _React$Component.apply(this, arguments);
44142 }
44143
44144 NavDropdown.prototype.render = function render() {
44145 var _props = this.props;
44146 var children = _props.children;
44147 var title = _props.title;
44148 var noCaret = _props.noCaret;
44149
44150 var props = _objectWithoutProperties(_props, ['children', 'title', 'noCaret']);
44151
44152 return _react2['default'].createElement(
44153 _Dropdown2['default'],
44154 _extends({}, props, { componentClass: 'li' }),
44155 _react2['default'].createElement(
44156 _Dropdown2['default'].Toggle,
44157 {
44158 useAnchor: true,
44159 disabled: props.disabled,
44160 noCaret: noCaret
44161 },
44162 title
44163 ),
44164 _react2['default'].createElement(
44165 _Dropdown2['default'].Menu,
44166 null,
44167 children
44168 )
44169 );
44170 };
44171
44172 return NavDropdown;
44173 })(_react2['default'].Component);
44174
44175 NavDropdown.propTypes = _extends({
44176 noCaret: _react2['default'].PropTypes.bool,
44177 title: _react2['default'].PropTypes.node.isRequired
44178 }, _Dropdown2['default'].propTypes);
44179
44180 exports['default'] = NavDropdown;
44181 module.exports = exports['default'];
44182
44183/***/ },
44184/* 563 */
44185/***/ function(module, exports, __webpack_require__) {
44186
44187 'use strict';
44188
44189 var _objectWithoutProperties = __webpack_require__(355)['default'];
44190
44191 var _extends = __webpack_require__(338)['default'];
44192
44193 var _interopRequireDefault = __webpack_require__(335)['default'];
44194
44195 exports.__esModule = true;
44196
44197 var _classnames = __webpack_require__(356);
44198
44199 var _classnames2 = _interopRequireDefault(_classnames);
44200
44201 var _react = __webpack_require__(89);
44202
44203 var _react2 = _interopRequireDefault(_react);
44204
44205 var _SafeAnchor = __webpack_require__(371);
44206
44207 var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
44208
44209 var _utilsCreateChainedFunction = __webpack_require__(414);
44210
44211 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
44212
44213 var NavItem = _react2['default'].createClass({
44214 displayName: 'NavItem',
44215
44216 propTypes: {
44217 active: _react2['default'].PropTypes.bool,
44218 disabled: _react2['default'].PropTypes.bool,
44219 role: _react2['default'].PropTypes.string,
44220 href: _react2['default'].PropTypes.string,
44221 onClick: _react2['default'].PropTypes.func,
44222 onSelect: _react2['default'].PropTypes.func,
44223 eventKey: _react2['default'].PropTypes.any
44224 },
44225
44226 getDefaultProps: function getDefaultProps() {
44227 return {
44228 active: false,
44229 disabled: false
44230 };
44231 },
44232
44233 render: function render() {
44234 var _props = this.props;
44235 var active = _props.active;
44236 var disabled = _props.disabled;
44237 var role = _props.role;
44238 var href = _props.href;
44239 var onClick = _props.onClick;
44240 var className = _props.className;
44241 var style = _props.style;
44242
44243 var props = _objectWithoutProperties(_props, ['active', 'disabled', 'role', 'href', 'onClick', 'className', 'style']);
44244
44245 delete props.onSelect;
44246 delete props.eventKey;
44247
44248 if (!role) {
44249 if (href === '#') {
44250 role = 'button';
44251 }
44252 } else if (role === 'tab') {
44253 props['aria-selected'] = active;
44254 }
44255
44256 return _react2['default'].createElement(
44257 'li',
44258 {
44259 role: 'presentation',
44260 className: _classnames2['default'](className, { active: active, disabled: disabled }),
44261 style: style
44262 },
44263 _react2['default'].createElement(_SafeAnchor2['default'], _extends({}, props, {
44264 disabled: disabled,
44265 role: role,
44266 href: href,
44267 onClick: _utilsCreateChainedFunction2['default'](onClick, this.handleClick)
44268 }))
44269 );
44270 },
44271
44272 handleClick: function handleClick(e) {
44273 if (this.props.onSelect) {
44274 e.preventDefault();
44275
44276 if (!this.props.disabled) {
44277 this.props.onSelect(this.props.eventKey, e);
44278 }
44279 }
44280 }
44281 });
44282
44283 exports['default'] = NavItem;
44284 module.exports = exports['default'];
44285
44286/***/ },
44287/* 564 */
44288/***/ function(module, exports, __webpack_require__) {
44289
44290 /* eslint react/prop-types: [2, {ignore: ["container", "containerPadding", "target", "placement", "children"] }] */
44291 /* These properties are validated in 'Portal' and 'Position' components */
44292
44293 'use strict';
44294
44295 var _inherits = __webpack_require__(372)['default'];
44296
44297 var _classCallCheck = __webpack_require__(379)['default'];
44298
44299 var _extends = __webpack_require__(338)['default'];
44300
44301 var _objectWithoutProperties = __webpack_require__(355)['default'];
44302
44303 var _interopRequireDefault = __webpack_require__(335)['default'];
44304
44305 exports.__esModule = true;
44306
44307 var _react = __webpack_require__(89);
44308
44309 var _react2 = _interopRequireDefault(_react);
44310
44311 var _reactOverlaysLibOverlay = __webpack_require__(565);
44312
44313 var _reactOverlaysLibOverlay2 = _interopRequireDefault(_reactOverlaysLibOverlay);
44314
44315 var _reactPropTypesLibElementType = __webpack_require__(380);
44316
44317 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
44318
44319 var _Fade = __webpack_require__(502);
44320
44321 var _Fade2 = _interopRequireDefault(_Fade);
44322
44323 var _classnames = __webpack_require__(356);
44324
44325 var _classnames2 = _interopRequireDefault(_classnames);
44326
44327 var Overlay = (function (_React$Component) {
44328 _inherits(Overlay, _React$Component);
44329
44330 function Overlay() {
44331 _classCallCheck(this, Overlay);
44332
44333 _React$Component.apply(this, arguments);
44334 }
44335
44336 Overlay.prototype.render = function render() {
44337 var _props = this.props;
44338 var child = _props.children;
44339 var transition = _props.animation;
44340
44341 var props = _objectWithoutProperties(_props, ['children', 'animation']);
44342
44343 if (transition === true) {
44344 transition = _Fade2['default'];
44345 }
44346
44347 if (transition === false) {
44348 transition = null;
44349 }
44350
44351 if (!transition) {
44352 child = _react.cloneElement(child, {
44353 className: _classnames2['default']('in', child.props.className)
44354 });
44355 }
44356
44357 return _react2['default'].createElement(
44358 _reactOverlaysLibOverlay2['default'],
44359 _extends({}, props, {
44360 transition: transition
44361 }),
44362 child
44363 );
44364 };
44365
44366 return Overlay;
44367 })(_react2['default'].Component);
44368
44369 Overlay.propTypes = _extends({}, _reactOverlaysLibOverlay2['default'].propTypes, {
44370
44371 /**
44372 * Set the visibility of the Overlay
44373 */
44374 show: _react2['default'].PropTypes.bool,
44375 /**
44376 * Specify whether the overlay should trigger onHide when the user clicks outside the overlay
44377 */
44378 rootClose: _react2['default'].PropTypes.bool,
44379 /**
44380 * A callback invoked by the overlay when it wishes to be hidden. Required if
44381 * `rootClose` is specified.
44382 */
44383 onHide: _react2['default'].PropTypes.func,
44384
44385 /**
44386 * Use animation
44387 */
44388 animation: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.bool, _reactPropTypesLibElementType2['default']]),
44389
44390 /**
44391 * Callback fired before the Overlay transitions in
44392 */
44393 onEnter: _react2['default'].PropTypes.func,
44394
44395 /**
44396 * Callback fired as the Overlay begins to transition in
44397 */
44398 onEntering: _react2['default'].PropTypes.func,
44399
44400 /**
44401 * Callback fired after the Overlay finishes transitioning in
44402 */
44403 onEntered: _react2['default'].PropTypes.func,
44404
44405 /**
44406 * Callback fired right before the Overlay transitions out
44407 */
44408 onExit: _react2['default'].PropTypes.func,
44409
44410 /**
44411 * Callback fired as the Overlay begins to transition out
44412 */
44413 onExiting: _react2['default'].PropTypes.func,
44414
44415 /**
44416 * Callback fired after the Overlay finishes transitioning out
44417 */
44418 onExited: _react2['default'].PropTypes.func
44419 });
44420
44421 Overlay.defaultProps = {
44422 animation: _Fade2['default'],
44423 rootClose: false,
44424 show: false
44425 };
44426
44427 exports['default'] = Overlay;
44428 module.exports = exports['default'];
44429
44430/***/ },
44431/* 565 */
44432/***/ function(module, exports, __webpack_require__) {
44433
44434 'use strict';
44435
44436 Object.defineProperty(exports, "__esModule", {
44437 value: true
44438 });
44439
44440 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
44441
44442 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
44443
44444 var _react = __webpack_require__(89);
44445
44446 var _react2 = _interopRequireDefault(_react);
44447
44448 var _Portal = __webpack_require__(539);
44449
44450 var _Portal2 = _interopRequireDefault(_Portal);
44451
44452 var _Position = __webpack_require__(566);
44453
44454 var _Position2 = _interopRequireDefault(_Position);
44455
44456 var _RootCloseWrapper = __webpack_require__(495);
44457
44458 var _RootCloseWrapper2 = _interopRequireDefault(_RootCloseWrapper);
44459
44460 var _elementType = __webpack_require__(538);
44461
44462 var _elementType2 = _interopRequireDefault(_elementType);
44463
44464 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
44465
44466 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
44467
44468 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
44469
44470 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
44471
44472 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
44473
44474 /**
44475 * Built on top of `<Position/>` and `<Portal/>`, the overlay component is great for custom tooltip overlays.
44476 */
44477 var Overlay = function (_React$Component) {
44478 _inherits(Overlay, _React$Component);
44479
44480 function Overlay(props, context) {
44481 _classCallCheck(this, Overlay);
44482
44483 var _this = _possibleConstructorReturn(this, (Overlay.__proto__ || Object.getPrototypeOf(Overlay)).call(this, props, context));
44484
44485 _this.state = { exited: !props.show };
44486 _this.onHiddenListener = _this.handleHidden.bind(_this);
44487 return _this;
44488 }
44489
44490 _createClass(Overlay, [{
44491 key: 'componentWillReceiveProps',
44492 value: function componentWillReceiveProps(nextProps) {
44493 if (nextProps.show) {
44494 this.setState({ exited: false });
44495 } else if (!nextProps.transition) {
44496 // Otherwise let handleHidden take care of marking exited.
44497 this.setState({ exited: true });
44498 }
44499 }
44500 }, {
44501 key: 'render',
44502 value: function render() {
44503 var _props = this.props;
44504 var container = _props.container;
44505 var containerPadding = _props.containerPadding;
44506 var target = _props.target;
44507 var placement = _props.placement;
44508 var shouldUpdatePosition = _props.shouldUpdatePosition;
44509 var rootClose = _props.rootClose;
44510 var children = _props.children;
44511 var Transition = _props.transition;
44512
44513 var props = _objectWithoutProperties(_props, ['container', 'containerPadding', 'target', 'placement', 'shouldUpdatePosition', 'rootClose', 'children', 'transition']);
44514
44515 // Don't un-render the overlay while it's transitioning out.
44516
44517
44518 var mountOverlay = props.show || Transition && !this.state.exited;
44519 if (!mountOverlay) {
44520 // Don't bother showing anything if we don't have to.
44521 return null;
44522 }
44523
44524 var child = children;
44525
44526 // Position is be inner-most because it adds inline styles into the child,
44527 // which the other wrappers don't forward correctly.
44528 child = _react2.default.createElement(
44529 _Position2.default,
44530 { container: container, containerPadding: containerPadding, target: target, placement: placement, shouldUpdatePosition: shouldUpdatePosition },
44531 child
44532 );
44533
44534 if (Transition) {
44535 var onExit = props.onExit;
44536 var onExiting = props.onExiting;
44537 var onEnter = props.onEnter;
44538 var onEntering = props.onEntering;
44539 var onEntered = props.onEntered;
44540
44541 // This animates the child node by injecting props, so it must precede
44542 // anything that adds a wrapping div.
44543
44544 child = _react2.default.createElement(
44545 Transition,
44546 {
44547 'in': props.show,
44548 transitionAppear: true,
44549 onExit: onExit,
44550 onExiting: onExiting,
44551 onExited: this.onHiddenListener,
44552 onEnter: onEnter,
44553 onEntering: onEntering,
44554 onEntered: onEntered
44555 },
44556 child
44557 );
44558 }
44559
44560 // This goes after everything else because it adds a wrapping div.
44561 if (rootClose) {
44562 child = _react2.default.createElement(
44563 _RootCloseWrapper2.default,
44564 { onRootClose: props.onHide },
44565 child
44566 );
44567 }
44568
44569 return _react2.default.createElement(
44570 _Portal2.default,
44571 { container: container },
44572 child
44573 );
44574 }
44575 }, {
44576 key: 'handleHidden',
44577 value: function handleHidden() {
44578 this.setState({ exited: true });
44579
44580 if (this.props.onExited) {
44581 var _props2;
44582
44583 (_props2 = this.props).onExited.apply(_props2, arguments);
44584 }
44585 }
44586 }]);
44587
44588 return Overlay;
44589 }(_react2.default.Component);
44590
44591 Overlay.propTypes = _extends({}, _Portal2.default.propTypes, _Position2.default.propTypes, {
44592
44593 /**
44594 * Set the visibility of the Overlay
44595 */
44596 show: _react2.default.PropTypes.bool,
44597
44598 /**
44599 * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay
44600 */
44601 rootClose: _react2.default.PropTypes.bool,
44602
44603 /**
44604 * A Callback fired by the Overlay when it wishes to be hidden.
44605 *
44606 * __required__ when `rootClose` is `true`.
44607 *
44608 * @type func
44609 */
44610 onHide: function onHide(props) {
44611 var propType = _react2.default.PropTypes.func;
44612 if (props.rootClose) {
44613 propType = propType.isRequired;
44614 }
44615
44616 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
44617 args[_key - 1] = arguments[_key];
44618 }
44619
44620 return propType.apply(undefined, [props].concat(args));
44621 },
44622
44623
44624 /**
44625 * A `<Transition/>` component used to animate the overlay changes visibility.
44626 */
44627 transition: _elementType2.default,
44628
44629 /**
44630 * Callback fired before the Overlay transitions in
44631 */
44632 onEnter: _react2.default.PropTypes.func,
44633
44634 /**
44635 * Callback fired as the Overlay begins to transition in
44636 */
44637 onEntering: _react2.default.PropTypes.func,
44638
44639 /**
44640 * Callback fired after the Overlay finishes transitioning in
44641 */
44642 onEntered: _react2.default.PropTypes.func,
44643
44644 /**
44645 * Callback fired right before the Overlay transitions out
44646 */
44647 onExit: _react2.default.PropTypes.func,
44648
44649 /**
44650 * Callback fired as the Overlay begins to transition out
44651 */
44652 onExiting: _react2.default.PropTypes.func,
44653
44654 /**
44655 * Callback fired after the Overlay finishes transitioning out
44656 */
44657 onExited: _react2.default.PropTypes.func
44658 });
44659
44660 exports.default = Overlay;
44661 module.exports = exports['default'];
44662
44663/***/ },
44664/* 566 */
44665/***/ function(module, exports, __webpack_require__) {
44666
44667 'use strict';
44668
44669 Object.defineProperty(exports, "__esModule", {
44670 value: true
44671 });
44672
44673 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
44674
44675 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
44676
44677 var _classnames = __webpack_require__(356);
44678
44679 var _classnames2 = _interopRequireDefault(_classnames);
44680
44681 var _react = __webpack_require__(89);
44682
44683 var _react2 = _interopRequireDefault(_react);
44684
44685 var _reactDom = __webpack_require__(122);
44686
44687 var _reactDom2 = _interopRequireDefault(_reactDom);
44688
44689 var _componentOrElement = __webpack_require__(536);
44690
44691 var _componentOrElement2 = _interopRequireDefault(_componentOrElement);
44692
44693 var _calculatePosition = __webpack_require__(567);
44694
44695 var _calculatePosition2 = _interopRequireDefault(_calculatePosition);
44696
44697 var _getContainer = __webpack_require__(540);
44698
44699 var _getContainer2 = _interopRequireDefault(_getContainer);
44700
44701 var _ownerDocument = __webpack_require__(498);
44702
44703 var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
44704
44705 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
44706
44707 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
44708
44709 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
44710
44711 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
44712
44713 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
44714
44715 /**
44716 * The Position component calculates the coordinates for its child, to position
44717 * it relative to a `target` component or node. Useful for creating callouts
44718 * and tooltips, the Position component injects a `style` props with `left` and
44719 * `top` values for positioning your component.
44720 *
44721 * It also injects "arrow" `left`, and `top` values for styling callout arrows
44722 * for giving your components a sense of directionality.
44723 */
44724 var Position = function (_React$Component) {
44725 _inherits(Position, _React$Component);
44726
44727 function Position(props, context) {
44728 _classCallCheck(this, Position);
44729
44730 var _this = _possibleConstructorReturn(this, (Position.__proto__ || Object.getPrototypeOf(Position)).call(this, props, context));
44731
44732 _this.state = {
44733 positionLeft: 0,
44734 positionTop: 0,
44735 arrowOffsetLeft: null,
44736 arrowOffsetTop: null
44737 };
44738
44739 _this._needsFlush = false;
44740 _this._lastTarget = null;
44741 return _this;
44742 }
44743
44744 _createClass(Position, [{
44745 key: 'componentDidMount',
44746 value: function componentDidMount() {
44747 this.updatePosition(this.getTarget());
44748 }
44749 }, {
44750 key: 'componentWillReceiveProps',
44751 value: function componentWillReceiveProps() {
44752 this._needsFlush = true;
44753 }
44754 }, {
44755 key: 'componentDidUpdate',
44756 value: function componentDidUpdate(prevProps) {
44757 if (this._needsFlush) {
44758 this._needsFlush = false;
44759 this.maybeUpdatePosition(this.props.placement !== prevProps.placement);
44760 }
44761 }
44762 }, {
44763 key: 'render',
44764 value: function render() {
44765 var _props = this.props;
44766 var children = _props.children;
44767 var className = _props.className;
44768
44769 var props = _objectWithoutProperties(_props, ['children', 'className']);
44770
44771 var _state = this.state;
44772 var positionLeft = _state.positionLeft;
44773 var positionTop = _state.positionTop;
44774
44775 var arrowPosition = _objectWithoutProperties(_state, ['positionLeft', 'positionTop']);
44776
44777 // These should not be forwarded to the child.
44778
44779
44780 delete props.target;
44781 delete props.container;
44782 delete props.containerPadding;
44783 delete props.shouldUpdatePosition;
44784
44785 var child = _react2.default.Children.only(children);
44786 return (0, _react.cloneElement)(child, _extends({}, props, arrowPosition, {
44787 // FIXME: Don't forward `positionLeft` and `positionTop` via both props
44788 // and `props.style`.
44789 positionLeft: positionLeft,
44790 positionTop: positionTop,
44791 className: (0, _classnames2.default)(className, child.props.className),
44792 style: _extends({}, child.props.style, {
44793 left: positionLeft,
44794 top: positionTop
44795 })
44796 }));
44797 }
44798 }, {
44799 key: 'getTarget',
44800 value: function getTarget() {
44801 var target = this.props.target;
44802
44803 var targetElement = typeof target === 'function' ? target() : target;
44804 return targetElement && _reactDom2.default.findDOMNode(targetElement) || null;
44805 }
44806 }, {
44807 key: 'maybeUpdatePosition',
44808 value: function maybeUpdatePosition(placementChanged) {
44809 var target = this.getTarget();
44810
44811 if (!this.props.shouldUpdatePosition && target === this._lastTarget && !placementChanged) {
44812 return;
44813 }
44814
44815 this.updatePosition(target);
44816 }
44817 }, {
44818 key: 'updatePosition',
44819 value: function updatePosition(target) {
44820 this._lastTarget = target;
44821
44822 if (!target) {
44823 this.setState({
44824 positionLeft: 0,
44825 positionTop: 0,
44826 arrowOffsetLeft: null,
44827 arrowOffsetTop: null
44828 });
44829
44830 return;
44831 }
44832
44833 var overlay = _reactDom2.default.findDOMNode(this);
44834 var container = (0, _getContainer2.default)(this.props.container, (0, _ownerDocument2.default)(this).body);
44835
44836 this.setState((0, _calculatePosition2.default)(this.props.placement, overlay, target, container, this.props.containerPadding));
44837 }
44838 }]);
44839
44840 return Position;
44841 }(_react2.default.Component);
44842
44843 Position.propTypes = {
44844 /**
44845 * A node, element, or function that returns either. The child will be
44846 * be positioned next to the `target` specified.
44847 */
44848 target: _react2.default.PropTypes.oneOfType([_componentOrElement2.default, _react2.default.PropTypes.func]),
44849
44850 /**
44851 * "offsetParent" of the component
44852 */
44853 container: _react2.default.PropTypes.oneOfType([_componentOrElement2.default, _react2.default.PropTypes.func]),
44854 /**
44855 * Minimum spacing in pixels between container border and component border
44856 */
44857 containerPadding: _react2.default.PropTypes.number,
44858 /**
44859 * How to position the component relative to the target
44860 */
44861 placement: _react2.default.PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
44862 /**
44863 * Whether the position should be changed on each update
44864 */
44865 shouldUpdatePosition: _react2.default.PropTypes.bool
44866 };
44867
44868 Position.displayName = 'Position';
44869
44870 Position.defaultProps = {
44871 containerPadding: 0,
44872 placement: 'right',
44873 shouldUpdatePosition: false
44874 };
44875
44876 exports.default = Position;
44877 module.exports = exports['default'];
44878
44879/***/ },
44880/* 567 */
44881/***/ function(module, exports, __webpack_require__) {
44882
44883 'use strict';
44884
44885 Object.defineProperty(exports, "__esModule", {
44886 value: true
44887 });
44888 exports.default = calculatePosition;
44889
44890 var _offset = __webpack_require__(568);
44891
44892 var _offset2 = _interopRequireDefault(_offset);
44893
44894 var _position = __webpack_require__(569);
44895
44896 var _position2 = _interopRequireDefault(_position);
44897
44898 var _scrollTop = __webpack_require__(571);
44899
44900 var _scrollTop2 = _interopRequireDefault(_scrollTop);
44901
44902 var _ownerDocument = __webpack_require__(498);
44903
44904 var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
44905
44906 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
44907
44908 function getContainerDimensions(containerNode) {
44909 var width = void 0,
44910 height = void 0,
44911 scroll = void 0;
44912
44913 if (containerNode.tagName === 'BODY') {
44914 width = window.innerWidth;
44915 height = window.innerHeight;
44916
44917 scroll = (0, _scrollTop2.default)((0, _ownerDocument2.default)(containerNode).documentElement) || (0, _scrollTop2.default)(containerNode);
44918 } else {
44919 var _getOffset = (0, _offset2.default)(containerNode);
44920
44921 width = _getOffset.width;
44922 height = _getOffset.height;
44923
44924 scroll = (0, _scrollTop2.default)(containerNode);
44925 }
44926
44927 return { width: width, height: height, scroll: scroll };
44928 }
44929
44930 function getTopDelta(top, overlayHeight, container, padding) {
44931 var containerDimensions = getContainerDimensions(container);
44932 var containerScroll = containerDimensions.scroll;
44933 var containerHeight = containerDimensions.height;
44934
44935 var topEdgeOffset = top - padding - containerScroll;
44936 var bottomEdgeOffset = top + padding - containerScroll + overlayHeight;
44937
44938 if (topEdgeOffset < 0) {
44939 return -topEdgeOffset;
44940 } else if (bottomEdgeOffset > containerHeight) {
44941 return containerHeight - bottomEdgeOffset;
44942 } else {
44943 return 0;
44944 }
44945 }
44946
44947 function getLeftDelta(left, overlayWidth, container, padding) {
44948 var containerDimensions = getContainerDimensions(container);
44949 var containerWidth = containerDimensions.width;
44950
44951 var leftEdgeOffset = left - padding;
44952 var rightEdgeOffset = left + padding + overlayWidth;
44953
44954 if (leftEdgeOffset < 0) {
44955 return -leftEdgeOffset;
44956 } else if (rightEdgeOffset > containerWidth) {
44957 return containerWidth - rightEdgeOffset;
44958 }
44959
44960 return 0;
44961 }
44962
44963 function calculatePosition(placement, overlayNode, target, container, padding) {
44964 var childOffset = container.tagName === 'BODY' ? (0, _offset2.default)(target) : (0, _position2.default)(target, container);
44965
44966 var _getOffset2 = (0, _offset2.default)(overlayNode);
44967
44968 var overlayHeight = _getOffset2.height;
44969 var overlayWidth = _getOffset2.width;
44970
44971
44972 var positionLeft = void 0,
44973 positionTop = void 0,
44974 arrowOffsetLeft = void 0,
44975 arrowOffsetTop = void 0;
44976
44977 if (placement === 'left' || placement === 'right') {
44978 positionTop = childOffset.top + (childOffset.height - overlayHeight) / 2;
44979
44980 if (placement === 'left') {
44981 positionLeft = childOffset.left - overlayWidth;
44982 } else {
44983 positionLeft = childOffset.left + childOffset.width;
44984 }
44985
44986 var topDelta = getTopDelta(positionTop, overlayHeight, container, padding);
44987
44988 positionTop += topDelta;
44989 arrowOffsetTop = 50 * (1 - 2 * topDelta / overlayHeight) + '%';
44990 arrowOffsetLeft = void 0;
44991 } else if (placement === 'top' || placement === 'bottom') {
44992 positionLeft = childOffset.left + (childOffset.width - overlayWidth) / 2;
44993
44994 if (placement === 'top') {
44995 positionTop = childOffset.top - overlayHeight;
44996 } else {
44997 positionTop = childOffset.top + childOffset.height;
44998 }
44999
45000 var leftDelta = getLeftDelta(positionLeft, overlayWidth, container, padding);
45001
45002 positionLeft += leftDelta;
45003 arrowOffsetLeft = 50 * (1 - 2 * leftDelta / overlayWidth) + '%';
45004 arrowOffsetTop = void 0;
45005 } else {
45006 throw new Error('calcOverlayPosition(): No such placement of "' + placement + '" found.');
45007 }
45008
45009 return { positionLeft: positionLeft, positionTop: positionTop, arrowOffsetLeft: arrowOffsetLeft, arrowOffsetTop: arrowOffsetTop };
45010 }
45011 module.exports = exports['default'];
45012
45013/***/ },
45014/* 568 */
45015/***/ function(module, exports, __webpack_require__) {
45016
45017 'use strict';
45018 var contains = __webpack_require__(418),
45019 getWindow = __webpack_require__(547),
45020 ownerDocument = __webpack_require__(417);
45021
45022 module.exports = function offset(node) {
45023 var doc = ownerDocument(node),
45024 win = getWindow(doc),
45025 docElem = doc && doc.documentElement,
45026 box = { top: 0, left: 0, height: 0, width: 0 };
45027
45028 if (!doc) return;
45029
45030 // Make sure it's not a disconnected DOM node
45031 if (!contains(docElem, node)) return box;
45032
45033 if (node.getBoundingClientRect !== undefined) box = node.getBoundingClientRect();
45034
45035 if (box.width || box.height) {
45036
45037 box = {
45038 top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),
45039 left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0),
45040 width: (box.width == null ? node.offsetWidth : box.width) || 0,
45041 height: (box.height == null ? node.offsetHeight : box.height) || 0
45042 };
45043 }
45044
45045 return box;
45046 };
45047
45048/***/ },
45049/* 569 */
45050/***/ function(module, exports, __webpack_require__) {
45051
45052 'use strict';
45053
45054 var babelHelpers = __webpack_require__(408);
45055
45056 exports.__esModule = true;
45057 exports['default'] = position;
45058
45059 var _offset = __webpack_require__(568);
45060
45061 var _offset2 = babelHelpers.interopRequireDefault(_offset);
45062
45063 var _offsetParent = __webpack_require__(570);
45064
45065 var _offsetParent2 = babelHelpers.interopRequireDefault(_offsetParent);
45066
45067 var _scrollTop = __webpack_require__(571);
45068
45069 var _scrollTop2 = babelHelpers.interopRequireDefault(_scrollTop);
45070
45071 var _scrollLeft = __webpack_require__(572);
45072
45073 var _scrollLeft2 = babelHelpers.interopRequireDefault(_scrollLeft);
45074
45075 var _style = __webpack_require__(402);
45076
45077 var _style2 = babelHelpers.interopRequireDefault(_style);
45078
45079 function nodeName(node) {
45080 return node.nodeName && node.nodeName.toLowerCase();
45081 }
45082
45083 function position(node, offsetParent) {
45084 var parentOffset = { top: 0, left: 0 },
45085 offset;
45086
45087 // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
45088 // because it is its only offset parent
45089 if ((0, _style2['default'])(node, 'position') === 'fixed') {
45090 offset = node.getBoundingClientRect();
45091 } else {
45092 offsetParent = offsetParent || (0, _offsetParent2['default'])(node);
45093 offset = (0, _offset2['default'])(node);
45094
45095 if (nodeName(offsetParent) !== 'html') parentOffset = (0, _offset2['default'])(offsetParent);
45096
45097 parentOffset.top += parseInt((0, _style2['default'])(offsetParent, 'borderTopWidth'), 10) - (0, _scrollTop2['default'])(offsetParent) || 0;
45098 parentOffset.left += parseInt((0, _style2['default'])(offsetParent, 'borderLeftWidth'), 10) - (0, _scrollLeft2['default'])(offsetParent) || 0;
45099 }
45100
45101 // Subtract parent offsets and node margins
45102 return babelHelpers._extends({}, offset, {
45103 top: offset.top - parentOffset.top - (parseInt((0, _style2['default'])(node, 'marginTop'), 10) || 0),
45104 left: offset.left - parentOffset.left - (parseInt((0, _style2['default'])(node, 'marginLeft'), 10) || 0)
45105 });
45106 }
45107
45108 module.exports = exports['default'];
45109
45110/***/ },
45111/* 570 */
45112/***/ function(module, exports, __webpack_require__) {
45113
45114 'use strict';
45115
45116 var babelHelpers = __webpack_require__(408);
45117
45118 exports.__esModule = true;
45119 exports['default'] = offsetParent;
45120
45121 var _ownerDocument = __webpack_require__(417);
45122
45123 var _ownerDocument2 = babelHelpers.interopRequireDefault(_ownerDocument);
45124
45125 var _style = __webpack_require__(402);
45126
45127 var _style2 = babelHelpers.interopRequireDefault(_style);
45128
45129 function nodeName(node) {
45130 return node.nodeName && node.nodeName.toLowerCase();
45131 }
45132
45133 function offsetParent(node) {
45134 var doc = (0, _ownerDocument2['default'])(node),
45135 offsetParent = node && node.offsetParent;
45136
45137 while (offsetParent && nodeName(node) !== 'html' && (0, _style2['default'])(offsetParent, 'position') === 'static') {
45138 offsetParent = offsetParent.offsetParent;
45139 }
45140
45141 return offsetParent || doc.documentElement;
45142 }
45143
45144 module.exports = exports['default'];
45145
45146/***/ },
45147/* 571 */
45148/***/ function(module, exports, __webpack_require__) {
45149
45150 'use strict';
45151 var getWindow = __webpack_require__(547);
45152
45153 module.exports = function scrollTop(node, val) {
45154 var win = getWindow(node);
45155
45156 if (val === undefined) return win ? 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop : node.scrollTop;
45157
45158 if (win) win.scrollTo('pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft, val);else node.scrollTop = val;
45159 };
45160
45161/***/ },
45162/* 572 */
45163/***/ function(module, exports, __webpack_require__) {
45164
45165 'use strict';
45166 var getWindow = __webpack_require__(547);
45167
45168 module.exports = function scrollTop(node, val) {
45169 var win = getWindow(node);
45170
45171 if (val === undefined) return win ? 'pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft : node.scrollLeft;
45172
45173 if (win) win.scrollTo(val, 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop);else node.scrollLeft = val;
45174 };
45175
45176/***/ },
45177/* 573 */
45178/***/ function(module, exports, __webpack_require__) {
45179
45180 /* eslint-disable react/prop-types */
45181
45182 'use strict';
45183
45184 var _extends = __webpack_require__(338)['default'];
45185
45186 var _Object$keys = __webpack_require__(361)['default'];
45187
45188 var _interopRequireDefault = __webpack_require__(335)['default'];
45189
45190 exports.__esModule = true;
45191
45192 var _domHelpersQueryContains = __webpack_require__(418);
45193
45194 var _domHelpersQueryContains2 = _interopRequireDefault(_domHelpersQueryContains);
45195
45196 var _lodashCompatObjectPick = __webpack_require__(501);
45197
45198 var _lodashCompatObjectPick2 = _interopRequireDefault(_lodashCompatObjectPick);
45199
45200 var _react = __webpack_require__(89);
45201
45202 var _react2 = _interopRequireDefault(_react);
45203
45204 var _reactDom = __webpack_require__(122);
45205
45206 var _reactDom2 = _interopRequireDefault(_reactDom);
45207
45208 var _warning = __webpack_require__(271);
45209
45210 var _warning2 = _interopRequireDefault(_warning);
45211
45212 var _Overlay = __webpack_require__(564);
45213
45214 var _Overlay2 = _interopRequireDefault(_Overlay);
45215
45216 var _utilsCreateChainedFunction = __webpack_require__(414);
45217
45218 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
45219
45220 /**
45221 * Check if value one is inside or equal to the of value
45222 *
45223 * @param {string} one
45224 * @param {string|array} of
45225 * @returns {boolean}
45226 */
45227 function isOneOf(one, of) {
45228 if (Array.isArray(of)) {
45229 return of.indexOf(one) >= 0;
45230 }
45231 return one === of;
45232 }
45233
45234 var OverlayTrigger = _react2['default'].createClass({
45235 displayName: 'OverlayTrigger',
45236
45237 propTypes: _extends({}, _Overlay2['default'].propTypes, {
45238
45239 /**
45240 * Specify which action or actions trigger Overlay visibility
45241 */
45242 trigger: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.oneOf(['click', 'hover', 'focus']), _react2['default'].PropTypes.arrayOf(_react2['default'].PropTypes.oneOf(['click', 'hover', 'focus']))]),
45243
45244 /**
45245 * A millisecond delay amount to show and hide the Overlay once triggered
45246 */
45247 delay: _react2['default'].PropTypes.number,
45248 /**
45249 * A millisecond delay amount before showing the Overlay once triggered.
45250 */
45251 delayShow: _react2['default'].PropTypes.number,
45252 /**
45253 * A millisecond delay amount before hiding the Overlay once triggered.
45254 */
45255 delayHide: _react2['default'].PropTypes.number,
45256
45257 /**
45258 * The initial visibility state of the Overlay, for more nuanced visibility control consider
45259 * using the Overlay component directly.
45260 */
45261 defaultOverlayShown: _react2['default'].PropTypes.bool,
45262
45263 /**
45264 * An element or text to overlay next to the target.
45265 */
45266 overlay: _react2['default'].PropTypes.node.isRequired,
45267
45268 /**
45269 * @private
45270 */
45271 onBlur: _react2['default'].PropTypes.func,
45272 /**
45273 * @private
45274 */
45275 onClick: _react2['default'].PropTypes.func,
45276 /**
45277 * @private
45278 */
45279 onFocus: _react2['default'].PropTypes.func,
45280 /**
45281 * @private
45282 */
45283 onMouseEnter: _react2['default'].PropTypes.func,
45284 /**
45285 * @private
45286 */
45287 onMouseLeave: _react2['default'].PropTypes.func,
45288
45289 // override specific overlay props
45290 /**
45291 * @private
45292 */
45293 target: function target() {},
45294 /**
45295 * @private
45296 */
45297 onHide: function onHide() {},
45298 /**
45299 * @private
45300 */
45301 show: function show() {}
45302 }),
45303
45304 getDefaultProps: function getDefaultProps() {
45305 return {
45306 defaultOverlayShown: false,
45307 trigger: ['hover', 'focus']
45308 };
45309 },
45310
45311 getInitialState: function getInitialState() {
45312 return {
45313 isOverlayShown: this.props.defaultOverlayShown
45314 };
45315 },
45316
45317 show: function show() {
45318 this.setState({
45319 isOverlayShown: true
45320 });
45321 },
45322
45323 hide: function hide() {
45324 this.setState({
45325 isOverlayShown: false
45326 });
45327 },
45328
45329 toggle: function toggle() {
45330 if (this.state.isOverlayShown) {
45331 this.hide();
45332 } else {
45333 this.show();
45334 }
45335 },
45336
45337 componentWillMount: function componentWillMount() {
45338 this.handleMouseOver = this.handleMouseOverOut.bind(null, this.handleDelayedShow);
45339 this.handleMouseOut = this.handleMouseOverOut.bind(null, this.handleDelayedHide);
45340 },
45341
45342 componentDidMount: function componentDidMount() {
45343 this._mountNode = document.createElement('div');
45344 this.renderOverlay();
45345 },
45346
45347 renderOverlay: function renderOverlay() {
45348 _reactDom2['default'].unstable_renderSubtreeIntoContainer(this, this._overlay, this._mountNode);
45349 },
45350
45351 componentWillUnmount: function componentWillUnmount() {
45352 _reactDom2['default'].unmountComponentAtNode(this._mountNode);
45353 this._mountNode = null;
45354 clearTimeout(this._hoverShowDelay);
45355 clearTimeout(this._hoverHideDelay);
45356 },
45357
45358 componentDidUpdate: function componentDidUpdate() {
45359 if (this._mountNode) {
45360 this.renderOverlay();
45361 }
45362 },
45363
45364 getOverlayTarget: function getOverlayTarget() {
45365 return _reactDom2['default'].findDOMNode(this);
45366 },
45367
45368 getOverlay: function getOverlay() {
45369 var overlayProps = _extends({}, _lodashCompatObjectPick2['default'](this.props, _Object$keys(_Overlay2['default'].propTypes)), {
45370 show: this.state.isOverlayShown,
45371 onHide: this.hide,
45372 target: this.getOverlayTarget,
45373 onExit: this.props.onExit,
45374 onExiting: this.props.onExiting,
45375 onExited: this.props.onExited,
45376 onEnter: this.props.onEnter,
45377 onEntering: this.props.onEntering,
45378 onEntered: this.props.onEntered
45379 });
45380
45381 var overlay = _react.cloneElement(this.props.overlay, {
45382 placement: overlayProps.placement,
45383 container: overlayProps.container
45384 });
45385
45386 return _react2['default'].createElement(
45387 _Overlay2['default'],
45388 overlayProps,
45389 overlay
45390 );
45391 },
45392
45393 render: function render() {
45394 var trigger = _react2['default'].Children.only(this.props.children);
45395 var triggerProps = trigger.props;
45396
45397 var props = {
45398 'aria-describedby': this.props.overlay.props.id
45399 };
45400
45401 // create in render otherwise owner is lost...
45402 this._overlay = this.getOverlay();
45403
45404 props.onClick = _utilsCreateChainedFunction2['default'](triggerProps.onClick, this.props.onClick);
45405
45406 if (isOneOf('click', this.props.trigger)) {
45407 props.onClick = _utilsCreateChainedFunction2['default'](this.toggle, props.onClick);
45408 }
45409
45410 if (isOneOf('hover', this.props.trigger)) {
45411 (undefined) !== 'production' ? _warning2['default'](!(this.props.trigger === 'hover'), '[react-bootstrap] Specifying only the `"hover"` trigger limits the visibilty of the overlay to just mouse users. ' + 'Consider also including the `"focus"` trigger so that touch and keyboard only users can see the overlay as well.') : undefined;
45412
45413 props.onMouseOver = _utilsCreateChainedFunction2['default'](this.handleMouseOver, this.props.onMouseOver, triggerProps.onMouseOver);
45414 props.onMouseOut = _utilsCreateChainedFunction2['default'](this.handleMouseOut, this.props.onMouseOut, triggerProps.onMouseOut);
45415 }
45416
45417 if (isOneOf('focus', this.props.trigger)) {
45418 props.onFocus = _utilsCreateChainedFunction2['default'](this.handleDelayedShow, this.props.onFocus, triggerProps.onFocus);
45419 props.onBlur = _utilsCreateChainedFunction2['default'](this.handleDelayedHide, this.props.onBlur, triggerProps.onBlur);
45420 }
45421
45422 return _react.cloneElement(trigger, props);
45423 },
45424
45425 handleDelayedShow: function handleDelayedShow() {
45426 var _this = this;
45427
45428 if (this._hoverHideDelay != null) {
45429 clearTimeout(this._hoverHideDelay);
45430 this._hoverHideDelay = null;
45431 return;
45432 }
45433
45434 if (this.state.isOverlayShown || this._hoverShowDelay != null) {
45435 return;
45436 }
45437
45438 var delay = this.props.delayShow != null ? this.props.delayShow : this.props.delay;
45439
45440 if (!delay) {
45441 this.show();
45442 return;
45443 }
45444
45445 this._hoverShowDelay = setTimeout(function () {
45446 _this._hoverShowDelay = null;
45447 _this.show();
45448 }, delay);
45449 },
45450
45451 handleDelayedHide: function handleDelayedHide() {
45452 var _this2 = this;
45453
45454 if (this._hoverShowDelay != null) {
45455 clearTimeout(this._hoverShowDelay);
45456 this._hoverShowDelay = null;
45457 return;
45458 }
45459
45460 if (!this.state.isOverlayShown || this._hoverHideDelay != null) {
45461 return;
45462 }
45463
45464 var delay = this.props.delayHide != null ? this.props.delayHide : this.props.delay;
45465
45466 if (!delay) {
45467 this.hide();
45468 return;
45469 }
45470
45471 this._hoverHideDelay = setTimeout(function () {
45472 _this2._hoverHideDelay = null;
45473 _this2.hide();
45474 }, delay);
45475 },
45476
45477 // Simple implementation of mouseEnter and mouseLeave.
45478 // React's built version is broken: https://github.com/facebook/react/issues/4251
45479 // for cases when the trigger is disabled and mouseOut/Over can cause flicker moving
45480 // from one child element to another.
45481 handleMouseOverOut: function handleMouseOverOut(handler, e) {
45482 var target = e.currentTarget;
45483 var related = e.relatedTarget || e.nativeEvent.toElement;
45484
45485 if (!related || related !== target && !_domHelpersQueryContains2['default'](target, related)) {
45486 handler(e);
45487 }
45488 }
45489
45490 });
45491
45492 exports['default'] = OverlayTrigger;
45493 module.exports = exports['default'];
45494
45495/***/ },
45496/* 574 */
45497/***/ function(module, exports, __webpack_require__) {
45498
45499 'use strict';
45500
45501 var _extends = __webpack_require__(338)['default'];
45502
45503 var _interopRequireDefault = __webpack_require__(335)['default'];
45504
45505 exports.__esModule = true;
45506
45507 var _react = __webpack_require__(89);
45508
45509 var _react2 = _interopRequireDefault(_react);
45510
45511 var _classnames = __webpack_require__(356);
45512
45513 var _classnames2 = _interopRequireDefault(_classnames);
45514
45515 var PageHeader = _react2['default'].createClass({
45516 displayName: 'PageHeader',
45517
45518 render: function render() {
45519 return _react2['default'].createElement(
45520 'div',
45521 _extends({}, this.props, { className: _classnames2['default'](this.props.className, 'page-header') }),
45522 _react2['default'].createElement(
45523 'h1',
45524 null,
45525 this.props.children
45526 )
45527 );
45528 }
45529 });
45530
45531 exports['default'] = PageHeader;
45532 module.exports = exports['default'];
45533
45534/***/ },
45535/* 575 */
45536/***/ function(module, exports, __webpack_require__) {
45537
45538 'use strict';
45539
45540 var _objectWithoutProperties = __webpack_require__(355)['default'];
45541
45542 var _extends = __webpack_require__(338)['default'];
45543
45544 var _interopRequireDefault = __webpack_require__(335)['default'];
45545
45546 exports.__esModule = true;
45547
45548 var _classnames = __webpack_require__(356);
45549
45550 var _classnames2 = _interopRequireDefault(_classnames);
45551
45552 var _react = __webpack_require__(89);
45553
45554 var _react2 = _interopRequireDefault(_react);
45555
45556 var _SafeAnchor = __webpack_require__(371);
45557
45558 var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
45559
45560 var _utilsCreateChainedFunction = __webpack_require__(414);
45561
45562 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
45563
45564 var PageItem = _react2['default'].createClass({
45565 displayName: 'PageItem',
45566
45567 propTypes: {
45568 disabled: _react2['default'].PropTypes.bool,
45569 previous: _react2['default'].PropTypes.bool,
45570 next: _react2['default'].PropTypes.bool,
45571 onClick: _react2['default'].PropTypes.func,
45572 onSelect: _react2['default'].PropTypes.func,
45573 eventKey: _react2['default'].PropTypes.any
45574 },
45575
45576 getDefaultProps: function getDefaultProps() {
45577 return {
45578 disabled: false,
45579 previous: false,
45580 next: false
45581 };
45582 },
45583
45584 render: function render() {
45585 var _props = this.props;
45586 var disabled = _props.disabled;
45587 var previous = _props.previous;
45588 var next = _props.next;
45589 var onClick = _props.onClick;
45590 var className = _props.className;
45591 var style = _props.style;
45592
45593 var props = _objectWithoutProperties(_props, ['disabled', 'previous', 'next', 'onClick', 'className', 'style']);
45594
45595 delete props.onSelect;
45596 delete props.eventKey;
45597
45598 return _react2['default'].createElement(
45599 'li',
45600 {
45601 className: _classnames2['default'](className, { disabled: disabled, previous: previous, next: next }),
45602 style: style
45603 },
45604 _react2['default'].createElement(_SafeAnchor2['default'], _extends({}, props, {
45605 disabled: disabled,
45606 onClick: _utilsCreateChainedFunction2['default'](onClick, this.handleSelect)
45607 }))
45608 );
45609 },
45610
45611 handleSelect: function handleSelect(e) {
45612 if (this.props.onSelect || this.props.disabled) {
45613 e.preventDefault();
45614
45615 if (!this.props.disabled) {
45616 this.props.onSelect(this.props.eventKey, e);
45617 }
45618 }
45619 }
45620 });
45621
45622 exports['default'] = PageItem;
45623 module.exports = exports['default'];
45624
45625/***/ },
45626/* 576 */
45627/***/ function(module, exports, __webpack_require__) {
45628
45629 'use strict';
45630
45631 var _extends = __webpack_require__(338)['default'];
45632
45633 var _interopRequireDefault = __webpack_require__(335)['default'];
45634
45635 exports.__esModule = true;
45636
45637 var _react = __webpack_require__(89);
45638
45639 var _react2 = _interopRequireDefault(_react);
45640
45641 var _classnames = __webpack_require__(356);
45642
45643 var _classnames2 = _interopRequireDefault(_classnames);
45644
45645 var _utilsValidComponentChildren = __webpack_require__(365);
45646
45647 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
45648
45649 var _utilsCreateChainedFunction = __webpack_require__(414);
45650
45651 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
45652
45653 var Pager = _react2['default'].createClass({
45654 displayName: 'Pager',
45655
45656 propTypes: {
45657 onSelect: _react2['default'].PropTypes.func
45658 },
45659
45660 render: function render() {
45661 return _react2['default'].createElement(
45662 'ul',
45663 _extends({}, this.props, {
45664 className: _classnames2['default'](this.props.className, 'pager') }),
45665 _utilsValidComponentChildren2['default'].map(this.props.children, this.renderPageItem)
45666 );
45667 },
45668
45669 renderPageItem: function renderPageItem(child, index) {
45670 return _react.cloneElement(child, {
45671 onSelect: _utilsCreateChainedFunction2['default'](child.props.onSelect, this.props.onSelect),
45672 key: child.key ? child.key : index
45673 });
45674 }
45675 });
45676
45677 exports['default'] = Pager;
45678 module.exports = exports['default'];
45679
45680/***/ },
45681/* 577 */
45682/***/ function(module, exports, __webpack_require__) {
45683
45684 'use strict';
45685
45686 var _extends = __webpack_require__(338)['default'];
45687
45688 var _interopRequireDefault = __webpack_require__(335)['default'];
45689
45690 exports.__esModule = true;
45691
45692 var _classnames = __webpack_require__(356);
45693
45694 var _classnames2 = _interopRequireDefault(_classnames);
45695
45696 var _react = __webpack_require__(89);
45697
45698 var _react2 = _interopRequireDefault(_react);
45699
45700 var _reactPropTypesLibElementType = __webpack_require__(380);
45701
45702 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
45703
45704 var _utilsBootstrapUtils = __webpack_require__(357);
45705
45706 var _PaginationButton = __webpack_require__(578);
45707
45708 var _PaginationButton2 = _interopRequireDefault(_PaginationButton);
45709
45710 var _SafeAnchor = __webpack_require__(371);
45711
45712 var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
45713
45714 var Pagination = _react2['default'].createClass({
45715 displayName: 'Pagination',
45716
45717 propTypes: {
45718 activePage: _react2['default'].PropTypes.number,
45719 items: _react2['default'].PropTypes.number,
45720 maxButtons: _react2['default'].PropTypes.number,
45721 /**
45722 * When `true`, will display the first and the last button page
45723 */
45724 boundaryLinks: _react2['default'].PropTypes.bool,
45725 /**
45726 * When `true`, will display the default node value ('&hellip;').
45727 * Otherwise, will display provided node (when specified).
45728 */
45729 ellipsis: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.bool, _react2['default'].PropTypes.node]),
45730 /**
45731 * When `true`, will display the default node value ('&laquo;').
45732 * Otherwise, will display provided node (when specified).
45733 */
45734 first: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.bool, _react2['default'].PropTypes.node]),
45735 /**
45736 * When `true`, will display the default node value ('&raquo;').
45737 * Otherwise, will display provided node (when specified).
45738 */
45739 last: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.bool, _react2['default'].PropTypes.node]),
45740 /**
45741 * When `true`, will display the default node value ('&lsaquo;').
45742 * Otherwise, will display provided node (when specified).
45743 */
45744 prev: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.bool, _react2['default'].PropTypes.node]),
45745 /**
45746 * When `true`, will display the default node value ('&rsaquo;').
45747 * Otherwise, will display provided node (when specified).
45748 */
45749 next: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.bool, _react2['default'].PropTypes.node]),
45750 onSelect: _react2['default'].PropTypes.func,
45751 /**
45752 * You can use a custom element for the buttons
45753 */
45754 buttonComponentClass: _reactPropTypesLibElementType2['default']
45755 },
45756
45757 getDefaultProps: function getDefaultProps() {
45758 return {
45759 activePage: 1,
45760 items: 1,
45761 maxButtons: 0,
45762 first: false,
45763 last: false,
45764 prev: false,
45765 next: false,
45766 ellipsis: true,
45767 boundaryLinks: false,
45768 buttonComponentClass: _SafeAnchor2['default'],
45769 bsClass: 'pagination'
45770 };
45771 },
45772
45773 renderPageButtons: function renderPageButtons() {
45774 var pageButtons = [];
45775 var startPage = undefined,
45776 endPage = undefined,
45777 hasHiddenPagesAfter = undefined;
45778 var _props = this.props;
45779 var maxButtons = _props.maxButtons;
45780 var activePage = _props.activePage;
45781 var items = _props.items;
45782 var onSelect = _props.onSelect;
45783 var ellipsis = _props.ellipsis;
45784 var buttonComponentClass = _props.buttonComponentClass;
45785 var boundaryLinks = _props.boundaryLinks;
45786
45787 if (maxButtons) {
45788 var hiddenPagesBefore = activePage - parseInt(maxButtons / 2, 10);
45789 startPage = hiddenPagesBefore > 1 ? hiddenPagesBefore : 1;
45790 hasHiddenPagesAfter = startPage + maxButtons <= items;
45791
45792 if (!hasHiddenPagesAfter) {
45793 endPage = items;
45794 startPage = items - maxButtons + 1;
45795 if (startPage < 1) {
45796 startPage = 1;
45797 }
45798 } else {
45799 endPage = startPage + maxButtons - 1;
45800 }
45801 } else {
45802 startPage = 1;
45803 endPage = items;
45804 }
45805
45806 for (var pagenumber = startPage; pagenumber <= endPage; pagenumber++) {
45807 pageButtons.push(_react2['default'].createElement(
45808 _PaginationButton2['default'],
45809 {
45810 key: pagenumber,
45811 eventKey: pagenumber,
45812 active: pagenumber === activePage,
45813 onSelect: onSelect,
45814 buttonComponentClass: buttonComponentClass
45815 },
45816 pagenumber
45817 ));
45818 }
45819
45820 if (boundaryLinks && ellipsis && startPage !== 1) {
45821 pageButtons.unshift(_react2['default'].createElement(
45822 _PaginationButton2['default'],
45823 {
45824 key: 'ellipsisFirst',
45825 disabled: true,
45826 buttonComponentClass: buttonComponentClass
45827 },
45828 _react2['default'].createElement(
45829 'span',
45830 { 'aria-label': 'More' },
45831 this.props.ellipsis === true ? '…' : this.props.ellipsis
45832 )
45833 ));
45834
45835 pageButtons.unshift(_react2['default'].createElement(
45836 _PaginationButton2['default'],
45837 {
45838 key: 1,
45839 eventKey: 1,
45840 active: false,
45841 onSelect: onSelect,
45842 buttonComponentClass: buttonComponentClass
45843 },
45844 '1'
45845 ));
45846 }
45847
45848 if (maxButtons && hasHiddenPagesAfter && ellipsis) {
45849 pageButtons.push(_react2['default'].createElement(
45850 _PaginationButton2['default'],
45851 {
45852 key: 'ellipsis',
45853 disabled: true,
45854 buttonComponentClass: buttonComponentClass
45855 },
45856 _react2['default'].createElement(
45857 'span',
45858 { 'aria-label': 'More' },
45859 this.props.ellipsis === true ? '…' : this.props.ellipsis
45860 )
45861 ));
45862
45863 if (boundaryLinks && endPage !== items) {
45864 pageButtons.push(_react2['default'].createElement(
45865 _PaginationButton2['default'],
45866 {
45867 key: items,
45868 eventKey: items,
45869 active: false,
45870 onSelect: onSelect,
45871 buttonComponentClass: buttonComponentClass
45872 },
45873 items
45874 ));
45875 }
45876 }
45877
45878 return pageButtons;
45879 },
45880
45881 renderPrev: function renderPrev() {
45882 if (!this.props.prev) {
45883 return null;
45884 }
45885
45886 return _react2['default'].createElement(
45887 _PaginationButton2['default'],
45888 {
45889 key: 'prev',
45890 eventKey: this.props.activePage - 1,
45891 disabled: this.props.activePage === 1,
45892 onSelect: this.props.onSelect,
45893 buttonComponentClass: this.props.buttonComponentClass
45894 },
45895 _react2['default'].createElement(
45896 'span',
45897 { 'aria-label': 'Previous' },
45898 this.props.prev === true ? '‹' : this.props.prev
45899 )
45900 );
45901 },
45902
45903 renderNext: function renderNext() {
45904 if (!this.props.next) {
45905 return null;
45906 }
45907
45908 return _react2['default'].createElement(
45909 _PaginationButton2['default'],
45910 {
45911 key: 'next',
45912 eventKey: this.props.activePage + 1,
45913 disabled: this.props.activePage >= this.props.items,
45914 onSelect: this.props.onSelect,
45915 buttonComponentClass: this.props.buttonComponentClass
45916 },
45917 _react2['default'].createElement(
45918 'span',
45919 { 'aria-label': 'Next' },
45920 this.props.next === true ? '›' : this.props.next
45921 )
45922 );
45923 },
45924
45925 renderFirst: function renderFirst() {
45926 if (!this.props.first) {
45927 return null;
45928 }
45929
45930 return _react2['default'].createElement(
45931 _PaginationButton2['default'],
45932 {
45933 key: 'first',
45934 eventKey: 1,
45935 disabled: this.props.activePage === 1,
45936 onSelect: this.props.onSelect,
45937 buttonComponentClass: this.props.buttonComponentClass
45938 },
45939 _react2['default'].createElement(
45940 'span',
45941 { 'aria-label': 'First' },
45942 this.props.first === true ? '«' : this.props.first
45943 )
45944 );
45945 },
45946
45947 renderLast: function renderLast() {
45948 if (!this.props.last) {
45949 return null;
45950 }
45951
45952 return _react2['default'].createElement(
45953 _PaginationButton2['default'],
45954 {
45955 key: 'last',
45956 eventKey: this.props.items,
45957 disabled: this.props.activePage >= this.props.items,
45958 onSelect: this.props.onSelect,
45959 buttonComponentClass: this.props.buttonComponentClass
45960 },
45961 _react2['default'].createElement(
45962 'span',
45963 { 'aria-label': 'Last' },
45964 this.props.last === true ? '»' : this.props.last
45965 )
45966 );
45967 },
45968
45969 render: function render() {
45970 return _react2['default'].createElement(
45971 'ul',
45972 _extends({}, this.props, {
45973 className: _classnames2['default'](this.props.className, _utilsBootstrapUtils.getClassSet(this.props))
45974 }),
45975 this.renderFirst(),
45976 this.renderPrev(),
45977 this.renderPageButtons(),
45978 this.renderNext(),
45979 this.renderLast()
45980 );
45981 }
45982 });
45983
45984 exports['default'] = _utilsBootstrapUtils.bsClass('pagination', Pagination);
45985 module.exports = exports['default'];
45986
45987/***/ },
45988/* 578 */
45989/***/ function(module, exports, __webpack_require__) {
45990
45991 'use strict';
45992
45993 var _objectWithoutProperties = __webpack_require__(355)['default'];
45994
45995 var _extends = __webpack_require__(338)['default'];
45996
45997 var _interopRequireDefault = __webpack_require__(335)['default'];
45998
45999 exports.__esModule = true;
46000
46001 var _classnames = __webpack_require__(356);
46002
46003 var _classnames2 = _interopRequireDefault(_classnames);
46004
46005 var _react = __webpack_require__(89);
46006
46007 var _react2 = _interopRequireDefault(_react);
46008
46009 var _reactPropTypesLibElementType = __webpack_require__(380);
46010
46011 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
46012
46013 var _utilsCreateChainedFunction = __webpack_require__(414);
46014
46015 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
46016
46017 var PaginationButton = _react2['default'].createClass({
46018 displayName: 'PaginationButton',
46019
46020 propTypes: {
46021 className: _react2['default'].PropTypes.string,
46022 eventKey: _react2['default'].PropTypes.any,
46023 onSelect: _react2['default'].PropTypes.func,
46024 disabled: _react2['default'].PropTypes.bool,
46025 active: _react2['default'].PropTypes.bool,
46026 onClick: _react2['default'].PropTypes.func,
46027 /**
46028 * You can use a custom element for this component
46029 */
46030 buttonComponentClass: _reactPropTypesLibElementType2['default']
46031 },
46032
46033 getDefaultProps: function getDefaultProps() {
46034 return {
46035 active: false,
46036 disabled: false
46037 };
46038 },
46039
46040 handleClick: function handleClick(event) {
46041 if (this.props.disabled) {
46042 return;
46043 }
46044
46045 if (this.props.onSelect) {
46046 this.props.onSelect(this.props.eventKey, event);
46047 }
46048 },
46049
46050 render: function render() {
46051 var _props = this.props;
46052 var active = _props.active;
46053 var disabled = _props.disabled;
46054 var onClick = _props.onClick;
46055 var ButtonComponentClass = _props.buttonComponentClass;
46056 var className = _props.className;
46057 var style = _props.style;
46058
46059 var props = _objectWithoutProperties(_props, ['active', 'disabled', 'onClick', 'buttonComponentClass', 'className', 'style']);
46060
46061 delete props.onSelect;
46062
46063 return _react2['default'].createElement(
46064 'li',
46065 {
46066 className: _classnames2['default'](className, { active: active, disabled: disabled }),
46067 style: style
46068 },
46069 _react2['default'].createElement(ButtonComponentClass, _extends({}, props, {
46070 disabled: disabled,
46071 onClick: _utilsCreateChainedFunction2['default'](onClick, this.handleClick)
46072 }))
46073 );
46074 }
46075 });
46076
46077 exports['default'] = PaginationButton;
46078 module.exports = exports['default'];
46079
46080/***/ },
46081/* 579 */
46082/***/ function(module, exports, __webpack_require__) {
46083
46084 'use strict';
46085
46086 var _objectWithoutProperties = __webpack_require__(355)['default'];
46087
46088 var _extends = __webpack_require__(338)['default'];
46089
46090 var _interopRequireDefault = __webpack_require__(335)['default'];
46091
46092 exports.__esModule = true;
46093
46094 var _classnames = __webpack_require__(356);
46095
46096 var _classnames2 = _interopRequireDefault(_classnames);
46097
46098 var _react = __webpack_require__(89);
46099
46100 var _react2 = _interopRequireDefault(_react);
46101
46102 var _styleMaps = __webpack_require__(358);
46103
46104 var _utilsBootstrapUtils = __webpack_require__(357);
46105
46106 var _Collapse = __webpack_require__(401);
46107
46108 var _Collapse2 = _interopRequireDefault(_Collapse);
46109
46110 var Panel = _react2['default'].createClass({
46111 displayName: 'Panel',
46112
46113 propTypes: {
46114 collapsible: _react2['default'].PropTypes.bool,
46115 onSelect: _react2['default'].PropTypes.func,
46116 header: _react2['default'].PropTypes.node,
46117 id: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number]),
46118 footer: _react2['default'].PropTypes.node,
46119 defaultExpanded: _react2['default'].PropTypes.bool,
46120 expanded: _react2['default'].PropTypes.bool,
46121 eventKey: _react2['default'].PropTypes.any,
46122 headerRole: _react2['default'].PropTypes.string,
46123 panelRole: _react2['default'].PropTypes.string,
46124
46125 onEnter: _Collapse2['default'].propTypes.onEnter,
46126 onEntering: _Collapse2['default'].propTypes.onEntering,
46127 onEntered: _Collapse2['default'].propTypes.onEntered,
46128 onExit: _Collapse2['default'].propTypes.onExit,
46129 onExiting: _Collapse2['default'].propTypes.onExiting,
46130 onExited: _Collapse2['default'].propTypes.onExited
46131 },
46132
46133 getDefaultProps: function getDefaultProps() {
46134 return {
46135 defaultExpanded: false
46136 };
46137 },
46138
46139 getInitialState: function getInitialState() {
46140 return {
46141 expanded: this.props.defaultExpanded
46142 };
46143 },
46144
46145 handleSelect: function handleSelect(e) {
46146 e.persist();
46147 e.selected = true;
46148
46149 if (this.props.onSelect) {
46150 this.props.onSelect(this.props.eventKey, e);
46151 } else {
46152 e.preventDefault();
46153 }
46154
46155 if (e.selected) {
46156 this.handleToggle();
46157 }
46158 },
46159
46160 handleToggle: function handleToggle() {
46161 this.setState({ expanded: !this.state.expanded });
46162 },
46163
46164 isExpanded: function isExpanded() {
46165 return this.props.expanded != null ? this.props.expanded : this.state.expanded;
46166 },
46167
46168 render: function render() {
46169 var _props = this.props;
46170 var headerRole = _props.headerRole;
46171 var panelRole = _props.panelRole;
46172
46173 var props = _objectWithoutProperties(_props, ['headerRole', 'panelRole']);
46174
46175 return _react2['default'].createElement(
46176 'div',
46177 _extends({}, props, {
46178 className: _classnames2['default'](this.props.className, _utilsBootstrapUtils.getClassSet(this.props)),
46179 id: this.props.collapsible ? null : this.props.id, onSelect: null
46180 }),
46181 this.renderHeading(headerRole),
46182 this.props.collapsible ? this.renderCollapsibleBody(panelRole) : this.renderBody(),
46183 this.renderFooter()
46184 );
46185 },
46186
46187 renderCollapsibleBody: function renderCollapsibleBody(panelRole) {
46188 var collapseProps = {
46189 onEnter: this.props.onEnter,
46190 onEntering: this.props.onEntering,
46191 onEntered: this.props.onEntered,
46192 onExit: this.props.onExit,
46193 onExiting: this.props.onExiting,
46194 onExited: this.props.onExited,
46195 'in': this.isExpanded()
46196 };
46197 var props = {
46198 className: _utilsBootstrapUtils.prefix(this.props, 'collapse'),
46199 id: this.props.id,
46200 ref: 'panel',
46201 'aria-hidden': !this.isExpanded()
46202 };
46203 if (panelRole) {
46204 props.role = panelRole;
46205 }
46206
46207 return _react2['default'].createElement(
46208 _Collapse2['default'],
46209 collapseProps,
46210 _react2['default'].createElement(
46211 'div',
46212 props,
46213 this.renderBody()
46214 )
46215 );
46216 },
46217
46218 renderBody: function renderBody() {
46219 var _this = this;
46220
46221 var allChildren = this.props.children;
46222 var bodyElements = [];
46223 var panelBodyChildren = [];
46224 var bodyClass = _utilsBootstrapUtils.prefix(this.props, 'body');
46225
46226 function getProps() {
46227 return { key: bodyElements.length };
46228 }
46229
46230 function addPanelChild(child) {
46231 bodyElements.push(_react.cloneElement(child, getProps()));
46232 }
46233
46234 function addPanelBody(children) {
46235 bodyElements.push(_react2['default'].createElement(
46236 'div',
46237 _extends({ className: bodyClass }, getProps()),
46238 children
46239 ));
46240 }
46241
46242 function maybeRenderPanelBody() {
46243 if (panelBodyChildren.length === 0) {
46244 return;
46245 }
46246
46247 addPanelBody(panelBodyChildren);
46248 panelBodyChildren = [];
46249 }
46250
46251 // Handle edge cases where we should not iterate through children.
46252 if (!Array.isArray(allChildren) || allChildren.length === 0) {
46253 if (this.shouldRenderFill(allChildren)) {
46254 addPanelChild(allChildren);
46255 } else {
46256 addPanelBody(allChildren);
46257 }
46258 } else {
46259 allChildren.forEach(function (child) {
46260 if (_this.shouldRenderFill(child)) {
46261 maybeRenderPanelBody();
46262
46263 // Separately add the filled element.
46264 addPanelChild(child);
46265 } else {
46266 panelBodyChildren.push(child);
46267 }
46268 });
46269
46270 maybeRenderPanelBody();
46271 }
46272
46273 return bodyElements;
46274 },
46275
46276 shouldRenderFill: function shouldRenderFill(child) {
46277 return _react2['default'].isValidElement(child) && child.props.fill != null;
46278 },
46279
46280 renderHeading: function renderHeading(headerRole) {
46281 var header = this.props.header;
46282
46283 if (!header) {
46284 return null;
46285 }
46286
46287 if (!_react2['default'].isValidElement(header) || Array.isArray(header)) {
46288 header = this.props.collapsible ? this.renderCollapsibleTitle(header, headerRole) : header;
46289 } else {
46290 var className = _classnames2['default'](_utilsBootstrapUtils.prefix(this.props, 'title'), header.props.className);
46291
46292 if (this.props.collapsible) {
46293 header = _react.cloneElement(header, {
46294 className: className,
46295 children: this.renderAnchor(header.props.children, headerRole)
46296 });
46297 } else {
46298 header = _react.cloneElement(header, { className: className });
46299 }
46300 }
46301
46302 return _react2['default'].createElement(
46303 'div',
46304 { className: _utilsBootstrapUtils.prefix(this.props, 'heading') },
46305 header
46306 );
46307 },
46308
46309 renderAnchor: function renderAnchor(header, headerRole) {
46310 return _react2['default'].createElement(
46311 'a',
46312 {
46313 href: '#' + (this.props.id || ''),
46314 'aria-controls': this.props.collapsible ? this.props.id : null,
46315 className: this.isExpanded() ? null : 'collapsed',
46316 'aria-expanded': this.isExpanded(),
46317 'aria-selected': this.isExpanded(),
46318 onClick: this.handleSelect,
46319 role: headerRole
46320 },
46321 header
46322 );
46323 },
46324
46325 renderCollapsibleTitle: function renderCollapsibleTitle(header, headerRole) {
46326 return _react2['default'].createElement(
46327 'h4',
46328 { className: _utilsBootstrapUtils.prefix(this.props, 'title'), role: 'presentation' },
46329 this.renderAnchor(header, headerRole)
46330 );
46331 },
46332
46333 renderFooter: function renderFooter() {
46334 if (!this.props.footer) {
46335 return null;
46336 }
46337
46338 return _react2['default'].createElement(
46339 'div',
46340 { className: _utilsBootstrapUtils.prefix(this.props, 'footer') },
46341 this.props.footer
46342 );
46343 }
46344 });
46345
46346 var PANEL_STATES = _styleMaps.State.values().concat(_styleMaps.DEFAULT, _styleMaps.PRIMARY);
46347
46348 exports['default'] = _utilsBootstrapUtils.bsStyles(PANEL_STATES, _styleMaps.DEFAULT, _utilsBootstrapUtils.bsClass('panel', Panel));
46349 module.exports = exports['default'];
46350
46351/***/ },
46352/* 580 */
46353/***/ function(module, exports, __webpack_require__) {
46354
46355 'use strict';
46356
46357 var _extends = __webpack_require__(338)['default'];
46358
46359 var _interopRequireDefault = __webpack_require__(335)['default'];
46360
46361 exports.__esModule = true;
46362
46363 var _classnames = __webpack_require__(356);
46364
46365 var _classnames2 = _interopRequireDefault(_classnames);
46366
46367 var _react = __webpack_require__(89);
46368
46369 var _react2 = _interopRequireDefault(_react);
46370
46371 var _reactPropTypesLibIsRequiredForA11y = __webpack_require__(488);
46372
46373 var _reactPropTypesLibIsRequiredForA11y2 = _interopRequireDefault(_reactPropTypesLibIsRequiredForA11y);
46374
46375 var _utilsBootstrapUtils = __webpack_require__(357);
46376
46377 var Popover = _react2['default'].createClass({
46378 displayName: 'Popover',
46379
46380 propTypes: {
46381
46382 /**
46383 * An html id attribute, necessary for accessibility
46384 * @type {string}
46385 * @required
46386 */
46387 id: _reactPropTypesLibIsRequiredForA11y2['default'](_react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number])),
46388
46389 /**
46390 * Sets the direction the Popover is positioned towards.
46391 */
46392 placement: _react2['default'].PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
46393
46394 /**
46395 * The "left" position value for the Popover.
46396 */
46397 positionLeft: _react2['default'].PropTypes.number,
46398 /**
46399 * The "top" position value for the Popover.
46400 */
46401 positionTop: _react2['default'].PropTypes.number,
46402 /**
46403 * The "left" position value for the Popover arrow.
46404 */
46405 arrowOffsetLeft: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.number, _react2['default'].PropTypes.string]),
46406 /**
46407 * The "top" position value for the Popover arrow.
46408 */
46409 arrowOffsetTop: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.number, _react2['default'].PropTypes.string]),
46410 /**
46411 * Title text
46412 */
46413 title: _react2['default'].PropTypes.node
46414 },
46415
46416 getDefaultProps: function getDefaultProps() {
46417 return {
46418 placement: 'right',
46419 bsClass: 'popover'
46420 };
46421 },
46422
46423 render: function render() {
46424 var _classes;
46425
46426 var classes = (_classes = {}, _classes[_utilsBootstrapUtils.prefix(this.props)] = true, _classes[this.props.placement] = true, _classes);
46427
46428 var style = _extends({
46429 left: this.props.positionLeft,
46430 top: this.props.positionTop,
46431 display: 'block'
46432 }, this.props.style);
46433
46434 // eslint-disable-line react/prop-types
46435 var arrowStyle = {
46436 left: this.props.arrowOffsetLeft,
46437 top: this.props.arrowOffsetTop
46438 };
46439
46440 return _react2['default'].createElement(
46441 'div',
46442 _extends({
46443 role: 'tooltip'
46444 }, this.props, {
46445 className: _classnames2['default'](this.props.className, classes),
46446 style: style,
46447 title: null
46448 }),
46449 _react2['default'].createElement('div', { className: 'arrow', style: arrowStyle }),
46450 this.props.title ? this.renderTitle() : null,
46451 _react2['default'].createElement(
46452 'div',
46453 { className: _utilsBootstrapUtils.prefix(this.props, 'content') },
46454 this.props.children
46455 )
46456 );
46457 },
46458
46459 renderTitle: function renderTitle() {
46460 return _react2['default'].createElement(
46461 'h3',
46462 { className: _utilsBootstrapUtils.prefix(this.props, 'title') },
46463 this.props.title
46464 );
46465 }
46466 });
46467
46468 exports['default'] = Popover;
46469 module.exports = exports['default'];
46470 // we don't want to expose the `style` property
46471
46472/***/ },
46473/* 581 */
46474/***/ function(module, exports, __webpack_require__) {
46475
46476 'use strict';
46477
46478 var _inherits = __webpack_require__(372)['default'];
46479
46480 var _classCallCheck = __webpack_require__(379)['default'];
46481
46482 var _extends = __webpack_require__(338)['default'];
46483
46484 var _objectWithoutProperties = __webpack_require__(355)['default'];
46485
46486 var _interopRequireDefault = __webpack_require__(335)['default'];
46487
46488 exports.__esModule = true;
46489
46490 var _classnames = __webpack_require__(356);
46491
46492 var _classnames2 = _interopRequireDefault(_classnames);
46493
46494 var _react = __webpack_require__(89);
46495
46496 var _react2 = _interopRequireDefault(_react);
46497
46498 var _styleMaps = __webpack_require__(358);
46499
46500 var _utilsBootstrapUtils = __webpack_require__(357);
46501
46502 var _utilsDeprecationWarning = __webpack_require__(391);
46503
46504 var _utilsDeprecationWarning2 = _interopRequireDefault(_utilsDeprecationWarning);
46505
46506 var _utilsValidComponentChildren = __webpack_require__(365);
46507
46508 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
46509
46510 var _Interpolate = __webpack_require__(516);
46511
46512 var _Interpolate2 = _interopRequireDefault(_Interpolate);
46513
46514 /**
46515 * Custom propTypes checker
46516 */
46517 function onlyProgressBar(props, propName, componentName) {
46518 if (props[propName]) {
46519 var _ret = (function () {
46520 var error = undefined,
46521 childIdentifier = undefined;
46522
46523 _react2['default'].Children.forEach(props[propName], function (child) {
46524 if (child.type !== ProgressBar) {
46525 //eslint-disable-line
46526 childIdentifier = child.type.displayName ? child.type.displayName : child.type;
46527 error = new Error('Children of ' + componentName + ' can contain only ProgressBar components. Found ' + childIdentifier);
46528 }
46529 });
46530
46531 return {
46532 v: error
46533 };
46534 })();
46535
46536 if (typeof _ret === 'object') return _ret.v;
46537 }
46538 }
46539
46540 var ProgressBar = (function (_React$Component) {
46541 _inherits(ProgressBar, _React$Component);
46542
46543 function ProgressBar() {
46544 _classCallCheck(this, ProgressBar);
46545
46546 _React$Component.apply(this, arguments);
46547 }
46548
46549 ProgressBar.prototype.getPercentage = function getPercentage(now, min, max) {
46550 var roundPrecision = 1000;
46551 return Math.round((now - min) / (max - min) * 100 * roundPrecision) / roundPrecision;
46552 };
46553
46554 ProgressBar.prototype.render = function render() {
46555 if (this.props.isChild) {
46556 return this.renderProgressBar();
46557 }
46558
46559 var content = undefined;
46560
46561 if (this.props.children) {
46562 content = _utilsValidComponentChildren2['default'].map(this.props.children, this.renderChildBar);
46563 } else {
46564 content = this.renderProgressBar();
46565 }
46566
46567 return _react2['default'].createElement(
46568 'div',
46569 _extends({}, this.props, {
46570 className: _classnames2['default'](this.props.className, 'progress'),
46571 min: null,
46572 max: null,
46573 label: null,
46574 'aria-valuetext': null
46575 }),
46576 content
46577 );
46578 };
46579
46580 ProgressBar.prototype.renderChildBar = function renderChildBar(child, index) {
46581 return _react.cloneElement(child, {
46582 isChild: true,
46583 key: child.key ? child.key : index
46584 });
46585 };
46586
46587 ProgressBar.prototype.renderProgressBar = function renderProgressBar() {
46588 var _classNames;
46589
46590 var _props = this.props;
46591 var className = _props.className;
46592 var label = _props.label;
46593 var now = _props.now;
46594 var min = _props.min;
46595 var max = _props.max;
46596 var style = _props.style;
46597
46598 var props = _objectWithoutProperties(_props, ['className', 'label', 'now', 'min', 'max', 'style']);
46599
46600 var percentage = this.getPercentage(now, min, max);
46601
46602 if (typeof label === 'string') {
46603 label = this.renderLabel(percentage);
46604 }
46605
46606 if (this.props.srOnly) {
46607 label = _react2['default'].createElement(
46608 'span',
46609 { className: 'sr-only' },
46610 label
46611 );
46612 }
46613
46614 var classes = _classnames2['default'](className, _utilsBootstrapUtils.getClassSet(this.props), (_classNames = {
46615 active: this.props.active
46616 }, _classNames[_utilsBootstrapUtils.prefix(this.props, 'striped')] = this.props.active || this.props.striped, _classNames));
46617
46618 return _react2['default'].createElement(
46619 'div',
46620 _extends({}, props, {
46621 className: classes,
46622 role: 'progressbar',
46623 style: _extends({ width: percentage + '%' }, style),
46624 'aria-valuenow': this.props.now,
46625 'aria-valuemin': this.props.min,
46626 'aria-valuemax': this.props.max
46627 }),
46628 label
46629 );
46630 };
46631
46632 ProgressBar.prototype.renderLabel = function renderLabel(percentage) {
46633 var _props2 = this.props;
46634 var interpolateClass = _props2.interpolateClass;
46635 var now = _props2.now;
46636 var min = _props2.min;
46637 var max = _props2.max;
46638 var bsStyle = _props2.bsStyle;
46639 var label = _props2.label;
46640
46641 var InterpolateClass = interpolateClass || _Interpolate2['default'];
46642
46643 var REGEXP = InterpolateClass.REGEXP;
46644
46645 if (REGEXP && REGEXP.exec(label)) {
46646 _utilsDeprecationWarning2['default']('String interpolation in <ProgressBar label>', 'ES2015 template strings or other patterns');
46647 }
46648
46649 return _react2['default'].createElement(
46650 InterpolateClass,
46651 {
46652 now: now,
46653 min: min,
46654 max: max,
46655 percent: percentage,
46656 bsStyle: bsStyle
46657 },
46658 label
46659 );
46660 };
46661
46662 return ProgressBar;
46663 })(_react2['default'].Component);
46664
46665 ProgressBar.propTypes = {
46666 min: _react.PropTypes.number,
46667 now: _react.PropTypes.number,
46668 max: _react.PropTypes.number,
46669 label: _react.PropTypes.node,
46670 srOnly: _react.PropTypes.bool,
46671 striped: _react.PropTypes.bool,
46672 active: _react.PropTypes.bool,
46673 children: onlyProgressBar,
46674 className: _react2['default'].PropTypes.string,
46675 interpolateClass: _react.PropTypes.node,
46676 /**
46677 * @private
46678 */
46679 isChild: _react.PropTypes.bool
46680 };
46681
46682 ProgressBar.defaultProps = {
46683 min: 0,
46684 max: 100,
46685 active: false,
46686 isChild: false,
46687 srOnly: false,
46688 striped: false
46689 };
46690
46691 exports['default'] = _utilsBootstrapUtils.bsStyles(_styleMaps.State.values(), _utilsBootstrapUtils.bsClass('progress-bar', ProgressBar));
46692 module.exports = exports['default'];
46693
46694/***/ },
46695/* 582 */
46696/***/ function(module, exports, __webpack_require__) {
46697
46698 'use strict';
46699
46700 var _inherits = __webpack_require__(372)['default'];
46701
46702 var _classCallCheck = __webpack_require__(379)['default'];
46703
46704 var _extends = __webpack_require__(338)['default'];
46705
46706 var _objectWithoutProperties = __webpack_require__(355)['default'];
46707
46708 var _interopRequireDefault = __webpack_require__(335)['default'];
46709
46710 exports.__esModule = true;
46711
46712 var _classnames = __webpack_require__(356);
46713
46714 var _classnames2 = _interopRequireDefault(_classnames);
46715
46716 var _react = __webpack_require__(89);
46717
46718 var _react2 = _interopRequireDefault(_react);
46719
46720 var _warning = __webpack_require__(271);
46721
46722 var _warning2 = _interopRequireDefault(_warning);
46723
46724 var _utilsBootstrapUtils = __webpack_require__(357);
46725
46726 var propTypes = {
46727 inline: _react2['default'].PropTypes.bool,
46728 disabled: _react2['default'].PropTypes.bool,
46729 /**
46730 * Only valid if `inline` is not set.
46731 */
46732 validationState: _react2['default'].PropTypes.oneOf(['success', 'warning', 'error']),
46733 /**
46734 * Attaches a ref to the `<input>` element. Only functions can be used here.
46735 *
46736 * ```js
46737 * <Radio inputRef={ref => { this.input = ref; }} />
46738 * ```
46739 */
46740 inputRef: _react2['default'].PropTypes.func
46741 };
46742
46743 var defaultProps = {
46744 inline: false,
46745 disabled: false
46746 };
46747
46748 var Radio = (function (_React$Component) {
46749 _inherits(Radio, _React$Component);
46750
46751 function Radio() {
46752 _classCallCheck(this, Radio);
46753
46754 _React$Component.apply(this, arguments);
46755 }
46756
46757 Radio.prototype.render = function render() {
46758 var _props = this.props;
46759 var inline = _props.inline;
46760 var disabled = _props.disabled;
46761 var validationState = _props.validationState;
46762 var inputRef = _props.inputRef;
46763 var className = _props.className;
46764 var style = _props.style;
46765 var children = _props.children;
46766
46767 var props = _objectWithoutProperties(_props, ['inline', 'disabled', 'validationState', 'inputRef', 'className', 'style', 'children']);
46768
46769 delete props.bsClass;
46770
46771 var input = _react2['default'].createElement('input', _extends({}, props, {
46772 ref: inputRef,
46773 type: 'radio',
46774 disabled: disabled
46775 }));
46776
46777 if (inline) {
46778 var _classes;
46779
46780 var _classes2 = (_classes = {}, _classes[_utilsBootstrapUtils.prefix(this.props, 'inline')] = true, _classes.disabled = disabled, _classes);
46781
46782 // Use a warning here instead of in propTypes to get better-looking
46783 // generated documentation.
46784 (undefined) !== 'production' ? _warning2['default'](!validationState, '`validationState` is ignored on `<Radio inline>`. To display ' + 'validation state on an inline radio, set `validationState` on a ' + 'parent `<FormGroup>` or other element instead.') : undefined;
46785
46786 return _react2['default'].createElement(
46787 'label',
46788 { className: _classnames2['default'](className, _classes2), style: style },
46789 input,
46790 children
46791 );
46792 }
46793
46794 var classes = _extends({}, _utilsBootstrapUtils.getClassSet(this.props), {
46795 disabled: disabled
46796 });
46797 if (validationState) {
46798 classes['has-' + validationState] = true;
46799 }
46800
46801 return _react2['default'].createElement(
46802 'div',
46803 { className: _classnames2['default'](className, classes), style: style },
46804 _react2['default'].createElement(
46805 'label',
46806 null,
46807 input,
46808 children
46809 )
46810 );
46811 };
46812
46813 return Radio;
46814 })(_react2['default'].Component);
46815
46816 Radio.propTypes = propTypes;
46817 Radio.defaultProps = defaultProps;
46818
46819 exports['default'] = _utilsBootstrapUtils.bsClass('radio', Radio);
46820 module.exports = exports['default'];
46821
46822/***/ },
46823/* 583 */
46824/***/ function(module, exports, __webpack_require__) {
46825
46826 'use strict';
46827
46828 var _inherits = __webpack_require__(372)['default'];
46829
46830 var _classCallCheck = __webpack_require__(379)['default'];
46831
46832 var _extends = __webpack_require__(338)['default'];
46833
46834 var _objectWithoutProperties = __webpack_require__(355)['default'];
46835
46836 var _interopRequireDefault = __webpack_require__(335)['default'];
46837
46838 exports.__esModule = true;
46839
46840 var _classnames = __webpack_require__(356);
46841
46842 var _classnames2 = _interopRequireDefault(_classnames);
46843
46844 var _react = __webpack_require__(89);
46845
46846 var _react2 = _interopRequireDefault(_react);
46847
46848 var _warning = __webpack_require__(271);
46849
46850 var _warning2 = _interopRequireDefault(_warning);
46851
46852 var ResponsiveEmbed = (function (_React$Component) {
46853 _inherits(ResponsiveEmbed, _React$Component);
46854
46855 function ResponsiveEmbed() {
46856 _classCallCheck(this, ResponsiveEmbed);
46857
46858 _React$Component.apply(this, arguments);
46859 }
46860
46861 ResponsiveEmbed.prototype.render = function render() {
46862 var _props = this.props;
46863 var bsClass = _props.bsClass;
46864 var className = _props.className;
46865 var a16by9 = _props.a16by9;
46866 var a4by3 = _props.a4by3;
46867 var children = _props.children;
46868
46869 var props = _objectWithoutProperties(_props, ['bsClass', 'className', 'a16by9', 'a4by3', 'children']);
46870
46871 (undefined) !== 'production' ? _warning2['default'](!(!a16by9 && !a4by3), '`a16by9` or `a4by3` attribute must be set.') : undefined;
46872 (undefined) !== 'production' ? _warning2['default'](!(a16by9 && a4by3), 'Either `a16by9` or `a4by3` attribute can be set. Not both.') : undefined;
46873
46874 var aspectRatio = {
46875 'embed-responsive-16by9': a16by9,
46876 'embed-responsive-4by3': a4by3
46877 };
46878
46879 return _react2['default'].createElement(
46880 'div',
46881 { className: _classnames2['default'](bsClass, aspectRatio) },
46882 _react.cloneElement(children, _extends({}, props, {
46883 className: _classnames2['default'](className, 'embed-responsive-item')
46884 }))
46885 );
46886 };
46887
46888 return ResponsiveEmbed;
46889 })(_react2['default'].Component);
46890
46891 ResponsiveEmbed.defaultProps = {
46892 bsClass: 'embed-responsive',
46893 a16by9: false,
46894 a4by3: false
46895 };
46896
46897 ResponsiveEmbed.propTypes = {
46898 /**
46899 * bootstrap className
46900 * @private
46901 */
46902 bsClass: _react.PropTypes.string,
46903 /**
46904 * This component accepts only one child element
46905 */
46906 children: _react.PropTypes.element.isRequired,
46907 /**
46908 * 16by9 aspect ratio
46909 */
46910 a16by9: _react.PropTypes.bool,
46911 /**
46912 * 4by3 aspect ratio
46913 */
46914 a4by3: _react.PropTypes.bool
46915 };
46916
46917 exports['default'] = ResponsiveEmbed;
46918 module.exports = exports['default'];
46919
46920/***/ },
46921/* 584 */
46922/***/ function(module, exports, __webpack_require__) {
46923
46924 'use strict';
46925
46926 var _extends = __webpack_require__(338)['default'];
46927
46928 var _interopRequireDefault = __webpack_require__(335)['default'];
46929
46930 exports.__esModule = true;
46931
46932 var _react = __webpack_require__(89);
46933
46934 var _react2 = _interopRequireDefault(_react);
46935
46936 var _classnames = __webpack_require__(356);
46937
46938 var _classnames2 = _interopRequireDefault(_classnames);
46939
46940 var _reactPropTypesLibElementType = __webpack_require__(380);
46941
46942 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
46943
46944 var Row = _react2['default'].createClass({
46945 displayName: 'Row',
46946
46947 propTypes: {
46948 /**
46949 * You can use a custom element for this component
46950 */
46951 componentClass: _reactPropTypesLibElementType2['default']
46952 },
46953
46954 getDefaultProps: function getDefaultProps() {
46955 return {
46956 componentClass: 'div'
46957 };
46958 },
46959
46960 render: function render() {
46961 var ComponentClass = this.props.componentClass;
46962
46963 return _react2['default'].createElement(
46964 ComponentClass,
46965 _extends({}, this.props, { className: _classnames2['default'](this.props.className, 'row') }),
46966 this.props.children
46967 );
46968 }
46969 });
46970
46971 exports['default'] = Row;
46972 module.exports = exports['default'];
46973
46974/***/ },
46975/* 585 */
46976/***/ function(module, exports, __webpack_require__) {
46977
46978 'use strict';
46979
46980 var _inherits = __webpack_require__(372)['default'];
46981
46982 var _classCallCheck = __webpack_require__(379)['default'];
46983
46984 var _extends = __webpack_require__(338)['default'];
46985
46986 var _objectWithoutProperties = __webpack_require__(355)['default'];
46987
46988 var _Object$keys = __webpack_require__(361)['default'];
46989
46990 var _interopRequireDefault = __webpack_require__(335)['default'];
46991
46992 exports.__esModule = true;
46993
46994 var _react = __webpack_require__(89);
46995
46996 var _react2 = _interopRequireDefault(_react);
46997
46998 var _Button = __webpack_require__(382);
46999
47000 var _Button2 = _interopRequireDefault(_Button);
47001
47002 var _Dropdown = __webpack_require__(415);
47003
47004 var _Dropdown2 = _interopRequireDefault(_Dropdown);
47005
47006 var _SplitToggle = __webpack_require__(586);
47007
47008 var _SplitToggle2 = _interopRequireDefault(_SplitToggle);
47009
47010 var _lodashCompatObjectOmit = __webpack_require__(473);
47011
47012 var _lodashCompatObjectOmit2 = _interopRequireDefault(_lodashCompatObjectOmit);
47013
47014 var _lodashCompatObjectPick = __webpack_require__(501);
47015
47016 var _lodashCompatObjectPick2 = _interopRequireDefault(_lodashCompatObjectPick);
47017
47018 var SplitButton = (function (_React$Component) {
47019 _inherits(SplitButton, _React$Component);
47020
47021 function SplitButton() {
47022 _classCallCheck(this, SplitButton);
47023
47024 _React$Component.apply(this, arguments);
47025 }
47026
47027 SplitButton.prototype.render = function render() {
47028 var _props = this.props;
47029 var children = _props.children;
47030 var title = _props.title;
47031 var onClick = _props.onClick;
47032 var target = _props.target;
47033 var href = _props.href;
47034 var toggleLabel = _props.toggleLabel;
47035 var bsSize = _props.bsSize;
47036 var bsStyle = _props.bsStyle;
47037
47038 var props = _objectWithoutProperties(_props, ['children', 'title', 'onClick', 'target', 'href', 'toggleLabel', 'bsSize', 'bsStyle']);
47039
47040 var disabled = props.disabled;
47041
47042 var dropdownProps = _lodashCompatObjectPick2['default'](props, _Object$keys(_Dropdown2['default'].ControlledComponent.propTypes));
47043 var buttonProps = _lodashCompatObjectOmit2['default'](props, _Object$keys(_Dropdown2['default'].ControlledComponent.propTypes));
47044
47045 return _react2['default'].createElement(
47046 _Dropdown2['default'],
47047 dropdownProps,
47048 _react2['default'].createElement(
47049 _Button2['default'],
47050 _extends({}, buttonProps, {
47051 onClick: onClick,
47052 bsStyle: bsStyle,
47053 bsSize: bsSize,
47054 disabled: disabled,
47055 target: target,
47056 href: href
47057 }),
47058 title
47059 ),
47060 _react2['default'].createElement(_SplitToggle2['default'], {
47061 'aria-label': toggleLabel || title,
47062 bsStyle: bsStyle,
47063 bsSize: bsSize,
47064 disabled: disabled
47065 }),
47066 _react2['default'].createElement(
47067 _Dropdown2['default'].Menu,
47068 null,
47069 children
47070 )
47071 );
47072 };
47073
47074 return SplitButton;
47075 })(_react2['default'].Component);
47076
47077 SplitButton.propTypes = _extends({}, _Dropdown2['default'].propTypes, {
47078 bsStyle: _Button2['default'].propTypes.bsStyle,
47079
47080 /**
47081 * @private
47082 */
47083 onClick: function onClick() {},
47084 target: _react2['default'].PropTypes.string,
47085 href: _react2['default'].PropTypes.string,
47086 /**
47087 * The content of the split button.
47088 */
47089 title: _react2['default'].PropTypes.node.isRequired,
47090 /**
47091 * Accessible label for the toggle; the value of `title` if not specified.
47092 */
47093 toggleLabel: _react2['default'].PropTypes.string
47094 });
47095
47096 SplitButton.defaultProps = {
47097 disabled: false,
47098 dropup: false,
47099 pullRight: false
47100 };
47101
47102 SplitButton.Toggle = _SplitToggle2['default'];
47103
47104 exports['default'] = SplitButton;
47105 module.exports = exports['default'];
47106
47107/***/ },
47108/* 586 */
47109/***/ function(module, exports, __webpack_require__) {
47110
47111 'use strict';
47112
47113 var _inherits = __webpack_require__(372)['default'];
47114
47115 var _classCallCheck = __webpack_require__(379)['default'];
47116
47117 var _extends = __webpack_require__(338)['default'];
47118
47119 var _interopRequireDefault = __webpack_require__(335)['default'];
47120
47121 exports.__esModule = true;
47122
47123 var _react = __webpack_require__(89);
47124
47125 var _react2 = _interopRequireDefault(_react);
47126
47127 var _DropdownToggle = __webpack_require__(499);
47128
47129 var _DropdownToggle2 = _interopRequireDefault(_DropdownToggle);
47130
47131 var SplitToggle = (function (_React$Component) {
47132 _inherits(SplitToggle, _React$Component);
47133
47134 function SplitToggle() {
47135 _classCallCheck(this, SplitToggle);
47136
47137 _React$Component.apply(this, arguments);
47138 }
47139
47140 SplitToggle.prototype.render = function render() {
47141 return _react2['default'].createElement(_DropdownToggle2['default'], _extends({}, this.props, {
47142 useAnchor: false,
47143 noCaret: false
47144 }));
47145 };
47146
47147 return SplitToggle;
47148 })(_react2['default'].Component);
47149
47150 exports['default'] = SplitToggle;
47151
47152 SplitToggle.defaultProps = _DropdownToggle2['default'].defaultProps;
47153 module.exports = exports['default'];
47154
47155/***/ },
47156/* 587 */
47157/***/ function(module, exports, __webpack_require__) {
47158
47159 'use strict';
47160
47161 var _inherits = __webpack_require__(372)['default'];
47162
47163 var _classCallCheck = __webpack_require__(379)['default'];
47164
47165 var _extends = __webpack_require__(338)['default'];
47166
47167 var _objectWithoutProperties = __webpack_require__(355)['default'];
47168
47169 var _interopRequireDefault = __webpack_require__(335)['default'];
47170
47171 exports.__esModule = true;
47172
47173 var _react = __webpack_require__(89);
47174
47175 var _react2 = _interopRequireDefault(_react);
47176
47177 var _TabPane = __webpack_require__(588);
47178
47179 var _TabPane2 = _interopRequireDefault(_TabPane);
47180
47181 var _TabContainer = __webpack_require__(589);
47182
47183 var _TabContainer2 = _interopRequireDefault(_TabContainer);
47184
47185 var _TabContent = __webpack_require__(590);
47186
47187 var _TabContent2 = _interopRequireDefault(_TabContent);
47188
47189 var Tab = (function (_React$Component) {
47190 _inherits(Tab, _React$Component);
47191
47192 function Tab() {
47193 _classCallCheck(this, Tab);
47194
47195 _React$Component.apply(this, arguments);
47196 }
47197
47198 Tab.prototype.render = function render() {
47199 var _props = this.props;
47200 var title = _props.title;
47201 var disabled = _props.disabled;
47202 var tabClassName = _props.tabClassName;
47203
47204 var props = _objectWithoutProperties(_props, ['title', 'disabled', 'tabClassName']);
47205
47206 return _react2['default'].createElement(_TabPane2['default'], props);
47207 };
47208
47209 return Tab;
47210 })(_react2['default'].Component);
47211
47212 Tab.propTypes = _extends({}, _TabPane2['default'].propTypes, {
47213
47214 disabled: _react2['default'].PropTypes.bool,
47215
47216 title: _react2['default'].PropTypes.node,
47217
47218 /**
47219 * tabClassName is used as className for the associated NavItem
47220 */
47221 tabClassName: _react2['default'].PropTypes.string
47222 });
47223
47224 Tab.Container = _TabContainer2['default'];
47225 Tab.Content = _TabContent2['default'];
47226 Tab.Pane = _TabPane2['default'];
47227
47228 exports['default'] = Tab;
47229 module.exports = exports['default'];
47230
47231/***/ },
47232/* 588 */
47233/***/ function(module, exports, __webpack_require__) {
47234
47235 'use strict';
47236
47237 var _extends = __webpack_require__(338)['default'];
47238
47239 var _interopRequireDefault = __webpack_require__(335)['default'];
47240
47241 exports.__esModule = true;
47242
47243 var _classnames = __webpack_require__(356);
47244
47245 var _classnames2 = _interopRequireDefault(_classnames);
47246
47247 var _domHelpersClassAddClass = __webpack_require__(543);
47248
47249 var _domHelpersClassAddClass2 = _interopRequireDefault(_domHelpersClassAddClass);
47250
47251 var _react = __webpack_require__(89);
47252
47253 var _react2 = _interopRequireDefault(_react);
47254
47255 var _reactPropTypesLibElementType = __webpack_require__(380);
47256
47257 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
47258
47259 var _warning = __webpack_require__(271);
47260
47261 var _warning2 = _interopRequireDefault(_warning);
47262
47263 var _utilsBootstrapUtils = __webpack_require__(357);
47264
47265 var _utilsCreateChainedFunction = __webpack_require__(414);
47266
47267 var _utilsCreateChainedFunction2 = _interopRequireDefault(_utilsCreateChainedFunction);
47268
47269 var _utilsTabUtils = __webpack_require__(556);
47270
47271 var _Fade = __webpack_require__(502);
47272
47273 var _Fade2 = _interopRequireDefault(_Fade);
47274
47275 var TabPane = _react2['default'].createClass({
47276 displayName: 'TabPane',
47277
47278 propTypes: {
47279
47280 /**
47281 * Uniquely identify the TabPane amoung its siblings.
47282 */
47283 eventKey: _react.PropTypes.any,
47284
47285 /**
47286 * Use animation when showing or hiding TabPanes. Use `false` to disable,
47287 * `true` to enable the default "Fade" animation or any Transition component.
47288 *
47289 */
47290 animation: _react.PropTypes.oneOfType([_react.PropTypes.bool, _reactPropTypesLibElementType2['default']]),
47291
47292 /** @private **/
47293 id: _react.PropTypes.string,
47294
47295 /** @private **/
47296 'aria-labelledby': _react.PropTypes.string,
47297
47298 /**
47299 * Transition onEnter callback when animation is not `false`
47300 */
47301 onEnter: _react.PropTypes.func,
47302
47303 /**
47304 * Transition onEntering callback when animation is not `false`
47305 */
47306 onEntering: _react.PropTypes.func,
47307
47308 /**
47309 * Transition onEntered callback when animation is not `false`
47310 */
47311 onEntered: _react.PropTypes.func,
47312
47313 /**
47314 * Transition onExit callback when animation is not `false`
47315 */
47316 onExit: _react.PropTypes.func,
47317
47318 /**
47319 * Transition onExiting callback when animation is not `false`
47320 */
47321 onExiting: _react.PropTypes.func,
47322
47323 /**
47324 * Transition onExited callback when animation is not `false`
47325 */
47326 onExited: _react.PropTypes.func,
47327
47328 /**
47329 * Unmount the tab (remove it from the DOM) when it is no longer visible
47330 */
47331 unmountOnExit: _react.PropTypes.bool
47332 },
47333
47334 contextTypes: {
47335 $bs_tabcontainer: _react.PropTypes.shape({
47336 getId: _react.PropTypes.func,
47337 unmountOnExit: _react.PropTypes.bool
47338 }),
47339 $bs_tabcontent: _react.PropTypes.shape({
47340 bsClass: _react.PropTypes.string,
47341 animation: _react.PropTypes.oneOfType([_react.PropTypes.bool, _reactPropTypesLibElementType2['default']]),
47342 activeKey: _react.PropTypes.any,
47343 onExited: _react.PropTypes.func,
47344 register: _react.PropTypes.func,
47345 unmountOnExit: _react.PropTypes.bool
47346 })
47347 },
47348
47349 /**
47350 * We override the TabContainer context so Navs in TabPanes
47351 * don't conflict with the top level one.
47352 */
47353 childContextTypes: {
47354 $bs_tabcontainer: _react.PropTypes.oneOf([null])
47355 },
47356
47357 componentWillMount: function componentWillMount() {
47358 this.exited = !this.isActive();
47359 this.registerWithParent();
47360 },
47361
47362 componentWillReceiveProps: function componentWillReceiveProps(nextProps, nextContext) {
47363 if (nextProps.eventKey !== this.props.eventKey) {
47364 this.unregisterWithParent();
47365 this.registerWithParent(nextProps, nextContext);
47366 }
47367 },
47368
47369 componentWillUpdate: function componentWillUpdate(nextProps, _, nextContext) {
47370 if (this.isActive(nextProps, nextContext)) {
47371 this.exited = false;
47372 } else if (!this.exited && !this.getTransition(nextProps, nextContext)) {
47373 // Otherwise let handleHidden take care of marking exited.
47374 this.exited = true;
47375 this._fireExitedCallback = true;
47376 }
47377 },
47378
47379 componentDidUpdate: function componentDidUpdate() {
47380 if (this._fireExitedCallback) {
47381 this._fireExitedCallback = false;
47382 this.onExited();
47383 }
47384 },
47385
47386 componentWillUnmount: function componentWillUnmount() {
47387 this.unregisterWithParent();
47388 },
47389
47390 getChildContext: function getChildContext() {
47391 return { $bs_tabcontainer: null };
47392 },
47393
47394 getTransition: function getTransition() {
47395 var props = arguments.length <= 0 || arguments[0] === undefined ? this.props : arguments[0];
47396 var context = arguments.length <= 1 || arguments[1] === undefined ? this.context : arguments[1];
47397
47398 context = this.getContext('$bs_tabcontent', context);
47399 return props.animation != null ? props.animation : context.animation;
47400 },
47401
47402 getUnmountOnExit: function getUnmountOnExit() {
47403 var context = this.getContext('$bs_tabcontent', this.context);
47404 return this.props.unmountOnExit != null ? this.props.unmountOnExit : context.unmountOnExit;
47405 },
47406
47407 isActive: function isActive() {
47408 var props = arguments.length <= 0 || arguments[0] === undefined ? this.props : arguments[0];
47409 var context = arguments.length <= 1 || arguments[1] === undefined ? this.context : arguments[1];
47410
47411 return this.getContext('$bs_tabcontent', context).activeKey === props.eventKey;
47412 },
47413
47414 render: function render() {
47415 var _classes;
47416
47417 var active = this.isActive();
47418 var visible = active || !this.exited;
47419 var getId = this.getContext('$bs_tabcontainer').getId;
47420 var bsClass = this.props.bsClass || this.getContext('$bs_tabcontent').bsClass;
47421
47422 var Transition = this.getTransition();
47423
47424 if (!visible && !Transition && this.getUnmountOnExit()) {
47425 return null;
47426 }
47427
47428 var classes = (_classes = {
47429 active: visible
47430 }, _classes[_utilsBootstrapUtils.prefix({ bsClass: bsClass }, 'pane')] = true, _classes);
47431
47432 var _props = this.props;
47433 var eventKey = _props.eventKey;
47434 var id = _props.id;
47435 var labelledBy = _props['aria-labelledby'];
47436 var onExit = _props.onExit;
47437 var onExiting = _props.onExiting;
47438 var onExited = _props.onExited;
47439 var onEnter = _props.onEnter;
47440 var onEntering = _props.onEntering;
47441 var onEntered = _props.onEntered;
47442
47443 if (typeof Transition === 'boolean') {
47444 Transition = Transition ? _Fade2['default'] : null;
47445 }
47446
47447 if (getId) {
47448 (undefined) !== 'production' ? _warning2['default'](!(id || labelledBy), 'In the context of a TabContainer, TabPanes are given generated `id` and `aria-labelledby` ' + 'attributes for the sake of proper component accessibility. Any provided ones will be ignored. ' + 'To control these attributes directly provide a `generateChildId` prop to the parent TabContainer.') : undefined;
47449 id = getId(eventKey, _utilsTabUtils.PANE) || null;
47450 labelledBy = getId(eventKey, _utilsTabUtils.TAB) || null;
47451 }
47452
47453 var tabPane = _react2['default'].createElement(
47454 'div',
47455 _extends({}, this.props, {
47456 id: id,
47457 role: 'tabpanel',
47458 'aria-hidden': !visible,
47459 'aria-labelledby': labelledBy,
47460 className: _classnames2['default'](this.props.className, classes, { 'in': !Transition })
47461 }),
47462 this.props.children
47463 );
47464
47465 if (Transition) {
47466 tabPane = _react2['default'].createElement(
47467 Transition,
47468 {
47469 'in': active,
47470 onExit: onExit,
47471 onExiting: onExiting,
47472 onExited: _utilsCreateChainedFunction2['default'](this.handleExited, onExited),
47473 onEnter: _utilsCreateChainedFunction2['default'](this.handleEnter, onEnter),
47474 onEntering: onEntering,
47475 onEntered: onEntered,
47476 unmountOnExit: this.getUnmountOnExit()
47477 },
47478 tabPane
47479 );
47480 }
47481
47482 return tabPane;
47483 },
47484
47485 onExited: function onExited() {
47486 var context = this.getContext('$bs_tabcontent');
47487 if (context.onExited) {
47488 context.onExited(this.props.eventKey);
47489 }
47490 },
47491
47492 handleEnter: function handleEnter(node) {
47493 // ref: https://github.com/react-bootstrap/react-overlays/issues/40
47494 if (this.isActive()) {
47495 _domHelpersClassAddClass2['default'](node, 'active');
47496 node.offsetWidth; // eslint-disable-line no-unused-expressions
47497 }
47498 },
47499
47500 handleExited: function handleExited() {
47501 this.exited = true;
47502 this.onExited();
47503 this.forceUpdate();
47504 },
47505
47506 registerWithParent: function registerWithParent() {
47507 var props = arguments.length <= 0 || arguments[0] === undefined ? this.props : arguments[0];
47508 var context = arguments.length <= 1 || arguments[1] === undefined ? this.context : arguments[1];
47509
47510 var register = this.getContext('$bs_tabcontent', context).register;
47511
47512 if (register) {
47513 this.unregister = register(props.eventKey);
47514 }
47515 },
47516
47517 unregisterWithParent: function unregisterWithParent() {
47518 if (this.unregister) {
47519 this.unregister();
47520 }
47521 },
47522
47523 getContext: function getContext(key) {
47524 var context = arguments.length <= 1 || arguments[1] === undefined ? this.context : arguments[1];
47525
47526 return context[key] || {};
47527 }
47528 });
47529
47530 exports['default'] = _utilsBootstrapUtils.bsClass('tab', TabPane);
47531 module.exports = exports['default'];
47532
47533/***/ },
47534/* 589 */
47535/***/ function(module, exports, __webpack_require__) {
47536
47537 'use strict';
47538
47539 var _objectWithoutProperties = __webpack_require__(355)['default'];
47540
47541 var _interopRequireDefault = __webpack_require__(335)['default'];
47542
47543 exports.__esModule = true;
47544
47545 var _react = __webpack_require__(89);
47546
47547 var _react2 = _interopRequireDefault(_react);
47548
47549 var _uncontrollable = __webpack_require__(489);
47550
47551 var _uncontrollable2 = _interopRequireDefault(_uncontrollable);
47552
47553 var idPropType = _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]);
47554
47555 var TabContainer = _react2['default'].createClass({
47556 displayName: 'TabContainer',
47557
47558 propTypes: {
47559 /**
47560 * HTML id attribute, required if no `generateChildId` prop
47561 * is specified.
47562 */
47563 id: function id(props) {
47564 var error = null;
47565
47566 if (!props.generateChildId) {
47567 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
47568 args[_key - 1] = arguments[_key];
47569 }
47570
47571 error = idPropType.apply(undefined, [props].concat(args));
47572
47573 if (!error && !props.id) {
47574 error = new Error('In order to properly initialize Tabs in a way that is accessible to assistive technologies ' + '(such as screen readers) an `id` or a `generateChildId` prop to TabContainer is required');
47575 }
47576 }
47577 return error;
47578 },
47579
47580 /**
47581 * A function that takes an eventKey and type and returns a
47582 * unique id for child tab NavItems and TabPanes. The function _must_ be a pure function,
47583 * meaning it should always return the _same_ id for the same set of inputs. The default
47584 * value requires that an `id` to be set for the TabContainer.
47585 *
47586 * The `type` argument will either be `"tab"` or `"pane"`.
47587 *
47588 * @defaultValue (eventKey, type) => `${this.props.id}-${type}-${key}`
47589 */
47590 generateChildId: _react.PropTypes.func,
47591
47592 /**
47593 * A callback fired when a tab is selected.
47594 *
47595 * @controllable activeKey
47596 */
47597 onSelect: _react.PropTypes.func,
47598
47599 /**
47600 * The `eventKey` of the currently active tab.
47601 *
47602 * @controllable onSelect
47603 */
47604 activeKey: _react.PropTypes.any
47605 },
47606
47607 childContextTypes: {
47608 $bs_tabcontainer: _react2['default'].PropTypes.shape({
47609 activeKey: _react.PropTypes.any,
47610 onSelect: _react.PropTypes.func,
47611 getId: _react.PropTypes.func
47612 })
47613 },
47614
47615 getChildContext: function getChildContext() {
47616 var _props = this.props;
47617 var activeKey = _props.activeKey;
47618 var generateChildId = _props.generateChildId;
47619 var id = _props.id;
47620
47621 return {
47622 $bs_tabcontainer: {
47623 activeKey: activeKey,
47624 onSelect: this.handleSelect,
47625 getId: generateChildId || function (key, type) {
47626 return id ? id + '-' + type + '-' + key : null;
47627 }
47628 }
47629 };
47630 },
47631
47632 componentWillUnmount: function componentWillUnmount() {
47633 // isMounted() isn't `true` at this point;
47634 this.unmounting = true;
47635 },
47636
47637 handleSelect: function handleSelect(key) {
47638 if (!this.unmounting) {
47639 this.props.onSelect(key);
47640 }
47641 },
47642
47643 render: function render() {
47644 var _props2 = this.props;
47645 var children = _props2.children;
47646
47647 var props = _objectWithoutProperties(_props2, ['children']);
47648
47649 delete props.generateChildId;
47650 delete props.onSelect;
47651 delete props.activeKey;
47652
47653 return _react2['default'].cloneElement(_react2['default'].Children.only(children), props);
47654 }
47655 });
47656
47657 exports['default'] = _uncontrollable2['default'](TabContainer, { activeKey: 'onSelect' });
47658 module.exports = exports['default'];
47659
47660/***/ },
47661/* 590 */
47662/***/ function(module, exports, __webpack_require__) {
47663
47664 'use strict';
47665
47666 var _interopRequireDefault = __webpack_require__(335)['default'];
47667
47668 exports.__esModule = true;
47669
47670 var _classnames = __webpack_require__(356);
47671
47672 var _classnames2 = _interopRequireDefault(_classnames);
47673
47674 var _invariant = __webpack_require__(268);
47675
47676 var _invariant2 = _interopRequireDefault(_invariant);
47677
47678 var _react = __webpack_require__(89);
47679
47680 var _react2 = _interopRequireDefault(_react);
47681
47682 var _reactPropTypesLibElementType = __webpack_require__(380);
47683
47684 var _reactPropTypesLibElementType2 = _interopRequireDefault(_reactPropTypesLibElementType);
47685
47686 var _utilsBootstrapUtils = __webpack_require__(357);
47687
47688 var animationPropType = _react.PropTypes.oneOfType([_react.PropTypes.bool, _reactPropTypesLibElementType2['default']]);
47689
47690 var TabContent = _react2['default'].createClass({
47691 displayName: 'TabContent',
47692
47693 propTypes: {
47694
47695 /**
47696 * the Component used to render the TabContent
47697 */
47698 componentClass: _reactPropTypesLibElementType2['default'],
47699
47700 /**
47701 * Sets a default animation strategy for all children TabPanes.
47702 * Use `false` to disable, `true` to enable the default "Fade"
47703 * animation or any `<Transition>` component.
47704 */
47705 animation: _react.PropTypes.oneOfType([_react.PropTypes.bool, _reactPropTypesLibElementType2['default']]),
47706
47707 /**
47708 * Unmount the tab (remove it from the DOM) when it is no longer visible
47709 */
47710 unmountOnExit: _react.PropTypes.bool
47711 },
47712
47713 contextTypes: {
47714 $bs_tabcontainer: _react2['default'].PropTypes.shape({
47715 activeKey: _react2['default'].PropTypes.any,
47716 onSelect: _react.PropTypes.func
47717 })
47718 },
47719
47720 childContextTypes: {
47721 $bs_tabcontent: _react.PropTypes.shape({
47722 bsClass: _react.PropTypes.string,
47723 animation: animationPropType,
47724 activeKey: _react.PropTypes.any,
47725 onExited: _react.PropTypes.func,
47726 register: _react.PropTypes.func,
47727 unmountOnExit: _react.PropTypes.bool
47728 })
47729 },
47730
47731 getDefaultProps: function getDefaultProps() {
47732 return {
47733 componentClass: 'div',
47734 animation: true,
47735 unmountOnExit: false
47736 };
47737 },
47738
47739 getInitialState: function getInitialState() {
47740 return {
47741 exitingPane: null
47742 };
47743 },
47744
47745 getChildContext: function getChildContext() {
47746 var exitingPane = this._exitingPane;
47747
47748 return {
47749 $bs_tabcontent: {
47750 bsClass: this.props.bsClass,
47751 animation: this.props.animation,
47752 activeKey: exitingPane ? undefined : this.getActiveKey(),
47753 onExited: this.handlePaneExited,
47754 register: this.registerPane,
47755 unmountOnExit: this.props.unmountOnExit
47756 }
47757 };
47758 },
47759
47760 componentWillMount: function componentWillMount() {
47761 this.panes = [];
47762 },
47763
47764 /**
47765 * This belongs in `componentWillReceiveProps()` but
47766 * 0.14.x contains a bug where cwrp isn't called when only context changes.
47767 * fixed in master, not sure it will make it into any 0.14 release
47768 */
47769 componentWillUpdate: function componentWillUpdate(nextProps, _, nextContext) {
47770 var currentActiveKey = this.getActiveKey();
47771 var nextActiveKey = this.getActiveKey(nextContext);
47772 var currentKeyIsStillValid = this.panes.indexOf(currentActiveKey) !== -1;
47773
47774 if (this.panes.indexOf(this._exitingPane) === -1) {
47775 this._exitingPane = null;
47776 }
47777
47778 if (nextActiveKey !== currentActiveKey && currentKeyIsStillValid) {
47779 this._exitingPane = currentActiveKey;
47780 }
47781 },
47782
47783 render: function render() {
47784 var _props = this.props;
47785 var className = _props.className;
47786 var children = _props.children;
47787
47788 var Component = this.props.componentClass;
47789
47790 var contentClass = _utilsBootstrapUtils.prefix(this.props, 'content');
47791
47792 return _react2['default'].createElement(
47793 Component,
47794 { className: _classnames2['default'](contentClass, className) },
47795 children
47796 );
47797 },
47798
47799 handlePaneExited: function handlePaneExited() {
47800 this._exitingPane = null;
47801 this.forceUpdate();
47802 },
47803
47804 /**
47805 * This is unfortunately neccessary because the TabContent needs to know if
47806 * a TabPane is ever going to exit, since it may unmount and just leave the
47807 * TabContent to wait longingly forever for the handlePaneExited to be called.
47808 */
47809 registerPane: function registerPane(eventKey) {
47810 var _this = this;
47811
47812 var panes = this.panes;
47813
47814 !(panes.indexOf(eventKey) === -1) ? (undefined) !== 'production' ? _invariant2['default'](false, 'You cannot have multiple TabPanes of with the same `eventKey` in the same ' + 'TabContent component. Duplicate eventKey: ' + eventKey) : _invariant2['default'](false) : undefined;
47815
47816 panes.push(eventKey);
47817
47818 return function () {
47819 panes.splice(panes.indexOf(eventKey), 1);
47820
47821 // #1892
47822 // new active state can propagate down _before_
47823 // the tab actually unmounts, so it will map be exiting.
47824 // since an exiting tab won't complete, clear the bad state
47825 if (eventKey === _this._exitingPane) {
47826 _this.handlePaneExited();
47827 }
47828
47829 // If the tab was active, we need to tell the container
47830 // that it no longer exists and as such is not active.
47831 if (eventKey === _this.getActiveKey()) {
47832 _this.getContext('$bs_tabcontainer').onSelect();
47833 }
47834 };
47835 },
47836
47837 getActiveKey: function getActiveKey() {
47838 var context = arguments.length <= 0 || arguments[0] === undefined ? this.context : arguments[0];
47839
47840 return this.getContext('$bs_tabcontainer', context).activeKey;
47841 },
47842
47843 getContext: function getContext(key) {
47844 var context = arguments.length <= 1 || arguments[1] === undefined ? this.context : arguments[1];
47845
47846 return context[key] || {};
47847 }
47848 });
47849
47850 exports['default'] = _utilsBootstrapUtils.bsClass('tab', TabContent);
47851 module.exports = exports['default'];
47852
47853/***/ },
47854/* 591 */
47855/***/ function(module, exports, __webpack_require__) {
47856
47857 'use strict';
47858
47859 var _extends = __webpack_require__(338)['default'];
47860
47861 var _interopRequireDefault = __webpack_require__(335)['default'];
47862
47863 exports.__esModule = true;
47864
47865 var _react = __webpack_require__(89);
47866
47867 var _react2 = _interopRequireDefault(_react);
47868
47869 var _classnames = __webpack_require__(356);
47870
47871 var _classnames2 = _interopRequireDefault(_classnames);
47872
47873 var Table = _react2['default'].createClass({
47874 displayName: 'Table',
47875
47876 propTypes: {
47877 striped: _react2['default'].PropTypes.bool,
47878 bordered: _react2['default'].PropTypes.bool,
47879 condensed: _react2['default'].PropTypes.bool,
47880 hover: _react2['default'].PropTypes.bool,
47881 responsive: _react2['default'].PropTypes.bool
47882 },
47883
47884 getDefaultProps: function getDefaultProps() {
47885 return {
47886 bordered: false,
47887 condensed: false,
47888 hover: false,
47889 responsive: false,
47890 striped: false
47891 };
47892 },
47893
47894 render: function render() {
47895 var classes = {
47896 'table': true,
47897 'table-striped': this.props.striped,
47898 'table-bordered': this.props.bordered,
47899 'table-condensed': this.props.condensed,
47900 'table-hover': this.props.hover
47901 };
47902 var table = _react2['default'].createElement(
47903 'table',
47904 _extends({}, this.props, { className: _classnames2['default'](this.props.className, classes) }),
47905 this.props.children
47906 );
47907
47908 return this.props.responsive ? _react2['default'].createElement(
47909 'div',
47910 { className: 'table-responsive' },
47911 table
47912 ) : table;
47913 }
47914 });
47915
47916 exports['default'] = Table;
47917 module.exports = exports['default'];
47918
47919/***/ },
47920/* 592 */
47921/***/ function(module, exports, __webpack_require__) {
47922
47923 'use strict';
47924
47925 var _extends = __webpack_require__(338)['default'];
47926
47927 var _objectWithoutProperties = __webpack_require__(355)['default'];
47928
47929 var _Object$keys = __webpack_require__(361)['default'];
47930
47931 var _interopRequireDefault = __webpack_require__(335)['default'];
47932
47933 exports.__esModule = true;
47934
47935 var _classnames = __webpack_require__(356);
47936
47937 var _classnames2 = _interopRequireDefault(_classnames);
47938
47939 var _uncontrollable = __webpack_require__(489);
47940
47941 var _uncontrollable2 = _interopRequireDefault(_uncontrollable);
47942
47943 var _react = __webpack_require__(89);
47944
47945 var _react2 = _interopRequireDefault(_react);
47946
47947 var _Col = __webpack_require__(400);
47948
47949 var _Col2 = _interopRequireDefault(_Col);
47950
47951 var _Nav = __webpack_require__(555);
47952
47953 var _Nav2 = _interopRequireDefault(_Nav);
47954
47955 var _NavItem = __webpack_require__(563);
47956
47957 var _NavItem2 = _interopRequireDefault(_NavItem);
47958
47959 var _styleMaps = __webpack_require__(358);
47960
47961 var _styleMaps2 = _interopRequireDefault(_styleMaps);
47962
47963 var _reactPropTypesLibIsRequiredForA11y = __webpack_require__(488);
47964
47965 var _reactPropTypesLibIsRequiredForA11y2 = _interopRequireDefault(_reactPropTypesLibIsRequiredForA11y);
47966
47967 var _utilsDeprecationWarning = __webpack_require__(391);
47968
47969 var _utilsDeprecationWarning2 = _interopRequireDefault(_utilsDeprecationWarning);
47970
47971 var _utilsValidComponentChildren = __webpack_require__(365);
47972
47973 var _utilsValidComponentChildren2 = _interopRequireDefault(_utilsValidComponentChildren);
47974
47975 var _TabContainer = __webpack_require__(589);
47976
47977 var _TabContainer2 = _interopRequireDefault(_TabContainer);
47978
47979 var _TabContent = __webpack_require__(590);
47980
47981 var _TabContent2 = _interopRequireDefault(_TabContent);
47982
47983 var TabContainer = _TabContainer2['default'].ControlledComponent;
47984
47985 function getDefaultActiveKeyFromChildren(children) {
47986 var defaultActiveKey = undefined;
47987 _utilsValidComponentChildren2['default'].forEach(children, function (child) {
47988 if (defaultActiveKey == null) {
47989 defaultActiveKey = child.props.eventKey;
47990 }
47991 });
47992 return defaultActiveKey;
47993 }
47994
47995 var Tabs = _react2['default'].createClass({
47996 displayName: 'Tabs',
47997
47998 propTypes: {
47999
48000 /**
48001 * Mark the Tab with a matching `eventKey` as active.
48002 *
48003 * @controllable onSelect
48004 */
48005 activeKey: _react2['default'].PropTypes.any,
48006
48007 /**
48008 * Navigation style for tabs
48009 *
48010 * If not specified, it will be treated as `'tabs'` when vertically
48011 * positioned and `'pills'` when horizontally positioned.
48012 */
48013 bsStyle: _react2['default'].PropTypes.oneOf(['tabs', 'pills']),
48014
48015 animation: _react2['default'].PropTypes.bool,
48016
48017 id: _reactPropTypesLibIsRequiredForA11y2['default'](_react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number])),
48018
48019 /**
48020 * Callback fired when a Tab is selected.
48021 *
48022 * ```js
48023 * function (
48024 * Any eventKey,
48025 * SyntheticEvent event?
48026 * )
48027 * ```
48028 *
48029 * @controllable activeKey
48030 */
48031 onSelect: _react2['default'].PropTypes.func,
48032
48033 /**
48034 * Unmount tabs (remove it from the DOM) when it is no longer visible
48035 */
48036 unmountOnExit: _react2['default'].PropTypes.bool,
48037
48038 /**
48039 * @deprecated Use TabContainer to create differently shaped tab layouts.
48040 */
48041 position: _react2['default'].PropTypes.oneOf(['top', 'left', 'right']),
48042
48043 /**
48044 * Number of grid columns for the tabs if horizontally positioned
48045 *
48046 * This accepts either a single width or a mapping of size to width.
48047 *
48048 * @deprecated Use TabContainer to create differently shaped tab layouts.
48049 */
48050 tabWidth: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.number, _react2['default'].PropTypes.object]),
48051 /**
48052 * Number of grid columns for the panes if horizontally positioned
48053 *
48054 * This accepts either a single width or a mapping of size to width. If not
48055 * specified, it will be treated as `styleMaps.GRID_COLUMNS` minus
48056 * `tabWidth`.
48057 *
48058 * @deprecated Use TabContainer to create differently shaped tab layouts.
48059 */
48060 paneWidth: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.number, _react2['default'].PropTypes.object]),
48061 /**
48062 * Render without clearfix if horizontally positioned
48063 *
48064 * @deprecated Use TabContainer to create differently shaped tab layouts.
48065 */
48066 standalone: _react2['default'].PropTypes.bool
48067 },
48068
48069 getDefaultProps: function getDefaultProps() {
48070 return {
48071 bsClass: 'tab',
48072 animation: true,
48073 tabWidth: 2,
48074 position: 'top',
48075 standalone: false,
48076 unmountOnExit: false
48077 };
48078 },
48079
48080 render: function render() {
48081 var _props = this.props;
48082 var id = _props.id;
48083 var className = _props.className;
48084 var style = _props.style;
48085 var position = _props.position;
48086 var bsStyle = _props.bsStyle;
48087 var tabWidth = _props.tabWidth;
48088 var paneWidth = _props.paneWidth;
48089 var standalone = _props.standalone;
48090 var children = _props.children;
48091 var onSelect = _props.onSelect;
48092 var activeKey = _props.activeKey;
48093
48094 var props = _objectWithoutProperties(_props, ['id', 'className', 'style', 'position', 'bsStyle', 'tabWidth', 'paneWidth', 'standalone', 'children', 'onSelect', 'activeKey']);
48095
48096 activeKey = this.getActiveKey();
48097
48098 var isHorizontal = position === 'left' || position === 'right';
48099
48100 if (bsStyle == null) {
48101 bsStyle = isHorizontal ? 'pills' : 'tabs';
48102 }
48103
48104 var containerProps = { id: id, className: className, style: style, activeKey: activeKey, onSelect: onSelect };
48105
48106 var tabsProps = _extends({}, props, {
48107 bsStyle: bsStyle,
48108 bsClass: undefined,
48109 stacked: isHorizontal,
48110 ref: 'tabs',
48111 role: 'tablist'
48112 });
48113
48114 var childTabs = _utilsValidComponentChildren2['default'].map(children, this.renderTab);
48115
48116 var panesProps = {
48117 ref: 'panes',
48118 animation: props.animation,
48119 unmountOnExit: props.unmountOnExit
48120 };
48121
48122 var childPanes = children;
48123
48124 if (isHorizontal) {
48125 _utilsDeprecationWarning2['default']({
48126 message: 'Horizontal Tabs (position "left" or "right") are deprecated in favor ' + 'of the more flexible TabContainer component.'
48127 });
48128
48129 if (!standalone) {
48130 containerProps.className = _classnames2['default'](containerProps.className, 'clearfix');
48131 }
48132
48133 var _getColProps = this.getColProps({ tabWidth: tabWidth, paneWidth: paneWidth });
48134
48135 var tabsColProps = _getColProps.tabsColProps;
48136 var panesColProps = _getColProps.panesColProps;
48137
48138 var tabs = _react2['default'].createElement(
48139 _Col2['default'],
48140 _extends({ componentClass: _Nav2['default'] }, tabsProps, tabsColProps),
48141 childTabs
48142 );
48143 var panes = _react2['default'].createElement(
48144 _Col2['default'],
48145 _extends({ componentClass: _TabContent2['default'] }, panesProps, panesColProps),
48146 childPanes
48147 );
48148
48149 if (position === 'left') {
48150 return _react2['default'].createElement(
48151 TabContainer,
48152 containerProps,
48153 _react2['default'].createElement(
48154 'div',
48155 null,
48156 tabs,
48157 panes
48158 )
48159 );
48160 }
48161
48162 return _react2['default'].createElement(
48163 TabContainer,
48164 containerProps,
48165 _react2['default'].createElement(
48166 'div',
48167 null,
48168 panes,
48169 tabs
48170 )
48171 );
48172 }
48173
48174 return _react2['default'].createElement(
48175 TabContainer,
48176 containerProps,
48177 _react2['default'].createElement(
48178 'div',
48179 null,
48180 _react2['default'].createElement(
48181 _Nav2['default'],
48182 tabsProps,
48183 childTabs
48184 ),
48185 _react2['default'].createElement(
48186 _TabContent2['default'],
48187 panesProps,
48188 childPanes
48189 )
48190 )
48191 );
48192 },
48193
48194 getActiveKey: function getActiveKey() {
48195 var props = arguments.length <= 0 || arguments[0] === undefined ? this.props : arguments[0];
48196 var activeKey = props.activeKey;
48197 var children = props.children;
48198
48199 return activeKey === undefined ? getDefaultActiveKeyFromChildren(children) : activeKey;
48200 },
48201
48202 renderPane: function renderPane(child, index) {
48203 return _react.cloneElement(child, {
48204 key: child.key ? child.key : index
48205 });
48206 },
48207
48208 renderTab: function renderTab(child) {
48209 if (child.props.title == null) {
48210 return null;
48211 }
48212
48213 var _child$props = child.props;
48214 var eventKey = _child$props.eventKey;
48215 var title = _child$props.title;
48216 var disabled = _child$props.disabled;
48217 var tabClassName = _child$props.tabClassName;
48218
48219 return _react2['default'].createElement(
48220 _NavItem2['default'],
48221 {
48222 eventKey: eventKey,
48223 disabled: disabled,
48224 className: tabClassName
48225 },
48226 title
48227 );
48228 },
48229
48230 getColProps: function getColProps(_ref) {
48231 var tabWidth = _ref.tabWidth;
48232 var paneWidth = _ref.paneWidth;
48233
48234 var tabsColProps = undefined;
48235 if (tabWidth instanceof Object) {
48236 tabsColProps = tabWidth;
48237 } else {
48238 tabsColProps = { xs: tabWidth };
48239 }
48240
48241 var panesColProps = undefined;
48242 if (paneWidth == null) {
48243 panesColProps = {};
48244 _Object$keys(tabsColProps).forEach(function (size) {
48245 panesColProps[size] = _styleMaps2['default'].GRID_COLUMNS - tabsColProps[size];
48246 });
48247 } else if (paneWidth instanceof Object) {
48248 panesColProps = paneWidth;
48249 } else {
48250 panesColProps = { xs: paneWidth };
48251 }
48252
48253 return { tabsColProps: tabsColProps, panesColProps: panesColProps };
48254 }
48255
48256 });
48257
48258 exports['default'] = _uncontrollable2['default'](Tabs, { activeKey: 'onSelect' });
48259 module.exports = exports['default'];
48260
48261/***/ },
48262/* 593 */
48263/***/ function(module, exports, __webpack_require__) {
48264
48265 'use strict';
48266
48267 var _extends = __webpack_require__(338)['default'];
48268
48269 var _interopRequireDefault = __webpack_require__(335)['default'];
48270
48271 exports.__esModule = true;
48272
48273 var _classnames = __webpack_require__(356);
48274
48275 var _classnames2 = _interopRequireDefault(_classnames);
48276
48277 var _react = __webpack_require__(89);
48278
48279 var _react2 = _interopRequireDefault(_react);
48280
48281 var _utilsBootstrapUtils = __webpack_require__(357);
48282
48283 var _SafeAnchor = __webpack_require__(371);
48284
48285 var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
48286
48287 var Thumbnail = _react2['default'].createClass({
48288 displayName: 'Thumbnail',
48289
48290 propTypes: {
48291 alt: _react2['default'].PropTypes.string,
48292 href: _react2['default'].PropTypes.string,
48293 src: _react2['default'].PropTypes.string
48294 },
48295
48296 render: function render() {
48297 var classes = _utilsBootstrapUtils.getClassSet(this.props);
48298
48299 if (this.props.href) {
48300 return _react2['default'].createElement(
48301 _SafeAnchor2['default'],
48302 _extends({}, this.props, { href: this.props.href, className: _classnames2['default'](this.props.className, classes) }),
48303 _react2['default'].createElement('img', { src: this.props.src, alt: this.props.alt })
48304 );
48305 }
48306
48307 if (this.props.children) {
48308 return _react2['default'].createElement(
48309 'div',
48310 _extends({}, this.props, { className: _classnames2['default'](this.props.className, classes) }),
48311 _react2['default'].createElement('img', { src: this.props.src, alt: this.props.alt }),
48312 _react2['default'].createElement(
48313 'div',
48314 { className: 'caption' },
48315 this.props.children
48316 )
48317 );
48318 }
48319
48320 return _react2['default'].createElement(
48321 'div',
48322 _extends({}, this.props, { className: _classnames2['default'](this.props.className, classes) }),
48323 _react2['default'].createElement('img', { src: this.props.src, alt: this.props.alt })
48324 );
48325 }
48326 });
48327
48328 exports['default'] = _utilsBootstrapUtils.bsClass('thumbnail', Thumbnail);
48329 module.exports = exports['default'];
48330
48331/***/ },
48332/* 594 */
48333/***/ function(module, exports, __webpack_require__) {
48334
48335 'use strict';
48336
48337 var _extends = __webpack_require__(338)['default'];
48338
48339 var _interopRequireDefault = __webpack_require__(335)['default'];
48340
48341 exports.__esModule = true;
48342
48343 var _classnames = __webpack_require__(356);
48344
48345 var _classnames2 = _interopRequireDefault(_classnames);
48346
48347 var _react = __webpack_require__(89);
48348
48349 var _react2 = _interopRequireDefault(_react);
48350
48351 var _reactPropTypesLibIsRequiredForA11y = __webpack_require__(488);
48352
48353 var _reactPropTypesLibIsRequiredForA11y2 = _interopRequireDefault(_reactPropTypesLibIsRequiredForA11y);
48354
48355 var _utilsBootstrapUtils = __webpack_require__(357);
48356
48357 var Tooltip = _react2['default'].createClass({
48358 displayName: 'Tooltip',
48359
48360 propTypes: {
48361 /**
48362 * An html id attribute, necessary for accessibility
48363 * @type {string}
48364 * @required
48365 */
48366 id: _reactPropTypesLibIsRequiredForA11y2['default'](_react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.string, _react2['default'].PropTypes.number])),
48367
48368 /**
48369 * Sets the direction the Tooltip is positioned towards.
48370 */
48371 placement: _react2['default'].PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
48372
48373 /**
48374 * The "left" position value for the Tooltip.
48375 */
48376 positionLeft: _react2['default'].PropTypes.number,
48377 /**
48378 * The "top" position value for the Tooltip.
48379 */
48380 positionTop: _react2['default'].PropTypes.number,
48381 /**
48382 * The "left" position value for the Tooltip arrow.
48383 */
48384 arrowOffsetLeft: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.number, _react2['default'].PropTypes.string]),
48385 /**
48386 * The "top" position value for the Tooltip arrow.
48387 */
48388 arrowOffsetTop: _react2['default'].PropTypes.oneOfType([_react2['default'].PropTypes.number, _react2['default'].PropTypes.string]),
48389 /**
48390 * Title text
48391 */
48392 title: _react2['default'].PropTypes.node
48393 },
48394
48395 getDefaultProps: function getDefaultProps() {
48396 return {
48397 bsClass: 'tooltip',
48398 placement: 'right'
48399 };
48400 },
48401
48402 render: function render() {
48403 var _classes;
48404
48405 var classes = (_classes = {}, _classes[_utilsBootstrapUtils.prefix(this.props)] = true, _classes[this.props.placement] = true, _classes);
48406
48407 var style = _extends({
48408 left: this.props.positionLeft,
48409 top: this.props.positionTop
48410 }, this.props.style);
48411
48412 var arrowStyle = {
48413 left: this.props.arrowOffsetLeft,
48414 top: this.props.arrowOffsetTop
48415 };
48416
48417 return _react2['default'].createElement(
48418 'div',
48419 _extends({
48420 role: 'tooltip'
48421 }, this.props, {
48422 className: _classnames2['default'](this.props.className, classes),
48423 style: style
48424 }),
48425 _react2['default'].createElement('div', { className: _utilsBootstrapUtils.prefix(this.props, 'arrow'), style: arrowStyle }),
48426 _react2['default'].createElement(
48427 'div',
48428 { className: _utilsBootstrapUtils.prefix(this.props, 'inner') },
48429 this.props.children
48430 )
48431 );
48432 }
48433 });
48434
48435 exports['default'] = Tooltip;
48436 module.exports = exports['default'];
48437
48438/***/ },
48439/* 595 */
48440/***/ function(module, exports, __webpack_require__) {
48441
48442 'use strict';
48443
48444 var _inherits = __webpack_require__(372)['default'];
48445
48446 var _classCallCheck = __webpack_require__(379)['default'];
48447
48448 var _extends = __webpack_require__(338)['default'];
48449
48450 var _interopRequireDefault = __webpack_require__(335)['default'];
48451
48452 exports.__esModule = true;
48453
48454 var _classnames = __webpack_require__(356);
48455
48456 var _classnames2 = _interopRequireDefault(_classnames);
48457
48458 var _react = __webpack_require__(89);
48459
48460 var _react2 = _interopRequireDefault(_react);
48461
48462 var _styleMaps = __webpack_require__(358);
48463
48464 var _utilsBootstrapUtils = __webpack_require__(357);
48465
48466 var Well = (function (_React$Component) {
48467 _inherits(Well, _React$Component);
48468
48469 function Well() {
48470 _classCallCheck(this, _Well);
48471
48472 _React$Component.apply(this, arguments);
48473 }
48474
48475 Well.prototype.render = function render() {
48476 var classes = _utilsBootstrapUtils.getClassSet(this.props);
48477
48478 return _react2['default'].createElement(
48479 'div',
48480 _extends({}, this.props, { className: _classnames2['default'](this.props.className, classes) }),
48481 this.props.children
48482 );
48483 };
48484
48485 var _Well = Well;
48486 Well = _utilsBootstrapUtils.bsSizes([_styleMaps.Sizes.LARGE, _styleMaps.Sizes.SMALL])(Well) || Well;
48487 Well = _utilsBootstrapUtils.bsClass('well')(Well) || Well;
48488 return Well;
48489 })(_react2['default'].Component);
48490
48491 exports['default'] = Well;
48492 module.exports = exports['default'];
48493
48494/***/ },
48495/* 596 */
48496/***/ function(module, exports, __webpack_require__) {
48497
48498 'use strict';
48499
48500 var _interopRequireWildcard = __webpack_require__(336)['default'];
48501
48502 var _interopRequireDefault = __webpack_require__(335)['default'];
48503
48504 exports.__esModule = true;
48505
48506 var _bootstrapUtils2 = __webpack_require__(357);
48507
48508 var _bootstrapUtils = _interopRequireWildcard(_bootstrapUtils2);
48509
48510 exports.bootstrapUtils = _bootstrapUtils;
48511
48512 var _childrenValueInputValidation2 = __webpack_require__(389);
48513
48514 var _childrenValueInputValidation3 = _interopRequireDefault(_childrenValueInputValidation2);
48515
48516 exports.childrenValueInputValidation = _childrenValueInputValidation3['default'];
48517
48518 var _createChainedFunction2 = __webpack_require__(414);
48519
48520 var _createChainedFunction3 = _interopRequireDefault(_createChainedFunction2);
48521
48522 exports.createChainedFunction = _createChainedFunction3['default'];
48523
48524 var _ValidComponentChildren2 = __webpack_require__(365);
48525
48526 var _ValidComponentChildren3 = _interopRequireDefault(_ValidComponentChildren2);
48527
48528 exports.ValidComponentChildren = _ValidComponentChildren3['default'];
48529
48530/***/ },
48531/* 597 */
48532/***/ function(module, exports, __webpack_require__) {
48533
48534 'use strict';
48535
48536 Object.defineProperty(exports, "__esModule", {
48537 value: true
48538 });
48539
48540 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
48541
48542 var _react = __webpack_require__(89);
48543
48544 var _react2 = _interopRequireDefault(_react);
48545
48546 var _style = __webpack_require__(598);
48547
48548 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
48549
48550 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
48551
48552 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
48553
48554 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
48555 * Template login field
48556 * @author patrickkerypei / https://github.com/patrickkerrypei
48557 */
48558
48559 // Libraries
48560
48561 // Style
48562
48563
48564 var LoginField = function (_Component) {
48565 _inherits(LoginField, _Component);
48566
48567 function LoginField(props) {
48568 _classCallCheck(this, LoginField);
48569
48570 var _this = _possibleConstructorReturn(this, (LoginField.__proto__ || Object.getPrototypeOf(LoginField)).call(this, props));
48571
48572 _this.checkEnter = _this.checkEnter.bind(_this);
48573 return _this;
48574 }
48575
48576 _createClass(LoginField, [{
48577 key: 'checkEnter',
48578 value: function checkEnter(event) {
48579 if (event.which === 13) {
48580 this.props.onEnter();
48581 }
48582 }
48583 }, {
48584 key: 'shouldComponentUpdate',
48585 value: function shouldComponentUpdate(nextProps, nextState) {
48586 return nextProps.value !== this.props.value || nextProps.valid !== this.props.valid || nextProps.disabled !== this.props.disabled;
48587 }
48588 }, {
48589 key: 'render',
48590 value: function render() {
48591 return _react2.default.createElement(
48592 'div',
48593 null,
48594 _react2.default.createElement(
48595 'div',
48596 { className: 'input-group ' + (this.props.valid ? '' : 'has-error'),
48597 style: this.props.indentStyle || {} },
48598 _react2.default.createElement(
48599 'span',
48600 { className: 'input-group-addon' },
48601 _react2.default.createElement('i', { className: this.props.iconClass })
48602 ),
48603 _react2.default.createElement('input', { autoFocus: this.props.autoFocus,
48604 className: 'form-control',
48605 disabled: this.props.disabled ? true : undefined,
48606 name: this.props.name,
48607 onBlur: this.props.value !== '' ? this.props.onBlur : null,
48608 onChange: this.props.onInputChange,
48609 onKeyUp: this.checkEnter,
48610 placeholder: this.props.hint,
48611 readOnly: this.props.readOnly,
48612 required: 'required',
48613 type: this.props.textType || "text",
48614 value: this.props.value }),
48615 _react2.default.createElement('br', null)
48616 ),
48617 this.props.valid ? null : _react2.default.createElement(
48618 'div',
48619 { className: 'row' },
48620 _react2.default.createElement(
48621 'div',
48622 { className: 'col-sm-12', style: _style.LoginField.invalidMessage.column },
48623 _react2.default.createElement(
48624 'span',
48625 { style: _style.LoginField.invalidMessage.text },
48626 this.props.invalidMessage
48627 )
48628 )
48629 ),
48630 _react2.default.createElement('br', null)
48631 );
48632 }
48633 }]);
48634
48635 return LoginField;
48636 }(_react.Component);
48637
48638 exports.default = LoginField;
48639
48640
48641 LoginField.propTypes = {
48642 autoFocus: _react.PropTypes.bool,
48643 disabled: _react.PropTypes.bool,
48644 hint: _react.PropTypes.string,
48645 iconClass: _react.PropTypes.string.isRequired,
48646 indentStyle: _react.PropTypes.object,
48647 invalidMessage: _react.PropTypes.string,
48648 name: _react.PropTypes.string,
48649 onBlur: _react.PropTypes.func,
48650 onEnter: _react.PropTypes.func,
48651 onInputChange: _react.PropTypes.func,
48652 readOnly: _react.PropTypes.bool,
48653 valid: _react.PropTypes.bool,
48654 value: _react.PropTypes.string
48655 };
48656
48657/***/ },
48658/* 598 */
48659/***/ function(module, exports) {
48660
48661 "use strict";
48662
48663 Object.defineProperty(exports, "__esModule", {
48664 value: true
48665 });
48666 /**
48667 * File to hold all inline styles by module name
48668 * @author patrickkerrypei / https://github.com/patrickkerrypei
48669 */
48670
48671 var AuthorizationWidget = exports.AuthorizationWidget = {
48672 selectableButtonGroup: {
48673 paddingTop: "30px",
48674 textAlign: "center"
48675 },
48676 submitButtonGroup: {
48677 float: "right",
48678 paddingRight: "15px"
48679 }
48680 };
48681
48682 var ColorMenu = exports.ColorMenu = {
48683 colorMenu: {
48684 paddingLeft: "10%"
48685 },
48686 dropdownMenu: {
48687 width: "150px"
48688 },
48689 menuHeader: {
48690 paddingTop: "-6px",
48691 paddingRight: "13px",
48692 paddingBottom: "-6px",
48693 paddingLeft: "20px"
48694 }
48695 };
48696
48697 var ProfileImage = exports.ProfileImage = {
48698 borderRadius: "25%"
48699 };
48700
48701 var DataTable = exports.DataTable = {
48702 noEntriesLabel: {
48703 textAlign: "center"
48704 },
48705 paginationButtons: {
48706 column: {
48707 textAlign: "center"
48708 },
48709 buttons: {
48710 WebkitUserSelect: "none",
48711 KhtmlUserSelect: "none",
48712 MozUserSelect: "none",
48713 MsUserSelect: "none",
48714 OUserSelect: "none",
48715 userSelect: "none",
48716 outlineStyle: "none",
48717 WebkitTapHighlightColor: "transparent"
48718 }
48719 },
48720 selectDropdown: {
48721 column: {
48722 textAlign: "right"
48723 },
48724 label: {
48725 fontWeight: "normal"
48726 },
48727 options: {
48728 padding: "5px 1px"
48729 }
48730 },
48731 showString: {
48732 fontWeight: "normal",
48733 lineHeight: "2.4"
48734 }
48735 };
48736
48737 var Unselectable = exports.Unselectable = {
48738 WebkitUserSelect: "none",
48739 KhtmlUserSelect: "none",
48740 MozUserSelect: "none",
48741 MsUserSelect: "none",
48742 OUserSelect: "none",
48743 userSelect: "none",
48744 outlineStyle: "none",
48745 WebkitTapHighlightColor: "transparent"
48746 };
48747
48748 var DataTablePagination = exports.DataTablePagination = {
48749 unselectable: {
48750 WebkitUserSelect: "none",
48751 KhtmlUserSelect: "none",
48752 MozUserSelect: "none",
48753 MsUserSelect: "none",
48754 OUserSelect: "none",
48755 userSelect: "none",
48756 outlineStyle: "none",
48757 WebkitTapHighlightColor: "transparent"
48758 }
48759 };
48760
48761 var Footer = exports.Footer = {
48762 mainFooter: {
48763 fontSize: "12px",
48764 marginBottom: "1px",
48765 padding: "0px"
48766 },
48767 footerLeft: {
48768 paddingLeft: "10px"
48769 },
48770 footerRight: {
48771 paddingRight: "10px"
48772 }
48773 };
48774
48775 var Header = exports.Header = {
48776 breadCrumb: {
48777 position: "absolute",
48778 boxSizing: "border-box",
48779 padding: "15px 15px",
48780 listStyleType: "none",
48781 display: "inline"
48782 },
48783 breadCrumbIcon: {
48784 fontSize: "20px"
48785 },
48786 breadCrumbListItem: {
48787 display: "inline",
48788 color: "white"
48789 },
48790 breadCrumbLink: {
48791 color: "white",
48792 cursor: "pointer",
48793 display: "inline",
48794 fontSize: "13px",
48795 textDecoration: "none"
48796 }
48797 };
48798
48799 var HomePage = exports.HomePage = {
48800 profileBox: {
48801 paddingLeft: "10%",
48802 paddingRight: "10%"
48803 },
48804 widgetBox: {
48805 color: "white"
48806 }
48807 };
48808
48809 var LoginField = exports.LoginField = {
48810 invalidMessage: {
48811 column: {
48812 textAlign: "center"
48813 },
48814 text: {
48815 color: "red",
48816 textAlign: "center"
48817 }
48818 }
48819 };
48820
48821 var LoginForm = exports.LoginForm = {
48822 invalidLogin: {
48823 column: {
48824 textAlign: "center"
48825 },
48826 text: {
48827 color: "red",
48828 textAlign: "center"
48829 }
48830 }
48831 };
48832
48833 var Multiselect = exports.Multiselect = {
48834 marginBottom: "10px"
48835 };
48836
48837 var AdminBadge = exports.AdminBadge = {
48838 isAdmin: {
48839 color: "green",
48840 cursor: "pointer"
48841 },
48842 isNotAdmin: {
48843 color: "red",
48844 cursor: "pointer"
48845 }
48846 };
48847
48848 var OrganizationsPage = exports.OrganizationsPage = {
48849 modalDialog: {
48850 position: "absolute",
48851 top: "15%",
48852 left: "40%"
48853 }
48854 };
48855
48856 var OrganizationsTable = exports.OrganizationsTable = {
48857 createOrganizationModal: {
48858 paddingTop: "50%",
48859 marginTop: "50%"
48860 },
48861 modalDialogTextField: {
48862 marginLeft: "15px",
48863 paddingRight: "15px"
48864 }
48865 };
48866
48867 var ProfileBox = exports.ProfileBox = {
48868 profileBoxBorder: {
48869 padding: "10px 10px",
48870 marginLeft: "25%",
48871 width: "50%"
48872 },
48873 updateButton: {
48874 float: "right"
48875 },
48876 deleteButton: {
48877 float: "left",
48878 tabindex: "-1"
48879 },
48880 infoTitle: {
48881 fontSize: "12px",
48882 fontWeight: "700",
48883 color: "#959595",
48884 letterSpacing: '1px'
48885 },
48886 preTextArea: {
48887 maxHeight: "200px"
48888 },
48889 textArea: {
48890 width: "100%",
48891 height: "200px",
48892 fontFamily: "monospace",
48893 fontSize: "12px",
48894 resize: "vertical"
48895 }
48896 };
48897
48898 var ProfilePage = exports.ProfilePage = {
48899 profileBox: {
48900 paddingLeft: "10%",
48901 paddingRight: "10%"
48902 }
48903 };
48904
48905 var ProjectPage = exports.ProjectPage = {
48906 titleBox: {
48907 paddingTop: "6px"
48908 },
48909 titleContainer: {
48910 marginBottom: "10px"
48911 },
48912 projectTitle: {
48913 marginLeft: "10px",
48914 display: "inline",
48915 fontSize: "28px",
48916 fontWeight: "500"
48917 },
48918 viewInEditor: {
48919 button: {
48920 marginRight: "10px",
48921 marginTop: "3px"
48922 },
48923 column: {
48924 paddingRight: "30px",
48925 paddingTop: "14px"
48926 }
48927 }
48928 };
48929
48930 var RegisterForm = exports.RegisterForm = {
48931 linkToLogin: {
48932 column: {
48933 paddingTop: "10px"
48934 }
48935 },
48936 registrationNotAllowed: {
48937 color: "red",
48938 fontSize: "15px",
48939 paddingBottom: "10px",
48940 textAlign: "center"
48941 },
48942 registerButton: {
48943 float: "right",
48944 marginTop: "5px"
48945 }
48946 };
48947
48948 var SideBarMenu = exports.SideBarMenu = {
48949 sidebarCategoryStyle: {
48950 lineHeight: "30px",
48951 fontFamily: "\"Helvetica Neue\", Roboto, Arial, \"Droid Sans\", sans-serif",
48952 color: "#E7E7E7"
48953 }
48954 };
48955
48956 var SideBarUserPanel = exports.SideBarUserPanel = {
48957 status: {
48958 color: "#BAB8B8",
48959 fontSize: "13px",
48960 lineHeight: "15px",
48961 paddingLeft: "23px"
48962 },
48963 name: {
48964 color: "#ECF0F1",
48965 fontSize: "14px",
48966 fontWeight: "light",
48967 paddingLeft: "20px",
48968 paddingTop: "5px"
48969 },
48970 panel: {
48971 padding: "15px"
48972 },
48973 imageIcon: {
48974 borderRadius: 0,
48975 maxWidth: "50px",
48976 paddingLeft: "7px",
48977 paddingTop: "5px"
48978 }
48979 };
48980
48981 var UserMenu = exports.UserMenu = {
48982 logoutButtonPadding: {
48983 padding: "9px 100px"
48984 },
48985 logoutButtonBorder: {
48986 borderColor: "#777777"
48987 },
48988 logoutAreaBorder: {
48989 padding: "2px"
48990 },
48991 userHeader: {
48992 height: "145px"
48993 }
48994 };
48995
48996/***/ },
48997/* 599 */
48998/***/ function(module, exports, __webpack_require__) {
48999
49000 'use strict';
49001
49002 Object.defineProperty(exports, "__esModule", {
49003 value: true
49004 });
49005
49006 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
49007
49008 var _react = __webpack_require__(89);
49009
49010 var _react2 = _interopRequireDefault(_react);
49011
49012 var _reactRouter = __webpack_require__(260);
49013
49014 var _RegisterForm = __webpack_require__(600);
49015
49016 var _RegisterForm2 = _interopRequireDefault(_RegisterForm);
49017
49018 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
49019
49020 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
49021
49022 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
49023
49024 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* global window */
49025
49026 /**
49027 * @author pmeijer / https://github.com/pmeijer
49028 */
49029
49030 // Libraries
49031
49032
49033 // Self-defined
49034
49035
49036 var RegisterPage = function (_Component) {
49037 _inherits(RegisterPage, _Component);
49038
49039 function RegisterPage(props) {
49040 _classCallCheck(this, RegisterPage);
49041
49042 var _this = _possibleConstructorReturn(this, (RegisterPage.__proto__ || Object.getPrototypeOf(RegisterPage)).call(this, props));
49043
49044 _this.state = {
49045 allowUserCreation: false
49046 };
49047 _this.registerUser = _this.registerUser.bind(_this);
49048 return _this;
49049 }
49050
49051 _createClass(RegisterPage, [{
49052 key: 'componentDidMount',
49053 value: function componentDidMount() {
49054 var _this2 = this;
49055
49056 this.props.loginClient.getGmeConfig().then(function (gmeConfig) {
49057 _this2.setState({
49058 allowUserCreation: gmeConfig.authentication.allowUserRegistration
49059 });
49060 });
49061 }
49062 }, {
49063 key: 'registerUser',
49064 value: function registerUser(userId, password, email) {
49065 var _this3 = this;
49066
49067 return this.props.loginClient.register(userId, password, email).then(function () {
49068 _this3.props.loginClient.login(userId, password).then(function () {
49069 _reactRouter.browserHistory.push(_this3.props.basePath);
49070 window.location.reload();
49071 });
49072 }).catch(function (err) {
49073 return err.status || 500;
49074 });
49075 }
49076 }, {
49077 key: 'render',
49078 value: function render() {
49079
49080 return _react2.default.createElement(_RegisterForm2.default, { onNewUser: this.registerUser,
49081 backLinkData: {
49082 title: 'I already have an account',
49083 path: this.props.basePath + 'login'
49084 },
49085 title: 'Register a new membership',
49086 allowUserCreation: this.state.allowUserCreation });
49087 }
49088 }]);
49089
49090 return RegisterPage;
49091 }(_react.Component);
49092
49093 exports.default = RegisterPage;
49094
49095
49096 RegisterPage.propTypes = {
49097 basePath: _react.PropTypes.string,
49098 loginClient: _react.PropTypes.object
49099 };
49100
49101/***/ },
49102/* 600 */
49103/***/ function(module, exports, __webpack_require__) {
49104
49105 'use strict';
49106
49107 Object.defineProperty(exports, "__esModule", {
49108 value: true
49109 });
49110
49111 var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
49112
49113 var _react = __webpack_require__(89);
49114
49115 var _react2 = _interopRequireDefault(_react);
49116
49117 var _reactBootstrap = __webpack_require__(334);
49118
49119 var _reactRouter = __webpack_require__(260);
49120
49121 var _LoginField = __webpack_require__(597);
49122
49123 var _LoginField2 = _interopRequireDefault(_LoginField);
49124
49125 var _loginUtils = __webpack_require__(601);
49126
49127 var _style = __webpack_require__(598);
49128
49129 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
49130
49131 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
49132
49133 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
49134
49135 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
49136 * @author pmeijer / https://github.com/pmeijer
49137 * @author patrickkerrypei / https://github.com/patrickkerrypei
49138 */
49139
49140 // Libraries
49141
49142 // Self-defined
49143
49144 // Style
49145
49146
49147 var RegisterForm = function (_Component) {
49148 _inherits(RegisterForm, _Component);
49149
49150 function RegisterForm(props) {
49151 _classCallCheck(this, RegisterForm);
49152
49153 var _this = _possibleConstructorReturn(this, (RegisterForm.__proto__ || Object.getPrototypeOf(RegisterForm)).call(this, props));
49154
49155 _this.state = {
49156 creating: false,
49157 // agreeToTerms: false,
49158 confirmPassword: '',
49159 email: '',
49160 // State so a different message for duplicate userId can be shown
49161 invalidMessage: {
49162 confirmPassword: "Passwords must match",
49163 email: "Invalid email",
49164 password: "Password must be at least 3 characters long and must not be " + "a poor password such as 'password'",
49165 userId: "Username must only contain letters, numbers, and the underscore" + " and must be at least 3 characters long"
49166 },
49167 password: '',
49168 userId: '',
49169 validCredentials: {
49170 // agreeToTerms: true,
49171 confirmPassword: true,
49172 email: true,
49173 password: true,
49174 userId: true
49175 }
49176 };
49177
49178 // Event handlers
49179 _this.checkAllFields = _this.checkAllFields.bind(_this);
49180 _this.checkConfirmPassword = _this.checkConfirmPassword.bind(_this);
49181 _this.checkEmail = _this.checkEmail.bind(_this);
49182 _this.checkPassword = _this.checkPassword.bind(_this);
49183 _this.checkUserId = _this.checkUserId.bind(_this);
49184 _this.onAgreeToTermsChange = _this.onAgreeToTermsChange.bind(_this);
49185 _this.onConfirmPasswordChange = _this.onConfirmPasswordChange.bind(_this);
49186 _this.onEmailChange = _this.onEmailChange.bind(_this);
49187 _this.onPasswordChange = _this.onPasswordChange.bind(_this);
49188 _this.onRegister = _this.onRegister.bind(_this);
49189 _this.atFailedNewUser = _this.atFailedNewUser.bind(_this);
49190 _this.onUserIdChange = _this.onUserIdChange.bind(_this);
49191 return _this;
49192 }
49193
49194 _createClass(RegisterForm, [{
49195 key: 'componentDidMount',
49196 value: function componentDidMount() {}
49197 }, {
49198 key: 'checkAllFields',
49199 value: function checkAllFields() {
49200 this.setState({
49201 validCredentials: {
49202 // agreeToTerms: this.state.agreeToTerms,
49203 confirmPassword: this.state.password === this.state.confirmPassword,
49204 email: (0, _loginUtils.verifyEmail)(this.state.email),
49205 password: (0, _loginUtils.verifyPassword)(this.state.password),
49206 userId: (0, _loginUtils.verifyUserOrOrganizationId)(this.state.userId)
49207 }
49208 });
49209 }
49210 }, {
49211 key: 'checkConfirmPassword',
49212 value: function checkConfirmPassword() {
49213 this.setState({
49214 validCredentials: {
49215 // agreeToTerms: this.state.agreeToTerms,
49216 confirmPassword: this.state.password === this.state.confirmPassword,
49217 email: this.state.validCredentials.email,
49218 password: this.state.validCredentials.password,
49219 userId: this.state.validCredentials.userId
49220 }
49221 });
49222 }
49223 }, {
49224 key: 'checkEmail',
49225 value: function checkEmail() {
49226 this.setState({
49227 validCredentials: {
49228 // agreeToTerms: this.state.validCredentials.agreeToTerms,
49229 confirmPassword: this.state.validCredentials.confirmPassword,
49230 email: (0, _loginUtils.verifyEmail)(this.state.email),
49231 password: this.state.validCredentials.password,
49232 userId: this.state.validCredentials.userId
49233 }
49234 });
49235 }
49236 }, {
49237 key: 'checkPassword',
49238 value: function checkPassword() {
49239 this.setState({
49240 validCredentials: {
49241 // agreeToTerms: this.state.validCredentials.agreeToTerms,
49242 confirmPassword: this.state.validCredentials.confirmPassword,
49243 email: this.state.validCredentials.email,
49244 password: (0, _loginUtils.verifyPassword)(this.state.password),
49245 userId: this.state.validCredentials.userId
49246 }
49247 });
49248 }
49249 }, {
49250 key: 'checkUserId',
49251 value: function checkUserId() {
49252 this.setState({
49253 validCredentials: {
49254 // agreeToTerms: this.state.validCredentials.agreeToTerms,
49255 confirmPassword: this.state.validCredentials.confirmPassword,
49256 email: this.state.validCredentials.email,
49257 password: this.state.validCredentials.password,
49258 userId: (0, _loginUtils.verifyUserOrOrganizationId)(this.state.userId)
49259 }
49260 });
49261 }
49262 }, {
49263 key: 'onAgreeToTermsChange',
49264 value: function onAgreeToTermsChange() {
49265 this.setState({
49266 agreeToTerms: !this.state.agreeToTerms
49267 });
49268 }
49269 }, {
49270 key: 'onConfirmPasswordChange',
49271 value: function onConfirmPasswordChange(event) {
49272 this.setState({
49273 confirmPassword: event.target.value
49274 });
49275 }
49276 }, {
49277 key: 'onEmailChange',
49278 value: function onEmailChange(event) {
49279 this.setState({
49280 email: event.target.value
49281 });
49282 }
49283 }, {
49284 key: 'onPasswordChange',
49285 value: function onPasswordChange(event) {
49286 this.setState({
49287 password: event.target.value
49288 });
49289 }
49290 }, {
49291 key: 'onRegister',
49292 value: function onRegister() {
49293 var _this2 = this;
49294
49295 var allValid = true;
49296
49297 this.checkAllFields();
49298
49299 Object.keys(this.state.validCredentials).forEach(function (key) {
49300 if (!_this2.state.validCredentials[key]) {
49301 allValid = false;
49302 }
49303 });
49304
49305 if (allValid) {
49306 this.setState({
49307 creating: true
49308 });
49309
49310 this.props.onNewUser(this.state.userId, this.state.password, this.state.email).then(function (status) {
49311 if (typeof status === 'number') {
49312 _this2.atFailedNewUser(status);
49313 }
49314 });
49315 } else {
49316 // Reset fields
49317 this.setState({
49318 // agreeToTerms: false,
49319 confirmPassword: '',
49320 email: this.state.validCredentials.email ? this.state.email : '',
49321 password: '',
49322 userId: this.state.validCredentials.userId ? this.state.userId : ''
49323 });
49324 }
49325 }
49326 }, {
49327 key: 'atFailedNewUser',
49328 value: function atFailedNewUser(status) {
49329 this.setState({
49330 creating: false
49331 });
49332
49333 if (status === 400) {
49334 // Immutability add-ons aren't worth installing for this one case
49335 this.setState({
49336 invalidMessage: {
49337 confirmPassword: "Passwords must match",
49338 email: "Invalid email",
49339 password: "Password must be at least 3 characters long and must not be " + "a poor password such as 'password'",
49340 userId: "Username already taken"
49341 },
49342 validCredentials: {
49343 confirmPassword: this.state.password === this.state.confirmPassword,
49344 email: this.state.validCredentials.email,
49345 password: this.state.validCredentials.password,
49346 userId: false
49347 }
49348 });
49349 } else {
49350 console.error('???');
49351 }
49352 }
49353 }, {
49354 key: 'onUserIdChange',
49355 value: function onUserIdChange(event) {
49356 this.setState({
49357 userId: event.target.value
49358 });
49359 }
49360 }, {
49361 key: 'render',
49362 value: function render() {
49363 var _this3 = this;
49364
49365 var validAndNotEmpty = Object.keys(this.state.validCredentials).reduce(function (previousValue, currentValue /* , currentIndex, array */) {
49366 return previousValue && _this3.state.validCredentials[currentValue] && _this3.state[currentValue] !== '';
49367 }, true),
49368 titleMessage = this.props.allowUserCreation ? this.props.title : 'User Creation Not Permitted';
49369
49370 return _react2.default.createElement(
49371 'div',
49372 { className: 'register-box-body' },
49373 titleMessage ? _react2.default.createElement(
49374 'p',
49375 { className: 'login-box-msg' },
49376 titleMessage
49377 ) : null,
49378 _react2.default.createElement(
49379 'form',
49380 null,
49381 _react2.default.createElement(_LoginField2.default, { autoFocus: true,
49382 hint: 'User ID',
49383 iconClass: 'glyphicon glyphicon-user',
49384 disabled: !this.props.allowUserCreation,
49385 invalidMessage: this.state.invalidMessage.userId,
49386 onBlur: this.checkUserId,
49387 onInputChange: this.onUserIdChange,
49388 valid: this.state.validCredentials.userId,
49389 value: this.state.userId }),
49390 _react2.default.createElement(_LoginField2.default, { hint: 'Email',
49391 iconClass: 'glyphicon glyphicon-envelope',
49392 disabled: !this.props.allowUserCreation,
49393 invalidMessage: this.state.invalidMessage.email,
49394 onBlur: this.checkEmail,
49395 onInputChange: this.onEmailChange,
49396 valid: this.state.validCredentials.email,
49397 value: this.state.email }),
49398 _react2.default.createElement(_LoginField2.default, { hint: 'Password',
49399 iconClass: 'glyphicon glyphicon-lock',
49400 disabled: !this.props.allowUserCreation,
49401 invalidMessage: this.state.invalidMessage.password,
49402 onBlur: this.checkPassword,
49403 onInputChange: this.onPasswordChange,
49404 textType: 'password',
49405 valid: this.state.validCredentials.password,
49406 value: this.state.password }),
49407 _react2.default.createElement(_LoginField2.default, { hint: 'Confirm password',
49408 iconClass: 'glyphicon glyphicon-log-in',
49409 disabled: !this.props.allowUserCreation,
49410 invalidMessage: this.state.invalidMessage.confirmPassword,
49411 onBlur: this.checkConfirmPassword,
49412 onEnter: this.onRegister,
49413 onInputChange: this.onConfirmPasswordChange,
49414 textType: 'password',
49415 valid: this.state.validCredentials.confirmPassword,
49416 value: this.state.confirmPassword }),
49417 _react2.default.createElement(
49418 'div',
49419 { className: 'row' },
49420 _react2.default.createElement(
49421 'div',
49422 { className: 'col-sm-8', style: _style.RegisterForm.linkToLogin.column },
49423 _react2.default.createElement(
49424 _reactRouter.Link,
49425 { to: this.props.backLinkData.path },
49426 this.props.backLinkData.title
49427 )
49428 ),
49429 _react2.default.createElement(
49430 'div',
49431 { className: 'col-sm-4' },
49432 this.props.allowUserCreation && this.state.creating === false ? _react2.default.createElement(
49433 _reactBootstrap.Button,
49434 { bsStyle: 'primary',
49435 disabled: !validAndNotEmpty,
49436 onClick: this.onRegister,
49437 style: _style.RegisterForm.registerButton },
49438 'Submit'
49439 ) : null
49440 )
49441 )
49442 )
49443 );
49444 }
49445 }]);
49446
49447 return RegisterForm;
49448 }(_react.Component);
49449
49450 exports.default = RegisterForm;
49451
49452
49453 RegisterForm.propTypes = {
49454 allowUserCreation: _react.PropTypes.bool,
49455 title: _react.PropTypes.string,
49456 backLinkData: _react.PropTypes.shape({
49457 title: _react2.default.PropTypes.string.isRequired,
49458 path: _react2.default.PropTypes.string.isRequired
49459 }),
49460 onNewUser: _react.PropTypes.func.isRequired
49461 };
49462
49463/***/ },
49464/* 601 */
49465/***/ function(module, exports) {
49466
49467 'use strict';
49468
49469 Object.defineProperty(exports, "__esModule", {
49470 value: true
49471 });
49472 exports.verifyEmail = verifyEmail;
49473 exports.verifyPassword = verifyPassword;
49474 exports.verifyUserOrOrganizationId = verifyUserOrOrganizationId;
49475 /**
49476 * Login/Register pages' utility functions
49477 * @author patrickkerrypei / https://github.com/patrickkerrypei
49478 */
49479
49480 /**
49481 * Verifies whether an email is allowed (check in Register page)
49482 * @param {string} email - email to be checked
49483 * @return {boolean} - T/F valid email
49484 */
49485 function verifyEmail(email) {
49486 return true;
49487 // return email.length >= 3 &&
49488 // /^\S+@\S+\.\S+$/.test(email);
49489 }
49490
49491 /**
49492 * Verifies whether a password is allowed (check in Register page)
49493 * @param {string} password - password to be checked
49494 * @return {boolean} - T/F valid password
49495 */
49496 function verifyPassword(password) {
49497 var badPasswords = ['password', '123'];
49498 return password.length >= 3 && badPasswords.indexOf(password) === -1;
49499 }
49500
49501 /**
49502 * Verifies whether a userId is allowed (check in Register page)
49503 * @param {string} userId - userId to be checked
49504 * @return {boolean} - T/F valid userId
49505 */
49506 function verifyUserOrOrganizationId(userId) {
49507 return userId.length >= 3 && /^[A-Za-z0-9_]+$/.test(userId);
49508 // TODO: share the same reference to the check in webgme
49509 }
49510
49511/***/ },
49512/* 602 */
49513/***/ function(module, exports, __webpack_require__) {
49514
49515 __webpack_require__(603);
49516 __webpack_require__(612);
49517
49518
49519/***/ },
49520/* 603 */
49521/***/ function(module, exports, __webpack_require__) {
49522
49523 // style-loader: Adds some css to the DOM by adding a <style> tag
49524
49525 // load the styles
49526 var content = __webpack_require__(604);
49527 if(typeof content === 'string') content = [[module.id, content, '']];
49528 // add the styles to the DOM
49529 var update = __webpack_require__(611)(content, {});
49530 if(content.locals) module.exports = content.locals;
49531 // Hot Module Replacement
49532 if(false) {
49533 // When the styles change, update the <style> tags
49534 if(!content.locals) {
49535 module.hot.accept("!!./../css-loader/index.js!./../less-loader/index.js!./bootstrap-styles.loader.js!./bootstrap.config.js", function() {
49536 var newContent = require("!!./../css-loader/index.js!./../less-loader/index.js!./bootstrap-styles.loader.js!./bootstrap.config.js");
49537 if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
49538 update(newContent);
49539 });
49540 }
49541 // When the module is disposed, remove the <style> tags
49542 module.hot.dispose(function() { update(); });
49543 }
49544
49545/***/ },
49546/* 604 */
49547/***/ function(module, exports, __webpack_require__) {
49548
49549 exports = module.exports = __webpack_require__(605)();
49550 // imports
49551
49552
49553 // module
49554 exports.push([module.id, "/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url(" + __webpack_require__(606) + ");\n src: url(" + __webpack_require__(606) + "?#iefix) format('embedded-opentype'), url(" + __webpack_require__(607) + ") format('woff2'), url(" + __webpack_require__(608) + ") format('woff'), url(" + __webpack_require__(609) + ") format('truetype'), url(" + __webpack_require__(610) + "#glyphicons_halflingsregular) format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"*\";\n}\n.glyphicon-plus:before {\n content: \"+\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20AC\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270F\";\n}\n.glyphicon-glass:before {\n content: \"\\E001\";\n}\n.glyphicon-music:before {\n content: \"\\E002\";\n}\n.glyphicon-search:before {\n content: \"\\E003\";\n}\n.glyphicon-heart:before {\n content: \"\\E005\";\n}\n.glyphicon-star:before {\n content: \"\\E006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\E007\";\n}\n.glyphicon-user:before {\n content: \"\\E008\";\n}\n.glyphicon-film:before {\n content: \"\\E009\";\n}\n.glyphicon-th-large:before {\n content: \"\\E010\";\n}\n.glyphicon-th:before {\n content: \"\\E011\";\n}\n.glyphicon-th-list:before {\n content: \"\\E012\";\n}\n.glyphicon-ok:before {\n content: \"\\E013\";\n}\n.glyphicon-remove:before {\n content: \"\\E014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\E015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\E016\";\n}\n.glyphicon-off:before {\n content: \"\\E017\";\n}\n.glyphicon-signal:before {\n content: \"\\E018\";\n}\n.glyphicon-cog:before {\n content: \"\\E019\";\n}\n.glyphicon-trash:before {\n content: \"\\E020\";\n}\n.glyphicon-home:before {\n content: \"\\E021\";\n}\n.glyphicon-file:before {\n content: \"\\E022\";\n}\n.glyphicon-time:before {\n content: \"\\E023\";\n}\n.glyphicon-road:before {\n content: \"\\E024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\E025\";\n}\n.glyphicon-download:before {\n content: \"\\E026\";\n}\n.glyphicon-upload:before {\n content: \"\\E027\";\n}\n.glyphicon-inbox:before {\n content: \"\\E028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\E029\";\n}\n.glyphicon-repeat:before {\n content: \"\\E030\";\n}\n.glyphicon-refresh:before {\n content: \"\\E031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\E032\";\n}\n.glyphicon-lock:before {\n content: \"\\E033\";\n}\n.glyphicon-flag:before {\n content: \"\\E034\";\n}\n.glyphicon-headphones:before {\n content: \"\\E035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\E036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\E037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\E038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\E039\";\n}\n.glyphicon-barcode:before {\n content: \"\\E040\";\n}\n.glyphicon-tag:before {\n content: \"\\E041\";\n}\n.glyphicon-tags:before {\n content: \"\\E042\";\n}\n.glyphicon-book:before {\n content: \"\\E043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\E044\";\n}\n.glyphicon-print:before {\n content: \"\\E045\";\n}\n.glyphicon-camera:before {\n content: \"\\E046\";\n}\n.glyphicon-font:before {\n content: \"\\E047\";\n}\n.glyphicon-bold:before {\n content: \"\\E048\";\n}\n.glyphicon-italic:before {\n content: \"\\E049\";\n}\n.glyphicon-text-height:before {\n content: \"\\E050\";\n}\n.glyphicon-text-width:before {\n content: \"\\E051\";\n}\n.glyphicon-align-left:before {\n content: \"\\E052\";\n}\n.glyphicon-align-center:before {\n content: \"\\E053\";\n}\n.glyphicon-align-right:before {\n content: \"\\E054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\E055\";\n}\n.glyphicon-list:before {\n content: \"\\E056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\E057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\E058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\E059\";\n}\n.glyphicon-picture:before {\n content: \"\\E060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\E062\";\n}\n.glyphicon-adjust:before {\n content: \"\\E063\";\n}\n.glyphicon-tint:before {\n content: \"\\E064\";\n}\n.glyphicon-edit:before {\n content: \"\\E065\";\n}\n.glyphicon-share:before {\n content: \"\\E066\";\n}\n.glyphicon-check:before {\n content: \"\\E067\";\n}\n.glyphicon-move:before {\n content: \"\\E068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\E069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\E070\";\n}\n.glyphicon-backward:before {\n content: \"\\E071\";\n}\n.glyphicon-play:before {\n content: \"\\E072\";\n}\n.glyphicon-pause:before {\n content: \"\\E073\";\n}\n.glyphicon-stop:before {\n content: \"\\E074\";\n}\n.glyphicon-forward:before {\n content: \"\\E075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\E076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\E077\";\n}\n.glyphicon-eject:before {\n content: \"\\E078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\E079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\E080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\E081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\E082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\E083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\E084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\E085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\E086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\E087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\E088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\E089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\E090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\E091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\E092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\E093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\E094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\E095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\E096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\E097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\E101\";\n}\n.glyphicon-gift:before {\n content: \"\\E102\";\n}\n.glyphicon-leaf:before {\n content: \"\\E103\";\n}\n.glyphicon-fire:before {\n content: \"\\E104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\E105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\E106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\E107\";\n}\n.glyphicon-plane:before {\n content: \"\\E108\";\n}\n.glyphicon-calendar:before {\n content: \"\\E109\";\n}\n.glyphicon-random:before {\n content: \"\\E110\";\n}\n.glyphicon-comment:before {\n content: \"\\E111\";\n}\n.glyphicon-magnet:before {\n content: \"\\E112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\E113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\E114\";\n}\n.glyphicon-retweet:before {\n content: \"\\E115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\E116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\E117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\E118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\E119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\E120\";\n}\n.glyphicon-hdd:before {\n content: \"\\E121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\E122\";\n}\n.glyphicon-bell:before {\n content: \"\\E123\";\n}\n.glyphicon-certificate:before {\n content: \"\\E124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\E125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\E126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\E127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\E128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\E129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\E130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\E131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\E132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\E133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\E134\";\n}\n.glyphicon-globe:before {\n content: \"\\E135\";\n}\n.glyphicon-wrench:before {\n content: \"\\E136\";\n}\n.glyphicon-tasks:before {\n content: \"\\E137\";\n}\n.glyphicon-filter:before {\n content: \"\\E138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\E139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\E140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\E141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\E142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\E143\";\n}\n.glyphicon-link:before {\n content: \"\\E144\";\n}\n.glyphicon-phone:before {\n content: \"\\E145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\E146\";\n}\n.glyphicon-usd:before {\n content: \"\\E148\";\n}\n.glyphicon-gbp:before {\n content: \"\\E149\";\n}\n.glyphicon-sort:before {\n content: \"\\E150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\E151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\E152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\E153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\E154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\E155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\E156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\E157\";\n}\n.glyphicon-expand:before {\n content: \"\\E158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\E159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\E160\";\n}\n.glyphicon-log-in:before {\n content: \"\\E161\";\n}\n.glyphicon-flash:before {\n content: \"\\E162\";\n}\n.glyphicon-log-out:before {\n content: \"\\E163\";\n}\n.glyphicon-new-window:before {\n content: \"\\E164\";\n}\n.glyphicon-record:before {\n content: \"\\E165\";\n}\n.glyphicon-save:before {\n content: \"\\E166\";\n}\n.glyphicon-open:before {\n content: \"\\E167\";\n}\n.glyphicon-saved:before {\n content: \"\\E168\";\n}\n.glyphicon-import:before {\n content: \"\\E169\";\n}\n.glyphicon-export:before {\n content: \"\\E170\";\n}\n.glyphicon-send:before {\n content: \"\\E171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\E172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\E173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\E174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\E175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\E176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\E177\";\n}\n.glyphicon-transfer:before {\n content: \"\\E178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\E179\";\n}\n.glyphicon-header:before {\n content: \"\\E180\";\n}\n.glyphicon-compressed:before {\n content: \"\\E181\";\n}\n.glyphicon-earphone:before {\n content: \"\\E182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\E183\";\n}\n.glyphicon-tower:before {\n content: \"\\E184\";\n}\n.glyphicon-stats:before {\n content: \"\\E185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\E186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\E187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\E188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\E189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\E190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\E191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\E192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\E193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\E194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\E195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\E197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\E198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\E199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\E200\";\n}\n.glyphicon-cd:before {\n content: \"\\E201\";\n}\n.glyphicon-save-file:before {\n content: \"\\E202\";\n}\n.glyphicon-open-file:before {\n content: \"\\E203\";\n}\n.glyphicon-level-up:before {\n content: \"\\E204\";\n}\n.glyphicon-copy:before {\n content: \"\\E205\";\n}\n.glyphicon-paste:before {\n content: \"\\E206\";\n}\n.glyphicon-alert:before {\n content: \"\\E209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\E210\";\n}\n.glyphicon-king:before {\n content: \"\\E211\";\n}\n.glyphicon-queen:before {\n content: \"\\E212\";\n}\n.glyphicon-pawn:before {\n content: \"\\E213\";\n}\n.glyphicon-bishop:before {\n content: \"\\E214\";\n}\n.glyphicon-knight:before {\n content: \"\\E215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\E216\";\n}\n.glyphicon-tent:before {\n content: \"\\26FA\";\n}\n.glyphicon-blackboard:before {\n content: \"\\E218\";\n}\n.glyphicon-bed:before {\n content: \"\\E219\";\n}\n.glyphicon-apple:before {\n content: \"\\F8FF\";\n}\n.glyphicon-erase:before {\n content: \"\\E221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231B\";\n}\n.glyphicon-lamp:before {\n content: \"\\E223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\E224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\E225\";\n}\n.glyphicon-scissors:before {\n content: \"\\E226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\E227\";\n}\n.glyphicon-btc:before {\n content: \"\\E227\";\n}\n.glyphicon-xbt:before {\n content: \"\\E227\";\n}\n.glyphicon-yen:before {\n content: \"\\A5\";\n}\n.glyphicon-jpy:before {\n content: \"\\A5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20BD\";\n}\n.glyphicon-rub:before {\n content: \"\\20BD\";\n}\n.glyphicon-scale:before {\n content: \"\\E230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\E231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\E232\";\n}\n.glyphicon-education:before {\n content: \"\\E233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\E234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\E235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\E236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\E237\";\n}\n.glyphicon-oil:before {\n content: \"\\E238\";\n}\n.glyphicon-grain:before {\n content: \"\\E239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\E240\";\n}\n.glyphicon-text-size:before {\n content: \"\\E241\";\n}\n.glyphicon-text-color:before {\n content: \"\\E242\";\n}\n.glyphicon-text-background:before {\n content: \"\\E243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\E244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\E245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\E246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\E247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\E248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\E249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\E250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\E251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\E252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\E253\";\n}\n.glyphicon-console:before {\n content: \"\\E254\";\n}\n.glyphicon-superscript:before {\n content: \"\\E255\";\n}\n.glyphicon-subscript:before {\n content: \"\\E256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\E257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\E258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\E259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\E260\";\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\A0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203A';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n", ""]);
49555
49556 // exports
49557
49558
49559/***/ },
49560/* 605 */
49561/***/ function(module, exports) {
49562
49563 /*
49564 MIT License http://www.opensource.org/licenses/mit-license.php
49565 Author Tobias Koppers @sokra
49566 */
49567 // css base code, injected by the css-loader
49568 module.exports = function() {
49569 var list = [];
49570
49571 // return the list of modules as css string
49572 list.toString = function toString() {
49573 var result = [];
49574 for(var i = 0; i < this.length; i++) {
49575 var item = this[i];
49576 if(item[2]) {
49577 result.push("@media " + item[2] + "{" + item[1] + "}");
49578 } else {
49579 result.push(item[1]);
49580 }
49581 }
49582 return result.join("");
49583 };
49584
49585 // import a list of modules into the list
49586 list.i = function(modules, mediaQuery) {
49587 if(typeof modules === "string")
49588 modules = [[null, modules, ""]];
49589 var alreadyImportedModules = {};
49590 for(var i = 0; i < this.length; i++) {
49591 var id = this[i][0];
49592 if(typeof id === "number")
49593 alreadyImportedModules[id] = true;
49594 }
49595 for(i = 0; i < modules.length; i++) {
49596 var item = modules[i];
49597 // skip already imported module
49598 // this implementation is not 100% perfect for weird media query combinations
49599 // when a module is imported multiple times with different media queries.
49600 // I hope this will never occur (Hey this way we have smaller bundles)
49601 if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
49602 if(mediaQuery && !item[2]) {
49603 item[2] = mediaQuery;
49604 } else if(mediaQuery) {
49605 item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
49606 }
49607 list.push(item);
49608 }
49609 }
49610 };
49611 return list;
49612 };
49613
49614
49615/***/ },
49616/* 606 */
49617/***/ function(module, exports, __webpack_require__) {
49618
49619 module.exports = __webpack_require__.p + "f4769f9bdb7466be65088239c12046d1.eot";
49620
49621/***/ },
49622/* 607 */
49623/***/ function(module, exports, __webpack_require__) {
49624
49625 module.exports = __webpack_require__.p + "448c34a56d699c29117adc64c43affeb.woff2";
49626
49627/***/ },
49628/* 608 */
49629/***/ function(module, exports, __webpack_require__) {
49630
49631 module.exports = __webpack_require__.p + "fa2772327f55d8198301fdb8bcfc8158.woff";
49632
49633/***/ },
49634/* 609 */
49635/***/ function(module, exports, __webpack_require__) {
49636
49637 module.exports = __webpack_require__.p + "e18bbf611f2a2e43afc071aa2f4e1512.ttf";
49638
49639/***/ },
49640/* 610 */
49641/***/ function(module, exports, __webpack_require__) {
49642
49643 module.exports = __webpack_require__.p + "89889688147bd7575d6327160d64e760.svg";
49644
49645/***/ },
49646/* 611 */
49647/***/ function(module, exports, __webpack_require__) {
49648
49649 /*
49650 MIT License http://www.opensource.org/licenses/mit-license.php
49651 Author Tobias Koppers @sokra
49652 */
49653 var stylesInDom = {},
49654 memoize = function(fn) {
49655 var memo;
49656 return function () {
49657 if (typeof memo === "undefined") memo = fn.apply(this, arguments);
49658 return memo;
49659 };
49660 },
49661 isOldIE = memoize(function() {
49662 return /msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase());
49663 }),
49664 getHeadElement = memoize(function () {
49665 return document.head || document.getElementsByTagName("head")[0];
49666 }),
49667 singletonElement = null,
49668 singletonCounter = 0,
49669 styleElementsInsertedAtTop = [];
49670
49671 module.exports = function(list, options) {
49672 if(false) {
49673 if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
49674 }
49675
49676 options = options || {};
49677 // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
49678 // tags it will allow on a page
49679 if (typeof options.singleton === "undefined") options.singleton = isOldIE();
49680
49681 // By default, add <style> tags to the bottom of <head>.
49682 if (typeof options.insertAt === "undefined") options.insertAt = "bottom";
49683
49684 var styles = listToStyles(list);
49685 addStylesToDom(styles, options);
49686
49687 return function update(newList) {
49688 var mayRemove = [];
49689 for(var i = 0; i < styles.length; i++) {
49690 var item = styles[i];
49691 var domStyle = stylesInDom[item.id];
49692 domStyle.refs--;
49693 mayRemove.push(domStyle);
49694 }
49695 if(newList) {
49696 var newStyles = listToStyles(newList);
49697 addStylesToDom(newStyles, options);
49698 }
49699 for(var i = 0; i < mayRemove.length; i++) {
49700 var domStyle = mayRemove[i];
49701 if(domStyle.refs === 0) {
49702 for(var j = 0; j < domStyle.parts.length; j++)
49703 domStyle.parts[j]();
49704 delete stylesInDom[domStyle.id];
49705 }
49706 }
49707 };
49708 }
49709
49710 function addStylesToDom(styles, options) {
49711 for(var i = 0; i < styles.length; i++) {
49712 var item = styles[i];
49713 var domStyle = stylesInDom[item.id];
49714 if(domStyle) {
49715 domStyle.refs++;
49716 for(var j = 0; j < domStyle.parts.length; j++) {
49717 domStyle.parts[j](item.parts[j]);
49718 }
49719 for(; j < item.parts.length; j++) {
49720 domStyle.parts.push(addStyle(item.parts[j], options));
49721 }
49722 } else {
49723 var parts = [];
49724 for(var j = 0; j < item.parts.length; j++) {
49725 parts.push(addStyle(item.parts[j], options));
49726 }
49727 stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
49728 }
49729 }
49730 }
49731
49732 function listToStyles(list) {
49733 var styles = [];
49734 var newStyles = {};
49735 for(var i = 0; i < list.length; i++) {
49736 var item = list[i];
49737 var id = item[0];
49738 var css = item[1];
49739 var media = item[2];
49740 var sourceMap = item[3];
49741 var part = {css: css, media: media, sourceMap: sourceMap};
49742 if(!newStyles[id])
49743 styles.push(newStyles[id] = {id: id, parts: [part]});
49744 else
49745 newStyles[id].parts.push(part);
49746 }
49747 return styles;
49748 }
49749
49750 function insertStyleElement(options, styleElement) {
49751 var head = getHeadElement();
49752 var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
49753 if (options.insertAt === "top") {
49754 if(!lastStyleElementInsertedAtTop) {
49755 head.insertBefore(styleElement, head.firstChild);
49756 } else if(lastStyleElementInsertedAtTop.nextSibling) {
49757 head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
49758 } else {
49759 head.appendChild(styleElement);
49760 }
49761 styleElementsInsertedAtTop.push(styleElement);
49762 } else if (options.insertAt === "bottom") {
49763 head.appendChild(styleElement);
49764 } else {
49765 throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
49766 }
49767 }
49768
49769 function removeStyleElement(styleElement) {
49770 styleElement.parentNode.removeChild(styleElement);
49771 var idx = styleElementsInsertedAtTop.indexOf(styleElement);
49772 if(idx >= 0) {
49773 styleElementsInsertedAtTop.splice(idx, 1);
49774 }
49775 }
49776
49777 function createStyleElement(options) {
49778 var styleElement = document.createElement("style");
49779 styleElement.type = "text/css";
49780 insertStyleElement(options, styleElement);
49781 return styleElement;
49782 }
49783
49784 function createLinkElement(options) {
49785 var linkElement = document.createElement("link");
49786 linkElement.rel = "stylesheet";
49787 insertStyleElement(options, linkElement);
49788 return linkElement;
49789 }
49790
49791 function addStyle(obj, options) {
49792 var styleElement, update, remove;
49793
49794 if (options.singleton) {
49795 var styleIndex = singletonCounter++;
49796 styleElement = singletonElement || (singletonElement = createStyleElement(options));
49797 update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
49798 remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
49799 } else if(obj.sourceMap &&
49800 typeof URL === "function" &&
49801 typeof URL.createObjectURL === "function" &&
49802 typeof URL.revokeObjectURL === "function" &&
49803 typeof Blob === "function" &&
49804 typeof btoa === "function") {
49805 styleElement = createLinkElement(options);
49806 update = updateLink.bind(null, styleElement);
49807 remove = function() {
49808 removeStyleElement(styleElement);
49809 if(styleElement.href)
49810 URL.revokeObjectURL(styleElement.href);
49811 };
49812 } else {
49813 styleElement = createStyleElement(options);
49814 update = applyToTag.bind(null, styleElement);
49815 remove = function() {
49816 removeStyleElement(styleElement);
49817 };
49818 }
49819
49820 update(obj);
49821
49822 return function updateStyle(newObj) {
49823 if(newObj) {
49824 if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
49825 return;
49826 update(obj = newObj);
49827 } else {
49828 remove();
49829 }
49830 };
49831 }
49832
49833 var replaceText = (function () {
49834 var textStore = [];
49835
49836 return function (index, replacement) {
49837 textStore[index] = replacement;
49838 return textStore.filter(Boolean).join('\n');
49839 };
49840 })();
49841
49842 function applyToSingletonTag(styleElement, index, remove, obj) {
49843 var css = remove ? "" : obj.css;
49844
49845 if (styleElement.styleSheet) {
49846 styleElement.styleSheet.cssText = replaceText(index, css);
49847 } else {
49848 var cssNode = document.createTextNode(css);
49849 var childNodes = styleElement.childNodes;
49850 if (childNodes[index]) styleElement.removeChild(childNodes[index]);
49851 if (childNodes.length) {
49852 styleElement.insertBefore(cssNode, childNodes[index]);
49853 } else {
49854 styleElement.appendChild(cssNode);
49855 }
49856 }
49857 }
49858
49859 function applyToTag(styleElement, obj) {
49860 var css = obj.css;
49861 var media = obj.media;
49862
49863 if(media) {
49864 styleElement.setAttribute("media", media)
49865 }
49866
49867 if(styleElement.styleSheet) {
49868 styleElement.styleSheet.cssText = css;
49869 } else {
49870 while(styleElement.firstChild) {
49871 styleElement.removeChild(styleElement.firstChild);
49872 }
49873 styleElement.appendChild(document.createTextNode(css));
49874 }
49875 }
49876
49877 function updateLink(linkElement, obj) {
49878 var css = obj.css;
49879 var sourceMap = obj.sourceMap;
49880
49881 if(sourceMap) {
49882 // http://stackoverflow.com/a/26603875
49883 css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
49884 }
49885
49886 var blob = new Blob([css], { type: "text/css" });
49887
49888 var oldSrc = linkElement.href;
49889
49890 linkElement.href = URL.createObjectURL(blob);
49891
49892 if(oldSrc)
49893 URL.revokeObjectURL(oldSrc);
49894 }
49895
49896
49897/***/ },
49898/* 612 */
49899/***/ function(module, exports, __webpack_require__) {
49900
49901 __webpack_require__(613);
49902 __webpack_require__(615);
49903 __webpack_require__(616);
49904 __webpack_require__(617);
49905 __webpack_require__(618);
49906 __webpack_require__(619);
49907 __webpack_require__(620);
49908 __webpack_require__(621);
49909 __webpack_require__(622);
49910 __webpack_require__(623);
49911 __webpack_require__(624);
49912 __webpack_require__(625);
49913
49914/***/ },
49915/* 613 */
49916/***/ function(module, exports, __webpack_require__) {
49917
49918 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
49919 * Bootstrap: transition.js v3.3.7
49920 * http://getbootstrap.com/javascript/#transitions
49921 * ========================================================================
49922 * Copyright 2011-2016 Twitter, Inc.
49923 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
49924 * ======================================================================== */
49925
49926
49927 +function ($) {
49928 'use strict';
49929
49930 // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
49931 // ============================================================
49932
49933 function transitionEnd() {
49934 var el = document.createElement('bootstrap')
49935
49936 var transEndEventNames = {
49937 WebkitTransition : 'webkitTransitionEnd',
49938 MozTransition : 'transitionend',
49939 OTransition : 'oTransitionEnd otransitionend',
49940 transition : 'transitionend'
49941 }
49942
49943 for (var name in transEndEventNames) {
49944 if (el.style[name] !== undefined) {
49945 return { end: transEndEventNames[name] }
49946 }
49947 }
49948
49949 return false // explicit for ie8 ( ._.)
49950 }
49951
49952 // http://blog.alexmaccaw.com/css-transitions
49953 $.fn.emulateTransitionEnd = function (duration) {
49954 var called = false
49955 var $el = this
49956 $(this).one('bsTransitionEnd', function () { called = true })
49957 var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
49958 setTimeout(callback, duration)
49959 return this
49960 }
49961
49962 $(function () {
49963 $.support.transition = transitionEnd()
49964
49965 if (!$.support.transition) return
49966
49967 $.event.special.bsTransitionEnd = {
49968 bindType: $.support.transition.end,
49969 delegateType: $.support.transition.end,
49970 handle: function (e) {
49971 if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
49972 }
49973 }
49974 })
49975
49976 }(jQuery);
49977
49978 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
49979
49980/***/ },
49981/* 614 */
49982/***/ function(module, exports, __webpack_require__) {
49983
49984 var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
49985 * jQuery JavaScript Library v2.2.4
49986 * http://jquery.com/
49987 *
49988 * Includes Sizzle.js
49989 * http://sizzlejs.com/
49990 *
49991 * Copyright jQuery Foundation and other contributors
49992 * Released under the MIT license
49993 * http://jquery.org/license
49994 *
49995 * Date: 2016-05-20T17:23Z
49996 */
49997
49998 (function( global, factory ) {
49999
50000 if ( typeof module === "object" && typeof module.exports === "object" ) {
50001 // For CommonJS and CommonJS-like environments where a proper `window`
50002 // is present, execute the factory and get jQuery.
50003 // For environments that do not have a `window` with a `document`
50004 // (such as Node.js), expose a factory as module.exports.
50005 // This accentuates the need for the creation of a real `window`.
50006 // e.g. var jQuery = require("jquery")(window);
50007 // See ticket #14549 for more info.
50008 module.exports = global.document ?
50009 factory( global, true ) :
50010 function( w ) {
50011 if ( !w.document ) {
50012 throw new Error( "jQuery requires a window with a document" );
50013 }
50014 return factory( w );
50015 };
50016 } else {
50017 factory( global );
50018 }
50019
50020 // Pass this if window is not defined yet
50021 }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
50022
50023 // Support: Firefox 18+
50024 // Can't be in strict mode, several libs including ASP.NET trace
50025 // the stack via arguments.caller.callee and Firefox dies if
50026 // you try to trace through "use strict" call chains. (#13335)
50027 //"use strict";
50028 var arr = [];
50029
50030 var document = window.document;
50031
50032 var slice = arr.slice;
50033
50034 var concat = arr.concat;
50035
50036 var push = arr.push;
50037
50038 var indexOf = arr.indexOf;
50039
50040 var class2type = {};
50041
50042 var toString = class2type.toString;
50043
50044 var hasOwn = class2type.hasOwnProperty;
50045
50046 var support = {};
50047
50048
50049
50050 var
50051 version = "2.2.4",
50052
50053 // Define a local copy of jQuery
50054 jQuery = function( selector, context ) {
50055
50056 // The jQuery object is actually just the init constructor 'enhanced'
50057 // Need init if jQuery is called (just allow error to be thrown if not included)
50058 return new jQuery.fn.init( selector, context );
50059 },
50060
50061 // Support: Android<4.1
50062 // Make sure we trim BOM and NBSP
50063 rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
50064
50065 // Matches dashed string for camelizing
50066 rmsPrefix = /^-ms-/,
50067 rdashAlpha = /-([\da-z])/gi,
50068
50069 // Used by jQuery.camelCase as callback to replace()
50070 fcamelCase = function( all, letter ) {
50071 return letter.toUpperCase();
50072 };
50073
50074 jQuery.fn = jQuery.prototype = {
50075
50076 // The current version of jQuery being used
50077 jquery: version,
50078
50079 constructor: jQuery,
50080
50081 // Start with an empty selector
50082 selector: "",
50083
50084 // The default length of a jQuery object is 0
50085 length: 0,
50086
50087 toArray: function() {
50088 return slice.call( this );
50089 },
50090
50091 // Get the Nth element in the matched element set OR
50092 // Get the whole matched element set as a clean array
50093 get: function( num ) {
50094 return num != null ?
50095
50096 // Return just the one element from the set
50097 ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
50098
50099 // Return all the elements in a clean array
50100 slice.call( this );
50101 },
50102
50103 // Take an array of elements and push it onto the stack
50104 // (returning the new matched element set)
50105 pushStack: function( elems ) {
50106
50107 // Build a new jQuery matched element set
50108 var ret = jQuery.merge( this.constructor(), elems );
50109
50110 // Add the old object onto the stack (as a reference)
50111 ret.prevObject = this;
50112 ret.context = this.context;
50113
50114 // Return the newly-formed element set
50115 return ret;
50116 },
50117
50118 // Execute a callback for every element in the matched set.
50119 each: function( callback ) {
50120 return jQuery.each( this, callback );
50121 },
50122
50123 map: function( callback ) {
50124 return this.pushStack( jQuery.map( this, function( elem, i ) {
50125 return callback.call( elem, i, elem );
50126 } ) );
50127 },
50128
50129 slice: function() {
50130 return this.pushStack( slice.apply( this, arguments ) );
50131 },
50132
50133 first: function() {
50134 return this.eq( 0 );
50135 },
50136
50137 last: function() {
50138 return this.eq( -1 );
50139 },
50140
50141 eq: function( i ) {
50142 var len = this.length,
50143 j = +i + ( i < 0 ? len : 0 );
50144 return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
50145 },
50146
50147 end: function() {
50148 return this.prevObject || this.constructor();
50149 },
50150
50151 // For internal use only.
50152 // Behaves like an Array's method, not like a jQuery method.
50153 push: push,
50154 sort: arr.sort,
50155 splice: arr.splice
50156 };
50157
50158 jQuery.extend = jQuery.fn.extend = function() {
50159 var options, name, src, copy, copyIsArray, clone,
50160 target = arguments[ 0 ] || {},
50161 i = 1,
50162 length = arguments.length,
50163 deep = false;
50164
50165 // Handle a deep copy situation
50166 if ( typeof target === "boolean" ) {
50167 deep = target;
50168
50169 // Skip the boolean and the target
50170 target = arguments[ i ] || {};
50171 i++;
50172 }
50173
50174 // Handle case when target is a string or something (possible in deep copy)
50175 if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
50176 target = {};
50177 }
50178
50179 // Extend jQuery itself if only one argument is passed
50180 if ( i === length ) {
50181 target = this;
50182 i--;
50183 }
50184
50185 for ( ; i < length; i++ ) {
50186
50187 // Only deal with non-null/undefined values
50188 if ( ( options = arguments[ i ] ) != null ) {
50189
50190 // Extend the base object
50191 for ( name in options ) {
50192 src = target[ name ];
50193 copy = options[ name ];
50194
50195 // Prevent never-ending loop
50196 if ( target === copy ) {
50197 continue;
50198 }
50199
50200 // Recurse if we're merging plain objects or arrays
50201 if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
50202 ( copyIsArray = jQuery.isArray( copy ) ) ) ) {
50203
50204 if ( copyIsArray ) {
50205 copyIsArray = false;
50206 clone = src && jQuery.isArray( src ) ? src : [];
50207
50208 } else {
50209 clone = src && jQuery.isPlainObject( src ) ? src : {};
50210 }
50211
50212 // Never move original objects, clone them
50213 target[ name ] = jQuery.extend( deep, clone, copy );
50214
50215 // Don't bring in undefined values
50216 } else if ( copy !== undefined ) {
50217 target[ name ] = copy;
50218 }
50219 }
50220 }
50221 }
50222
50223 // Return the modified object
50224 return target;
50225 };
50226
50227 jQuery.extend( {
50228
50229 // Unique for each copy of jQuery on the page
50230 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
50231
50232 // Assume jQuery is ready without the ready module
50233 isReady: true,
50234
50235 error: function( msg ) {
50236 throw new Error( msg );
50237 },
50238
50239 noop: function() {},
50240
50241 isFunction: function( obj ) {
50242 return jQuery.type( obj ) === "function";
50243 },
50244
50245 isArray: Array.isArray,
50246
50247 isWindow: function( obj ) {
50248 return obj != null && obj === obj.window;
50249 },
50250
50251 isNumeric: function( obj ) {
50252
50253 // parseFloat NaNs numeric-cast false positives (null|true|false|"")
50254 // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
50255 // subtraction forces infinities to NaN
50256 // adding 1 corrects loss of precision from parseFloat (#15100)
50257 var realStringObj = obj && obj.toString();
50258 return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;
50259 },
50260
50261 isPlainObject: function( obj ) {
50262 var key;
50263
50264 // Not plain objects:
50265 // - Any object or value whose internal [[Class]] property is not "[object Object]"
50266 // - DOM nodes
50267 // - window
50268 if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
50269 return false;
50270 }
50271
50272 // Not own constructor property must be Object
50273 if ( obj.constructor &&
50274 !hasOwn.call( obj, "constructor" ) &&
50275 !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) {
50276 return false;
50277 }
50278
50279 // Own properties are enumerated firstly, so to speed up,
50280 // if last one is own, then all properties are own
50281 for ( key in obj ) {}
50282
50283 return key === undefined || hasOwn.call( obj, key );
50284 },
50285
50286 isEmptyObject: function( obj ) {
50287 var name;
50288 for ( name in obj ) {
50289 return false;
50290 }
50291 return true;
50292 },
50293
50294 type: function( obj ) {
50295 if ( obj == null ) {
50296 return obj + "";
50297 }
50298
50299 // Support: Android<4.0, iOS<6 (functionish RegExp)
50300 return typeof obj === "object" || typeof obj === "function" ?
50301 class2type[ toString.call( obj ) ] || "object" :
50302 typeof obj;
50303 },
50304
50305 // Evaluates a script in a global context
50306 globalEval: function( code ) {
50307 var script,
50308 indirect = eval;
50309
50310 code = jQuery.trim( code );
50311
50312 if ( code ) {
50313
50314 // If the code includes a valid, prologue position
50315 // strict mode pragma, execute code by injecting a
50316 // script tag into the document.
50317 if ( code.indexOf( "use strict" ) === 1 ) {
50318 script = document.createElement( "script" );
50319 script.text = code;
50320 document.head.appendChild( script ).parentNode.removeChild( script );
50321 } else {
50322
50323 // Otherwise, avoid the DOM node creation, insertion
50324 // and removal by using an indirect global eval
50325
50326 indirect( code );
50327 }
50328 }
50329 },
50330
50331 // Convert dashed to camelCase; used by the css and data modules
50332 // Support: IE9-11+
50333 // Microsoft forgot to hump their vendor prefix (#9572)
50334 camelCase: function( string ) {
50335 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
50336 },
50337
50338 nodeName: function( elem, name ) {
50339 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
50340 },
50341
50342 each: function( obj, callback ) {
50343 var length, i = 0;
50344
50345 if ( isArrayLike( obj ) ) {
50346 length = obj.length;
50347 for ( ; i < length; i++ ) {
50348 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
50349 break;
50350 }
50351 }
50352 } else {
50353 for ( i in obj ) {
50354 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
50355 break;
50356 }
50357 }
50358 }
50359
50360 return obj;
50361 },
50362
50363 // Support: Android<4.1
50364 trim: function( text ) {
50365 return text == null ?
50366 "" :
50367 ( text + "" ).replace( rtrim, "" );
50368 },
50369
50370 // results is for internal usage only
50371 makeArray: function( arr, results ) {
50372 var ret = results || [];
50373
50374 if ( arr != null ) {
50375 if ( isArrayLike( Object( arr ) ) ) {
50376 jQuery.merge( ret,
50377 typeof arr === "string" ?
50378 [ arr ] : arr
50379 );
50380 } else {
50381 push.call( ret, arr );
50382 }
50383 }
50384
50385 return ret;
50386 },
50387
50388 inArray: function( elem, arr, i ) {
50389 return arr == null ? -1 : indexOf.call( arr, elem, i );
50390 },
50391
50392 merge: function( first, second ) {
50393 var len = +second.length,
50394 j = 0,
50395 i = first.length;
50396
50397 for ( ; j < len; j++ ) {
50398 first[ i++ ] = second[ j ];
50399 }
50400
50401 first.length = i;
50402
50403 return first;
50404 },
50405
50406 grep: function( elems, callback, invert ) {
50407 var callbackInverse,
50408 matches = [],
50409 i = 0,
50410 length = elems.length,
50411 callbackExpect = !invert;
50412
50413 // Go through the array, only saving the items
50414 // that pass the validator function
50415 for ( ; i < length; i++ ) {
50416 callbackInverse = !callback( elems[ i ], i );
50417 if ( callbackInverse !== callbackExpect ) {
50418 matches.push( elems[ i ] );
50419 }
50420 }
50421
50422 return matches;
50423 },
50424
50425 // arg is for internal usage only
50426 map: function( elems, callback, arg ) {
50427 var length, value,
50428 i = 0,
50429 ret = [];
50430
50431 // Go through the array, translating each of the items to their new values
50432 if ( isArrayLike( elems ) ) {
50433 length = elems.length;
50434 for ( ; i < length; i++ ) {
50435 value = callback( elems[ i ], i, arg );
50436
50437 if ( value != null ) {
50438 ret.push( value );
50439 }
50440 }
50441
50442 // Go through every key on the object,
50443 } else {
50444 for ( i in elems ) {
50445 value = callback( elems[ i ], i, arg );
50446
50447 if ( value != null ) {
50448 ret.push( value );
50449 }
50450 }
50451 }
50452
50453 // Flatten any nested arrays
50454 return concat.apply( [], ret );
50455 },
50456
50457 // A global GUID counter for objects
50458 guid: 1,
50459
50460 // Bind a function to a context, optionally partially applying any
50461 // arguments.
50462 proxy: function( fn, context ) {
50463 var tmp, args, proxy;
50464
50465 if ( typeof context === "string" ) {
50466 tmp = fn[ context ];
50467 context = fn;
50468 fn = tmp;
50469 }
50470
50471 // Quick check to determine if target is callable, in the spec
50472 // this throws a TypeError, but we will just return undefined.
50473 if ( !jQuery.isFunction( fn ) ) {
50474 return undefined;
50475 }
50476
50477 // Simulated bind
50478 args = slice.call( arguments, 2 );
50479 proxy = function() {
50480 return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
50481 };
50482
50483 // Set the guid of unique handler to the same of original handler, so it can be removed
50484 proxy.guid = fn.guid = fn.guid || jQuery.guid++;
50485
50486 return proxy;
50487 },
50488
50489 now: Date.now,
50490
50491 // jQuery.support is not used in Core but other projects attach their
50492 // properties to it so it needs to exist.
50493 support: support
50494 } );
50495
50496 // JSHint would error on this code due to the Symbol not being defined in ES5.
50497 // Defining this global in .jshintrc would create a danger of using the global
50498 // unguarded in another place, it seems safer to just disable JSHint for these
50499 // three lines.
50500 /* jshint ignore: start */
50501 if ( typeof Symbol === "function" ) {
50502 jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
50503 }
50504 /* jshint ignore: end */
50505
50506 // Populate the class2type map
50507 jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
50508 function( i, name ) {
50509 class2type[ "[object " + name + "]" ] = name.toLowerCase();
50510 } );
50511
50512 function isArrayLike( obj ) {
50513
50514 // Support: iOS 8.2 (not reproducible in simulator)
50515 // `in` check used to prevent JIT error (gh-2145)
50516 // hasOwn isn't used here due to false negatives
50517 // regarding Nodelist length in IE
50518 var length = !!obj && "length" in obj && obj.length,
50519 type = jQuery.type( obj );
50520
50521 if ( type === "function" || jQuery.isWindow( obj ) ) {
50522 return false;
50523 }
50524
50525 return type === "array" || length === 0 ||
50526 typeof length === "number" && length > 0 && ( length - 1 ) in obj;
50527 }
50528 var Sizzle =
50529 /*!
50530 * Sizzle CSS Selector Engine v2.2.1
50531 * http://sizzlejs.com/
50532 *
50533 * Copyright jQuery Foundation and other contributors
50534 * Released under the MIT license
50535 * http://jquery.org/license
50536 *
50537 * Date: 2015-10-17
50538 */
50539 (function( window ) {
50540
50541 var i,
50542 support,
50543 Expr,
50544 getText,
50545 isXML,
50546 tokenize,
50547 compile,
50548 select,
50549 outermostContext,
50550 sortInput,
50551 hasDuplicate,
50552
50553 // Local document vars
50554 setDocument,
50555 document,
50556 docElem,
50557 documentIsHTML,
50558 rbuggyQSA,
50559 rbuggyMatches,
50560 matches,
50561 contains,
50562
50563 // Instance-specific data
50564 expando = "sizzle" + 1 * new Date(),
50565 preferredDoc = window.document,
50566 dirruns = 0,
50567 done = 0,
50568 classCache = createCache(),
50569 tokenCache = createCache(),
50570 compilerCache = createCache(),
50571 sortOrder = function( a, b ) {
50572 if ( a === b ) {
50573 hasDuplicate = true;
50574 }
50575 return 0;
50576 },
50577
50578 // General-purpose constants
50579 MAX_NEGATIVE = 1 << 31,
50580
50581 // Instance methods
50582 hasOwn = ({}).hasOwnProperty,
50583 arr = [],
50584 pop = arr.pop,
50585 push_native = arr.push,
50586 push = arr.push,
50587 slice = arr.slice,
50588 // Use a stripped-down indexOf as it's faster than native
50589 // http://jsperf.com/thor-indexof-vs-for/5
50590 indexOf = function( list, elem ) {
50591 var i = 0,
50592 len = list.length;
50593 for ( ; i < len; i++ ) {
50594 if ( list[i] === elem ) {
50595 return i;
50596 }
50597 }
50598 return -1;
50599 },
50600
50601 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
50602
50603 // Regular expressions
50604
50605 // http://www.w3.org/TR/css3-selectors/#whitespace
50606 whitespace = "[\\x20\\t\\r\\n\\f]",
50607
50608 // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
50609 identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
50610
50611 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
50612 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
50613 // Operator (capture 2)
50614 "*([*^$|!~]?=)" + whitespace +
50615 // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
50616 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
50617 "*\\]",
50618
50619 pseudos = ":(" + identifier + ")(?:\\((" +
50620 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
50621 // 1. quoted (capture 3; capture 4 or capture 5)
50622 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
50623 // 2. simple (capture 6)
50624 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
50625 // 3. anything else (capture 2)
50626 ".*" +
50627 ")\\)|)",
50628
50629 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
50630 rwhitespace = new RegExp( whitespace + "+", "g" ),
50631 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
50632
50633 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
50634 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
50635
50636 rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
50637
50638 rpseudo = new RegExp( pseudos ),
50639 ridentifier = new RegExp( "^" + identifier + "$" ),
50640
50641 matchExpr = {
50642 "ID": new RegExp( "^#(" + identifier + ")" ),
50643 "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
50644 "TAG": new RegExp( "^(" + identifier + "|[*])" ),
50645 "ATTR": new RegExp( "^" + attributes ),
50646 "PSEUDO": new RegExp( "^" + pseudos ),
50647 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
50648 "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
50649 "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
50650 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
50651 // For use in libraries implementing .is()
50652 // We use this for POS matching in `select`
50653 "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
50654 whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
50655 },
50656
50657 rinputs = /^(?:input|select|textarea|button)$/i,
50658 rheader = /^h\d$/i,
50659
50660 rnative = /^[^{]+\{\s*\[native \w/,
50661
50662 // Easily-parseable/retrievable ID or TAG or CLASS selectors
50663 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
50664
50665 rsibling = /[+~]/,
50666 rescape = /'|\\/g,
50667
50668 // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
50669 runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
50670 funescape = function( _, escaped, escapedWhitespace ) {
50671 var high = "0x" + escaped - 0x10000;
50672 // NaN means non-codepoint
50673 // Support: Firefox<24
50674 // Workaround erroneous numeric interpretation of +"0x"
50675 return high !== high || escapedWhitespace ?
50676 escaped :
50677 high < 0 ?
50678 // BMP codepoint
50679 String.fromCharCode( high + 0x10000 ) :
50680 // Supplemental Plane codepoint (surrogate pair)
50681 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
50682 },
50683
50684 // Used for iframes
50685 // See setDocument()
50686 // Removing the function wrapper causes a "Permission Denied"
50687 // error in IE
50688 unloadHandler = function() {
50689 setDocument();
50690 };
50691
50692 // Optimize for push.apply( _, NodeList )
50693 try {
50694 push.apply(
50695 (arr = slice.call( preferredDoc.childNodes )),
50696 preferredDoc.childNodes
50697 );
50698 // Support: Android<4.0
50699 // Detect silently failing push.apply
50700 arr[ preferredDoc.childNodes.length ].nodeType;
50701 } catch ( e ) {
50702 push = { apply: arr.length ?
50703
50704 // Leverage slice if possible
50705 function( target, els ) {
50706 push_native.apply( target, slice.call(els) );
50707 } :
50708
50709 // Support: IE<9
50710 // Otherwise append directly
50711 function( target, els ) {
50712 var j = target.length,
50713 i = 0;
50714 // Can't trust NodeList.length
50715 while ( (target[j++] = els[i++]) ) {}
50716 target.length = j - 1;
50717 }
50718 };
50719 }
50720
50721 function Sizzle( selector, context, results, seed ) {
50722 var m, i, elem, nid, nidselect, match, groups, newSelector,
50723 newContext = context && context.ownerDocument,
50724
50725 // nodeType defaults to 9, since context defaults to document
50726 nodeType = context ? context.nodeType : 9;
50727
50728 results = results || [];
50729
50730 // Return early from calls with invalid selector or context
50731 if ( typeof selector !== "string" || !selector ||
50732 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
50733
50734 return results;
50735 }
50736
50737 // Try to shortcut find operations (as opposed to filters) in HTML documents
50738 if ( !seed ) {
50739
50740 if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
50741 setDocument( context );
50742 }
50743 context = context || document;
50744
50745 if ( documentIsHTML ) {
50746
50747 // If the selector is sufficiently simple, try using a "get*By*" DOM method
50748 // (excepting DocumentFragment context, where the methods don't exist)
50749 if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
50750
50751 // ID selector
50752 if ( (m = match[1]) ) {
50753
50754 // Document context
50755 if ( nodeType === 9 ) {
50756 if ( (elem = context.getElementById( m )) ) {
50757
50758 // Support: IE, Opera, Webkit
50759 // TODO: identify versions
50760 // getElementById can match elements by name instead of ID
50761 if ( elem.id === m ) {
50762 results.push( elem );
50763 return results;
50764 }
50765 } else {
50766 return results;
50767 }
50768
50769 // Element context
50770 } else {
50771
50772 // Support: IE, Opera, Webkit
50773 // TODO: identify versions
50774 // getElementById can match elements by name instead of ID
50775 if ( newContext && (elem = newContext.getElementById( m )) &&
50776 contains( context, elem ) &&
50777 elem.id === m ) {
50778
50779 results.push( elem );
50780 return results;
50781 }
50782 }
50783
50784 // Type selector
50785 } else if ( match[2] ) {
50786 push.apply( results, context.getElementsByTagName( selector ) );
50787 return results;
50788
50789 // Class selector
50790 } else if ( (m = match[3]) && support.getElementsByClassName &&
50791 context.getElementsByClassName ) {
50792
50793 push.apply( results, context.getElementsByClassName( m ) );
50794 return results;
50795 }
50796 }
50797
50798 // Take advantage of querySelectorAll
50799 if ( support.qsa &&
50800 !compilerCache[ selector + " " ] &&
50801 (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
50802
50803 if ( nodeType !== 1 ) {
50804 newContext = context;
50805 newSelector = selector;
50806
50807 // qSA looks outside Element context, which is not what we want
50808 // Thanks to Andrew Dupont for this workaround technique
50809 // Support: IE <=8
50810 // Exclude object elements
50811 } else if ( context.nodeName.toLowerCase() !== "object" ) {
50812
50813 // Capture the context ID, setting it first if necessary
50814 if ( (nid = context.getAttribute( "id" )) ) {
50815 nid = nid.replace( rescape, "\\$&" );
50816 } else {
50817 context.setAttribute( "id", (nid = expando) );
50818 }
50819
50820 // Prefix every selector in the list
50821 groups = tokenize( selector );
50822 i = groups.length;
50823 nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']";
50824 while ( i-- ) {
50825 groups[i] = nidselect + " " + toSelector( groups[i] );
50826 }
50827 newSelector = groups.join( "," );
50828
50829 // Expand context for sibling selectors
50830 newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
50831 context;
50832 }
50833
50834 if ( newSelector ) {
50835 try {
50836 push.apply( results,
50837 newContext.querySelectorAll( newSelector )
50838 );
50839 return results;
50840 } catch ( qsaError ) {
50841 } finally {
50842 if ( nid === expando ) {
50843 context.removeAttribute( "id" );
50844 }
50845 }
50846 }
50847 }
50848 }
50849 }
50850
50851 // All others
50852 return select( selector.replace( rtrim, "$1" ), context, results, seed );
50853 }
50854
50855 /**
50856 * Create key-value caches of limited size
50857 * @returns {function(string, object)} Returns the Object data after storing it on itself with
50858 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
50859 * deleting the oldest entry
50860 */
50861 function createCache() {
50862 var keys = [];
50863
50864 function cache( key, value ) {
50865 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
50866 if ( keys.push( key + " " ) > Expr.cacheLength ) {
50867 // Only keep the most recent entries
50868 delete cache[ keys.shift() ];
50869 }
50870 return (cache[ key + " " ] = value);
50871 }
50872 return cache;
50873 }
50874
50875 /**
50876 * Mark a function for special use by Sizzle
50877 * @param {Function} fn The function to mark
50878 */
50879 function markFunction( fn ) {
50880 fn[ expando ] = true;
50881 return fn;
50882 }
50883
50884 /**
50885 * Support testing using an element
50886 * @param {Function} fn Passed the created div and expects a boolean result
50887 */
50888 function assert( fn ) {
50889 var div = document.createElement("div");
50890
50891 try {
50892 return !!fn( div );
50893 } catch (e) {
50894 return false;
50895 } finally {
50896 // Remove from its parent by default
50897 if ( div.parentNode ) {
50898 div.parentNode.removeChild( div );
50899 }
50900 // release memory in IE
50901 div = null;
50902 }
50903 }
50904
50905 /**
50906 * Adds the same handler for all of the specified attrs
50907 * @param {String} attrs Pipe-separated list of attributes
50908 * @param {Function} handler The method that will be applied
50909 */
50910 function addHandle( attrs, handler ) {
50911 var arr = attrs.split("|"),
50912 i = arr.length;
50913
50914 while ( i-- ) {
50915 Expr.attrHandle[ arr[i] ] = handler;
50916 }
50917 }
50918
50919 /**
50920 * Checks document order of two siblings
50921 * @param {Element} a
50922 * @param {Element} b
50923 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
50924 */
50925 function siblingCheck( a, b ) {
50926 var cur = b && a,
50927 diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
50928 ( ~b.sourceIndex || MAX_NEGATIVE ) -
50929 ( ~a.sourceIndex || MAX_NEGATIVE );
50930
50931 // Use IE sourceIndex if available on both nodes
50932 if ( diff ) {
50933 return diff;
50934 }
50935
50936 // Check if b follows a
50937 if ( cur ) {
50938 while ( (cur = cur.nextSibling) ) {
50939 if ( cur === b ) {
50940 return -1;
50941 }
50942 }
50943 }
50944
50945 return a ? 1 : -1;
50946 }
50947
50948 /**
50949 * Returns a function to use in pseudos for input types
50950 * @param {String} type
50951 */
50952 function createInputPseudo( type ) {
50953 return function( elem ) {
50954 var name = elem.nodeName.toLowerCase();
50955 return name === "input" && elem.type === type;
50956 };
50957 }
50958
50959 /**
50960 * Returns a function to use in pseudos for buttons
50961 * @param {String} type
50962 */
50963 function createButtonPseudo( type ) {
50964 return function( elem ) {
50965 var name = elem.nodeName.toLowerCase();
50966 return (name === "input" || name === "button") && elem.type === type;
50967 };
50968 }
50969
50970 /**
50971 * Returns a function to use in pseudos for positionals
50972 * @param {Function} fn
50973 */
50974 function createPositionalPseudo( fn ) {
50975 return markFunction(function( argument ) {
50976 argument = +argument;
50977 return markFunction(function( seed, matches ) {
50978 var j,
50979 matchIndexes = fn( [], seed.length, argument ),
50980 i = matchIndexes.length;
50981
50982 // Match elements found at the specified indexes
50983 while ( i-- ) {
50984 if ( seed[ (j = matchIndexes[i]) ] ) {
50985 seed[j] = !(matches[j] = seed[j]);
50986 }
50987 }
50988 });
50989 });
50990 }
50991
50992 /**
50993 * Checks a node for validity as a Sizzle context
50994 * @param {Element|Object=} context
50995 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
50996 */
50997 function testContext( context ) {
50998 return context && typeof context.getElementsByTagName !== "undefined" && context;
50999 }
51000
51001 // Expose support vars for convenience
51002 support = Sizzle.support = {};
51003
51004 /**
51005 * Detects XML nodes
51006 * @param {Element|Object} elem An element or a document
51007 * @returns {Boolean} True iff elem is a non-HTML XML node
51008 */
51009 isXML = Sizzle.isXML = function( elem ) {
51010 // documentElement is verified for cases where it doesn't yet exist
51011 // (such as loading iframes in IE - #4833)
51012 var documentElement = elem && (elem.ownerDocument || elem).documentElement;
51013 return documentElement ? documentElement.nodeName !== "HTML" : false;
51014 };
51015
51016 /**
51017 * Sets document-related variables once based on the current document
51018 * @param {Element|Object} [doc] An element or document object to use to set the document
51019 * @returns {Object} Returns the current document
51020 */
51021 setDocument = Sizzle.setDocument = function( node ) {
51022 var hasCompare, parent,
51023 doc = node ? node.ownerDocument || node : preferredDoc;
51024
51025 // Return early if doc is invalid or already selected
51026 if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
51027 return document;
51028 }
51029
51030 // Update global variables
51031 document = doc;
51032 docElem = document.documentElement;
51033 documentIsHTML = !isXML( document );
51034
51035 // Support: IE 9-11, Edge
51036 // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
51037 if ( (parent = document.defaultView) && parent.top !== parent ) {
51038 // Support: IE 11
51039 if ( parent.addEventListener ) {
51040 parent.addEventListener( "unload", unloadHandler, false );
51041
51042 // Support: IE 9 - 10 only
51043 } else if ( parent.attachEvent ) {
51044 parent.attachEvent( "onunload", unloadHandler );
51045 }
51046 }
51047
51048 /* Attributes
51049 ---------------------------------------------------------------------- */
51050
51051 // Support: IE<8
51052 // Verify that getAttribute really returns attributes and not properties
51053 // (excepting IE8 booleans)
51054 support.attributes = assert(function( div ) {
51055 div.className = "i";
51056 return !div.getAttribute("className");
51057 });
51058
51059 /* getElement(s)By*
51060 ---------------------------------------------------------------------- */
51061
51062 // Check if getElementsByTagName("*") returns only elements
51063 support.getElementsByTagName = assert(function( div ) {
51064 div.appendChild( document.createComment("") );
51065 return !div.getElementsByTagName("*").length;
51066 });
51067
51068 // Support: IE<9
51069 support.getElementsByClassName = rnative.test( document.getElementsByClassName );
51070
51071 // Support: IE<10
51072 // Check if getElementById returns elements by name
51073 // The broken getElementById methods don't pick up programatically-set names,
51074 // so use a roundabout getElementsByName test
51075 support.getById = assert(function( div ) {
51076 docElem.appendChild( div ).id = expando;
51077 return !document.getElementsByName || !document.getElementsByName( expando ).length;
51078 });
51079
51080 // ID find and filter
51081 if ( support.getById ) {
51082 Expr.find["ID"] = function( id, context ) {
51083 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
51084 var m = context.getElementById( id );
51085 return m ? [ m ] : [];
51086 }
51087 };
51088 Expr.filter["ID"] = function( id ) {
51089 var attrId = id.replace( runescape, funescape );
51090 return function( elem ) {
51091 return elem.getAttribute("id") === attrId;
51092 };
51093 };
51094 } else {
51095 // Support: IE6/7
51096 // getElementById is not reliable as a find shortcut
51097 delete Expr.find["ID"];
51098
51099 Expr.filter["ID"] = function( id ) {
51100 var attrId = id.replace( runescape, funescape );
51101 return function( elem ) {
51102 var node = typeof elem.getAttributeNode !== "undefined" &&
51103 elem.getAttributeNode("id");
51104 return node && node.value === attrId;
51105 };
51106 };
51107 }
51108
51109 // Tag
51110 Expr.find["TAG"] = support.getElementsByTagName ?
51111 function( tag, context ) {
51112 if ( typeof context.getElementsByTagName !== "undefined" ) {
51113 return context.getElementsByTagName( tag );
51114
51115 // DocumentFragment nodes don't have gEBTN
51116 } else if ( support.qsa ) {
51117 return context.querySelectorAll( tag );
51118 }
51119 } :
51120
51121 function( tag, context ) {
51122 var elem,
51123 tmp = [],
51124 i = 0,
51125 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
51126 results = context.getElementsByTagName( tag );
51127
51128 // Filter out possible comments
51129 if ( tag === "*" ) {
51130 while ( (elem = results[i++]) ) {
51131 if ( elem.nodeType === 1 ) {
51132 tmp.push( elem );
51133 }
51134 }
51135
51136 return tmp;
51137 }
51138 return results;
51139 };
51140
51141 // Class
51142 Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
51143 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
51144 return context.getElementsByClassName( className );
51145 }
51146 };
51147
51148 /* QSA/matchesSelector
51149 ---------------------------------------------------------------------- */
51150
51151 // QSA and matchesSelector support
51152
51153 // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
51154 rbuggyMatches = [];
51155
51156 // qSa(:focus) reports false when true (Chrome 21)
51157 // We allow this because of a bug in IE8/9 that throws an error
51158 // whenever `document.activeElement` is accessed on an iframe
51159 // So, we allow :focus to pass through QSA all the time to avoid the IE error
51160 // See http://bugs.jquery.com/ticket/13378
51161 rbuggyQSA = [];
51162
51163 if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
51164 // Build QSA regex
51165 // Regex strategy adopted from Diego Perini
51166 assert(function( div ) {
51167 // Select is set to empty string on purpose
51168 // This is to test IE's treatment of not explicitly
51169 // setting a boolean content attribute,
51170 // since its presence should be enough
51171 // http://bugs.jquery.com/ticket/12359
51172 docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
51173 "<select id='" + expando + "-\r\\' msallowcapture=''>" +
51174 "<option selected=''></option></select>";
51175
51176 // Support: IE8, Opera 11-12.16
51177 // Nothing should be selected when empty strings follow ^= or $= or *=
51178 // The test attribute must be unknown in Opera but "safe" for WinRT
51179 // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
51180 if ( div.querySelectorAll("[msallowcapture^='']").length ) {
51181 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
51182 }
51183
51184 // Support: IE8
51185 // Boolean attributes and "value" are not treated correctly
51186 if ( !div.querySelectorAll("[selected]").length ) {
51187 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
51188 }
51189
51190 // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
51191 if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
51192 rbuggyQSA.push("~=");
51193 }
51194
51195 // Webkit/Opera - :checked should return selected option elements
51196 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
51197 // IE8 throws error here and will not see later tests
51198 if ( !div.querySelectorAll(":checked").length ) {
51199 rbuggyQSA.push(":checked");
51200 }
51201
51202 // Support: Safari 8+, iOS 8+
51203 // https://bugs.webkit.org/show_bug.cgi?id=136851
51204 // In-page `selector#id sibing-combinator selector` fails
51205 if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
51206 rbuggyQSA.push(".#.+[+~]");
51207 }
51208 });
51209
51210 assert(function( div ) {
51211 // Support: Windows 8 Native Apps
51212 // The type and name attributes are restricted during .innerHTML assignment
51213 var input = document.createElement("input");
51214 input.setAttribute( "type", "hidden" );
51215 div.appendChild( input ).setAttribute( "name", "D" );
51216
51217 // Support: IE8
51218 // Enforce case-sensitivity of name attribute
51219 if ( div.querySelectorAll("[name=d]").length ) {
51220 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
51221 }
51222
51223 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
51224 // IE8 throws error here and will not see later tests
51225 if ( !div.querySelectorAll(":enabled").length ) {
51226 rbuggyQSA.push( ":enabled", ":disabled" );
51227 }
51228
51229 // Opera 10-11 does not throw on post-comma invalid pseudos
51230 div.querySelectorAll("*,:x");
51231 rbuggyQSA.push(",.*:");
51232 });
51233 }
51234
51235 if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
51236 docElem.webkitMatchesSelector ||
51237 docElem.mozMatchesSelector ||
51238 docElem.oMatchesSelector ||
51239 docElem.msMatchesSelector) )) ) {
51240
51241 assert(function( div ) {
51242 // Check to see if it's possible to do matchesSelector
51243 // on a disconnected node (IE 9)
51244 support.disconnectedMatch = matches.call( div, "div" );
51245
51246 // This should fail with an exception
51247 // Gecko does not error, returns false instead
51248 matches.call( div, "[s!='']:x" );
51249 rbuggyMatches.push( "!=", pseudos );
51250 });
51251 }
51252
51253 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
51254 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
51255
51256 /* Contains
51257 ---------------------------------------------------------------------- */
51258 hasCompare = rnative.test( docElem.compareDocumentPosition );
51259
51260 // Element contains another
51261 // Purposefully self-exclusive
51262 // As in, an element does not contain itself
51263 contains = hasCompare || rnative.test( docElem.contains ) ?
51264 function( a, b ) {
51265 var adown = a.nodeType === 9 ? a.documentElement : a,
51266 bup = b && b.parentNode;
51267 return a === bup || !!( bup && bup.nodeType === 1 && (
51268 adown.contains ?
51269 adown.contains( bup ) :
51270 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
51271 ));
51272 } :
51273 function( a, b ) {
51274 if ( b ) {
51275 while ( (b = b.parentNode) ) {
51276 if ( b === a ) {
51277 return true;
51278 }
51279 }
51280 }
51281 return false;
51282 };
51283
51284 /* Sorting
51285 ---------------------------------------------------------------------- */
51286
51287 // Document order sorting
51288 sortOrder = hasCompare ?
51289 function( a, b ) {
51290
51291 // Flag for duplicate removal
51292 if ( a === b ) {
51293 hasDuplicate = true;
51294 return 0;
51295 }
51296
51297 // Sort on method existence if only one input has compareDocumentPosition
51298 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
51299 if ( compare ) {
51300 return compare;
51301 }
51302
51303 // Calculate position if both inputs belong to the same document
51304 compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
51305 a.compareDocumentPosition( b ) :
51306
51307 // Otherwise we know they are disconnected
51308 1;
51309
51310 // Disconnected nodes
51311 if ( compare & 1 ||
51312 (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
51313
51314 // Choose the first element that is related to our preferred document
51315 if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
51316 return -1;
51317 }
51318 if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
51319 return 1;
51320 }
51321
51322 // Maintain original order
51323 return sortInput ?
51324 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
51325 0;
51326 }
51327
51328 return compare & 4 ? -1 : 1;
51329 } :
51330 function( a, b ) {
51331 // Exit early if the nodes are identical
51332 if ( a === b ) {
51333 hasDuplicate = true;
51334 return 0;
51335 }
51336
51337 var cur,
51338 i = 0,
51339 aup = a.parentNode,
51340 bup = b.parentNode,
51341 ap = [ a ],
51342 bp = [ b ];
51343
51344 // Parentless nodes are either documents or disconnected
51345 if ( !aup || !bup ) {
51346 return a === document ? -1 :
51347 b === document ? 1 :
51348 aup ? -1 :
51349 bup ? 1 :
51350 sortInput ?
51351 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
51352 0;
51353
51354 // If the nodes are siblings, we can do a quick check
51355 } else if ( aup === bup ) {
51356 return siblingCheck( a, b );
51357 }
51358
51359 // Otherwise we need full lists of their ancestors for comparison
51360 cur = a;
51361 while ( (cur = cur.parentNode) ) {
51362 ap.unshift( cur );
51363 }
51364 cur = b;
51365 while ( (cur = cur.parentNode) ) {
51366 bp.unshift( cur );
51367 }
51368
51369 // Walk down the tree looking for a discrepancy
51370 while ( ap[i] === bp[i] ) {
51371 i++;
51372 }
51373
51374 return i ?
51375 // Do a sibling check if the nodes have a common ancestor
51376 siblingCheck( ap[i], bp[i] ) :
51377
51378 // Otherwise nodes in our document sort first
51379 ap[i] === preferredDoc ? -1 :
51380 bp[i] === preferredDoc ? 1 :
51381 0;
51382 };
51383
51384 return document;
51385 };
51386
51387 Sizzle.matches = function( expr, elements ) {
51388 return Sizzle( expr, null, null, elements );
51389 };
51390
51391 Sizzle.matchesSelector = function( elem, expr ) {
51392 // Set document vars if needed
51393 if ( ( elem.ownerDocument || elem ) !== document ) {
51394 setDocument( elem );
51395 }
51396
51397 // Make sure that attribute selectors are quoted
51398 expr = expr.replace( rattributeQuotes, "='$1']" );
51399
51400 if ( support.matchesSelector && documentIsHTML &&
51401 !compilerCache[ expr + " " ] &&
51402 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
51403 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
51404
51405 try {
51406 var ret = matches.call( elem, expr );
51407
51408 // IE 9's matchesSelector returns false on disconnected nodes
51409 if ( ret || support.disconnectedMatch ||
51410 // As well, disconnected nodes are said to be in a document
51411 // fragment in IE 9
51412 elem.document && elem.document.nodeType !== 11 ) {
51413 return ret;
51414 }
51415 } catch (e) {}
51416 }
51417
51418 return Sizzle( expr, document, null, [ elem ] ).length > 0;
51419 };
51420
51421 Sizzle.contains = function( context, elem ) {
51422 // Set document vars if needed
51423 if ( ( context.ownerDocument || context ) !== document ) {
51424 setDocument( context );
51425 }
51426 return contains( context, elem );
51427 };
51428
51429 Sizzle.attr = function( elem, name ) {
51430 // Set document vars if needed
51431 if ( ( elem.ownerDocument || elem ) !== document ) {
51432 setDocument( elem );
51433 }
51434
51435 var fn = Expr.attrHandle[ name.toLowerCase() ],
51436 // Don't get fooled by Object.prototype properties (jQuery #13807)
51437 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
51438 fn( elem, name, !documentIsHTML ) :
51439 undefined;
51440
51441 return val !== undefined ?
51442 val :
51443 support.attributes || !documentIsHTML ?
51444 elem.getAttribute( name ) :
51445 (val = elem.getAttributeNode(name)) && val.specified ?
51446 val.value :
51447 null;
51448 };
51449
51450 Sizzle.error = function( msg ) {
51451 throw new Error( "Syntax error, unrecognized expression: " + msg );
51452 };
51453
51454 /**
51455 * Document sorting and removing duplicates
51456 * @param {ArrayLike} results
51457 */
51458 Sizzle.uniqueSort = function( results ) {
51459 var elem,
51460 duplicates = [],
51461 j = 0,
51462 i = 0;
51463
51464 // Unless we *know* we can detect duplicates, assume their presence
51465 hasDuplicate = !support.detectDuplicates;
51466 sortInput = !support.sortStable && results.slice( 0 );
51467 results.sort( sortOrder );
51468
51469 if ( hasDuplicate ) {
51470 while ( (elem = results[i++]) ) {
51471 if ( elem === results[ i ] ) {
51472 j = duplicates.push( i );
51473 }
51474 }
51475 while ( j-- ) {
51476 results.splice( duplicates[ j ], 1 );
51477 }
51478 }
51479
51480 // Clear input after sorting to release objects
51481 // See https://github.com/jquery/sizzle/pull/225
51482 sortInput = null;
51483
51484 return results;
51485 };
51486
51487 /**
51488 * Utility function for retrieving the text value of an array of DOM nodes
51489 * @param {Array|Element} elem
51490 */
51491 getText = Sizzle.getText = function( elem ) {
51492 var node,
51493 ret = "",
51494 i = 0,
51495 nodeType = elem.nodeType;
51496
51497 if ( !nodeType ) {
51498 // If no nodeType, this is expected to be an array
51499 while ( (node = elem[i++]) ) {
51500 // Do not traverse comment nodes
51501 ret += getText( node );
51502 }
51503 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
51504 // Use textContent for elements
51505 // innerText usage removed for consistency of new lines (jQuery #11153)
51506 if ( typeof elem.textContent === "string" ) {
51507 return elem.textContent;
51508 } else {
51509 // Traverse its children
51510 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
51511 ret += getText( elem );
51512 }
51513 }
51514 } else if ( nodeType === 3 || nodeType === 4 ) {
51515 return elem.nodeValue;
51516 }
51517 // Do not include comment or processing instruction nodes
51518
51519 return ret;
51520 };
51521
51522 Expr = Sizzle.selectors = {
51523
51524 // Can be adjusted by the user
51525 cacheLength: 50,
51526
51527 createPseudo: markFunction,
51528
51529 match: matchExpr,
51530
51531 attrHandle: {},
51532
51533 find: {},
51534
51535 relative: {
51536 ">": { dir: "parentNode", first: true },
51537 " ": { dir: "parentNode" },
51538 "+": { dir: "previousSibling", first: true },
51539 "~": { dir: "previousSibling" }
51540 },
51541
51542 preFilter: {
51543 "ATTR": function( match ) {
51544 match[1] = match[1].replace( runescape, funescape );
51545
51546 // Move the given value to match[3] whether quoted or unquoted
51547 match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
51548
51549 if ( match[2] === "~=" ) {
51550 match[3] = " " + match[3] + " ";
51551 }
51552
51553 return match.slice( 0, 4 );
51554 },
51555
51556 "CHILD": function( match ) {
51557 /* matches from matchExpr["CHILD"]
51558 1 type (only|nth|...)
51559 2 what (child|of-type)
51560 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
51561 4 xn-component of xn+y argument ([+-]?\d*n|)
51562 5 sign of xn-component
51563 6 x of xn-component
51564 7 sign of y-component
51565 8 y of y-component
51566 */
51567 match[1] = match[1].toLowerCase();
51568
51569 if ( match[1].slice( 0, 3 ) === "nth" ) {
51570 // nth-* requires argument
51571 if ( !match[3] ) {
51572 Sizzle.error( match[0] );
51573 }
51574
51575 // numeric x and y parameters for Expr.filter.CHILD
51576 // remember that false/true cast respectively to 0/1
51577 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
51578 match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
51579
51580 // other types prohibit arguments
51581 } else if ( match[3] ) {
51582 Sizzle.error( match[0] );
51583 }
51584
51585 return match;
51586 },
51587
51588 "PSEUDO": function( match ) {
51589 var excess,
51590 unquoted = !match[6] && match[2];
51591
51592 if ( matchExpr["CHILD"].test( match[0] ) ) {
51593 return null;
51594 }
51595
51596 // Accept quoted arguments as-is
51597 if ( match[3] ) {
51598 match[2] = match[4] || match[5] || "";
51599
51600 // Strip excess characters from unquoted arguments
51601 } else if ( unquoted && rpseudo.test( unquoted ) &&
51602 // Get excess from tokenize (recursively)
51603 (excess = tokenize( unquoted, true )) &&
51604 // advance to the next closing parenthesis
51605 (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
51606
51607 // excess is a negative index
51608 match[0] = match[0].slice( 0, excess );
51609 match[2] = unquoted.slice( 0, excess );
51610 }
51611
51612 // Return only captures needed by the pseudo filter method (type and argument)
51613 return match.slice( 0, 3 );
51614 }
51615 },
51616
51617 filter: {
51618
51619 "TAG": function( nodeNameSelector ) {
51620 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
51621 return nodeNameSelector === "*" ?
51622 function() { return true; } :
51623 function( elem ) {
51624 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
51625 };
51626 },
51627
51628 "CLASS": function( className ) {
51629 var pattern = classCache[ className + " " ];
51630
51631 return pattern ||
51632 (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
51633 classCache( className, function( elem ) {
51634 return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
51635 });
51636 },
51637
51638 "ATTR": function( name, operator, check ) {
51639 return function( elem ) {
51640 var result = Sizzle.attr( elem, name );
51641
51642 if ( result == null ) {
51643 return operator === "!=";
51644 }
51645 if ( !operator ) {
51646 return true;
51647 }
51648
51649 result += "";
51650
51651 return operator === "=" ? result === check :
51652 operator === "!=" ? result !== check :
51653 operator === "^=" ? check && result.indexOf( check ) === 0 :
51654 operator === "*=" ? check && result.indexOf( check ) > -1 :
51655 operator === "$=" ? check && result.slice( -check.length ) === check :
51656 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
51657 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
51658 false;
51659 };
51660 },
51661
51662 "CHILD": function( type, what, argument, first, last ) {
51663 var simple = type.slice( 0, 3 ) !== "nth",
51664 forward = type.slice( -4 ) !== "last",
51665 ofType = what === "of-type";
51666
51667 return first === 1 && last === 0 ?
51668
51669 // Shortcut for :nth-*(n)
51670 function( elem ) {
51671 return !!elem.parentNode;
51672 } :
51673
51674 function( elem, context, xml ) {
51675 var cache, uniqueCache, outerCache, node, nodeIndex, start,
51676 dir = simple !== forward ? "nextSibling" : "previousSibling",
51677 parent = elem.parentNode,
51678 name = ofType && elem.nodeName.toLowerCase(),
51679 useCache = !xml && !ofType,
51680 diff = false;
51681
51682 if ( parent ) {
51683
51684 // :(first|last|only)-(child|of-type)
51685 if ( simple ) {
51686 while ( dir ) {
51687 node = elem;
51688 while ( (node = node[ dir ]) ) {
51689 if ( ofType ?
51690 node.nodeName.toLowerCase() === name :
51691 node.nodeType === 1 ) {
51692
51693 return false;
51694 }
51695 }
51696 // Reverse direction for :only-* (if we haven't yet done so)
51697 start = dir = type === "only" && !start && "nextSibling";
51698 }
51699 return true;
51700 }
51701
51702 start = [ forward ? parent.firstChild : parent.lastChild ];
51703
51704 // non-xml :nth-child(...) stores cache data on `parent`
51705 if ( forward && useCache ) {
51706
51707 // Seek `elem` from a previously-cached index
51708
51709 // ...in a gzip-friendly way
51710 node = parent;
51711 outerCache = node[ expando ] || (node[ expando ] = {});
51712
51713 // Support: IE <9 only
51714 // Defend against cloned attroperties (jQuery gh-1709)
51715 uniqueCache = outerCache[ node.uniqueID ] ||
51716 (outerCache[ node.uniqueID ] = {});
51717
51718 cache = uniqueCache[ type ] || [];
51719 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
51720 diff = nodeIndex && cache[ 2 ];
51721 node = nodeIndex && parent.childNodes[ nodeIndex ];
51722
51723 while ( (node = ++nodeIndex && node && node[ dir ] ||
51724
51725 // Fallback to seeking `elem` from the start
51726 (diff = nodeIndex = 0) || start.pop()) ) {
51727
51728 // When found, cache indexes on `parent` and break
51729 if ( node.nodeType === 1 && ++diff && node === elem ) {
51730 uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
51731 break;
51732 }
51733 }
51734
51735 } else {
51736 // Use previously-cached element index if available
51737 if ( useCache ) {
51738 // ...in a gzip-friendly way
51739 node = elem;
51740 outerCache = node[ expando ] || (node[ expando ] = {});
51741
51742 // Support: IE <9 only
51743 // Defend against cloned attroperties (jQuery gh-1709)
51744 uniqueCache = outerCache[ node.uniqueID ] ||
51745 (outerCache[ node.uniqueID ] = {});
51746
51747 cache = uniqueCache[ type ] || [];
51748 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
51749 diff = nodeIndex;
51750 }
51751
51752 // xml :nth-child(...)
51753 // or :nth-last-child(...) or :nth(-last)?-of-type(...)
51754 if ( diff === false ) {
51755 // Use the same loop as above to seek `elem` from the start
51756 while ( (node = ++nodeIndex && node && node[ dir ] ||
51757 (diff = nodeIndex = 0) || start.pop()) ) {
51758
51759 if ( ( ofType ?
51760 node.nodeName.toLowerCase() === name :
51761 node.nodeType === 1 ) &&
51762 ++diff ) {
51763
51764 // Cache the index of each encountered element
51765 if ( useCache ) {
51766 outerCache = node[ expando ] || (node[ expando ] = {});
51767
51768 // Support: IE <9 only
51769 // Defend against cloned attroperties (jQuery gh-1709)
51770 uniqueCache = outerCache[ node.uniqueID ] ||
51771 (outerCache[ node.uniqueID ] = {});
51772
51773 uniqueCache[ type ] = [ dirruns, diff ];
51774 }
51775
51776 if ( node === elem ) {
51777 break;
51778 }
51779 }
51780 }
51781 }
51782 }
51783
51784 // Incorporate the offset, then check against cycle size
51785 diff -= last;
51786 return diff === first || ( diff % first === 0 && diff / first >= 0 );
51787 }
51788 };
51789 },
51790
51791 "PSEUDO": function( pseudo, argument ) {
51792 // pseudo-class names are case-insensitive
51793 // http://www.w3.org/TR/selectors/#pseudo-classes
51794 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
51795 // Remember that setFilters inherits from pseudos
51796 var args,
51797 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
51798 Sizzle.error( "unsupported pseudo: " + pseudo );
51799
51800 // The user may use createPseudo to indicate that
51801 // arguments are needed to create the filter function
51802 // just as Sizzle does
51803 if ( fn[ expando ] ) {
51804 return fn( argument );
51805 }
51806
51807 // But maintain support for old signatures
51808 if ( fn.length > 1 ) {
51809 args = [ pseudo, pseudo, "", argument ];
51810 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
51811 markFunction(function( seed, matches ) {
51812 var idx,
51813 matched = fn( seed, argument ),
51814 i = matched.length;
51815 while ( i-- ) {
51816 idx = indexOf( seed, matched[i] );
51817 seed[ idx ] = !( matches[ idx ] = matched[i] );
51818 }
51819 }) :
51820 function( elem ) {
51821 return fn( elem, 0, args );
51822 };
51823 }
51824
51825 return fn;
51826 }
51827 },
51828
51829 pseudos: {
51830 // Potentially complex pseudos
51831 "not": markFunction(function( selector ) {
51832 // Trim the selector passed to compile
51833 // to avoid treating leading and trailing
51834 // spaces as combinators
51835 var input = [],
51836 results = [],
51837 matcher = compile( selector.replace( rtrim, "$1" ) );
51838
51839 return matcher[ expando ] ?
51840 markFunction(function( seed, matches, context, xml ) {
51841 var elem,
51842 unmatched = matcher( seed, null, xml, [] ),
51843 i = seed.length;
51844
51845 // Match elements unmatched by `matcher`
51846 while ( i-- ) {
51847 if ( (elem = unmatched[i]) ) {
51848 seed[i] = !(matches[i] = elem);
51849 }
51850 }
51851 }) :
51852 function( elem, context, xml ) {
51853 input[0] = elem;
51854 matcher( input, null, xml, results );
51855 // Don't keep the element (issue #299)
51856 input[0] = null;
51857 return !results.pop();
51858 };
51859 }),
51860
51861 "has": markFunction(function( selector ) {
51862 return function( elem ) {
51863 return Sizzle( selector, elem ).length > 0;
51864 };
51865 }),
51866
51867 "contains": markFunction(function( text ) {
51868 text = text.replace( runescape, funescape );
51869 return function( elem ) {
51870 return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
51871 };
51872 }),
51873
51874 // "Whether an element is represented by a :lang() selector
51875 // is based solely on the element's language value
51876 // being equal to the identifier C,
51877 // or beginning with the identifier C immediately followed by "-".
51878 // The matching of C against the element's language value is performed case-insensitively.
51879 // The identifier C does not have to be a valid language name."
51880 // http://www.w3.org/TR/selectors/#lang-pseudo
51881 "lang": markFunction( function( lang ) {
51882 // lang value must be a valid identifier
51883 if ( !ridentifier.test(lang || "") ) {
51884 Sizzle.error( "unsupported lang: " + lang );
51885 }
51886 lang = lang.replace( runescape, funescape ).toLowerCase();
51887 return function( elem ) {
51888 var elemLang;
51889 do {
51890 if ( (elemLang = documentIsHTML ?
51891 elem.lang :
51892 elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
51893
51894 elemLang = elemLang.toLowerCase();
51895 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
51896 }
51897 } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
51898 return false;
51899 };
51900 }),
51901
51902 // Miscellaneous
51903 "target": function( elem ) {
51904 var hash = window.location && window.location.hash;
51905 return hash && hash.slice( 1 ) === elem.id;
51906 },
51907
51908 "root": function( elem ) {
51909 return elem === docElem;
51910 },
51911
51912 "focus": function( elem ) {
51913 return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
51914 },
51915
51916 // Boolean properties
51917 "enabled": function( elem ) {
51918 return elem.disabled === false;
51919 },
51920
51921 "disabled": function( elem ) {
51922 return elem.disabled === true;
51923 },
51924
51925 "checked": function( elem ) {
51926 // In CSS3, :checked should return both checked and selected elements
51927 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
51928 var nodeName = elem.nodeName.toLowerCase();
51929 return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
51930 },
51931
51932 "selected": function( elem ) {
51933 // Accessing this property makes selected-by-default
51934 // options in Safari work properly
51935 if ( elem.parentNode ) {
51936 elem.parentNode.selectedIndex;
51937 }
51938
51939 return elem.selected === true;
51940 },
51941
51942 // Contents
51943 "empty": function( elem ) {
51944 // http://www.w3.org/TR/selectors/#empty-pseudo
51945 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
51946 // but not by others (comment: 8; processing instruction: 7; etc.)
51947 // nodeType < 6 works because attributes (2) do not appear as children
51948 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
51949 if ( elem.nodeType < 6 ) {
51950 return false;
51951 }
51952 }
51953 return true;
51954 },
51955
51956 "parent": function( elem ) {
51957 return !Expr.pseudos["empty"]( elem );
51958 },
51959
51960 // Element/input types
51961 "header": function( elem ) {
51962 return rheader.test( elem.nodeName );
51963 },
51964
51965 "input": function( elem ) {
51966 return rinputs.test( elem.nodeName );
51967 },
51968
51969 "button": function( elem ) {
51970 var name = elem.nodeName.toLowerCase();
51971 return name === "input" && elem.type === "button" || name === "button";
51972 },
51973
51974 "text": function( elem ) {
51975 var attr;
51976 return elem.nodeName.toLowerCase() === "input" &&
51977 elem.type === "text" &&
51978
51979 // Support: IE<8
51980 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
51981 ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
51982 },
51983
51984 // Position-in-collection
51985 "first": createPositionalPseudo(function() {
51986 return [ 0 ];
51987 }),
51988
51989 "last": createPositionalPseudo(function( matchIndexes, length ) {
51990 return [ length - 1 ];
51991 }),
51992
51993 "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
51994 return [ argument < 0 ? argument + length : argument ];
51995 }),
51996
51997 "even": createPositionalPseudo(function( matchIndexes, length ) {
51998 var i = 0;
51999 for ( ; i < length; i += 2 ) {
52000 matchIndexes.push( i );
52001 }
52002 return matchIndexes;
52003 }),
52004
52005 "odd": createPositionalPseudo(function( matchIndexes, length ) {
52006 var i = 1;
52007 for ( ; i < length; i += 2 ) {
52008 matchIndexes.push( i );
52009 }
52010 return matchIndexes;
52011 }),
52012
52013 "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
52014 var i = argument < 0 ? argument + length : argument;
52015 for ( ; --i >= 0; ) {
52016 matchIndexes.push( i );
52017 }
52018 return matchIndexes;
52019 }),
52020
52021 "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
52022 var i = argument < 0 ? argument + length : argument;
52023 for ( ; ++i < length; ) {
52024 matchIndexes.push( i );
52025 }
52026 return matchIndexes;
52027 })
52028 }
52029 };
52030
52031 Expr.pseudos["nth"] = Expr.pseudos["eq"];
52032
52033 // Add button/input type pseudos
52034 for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
52035 Expr.pseudos[ i ] = createInputPseudo( i );
52036 }
52037 for ( i in { submit: true, reset: true } ) {
52038 Expr.pseudos[ i ] = createButtonPseudo( i );
52039 }
52040
52041 // Easy API for creating new setFilters
52042 function setFilters() {}
52043 setFilters.prototype = Expr.filters = Expr.pseudos;
52044 Expr.setFilters = new setFilters();
52045
52046 tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
52047 var matched, match, tokens, type,
52048 soFar, groups, preFilters,
52049 cached = tokenCache[ selector + " " ];
52050
52051 if ( cached ) {
52052 return parseOnly ? 0 : cached.slice( 0 );
52053 }
52054
52055 soFar = selector;
52056 groups = [];
52057 preFilters = Expr.preFilter;
52058
52059 while ( soFar ) {
52060
52061 // Comma and first run
52062 if ( !matched || (match = rcomma.exec( soFar )) ) {
52063 if ( match ) {
52064 // Don't consume trailing commas as valid
52065 soFar = soFar.slice( match[0].length ) || soFar;
52066 }
52067 groups.push( (tokens = []) );
52068 }
52069
52070 matched = false;
52071
52072 // Combinators
52073 if ( (match = rcombinators.exec( soFar )) ) {
52074 matched = match.shift();
52075 tokens.push({
52076 value: matched,
52077 // Cast descendant combinators to space
52078 type: match[0].replace( rtrim, " " )
52079 });
52080 soFar = soFar.slice( matched.length );
52081 }
52082
52083 // Filters
52084 for ( type in Expr.filter ) {
52085 if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
52086 (match = preFilters[ type ]( match ))) ) {
52087 matched = match.shift();
52088 tokens.push({
52089 value: matched,
52090 type: type,
52091 matches: match
52092 });
52093 soFar = soFar.slice( matched.length );
52094 }
52095 }
52096
52097 if ( !matched ) {
52098 break;
52099 }
52100 }
52101
52102 // Return the length of the invalid excess
52103 // if we're just parsing
52104 // Otherwise, throw an error or return tokens
52105 return parseOnly ?
52106 soFar.length :
52107 soFar ?
52108 Sizzle.error( selector ) :
52109 // Cache the tokens
52110 tokenCache( selector, groups ).slice( 0 );
52111 };
52112
52113 function toSelector( tokens ) {
52114 var i = 0,
52115 len = tokens.length,
52116 selector = "";
52117 for ( ; i < len; i++ ) {
52118 selector += tokens[i].value;
52119 }
52120 return selector;
52121 }
52122
52123 function addCombinator( matcher, combinator, base ) {
52124 var dir = combinator.dir,
52125 checkNonElements = base && dir === "parentNode",
52126 doneName = done++;
52127
52128 return combinator.first ?
52129 // Check against closest ancestor/preceding element
52130 function( elem, context, xml ) {
52131 while ( (elem = elem[ dir ]) ) {
52132 if ( elem.nodeType === 1 || checkNonElements ) {
52133 return matcher( elem, context, xml );
52134 }
52135 }
52136 } :
52137
52138 // Check against all ancestor/preceding elements
52139 function( elem, context, xml ) {
52140 var oldCache, uniqueCache, outerCache,
52141 newCache = [ dirruns, doneName ];
52142
52143 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
52144 if ( xml ) {
52145 while ( (elem = elem[ dir ]) ) {
52146 if ( elem.nodeType === 1 || checkNonElements ) {
52147 if ( matcher( elem, context, xml ) ) {
52148 return true;
52149 }
52150 }
52151 }
52152 } else {
52153 while ( (elem = elem[ dir ]) ) {
52154 if ( elem.nodeType === 1 || checkNonElements ) {
52155 outerCache = elem[ expando ] || (elem[ expando ] = {});
52156
52157 // Support: IE <9 only
52158 // Defend against cloned attroperties (jQuery gh-1709)
52159 uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
52160
52161 if ( (oldCache = uniqueCache[ dir ]) &&
52162 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
52163
52164 // Assign to newCache so results back-propagate to previous elements
52165 return (newCache[ 2 ] = oldCache[ 2 ]);
52166 } else {
52167 // Reuse newcache so results back-propagate to previous elements
52168 uniqueCache[ dir ] = newCache;
52169
52170 // A match means we're done; a fail means we have to keep checking
52171 if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
52172 return true;
52173 }
52174 }
52175 }
52176 }
52177 }
52178 };
52179 }
52180
52181 function elementMatcher( matchers ) {
52182 return matchers.length > 1 ?
52183 function( elem, context, xml ) {
52184 var i = matchers.length;
52185 while ( i-- ) {
52186 if ( !matchers[i]( elem, context, xml ) ) {
52187 return false;
52188 }
52189 }
52190 return true;
52191 } :
52192 matchers[0];
52193 }
52194
52195 function multipleContexts( selector, contexts, results ) {
52196 var i = 0,
52197 len = contexts.length;
52198 for ( ; i < len; i++ ) {
52199 Sizzle( selector, contexts[i], results );
52200 }
52201 return results;
52202 }
52203
52204 function condense( unmatched, map, filter, context, xml ) {
52205 var elem,
52206 newUnmatched = [],
52207 i = 0,
52208 len = unmatched.length,
52209 mapped = map != null;
52210
52211 for ( ; i < len; i++ ) {
52212 if ( (elem = unmatched[i]) ) {
52213 if ( !filter || filter( elem, context, xml ) ) {
52214 newUnmatched.push( elem );
52215 if ( mapped ) {
52216 map.push( i );
52217 }
52218 }
52219 }
52220 }
52221
52222 return newUnmatched;
52223 }
52224
52225 function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
52226 if ( postFilter && !postFilter[ expando ] ) {
52227 postFilter = setMatcher( postFilter );
52228 }
52229 if ( postFinder && !postFinder[ expando ] ) {
52230 postFinder = setMatcher( postFinder, postSelector );
52231 }
52232 return markFunction(function( seed, results, context, xml ) {
52233 var temp, i, elem,
52234 preMap = [],
52235 postMap = [],
52236 preexisting = results.length,
52237
52238 // Get initial elements from seed or context
52239 elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
52240
52241 // Prefilter to get matcher input, preserving a map for seed-results synchronization
52242 matcherIn = preFilter && ( seed || !selector ) ?
52243 condense( elems, preMap, preFilter, context, xml ) :
52244 elems,
52245
52246 matcherOut = matcher ?
52247 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
52248 postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
52249
52250 // ...intermediate processing is necessary
52251 [] :
52252
52253 // ...otherwise use results directly
52254 results :
52255 matcherIn;
52256
52257 // Find primary matches
52258 if ( matcher ) {
52259 matcher( matcherIn, matcherOut, context, xml );
52260 }
52261
52262 // Apply postFilter
52263 if ( postFilter ) {
52264 temp = condense( matcherOut, postMap );
52265 postFilter( temp, [], context, xml );
52266
52267 // Un-match failing elements by moving them back to matcherIn
52268 i = temp.length;
52269 while ( i-- ) {
52270 if ( (elem = temp[i]) ) {
52271 matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
52272 }
52273 }
52274 }
52275
52276 if ( seed ) {
52277 if ( postFinder || preFilter ) {
52278 if ( postFinder ) {
52279 // Get the final matcherOut by condensing this intermediate into postFinder contexts
52280 temp = [];
52281 i = matcherOut.length;
52282 while ( i-- ) {
52283 if ( (elem = matcherOut[i]) ) {
52284 // Restore matcherIn since elem is not yet a final match
52285 temp.push( (matcherIn[i] = elem) );
52286 }
52287 }
52288 postFinder( null, (matcherOut = []), temp, xml );
52289 }
52290
52291 // Move matched elements from seed to results to keep them synchronized
52292 i = matcherOut.length;
52293 while ( i-- ) {
52294 if ( (elem = matcherOut[i]) &&
52295 (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
52296
52297 seed[temp] = !(results[temp] = elem);
52298 }
52299 }
52300 }
52301
52302 // Add elements to results, through postFinder if defined
52303 } else {
52304 matcherOut = condense(
52305 matcherOut === results ?
52306 matcherOut.splice( preexisting, matcherOut.length ) :
52307 matcherOut
52308 );
52309 if ( postFinder ) {
52310 postFinder( null, results, matcherOut, xml );
52311 } else {
52312 push.apply( results, matcherOut );
52313 }
52314 }
52315 });
52316 }
52317
52318 function matcherFromTokens( tokens ) {
52319 var checkContext, matcher, j,
52320 len = tokens.length,
52321 leadingRelative = Expr.relative[ tokens[0].type ],
52322 implicitRelative = leadingRelative || Expr.relative[" "],
52323 i = leadingRelative ? 1 : 0,
52324
52325 // The foundational matcher ensures that elements are reachable from top-level context(s)
52326 matchContext = addCombinator( function( elem ) {
52327 return elem === checkContext;
52328 }, implicitRelative, true ),
52329 matchAnyContext = addCombinator( function( elem ) {
52330 return indexOf( checkContext, elem ) > -1;
52331 }, implicitRelative, true ),
52332 matchers = [ function( elem, context, xml ) {
52333 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
52334 (checkContext = context).nodeType ?
52335 matchContext( elem, context, xml ) :
52336 matchAnyContext( elem, context, xml ) );
52337 // Avoid hanging onto element (issue #299)
52338 checkContext = null;
52339 return ret;
52340 } ];
52341
52342 for ( ; i < len; i++ ) {
52343 if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
52344 matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
52345 } else {
52346 matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
52347
52348 // Return special upon seeing a positional matcher
52349 if ( matcher[ expando ] ) {
52350 // Find the next relative operator (if any) for proper handling
52351 j = ++i;
52352 for ( ; j < len; j++ ) {
52353 if ( Expr.relative[ tokens[j].type ] ) {
52354 break;
52355 }
52356 }
52357 return setMatcher(
52358 i > 1 && elementMatcher( matchers ),
52359 i > 1 && toSelector(
52360 // If the preceding token was a descendant combinator, insert an implicit any-element `*`
52361 tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
52362 ).replace( rtrim, "$1" ),
52363 matcher,
52364 i < j && matcherFromTokens( tokens.slice( i, j ) ),
52365 j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
52366 j < len && toSelector( tokens )
52367 );
52368 }
52369 matchers.push( matcher );
52370 }
52371 }
52372
52373 return elementMatcher( matchers );
52374 }
52375
52376 function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
52377 var bySet = setMatchers.length > 0,
52378 byElement = elementMatchers.length > 0,
52379 superMatcher = function( seed, context, xml, results, outermost ) {
52380 var elem, j, matcher,
52381 matchedCount = 0,
52382 i = "0",
52383 unmatched = seed && [],
52384 setMatched = [],
52385 contextBackup = outermostContext,
52386 // We must always have either seed elements or outermost context
52387 elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
52388 // Use integer dirruns iff this is the outermost matcher
52389 dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
52390 len = elems.length;
52391
52392 if ( outermost ) {
52393 outermostContext = context === document || context || outermost;
52394 }
52395
52396 // Add elements passing elementMatchers directly to results
52397 // Support: IE<9, Safari
52398 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
52399 for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
52400 if ( byElement && elem ) {
52401 j = 0;
52402 if ( !context && elem.ownerDocument !== document ) {
52403 setDocument( elem );
52404 xml = !documentIsHTML;
52405 }
52406 while ( (matcher = elementMatchers[j++]) ) {
52407 if ( matcher( elem, context || document, xml) ) {
52408 results.push( elem );
52409 break;
52410 }
52411 }
52412 if ( outermost ) {
52413 dirruns = dirrunsUnique;
52414 }
52415 }
52416
52417 // Track unmatched elements for set filters
52418 if ( bySet ) {
52419 // They will have gone through all possible matchers
52420 if ( (elem = !matcher && elem) ) {
52421 matchedCount--;
52422 }
52423
52424 // Lengthen the array for every element, matched or not
52425 if ( seed ) {
52426 unmatched.push( elem );
52427 }
52428 }
52429 }
52430
52431 // `i` is now the count of elements visited above, and adding it to `matchedCount`
52432 // makes the latter nonnegative.
52433 matchedCount += i;
52434
52435 // Apply set filters to unmatched elements
52436 // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
52437 // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
52438 // no element matchers and no seed.
52439 // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
52440 // case, which will result in a "00" `matchedCount` that differs from `i` but is also
52441 // numerically zero.
52442 if ( bySet && i !== matchedCount ) {
52443 j = 0;
52444 while ( (matcher = setMatchers[j++]) ) {
52445 matcher( unmatched, setMatched, context, xml );
52446 }
52447
52448 if ( seed ) {
52449 // Reintegrate element matches to eliminate the need for sorting
52450 if ( matchedCount > 0 ) {
52451 while ( i-- ) {
52452 if ( !(unmatched[i] || setMatched[i]) ) {
52453 setMatched[i] = pop.call( results );
52454 }
52455 }
52456 }
52457
52458 // Discard index placeholder values to get only actual matches
52459 setMatched = condense( setMatched );
52460 }
52461
52462 // Add matches to results
52463 push.apply( results, setMatched );
52464
52465 // Seedless set matches succeeding multiple successful matchers stipulate sorting
52466 if ( outermost && !seed && setMatched.length > 0 &&
52467 ( matchedCount + setMatchers.length ) > 1 ) {
52468
52469 Sizzle.uniqueSort( results );
52470 }
52471 }
52472
52473 // Override manipulation of globals by nested matchers
52474 if ( outermost ) {
52475 dirruns = dirrunsUnique;
52476 outermostContext = contextBackup;
52477 }
52478
52479 return unmatched;
52480 };
52481
52482 return bySet ?
52483 markFunction( superMatcher ) :
52484 superMatcher;
52485 }
52486
52487 compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
52488 var i,
52489 setMatchers = [],
52490 elementMatchers = [],
52491 cached = compilerCache[ selector + " " ];
52492
52493 if ( !cached ) {
52494 // Generate a function of recursive functions that can be used to check each element
52495 if ( !match ) {
52496 match = tokenize( selector );
52497 }
52498 i = match.length;
52499 while ( i-- ) {
52500 cached = matcherFromTokens( match[i] );
52501 if ( cached[ expando ] ) {
52502 setMatchers.push( cached );
52503 } else {
52504 elementMatchers.push( cached );
52505 }
52506 }
52507
52508 // Cache the compiled function
52509 cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
52510
52511 // Save selector and tokenization
52512 cached.selector = selector;
52513 }
52514 return cached;
52515 };
52516
52517 /**
52518 * A low-level selection function that works with Sizzle's compiled
52519 * selector functions
52520 * @param {String|Function} selector A selector or a pre-compiled
52521 * selector function built with Sizzle.compile
52522 * @param {Element} context
52523 * @param {Array} [results]
52524 * @param {Array} [seed] A set of elements to match against
52525 */
52526 select = Sizzle.select = function( selector, context, results, seed ) {
52527 var i, tokens, token, type, find,
52528 compiled = typeof selector === "function" && selector,
52529 match = !seed && tokenize( (selector = compiled.selector || selector) );
52530
52531 results = results || [];
52532
52533 // Try to minimize operations if there is only one selector in the list and no seed
52534 // (the latter of which guarantees us context)
52535 if ( match.length === 1 ) {
52536
52537 // Reduce context if the leading compound selector is an ID
52538 tokens = match[0] = match[0].slice( 0 );
52539 if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
52540 support.getById && context.nodeType === 9 && documentIsHTML &&
52541 Expr.relative[ tokens[1].type ] ) {
52542
52543 context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
52544 if ( !context ) {
52545 return results;
52546
52547 // Precompiled matchers will still verify ancestry, so step up a level
52548 } else if ( compiled ) {
52549 context = context.parentNode;
52550 }
52551
52552 selector = selector.slice( tokens.shift().value.length );
52553 }
52554
52555 // Fetch a seed set for right-to-left matching
52556 i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
52557 while ( i-- ) {
52558 token = tokens[i];
52559
52560 // Abort if we hit a combinator
52561 if ( Expr.relative[ (type = token.type) ] ) {
52562 break;
52563 }
52564 if ( (find = Expr.find[ type ]) ) {
52565 // Search, expanding context for leading sibling combinators
52566 if ( (seed = find(
52567 token.matches[0].replace( runescape, funescape ),
52568 rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
52569 )) ) {
52570
52571 // If seed is empty or no tokens remain, we can return early
52572 tokens.splice( i, 1 );
52573 selector = seed.length && toSelector( tokens );
52574 if ( !selector ) {
52575 push.apply( results, seed );
52576 return results;
52577 }
52578
52579 break;
52580 }
52581 }
52582 }
52583 }
52584
52585 // Compile and execute a filtering function if one is not provided
52586 // Provide `match` to avoid retokenization if we modified the selector above
52587 ( compiled || compile( selector, match ) )(
52588 seed,
52589 context,
52590 !documentIsHTML,
52591 results,
52592 !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
52593 );
52594 return results;
52595 };
52596
52597 // One-time assignments
52598
52599 // Sort stability
52600 support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
52601
52602 // Support: Chrome 14-35+
52603 // Always assume duplicates if they aren't passed to the comparison function
52604 support.detectDuplicates = !!hasDuplicate;
52605
52606 // Initialize against the default document
52607 setDocument();
52608
52609 // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
52610 // Detached nodes confoundingly follow *each other*
52611 support.sortDetached = assert(function( div1 ) {
52612 // Should return 1, but returns 4 (following)
52613 return div1.compareDocumentPosition( document.createElement("div") ) & 1;
52614 });
52615
52616 // Support: IE<8
52617 // Prevent attribute/property "interpolation"
52618 // http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
52619 if ( !assert(function( div ) {
52620 div.innerHTML = "<a href='#'></a>";
52621 return div.firstChild.getAttribute("href") === "#" ;
52622 }) ) {
52623 addHandle( "type|href|height|width", function( elem, name, isXML ) {
52624 if ( !isXML ) {
52625 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
52626 }
52627 });
52628 }
52629
52630 // Support: IE<9
52631 // Use defaultValue in place of getAttribute("value")
52632 if ( !support.attributes || !assert(function( div ) {
52633 div.innerHTML = "<input/>";
52634 div.firstChild.setAttribute( "value", "" );
52635 return div.firstChild.getAttribute( "value" ) === "";
52636 }) ) {
52637 addHandle( "value", function( elem, name, isXML ) {
52638 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
52639 return elem.defaultValue;
52640 }
52641 });
52642 }
52643
52644 // Support: IE<9
52645 // Use getAttributeNode to fetch booleans when getAttribute lies
52646 if ( !assert(function( div ) {
52647 return div.getAttribute("disabled") == null;
52648 }) ) {
52649 addHandle( booleans, function( elem, name, isXML ) {
52650 var val;
52651 if ( !isXML ) {
52652 return elem[ name ] === true ? name.toLowerCase() :
52653 (val = elem.getAttributeNode( name )) && val.specified ?
52654 val.value :
52655 null;
52656 }
52657 });
52658 }
52659
52660 return Sizzle;
52661
52662 })( window );
52663
52664
52665
52666 jQuery.find = Sizzle;
52667 jQuery.expr = Sizzle.selectors;
52668 jQuery.expr[ ":" ] = jQuery.expr.pseudos;
52669 jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
52670 jQuery.text = Sizzle.getText;
52671 jQuery.isXMLDoc = Sizzle.isXML;
52672 jQuery.contains = Sizzle.contains;
52673
52674
52675
52676 var dir = function( elem, dir, until ) {
52677 var matched = [],
52678 truncate = until !== undefined;
52679
52680 while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
52681 if ( elem.nodeType === 1 ) {
52682 if ( truncate && jQuery( elem ).is( until ) ) {
52683 break;
52684 }
52685 matched.push( elem );
52686 }
52687 }
52688 return matched;
52689 };
52690
52691
52692 var siblings = function( n, elem ) {
52693 var matched = [];
52694
52695 for ( ; n; n = n.nextSibling ) {
52696 if ( n.nodeType === 1 && n !== elem ) {
52697 matched.push( n );
52698 }
52699 }
52700
52701 return matched;
52702 };
52703
52704
52705 var rneedsContext = jQuery.expr.match.needsContext;
52706
52707 var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ );
52708
52709
52710
52711 var risSimple = /^.[^:#\[\.,]*$/;
52712
52713 // Implement the identical functionality for filter and not
52714 function winnow( elements, qualifier, not ) {
52715 if ( jQuery.isFunction( qualifier ) ) {
52716 return jQuery.grep( elements, function( elem, i ) {
52717 /* jshint -W018 */
52718 return !!qualifier.call( elem, i, elem ) !== not;
52719 } );
52720
52721 }
52722
52723 if ( qualifier.nodeType ) {
52724 return jQuery.grep( elements, function( elem ) {
52725 return ( elem === qualifier ) !== not;
52726 } );
52727
52728 }
52729
52730 if ( typeof qualifier === "string" ) {
52731 if ( risSimple.test( qualifier ) ) {
52732 return jQuery.filter( qualifier, elements, not );
52733 }
52734
52735 qualifier = jQuery.filter( qualifier, elements );
52736 }
52737
52738 return jQuery.grep( elements, function( elem ) {
52739 return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
52740 } );
52741 }
52742
52743 jQuery.filter = function( expr, elems, not ) {
52744 var elem = elems[ 0 ];
52745
52746 if ( not ) {
52747 expr = ":not(" + expr + ")";
52748 }
52749
52750 return elems.length === 1 && elem.nodeType === 1 ?
52751 jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
52752 jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
52753 return elem.nodeType === 1;
52754 } ) );
52755 };
52756
52757 jQuery.fn.extend( {
52758 find: function( selector ) {
52759 var i,
52760 len = this.length,
52761 ret = [],
52762 self = this;
52763
52764 if ( typeof selector !== "string" ) {
52765 return this.pushStack( jQuery( selector ).filter( function() {
52766 for ( i = 0; i < len; i++ ) {
52767 if ( jQuery.contains( self[ i ], this ) ) {
52768 return true;
52769 }
52770 }
52771 } ) );
52772 }
52773
52774 for ( i = 0; i < len; i++ ) {
52775 jQuery.find( selector, self[ i ], ret );
52776 }
52777
52778 // Needed because $( selector, context ) becomes $( context ).find( selector )
52779 ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
52780 ret.selector = this.selector ? this.selector + " " + selector : selector;
52781 return ret;
52782 },
52783 filter: function( selector ) {
52784 return this.pushStack( winnow( this, selector || [], false ) );
52785 },
52786 not: function( selector ) {
52787 return this.pushStack( winnow( this, selector || [], true ) );
52788 },
52789 is: function( selector ) {
52790 return !!winnow(
52791 this,
52792
52793 // If this is a positional/relative selector, check membership in the returned set
52794 // so $("p:first").is("p:last") won't return true for a doc with two "p".
52795 typeof selector === "string" && rneedsContext.test( selector ) ?
52796 jQuery( selector ) :
52797 selector || [],
52798 false
52799 ).length;
52800 }
52801 } );
52802
52803
52804 // Initialize a jQuery object
52805
52806
52807 // A central reference to the root jQuery(document)
52808 var rootjQuery,
52809
52810 // A simple way to check for HTML strings
52811 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
52812 // Strict HTML recognition (#11290: must start with <)
52813 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
52814
52815 init = jQuery.fn.init = function( selector, context, root ) {
52816 var match, elem;
52817
52818 // HANDLE: $(""), $(null), $(undefined), $(false)
52819 if ( !selector ) {
52820 return this;
52821 }
52822
52823 // Method init() accepts an alternate rootjQuery
52824 // so migrate can support jQuery.sub (gh-2101)
52825 root = root || rootjQuery;
52826
52827 // Handle HTML strings
52828 if ( typeof selector === "string" ) {
52829 if ( selector[ 0 ] === "<" &&
52830 selector[ selector.length - 1 ] === ">" &&
52831 selector.length >= 3 ) {
52832
52833 // Assume that strings that start and end with <> are HTML and skip the regex check
52834 match = [ null, selector, null ];
52835
52836 } else {
52837 match = rquickExpr.exec( selector );
52838 }
52839
52840 // Match html or make sure no context is specified for #id
52841 if ( match && ( match[ 1 ] || !context ) ) {
52842
52843 // HANDLE: $(html) -> $(array)
52844 if ( match[ 1 ] ) {
52845 context = context instanceof jQuery ? context[ 0 ] : context;
52846
52847 // Option to run scripts is true for back-compat
52848 // Intentionally let the error be thrown if parseHTML is not present
52849 jQuery.merge( this, jQuery.parseHTML(
52850 match[ 1 ],
52851 context && context.nodeType ? context.ownerDocument || context : document,
52852 true
52853 ) );
52854
52855 // HANDLE: $(html, props)
52856 if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
52857 for ( match in context ) {
52858
52859 // Properties of context are called as methods if possible
52860 if ( jQuery.isFunction( this[ match ] ) ) {
52861 this[ match ]( context[ match ] );
52862
52863 // ...and otherwise set as attributes
52864 } else {
52865 this.attr( match, context[ match ] );
52866 }
52867 }
52868 }
52869
52870 return this;
52871
52872 // HANDLE: $(#id)
52873 } else {
52874 elem = document.getElementById( match[ 2 ] );
52875
52876 // Support: Blackberry 4.6
52877 // gEBID returns nodes no longer in the document (#6963)
52878 if ( elem && elem.parentNode ) {
52879
52880 // Inject the element directly into the jQuery object
52881 this.length = 1;
52882 this[ 0 ] = elem;
52883 }
52884
52885 this.context = document;
52886 this.selector = selector;
52887 return this;
52888 }
52889
52890 // HANDLE: $(expr, $(...))
52891 } else if ( !context || context.jquery ) {
52892 return ( context || root ).find( selector );
52893
52894 // HANDLE: $(expr, context)
52895 // (which is just equivalent to: $(context).find(expr)
52896 } else {
52897 return this.constructor( context ).find( selector );
52898 }
52899
52900 // HANDLE: $(DOMElement)
52901 } else if ( selector.nodeType ) {
52902 this.context = this[ 0 ] = selector;
52903 this.length = 1;
52904 return this;
52905
52906 // HANDLE: $(function)
52907 // Shortcut for document ready
52908 } else if ( jQuery.isFunction( selector ) ) {
52909 return root.ready !== undefined ?
52910 root.ready( selector ) :
52911
52912 // Execute immediately if ready is not present
52913 selector( jQuery );
52914 }
52915
52916 if ( selector.selector !== undefined ) {
52917 this.selector = selector.selector;
52918 this.context = selector.context;
52919 }
52920
52921 return jQuery.makeArray( selector, this );
52922 };
52923
52924 // Give the init function the jQuery prototype for later instantiation
52925 init.prototype = jQuery.fn;
52926
52927 // Initialize central reference
52928 rootjQuery = jQuery( document );
52929
52930
52931 var rparentsprev = /^(?:parents|prev(?:Until|All))/,
52932
52933 // Methods guaranteed to produce a unique set when starting from a unique set
52934 guaranteedUnique = {
52935 children: true,
52936 contents: true,
52937 next: true,
52938 prev: true
52939 };
52940
52941 jQuery.fn.extend( {
52942 has: function( target ) {
52943 var targets = jQuery( target, this ),
52944 l = targets.length;
52945
52946 return this.filter( function() {
52947 var i = 0;
52948 for ( ; i < l; i++ ) {
52949 if ( jQuery.contains( this, targets[ i ] ) ) {
52950 return true;
52951 }
52952 }
52953 } );
52954 },
52955
52956 closest: function( selectors, context ) {
52957 var cur,
52958 i = 0,
52959 l = this.length,
52960 matched = [],
52961 pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
52962 jQuery( selectors, context || this.context ) :
52963 0;
52964
52965 for ( ; i < l; i++ ) {
52966 for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
52967
52968 // Always skip document fragments
52969 if ( cur.nodeType < 11 && ( pos ?
52970 pos.index( cur ) > -1 :
52971
52972 // Don't pass non-elements to Sizzle
52973 cur.nodeType === 1 &&
52974 jQuery.find.matchesSelector( cur, selectors ) ) ) {
52975
52976 matched.push( cur );
52977 break;
52978 }
52979 }
52980 }
52981
52982 return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
52983 },
52984
52985 // Determine the position of an element within the set
52986 index: function( elem ) {
52987
52988 // No argument, return index in parent
52989 if ( !elem ) {
52990 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
52991 }
52992
52993 // Index in selector
52994 if ( typeof elem === "string" ) {
52995 return indexOf.call( jQuery( elem ), this[ 0 ] );
52996 }
52997
52998 // Locate the position of the desired element
52999 return indexOf.call( this,
53000
53001 // If it receives a jQuery object, the first element is used
53002 elem.jquery ? elem[ 0 ] : elem
53003 );
53004 },
53005
53006 add: function( selector, context ) {
53007 return this.pushStack(
53008 jQuery.uniqueSort(
53009 jQuery.merge( this.get(), jQuery( selector, context ) )
53010 )
53011 );
53012 },
53013
53014 addBack: function( selector ) {
53015 return this.add( selector == null ?
53016 this.prevObject : this.prevObject.filter( selector )
53017 );
53018 }
53019 } );
53020
53021 function sibling( cur, dir ) {
53022 while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
53023 return cur;
53024 }
53025
53026 jQuery.each( {
53027 parent: function( elem ) {
53028 var parent = elem.parentNode;
53029 return parent && parent.nodeType !== 11 ? parent : null;
53030 },
53031 parents: function( elem ) {
53032 return dir( elem, "parentNode" );
53033 },
53034 parentsUntil: function( elem, i, until ) {
53035 return dir( elem, "parentNode", until );
53036 },
53037 next: function( elem ) {
53038 return sibling( elem, "nextSibling" );
53039 },
53040 prev: function( elem ) {
53041 return sibling( elem, "previousSibling" );
53042 },
53043 nextAll: function( elem ) {
53044 return dir( elem, "nextSibling" );
53045 },
53046 prevAll: function( elem ) {
53047 return dir( elem, "previousSibling" );
53048 },
53049 nextUntil: function( elem, i, until ) {
53050 return dir( elem, "nextSibling", until );
53051 },
53052 prevUntil: function( elem, i, until ) {
53053 return dir( elem, "previousSibling", until );
53054 },
53055 siblings: function( elem ) {
53056 return siblings( ( elem.parentNode || {} ).firstChild, elem );
53057 },
53058 children: function( elem ) {
53059 return siblings( elem.firstChild );
53060 },
53061 contents: function( elem ) {
53062 return elem.contentDocument || jQuery.merge( [], elem.childNodes );
53063 }
53064 }, function( name, fn ) {
53065 jQuery.fn[ name ] = function( until, selector ) {
53066 var matched = jQuery.map( this, fn, until );
53067
53068 if ( name.slice( -5 ) !== "Until" ) {
53069 selector = until;
53070 }
53071
53072 if ( selector && typeof selector === "string" ) {
53073 matched = jQuery.filter( selector, matched );
53074 }
53075
53076 if ( this.length > 1 ) {
53077
53078 // Remove duplicates
53079 if ( !guaranteedUnique[ name ] ) {
53080 jQuery.uniqueSort( matched );
53081 }
53082
53083 // Reverse order for parents* and prev-derivatives
53084 if ( rparentsprev.test( name ) ) {
53085 matched.reverse();
53086 }
53087 }
53088
53089 return this.pushStack( matched );
53090 };
53091 } );
53092 var rnotwhite = ( /\S+/g );
53093
53094
53095
53096 // Convert String-formatted options into Object-formatted ones
53097 function createOptions( options ) {
53098 var object = {};
53099 jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
53100 object[ flag ] = true;
53101 } );
53102 return object;
53103 }
53104
53105 /*
53106 * Create a callback list using the following parameters:
53107 *
53108 * options: an optional list of space-separated options that will change how
53109 * the callback list behaves or a more traditional option object
53110 *
53111 * By default a callback list will act like an event callback list and can be
53112 * "fired" multiple times.
53113 *
53114 * Possible options:
53115 *
53116 * once: will ensure the callback list can only be fired once (like a Deferred)
53117 *
53118 * memory: will keep track of previous values and will call any callback added
53119 * after the list has been fired right away with the latest "memorized"
53120 * values (like a Deferred)
53121 *
53122 * unique: will ensure a callback can only be added once (no duplicate in the list)
53123 *
53124 * stopOnFalse: interrupt callings when a callback returns false
53125 *
53126 */
53127 jQuery.Callbacks = function( options ) {
53128
53129 // Convert options from String-formatted to Object-formatted if needed
53130 // (we check in cache first)
53131 options = typeof options === "string" ?
53132 createOptions( options ) :
53133 jQuery.extend( {}, options );
53134
53135 var // Flag to know if list is currently firing
53136 firing,
53137
53138 // Last fire value for non-forgettable lists
53139 memory,
53140
53141 // Flag to know if list was already fired
53142 fired,
53143
53144 // Flag to prevent firing
53145 locked,
53146
53147 // Actual callback list
53148 list = [],
53149
53150 // Queue of execution data for repeatable lists
53151 queue = [],
53152
53153 // Index of currently firing callback (modified by add/remove as needed)
53154 firingIndex = -1,
53155
53156 // Fire callbacks
53157 fire = function() {
53158
53159 // Enforce single-firing
53160 locked = options.once;
53161
53162 // Execute callbacks for all pending executions,
53163 // respecting firingIndex overrides and runtime changes
53164 fired = firing = true;
53165 for ( ; queue.length; firingIndex = -1 ) {
53166 memory = queue.shift();
53167 while ( ++firingIndex < list.length ) {
53168
53169 // Run callback and check for early termination
53170 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
53171 options.stopOnFalse ) {
53172
53173 // Jump to end and forget the data so .add doesn't re-fire
53174 firingIndex = list.length;
53175 memory = false;
53176 }
53177 }
53178 }
53179
53180 // Forget the data if we're done with it
53181 if ( !options.memory ) {
53182 memory = false;
53183 }
53184
53185 firing = false;
53186
53187 // Clean up if we're done firing for good
53188 if ( locked ) {
53189
53190 // Keep an empty list if we have data for future add calls
53191 if ( memory ) {
53192 list = [];
53193
53194 // Otherwise, this object is spent
53195 } else {
53196 list = "";
53197 }
53198 }
53199 },
53200
53201 // Actual Callbacks object
53202 self = {
53203
53204 // Add a callback or a collection of callbacks to the list
53205 add: function() {
53206 if ( list ) {
53207
53208 // If we have memory from a past run, we should fire after adding
53209 if ( memory && !firing ) {
53210 firingIndex = list.length - 1;
53211 queue.push( memory );
53212 }
53213
53214 ( function add( args ) {
53215 jQuery.each( args, function( _, arg ) {
53216 if ( jQuery.isFunction( arg ) ) {
53217 if ( !options.unique || !self.has( arg ) ) {
53218 list.push( arg );
53219 }
53220 } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
53221
53222 // Inspect recursively
53223 add( arg );
53224 }
53225 } );
53226 } )( arguments );
53227
53228 if ( memory && !firing ) {
53229 fire();
53230 }
53231 }
53232 return this;
53233 },
53234
53235 // Remove a callback from the list
53236 remove: function() {
53237 jQuery.each( arguments, function( _, arg ) {
53238 var index;
53239 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
53240 list.splice( index, 1 );
53241
53242 // Handle firing indexes
53243 if ( index <= firingIndex ) {
53244 firingIndex--;
53245 }
53246 }
53247 } );
53248 return this;
53249 },
53250
53251 // Check if a given callback is in the list.
53252 // If no argument is given, return whether or not list has callbacks attached.
53253 has: function( fn ) {
53254 return fn ?
53255 jQuery.inArray( fn, list ) > -1 :
53256 list.length > 0;
53257 },
53258
53259 // Remove all callbacks from the list
53260 empty: function() {
53261 if ( list ) {
53262 list = [];
53263 }
53264 return this;
53265 },
53266
53267 // Disable .fire and .add
53268 // Abort any current/pending executions
53269 // Clear all callbacks and values
53270 disable: function() {
53271 locked = queue = [];
53272 list = memory = "";
53273 return this;
53274 },
53275 disabled: function() {
53276 return !list;
53277 },
53278
53279 // Disable .fire
53280 // Also disable .add unless we have memory (since it would have no effect)
53281 // Abort any pending executions
53282 lock: function() {
53283 locked = queue = [];
53284 if ( !memory ) {
53285 list = memory = "";
53286 }
53287 return this;
53288 },
53289 locked: function() {
53290 return !!locked;
53291 },
53292
53293 // Call all callbacks with the given context and arguments
53294 fireWith: function( context, args ) {
53295 if ( !locked ) {
53296 args = args || [];
53297 args = [ context, args.slice ? args.slice() : args ];
53298 queue.push( args );
53299 if ( !firing ) {
53300 fire();
53301 }
53302 }
53303 return this;
53304 },
53305
53306 // Call all the callbacks with the given arguments
53307 fire: function() {
53308 self.fireWith( this, arguments );
53309 return this;
53310 },
53311
53312 // To know if the callbacks have already been called at least once
53313 fired: function() {
53314 return !!fired;
53315 }
53316 };
53317
53318 return self;
53319 };
53320
53321
53322 jQuery.extend( {
53323
53324 Deferred: function( func ) {
53325 var tuples = [
53326
53327 // action, add listener, listener list, final state
53328 [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ],
53329 [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ],
53330 [ "notify", "progress", jQuery.Callbacks( "memory" ) ]
53331 ],
53332 state = "pending",
53333 promise = {
53334 state: function() {
53335 return state;
53336 },
53337 always: function() {
53338 deferred.done( arguments ).fail( arguments );
53339 return this;
53340 },
53341 then: function( /* fnDone, fnFail, fnProgress */ ) {
53342 var fns = arguments;
53343 return jQuery.Deferred( function( newDefer ) {
53344 jQuery.each( tuples, function( i, tuple ) {
53345 var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
53346
53347 // deferred[ done | fail | progress ] for forwarding actions to newDefer
53348 deferred[ tuple[ 1 ] ]( function() {
53349 var returned = fn && fn.apply( this, arguments );
53350 if ( returned && jQuery.isFunction( returned.promise ) ) {
53351 returned.promise()
53352 .progress( newDefer.notify )
53353 .done( newDefer.resolve )
53354 .fail( newDefer.reject );
53355 } else {
53356 newDefer[ tuple[ 0 ] + "With" ](
53357 this === promise ? newDefer.promise() : this,
53358 fn ? [ returned ] : arguments
53359 );
53360 }
53361 } );
53362 } );
53363 fns = null;
53364 } ).promise();
53365 },
53366
53367 // Get a promise for this deferred
53368 // If obj is provided, the promise aspect is added to the object
53369 promise: function( obj ) {
53370 return obj != null ? jQuery.extend( obj, promise ) : promise;
53371 }
53372 },
53373 deferred = {};
53374
53375 // Keep pipe for back-compat
53376 promise.pipe = promise.then;
53377
53378 // Add list-specific methods
53379 jQuery.each( tuples, function( i, tuple ) {
53380 var list = tuple[ 2 ],
53381 stateString = tuple[ 3 ];
53382
53383 // promise[ done | fail | progress ] = list.add
53384 promise[ tuple[ 1 ] ] = list.add;
53385
53386 // Handle state
53387 if ( stateString ) {
53388 list.add( function() {
53389
53390 // state = [ resolved | rejected ]
53391 state = stateString;
53392
53393 // [ reject_list | resolve_list ].disable; progress_list.lock
53394 }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
53395 }
53396
53397 // deferred[ resolve | reject | notify ]
53398 deferred[ tuple[ 0 ] ] = function() {
53399 deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments );
53400 return this;
53401 };
53402 deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
53403 } );
53404
53405 // Make the deferred a promise
53406 promise.promise( deferred );
53407
53408 // Call given func if any
53409 if ( func ) {
53410 func.call( deferred, deferred );
53411 }
53412
53413 // All done!
53414 return deferred;
53415 },
53416
53417 // Deferred helper
53418 when: function( subordinate /* , ..., subordinateN */ ) {
53419 var i = 0,
53420 resolveValues = slice.call( arguments ),
53421 length = resolveValues.length,
53422
53423 // the count of uncompleted subordinates
53424 remaining = length !== 1 ||
53425 ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
53426
53427 // the master Deferred.
53428 // If resolveValues consist of only a single Deferred, just use that.
53429 deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
53430
53431 // Update function for both resolve and progress values
53432 updateFunc = function( i, contexts, values ) {
53433 return function( value ) {
53434 contexts[ i ] = this;
53435 values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
53436 if ( values === progressValues ) {
53437 deferred.notifyWith( contexts, values );
53438 } else if ( !( --remaining ) ) {
53439 deferred.resolveWith( contexts, values );
53440 }
53441 };
53442 },
53443
53444 progressValues, progressContexts, resolveContexts;
53445
53446 // Add listeners to Deferred subordinates; treat others as resolved
53447 if ( length > 1 ) {
53448 progressValues = new Array( length );
53449 progressContexts = new Array( length );
53450 resolveContexts = new Array( length );
53451 for ( ; i < length; i++ ) {
53452 if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
53453 resolveValues[ i ].promise()
53454 .progress( updateFunc( i, progressContexts, progressValues ) )
53455 .done( updateFunc( i, resolveContexts, resolveValues ) )
53456 .fail( deferred.reject );
53457 } else {
53458 --remaining;
53459 }
53460 }
53461 }
53462
53463 // If we're not waiting on anything, resolve the master
53464 if ( !remaining ) {
53465 deferred.resolveWith( resolveContexts, resolveValues );
53466 }
53467
53468 return deferred.promise();
53469 }
53470 } );
53471
53472
53473 // The deferred used on DOM ready
53474 var readyList;
53475
53476 jQuery.fn.ready = function( fn ) {
53477
53478 // Add the callback
53479 jQuery.ready.promise().done( fn );
53480
53481 return this;
53482 };
53483
53484 jQuery.extend( {
53485
53486 // Is the DOM ready to be used? Set to true once it occurs.
53487 isReady: false,
53488
53489 // A counter to track how many items to wait for before
53490 // the ready event fires. See #6781
53491 readyWait: 1,
53492
53493 // Hold (or release) the ready event
53494 holdReady: function( hold ) {
53495 if ( hold ) {
53496 jQuery.readyWait++;
53497 } else {
53498 jQuery.ready( true );
53499 }
53500 },
53501
53502 // Handle when the DOM is ready
53503 ready: function( wait ) {
53504
53505 // Abort if there are pending holds or we're already ready
53506 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
53507 return;
53508 }
53509
53510 // Remember that the DOM is ready
53511 jQuery.isReady = true;
53512
53513 // If a normal DOM Ready event fired, decrement, and wait if need be
53514 if ( wait !== true && --jQuery.readyWait > 0 ) {
53515 return;
53516 }
53517
53518 // If there are functions bound, to execute
53519 readyList.resolveWith( document, [ jQuery ] );
53520
53521 // Trigger any bound ready events
53522 if ( jQuery.fn.triggerHandler ) {
53523 jQuery( document ).triggerHandler( "ready" );
53524 jQuery( document ).off( "ready" );
53525 }
53526 }
53527 } );
53528
53529 /**
53530 * The ready event handler and self cleanup method
53531 */
53532 function completed() {
53533 document.removeEventListener( "DOMContentLoaded", completed );
53534 window.removeEventListener( "load", completed );
53535 jQuery.ready();
53536 }
53537
53538 jQuery.ready.promise = function( obj ) {
53539 if ( !readyList ) {
53540
53541 readyList = jQuery.Deferred();
53542
53543 // Catch cases where $(document).ready() is called
53544 // after the browser event has already occurred.
53545 // Support: IE9-10 only
53546 // Older IE sometimes signals "interactive" too soon
53547 if ( document.readyState === "complete" ||
53548 ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
53549
53550 // Handle it asynchronously to allow scripts the opportunity to delay ready
53551 window.setTimeout( jQuery.ready );
53552
53553 } else {
53554
53555 // Use the handy event callback
53556 document.addEventListener( "DOMContentLoaded", completed );
53557
53558 // A fallback to window.onload, that will always work
53559 window.addEventListener( "load", completed );
53560 }
53561 }
53562 return readyList.promise( obj );
53563 };
53564
53565 // Kick off the DOM ready check even if the user does not
53566 jQuery.ready.promise();
53567
53568
53569
53570
53571 // Multifunctional method to get and set values of a collection
53572 // The value/s can optionally be executed if it's a function
53573 var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
53574 var i = 0,
53575 len = elems.length,
53576 bulk = key == null;
53577
53578 // Sets many values
53579 if ( jQuery.type( key ) === "object" ) {
53580 chainable = true;
53581 for ( i in key ) {
53582 access( elems, fn, i, key[ i ], true, emptyGet, raw );
53583 }
53584
53585 // Sets one value
53586 } else if ( value !== undefined ) {
53587 chainable = true;
53588
53589 if ( !jQuery.isFunction( value ) ) {
53590 raw = true;
53591 }
53592
53593 if ( bulk ) {
53594
53595 // Bulk operations run against the entire set
53596 if ( raw ) {
53597 fn.call( elems, value );
53598 fn = null;
53599
53600 // ...except when executing function values
53601 } else {
53602 bulk = fn;
53603 fn = function( elem, key, value ) {
53604 return bulk.call( jQuery( elem ), value );
53605 };
53606 }
53607 }
53608
53609 if ( fn ) {
53610 for ( ; i < len; i++ ) {
53611 fn(
53612 elems[ i ], key, raw ?
53613 value :
53614 value.call( elems[ i ], i, fn( elems[ i ], key ) )
53615 );
53616 }
53617 }
53618 }
53619
53620 return chainable ?
53621 elems :
53622
53623 // Gets
53624 bulk ?
53625 fn.call( elems ) :
53626 len ? fn( elems[ 0 ], key ) : emptyGet;
53627 };
53628 var acceptData = function( owner ) {
53629
53630 // Accepts only:
53631 // - Node
53632 // - Node.ELEMENT_NODE
53633 // - Node.DOCUMENT_NODE
53634 // - Object
53635 // - Any
53636 /* jshint -W018 */
53637 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
53638 };
53639
53640
53641
53642
53643 function Data() {
53644 this.expando = jQuery.expando + Data.uid++;
53645 }
53646
53647 Data.uid = 1;
53648
53649 Data.prototype = {
53650
53651 register: function( owner, initial ) {
53652 var value = initial || {};
53653
53654 // If it is a node unlikely to be stringify-ed or looped over
53655 // use plain assignment
53656 if ( owner.nodeType ) {
53657 owner[ this.expando ] = value;
53658
53659 // Otherwise secure it in a non-enumerable, non-writable property
53660 // configurability must be true to allow the property to be
53661 // deleted with the delete operator
53662 } else {
53663 Object.defineProperty( owner, this.expando, {
53664 value: value,
53665 writable: true,
53666 configurable: true
53667 } );
53668 }
53669 return owner[ this.expando ];
53670 },
53671 cache: function( owner ) {
53672
53673 // We can accept data for non-element nodes in modern browsers,
53674 // but we should not, see #8335.
53675 // Always return an empty object.
53676 if ( !acceptData( owner ) ) {
53677 return {};
53678 }
53679
53680 // Check if the owner object already has a cache
53681 var value = owner[ this.expando ];
53682
53683 // If not, create one
53684 if ( !value ) {
53685 value = {};
53686
53687 // We can accept data for non-element nodes in modern browsers,
53688 // but we should not, see #8335.
53689 // Always return an empty object.
53690 if ( acceptData( owner ) ) {
53691
53692 // If it is a node unlikely to be stringify-ed or looped over
53693 // use plain assignment
53694 if ( owner.nodeType ) {
53695 owner[ this.expando ] = value;
53696
53697 // Otherwise secure it in a non-enumerable property
53698 // configurable must be true to allow the property to be
53699 // deleted when data is removed
53700 } else {
53701 Object.defineProperty( owner, this.expando, {
53702 value: value,
53703 configurable: true
53704 } );
53705 }
53706 }
53707 }
53708
53709 return value;
53710 },
53711 set: function( owner, data, value ) {
53712 var prop,
53713 cache = this.cache( owner );
53714
53715 // Handle: [ owner, key, value ] args
53716 if ( typeof data === "string" ) {
53717 cache[ data ] = value;
53718
53719 // Handle: [ owner, { properties } ] args
53720 } else {
53721
53722 // Copy the properties one-by-one to the cache object
53723 for ( prop in data ) {
53724 cache[ prop ] = data[ prop ];
53725 }
53726 }
53727 return cache;
53728 },
53729 get: function( owner, key ) {
53730 return key === undefined ?
53731 this.cache( owner ) :
53732 owner[ this.expando ] && owner[ this.expando ][ key ];
53733 },
53734 access: function( owner, key, value ) {
53735 var stored;
53736
53737 // In cases where either:
53738 //
53739 // 1. No key was specified
53740 // 2. A string key was specified, but no value provided
53741 //
53742 // Take the "read" path and allow the get method to determine
53743 // which value to return, respectively either:
53744 //
53745 // 1. The entire cache object
53746 // 2. The data stored at the key
53747 //
53748 if ( key === undefined ||
53749 ( ( key && typeof key === "string" ) && value === undefined ) ) {
53750
53751 stored = this.get( owner, key );
53752
53753 return stored !== undefined ?
53754 stored : this.get( owner, jQuery.camelCase( key ) );
53755 }
53756
53757 // When the key is not a string, or both a key and value
53758 // are specified, set or extend (existing objects) with either:
53759 //
53760 // 1. An object of properties
53761 // 2. A key and value
53762 //
53763 this.set( owner, key, value );
53764
53765 // Since the "set" path can have two possible entry points
53766 // return the expected data based on which path was taken[*]
53767 return value !== undefined ? value : key;
53768 },
53769 remove: function( owner, key ) {
53770 var i, name, camel,
53771 cache = owner[ this.expando ];
53772
53773 if ( cache === undefined ) {
53774 return;
53775 }
53776
53777 if ( key === undefined ) {
53778 this.register( owner );
53779
53780 } else {
53781
53782 // Support array or space separated string of keys
53783 if ( jQuery.isArray( key ) ) {
53784
53785 // If "name" is an array of keys...
53786 // When data is initially created, via ("key", "val") signature,
53787 // keys will be converted to camelCase.
53788 // Since there is no way to tell _how_ a key was added, remove
53789 // both plain key and camelCase key. #12786
53790 // This will only penalize the array argument path.
53791 name = key.concat( key.map( jQuery.camelCase ) );
53792 } else {
53793 camel = jQuery.camelCase( key );
53794
53795 // Try the string as a key before any manipulation
53796 if ( key in cache ) {
53797 name = [ key, camel ];
53798 } else {
53799
53800 // If a key with the spaces exists, use it.
53801 // Otherwise, create an array by matching non-whitespace
53802 name = camel;
53803 name = name in cache ?
53804 [ name ] : ( name.match( rnotwhite ) || [] );
53805 }
53806 }
53807
53808 i = name.length;
53809
53810 while ( i-- ) {
53811 delete cache[ name[ i ] ];
53812 }
53813 }
53814
53815 // Remove the expando if there's no more data
53816 if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
53817
53818 // Support: Chrome <= 35-45+
53819 // Webkit & Blink performance suffers when deleting properties
53820 // from DOM nodes, so set to undefined instead
53821 // https://code.google.com/p/chromium/issues/detail?id=378607
53822 if ( owner.nodeType ) {
53823 owner[ this.expando ] = undefined;
53824 } else {
53825 delete owner[ this.expando ];
53826 }
53827 }
53828 },
53829 hasData: function( owner ) {
53830 var cache = owner[ this.expando ];
53831 return cache !== undefined && !jQuery.isEmptyObject( cache );
53832 }
53833 };
53834 var dataPriv = new Data();
53835
53836 var dataUser = new Data();
53837
53838
53839
53840 // Implementation Summary
53841 //
53842 // 1. Enforce API surface and semantic compatibility with 1.9.x branch
53843 // 2. Improve the module's maintainability by reducing the storage
53844 // paths to a single mechanism.
53845 // 3. Use the same single mechanism to support "private" and "user" data.
53846 // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
53847 // 5. Avoid exposing implementation details on user objects (eg. expando properties)
53848 // 6. Provide a clear path for implementation upgrade to WeakMap in 2014
53849
53850 var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
53851 rmultiDash = /[A-Z]/g;
53852
53853 function dataAttr( elem, key, data ) {
53854 var name;
53855
53856 // If nothing was found internally, try to fetch any
53857 // data from the HTML5 data-* attribute
53858 if ( data === undefined && elem.nodeType === 1 ) {
53859 name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
53860 data = elem.getAttribute( name );
53861
53862 if ( typeof data === "string" ) {
53863 try {
53864 data = data === "true" ? true :
53865 data === "false" ? false :
53866 data === "null" ? null :
53867
53868 // Only convert to a number if it doesn't change the string
53869 +data + "" === data ? +data :
53870 rbrace.test( data ) ? jQuery.parseJSON( data ) :
53871 data;
53872 } catch ( e ) {}
53873
53874 // Make sure we set the data so it isn't changed later
53875 dataUser.set( elem, key, data );
53876 } else {
53877 data = undefined;
53878 }
53879 }
53880 return data;
53881 }
53882
53883 jQuery.extend( {
53884 hasData: function( elem ) {
53885 return dataUser.hasData( elem ) || dataPriv.hasData( elem );
53886 },
53887
53888 data: function( elem, name, data ) {
53889 return dataUser.access( elem, name, data );
53890 },
53891
53892 removeData: function( elem, name ) {
53893 dataUser.remove( elem, name );
53894 },
53895
53896 // TODO: Now that all calls to _data and _removeData have been replaced
53897 // with direct calls to dataPriv methods, these can be deprecated.
53898 _data: function( elem, name, data ) {
53899 return dataPriv.access( elem, name, data );
53900 },
53901
53902 _removeData: function( elem, name ) {
53903 dataPriv.remove( elem, name );
53904 }
53905 } );
53906
53907 jQuery.fn.extend( {
53908 data: function( key, value ) {
53909 var i, name, data,
53910 elem = this[ 0 ],
53911 attrs = elem && elem.attributes;
53912
53913 // Gets all values
53914 if ( key === undefined ) {
53915 if ( this.length ) {
53916 data = dataUser.get( elem );
53917
53918 if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
53919 i = attrs.length;
53920 while ( i-- ) {
53921
53922 // Support: IE11+
53923 // The attrs elements can be null (#14894)
53924 if ( attrs[ i ] ) {
53925 name = attrs[ i ].name;
53926 if ( name.indexOf( "data-" ) === 0 ) {
53927 name = jQuery.camelCase( name.slice( 5 ) );
53928 dataAttr( elem, name, data[ name ] );
53929 }
53930 }
53931 }
53932 dataPriv.set( elem, "hasDataAttrs", true );
53933 }
53934 }
53935
53936 return data;
53937 }
53938
53939 // Sets multiple values
53940 if ( typeof key === "object" ) {
53941 return this.each( function() {
53942 dataUser.set( this, key );
53943 } );
53944 }
53945
53946 return access( this, function( value ) {
53947 var data, camelKey;
53948
53949 // The calling jQuery object (element matches) is not empty
53950 // (and therefore has an element appears at this[ 0 ]) and the
53951 // `value` parameter was not undefined. An empty jQuery object
53952 // will result in `undefined` for elem = this[ 0 ] which will
53953 // throw an exception if an attempt to read a data cache is made.
53954 if ( elem && value === undefined ) {
53955
53956 // Attempt to get data from the cache
53957 // with the key as-is
53958 data = dataUser.get( elem, key ) ||
53959
53960 // Try to find dashed key if it exists (gh-2779)
53961 // This is for 2.2.x only
53962 dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() );
53963
53964 if ( data !== undefined ) {
53965 return data;
53966 }
53967
53968 camelKey = jQuery.camelCase( key );
53969
53970 // Attempt to get data from the cache
53971 // with the key camelized
53972 data = dataUser.get( elem, camelKey );
53973 if ( data !== undefined ) {
53974 return data;
53975 }
53976
53977 // Attempt to "discover" the data in
53978 // HTML5 custom data-* attrs
53979 data = dataAttr( elem, camelKey, undefined );
53980 if ( data !== undefined ) {
53981 return data;
53982 }
53983
53984 // We tried really hard, but the data doesn't exist.
53985 return;
53986 }
53987
53988 // Set the data...
53989 camelKey = jQuery.camelCase( key );
53990 this.each( function() {
53991
53992 // First, attempt to store a copy or reference of any
53993 // data that might've been store with a camelCased key.
53994 var data = dataUser.get( this, camelKey );
53995
53996 // For HTML5 data-* attribute interop, we have to
53997 // store property names with dashes in a camelCase form.
53998 // This might not apply to all properties...*
53999 dataUser.set( this, camelKey, value );
54000
54001 // *... In the case of properties that might _actually_
54002 // have dashes, we need to also store a copy of that
54003 // unchanged property.
54004 if ( key.indexOf( "-" ) > -1 && data !== undefined ) {
54005 dataUser.set( this, key, value );
54006 }
54007 } );
54008 }, null, value, arguments.length > 1, null, true );
54009 },
54010
54011 removeData: function( key ) {
54012 return this.each( function() {
54013 dataUser.remove( this, key );
54014 } );
54015 }
54016 } );
54017
54018
54019 jQuery.extend( {
54020 queue: function( elem, type, data ) {
54021 var queue;
54022
54023 if ( elem ) {
54024 type = ( type || "fx" ) + "queue";
54025 queue = dataPriv.get( elem, type );
54026
54027 // Speed up dequeue by getting out quickly if this is just a lookup
54028 if ( data ) {
54029 if ( !queue || jQuery.isArray( data ) ) {
54030 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
54031 } else {
54032 queue.push( data );
54033 }
54034 }
54035 return queue || [];
54036 }
54037 },
54038
54039 dequeue: function( elem, type ) {
54040 type = type || "fx";
54041
54042 var queue = jQuery.queue( elem, type ),
54043 startLength = queue.length,
54044 fn = queue.shift(),
54045 hooks = jQuery._queueHooks( elem, type ),
54046 next = function() {
54047 jQuery.dequeue( elem, type );
54048 };
54049
54050 // If the fx queue is dequeued, always remove the progress sentinel
54051 if ( fn === "inprogress" ) {
54052 fn = queue.shift();
54053 startLength--;
54054 }
54055
54056 if ( fn ) {
54057
54058 // Add a progress sentinel to prevent the fx queue from being
54059 // automatically dequeued
54060 if ( type === "fx" ) {
54061 queue.unshift( "inprogress" );
54062 }
54063
54064 // Clear up the last queue stop function
54065 delete hooks.stop;
54066 fn.call( elem, next, hooks );
54067 }
54068
54069 if ( !startLength && hooks ) {
54070 hooks.empty.fire();
54071 }
54072 },
54073
54074 // Not public - generate a queueHooks object, or return the current one
54075 _queueHooks: function( elem, type ) {
54076 var key = type + "queueHooks";
54077 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
54078 empty: jQuery.Callbacks( "once memory" ).add( function() {
54079 dataPriv.remove( elem, [ type + "queue", key ] );
54080 } )
54081 } );
54082 }
54083 } );
54084
54085 jQuery.fn.extend( {
54086 queue: function( type, data ) {
54087 var setter = 2;
54088
54089 if ( typeof type !== "string" ) {
54090 data = type;
54091 type = "fx";
54092 setter--;
54093 }
54094
54095 if ( arguments.length < setter ) {
54096 return jQuery.queue( this[ 0 ], type );
54097 }
54098
54099 return data === undefined ?
54100 this :
54101 this.each( function() {
54102 var queue = jQuery.queue( this, type, data );
54103
54104 // Ensure a hooks for this queue
54105 jQuery._queueHooks( this, type );
54106
54107 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
54108 jQuery.dequeue( this, type );
54109 }
54110 } );
54111 },
54112 dequeue: function( type ) {
54113 return this.each( function() {
54114 jQuery.dequeue( this, type );
54115 } );
54116 },
54117 clearQueue: function( type ) {
54118 return this.queue( type || "fx", [] );
54119 },
54120
54121 // Get a promise resolved when queues of a certain type
54122 // are emptied (fx is the type by default)
54123 promise: function( type, obj ) {
54124 var tmp,
54125 count = 1,
54126 defer = jQuery.Deferred(),
54127 elements = this,
54128 i = this.length,
54129 resolve = function() {
54130 if ( !( --count ) ) {
54131 defer.resolveWith( elements, [ elements ] );
54132 }
54133 };
54134
54135 if ( typeof type !== "string" ) {
54136 obj = type;
54137 type = undefined;
54138 }
54139 type = type || "fx";
54140
54141 while ( i-- ) {
54142 tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
54143 if ( tmp && tmp.empty ) {
54144 count++;
54145 tmp.empty.add( resolve );
54146 }
54147 }
54148 resolve();
54149 return defer.promise( obj );
54150 }
54151 } );
54152 var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
54153
54154 var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
54155
54156
54157 var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
54158
54159 var isHidden = function( elem, el ) {
54160
54161 // isHidden might be called from jQuery#filter function;
54162 // in that case, element will be second argument
54163 elem = el || elem;
54164 return jQuery.css( elem, "display" ) === "none" ||
54165 !jQuery.contains( elem.ownerDocument, elem );
54166 };
54167
54168
54169
54170 function adjustCSS( elem, prop, valueParts, tween ) {
54171 var adjusted,
54172 scale = 1,
54173 maxIterations = 20,
54174 currentValue = tween ?
54175 function() { return tween.cur(); } :
54176 function() { return jQuery.css( elem, prop, "" ); },
54177 initial = currentValue(),
54178 unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
54179
54180 // Starting value computation is required for potential unit mismatches
54181 initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
54182 rcssNum.exec( jQuery.css( elem, prop ) );
54183
54184 if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
54185
54186 // Trust units reported by jQuery.css
54187 unit = unit || initialInUnit[ 3 ];
54188
54189 // Make sure we update the tween properties later on
54190 valueParts = valueParts || [];
54191
54192 // Iteratively approximate from a nonzero starting point
54193 initialInUnit = +initial || 1;
54194
54195 do {
54196
54197 // If previous iteration zeroed out, double until we get *something*.
54198 // Use string for doubling so we don't accidentally see scale as unchanged below
54199 scale = scale || ".5";
54200
54201 // Adjust and apply
54202 initialInUnit = initialInUnit / scale;
54203 jQuery.style( elem, prop, initialInUnit + unit );
54204
54205 // Update scale, tolerating zero or NaN from tween.cur()
54206 // Break the loop if scale is unchanged or perfect, or if we've just had enough.
54207 } while (
54208 scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
54209 );
54210 }
54211
54212 if ( valueParts ) {
54213 initialInUnit = +initialInUnit || +initial || 0;
54214
54215 // Apply relative offset (+=/-=) if specified
54216 adjusted = valueParts[ 1 ] ?
54217 initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
54218 +valueParts[ 2 ];
54219 if ( tween ) {
54220 tween.unit = unit;
54221 tween.start = initialInUnit;
54222 tween.end = adjusted;
54223 }
54224 }
54225 return adjusted;
54226 }
54227 var rcheckableType = ( /^(?:checkbox|radio)$/i );
54228
54229 var rtagName = ( /<([\w:-]+)/ );
54230
54231 var rscriptType = ( /^$|\/(?:java|ecma)script/i );
54232
54233
54234
54235 // We have to close these tags to support XHTML (#13200)
54236 var wrapMap = {
54237
54238 // Support: IE9
54239 option: [ 1, "<select multiple='multiple'>", "</select>" ],
54240
54241 // XHTML parsers do not magically insert elements in the
54242 // same way that tag soup parsers do. So we cannot shorten
54243 // this by omitting <tbody> or other required elements.
54244 thead: [ 1, "<table>", "</table>" ],
54245 col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
54246 tr: [ 2, "<table><tbody>", "</tbody></table>" ],
54247 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
54248
54249 _default: [ 0, "", "" ]
54250 };
54251
54252 // Support: IE9
54253 wrapMap.optgroup = wrapMap.option;
54254
54255 wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
54256 wrapMap.th = wrapMap.td;
54257
54258
54259 function getAll( context, tag ) {
54260
54261 // Support: IE9-11+
54262 // Use typeof to avoid zero-argument method invocation on host objects (#15151)
54263 var ret = typeof context.getElementsByTagName !== "undefined" ?
54264 context.getElementsByTagName( tag || "*" ) :
54265 typeof context.querySelectorAll !== "undefined" ?
54266 context.querySelectorAll( tag || "*" ) :
54267 [];
54268
54269 return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
54270 jQuery.merge( [ context ], ret ) :
54271 ret;
54272 }
54273
54274
54275 // Mark scripts as having already been evaluated
54276 function setGlobalEval( elems, refElements ) {
54277 var i = 0,
54278 l = elems.length;
54279
54280 for ( ; i < l; i++ ) {
54281 dataPriv.set(
54282 elems[ i ],
54283 "globalEval",
54284 !refElements || dataPriv.get( refElements[ i ], "globalEval" )
54285 );
54286 }
54287 }
54288
54289
54290 var rhtml = /<|&#?\w+;/;
54291
54292 function buildFragment( elems, context, scripts, selection, ignored ) {
54293 var elem, tmp, tag, wrap, contains, j,
54294 fragment = context.createDocumentFragment(),
54295 nodes = [],
54296 i = 0,
54297 l = elems.length;
54298
54299 for ( ; i < l; i++ ) {
54300 elem = elems[ i ];
54301
54302 if ( elem || elem === 0 ) {
54303
54304 // Add nodes directly
54305 if ( jQuery.type( elem ) === "object" ) {
54306
54307 // Support: Android<4.1, PhantomJS<2
54308 // push.apply(_, arraylike) throws on ancient WebKit
54309 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
54310
54311 // Convert non-html into a text node
54312 } else if ( !rhtml.test( elem ) ) {
54313 nodes.push( context.createTextNode( elem ) );
54314
54315 // Convert html into DOM nodes
54316 } else {
54317 tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
54318
54319 // Deserialize a standard representation
54320 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
54321 wrap = wrapMap[ tag ] || wrapMap._default;
54322 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
54323
54324 // Descend through wrappers to the right content
54325 j = wrap[ 0 ];
54326 while ( j-- ) {
54327 tmp = tmp.lastChild;
54328 }
54329
54330 // Support: Android<4.1, PhantomJS<2
54331 // push.apply(_, arraylike) throws on ancient WebKit
54332 jQuery.merge( nodes, tmp.childNodes );
54333
54334 // Remember the top-level container
54335 tmp = fragment.firstChild;
54336
54337 // Ensure the created nodes are orphaned (#12392)
54338 tmp.textContent = "";
54339 }
54340 }
54341 }
54342
54343 // Remove wrapper from fragment
54344 fragment.textContent = "";
54345
54346 i = 0;
54347 while ( ( elem = nodes[ i++ ] ) ) {
54348
54349 // Skip elements already in the context collection (trac-4087)
54350 if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
54351 if ( ignored ) {
54352 ignored.push( elem );
54353 }
54354 continue;
54355 }
54356
54357 contains = jQuery.contains( elem.ownerDocument, elem );
54358
54359 // Append to fragment
54360 tmp = getAll( fragment.appendChild( elem ), "script" );
54361
54362 // Preserve script evaluation history
54363 if ( contains ) {
54364 setGlobalEval( tmp );
54365 }
54366
54367 // Capture executables
54368 if ( scripts ) {
54369 j = 0;
54370 while ( ( elem = tmp[ j++ ] ) ) {
54371 if ( rscriptType.test( elem.type || "" ) ) {
54372 scripts.push( elem );
54373 }
54374 }
54375 }
54376 }
54377
54378 return fragment;
54379 }
54380
54381
54382 ( function() {
54383 var fragment = document.createDocumentFragment(),
54384 div = fragment.appendChild( document.createElement( "div" ) ),
54385 input = document.createElement( "input" );
54386
54387 // Support: Android 4.0-4.3, Safari<=5.1
54388 // Check state lost if the name is set (#11217)
54389 // Support: Windows Web Apps (WWA)
54390 // `name` and `type` must use .setAttribute for WWA (#14901)
54391 input.setAttribute( "type", "radio" );
54392 input.setAttribute( "checked", "checked" );
54393 input.setAttribute( "name", "t" );
54394
54395 div.appendChild( input );
54396
54397 // Support: Safari<=5.1, Android<4.2
54398 // Older WebKit doesn't clone checked state correctly in fragments
54399 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
54400
54401 // Support: IE<=11+
54402 // Make sure textarea (and checkbox) defaultValue is properly cloned
54403 div.innerHTML = "<textarea>x</textarea>";
54404 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
54405 } )();
54406
54407
54408 var
54409 rkeyEvent = /^key/,
54410 rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
54411 rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
54412
54413 function returnTrue() {
54414 return true;
54415 }
54416
54417 function returnFalse() {
54418 return false;
54419 }
54420
54421 // Support: IE9
54422 // See #13393 for more info
54423 function safeActiveElement() {
54424 try {
54425 return document.activeElement;
54426 } catch ( err ) { }
54427 }
54428
54429 function on( elem, types, selector, data, fn, one ) {
54430 var origFn, type;
54431
54432 // Types can be a map of types/handlers
54433 if ( typeof types === "object" ) {
54434
54435 // ( types-Object, selector, data )
54436 if ( typeof selector !== "string" ) {
54437
54438 // ( types-Object, data )
54439 data = data || selector;
54440 selector = undefined;
54441 }
54442 for ( type in types ) {
54443 on( elem, type, selector, data, types[ type ], one );
54444 }
54445 return elem;
54446 }
54447
54448 if ( data == null && fn == null ) {
54449
54450 // ( types, fn )
54451 fn = selector;
54452 data = selector = undefined;
54453 } else if ( fn == null ) {
54454 if ( typeof selector === "string" ) {
54455
54456 // ( types, selector, fn )
54457 fn = data;
54458 data = undefined;
54459 } else {
54460
54461 // ( types, data, fn )
54462 fn = data;
54463 data = selector;
54464 selector = undefined;
54465 }
54466 }
54467 if ( fn === false ) {
54468 fn = returnFalse;
54469 } else if ( !fn ) {
54470 return elem;
54471 }
54472
54473 if ( one === 1 ) {
54474 origFn = fn;
54475 fn = function( event ) {
54476
54477 // Can use an empty set, since event contains the info
54478 jQuery().off( event );
54479 return origFn.apply( this, arguments );
54480 };
54481
54482 // Use same guid so caller can remove using origFn
54483 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
54484 }
54485 return elem.each( function() {
54486 jQuery.event.add( this, types, fn, data, selector );
54487 } );
54488 }
54489
54490 /*
54491 * Helper functions for managing events -- not part of the public interface.
54492 * Props to Dean Edwards' addEvent library for many of the ideas.
54493 */
54494 jQuery.event = {
54495
54496 global: {},
54497
54498 add: function( elem, types, handler, data, selector ) {
54499
54500 var handleObjIn, eventHandle, tmp,
54501 events, t, handleObj,
54502 special, handlers, type, namespaces, origType,
54503 elemData = dataPriv.get( elem );
54504
54505 // Don't attach events to noData or text/comment nodes (but allow plain objects)
54506 if ( !elemData ) {
54507 return;
54508 }
54509
54510 // Caller can pass in an object of custom data in lieu of the handler
54511 if ( handler.handler ) {
54512 handleObjIn = handler;
54513 handler = handleObjIn.handler;
54514 selector = handleObjIn.selector;
54515 }
54516
54517 // Make sure that the handler has a unique ID, used to find/remove it later
54518 if ( !handler.guid ) {
54519 handler.guid = jQuery.guid++;
54520 }
54521
54522 // Init the element's event structure and main handler, if this is the first
54523 if ( !( events = elemData.events ) ) {
54524 events = elemData.events = {};
54525 }
54526 if ( !( eventHandle = elemData.handle ) ) {
54527 eventHandle = elemData.handle = function( e ) {
54528
54529 // Discard the second event of a jQuery.event.trigger() and
54530 // when an event is called after a page has unloaded
54531 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
54532 jQuery.event.dispatch.apply( elem, arguments ) : undefined;
54533 };
54534 }
54535
54536 // Handle multiple events separated by a space
54537 types = ( types || "" ).match( rnotwhite ) || [ "" ];
54538 t = types.length;
54539 while ( t-- ) {
54540 tmp = rtypenamespace.exec( types[ t ] ) || [];
54541 type = origType = tmp[ 1 ];
54542 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
54543
54544 // There *must* be a type, no attaching namespace-only handlers
54545 if ( !type ) {
54546 continue;
54547 }
54548
54549 // If event changes its type, use the special event handlers for the changed type
54550 special = jQuery.event.special[ type ] || {};
54551
54552 // If selector defined, determine special event api type, otherwise given type
54553 type = ( selector ? special.delegateType : special.bindType ) || type;
54554
54555 // Update special based on newly reset type
54556 special = jQuery.event.special[ type ] || {};
54557
54558 // handleObj is passed to all event handlers
54559 handleObj = jQuery.extend( {
54560 type: type,
54561 origType: origType,
54562 data: data,
54563 handler: handler,
54564 guid: handler.guid,
54565 selector: selector,
54566 needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
54567 namespace: namespaces.join( "." )
54568 }, handleObjIn );
54569
54570 // Init the event handler queue if we're the first
54571 if ( !( handlers = events[ type ] ) ) {
54572 handlers = events[ type ] = [];
54573 handlers.delegateCount = 0;
54574
54575 // Only use addEventListener if the special events handler returns false
54576 if ( !special.setup ||
54577 special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
54578
54579 if ( elem.addEventListener ) {
54580 elem.addEventListener( type, eventHandle );
54581 }
54582 }
54583 }
54584
54585 if ( special.add ) {
54586 special.add.call( elem, handleObj );
54587
54588 if ( !handleObj.handler.guid ) {
54589 handleObj.handler.guid = handler.guid;
54590 }
54591 }
54592
54593 // Add to the element's handler list, delegates in front
54594 if ( selector ) {
54595 handlers.splice( handlers.delegateCount++, 0, handleObj );
54596 } else {
54597 handlers.push( handleObj );
54598 }
54599
54600 // Keep track of which events have ever been used, for event optimization
54601 jQuery.event.global[ type ] = true;
54602 }
54603
54604 },
54605
54606 // Detach an event or set of events from an element
54607 remove: function( elem, types, handler, selector, mappedTypes ) {
54608
54609 var j, origCount, tmp,
54610 events, t, handleObj,
54611 special, handlers, type, namespaces, origType,
54612 elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
54613
54614 if ( !elemData || !( events = elemData.events ) ) {
54615 return;
54616 }
54617
54618 // Once for each type.namespace in types; type may be omitted
54619 types = ( types || "" ).match( rnotwhite ) || [ "" ];
54620 t = types.length;
54621 while ( t-- ) {
54622 tmp = rtypenamespace.exec( types[ t ] ) || [];
54623 type = origType = tmp[ 1 ];
54624 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
54625
54626 // Unbind all events (on this namespace, if provided) for the element
54627 if ( !type ) {
54628 for ( type in events ) {
54629 jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
54630 }
54631 continue;
54632 }
54633
54634 special = jQuery.event.special[ type ] || {};
54635 type = ( selector ? special.delegateType : special.bindType ) || type;
54636 handlers = events[ type ] || [];
54637 tmp = tmp[ 2 ] &&
54638 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
54639
54640 // Remove matching events
54641 origCount = j = handlers.length;
54642 while ( j-- ) {
54643 handleObj = handlers[ j ];
54644
54645 if ( ( mappedTypes || origType === handleObj.origType ) &&
54646 ( !handler || handler.guid === handleObj.guid ) &&
54647 ( !tmp || tmp.test( handleObj.namespace ) ) &&
54648 ( !selector || selector === handleObj.selector ||
54649 selector === "**" && handleObj.selector ) ) {
54650 handlers.splice( j, 1 );
54651
54652 if ( handleObj.selector ) {
54653 handlers.delegateCount--;
54654 }
54655 if ( special.remove ) {
54656 special.remove.call( elem, handleObj );
54657 }
54658 }
54659 }
54660
54661 // Remove generic event handler if we removed something and no more handlers exist
54662 // (avoids potential for endless recursion during removal of special event handlers)
54663 if ( origCount && !handlers.length ) {
54664 if ( !special.teardown ||
54665 special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
54666
54667 jQuery.removeEvent( elem, type, elemData.handle );
54668 }
54669
54670 delete events[ type ];
54671 }
54672 }
54673
54674 // Remove data and the expando if it's no longer used
54675 if ( jQuery.isEmptyObject( events ) ) {
54676 dataPriv.remove( elem, "handle events" );
54677 }
54678 },
54679
54680 dispatch: function( event ) {
54681
54682 // Make a writable jQuery.Event from the native event object
54683 event = jQuery.event.fix( event );
54684
54685 var i, j, ret, matched, handleObj,
54686 handlerQueue = [],
54687 args = slice.call( arguments ),
54688 handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
54689 special = jQuery.event.special[ event.type ] || {};
54690
54691 // Use the fix-ed jQuery.Event rather than the (read-only) native event
54692 args[ 0 ] = event;
54693 event.delegateTarget = this;
54694
54695 // Call the preDispatch hook for the mapped type, and let it bail if desired
54696 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
54697 return;
54698 }
54699
54700 // Determine handlers
54701 handlerQueue = jQuery.event.handlers.call( this, event, handlers );
54702
54703 // Run delegates first; they may want to stop propagation beneath us
54704 i = 0;
54705 while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
54706 event.currentTarget = matched.elem;
54707
54708 j = 0;
54709 while ( ( handleObj = matched.handlers[ j++ ] ) &&
54710 !event.isImmediatePropagationStopped() ) {
54711
54712 // Triggered event must either 1) have no namespace, or 2) have namespace(s)
54713 // a subset or equal to those in the bound event (both can have no namespace).
54714 if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
54715
54716 event.handleObj = handleObj;
54717 event.data = handleObj.data;
54718
54719 ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
54720 handleObj.handler ).apply( matched.elem, args );
54721
54722 if ( ret !== undefined ) {
54723 if ( ( event.result = ret ) === false ) {
54724 event.preventDefault();
54725 event.stopPropagation();
54726 }
54727 }
54728 }
54729 }
54730 }
54731
54732 // Call the postDispatch hook for the mapped type
54733 if ( special.postDispatch ) {
54734 special.postDispatch.call( this, event );
54735 }
54736
54737 return event.result;
54738 },
54739
54740 handlers: function( event, handlers ) {
54741 var i, matches, sel, handleObj,
54742 handlerQueue = [],
54743 delegateCount = handlers.delegateCount,
54744 cur = event.target;
54745
54746 // Support (at least): Chrome, IE9
54747 // Find delegate handlers
54748 // Black-hole SVG <use> instance trees (#13180)
54749 //
54750 // Support: Firefox<=42+
54751 // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
54752 if ( delegateCount && cur.nodeType &&
54753 ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) {
54754
54755 for ( ; cur !== this; cur = cur.parentNode || this ) {
54756
54757 // Don't check non-elements (#13208)
54758 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
54759 if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) {
54760 matches = [];
54761 for ( i = 0; i < delegateCount; i++ ) {
54762 handleObj = handlers[ i ];
54763
54764 // Don't conflict with Object.prototype properties (#13203)
54765 sel = handleObj.selector + " ";
54766
54767 if ( matches[ sel ] === undefined ) {
54768 matches[ sel ] = handleObj.needsContext ?
54769 jQuery( sel, this ).index( cur ) > -1 :
54770 jQuery.find( sel, this, null, [ cur ] ).length;
54771 }
54772 if ( matches[ sel ] ) {
54773 matches.push( handleObj );
54774 }
54775 }
54776 if ( matches.length ) {
54777 handlerQueue.push( { elem: cur, handlers: matches } );
54778 }
54779 }
54780 }
54781 }
54782
54783 // Add the remaining (directly-bound) handlers
54784 if ( delegateCount < handlers.length ) {
54785 handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );
54786 }
54787
54788 return handlerQueue;
54789 },
54790
54791 // Includes some event props shared by KeyEvent and MouseEvent
54792 props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " +
54793 "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ),
54794
54795 fixHooks: {},
54796
54797 keyHooks: {
54798 props: "char charCode key keyCode".split( " " ),
54799 filter: function( event, original ) {
54800
54801 // Add which for key events
54802 if ( event.which == null ) {
54803 event.which = original.charCode != null ? original.charCode : original.keyCode;
54804 }
54805
54806 return event;
54807 }
54808 },
54809
54810 mouseHooks: {
54811 props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " +
54812 "screenX screenY toElement" ).split( " " ),
54813 filter: function( event, original ) {
54814 var eventDoc, doc, body,
54815 button = original.button;
54816
54817 // Calculate pageX/Y if missing and clientX/Y available
54818 if ( event.pageX == null && original.clientX != null ) {
54819 eventDoc = event.target.ownerDocument || document;
54820 doc = eventDoc.documentElement;
54821 body = eventDoc.body;
54822
54823 event.pageX = original.clientX +
54824 ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -
54825 ( doc && doc.clientLeft || body && body.clientLeft || 0 );
54826 event.pageY = original.clientY +
54827 ( doc && doc.scrollTop || body && body.scrollTop || 0 ) -
54828 ( doc && doc.clientTop || body && body.clientTop || 0 );
54829 }
54830
54831 // Add which for click: 1 === left; 2 === middle; 3 === right
54832 // Note: button is not normalized, so don't use it
54833 if ( !event.which && button !== undefined ) {
54834 event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
54835 }
54836
54837 return event;
54838 }
54839 },
54840
54841 fix: function( event ) {
54842 if ( event[ jQuery.expando ] ) {
54843 return event;
54844 }
54845
54846 // Create a writable copy of the event object and normalize some properties
54847 var i, prop, copy,
54848 type = event.type,
54849 originalEvent = event,
54850 fixHook = this.fixHooks[ type ];
54851
54852 if ( !fixHook ) {
54853 this.fixHooks[ type ] = fixHook =
54854 rmouseEvent.test( type ) ? this.mouseHooks :
54855 rkeyEvent.test( type ) ? this.keyHooks :
54856 {};
54857 }
54858 copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
54859
54860 event = new jQuery.Event( originalEvent );
54861
54862 i = copy.length;
54863 while ( i-- ) {
54864 prop = copy[ i ];
54865 event[ prop ] = originalEvent[ prop ];
54866 }
54867
54868 // Support: Cordova 2.5 (WebKit) (#13255)
54869 // All events should have a target; Cordova deviceready doesn't
54870 if ( !event.target ) {
54871 event.target = document;
54872 }
54873
54874 // Support: Safari 6.0+, Chrome<28
54875 // Target should not be a text node (#504, #13143)
54876 if ( event.target.nodeType === 3 ) {
54877 event.target = event.target.parentNode;
54878 }
54879
54880 return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
54881 },
54882
54883 special: {
54884 load: {
54885
54886 // Prevent triggered image.load events from bubbling to window.load
54887 noBubble: true
54888 },
54889 focus: {
54890
54891 // Fire native event if possible so blur/focus sequence is correct
54892 trigger: function() {
54893 if ( this !== safeActiveElement() && this.focus ) {
54894 this.focus();
54895 return false;
54896 }
54897 },
54898 delegateType: "focusin"
54899 },
54900 blur: {
54901 trigger: function() {
54902 if ( this === safeActiveElement() && this.blur ) {
54903 this.blur();
54904 return false;
54905 }
54906 },
54907 delegateType: "focusout"
54908 },
54909 click: {
54910
54911 // For checkbox, fire native event so checked state will be right
54912 trigger: function() {
54913 if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
54914 this.click();
54915 return false;
54916 }
54917 },
54918
54919 // For cross-browser consistency, don't fire native .click() on links
54920 _default: function( event ) {
54921 return jQuery.nodeName( event.target, "a" );
54922 }
54923 },
54924
54925 beforeunload: {
54926 postDispatch: function( event ) {
54927
54928 // Support: Firefox 20+
54929 // Firefox doesn't alert if the returnValue field is not set.
54930 if ( event.result !== undefined && event.originalEvent ) {
54931 event.originalEvent.returnValue = event.result;
54932 }
54933 }
54934 }
54935 }
54936 };
54937
54938 jQuery.removeEvent = function( elem, type, handle ) {
54939
54940 // This "if" is needed for plain objects
54941 if ( elem.removeEventListener ) {
54942 elem.removeEventListener( type, handle );
54943 }
54944 };
54945
54946 jQuery.Event = function( src, props ) {
54947
54948 // Allow instantiation without the 'new' keyword
54949 if ( !( this instanceof jQuery.Event ) ) {
54950 return new jQuery.Event( src, props );
54951 }
54952
54953 // Event object
54954 if ( src && src.type ) {
54955 this.originalEvent = src;
54956 this.type = src.type;
54957
54958 // Events bubbling up the document may have been marked as prevented
54959 // by a handler lower down the tree; reflect the correct value.
54960 this.isDefaultPrevented = src.defaultPrevented ||
54961 src.defaultPrevented === undefined &&
54962
54963 // Support: Android<4.0
54964 src.returnValue === false ?
54965 returnTrue :
54966 returnFalse;
54967
54968 // Event type
54969 } else {
54970 this.type = src;
54971 }
54972
54973 // Put explicitly provided properties onto the event object
54974 if ( props ) {
54975 jQuery.extend( this, props );
54976 }
54977
54978 // Create a timestamp if incoming event doesn't have one
54979 this.timeStamp = src && src.timeStamp || jQuery.now();
54980
54981 // Mark it as fixed
54982 this[ jQuery.expando ] = true;
54983 };
54984
54985 // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
54986 // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
54987 jQuery.Event.prototype = {
54988 constructor: jQuery.Event,
54989 isDefaultPrevented: returnFalse,
54990 isPropagationStopped: returnFalse,
54991 isImmediatePropagationStopped: returnFalse,
54992 isSimulated: false,
54993
54994 preventDefault: function() {
54995 var e = this.originalEvent;
54996
54997 this.isDefaultPrevented = returnTrue;
54998
54999 if ( e && !this.isSimulated ) {
55000 e.preventDefault();
55001 }
55002 },
55003 stopPropagation: function() {
55004 var e = this.originalEvent;
55005
55006 this.isPropagationStopped = returnTrue;
55007
55008 if ( e && !this.isSimulated ) {
55009 e.stopPropagation();
55010 }
55011 },
55012 stopImmediatePropagation: function() {
55013 var e = this.originalEvent;
55014
55015 this.isImmediatePropagationStopped = returnTrue;
55016
55017 if ( e && !this.isSimulated ) {
55018 e.stopImmediatePropagation();
55019 }
55020
55021 this.stopPropagation();
55022 }
55023 };
55024
55025 // Create mouseenter/leave events using mouseover/out and event-time checks
55026 // so that event delegation works in jQuery.
55027 // Do the same for pointerenter/pointerleave and pointerover/pointerout
55028 //
55029 // Support: Safari 7 only
55030 // Safari sends mouseenter too often; see:
55031 // https://code.google.com/p/chromium/issues/detail?id=470258
55032 // for the description of the bug (it existed in older Chrome versions as well).
55033 jQuery.each( {
55034 mouseenter: "mouseover",
55035 mouseleave: "mouseout",
55036 pointerenter: "pointerover",
55037 pointerleave: "pointerout"
55038 }, function( orig, fix ) {
55039 jQuery.event.special[ orig ] = {
55040 delegateType: fix,
55041 bindType: fix,
55042
55043 handle: function( event ) {
55044 var ret,
55045 target = this,
55046 related = event.relatedTarget,
55047 handleObj = event.handleObj;
55048
55049 // For mouseenter/leave call the handler if related is outside the target.
55050 // NB: No relatedTarget if the mouse left/entered the browser window
55051 if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
55052 event.type = handleObj.origType;
55053 ret = handleObj.handler.apply( this, arguments );
55054 event.type = fix;
55055 }
55056 return ret;
55057 }
55058 };
55059 } );
55060
55061 jQuery.fn.extend( {
55062 on: function( types, selector, data, fn ) {
55063 return on( this, types, selector, data, fn );
55064 },
55065 one: function( types, selector, data, fn ) {
55066 return on( this, types, selector, data, fn, 1 );
55067 },
55068 off: function( types, selector, fn ) {
55069 var handleObj, type;
55070 if ( types && types.preventDefault && types.handleObj ) {
55071
55072 // ( event ) dispatched jQuery.Event
55073 handleObj = types.handleObj;
55074 jQuery( types.delegateTarget ).off(
55075 handleObj.namespace ?
55076 handleObj.origType + "." + handleObj.namespace :
55077 handleObj.origType,
55078 handleObj.selector,
55079 handleObj.handler
55080 );
55081 return this;
55082 }
55083 if ( typeof types === "object" ) {
55084
55085 // ( types-object [, selector] )
55086 for ( type in types ) {
55087 this.off( type, selector, types[ type ] );
55088 }
55089 return this;
55090 }
55091 if ( selector === false || typeof selector === "function" ) {
55092
55093 // ( types [, fn] )
55094 fn = selector;
55095 selector = undefined;
55096 }
55097 if ( fn === false ) {
55098 fn = returnFalse;
55099 }
55100 return this.each( function() {
55101 jQuery.event.remove( this, types, fn, selector );
55102 } );
55103 }
55104 } );
55105
55106
55107 var
55108 rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
55109
55110 // Support: IE 10-11, Edge 10240+
55111 // In IE/Edge using regex groups here causes severe slowdowns.
55112 // See https://connect.microsoft.com/IE/feedback/details/1736512/
55113 rnoInnerhtml = /<script|<style|<link/i,
55114
55115 // checked="checked" or checked
55116 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
55117 rscriptTypeMasked = /^true\/(.*)/,
55118 rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
55119
55120 // Manipulating tables requires a tbody
55121 function manipulationTarget( elem, content ) {
55122 return jQuery.nodeName( elem, "table" ) &&
55123 jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
55124
55125 elem.getElementsByTagName( "tbody" )[ 0 ] ||
55126 elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) :
55127 elem;
55128 }
55129
55130 // Replace/restore the type attribute of script elements for safe DOM manipulation
55131 function disableScript( elem ) {
55132 elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
55133 return elem;
55134 }
55135 function restoreScript( elem ) {
55136 var match = rscriptTypeMasked.exec( elem.type );
55137
55138 if ( match ) {
55139 elem.type = match[ 1 ];
55140 } else {
55141 elem.removeAttribute( "type" );
55142 }
55143
55144 return elem;
55145 }
55146
55147 function cloneCopyEvent( src, dest ) {
55148 var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
55149
55150 if ( dest.nodeType !== 1 ) {
55151 return;
55152 }
55153
55154 // 1. Copy private data: events, handlers, etc.
55155 if ( dataPriv.hasData( src ) ) {
55156 pdataOld = dataPriv.access( src );
55157 pdataCur = dataPriv.set( dest, pdataOld );
55158 events = pdataOld.events;
55159
55160 if ( events ) {
55161 delete pdataCur.handle;
55162 pdataCur.events = {};
55163
55164 for ( type in events ) {
55165 for ( i = 0, l = events[ type ].length; i < l; i++ ) {
55166 jQuery.event.add( dest, type, events[ type ][ i ] );
55167 }
55168 }
55169 }
55170 }
55171
55172 // 2. Copy user data
55173 if ( dataUser.hasData( src ) ) {
55174 udataOld = dataUser.access( src );
55175 udataCur = jQuery.extend( {}, udataOld );
55176
55177 dataUser.set( dest, udataCur );
55178 }
55179 }
55180
55181 // Fix IE bugs, see support tests
55182 function fixInput( src, dest ) {
55183 var nodeName = dest.nodeName.toLowerCase();
55184
55185 // Fails to persist the checked state of a cloned checkbox or radio button.
55186 if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
55187 dest.checked = src.checked;
55188
55189 // Fails to return the selected option to the default selected state when cloning options
55190 } else if ( nodeName === "input" || nodeName === "textarea" ) {
55191 dest.defaultValue = src.defaultValue;
55192 }
55193 }
55194
55195 function domManip( collection, args, callback, ignored ) {
55196
55197 // Flatten any nested arrays
55198 args = concat.apply( [], args );
55199
55200 var fragment, first, scripts, hasScripts, node, doc,
55201 i = 0,
55202 l = collection.length,
55203 iNoClone = l - 1,
55204 value = args[ 0 ],
55205 isFunction = jQuery.isFunction( value );
55206
55207 // We can't cloneNode fragments that contain checked, in WebKit
55208 if ( isFunction ||
55209 ( l > 1 && typeof value === "string" &&
55210 !support.checkClone && rchecked.test( value ) ) ) {
55211 return collection.each( function( index ) {
55212 var self = collection.eq( index );
55213 if ( isFunction ) {
55214 args[ 0 ] = value.call( this, index, self.html() );
55215 }
55216 domManip( self, args, callback, ignored );
55217 } );
55218 }
55219
55220 if ( l ) {
55221 fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
55222 first = fragment.firstChild;
55223
55224 if ( fragment.childNodes.length === 1 ) {
55225 fragment = first;
55226 }
55227
55228 // Require either new content or an interest in ignored elements to invoke the callback
55229 if ( first || ignored ) {
55230 scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
55231 hasScripts = scripts.length;
55232
55233 // Use the original fragment for the last item
55234 // instead of the first because it can end up
55235 // being emptied incorrectly in certain situations (#8070).
55236 for ( ; i < l; i++ ) {
55237 node = fragment;
55238
55239 if ( i !== iNoClone ) {
55240 node = jQuery.clone( node, true, true );
55241
55242 // Keep references to cloned scripts for later restoration
55243 if ( hasScripts ) {
55244
55245 // Support: Android<4.1, PhantomJS<2
55246 // push.apply(_, arraylike) throws on ancient WebKit
55247 jQuery.merge( scripts, getAll( node, "script" ) );
55248 }
55249 }
55250
55251 callback.call( collection[ i ], node, i );
55252 }
55253
55254 if ( hasScripts ) {
55255 doc = scripts[ scripts.length - 1 ].ownerDocument;
55256
55257 // Reenable scripts
55258 jQuery.map( scripts, restoreScript );
55259
55260 // Evaluate executable scripts on first document insertion
55261 for ( i = 0; i < hasScripts; i++ ) {
55262 node = scripts[ i ];
55263 if ( rscriptType.test( node.type || "" ) &&
55264 !dataPriv.access( node, "globalEval" ) &&
55265 jQuery.contains( doc, node ) ) {
55266
55267 if ( node.src ) {
55268
55269 // Optional AJAX dependency, but won't run scripts if not present
55270 if ( jQuery._evalUrl ) {
55271 jQuery._evalUrl( node.src );
55272 }
55273 } else {
55274 jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
55275 }
55276 }
55277 }
55278 }
55279 }
55280 }
55281
55282 return collection;
55283 }
55284
55285 function remove( elem, selector, keepData ) {
55286 var node,
55287 nodes = selector ? jQuery.filter( selector, elem ) : elem,
55288 i = 0;
55289
55290 for ( ; ( node = nodes[ i ] ) != null; i++ ) {
55291 if ( !keepData && node.nodeType === 1 ) {
55292 jQuery.cleanData( getAll( node ) );
55293 }
55294
55295 if ( node.parentNode ) {
55296 if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
55297 setGlobalEval( getAll( node, "script" ) );
55298 }
55299 node.parentNode.removeChild( node );
55300 }
55301 }
55302
55303 return elem;
55304 }
55305
55306 jQuery.extend( {
55307 htmlPrefilter: function( html ) {
55308 return html.replace( rxhtmlTag, "<$1></$2>" );
55309 },
55310
55311 clone: function( elem, dataAndEvents, deepDataAndEvents ) {
55312 var i, l, srcElements, destElements,
55313 clone = elem.cloneNode( true ),
55314 inPage = jQuery.contains( elem.ownerDocument, elem );
55315
55316 // Fix IE cloning issues
55317 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
55318 !jQuery.isXMLDoc( elem ) ) {
55319
55320 // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
55321 destElements = getAll( clone );
55322 srcElements = getAll( elem );
55323
55324 for ( i = 0, l = srcElements.length; i < l; i++ ) {
55325 fixInput( srcElements[ i ], destElements[ i ] );
55326 }
55327 }
55328
55329 // Copy the events from the original to the clone
55330 if ( dataAndEvents ) {
55331 if ( deepDataAndEvents ) {
55332 srcElements = srcElements || getAll( elem );
55333 destElements = destElements || getAll( clone );
55334
55335 for ( i = 0, l = srcElements.length; i < l; i++ ) {
55336 cloneCopyEvent( srcElements[ i ], destElements[ i ] );
55337 }
55338 } else {
55339 cloneCopyEvent( elem, clone );
55340 }
55341 }
55342
55343 // Preserve script evaluation history
55344 destElements = getAll( clone, "script" );
55345 if ( destElements.length > 0 ) {
55346 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
55347 }
55348
55349 // Return the cloned set
55350 return clone;
55351 },
55352
55353 cleanData: function( elems ) {
55354 var data, elem, type,
55355 special = jQuery.event.special,
55356 i = 0;
55357
55358 for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
55359 if ( acceptData( elem ) ) {
55360 if ( ( data = elem[ dataPriv.expando ] ) ) {
55361 if ( data.events ) {
55362 for ( type in data.events ) {
55363 if ( special[ type ] ) {
55364 jQuery.event.remove( elem, type );
55365
55366 // This is a shortcut to avoid jQuery.event.remove's overhead
55367 } else {
55368 jQuery.removeEvent( elem, type, data.handle );
55369 }
55370 }
55371 }
55372
55373 // Support: Chrome <= 35-45+
55374 // Assign undefined instead of using delete, see Data#remove
55375 elem[ dataPriv.expando ] = undefined;
55376 }
55377 if ( elem[ dataUser.expando ] ) {
55378
55379 // Support: Chrome <= 35-45+
55380 // Assign undefined instead of using delete, see Data#remove
55381 elem[ dataUser.expando ] = undefined;
55382 }
55383 }
55384 }
55385 }
55386 } );
55387
55388 jQuery.fn.extend( {
55389
55390 // Keep domManip exposed until 3.0 (gh-2225)
55391 domManip: domManip,
55392
55393 detach: function( selector ) {
55394 return remove( this, selector, true );
55395 },
55396
55397 remove: function( selector ) {
55398 return remove( this, selector );
55399 },
55400
55401 text: function( value ) {
55402 return access( this, function( value ) {
55403 return value === undefined ?
55404 jQuery.text( this ) :
55405 this.empty().each( function() {
55406 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
55407 this.textContent = value;
55408 }
55409 } );
55410 }, null, value, arguments.length );
55411 },
55412
55413 append: function() {
55414 return domManip( this, arguments, function( elem ) {
55415 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
55416 var target = manipulationTarget( this, elem );
55417 target.appendChild( elem );
55418 }
55419 } );
55420 },
55421
55422 prepend: function() {
55423 return domManip( this, arguments, function( elem ) {
55424 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
55425 var target = manipulationTarget( this, elem );
55426 target.insertBefore( elem, target.firstChild );
55427 }
55428 } );
55429 },
55430
55431 before: function() {
55432 return domManip( this, arguments, function( elem ) {
55433 if ( this.parentNode ) {
55434 this.parentNode.insertBefore( elem, this );
55435 }
55436 } );
55437 },
55438
55439 after: function() {
55440 return domManip( this, arguments, function( elem ) {
55441 if ( this.parentNode ) {
55442 this.parentNode.insertBefore( elem, this.nextSibling );
55443 }
55444 } );
55445 },
55446
55447 empty: function() {
55448 var elem,
55449 i = 0;
55450
55451 for ( ; ( elem = this[ i ] ) != null; i++ ) {
55452 if ( elem.nodeType === 1 ) {
55453
55454 // Prevent memory leaks
55455 jQuery.cleanData( getAll( elem, false ) );
55456
55457 // Remove any remaining nodes
55458 elem.textContent = "";
55459 }
55460 }
55461
55462 return this;
55463 },
55464
55465 clone: function( dataAndEvents, deepDataAndEvents ) {
55466 dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
55467 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
55468
55469 return this.map( function() {
55470 return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
55471 } );
55472 },
55473
55474 html: function( value ) {
55475 return access( this, function( value ) {
55476 var elem = this[ 0 ] || {},
55477 i = 0,
55478 l = this.length;
55479
55480 if ( value === undefined && elem.nodeType === 1 ) {
55481 return elem.innerHTML;
55482 }
55483
55484 // See if we can take a shortcut and just use innerHTML
55485 if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
55486 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
55487
55488 value = jQuery.htmlPrefilter( value );
55489
55490 try {
55491 for ( ; i < l; i++ ) {
55492 elem = this[ i ] || {};
55493
55494 // Remove element nodes and prevent memory leaks
55495 if ( elem.nodeType === 1 ) {
55496 jQuery.cleanData( getAll( elem, false ) );
55497 elem.innerHTML = value;
55498 }
55499 }
55500
55501 elem = 0;
55502
55503 // If using innerHTML throws an exception, use the fallback method
55504 } catch ( e ) {}
55505 }
55506
55507 if ( elem ) {
55508 this.empty().append( value );
55509 }
55510 }, null, value, arguments.length );
55511 },
55512
55513 replaceWith: function() {
55514 var ignored = [];
55515
55516 // Make the changes, replacing each non-ignored context element with the new content
55517 return domManip( this, arguments, function( elem ) {
55518 var parent = this.parentNode;
55519
55520 if ( jQuery.inArray( this, ignored ) < 0 ) {
55521 jQuery.cleanData( getAll( this ) );
55522 if ( parent ) {
55523 parent.replaceChild( elem, this );
55524 }
55525 }
55526
55527 // Force callback invocation
55528 }, ignored );
55529 }
55530 } );
55531
55532 jQuery.each( {
55533 appendTo: "append",
55534 prependTo: "prepend",
55535 insertBefore: "before",
55536 insertAfter: "after",
55537 replaceAll: "replaceWith"
55538 }, function( name, original ) {
55539 jQuery.fn[ name ] = function( selector ) {
55540 var elems,
55541 ret = [],
55542 insert = jQuery( selector ),
55543 last = insert.length - 1,
55544 i = 0;
55545
55546 for ( ; i <= last; i++ ) {
55547 elems = i === last ? this : this.clone( true );
55548 jQuery( insert[ i ] )[ original ]( elems );
55549
55550 // Support: QtWebKit
55551 // .get() because push.apply(_, arraylike) throws
55552 push.apply( ret, elems.get() );
55553 }
55554
55555 return this.pushStack( ret );
55556 };
55557 } );
55558
55559
55560 var iframe,
55561 elemdisplay = {
55562
55563 // Support: Firefox
55564 // We have to pre-define these values for FF (#10227)
55565 HTML: "block",
55566 BODY: "block"
55567 };
55568
55569 /**
55570 * Retrieve the actual display of a element
55571 * @param {String} name nodeName of the element
55572 * @param {Object} doc Document object
55573 */
55574
55575 // Called only from within defaultDisplay
55576 function actualDisplay( name, doc ) {
55577 var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
55578
55579 display = jQuery.css( elem[ 0 ], "display" );
55580
55581 // We don't have any data stored on the element,
55582 // so use "detach" method as fast way to get rid of the element
55583 elem.detach();
55584
55585 return display;
55586 }
55587
55588 /**
55589 * Try to determine the default display value of an element
55590 * @param {String} nodeName
55591 */
55592 function defaultDisplay( nodeName ) {
55593 var doc = document,
55594 display = elemdisplay[ nodeName ];
55595
55596 if ( !display ) {
55597 display = actualDisplay( nodeName, doc );
55598
55599 // If the simple way fails, read from inside an iframe
55600 if ( display === "none" || !display ) {
55601
55602 // Use the already-created iframe if possible
55603 iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) )
55604 .appendTo( doc.documentElement );
55605
55606 // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
55607 doc = iframe[ 0 ].contentDocument;
55608
55609 // Support: IE
55610 doc.write();
55611 doc.close();
55612
55613 display = actualDisplay( nodeName, doc );
55614 iframe.detach();
55615 }
55616
55617 // Store the correct default display
55618 elemdisplay[ nodeName ] = display;
55619 }
55620
55621 return display;
55622 }
55623 var rmargin = ( /^margin/ );
55624
55625 var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
55626
55627 var getStyles = function( elem ) {
55628
55629 // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
55630 // IE throws on elements created in popups
55631 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
55632 var view = elem.ownerDocument.defaultView;
55633
55634 if ( !view || !view.opener ) {
55635 view = window;
55636 }
55637
55638 return view.getComputedStyle( elem );
55639 };
55640
55641 var swap = function( elem, options, callback, args ) {
55642 var ret, name,
55643 old = {};
55644
55645 // Remember the old values, and insert the new ones
55646 for ( name in options ) {
55647 old[ name ] = elem.style[ name ];
55648 elem.style[ name ] = options[ name ];
55649 }
55650
55651 ret = callback.apply( elem, args || [] );
55652
55653 // Revert the old values
55654 for ( name in options ) {
55655 elem.style[ name ] = old[ name ];
55656 }
55657
55658 return ret;
55659 };
55660
55661
55662 var documentElement = document.documentElement;
55663
55664
55665
55666 ( function() {
55667 var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
55668 container = document.createElement( "div" ),
55669 div = document.createElement( "div" );
55670
55671 // Finish early in limited (non-browser) environments
55672 if ( !div.style ) {
55673 return;
55674 }
55675
55676 // Support: IE9-11+
55677 // Style of cloned element affects source element cloned (#8908)
55678 div.style.backgroundClip = "content-box";
55679 div.cloneNode( true ).style.backgroundClip = "";
55680 support.clearCloneStyle = div.style.backgroundClip === "content-box";
55681
55682 container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
55683 "padding:0;margin-top:1px;position:absolute";
55684 container.appendChild( div );
55685
55686 // Executing both pixelPosition & boxSizingReliable tests require only one layout
55687 // so they're executed at the same time to save the second computation.
55688 function computeStyleTests() {
55689 div.style.cssText =
55690
55691 // Support: Firefox<29, Android 2.3
55692 // Vendor-prefix box-sizing
55693 "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" +
55694 "position:relative;display:block;" +
55695 "margin:auto;border:1px;padding:1px;" +
55696 "top:1%;width:50%";
55697 div.innerHTML = "";
55698 documentElement.appendChild( container );
55699
55700 var divStyle = window.getComputedStyle( div );
55701 pixelPositionVal = divStyle.top !== "1%";
55702 reliableMarginLeftVal = divStyle.marginLeft === "2px";
55703 boxSizingReliableVal = divStyle.width === "4px";
55704
55705 // Support: Android 4.0 - 4.3 only
55706 // Some styles come back with percentage values, even though they shouldn't
55707 div.style.marginRight = "50%";
55708 pixelMarginRightVal = divStyle.marginRight === "4px";
55709
55710 documentElement.removeChild( container );
55711 }
55712
55713 jQuery.extend( support, {
55714 pixelPosition: function() {
55715
55716 // This test is executed only once but we still do memoizing
55717 // since we can use the boxSizingReliable pre-computing.
55718 // No need to check if the test was already performed, though.
55719 computeStyleTests();
55720 return pixelPositionVal;
55721 },
55722 boxSizingReliable: function() {
55723 if ( boxSizingReliableVal == null ) {
55724 computeStyleTests();
55725 }
55726 return boxSizingReliableVal;
55727 },
55728 pixelMarginRight: function() {
55729
55730 // Support: Android 4.0-4.3
55731 // We're checking for boxSizingReliableVal here instead of pixelMarginRightVal
55732 // since that compresses better and they're computed together anyway.
55733 if ( boxSizingReliableVal == null ) {
55734 computeStyleTests();
55735 }
55736 return pixelMarginRightVal;
55737 },
55738 reliableMarginLeft: function() {
55739
55740 // Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37
55741 if ( boxSizingReliableVal == null ) {
55742 computeStyleTests();
55743 }
55744 return reliableMarginLeftVal;
55745 },
55746 reliableMarginRight: function() {
55747
55748 // Support: Android 2.3
55749 // Check if div with explicit width and no margin-right incorrectly
55750 // gets computed margin-right based on width of container. (#3333)
55751 // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
55752 // This support function is only executed once so no memoizing is needed.
55753 var ret,
55754 marginDiv = div.appendChild( document.createElement( "div" ) );
55755
55756 // Reset CSS: box-sizing; display; margin; border; padding
55757 marginDiv.style.cssText = div.style.cssText =
55758
55759 // Support: Android 2.3
55760 // Vendor-prefix box-sizing
55761 "-webkit-box-sizing:content-box;box-sizing:content-box;" +
55762 "display:block;margin:0;border:0;padding:0";
55763 marginDiv.style.marginRight = marginDiv.style.width = "0";
55764 div.style.width = "1px";
55765 documentElement.appendChild( container );
55766
55767 ret = !parseFloat( window.getComputedStyle( marginDiv ).marginRight );
55768
55769 documentElement.removeChild( container );
55770 div.removeChild( marginDiv );
55771
55772 return ret;
55773 }
55774 } );
55775 } )();
55776
55777
55778 function curCSS( elem, name, computed ) {
55779 var width, minWidth, maxWidth, ret,
55780 style = elem.style;
55781
55782 computed = computed || getStyles( elem );
55783 ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
55784
55785 // Support: Opera 12.1x only
55786 // Fall back to style even without computed
55787 // computed is undefined for elems on document fragments
55788 if ( ( ret === "" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) {
55789 ret = jQuery.style( elem, name );
55790 }
55791
55792 // Support: IE9
55793 // getPropertyValue is only needed for .css('filter') (#12537)
55794 if ( computed ) {
55795
55796 // A tribute to the "awesome hack by Dean Edwards"
55797 // Android Browser returns percentage for some values,
55798 // but width seems to be reliably pixels.
55799 // This is against the CSSOM draft spec:
55800 // http://dev.w3.org/csswg/cssom/#resolved-values
55801 if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
55802
55803 // Remember the original values
55804 width = style.width;
55805 minWidth = style.minWidth;
55806 maxWidth = style.maxWidth;
55807
55808 // Put in the new values to get a computed value out
55809 style.minWidth = style.maxWidth = style.width = ret;
55810 ret = computed.width;
55811
55812 // Revert the changed values
55813 style.width = width;
55814 style.minWidth = minWidth;
55815 style.maxWidth = maxWidth;
55816 }
55817 }
55818
55819 return ret !== undefined ?
55820
55821 // Support: IE9-11+
55822 // IE returns zIndex value as an integer.
55823 ret + "" :
55824 ret;
55825 }
55826
55827
55828 function addGetHookIf( conditionFn, hookFn ) {
55829
55830 // Define the hook, we'll check on the first run if it's really needed.
55831 return {
55832 get: function() {
55833 if ( conditionFn() ) {
55834
55835 // Hook not needed (or it's not possible to use it due
55836 // to missing dependency), remove it.
55837 delete this.get;
55838 return;
55839 }
55840
55841 // Hook needed; redefine it so that the support test is not executed again.
55842 return ( this.get = hookFn ).apply( this, arguments );
55843 }
55844 };
55845 }
55846
55847
55848 var
55849
55850 // Swappable if display is none or starts with table
55851 // except "table", "table-cell", or "table-caption"
55852 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
55853 rdisplayswap = /^(none|table(?!-c[ea]).+)/,
55854
55855 cssShow = { position: "absolute", visibility: "hidden", display: "block" },
55856 cssNormalTransform = {
55857 letterSpacing: "0",
55858 fontWeight: "400"
55859 },
55860
55861 cssPrefixes = [ "Webkit", "O", "Moz", "ms" ],
55862 emptyStyle = document.createElement( "div" ).style;
55863
55864 // Return a css property mapped to a potentially vendor prefixed property
55865 function vendorPropName( name ) {
55866
55867 // Shortcut for names that are not vendor prefixed
55868 if ( name in emptyStyle ) {
55869 return name;
55870 }
55871
55872 // Check for vendor prefixed names
55873 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
55874 i = cssPrefixes.length;
55875
55876 while ( i-- ) {
55877 name = cssPrefixes[ i ] + capName;
55878 if ( name in emptyStyle ) {
55879 return name;
55880 }
55881 }
55882 }
55883
55884 function setPositiveNumber( elem, value, subtract ) {
55885
55886 // Any relative (+/-) values have already been
55887 // normalized at this point
55888 var matches = rcssNum.exec( value );
55889 return matches ?
55890
55891 // Guard against undefined "subtract", e.g., when used as in cssHooks
55892 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
55893 value;
55894 }
55895
55896 function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
55897 var i = extra === ( isBorderBox ? "border" : "content" ) ?
55898
55899 // If we already have the right measurement, avoid augmentation
55900 4 :
55901
55902 // Otherwise initialize for horizontal or vertical properties
55903 name === "width" ? 1 : 0,
55904
55905 val = 0;
55906
55907 for ( ; i < 4; i += 2 ) {
55908
55909 // Both box models exclude margin, so add it if we want it
55910 if ( extra === "margin" ) {
55911 val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
55912 }
55913
55914 if ( isBorderBox ) {
55915
55916 // border-box includes padding, so remove it if we want content
55917 if ( extra === "content" ) {
55918 val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
55919 }
55920
55921 // At this point, extra isn't border nor margin, so remove border
55922 if ( extra !== "margin" ) {
55923 val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
55924 }
55925 } else {
55926
55927 // At this point, extra isn't content, so add padding
55928 val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
55929
55930 // At this point, extra isn't content nor padding, so add border
55931 if ( extra !== "padding" ) {
55932 val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
55933 }
55934 }
55935 }
55936
55937 return val;
55938 }
55939
55940 function getWidthOrHeight( elem, name, extra ) {
55941
55942 // Start with offset property, which is equivalent to the border-box value
55943 var valueIsBorderBox = true,
55944 val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
55945 styles = getStyles( elem ),
55946 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
55947
55948 // Some non-html elements return undefined for offsetWidth, so check for null/undefined
55949 // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
55950 // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
55951 if ( val <= 0 || val == null ) {
55952
55953 // Fall back to computed then uncomputed css if necessary
55954 val = curCSS( elem, name, styles );
55955 if ( val < 0 || val == null ) {
55956 val = elem.style[ name ];
55957 }
55958
55959 // Computed unit is not pixels. Stop here and return.
55960 if ( rnumnonpx.test( val ) ) {
55961 return val;
55962 }
55963
55964 // Check for style in case a browser which returns unreliable values
55965 // for getComputedStyle silently falls back to the reliable elem.style
55966 valueIsBorderBox = isBorderBox &&
55967 ( support.boxSizingReliable() || val === elem.style[ name ] );
55968
55969 // Normalize "", auto, and prepare for extra
55970 val = parseFloat( val ) || 0;
55971 }
55972
55973 // Use the active box-sizing model to add/subtract irrelevant styles
55974 return ( val +
55975 augmentWidthOrHeight(
55976 elem,
55977 name,
55978 extra || ( isBorderBox ? "border" : "content" ),
55979 valueIsBorderBox,
55980 styles
55981 )
55982 ) + "px";
55983 }
55984
55985 function showHide( elements, show ) {
55986 var display, elem, hidden,
55987 values = [],
55988 index = 0,
55989 length = elements.length;
55990
55991 for ( ; index < length; index++ ) {
55992 elem = elements[ index ];
55993 if ( !elem.style ) {
55994 continue;
55995 }
55996
55997 values[ index ] = dataPriv.get( elem, "olddisplay" );
55998 display = elem.style.display;
55999 if ( show ) {
56000
56001 // Reset the inline display of this element to learn if it is
56002 // being hidden by cascaded rules or not
56003 if ( !values[ index ] && display === "none" ) {
56004 elem.style.display = "";
56005 }
56006
56007 // Set elements which have been overridden with display: none
56008 // in a stylesheet to whatever the default browser style is
56009 // for such an element
56010 if ( elem.style.display === "" && isHidden( elem ) ) {
56011 values[ index ] = dataPriv.access(
56012 elem,
56013 "olddisplay",
56014 defaultDisplay( elem.nodeName )
56015 );
56016 }
56017 } else {
56018 hidden = isHidden( elem );
56019
56020 if ( display !== "none" || !hidden ) {
56021 dataPriv.set(
56022 elem,
56023 "olddisplay",
56024 hidden ? display : jQuery.css( elem, "display" )
56025 );
56026 }
56027 }
56028 }
56029
56030 // Set the display of most of the elements in a second loop
56031 // to avoid the constant reflow
56032 for ( index = 0; index < length; index++ ) {
56033 elem = elements[ index ];
56034 if ( !elem.style ) {
56035 continue;
56036 }
56037 if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
56038 elem.style.display = show ? values[ index ] || "" : "none";
56039 }
56040 }
56041
56042 return elements;
56043 }
56044
56045 jQuery.extend( {
56046
56047 // Add in style property hooks for overriding the default
56048 // behavior of getting and setting a style property
56049 cssHooks: {
56050 opacity: {
56051 get: function( elem, computed ) {
56052 if ( computed ) {
56053
56054 // We should always get a number back from opacity
56055 var ret = curCSS( elem, "opacity" );
56056 return ret === "" ? "1" : ret;
56057 }
56058 }
56059 }
56060 },
56061
56062 // Don't automatically add "px" to these possibly-unitless properties
56063 cssNumber: {
56064 "animationIterationCount": true,
56065 "columnCount": true,
56066 "fillOpacity": true,
56067 "flexGrow": true,
56068 "flexShrink": true,
56069 "fontWeight": true,
56070 "lineHeight": true,
56071 "opacity": true,
56072 "order": true,
56073 "orphans": true,
56074 "widows": true,
56075 "zIndex": true,
56076 "zoom": true
56077 },
56078
56079 // Add in properties whose names you wish to fix before
56080 // setting or getting the value
56081 cssProps: {
56082 "float": "cssFloat"
56083 },
56084
56085 // Get and set the style property on a DOM Node
56086 style: function( elem, name, value, extra ) {
56087
56088 // Don't set styles on text and comment nodes
56089 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
56090 return;
56091 }
56092
56093 // Make sure that we're working with the right name
56094 var ret, type, hooks,
56095 origName = jQuery.camelCase( name ),
56096 style = elem.style;
56097
56098 name = jQuery.cssProps[ origName ] ||
56099 ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
56100
56101 // Gets hook for the prefixed version, then unprefixed version
56102 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
56103
56104 // Check if we're setting a value
56105 if ( value !== undefined ) {
56106 type = typeof value;
56107
56108 // Convert "+=" or "-=" to relative numbers (#7345)
56109 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
56110 value = adjustCSS( elem, name, ret );
56111
56112 // Fixes bug #9237
56113 type = "number";
56114 }
56115
56116 // Make sure that null and NaN values aren't set (#7116)
56117 if ( value == null || value !== value ) {
56118 return;
56119 }
56120
56121 // If a number was passed in, add the unit (except for certain CSS properties)
56122 if ( type === "number" ) {
56123 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
56124 }
56125
56126 // Support: IE9-11+
56127 // background-* props affect original clone's values
56128 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
56129 style[ name ] = "inherit";
56130 }
56131
56132 // If a hook was provided, use that value, otherwise just set the specified value
56133 if ( !hooks || !( "set" in hooks ) ||
56134 ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
56135
56136 style[ name ] = value;
56137 }
56138
56139 } else {
56140
56141 // If a hook was provided get the non-computed value from there
56142 if ( hooks && "get" in hooks &&
56143 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
56144
56145 return ret;
56146 }
56147
56148 // Otherwise just get the value from the style object
56149 return style[ name ];
56150 }
56151 },
56152
56153 css: function( elem, name, extra, styles ) {
56154 var val, num, hooks,
56155 origName = jQuery.camelCase( name );
56156
56157 // Make sure that we're working with the right name
56158 name = jQuery.cssProps[ origName ] ||
56159 ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
56160
56161 // Try prefixed name followed by the unprefixed name
56162 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
56163
56164 // If a hook was provided get the computed value from there
56165 if ( hooks && "get" in hooks ) {
56166 val = hooks.get( elem, true, extra );
56167 }
56168
56169 // Otherwise, if a way to get the computed value exists, use that
56170 if ( val === undefined ) {
56171 val = curCSS( elem, name, styles );
56172 }
56173
56174 // Convert "normal" to computed value
56175 if ( val === "normal" && name in cssNormalTransform ) {
56176 val = cssNormalTransform[ name ];
56177 }
56178
56179 // Make numeric if forced or a qualifier was provided and val looks numeric
56180 if ( extra === "" || extra ) {
56181 num = parseFloat( val );
56182 return extra === true || isFinite( num ) ? num || 0 : val;
56183 }
56184 return val;
56185 }
56186 } );
56187
56188 jQuery.each( [ "height", "width" ], function( i, name ) {
56189 jQuery.cssHooks[ name ] = {
56190 get: function( elem, computed, extra ) {
56191 if ( computed ) {
56192
56193 // Certain elements can have dimension info if we invisibly show them
56194 // but it must have a current display style that would benefit
56195 return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
56196 elem.offsetWidth === 0 ?
56197 swap( elem, cssShow, function() {
56198 return getWidthOrHeight( elem, name, extra );
56199 } ) :
56200 getWidthOrHeight( elem, name, extra );
56201 }
56202 },
56203
56204 set: function( elem, value, extra ) {
56205 var matches,
56206 styles = extra && getStyles( elem ),
56207 subtract = extra && augmentWidthOrHeight(
56208 elem,
56209 name,
56210 extra,
56211 jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
56212 styles
56213 );
56214
56215 // Convert to pixels if value adjustment is needed
56216 if ( subtract && ( matches = rcssNum.exec( value ) ) &&
56217 ( matches[ 3 ] || "px" ) !== "px" ) {
56218
56219 elem.style[ name ] = value;
56220 value = jQuery.css( elem, name );
56221 }
56222
56223 return setPositiveNumber( elem, value, subtract );
56224 }
56225 };
56226 } );
56227
56228 jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
56229 function( elem, computed ) {
56230 if ( computed ) {
56231 return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
56232 elem.getBoundingClientRect().left -
56233 swap( elem, { marginLeft: 0 }, function() {
56234 return elem.getBoundingClientRect().left;
56235 } )
56236 ) + "px";
56237 }
56238 }
56239 );
56240
56241 // Support: Android 2.3
56242 jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
56243 function( elem, computed ) {
56244 if ( computed ) {
56245 return swap( elem, { "display": "inline-block" },
56246 curCSS, [ elem, "marginRight" ] );
56247 }
56248 }
56249 );
56250
56251 // These hooks are used by animate to expand properties
56252 jQuery.each( {
56253 margin: "",
56254 padding: "",
56255 border: "Width"
56256 }, function( prefix, suffix ) {
56257 jQuery.cssHooks[ prefix + suffix ] = {
56258 expand: function( value ) {
56259 var i = 0,
56260 expanded = {},
56261
56262 // Assumes a single number if not a string
56263 parts = typeof value === "string" ? value.split( " " ) : [ value ];
56264
56265 for ( ; i < 4; i++ ) {
56266 expanded[ prefix + cssExpand[ i ] + suffix ] =
56267 parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
56268 }
56269
56270 return expanded;
56271 }
56272 };
56273
56274 if ( !rmargin.test( prefix ) ) {
56275 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
56276 }
56277 } );
56278
56279 jQuery.fn.extend( {
56280 css: function( name, value ) {
56281 return access( this, function( elem, name, value ) {
56282 var styles, len,
56283 map = {},
56284 i = 0;
56285
56286 if ( jQuery.isArray( name ) ) {
56287 styles = getStyles( elem );
56288 len = name.length;
56289
56290 for ( ; i < len; i++ ) {
56291 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
56292 }
56293
56294 return map;
56295 }
56296
56297 return value !== undefined ?
56298 jQuery.style( elem, name, value ) :
56299 jQuery.css( elem, name );
56300 }, name, value, arguments.length > 1 );
56301 },
56302 show: function() {
56303 return showHide( this, true );
56304 },
56305 hide: function() {
56306 return showHide( this );
56307 },
56308 toggle: function( state ) {
56309 if ( typeof state === "boolean" ) {
56310 return state ? this.show() : this.hide();
56311 }
56312
56313 return this.each( function() {
56314 if ( isHidden( this ) ) {
56315 jQuery( this ).show();
56316 } else {
56317 jQuery( this ).hide();
56318 }
56319 } );
56320 }
56321 } );
56322
56323
56324 function Tween( elem, options, prop, end, easing ) {
56325 return new Tween.prototype.init( elem, options, prop, end, easing );
56326 }
56327 jQuery.Tween = Tween;
56328
56329 Tween.prototype = {
56330 constructor: Tween,
56331 init: function( elem, options, prop, end, easing, unit ) {
56332 this.elem = elem;
56333 this.prop = prop;
56334 this.easing = easing || jQuery.easing._default;
56335 this.options = options;
56336 this.start = this.now = this.cur();
56337 this.end = end;
56338 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
56339 },
56340 cur: function() {
56341 var hooks = Tween.propHooks[ this.prop ];
56342
56343 return hooks && hooks.get ?
56344 hooks.get( this ) :
56345 Tween.propHooks._default.get( this );
56346 },
56347 run: function( percent ) {
56348 var eased,
56349 hooks = Tween.propHooks[ this.prop ];
56350
56351 if ( this.options.duration ) {
56352 this.pos = eased = jQuery.easing[ this.easing ](
56353 percent, this.options.duration * percent, 0, 1, this.options.duration
56354 );
56355 } else {
56356 this.pos = eased = percent;
56357 }
56358 this.now = ( this.end - this.start ) * eased + this.start;
56359
56360 if ( this.options.step ) {
56361 this.options.step.call( this.elem, this.now, this );
56362 }
56363
56364 if ( hooks && hooks.set ) {
56365 hooks.set( this );
56366 } else {
56367 Tween.propHooks._default.set( this );
56368 }
56369 return this;
56370 }
56371 };
56372
56373 Tween.prototype.init.prototype = Tween.prototype;
56374
56375 Tween.propHooks = {
56376 _default: {
56377 get: function( tween ) {
56378 var result;
56379
56380 // Use a property on the element directly when it is not a DOM element,
56381 // or when there is no matching style property that exists.
56382 if ( tween.elem.nodeType !== 1 ||
56383 tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
56384 return tween.elem[ tween.prop ];
56385 }
56386
56387 // Passing an empty string as a 3rd parameter to .css will automatically
56388 // attempt a parseFloat and fallback to a string if the parse fails.
56389 // Simple values such as "10px" are parsed to Float;
56390 // complex values such as "rotate(1rad)" are returned as-is.
56391 result = jQuery.css( tween.elem, tween.prop, "" );
56392
56393 // Empty strings, null, undefined and "auto" are converted to 0.
56394 return !result || result === "auto" ? 0 : result;
56395 },
56396 set: function( tween ) {
56397
56398 // Use step hook for back compat.
56399 // Use cssHook if its there.
56400 // Use .style if available and use plain properties where available.
56401 if ( jQuery.fx.step[ tween.prop ] ) {
56402 jQuery.fx.step[ tween.prop ]( tween );
56403 } else if ( tween.elem.nodeType === 1 &&
56404 ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
56405 jQuery.cssHooks[ tween.prop ] ) ) {
56406 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
56407 } else {
56408 tween.elem[ tween.prop ] = tween.now;
56409 }
56410 }
56411 }
56412 };
56413
56414 // Support: IE9
56415 // Panic based approach to setting things on disconnected nodes
56416 Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
56417 set: function( tween ) {
56418 if ( tween.elem.nodeType && tween.elem.parentNode ) {
56419 tween.elem[ tween.prop ] = tween.now;
56420 }
56421 }
56422 };
56423
56424 jQuery.easing = {
56425 linear: function( p ) {
56426 return p;
56427 },
56428 swing: function( p ) {
56429 return 0.5 - Math.cos( p * Math.PI ) / 2;
56430 },
56431 _default: "swing"
56432 };
56433
56434 jQuery.fx = Tween.prototype.init;
56435
56436 // Back Compat <1.8 extension point
56437 jQuery.fx.step = {};
56438
56439
56440
56441
56442 var
56443 fxNow, timerId,
56444 rfxtypes = /^(?:toggle|show|hide)$/,
56445 rrun = /queueHooks$/;
56446
56447 // Animations created synchronously will run synchronously
56448 function createFxNow() {
56449 window.setTimeout( function() {
56450 fxNow = undefined;
56451 } );
56452 return ( fxNow = jQuery.now() );
56453 }
56454
56455 // Generate parameters to create a standard animation
56456 function genFx( type, includeWidth ) {
56457 var which,
56458 i = 0,
56459 attrs = { height: type };
56460
56461 // If we include width, step value is 1 to do all cssExpand values,
56462 // otherwise step value is 2 to skip over Left and Right
56463 includeWidth = includeWidth ? 1 : 0;
56464 for ( ; i < 4 ; i += 2 - includeWidth ) {
56465 which = cssExpand[ i ];
56466 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
56467 }
56468
56469 if ( includeWidth ) {
56470 attrs.opacity = attrs.width = type;
56471 }
56472
56473 return attrs;
56474 }
56475
56476 function createTween( value, prop, animation ) {
56477 var tween,
56478 collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
56479 index = 0,
56480 length = collection.length;
56481 for ( ; index < length; index++ ) {
56482 if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
56483
56484 // We're done with this property
56485 return tween;
56486 }
56487 }
56488 }
56489
56490 function defaultPrefilter( elem, props, opts ) {
56491 /* jshint validthis: true */
56492 var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
56493 anim = this,
56494 orig = {},
56495 style = elem.style,
56496 hidden = elem.nodeType && isHidden( elem ),
56497 dataShow = dataPriv.get( elem, "fxshow" );
56498
56499 // Handle queue: false promises
56500 if ( !opts.queue ) {
56501 hooks = jQuery._queueHooks( elem, "fx" );
56502 if ( hooks.unqueued == null ) {
56503 hooks.unqueued = 0;
56504 oldfire = hooks.empty.fire;
56505 hooks.empty.fire = function() {
56506 if ( !hooks.unqueued ) {
56507 oldfire();
56508 }
56509 };
56510 }
56511 hooks.unqueued++;
56512
56513 anim.always( function() {
56514
56515 // Ensure the complete handler is called before this completes
56516 anim.always( function() {
56517 hooks.unqueued--;
56518 if ( !jQuery.queue( elem, "fx" ).length ) {
56519 hooks.empty.fire();
56520 }
56521 } );
56522 } );
56523 }
56524
56525 // Height/width overflow pass
56526 if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
56527
56528 // Make sure that nothing sneaks out
56529 // Record all 3 overflow attributes because IE9-10 do not
56530 // change the overflow attribute when overflowX and
56531 // overflowY are set to the same value
56532 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
56533
56534 // Set display property to inline-block for height/width
56535 // animations on inline elements that are having width/height animated
56536 display = jQuery.css( elem, "display" );
56537
56538 // Test default display if display is currently "none"
56539 checkDisplay = display === "none" ?
56540 dataPriv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
56541
56542 if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
56543 style.display = "inline-block";
56544 }
56545 }
56546
56547 if ( opts.overflow ) {
56548 style.overflow = "hidden";
56549 anim.always( function() {
56550 style.overflow = opts.overflow[ 0 ];
56551 style.overflowX = opts.overflow[ 1 ];
56552 style.overflowY = opts.overflow[ 2 ];
56553 } );
56554 }
56555
56556 // show/hide pass
56557 for ( prop in props ) {
56558 value = props[ prop ];
56559 if ( rfxtypes.exec( value ) ) {
56560 delete props[ prop ];
56561 toggle = toggle || value === "toggle";
56562 if ( value === ( hidden ? "hide" : "show" ) ) {
56563
56564 // If there is dataShow left over from a stopped hide or show
56565 // and we are going to proceed with show, we should pretend to be hidden
56566 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
56567 hidden = true;
56568 } else {
56569 continue;
56570 }
56571 }
56572 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
56573
56574 // Any non-fx value stops us from restoring the original display value
56575 } else {
56576 display = undefined;
56577 }
56578 }
56579
56580 if ( !jQuery.isEmptyObject( orig ) ) {
56581 if ( dataShow ) {
56582 if ( "hidden" in dataShow ) {
56583 hidden = dataShow.hidden;
56584 }
56585 } else {
56586 dataShow = dataPriv.access( elem, "fxshow", {} );
56587 }
56588
56589 // Store state if its toggle - enables .stop().toggle() to "reverse"
56590 if ( toggle ) {
56591 dataShow.hidden = !hidden;
56592 }
56593 if ( hidden ) {
56594 jQuery( elem ).show();
56595 } else {
56596 anim.done( function() {
56597 jQuery( elem ).hide();
56598 } );
56599 }
56600 anim.done( function() {
56601 var prop;
56602
56603 dataPriv.remove( elem, "fxshow" );
56604 for ( prop in orig ) {
56605 jQuery.style( elem, prop, orig[ prop ] );
56606 }
56607 } );
56608 for ( prop in orig ) {
56609 tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
56610
56611 if ( !( prop in dataShow ) ) {
56612 dataShow[ prop ] = tween.start;
56613 if ( hidden ) {
56614 tween.end = tween.start;
56615 tween.start = prop === "width" || prop === "height" ? 1 : 0;
56616 }
56617 }
56618 }
56619
56620 // If this is a noop like .hide().hide(), restore an overwritten display value
56621 } else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) {
56622 style.display = display;
56623 }
56624 }
56625
56626 function propFilter( props, specialEasing ) {
56627 var index, name, easing, value, hooks;
56628
56629 // camelCase, specialEasing and expand cssHook pass
56630 for ( index in props ) {
56631 name = jQuery.camelCase( index );
56632 easing = specialEasing[ name ];
56633 value = props[ index ];
56634 if ( jQuery.isArray( value ) ) {
56635 easing = value[ 1 ];
56636 value = props[ index ] = value[ 0 ];
56637 }
56638
56639 if ( index !== name ) {
56640 props[ name ] = value;
56641 delete props[ index ];
56642 }
56643
56644 hooks = jQuery.cssHooks[ name ];
56645 if ( hooks && "expand" in hooks ) {
56646 value = hooks.expand( value );
56647 delete props[ name ];
56648
56649 // Not quite $.extend, this won't overwrite existing keys.
56650 // Reusing 'index' because we have the correct "name"
56651 for ( index in value ) {
56652 if ( !( index in props ) ) {
56653 props[ index ] = value[ index ];
56654 specialEasing[ index ] = easing;
56655 }
56656 }
56657 } else {
56658 specialEasing[ name ] = easing;
56659 }
56660 }
56661 }
56662
56663 function Animation( elem, properties, options ) {
56664 var result,
56665 stopped,
56666 index = 0,
56667 length = Animation.prefilters.length,
56668 deferred = jQuery.Deferred().always( function() {
56669
56670 // Don't match elem in the :animated selector
56671 delete tick.elem;
56672 } ),
56673 tick = function() {
56674 if ( stopped ) {
56675 return false;
56676 }
56677 var currentTime = fxNow || createFxNow(),
56678 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
56679
56680 // Support: Android 2.3
56681 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
56682 temp = remaining / animation.duration || 0,
56683 percent = 1 - temp,
56684 index = 0,
56685 length = animation.tweens.length;
56686
56687 for ( ; index < length ; index++ ) {
56688 animation.tweens[ index ].run( percent );
56689 }
56690
56691 deferred.notifyWith( elem, [ animation, percent, remaining ] );
56692
56693 if ( percent < 1 && length ) {
56694 return remaining;
56695 } else {
56696 deferred.resolveWith( elem, [ animation ] );
56697 return false;
56698 }
56699 },
56700 animation = deferred.promise( {
56701 elem: elem,
56702 props: jQuery.extend( {}, properties ),
56703 opts: jQuery.extend( true, {
56704 specialEasing: {},
56705 easing: jQuery.easing._default
56706 }, options ),
56707 originalProperties: properties,
56708 originalOptions: options,
56709 startTime: fxNow || createFxNow(),
56710 duration: options.duration,
56711 tweens: [],
56712 createTween: function( prop, end ) {
56713 var tween = jQuery.Tween( elem, animation.opts, prop, end,
56714 animation.opts.specialEasing[ prop ] || animation.opts.easing );
56715 animation.tweens.push( tween );
56716 return tween;
56717 },
56718 stop: function( gotoEnd ) {
56719 var index = 0,
56720
56721 // If we are going to the end, we want to run all the tweens
56722 // otherwise we skip this part
56723 length = gotoEnd ? animation.tweens.length : 0;
56724 if ( stopped ) {
56725 return this;
56726 }
56727 stopped = true;
56728 for ( ; index < length ; index++ ) {
56729 animation.tweens[ index ].run( 1 );
56730 }
56731
56732 // Resolve when we played the last frame; otherwise, reject
56733 if ( gotoEnd ) {
56734 deferred.notifyWith( elem, [ animation, 1, 0 ] );
56735 deferred.resolveWith( elem, [ animation, gotoEnd ] );
56736 } else {
56737 deferred.rejectWith( elem, [ animation, gotoEnd ] );
56738 }
56739 return this;
56740 }
56741 } ),
56742 props = animation.props;
56743
56744 propFilter( props, animation.opts.specialEasing );
56745
56746 for ( ; index < length ; index++ ) {
56747 result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
56748 if ( result ) {
56749 if ( jQuery.isFunction( result.stop ) ) {
56750 jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
56751 jQuery.proxy( result.stop, result );
56752 }
56753 return result;
56754 }
56755 }
56756
56757 jQuery.map( props, createTween, animation );
56758
56759 if ( jQuery.isFunction( animation.opts.start ) ) {
56760 animation.opts.start.call( elem, animation );
56761 }
56762
56763 jQuery.fx.timer(
56764 jQuery.extend( tick, {
56765 elem: elem,
56766 anim: animation,
56767 queue: animation.opts.queue
56768 } )
56769 );
56770
56771 // attach callbacks from options
56772 return animation.progress( animation.opts.progress )
56773 .done( animation.opts.done, animation.opts.complete )
56774 .fail( animation.opts.fail )
56775 .always( animation.opts.always );
56776 }
56777
56778 jQuery.Animation = jQuery.extend( Animation, {
56779 tweeners: {
56780 "*": [ function( prop, value ) {
56781 var tween = this.createTween( prop, value );
56782 adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
56783 return tween;
56784 } ]
56785 },
56786
56787 tweener: function( props, callback ) {
56788 if ( jQuery.isFunction( props ) ) {
56789 callback = props;
56790 props = [ "*" ];
56791 } else {
56792 props = props.match( rnotwhite );
56793 }
56794
56795 var prop,
56796 index = 0,
56797 length = props.length;
56798
56799 for ( ; index < length ; index++ ) {
56800 prop = props[ index ];
56801 Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
56802 Animation.tweeners[ prop ].unshift( callback );
56803 }
56804 },
56805
56806 prefilters: [ defaultPrefilter ],
56807
56808 prefilter: function( callback, prepend ) {
56809 if ( prepend ) {
56810 Animation.prefilters.unshift( callback );
56811 } else {
56812 Animation.prefilters.push( callback );
56813 }
56814 }
56815 } );
56816
56817 jQuery.speed = function( speed, easing, fn ) {
56818 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
56819 complete: fn || !fn && easing ||
56820 jQuery.isFunction( speed ) && speed,
56821 duration: speed,
56822 easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
56823 };
56824
56825 opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ?
56826 opt.duration : opt.duration in jQuery.fx.speeds ?
56827 jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
56828
56829 // Normalize opt.queue - true/undefined/null -> "fx"
56830 if ( opt.queue == null || opt.queue === true ) {
56831 opt.queue = "fx";
56832 }
56833
56834 // Queueing
56835 opt.old = opt.complete;
56836
56837 opt.complete = function() {
56838 if ( jQuery.isFunction( opt.old ) ) {
56839 opt.old.call( this );
56840 }
56841
56842 if ( opt.queue ) {
56843 jQuery.dequeue( this, opt.queue );
56844 }
56845 };
56846
56847 return opt;
56848 };
56849
56850 jQuery.fn.extend( {
56851 fadeTo: function( speed, to, easing, callback ) {
56852
56853 // Show any hidden elements after setting opacity to 0
56854 return this.filter( isHidden ).css( "opacity", 0 ).show()
56855
56856 // Animate to the value specified
56857 .end().animate( { opacity: to }, speed, easing, callback );
56858 },
56859 animate: function( prop, speed, easing, callback ) {
56860 var empty = jQuery.isEmptyObject( prop ),
56861 optall = jQuery.speed( speed, easing, callback ),
56862 doAnimation = function() {
56863
56864 // Operate on a copy of prop so per-property easing won't be lost
56865 var anim = Animation( this, jQuery.extend( {}, prop ), optall );
56866
56867 // Empty animations, or finishing resolves immediately
56868 if ( empty || dataPriv.get( this, "finish" ) ) {
56869 anim.stop( true );
56870 }
56871 };
56872 doAnimation.finish = doAnimation;
56873
56874 return empty || optall.queue === false ?
56875 this.each( doAnimation ) :
56876 this.queue( optall.queue, doAnimation );
56877 },
56878 stop: function( type, clearQueue, gotoEnd ) {
56879 var stopQueue = function( hooks ) {
56880 var stop = hooks.stop;
56881 delete hooks.stop;
56882 stop( gotoEnd );
56883 };
56884
56885 if ( typeof type !== "string" ) {
56886 gotoEnd = clearQueue;
56887 clearQueue = type;
56888 type = undefined;
56889 }
56890 if ( clearQueue && type !== false ) {
56891 this.queue( type || "fx", [] );
56892 }
56893
56894 return this.each( function() {
56895 var dequeue = true,
56896 index = type != null && type + "queueHooks",
56897 timers = jQuery.timers,
56898 data = dataPriv.get( this );
56899
56900 if ( index ) {
56901 if ( data[ index ] && data[ index ].stop ) {
56902 stopQueue( data[ index ] );
56903 }
56904 } else {
56905 for ( index in data ) {
56906 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
56907 stopQueue( data[ index ] );
56908 }
56909 }
56910 }
56911
56912 for ( index = timers.length; index--; ) {
56913 if ( timers[ index ].elem === this &&
56914 ( type == null || timers[ index ].queue === type ) ) {
56915
56916 timers[ index ].anim.stop( gotoEnd );
56917 dequeue = false;
56918 timers.splice( index, 1 );
56919 }
56920 }
56921
56922 // Start the next in the queue if the last step wasn't forced.
56923 // Timers currently will call their complete callbacks, which
56924 // will dequeue but only if they were gotoEnd.
56925 if ( dequeue || !gotoEnd ) {
56926 jQuery.dequeue( this, type );
56927 }
56928 } );
56929 },
56930 finish: function( type ) {
56931 if ( type !== false ) {
56932 type = type || "fx";
56933 }
56934 return this.each( function() {
56935 var index,
56936 data = dataPriv.get( this ),
56937 queue = data[ type + "queue" ],
56938 hooks = data[ type + "queueHooks" ],
56939 timers = jQuery.timers,
56940 length = queue ? queue.length : 0;
56941
56942 // Enable finishing flag on private data
56943 data.finish = true;
56944
56945 // Empty the queue first
56946 jQuery.queue( this, type, [] );
56947
56948 if ( hooks && hooks.stop ) {
56949 hooks.stop.call( this, true );
56950 }
56951
56952 // Look for any active animations, and finish them
56953 for ( index = timers.length; index--; ) {
56954 if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
56955 timers[ index ].anim.stop( true );
56956 timers.splice( index, 1 );
56957 }
56958 }
56959
56960 // Look for any animations in the old queue and finish them
56961 for ( index = 0; index < length; index++ ) {
56962 if ( queue[ index ] && queue[ index ].finish ) {
56963 queue[ index ].finish.call( this );
56964 }
56965 }
56966
56967 // Turn off finishing flag
56968 delete data.finish;
56969 } );
56970 }
56971 } );
56972
56973 jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
56974 var cssFn = jQuery.fn[ name ];
56975 jQuery.fn[ name ] = function( speed, easing, callback ) {
56976 return speed == null || typeof speed === "boolean" ?
56977 cssFn.apply( this, arguments ) :
56978 this.animate( genFx( name, true ), speed, easing, callback );
56979 };
56980 } );
56981
56982 // Generate shortcuts for custom animations
56983 jQuery.each( {
56984 slideDown: genFx( "show" ),
56985 slideUp: genFx( "hide" ),
56986 slideToggle: genFx( "toggle" ),
56987 fadeIn: { opacity: "show" },
56988 fadeOut: { opacity: "hide" },
56989 fadeToggle: { opacity: "toggle" }
56990 }, function( name, props ) {
56991 jQuery.fn[ name ] = function( speed, easing, callback ) {
56992 return this.animate( props, speed, easing, callback );
56993 };
56994 } );
56995
56996 jQuery.timers = [];
56997 jQuery.fx.tick = function() {
56998 var timer,
56999 i = 0,
57000 timers = jQuery.timers;
57001
57002 fxNow = jQuery.now();
57003
57004 for ( ; i < timers.length; i++ ) {
57005 timer = timers[ i ];
57006
57007 // Checks the timer has not already been removed
57008 if ( !timer() && timers[ i ] === timer ) {
57009 timers.splice( i--, 1 );
57010 }
57011 }
57012
57013 if ( !timers.length ) {
57014 jQuery.fx.stop();
57015 }
57016 fxNow = undefined;
57017 };
57018
57019 jQuery.fx.timer = function( timer ) {
57020 jQuery.timers.push( timer );
57021 if ( timer() ) {
57022 jQuery.fx.start();
57023 } else {
57024 jQuery.timers.pop();
57025 }
57026 };
57027
57028 jQuery.fx.interval = 13;
57029 jQuery.fx.start = function() {
57030 if ( !timerId ) {
57031 timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
57032 }
57033 };
57034
57035 jQuery.fx.stop = function() {
57036 window.clearInterval( timerId );
57037
57038 timerId = null;
57039 };
57040
57041 jQuery.fx.speeds = {
57042 slow: 600,
57043 fast: 200,
57044
57045 // Default speed
57046 _default: 400
57047 };
57048
57049
57050 // Based off of the plugin by Clint Helfers, with permission.
57051 // http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
57052 jQuery.fn.delay = function( time, type ) {
57053 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
57054 type = type || "fx";
57055
57056 return this.queue( type, function( next, hooks ) {
57057 var timeout = window.setTimeout( next, time );
57058 hooks.stop = function() {
57059 window.clearTimeout( timeout );
57060 };
57061 } );
57062 };
57063
57064
57065 ( function() {
57066 var input = document.createElement( "input" ),
57067 select = document.createElement( "select" ),
57068 opt = select.appendChild( document.createElement( "option" ) );
57069
57070 input.type = "checkbox";
57071
57072 // Support: iOS<=5.1, Android<=4.2+
57073 // Default value for a checkbox should be "on"
57074 support.checkOn = input.value !== "";
57075
57076 // Support: IE<=11+
57077 // Must access selectedIndex to make default options select
57078 support.optSelected = opt.selected;
57079
57080 // Support: Android<=2.3
57081 // Options inside disabled selects are incorrectly marked as disabled
57082 select.disabled = true;
57083 support.optDisabled = !opt.disabled;
57084
57085 // Support: IE<=11+
57086 // An input loses its value after becoming a radio
57087 input = document.createElement( "input" );
57088 input.value = "t";
57089 input.type = "radio";
57090 support.radioValue = input.value === "t";
57091 } )();
57092
57093
57094 var boolHook,
57095 attrHandle = jQuery.expr.attrHandle;
57096
57097 jQuery.fn.extend( {
57098 attr: function( name, value ) {
57099 return access( this, jQuery.attr, name, value, arguments.length > 1 );
57100 },
57101
57102 removeAttr: function( name ) {
57103 return this.each( function() {
57104 jQuery.removeAttr( this, name );
57105 } );
57106 }
57107 } );
57108
57109 jQuery.extend( {
57110 attr: function( elem, name, value ) {
57111 var ret, hooks,
57112 nType = elem.nodeType;
57113
57114 // Don't get/set attributes on text, comment and attribute nodes
57115 if ( nType === 3 || nType === 8 || nType === 2 ) {
57116 return;
57117 }
57118
57119 // Fallback to prop when attributes are not supported
57120 if ( typeof elem.getAttribute === "undefined" ) {
57121 return jQuery.prop( elem, name, value );
57122 }
57123
57124 // All attributes are lowercase
57125 // Grab necessary hook if one is defined
57126 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
57127 name = name.toLowerCase();
57128 hooks = jQuery.attrHooks[ name ] ||
57129 ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
57130 }
57131
57132 if ( value !== undefined ) {
57133 if ( value === null ) {
57134 jQuery.removeAttr( elem, name );
57135 return;
57136 }
57137
57138 if ( hooks && "set" in hooks &&
57139 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
57140 return ret;
57141 }
57142
57143 elem.setAttribute( name, value + "" );
57144 return value;
57145 }
57146
57147 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
57148 return ret;
57149 }
57150
57151 ret = jQuery.find.attr( elem, name );
57152
57153 // Non-existent attributes return null, we normalize to undefined
57154 return ret == null ? undefined : ret;
57155 },
57156
57157 attrHooks: {
57158 type: {
57159 set: function( elem, value ) {
57160 if ( !support.radioValue && value === "radio" &&
57161 jQuery.nodeName( elem, "input" ) ) {
57162 var val = elem.value;
57163 elem.setAttribute( "type", value );
57164 if ( val ) {
57165 elem.value = val;
57166 }
57167 return value;
57168 }
57169 }
57170 }
57171 },
57172
57173 removeAttr: function( elem, value ) {
57174 var name, propName,
57175 i = 0,
57176 attrNames = value && value.match( rnotwhite );
57177
57178 if ( attrNames && elem.nodeType === 1 ) {
57179 while ( ( name = attrNames[ i++ ] ) ) {
57180 propName = jQuery.propFix[ name ] || name;
57181
57182 // Boolean attributes get special treatment (#10870)
57183 if ( jQuery.expr.match.bool.test( name ) ) {
57184
57185 // Set corresponding property to false
57186 elem[ propName ] = false;
57187 }
57188
57189 elem.removeAttribute( name );
57190 }
57191 }
57192 }
57193 } );
57194
57195 // Hooks for boolean attributes
57196 boolHook = {
57197 set: function( elem, value, name ) {
57198 if ( value === false ) {
57199
57200 // Remove boolean attributes when set to false
57201 jQuery.removeAttr( elem, name );
57202 } else {
57203 elem.setAttribute( name, name );
57204 }
57205 return name;
57206 }
57207 };
57208 jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
57209 var getter = attrHandle[ name ] || jQuery.find.attr;
57210
57211 attrHandle[ name ] = function( elem, name, isXML ) {
57212 var ret, handle;
57213 if ( !isXML ) {
57214
57215 // Avoid an infinite loop by temporarily removing this function from the getter
57216 handle = attrHandle[ name ];
57217 attrHandle[ name ] = ret;
57218 ret = getter( elem, name, isXML ) != null ?
57219 name.toLowerCase() :
57220 null;
57221 attrHandle[ name ] = handle;
57222 }
57223 return ret;
57224 };
57225 } );
57226
57227
57228
57229
57230 var rfocusable = /^(?:input|select|textarea|button)$/i,
57231 rclickable = /^(?:a|area)$/i;
57232
57233 jQuery.fn.extend( {
57234 prop: function( name, value ) {
57235 return access( this, jQuery.prop, name, value, arguments.length > 1 );
57236 },
57237
57238 removeProp: function( name ) {
57239 return this.each( function() {
57240 delete this[ jQuery.propFix[ name ] || name ];
57241 } );
57242 }
57243 } );
57244
57245 jQuery.extend( {
57246 prop: function( elem, name, value ) {
57247 var ret, hooks,
57248 nType = elem.nodeType;
57249
57250 // Don't get/set properties on text, comment and attribute nodes
57251 if ( nType === 3 || nType === 8 || nType === 2 ) {
57252 return;
57253 }
57254
57255 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
57256
57257 // Fix name and attach hooks
57258 name = jQuery.propFix[ name ] || name;
57259 hooks = jQuery.propHooks[ name ];
57260 }
57261
57262 if ( value !== undefined ) {
57263 if ( hooks && "set" in hooks &&
57264 ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
57265 return ret;
57266 }
57267
57268 return ( elem[ name ] = value );
57269 }
57270
57271 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
57272 return ret;
57273 }
57274
57275 return elem[ name ];
57276 },
57277
57278 propHooks: {
57279 tabIndex: {
57280 get: function( elem ) {
57281
57282 // elem.tabIndex doesn't always return the
57283 // correct value when it hasn't been explicitly set
57284 // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
57285 // Use proper attribute retrieval(#12072)
57286 var tabindex = jQuery.find.attr( elem, "tabindex" );
57287
57288 return tabindex ?
57289 parseInt( tabindex, 10 ) :
57290 rfocusable.test( elem.nodeName ) ||
57291 rclickable.test( elem.nodeName ) && elem.href ?
57292 0 :
57293 -1;
57294 }
57295 }
57296 },
57297
57298 propFix: {
57299 "for": "htmlFor",
57300 "class": "className"
57301 }
57302 } );
57303
57304 // Support: IE <=11 only
57305 // Accessing the selectedIndex property
57306 // forces the browser to respect setting selected
57307 // on the option
57308 // The getter ensures a default option is selected
57309 // when in an optgroup
57310 if ( !support.optSelected ) {
57311 jQuery.propHooks.selected = {
57312 get: function( elem ) {
57313 var parent = elem.parentNode;
57314 if ( parent && parent.parentNode ) {
57315 parent.parentNode.selectedIndex;
57316 }
57317 return null;
57318 },
57319 set: function( elem ) {
57320 var parent = elem.parentNode;
57321 if ( parent ) {
57322 parent.selectedIndex;
57323
57324 if ( parent.parentNode ) {
57325 parent.parentNode.selectedIndex;
57326 }
57327 }
57328 }
57329 };
57330 }
57331
57332 jQuery.each( [
57333 "tabIndex",
57334 "readOnly",
57335 "maxLength",
57336 "cellSpacing",
57337 "cellPadding",
57338 "rowSpan",
57339 "colSpan",
57340 "useMap",
57341 "frameBorder",
57342 "contentEditable"
57343 ], function() {
57344 jQuery.propFix[ this.toLowerCase() ] = this;
57345 } );
57346
57347
57348
57349
57350 var rclass = /[\t\r\n\f]/g;
57351
57352 function getClass( elem ) {
57353 return elem.getAttribute && elem.getAttribute( "class" ) || "";
57354 }
57355
57356 jQuery.fn.extend( {
57357 addClass: function( value ) {
57358 var classes, elem, cur, curValue, clazz, j, finalValue,
57359 i = 0;
57360
57361 if ( jQuery.isFunction( value ) ) {
57362 return this.each( function( j ) {
57363 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
57364 } );
57365 }
57366
57367 if ( typeof value === "string" && value ) {
57368 classes = value.match( rnotwhite ) || [];
57369
57370 while ( ( elem = this[ i++ ] ) ) {
57371 curValue = getClass( elem );
57372 cur = elem.nodeType === 1 &&
57373 ( " " + curValue + " " ).replace( rclass, " " );
57374
57375 if ( cur ) {
57376 j = 0;
57377 while ( ( clazz = classes[ j++ ] ) ) {
57378 if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
57379 cur += clazz + " ";
57380 }
57381 }
57382
57383 // Only assign if different to avoid unneeded rendering.
57384 finalValue = jQuery.trim( cur );
57385 if ( curValue !== finalValue ) {
57386 elem.setAttribute( "class", finalValue );
57387 }
57388 }
57389 }
57390 }
57391
57392 return this;
57393 },
57394
57395 removeClass: function( value ) {
57396 var classes, elem, cur, curValue, clazz, j, finalValue,
57397 i = 0;
57398
57399 if ( jQuery.isFunction( value ) ) {
57400 return this.each( function( j ) {
57401 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
57402 } );
57403 }
57404
57405 if ( !arguments.length ) {
57406 return this.attr( "class", "" );
57407 }
57408
57409 if ( typeof value === "string" && value ) {
57410 classes = value.match( rnotwhite ) || [];
57411
57412 while ( ( elem = this[ i++ ] ) ) {
57413 curValue = getClass( elem );
57414
57415 // This expression is here for better compressibility (see addClass)
57416 cur = elem.nodeType === 1 &&
57417 ( " " + curValue + " " ).replace( rclass, " " );
57418
57419 if ( cur ) {
57420 j = 0;
57421 while ( ( clazz = classes[ j++ ] ) ) {
57422
57423 // Remove *all* instances
57424 while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
57425 cur = cur.replace( " " + clazz + " ", " " );
57426 }
57427 }
57428
57429 // Only assign if different to avoid unneeded rendering.
57430 finalValue = jQuery.trim( cur );
57431 if ( curValue !== finalValue ) {
57432 elem.setAttribute( "class", finalValue );
57433 }
57434 }
57435 }
57436 }
57437
57438 return this;
57439 },
57440
57441 toggleClass: function( value, stateVal ) {
57442 var type = typeof value;
57443
57444 if ( typeof stateVal === "boolean" && type === "string" ) {
57445 return stateVal ? this.addClass( value ) : this.removeClass( value );
57446 }
57447
57448 if ( jQuery.isFunction( value ) ) {
57449 return this.each( function( i ) {
57450 jQuery( this ).toggleClass(
57451 value.call( this, i, getClass( this ), stateVal ),
57452 stateVal
57453 );
57454 } );
57455 }
57456
57457 return this.each( function() {
57458 var className, i, self, classNames;
57459
57460 if ( type === "string" ) {
57461
57462 // Toggle individual class names
57463 i = 0;
57464 self = jQuery( this );
57465 classNames = value.match( rnotwhite ) || [];
57466
57467 while ( ( className = classNames[ i++ ] ) ) {
57468
57469 // Check each className given, space separated list
57470 if ( self.hasClass( className ) ) {
57471 self.removeClass( className );
57472 } else {
57473 self.addClass( className );
57474 }
57475 }
57476
57477 // Toggle whole class name
57478 } else if ( value === undefined || type === "boolean" ) {
57479 className = getClass( this );
57480 if ( className ) {
57481
57482 // Store className if set
57483 dataPriv.set( this, "__className__", className );
57484 }
57485
57486 // If the element has a class name or if we're passed `false`,
57487 // then remove the whole classname (if there was one, the above saved it).
57488 // Otherwise bring back whatever was previously saved (if anything),
57489 // falling back to the empty string if nothing was stored.
57490 if ( this.setAttribute ) {
57491 this.setAttribute( "class",
57492 className || value === false ?
57493 "" :
57494 dataPriv.get( this, "__className__" ) || ""
57495 );
57496 }
57497 }
57498 } );
57499 },
57500
57501 hasClass: function( selector ) {
57502 var className, elem,
57503 i = 0;
57504
57505 className = " " + selector + " ";
57506 while ( ( elem = this[ i++ ] ) ) {
57507 if ( elem.nodeType === 1 &&
57508 ( " " + getClass( elem ) + " " ).replace( rclass, " " )
57509 .indexOf( className ) > -1
57510 ) {
57511 return true;
57512 }
57513 }
57514
57515 return false;
57516 }
57517 } );
57518
57519
57520
57521
57522 var rreturn = /\r/g,
57523 rspaces = /[\x20\t\r\n\f]+/g;
57524
57525 jQuery.fn.extend( {
57526 val: function( value ) {
57527 var hooks, ret, isFunction,
57528 elem = this[ 0 ];
57529
57530 if ( !arguments.length ) {
57531 if ( elem ) {
57532 hooks = jQuery.valHooks[ elem.type ] ||
57533 jQuery.valHooks[ elem.nodeName.toLowerCase() ];
57534
57535 if ( hooks &&
57536 "get" in hooks &&
57537 ( ret = hooks.get( elem, "value" ) ) !== undefined
57538 ) {
57539 return ret;
57540 }
57541
57542 ret = elem.value;
57543
57544 return typeof ret === "string" ?
57545
57546 // Handle most common string cases
57547 ret.replace( rreturn, "" ) :
57548
57549 // Handle cases where value is null/undef or number
57550 ret == null ? "" : ret;
57551 }
57552
57553 return;
57554 }
57555
57556 isFunction = jQuery.isFunction( value );
57557
57558 return this.each( function( i ) {
57559 var val;
57560
57561 if ( this.nodeType !== 1 ) {
57562 return;
57563 }
57564
57565 if ( isFunction ) {
57566 val = value.call( this, i, jQuery( this ).val() );
57567 } else {
57568 val = value;
57569 }
57570
57571 // Treat null/undefined as ""; convert numbers to string
57572 if ( val == null ) {
57573 val = "";
57574
57575 } else if ( typeof val === "number" ) {
57576 val += "";
57577
57578 } else if ( jQuery.isArray( val ) ) {
57579 val = jQuery.map( val, function( value ) {
57580 return value == null ? "" : value + "";
57581 } );
57582 }
57583
57584 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
57585
57586 // If set returns undefined, fall back to normal setting
57587 if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
57588 this.value = val;
57589 }
57590 } );
57591 }
57592 } );
57593
57594 jQuery.extend( {
57595 valHooks: {
57596 option: {
57597 get: function( elem ) {
57598
57599 var val = jQuery.find.attr( elem, "value" );
57600 return val != null ?
57601 val :
57602
57603 // Support: IE10-11+
57604 // option.text throws exceptions (#14686, #14858)
57605 // Strip and collapse whitespace
57606 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
57607 jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " );
57608 }
57609 },
57610 select: {
57611 get: function( elem ) {
57612 var value, option,
57613 options = elem.options,
57614 index = elem.selectedIndex,
57615 one = elem.type === "select-one" || index < 0,
57616 values = one ? null : [],
57617 max = one ? index + 1 : options.length,
57618 i = index < 0 ?
57619 max :
57620 one ? index : 0;
57621
57622 // Loop through all the selected options
57623 for ( ; i < max; i++ ) {
57624 option = options[ i ];
57625
57626 // IE8-9 doesn't update selected after form reset (#2551)
57627 if ( ( option.selected || i === index ) &&
57628
57629 // Don't return options that are disabled or in a disabled optgroup
57630 ( support.optDisabled ?
57631 !option.disabled : option.getAttribute( "disabled" ) === null ) &&
57632 ( !option.parentNode.disabled ||
57633 !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
57634
57635 // Get the specific value for the option
57636 value = jQuery( option ).val();
57637
57638 // We don't need an array for one selects
57639 if ( one ) {
57640 return value;
57641 }
57642
57643 // Multi-Selects return an array
57644 values.push( value );
57645 }
57646 }
57647
57648 return values;
57649 },
57650
57651 set: function( elem, value ) {
57652 var optionSet, option,
57653 options = elem.options,
57654 values = jQuery.makeArray( value ),
57655 i = options.length;
57656
57657 while ( i-- ) {
57658 option = options[ i ];
57659 if ( option.selected =
57660 jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
57661 ) {
57662 optionSet = true;
57663 }
57664 }
57665
57666 // Force browsers to behave consistently when non-matching value is set
57667 if ( !optionSet ) {
57668 elem.selectedIndex = -1;
57669 }
57670 return values;
57671 }
57672 }
57673 }
57674 } );
57675
57676 // Radios and checkboxes getter/setter
57677 jQuery.each( [ "radio", "checkbox" ], function() {
57678 jQuery.valHooks[ this ] = {
57679 set: function( elem, value ) {
57680 if ( jQuery.isArray( value ) ) {
57681 return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
57682 }
57683 }
57684 };
57685 if ( !support.checkOn ) {
57686 jQuery.valHooks[ this ].get = function( elem ) {
57687 return elem.getAttribute( "value" ) === null ? "on" : elem.value;
57688 };
57689 }
57690 } );
57691
57692
57693
57694
57695 // Return jQuery for attributes-only inclusion
57696
57697
57698 var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
57699
57700 jQuery.extend( jQuery.event, {
57701
57702 trigger: function( event, data, elem, onlyHandlers ) {
57703
57704 var i, cur, tmp, bubbleType, ontype, handle, special,
57705 eventPath = [ elem || document ],
57706 type = hasOwn.call( event, "type" ) ? event.type : event,
57707 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
57708
57709 cur = tmp = elem = elem || document;
57710
57711 // Don't do events on text and comment nodes
57712 if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
57713 return;
57714 }
57715
57716 // focus/blur morphs to focusin/out; ensure we're not firing them right now
57717 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
57718 return;
57719 }
57720
57721 if ( type.indexOf( "." ) > -1 ) {
57722
57723 // Namespaced trigger; create a regexp to match event type in handle()
57724 namespaces = type.split( "." );
57725 type = namespaces.shift();
57726 namespaces.sort();
57727 }
57728 ontype = type.indexOf( ":" ) < 0 && "on" + type;
57729
57730 // Caller can pass in a jQuery.Event object, Object, or just an event type string
57731 event = event[ jQuery.expando ] ?
57732 event :
57733 new jQuery.Event( type, typeof event === "object" && event );
57734
57735 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
57736 event.isTrigger = onlyHandlers ? 2 : 3;
57737 event.namespace = namespaces.join( "." );
57738 event.rnamespace = event.namespace ?
57739 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
57740 null;
57741
57742 // Clean up the event in case it is being reused
57743 event.result = undefined;
57744 if ( !event.target ) {
57745 event.target = elem;
57746 }
57747
57748 // Clone any incoming data and prepend the event, creating the handler arg list
57749 data = data == null ?
57750 [ event ] :
57751 jQuery.makeArray( data, [ event ] );
57752
57753 // Allow special events to draw outside the lines
57754 special = jQuery.event.special[ type ] || {};
57755 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
57756 return;
57757 }
57758
57759 // Determine event propagation path in advance, per W3C events spec (#9951)
57760 // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
57761 if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
57762
57763 bubbleType = special.delegateType || type;
57764 if ( !rfocusMorph.test( bubbleType + type ) ) {
57765 cur = cur.parentNode;
57766 }
57767 for ( ; cur; cur = cur.parentNode ) {
57768 eventPath.push( cur );
57769 tmp = cur;
57770 }
57771
57772 // Only add window if we got to document (e.g., not plain obj or detached DOM)
57773 if ( tmp === ( elem.ownerDocument || document ) ) {
57774 eventPath.push( tmp.defaultView || tmp.parentWindow || window );
57775 }
57776 }
57777
57778 // Fire handlers on the event path
57779 i = 0;
57780 while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
57781
57782 event.type = i > 1 ?
57783 bubbleType :
57784 special.bindType || type;
57785
57786 // jQuery handler
57787 handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
57788 dataPriv.get( cur, "handle" );
57789 if ( handle ) {
57790 handle.apply( cur, data );
57791 }
57792
57793 // Native handler
57794 handle = ontype && cur[ ontype ];
57795 if ( handle && handle.apply && acceptData( cur ) ) {
57796 event.result = handle.apply( cur, data );
57797 if ( event.result === false ) {
57798 event.preventDefault();
57799 }
57800 }
57801 }
57802 event.type = type;
57803
57804 // If nobody prevented the default action, do it now
57805 if ( !onlyHandlers && !event.isDefaultPrevented() ) {
57806
57807 if ( ( !special._default ||
57808 special._default.apply( eventPath.pop(), data ) === false ) &&
57809 acceptData( elem ) ) {
57810
57811 // Call a native DOM method on the target with the same name name as the event.
57812 // Don't do default actions on window, that's where global variables be (#6170)
57813 if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
57814
57815 // Don't re-trigger an onFOO event when we call its FOO() method
57816 tmp = elem[ ontype ];
57817
57818 if ( tmp ) {
57819 elem[ ontype ] = null;
57820 }
57821
57822 // Prevent re-triggering of the same event, since we already bubbled it above
57823 jQuery.event.triggered = type;
57824 elem[ type ]();
57825 jQuery.event.triggered = undefined;
57826
57827 if ( tmp ) {
57828 elem[ ontype ] = tmp;
57829 }
57830 }
57831 }
57832 }
57833
57834 return event.result;
57835 },
57836
57837 // Piggyback on a donor event to simulate a different one
57838 // Used only for `focus(in | out)` events
57839 simulate: function( type, elem, event ) {
57840 var e = jQuery.extend(
57841 new jQuery.Event(),
57842 event,
57843 {
57844 type: type,
57845 isSimulated: true
57846 }
57847 );
57848
57849 jQuery.event.trigger( e, null, elem );
57850 }
57851
57852 } );
57853
57854 jQuery.fn.extend( {
57855
57856 trigger: function( type, data ) {
57857 return this.each( function() {
57858 jQuery.event.trigger( type, data, this );
57859 } );
57860 },
57861 triggerHandler: function( type, data ) {
57862 var elem = this[ 0 ];
57863 if ( elem ) {
57864 return jQuery.event.trigger( type, data, elem, true );
57865 }
57866 }
57867 } );
57868
57869
57870 jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " +
57871 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
57872 "change select submit keydown keypress keyup error contextmenu" ).split( " " ),
57873 function( i, name ) {
57874
57875 // Handle event binding
57876 jQuery.fn[ name ] = function( data, fn ) {
57877 return arguments.length > 0 ?
57878 this.on( name, null, data, fn ) :
57879 this.trigger( name );
57880 };
57881 } );
57882
57883 jQuery.fn.extend( {
57884 hover: function( fnOver, fnOut ) {
57885 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
57886 }
57887 } );
57888
57889
57890
57891
57892 support.focusin = "onfocusin" in window;
57893
57894
57895 // Support: Firefox
57896 // Firefox doesn't have focus(in | out) events
57897 // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
57898 //
57899 // Support: Chrome, Safari
57900 // focus(in | out) events fire after focus & blur events,
57901 // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
57902 // Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
57903 if ( !support.focusin ) {
57904 jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
57905
57906 // Attach a single capturing handler on the document while someone wants focusin/focusout
57907 var handler = function( event ) {
57908 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
57909 };
57910
57911 jQuery.event.special[ fix ] = {
57912 setup: function() {
57913 var doc = this.ownerDocument || this,
57914 attaches = dataPriv.access( doc, fix );
57915
57916 if ( !attaches ) {
57917 doc.addEventListener( orig, handler, true );
57918 }
57919 dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
57920 },
57921 teardown: function() {
57922 var doc = this.ownerDocument || this,
57923 attaches = dataPriv.access( doc, fix ) - 1;
57924
57925 if ( !attaches ) {
57926 doc.removeEventListener( orig, handler, true );
57927 dataPriv.remove( doc, fix );
57928
57929 } else {
57930 dataPriv.access( doc, fix, attaches );
57931 }
57932 }
57933 };
57934 } );
57935 }
57936 var location = window.location;
57937
57938 var nonce = jQuery.now();
57939
57940 var rquery = ( /\?/ );
57941
57942
57943
57944 // Support: Android 2.3
57945 // Workaround failure to string-cast null input
57946 jQuery.parseJSON = function( data ) {
57947 return JSON.parse( data + "" );
57948 };
57949
57950
57951 // Cross-browser xml parsing
57952 jQuery.parseXML = function( data ) {
57953 var xml;
57954 if ( !data || typeof data !== "string" ) {
57955 return null;
57956 }
57957
57958 // Support: IE9
57959 try {
57960 xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
57961 } catch ( e ) {
57962 xml = undefined;
57963 }
57964
57965 if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
57966 jQuery.error( "Invalid XML: " + data );
57967 }
57968 return xml;
57969 };
57970
57971
57972 var
57973 rhash = /#.*$/,
57974 rts = /([?&])_=[^&]*/,
57975 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
57976
57977 // #7653, #8125, #8152: local protocol detection
57978 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
57979 rnoContent = /^(?:GET|HEAD)$/,
57980 rprotocol = /^\/\//,
57981
57982 /* Prefilters
57983 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
57984 * 2) These are called:
57985 * - BEFORE asking for a transport
57986 * - AFTER param serialization (s.data is a string if s.processData is true)
57987 * 3) key is the dataType
57988 * 4) the catchall symbol "*" can be used
57989 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
57990 */
57991 prefilters = {},
57992
57993 /* Transports bindings
57994 * 1) key is the dataType
57995 * 2) the catchall symbol "*" can be used
57996 * 3) selection will start with transport dataType and THEN go to "*" if needed
57997 */
57998 transports = {},
57999
58000 // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
58001 allTypes = "*/".concat( "*" ),
58002
58003 // Anchor tag for parsing the document origin
58004 originAnchor = document.createElement( "a" );
58005 originAnchor.href = location.href;
58006
58007 // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
58008 function addToPrefiltersOrTransports( structure ) {
58009
58010 // dataTypeExpression is optional and defaults to "*"
58011 return function( dataTypeExpression, func ) {
58012
58013 if ( typeof dataTypeExpression !== "string" ) {
58014 func = dataTypeExpression;
58015 dataTypeExpression = "*";
58016 }
58017
58018 var dataType,
58019 i = 0,
58020 dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
58021
58022 if ( jQuery.isFunction( func ) ) {
58023
58024 // For each dataType in the dataTypeExpression
58025 while ( ( dataType = dataTypes[ i++ ] ) ) {
58026
58027 // Prepend if requested
58028 if ( dataType[ 0 ] === "+" ) {
58029 dataType = dataType.slice( 1 ) || "*";
58030 ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
58031
58032 // Otherwise append
58033 } else {
58034 ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
58035 }
58036 }
58037 }
58038 };
58039 }
58040
58041 // Base inspection function for prefilters and transports
58042 function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
58043
58044 var inspected = {},
58045 seekingTransport = ( structure === transports );
58046
58047 function inspect( dataType ) {
58048 var selected;
58049 inspected[ dataType ] = true;
58050 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
58051 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
58052 if ( typeof dataTypeOrTransport === "string" &&
58053 !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
58054
58055 options.dataTypes.unshift( dataTypeOrTransport );
58056 inspect( dataTypeOrTransport );
58057 return false;
58058 } else if ( seekingTransport ) {
58059 return !( selected = dataTypeOrTransport );
58060 }
58061 } );
58062 return selected;
58063 }
58064
58065 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
58066 }
58067
58068 // A special extend for ajax options
58069 // that takes "flat" options (not to be deep extended)
58070 // Fixes #9887
58071 function ajaxExtend( target, src ) {
58072 var key, deep,
58073 flatOptions = jQuery.ajaxSettings.flatOptions || {};
58074
58075 for ( key in src ) {
58076 if ( src[ key ] !== undefined ) {
58077 ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
58078 }
58079 }
58080 if ( deep ) {
58081 jQuery.extend( true, target, deep );
58082 }
58083
58084 return target;
58085 }
58086
58087 /* Handles responses to an ajax request:
58088 * - finds the right dataType (mediates between content-type and expected dataType)
58089 * - returns the corresponding response
58090 */
58091 function ajaxHandleResponses( s, jqXHR, responses ) {
58092
58093 var ct, type, finalDataType, firstDataType,
58094 contents = s.contents,
58095 dataTypes = s.dataTypes;
58096
58097 // Remove auto dataType and get content-type in the process
58098 while ( dataTypes[ 0 ] === "*" ) {
58099 dataTypes.shift();
58100 if ( ct === undefined ) {
58101 ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
58102 }
58103 }
58104
58105 // Check if we're dealing with a known content-type
58106 if ( ct ) {
58107 for ( type in contents ) {
58108 if ( contents[ type ] && contents[ type ].test( ct ) ) {
58109 dataTypes.unshift( type );
58110 break;
58111 }
58112 }
58113 }
58114
58115 // Check to see if we have a response for the expected dataType
58116 if ( dataTypes[ 0 ] in responses ) {
58117 finalDataType = dataTypes[ 0 ];
58118 } else {
58119
58120 // Try convertible dataTypes
58121 for ( type in responses ) {
58122 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
58123 finalDataType = type;
58124 break;
58125 }
58126 if ( !firstDataType ) {
58127 firstDataType = type;
58128 }
58129 }
58130
58131 // Or just use first one
58132 finalDataType = finalDataType || firstDataType;
58133 }
58134
58135 // If we found a dataType
58136 // We add the dataType to the list if needed
58137 // and return the corresponding response
58138 if ( finalDataType ) {
58139 if ( finalDataType !== dataTypes[ 0 ] ) {
58140 dataTypes.unshift( finalDataType );
58141 }
58142 return responses[ finalDataType ];
58143 }
58144 }
58145
58146 /* Chain conversions given the request and the original response
58147 * Also sets the responseXXX fields on the jqXHR instance
58148 */
58149 function ajaxConvert( s, response, jqXHR, isSuccess ) {
58150 var conv2, current, conv, tmp, prev,
58151 converters = {},
58152
58153 // Work with a copy of dataTypes in case we need to modify it for conversion
58154 dataTypes = s.dataTypes.slice();
58155
58156 // Create converters map with lowercased keys
58157 if ( dataTypes[ 1 ] ) {
58158 for ( conv in s.converters ) {
58159 converters[ conv.toLowerCase() ] = s.converters[ conv ];
58160 }
58161 }
58162
58163 current = dataTypes.shift();
58164
58165 // Convert to each sequential dataType
58166 while ( current ) {
58167
58168 if ( s.responseFields[ current ] ) {
58169 jqXHR[ s.responseFields[ current ] ] = response;
58170 }
58171
58172 // Apply the dataFilter if provided
58173 if ( !prev && isSuccess && s.dataFilter ) {
58174 response = s.dataFilter( response, s.dataType );
58175 }
58176
58177 prev = current;
58178 current = dataTypes.shift();
58179
58180 if ( current ) {
58181
58182 // There's only work to do if current dataType is non-auto
58183 if ( current === "*" ) {
58184
58185 current = prev;
58186
58187 // Convert response if prev dataType is non-auto and differs from current
58188 } else if ( prev !== "*" && prev !== current ) {
58189
58190 // Seek a direct converter
58191 conv = converters[ prev + " " + current ] || converters[ "* " + current ];
58192
58193 // If none found, seek a pair
58194 if ( !conv ) {
58195 for ( conv2 in converters ) {
58196
58197 // If conv2 outputs current
58198 tmp = conv2.split( " " );
58199 if ( tmp[ 1 ] === current ) {
58200
58201 // If prev can be converted to accepted input
58202 conv = converters[ prev + " " + tmp[ 0 ] ] ||
58203 converters[ "* " + tmp[ 0 ] ];
58204 if ( conv ) {
58205
58206 // Condense equivalence converters
58207 if ( conv === true ) {
58208 conv = converters[ conv2 ];
58209
58210 // Otherwise, insert the intermediate dataType
58211 } else if ( converters[ conv2 ] !== true ) {
58212 current = tmp[ 0 ];
58213 dataTypes.unshift( tmp[ 1 ] );
58214 }
58215 break;
58216 }
58217 }
58218 }
58219 }
58220
58221 // Apply converter (if not an equivalence)
58222 if ( conv !== true ) {
58223
58224 // Unless errors are allowed to bubble, catch and return them
58225 if ( conv && s.throws ) {
58226 response = conv( response );
58227 } else {
58228 try {
58229 response = conv( response );
58230 } catch ( e ) {
58231 return {
58232 state: "parsererror",
58233 error: conv ? e : "No conversion from " + prev + " to " + current
58234 };
58235 }
58236 }
58237 }
58238 }
58239 }
58240 }
58241
58242 return { state: "success", data: response };
58243 }
58244
58245 jQuery.extend( {
58246
58247 // Counter for holding the number of active queries
58248 active: 0,
58249
58250 // Last-Modified header cache for next request
58251 lastModified: {},
58252 etag: {},
58253
58254 ajaxSettings: {
58255 url: location.href,
58256 type: "GET",
58257 isLocal: rlocalProtocol.test( location.protocol ),
58258 global: true,
58259 processData: true,
58260 async: true,
58261 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
58262 /*
58263 timeout: 0,
58264 data: null,
58265 dataType: null,
58266 username: null,
58267 password: null,
58268 cache: null,
58269 throws: false,
58270 traditional: false,
58271 headers: {},
58272 */
58273
58274 accepts: {
58275 "*": allTypes,
58276 text: "text/plain",
58277 html: "text/html",
58278 xml: "application/xml, text/xml",
58279 json: "application/json, text/javascript"
58280 },
58281
58282 contents: {
58283 xml: /\bxml\b/,
58284 html: /\bhtml/,
58285 json: /\bjson\b/
58286 },
58287
58288 responseFields: {
58289 xml: "responseXML",
58290 text: "responseText",
58291 json: "responseJSON"
58292 },
58293
58294 // Data converters
58295 // Keys separate source (or catchall "*") and destination types with a single space
58296 converters: {
58297
58298 // Convert anything to text
58299 "* text": String,
58300
58301 // Text to html (true = no transformation)
58302 "text html": true,
58303
58304 // Evaluate text as a json expression
58305 "text json": jQuery.parseJSON,
58306
58307 // Parse text as xml
58308 "text xml": jQuery.parseXML
58309 },
58310
58311 // For options that shouldn't be deep extended:
58312 // you can add your own custom options here if
58313 // and when you create one that shouldn't be
58314 // deep extended (see ajaxExtend)
58315 flatOptions: {
58316 url: true,
58317 context: true
58318 }
58319 },
58320
58321 // Creates a full fledged settings object into target
58322 // with both ajaxSettings and settings fields.
58323 // If target is omitted, writes into ajaxSettings.
58324 ajaxSetup: function( target, settings ) {
58325 return settings ?
58326
58327 // Building a settings object
58328 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
58329
58330 // Extending ajaxSettings
58331 ajaxExtend( jQuery.ajaxSettings, target );
58332 },
58333
58334 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
58335 ajaxTransport: addToPrefiltersOrTransports( transports ),
58336
58337 // Main method
58338 ajax: function( url, options ) {
58339
58340 // If url is an object, simulate pre-1.5 signature
58341 if ( typeof url === "object" ) {
58342 options = url;
58343 url = undefined;
58344 }
58345
58346 // Force options to be an object
58347 options = options || {};
58348
58349 var transport,
58350
58351 // URL without anti-cache param
58352 cacheURL,
58353
58354 // Response headers
58355 responseHeadersString,
58356 responseHeaders,
58357
58358 // timeout handle
58359 timeoutTimer,
58360
58361 // Url cleanup var
58362 urlAnchor,
58363
58364 // To know if global events are to be dispatched
58365 fireGlobals,
58366
58367 // Loop variable
58368 i,
58369
58370 // Create the final options object
58371 s = jQuery.ajaxSetup( {}, options ),
58372
58373 // Callbacks context
58374 callbackContext = s.context || s,
58375
58376 // Context for global events is callbackContext if it is a DOM node or jQuery collection
58377 globalEventContext = s.context &&
58378 ( callbackContext.nodeType || callbackContext.jquery ) ?
58379 jQuery( callbackContext ) :
58380 jQuery.event,
58381
58382 // Deferreds
58383 deferred = jQuery.Deferred(),
58384 completeDeferred = jQuery.Callbacks( "once memory" ),
58385
58386 // Status-dependent callbacks
58387 statusCode = s.statusCode || {},
58388
58389 // Headers (they are sent all at once)
58390 requestHeaders = {},
58391 requestHeadersNames = {},
58392
58393 // The jqXHR state
58394 state = 0,
58395
58396 // Default abort message
58397 strAbort = "canceled",
58398
58399 // Fake xhr
58400 jqXHR = {
58401 readyState: 0,
58402
58403 // Builds headers hashtable if needed
58404 getResponseHeader: function( key ) {
58405 var match;
58406 if ( state === 2 ) {
58407 if ( !responseHeaders ) {
58408 responseHeaders = {};
58409 while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
58410 responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
58411 }
58412 }
58413 match = responseHeaders[ key.toLowerCase() ];
58414 }
58415 return match == null ? null : match;
58416 },
58417
58418 // Raw string
58419 getAllResponseHeaders: function() {
58420 return state === 2 ? responseHeadersString : null;
58421 },
58422
58423 // Caches the header
58424 setRequestHeader: function( name, value ) {
58425 var lname = name.toLowerCase();
58426 if ( !state ) {
58427 name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
58428 requestHeaders[ name ] = value;
58429 }
58430 return this;
58431 },
58432
58433 // Overrides response content-type header
58434 overrideMimeType: function( type ) {
58435 if ( !state ) {
58436 s.mimeType = type;
58437 }
58438 return this;
58439 },
58440
58441 // Status-dependent callbacks
58442 statusCode: function( map ) {
58443 var code;
58444 if ( map ) {
58445 if ( state < 2 ) {
58446 for ( code in map ) {
58447
58448 // Lazy-add the new callback in a way that preserves old ones
58449 statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
58450 }
58451 } else {
58452
58453 // Execute the appropriate callbacks
58454 jqXHR.always( map[ jqXHR.status ] );
58455 }
58456 }
58457 return this;
58458 },
58459
58460 // Cancel the request
58461 abort: function( statusText ) {
58462 var finalText = statusText || strAbort;
58463 if ( transport ) {
58464 transport.abort( finalText );
58465 }
58466 done( 0, finalText );
58467 return this;
58468 }
58469 };
58470
58471 // Attach deferreds
58472 deferred.promise( jqXHR ).complete = completeDeferred.add;
58473 jqXHR.success = jqXHR.done;
58474 jqXHR.error = jqXHR.fail;
58475
58476 // Remove hash character (#7531: and string promotion)
58477 // Add protocol if not provided (prefilters might expect it)
58478 // Handle falsy url in the settings object (#10093: consistency with old signature)
58479 // We also use the url parameter if available
58480 s.url = ( ( url || s.url || location.href ) + "" ).replace( rhash, "" )
58481 .replace( rprotocol, location.protocol + "//" );
58482
58483 // Alias method option to type as per ticket #12004
58484 s.type = options.method || options.type || s.method || s.type;
58485
58486 // Extract dataTypes list
58487 s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
58488
58489 // A cross-domain request is in order when the origin doesn't match the current origin.
58490 if ( s.crossDomain == null ) {
58491 urlAnchor = document.createElement( "a" );
58492
58493 // Support: IE8-11+
58494 // IE throws exception if url is malformed, e.g. http://example.com:80x/
58495 try {
58496 urlAnchor.href = s.url;
58497
58498 // Support: IE8-11+
58499 // Anchor's host property isn't correctly set when s.url is relative
58500 urlAnchor.href = urlAnchor.href;
58501 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
58502 urlAnchor.protocol + "//" + urlAnchor.host;
58503 } catch ( e ) {
58504
58505 // If there is an error parsing the URL, assume it is crossDomain,
58506 // it can be rejected by the transport if it is invalid
58507 s.crossDomain = true;
58508 }
58509 }
58510
58511 // Convert data if not already a string
58512 if ( s.data && s.processData && typeof s.data !== "string" ) {
58513 s.data = jQuery.param( s.data, s.traditional );
58514 }
58515
58516 // Apply prefilters
58517 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
58518
58519 // If request was aborted inside a prefilter, stop there
58520 if ( state === 2 ) {
58521 return jqXHR;
58522 }
58523
58524 // We can fire global events as of now if asked to
58525 // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
58526 fireGlobals = jQuery.event && s.global;
58527
58528 // Watch for a new set of requests
58529 if ( fireGlobals && jQuery.active++ === 0 ) {
58530 jQuery.event.trigger( "ajaxStart" );
58531 }
58532
58533 // Uppercase the type
58534 s.type = s.type.toUpperCase();
58535
58536 // Determine if request has content
58537 s.hasContent = !rnoContent.test( s.type );
58538
58539 // Save the URL in case we're toying with the If-Modified-Since
58540 // and/or If-None-Match header later on
58541 cacheURL = s.url;
58542
58543 // More options handling for requests with no content
58544 if ( !s.hasContent ) {
58545
58546 // If data is available, append data to url
58547 if ( s.data ) {
58548 cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
58549
58550 // #9682: remove data so that it's not used in an eventual retry
58551 delete s.data;
58552 }
58553
58554 // Add anti-cache in url if needed
58555 if ( s.cache === false ) {
58556 s.url = rts.test( cacheURL ) ?
58557
58558 // If there is already a '_' parameter, set its value
58559 cacheURL.replace( rts, "$1_=" + nonce++ ) :
58560
58561 // Otherwise add one to the end
58562 cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
58563 }
58564 }
58565
58566 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
58567 if ( s.ifModified ) {
58568 if ( jQuery.lastModified[ cacheURL ] ) {
58569 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
58570 }
58571 if ( jQuery.etag[ cacheURL ] ) {
58572 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
58573 }
58574 }
58575
58576 // Set the correct header, if data is being sent
58577 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
58578 jqXHR.setRequestHeader( "Content-Type", s.contentType );
58579 }
58580
58581 // Set the Accepts header for the server, depending on the dataType
58582 jqXHR.setRequestHeader(
58583 "Accept",
58584 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
58585 s.accepts[ s.dataTypes[ 0 ] ] +
58586 ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
58587 s.accepts[ "*" ]
58588 );
58589
58590 // Check for headers option
58591 for ( i in s.headers ) {
58592 jqXHR.setRequestHeader( i, s.headers[ i ] );
58593 }
58594
58595 // Allow custom headers/mimetypes and early abort
58596 if ( s.beforeSend &&
58597 ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
58598
58599 // Abort if not done already and return
58600 return jqXHR.abort();
58601 }
58602
58603 // Aborting is no longer a cancellation
58604 strAbort = "abort";
58605
58606 // Install callbacks on deferreds
58607 for ( i in { success: 1, error: 1, complete: 1 } ) {
58608 jqXHR[ i ]( s[ i ] );
58609 }
58610
58611 // Get transport
58612 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
58613
58614 // If no transport, we auto-abort
58615 if ( !transport ) {
58616 done( -1, "No Transport" );
58617 } else {
58618 jqXHR.readyState = 1;
58619
58620 // Send global event
58621 if ( fireGlobals ) {
58622 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
58623 }
58624
58625 // If request was aborted inside ajaxSend, stop there
58626 if ( state === 2 ) {
58627 return jqXHR;
58628 }
58629
58630 // Timeout
58631 if ( s.async && s.timeout > 0 ) {
58632 timeoutTimer = window.setTimeout( function() {
58633 jqXHR.abort( "timeout" );
58634 }, s.timeout );
58635 }
58636
58637 try {
58638 state = 1;
58639 transport.send( requestHeaders, done );
58640 } catch ( e ) {
58641
58642 // Propagate exception as error if not done
58643 if ( state < 2 ) {
58644 done( -1, e );
58645
58646 // Simply rethrow otherwise
58647 } else {
58648 throw e;
58649 }
58650 }
58651 }
58652
58653 // Callback for when everything is done
58654 function done( status, nativeStatusText, responses, headers ) {
58655 var isSuccess, success, error, response, modified,
58656 statusText = nativeStatusText;
58657
58658 // Called once
58659 if ( state === 2 ) {
58660 return;
58661 }
58662
58663 // State is "done" now
58664 state = 2;
58665
58666 // Clear timeout if it exists
58667 if ( timeoutTimer ) {
58668 window.clearTimeout( timeoutTimer );
58669 }
58670
58671 // Dereference transport for early garbage collection
58672 // (no matter how long the jqXHR object will be used)
58673 transport = undefined;
58674
58675 // Cache response headers
58676 responseHeadersString = headers || "";
58677
58678 // Set readyState
58679 jqXHR.readyState = status > 0 ? 4 : 0;
58680
58681 // Determine if successful
58682 isSuccess = status >= 200 && status < 300 || status === 304;
58683
58684 // Get response data
58685 if ( responses ) {
58686 response = ajaxHandleResponses( s, jqXHR, responses );
58687 }
58688
58689 // Convert no matter what (that way responseXXX fields are always set)
58690 response = ajaxConvert( s, response, jqXHR, isSuccess );
58691
58692 // If successful, handle type chaining
58693 if ( isSuccess ) {
58694
58695 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
58696 if ( s.ifModified ) {
58697 modified = jqXHR.getResponseHeader( "Last-Modified" );
58698 if ( modified ) {
58699 jQuery.lastModified[ cacheURL ] = modified;
58700 }
58701 modified = jqXHR.getResponseHeader( "etag" );
58702 if ( modified ) {
58703 jQuery.etag[ cacheURL ] = modified;
58704 }
58705 }
58706
58707 // if no content
58708 if ( status === 204 || s.type === "HEAD" ) {
58709 statusText = "nocontent";
58710
58711 // if not modified
58712 } else if ( status === 304 ) {
58713 statusText = "notmodified";
58714
58715 // If we have data, let's convert it
58716 } else {
58717 statusText = response.state;
58718 success = response.data;
58719 error = response.error;
58720 isSuccess = !error;
58721 }
58722 } else {
58723
58724 // Extract error from statusText and normalize for non-aborts
58725 error = statusText;
58726 if ( status || !statusText ) {
58727 statusText = "error";
58728 if ( status < 0 ) {
58729 status = 0;
58730 }
58731 }
58732 }
58733
58734 // Set data for the fake xhr object
58735 jqXHR.status = status;
58736 jqXHR.statusText = ( nativeStatusText || statusText ) + "";
58737
58738 // Success/Error
58739 if ( isSuccess ) {
58740 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
58741 } else {
58742 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
58743 }
58744
58745 // Status-dependent callbacks
58746 jqXHR.statusCode( statusCode );
58747 statusCode = undefined;
58748
58749 if ( fireGlobals ) {
58750 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
58751 [ jqXHR, s, isSuccess ? success : error ] );
58752 }
58753
58754 // Complete
58755 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
58756
58757 if ( fireGlobals ) {
58758 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
58759
58760 // Handle the global AJAX counter
58761 if ( !( --jQuery.active ) ) {
58762 jQuery.event.trigger( "ajaxStop" );
58763 }
58764 }
58765 }
58766
58767 return jqXHR;
58768 },
58769
58770 getJSON: function( url, data, callback ) {
58771 return jQuery.get( url, data, callback, "json" );
58772 },
58773
58774 getScript: function( url, callback ) {
58775 return jQuery.get( url, undefined, callback, "script" );
58776 }
58777 } );
58778
58779 jQuery.each( [ "get", "post" ], function( i, method ) {
58780 jQuery[ method ] = function( url, data, callback, type ) {
58781
58782 // Shift arguments if data argument was omitted
58783 if ( jQuery.isFunction( data ) ) {
58784 type = type || callback;
58785 callback = data;
58786 data = undefined;
58787 }
58788
58789 // The url can be an options object (which then must have .url)
58790 return jQuery.ajax( jQuery.extend( {
58791 url: url,
58792 type: method,
58793 dataType: type,
58794 data: data,
58795 success: callback
58796 }, jQuery.isPlainObject( url ) && url ) );
58797 };
58798 } );
58799
58800
58801 jQuery._evalUrl = function( url ) {
58802 return jQuery.ajax( {
58803 url: url,
58804
58805 // Make this explicit, since user can override this through ajaxSetup (#11264)
58806 type: "GET",
58807 dataType: "script",
58808 async: false,
58809 global: false,
58810 "throws": true
58811 } );
58812 };
58813
58814
58815 jQuery.fn.extend( {
58816 wrapAll: function( html ) {
58817 var wrap;
58818
58819 if ( jQuery.isFunction( html ) ) {
58820 return this.each( function( i ) {
58821 jQuery( this ).wrapAll( html.call( this, i ) );
58822 } );
58823 }
58824
58825 if ( this[ 0 ] ) {
58826
58827 // The elements to wrap the target around
58828 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
58829
58830 if ( this[ 0 ].parentNode ) {
58831 wrap.insertBefore( this[ 0 ] );
58832 }
58833
58834 wrap.map( function() {
58835 var elem = this;
58836
58837 while ( elem.firstElementChild ) {
58838 elem = elem.firstElementChild;
58839 }
58840
58841 return elem;
58842 } ).append( this );
58843 }
58844
58845 return this;
58846 },
58847
58848 wrapInner: function( html ) {
58849 if ( jQuery.isFunction( html ) ) {
58850 return this.each( function( i ) {
58851 jQuery( this ).wrapInner( html.call( this, i ) );
58852 } );
58853 }
58854
58855 return this.each( function() {
58856 var self = jQuery( this ),
58857 contents = self.contents();
58858
58859 if ( contents.length ) {
58860 contents.wrapAll( html );
58861
58862 } else {
58863 self.append( html );
58864 }
58865 } );
58866 },
58867
58868 wrap: function( html ) {
58869 var isFunction = jQuery.isFunction( html );
58870
58871 return this.each( function( i ) {
58872 jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
58873 } );
58874 },
58875
58876 unwrap: function() {
58877 return this.parent().each( function() {
58878 if ( !jQuery.nodeName( this, "body" ) ) {
58879 jQuery( this ).replaceWith( this.childNodes );
58880 }
58881 } ).end();
58882 }
58883 } );
58884
58885
58886 jQuery.expr.filters.hidden = function( elem ) {
58887 return !jQuery.expr.filters.visible( elem );
58888 };
58889 jQuery.expr.filters.visible = function( elem ) {
58890
58891 // Support: Opera <= 12.12
58892 // Opera reports offsetWidths and offsetHeights less than zero on some elements
58893 // Use OR instead of AND as the element is not visible if either is true
58894 // See tickets #10406 and #13132
58895 return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;
58896 };
58897
58898
58899
58900
58901 var r20 = /%20/g,
58902 rbracket = /\[\]$/,
58903 rCRLF = /\r?\n/g,
58904 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
58905 rsubmittable = /^(?:input|select|textarea|keygen)/i;
58906
58907 function buildParams( prefix, obj, traditional, add ) {
58908 var name;
58909
58910 if ( jQuery.isArray( obj ) ) {
58911
58912 // Serialize array item.
58913 jQuery.each( obj, function( i, v ) {
58914 if ( traditional || rbracket.test( prefix ) ) {
58915
58916 // Treat each array item as a scalar.
58917 add( prefix, v );
58918
58919 } else {
58920
58921 // Item is non-scalar (array or object), encode its numeric index.
58922 buildParams(
58923 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
58924 v,
58925 traditional,
58926 add
58927 );
58928 }
58929 } );
58930
58931 } else if ( !traditional && jQuery.type( obj ) === "object" ) {
58932
58933 // Serialize object item.
58934 for ( name in obj ) {
58935 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
58936 }
58937
58938 } else {
58939
58940 // Serialize scalar item.
58941 add( prefix, obj );
58942 }
58943 }
58944
58945 // Serialize an array of form elements or a set of
58946 // key/values into a query string
58947 jQuery.param = function( a, traditional ) {
58948 var prefix,
58949 s = [],
58950 add = function( key, value ) {
58951
58952 // If value is a function, invoke it and return its value
58953 value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
58954 s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
58955 };
58956
58957 // Set traditional to true for jQuery <= 1.3.2 behavior.
58958 if ( traditional === undefined ) {
58959 traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
58960 }
58961
58962 // If an array was passed in, assume that it is an array of form elements.
58963 if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
58964
58965 // Serialize the form elements
58966 jQuery.each( a, function() {
58967 add( this.name, this.value );
58968 } );
58969
58970 } else {
58971
58972 // If traditional, encode the "old" way (the way 1.3.2 or older
58973 // did it), otherwise encode params recursively.
58974 for ( prefix in a ) {
58975 buildParams( prefix, a[ prefix ], traditional, add );
58976 }
58977 }
58978
58979 // Return the resulting serialization
58980 return s.join( "&" ).replace( r20, "+" );
58981 };
58982
58983 jQuery.fn.extend( {
58984 serialize: function() {
58985 return jQuery.param( this.serializeArray() );
58986 },
58987 serializeArray: function() {
58988 return this.map( function() {
58989
58990 // Can add propHook for "elements" to filter or add form elements
58991 var elements = jQuery.prop( this, "elements" );
58992 return elements ? jQuery.makeArray( elements ) : this;
58993 } )
58994 .filter( function() {
58995 var type = this.type;
58996
58997 // Use .is( ":disabled" ) so that fieldset[disabled] works
58998 return this.name && !jQuery( this ).is( ":disabled" ) &&
58999 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
59000 ( this.checked || !rcheckableType.test( type ) );
59001 } )
59002 .map( function( i, elem ) {
59003 var val = jQuery( this ).val();
59004
59005 return val == null ?
59006 null :
59007 jQuery.isArray( val ) ?
59008 jQuery.map( val, function( val ) {
59009 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
59010 } ) :
59011 { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
59012 } ).get();
59013 }
59014 } );
59015
59016
59017 jQuery.ajaxSettings.xhr = function() {
59018 try {
59019 return new window.XMLHttpRequest();
59020 } catch ( e ) {}
59021 };
59022
59023 var xhrSuccessStatus = {
59024
59025 // File protocol always yields status code 0, assume 200
59026 0: 200,
59027
59028 // Support: IE9
59029 // #1450: sometimes IE returns 1223 when it should be 204
59030 1223: 204
59031 },
59032 xhrSupported = jQuery.ajaxSettings.xhr();
59033
59034 support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
59035 support.ajax = xhrSupported = !!xhrSupported;
59036
59037 jQuery.ajaxTransport( function( options ) {
59038 var callback, errorCallback;
59039
59040 // Cross domain only allowed if supported through XMLHttpRequest
59041 if ( support.cors || xhrSupported && !options.crossDomain ) {
59042 return {
59043 send: function( headers, complete ) {
59044 var i,
59045 xhr = options.xhr();
59046
59047 xhr.open(
59048 options.type,
59049 options.url,
59050 options.async,
59051 options.username,
59052 options.password
59053 );
59054
59055 // Apply custom fields if provided
59056 if ( options.xhrFields ) {
59057 for ( i in options.xhrFields ) {
59058 xhr[ i ] = options.xhrFields[ i ];
59059 }
59060 }
59061
59062 // Override mime type if needed
59063 if ( options.mimeType && xhr.overrideMimeType ) {
59064 xhr.overrideMimeType( options.mimeType );
59065 }
59066
59067 // X-Requested-With header
59068 // For cross-domain requests, seeing as conditions for a preflight are
59069 // akin to a jigsaw puzzle, we simply never set it to be sure.
59070 // (it can always be set on a per-request basis or even using ajaxSetup)
59071 // For same-domain requests, won't change header if already provided.
59072 if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
59073 headers[ "X-Requested-With" ] = "XMLHttpRequest";
59074 }
59075
59076 // Set headers
59077 for ( i in headers ) {
59078 xhr.setRequestHeader( i, headers[ i ] );
59079 }
59080
59081 // Callback
59082 callback = function( type ) {
59083 return function() {
59084 if ( callback ) {
59085 callback = errorCallback = xhr.onload =
59086 xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
59087
59088 if ( type === "abort" ) {
59089 xhr.abort();
59090 } else if ( type === "error" ) {
59091
59092 // Support: IE9
59093 // On a manual native abort, IE9 throws
59094 // errors on any property access that is not readyState
59095 if ( typeof xhr.status !== "number" ) {
59096 complete( 0, "error" );
59097 } else {
59098 complete(
59099
59100 // File: protocol always yields status 0; see #8605, #14207
59101 xhr.status,
59102 xhr.statusText
59103 );
59104 }
59105 } else {
59106 complete(
59107 xhrSuccessStatus[ xhr.status ] || xhr.status,
59108 xhr.statusText,
59109
59110 // Support: IE9 only
59111 // IE9 has no XHR2 but throws on binary (trac-11426)
59112 // For XHR2 non-text, let the caller handle it (gh-2498)
59113 ( xhr.responseType || "text" ) !== "text" ||
59114 typeof xhr.responseText !== "string" ?
59115 { binary: xhr.response } :
59116 { text: xhr.responseText },
59117 xhr.getAllResponseHeaders()
59118 );
59119 }
59120 }
59121 };
59122 };
59123
59124 // Listen to events
59125 xhr.onload = callback();
59126 errorCallback = xhr.onerror = callback( "error" );
59127
59128 // Support: IE9
59129 // Use onreadystatechange to replace onabort
59130 // to handle uncaught aborts
59131 if ( xhr.onabort !== undefined ) {
59132 xhr.onabort = errorCallback;
59133 } else {
59134 xhr.onreadystatechange = function() {
59135
59136 // Check readyState before timeout as it changes
59137 if ( xhr.readyState === 4 ) {
59138
59139 // Allow onerror to be called first,
59140 // but that will not handle a native abort
59141 // Also, save errorCallback to a variable
59142 // as xhr.onerror cannot be accessed
59143 window.setTimeout( function() {
59144 if ( callback ) {
59145 errorCallback();
59146 }
59147 } );
59148 }
59149 };
59150 }
59151
59152 // Create the abort callback
59153 callback = callback( "abort" );
59154
59155 try {
59156
59157 // Do send the request (this may raise an exception)
59158 xhr.send( options.hasContent && options.data || null );
59159 } catch ( e ) {
59160
59161 // #14683: Only rethrow if this hasn't been notified as an error yet
59162 if ( callback ) {
59163 throw e;
59164 }
59165 }
59166 },
59167
59168 abort: function() {
59169 if ( callback ) {
59170 callback();
59171 }
59172 }
59173 };
59174 }
59175 } );
59176
59177
59178
59179
59180 // Install script dataType
59181 jQuery.ajaxSetup( {
59182 accepts: {
59183 script: "text/javascript, application/javascript, " +
59184 "application/ecmascript, application/x-ecmascript"
59185 },
59186 contents: {
59187 script: /\b(?:java|ecma)script\b/
59188 },
59189 converters: {
59190 "text script": function( text ) {
59191 jQuery.globalEval( text );
59192 return text;
59193 }
59194 }
59195 } );
59196
59197 // Handle cache's special case and crossDomain
59198 jQuery.ajaxPrefilter( "script", function( s ) {
59199 if ( s.cache === undefined ) {
59200 s.cache = false;
59201 }
59202 if ( s.crossDomain ) {
59203 s.type = "GET";
59204 }
59205 } );
59206
59207 // Bind script tag hack transport
59208 jQuery.ajaxTransport( "script", function( s ) {
59209
59210 // This transport only deals with cross domain requests
59211 if ( s.crossDomain ) {
59212 var script, callback;
59213 return {
59214 send: function( _, complete ) {
59215 script = jQuery( "<script>" ).prop( {
59216 charset: s.scriptCharset,
59217 src: s.url
59218 } ).on(
59219 "load error",
59220 callback = function( evt ) {
59221 script.remove();
59222 callback = null;
59223 if ( evt ) {
59224 complete( evt.type === "error" ? 404 : 200, evt.type );
59225 }
59226 }
59227 );
59228
59229 // Use native DOM manipulation to avoid our domManip AJAX trickery
59230 document.head.appendChild( script[ 0 ] );
59231 },
59232 abort: function() {
59233 if ( callback ) {
59234 callback();
59235 }
59236 }
59237 };
59238 }
59239 } );
59240
59241
59242
59243
59244 var oldCallbacks = [],
59245 rjsonp = /(=)\?(?=&|$)|\?\?/;
59246
59247 // Default jsonp settings
59248 jQuery.ajaxSetup( {
59249 jsonp: "callback",
59250 jsonpCallback: function() {
59251 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
59252 this[ callback ] = true;
59253 return callback;
59254 }
59255 } );
59256
59257 // Detect, normalize options and install callbacks for jsonp requests
59258 jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
59259
59260 var callbackName, overwritten, responseContainer,
59261 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
59262 "url" :
59263 typeof s.data === "string" &&
59264 ( s.contentType || "" )
59265 .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
59266 rjsonp.test( s.data ) && "data"
59267 );
59268
59269 // Handle iff the expected data type is "jsonp" or we have a parameter to set
59270 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
59271
59272 // Get callback name, remembering preexisting value associated with it
59273 callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
59274 s.jsonpCallback() :
59275 s.jsonpCallback;
59276
59277 // Insert callback into url or form data
59278 if ( jsonProp ) {
59279 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
59280 } else if ( s.jsonp !== false ) {
59281 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
59282 }
59283
59284 // Use data converter to retrieve json after script execution
59285 s.converters[ "script json" ] = function() {
59286 if ( !responseContainer ) {
59287 jQuery.error( callbackName + " was not called" );
59288 }
59289 return responseContainer[ 0 ];
59290 };
59291
59292 // Force json dataType
59293 s.dataTypes[ 0 ] = "json";
59294
59295 // Install callback
59296 overwritten = window[ callbackName ];
59297 window[ callbackName ] = function() {
59298 responseContainer = arguments;
59299 };
59300
59301 // Clean-up function (fires after converters)
59302 jqXHR.always( function() {
59303
59304 // If previous value didn't exist - remove it
59305 if ( overwritten === undefined ) {
59306 jQuery( window ).removeProp( callbackName );
59307
59308 // Otherwise restore preexisting value
59309 } else {
59310 window[ callbackName ] = overwritten;
59311 }
59312
59313 // Save back as free
59314 if ( s[ callbackName ] ) {
59315
59316 // Make sure that re-using the options doesn't screw things around
59317 s.jsonpCallback = originalSettings.jsonpCallback;
59318
59319 // Save the callback name for future use
59320 oldCallbacks.push( callbackName );
59321 }
59322
59323 // Call if it was a function and we have a response
59324 if ( responseContainer && jQuery.isFunction( overwritten ) ) {
59325 overwritten( responseContainer[ 0 ] );
59326 }
59327
59328 responseContainer = overwritten = undefined;
59329 } );
59330
59331 // Delegate to script
59332 return "script";
59333 }
59334 } );
59335
59336
59337
59338
59339 // Argument "data" should be string of html
59340 // context (optional): If specified, the fragment will be created in this context,
59341 // defaults to document
59342 // keepScripts (optional): If true, will include scripts passed in the html string
59343 jQuery.parseHTML = function( data, context, keepScripts ) {
59344 if ( !data || typeof data !== "string" ) {
59345 return null;
59346 }
59347 if ( typeof context === "boolean" ) {
59348 keepScripts = context;
59349 context = false;
59350 }
59351 context = context || document;
59352
59353 var parsed = rsingleTag.exec( data ),
59354 scripts = !keepScripts && [];
59355
59356 // Single tag
59357 if ( parsed ) {
59358 return [ context.createElement( parsed[ 1 ] ) ];
59359 }
59360
59361 parsed = buildFragment( [ data ], context, scripts );
59362
59363 if ( scripts && scripts.length ) {
59364 jQuery( scripts ).remove();
59365 }
59366
59367 return jQuery.merge( [], parsed.childNodes );
59368 };
59369
59370
59371 // Keep a copy of the old load method
59372 var _load = jQuery.fn.load;
59373
59374 /**
59375 * Load a url into a page
59376 */
59377 jQuery.fn.load = function( url, params, callback ) {
59378 if ( typeof url !== "string" && _load ) {
59379 return _load.apply( this, arguments );
59380 }
59381
59382 var selector, type, response,
59383 self = this,
59384 off = url.indexOf( " " );
59385
59386 if ( off > -1 ) {
59387 selector = jQuery.trim( url.slice( off ) );
59388 url = url.slice( 0, off );
59389 }
59390
59391 // If it's a function
59392 if ( jQuery.isFunction( params ) ) {
59393
59394 // We assume that it's the callback
59395 callback = params;
59396 params = undefined;
59397
59398 // Otherwise, build a param string
59399 } else if ( params && typeof params === "object" ) {
59400 type = "POST";
59401 }
59402
59403 // If we have elements to modify, make the request
59404 if ( self.length > 0 ) {
59405 jQuery.ajax( {
59406 url: url,
59407
59408 // If "type" variable is undefined, then "GET" method will be used.
59409 // Make value of this field explicit since
59410 // user can override it through ajaxSetup method
59411 type: type || "GET",
59412 dataType: "html",
59413 data: params
59414 } ).done( function( responseText ) {
59415
59416 // Save response for use in complete callback
59417 response = arguments;
59418
59419 self.html( selector ?
59420
59421 // If a selector was specified, locate the right elements in a dummy div
59422 // Exclude scripts to avoid IE 'Permission Denied' errors
59423 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
59424
59425 // Otherwise use the full result
59426 responseText );
59427
59428 // If the request succeeds, this function gets "data", "status", "jqXHR"
59429 // but they are ignored because response was set above.
59430 // If it fails, this function gets "jqXHR", "status", "error"
59431 } ).always( callback && function( jqXHR, status ) {
59432 self.each( function() {
59433 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
59434 } );
59435 } );
59436 }
59437
59438 return this;
59439 };
59440
59441
59442
59443
59444 // Attach a bunch of functions for handling common AJAX events
59445 jQuery.each( [
59446 "ajaxStart",
59447 "ajaxStop",
59448 "ajaxComplete",
59449 "ajaxError",
59450 "ajaxSuccess",
59451 "ajaxSend"
59452 ], function( i, type ) {
59453 jQuery.fn[ type ] = function( fn ) {
59454 return this.on( type, fn );
59455 };
59456 } );
59457
59458
59459
59460
59461 jQuery.expr.filters.animated = function( elem ) {
59462 return jQuery.grep( jQuery.timers, function( fn ) {
59463 return elem === fn.elem;
59464 } ).length;
59465 };
59466
59467
59468
59469
59470 /**
59471 * Gets a window from an element
59472 */
59473 function getWindow( elem ) {
59474 return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
59475 }
59476
59477 jQuery.offset = {
59478 setOffset: function( elem, options, i ) {
59479 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
59480 position = jQuery.css( elem, "position" ),
59481 curElem = jQuery( elem ),
59482 props = {};
59483
59484 // Set position first, in-case top/left are set even on static elem
59485 if ( position === "static" ) {
59486 elem.style.position = "relative";
59487 }
59488
59489 curOffset = curElem.offset();
59490 curCSSTop = jQuery.css( elem, "top" );
59491 curCSSLeft = jQuery.css( elem, "left" );
59492 calculatePosition = ( position === "absolute" || position === "fixed" ) &&
59493 ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
59494
59495 // Need to be able to calculate position if either
59496 // top or left is auto and position is either absolute or fixed
59497 if ( calculatePosition ) {
59498 curPosition = curElem.position();
59499 curTop = curPosition.top;
59500 curLeft = curPosition.left;
59501
59502 } else {
59503 curTop = parseFloat( curCSSTop ) || 0;
59504 curLeft = parseFloat( curCSSLeft ) || 0;
59505 }
59506
59507 if ( jQuery.isFunction( options ) ) {
59508
59509 // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
59510 options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
59511 }
59512
59513 if ( options.top != null ) {
59514 props.top = ( options.top - curOffset.top ) + curTop;
59515 }
59516 if ( options.left != null ) {
59517 props.left = ( options.left - curOffset.left ) + curLeft;
59518 }
59519
59520 if ( "using" in options ) {
59521 options.using.call( elem, props );
59522
59523 } else {
59524 curElem.css( props );
59525 }
59526 }
59527 };
59528
59529 jQuery.fn.extend( {
59530 offset: function( options ) {
59531 if ( arguments.length ) {
59532 return options === undefined ?
59533 this :
59534 this.each( function( i ) {
59535 jQuery.offset.setOffset( this, options, i );
59536 } );
59537 }
59538
59539 var docElem, win,
59540 elem = this[ 0 ],
59541 box = { top: 0, left: 0 },
59542 doc = elem && elem.ownerDocument;
59543
59544 if ( !doc ) {
59545 return;
59546 }
59547
59548 docElem = doc.documentElement;
59549
59550 // Make sure it's not a disconnected DOM node
59551 if ( !jQuery.contains( docElem, elem ) ) {
59552 return box;
59553 }
59554
59555 box = elem.getBoundingClientRect();
59556 win = getWindow( doc );
59557 return {
59558 top: box.top + win.pageYOffset - docElem.clientTop,
59559 left: box.left + win.pageXOffset - docElem.clientLeft
59560 };
59561 },
59562
59563 position: function() {
59564 if ( !this[ 0 ] ) {
59565 return;
59566 }
59567
59568 var offsetParent, offset,
59569 elem = this[ 0 ],
59570 parentOffset = { top: 0, left: 0 };
59571
59572 // Fixed elements are offset from window (parentOffset = {top:0, left: 0},
59573 // because it is its only offset parent
59574 if ( jQuery.css( elem, "position" ) === "fixed" ) {
59575
59576 // Assume getBoundingClientRect is there when computed position is fixed
59577 offset = elem.getBoundingClientRect();
59578
59579 } else {
59580
59581 // Get *real* offsetParent
59582 offsetParent = this.offsetParent();
59583
59584 // Get correct offsets
59585 offset = this.offset();
59586 if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
59587 parentOffset = offsetParent.offset();
59588 }
59589
59590 // Add offsetParent borders
59591 parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
59592 parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
59593 }
59594
59595 // Subtract parent offsets and element margins
59596 return {
59597 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
59598 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
59599 };
59600 },
59601
59602 // This method will return documentElement in the following cases:
59603 // 1) For the element inside the iframe without offsetParent, this method will return
59604 // documentElement of the parent window
59605 // 2) For the hidden or detached element
59606 // 3) For body or html element, i.e. in case of the html node - it will return itself
59607 //
59608 // but those exceptions were never presented as a real life use-cases
59609 // and might be considered as more preferable results.
59610 //
59611 // This logic, however, is not guaranteed and can change at any point in the future
59612 offsetParent: function() {
59613 return this.map( function() {
59614 var offsetParent = this.offsetParent;
59615
59616 while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
59617 offsetParent = offsetParent.offsetParent;
59618 }
59619
59620 return offsetParent || documentElement;
59621 } );
59622 }
59623 } );
59624
59625 // Create scrollLeft and scrollTop methods
59626 jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
59627 var top = "pageYOffset" === prop;
59628
59629 jQuery.fn[ method ] = function( val ) {
59630 return access( this, function( elem, method, val ) {
59631 var win = getWindow( elem );
59632
59633 if ( val === undefined ) {
59634 return win ? win[ prop ] : elem[ method ];
59635 }
59636
59637 if ( win ) {
59638 win.scrollTo(
59639 !top ? val : win.pageXOffset,
59640 top ? val : win.pageYOffset
59641 );
59642
59643 } else {
59644 elem[ method ] = val;
59645 }
59646 }, method, val, arguments.length );
59647 };
59648 } );
59649
59650 // Support: Safari<7-8+, Chrome<37-44+
59651 // Add the top/left cssHooks using jQuery.fn.position
59652 // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
59653 // Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
59654 // getComputedStyle returns percent when specified for top/left/bottom/right;
59655 // rather than make the css module depend on the offset module, just check for it here
59656 jQuery.each( [ "top", "left" ], function( i, prop ) {
59657 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
59658 function( elem, computed ) {
59659 if ( computed ) {
59660 computed = curCSS( elem, prop );
59661
59662 // If curCSS returns percentage, fallback to offset
59663 return rnumnonpx.test( computed ) ?
59664 jQuery( elem ).position()[ prop ] + "px" :
59665 computed;
59666 }
59667 }
59668 );
59669 } );
59670
59671
59672 // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
59673 jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
59674 jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
59675 function( defaultExtra, funcName ) {
59676
59677 // Margin is only for outerHeight, outerWidth
59678 jQuery.fn[ funcName ] = function( margin, value ) {
59679 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
59680 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
59681
59682 return access( this, function( elem, type, value ) {
59683 var doc;
59684
59685 if ( jQuery.isWindow( elem ) ) {
59686
59687 // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
59688 // isn't a whole lot we can do. See pull request at this URL for discussion:
59689 // https://github.com/jquery/jquery/pull/764
59690 return elem.document.documentElement[ "client" + name ];
59691 }
59692
59693 // Get document width or height
59694 if ( elem.nodeType === 9 ) {
59695 doc = elem.documentElement;
59696
59697 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
59698 // whichever is greatest
59699 return Math.max(
59700 elem.body[ "scroll" + name ], doc[ "scroll" + name ],
59701 elem.body[ "offset" + name ], doc[ "offset" + name ],
59702 doc[ "client" + name ]
59703 );
59704 }
59705
59706 return value === undefined ?
59707
59708 // Get width or height on the element, requesting but not forcing parseFloat
59709 jQuery.css( elem, type, extra ) :
59710
59711 // Set width or height on the element
59712 jQuery.style( elem, type, value, extra );
59713 }, type, chainable ? margin : undefined, chainable, null );
59714 };
59715 } );
59716 } );
59717
59718
59719 jQuery.fn.extend( {
59720
59721 bind: function( types, data, fn ) {
59722 return this.on( types, null, data, fn );
59723 },
59724 unbind: function( types, fn ) {
59725 return this.off( types, null, fn );
59726 },
59727
59728 delegate: function( selector, types, data, fn ) {
59729 return this.on( types, selector, data, fn );
59730 },
59731 undelegate: function( selector, types, fn ) {
59732
59733 // ( namespace ) or ( selector, types [, fn] )
59734 return arguments.length === 1 ?
59735 this.off( selector, "**" ) :
59736 this.off( types, selector || "**", fn );
59737 },
59738 size: function() {
59739 return this.length;
59740 }
59741 } );
59742
59743 jQuery.fn.andSelf = jQuery.fn.addBack;
59744
59745
59746
59747
59748 // Register as a named AMD module, since jQuery can be concatenated with other
59749 // files that may use define, but not via a proper concatenation script that
59750 // understands anonymous AMD modules. A named AMD is safest and most robust
59751 // way to register. Lowercase jquery is used because AMD module names are
59752 // derived from file names, and jQuery is normally delivered in a lowercase
59753 // file name. Do this after creating the global so that if an AMD module wants
59754 // to call noConflict to hide this version of jQuery, it will work.
59755
59756 // Note that for maximum portability, libraries that are not jQuery should
59757 // declare themselves as anonymous modules, and avoid setting a global if an
59758 // AMD loader is present. jQuery is a special case. For more information, see
59759 // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
59760
59761 if ( true ) {
59762 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
59763 return jQuery;
59764 }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
59765 }
59766
59767
59768
59769 var
59770
59771 // Map over jQuery in case of overwrite
59772 _jQuery = window.jQuery,
59773
59774 // Map over the $ in case of overwrite
59775 _$ = window.$;
59776
59777 jQuery.noConflict = function( deep ) {
59778 if ( window.$ === jQuery ) {
59779 window.$ = _$;
59780 }
59781
59782 if ( deep && window.jQuery === jQuery ) {
59783 window.jQuery = _jQuery;
59784 }
59785
59786 return jQuery;
59787 };
59788
59789 // Expose jQuery and $ identifiers, even in AMD
59790 // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
59791 // and CommonJS for browser emulators (#13566)
59792 if ( !noGlobal ) {
59793 window.jQuery = window.$ = jQuery;
59794 }
59795
59796 return jQuery;
59797 }));
59798
59799
59800/***/ },
59801/* 615 */
59802/***/ function(module, exports, __webpack_require__) {
59803
59804 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
59805 * Bootstrap: alert.js v3.3.7
59806 * http://getbootstrap.com/javascript/#alerts
59807 * ========================================================================
59808 * Copyright 2011-2016 Twitter, Inc.
59809 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
59810 * ======================================================================== */
59811
59812
59813 +function ($) {
59814 'use strict';
59815
59816 // ALERT CLASS DEFINITION
59817 // ======================
59818
59819 var dismiss = '[data-dismiss="alert"]'
59820 var Alert = function (el) {
59821 $(el).on('click', dismiss, this.close)
59822 }
59823
59824 Alert.VERSION = '3.3.7'
59825
59826 Alert.TRANSITION_DURATION = 150
59827
59828 Alert.prototype.close = function (e) {
59829 var $this = $(this)
59830 var selector = $this.attr('data-target')
59831
59832 if (!selector) {
59833 selector = $this.attr('href')
59834 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
59835 }
59836
59837 var $parent = $(selector === '#' ? [] : selector)
59838
59839 if (e) e.preventDefault()
59840
59841 if (!$parent.length) {
59842 $parent = $this.closest('.alert')
59843 }
59844
59845 $parent.trigger(e = $.Event('close.bs.alert'))
59846
59847 if (e.isDefaultPrevented()) return
59848
59849 $parent.removeClass('in')
59850
59851 function removeElement() {
59852 // detach from parent, fire event then clean up data
59853 $parent.detach().trigger('closed.bs.alert').remove()
59854 }
59855
59856 $.support.transition && $parent.hasClass('fade') ?
59857 $parent
59858 .one('bsTransitionEnd', removeElement)
59859 .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
59860 removeElement()
59861 }
59862
59863
59864 // ALERT PLUGIN DEFINITION
59865 // =======================
59866
59867 function Plugin(option) {
59868 return this.each(function () {
59869 var $this = $(this)
59870 var data = $this.data('bs.alert')
59871
59872 if (!data) $this.data('bs.alert', (data = new Alert(this)))
59873 if (typeof option == 'string') data[option].call($this)
59874 })
59875 }
59876
59877 var old = $.fn.alert
59878
59879 $.fn.alert = Plugin
59880 $.fn.alert.Constructor = Alert
59881
59882
59883 // ALERT NO CONFLICT
59884 // =================
59885
59886 $.fn.alert.noConflict = function () {
59887 $.fn.alert = old
59888 return this
59889 }
59890
59891
59892 // ALERT DATA-API
59893 // ==============
59894
59895 $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
59896
59897 }(jQuery);
59898
59899 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
59900
59901/***/ },
59902/* 616 */
59903/***/ function(module, exports, __webpack_require__) {
59904
59905 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
59906 * Bootstrap: button.js v3.3.7
59907 * http://getbootstrap.com/javascript/#buttons
59908 * ========================================================================
59909 * Copyright 2011-2016 Twitter, Inc.
59910 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
59911 * ======================================================================== */
59912
59913
59914 +function ($) {
59915 'use strict';
59916
59917 // BUTTON PUBLIC CLASS DEFINITION
59918 // ==============================
59919
59920 var Button = function (element, options) {
59921 this.$element = $(element)
59922 this.options = $.extend({}, Button.DEFAULTS, options)
59923 this.isLoading = false
59924 }
59925
59926 Button.VERSION = '3.3.7'
59927
59928 Button.DEFAULTS = {
59929 loadingText: 'loading...'
59930 }
59931
59932 Button.prototype.setState = function (state) {
59933 var d = 'disabled'
59934 var $el = this.$element
59935 var val = $el.is('input') ? 'val' : 'html'
59936 var data = $el.data()
59937
59938 state += 'Text'
59939
59940 if (data.resetText == null) $el.data('resetText', $el[val]())
59941
59942 // push to event loop to allow forms to submit
59943 setTimeout($.proxy(function () {
59944 $el[val](data[state] == null ? this.options[state] : data[state])
59945
59946 if (state == 'loadingText') {
59947 this.isLoading = true
59948 $el.addClass(d).attr(d, d).prop(d, true)
59949 } else if (this.isLoading) {
59950 this.isLoading = false
59951 $el.removeClass(d).removeAttr(d).prop(d, false)
59952 }
59953 }, this), 0)
59954 }
59955
59956 Button.prototype.toggle = function () {
59957 var changed = true
59958 var $parent = this.$element.closest('[data-toggle="buttons"]')
59959
59960 if ($parent.length) {
59961 var $input = this.$element.find('input')
59962 if ($input.prop('type') == 'radio') {
59963 if ($input.prop('checked')) changed = false
59964 $parent.find('.active').removeClass('active')
59965 this.$element.addClass('active')
59966 } else if ($input.prop('type') == 'checkbox') {
59967 if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
59968 this.$element.toggleClass('active')
59969 }
59970 $input.prop('checked', this.$element.hasClass('active'))
59971 if (changed) $input.trigger('change')
59972 } else {
59973 this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
59974 this.$element.toggleClass('active')
59975 }
59976 }
59977
59978
59979 // BUTTON PLUGIN DEFINITION
59980 // ========================
59981
59982 function Plugin(option) {
59983 return this.each(function () {
59984 var $this = $(this)
59985 var data = $this.data('bs.button')
59986 var options = typeof option == 'object' && option
59987
59988 if (!data) $this.data('bs.button', (data = new Button(this, options)))
59989
59990 if (option == 'toggle') data.toggle()
59991 else if (option) data.setState(option)
59992 })
59993 }
59994
59995 var old = $.fn.button
59996
59997 $.fn.button = Plugin
59998 $.fn.button.Constructor = Button
59999
60000
60001 // BUTTON NO CONFLICT
60002 // ==================
60003
60004 $.fn.button.noConflict = function () {
60005 $.fn.button = old
60006 return this
60007 }
60008
60009
60010 // BUTTON DATA-API
60011 // ===============
60012
60013 $(document)
60014 .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
60015 var $btn = $(e.target).closest('.btn')
60016 Plugin.call($btn, 'toggle')
60017 if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
60018 // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
60019 e.preventDefault()
60020 // The target component still receive the focus
60021 if ($btn.is('input,button')) $btn.trigger('focus')
60022 else $btn.find('input:visible,button:visible').first().trigger('focus')
60023 }
60024 })
60025 .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
60026 $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
60027 })
60028
60029 }(jQuery);
60030
60031 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
60032
60033/***/ },
60034/* 617 */
60035/***/ function(module, exports, __webpack_require__) {
60036
60037 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
60038 * Bootstrap: carousel.js v3.3.7
60039 * http://getbootstrap.com/javascript/#carousel
60040 * ========================================================================
60041 * Copyright 2011-2016 Twitter, Inc.
60042 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
60043 * ======================================================================== */
60044
60045
60046 +function ($) {
60047 'use strict';
60048
60049 // CAROUSEL CLASS DEFINITION
60050 // =========================
60051
60052 var Carousel = function (element, options) {
60053 this.$element = $(element)
60054 this.$indicators = this.$element.find('.carousel-indicators')
60055 this.options = options
60056 this.paused = null
60057 this.sliding = null
60058 this.interval = null
60059 this.$active = null
60060 this.$items = null
60061
60062 this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
60063
60064 this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
60065 .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
60066 .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
60067 }
60068
60069 Carousel.VERSION = '3.3.7'
60070
60071 Carousel.TRANSITION_DURATION = 600
60072
60073 Carousel.DEFAULTS = {
60074 interval: 5000,
60075 pause: 'hover',
60076 wrap: true,
60077 keyboard: true
60078 }
60079
60080 Carousel.prototype.keydown = function (e) {
60081 if (/input|textarea/i.test(e.target.tagName)) return
60082 switch (e.which) {
60083 case 37: this.prev(); break
60084 case 39: this.next(); break
60085 default: return
60086 }
60087
60088 e.preventDefault()
60089 }
60090
60091 Carousel.prototype.cycle = function (e) {
60092 e || (this.paused = false)
60093
60094 this.interval && clearInterval(this.interval)
60095
60096 this.options.interval
60097 && !this.paused
60098 && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
60099
60100 return this
60101 }
60102
60103 Carousel.prototype.getItemIndex = function (item) {
60104 this.$items = item.parent().children('.item')
60105 return this.$items.index(item || this.$active)
60106 }
60107
60108 Carousel.prototype.getItemForDirection = function (direction, active) {
60109 var activeIndex = this.getItemIndex(active)
60110 var willWrap = (direction == 'prev' && activeIndex === 0)
60111 || (direction == 'next' && activeIndex == (this.$items.length - 1))
60112 if (willWrap && !this.options.wrap) return active
60113 var delta = direction == 'prev' ? -1 : 1
60114 var itemIndex = (activeIndex + delta) % this.$items.length
60115 return this.$items.eq(itemIndex)
60116 }
60117
60118 Carousel.prototype.to = function (pos) {
60119 var that = this
60120 var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
60121
60122 if (pos > (this.$items.length - 1) || pos < 0) return
60123
60124 if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
60125 if (activeIndex == pos) return this.pause().cycle()
60126
60127 return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
60128 }
60129
60130 Carousel.prototype.pause = function (e) {
60131 e || (this.paused = true)
60132
60133 if (this.$element.find('.next, .prev').length && $.support.transition) {
60134 this.$element.trigger($.support.transition.end)
60135 this.cycle(true)
60136 }
60137
60138 this.interval = clearInterval(this.interval)
60139
60140 return this
60141 }
60142
60143 Carousel.prototype.next = function () {
60144 if (this.sliding) return
60145 return this.slide('next')
60146 }
60147
60148 Carousel.prototype.prev = function () {
60149 if (this.sliding) return
60150 return this.slide('prev')
60151 }
60152
60153 Carousel.prototype.slide = function (type, next) {
60154 var $active = this.$element.find('.item.active')
60155 var $next = next || this.getItemForDirection(type, $active)
60156 var isCycling = this.interval
60157 var direction = type == 'next' ? 'left' : 'right'
60158 var that = this
60159
60160 if ($next.hasClass('active')) return (this.sliding = false)
60161
60162 var relatedTarget = $next[0]
60163 var slideEvent = $.Event('slide.bs.carousel', {
60164 relatedTarget: relatedTarget,
60165 direction: direction
60166 })
60167 this.$element.trigger(slideEvent)
60168 if (slideEvent.isDefaultPrevented()) return
60169
60170 this.sliding = true
60171
60172 isCycling && this.pause()
60173
60174 if (this.$indicators.length) {
60175 this.$indicators.find('.active').removeClass('active')
60176 var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
60177 $nextIndicator && $nextIndicator.addClass('active')
60178 }
60179
60180 var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
60181 if ($.support.transition && this.$element.hasClass('slide')) {
60182 $next.addClass(type)
60183 $next[0].offsetWidth // force reflow
60184 $active.addClass(direction)
60185 $next.addClass(direction)
60186 $active
60187 .one('bsTransitionEnd', function () {
60188 $next.removeClass([type, direction].join(' ')).addClass('active')
60189 $active.removeClass(['active', direction].join(' '))
60190 that.sliding = false
60191 setTimeout(function () {
60192 that.$element.trigger(slidEvent)
60193 }, 0)
60194 })
60195 .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
60196 } else {
60197 $active.removeClass('active')
60198 $next.addClass('active')
60199 this.sliding = false
60200 this.$element.trigger(slidEvent)
60201 }
60202
60203 isCycling && this.cycle()
60204
60205 return this
60206 }
60207
60208
60209 // CAROUSEL PLUGIN DEFINITION
60210 // ==========================
60211
60212 function Plugin(option) {
60213 return this.each(function () {
60214 var $this = $(this)
60215 var data = $this.data('bs.carousel')
60216 var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
60217 var action = typeof option == 'string' ? option : options.slide
60218
60219 if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
60220 if (typeof option == 'number') data.to(option)
60221 else if (action) data[action]()
60222 else if (options.interval) data.pause().cycle()
60223 })
60224 }
60225
60226 var old = $.fn.carousel
60227
60228 $.fn.carousel = Plugin
60229 $.fn.carousel.Constructor = Carousel
60230
60231
60232 // CAROUSEL NO CONFLICT
60233 // ====================
60234
60235 $.fn.carousel.noConflict = function () {
60236 $.fn.carousel = old
60237 return this
60238 }
60239
60240
60241 // CAROUSEL DATA-API
60242 // =================
60243
60244 var clickHandler = function (e) {
60245 var href
60246 var $this = $(this)
60247 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
60248 if (!$target.hasClass('carousel')) return
60249 var options = $.extend({}, $target.data(), $this.data())
60250 var slideIndex = $this.attr('data-slide-to')
60251 if (slideIndex) options.interval = false
60252
60253 Plugin.call($target, options)
60254
60255 if (slideIndex) {
60256 $target.data('bs.carousel').to(slideIndex)
60257 }
60258
60259 e.preventDefault()
60260 }
60261
60262 $(document)
60263 .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
60264 .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
60265
60266 $(window).on('load', function () {
60267 $('[data-ride="carousel"]').each(function () {
60268 var $carousel = $(this)
60269 Plugin.call($carousel, $carousel.data())
60270 })
60271 })
60272
60273 }(jQuery);
60274
60275 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
60276
60277/***/ },
60278/* 618 */
60279/***/ function(module, exports, __webpack_require__) {
60280
60281 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
60282 * Bootstrap: collapse.js v3.3.7
60283 * http://getbootstrap.com/javascript/#collapse
60284 * ========================================================================
60285 * Copyright 2011-2016 Twitter, Inc.
60286 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
60287 * ======================================================================== */
60288
60289 /* jshint latedef: false */
60290
60291 +function ($) {
60292 'use strict';
60293
60294 // COLLAPSE PUBLIC CLASS DEFINITION
60295 // ================================
60296
60297 var Collapse = function (element, options) {
60298 this.$element = $(element)
60299 this.options = $.extend({}, Collapse.DEFAULTS, options)
60300 this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
60301 '[data-toggle="collapse"][data-target="#' + element.id + '"]')
60302 this.transitioning = null
60303
60304 if (this.options.parent) {
60305 this.$parent = this.getParent()
60306 } else {
60307 this.addAriaAndCollapsedClass(this.$element, this.$trigger)
60308 }
60309
60310 if (this.options.toggle) this.toggle()
60311 }
60312
60313 Collapse.VERSION = '3.3.7'
60314
60315 Collapse.TRANSITION_DURATION = 350
60316
60317 Collapse.DEFAULTS = {
60318 toggle: true
60319 }
60320
60321 Collapse.prototype.dimension = function () {
60322 var hasWidth = this.$element.hasClass('width')
60323 return hasWidth ? 'width' : 'height'
60324 }
60325
60326 Collapse.prototype.show = function () {
60327 if (this.transitioning || this.$element.hasClass('in')) return
60328
60329 var activesData
60330 var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
60331
60332 if (actives && actives.length) {
60333 activesData = actives.data('bs.collapse')
60334 if (activesData && activesData.transitioning) return
60335 }
60336
60337 var startEvent = $.Event('show.bs.collapse')
60338 this.$element.trigger(startEvent)
60339 if (startEvent.isDefaultPrevented()) return
60340
60341 if (actives && actives.length) {
60342 Plugin.call(actives, 'hide')
60343 activesData || actives.data('bs.collapse', null)
60344 }
60345
60346 var dimension = this.dimension()
60347
60348 this.$element
60349 .removeClass('collapse')
60350 .addClass('collapsing')[dimension](0)
60351 .attr('aria-expanded', true)
60352
60353 this.$trigger
60354 .removeClass('collapsed')
60355 .attr('aria-expanded', true)
60356
60357 this.transitioning = 1
60358
60359 var complete = function () {
60360 this.$element
60361 .removeClass('collapsing')
60362 .addClass('collapse in')[dimension]('')
60363 this.transitioning = 0
60364 this.$element
60365 .trigger('shown.bs.collapse')
60366 }
60367
60368 if (!$.support.transition) return complete.call(this)
60369
60370 var scrollSize = $.camelCase(['scroll', dimension].join('-'))
60371
60372 this.$element
60373 .one('bsTransitionEnd', $.proxy(complete, this))
60374 .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
60375 }
60376
60377 Collapse.prototype.hide = function () {
60378 if (this.transitioning || !this.$element.hasClass('in')) return
60379
60380 var startEvent = $.Event('hide.bs.collapse')
60381 this.$element.trigger(startEvent)
60382 if (startEvent.isDefaultPrevented()) return
60383
60384 var dimension = this.dimension()
60385
60386 this.$element[dimension](this.$element[dimension]())[0].offsetHeight
60387
60388 this.$element
60389 .addClass('collapsing')
60390 .removeClass('collapse in')
60391 .attr('aria-expanded', false)
60392
60393 this.$trigger
60394 .addClass('collapsed')
60395 .attr('aria-expanded', false)
60396
60397 this.transitioning = 1
60398
60399 var complete = function () {
60400 this.transitioning = 0
60401 this.$element
60402 .removeClass('collapsing')
60403 .addClass('collapse')
60404 .trigger('hidden.bs.collapse')
60405 }
60406
60407 if (!$.support.transition) return complete.call(this)
60408
60409 this.$element
60410 [dimension](0)
60411 .one('bsTransitionEnd', $.proxy(complete, this))
60412 .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
60413 }
60414
60415 Collapse.prototype.toggle = function () {
60416 this[this.$element.hasClass('in') ? 'hide' : 'show']()
60417 }
60418
60419 Collapse.prototype.getParent = function () {
60420 return $(this.options.parent)
60421 .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
60422 .each($.proxy(function (i, element) {
60423 var $element = $(element)
60424 this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
60425 }, this))
60426 .end()
60427 }
60428
60429 Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
60430 var isOpen = $element.hasClass('in')
60431
60432 $element.attr('aria-expanded', isOpen)
60433 $trigger
60434 .toggleClass('collapsed', !isOpen)
60435 .attr('aria-expanded', isOpen)
60436 }
60437
60438 function getTargetFromTrigger($trigger) {
60439 var href
60440 var target = $trigger.attr('data-target')
60441 || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
60442
60443 return $(target)
60444 }
60445
60446
60447 // COLLAPSE PLUGIN DEFINITION
60448 // ==========================
60449
60450 function Plugin(option) {
60451 return this.each(function () {
60452 var $this = $(this)
60453 var data = $this.data('bs.collapse')
60454 var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
60455
60456 if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
60457 if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
60458 if (typeof option == 'string') data[option]()
60459 })
60460 }
60461
60462 var old = $.fn.collapse
60463
60464 $.fn.collapse = Plugin
60465 $.fn.collapse.Constructor = Collapse
60466
60467
60468 // COLLAPSE NO CONFLICT
60469 // ====================
60470
60471 $.fn.collapse.noConflict = function () {
60472 $.fn.collapse = old
60473 return this
60474 }
60475
60476
60477 // COLLAPSE DATA-API
60478 // =================
60479
60480 $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
60481 var $this = $(this)
60482
60483 if (!$this.attr('data-target')) e.preventDefault()
60484
60485 var $target = getTargetFromTrigger($this)
60486 var data = $target.data('bs.collapse')
60487 var option = data ? 'toggle' : $this.data()
60488
60489 Plugin.call($target, option)
60490 })
60491
60492 }(jQuery);
60493
60494 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
60495
60496/***/ },
60497/* 619 */
60498/***/ function(module, exports, __webpack_require__) {
60499
60500 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
60501 * Bootstrap: dropdown.js v3.3.7
60502 * http://getbootstrap.com/javascript/#dropdowns
60503 * ========================================================================
60504 * Copyright 2011-2016 Twitter, Inc.
60505 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
60506 * ======================================================================== */
60507
60508
60509 +function ($) {
60510 'use strict';
60511
60512 // DROPDOWN CLASS DEFINITION
60513 // =========================
60514
60515 var backdrop = '.dropdown-backdrop'
60516 var toggle = '[data-toggle="dropdown"]'
60517 var Dropdown = function (element) {
60518 $(element).on('click.bs.dropdown', this.toggle)
60519 }
60520
60521 Dropdown.VERSION = '3.3.7'
60522
60523 function getParent($this) {
60524 var selector = $this.attr('data-target')
60525
60526 if (!selector) {
60527 selector = $this.attr('href')
60528 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
60529 }
60530
60531 var $parent = selector && $(selector)
60532
60533 return $parent && $parent.length ? $parent : $this.parent()
60534 }
60535
60536 function clearMenus(e) {
60537 if (e && e.which === 3) return
60538 $(backdrop).remove()
60539 $(toggle).each(function () {
60540 var $this = $(this)
60541 var $parent = getParent($this)
60542 var relatedTarget = { relatedTarget: this }
60543
60544 if (!$parent.hasClass('open')) return
60545
60546 if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
60547
60548 $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
60549
60550 if (e.isDefaultPrevented()) return
60551
60552 $this.attr('aria-expanded', 'false')
60553 $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
60554 })
60555 }
60556
60557 Dropdown.prototype.toggle = function (e) {
60558 var $this = $(this)
60559
60560 if ($this.is('.disabled, :disabled')) return
60561
60562 var $parent = getParent($this)
60563 var isActive = $parent.hasClass('open')
60564
60565 clearMenus()
60566
60567 if (!isActive) {
60568 if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
60569 // if mobile we use a backdrop because click events don't delegate
60570 $(document.createElement('div'))
60571 .addClass('dropdown-backdrop')
60572 .insertAfter($(this))
60573 .on('click', clearMenus)
60574 }
60575
60576 var relatedTarget = { relatedTarget: this }
60577 $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
60578
60579 if (e.isDefaultPrevented()) return
60580
60581 $this
60582 .trigger('focus')
60583 .attr('aria-expanded', 'true')
60584
60585 $parent
60586 .toggleClass('open')
60587 .trigger($.Event('shown.bs.dropdown', relatedTarget))
60588 }
60589
60590 return false
60591 }
60592
60593 Dropdown.prototype.keydown = function (e) {
60594 if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
60595
60596 var $this = $(this)
60597
60598 e.preventDefault()
60599 e.stopPropagation()
60600
60601 if ($this.is('.disabled, :disabled')) return
60602
60603 var $parent = getParent($this)
60604 var isActive = $parent.hasClass('open')
60605
60606 if (!isActive && e.which != 27 || isActive && e.which == 27) {
60607 if (e.which == 27) $parent.find(toggle).trigger('focus')
60608 return $this.trigger('click')
60609 }
60610
60611 var desc = ' li:not(.disabled):visible a'
60612 var $items = $parent.find('.dropdown-menu' + desc)
60613
60614 if (!$items.length) return
60615
60616 var index = $items.index(e.target)
60617
60618 if (e.which == 38 && index > 0) index-- // up
60619 if (e.which == 40 && index < $items.length - 1) index++ // down
60620 if (!~index) index = 0
60621
60622 $items.eq(index).trigger('focus')
60623 }
60624
60625
60626 // DROPDOWN PLUGIN DEFINITION
60627 // ==========================
60628
60629 function Plugin(option) {
60630 return this.each(function () {
60631 var $this = $(this)
60632 var data = $this.data('bs.dropdown')
60633
60634 if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
60635 if (typeof option == 'string') data[option].call($this)
60636 })
60637 }
60638
60639 var old = $.fn.dropdown
60640
60641 $.fn.dropdown = Plugin
60642 $.fn.dropdown.Constructor = Dropdown
60643
60644
60645 // DROPDOWN NO CONFLICT
60646 // ====================
60647
60648 $.fn.dropdown.noConflict = function () {
60649 $.fn.dropdown = old
60650 return this
60651 }
60652
60653
60654 // APPLY TO STANDARD DROPDOWN ELEMENTS
60655 // ===================================
60656
60657 $(document)
60658 .on('click.bs.dropdown.data-api', clearMenus)
60659 .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
60660 .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
60661 .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
60662 .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
60663
60664 }(jQuery);
60665
60666 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
60667
60668/***/ },
60669/* 620 */
60670/***/ function(module, exports, __webpack_require__) {
60671
60672 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
60673 * Bootstrap: modal.js v3.3.7
60674 * http://getbootstrap.com/javascript/#modals
60675 * ========================================================================
60676 * Copyright 2011-2016 Twitter, Inc.
60677 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
60678 * ======================================================================== */
60679
60680
60681 +function ($) {
60682 'use strict';
60683
60684 // MODAL CLASS DEFINITION
60685 // ======================
60686
60687 var Modal = function (element, options) {
60688 this.options = options
60689 this.$body = $(document.body)
60690 this.$element = $(element)
60691 this.$dialog = this.$element.find('.modal-dialog')
60692 this.$backdrop = null
60693 this.isShown = null
60694 this.originalBodyPad = null
60695 this.scrollbarWidth = 0
60696 this.ignoreBackdropClick = false
60697
60698 if (this.options.remote) {
60699 this.$element
60700 .find('.modal-content')
60701 .load(this.options.remote, $.proxy(function () {
60702 this.$element.trigger('loaded.bs.modal')
60703 }, this))
60704 }
60705 }
60706
60707 Modal.VERSION = '3.3.7'
60708
60709 Modal.TRANSITION_DURATION = 300
60710 Modal.BACKDROP_TRANSITION_DURATION = 150
60711
60712 Modal.DEFAULTS = {
60713 backdrop: true,
60714 keyboard: true,
60715 show: true
60716 }
60717
60718 Modal.prototype.toggle = function (_relatedTarget) {
60719 return this.isShown ? this.hide() : this.show(_relatedTarget)
60720 }
60721
60722 Modal.prototype.show = function (_relatedTarget) {
60723 var that = this
60724 var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
60725
60726 this.$element.trigger(e)
60727
60728 if (this.isShown || e.isDefaultPrevented()) return
60729
60730 this.isShown = true
60731
60732 this.checkScrollbar()
60733 this.setScrollbar()
60734 this.$body.addClass('modal-open')
60735
60736 this.escape()
60737 this.resize()
60738
60739 this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
60740
60741 this.$dialog.on('mousedown.dismiss.bs.modal', function () {
60742 that.$element.one('mouseup.dismiss.bs.modal', function (e) {
60743 if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
60744 })
60745 })
60746
60747 this.backdrop(function () {
60748 var transition = $.support.transition && that.$element.hasClass('fade')
60749
60750 if (!that.$element.parent().length) {
60751 that.$element.appendTo(that.$body) // don't move modals dom position
60752 }
60753
60754 that.$element
60755 .show()
60756 .scrollTop(0)
60757
60758 that.adjustDialog()
60759
60760 if (transition) {
60761 that.$element[0].offsetWidth // force reflow
60762 }
60763
60764 that.$element.addClass('in')
60765
60766 that.enforceFocus()
60767
60768 var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
60769
60770 transition ?
60771 that.$dialog // wait for modal to slide in
60772 .one('bsTransitionEnd', function () {
60773 that.$element.trigger('focus').trigger(e)
60774 })
60775 .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
60776 that.$element.trigger('focus').trigger(e)
60777 })
60778 }
60779
60780 Modal.prototype.hide = function (e) {
60781 if (e) e.preventDefault()
60782
60783 e = $.Event('hide.bs.modal')
60784
60785 this.$element.trigger(e)
60786
60787 if (!this.isShown || e.isDefaultPrevented()) return
60788
60789 this.isShown = false
60790
60791 this.escape()
60792 this.resize()
60793
60794 $(document).off('focusin.bs.modal')
60795
60796 this.$element
60797 .removeClass('in')
60798 .off('click.dismiss.bs.modal')
60799 .off('mouseup.dismiss.bs.modal')
60800
60801 this.$dialog.off('mousedown.dismiss.bs.modal')
60802
60803 $.support.transition && this.$element.hasClass('fade') ?
60804 this.$element
60805 .one('bsTransitionEnd', $.proxy(this.hideModal, this))
60806 .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
60807 this.hideModal()
60808 }
60809
60810 Modal.prototype.enforceFocus = function () {
60811 $(document)
60812 .off('focusin.bs.modal') // guard against infinite focus loop
60813 .on('focusin.bs.modal', $.proxy(function (e) {
60814 if (document !== e.target &&
60815 this.$element[0] !== e.target &&
60816 !this.$element.has(e.target).length) {
60817 this.$element.trigger('focus')
60818 }
60819 }, this))
60820 }
60821
60822 Modal.prototype.escape = function () {
60823 if (this.isShown && this.options.keyboard) {
60824 this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
60825 e.which == 27 && this.hide()
60826 }, this))
60827 } else if (!this.isShown) {
60828 this.$element.off('keydown.dismiss.bs.modal')
60829 }
60830 }
60831
60832 Modal.prototype.resize = function () {
60833 if (this.isShown) {
60834 $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
60835 } else {
60836 $(window).off('resize.bs.modal')
60837 }
60838 }
60839
60840 Modal.prototype.hideModal = function () {
60841 var that = this
60842 this.$element.hide()
60843 this.backdrop(function () {
60844 that.$body.removeClass('modal-open')
60845 that.resetAdjustments()
60846 that.resetScrollbar()
60847 that.$element.trigger('hidden.bs.modal')
60848 })
60849 }
60850
60851 Modal.prototype.removeBackdrop = function () {
60852 this.$backdrop && this.$backdrop.remove()
60853 this.$backdrop = null
60854 }
60855
60856 Modal.prototype.backdrop = function (callback) {
60857 var that = this
60858 var animate = this.$element.hasClass('fade') ? 'fade' : ''
60859
60860 if (this.isShown && this.options.backdrop) {
60861 var doAnimate = $.support.transition && animate
60862
60863 this.$backdrop = $(document.createElement('div'))
60864 .addClass('modal-backdrop ' + animate)
60865 .appendTo(this.$body)
60866
60867 this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
60868 if (this.ignoreBackdropClick) {
60869 this.ignoreBackdropClick = false
60870 return
60871 }
60872 if (e.target !== e.currentTarget) return
60873 this.options.backdrop == 'static'
60874 ? this.$element[0].focus()
60875 : this.hide()
60876 }, this))
60877
60878 if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
60879
60880 this.$backdrop.addClass('in')
60881
60882 if (!callback) return
60883
60884 doAnimate ?
60885 this.$backdrop
60886 .one('bsTransitionEnd', callback)
60887 .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
60888 callback()
60889
60890 } else if (!this.isShown && this.$backdrop) {
60891 this.$backdrop.removeClass('in')
60892
60893 var callbackRemove = function () {
60894 that.removeBackdrop()
60895 callback && callback()
60896 }
60897 $.support.transition && this.$element.hasClass('fade') ?
60898 this.$backdrop
60899 .one('bsTransitionEnd', callbackRemove)
60900 .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
60901 callbackRemove()
60902
60903 } else if (callback) {
60904 callback()
60905 }
60906 }
60907
60908 // these following methods are used to handle overflowing modals
60909
60910 Modal.prototype.handleUpdate = function () {
60911 this.adjustDialog()
60912 }
60913
60914 Modal.prototype.adjustDialog = function () {
60915 var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
60916
60917 this.$element.css({
60918 paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
60919 paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
60920 })
60921 }
60922
60923 Modal.prototype.resetAdjustments = function () {
60924 this.$element.css({
60925 paddingLeft: '',
60926 paddingRight: ''
60927 })
60928 }
60929
60930 Modal.prototype.checkScrollbar = function () {
60931 var fullWindowWidth = window.innerWidth
60932 if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
60933 var documentElementRect = document.documentElement.getBoundingClientRect()
60934 fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
60935 }
60936 this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
60937 this.scrollbarWidth = this.measureScrollbar()
60938 }
60939
60940 Modal.prototype.setScrollbar = function () {
60941 var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
60942 this.originalBodyPad = document.body.style.paddingRight || ''
60943 if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
60944 }
60945
60946 Modal.prototype.resetScrollbar = function () {
60947 this.$body.css('padding-right', this.originalBodyPad)
60948 }
60949
60950 Modal.prototype.measureScrollbar = function () { // thx walsh
60951 var scrollDiv = document.createElement('div')
60952 scrollDiv.className = 'modal-scrollbar-measure'
60953 this.$body.append(scrollDiv)
60954 var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
60955 this.$body[0].removeChild(scrollDiv)
60956 return scrollbarWidth
60957 }
60958
60959
60960 // MODAL PLUGIN DEFINITION
60961 // =======================
60962
60963 function Plugin(option, _relatedTarget) {
60964 return this.each(function () {
60965 var $this = $(this)
60966 var data = $this.data('bs.modal')
60967 var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
60968
60969 if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
60970 if (typeof option == 'string') data[option](_relatedTarget)
60971 else if (options.show) data.show(_relatedTarget)
60972 })
60973 }
60974
60975 var old = $.fn.modal
60976
60977 $.fn.modal = Plugin
60978 $.fn.modal.Constructor = Modal
60979
60980
60981 // MODAL NO CONFLICT
60982 // =================
60983
60984 $.fn.modal.noConflict = function () {
60985 $.fn.modal = old
60986 return this
60987 }
60988
60989
60990 // MODAL DATA-API
60991 // ==============
60992
60993 $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
60994 var $this = $(this)
60995 var href = $this.attr('href')
60996 var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
60997 var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
60998
60999 if ($this.is('a')) e.preventDefault()
61000
61001 $target.one('show.bs.modal', function (showEvent) {
61002 if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
61003 $target.one('hidden.bs.modal', function () {
61004 $this.is(':visible') && $this.trigger('focus')
61005 })
61006 })
61007 Plugin.call($target, option, this)
61008 })
61009
61010 }(jQuery);
61011
61012 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
61013
61014/***/ },
61015/* 621 */
61016/***/ function(module, exports, __webpack_require__) {
61017
61018 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
61019 * Bootstrap: tooltip.js v3.3.7
61020 * http://getbootstrap.com/javascript/#tooltip
61021 * Inspired by the original jQuery.tipsy by Jason Frame
61022 * ========================================================================
61023 * Copyright 2011-2016 Twitter, Inc.
61024 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
61025 * ======================================================================== */
61026
61027
61028 +function ($) {
61029 'use strict';
61030
61031 // TOOLTIP PUBLIC CLASS DEFINITION
61032 // ===============================
61033
61034 var Tooltip = function (element, options) {
61035 this.type = null
61036 this.options = null
61037 this.enabled = null
61038 this.timeout = null
61039 this.hoverState = null
61040 this.$element = null
61041 this.inState = null
61042
61043 this.init('tooltip', element, options)
61044 }
61045
61046 Tooltip.VERSION = '3.3.7'
61047
61048 Tooltip.TRANSITION_DURATION = 150
61049
61050 Tooltip.DEFAULTS = {
61051 animation: true,
61052 placement: 'top',
61053 selector: false,
61054 template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
61055 trigger: 'hover focus',
61056 title: '',
61057 delay: 0,
61058 html: false,
61059 container: false,
61060 viewport: {
61061 selector: 'body',
61062 padding: 0
61063 }
61064 }
61065
61066 Tooltip.prototype.init = function (type, element, options) {
61067 this.enabled = true
61068 this.type = type
61069 this.$element = $(element)
61070 this.options = this.getOptions(options)
61071 this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
61072 this.inState = { click: false, hover: false, focus: false }
61073
61074 if (this.$element[0] instanceof document.constructor && !this.options.selector) {
61075 throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
61076 }
61077
61078 var triggers = this.options.trigger.split(' ')
61079
61080 for (var i = triggers.length; i--;) {
61081 var trigger = triggers[i]
61082
61083 if (trigger == 'click') {
61084 this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
61085 } else if (trigger != 'manual') {
61086 var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
61087 var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
61088
61089 this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
61090 this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
61091 }
61092 }
61093
61094 this.options.selector ?
61095 (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
61096 this.fixTitle()
61097 }
61098
61099 Tooltip.prototype.getDefaults = function () {
61100 return Tooltip.DEFAULTS
61101 }
61102
61103 Tooltip.prototype.getOptions = function (options) {
61104 options = $.extend({}, this.getDefaults(), this.$element.data(), options)
61105
61106 if (options.delay && typeof options.delay == 'number') {
61107 options.delay = {
61108 show: options.delay,
61109 hide: options.delay
61110 }
61111 }
61112
61113 return options
61114 }
61115
61116 Tooltip.prototype.getDelegateOptions = function () {
61117 var options = {}
61118 var defaults = this.getDefaults()
61119
61120 this._options && $.each(this._options, function (key, value) {
61121 if (defaults[key] != value) options[key] = value
61122 })
61123
61124 return options
61125 }
61126
61127 Tooltip.prototype.enter = function (obj) {
61128 var self = obj instanceof this.constructor ?
61129 obj : $(obj.currentTarget).data('bs.' + this.type)
61130
61131 if (!self) {
61132 self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
61133 $(obj.currentTarget).data('bs.' + this.type, self)
61134 }
61135
61136 if (obj instanceof $.Event) {
61137 self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
61138 }
61139
61140 if (self.tip().hasClass('in') || self.hoverState == 'in') {
61141 self.hoverState = 'in'
61142 return
61143 }
61144
61145 clearTimeout(self.timeout)
61146
61147 self.hoverState = 'in'
61148
61149 if (!self.options.delay || !self.options.delay.show) return self.show()
61150
61151 self.timeout = setTimeout(function () {
61152 if (self.hoverState == 'in') self.show()
61153 }, self.options.delay.show)
61154 }
61155
61156 Tooltip.prototype.isInStateTrue = function () {
61157 for (var key in this.inState) {
61158 if (this.inState[key]) return true
61159 }
61160
61161 return false
61162 }
61163
61164 Tooltip.prototype.leave = function (obj) {
61165 var self = obj instanceof this.constructor ?
61166 obj : $(obj.currentTarget).data('bs.' + this.type)
61167
61168 if (!self) {
61169 self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
61170 $(obj.currentTarget).data('bs.' + this.type, self)
61171 }
61172
61173 if (obj instanceof $.Event) {
61174 self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
61175 }
61176
61177 if (self.isInStateTrue()) return
61178
61179 clearTimeout(self.timeout)
61180
61181 self.hoverState = 'out'
61182
61183 if (!self.options.delay || !self.options.delay.hide) return self.hide()
61184
61185 self.timeout = setTimeout(function () {
61186 if (self.hoverState == 'out') self.hide()
61187 }, self.options.delay.hide)
61188 }
61189
61190 Tooltip.prototype.show = function () {
61191 var e = $.Event('show.bs.' + this.type)
61192
61193 if (this.hasContent() && this.enabled) {
61194 this.$element.trigger(e)
61195
61196 var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
61197 if (e.isDefaultPrevented() || !inDom) return
61198 var that = this
61199
61200 var $tip = this.tip()
61201
61202 var tipId = this.getUID(this.type)
61203
61204 this.setContent()
61205 $tip.attr('id', tipId)
61206 this.$element.attr('aria-describedby', tipId)
61207
61208 if (this.options.animation) $tip.addClass('fade')
61209
61210 var placement = typeof this.options.placement == 'function' ?
61211 this.options.placement.call(this, $tip[0], this.$element[0]) :
61212 this.options.placement
61213
61214 var autoToken = /\s?auto?\s?/i
61215 var autoPlace = autoToken.test(placement)
61216 if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
61217
61218 $tip
61219 .detach()
61220 .css({ top: 0, left: 0, display: 'block' })
61221 .addClass(placement)
61222 .data('bs.' + this.type, this)
61223
61224 this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
61225 this.$element.trigger('inserted.bs.' + this.type)
61226
61227 var pos = this.getPosition()
61228 var actualWidth = $tip[0].offsetWidth
61229 var actualHeight = $tip[0].offsetHeight
61230
61231 if (autoPlace) {
61232 var orgPlacement = placement
61233 var viewportDim = this.getPosition(this.$viewport)
61234
61235 placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
61236 placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
61237 placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
61238 placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
61239 placement
61240
61241 $tip
61242 .removeClass(orgPlacement)
61243 .addClass(placement)
61244 }
61245
61246 var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
61247
61248 this.applyPlacement(calculatedOffset, placement)
61249
61250 var complete = function () {
61251 var prevHoverState = that.hoverState
61252 that.$element.trigger('shown.bs.' + that.type)
61253 that.hoverState = null
61254
61255 if (prevHoverState == 'out') that.leave(that)
61256 }
61257
61258 $.support.transition && this.$tip.hasClass('fade') ?
61259 $tip
61260 .one('bsTransitionEnd', complete)
61261 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
61262 complete()
61263 }
61264 }
61265
61266 Tooltip.prototype.applyPlacement = function (offset, placement) {
61267 var $tip = this.tip()
61268 var width = $tip[0].offsetWidth
61269 var height = $tip[0].offsetHeight
61270
61271 // manually read margins because getBoundingClientRect includes difference
61272 var marginTop = parseInt($tip.css('margin-top'), 10)
61273 var marginLeft = parseInt($tip.css('margin-left'), 10)
61274
61275 // we must check for NaN for ie 8/9
61276 if (isNaN(marginTop)) marginTop = 0
61277 if (isNaN(marginLeft)) marginLeft = 0
61278
61279 offset.top += marginTop
61280 offset.left += marginLeft
61281
61282 // $.fn.offset doesn't round pixel values
61283 // so we use setOffset directly with our own function B-0
61284 $.offset.setOffset($tip[0], $.extend({
61285 using: function (props) {
61286 $tip.css({
61287 top: Math.round(props.top),
61288 left: Math.round(props.left)
61289 })
61290 }
61291 }, offset), 0)
61292
61293 $tip.addClass('in')
61294
61295 // check to see if placing tip in new offset caused the tip to resize itself
61296 var actualWidth = $tip[0].offsetWidth
61297 var actualHeight = $tip[0].offsetHeight
61298
61299 if (placement == 'top' && actualHeight != height) {
61300 offset.top = offset.top + height - actualHeight
61301 }
61302
61303 var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
61304
61305 if (delta.left) offset.left += delta.left
61306 else offset.top += delta.top
61307
61308 var isVertical = /top|bottom/.test(placement)
61309 var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
61310 var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
61311
61312 $tip.offset(offset)
61313 this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
61314 }
61315
61316 Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
61317 this.arrow()
61318 .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
61319 .css(isVertical ? 'top' : 'left', '')
61320 }
61321
61322 Tooltip.prototype.setContent = function () {
61323 var $tip = this.tip()
61324 var title = this.getTitle()
61325
61326 $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
61327 $tip.removeClass('fade in top bottom left right')
61328 }
61329
61330 Tooltip.prototype.hide = function (callback) {
61331 var that = this
61332 var $tip = $(this.$tip)
61333 var e = $.Event('hide.bs.' + this.type)
61334
61335 function complete() {
61336 if (that.hoverState != 'in') $tip.detach()
61337 if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
61338 that.$element
61339 .removeAttr('aria-describedby')
61340 .trigger('hidden.bs.' + that.type)
61341 }
61342 callback && callback()
61343 }
61344
61345 this.$element.trigger(e)
61346
61347 if (e.isDefaultPrevented()) return
61348
61349 $tip.removeClass('in')
61350
61351 $.support.transition && $tip.hasClass('fade') ?
61352 $tip
61353 .one('bsTransitionEnd', complete)
61354 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
61355 complete()
61356
61357 this.hoverState = null
61358
61359 return this
61360 }
61361
61362 Tooltip.prototype.fixTitle = function () {
61363 var $e = this.$element
61364 if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
61365 $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
61366 }
61367 }
61368
61369 Tooltip.prototype.hasContent = function () {
61370 return this.getTitle()
61371 }
61372
61373 Tooltip.prototype.getPosition = function ($element) {
61374 $element = $element || this.$element
61375
61376 var el = $element[0]
61377 var isBody = el.tagName == 'BODY'
61378
61379 var elRect = el.getBoundingClientRect()
61380 if (elRect.width == null) {
61381 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
61382 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
61383 }
61384 var isSvg = window.SVGElement && el instanceof window.SVGElement
61385 // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
61386 // See https://github.com/twbs/bootstrap/issues/20280
61387 var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
61388 var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
61389 var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
61390
61391 return $.extend({}, elRect, scroll, outerDims, elOffset)
61392 }
61393
61394 Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
61395 return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
61396 placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
61397 placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
61398 /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
61399
61400 }
61401
61402 Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
61403 var delta = { top: 0, left: 0 }
61404 if (!this.$viewport) return delta
61405
61406 var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
61407 var viewportDimensions = this.getPosition(this.$viewport)
61408
61409 if (/right|left/.test(placement)) {
61410 var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
61411 var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
61412 if (topEdgeOffset < viewportDimensions.top) { // top overflow
61413 delta.top = viewportDimensions.top - topEdgeOffset
61414 } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
61415 delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
61416 }
61417 } else {
61418 var leftEdgeOffset = pos.left - viewportPadding
61419 var rightEdgeOffset = pos.left + viewportPadding + actualWidth
61420 if (leftEdgeOffset < viewportDimensions.left) { // left overflow
61421 delta.left = viewportDimensions.left - leftEdgeOffset
61422 } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
61423 delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
61424 }
61425 }
61426
61427 return delta
61428 }
61429
61430 Tooltip.prototype.getTitle = function () {
61431 var title
61432 var $e = this.$element
61433 var o = this.options
61434
61435 title = $e.attr('data-original-title')
61436 || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
61437
61438 return title
61439 }
61440
61441 Tooltip.prototype.getUID = function (prefix) {
61442 do prefix += ~~(Math.random() * 1000000)
61443 while (document.getElementById(prefix))
61444 return prefix
61445 }
61446
61447 Tooltip.prototype.tip = function () {
61448 if (!this.$tip) {
61449 this.$tip = $(this.options.template)
61450 if (this.$tip.length != 1) {
61451 throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
61452 }
61453 }
61454 return this.$tip
61455 }
61456
61457 Tooltip.prototype.arrow = function () {
61458 return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
61459 }
61460
61461 Tooltip.prototype.enable = function () {
61462 this.enabled = true
61463 }
61464
61465 Tooltip.prototype.disable = function () {
61466 this.enabled = false
61467 }
61468
61469 Tooltip.prototype.toggleEnabled = function () {
61470 this.enabled = !this.enabled
61471 }
61472
61473 Tooltip.prototype.toggle = function (e) {
61474 var self = this
61475 if (e) {
61476 self = $(e.currentTarget).data('bs.' + this.type)
61477 if (!self) {
61478 self = new this.constructor(e.currentTarget, this.getDelegateOptions())
61479 $(e.currentTarget).data('bs.' + this.type, self)
61480 }
61481 }
61482
61483 if (e) {
61484 self.inState.click = !self.inState.click
61485 if (self.isInStateTrue()) self.enter(self)
61486 else self.leave(self)
61487 } else {
61488 self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
61489 }
61490 }
61491
61492 Tooltip.prototype.destroy = function () {
61493 var that = this
61494 clearTimeout(this.timeout)
61495 this.hide(function () {
61496 that.$element.off('.' + that.type).removeData('bs.' + that.type)
61497 if (that.$tip) {
61498 that.$tip.detach()
61499 }
61500 that.$tip = null
61501 that.$arrow = null
61502 that.$viewport = null
61503 that.$element = null
61504 })
61505 }
61506
61507
61508 // TOOLTIP PLUGIN DEFINITION
61509 // =========================
61510
61511 function Plugin(option) {
61512 return this.each(function () {
61513 var $this = $(this)
61514 var data = $this.data('bs.tooltip')
61515 var options = typeof option == 'object' && option
61516
61517 if (!data && /destroy|hide/.test(option)) return
61518 if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
61519 if (typeof option == 'string') data[option]()
61520 })
61521 }
61522
61523 var old = $.fn.tooltip
61524
61525 $.fn.tooltip = Plugin
61526 $.fn.tooltip.Constructor = Tooltip
61527
61528
61529 // TOOLTIP NO CONFLICT
61530 // ===================
61531
61532 $.fn.tooltip.noConflict = function () {
61533 $.fn.tooltip = old
61534 return this
61535 }
61536
61537 }(jQuery);
61538
61539 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
61540
61541/***/ },
61542/* 622 */
61543/***/ function(module, exports, __webpack_require__) {
61544
61545 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
61546 * Bootstrap: popover.js v3.3.7
61547 * http://getbootstrap.com/javascript/#popovers
61548 * ========================================================================
61549 * Copyright 2011-2016 Twitter, Inc.
61550 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
61551 * ======================================================================== */
61552
61553
61554 +function ($) {
61555 'use strict';
61556
61557 // POPOVER PUBLIC CLASS DEFINITION
61558 // ===============================
61559
61560 var Popover = function (element, options) {
61561 this.init('popover', element, options)
61562 }
61563
61564 if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
61565
61566 Popover.VERSION = '3.3.7'
61567
61568 Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
61569 placement: 'right',
61570 trigger: 'click',
61571 content: '',
61572 template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
61573 })
61574
61575
61576 // NOTE: POPOVER EXTENDS tooltip.js
61577 // ================================
61578
61579 Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
61580
61581 Popover.prototype.constructor = Popover
61582
61583 Popover.prototype.getDefaults = function () {
61584 return Popover.DEFAULTS
61585 }
61586
61587 Popover.prototype.setContent = function () {
61588 var $tip = this.tip()
61589 var title = this.getTitle()
61590 var content = this.getContent()
61591
61592 $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
61593 $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
61594 this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
61595 ](content)
61596
61597 $tip.removeClass('fade top bottom left right in')
61598
61599 // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
61600 // this manually by checking the contents.
61601 if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
61602 }
61603
61604 Popover.prototype.hasContent = function () {
61605 return this.getTitle() || this.getContent()
61606 }
61607
61608 Popover.prototype.getContent = function () {
61609 var $e = this.$element
61610 var o = this.options
61611
61612 return $e.attr('data-content')
61613 || (typeof o.content == 'function' ?
61614 o.content.call($e[0]) :
61615 o.content)
61616 }
61617
61618 Popover.prototype.arrow = function () {
61619 return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
61620 }
61621
61622
61623 // POPOVER PLUGIN DEFINITION
61624 // =========================
61625
61626 function Plugin(option) {
61627 return this.each(function () {
61628 var $this = $(this)
61629 var data = $this.data('bs.popover')
61630 var options = typeof option == 'object' && option
61631
61632 if (!data && /destroy|hide/.test(option)) return
61633 if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
61634 if (typeof option == 'string') data[option]()
61635 })
61636 }
61637
61638 var old = $.fn.popover
61639
61640 $.fn.popover = Plugin
61641 $.fn.popover.Constructor = Popover
61642
61643
61644 // POPOVER NO CONFLICT
61645 // ===================
61646
61647 $.fn.popover.noConflict = function () {
61648 $.fn.popover = old
61649 return this
61650 }
61651
61652 }(jQuery);
61653
61654 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
61655
61656/***/ },
61657/* 623 */
61658/***/ function(module, exports, __webpack_require__) {
61659
61660 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
61661 * Bootstrap: scrollspy.js v3.3.7
61662 * http://getbootstrap.com/javascript/#scrollspy
61663 * ========================================================================
61664 * Copyright 2011-2016 Twitter, Inc.
61665 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
61666 * ======================================================================== */
61667
61668
61669 +function ($) {
61670 'use strict';
61671
61672 // SCROLLSPY CLASS DEFINITION
61673 // ==========================
61674
61675 function ScrollSpy(element, options) {
61676 this.$body = $(document.body)
61677 this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
61678 this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
61679 this.selector = (this.options.target || '') + ' .nav li > a'
61680 this.offsets = []
61681 this.targets = []
61682 this.activeTarget = null
61683 this.scrollHeight = 0
61684
61685 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
61686 this.refresh()
61687 this.process()
61688 }
61689
61690 ScrollSpy.VERSION = '3.3.7'
61691
61692 ScrollSpy.DEFAULTS = {
61693 offset: 10
61694 }
61695
61696 ScrollSpy.prototype.getScrollHeight = function () {
61697 return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
61698 }
61699
61700 ScrollSpy.prototype.refresh = function () {
61701 var that = this
61702 var offsetMethod = 'offset'
61703 var offsetBase = 0
61704
61705 this.offsets = []
61706 this.targets = []
61707 this.scrollHeight = this.getScrollHeight()
61708
61709 if (!$.isWindow(this.$scrollElement[0])) {
61710 offsetMethod = 'position'
61711 offsetBase = this.$scrollElement.scrollTop()
61712 }
61713
61714 this.$body
61715 .find(this.selector)
61716 .map(function () {
61717 var $el = $(this)
61718 var href = $el.data('target') || $el.attr('href')
61719 var $href = /^#./.test(href) && $(href)
61720
61721 return ($href
61722 && $href.length
61723 && $href.is(':visible')
61724 && [[$href[offsetMethod]().top + offsetBase, href]]) || null
61725 })
61726 .sort(function (a, b) { return a[0] - b[0] })
61727 .each(function () {
61728 that.offsets.push(this[0])
61729 that.targets.push(this[1])
61730 })
61731 }
61732
61733 ScrollSpy.prototype.process = function () {
61734 var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
61735 var scrollHeight = this.getScrollHeight()
61736 var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
61737 var offsets = this.offsets
61738 var targets = this.targets
61739 var activeTarget = this.activeTarget
61740 var i
61741
61742 if (this.scrollHeight != scrollHeight) {
61743 this.refresh()
61744 }
61745
61746 if (scrollTop >= maxScroll) {
61747 return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
61748 }
61749
61750 if (activeTarget && scrollTop < offsets[0]) {
61751 this.activeTarget = null
61752 return this.clear()
61753 }
61754
61755 for (i = offsets.length; i--;) {
61756 activeTarget != targets[i]
61757 && scrollTop >= offsets[i]
61758 && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
61759 && this.activate(targets[i])
61760 }
61761 }
61762
61763 ScrollSpy.prototype.activate = function (target) {
61764 this.activeTarget = target
61765
61766 this.clear()
61767
61768 var selector = this.selector +
61769 '[data-target="' + target + '"],' +
61770 this.selector + '[href="' + target + '"]'
61771
61772 var active = $(selector)
61773 .parents('li')
61774 .addClass('active')
61775
61776 if (active.parent('.dropdown-menu').length) {
61777 active = active
61778 .closest('li.dropdown')
61779 .addClass('active')
61780 }
61781
61782 active.trigger('activate.bs.scrollspy')
61783 }
61784
61785 ScrollSpy.prototype.clear = function () {
61786 $(this.selector)
61787 .parentsUntil(this.options.target, '.active')
61788 .removeClass('active')
61789 }
61790
61791
61792 // SCROLLSPY PLUGIN DEFINITION
61793 // ===========================
61794
61795 function Plugin(option) {
61796 return this.each(function () {
61797 var $this = $(this)
61798 var data = $this.data('bs.scrollspy')
61799 var options = typeof option == 'object' && option
61800
61801 if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
61802 if (typeof option == 'string') data[option]()
61803 })
61804 }
61805
61806 var old = $.fn.scrollspy
61807
61808 $.fn.scrollspy = Plugin
61809 $.fn.scrollspy.Constructor = ScrollSpy
61810
61811
61812 // SCROLLSPY NO CONFLICT
61813 // =====================
61814
61815 $.fn.scrollspy.noConflict = function () {
61816 $.fn.scrollspy = old
61817 return this
61818 }
61819
61820
61821 // SCROLLSPY DATA-API
61822 // ==================
61823
61824 $(window).on('load.bs.scrollspy.data-api', function () {
61825 $('[data-spy="scroll"]').each(function () {
61826 var $spy = $(this)
61827 Plugin.call($spy, $spy.data())
61828 })
61829 })
61830
61831 }(jQuery);
61832
61833 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
61834
61835/***/ },
61836/* 624 */
61837/***/ function(module, exports, __webpack_require__) {
61838
61839 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
61840 * Bootstrap: tab.js v3.3.7
61841 * http://getbootstrap.com/javascript/#tabs
61842 * ========================================================================
61843 * Copyright 2011-2016 Twitter, Inc.
61844 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
61845 * ======================================================================== */
61846
61847
61848 +function ($) {
61849 'use strict';
61850
61851 // TAB CLASS DEFINITION
61852 // ====================
61853
61854 var Tab = function (element) {
61855 // jscs:disable requireDollarBeforejQueryAssignment
61856 this.element = $(element)
61857 // jscs:enable requireDollarBeforejQueryAssignment
61858 }
61859
61860 Tab.VERSION = '3.3.7'
61861
61862 Tab.TRANSITION_DURATION = 150
61863
61864 Tab.prototype.show = function () {
61865 var $this = this.element
61866 var $ul = $this.closest('ul:not(.dropdown-menu)')
61867 var selector = $this.data('target')
61868
61869 if (!selector) {
61870 selector = $this.attr('href')
61871 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
61872 }
61873
61874 if ($this.parent('li').hasClass('active')) return
61875
61876 var $previous = $ul.find('.active:last a')
61877 var hideEvent = $.Event('hide.bs.tab', {
61878 relatedTarget: $this[0]
61879 })
61880 var showEvent = $.Event('show.bs.tab', {
61881 relatedTarget: $previous[0]
61882 })
61883
61884 $previous.trigger(hideEvent)
61885 $this.trigger(showEvent)
61886
61887 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
61888
61889 var $target = $(selector)
61890
61891 this.activate($this.closest('li'), $ul)
61892 this.activate($target, $target.parent(), function () {
61893 $previous.trigger({
61894 type: 'hidden.bs.tab',
61895 relatedTarget: $this[0]
61896 })
61897 $this.trigger({
61898 type: 'shown.bs.tab',
61899 relatedTarget: $previous[0]
61900 })
61901 })
61902 }
61903
61904 Tab.prototype.activate = function (element, container, callback) {
61905 var $active = container.find('> .active')
61906 var transition = callback
61907 && $.support.transition
61908 && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
61909
61910 function next() {
61911 $active
61912 .removeClass('active')
61913 .find('> .dropdown-menu > .active')
61914 .removeClass('active')
61915 .end()
61916 .find('[data-toggle="tab"]')
61917 .attr('aria-expanded', false)
61918
61919 element
61920 .addClass('active')
61921 .find('[data-toggle="tab"]')
61922 .attr('aria-expanded', true)
61923
61924 if (transition) {
61925 element[0].offsetWidth // reflow for transition
61926 element.addClass('in')
61927 } else {
61928 element.removeClass('fade')
61929 }
61930
61931 if (element.parent('.dropdown-menu').length) {
61932 element
61933 .closest('li.dropdown')
61934 .addClass('active')
61935 .end()
61936 .find('[data-toggle="tab"]')
61937 .attr('aria-expanded', true)
61938 }
61939
61940 callback && callback()
61941 }
61942
61943 $active.length && transition ?
61944 $active
61945 .one('bsTransitionEnd', next)
61946 .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
61947 next()
61948
61949 $active.removeClass('in')
61950 }
61951
61952
61953 // TAB PLUGIN DEFINITION
61954 // =====================
61955
61956 function Plugin(option) {
61957 return this.each(function () {
61958 var $this = $(this)
61959 var data = $this.data('bs.tab')
61960
61961 if (!data) $this.data('bs.tab', (data = new Tab(this)))
61962 if (typeof option == 'string') data[option]()
61963 })
61964 }
61965
61966 var old = $.fn.tab
61967
61968 $.fn.tab = Plugin
61969 $.fn.tab.Constructor = Tab
61970
61971
61972 // TAB NO CONFLICT
61973 // ===============
61974
61975 $.fn.tab.noConflict = function () {
61976 $.fn.tab = old
61977 return this
61978 }
61979
61980
61981 // TAB DATA-API
61982 // ============
61983
61984 var clickHandler = function (e) {
61985 e.preventDefault()
61986 Plugin.call($(this), 'show')
61987 }
61988
61989 $(document)
61990 .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
61991 .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
61992
61993 }(jQuery);
61994
61995 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
61996
61997/***/ },
61998/* 625 */
61999/***/ function(module, exports, __webpack_require__) {
62000
62001 /* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================
62002 * Bootstrap: affix.js v3.3.7
62003 * http://getbootstrap.com/javascript/#affix
62004 * ========================================================================
62005 * Copyright 2011-2016 Twitter, Inc.
62006 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
62007 * ======================================================================== */
62008
62009
62010 +function ($) {
62011 'use strict';
62012
62013 // AFFIX CLASS DEFINITION
62014 // ======================
62015
62016 var Affix = function (element, options) {
62017 this.options = $.extend({}, Affix.DEFAULTS, options)
62018
62019 this.$target = $(this.options.target)
62020 .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
62021 .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
62022
62023 this.$element = $(element)
62024 this.affixed = null
62025 this.unpin = null
62026 this.pinnedOffset = null
62027
62028 this.checkPosition()
62029 }
62030
62031 Affix.VERSION = '3.3.7'
62032
62033 Affix.RESET = 'affix affix-top affix-bottom'
62034
62035 Affix.DEFAULTS = {
62036 offset: 0,
62037 target: window
62038 }
62039
62040 Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
62041 var scrollTop = this.$target.scrollTop()
62042 var position = this.$element.offset()
62043 var targetHeight = this.$target.height()
62044
62045 if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
62046
62047 if (this.affixed == 'bottom') {
62048 if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
62049 return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
62050 }
62051
62052 var initializing = this.affixed == null
62053 var colliderTop = initializing ? scrollTop : position.top
62054 var colliderHeight = initializing ? targetHeight : height
62055
62056 if (offsetTop != null && scrollTop <= offsetTop) return 'top'
62057 if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
62058
62059 return false
62060 }
62061
62062 Affix.prototype.getPinnedOffset = function () {
62063 if (this.pinnedOffset) return this.pinnedOffset
62064 this.$element.removeClass(Affix.RESET).addClass('affix')
62065 var scrollTop = this.$target.scrollTop()
62066 var position = this.$element.offset()
62067 return (this.pinnedOffset = position.top - scrollTop)
62068 }
62069
62070 Affix.prototype.checkPositionWithEventLoop = function () {
62071 setTimeout($.proxy(this.checkPosition, this), 1)
62072 }
62073
62074 Affix.prototype.checkPosition = function () {
62075 if (!this.$element.is(':visible')) return
62076
62077 var height = this.$element.height()
62078 var offset = this.options.offset
62079 var offsetTop = offset.top
62080 var offsetBottom = offset.bottom
62081 var scrollHeight = Math.max($(document).height(), $(document.body).height())
62082
62083 if (typeof offset != 'object') offsetBottom = offsetTop = offset
62084 if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
62085 if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
62086
62087 var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
62088
62089 if (this.affixed != affix) {
62090 if (this.unpin != null) this.$element.css('top', '')
62091
62092 var affixType = 'affix' + (affix ? '-' + affix : '')
62093 var e = $.Event(affixType + '.bs.affix')
62094
62095 this.$element.trigger(e)
62096
62097 if (e.isDefaultPrevented()) return
62098
62099 this.affixed = affix
62100 this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
62101
62102 this.$element
62103 .removeClass(Affix.RESET)
62104 .addClass(affixType)
62105 .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
62106 }
62107
62108 if (affix == 'bottom') {
62109 this.$element.offset({
62110 top: scrollHeight - height - offsetBottom
62111 })
62112 }
62113 }
62114
62115
62116 // AFFIX PLUGIN DEFINITION
62117 // =======================
62118
62119 function Plugin(option) {
62120 return this.each(function () {
62121 var $this = $(this)
62122 var data = $this.data('bs.affix')
62123 var options = typeof option == 'object' && option
62124
62125 if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
62126 if (typeof option == 'string') data[option]()
62127 })
62128 }
62129
62130 var old = $.fn.affix
62131
62132 $.fn.affix = Plugin
62133 $.fn.affix.Constructor = Affix
62134
62135
62136 // AFFIX NO CONFLICT
62137 // =================
62138
62139 $.fn.affix.noConflict = function () {
62140 $.fn.affix = old
62141 return this
62142 }
62143
62144
62145 // AFFIX DATA-API
62146 // ==============
62147
62148 $(window).on('load', function () {
62149 $('[data-spy="affix"]').each(function () {
62150 var $spy = $(this)
62151 var data = $spy.data()
62152
62153 data.offset = data.offset || {}
62154
62155 if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
62156 if (data.offsetTop != null) data.offset.top = data.offsetTop
62157
62158 Plugin.call($spy, data)
62159 })
62160 })
62161
62162 }(jQuery);
62163
62164 /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(614)))
62165
62166/***/ },
62167/* 626 */
62168/***/ function(module, exports, __webpack_require__) {
62169
62170 // style-loader: Adds some css to the DOM by adding a <style> tag
62171
62172 // load the styles
62173 var content = __webpack_require__(627);
62174 if(typeof content === 'string') content = [[module.id, content, '']];
62175 // add the styles to the DOM
62176 var update = __webpack_require__(611)(content, {});
62177 if(content.locals) module.exports = content.locals;
62178 // Hot Module Replacement
62179 if(false) {
62180 // When the styles change, update the <style> tags
62181 if(!content.locals) {
62182 module.hot.accept("!!./../../../css-loader/index.js!./AdminLTE.min.css", function() {
62183 var newContent = require("!!./../../../css-loader/index.js!./AdminLTE.min.css");
62184 if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
62185 update(newContent);
62186 });
62187 }
62188 // When the module is disposed, remove the <style> tags
62189 module.hot.dispose(function() { update(); });
62190 }
62191
62192/***/ },
62193/* 627 */
62194/***/ function(module, exports, __webpack_require__) {
62195
62196 exports = module.exports = __webpack_require__(605)();
62197 // imports
62198 exports.push([module.id, "@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic);", ""]);
62199
62200 // module
62201 exports.push([module.id, "/*!\n * AdminLTE v2.3.7\n * Author: Almsaeed Studio\n *\t Website: Almsaeed Studio <http://almsaeedstudio.com>\n * License: Open source - MIT\n * Please visit http://opensource.org/licenses/MIT for more information\n!*/html,body{min-height:100%}.layout-boxed html,.layout-boxed body{height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto}.wrapper{min-height:100%;position:relative;overflow:hidden}.wrapper:before,.wrapper:after{content:\" \";display:table}.wrapper:after{clear:both}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative}.layout-boxed{background:url(" + __webpack_require__(628) + ") repeat fixed}.content-wrapper,.right-side,.main-footer{-webkit-transition:-webkit-transform .3s ease-in-out,margin .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,margin .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,margin .3s ease-in-out;transition:transform .3s ease-in-out,margin .3s ease-in-out;margin-left:230px;z-index:820}.layout-top-nav .content-wrapper,.layout-top-nav .right-side,.layout-top-nav .main-footer{margin-left:0}@media (max-width:767px){.content-wrapper,.right-side,.main-footer{margin-left:0}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .right-side,.sidebar-collapse .main-footer{margin-left:0}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .right-side,.sidebar-open .main-footer{-webkit-transform:translate(230px, 0);-ms-transform:translate(230px, 0);-o-transform:translate(230px, 0);transform:translate(230px, 0)}}.content-wrapper,.right-side{min-height:100%;background-color:#ecf0f5;z-index:800}.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de}.fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed}.fixed .main-header{top:0;right:0;left:0}.fixed .content-wrapper,.fixed .right-side{padding-top:50px}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px}}.fixed.layout-boxed .wrapper{max-width:100%}body.hold-transition .content-wrapper,body.hold-transition .right-side,body.hold-transition .main-footer,body.hold-transition .main-sidebar,body.hold-transition .left-side,body.hold-transition .main-header .navbar,body.hold-transition .main-header .logo{-webkit-transition:none;-o-transition:none;transition:none}.content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif}a{color:#3c8dbc}a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2}.page-header{margin:10px 0 20px 0;font-size:22px}.page-header>small{color:#666;display:block;margin-top:5px}.main-header{position:relative;max-height:100px;z-index:1030}.main-header .navbar{-webkit-transition:margin-left .3s ease-in-out;-o-transition:margin-left .3s ease-in-out;transition:margin-left .3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0}.layout-top-nav .main-header .navbar{margin-left:0}.main-header #navbar-search-input.form-control{background:rgba(255,255,255,0.2);border-color:transparent}.main-header #navbar-search-input.form-control:focus,.main-header #navbar-search-input.form-control:active{border-color:rgba(0,0,0,0.1);background:rgba(255,255,255,0.9)}.main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1}.main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc}.main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc}.main-header .navbar-custom-menu,.main-header .navbar-right{float:right}@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:transparent}}@media (max-width:767px){.main-header .navbar-right{float:none}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px}.main-header .navbar-right>li{color:inherit;border:0}}.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:15px 15px;font-family:fontAwesome}.main-header .sidebar-toggle:before{content:\"\\F0C9\"}.main-header .sidebar-toggle:hover{color:#fff}.main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent}.main-header .sidebar-toggle .icon-bar{display:none}.main-header .navbar .nav>li.user>a>.fa,.main-header .navbar .nav>li.user>a>.glyphicon,.main-header .navbar .nav>li.user>a>.ion{margin-right:5px}.main-header .navbar .nav>li>a>.label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9}.main-header .logo{-webkit-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden}.main-header .logo .logo-lg{display:block}.main-header .logo .logo-mini{display:none}.main-header .navbar-brand{color:#fff}.content-header{position:relative;padding:15px 15px 0 15px}.content-header>h1{margin:0;font-size:24px}.content-header>h1>small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300}.content-header>.breadcrumb{float:right;background:transparent;margin-top:0;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px}.content-header>.breadcrumb>li>a{color:#444;text-decoration:none;display:inline-block}.content-header>.breadcrumb>li>a>.fa,.content-header>.breadcrumb>li>a>.glyphicon,.content-header>.breadcrumb>li>a>.ion{margin-right:5px}.content-header>.breadcrumb>li+li:before{content:'>\\A0'}@media (max-width:991px){.content-header>.breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px}.content-header>.breadcrumb li:before{color:#97a0b3}}.navbar-toggle{color:#fff;border:0;margin:0;padding:15px 15px}@media (max-width:991px){.navbar-custom-menu .navbar-nav>li{float:left}.navbar-custom-menu .navbar-nav{margin:0;float:left}.navbar-custom-menu .navbar-nav>li>a{padding-top:15px;padding-bottom:15px;line-height:20px}}@media (max-width:767px){.main-header{position:relative}.main-header .logo,.main-header .navbar{width:100%;float:none}.main-header .navbar{margin:0}.main-header .navbar-custom-menu{float:right}}@media (max-width:991px){.navbar-collapse.pull-left{float:none !important}.navbar-collapse.pull-left+.navbar-custom-menu{display:block;position:absolute;top:0;right:40px}}.main-sidebar,.left-side{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform .3s ease-in-out,width .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,width .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,width .3s ease-in-out;transition:transform .3s ease-in-out,width .3s ease-in-out}@media (max-width:767px){.main-sidebar,.left-side{padding-top:100px}}@media (max-width:767px){.main-sidebar,.left-side{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (min-width:768px){.sidebar-collapse .main-sidebar,.sidebar-collapse .left-side{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (max-width:767px){.sidebar-open .main-sidebar,.sidebar-open .left-side{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}}.sidebar{padding-bottom:10px}.sidebar-form input:focus{border-color:transparent}.user-panel{position:relative;width:100%;padding:10px;overflow:hidden}.user-panel:before,.user-panel:after{content:\" \";display:table}.user-panel:after{clear:both}.user-panel>.image>img{width:100%;max-width:45px;height:auto}.user-panel>.info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px}.user-panel>.info>p{font-weight:600;margin-bottom:9px}.user-panel>.info>a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px}.user-panel>.info>a>.fa,.user-panel>.info>a>.ion,.user-panel>.info>a>.glyphicon{margin-right:3px}.sidebar-menu{list-style:none;margin:0;padding:0}.sidebar-menu>li{position:relative;margin:0;padding:0}.sidebar-menu>li>a{padding:12px 5px 12px 15px;display:block}.sidebar-menu>li>a>.fa,.sidebar-menu>li>a>.glyphicon,.sidebar-menu>li>a>.ion{width:20px}.sidebar-menu>li .label,.sidebar-menu>li .badge{margin-right:5px}.sidebar-menu>li .badge{margin-top:3px}.sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px}.sidebar-menu li>a>.fa-angle-left,.sidebar-menu li>a>.pull-right-container>.fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px}.sidebar-menu li.active>a>.fa-angle-left,.sidebar-menu li.active>a>.pull-right-container>.fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.sidebar-menu li.active>.treeview-menu{display:block}.sidebar-menu .treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px}.sidebar-menu .treeview-menu .treeview-menu{padding-left:20px}.sidebar-menu .treeview-menu>li{margin:0}.sidebar-menu .treeview-menu>li>a{padding:5px 5px 5px 15px;display:block;font-size:14px}.sidebar-menu .treeview-menu>li>a>.fa,.sidebar-menu .treeview-menu>li>a>.glyphicon,.sidebar-menu .treeview-menu>li>a>.ion{width:20px}.sidebar-menu .treeview-menu>li>a>.pull-right-container>.fa-angle-left,.sidebar-menu .treeview-menu>li>a>.pull-right-container>.fa-angle-down,.sidebar-menu .treeview-menu>li>a>.fa-angle-left,.sidebar-menu .treeview-menu>li>a>.fa-angle-down{width:auto}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px !important;z-index:840}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);width:50px !important;z-index:850}.sidebar-mini.sidebar-collapse .sidebar-menu>li{position:relative}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a{margin-right:0}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span{border-top-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:not(.treeview)>a>span{border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>span:not(.pull-right),.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{display:block !important;position:absolute;width:180px;left:50px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container{float:right;width:auto!important;left:200px!important;top:10px!important}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container>.label:not(:first-of-type){display:none}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{top:44px;margin-left:0}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel>.info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span,.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>.pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none !important;-webkit-transform:translateZ(0)}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-lg{display:none}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px}}.sidebar-menu,.main-sidebar .user-panel,.sidebar-menu>li.header{white-space:nowrap;overflow:hidden}.sidebar-menu:hover{overflow:visible}.sidebar-form,.sidebar-menu>li.header{overflow:hidden;text-overflow:clip}.sidebar-menu li>a{position:relative}.sidebar-menu li>a>.pull-right-container{position:absolute;right:10px;top:50%;margin-top:-7px}.control-sidebar-bg{position:fixed;z-index:1000;bottom:0}.control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right .3s ease-in-out;-o-transition:right .3s ease-in-out;transition:right .3s ease-in-out}.control-sidebar{position:absolute;padding-top:50px;z-index:1010}@media (max-width:768px){.control-sidebar{padding-top:100px}}.control-sidebar>.tab-content{padding:10px 15px}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open+.control-sidebar-bg{right:0}.control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px}}.nav-tabs.control-sidebar-tabs>li:first-of-type>a,.nav-tabs.control-sidebar-tabs>li:first-of-type>a:hover,.nav-tabs.control-sidebar-tabs>li:first-of-type>a:focus{border-left-width:0}.nav-tabs.control-sidebar-tabs>li>a{border-radius:0}.nav-tabs.control-sidebar-tabs>li>a,.nav-tabs.control-sidebar-tabs>li>a:hover{border-top:none;border-right:none;border-left:1px solid transparent;border-bottom:1px solid transparent}.nav-tabs.control-sidebar-tabs>li>a .icon{font-size:16px}.nav-tabs.control-sidebar-tabs>li.active>a,.nav-tabs.control-sidebar-tabs>li.active>a:hover,.nav-tabs.control-sidebar-tabs>li.active>a:focus,.nav-tabs.control-sidebar-tabs>li.active>a:active{border-top:none;border-right:none;border-bottom:none}@media (max-width:768px){.nav-tabs.control-sidebar-tabs{display:table}.nav-tabs.control-sidebar-tabs>li{display:table-cell}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px}.control-sidebar-menu{list-style:none;padding:0;margin:0 -15px}.control-sidebar-menu>li>a{display:block;padding:10px 15px}.control-sidebar-menu>li>a:before,.control-sidebar-menu>li>a:after{content:\" \";display:table}.control-sidebar-menu>li>a:after{clear:both}.control-sidebar-menu>li>a>.control-sidebar-subheading{margin-top:0}.control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px}.control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px}.control-sidebar-menu .menu-info>.control-sidebar-subheading{margin:0}.control-sidebar-menu .menu-info>p{margin:0;font-size:11px}.control-sidebar-menu .progress{margin:0}.control-sidebar-dark{color:#b8c7ce}.control-sidebar-dark,.control-sidebar-dark+.control-sidebar-bg{background:#222d32}.control-sidebar-dark .nav-tabs.control-sidebar-tabs{border-bottom:#1c2529}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a{background:#181f23;color:#b8c7ce}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus{border-left-color:#141a1d;border-bottom-color:#141a1d}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:active{background:#1c2529}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover{color:#fff}.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:active{background:#222d32;color:#fff}.control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff}.control-sidebar-dark .control-sidebar-menu>li>a:hover{background:#1e282c}.control-sidebar-dark .control-sidebar-menu>li>a .menu-info>p{color:#b8c7ce}.control-sidebar-light{color:#5e5e5e}.control-sidebar-light,.control-sidebar-light+.control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de}.control-sidebar-light .nav-tabs.control-sidebar-tabs{border-bottom:#d2d6de}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a{background:#e8ecf4;color:#444}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus{border-left-color:#d2d6de;border-bottom-color:#d2d6de}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:active{background:#eff1f7}.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:active{background:#f9fafc;color:#111}.control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111}.control-sidebar-light .control-sidebar-menu{margin-left:-14px}.control-sidebar-light .control-sidebar-menu>li>a:hover{background:#f4f4f5}.control-sidebar-light .control-sidebar-menu>li>a .menu-info>p{color:#5e5e5e}.dropdown-menu{box-shadow:none;border-color:#eee}.dropdown-menu>li>a{color:#777}.dropdown-menu>li>a>.glyphicon,.dropdown-menu>li>a>.fa,.dropdown-menu>li>a>.ion{margin-right:10px}.dropdown-menu>li>a:hover{background-color:#e1e3e9;color:#333}.dropdown-menu>.divider{background-color:#eee}.navbar-nav>.notifications-menu>.dropdown-menu,.navbar-nav>.messages-menu>.dropdown-menu,.navbar-nav>.tasks-menu>.dropdown-menu{width:280px;padding:0 0 0 0;margin:0;top:100%}.navbar-nav>.notifications-menu>.dropdown-menu>li,.navbar-nav>.messages-menu>.dropdown-menu>li,.navbar-nav>.tasks-menu>.dropdown-menu>li{position:relative}.navbar-nav>.notifications-menu>.dropdown-menu>li.header,.navbar-nav>.messages-menu>.dropdown-menu>li.header,.navbar-nav>.tasks-menu>.dropdown-menu>li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px}.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444 !important;text-align:center}@media (max-width:991px){.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{background:#fff !important;color:#444 !important}}.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a:hover{text-decoration:none;font-weight:normal}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu,.navbar-nav>.messages-menu>.dropdown-menu>li .menu,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a:hover{background:#f4f4f4;text-decoration:none}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a{color:#444444;overflow:hidden;text-overflow:ellipsis;padding:10px}.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.glyphicon,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.fa,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.ion{width:20px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a{margin:0;padding:10px 10px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>div>img{margin:auto 10px auto auto;width:40px;height:40px}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4>small{color:#999999;font-size:10px;position:absolute;top:0;right:0}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>p{margin:0 0 0 45px;font-size:12px;color:#888888}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:before,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{content:\" \";display:table}.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{clear:both}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{padding:10px}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666}.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>.progress{padding:0;margin:0}.navbar-nav>.user-menu>.dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width:0;width:280px}.navbar-nav>.user-menu>.dropdown-menu,.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header{height:175px;padding:10px;text-align:center}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>img{z-index:5;height:90px;width:90px;border:3px solid;border-color:transparent;border-color:rgba(255,255,255,0.2)}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);font-size:17px;margin-top:10px}.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small{display:block;font-size:12px}.navbar-nav>.user-menu>.dropdown-menu>.user-body{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd}.navbar-nav>.user-menu>.dropdown-menu>.user-body:before,.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{content:\" \";display:table}.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{clear:both}.navbar-nav>.user-menu>.dropdown-menu>.user-body a{color:#444 !important}@media (max-width:991px){.navbar-nav>.user-menu>.dropdown-menu>.user-body a{background:#fff !important;color:#444 !important}}.navbar-nav>.user-menu>.dropdown-menu>.user-footer{background-color:#f9f9f9;padding:10px}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:before,.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{content:\" \";display:table}.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{clear:both}.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default{color:#666666}@media (max-width:991px){.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default:hover{background-color:#f9f9f9}}.navbar-nav>.user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px}@media (max-width:767px){.navbar-nav>.user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px}}.open:not(.dropup)>.animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX .7s both;-o-animation:flipInX .7s both;animation:flipInX .7s both}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{transform:perspective(400px)}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 90deg);-webkit-transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -20deg);-webkit-transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{-webkit-transform:perspective(400px)}}.navbar-custom-menu>.navbar-nav>li{position:relative}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:0;left:auto}@media (max-width:991px){.navbar-custom-menu>.navbar-nav{float:right}.navbar-custom-menu>.navbar-nav>li{position:static}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff}}.form-control{border-radius:0;box-shadow:none;border-color:#d2d6de}.form-control:focus{border-color:#3c8dbc;box-shadow:none}.form-control::-moz-placeholder,.form-control:-ms-input-placeholder,.form-control::-webkit-input-placeholder{color:#bbb;opacity:1}.form-control:not(select){-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-group.has-success label{color:#00a65a}.form-group.has-success .form-control,.form-group.has-success .input-group-addon{border-color:#00a65a;box-shadow:none}.form-group.has-success .help-block{color:#00a65a}.form-group.has-warning label{color:#f39c12}.form-group.has-warning .form-control,.form-group.has-warning .input-group-addon{border-color:#f39c12;box-shadow:none}.form-group.has-warning .help-block{color:#f39c12}.form-group.has-error label{color:#dd4b39}.form-group.has-error .form-control,.form-group.has-error .input-group-addon{border-color:#dd4b39;box-shadow:none}.form-group.has-error .help-block{color:#dd4b39}.input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0}.icheck>label{padding-left:0}.form-control-feedback.fa{line-height:34px}.input-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fa{line-height:46px}.input-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fa{line-height:30px}.progress,.progress>.progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress,.progress>.progress-bar,.progress .progress-bar,.progress>.progress-bar .progress-bar{border-radius:1px}.progress.sm,.progress-sm{height:10px}.progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px}.progress.xs,.progress-xs{height:7px}.progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px}.progress.xxs,.progress-xxs{height:3px}.progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px}.progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px}.progress.vertical>.progress-bar{width:100%;position:absolute;bottom:0}.progress.vertical.sm,.progress.vertical.progress-sm{width:20px}.progress.vertical.xs,.progress.vertical.progress-xs{width:10px}.progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px}.progress-group .progress-text{font-weight:600}.progress-group .progress-number{float:right}.table tr>td .progress{margin:0}.progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc}.progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-green,.progress-bar-success{background-color:#00a65a}.progress-striped .progress-bar-green,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-aqua,.progress-bar-info{background-color:#00c0ef}.progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-yellow,.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-red,.progress-bar-danger{background-color:#dd4b39}.progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.small-box>.inner{padding:10px}.small-box>.small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none}.small-box>.small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15)}.small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0}.small-box p{font-size:15px}.small-box p>small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px}.small-box h3,.small-box p{z-index:5}.small-box .icon{-webkit-transition:all .3s linear;-o-transition:all .3s linear;transition:all .3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15)}.small-box:hover{text-decoration:none;color:#f9f9f9}.small-box:hover .icon{font-size:95px}@media (max-width:767px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}}.box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1)}.box.box-primary{border-top-color:#3c8dbc}.box.box-info{border-top-color:#00c0ef}.box.box-danger{border-top-color:#dd4b39}.box.box-warning{border-top-color:#f39c12}.box.box-success{border-top-color:#00a65a}.box.box-default{border-top-color:#d2d6de}.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none}.box .nav-stacked>li{border-bottom:1px solid #f4f4f4;margin:0}.box .nav-stacked>li:last-of-type{border-bottom:none}.box.height-control .box-body{max-height:300px;overflow:auto}.box .border-right{border-right:1px solid #f4f4f4}.box .border-left{border-left:1px solid #f4f4f4}.box.box-solid{border-top:0}.box.box-solid>.box-header .btn.btn-default{background:transparent}.box.box-solid>.box-header .btn:hover,.box.box-solid>.box-header a:hover{background:rgba(0,0,0,0.1)}.box.box-solid.box-default{border:1px solid #d2d6de}.box.box-solid.box-default>.box-header{color:#444;background:#d2d6de;background-color:#d2d6de}.box.box-solid.box-default>.box-header a,.box.box-solid.box-default>.box-header .btn{color:#444}.box.box-solid.box-primary{border:1px solid #3c8dbc}.box.box-solid.box-primary>.box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc}.box.box-solid.box-primary>.box-header a,.box.box-solid.box-primary>.box-header .btn{color:#fff}.box.box-solid.box-info{border:1px solid #00c0ef}.box.box-solid.box-info>.box-header{color:#fff;background:#00c0ef;background-color:#00c0ef}.box.box-solid.box-info>.box-header a,.box.box-solid.box-info>.box-header .btn{color:#fff}.box.box-solid.box-danger{border:1px solid #dd4b39}.box.box-solid.box-danger>.box-header{color:#fff;background:#dd4b39;background-color:#dd4b39}.box.box-solid.box-danger>.box-header a,.box.box-solid.box-danger>.box-header .btn{color:#fff}.box.box-solid.box-warning{border:1px solid #f39c12}.box.box-solid.box-warning>.box-header{color:#fff;background:#f39c12;background-color:#f39c12}.box.box-solid.box-warning>.box-header a,.box.box-solid.box-warning>.box-header .btn{color:#fff}.box.box-solid.box-success{border:1px solid #00a65a}.box.box-solid.box-success>.box-header{color:#fff;background:#00a65a;background-color:#00a65a}.box.box-solid.box-success>.box-header a,.box.box-solid.box-success>.box-header .btn{color:#fff}.box.box-solid>.box-header>.box-tools .btn{border:0;box-shadow:none}.box.box-solid[class*='bg']>.box-header{color:#fff}.box .box-group>.box{margin-bottom:5px}.box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:0.3em}.box>.overlay,.overlay-wrapper>.overlay,.box>.loading-img,.overlay-wrapper>.loading-img{position:absolute;top:0;left:0;width:100%;height:100%}.box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px}.box .overlay>.fa,.overlay-wrapper .overlay>.fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px}.box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5)}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:\" \";display:table}.box-header:after,.box-body:after,.box-footer:after{clear:both}.box-header{color:#444;display:block;padding:10px;position:relative}.box-header.with-border{border-bottom:1px solid #f4f4f4}.collapsed-box .box-header.with-border{border-bottom:none}.box-header>.fa,.box-header>.glyphicon,.box-header>.ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1}.box-header>.fa,.box-header>.glyphicon,.box-header>.ion{margin-right:5px}.box-header>.box-tools{position:absolute;right:10px;top:5px}.box-header>.box-tools [data-toggle=\"tooltip\"]{position:relative}.box-header>.box-tools.pull-right .dropdown-menu{right:0;left:auto}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84}.btn-box-tool.btn:active{box-shadow:none}.box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px}.no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px}.box-body>.table{margin-bottom:0}.box-body .fc{margin-top:5px}.box-body .full-width-chart{margin:-19px}.box-body.no-padding .full-width-chart{margin:-9px}.box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px}.box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0}.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff}.chart-legend{margin:10px 0}@media (max-width:991px){.chart-legend>li{float:left;margin-right:10px}}.box-comments{background:#f7f7f7}.box-comments .box-comment{padding:8px 0;border-bottom:1px solid #eee}.box-comments .box-comment:before,.box-comments .box-comment:after{content:\" \";display:table}.box-comments .box-comment:after{clear:both}.box-comments .box-comment:last-of-type{border-bottom:0}.box-comments .box-comment:first-of-type{padding-top:0}.box-comments .box-comment img{float:left}.box-comments .comment-text{margin-left:40px;color:#555}.box-comments .username{color:#444;display:block;font-weight:600}.box-comments .text-muted{font-weight:400;font-size:12px}.todo-list{margin:0;padding:0;list-style:none;overflow:auto}.todo-list>li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444}.todo-list>li:last-of-type{margin-bottom:0}.todo-list>li>input[type='checkbox']{margin:0 10px 0 5px}.todo-list>li .text{display:inline-block;margin-left:5px;font-weight:600}.todo-list>li .label{margin-left:10px;font-size:9px}.todo-list>li .tools{display:none;float:right;color:#dd4b39}.todo-list>li .tools>.fa,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{margin-right:5px;cursor:pointer}.todo-list>li:hover .tools{display:inline-block}.todo-list>li.done{color:#999}.todo-list>li.done .text{text-decoration:line-through;font-weight:500}.todo-list>li.done .label{background:#d2d6de !important}.todo-list .danger{border-left-color:#dd4b39}.todo-list .warning{border-left-color:#f39c12}.todo-list .info{border-left-color:#00c0ef}.todo-list .success{border-left-color:#00a65a}.todo-list .primary{border-left-color:#3c8dbc}.todo-list .handle{display:inline-block;cursor:move;margin:0 5px}.chat{padding:5px 20px 5px 10px}.chat .item{margin-bottom:10px}.chat .item:before,.chat .item:after{content:\" \";display:table}.chat .item:after{clear:both}.chat .item>img{width:40px;height:40px;border:2px solid transparent;border-radius:50%}.chat .item>.online{border:2px solid #00a65a}.chat .item>.offline{border:2px solid #dd4b39}.chat .item>.message{margin-left:55px;margin-top:-40px}.chat .item>.message>.name{display:block;font-weight:600}.chat .item>.attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px}.chat .item>.attachment>h4{margin:0 0 5px 0;font-weight:600;font-size:14px}.chat .item>.attachment>p,.chat .item>.attachment>.filename{font-weight:600;font-size:13px;font-style:italic;margin:0}.chat .item>.attachment:before,.chat .item>.attachment:after{content:\" \";display:table}.chat .item>.attachment:after{clear:both}.box-input{max-width:200px}.modal .panel-body{color:#444}.info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px}.info-box small{font-size:14px}.info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px}.info-box .progress,.info-box .progress .progress-bar{border-radius:0}.info-box .progress .progress-bar{background:#fff}.info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2)}.info-box-icon>img{max-width:100%}.info-box-content{padding:5px 10px;margin-left:90px}.info-box-number{display:block;font-weight:bold;font-size:18px}.progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.info-box-text{text-transform:uppercase}.info-box-more{display:block}.progress-description{margin:0}.timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none}.timeline:before{content:'';position:absolute;top:0;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px}.timeline>li{position:relative;margin-right:10px;margin-bottom:15px}.timeline>li:before,.timeline>li:after{content:\" \";display:table}.timeline>li:after{clear:both}.timeline>li>.timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative}.timeline>li>.timeline-item>.time{color:#999;float:right;padding:10px;font-size:12px}.timeline>li>.timeline-item>.timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1}.timeline>li>.timeline-item>.timeline-header>a{font-weight:600}.timeline>li>.timeline-item>.timeline-body,.timeline>li>.timeline-item>.timeline-footer{padding:10px}.timeline>li>.fa,.timeline>li>.glyphicon,.timeline>li>.ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0}.timeline>.time-label>span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px}.timeline-inverse>li>.timeline-item{background:#f0f0f0;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none}.timeline-inverse>li>.timeline-item>.timeline-header{border-bottom-color:#ddd}.btn{border-radius:3px;-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent}.btn.uppercase{text-transform:uppercase}.btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px}.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:focus{outline:none}.btn.btn-file{position:relative;overflow:hidden}.btn.btn-file>input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block}.btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd}.btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7}.btn-primary{background-color:#3c8dbc;border-color:#367fa9}.btn-primary:hover,.btn-primary:active,.btn-primary.hover{background-color:#367fa9}.btn-success{background-color:#00a65a;border-color:#008d4c}.btn-success:hover,.btn-success:active,.btn-success.hover{background-color:#008d4c}.btn-info{background-color:#00c0ef;border-color:#00acd6}.btn-info:hover,.btn-info:active,.btn-info.hover{background-color:#00acd6}.btn-danger{background-color:#dd4b39;border-color:#d73925}.btn-danger:hover,.btn-danger:active,.btn-danger.hover{background-color:#d73925}.btn-warning{background-color:#f39c12;border-color:#e08e0b}.btn-warning:hover,.btn-warning:active,.btn-warning.hover{background-color:#e08e0b}.btn-outline{border:1px solid #fff;background:transparent;color:#fff}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7)}.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2)}.btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px}.btn-app>.fa,.btn-app>.glyphicon,.btn-app>.ion{font-size:20px;display:block}.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa}.btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-app>.badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400}.callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee}.callout a{color:#fff;text-decoration:underline}.callout a:hover{color:#eee}.callout h4{margin-top:0;font-weight:600}.callout p:last-child{margin-bottom:0}.callout code,.callout .highlight{background-color:#fff}.callout.callout-danger{border-color:#c23321}.callout.callout-warning{border-color:#c87f0a}.callout.callout-info{border-color:#0097bc}.callout.callout-success{border-color:#00733e}.alert{border-radius:3px}.alert h4{font-weight:600}.alert .icon{margin-right:10px}.alert .close{color:#000;opacity:.2;filter:alpha(opacity=20)}.alert .close:hover{opacity:.5;filter:alpha(opacity=50)}.alert a{color:#fff;text-decoration:underline}.alert-success{border-color:#008d4c}.alert-danger,.alert-error{border-color:#d73925}.alert-warning{border-color:#e08e0b}.alert-info{border-color:#00acd6}.nav>li>a:hover,.nav>li>a:active,.nav>li>a:focus{color:#444;background:#f7f7f7}.nav-pills>li>a{border-radius:0;border-top:3px solid transparent;color:#444}.nav-pills>li>a>.fa,.nav-pills>li>a>.glyphicon,.nav-pills>li>a>.ion{margin-right:5px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{border-top-color:#3c8dbc}.nav-pills>li.active>a{font-weight:600}.nav-stacked>li>a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444}.nav-stacked>li.active>a,.nav-stacked>li.active>a:hover{background:transparent;color:#444;border-top:0;border-left-color:#3c8dbc}.nav-stacked>li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase}.nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px}.nav-tabs-custom>.nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px}.nav-tabs-custom>.nav-tabs>li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px}.nav-tabs-custom>.nav-tabs>li>a{color:#444;border-radius:0}.nav-tabs-custom>.nav-tabs>li>a.text-muted{color:#999}.nav-tabs-custom>.nav-tabs>li>a,.nav-tabs-custom>.nav-tabs>li>a:hover{background:transparent;margin:0}.nav-tabs-custom>.nav-tabs>li>a:hover{color:#999}.nav-tabs-custom>.nav-tabs>li:not(.active)>a:hover,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:focus,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:active{border-color:transparent}.nav-tabs-custom>.nav-tabs>li.active{border-top-color:#3c8dbc}.nav-tabs-custom>.nav-tabs>li.active>a,.nav-tabs-custom>.nav-tabs>li.active:hover>a{background-color:#fff;color:#444}.nav-tabs-custom>.nav-tabs>li.active>a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4}.nav-tabs-custom>.nav-tabs>li:first-of-type{margin-left:0}.nav-tabs-custom>.nav-tabs>li:first-of-type.active>a{border-left-color:transparent}.nav-tabs-custom>.nav-tabs.pull-right{float:none !important}.nav-tabs-custom>.nav-tabs.pull-right>li{float:right}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type{margin-right:0}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type>a{border-left-width:1px}.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type.active>a{border-left-color:#f4f4f4;border-right-color:transparent}.nav-tabs-custom>.nav-tabs>li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444}.nav-tabs-custom>.nav-tabs>li.header>.fa,.nav-tabs-custom>.nav-tabs>li.header>.glyphicon,.nav-tabs-custom>.nav-tabs>li.header>.ion{margin-right:5px}.nav-tabs-custom>.tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.nav-tabs-custom .dropdown.open>a:active,.nav-tabs-custom .dropdown.open>a:focus{background:transparent;color:#999}.nav-tabs-custom.tab-primary>.nav-tabs>li.active{border-top-color:#3c8dbc}.nav-tabs-custom.tab-info>.nav-tabs>li.active{border-top-color:#00c0ef}.nav-tabs-custom.tab-danger>.nav-tabs>li.active{border-top-color:#dd4b39}.nav-tabs-custom.tab-warning>.nav-tabs>li.active{border-top-color:#f39c12}.nav-tabs-custom.tab-success>.nav-tabs>li.active{border-top-color:#00a65a}.nav-tabs-custom.tab-default>.nav-tabs>li.active{border-top-color:#d2d6de}.pagination>li>a{background:#fafafa;color:#666}.pagination.pagination-flat>li>a{border-radius:0 !important}.products-list{list-style:none;margin:0;padding:0}.products-list>.item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff}.products-list>.item:before,.products-list>.item:after{content:\" \";display:table}.products-list>.item:after{clear:both}.products-list .product-img{float:left}.products-list .product-img img{width:50px;height:50px}.products-list .product-info{margin-left:60px}.products-list .product-title{font-weight:600}.products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.product-list-in-box>.item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4}.product-list-in-box>.item:last-of-type{border-bottom-width:0}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-top:1px solid #f4f4f4}.table>thead>tr>th{border-bottom:2px solid #f4f4f4}.table tr td .progress{margin-top:5px}.table-bordered{border:1px solid #f4f4f4}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #f4f4f4}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table.no-border,.table.no-border td,.table.no-border th{border:0}table.text-center,table.text-center td,table.text-center th{text-align:center}.table.align th{text-align:left}.table.align td{text-align:right}.label-default{background-color:#d2d6de;color:#444}.direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0}.direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.direct-chat-messages{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);padding:10px;height:250px;overflow:auto}.direct-chat-msg,.direct-chat-text{display:block}.direct-chat-msg{margin-bottom:10px}.direct-chat-msg:before,.direct-chat-msg:after{content:\" \";display:table}.direct-chat-msg:after{clear:both}.direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform .5s ease-in-out;-moz-transition:-moz-transform .5s ease-in-out;-o-transition:-o-transform .5s ease-in-out;transition:transform .5s ease-in-out}.direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444}.direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none}.direct-chat-text:after{border-width:5px;margin-top:-5px}.direct-chat-text:before{border-width:6px;margin-top:-6px}.right .direct-chat-text{margin-right:50px;margin-left:0}.right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de}.direct-chat-img{border-radius:50%;float:left;width:40px;height:40px}.right .direct-chat-img{float:right}.direct-chat-info{display:block;margin-bottom:2px;font-size:12px}.direct-chat-name{font-weight:600}.direct-chat-timestamp{color:#999}.direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.direct-chat-contacts{-webkit-transform:translate(101%, 0);-ms-transform:translate(101%, 0);-o-transform:translate(101%, 0);transform:translate(101%, 0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto}.contacts-list>li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0}.contacts-list>li:before,.contacts-list>li:after{content:\" \";display:table}.contacts-list>li:after{clear:both}.contacts-list>li:last-of-type{border-bottom:none}.contacts-list-img{border-radius:50%;width:40px;float:left}.contacts-list-info{margin-left:45px;color:#fff}.contacts-list-name,.contacts-list-status{display:block}.contacts-list-name{font-weight:600}.contacts-list-status{font-size:12px}.contacts-list-date{color:#aaa;font-weight:normal}.contacts-list-msg{color:#999}.direct-chat-danger .right>.direct-chat-text{background:#dd4b39;border-color:#dd4b39;color:#fff}.direct-chat-danger .right>.direct-chat-text:after,.direct-chat-danger .right>.direct-chat-text:before{border-left-color:#dd4b39}.direct-chat-primary .right>.direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff}.direct-chat-primary .right>.direct-chat-text:after,.direct-chat-primary .right>.direct-chat-text:before{border-left-color:#3c8dbc}.direct-chat-warning .right>.direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff}.direct-chat-warning .right>.direct-chat-text:after,.direct-chat-warning .right>.direct-chat-text:before{border-left-color:#f39c12}.direct-chat-info .right>.direct-chat-text{background:#00c0ef;border-color:#00c0ef;color:#fff}.direct-chat-info .right>.direct-chat-text:after,.direct-chat-info .right>.direct-chat-text:before{border-left-color:#00c0ef}.direct-chat-success .right>.direct-chat-text{background:#00a65a;border-color:#00a65a;color:#fff}.direct-chat-success .right>.direct-chat-text:after,.direct-chat-success .right>.direct-chat-text:before{border-left-color:#00a65a}.users-list>li{width:25%;float:left;padding:10px;text-align:center}.users-list>li img{border-radius:50%;max-width:100%;height:auto}.users-list>li>a:hover,.users-list>li>a:hover .users-list-name{color:#999}.users-list-name,.users-list-date{display:block}.users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.users-list-date{color:#999;font-size:12px}.carousel-control.left,.carousel-control.right{background-image:none}.carousel-control>.fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px}.modal{background:rgba(0,0,0,0.3)}.modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);border:0}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125)}}.modal-header{border-bottom-color:#f4f4f4}.modal-footer{border-top-color:#f4f4f4}.modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095}.modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a}.modal-info .modal-header,.modal-info .modal-footer{border-color:#0097bc}.modal-success .modal-header,.modal-success .modal-footer{border-color:#00733e}.modal-danger .modal-header,.modal-danger .modal-footer{border-color:#c23321}.box-widget{border:none;position:relative}.widget-user .widget-user-header{padding:20px;height:120px;border-top-right-radius:3px;border-top-left-radius:3px}.widget-user .widget-user-username{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,0.2)}.widget-user .widget-user-desc{margin-top:0}.widget-user .widget-user-image{position:absolute;top:65px;left:50%;margin-left:-45px}.widget-user .widget-user-image>img{width:90px;height:auto;border:3px solid #fff}.widget-user .box-footer{padding-top:30px}.widget-user-2 .widget-user-header{padding:20px;border-top-right-radius:3px;border-top-left-radius:3px}.widget-user-2 .widget-user-username{margin-top:5px;margin-bottom:5px;font-size:25px;font-weight:300}.widget-user-2 .widget-user-desc{margin-top:0}.widget-user-2 .widget-user-username,.widget-user-2 .widget-user-desc{margin-left:75px}.widget-user-2 .widget-user-image>img{width:65px;height:auto;float:left}.mailbox-messages>.table{margin:0}.mailbox-controls{padding:5px}.mailbox-controls.with-border{border-bottom:1px solid #f4f4f4}.mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px}.mailbox-read-info h3{font-size:20px;margin:0}.mailbox-read-info h5{margin:0;padding:5px 0 0 0}.mailbox-read-time{color:#999;font-size:13px}.mailbox-read-message{padding:10px}.mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px}.mailbox-attachment-name{font-weight:bold;color:#666}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block}.mailbox-attachment-info{padding:10px;background:#f4f4f4}.mailbox-attachment-size{color:#999;font-size:12px}.mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px}.mailbox-attachment-icon.has-img{padding:0}.mailbox-attachment-icon.has-img>img{max-width:100%;height:auto}.lockscreen{background:#d2d6de}.lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300}.lockscreen-logo a{color:#444}.lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%}.lockscreen .lockscreen-name{text-align:center;font-weight:600}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10}.lockscreen-image>img{border-radius:50%;width:70px;height:70px}.lockscreen-credentials{margin-left:70px}.lockscreen-credentials .form-control{border:0}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px}.lockscreen-footer{margin-top:10px}.login-logo,.register-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300}.login-logo a,.register-logo a{color:#444}.login-page,.register-page{background:#d2d6de}.login-box,.register-box{width:360px;margin:7% auto}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px}}.login-box-body,.register-box-body{background:#fff;padding:20px;border-top:0;color:#666}.login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777}.login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px}.social-auth-links{margin:10px 0}.error-page{width:600px;margin:20px auto 0 auto}@media (max-width:991px){.error-page{width:100%}}.error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:991px){.error-page>.headline{float:none;text-align:center}}.error-page>.error-content{margin-left:190px;display:block}@media (max-width:991px){.error-page>.error-content{margin-left:0}}.error-page>.error-content>h3{font-weight:300;font-size:25px}@media (max-width:991px){.error-page>.error-content>h3{text-align:center}}.invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px}.invoice-title{margin-top:0}.profile-user-img{margin:0 auto;width:100px;padding:3px;border:3px solid #d2d6de}.profile-username{font-size:21px;margin-top:5px}.post{border-bottom:1px solid #d2d6de;margin-bottom:15px;padding-bottom:15px;color:#666}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0}.post .user-block{margin-bottom:15px}.btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}.btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em}.btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em}.btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em}.btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}.btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em}.btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em}.btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em}.btn-social-icon>:first-child{border:none;text-align:center;width:100%}.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0}.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0}.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0}.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none}.btn-adn .badge{color:#d87a68;background-color:#fff}.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none}.btn-bitbucket .badge{color:#205081;background-color:#fff}.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none}.btn-dropbox .badge{color:#1087dd;background-color:#fff}.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none}.btn-facebook .badge{color:#3b5998;background-color:#fff}.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none}.btn-flickr .badge{color:#ff0084;background-color:#fff}.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none}.btn-foursquare .badge{color:#f94877;background-color:#fff}.btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none}.btn-github .badge{color:#444;background-color:#fff}.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{background-image:none}.btn-google .badge{color:#dd4b39;background-color:#fff}.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none}.btn-instagram .badge{color:#3f729b;background-color:#fff}.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none}.btn-linkedin .badge{color:#007bb6;background-color:#fff}.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none}.btn-microsoft .badge{color:#2672ec;background-color:#fff}.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none}.btn-openid .badge{color:#f7931e;background-color:#fff}.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none}.btn-pinterest .badge{color:#cb2027;background-color:#fff}.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none}.btn-reddit .badge{color:#eff7ff;background-color:#000}.btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:hover{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none}.btn-soundcloud .badge{color:#f50;background-color:#fff}.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none}.btn-tumblr .badge{color:#2c4762;background-color:#fff}.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none}.btn-twitter .badge{color:#55acee;background-color:#fff}.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none}.btn-vimeo .badge{color:#1ab7ea;background-color:#fff}.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none}.btn-vk .badge{color:#587ea3;background-color:#fff}.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none}.btn-yahoo .badge{color:#720e9e;background-color:#fff}.fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{width:100%;border:0}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0}.fc-toolbar{padding:10px;margin:0}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;margin-right:5px;line-height:30px}.fc-color-picker>li .fa{-webkit-transition:-webkit-transform linear .3s;-moz-transition:-moz-transform linear .3s;-o-transition:-o-transform linear .3s;transition:transform linear .3s}.fc-color-picker>li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}#add-new-event{-webkit-transition:all linear .3s;-o-transition:all linear .3s;transition:all linear .3s}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2)}.select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px}.select2-container--default.select2-container--open{border-color:#3c8dbc}.select2-dropdown{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px}.select2-container[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #3c8dbc}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px}.pad{padding:10px}.margin{margin:10px}.margin-bottom{margin-bottom:20px}.margin-bottom-none{margin-bottom:0}.margin-r-5{margin-right:5px}.inline{display:inline}.description-block{display:block;margin:10px 0;text-align:center}.description-block.margin-bottom{margin-bottom:25px}.description-block>.description-header{margin:0;padding:0;font-weight:600;font-size:16px}.description-block>.description-text{text-transform:uppercase}.bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.label-danger,.label-info,.label-warning,.label-primary,.label-success,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important}.bg-gray{color:#000;background-color:#d2d6de !important}.bg-gray-light{background-color:#f7f7f7}.bg-black{background-color:#111 !important}.bg-red,.callout.callout-danger,.alert-danger,.alert-error,.label-danger,.modal-danger .modal-body{background-color:#dd4b39 !important}.bg-yellow,.callout.callout-warning,.alert-warning,.label-warning,.modal-warning .modal-body{background-color:#f39c12 !important}.bg-aqua,.callout.callout-info,.alert-info,.label-info,.modal-info .modal-body{background-color:#00c0ef !important}.bg-blue{background-color:#0073b7 !important}.bg-light-blue,.label-primary,.modal-primary .modal-body{background-color:#3c8dbc !important}.bg-green,.callout.callout-success,.alert-success,.label-success,.modal-success .modal-body{background-color:#00a65a !important}.bg-navy{background-color:#001f3f !important}.bg-teal{background-color:#39cccc !important}.bg-olive{background-color:#3d9970 !important}.bg-lime{background-color:#01ff70 !important}.bg-orange{background-color:#ff851b !important}.bg-fuchsia{background-color:#f012be !important}.bg-purple{background-color:#605ca8 !important}.bg-maroon{background-color:#d81b60 !important}.bg-gray-active{color:#000;background-color:#b5bbc8 !important}.bg-black-active{background-color:#000 !important}.bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#d33724 !important}.bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important}.bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#00a7d0 !important}.bg-blue-active{background-color:#005384 !important}.bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important}.bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#008d4c !important}.bg-navy-active{background-color:#001a35 !important}.bg-teal-active{background-color:#30bbbb !important}.bg-olive-active{background-color:#368763 !important}.bg-lime-active{background-color:#00e765 !important}.bg-orange-active{background-color:#ff7701 !important}.bg-fuchsia-active{background-color:#db0ead !important}.bg-purple-active{background-color:#555299 !important}.bg-maroon-active{background-color:#ca195a !important}[class^=\"bg-\"].disabled{opacity:.65;filter:alpha(opacity=65)}.text-red{color:#dd4b39 !important}.text-yellow{color:#f39c12 !important}.text-aqua{color:#00c0ef !important}.text-blue{color:#0073b7 !important}.text-black{color:#111 !important}.text-light-blue{color:#3c8dbc !important}.text-green{color:#00a65a !important}.text-gray{color:#d2d6de !important}.text-navy{color:#001f3f !important}.text-teal{color:#39cccc !important}.text-olive{color:#3d9970 !important}.text-lime{color:#01ff70 !important}.text-orange{color:#ff851b !important}.text-fuchsia{color:#f012be !important}.text-purple{color:#605ca8 !important}.text-maroon{color:#d81b60 !important}.link-muted{color:#7a869d}.link-muted:hover,.link-muted:focus{color:#606c84}.link-black{color:#666}.link-black:hover,.link-black:focus{color:#999}.hide{display:none !important}.no-border{border:0 !important}.no-padding{padding:0 !important}.no-margin{margin:0 !important}.no-shadow{box-shadow:none !important}.list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0}.list-group-unbordered>.list-group-item{border-left:0;border-right:0;border-radius:0;padding-left:0;padding-right:0}.flat{border-radius:0 !important}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700}.text-sm{font-size:12px}.jqstooltip{padding:5px !important;width:auto !important;height:auto !important}.bg-teal-gradient{background:#39cccc !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important;background:-ms-linear-gradient(bottom, #39cccc, #7adddd) !important;background:-moz-linear-gradient(center bottom, #39cccc 0, #7adddd 100%) !important;background:-o-linear-gradient(#7adddd, #39cccc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important;color:#fff}.bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important;background:-ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important;background:-moz-linear-gradient(center bottom, #3c8dbc 0, #67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce, #3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important;color:#fff}.bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important;background:-ms-linear-gradient(bottom, #0073b7, #0089db) !important;background:-moz-linear-gradient(center bottom, #0073b7 0, #0089db 100%) !important;background:-o-linear-gradient(#0089db, #0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important;color:#fff}.bg-aqua-gradient{background:#00c0ef !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important;background:-ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important;background:-moz-linear-gradient(center bottom, #00c0ef 0, #14d1ff 100%) !important;background:-o-linear-gradient(#14d1ff, #00c0ef) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important;color:#fff}.bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important;background:-ms-linear-gradient(bottom, #f39c12, #f7bc60) !important;background:-moz-linear-gradient(center bottom, #f39c12 0, #f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60, #f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important;color:#fff}.bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important;background:-ms-linear-gradient(bottom, #605ca8, #9491c4) !important;background:-moz-linear-gradient(center bottom, #605ca8 0, #9491c4 100%) !important;background:-o-linear-gradient(#9491c4, #605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important;color:#fff}.bg-green-gradient{background:#00a65a !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important;background:-ms-linear-gradient(bottom, #00a65a, #00ca6d) !important;background:-moz-linear-gradient(center bottom, #00a65a 0, #00ca6d 100%) !important;background:-o-linear-gradient(#00ca6d, #00a65a) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important;color:#fff}.bg-red-gradient{background:#dd4b39 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important;background:-ms-linear-gradient(bottom, #dd4b39, #e47365) !important;background:-moz-linear-gradient(center bottom, #dd4b39 0, #e47365 100%) !important;background:-o-linear-gradient(#e47365, #dd4b39) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important;color:#fff}.bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #111), color-stop(1, #2b2b2b)) !important;background:-ms-linear-gradient(bottom, #111, #2b2b2b) !important;background:-moz-linear-gradient(center bottom, #111 0, #2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b, #111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111111', GradientType=0) !important;color:#fff}.bg-maroon-gradient{background:#d81b60 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #d81b60), color-stop(1, #e73f7c)) !important;background:-ms-linear-gradient(bottom, #d81b60, #e73f7c) !important;background:-moz-linear-gradient(center bottom, #d81b60 0, #e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c, #d81b60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#d81b60', GradientType=0) !important;color:#fff}.description-block .description-icon{font-size:16px}.no-pad-top{padding-top:0}.position-static{position:static !important}.list-header{font-size:15px;padding:10px 4px;font-weight:bold;color:#666}.list-seperator{height:1px;background:#f4f4f4;margin:15px 0 9px 0}.list-link>a{padding:4px;color:#777}.list-link>a:hover{color:#222}.font-light{font-weight:300}.user-block:before,.user-block:after{content:\" \";display:table}.user-block:after{clear:both}.user-block img{width:40px;height:40px;float:left}.user-block .username,.user-block .description,.user-block .comment{display:block;margin-left:50px}.user-block .username{font-size:16px;font-weight:600}.user-block .description{color:#999;font-size:13px}.user-block.user-block-sm .username,.user-block.user-block-sm .description,.user-block.user-block-sm .comment{margin-left:40px}.user-block.user-block-sm .username{font-size:14px}.img-sm,.img-md,.img-lg,.box-comments .box-comment img,.user-block.user-block-sm img{float:left}.img-sm,.box-comments .box-comment img,.user-block.user-block-sm img{width:30px !important;height:30px !important}.img-sm+.img-push{margin-left:40px}.img-md{width:60px;height:60px}.img-md+.img-push{margin-left:70px}.img-lg{width:100px;height:100px}.img-lg+.img-push{margin-left:110px}.img-bordered{border:3px solid #d2d6de;padding:3px}.img-bordered-sm{border:2px solid #d2d6de;padding:2px}.attachment-block{border:1px solid #f4f4f4;padding:5px;margin-bottom:10px;background:#f7f7f7}.attachment-block .attachment-img{max-width:100px;max-height:100px;height:auto;float:left}.attachment-block .attachment-pushed{margin-left:110px}.attachment-block .attachment-heading{margin:0}.attachment-block .attachment-text{color:#555}.connectedSortable{min-height:100px}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sort-highlight{background:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px}.full-opacity-hover{opacity:.65;filter:alpha(opacity=65)}.full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100)}.chart{position:relative;overflow:hidden;width:100%}.chart svg,.chart canvas{width:100% !important}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none !important}.content-wrapper,.right-side,.main-footer{margin-left:0 !important;min-height:0 !important;-webkit-transform:translate(0, 0) !important;-ms-transform:translate(0, 0) !important;-o-transform:translate(0, 0) !important;transform:translate(0, 0) !important}.fixed .content-wrapper,.fixed .right-side{padding-top:0 !important}.invoice{width:100%;border:0;margin:0;padding:0}.invoice-col{float:left;width:33.3333333%}.table-responsive{overflow:auto}.table-responsive>.table tr th,.table-responsive>.table tr td{white-space:normal !important}}", ""]);
62202
62203 // exports
62204
62205
62206/***/ },
62207/* 628 */
62208/***/ function(module, exports, __webpack_require__) {
62209
62210 module.exports = __webpack_require__.p + "7799dece2c79854f63f09e7dfa528b88.jpg";
62211
62212/***/ }
62213/******/ ]);
\No newline at end of file