MailPoet Newsletters (New) - Version 3.0.0-beta.24

Version Description

  • 2017-03-28 =
  • Improved: clarified UI language in Settings and Import. Thanks Lloyd, @rtomo and @perthmetro;
  • Added: hooks and filters for premium features. Thx Alex;
  • Premium: Google Analytics tracking is now enabled. Get in touch with us if you're a premium user!
  • Fixed: multilingual translations are no longer breaking the UI. Thanks Marco;
  • Fixed: tracking image inside newsletters is now transparent and does not produce a false positive result during VaultPress's security scan. Thanks Raw-B.
Download this release

Release Info

Developer wysija
Plugin Icon 128x128 MailPoet Newsletters (New)
Version 3.0.0-beta.24
Comparing to
See all releases

Code changes from version 3.0.0-beta.23.2 to 3.0.0-beta.24

Files changed (2) hide show
  1. assets/css/admin.css +4 -5
  2. assets/js/admin.js +1274 -27301
assets/css/admin.css CHANGED
@@ -1773,11 +1773,8 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
1773
  cursor: default;
1774
  z-index: 4;
1775
  }
1776
- .CodeMirror-gutter-wrapper {
1777
- -webkit-user-select: none;
1778
- -moz-user-select: none;
1779
- user-select: none;
1780
- }
1781
 
1782
  .CodeMirror-lines {
1783
  cursor: text;
@@ -1822,6 +1819,8 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
1822
 
1823
  .CodeMirror-widget {}
1824
 
 
 
1825
  .CodeMirror-code {
1826
  outline: none;
1827
  }
1773
  cursor: default;
1774
  z-index: 4;
1775
  }
1776
+ .CodeMirror-gutter-wrapper ::selection { background-color: transparent }
1777
+ .CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }
 
 
 
1778
 
1779
  .CodeMirror-lines {
1780
  cursor: text;
1819
 
1820
  .CodeMirror-widget {}
1821
 
1822
+ .CodeMirror-rtl pre { direction: rtl; }
1823
+
1824
  .CodeMirror-code {
1825
  outline: none;
1826
  }
assets/js/admin.js CHANGED
@@ -3,13 +3,13 @@ webpackJsonp([0],[
3
  /***/ function(module, exports, __webpack_require__) {
4
 
5
  __webpack_require__(1);
6
- __webpack_require__(405);
7
- __webpack_require__(425);
8
- __webpack_require__(428);
9
- __webpack_require__(430);
10
- __webpack_require__(433);
11
- __webpack_require__(437);
12
- module.exports = __webpack_require__(438);
13
 
14
 
15
  /***/ },
@@ -24,19 +24,19 @@ webpackJsonp([0],[
24
 
25
  var _react2 = _interopRequireDefault(_react);
26
 
27
- var _reactDom = __webpack_require__(33);
28
 
29
  var _reactDom2 = _interopRequireDefault(_reactDom);
30
 
31
- var _reactRouter = __webpack_require__(180);
32
 
33
- var _history = __webpack_require__(236);
34
 
35
- var _subscribersListJsx = __webpack_require__(265);
36
 
37
  var _subscribersListJsx2 = _interopRequireDefault(_subscribersListJsx);
38
 
39
- var _subscribersFormJsx = __webpack_require__(280);
40
 
41
  var _subscribersFormJsx2 = _interopRequireDefault(_subscribersFormJsx);
42
 
@@ -68,26670 +68,242 @@ webpackJsonp([0],[
68
  }
69
 
70
  /***/ },
71
- /* 2 */
72
- /***/ function(module, exports, __webpack_require__) {
73
-
74
- 'use strict';
75
-
76
- module.exports = __webpack_require__(3);
77
-
78
-
79
- /***/ },
80
- /* 3 */
81
- /***/ function(module, exports, __webpack_require__) {
82
-
83
- /* WEBPACK VAR INJECTION */(function(process) {/**
84
- * Copyright 2013-present, Facebook, Inc.
85
- * All rights reserved.
86
- *
87
- * This source code is licensed under the BSD-style license found in the
88
- * LICENSE file in the root directory of this source tree. An additional grant
89
- * of patent rights can be found in the PATENTS file in the same directory.
90
- *
91
- */
92
-
93
- 'use strict';
94
-
95
- var _assign = __webpack_require__(5);
96
-
97
- var ReactChildren = __webpack_require__(6);
98
- var ReactComponent = __webpack_require__(19);
99
- var ReactPureComponent = __webpack_require__(22);
100
- var ReactClass = __webpack_require__(23);
101
- var ReactDOMFactories = __webpack_require__(25);
102
- var ReactElement = __webpack_require__(10);
103
- var ReactPropTypes = __webpack_require__(30);
104
- var ReactVersion = __webpack_require__(31);
105
-
106
- var onlyChild = __webpack_require__(32);
107
- var warning = __webpack_require__(12);
108
-
109
- var createElement = ReactElement.createElement;
110
- var createFactory = ReactElement.createFactory;
111
- var cloneElement = ReactElement.cloneElement;
112
-
113
- if (process.env.NODE_ENV !== 'production') {
114
- var ReactElementValidator = __webpack_require__(26);
115
- createElement = ReactElementValidator.createElement;
116
- createFactory = ReactElementValidator.createFactory;
117
- cloneElement = ReactElementValidator.cloneElement;
118
- }
119
-
120
- var __spread = _assign;
121
-
122
- if (process.env.NODE_ENV !== 'production') {
123
- var warned = false;
124
- __spread = function () {
125
- process.env.NODE_ENV !== '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;
126
- warned = true;
127
- return _assign.apply(null, arguments);
128
- };
129
- }
130
-
131
- var React = {
132
-
133
- // Modern
134
-
135
- Children: {
136
- map: ReactChildren.map,
137
- forEach: ReactChildren.forEach,
138
- count: ReactChildren.count,
139
- toArray: ReactChildren.toArray,
140
- only: onlyChild
141
- },
142
-
143
- Component: ReactComponent,
144
- PureComponent: ReactPureComponent,
145
-
146
- createElement: createElement,
147
- cloneElement: cloneElement,
148
- isValidElement: ReactElement.isValidElement,
149
-
150
- // Classic
151
-
152
- PropTypes: ReactPropTypes,
153
- createClass: ReactClass.createClass,
154
- createFactory: createFactory,
155
- createMixin: function (mixin) {
156
- // Currently a noop. Will be used to validate and trace mixins.
157
- return mixin;
158
- },
159
-
160
- // This looks DOM specific but these are actually isomorphic helpers
161
- // since they are just generating DOM strings.
162
- DOM: ReactDOMFactories,
163
-
164
- version: ReactVersion,
165
-
166
- // Deprecated hook for JSX spread, don't use this for anything.
167
- __spread: __spread
168
- };
169
-
170
- module.exports = React;
171
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
172
-
173
- /***/ },
174
- /* 4 */
175
- /***/ function(module, exports) {
176
-
177
- // shim for using process in browser
178
- var process = module.exports = {};
179
-
180
- // cached from whatever global is present so that test runners that stub it
181
- // don't break things. But we need to wrap it in a try catch in case it is
182
- // wrapped in strict mode code which doesn't define any globals. It's inside a
183
- // function because try/catches deoptimize in certain engines.
184
-
185
- var cachedSetTimeout;
186
- var cachedClearTimeout;
187
-
188
- function defaultSetTimout() {
189
- throw new Error('setTimeout has not been defined');
190
- }
191
- function defaultClearTimeout () {
192
- throw new Error('clearTimeout has not been defined');
193
- }
194
- (function () {
195
- try {
196
- if (typeof setTimeout === 'function') {
197
- cachedSetTimeout = setTimeout;
198
- } else {
199
- cachedSetTimeout = defaultSetTimout;
200
- }
201
- } catch (e) {
202
- cachedSetTimeout = defaultSetTimout;
203
- }
204
- try {
205
- if (typeof clearTimeout === 'function') {
206
- cachedClearTimeout = clearTimeout;
207
- } else {
208
- cachedClearTimeout = defaultClearTimeout;
209
- }
210
- } catch (e) {
211
- cachedClearTimeout = defaultClearTimeout;
212
- }
213
- } ())
214
- function runTimeout(fun) {
215
- if (cachedSetTimeout === setTimeout) {
216
- //normal enviroments in sane situations
217
- return setTimeout(fun, 0);
218
- }
219
- // if setTimeout wasn't available but was latter defined
220
- if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
221
- cachedSetTimeout = setTimeout;
222
- return setTimeout(fun, 0);
223
- }
224
- try {
225
- // when when somebody has screwed with setTimeout but no I.E. maddness
226
- return cachedSetTimeout(fun, 0);
227
- } catch(e){
228
- try {
229
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
230
- return cachedSetTimeout.call(null, fun, 0);
231
- } catch(e){
232
- // 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
233
- return cachedSetTimeout.call(this, fun, 0);
234
- }
235
- }
236
-
237
-
238
- }
239
- function runClearTimeout(marker) {
240
- if (cachedClearTimeout === clearTimeout) {
241
- //normal enviroments in sane situations
242
- return clearTimeout(marker);
243
- }
244
- // if clearTimeout wasn't available but was latter defined
245
- if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
246
- cachedClearTimeout = clearTimeout;
247
- return clearTimeout(marker);
248
- }
249
- try {
250
- // when when somebody has screwed with setTimeout but no I.E. maddness
251
- return cachedClearTimeout(marker);
252
- } catch (e){
253
- try {
254
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
255
- return cachedClearTimeout.call(null, marker);
256
- } catch (e){
257
- // 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.
258
- // Some versions of I.E. have different rules for clearTimeout vs setTimeout
259
- return cachedClearTimeout.call(this, marker);
260
- }
261
- }
262
-
263
-
264
-
265
- }
266
- var queue = [];
267
- var draining = false;
268
- var currentQueue;
269
- var queueIndex = -1;
270
-
271
- function cleanUpNextTick() {
272
- if (!draining || !currentQueue) {
273
- return;
274
- }
275
- draining = false;
276
- if (currentQueue.length) {
277
- queue = currentQueue.concat(queue);
278
- } else {
279
- queueIndex = -1;
280
- }
281
- if (queue.length) {
282
- drainQueue();
283
- }
284
- }
285
-
286
- function drainQueue() {
287
- if (draining) {
288
- return;
289
- }
290
- var timeout = runTimeout(cleanUpNextTick);
291
- draining = true;
292
-
293
- var len = queue.length;
294
- while(len) {
295
- currentQueue = queue;
296
- queue = [];
297
- while (++queueIndex < len) {
298
- if (currentQueue) {
299
- currentQueue[queueIndex].run();
300
- }
301
- }
302
- queueIndex = -1;
303
- len = queue.length;
304
- }
305
- currentQueue = null;
306
- draining = false;
307
- runClearTimeout(timeout);
308
- }
309
-
310
- process.nextTick = function (fun) {
311
- var args = new Array(arguments.length - 1);
312
- if (arguments.length > 1) {
313
- for (var i = 1; i < arguments.length; i++) {
314
- args[i - 1] = arguments[i];
315
- }
316
- }
317
- queue.push(new Item(fun, args));
318
- if (queue.length === 1 && !draining) {
319
- runTimeout(drainQueue);
320
- }
321
- };
322
-
323
- // v8 likes predictible objects
324
- function Item(fun, array) {
325
- this.fun = fun;
326
- this.array = array;
327
- }
328
- Item.prototype.run = function () {
329
- this.fun.apply(null, this.array);
330
- };
331
- process.title = 'browser';
332
- process.browser = true;
333
- process.env = {};
334
- process.argv = [];
335
- process.version = ''; // empty string to avoid regexp issues
336
- process.versions = {};
337
-
338
- function noop() {}
339
-
340
- process.on = noop;
341
- process.addListener = noop;
342
- process.once = noop;
343
- process.off = noop;
344
- process.removeListener = noop;
345
- process.removeAllListeners = noop;
346
- process.emit = noop;
347
-
348
- process.binding = function (name) {
349
- throw new Error('process.binding is not supported');
350
- };
351
-
352
- process.cwd = function () { return '/' };
353
- process.chdir = function (dir) {
354
- throw new Error('process.chdir is not supported');
355
- };
356
- process.umask = function() { return 0; };
357
-
358
-
359
- /***/ },
360
- /* 5 */
361
- /***/ function(module, exports) {
362
-
363
- /*
364
- object-assign
365
- (c) Sindre Sorhus
366
- @license MIT
367
- */
368
-
369
- 'use strict';
370
- /* eslint-disable no-unused-vars */
371
- var getOwnPropertySymbols = Object.getOwnPropertySymbols;
372
- var hasOwnProperty = Object.prototype.hasOwnProperty;
373
- var propIsEnumerable = Object.prototype.propertyIsEnumerable;
374
-
375
- function toObject(val) {
376
- if (val === null || val === undefined) {
377
- throw new TypeError('Object.assign cannot be called with null or undefined');
378
- }
379
-
380
- return Object(val);
381
- }
382
-
383
- function shouldUseNative() {
384
- try {
385
- if (!Object.assign) {
386
- return false;
387
- }
388
-
389
- // Detect buggy property enumeration order in older V8 versions.
390
-
391
- // https://bugs.chromium.org/p/v8/issues/detail?id=4118
392
- var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
393
- test1[5] = 'de';
394
- if (Object.getOwnPropertyNames(test1)[0] === '5') {
395
- return false;
396
- }
397
-
398
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
399
- var test2 = {};
400
- for (var i = 0; i < 10; i++) {
401
- test2['_' + String.fromCharCode(i)] = i;
402
- }
403
- var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
404
- return test2[n];
405
- });
406
- if (order2.join('') !== '0123456789') {
407
- return false;
408
- }
409
-
410
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
411
- var test3 = {};
412
- 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
413
- test3[letter] = letter;
414
- });
415
- if (Object.keys(Object.assign({}, test3)).join('') !==
416
- 'abcdefghijklmnopqrst') {
417
- return false;
418
- }
419
-
420
- return true;
421
- } catch (err) {
422
- // We don't expect any of the above to throw, but better to be safe.
423
- return false;
424
- }
425
- }
426
-
427
- module.exports = shouldUseNative() ? Object.assign : function (target, source) {
428
- var from;
429
- var to = toObject(target);
430
- var symbols;
431
-
432
- for (var s = 1; s < arguments.length; s++) {
433
- from = Object(arguments[s]);
434
-
435
- for (var key in from) {
436
- if (hasOwnProperty.call(from, key)) {
437
- to[key] = from[key];
438
- }
439
- }
440
-
441
- if (getOwnPropertySymbols) {
442
- symbols = getOwnPropertySymbols(from);
443
- for (var i = 0; i < symbols.length; i++) {
444
- if (propIsEnumerable.call(from, symbols[i])) {
445
- to[symbols[i]] = from[symbols[i]];
446
- }
447
- }
448
- }
449
- }
450
-
451
- return to;
452
- };
453
-
454
-
455
- /***/ },
456
- /* 6 */
457
- /***/ function(module, exports, __webpack_require__) {
458
-
459
- /**
460
- * Copyright 2013-present, Facebook, Inc.
461
- * All rights reserved.
462
- *
463
- * This source code is licensed under the BSD-style license found in the
464
- * LICENSE file in the root directory of this source tree. An additional grant
465
- * of patent rights can be found in the PATENTS file in the same directory.
466
- *
467
- */
468
-
469
- 'use strict';
470
-
471
- var PooledClass = __webpack_require__(7);
472
- var ReactElement = __webpack_require__(10);
473
-
474
- var emptyFunction = __webpack_require__(13);
475
- var traverseAllChildren = __webpack_require__(16);
476
-
477
- var twoArgumentPooler = PooledClass.twoArgumentPooler;
478
- var fourArgumentPooler = PooledClass.fourArgumentPooler;
479
-
480
- var userProvidedKeyEscapeRegex = /\/+/g;
481
- function escapeUserProvidedKey(text) {
482
- return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');
483
- }
484
-
485
- /**
486
- * PooledClass representing the bookkeeping associated with performing a child
487
- * traversal. Allows avoiding binding callbacks.
488
- *
489
- * @constructor ForEachBookKeeping
490
- * @param {!function} forEachFunction Function to perform traversal with.
491
- * @param {?*} forEachContext Context to perform context with.
492
- */
493
- function ForEachBookKeeping(forEachFunction, forEachContext) {
494
- this.func = forEachFunction;
495
- this.context = forEachContext;
496
- this.count = 0;
497
- }
498
- ForEachBookKeeping.prototype.destructor = function () {
499
- this.func = null;
500
- this.context = null;
501
- this.count = 0;
502
- };
503
- PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);
504
-
505
- function forEachSingleChild(bookKeeping, child, name) {
506
- var func = bookKeeping.func,
507
- context = bookKeeping.context;
508
-
509
- func.call(context, child, bookKeeping.count++);
510
- }
511
-
512
- /**
513
- * Iterates through children that are typically specified as `props.children`.
514
- *
515
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach
516
- *
517
- * The provided forEachFunc(child, index) will be called for each
518
- * leaf child.
519
- *
520
- * @param {?*} children Children tree container.
521
- * @param {function(*, int)} forEachFunc
522
- * @param {*} forEachContext Context for forEachContext.
523
- */
524
- function forEachChildren(children, forEachFunc, forEachContext) {
525
- if (children == null) {
526
- return children;
527
- }
528
- var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);
529
- traverseAllChildren(children, forEachSingleChild, traverseContext);
530
- ForEachBookKeeping.release(traverseContext);
531
- }
532
-
533
- /**
534
- * PooledClass representing the bookkeeping associated with performing a child
535
- * mapping. Allows avoiding binding callbacks.
536
- *
537
- * @constructor MapBookKeeping
538
- * @param {!*} mapResult Object containing the ordered map of results.
539
- * @param {!function} mapFunction Function to perform mapping with.
540
- * @param {?*} mapContext Context to perform mapping with.
541
- */
542
- function MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {
543
- this.result = mapResult;
544
- this.keyPrefix = keyPrefix;
545
- this.func = mapFunction;
546
- this.context = mapContext;
547
- this.count = 0;
548
- }
549
- MapBookKeeping.prototype.destructor = function () {
550
- this.result = null;
551
- this.keyPrefix = null;
552
- this.func = null;
553
- this.context = null;
554
- this.count = 0;
555
- };
556
- PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);
557
-
558
- function mapSingleChildIntoContext(bookKeeping, child, childKey) {
559
- var result = bookKeeping.result,
560
- keyPrefix = bookKeeping.keyPrefix,
561
- func = bookKeeping.func,
562
- context = bookKeeping.context;
563
-
564
-
565
- var mappedChild = func.call(context, child, bookKeeping.count++);
566
- if (Array.isArray(mappedChild)) {
567
- mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);
568
- } else if (mappedChild != null) {
569
- if (ReactElement.isValidElement(mappedChild)) {
570
- mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,
571
- // Keep both the (mapped) and old keys if they differ, just as
572
- // traverseAllChildren used to do for objects as children
573
- keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);
574
- }
575
- result.push(mappedChild);
576
- }
577
- }
578
-
579
- function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
580
- var escapedPrefix = '';
581
- if (prefix != null) {
582
- escapedPrefix = escapeUserProvidedKey(prefix) + '/';
583
- }
584
- var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);
585
- traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);
586
- MapBookKeeping.release(traverseContext);
587
- }
588
-
589
- /**
590
- * Maps children that are typically specified as `props.children`.
591
- *
592
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map
593
- *
594
- * The provided mapFunction(child, key, index) will be called for each
595
- * leaf child.
596
- *
597
- * @param {?*} children Children tree container.
598
- * @param {function(*, int)} func The map function.
599
- * @param {*} context Context for mapFunction.
600
- * @return {object} Object containing the ordered map of results.
601
- */
602
- function mapChildren(children, func, context) {
603
- if (children == null) {
604
- return children;
605
- }
606
- var result = [];
607
- mapIntoWithKeyPrefixInternal(children, result, null, func, context);
608
- return result;
609
- }
610
-
611
- function forEachSingleChildDummy(traverseContext, child, name) {
612
- return null;
613
- }
614
-
615
- /**
616
- * Count the number of children that are typically specified as
617
- * `props.children`.
618
- *
619
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count
620
- *
621
- * @param {?*} children Children tree container.
622
- * @return {number} The number of children.
623
- */
624
- function countChildren(children, context) {
625
- return traverseAllChildren(children, forEachSingleChildDummy, null);
626
- }
627
-
628
- /**
629
- * Flatten a children object (typically specified as `props.children`) and
630
- * return an array with appropriately re-keyed children.
631
- *
632
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray
633
- */
634
- function toArray(children) {
635
- var result = [];
636
- mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);
637
- return result;
638
- }
639
-
640
- var ReactChildren = {
641
- forEach: forEachChildren,
642
- map: mapChildren,
643
- mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,
644
- count: countChildren,
645
- toArray: toArray
646
- };
647
-
648
- module.exports = ReactChildren;
649
-
650
- /***/ },
651
- /* 7 */
652
- /***/ function(module, exports, __webpack_require__) {
653
-
654
- /* WEBPACK VAR INJECTION */(function(process) {/**
655
- * Copyright 2013-present, Facebook, Inc.
656
- * All rights reserved.
657
- *
658
- * This source code is licensed under the BSD-style license found in the
659
- * LICENSE file in the root directory of this source tree. An additional grant
660
- * of patent rights can be found in the PATENTS file in the same directory.
661
- *
662
- *
663
- */
664
-
665
- 'use strict';
666
-
667
- var _prodInvariant = __webpack_require__(8);
668
-
669
- var invariant = __webpack_require__(9);
670
-
671
- /**
672
- * Static poolers. Several custom versions for each potential number of
673
- * arguments. A completely generic pooler is easy to implement, but would
674
- * require accessing the `arguments` object. In each of these, `this` refers to
675
- * the Class itself, not an instance. If any others are needed, simply add them
676
- * here, or in their own files.
677
- */
678
- var oneArgumentPooler = function (copyFieldsFrom) {
679
- var Klass = this;
680
- if (Klass.instancePool.length) {
681
- var instance = Klass.instancePool.pop();
682
- Klass.call(instance, copyFieldsFrom);
683
- return instance;
684
- } else {
685
- return new Klass(copyFieldsFrom);
686
- }
687
- };
688
-
689
- var twoArgumentPooler = function (a1, a2) {
690
- var Klass = this;
691
- if (Klass.instancePool.length) {
692
- var instance = Klass.instancePool.pop();
693
- Klass.call(instance, a1, a2);
694
- return instance;
695
- } else {
696
- return new Klass(a1, a2);
697
- }
698
- };
699
-
700
- var threeArgumentPooler = function (a1, a2, a3) {
701
- var Klass = this;
702
- if (Klass.instancePool.length) {
703
- var instance = Klass.instancePool.pop();
704
- Klass.call(instance, a1, a2, a3);
705
- return instance;
706
- } else {
707
- return new Klass(a1, a2, a3);
708
- }
709
- };
710
-
711
- var fourArgumentPooler = function (a1, a2, a3, a4) {
712
- var Klass = this;
713
- if (Klass.instancePool.length) {
714
- var instance = Klass.instancePool.pop();
715
- Klass.call(instance, a1, a2, a3, a4);
716
- return instance;
717
- } else {
718
- return new Klass(a1, a2, a3, a4);
719
- }
720
- };
721
-
722
- var standardReleaser = function (instance) {
723
- var Klass = this;
724
- !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;
725
- instance.destructor();
726
- if (Klass.instancePool.length < Klass.poolSize) {
727
- Klass.instancePool.push(instance);
728
- }
729
- };
730
-
731
- var DEFAULT_POOL_SIZE = 10;
732
- var DEFAULT_POOLER = oneArgumentPooler;
733
-
734
- /**
735
- * Augments `CopyConstructor` to be a poolable class, augmenting only the class
736
- * itself (statically) not adding any prototypical fields. Any CopyConstructor
737
- * you give this may have a `poolSize` property, and will look for a
738
- * prototypical `destructor` on instances.
739
- *
740
- * @param {Function} CopyConstructor Constructor that can be used to reset.
741
- * @param {Function} pooler Customizable pooler.
742
- */
743
- var addPoolingTo = function (CopyConstructor, pooler) {
744
- // Casting as any so that flow ignores the actual implementation and trusts
745
- // it to match the type we declared
746
- var NewKlass = CopyConstructor;
747
- NewKlass.instancePool = [];
748
- NewKlass.getPooled = pooler || DEFAULT_POOLER;
749
- if (!NewKlass.poolSize) {
750
- NewKlass.poolSize = DEFAULT_POOL_SIZE;
751
- }
752
- NewKlass.release = standardReleaser;
753
- return NewKlass;
754
- };
755
-
756
- var PooledClass = {
757
- addPoolingTo: addPoolingTo,
758
- oneArgumentPooler: oneArgumentPooler,
759
- twoArgumentPooler: twoArgumentPooler,
760
- threeArgumentPooler: threeArgumentPooler,
761
- fourArgumentPooler: fourArgumentPooler
762
- };
763
-
764
- module.exports = PooledClass;
765
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
766
-
767
- /***/ },
768
- /* 8 */
769
- /***/ function(module, exports) {
770
-
771
- /**
772
- * Copyright (c) 2013-present, Facebook, Inc.
773
- * All rights reserved.
774
- *
775
- * This source code is licensed under the BSD-style license found in the
776
- * LICENSE file in the root directory of this source tree. An additional grant
777
- * of patent rights can be found in the PATENTS file in the same directory.
778
- *
779
- *
780
- */
781
- 'use strict';
782
-
783
- /**
784
- * WARNING: DO NOT manually require this module.
785
- * This is a replacement for `invariant(...)` used by the error code system
786
- * and will _only_ be required by the corresponding babel pass.
787
- * It always throws.
788
- */
789
-
790
- function reactProdInvariant(code) {
791
- var argCount = arguments.length - 1;
792
-
793
- var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;
794
-
795
- for (var argIdx = 0; argIdx < argCount; argIdx++) {
796
- message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);
797
- }
798
-
799
- message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';
800
-
801
- var error = new Error(message);
802
- error.name = 'Invariant Violation';
803
- error.framesToPop = 1; // we don't care about reactProdInvariant's own frame
804
-
805
- throw error;
806
- }
807
-
808
- module.exports = reactProdInvariant;
809
-
810
- /***/ },
811
- /* 9 */
812
- /***/ function(module, exports, __webpack_require__) {
813
-
814
- /* WEBPACK VAR INJECTION */(function(process) {/**
815
- * Copyright (c) 2013-present, Facebook, Inc.
816
- * All rights reserved.
817
- *
818
- * This source code is licensed under the BSD-style license found in the
819
- * LICENSE file in the root directory of this source tree. An additional grant
820
- * of patent rights can be found in the PATENTS file in the same directory.
821
- *
822
- */
823
-
824
- 'use strict';
825
-
826
- /**
827
- * Use invariant() to assert state which your program assumes to be true.
828
- *
829
- * Provide sprintf-style format (only %s is supported) and arguments
830
- * to provide information about what broke and what you were
831
- * expecting.
832
- *
833
- * The invariant message will be stripped in production, but the invariant
834
- * will remain to ensure logic does not differ in production.
835
- */
836
-
837
- var validateFormat = function validateFormat(format) {};
838
-
839
- if (process.env.NODE_ENV !== 'production') {
840
- validateFormat = function validateFormat(format) {
841
- if (format === undefined) {
842
- throw new Error('invariant requires an error message argument');
843
- }
844
- };
845
- }
846
-
847
- function invariant(condition, format, a, b, c, d, e, f) {
848
- validateFormat(format);
849
-
850
- if (!condition) {
851
- var error;
852
- if (format === undefined) {
853
- error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
854
- } else {
855
- var args = [a, b, c, d, e, f];
856
- var argIndex = 0;
857
- error = new Error(format.replace(/%s/g, function () {
858
- return args[argIndex++];
859
- }));
860
- error.name = 'Invariant Violation';
861
- }
862
-
863
- error.framesToPop = 1; // we don't care about invariant's own frame
864
- throw error;
865
- }
866
- }
867
-
868
- module.exports = invariant;
869
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
870
-
871
- /***/ },
872
- /* 10 */
873
- /***/ function(module, exports, __webpack_require__) {
874
-
875
- /* WEBPACK VAR INJECTION */(function(process) {/**
876
- * Copyright 2014-present, Facebook, Inc.
877
- * All rights reserved.
878
- *
879
- * This source code is licensed under the BSD-style license found in the
880
- * LICENSE file in the root directory of this source tree. An additional grant
881
- * of patent rights can be found in the PATENTS file in the same directory.
882
- *
883
- */
884
-
885
- 'use strict';
886
-
887
- var _assign = __webpack_require__(5);
888
-
889
- var ReactCurrentOwner = __webpack_require__(11);
890
-
891
- var warning = __webpack_require__(12);
892
- var canDefineProperty = __webpack_require__(14);
893
- var hasOwnProperty = Object.prototype.hasOwnProperty;
894
-
895
- var REACT_ELEMENT_TYPE = __webpack_require__(15);
896
-
897
- var RESERVED_PROPS = {
898
- key: true,
899
- ref: true,
900
- __self: true,
901
- __source: true
902
- };
903
-
904
- var specialPropKeyWarningShown, specialPropRefWarningShown;
905
-
906
- function hasValidRef(config) {
907
- if (process.env.NODE_ENV !== 'production') {
908
- if (hasOwnProperty.call(config, 'ref')) {
909
- var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
910
- if (getter && getter.isReactWarning) {
911
- return false;
912
- }
913
- }
914
- }
915
- return config.ref !== undefined;
916
- }
917
-
918
- function hasValidKey(config) {
919
- if (process.env.NODE_ENV !== 'production') {
920
- if (hasOwnProperty.call(config, 'key')) {
921
- var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
922
- if (getter && getter.isReactWarning) {
923
- return false;
924
- }
925
- }
926
- }
927
- return config.key !== undefined;
928
- }
929
-
930
- function defineKeyPropWarningGetter(props, displayName) {
931
- var warnAboutAccessingKey = function () {
932
- if (!specialPropKeyWarningShown) {
933
- specialPropKeyWarningShown = true;
934
- process.env.NODE_ENV !== '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;
935
- }
936
- };
937
- warnAboutAccessingKey.isReactWarning = true;
938
- Object.defineProperty(props, 'key', {
939
- get: warnAboutAccessingKey,
940
- configurable: true
941
- });
942
- }
943
-
944
- function defineRefPropWarningGetter(props, displayName) {
945
- var warnAboutAccessingRef = function () {
946
- if (!specialPropRefWarningShown) {
947
- specialPropRefWarningShown = true;
948
- process.env.NODE_ENV !== '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;
949
- }
950
- };
951
- warnAboutAccessingRef.isReactWarning = true;
952
- Object.defineProperty(props, 'ref', {
953
- get: warnAboutAccessingRef,
954
- configurable: true
955
- });
956
- }
957
-
958
- /**
959
- * Factory method to create a new React element. This no longer adheres to
960
- * the class pattern, so do not use new to call it. Also, no instanceof check
961
- * will work. Instead test $$typeof field against Symbol.for('react.element') to check
962
- * if something is a React Element.
963
- *
964
- * @param {*} type
965
- * @param {*} key
966
- * @param {string|object} ref
967
- * @param {*} self A *temporary* helper to detect places where `this` is
968
- * different from the `owner` when React.createElement is called, so that we
969
- * can warn. We want to get rid of owner and replace string `ref`s with arrow
970
- * functions, and as long as `this` and owner are the same, there will be no
971
- * change in behavior.
972
- * @param {*} source An annotation object (added by a transpiler or otherwise)
973
- * indicating filename, line number, and/or other information.
974
- * @param {*} owner
975
- * @param {*} props
976
- * @internal
977
- */
978
- var ReactElement = function (type, key, ref, self, source, owner, props) {
979
- var element = {
980
- // This tag allow us to uniquely identify this as a React Element
981
- $$typeof: REACT_ELEMENT_TYPE,
982
-
983
- // Built-in properties that belong on the element
984
- type: type,
985
- key: key,
986
- ref: ref,
987
- props: props,
988
-
989
- // Record the component responsible for creating this element.
990
- _owner: owner
991
- };
992
-
993
- if (process.env.NODE_ENV !== 'production') {
994
- // The validation flag is currently mutative. We put it on
995
- // an external backing store so that we can freeze the whole object.
996
- // This can be replaced with a WeakMap once they are implemented in
997
- // commonly used development environments.
998
- element._store = {};
999
-
1000
- // To make comparing ReactElements easier for testing purposes, we make
1001
- // the validation flag non-enumerable (where possible, which should
1002
- // include every environment we run tests in), so the test framework
1003
- // ignores it.
1004
- if (canDefineProperty) {
1005
- Object.defineProperty(element._store, 'validated', {
1006
- configurable: false,
1007
- enumerable: false,
1008
- writable: true,
1009
- value: false
1010
- });
1011
- // self and source are DEV only properties.
1012
- Object.defineProperty(element, '_self', {
1013
- configurable: false,
1014
- enumerable: false,
1015
- writable: false,
1016
- value: self
1017
- });
1018
- // Two elements created in two different places should be considered
1019
- // equal for testing purposes and therefore we hide it from enumeration.
1020
- Object.defineProperty(element, '_source', {
1021
- configurable: false,
1022
- enumerable: false,
1023
- writable: false,
1024
- value: source
1025
- });
1026
- } else {
1027
- element._store.validated = false;
1028
- element._self = self;
1029
- element._source = source;
1030
- }
1031
- if (Object.freeze) {
1032
- Object.freeze(element.props);
1033
- Object.freeze(element);
1034
- }
1035
- }
1036
-
1037
- return element;
1038
- };
1039
-
1040
- /**
1041
- * Create and return a new ReactElement of the given type.
1042
- * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement
1043
- */
1044
- ReactElement.createElement = function (type, config, children) {
1045
- var propName;
1046
-
1047
- // Reserved names are extracted
1048
- var props = {};
1049
-
1050
- var key = null;
1051
- var ref = null;
1052
- var self = null;
1053
- var source = null;
1054
-
1055
- if (config != null) {
1056
- if (hasValidRef(config)) {
1057
- ref = config.ref;
1058
- }
1059
- if (hasValidKey(config)) {
1060
- key = '' + config.key;
1061
- }
1062
-
1063
- self = config.__self === undefined ? null : config.__self;
1064
- source = config.__source === undefined ? null : config.__source;
1065
- // Remaining properties are added to a new props object
1066
- for (propName in config) {
1067
- if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
1068
- props[propName] = config[propName];
1069
- }
1070
- }
1071
- }
1072
-
1073
- // Children can be more than one argument, and those are transferred onto
1074
- // the newly allocated props object.
1075
- var childrenLength = arguments.length - 2;
1076
- if (childrenLength === 1) {
1077
- props.children = children;
1078
- } else if (childrenLength > 1) {
1079
- var childArray = Array(childrenLength);
1080
- for (var i = 0; i < childrenLength; i++) {
1081
- childArray[i] = arguments[i + 2];
1082
- }
1083
- if (process.env.NODE_ENV !== 'production') {
1084
- if (Object.freeze) {
1085
- Object.freeze(childArray);
1086
- }
1087
- }
1088
- props.children = childArray;
1089
- }
1090
-
1091
- // Resolve default props
1092
- if (type && type.defaultProps) {
1093
- var defaultProps = type.defaultProps;
1094
- for (propName in defaultProps) {
1095
- if (props[propName] === undefined) {
1096
- props[propName] = defaultProps[propName];
1097
- }
1098
- }
1099
- }
1100
- if (process.env.NODE_ENV !== 'production') {
1101
- if (key || ref) {
1102
- if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {
1103
- var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
1104
- if (key) {
1105
- defineKeyPropWarningGetter(props, displayName);
1106
- }
1107
- if (ref) {
1108
- defineRefPropWarningGetter(props, displayName);
1109
- }
1110
- }
1111
- }
1112
- }
1113
- return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
1114
- };
1115
-
1116
- /**
1117
- * Return a function that produces ReactElements of a given type.
1118
- * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory
1119
- */
1120
- ReactElement.createFactory = function (type) {
1121
- var factory = ReactElement.createElement.bind(null, type);
1122
- // Expose the type on the factory and the prototype so that it can be
1123
- // easily accessed on elements. E.g. `<Foo />.type === Foo`.
1124
- // This should not be named `constructor` since this may not be the function
1125
- // that created the element, and it may not even be a constructor.
1126
- // Legacy hook TODO: Warn if this is accessed
1127
- factory.type = type;
1128
- return factory;
1129
- };
1130
-
1131
- ReactElement.cloneAndReplaceKey = function (oldElement, newKey) {
1132
- var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
1133
-
1134
- return newElement;
1135
- };
1136
-
1137
- /**
1138
- * Clone and return a new ReactElement using element as the starting point.
1139
- * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement
1140
- */
1141
- ReactElement.cloneElement = function (element, config, children) {
1142
- var propName;
1143
-
1144
- // Original props are copied
1145
- var props = _assign({}, element.props);
1146
-
1147
- // Reserved names are extracted
1148
- var key = element.key;
1149
- var ref = element.ref;
1150
- // Self is preserved since the owner is preserved.
1151
- var self = element._self;
1152
- // Source is preserved since cloneElement is unlikely to be targeted by a
1153
- // transpiler, and the original source is probably a better indicator of the
1154
- // true owner.
1155
- var source = element._source;
1156
-
1157
- // Owner will be preserved, unless ref is overridden
1158
- var owner = element._owner;
1159
-
1160
- if (config != null) {
1161
- if (hasValidRef(config)) {
1162
- // Silently steal the ref from the parent.
1163
- ref = config.ref;
1164
- owner = ReactCurrentOwner.current;
1165
- }
1166
- if (hasValidKey(config)) {
1167
- key = '' + config.key;
1168
- }
1169
-
1170
- // Remaining properties override existing props
1171
- var defaultProps;
1172
- if (element.type && element.type.defaultProps) {
1173
- defaultProps = element.type.defaultProps;
1174
- }
1175
- for (propName in config) {
1176
- if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
1177
- if (config[propName] === undefined && defaultProps !== undefined) {
1178
- // Resolve default props
1179
- props[propName] = defaultProps[propName];
1180
- } else {
1181
- props[propName] = config[propName];
1182
- }
1183
- }
1184
- }
1185
- }
1186
-
1187
- // Children can be more than one argument, and those are transferred onto
1188
- // the newly allocated props object.
1189
- var childrenLength = arguments.length - 2;
1190
- if (childrenLength === 1) {
1191
- props.children = children;
1192
- } else if (childrenLength > 1) {
1193
- var childArray = Array(childrenLength);
1194
- for (var i = 0; i < childrenLength; i++) {
1195
- childArray[i] = arguments[i + 2];
1196
- }
1197
- props.children = childArray;
1198
- }
1199
-
1200
- return ReactElement(element.type, key, ref, self, source, owner, props);
1201
- };
1202
-
1203
- /**
1204
- * Verifies the object is a ReactElement.
1205
- * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement
1206
- * @param {?object} object
1207
- * @return {boolean} True if `object` is a valid component.
1208
- * @final
1209
- */
1210
- ReactElement.isValidElement = function (object) {
1211
- return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
1212
- };
1213
-
1214
- module.exports = ReactElement;
1215
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1216
-
1217
- /***/ },
1218
- /* 11 */
1219
- /***/ function(module, exports) {
1220
-
1221
- /**
1222
- * Copyright 2013-present, Facebook, Inc.
1223
- * All rights reserved.
1224
- *
1225
- * This source code is licensed under the BSD-style license found in the
1226
- * LICENSE file in the root directory of this source tree. An additional grant
1227
- * of patent rights can be found in the PATENTS file in the same directory.
1228
- *
1229
- *
1230
- */
1231
-
1232
- 'use strict';
1233
-
1234
- /**
1235
- * Keeps track of the current owner.
1236
- *
1237
- * The current owner is the component who should own any components that are
1238
- * currently being constructed.
1239
- */
1240
- var ReactCurrentOwner = {
1241
-
1242
- /**
1243
- * @internal
1244
- * @type {ReactComponent}
1245
- */
1246
- current: null
1247
-
1248
- };
1249
-
1250
- module.exports = ReactCurrentOwner;
1251
-
1252
- /***/ },
1253
- /* 12 */
1254
- /***/ function(module, exports, __webpack_require__) {
1255
-
1256
- /* WEBPACK VAR INJECTION */(function(process) {/**
1257
- * Copyright 2014-2015, Facebook, Inc.
1258
- * All rights reserved.
1259
- *
1260
- * This source code is licensed under the BSD-style license found in the
1261
- * LICENSE file in the root directory of this source tree. An additional grant
1262
- * of patent rights can be found in the PATENTS file in the same directory.
1263
- *
1264
- */
1265
-
1266
- 'use strict';
1267
-
1268
- var emptyFunction = __webpack_require__(13);
1269
-
1270
- /**
1271
- * Similar to invariant but only logs a warning if the condition is not met.
1272
- * This can be used to log issues in development environments in critical
1273
- * paths. Removing the logging code for production environments will keep the
1274
- * same logic and follow the same code paths.
1275
- */
1276
-
1277
- var warning = emptyFunction;
1278
-
1279
- if (process.env.NODE_ENV !== 'production') {
1280
- (function () {
1281
- var printWarning = function printWarning(format) {
1282
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1283
- args[_key - 1] = arguments[_key];
1284
- }
1285
-
1286
- var argIndex = 0;
1287
- var message = 'Warning: ' + format.replace(/%s/g, function () {
1288
- return args[argIndex++];
1289
- });
1290
- if (typeof console !== 'undefined') {
1291
- console.error(message);
1292
- }
1293
- try {
1294
- // --- Welcome to debugging React ---
1295
- // This error was thrown as a convenience so that you can use this stack
1296
- // to find the callsite that caused this warning to fire.
1297
- throw new Error(message);
1298
- } catch (x) {}
1299
- };
1300
-
1301
- warning = function warning(condition, format) {
1302
- if (format === undefined) {
1303
- throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
1304
- }
1305
-
1306
- if (format.indexOf('Failed Composite propType: ') === 0) {
1307
- return; // Ignore CompositeComponent proptype check.
1308
- }
1309
-
1310
- if (!condition) {
1311
- for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
1312
- args[_key2 - 2] = arguments[_key2];
1313
- }
1314
-
1315
- printWarning.apply(undefined, [format].concat(args));
1316
- }
1317
- };
1318
- })();
1319
- }
1320
-
1321
- module.exports = warning;
1322
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1323
-
1324
- /***/ },
1325
- /* 13 */
1326
- /***/ function(module, exports) {
1327
-
1328
- "use strict";
1329
-
1330
- /**
1331
- * Copyright (c) 2013-present, Facebook, Inc.
1332
- * All rights reserved.
1333
- *
1334
- * This source code is licensed under the BSD-style license found in the
1335
- * LICENSE file in the root directory of this source tree. An additional grant
1336
- * of patent rights can be found in the PATENTS file in the same directory.
1337
- *
1338
- *
1339
- */
1340
-
1341
- function makeEmptyFunction(arg) {
1342
- return function () {
1343
- return arg;
1344
- };
1345
- }
1346
-
1347
- /**
1348
- * This function accepts and discards inputs; it has no side effects. This is
1349
- * primarily useful idiomatically for overridable function endpoints which
1350
- * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
1351
- */
1352
- var emptyFunction = function emptyFunction() {};
1353
-
1354
- emptyFunction.thatReturns = makeEmptyFunction;
1355
- emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
1356
- emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
1357
- emptyFunction.thatReturnsNull = makeEmptyFunction(null);
1358
- emptyFunction.thatReturnsThis = function () {
1359
- return this;
1360
- };
1361
- emptyFunction.thatReturnsArgument = function (arg) {
1362
- return arg;
1363
- };
1364
-
1365
- module.exports = emptyFunction;
1366
-
1367
- /***/ },
1368
- /* 14 */
1369
- /***/ function(module, exports, __webpack_require__) {
1370
-
1371
- /* WEBPACK VAR INJECTION */(function(process) {/**
1372
- * Copyright 2013-present, Facebook, Inc.
1373
- * All rights reserved.
1374
- *
1375
- * This source code is licensed under the BSD-style license found in the
1376
- * LICENSE file in the root directory of this source tree. An additional grant
1377
- * of patent rights can be found in the PATENTS file in the same directory.
1378
- *
1379
- *
1380
- */
1381
-
1382
- 'use strict';
1383
-
1384
- var canDefineProperty = false;
1385
- if (process.env.NODE_ENV !== 'production') {
1386
- try {
1387
- // $FlowFixMe https://github.com/facebook/flow/issues/285
1388
- Object.defineProperty({}, 'x', { get: function () {} });
1389
- canDefineProperty = true;
1390
- } catch (x) {
1391
- // IE will fail on defineProperty
1392
- }
1393
- }
1394
-
1395
- module.exports = canDefineProperty;
1396
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1397
-
1398
- /***/ },
1399
- /* 15 */
1400
- /***/ function(module, exports) {
1401
-
1402
- /**
1403
- * Copyright 2014-present, Facebook, Inc.
1404
- * All rights reserved.
1405
- *
1406
- * This source code is licensed under the BSD-style license found in the
1407
- * LICENSE file in the root directory of this source tree. An additional grant
1408
- * of patent rights can be found in the PATENTS file in the same directory.
1409
- *
1410
- *
1411
- */
1412
-
1413
- 'use strict';
1414
-
1415
- // The Symbol used to tag the ReactElement type. If there is no native Symbol
1416
- // nor polyfill, then a plain number is used for performance.
1417
-
1418
- var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
1419
-
1420
- module.exports = REACT_ELEMENT_TYPE;
1421
-
1422
- /***/ },
1423
- /* 16 */
1424
- /***/ function(module, exports, __webpack_require__) {
1425
-
1426
- /* WEBPACK VAR INJECTION */(function(process) {/**
1427
- * Copyright 2013-present, Facebook, Inc.
1428
- * All rights reserved.
1429
- *
1430
- * This source code is licensed under the BSD-style license found in the
1431
- * LICENSE file in the root directory of this source tree. An additional grant
1432
- * of patent rights can be found in the PATENTS file in the same directory.
1433
- *
1434
- */
1435
-
1436
- 'use strict';
1437
-
1438
- var _prodInvariant = __webpack_require__(8);
1439
-
1440
- var ReactCurrentOwner = __webpack_require__(11);
1441
- var REACT_ELEMENT_TYPE = __webpack_require__(15);
1442
-
1443
- var getIteratorFn = __webpack_require__(17);
1444
- var invariant = __webpack_require__(9);
1445
- var KeyEscapeUtils = __webpack_require__(18);
1446
- var warning = __webpack_require__(12);
1447
-
1448
- var SEPARATOR = '.';
1449
- var SUBSEPARATOR = ':';
1450
-
1451
- /**
1452
- * This is inlined from ReactElement since this file is shared between
1453
- * isomorphic and renderers. We could extract this to a
1454
- *
1455
- */
1456
-
1457
- /**
1458
- * TODO: Test that a single child and an array with one item have the same key
1459
- * pattern.
1460
- */
1461
-
1462
- var didWarnAboutMaps = false;
1463
-
1464
- /**
1465
- * Generate a key string that identifies a component within a set.
1466
- *
1467
- * @param {*} component A component that could contain a manual key.
1468
- * @param {number} index Index that is used if a manual key is not provided.
1469
- * @return {string}
1470
- */
1471
- function getComponentKey(component, index) {
1472
- // Do some typechecking here since we call this blindly. We want to ensure
1473
- // that we don't block potential future ES APIs.
1474
- if (component && typeof component === 'object' && component.key != null) {
1475
- // Explicit key
1476
- return KeyEscapeUtils.escape(component.key);
1477
- }
1478
- // Implicit key determined by the index in the set
1479
- return index.toString(36);
1480
- }
1481
-
1482
- /**
1483
- * @param {?*} children Children tree container.
1484
- * @param {!string} nameSoFar Name of the key path so far.
1485
- * @param {!function} callback Callback to invoke with each child found.
1486
- * @param {?*} traverseContext Used to pass information throughout the traversal
1487
- * process.
1488
- * @return {!number} The number of children in this subtree.
1489
- */
1490
- function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
1491
- var type = typeof children;
1492
-
1493
- if (type === 'undefined' || type === 'boolean') {
1494
- // All of the above are perceived as null.
1495
- children = null;
1496
- }
1497
-
1498
- if (children === null || type === 'string' || type === 'number' ||
1499
- // The following is inlined from ReactElement. This means we can optimize
1500
- // some checks. React Fiber also inlines this logic for similar purposes.
1501
- type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {
1502
- callback(traverseContext, children,
1503
- // If it's the only child, treat the name as if it was wrapped in an array
1504
- // so that it's consistent if the number of children grows.
1505
- nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
1506
- return 1;
1507
- }
1508
-
1509
- var child;
1510
- var nextName;
1511
- var subtreeCount = 0; // Count of children found in the current subtree.
1512
- var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
1513
-
1514
- if (Array.isArray(children)) {
1515
- for (var i = 0; i < children.length; i++) {
1516
- child = children[i];
1517
- nextName = nextNamePrefix + getComponentKey(child, i);
1518
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
1519
- }
1520
- } else {
1521
- var iteratorFn = getIteratorFn(children);
1522
- if (iteratorFn) {
1523
- var iterator = iteratorFn.call(children);
1524
- var step;
1525
- if (iteratorFn !== children.entries) {
1526
- var ii = 0;
1527
- while (!(step = iterator.next()).done) {
1528
- child = step.value;
1529
- nextName = nextNamePrefix + getComponentKey(child, ii++);
1530
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
1531
- }
1532
- } else {
1533
- if (process.env.NODE_ENV !== 'production') {
1534
- var mapsAsChildrenAddendum = '';
1535
- if (ReactCurrentOwner.current) {
1536
- var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();
1537
- if (mapsAsChildrenOwnerName) {
1538
- mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';
1539
- }
1540
- }
1541
- process.env.NODE_ENV !== '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;
1542
- didWarnAboutMaps = true;
1543
- }
1544
- // Iterator will provide entry [k,v] tuples rather than values.
1545
- while (!(step = iterator.next()).done) {
1546
- var entry = step.value;
1547
- if (entry) {
1548
- child = entry[1];
1549
- nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);
1550
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
1551
- }
1552
- }
1553
- }
1554
- } else if (type === 'object') {
1555
- var addendum = '';
1556
- if (process.env.NODE_ENV !== 'production') {
1557
- 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.';
1558
- if (children._isReactElement) {
1559
- 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.';
1560
- }
1561
- if (ReactCurrentOwner.current) {
1562
- var name = ReactCurrentOwner.current.getName();
1563
- if (name) {
1564
- addendum += ' Check the render method of `' + name + '`.';
1565
- }
1566
- }
1567
- }
1568
- var childrenString = String(children);
1569
- true ? process.env.NODE_ENV !== '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;
1570
- }
1571
- }
1572
-
1573
- return subtreeCount;
1574
- }
1575
-
1576
- /**
1577
- * Traverses children that are typically specified as `props.children`, but
1578
- * might also be specified through attributes:
1579
- *
1580
- * - `traverseAllChildren(this.props.children, ...)`
1581
- * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
1582
- *
1583
- * The `traverseContext` is an optional argument that is passed through the
1584
- * entire traversal. It can be used to store accumulations or anything else that
1585
- * the callback might find relevant.
1586
- *
1587
- * @param {?*} children Children tree object.
1588
- * @param {!function} callback To invoke upon traversing each child.
1589
- * @param {?*} traverseContext Context for traversal.
1590
- * @return {!number} The number of children in this subtree.
1591
- */
1592
- function traverseAllChildren(children, callback, traverseContext) {
1593
- if (children == null) {
1594
- return 0;
1595
- }
1596
-
1597
- return traverseAllChildrenImpl(children, '', callback, traverseContext);
1598
- }
1599
-
1600
- module.exports = traverseAllChildren;
1601
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1602
-
1603
- /***/ },
1604
- /* 17 */
1605
- /***/ function(module, exports) {
1606
-
1607
- /**
1608
- * Copyright 2013-present, Facebook, Inc.
1609
- * All rights reserved.
1610
- *
1611
- * This source code is licensed under the BSD-style license found in the
1612
- * LICENSE file in the root directory of this source tree. An additional grant
1613
- * of patent rights can be found in the PATENTS file in the same directory.
1614
- *
1615
- *
1616
- */
1617
-
1618
- 'use strict';
1619
-
1620
- /* global Symbol */
1621
-
1622
- var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
1623
- var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
1624
-
1625
- /**
1626
- * Returns the iterator method function contained on the iterable object.
1627
- *
1628
- * Be sure to invoke the function with the iterable as context:
1629
- *
1630
- * var iteratorFn = getIteratorFn(myIterable);
1631
- * if (iteratorFn) {
1632
- * var iterator = iteratorFn.call(myIterable);
1633
- * ...
1634
- * }
1635
- *
1636
- * @param {?object} maybeIterable
1637
- * @return {?function}
1638
- */
1639
- function getIteratorFn(maybeIterable) {
1640
- var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
1641
- if (typeof iteratorFn === 'function') {
1642
- return iteratorFn;
1643
- }
1644
- }
1645
-
1646
- module.exports = getIteratorFn;
1647
-
1648
- /***/ },
1649
- /* 18 */
1650
- /***/ function(module, exports) {
1651
-
1652
- /**
1653
- * Copyright 2013-present, Facebook, Inc.
1654
- * All rights reserved.
1655
- *
1656
- * This source code is licensed under the BSD-style license found in the
1657
- * LICENSE file in the root directory of this source tree. An additional grant
1658
- * of patent rights can be found in the PATENTS file in the same directory.
1659
- *
1660
- *
1661
- */
1662
-
1663
- 'use strict';
1664
-
1665
- /**
1666
- * Escape and wrap key so it is safe to use as a reactid
1667
- *
1668
- * @param {string} key to be escaped.
1669
- * @return {string} the escaped key.
1670
- */
1671
-
1672
- function escape(key) {
1673
- var escapeRegex = /[=:]/g;
1674
- var escaperLookup = {
1675
- '=': '=0',
1676
- ':': '=2'
1677
- };
1678
- var escapedString = ('' + key).replace(escapeRegex, function (match) {
1679
- return escaperLookup[match];
1680
- });
1681
-
1682
- return '$' + escapedString;
1683
- }
1684
-
1685
- /**
1686
- * Unescape and unwrap key for human-readable display
1687
- *
1688
- * @param {string} key to unescape.
1689
- * @return {string} the unescaped key.
1690
- */
1691
- function unescape(key) {
1692
- var unescapeRegex = /(=0|=2)/g;
1693
- var unescaperLookup = {
1694
- '=0': '=',
1695
- '=2': ':'
1696
- };
1697
- var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
1698
-
1699
- return ('' + keySubstring).replace(unescapeRegex, function (match) {
1700
- return unescaperLookup[match];
1701
- });
1702
- }
1703
-
1704
- var KeyEscapeUtils = {
1705
- escape: escape,
1706
- unescape: unescape
1707
- };
1708
-
1709
- module.exports = KeyEscapeUtils;
1710
-
1711
- /***/ },
1712
- /* 19 */
1713
- /***/ function(module, exports, __webpack_require__) {
1714
-
1715
- /* WEBPACK VAR INJECTION */(function(process) {/**
1716
- * Copyright 2013-present, Facebook, Inc.
1717
- * All rights reserved.
1718
- *
1719
- * This source code is licensed under the BSD-style license found in the
1720
- * LICENSE file in the root directory of this source tree. An additional grant
1721
- * of patent rights can be found in the PATENTS file in the same directory.
1722
- *
1723
- */
1724
-
1725
- 'use strict';
1726
-
1727
- var _prodInvariant = __webpack_require__(8);
1728
-
1729
- var ReactNoopUpdateQueue = __webpack_require__(20);
1730
-
1731
- var canDefineProperty = __webpack_require__(14);
1732
- var emptyObject = __webpack_require__(21);
1733
- var invariant = __webpack_require__(9);
1734
- var warning = __webpack_require__(12);
1735
-
1736
- /**
1737
- * Base class helpers for the updating state of a component.
1738
- */
1739
- function ReactComponent(props, context, updater) {
1740
- this.props = props;
1741
- this.context = context;
1742
- this.refs = emptyObject;
1743
- // We initialize the default updater but the real one gets injected by the
1744
- // renderer.
1745
- this.updater = updater || ReactNoopUpdateQueue;
1746
- }
1747
-
1748
- ReactComponent.prototype.isReactComponent = {};
1749
-
1750
- /**
1751
- * Sets a subset of the state. Always use this to mutate
1752
- * state. You should treat `this.state` as immutable.
1753
- *
1754
- * There is no guarantee that `this.state` will be immediately updated, so
1755
- * accessing `this.state` after calling this method may return the old value.
1756
- *
1757
- * There is no guarantee that calls to `setState` will run synchronously,
1758
- * as they may eventually be batched together. You can provide an optional
1759
- * callback that will be executed when the call to setState is actually
1760
- * completed.
1761
- *
1762
- * When a function is provided to setState, it will be called at some point in
1763
- * the future (not synchronously). It will be called with the up to date
1764
- * component arguments (state, props, context). These values can be different
1765
- * from this.* because your function may be called after receiveProps but before
1766
- * shouldComponentUpdate, and this new state, props, and context will not yet be
1767
- * assigned to this.
1768
- *
1769
- * @param {object|function} partialState Next partial state or function to
1770
- * produce next partial state to be merged with current state.
1771
- * @param {?function} callback Called after state is updated.
1772
- * @final
1773
- * @protected
1774
- */
1775
- ReactComponent.prototype.setState = function (partialState, callback) {
1776
- !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== '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;
1777
- this.updater.enqueueSetState(this, partialState);
1778
- if (callback) {
1779
- this.updater.enqueueCallback(this, callback, 'setState');
1780
- }
1781
- };
1782
-
1783
- /**
1784
- * Forces an update. This should only be invoked when it is known with
1785
- * certainty that we are **not** in a DOM transaction.
1786
- *
1787
- * You may want to call this when you know that some deeper aspect of the
1788
- * component's state has changed but `setState` was not called.
1789
- *
1790
- * This will not invoke `shouldComponentUpdate`, but it will invoke
1791
- * `componentWillUpdate` and `componentDidUpdate`.
1792
- *
1793
- * @param {?function} callback Called after update is complete.
1794
- * @final
1795
- * @protected
1796
- */
1797
- ReactComponent.prototype.forceUpdate = function (callback) {
1798
- this.updater.enqueueForceUpdate(this);
1799
- if (callback) {
1800
- this.updater.enqueueCallback(this, callback, 'forceUpdate');
1801
- }
1802
- };
1803
-
1804
- /**
1805
- * Deprecated APIs. These APIs used to exist on classic React classes but since
1806
- * we would like to deprecate them, we're not going to move them over to this
1807
- * modern base class. Instead, we define a getter that warns if it's accessed.
1808
- */
1809
- if (process.env.NODE_ENV !== 'production') {
1810
- var deprecatedAPIs = {
1811
- isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
1812
- replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
1813
- };
1814
- var defineDeprecationWarning = function (methodName, info) {
1815
- if (canDefineProperty) {
1816
- Object.defineProperty(ReactComponent.prototype, methodName, {
1817
- get: function () {
1818
- process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;
1819
- return undefined;
1820
- }
1821
- });
1822
- }
1823
- };
1824
- for (var fnName in deprecatedAPIs) {
1825
- if (deprecatedAPIs.hasOwnProperty(fnName)) {
1826
- defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
1827
- }
1828
- }
1829
- }
1830
-
1831
- module.exports = ReactComponent;
1832
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1833
-
1834
- /***/ },
1835
- /* 20 */
1836
- /***/ function(module, exports, __webpack_require__) {
1837
-
1838
- /* WEBPACK VAR INJECTION */(function(process) {/**
1839
- * Copyright 2015-present, Facebook, Inc.
1840
- * All rights reserved.
1841
- *
1842
- * This source code is licensed under the BSD-style license found in the
1843
- * LICENSE file in the root directory of this source tree. An additional grant
1844
- * of patent rights can be found in the PATENTS file in the same directory.
1845
- *
1846
- */
1847
-
1848
- 'use strict';
1849
-
1850
- var warning = __webpack_require__(12);
1851
-
1852
- function warnNoop(publicInstance, callerName) {
1853
- if (process.env.NODE_ENV !== 'production') {
1854
- var constructor = publicInstance.constructor;
1855
- process.env.NODE_ENV !== '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;
1856
- }
1857
- }
1858
-
1859
- /**
1860
- * This is the abstract API for an update queue.
1861
- */
1862
- var ReactNoopUpdateQueue = {
1863
-
1864
- /**
1865
- * Checks whether or not this composite component is mounted.
1866
- * @param {ReactClass} publicInstance The instance we want to test.
1867
- * @return {boolean} True if mounted, false otherwise.
1868
- * @protected
1869
- * @final
1870
- */
1871
- isMounted: function (publicInstance) {
1872
- return false;
1873
- },
1874
-
1875
- /**
1876
- * Enqueue a callback that will be executed after all the pending updates
1877
- * have processed.
1878
- *
1879
- * @param {ReactClass} publicInstance The instance to use as `this` context.
1880
- * @param {?function} callback Called after state is updated.
1881
- * @internal
1882
- */
1883
- enqueueCallback: function (publicInstance, callback) {},
1884
-
1885
- /**
1886
- * Forces an update. This should only be invoked when it is known with
1887
- * certainty that we are **not** in a DOM transaction.
1888
- *
1889
- * You may want to call this when you know that some deeper aspect of the
1890
- * component's state has changed but `setState` was not called.
1891
- *
1892
- * This will not invoke `shouldComponentUpdate`, but it will invoke
1893
- * `componentWillUpdate` and `componentDidUpdate`.
1894
- *
1895
- * @param {ReactClass} publicInstance The instance that should rerender.
1896
- * @internal
1897
- */
1898
- enqueueForceUpdate: function (publicInstance) {
1899
- warnNoop(publicInstance, 'forceUpdate');
1900
- },
1901
-
1902
- /**
1903
- * Replaces all of the state. Always use this or `setState` to mutate state.
1904
- * You should treat `this.state` as immutable.
1905
- *
1906
- * There is no guarantee that `this.state` will be immediately updated, so
1907
- * accessing `this.state` after calling this method may return the old value.
1908
- *
1909
- * @param {ReactClass} publicInstance The instance that should rerender.
1910
- * @param {object} completeState Next state.
1911
- * @internal
1912
- */
1913
- enqueueReplaceState: function (publicInstance, completeState) {
1914
- warnNoop(publicInstance, 'replaceState');
1915
- },
1916
-
1917
- /**
1918
- * Sets a subset of the state. This only exists because _pendingState is
1919
- * internal. This provides a merging strategy that is not available to deep
1920
- * properties which is confusing. TODO: Expose pendingState or don't use it
1921
- * during the merge.
1922
- *
1923
- * @param {ReactClass} publicInstance The instance that should rerender.
1924
- * @param {object} partialState Next partial state to be merged with state.
1925
- * @internal
1926
- */
1927
- enqueueSetState: function (publicInstance, partialState) {
1928
- warnNoop(publicInstance, 'setState');
1929
- }
1930
- };
1931
-
1932
- module.exports = ReactNoopUpdateQueue;
1933
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1934
-
1935
- /***/ },
1936
- /* 21 */
1937
- /***/ function(module, exports, __webpack_require__) {
1938
-
1939
- /* WEBPACK VAR INJECTION */(function(process) {/**
1940
- * Copyright (c) 2013-present, Facebook, Inc.
1941
- * All rights reserved.
1942
- *
1943
- * This source code is licensed under the BSD-style license found in the
1944
- * LICENSE file in the root directory of this source tree. An additional grant
1945
- * of patent rights can be found in the PATENTS file in the same directory.
1946
- *
1947
- */
1948
-
1949
- 'use strict';
1950
-
1951
- var emptyObject = {};
1952
-
1953
- if (process.env.NODE_ENV !== 'production') {
1954
- Object.freeze(emptyObject);
1955
- }
1956
-
1957
- module.exports = emptyObject;
1958
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
1959
-
1960
- /***/ },
1961
- /* 22 */
1962
- /***/ function(module, exports, __webpack_require__) {
1963
-
1964
- /**
1965
- * Copyright 2013-present, Facebook, Inc.
1966
- * All rights reserved.
1967
- *
1968
- * This source code is licensed under the BSD-style license found in the
1969
- * LICENSE file in the root directory of this source tree. An additional grant
1970
- * of patent rights can be found in the PATENTS file in the same directory.
1971
- *
1972
- */
1973
-
1974
- 'use strict';
1975
-
1976
- var _assign = __webpack_require__(5);
1977
-
1978
- var ReactComponent = __webpack_require__(19);
1979
- var ReactNoopUpdateQueue = __webpack_require__(20);
1980
-
1981
- var emptyObject = __webpack_require__(21);
1982
-
1983
- /**
1984
- * Base class helpers for the updating state of a component.
1985
- */
1986
- function ReactPureComponent(props, context, updater) {
1987
- // Duplicated from ReactComponent.
1988
- this.props = props;
1989
- this.context = context;
1990
- this.refs = emptyObject;
1991
- // We initialize the default updater but the real one gets injected by the
1992
- // renderer.
1993
- this.updater = updater || ReactNoopUpdateQueue;
1994
- }
1995
-
1996
- function ComponentDummy() {}
1997
- ComponentDummy.prototype = ReactComponent.prototype;
1998
- ReactPureComponent.prototype = new ComponentDummy();
1999
- ReactPureComponent.prototype.constructor = ReactPureComponent;
2000
- // Avoid an extra prototype jump for these methods.
2001
- _assign(ReactPureComponent.prototype, ReactComponent.prototype);
2002
- ReactPureComponent.prototype.isPureReactComponent = true;
2003
-
2004
- module.exports = ReactPureComponent;
2005
-
2006
- /***/ },
2007
- /* 23 */
2008
- /***/ function(module, exports, __webpack_require__) {
2009
-
2010
- /* WEBPACK VAR INJECTION */(function(process) {/**
2011
- * Copyright 2013-present, Facebook, Inc.
2012
- * All rights reserved.
2013
- *
2014
- * This source code is licensed under the BSD-style license found in the
2015
- * LICENSE file in the root directory of this source tree. An additional grant
2016
- * of patent rights can be found in the PATENTS file in the same directory.
2017
- *
2018
- */
2019
-
2020
- 'use strict';
2021
-
2022
- var _prodInvariant = __webpack_require__(8),
2023
- _assign = __webpack_require__(5);
2024
-
2025
- var ReactComponent = __webpack_require__(19);
2026
- var ReactElement = __webpack_require__(10);
2027
- var ReactPropTypeLocationNames = __webpack_require__(24);
2028
- var ReactNoopUpdateQueue = __webpack_require__(20);
2029
-
2030
- var emptyObject = __webpack_require__(21);
2031
- var invariant = __webpack_require__(9);
2032
- var warning = __webpack_require__(12);
2033
-
2034
- var MIXINS_KEY = 'mixins';
2035
-
2036
- // Helper function to allow the creation of anonymous functions which do not
2037
- // have .name set to the name of the variable being assigned to.
2038
- function identity(fn) {
2039
- return fn;
2040
- }
2041
-
2042
- /**
2043
- * Policies that describe methods in `ReactClassInterface`.
2044
- */
2045
-
2046
-
2047
- var injectedMixins = [];
2048
-
2049
- /**
2050
- * Composite components are higher-level components that compose other composite
2051
- * or host components.
2052
- *
2053
- * To create a new type of `ReactClass`, pass a specification of
2054
- * your new class to `React.createClass`. The only requirement of your class
2055
- * specification is that you implement a `render` method.
2056
- *
2057
- * var MyComponent = React.createClass({
2058
- * render: function() {
2059
- * return <div>Hello World</div>;
2060
- * }
2061
- * });
2062
- *
2063
- * The class specification supports a specific protocol of methods that have
2064
- * special meaning (e.g. `render`). See `ReactClassInterface` for
2065
- * more the comprehensive protocol. Any other properties and methods in the
2066
- * class specification will be available on the prototype.
2067
- *
2068
- * @interface ReactClassInterface
2069
- * @internal
2070
- */
2071
- var ReactClassInterface = {
2072
-
2073
- /**
2074
- * An array of Mixin objects to include when defining your component.
2075
- *
2076
- * @type {array}
2077
- * @optional
2078
- */
2079
- mixins: 'DEFINE_MANY',
2080
-
2081
- /**
2082
- * An object containing properties and methods that should be defined on
2083
- * the component's constructor instead of its prototype (static methods).
2084
- *
2085
- * @type {object}
2086
- * @optional
2087
- */
2088
- statics: 'DEFINE_MANY',
2089
-
2090
- /**
2091
- * Definition of prop types for this component.
2092
- *
2093
- * @type {object}
2094
- * @optional
2095
- */
2096
- propTypes: 'DEFINE_MANY',
2097
-
2098
- /**
2099
- * Definition of context types for this component.
2100
- *
2101
- * @type {object}
2102
- * @optional
2103
- */
2104
- contextTypes: 'DEFINE_MANY',
2105
-
2106
- /**
2107
- * Definition of context types this component sets for its children.
2108
- *
2109
- * @type {object}
2110
- * @optional
2111
- */
2112
- childContextTypes: 'DEFINE_MANY',
2113
-
2114
- // ==== Definition methods ====
2115
-
2116
- /**
2117
- * Invoked when the component is mounted. Values in the mapping will be set on
2118
- * `this.props` if that prop is not specified (i.e. using an `in` check).
2119
- *
2120
- * This method is invoked before `getInitialState` and therefore cannot rely
2121
- * on `this.state` or use `this.setState`.
2122
- *
2123
- * @return {object}
2124
- * @optional
2125
- */
2126
- getDefaultProps: 'DEFINE_MANY_MERGED',
2127
-
2128
- /**
2129
- * Invoked once before the component is mounted. The return value will be used
2130
- * as the initial value of `this.state`.
2131
- *
2132
- * getInitialState: function() {
2133
- * return {
2134
- * isOn: false,
2135
- * fooBaz: new BazFoo()
2136
- * }
2137
- * }
2138
- *
2139
- * @return {object}
2140
- * @optional
2141
- */
2142
- getInitialState: 'DEFINE_MANY_MERGED',
2143
-
2144
- /**
2145
- * @return {object}
2146
- * @optional
2147
- */
2148
- getChildContext: 'DEFINE_MANY_MERGED',
2149
-
2150
- /**
2151
- * Uses props from `this.props` and state from `this.state` to render the
2152
- * structure of the component.
2153
- *
2154
- * No guarantees are made about when or how often this method is invoked, so
2155
- * it must not have side effects.
2156
- *
2157
- * render: function() {
2158
- * var name = this.props.name;
2159
- * return <div>Hello, {name}!</div>;
2160
- * }
2161
- *
2162
- * @return {ReactComponent}
2163
- * @nosideeffects
2164
- * @required
2165
- */
2166
- render: 'DEFINE_ONCE',
2167
-
2168
- // ==== Delegate methods ====
2169
-
2170
- /**
2171
- * Invoked when the component is initially created and about to be mounted.
2172
- * This may have side effects, but any external subscriptions or data created
2173
- * by this method must be cleaned up in `componentWillUnmount`.
2174
- *
2175
- * @optional
2176
- */
2177
- componentWillMount: 'DEFINE_MANY',
2178
-
2179
- /**
2180
- * Invoked when the component has been mounted and has a DOM representation.
2181
- * However, there is no guarantee that the DOM node is in the document.
2182
- *
2183
- * Use this as an opportunity to operate on the DOM when the component has
2184
- * been mounted (initialized and rendered) for the first time.
2185
- *
2186
- * @param {DOMElement} rootNode DOM element representing the component.
2187
- * @optional
2188
- */
2189
- componentDidMount: 'DEFINE_MANY',
2190
-
2191
- /**
2192
- * Invoked before the component receives new props.
2193
- *
2194
- * Use this as an opportunity to react to a prop transition by updating the
2195
- * state using `this.setState`. Current props are accessed via `this.props`.
2196
- *
2197
- * componentWillReceiveProps: function(nextProps, nextContext) {
2198
- * this.setState({
2199
- * likesIncreasing: nextProps.likeCount > this.props.likeCount
2200
- * });
2201
- * }
2202
- *
2203
- * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop
2204
- * transition may cause a state change, but the opposite is not true. If you
2205
- * need it, you are probably looking for `componentWillUpdate`.
2206
- *
2207
- * @param {object} nextProps
2208
- * @optional
2209
- */
2210
- componentWillReceiveProps: 'DEFINE_MANY',
2211
-
2212
- /**
2213
- * Invoked while deciding if the component should be updated as a result of
2214
- * receiving new props, state and/or context.
2215
- *
2216
- * Use this as an opportunity to `return false` when you're certain that the
2217
- * transition to the new props/state/context will not require a component
2218
- * update.
2219
- *
2220
- * shouldComponentUpdate: function(nextProps, nextState, nextContext) {
2221
- * return !equal(nextProps, this.props) ||
2222
- * !equal(nextState, this.state) ||
2223
- * !equal(nextContext, this.context);
2224
- * }
2225
- *
2226
- * @param {object} nextProps
2227
- * @param {?object} nextState
2228
- * @param {?object} nextContext
2229
- * @return {boolean} True if the component should update.
2230
- * @optional
2231
- */
2232
- shouldComponentUpdate: 'DEFINE_ONCE',
2233
-
2234
- /**
2235
- * Invoked when the component is about to update due to a transition from
2236
- * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`
2237
- * and `nextContext`.
2238
- *
2239
- * Use this as an opportunity to perform preparation before an update occurs.
2240
- *
2241
- * NOTE: You **cannot** use `this.setState()` in this method.
2242
- *
2243
- * @param {object} nextProps
2244
- * @param {?object} nextState
2245
- * @param {?object} nextContext
2246
- * @param {ReactReconcileTransaction} transaction
2247
- * @optional
2248
- */
2249
- componentWillUpdate: 'DEFINE_MANY',
2250
-
2251
- /**
2252
- * Invoked when the component's DOM representation has been updated.
2253
- *
2254
- * Use this as an opportunity to operate on the DOM when the component has
2255
- * been updated.
2256
- *
2257
- * @param {object} prevProps
2258
- * @param {?object} prevState
2259
- * @param {?object} prevContext
2260
- * @param {DOMElement} rootNode DOM element representing the component.
2261
- * @optional
2262
- */
2263
- componentDidUpdate: 'DEFINE_MANY',
2264
-
2265
- /**
2266
- * Invoked when the component is about to be removed from its parent and have
2267
- * its DOM representation destroyed.
2268
- *
2269
- * Use this as an opportunity to deallocate any external resources.
2270
- *
2271
- * NOTE: There is no `componentDidUnmount` since your component will have been
2272
- * destroyed by that point.
2273
- *
2274
- * @optional
2275
- */
2276
- componentWillUnmount: 'DEFINE_MANY',
2277
-
2278
- // ==== Advanced methods ====
2279
-
2280
- /**
2281
- * Updates the component's currently mounted DOM representation.
2282
- *
2283
- * By default, this implements React's rendering and reconciliation algorithm.
2284
- * Sophisticated clients may wish to override this.
2285
- *
2286
- * @param {ReactReconcileTransaction} transaction
2287
- * @internal
2288
- * @overridable
2289
- */
2290
- updateComponent: 'OVERRIDE_BASE'
2291
-
2292
- };
2293
-
2294
- /**
2295
- * Mapping from class specification keys to special processing functions.
2296
- *
2297
- * Although these are declared like instance properties in the specification
2298
- * when defining classes using `React.createClass`, they are actually static
2299
- * and are accessible on the constructor instead of the prototype. Despite
2300
- * being static, they must be defined outside of the "statics" key under
2301
- * which all other static methods are defined.
2302
- */
2303
- var RESERVED_SPEC_KEYS = {
2304
- displayName: function (Constructor, displayName) {
2305
- Constructor.displayName = displayName;
2306
- },
2307
- mixins: function (Constructor, mixins) {
2308
- if (mixins) {
2309
- for (var i = 0; i < mixins.length; i++) {
2310
- mixSpecIntoComponent(Constructor, mixins[i]);
2311
- }
2312
- }
2313
- },
2314
- childContextTypes: function (Constructor, childContextTypes) {
2315
- if (process.env.NODE_ENV !== 'production') {
2316
- validateTypeDef(Constructor, childContextTypes, 'childContext');
2317
- }
2318
- Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);
2319
- },
2320
- contextTypes: function (Constructor, contextTypes) {
2321
- if (process.env.NODE_ENV !== 'production') {
2322
- validateTypeDef(Constructor, contextTypes, 'context');
2323
- }
2324
- Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);
2325
- },
2326
- /**
2327
- * Special case getDefaultProps which should move into statics but requires
2328
- * automatic merging.
2329
- */
2330
- getDefaultProps: function (Constructor, getDefaultProps) {
2331
- if (Constructor.getDefaultProps) {
2332
- Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);
2333
- } else {
2334
- Constructor.getDefaultProps = getDefaultProps;
2335
- }
2336
- },
2337
- propTypes: function (Constructor, propTypes) {
2338
- if (process.env.NODE_ENV !== 'production') {
2339
- validateTypeDef(Constructor, propTypes, 'prop');
2340
- }
2341
- Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);
2342
- },
2343
- statics: function (Constructor, statics) {
2344
- mixStaticSpecIntoComponent(Constructor, statics);
2345
- },
2346
- autobind: function () {} };
2347
-
2348
- function validateTypeDef(Constructor, typeDef, location) {
2349
- for (var propName in typeDef) {
2350
- if (typeDef.hasOwnProperty(propName)) {
2351
- // use a warning instead of an invariant so components
2352
- // don't show up in prod but only in __DEV__
2353
- process.env.NODE_ENV !== '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;
2354
- }
2355
- }
2356
- }
2357
-
2358
- function validateMethodOverride(isAlreadyDefined, name) {
2359
- var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;
2360
-
2361
- // Disallow overriding of base class methods unless explicitly allowed.
2362
- if (ReactClassMixin.hasOwnProperty(name)) {
2363
- !(specPolicy === 'OVERRIDE_BASE') ? process.env.NODE_ENV !== '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;
2364
- }
2365
-
2366
- // Disallow defining methods more than once unless explicitly allowed.
2367
- if (isAlreadyDefined) {
2368
- !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? process.env.NODE_ENV !== '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;
2369
- }
2370
- }
2371
-
2372
- /**
2373
- * Mixin helper which handles policy validation and reserved
2374
- * specification keys when building React classes.
2375
- */
2376
- function mixSpecIntoComponent(Constructor, spec) {
2377
- if (!spec) {
2378
- if (process.env.NODE_ENV !== 'production') {
2379
- var typeofSpec = typeof spec;
2380
- var isMixinValid = typeofSpec === 'object' && spec !== null;
2381
-
2382
- process.env.NODE_ENV !== '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;
2383
- }
2384
-
2385
- return;
2386
- }
2387
-
2388
- !(typeof spec !== 'function') ? process.env.NODE_ENV !== '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;
2389
- !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;
2390
-
2391
- var proto = Constructor.prototype;
2392
- var autoBindPairs = proto.__reactAutoBindPairs;
2393
-
2394
- // By handling mixins before any other properties, we ensure the same
2395
- // chaining order is applied to methods with DEFINE_MANY policy, whether
2396
- // mixins are listed before or after these methods in the spec.
2397
- if (spec.hasOwnProperty(MIXINS_KEY)) {
2398
- RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);
2399
- }
2400
-
2401
- for (var name in spec) {
2402
- if (!spec.hasOwnProperty(name)) {
2403
- continue;
2404
- }
2405
-
2406
- if (name === MIXINS_KEY) {
2407
- // We have already handled mixins in a special case above.
2408
- continue;
2409
- }
2410
-
2411
- var property = spec[name];
2412
- var isAlreadyDefined = proto.hasOwnProperty(name);
2413
- validateMethodOverride(isAlreadyDefined, name);
2414
-
2415
- if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {
2416
- RESERVED_SPEC_KEYS[name](Constructor, property);
2417
- } else {
2418
- // Setup methods on prototype:
2419
- // The following member methods should not be automatically bound:
2420
- // 1. Expected ReactClass methods (in the "interface").
2421
- // 2. Overridden methods (that were mixed in).
2422
- var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);
2423
- var isFunction = typeof property === 'function';
2424
- var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;
2425
-
2426
- if (shouldAutoBind) {
2427
- autoBindPairs.push(name, property);
2428
- proto[name] = property;
2429
- } else {
2430
- if (isAlreadyDefined) {
2431
- var specPolicy = ReactClassInterface[name];
2432
-
2433
- // These cases should already be caught by validateMethodOverride.
2434
- !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;
2435
-
2436
- // For methods which are defined more than once, call the existing
2437
- // methods before calling the new property, merging if appropriate.
2438
- if (specPolicy === 'DEFINE_MANY_MERGED') {
2439
- proto[name] = createMergedResultFunction(proto[name], property);
2440
- } else if (specPolicy === 'DEFINE_MANY') {
2441
- proto[name] = createChainedFunction(proto[name], property);
2442
- }
2443
- } else {
2444
- proto[name] = property;
2445
- if (process.env.NODE_ENV !== 'production') {
2446
- // Add verbose displayName to the function, which helps when looking
2447
- // at profiling tools.
2448
- if (typeof property === 'function' && spec.displayName) {
2449
- proto[name].displayName = spec.displayName + '_' + name;
2450
- }
2451
- }
2452
- }
2453
- }
2454
- }
2455
- }
2456
- }
2457
-
2458
- function mixStaticSpecIntoComponent(Constructor, statics) {
2459
- if (!statics) {
2460
- return;
2461
- }
2462
- for (var name in statics) {
2463
- var property = statics[name];
2464
- if (!statics.hasOwnProperty(name)) {
2465
- continue;
2466
- }
2467
-
2468
- var isReserved = name in RESERVED_SPEC_KEYS;
2469
- !!isReserved ? process.env.NODE_ENV !== '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;
2470
-
2471
- var isInherited = name in Constructor;
2472
- !!isInherited ? process.env.NODE_ENV !== '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;
2473
- Constructor[name] = property;
2474
- }
2475
- }
2476
-
2477
- /**
2478
- * Merge two objects, but throw if both contain the same key.
2479
- *
2480
- * @param {object} one The first object, which is mutated.
2481
- * @param {object} two The second object
2482
- * @return {object} one after it has been mutated to contain everything in two.
2483
- */
2484
- function mergeIntoWithNoDuplicateKeys(one, two) {
2485
- !(one && two && typeof one === 'object' && typeof two === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;
2486
-
2487
- for (var key in two) {
2488
- if (two.hasOwnProperty(key)) {
2489
- !(one[key] === undefined) ? process.env.NODE_ENV !== '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;
2490
- one[key] = two[key];
2491
- }
2492
- }
2493
- return one;
2494
- }
2495
-
2496
- /**
2497
- * Creates a function that invokes two functions and merges their return values.
2498
- *
2499
- * @param {function} one Function to invoke first.
2500
- * @param {function} two Function to invoke second.
2501
- * @return {function} Function that invokes the two argument functions.
2502
- * @private
2503
- */
2504
- function createMergedResultFunction(one, two) {
2505
- return function mergedResult() {
2506
- var a = one.apply(this, arguments);
2507
- var b = two.apply(this, arguments);
2508
- if (a == null) {
2509
- return b;
2510
- } else if (b == null) {
2511
- return a;
2512
- }
2513
- var c = {};
2514
- mergeIntoWithNoDuplicateKeys(c, a);
2515
- mergeIntoWithNoDuplicateKeys(c, b);
2516
- return c;
2517
- };
2518
- }
2519
-
2520
- /**
2521
- * Creates a function that invokes two functions and ignores their return vales.
2522
- *
2523
- * @param {function} one Function to invoke first.
2524
- * @param {function} two Function to invoke second.
2525
- * @return {function} Function that invokes the two argument functions.
2526
- * @private
2527
- */
2528
- function createChainedFunction(one, two) {
2529
- return function chainedFunction() {
2530
- one.apply(this, arguments);
2531
- two.apply(this, arguments);
2532
- };
2533
- }
2534
-
2535
- /**
2536
- * Binds a method to the component.
2537
- *
2538
- * @param {object} component Component whose method is going to be bound.
2539
- * @param {function} method Method to be bound.
2540
- * @return {function} The bound method.
2541
- */
2542
- function bindAutoBindMethod(component, method) {
2543
- var boundMethod = method.bind(component);
2544
- if (process.env.NODE_ENV !== 'production') {
2545
- boundMethod.__reactBoundContext = component;
2546
- boundMethod.__reactBoundMethod = method;
2547
- boundMethod.__reactBoundArguments = null;
2548
- var componentName = component.constructor.displayName;
2549
- var _bind = boundMethod.bind;
2550
- boundMethod.bind = function (newThis) {
2551
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2552
- args[_key - 1] = arguments[_key];
2553
- }
2554
-
2555
- // User is trying to bind() an autobound method; we effectively will
2556
- // ignore the value of "this" that the user is trying to use, so
2557
- // let's warn.
2558
- if (newThis !== component && newThis !== null) {
2559
- process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;
2560
- } else if (!args.length) {
2561
- process.env.NODE_ENV !== '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;
2562
- return boundMethod;
2563
- }
2564
- var reboundMethod = _bind.apply(boundMethod, arguments);
2565
- reboundMethod.__reactBoundContext = component;
2566
- reboundMethod.__reactBoundMethod = method;
2567
- reboundMethod.__reactBoundArguments = args;
2568
- return reboundMethod;
2569
- };
2570
- }
2571
- return boundMethod;
2572
- }
2573
-
2574
- /**
2575
- * Binds all auto-bound methods in a component.
2576
- *
2577
- * @param {object} component Component whose method is going to be bound.
2578
- */
2579
- function bindAutoBindMethods(component) {
2580
- var pairs = component.__reactAutoBindPairs;
2581
- for (var i = 0; i < pairs.length; i += 2) {
2582
- var autoBindKey = pairs[i];
2583
- var method = pairs[i + 1];
2584
- component[autoBindKey] = bindAutoBindMethod(component, method);
2585
- }
2586
- }
2587
-
2588
- /**
2589
- * Add more to the ReactClass base class. These are all legacy features and
2590
- * therefore not already part of the modern ReactComponent.
2591
- */
2592
- var ReactClassMixin = {
2593
-
2594
- /**
2595
- * TODO: This will be deprecated because state should always keep a consistent
2596
- * type signature and the only use case for this, is to avoid that.
2597
- */
2598
- replaceState: function (newState, callback) {
2599
- this.updater.enqueueReplaceState(this, newState);
2600
- if (callback) {
2601
- this.updater.enqueueCallback(this, callback, 'replaceState');
2602
- }
2603
- },
2604
-
2605
- /**
2606
- * Checks whether or not this composite component is mounted.
2607
- * @return {boolean} True if mounted, false otherwise.
2608
- * @protected
2609
- * @final
2610
- */
2611
- isMounted: function () {
2612
- return this.updater.isMounted(this);
2613
- }
2614
- };
2615
-
2616
- var ReactClassComponent = function () {};
2617
- _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);
2618
-
2619
- /**
2620
- * Module for creating composite components.
2621
- *
2622
- * @class ReactClass
2623
- */
2624
- var ReactClass = {
2625
-
2626
- /**
2627
- * Creates a composite component class given a class specification.
2628
- * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass
2629
- *
2630
- * @param {object} spec Class specification (which must define `render`).
2631
- * @return {function} Component constructor function.
2632
- * @public
2633
- */
2634
- createClass: function (spec) {
2635
- // To keep our warnings more understandable, we'll use a little hack here to
2636
- // ensure that Constructor.name !== 'Constructor'. This makes sure we don't
2637
- // unnecessarily identify a class without displayName as 'Constructor'.
2638
- var Constructor = identity(function (props, context, updater) {
2639
- // This constructor gets overridden by mocks. The argument is used
2640
- // by mocks to assert on what gets mounted.
2641
-
2642
- if (process.env.NODE_ENV !== 'production') {
2643
- process.env.NODE_ENV !== '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;
2644
- }
2645
-
2646
- // Wire up auto-binding
2647
- if (this.__reactAutoBindPairs.length) {
2648
- bindAutoBindMethods(this);
2649
- }
2650
-
2651
- this.props = props;
2652
- this.context = context;
2653
- this.refs = emptyObject;
2654
- this.updater = updater || ReactNoopUpdateQueue;
2655
-
2656
- this.state = null;
2657
-
2658
- // ReactClasses doesn't have constructors. Instead, they use the
2659
- // getInitialState and componentWillMount methods for initialization.
2660
-
2661
- var initialState = this.getInitialState ? this.getInitialState() : null;
2662
- if (process.env.NODE_ENV !== 'production') {
2663
- // We allow auto-mocks to proceed as if they're returning null.
2664
- if (initialState === undefined && this.getInitialState._isMockFunction) {
2665
- // This is probably bad practice. Consider warning here and
2666
- // deprecating this convenience.
2667
- initialState = null;
2668
- }
2669
- }
2670
- !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;
2671
-
2672
- this.state = initialState;
2673
- });
2674
- Constructor.prototype = new ReactClassComponent();
2675
- Constructor.prototype.constructor = Constructor;
2676
- Constructor.prototype.__reactAutoBindPairs = [];
2677
-
2678
- injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));
2679
-
2680
- mixSpecIntoComponent(Constructor, spec);
2681
-
2682
- // Initialize the defaultProps property after all mixins have been merged.
2683
- if (Constructor.getDefaultProps) {
2684
- Constructor.defaultProps = Constructor.getDefaultProps();
2685
- }
2686
-
2687
- if (process.env.NODE_ENV !== 'production') {
2688
- // This is a tag to indicate that the use of these method names is ok,
2689
- // since it's used with createClass. If it's not, then it's likely a
2690
- // mistake so we'll warn you to use the static property, property
2691
- // initializer or constructor respectively.
2692
- if (Constructor.getDefaultProps) {
2693
- Constructor.getDefaultProps.isReactClassApproved = {};
2694
- }
2695
- if (Constructor.prototype.getInitialState) {
2696
- Constructor.prototype.getInitialState.isReactClassApproved = {};
2697
- }
2698
- }
2699
-
2700
- !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;
2701
-
2702
- if (process.env.NODE_ENV !== 'production') {
2703
- process.env.NODE_ENV !== '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;
2704
- process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;
2705
- }
2706
-
2707
- // Reduce time spent doing lookups by setting these on the prototype.
2708
- for (var methodName in ReactClassInterface) {
2709
- if (!Constructor.prototype[methodName]) {
2710
- Constructor.prototype[methodName] = null;
2711
- }
2712
- }
2713
-
2714
- return Constructor;
2715
- },
2716
-
2717
- injection: {
2718
- injectMixin: function (mixin) {
2719
- injectedMixins.push(mixin);
2720
- }
2721
- }
2722
-
2723
- };
2724
-
2725
- module.exports = ReactClass;
2726
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
2727
-
2728
- /***/ },
2729
- /* 24 */
2730
- /***/ function(module, exports, __webpack_require__) {
2731
-
2732
- /* WEBPACK VAR INJECTION */(function(process) {/**
2733
- * Copyright 2013-present, Facebook, Inc.
2734
- * All rights reserved.
2735
- *
2736
- * This source code is licensed under the BSD-style license found in the
2737
- * LICENSE file in the root directory of this source tree. An additional grant
2738
- * of patent rights can be found in the PATENTS file in the same directory.
2739
- *
2740
- *
2741
- */
2742
-
2743
- 'use strict';
2744
-
2745
- var ReactPropTypeLocationNames = {};
2746
-
2747
- if (process.env.NODE_ENV !== 'production') {
2748
- ReactPropTypeLocationNames = {
2749
- prop: 'prop',
2750
- context: 'context',
2751
- childContext: 'child context'
2752
- };
2753
- }
2754
-
2755
- module.exports = ReactPropTypeLocationNames;
2756
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
2757
-
2758
- /***/ },
2759
- /* 25 */
2760
- /***/ function(module, exports, __webpack_require__) {
2761
-
2762
- /* WEBPACK VAR INJECTION */(function(process) {/**
2763
- * Copyright 2013-present, Facebook, Inc.
2764
- * All rights reserved.
2765
- *
2766
- * This source code is licensed under the BSD-style license found in the
2767
- * LICENSE file in the root directory of this source tree. An additional grant
2768
- * of patent rights can be found in the PATENTS file in the same directory.
2769
- *
2770
- */
2771
-
2772
- 'use strict';
2773
-
2774
- var ReactElement = __webpack_require__(10);
2775
-
2776
- /**
2777
- * Create a factory that creates HTML tag elements.
2778
- *
2779
- * @private
2780
- */
2781
- var createDOMFactory = ReactElement.createFactory;
2782
- if (process.env.NODE_ENV !== 'production') {
2783
- var ReactElementValidator = __webpack_require__(26);
2784
- createDOMFactory = ReactElementValidator.createFactory;
2785
- }
2786
-
2787
- /**
2788
- * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.
2789
- * This is also accessible via `React.DOM`.
2790
- *
2791
- * @public
2792
- */
2793
- var ReactDOMFactories = {
2794
- a: createDOMFactory('a'),
2795
- abbr: createDOMFactory('abbr'),
2796
- address: createDOMFactory('address'),
2797
- area: createDOMFactory('area'),
2798
- article: createDOMFactory('article'),
2799
- aside: createDOMFactory('aside'),
2800
- audio: createDOMFactory('audio'),
2801
- b: createDOMFactory('b'),
2802
- base: createDOMFactory('base'),
2803
- bdi: createDOMFactory('bdi'),
2804
- bdo: createDOMFactory('bdo'),
2805
- big: createDOMFactory('big'),
2806
- blockquote: createDOMFactory('blockquote'),
2807
- body: createDOMFactory('body'),
2808
- br: createDOMFactory('br'),
2809
- button: createDOMFactory('button'),
2810
- canvas: createDOMFactory('canvas'),
2811
- caption: createDOMFactory('caption'),
2812
- cite: createDOMFactory('cite'),
2813
- code: createDOMFactory('code'),
2814
- col: createDOMFactory('col'),
2815
- colgroup: createDOMFactory('colgroup'),
2816
- data: createDOMFactory('data'),
2817
- datalist: createDOMFactory('datalist'),
2818
- dd: createDOMFactory('dd'),
2819
- del: createDOMFactory('del'),
2820
- details: createDOMFactory('details'),
2821
- dfn: createDOMFactory('dfn'),
2822
- dialog: createDOMFactory('dialog'),
2823
- div: createDOMFactory('div'),
2824
- dl: createDOMFactory('dl'),
2825
- dt: createDOMFactory('dt'),
2826
- em: createDOMFactory('em'),
2827
- embed: createDOMFactory('embed'),
2828
- fieldset: createDOMFactory('fieldset'),
2829
- figcaption: createDOMFactory('figcaption'),
2830
- figure: createDOMFactory('figure'),
2831
- footer: createDOMFactory('footer'),
2832
- form: createDOMFactory('form'),
2833
- h1: createDOMFactory('h1'),
2834
- h2: createDOMFactory('h2'),
2835
- h3: createDOMFactory('h3'),
2836
- h4: createDOMFactory('h4'),
2837
- h5: createDOMFactory('h5'),
2838
- h6: createDOMFactory('h6'),
2839
- head: createDOMFactory('head'),
2840
- header: createDOMFactory('header'),
2841
- hgroup: createDOMFactory('hgroup'),
2842
- hr: createDOMFactory('hr'),
2843
- html: createDOMFactory('html'),
2844
- i: createDOMFactory('i'),
2845
- iframe: createDOMFactory('iframe'),
2846
- img: createDOMFactory('img'),
2847
- input: createDOMFactory('input'),
2848
- ins: createDOMFactory('ins'),
2849
- kbd: createDOMFactory('kbd'),
2850
- keygen: createDOMFactory('keygen'),
2851
- label: createDOMFactory('label'),
2852
- legend: createDOMFactory('legend'),
2853
- li: createDOMFactory('li'),
2854
- link: createDOMFactory('link'),
2855
- main: createDOMFactory('main'),
2856
- map: createDOMFactory('map'),
2857
- mark: createDOMFactory('mark'),
2858
- menu: createDOMFactory('menu'),
2859
- menuitem: createDOMFactory('menuitem'),
2860
- meta: createDOMFactory('meta'),
2861
- meter: createDOMFactory('meter'),
2862
- nav: createDOMFactory('nav'),
2863
- noscript: createDOMFactory('noscript'),
2864
- object: createDOMFactory('object'),
2865
- ol: createDOMFactory('ol'),
2866
- optgroup: createDOMFactory('optgroup'),
2867
- option: createDOMFactory('option'),
2868
- output: createDOMFactory('output'),
2869
- p: createDOMFactory('p'),
2870
- param: createDOMFactory('param'),
2871
- picture: createDOMFactory('picture'),
2872
- pre: createDOMFactory('pre'),
2873
- progress: createDOMFactory('progress'),
2874
- q: createDOMFactory('q'),
2875
- rp: createDOMFactory('rp'),
2876
- rt: createDOMFactory('rt'),
2877
- ruby: createDOMFactory('ruby'),
2878
- s: createDOMFactory('s'),
2879
- samp: createDOMFactory('samp'),
2880
- script: createDOMFactory('script'),
2881
- section: createDOMFactory('section'),
2882
- select: createDOMFactory('select'),
2883
- small: createDOMFactory('small'),
2884
- source: createDOMFactory('source'),
2885
- span: createDOMFactory('span'),
2886
- strong: createDOMFactory('strong'),
2887
- style: createDOMFactory('style'),
2888
- sub: createDOMFactory('sub'),
2889
- summary: createDOMFactory('summary'),
2890
- sup: createDOMFactory('sup'),
2891
- table: createDOMFactory('table'),
2892
- tbody: createDOMFactory('tbody'),
2893
- td: createDOMFactory('td'),
2894
- textarea: createDOMFactory('textarea'),
2895
- tfoot: createDOMFactory('tfoot'),
2896
- th: createDOMFactory('th'),
2897
- thead: createDOMFactory('thead'),
2898
- time: createDOMFactory('time'),
2899
- title: createDOMFactory('title'),
2900
- tr: createDOMFactory('tr'),
2901
- track: createDOMFactory('track'),
2902
- u: createDOMFactory('u'),
2903
- ul: createDOMFactory('ul'),
2904
- 'var': createDOMFactory('var'),
2905
- video: createDOMFactory('video'),
2906
- wbr: createDOMFactory('wbr'),
2907
-
2908
- // SVG
2909
- circle: createDOMFactory('circle'),
2910
- clipPath: createDOMFactory('clipPath'),
2911
- defs: createDOMFactory('defs'),
2912
- ellipse: createDOMFactory('ellipse'),
2913
- g: createDOMFactory('g'),
2914
- image: createDOMFactory('image'),
2915
- line: createDOMFactory('line'),
2916
- linearGradient: createDOMFactory('linearGradient'),
2917
- mask: createDOMFactory('mask'),
2918
- path: createDOMFactory('path'),
2919
- pattern: createDOMFactory('pattern'),
2920
- polygon: createDOMFactory('polygon'),
2921
- polyline: createDOMFactory('polyline'),
2922
- radialGradient: createDOMFactory('radialGradient'),
2923
- rect: createDOMFactory('rect'),
2924
- stop: createDOMFactory('stop'),
2925
- svg: createDOMFactory('svg'),
2926
- text: createDOMFactory('text'),
2927
- tspan: createDOMFactory('tspan')
2928
- };
2929
-
2930
- module.exports = ReactDOMFactories;
2931
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
2932
-
2933
- /***/ },
2934
- /* 26 */
2935
- /***/ function(module, exports, __webpack_require__) {
2936
-
2937
- /* WEBPACK VAR INJECTION */(function(process) {/**
2938
- * Copyright 2014-present, Facebook, Inc.
2939
- * All rights reserved.
2940
- *
2941
- * This source code is licensed under the BSD-style license found in the
2942
- * LICENSE file in the root directory of this source tree. An additional grant
2943
- * of patent rights can be found in the PATENTS file in the same directory.
2944
- *
2945
- */
2946
-
2947
- /**
2948
- * ReactElementValidator provides a wrapper around a element factory
2949
- * which validates the props passed to the element. This is intended to be
2950
- * used only in DEV and could be replaced by a static type checker for languages
2951
- * that support it.
2952
- */
2953
-
2954
- 'use strict';
2955
-
2956
- var ReactCurrentOwner = __webpack_require__(11);
2957
- var ReactComponentTreeHook = __webpack_require__(27);
2958
- var ReactElement = __webpack_require__(10);
2959
-
2960
- var checkReactTypeSpec = __webpack_require__(28);
2961
-
2962
- var canDefineProperty = __webpack_require__(14);
2963
- var getIteratorFn = __webpack_require__(17);
2964
- var warning = __webpack_require__(12);
2965
-
2966
- function getDeclarationErrorAddendum() {
2967
- if (ReactCurrentOwner.current) {
2968
- var name = ReactCurrentOwner.current.getName();
2969
- if (name) {
2970
- return ' Check the render method of `' + name + '`.';
2971
- }
2972
- }
2973
- return '';
2974
- }
2975
-
2976
- /**
2977
- * Warn if there's no key explicitly set on dynamic arrays of children or
2978
- * object keys are not valid. This allows us to keep track of children between
2979
- * updates.
2980
- */
2981
- var ownerHasKeyUseWarning = {};
2982
-
2983
- function getCurrentComponentErrorInfo(parentType) {
2984
- var info = getDeclarationErrorAddendum();
2985
-
2986
- if (!info) {
2987
- var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
2988
- if (parentName) {
2989
- info = ' Check the top-level render call using <' + parentName + '>.';
2990
- }
2991
- }
2992
- return info;
2993
- }
2994
-
2995
- /**
2996
- * Warn if the element doesn't have an explicit key assigned to it.
2997
- * This element is in an array. The array could grow and shrink or be
2998
- * reordered. All children that haven't already been validated are required to
2999
- * have a "key" property assigned to it. Error statuses are cached so a warning
3000
- * will only be shown once.
3001
- *
3002
- * @internal
3003
- * @param {ReactElement} element Element that requires a key.
3004
- * @param {*} parentType element's parent's type.
3005
- */
3006
- function validateExplicitKey(element, parentType) {
3007
- if (!element._store || element._store.validated || element.key != null) {
3008
- return;
3009
- }
3010
- element._store.validated = true;
3011
-
3012
- var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {});
3013
-
3014
- var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
3015
- if (memoizer[currentComponentErrorInfo]) {
3016
- return;
3017
- }
3018
- memoizer[currentComponentErrorInfo] = true;
3019
-
3020
- // Usually the current owner is the offender, but if it accepts children as a
3021
- // property, it may be the creator of the child that's responsible for
3022
- // assigning it a key.
3023
- var childOwner = '';
3024
- if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
3025
- // Give the component that originally created this child.
3026
- childOwner = ' It was passed a child from ' + element._owner.getName() + '.';
3027
- }
3028
-
3029
- process.env.NODE_ENV !== '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;
3030
- }
3031
-
3032
- /**
3033
- * Ensure that every element either is passed in a static location, in an
3034
- * array with an explicit keys property defined, or in an object literal
3035
- * with valid key property.
3036
- *
3037
- * @internal
3038
- * @param {ReactNode} node Statically passed child of any type.
3039
- * @param {*} parentType node's parent's type.
3040
- */
3041
- function validateChildKeys(node, parentType) {
3042
- if (typeof node !== 'object') {
3043
- return;
3044
- }
3045
- if (Array.isArray(node)) {
3046
- for (var i = 0; i < node.length; i++) {
3047
- var child = node[i];
3048
- if (ReactElement.isValidElement(child)) {
3049
- validateExplicitKey(child, parentType);
3050
- }
3051
- }
3052
- } else if (ReactElement.isValidElement(node)) {
3053
- // This element was passed in a valid location.
3054
- if (node._store) {
3055
- node._store.validated = true;
3056
- }
3057
- } else if (node) {
3058
- var iteratorFn = getIteratorFn(node);
3059
- // Entry iterators provide implicit keys.
3060
- if (iteratorFn) {
3061
- if (iteratorFn !== node.entries) {
3062
- var iterator = iteratorFn.call(node);
3063
- var step;
3064
- while (!(step = iterator.next()).done) {
3065
- if (ReactElement.isValidElement(step.value)) {
3066
- validateExplicitKey(step.value, parentType);
3067
- }
3068
- }
3069
- }
3070
- }
3071
- }
3072
- }
3073
-
3074
- /**
3075
- * Given an element, validate that its props follow the propTypes definition,
3076
- * provided by the type.
3077
- *
3078
- * @param {ReactElement} element
3079
- */
3080
- function validatePropTypes(element) {
3081
- var componentClass = element.type;
3082
- if (typeof componentClass !== 'function') {
3083
- return;
3084
- }
3085
- var name = componentClass.displayName || componentClass.name;
3086
- if (componentClass.propTypes) {
3087
- checkReactTypeSpec(componentClass.propTypes, element.props, 'prop', name, element, null);
3088
- }
3089
- if (typeof componentClass.getDefaultProps === 'function') {
3090
- process.env.NODE_ENV !== 'production' ? warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;
3091
- }
3092
- }
3093
-
3094
- var ReactElementValidator = {
3095
-
3096
- createElement: function (type, props, children) {
3097
- var validType = typeof type === 'string' || typeof type === 'function';
3098
- // We warn in this case but don't throw. We expect the element creation to
3099
- // succeed and there will likely be errors in render.
3100
- if (!validType) {
3101
- if (typeof type !== 'function' && typeof type !== 'string') {
3102
- var info = '';
3103
- if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
3104
- info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.';
3105
- }
3106
- info += getDeclarationErrorAddendum();
3107
- process.env.NODE_ENV !== 'production' ? warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', type == null ? type : typeof type, info) : void 0;
3108
- }
3109
- }
3110
-
3111
- var element = ReactElement.createElement.apply(this, arguments);
3112
-
3113
- // The result can be nullish if a mock or a custom function is used.
3114
- // TODO: Drop this when these are no longer allowed as the type argument.
3115
- if (element == null) {
3116
- return element;
3117
- }
3118
-
3119
- // Skip key warning if the type isn't valid since our key validation logic
3120
- // doesn't expect a non-string/function type and can throw confusing errors.
3121
- // We don't want exception behavior to differ between dev and prod.
3122
- // (Rendering will throw with a helpful message and as soon as the type is
3123
- // fixed, the key warnings will appear.)
3124
- if (validType) {
3125
- for (var i = 2; i < arguments.length; i++) {
3126
- validateChildKeys(arguments[i], type);
3127
- }
3128
- }
3129
-
3130
- validatePropTypes(element);
3131
-
3132
- return element;
3133
- },
3134
-
3135
- createFactory: function (type) {
3136
- var validatedFactory = ReactElementValidator.createElement.bind(null, type);
3137
- // Legacy hook TODO: Warn if this is accessed
3138
- validatedFactory.type = type;
3139
-
3140
- if (process.env.NODE_ENV !== 'production') {
3141
- if (canDefineProperty) {
3142
- Object.defineProperty(validatedFactory, 'type', {
3143
- enumerable: false,
3144
- get: function () {
3145
- process.env.NODE_ENV !== 'production' ? warning(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.') : void 0;
3146
- Object.defineProperty(this, 'type', {
3147
- value: type
3148
- });
3149
- return type;
3150
- }
3151
- });
3152
- }
3153
- }
3154
-
3155
- return validatedFactory;
3156
- },
3157
-
3158
- cloneElement: function (element, props, children) {
3159
- var newElement = ReactElement.cloneElement.apply(this, arguments);
3160
- for (var i = 2; i < arguments.length; i++) {
3161
- validateChildKeys(arguments[i], newElement.type);
3162
- }
3163
- validatePropTypes(newElement);
3164
- return newElement;
3165
- }
3166
-
3167
- };
3168
-
3169
- module.exports = ReactElementValidator;
3170
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
3171
-
3172
- /***/ },
3173
- /* 27 */
3174
- /***/ function(module, exports, __webpack_require__) {
3175
-
3176
- /* WEBPACK VAR INJECTION */(function(process) {/**
3177
- * Copyright 2016-present, Facebook, Inc.
3178
- * All rights reserved.
3179
- *
3180
- * This source code is licensed under the BSD-style license found in the
3181
- * LICENSE file in the root directory of this source tree. An additional grant
3182
- * of patent rights can be found in the PATENTS file in the same directory.
3183
- *
3184
- *
3185
- */
3186
-
3187
- 'use strict';
3188
-
3189
- var _prodInvariant = __webpack_require__(8);
3190
-
3191
- var ReactCurrentOwner = __webpack_require__(11);
3192
-
3193
- var invariant = __webpack_require__(9);
3194
- var warning = __webpack_require__(12);
3195
-
3196
- function isNative(fn) {
3197
- // Based on isNative() from Lodash
3198
- var funcToString = Function.prototype.toString;
3199
- var hasOwnProperty = Object.prototype.hasOwnProperty;
3200
- var reIsNative = RegExp('^' + funcToString
3201
- // Take an example native function source for comparison
3202
- .call(hasOwnProperty)
3203
- // Strip regex characters so we can use it for regex
3204
- .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
3205
- // Remove hasOwnProperty from the template to make it generic
3206
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
3207
- try {
3208
- var source = funcToString.call(fn);
3209
- return reIsNative.test(source);
3210
- } catch (err) {
3211
- return false;
3212
- }
3213
- }
3214
-
3215
- var canUseCollections =
3216
- // Array.from
3217
- typeof Array.from === 'function' &&
3218
- // Map
3219
- typeof Map === 'function' && isNative(Map) &&
3220
- // Map.prototype.keys
3221
- Map.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&
3222
- // Set
3223
- typeof Set === 'function' && isNative(Set) &&
3224
- // Set.prototype.keys
3225
- Set.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);
3226
-
3227
- var setItem;
3228
- var getItem;
3229
- var removeItem;
3230
- var getItemIDs;
3231
- var addRoot;
3232
- var removeRoot;
3233
- var getRootIDs;
3234
-
3235
- if (canUseCollections) {
3236
- var itemMap = new Map();
3237
- var rootIDSet = new Set();
3238
-
3239
- setItem = function (id, item) {
3240
- itemMap.set(id, item);
3241
- };
3242
- getItem = function (id) {
3243
- return itemMap.get(id);
3244
- };
3245
- removeItem = function (id) {
3246
- itemMap['delete'](id);
3247
- };
3248
- getItemIDs = function () {
3249
- return Array.from(itemMap.keys());
3250
- };
3251
-
3252
- addRoot = function (id) {
3253
- rootIDSet.add(id);
3254
- };
3255
- removeRoot = function (id) {
3256
- rootIDSet['delete'](id);
3257
- };
3258
- getRootIDs = function () {
3259
- return Array.from(rootIDSet.keys());
3260
- };
3261
- } else {
3262
- var itemByKey = {};
3263
- var rootByKey = {};
3264
-
3265
- // Use non-numeric keys to prevent V8 performance issues:
3266
- // https://github.com/facebook/react/pull/7232
3267
- var getKeyFromID = function (id) {
3268
- return '.' + id;
3269
- };
3270
- var getIDFromKey = function (key) {
3271
- return parseInt(key.substr(1), 10);
3272
- };
3273
-
3274
- setItem = function (id, item) {
3275
- var key = getKeyFromID(id);
3276
- itemByKey[key] = item;
3277
- };
3278
- getItem = function (id) {
3279
- var key = getKeyFromID(id);
3280
- return itemByKey[key];
3281
- };
3282
- removeItem = function (id) {
3283
- var key = getKeyFromID(id);
3284
- delete itemByKey[key];
3285
- };
3286
- getItemIDs = function () {
3287
- return Object.keys(itemByKey).map(getIDFromKey);
3288
- };
3289
-
3290
- addRoot = function (id) {
3291
- var key = getKeyFromID(id);
3292
- rootByKey[key] = true;
3293
- };
3294
- removeRoot = function (id) {
3295
- var key = getKeyFromID(id);
3296
- delete rootByKey[key];
3297
- };
3298
- getRootIDs = function () {
3299
- return Object.keys(rootByKey).map(getIDFromKey);
3300
- };
3301
- }
3302
-
3303
- var unmountedIDs = [];
3304
-
3305
- function purgeDeep(id) {
3306
- var item = getItem(id);
3307
- if (item) {
3308
- var childIDs = item.childIDs;
3309
-
3310
- removeItem(id);
3311
- childIDs.forEach(purgeDeep);
3312
- }
3313
- }
3314
-
3315
- function describeComponentFrame(name, source, ownerName) {
3316
- return '\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');
3317
- }
3318
-
3319
- function getDisplayName(element) {
3320
- if (element == null) {
3321
- return '#empty';
3322
- } else if (typeof element === 'string' || typeof element === 'number') {
3323
- return '#text';
3324
- } else if (typeof element.type === 'string') {
3325
- return element.type;
3326
- } else {
3327
- return element.type.displayName || element.type.name || 'Unknown';
3328
- }
3329
- }
3330
-
3331
- function describeID(id) {
3332
- var name = ReactComponentTreeHook.getDisplayName(id);
3333
- var element = ReactComponentTreeHook.getElement(id);
3334
- var ownerID = ReactComponentTreeHook.getOwnerID(id);
3335
- var ownerName;
3336
- if (ownerID) {
3337
- ownerName = ReactComponentTreeHook.getDisplayName(ownerID);
3338
- }
3339
- process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;
3340
- return describeComponentFrame(name, element && element._source, ownerName);
3341
- }
3342
-
3343
- var ReactComponentTreeHook = {
3344
- onSetChildren: function (id, nextChildIDs) {
3345
- var item = getItem(id);
3346
- !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;
3347
- item.childIDs = nextChildIDs;
3348
-
3349
- for (var i = 0; i < nextChildIDs.length; i++) {
3350
- var nextChildID = nextChildIDs[i];
3351
- var nextChild = getItem(nextChildID);
3352
- !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;
3353
- !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;
3354
- !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;
3355
- if (nextChild.parentID == null) {
3356
- nextChild.parentID = id;
3357
- // TODO: This shouldn't be necessary but mounting a new root during in
3358
- // componentWillMount currently causes not-yet-mounted components to
3359
- // be purged from our tree data so their parent id is missing.
3360
- }
3361
- !(nextChild.parentID === id) ? process.env.NODE_ENV !== '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;
3362
- }
3363
- },
3364
- onBeforeMountComponent: function (id, element, parentID) {
3365
- var item = {
3366
- element: element,
3367
- parentID: parentID,
3368
- text: null,
3369
- childIDs: [],
3370
- isMounted: false,
3371
- updateCount: 0
3372
- };
3373
- setItem(id, item);
3374
- },
3375
- onBeforeUpdateComponent: function (id, element) {
3376
- var item = getItem(id);
3377
- if (!item || !item.isMounted) {
3378
- // We may end up here as a result of setState() in componentWillUnmount().
3379
- // In this case, ignore the element.
3380
- return;
3381
- }
3382
- item.element = element;
3383
- },
3384
- onMountComponent: function (id) {
3385
- var item = getItem(id);
3386
- !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;
3387
- item.isMounted = true;
3388
- var isRoot = item.parentID === 0;
3389
- if (isRoot) {
3390
- addRoot(id);
3391
- }
3392
- },
3393
- onUpdateComponent: function (id) {
3394
- var item = getItem(id);
3395
- if (!item || !item.isMounted) {
3396
- // We may end up here as a result of setState() in componentWillUnmount().
3397
- // In this case, ignore the element.
3398
- return;
3399
- }
3400
- item.updateCount++;
3401
- },
3402
- onUnmountComponent: function (id) {
3403
- var item = getItem(id);
3404
- if (item) {
3405
- // We need to check if it exists.
3406
- // `item` might not exist if it is inside an error boundary, and a sibling
3407
- // error boundary child threw while mounting. Then this instance never
3408
- // got a chance to mount, but it still gets an unmounting event during
3409
- // the error boundary cleanup.
3410
- item.isMounted = false;
3411
- var isRoot = item.parentID === 0;
3412
- if (isRoot) {
3413
- removeRoot(id);
3414
- }
3415
- }
3416
- unmountedIDs.push(id);
3417
- },
3418
- purgeUnmountedComponents: function () {
3419
- if (ReactComponentTreeHook._preventPurging) {
3420
- // Should only be used for testing.
3421
- return;
3422
- }
3423
-
3424
- for (var i = 0; i < unmountedIDs.length; i++) {
3425
- var id = unmountedIDs[i];
3426
- purgeDeep(id);
3427
- }
3428
- unmountedIDs.length = 0;
3429
- },
3430
- isMounted: function (id) {
3431
- var item = getItem(id);
3432
- return item ? item.isMounted : false;
3433
- },
3434
- getCurrentStackAddendum: function (topElement) {
3435
- var info = '';
3436
- if (topElement) {
3437
- var name = getDisplayName(topElement);
3438
- var owner = topElement._owner;
3439
- info += describeComponentFrame(name, topElement._source, owner && owner.getName());
3440
- }
3441
-
3442
- var currentOwner = ReactCurrentOwner.current;
3443
- var id = currentOwner && currentOwner._debugID;
3444
-
3445
- info += ReactComponentTreeHook.getStackAddendumByID(id);
3446
- return info;
3447
- },
3448
- getStackAddendumByID: function (id) {
3449
- var info = '';
3450
- while (id) {
3451
- info += describeID(id);
3452
- id = ReactComponentTreeHook.getParentID(id);
3453
- }
3454
- return info;
3455
- },
3456
- getChildIDs: function (id) {
3457
- var item = getItem(id);
3458
- return item ? item.childIDs : [];
3459
- },
3460
- getDisplayName: function (id) {
3461
- var element = ReactComponentTreeHook.getElement(id);
3462
- if (!element) {
3463
- return null;
3464
- }
3465
- return getDisplayName(element);
3466
- },
3467
- getElement: function (id) {
3468
- var item = getItem(id);
3469
- return item ? item.element : null;
3470
- },
3471
- getOwnerID: function (id) {
3472
- var element = ReactComponentTreeHook.getElement(id);
3473
- if (!element || !element._owner) {
3474
- return null;
3475
- }
3476
- return element._owner._debugID;
3477
- },
3478
- getParentID: function (id) {
3479
- var item = getItem(id);
3480
- return item ? item.parentID : null;
3481
- },
3482
- getSource: function (id) {
3483
- var item = getItem(id);
3484
- var element = item ? item.element : null;
3485
- var source = element != null ? element._source : null;
3486
- return source;
3487
- },
3488
- getText: function (id) {
3489
- var element = ReactComponentTreeHook.getElement(id);
3490
- if (typeof element === 'string') {
3491
- return element;
3492
- } else if (typeof element === 'number') {
3493
- return '' + element;
3494
- } else {
3495
- return null;
3496
- }
3497
- },
3498
- getUpdateCount: function (id) {
3499
- var item = getItem(id);
3500
- return item ? item.updateCount : 0;
3501
- },
3502
-
3503
-
3504
- getRootIDs: getRootIDs,
3505
- getRegisteredIDs: getItemIDs
3506
- };
3507
-
3508
- module.exports = ReactComponentTreeHook;
3509
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
3510
-
3511
- /***/ },
3512
- /* 28 */
3513
- /***/ function(module, exports, __webpack_require__) {
3514
-
3515
- /* WEBPACK VAR INJECTION */(function(process) {/**
3516
- * Copyright 2013-present, Facebook, Inc.
3517
- * All rights reserved.
3518
- *
3519
- * This source code is licensed under the BSD-style license found in the
3520
- * LICENSE file in the root directory of this source tree. An additional grant
3521
- * of patent rights can be found in the PATENTS file in the same directory.
3522
- *
3523
- */
3524
-
3525
- 'use strict';
3526
-
3527
- var _prodInvariant = __webpack_require__(8);
3528
-
3529
- var ReactPropTypeLocationNames = __webpack_require__(24);
3530
- var ReactPropTypesSecret = __webpack_require__(29);
3531
-
3532
- var invariant = __webpack_require__(9);
3533
- var warning = __webpack_require__(12);
3534
-
3535
- var ReactComponentTreeHook;
3536
-
3537
- if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
3538
- // Temporary hack.
3539
- // Inline requires don't work well with Jest:
3540
- // https://github.com/facebook/react/issues/7240
3541
- // Remove the inline requires when we don't need them anymore:
3542
- // https://github.com/facebook/react/pull/7178
3543
- ReactComponentTreeHook = __webpack_require__(27);
3544
- }
3545
-
3546
- var loggedTypeFailures = {};
3547
-
3548
- /**
3549
- * Assert that the values match with the type specs.
3550
- * Error messages are memorized and will only be shown once.
3551
- *
3552
- * @param {object} typeSpecs Map of name to a ReactPropType
3553
- * @param {object} values Runtime values that need to be type-checked
3554
- * @param {string} location e.g. "prop", "context", "child context"
3555
- * @param {string} componentName Name of the component for error messages.
3556
- * @param {?object} element The React element that is being type-checked
3557
- * @param {?number} debugID The React component instance that is being type-checked
3558
- * @private
3559
- */
3560
- function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {
3561
- for (var typeSpecName in typeSpecs) {
3562
- if (typeSpecs.hasOwnProperty(typeSpecName)) {
3563
- var error;
3564
- // Prop type validation may throw. In case they do, we don't want to
3565
- // fail the render phase where it didn't fail before. So we log it.
3566
- // After these have been cleaned up, we'll let them throw.
3567
- try {
3568
- // This is intentionally an invariant that gets caught. It's the same
3569
- // behavior as without this statement except with a better message.
3570
- !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== '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;
3571
- error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
3572
- } catch (ex) {
3573
- error = ex;
3574
- }
3575
- process.env.NODE_ENV !== '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;
3576
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
3577
- // Only monitor this failure once because there tends to be a lot of the
3578
- // same error.
3579
- loggedTypeFailures[error.message] = true;
3580
-
3581
- var componentStackInfo = '';
3582
-
3583
- if (process.env.NODE_ENV !== 'production') {
3584
- if (!ReactComponentTreeHook) {
3585
- ReactComponentTreeHook = __webpack_require__(27);
3586
- }
3587
- if (debugID !== null) {
3588
- componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);
3589
- } else if (element !== null) {
3590
- componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);
3591
- }
3592
- }
3593
-
3594
- process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;
3595
- }
3596
- }
3597
- }
3598
- }
3599
-
3600
- module.exports = checkReactTypeSpec;
3601
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
3602
-
3603
- /***/ },
3604
- /* 29 */
3605
- /***/ function(module, exports) {
3606
-
3607
- /**
3608
- * Copyright 2013-present, Facebook, Inc.
3609
- * All rights reserved.
3610
- *
3611
- * This source code is licensed under the BSD-style license found in the
3612
- * LICENSE file in the root directory of this source tree. An additional grant
3613
- * of patent rights can be found in the PATENTS file in the same directory.
3614
- *
3615
- *
3616
- */
3617
-
3618
- 'use strict';
3619
-
3620
- var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
3621
-
3622
- module.exports = ReactPropTypesSecret;
3623
-
3624
- /***/ },
3625
- /* 30 */
3626
- /***/ function(module, exports, __webpack_require__) {
3627
-
3628
- /* WEBPACK VAR INJECTION */(function(process) {/**
3629
- * Copyright 2013-present, Facebook, Inc.
3630
- * All rights reserved.
3631
- *
3632
- * This source code is licensed under the BSD-style license found in the
3633
- * LICENSE file in the root directory of this source tree. An additional grant
3634
- * of patent rights can be found in the PATENTS file in the same directory.
3635
- *
3636
- */
3637
-
3638
- 'use strict';
3639
-
3640
- var ReactElement = __webpack_require__(10);
3641
- var ReactPropTypeLocationNames = __webpack_require__(24);
3642
- var ReactPropTypesSecret = __webpack_require__(29);
3643
-
3644
- var emptyFunction = __webpack_require__(13);
3645
- var getIteratorFn = __webpack_require__(17);
3646
- var warning = __webpack_require__(12);
3647
-
3648
- /**
3649
- * Collection of methods that allow declaration and validation of props that are
3650
- * supplied to React components. Example usage:
3651
- *
3652
- * var Props = require('ReactPropTypes');
3653
- * var MyArticle = React.createClass({
3654
- * propTypes: {
3655
- * // An optional string prop named "description".
3656
- * description: Props.string,
3657
- *
3658
- * // A required enum prop named "category".
3659
- * category: Props.oneOf(['News','Photos']).isRequired,
3660
- *
3661
- * // A prop named "dialog" that requires an instance of Dialog.
3662
- * dialog: Props.instanceOf(Dialog).isRequired
3663
- * },
3664
- * render: function() { ... }
3665
- * });
3666
- *
3667
- * A more formal specification of how these methods are used:
3668
- *
3669
- * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
3670
- * decl := ReactPropTypes.{type}(.isRequired)?
3671
- *
3672
- * Each and every declaration produces a function with the same signature. This
3673
- * allows the creation of custom validation functions. For example:
3674
- *
3675
- * var MyLink = React.createClass({
3676
- * propTypes: {
3677
- * // An optional string or URI prop named "href".
3678
- * href: function(props, propName, componentName) {
3679
- * var propValue = props[propName];
3680
- * if (propValue != null && typeof propValue !== 'string' &&
3681
- * !(propValue instanceof URI)) {
3682
- * return new Error(
3683
- * 'Expected a string or an URI for ' + propName + ' in ' +
3684
- * componentName
3685
- * );
3686
- * }
3687
- * }
3688
- * },
3689
- * render: function() {...}
3690
- * });
3691
- *
3692
- * @internal
3693
- */
3694
-
3695
- var ANONYMOUS = '<<anonymous>>';
3696
-
3697
- var ReactPropTypes = {
3698
- array: createPrimitiveTypeChecker('array'),
3699
- bool: createPrimitiveTypeChecker('boolean'),
3700
- func: createPrimitiveTypeChecker('function'),
3701
- number: createPrimitiveTypeChecker('number'),
3702
- object: createPrimitiveTypeChecker('object'),
3703
- string: createPrimitiveTypeChecker('string'),
3704
- symbol: createPrimitiveTypeChecker('symbol'),
3705
-
3706
- any: createAnyTypeChecker(),
3707
- arrayOf: createArrayOfTypeChecker,
3708
- element: createElementTypeChecker(),
3709
- instanceOf: createInstanceTypeChecker,
3710
- node: createNodeChecker(),
3711
- objectOf: createObjectOfTypeChecker,
3712
- oneOf: createEnumTypeChecker,
3713
- oneOfType: createUnionTypeChecker,
3714
- shape: createShapeTypeChecker
3715
- };
3716
-
3717
- /**
3718
- * inlined Object.is polyfill to avoid requiring consumers ship their own
3719
- * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
3720
- */
3721
- /*eslint-disable no-self-compare*/
3722
- function is(x, y) {
3723
- // SameValue algorithm
3724
- if (x === y) {
3725
- // Steps 1-5, 7-10
3726
- // Steps 6.b-6.e: +0 != -0
3727
- return x !== 0 || 1 / x === 1 / y;
3728
- } else {
3729
- // Step 6.a: NaN == NaN
3730
- return x !== x && y !== y;
3731
- }
3732
- }
3733
- /*eslint-enable no-self-compare*/
3734
-
3735
- /**
3736
- * We use an Error-like object for backward compatibility as people may call
3737
- * PropTypes directly and inspect their output. However we don't use real
3738
- * Errors anymore. We don't inspect their stack anyway, and creating them
3739
- * is prohibitively expensive if they are created too often, such as what
3740
- * happens in oneOfType() for any type before the one that matched.
3741
- */
3742
- function PropTypeError(message) {
3743
- this.message = message;
3744
- this.stack = '';
3745
- }
3746
- // Make `instanceof Error` still work for returned errors.
3747
- PropTypeError.prototype = Error.prototype;
3748
-
3749
- function createChainableTypeChecker(validate) {
3750
- if (process.env.NODE_ENV !== 'production') {
3751
- var manualPropTypeCallCache = {};
3752
- }
3753
- function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
3754
- componentName = componentName || ANONYMOUS;
3755
- propFullName = propFullName || propName;
3756
- if (process.env.NODE_ENV !== 'production') {
3757
- if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') {
3758
- var cacheKey = componentName + ':' + propName;
3759
- if (!manualPropTypeCallCache[cacheKey]) {
3760
- process.env.NODE_ENV !== '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 production with 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;
3761
- manualPropTypeCallCache[cacheKey] = true;
3762
- }
3763
- }
3764
- }
3765
- if (props[propName] == null) {
3766
- var locationName = ReactPropTypeLocationNames[location];
3767
- if (isRequired) {
3768
- if (props[propName] === null) {
3769
- return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
3770
- }
3771
- return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
3772
- }
3773
- return null;
3774
- } else {
3775
- return validate(props, propName, componentName, location, propFullName);
3776
- }
3777
- }
3778
-
3779
- var chainedCheckType = checkType.bind(null, false);
3780
- chainedCheckType.isRequired = checkType.bind(null, true);
3781
-
3782
- return chainedCheckType;
3783
- }
3784
-
3785
- function createPrimitiveTypeChecker(expectedType) {
3786
- function validate(props, propName, componentName, location, propFullName, secret) {
3787
- var propValue = props[propName];
3788
- var propType = getPropType(propValue);
3789
- if (propType !== expectedType) {
3790
- var locationName = ReactPropTypeLocationNames[location];
3791
- // `propValue` being instance of, say, date/regexp, pass the 'object'
3792
- // check, but we can offer a more precise error message here rather than
3793
- // 'of type `object`'.
3794
- var preciseType = getPreciseType(propValue);
3795
-
3796
- return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
3797
- }
3798
- return null;
3799
- }
3800
- return createChainableTypeChecker(validate);
3801
- }
3802
-
3803
- function createAnyTypeChecker() {
3804
- return createChainableTypeChecker(emptyFunction.thatReturns(null));
3805
- }
3806
-
3807
- function createArrayOfTypeChecker(typeChecker) {
3808
- function validate(props, propName, componentName, location, propFullName) {
3809
- if (typeof typeChecker !== 'function') {
3810
- return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
3811
- }
3812
- var propValue = props[propName];
3813
- if (!Array.isArray(propValue)) {
3814
- var locationName = ReactPropTypeLocationNames[location];
3815
- var propType = getPropType(propValue);
3816
- return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
3817
- }
3818
- for (var i = 0; i < propValue.length; i++) {
3819
- var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
3820
- if (error instanceof Error) {
3821
- return error;
3822
- }
3823
- }
3824
- return null;
3825
- }
3826
- return createChainableTypeChecker(validate);
3827
- }
3828
-
3829
- function createElementTypeChecker() {
3830
- function validate(props, propName, componentName, location, propFullName) {
3831
- var propValue = props[propName];
3832
- if (!ReactElement.isValidElement(propValue)) {
3833
- var locationName = ReactPropTypeLocationNames[location];
3834
- var propType = getPropType(propValue);
3835
- return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
3836
- }
3837
- return null;
3838
- }
3839
- return createChainableTypeChecker(validate);
3840
- }
3841
-
3842
- function createInstanceTypeChecker(expectedClass) {
3843
- function validate(props, propName, componentName, location, propFullName) {
3844
- if (!(props[propName] instanceof expectedClass)) {
3845
- var locationName = ReactPropTypeLocationNames[location];
3846
- var expectedClassName = expectedClass.name || ANONYMOUS;
3847
- var actualClassName = getClassName(props[propName]);
3848
- return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
3849
- }
3850
- return null;
3851
- }
3852
- return createChainableTypeChecker(validate);
3853
- }
3854
-
3855
- function createEnumTypeChecker(expectedValues) {
3856
- if (!Array.isArray(expectedValues)) {
3857
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
3858
- return emptyFunction.thatReturnsNull;
3859
- }
3860
-
3861
- function validate(props, propName, componentName, location, propFullName) {
3862
- var propValue = props[propName];
3863
- for (var i = 0; i < expectedValues.length; i++) {
3864
- if (is(propValue, expectedValues[i])) {
3865
- return null;
3866
- }
3867
- }
3868
-
3869
- var locationName = ReactPropTypeLocationNames[location];
3870
- var valuesString = JSON.stringify(expectedValues);
3871
- return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
3872
- }
3873
- return createChainableTypeChecker(validate);
3874
- }
3875
-
3876
- function createObjectOfTypeChecker(typeChecker) {
3877
- function validate(props, propName, componentName, location, propFullName) {
3878
- if (typeof typeChecker !== 'function') {
3879
- return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
3880
- }
3881
- var propValue = props[propName];
3882
- var propType = getPropType(propValue);
3883
- if (propType !== 'object') {
3884
- var locationName = ReactPropTypeLocationNames[location];
3885
- return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
3886
- }
3887
- for (var key in propValue) {
3888
- if (propValue.hasOwnProperty(key)) {
3889
- var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
3890
- if (error instanceof Error) {
3891
- return error;
3892
- }
3893
- }
3894
- }
3895
- return null;
3896
- }
3897
- return createChainableTypeChecker(validate);
3898
- }
3899
-
3900
- function createUnionTypeChecker(arrayOfTypeCheckers) {
3901
- if (!Array.isArray(arrayOfTypeCheckers)) {
3902
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
3903
- return emptyFunction.thatReturnsNull;
3904
- }
3905
-
3906
- function validate(props, propName, componentName, location, propFullName) {
3907
- for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
3908
- var checker = arrayOfTypeCheckers[i];
3909
- if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
3910
- return null;
3911
- }
3912
- }
3913
-
3914
- var locationName = ReactPropTypeLocationNames[location];
3915
- return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
3916
- }
3917
- return createChainableTypeChecker(validate);
3918
- }
3919
-
3920
- function createNodeChecker() {
3921
- function validate(props, propName, componentName, location, propFullName) {
3922
- if (!isNode(props[propName])) {
3923
- var locationName = ReactPropTypeLocationNames[location];
3924
- return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
3925
- }
3926
- return null;
3927
- }
3928
- return createChainableTypeChecker(validate);
3929
- }
3930
-
3931
- function createShapeTypeChecker(shapeTypes) {
3932
- function validate(props, propName, componentName, location, propFullName) {
3933
- var propValue = props[propName];
3934
- var propType = getPropType(propValue);
3935
- if (propType !== 'object') {
3936
- var locationName = ReactPropTypeLocationNames[location];
3937
- return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
3938
- }
3939
- for (var key in shapeTypes) {
3940
- var checker = shapeTypes[key];
3941
- if (!checker) {
3942
- continue;
3943
- }
3944
- var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
3945
- if (error) {
3946
- return error;
3947
- }
3948
- }
3949
- return null;
3950
- }
3951
- return createChainableTypeChecker(validate);
3952
- }
3953
-
3954
- function isNode(propValue) {
3955
- switch (typeof propValue) {
3956
- case 'number':
3957
- case 'string':
3958
- case 'undefined':
3959
- return true;
3960
- case 'boolean':
3961
- return !propValue;
3962
- case 'object':
3963
- if (Array.isArray(propValue)) {
3964
- return propValue.every(isNode);
3965
- }
3966
- if (propValue === null || ReactElement.isValidElement(propValue)) {
3967
- return true;
3968
- }
3969
-
3970
- var iteratorFn = getIteratorFn(propValue);
3971
- if (iteratorFn) {
3972
- var iterator = iteratorFn.call(propValue);
3973
- var step;
3974
- if (iteratorFn !== propValue.entries) {
3975
- while (!(step = iterator.next()).done) {
3976
- if (!isNode(step.value)) {
3977
- return false;
3978
- }
3979
- }
3980
- } else {
3981
- // Iterator will provide entry [k,v] tuples rather than values.
3982
- while (!(step = iterator.next()).done) {
3983
- var entry = step.value;
3984
- if (entry) {
3985
- if (!isNode(entry[1])) {
3986
- return false;
3987
- }
3988
- }
3989
- }
3990
- }
3991
- } else {
3992
- return false;
3993
- }
3994
-
3995
- return true;
3996
- default:
3997
- return false;
3998
- }
3999
- }
4000
-
4001
- function isSymbol(propType, propValue) {
4002
- // Native Symbol.
4003
- if (propType === 'symbol') {
4004
- return true;
4005
- }
4006
-
4007
- // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
4008
- if (propValue['@@toStringTag'] === 'Symbol') {
4009
- return true;
4010
- }
4011
-
4012
- // Fallback for non-spec compliant Symbols which are polyfilled.
4013
- if (typeof Symbol === 'function' && propValue instanceof Symbol) {
4014
- return true;
4015
- }
4016
-
4017
- return false;
4018
- }
4019
-
4020
- // Equivalent of `typeof` but with special handling for array and regexp.
4021
- function getPropType(propValue) {
4022
- var propType = typeof propValue;
4023
- if (Array.isArray(propValue)) {
4024
- return 'array';
4025
- }
4026
- if (propValue instanceof RegExp) {
4027
- // Old webkits (at least until Android 4.0) return 'function' rather than
4028
- // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
4029
- // passes PropTypes.object.
4030
- return 'object';
4031
- }
4032
- if (isSymbol(propType, propValue)) {
4033
- return 'symbol';
4034
- }
4035
- return propType;
4036
- }
4037
-
4038
- // This handles more types than `getPropType`. Only used for error messages.
4039
- // See `createPrimitiveTypeChecker`.
4040
- function getPreciseType(propValue) {
4041
- var propType = getPropType(propValue);
4042
- if (propType === 'object') {
4043
- if (propValue instanceof Date) {
4044
- return 'date';
4045
- } else if (propValue instanceof RegExp) {
4046
- return 'regexp';
4047
- }
4048
- }
4049
- return propType;
4050
- }
4051
-
4052
- // Returns class name of the object, if any.
4053
- function getClassName(propValue) {
4054
- if (!propValue.constructor || !propValue.constructor.name) {
4055
- return ANONYMOUS;
4056
- }
4057
- return propValue.constructor.name;
4058
- }
4059
-
4060
- module.exports = ReactPropTypes;
4061
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4062
-
4063
- /***/ },
4064
- /* 31 */
4065
- /***/ function(module, exports) {
4066
-
4067
- /**
4068
- * Copyright 2013-present, Facebook, Inc.
4069
- * All rights reserved.
4070
- *
4071
- * This source code is licensed under the BSD-style license found in the
4072
- * LICENSE file in the root directory of this source tree. An additional grant
4073
- * of patent rights can be found in the PATENTS file in the same directory.
4074
- *
4075
- */
4076
-
4077
- 'use strict';
4078
-
4079
- module.exports = '15.4.2';
4080
-
4081
- /***/ },
4082
- /* 32 */
4083
- /***/ function(module, exports, __webpack_require__) {
4084
-
4085
- /* WEBPACK VAR INJECTION */(function(process) {/**
4086
- * Copyright 2013-present, Facebook, Inc.
4087
- * All rights reserved.
4088
- *
4089
- * This source code is licensed under the BSD-style license found in the
4090
- * LICENSE file in the root directory of this source tree. An additional grant
4091
- * of patent rights can be found in the PATENTS file in the same directory.
4092
- *
4093
- */
4094
- 'use strict';
4095
-
4096
- var _prodInvariant = __webpack_require__(8);
4097
-
4098
- var ReactElement = __webpack_require__(10);
4099
-
4100
- var invariant = __webpack_require__(9);
4101
-
4102
- /**
4103
- * Returns the first child in a collection of children and verifies that there
4104
- * is only one child in the collection.
4105
- *
4106
- * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only
4107
- *
4108
- * The current implementation of this function assumes that a single child gets
4109
- * passed without a wrapper, but the purpose of this helper function is to
4110
- * abstract away the particular structure of children.
4111
- *
4112
- * @param {?object} children Child collection structure.
4113
- * @return {ReactElement} The first and only `ReactElement` contained in the
4114
- * structure.
4115
- */
4116
- function onlyChild(children) {
4117
- !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;
4118
- return children;
4119
- }
4120
-
4121
- module.exports = onlyChild;
4122
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4123
-
4124
- /***/ },
4125
- /* 33 */
4126
- /***/ function(module, exports, __webpack_require__) {
4127
-
4128
- 'use strict';
4129
-
4130
- module.exports = __webpack_require__(34);
4131
-
4132
-
4133
- /***/ },
4134
- /* 34 */
4135
- /***/ function(module, exports, __webpack_require__) {
4136
-
4137
- /* WEBPACK VAR INJECTION */(function(process) {/**
4138
- * Copyright 2013-present, Facebook, Inc.
4139
- * All rights reserved.
4140
- *
4141
- * This source code is licensed under the BSD-style license found in the
4142
- * LICENSE file in the root directory of this source tree. An additional grant
4143
- * of patent rights can be found in the PATENTS file in the same directory.
4144
- *
4145
- */
4146
-
4147
- /* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/
4148
-
4149
- 'use strict';
4150
-
4151
- var ReactDOMComponentTree = __webpack_require__(35);
4152
- var ReactDefaultInjection = __webpack_require__(39);
4153
- var ReactMount = __webpack_require__(168);
4154
- var ReactReconciler = __webpack_require__(61);
4155
- var ReactUpdates = __webpack_require__(58);
4156
- var ReactVersion = __webpack_require__(173);
4157
-
4158
- var findDOMNode = __webpack_require__(174);
4159
- var getHostComponentFromComposite = __webpack_require__(175);
4160
- var renderSubtreeIntoContainer = __webpack_require__(176);
4161
- var warning = __webpack_require__(12);
4162
-
4163
- ReactDefaultInjection.inject();
4164
-
4165
- var ReactDOM = {
4166
- findDOMNode: findDOMNode,
4167
- render: ReactMount.render,
4168
- unmountComponentAtNode: ReactMount.unmountComponentAtNode,
4169
- version: ReactVersion,
4170
-
4171
- /* eslint-disable camelcase */
4172
- unstable_batchedUpdates: ReactUpdates.batchedUpdates,
4173
- unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer
4174
- };
4175
-
4176
- // Inject the runtime into a devtools global hook regardless of browser.
4177
- // Allows for debugging when the hook is injected on the page.
4178
- if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {
4179
- __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({
4180
- ComponentTree: {
4181
- getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,
4182
- getNodeFromInstance: function (inst) {
4183
- // inst is an internal instance (but could be a composite)
4184
- if (inst._renderedComponent) {
4185
- inst = getHostComponentFromComposite(inst);
4186
- }
4187
- if (inst) {
4188
- return ReactDOMComponentTree.getNodeFromInstance(inst);
4189
- } else {
4190
- return null;
4191
- }
4192
- }
4193
- },
4194
- Mount: ReactMount,
4195
- Reconciler: ReactReconciler
4196
- });
4197
- }
4198
-
4199
- if (process.env.NODE_ENV !== 'production') {
4200
- var ExecutionEnvironment = __webpack_require__(49);
4201
- if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
4202
-
4203
- // First check if devtools is not installed
4204
- if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
4205
- // If we're in Chrome or Firefox, provide a download link if not installed.
4206
- if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {
4207
- // Firefox does not have the issue with devtools loaded over file://
4208
- var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;
4209
- 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');
4210
- }
4211
- }
4212
-
4213
- var testFunc = function testFn() {};
4214
- process.env.NODE_ENV !== '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;
4215
-
4216
- // If we're in IE8, check to see if we are in compatibility mode and provide
4217
- // information on preventing compatibility mode
4218
- var ieCompatibilityMode = document.documentMode && document.documentMode < 8;
4219
-
4220
- process.env.NODE_ENV !== '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;
4221
-
4222
- var expectedFeatures = [
4223
- // shims
4224
- Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];
4225
-
4226
- for (var i = 0; i < expectedFeatures.length; i++) {
4227
- if (!expectedFeatures[i]) {
4228
- process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;
4229
- break;
4230
- }
4231
- }
4232
- }
4233
- }
4234
-
4235
- if (process.env.NODE_ENV !== 'production') {
4236
- var ReactInstrumentation = __webpack_require__(64);
4237
- var ReactDOMUnknownPropertyHook = __webpack_require__(177);
4238
- var ReactDOMNullInputValuePropHook = __webpack_require__(178);
4239
- var ReactDOMInvalidARIAHook = __webpack_require__(179);
4240
-
4241
- ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);
4242
- ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);
4243
- ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);
4244
- }
4245
-
4246
- module.exports = ReactDOM;
4247
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4248
-
4249
- /***/ },
4250
- /* 35 */
4251
- /***/ function(module, exports, __webpack_require__) {
4252
-
4253
- /* WEBPACK VAR INJECTION */(function(process) {/**
4254
- * Copyright 2013-present, Facebook, Inc.
4255
- * All rights reserved.
4256
- *
4257
- * This source code is licensed under the BSD-style license found in the
4258
- * LICENSE file in the root directory of this source tree. An additional grant
4259
- * of patent rights can be found in the PATENTS file in the same directory.
4260
- *
4261
- */
4262
-
4263
- 'use strict';
4264
-
4265
- var _prodInvariant = __webpack_require__(36);
4266
-
4267
- var DOMProperty = __webpack_require__(37);
4268
- var ReactDOMComponentFlags = __webpack_require__(38);
4269
-
4270
- var invariant = __webpack_require__(9);
4271
-
4272
- var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
4273
- var Flags = ReactDOMComponentFlags;
4274
-
4275
- var internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);
4276
-
4277
- /**
4278
- * Check if a given node should be cached.
4279
- */
4280
- function shouldPrecacheNode(node, nodeID) {
4281
- return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';
4282
- }
4283
-
4284
- /**
4285
- * Drill down (through composites and empty components) until we get a host or
4286
- * host text component.
4287
- *
4288
- * This is pretty polymorphic but unavoidable with the current structure we have
4289
- * for `_renderedChildren`.
4290
- */
4291
- function getRenderedHostOrTextFromComponent(component) {
4292
- var rendered;
4293
- while (rendered = component._renderedComponent) {
4294
- component = rendered;
4295
- }
4296
- return component;
4297
- }
4298
-
4299
- /**
4300
- * Populate `_hostNode` on the rendered host/text component with the given
4301
- * DOM node. The passed `inst` can be a composite.
4302
- */
4303
- function precacheNode(inst, node) {
4304
- var hostInst = getRenderedHostOrTextFromComponent(inst);
4305
- hostInst._hostNode = node;
4306
- node[internalInstanceKey] = hostInst;
4307
- }
4308
-
4309
- function uncacheNode(inst) {
4310
- var node = inst._hostNode;
4311
- if (node) {
4312
- delete node[internalInstanceKey];
4313
- inst._hostNode = null;
4314
- }
4315
- }
4316
-
4317
- /**
4318
- * Populate `_hostNode` on each child of `inst`, assuming that the children
4319
- * match up with the DOM (element) children of `node`.
4320
- *
4321
- * We cache entire levels at once to avoid an n^2 problem where we access the
4322
- * children of a node sequentially and have to walk from the start to our target
4323
- * node every time.
4324
- *
4325
- * Since we update `_renderedChildren` and the actual DOM at (slightly)
4326
- * different times, we could race here and see a newer `_renderedChildren` than
4327
- * the DOM nodes we see. To avoid this, ReactMultiChild calls
4328
- * `prepareToManageChildren` before we change `_renderedChildren`, at which
4329
- * time the container's child nodes are always cached (until it unmounts).
4330
- */
4331
- function precacheChildNodes(inst, node) {
4332
- if (inst._flags & Flags.hasCachedChildNodes) {
4333
- return;
4334
- }
4335
- var children = inst._renderedChildren;
4336
- var childNode = node.firstChild;
4337
- outer: for (var name in children) {
4338
- if (!children.hasOwnProperty(name)) {
4339
- continue;
4340
- }
4341
- var childInst = children[name];
4342
- var childID = getRenderedHostOrTextFromComponent(childInst)._domID;
4343
- if (childID === 0) {
4344
- // We're currently unmounting this child in ReactMultiChild; skip it.
4345
- continue;
4346
- }
4347
- // We assume the child nodes are in the same order as the child instances.
4348
- for (; childNode !== null; childNode = childNode.nextSibling) {
4349
- if (shouldPrecacheNode(childNode, childID)) {
4350
- precacheNode(childInst, childNode);
4351
- continue outer;
4352
- }
4353
- }
4354
- // We reached the end of the DOM children without finding an ID match.
4355
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;
4356
- }
4357
- inst._flags |= Flags.hasCachedChildNodes;
4358
- }
4359
-
4360
- /**
4361
- * Given a DOM node, return the closest ReactDOMComponent or
4362
- * ReactDOMTextComponent instance ancestor.
4363
- */
4364
- function getClosestInstanceFromNode(node) {
4365
- if (node[internalInstanceKey]) {
4366
- return node[internalInstanceKey];
4367
- }
4368
-
4369
- // Walk up the tree until we find an ancestor whose instance we have cached.
4370
- var parents = [];
4371
- while (!node[internalInstanceKey]) {
4372
- parents.push(node);
4373
- if (node.parentNode) {
4374
- node = node.parentNode;
4375
- } else {
4376
- // Top of the tree. This node must not be part of a React tree (or is
4377
- // unmounted, potentially).
4378
- return null;
4379
- }
4380
- }
4381
-
4382
- var closest;
4383
- var inst;
4384
- for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {
4385
- closest = inst;
4386
- if (parents.length) {
4387
- precacheChildNodes(inst, node);
4388
- }
4389
- }
4390
-
4391
- return closest;
4392
- }
4393
-
4394
- /**
4395
- * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent
4396
- * instance, or null if the node was not rendered by this React.
4397
- */
4398
- function getInstanceFromNode(node) {
4399
- var inst = getClosestInstanceFromNode(node);
4400
- if (inst != null && inst._hostNode === node) {
4401
- return inst;
4402
- } else {
4403
- return null;
4404
- }
4405
- }
4406
-
4407
- /**
4408
- * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding
4409
- * DOM node.
4410
- */
4411
- function getNodeFromInstance(inst) {
4412
- // Without this first invariant, passing a non-DOM-component triggers the next
4413
- // invariant for a missing parent, which is super confusing.
4414
- !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
4415
-
4416
- if (inst._hostNode) {
4417
- return inst._hostNode;
4418
- }
4419
-
4420
- // Walk up the tree until we find an ancestor whose DOM node we have cached.
4421
- var parents = [];
4422
- while (!inst._hostNode) {
4423
- parents.push(inst);
4424
- !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;
4425
- inst = inst._hostParent;
4426
- }
4427
-
4428
- // Now parents contains each ancestor that does *not* have a cached native
4429
- // node, and `inst` is the deepest ancestor that does.
4430
- for (; parents.length; inst = parents.pop()) {
4431
- precacheChildNodes(inst, inst._hostNode);
4432
- }
4433
-
4434
- return inst._hostNode;
4435
- }
4436
-
4437
- var ReactDOMComponentTree = {
4438
- getClosestInstanceFromNode: getClosestInstanceFromNode,
4439
- getInstanceFromNode: getInstanceFromNode,
4440
- getNodeFromInstance: getNodeFromInstance,
4441
- precacheChildNodes: precacheChildNodes,
4442
- precacheNode: precacheNode,
4443
- uncacheNode: uncacheNode
4444
- };
4445
-
4446
- module.exports = ReactDOMComponentTree;
4447
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4448
-
4449
- /***/ },
4450
- /* 36 */
4451
- /***/ function(module, exports) {
4452
-
4453
- /**
4454
- * Copyright (c) 2013-present, Facebook, Inc.
4455
- * All rights reserved.
4456
- *
4457
- * This source code is licensed under the BSD-style license found in the
4458
- * LICENSE file in the root directory of this source tree. An additional grant
4459
- * of patent rights can be found in the PATENTS file in the same directory.
4460
- *
4461
- *
4462
- */
4463
- 'use strict';
4464
-
4465
- /**
4466
- * WARNING: DO NOT manually require this module.
4467
- * This is a replacement for `invariant(...)` used by the error code system
4468
- * and will _only_ be required by the corresponding babel pass.
4469
- * It always throws.
4470
- */
4471
-
4472
- function reactProdInvariant(code) {
4473
- var argCount = arguments.length - 1;
4474
-
4475
- var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;
4476
-
4477
- for (var argIdx = 0; argIdx < argCount; argIdx++) {
4478
- message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);
4479
- }
4480
-
4481
- message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';
4482
-
4483
- var error = new Error(message);
4484
- error.name = 'Invariant Violation';
4485
- error.framesToPop = 1; // we don't care about reactProdInvariant's own frame
4486
-
4487
- throw error;
4488
- }
4489
-
4490
- module.exports = reactProdInvariant;
4491
-
4492
- /***/ },
4493
- /* 37 */
4494
- /***/ function(module, exports, __webpack_require__) {
4495
-
4496
- /* WEBPACK VAR INJECTION */(function(process) {/**
4497
- * Copyright 2013-present, Facebook, Inc.
4498
- * All rights reserved.
4499
- *
4500
- * This source code is licensed under the BSD-style license found in the
4501
- * LICENSE file in the root directory of this source tree. An additional grant
4502
- * of patent rights can be found in the PATENTS file in the same directory.
4503
- *
4504
- */
4505
-
4506
- 'use strict';
4507
-
4508
- var _prodInvariant = __webpack_require__(36);
4509
-
4510
- var invariant = __webpack_require__(9);
4511
-
4512
- function checkMask(value, bitmask) {
4513
- return (value & bitmask) === bitmask;
4514
- }
4515
-
4516
- var DOMPropertyInjection = {
4517
- /**
4518
- * Mapping from normalized, camelcased property names to a configuration that
4519
- * specifies how the associated DOM property should be accessed or rendered.
4520
- */
4521
- MUST_USE_PROPERTY: 0x1,
4522
- HAS_BOOLEAN_VALUE: 0x4,
4523
- HAS_NUMERIC_VALUE: 0x8,
4524
- HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,
4525
- HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,
4526
-
4527
- /**
4528
- * Inject some specialized knowledge about the DOM. This takes a config object
4529
- * with the following properties:
4530
- *
4531
- * isCustomAttribute: function that given an attribute name will return true
4532
- * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*
4533
- * attributes where it's impossible to enumerate all of the possible
4534
- * attribute names,
4535
- *
4536
- * Properties: object mapping DOM property name to one of the
4537
- * DOMPropertyInjection constants or null. If your attribute isn't in here,
4538
- * it won't get written to the DOM.
4539
- *
4540
- * DOMAttributeNames: object mapping React attribute name to the DOM
4541
- * attribute name. Attribute names not specified use the **lowercase**
4542
- * normalized name.
4543
- *
4544
- * DOMAttributeNamespaces: object mapping React attribute name to the DOM
4545
- * attribute namespace URL. (Attribute names not specified use no namespace.)
4546
- *
4547
- * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.
4548
- * Property names not specified use the normalized name.
4549
- *
4550
- * DOMMutationMethods: Properties that require special mutation methods. If
4551
- * `value` is undefined, the mutation method should unset the property.
4552
- *
4553
- * @param {object} domPropertyConfig the config as described above.
4554
- */
4555
- injectDOMPropertyConfig: function (domPropertyConfig) {
4556
- var Injection = DOMPropertyInjection;
4557
- var Properties = domPropertyConfig.Properties || {};
4558
- var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};
4559
- var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};
4560
- var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};
4561
- var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};
4562
-
4563
- if (domPropertyConfig.isCustomAttribute) {
4564
- DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);
4565
- }
4566
-
4567
- for (var propName in Properties) {
4568
- !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== '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;
4569
-
4570
- var lowerCased = propName.toLowerCase();
4571
- var propConfig = Properties[propName];
4572
-
4573
- var propertyInfo = {
4574
- attributeName: lowerCased,
4575
- attributeNamespace: null,
4576
- propertyName: propName,
4577
- mutationMethod: null,
4578
-
4579
- mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),
4580
- hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),
4581
- hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),
4582
- hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),
4583
- hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)
4584
- };
4585
- !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== '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;
4586
-
4587
- if (process.env.NODE_ENV !== 'production') {
4588
- DOMProperty.getPossibleStandardName[lowerCased] = propName;
4589
- }
4590
-
4591
- if (DOMAttributeNames.hasOwnProperty(propName)) {
4592
- var attributeName = DOMAttributeNames[propName];
4593
- propertyInfo.attributeName = attributeName;
4594
- if (process.env.NODE_ENV !== 'production') {
4595
- DOMProperty.getPossibleStandardName[attributeName] = propName;
4596
- }
4597
- }
4598
-
4599
- if (DOMAttributeNamespaces.hasOwnProperty(propName)) {
4600
- propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];
4601
- }
4602
-
4603
- if (DOMPropertyNames.hasOwnProperty(propName)) {
4604
- propertyInfo.propertyName = DOMPropertyNames[propName];
4605
- }
4606
-
4607
- if (DOMMutationMethods.hasOwnProperty(propName)) {
4608
- propertyInfo.mutationMethod = DOMMutationMethods[propName];
4609
- }
4610
-
4611
- DOMProperty.properties[propName] = propertyInfo;
4612
- }
4613
- }
4614
- };
4615
-
4616
- /* eslint-disable max-len */
4617
- 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';
4618
- /* eslint-enable max-len */
4619
-
4620
- /**
4621
- * DOMProperty exports lookup objects that can be used like functions:
4622
- *
4623
- * > DOMProperty.isValid['id']
4624
- * true
4625
- * > DOMProperty.isValid['foobar']
4626
- * undefined
4627
- *
4628
- * Although this may be confusing, it performs better in general.
4629
- *
4630
- * @see http://jsperf.com/key-exists
4631
- * @see http://jsperf.com/key-missing
4632
- */
4633
- var DOMProperty = {
4634
-
4635
- ID_ATTRIBUTE_NAME: 'data-reactid',
4636
- ROOT_ATTRIBUTE_NAME: 'data-reactroot',
4637
-
4638
- ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,
4639
- ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040',
4640
-
4641
- /**
4642
- * Map from property "standard name" to an object with info about how to set
4643
- * the property in the DOM. Each object contains:
4644
- *
4645
- * attributeName:
4646
- * Used when rendering markup or with `*Attribute()`.
4647
- * attributeNamespace
4648
- * propertyName:
4649
- * Used on DOM node instances. (This includes properties that mutate due to
4650
- * external factors.)
4651
- * mutationMethod:
4652
- * If non-null, used instead of the property or `setAttribute()` after
4653
- * initial render.
4654
- * mustUseProperty:
4655
- * Whether the property must be accessed and mutated as an object property.
4656
- * hasBooleanValue:
4657
- * Whether the property should be removed when set to a falsey value.
4658
- * hasNumericValue:
4659
- * Whether the property must be numeric or parse as a numeric and should be
4660
- * removed when set to a falsey value.
4661
- * hasPositiveNumericValue:
4662
- * Whether the property must be positive numeric or parse as a positive
4663
- * numeric and should be removed when set to a falsey value.
4664
- * hasOverloadedBooleanValue:
4665
- * Whether the property can be used as a flag as well as with a value.
4666
- * Removed when strictly equal to false; present without a value when
4667
- * strictly equal to true; present with a value otherwise.
4668
- */
4669
- properties: {},
4670
-
4671
- /**
4672
- * Mapping from lowercase property names to the properly cased version, used
4673
- * to warn in the case of missing properties. Available only in __DEV__.
4674
- *
4675
- * autofocus is predefined, because adding it to the property whitelist
4676
- * causes unintended side effects.
4677
- *
4678
- * @type {Object}
4679
- */
4680
- getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,
4681
-
4682
- /**
4683
- * All of the isCustomAttribute() functions that have been injected.
4684
- */
4685
- _isCustomAttributeFunctions: [],
4686
-
4687
- /**
4688
- * Checks whether a property name is a custom attribute.
4689
- * @method
4690
- */
4691
- isCustomAttribute: function (attributeName) {
4692
- for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {
4693
- var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];
4694
- if (isCustomAttributeFn(attributeName)) {
4695
- return true;
4696
- }
4697
- }
4698
- return false;
4699
- },
4700
-
4701
- injection: DOMPropertyInjection
4702
- };
4703
-
4704
- module.exports = DOMProperty;
4705
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
4706
-
4707
- /***/ },
4708
- /* 38 */
4709
- /***/ function(module, exports) {
4710
-
4711
- /**
4712
- * Copyright 2015-present, Facebook, Inc.
4713
- * All rights reserved.
4714
- *
4715
- * This source code is licensed under the BSD-style license found in the
4716
- * LICENSE file in the root directory of this source tree. An additional grant
4717
- * of patent rights can be found in the PATENTS file in the same directory.
4718
- *
4719
- */
4720
-
4721
- 'use strict';
4722
-
4723
- var ReactDOMComponentFlags = {
4724
- hasCachedChildNodes: 1 << 0
4725
- };
4726
-
4727
- module.exports = ReactDOMComponentFlags;
4728
-
4729
- /***/ },
4730
- /* 39 */
4731
- /***/ function(module, exports, __webpack_require__) {
4732
-
4733
- /**
4734
- * Copyright 2013-present, Facebook, Inc.
4735
- * All rights reserved.
4736
- *
4737
- * This source code is licensed under the BSD-style license found in the
4738
- * LICENSE file in the root directory of this source tree. An additional grant
4739
- * of patent rights can be found in the PATENTS file in the same directory.
4740
- *
4741
- */
4742
-
4743
- 'use strict';
4744
-
4745
- var ARIADOMPropertyConfig = __webpack_require__(40);
4746
- var BeforeInputEventPlugin = __webpack_require__(41);
4747
- var ChangeEventPlugin = __webpack_require__(57);
4748
- var DefaultEventPluginOrder = __webpack_require__(74);
4749
- var EnterLeaveEventPlugin = __webpack_require__(75);
4750
- var HTMLDOMPropertyConfig = __webpack_require__(80);
4751
- var ReactComponentBrowserEnvironment = __webpack_require__(81);
4752
- var ReactDOMComponent = __webpack_require__(94);
4753
- var ReactDOMComponentTree = __webpack_require__(35);
4754
- var ReactDOMEmptyComponent = __webpack_require__(139);
4755
- var ReactDOMTreeTraversal = __webpack_require__(140);
4756
- var ReactDOMTextComponent = __webpack_require__(141);
4757
- var ReactDefaultBatchingStrategy = __webpack_require__(142);
4758
- var ReactEventListener = __webpack_require__(143);
4759
- var ReactInjection = __webpack_require__(146);
4760
- var ReactReconcileTransaction = __webpack_require__(147);
4761
- var SVGDOMPropertyConfig = __webpack_require__(155);
4762
- var SelectEventPlugin = __webpack_require__(156);
4763
- var SimpleEventPlugin = __webpack_require__(157);
4764
-
4765
- var alreadyInjected = false;
4766
-
4767
- function inject() {
4768
- if (alreadyInjected) {
4769
- // TODO: This is currently true because these injections are shared between
4770
- // the client and the server package. They should be built independently
4771
- // and not share any injection state. Then this problem will be solved.
4772
- return;
4773
- }
4774
- alreadyInjected = true;
4775
-
4776
- ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);
4777
-
4778
- /**
4779
- * Inject modules for resolving DOM hierarchy and plugin ordering.
4780
- */
4781
- ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);
4782
- ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);
4783
- ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);
4784
-
4785
- /**
4786
- * Some important event plugins included by default (without having to require
4787
- * them).
4788
- */
4789
- ReactInjection.EventPluginHub.injectEventPluginsByName({
4790
- SimpleEventPlugin: SimpleEventPlugin,
4791
- EnterLeaveEventPlugin: EnterLeaveEventPlugin,
4792
- ChangeEventPlugin: ChangeEventPlugin,
4793
- SelectEventPlugin: SelectEventPlugin,
4794
- BeforeInputEventPlugin: BeforeInputEventPlugin
4795
- });
4796
-
4797
- ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);
4798
-
4799
- ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);
4800
-
4801
- ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);
4802
- ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
4803
- ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);
4804
-
4805
- ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {
4806
- return new ReactDOMEmptyComponent(instantiate);
4807
- });
4808
-
4809
- ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);
4810
- ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);
4811
-
4812
- ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);
4813
- }
4814
-
4815
- module.exports = {
4816
- inject: inject
4817
- };
4818
-
4819
- /***/ },
4820
- /* 40 */
4821
- /***/ function(module, exports) {
4822
-
4823
- /**
4824
- * Copyright 2013-present, Facebook, Inc.
4825
- * All rights reserved.
4826
- *
4827
- * This source code is licensed under the BSD-style license found in the
4828
- * LICENSE file in the root directory of this source tree. An additional grant
4829
- * of patent rights can be found in the PATENTS file in the same directory.
4830
- *
4831
- */
4832
-
4833
- 'use strict';
4834
-
4835
- var ARIADOMPropertyConfig = {
4836
- Properties: {
4837
- // Global States and Properties
4838
- 'aria-current': 0, // state
4839
- 'aria-details': 0,
4840
- 'aria-disabled': 0, // state
4841
- 'aria-hidden': 0, // state
4842
- 'aria-invalid': 0, // state
4843
- 'aria-keyshortcuts': 0,
4844
- 'aria-label': 0,
4845
- 'aria-roledescription': 0,
4846
- // Widget Attributes
4847
- 'aria-autocomplete': 0,
4848
- 'aria-checked': 0,
4849
- 'aria-expanded': 0,
4850
- 'aria-haspopup': 0,
4851
- 'aria-level': 0,
4852
- 'aria-modal': 0,
4853
- 'aria-multiline': 0,
4854
- 'aria-multiselectable': 0,
4855
- 'aria-orientation': 0,
4856
- 'aria-placeholder': 0,
4857
- 'aria-pressed': 0,
4858
- 'aria-readonly': 0,
4859
- 'aria-required': 0,
4860
- 'aria-selected': 0,
4861
- 'aria-sort': 0,
4862
- 'aria-valuemax': 0,
4863
- 'aria-valuemin': 0,
4864
- 'aria-valuenow': 0,
4865
- 'aria-valuetext': 0,
4866
- // Live Region Attributes
4867
- 'aria-atomic': 0,
4868
- 'aria-busy': 0,
4869
- 'aria-live': 0,
4870
- 'aria-relevant': 0,
4871
- // Drag-and-Drop Attributes
4872
- 'aria-dropeffect': 0,
4873
- 'aria-grabbed': 0,
4874
- // Relationship Attributes
4875
- 'aria-activedescendant': 0,
4876
- 'aria-colcount': 0,
4877
- 'aria-colindex': 0,
4878
- 'aria-colspan': 0,
4879
- 'aria-controls': 0,
4880
- 'aria-describedby': 0,
4881
- 'aria-errormessage': 0,
4882
- 'aria-flowto': 0,
4883
- 'aria-labelledby': 0,
4884
- 'aria-owns': 0,
4885
- 'aria-posinset': 0,
4886
- 'aria-rowcount': 0,
4887
- 'aria-rowindex': 0,
4888
- 'aria-rowspan': 0,
4889
- 'aria-setsize': 0
4890
- },
4891
- DOMAttributeNames: {},
4892
- DOMPropertyNames: {}
4893
- };
4894
-
4895
- module.exports = ARIADOMPropertyConfig;
4896
-
4897
- /***/ },
4898
- /* 41 */
4899
- /***/ function(module, exports, __webpack_require__) {
4900
-
4901
- /**
4902
- * Copyright 2013-present Facebook, Inc.
4903
- * All rights reserved.
4904
- *
4905
- * This source code is licensed under the BSD-style license found in the
4906
- * LICENSE file in the root directory of this source tree. An additional grant
4907
- * of patent rights can be found in the PATENTS file in the same directory.
4908
- *
4909
- */
4910
-
4911
- 'use strict';
4912
-
4913
- var EventPropagators = __webpack_require__(42);
4914
- var ExecutionEnvironment = __webpack_require__(49);
4915
- var FallbackCompositionState = __webpack_require__(50);
4916
- var SyntheticCompositionEvent = __webpack_require__(54);
4917
- var SyntheticInputEvent = __webpack_require__(56);
4918
-
4919
- var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
4920
- var START_KEYCODE = 229;
4921
-
4922
- var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;
4923
-
4924
- var documentMode = null;
4925
- if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {
4926
- documentMode = document.documentMode;
4927
- }
4928
-
4929
- // Webkit offers a very useful `textInput` event that can be used to
4930
- // directly represent `beforeInput`. The IE `textinput` event is not as
4931
- // useful, so we don't use it.
4932
- var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();
4933
-
4934
- // In IE9+, we have access to composition events, but the data supplied
4935
- // by the native compositionend event may be incorrect. Japanese ideographic
4936
- // spaces, for instance (\u3000) are not recorded correctly.
4937
- var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);
4938
-
4939
- /**
4940
- * Opera <= 12 includes TextEvent in window, but does not fire
4941
- * text input events. Rely on keypress instead.
4942
- */
4943
- function isPresto() {
4944
- var opera = window.opera;
4945
- return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;
4946
- }
4947
-
4948
- var SPACEBAR_CODE = 32;
4949
- var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);
4950
-
4951
- // Events and their corresponding property names.
4952
- var eventTypes = {
4953
- beforeInput: {
4954
- phasedRegistrationNames: {
4955
- bubbled: 'onBeforeInput',
4956
- captured: 'onBeforeInputCapture'
4957
- },
4958
- dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']
4959
- },
4960
- compositionEnd: {
4961
- phasedRegistrationNames: {
4962
- bubbled: 'onCompositionEnd',
4963
- captured: 'onCompositionEndCapture'
4964
- },
4965
- dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
4966
- },
4967
- compositionStart: {
4968
- phasedRegistrationNames: {
4969
- bubbled: 'onCompositionStart',
4970
- captured: 'onCompositionStartCapture'
4971
- },
4972
- dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
4973
- },
4974
- compositionUpdate: {
4975
- phasedRegistrationNames: {
4976
- bubbled: 'onCompositionUpdate',
4977
- captured: 'onCompositionUpdateCapture'
4978
- },
4979
- dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']
4980
- }
4981
- };
4982
-
4983
- // Track whether we've ever handled a keypress on the space key.
4984
- var hasSpaceKeypress = false;
4985
-
4986
- /**
4987
- * Return whether a native keypress event is assumed to be a command.
4988
- * This is required because Firefox fires `keypress` events for key commands
4989
- * (cut, copy, select-all, etc.) even though no character is inserted.
4990
- */
4991
- function isKeypressCommand(nativeEvent) {
4992
- return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&
4993
- // ctrlKey && altKey is equivalent to AltGr, and is not a command.
4994
- !(nativeEvent.ctrlKey && nativeEvent.altKey);
4995
- }
4996
-
4997
- /**
4998
- * Translate native top level events into event types.
4999
- *
5000
- * @param {string} topLevelType
5001
- * @return {object}
5002
- */
5003
- function getCompositionEventType(topLevelType) {
5004
- switch (topLevelType) {
5005
- case 'topCompositionStart':
5006
- return eventTypes.compositionStart;
5007
- case 'topCompositionEnd':
5008
- return eventTypes.compositionEnd;
5009
- case 'topCompositionUpdate':
5010
- return eventTypes.compositionUpdate;
5011
- }
5012
- }
5013
-
5014
- /**
5015
- * Does our fallback best-guess model think this event signifies that
5016
- * composition has begun?
5017
- *
5018
- * @param {string} topLevelType
5019
- * @param {object} nativeEvent
5020
- * @return {boolean}
5021
- */
5022
- function isFallbackCompositionStart(topLevelType, nativeEvent) {
5023
- return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;
5024
- }
5025
-
5026
- /**
5027
- * Does our fallback mode think that this event is the end of composition?
5028
- *
5029
- * @param {string} topLevelType
5030
- * @param {object} nativeEvent
5031
- * @return {boolean}
5032
- */
5033
- function isFallbackCompositionEnd(topLevelType, nativeEvent) {
5034
- switch (topLevelType) {
5035
- case 'topKeyUp':
5036
- // Command keys insert or clear IME input.
5037
- return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;
5038
- case 'topKeyDown':
5039
- // Expect IME keyCode on each keydown. If we get any other
5040
- // code we must have exited earlier.
5041
- return nativeEvent.keyCode !== START_KEYCODE;
5042
- case 'topKeyPress':
5043
- case 'topMouseDown':
5044
- case 'topBlur':
5045
- // Events are not possible without cancelling IME.
5046
- return true;
5047
- default:
5048
- return false;
5049
- }
5050
- }
5051
-
5052
- /**
5053
- * Google Input Tools provides composition data via a CustomEvent,
5054
- * with the `data` property populated in the `detail` object. If this
5055
- * is available on the event object, use it. If not, this is a plain
5056
- * composition event and we have nothing special to extract.
5057
- *
5058
- * @param {object} nativeEvent
5059
- * @return {?string}
5060
- */
5061
- function getDataFromCustomEvent(nativeEvent) {
5062
- var detail = nativeEvent.detail;
5063
- if (typeof detail === 'object' && 'data' in detail) {
5064
- return detail.data;
5065
- }
5066
- return null;
5067
- }
5068
-
5069
- // Track the current IME composition fallback object, if any.
5070
- var currentComposition = null;
5071
-
5072
- /**
5073
- * @return {?object} A SyntheticCompositionEvent.
5074
- */
5075
- function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5076
- var eventType;
5077
- var fallbackData;
5078
-
5079
- if (canUseCompositionEvent) {
5080
- eventType = getCompositionEventType(topLevelType);
5081
- } else if (!currentComposition) {
5082
- if (isFallbackCompositionStart(topLevelType, nativeEvent)) {
5083
- eventType = eventTypes.compositionStart;
5084
- }
5085
- } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {
5086
- eventType = eventTypes.compositionEnd;
5087
- }
5088
-
5089
- if (!eventType) {
5090
- return null;
5091
- }
5092
-
5093
- if (useFallbackCompositionData) {
5094
- // The current composition is stored statically and must not be
5095
- // overwritten while composition continues.
5096
- if (!currentComposition && eventType === eventTypes.compositionStart) {
5097
- currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);
5098
- } else if (eventType === eventTypes.compositionEnd) {
5099
- if (currentComposition) {
5100
- fallbackData = currentComposition.getData();
5101
- }
5102
- }
5103
- }
5104
-
5105
- var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);
5106
-
5107
- if (fallbackData) {
5108
- // Inject data generated from fallback path into the synthetic event.
5109
- // This matches the property of native CompositionEventInterface.
5110
- event.data = fallbackData;
5111
- } else {
5112
- var customData = getDataFromCustomEvent(nativeEvent);
5113
- if (customData !== null) {
5114
- event.data = customData;
5115
- }
5116
- }
5117
-
5118
- EventPropagators.accumulateTwoPhaseDispatches(event);
5119
- return event;
5120
- }
5121
-
5122
- /**
5123
- * @param {string} topLevelType Record from `EventConstants`.
5124
- * @param {object} nativeEvent Native browser event.
5125
- * @return {?string} The string corresponding to this `beforeInput` event.
5126
- */
5127
- function getNativeBeforeInputChars(topLevelType, nativeEvent) {
5128
- switch (topLevelType) {
5129
- case 'topCompositionEnd':
5130
- return getDataFromCustomEvent(nativeEvent);
5131
- case 'topKeyPress':
5132
- /**
5133
- * If native `textInput` events are available, our goal is to make
5134
- * use of them. However, there is a special case: the spacebar key.
5135
- * In Webkit, preventing default on a spacebar `textInput` event
5136
- * cancels character insertion, but it *also* causes the browser
5137
- * to fall back to its default spacebar behavior of scrolling the
5138
- * page.
5139
- *
5140
- * Tracking at:
5141
- * https://code.google.com/p/chromium/issues/detail?id=355103
5142
- *
5143
- * To avoid this issue, use the keypress event as if no `textInput`
5144
- * event is available.
5145
- */
5146
- var which = nativeEvent.which;
5147
- if (which !== SPACEBAR_CODE) {
5148
- return null;
5149
- }
5150
-
5151
- hasSpaceKeypress = true;
5152
- return SPACEBAR_CHAR;
5153
-
5154
- case 'topTextInput':
5155
- // Record the characters to be added to the DOM.
5156
- var chars = nativeEvent.data;
5157
-
5158
- // If it's a spacebar character, assume that we have already handled
5159
- // it at the keypress level and bail immediately. Android Chrome
5160
- // doesn't give us keycodes, so we need to blacklist it.
5161
- if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
5162
- return null;
5163
- }
5164
-
5165
- return chars;
5166
-
5167
- default:
5168
- // For other native event types, do nothing.
5169
- return null;
5170
- }
5171
- }
5172
-
5173
- /**
5174
- * For browsers that do not provide the `textInput` event, extract the
5175
- * appropriate string to use for SyntheticInputEvent.
5176
- *
5177
- * @param {string} topLevelType Record from `EventConstants`.
5178
- * @param {object} nativeEvent Native browser event.
5179
- * @return {?string} The fallback string for this `beforeInput` event.
5180
- */
5181
- function getFallbackBeforeInputChars(topLevelType, nativeEvent) {
5182
- // If we are currently composing (IME) and using a fallback to do so,
5183
- // try to extract the composed characters from the fallback object.
5184
- // If composition event is available, we extract a string only at
5185
- // compositionevent, otherwise extract it at fallback events.
5186
- if (currentComposition) {
5187
- if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {
5188
- var chars = currentComposition.getData();
5189
- FallbackCompositionState.release(currentComposition);
5190
- currentComposition = null;
5191
- return chars;
5192
- }
5193
- return null;
5194
- }
5195
-
5196
- switch (topLevelType) {
5197
- case 'topPaste':
5198
- // If a paste event occurs after a keypress, throw out the input
5199
- // chars. Paste events should not lead to BeforeInput events.
5200
- return null;
5201
- case 'topKeyPress':
5202
- /**
5203
- * As of v27, Firefox may fire keypress events even when no character
5204
- * will be inserted. A few possibilities:
5205
- *
5206
- * - `which` is `0`. Arrow keys, Esc key, etc.
5207
- *
5208
- * - `which` is the pressed key code, but no char is available.
5209
- * Ex: 'AltGr + d` in Polish. There is no modified character for
5210
- * this key combination and no character is inserted into the
5211
- * document, but FF fires the keypress for char code `100` anyway.
5212
- * No `input` event will occur.
5213
- *
5214
- * - `which` is the pressed key code, but a command combination is
5215
- * being used. Ex: `Cmd+C`. No character is inserted, and no
5216
- * `input` event will occur.
5217
- */
5218
- if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {
5219
- return String.fromCharCode(nativeEvent.which);
5220
- }
5221
- return null;
5222
- case 'topCompositionEnd':
5223
- return useFallbackCompositionData ? null : nativeEvent.data;
5224
- default:
5225
- return null;
5226
- }
5227
- }
5228
-
5229
- /**
5230
- * Extract a SyntheticInputEvent for `beforeInput`, based on either native
5231
- * `textInput` or fallback behavior.
5232
- *
5233
- * @return {?object} A SyntheticInputEvent.
5234
- */
5235
- function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5236
- var chars;
5237
-
5238
- if (canUseTextInputEvent) {
5239
- chars = getNativeBeforeInputChars(topLevelType, nativeEvent);
5240
- } else {
5241
- chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);
5242
- }
5243
-
5244
- // If no characters are being inserted, no BeforeInput event should
5245
- // be fired.
5246
- if (!chars) {
5247
- return null;
5248
- }
5249
-
5250
- var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);
5251
-
5252
- event.data = chars;
5253
- EventPropagators.accumulateTwoPhaseDispatches(event);
5254
- return event;
5255
- }
5256
-
5257
- /**
5258
- * Create an `onBeforeInput` event to match
5259
- * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
5260
- *
5261
- * This event plugin is based on the native `textInput` event
5262
- * available in Chrome, Safari, Opera, and IE. This event fires after
5263
- * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
5264
- *
5265
- * `beforeInput` is spec'd but not implemented in any browsers, and
5266
- * the `input` event does not provide any useful information about what has
5267
- * actually been added, contrary to the spec. Thus, `textInput` is the best
5268
- * available event to identify the characters that have actually been inserted
5269
- * into the target node.
5270
- *
5271
- * This plugin is also responsible for emitting `composition` events, thus
5272
- * allowing us to share composition fallback code for both `beforeInput` and
5273
- * `composition` event types.
5274
- */
5275
- var BeforeInputEventPlugin = {
5276
-
5277
- eventTypes: eventTypes,
5278
-
5279
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5280
- return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];
5281
- }
5282
- };
5283
-
5284
- module.exports = BeforeInputEventPlugin;
5285
-
5286
- /***/ },
5287
- /* 42 */
5288
- /***/ function(module, exports, __webpack_require__) {
5289
-
5290
- /* WEBPACK VAR INJECTION */(function(process) {/**
5291
- * Copyright 2013-present, Facebook, Inc.
5292
- * All rights reserved.
5293
- *
5294
- * This source code is licensed under the BSD-style license found in the
5295
- * LICENSE file in the root directory of this source tree. An additional grant
5296
- * of patent rights can be found in the PATENTS file in the same directory.
5297
- *
5298
- */
5299
-
5300
- 'use strict';
5301
-
5302
- var EventPluginHub = __webpack_require__(43);
5303
- var EventPluginUtils = __webpack_require__(45);
5304
-
5305
- var accumulateInto = __webpack_require__(47);
5306
- var forEachAccumulated = __webpack_require__(48);
5307
- var warning = __webpack_require__(12);
5308
-
5309
- var getListener = EventPluginHub.getListener;
5310
-
5311
- /**
5312
- * Some event types have a notion of different registration names for different
5313
- * "phases" of propagation. This finds listeners by a given phase.
5314
- */
5315
- function listenerAtPhase(inst, event, propagationPhase) {
5316
- var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];
5317
- return getListener(inst, registrationName);
5318
- }
5319
-
5320
- /**
5321
- * Tags a `SyntheticEvent` with dispatched listeners. Creating this function
5322
- * here, allows us to not have to bind or create functions for each event.
5323
- * Mutating the event's members allows us to not have to create a wrapping
5324
- * "dispatch" object that pairs the event with the listener.
5325
- */
5326
- function accumulateDirectionalDispatches(inst, phase, event) {
5327
- if (process.env.NODE_ENV !== 'production') {
5328
- process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;
5329
- }
5330
- var listener = listenerAtPhase(inst, event, phase);
5331
- if (listener) {
5332
- event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
5333
- event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
5334
- }
5335
- }
5336
-
5337
- /**
5338
- * Collect dispatches (must be entirely collected before dispatching - see unit
5339
- * tests). Lazily allocate the array to conserve memory. We must loop through
5340
- * each event and perform the traversal for each one. We cannot perform a
5341
- * single traversal for the entire collection of events because each event may
5342
- * have a different target.
5343
- */
5344
- function accumulateTwoPhaseDispatchesSingle(event) {
5345
- if (event && event.dispatchConfig.phasedRegistrationNames) {
5346
- EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);
5347
- }
5348
- }
5349
-
5350
- /**
5351
- * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.
5352
- */
5353
- function accumulateTwoPhaseDispatchesSingleSkipTarget(event) {
5354
- if (event && event.dispatchConfig.phasedRegistrationNames) {
5355
- var targetInst = event._targetInst;
5356
- var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;
5357
- EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);
5358
- }
5359
- }
5360
-
5361
- /**
5362
- * Accumulates without regard to direction, does not look for phased
5363
- * registration names. Same as `accumulateDirectDispatchesSingle` but without
5364
- * requiring that the `dispatchMarker` be the same as the dispatched ID.
5365
- */
5366
- function accumulateDispatches(inst, ignoredDirection, event) {
5367
- if (event && event.dispatchConfig.registrationName) {
5368
- var registrationName = event.dispatchConfig.registrationName;
5369
- var listener = getListener(inst, registrationName);
5370
- if (listener) {
5371
- event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
5372
- event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
5373
- }
5374
- }
5375
- }
5376
-
5377
- /**
5378
- * Accumulates dispatches on an `SyntheticEvent`, but only for the
5379
- * `dispatchMarker`.
5380
- * @param {SyntheticEvent} event
5381
- */
5382
- function accumulateDirectDispatchesSingle(event) {
5383
- if (event && event.dispatchConfig.registrationName) {
5384
- accumulateDispatches(event._targetInst, null, event);
5385
- }
5386
- }
5387
-
5388
- function accumulateTwoPhaseDispatches(events) {
5389
- forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);
5390
- }
5391
-
5392
- function accumulateTwoPhaseDispatchesSkipTarget(events) {
5393
- forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);
5394
- }
5395
-
5396
- function accumulateEnterLeaveDispatches(leave, enter, from, to) {
5397
- EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);
5398
- }
5399
-
5400
- function accumulateDirectDispatches(events) {
5401
- forEachAccumulated(events, accumulateDirectDispatchesSingle);
5402
- }
5403
-
5404
- /**
5405
- * A small set of propagation patterns, each of which will accept a small amount
5406
- * of information, and generate a set of "dispatch ready event objects" - which
5407
- * are sets of events that have already been annotated with a set of dispatched
5408
- * listener functions/ids. The API is designed this way to discourage these
5409
- * propagation strategies from actually executing the dispatches, since we
5410
- * always want to collect the entire set of dispatches before executing event a
5411
- * single one.
5412
- *
5413
- * @constructor EventPropagators
5414
- */
5415
- var EventPropagators = {
5416
- accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,
5417
- accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,
5418
- accumulateDirectDispatches: accumulateDirectDispatches,
5419
- accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches
5420
- };
5421
-
5422
- module.exports = EventPropagators;
5423
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
5424
-
5425
- /***/ },
5426
- /* 43 */
5427
- /***/ function(module, exports, __webpack_require__) {
5428
-
5429
- /* WEBPACK VAR INJECTION */(function(process) {/**
5430
- * Copyright 2013-present, Facebook, Inc.
5431
- * All rights reserved.
5432
- *
5433
- * This source code is licensed under the BSD-style license found in the
5434
- * LICENSE file in the root directory of this source tree. An additional grant
5435
- * of patent rights can be found in the PATENTS file in the same directory.
5436
- *
5437
- */
5438
-
5439
- 'use strict';
5440
-
5441
- var _prodInvariant = __webpack_require__(36);
5442
-
5443
- var EventPluginRegistry = __webpack_require__(44);
5444
- var EventPluginUtils = __webpack_require__(45);
5445
- var ReactErrorUtils = __webpack_require__(46);
5446
-
5447
- var accumulateInto = __webpack_require__(47);
5448
- var forEachAccumulated = __webpack_require__(48);
5449
- var invariant = __webpack_require__(9);
5450
-
5451
- /**
5452
- * Internal store for event listeners
5453
- */
5454
- var listenerBank = {};
5455
-
5456
- /**
5457
- * Internal queue of events that have accumulated their dispatches and are
5458
- * waiting to have their dispatches executed.
5459
- */
5460
- var eventQueue = null;
5461
-
5462
- /**
5463
- * Dispatches an event and releases it back into the pool, unless persistent.
5464
- *
5465
- * @param {?object} event Synthetic event to be dispatched.
5466
- * @param {boolean} simulated If the event is simulated (changes exn behavior)
5467
- * @private
5468
- */
5469
- var executeDispatchesAndRelease = function (event, simulated) {
5470
- if (event) {
5471
- EventPluginUtils.executeDispatchesInOrder(event, simulated);
5472
-
5473
- if (!event.isPersistent()) {
5474
- event.constructor.release(event);
5475
- }
5476
- }
5477
- };
5478
- var executeDispatchesAndReleaseSimulated = function (e) {
5479
- return executeDispatchesAndRelease(e, true);
5480
- };
5481
- var executeDispatchesAndReleaseTopLevel = function (e) {
5482
- return executeDispatchesAndRelease(e, false);
5483
- };
5484
-
5485
- var getDictionaryKey = function (inst) {
5486
- // Prevents V8 performance issue:
5487
- // https://github.com/facebook/react/pull/7232
5488
- return '.' + inst._rootNodeID;
5489
- };
5490
-
5491
- function isInteractive(tag) {
5492
- return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';
5493
- }
5494
-
5495
- function shouldPreventMouseEvent(name, type, props) {
5496
- switch (name) {
5497
- case 'onClick':
5498
- case 'onClickCapture':
5499
- case 'onDoubleClick':
5500
- case 'onDoubleClickCapture':
5501
- case 'onMouseDown':
5502
- case 'onMouseDownCapture':
5503
- case 'onMouseMove':
5504
- case 'onMouseMoveCapture':
5505
- case 'onMouseUp':
5506
- case 'onMouseUpCapture':
5507
- return !!(props.disabled && isInteractive(type));
5508
- default:
5509
- return false;
5510
- }
5511
- }
5512
-
5513
- /**
5514
- * This is a unified interface for event plugins to be installed and configured.
5515
- *
5516
- * Event plugins can implement the following properties:
5517
- *
5518
- * `extractEvents` {function(string, DOMEventTarget, string, object): *}
5519
- * Required. When a top-level event is fired, this method is expected to
5520
- * extract synthetic events that will in turn be queued and dispatched.
5521
- *
5522
- * `eventTypes` {object}
5523
- * Optional, plugins that fire events must publish a mapping of registration
5524
- * names that are used to register listeners. Values of this mapping must
5525
- * be objects that contain `registrationName` or `phasedRegistrationNames`.
5526
- *
5527
- * `executeDispatch` {function(object, function, string)}
5528
- * Optional, allows plugins to override how an event gets dispatched. By
5529
- * default, the listener is simply invoked.
5530
- *
5531
- * Each plugin that is injected into `EventsPluginHub` is immediately operable.
5532
- *
5533
- * @public
5534
- */
5535
- var EventPluginHub = {
5536
-
5537
- /**
5538
- * Methods for injecting dependencies.
5539
- */
5540
- injection: {
5541
-
5542
- /**
5543
- * @param {array} InjectedEventPluginOrder
5544
- * @public
5545
- */
5546
- injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,
5547
-
5548
- /**
5549
- * @param {object} injectedNamesToPlugins Map from names to plugin modules.
5550
- */
5551
- injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName
5552
-
5553
- },
5554
-
5555
- /**
5556
- * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.
5557
- *
5558
- * @param {object} inst The instance, which is the source of events.
5559
- * @param {string} registrationName Name of listener (e.g. `onClick`).
5560
- * @param {function} listener The callback to store.
5561
- */
5562
- putListener: function (inst, registrationName, listener) {
5563
- !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;
5564
-
5565
- var key = getDictionaryKey(inst);
5566
- var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});
5567
- bankForRegistrationName[key] = listener;
5568
-
5569
- var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
5570
- if (PluginModule && PluginModule.didPutListener) {
5571
- PluginModule.didPutListener(inst, registrationName, listener);
5572
- }
5573
- },
5574
-
5575
- /**
5576
- * @param {object} inst The instance, which is the source of events.
5577
- * @param {string} registrationName Name of listener (e.g. `onClick`).
5578
- * @return {?function} The stored callback.
5579
- */
5580
- getListener: function (inst, registrationName) {
5581
- // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not
5582
- // live here; needs to be moved to a better place soon
5583
- var bankForRegistrationName = listenerBank[registrationName];
5584
- if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {
5585
- return null;
5586
- }
5587
- var key = getDictionaryKey(inst);
5588
- return bankForRegistrationName && bankForRegistrationName[key];
5589
- },
5590
-
5591
- /**
5592
- * Deletes a listener from the registration bank.
5593
- *
5594
- * @param {object} inst The instance, which is the source of events.
5595
- * @param {string} registrationName Name of listener (e.g. `onClick`).
5596
- */
5597
- deleteListener: function (inst, registrationName) {
5598
- var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
5599
- if (PluginModule && PluginModule.willDeleteListener) {
5600
- PluginModule.willDeleteListener(inst, registrationName);
5601
- }
5602
-
5603
- var bankForRegistrationName = listenerBank[registrationName];
5604
- // TODO: This should never be null -- when is it?
5605
- if (bankForRegistrationName) {
5606
- var key = getDictionaryKey(inst);
5607
- delete bankForRegistrationName[key];
5608
- }
5609
- },
5610
-
5611
- /**
5612
- * Deletes all listeners for the DOM element with the supplied ID.
5613
- *
5614
- * @param {object} inst The instance, which is the source of events.
5615
- */
5616
- deleteAllListeners: function (inst) {
5617
- var key = getDictionaryKey(inst);
5618
- for (var registrationName in listenerBank) {
5619
- if (!listenerBank.hasOwnProperty(registrationName)) {
5620
- continue;
5621
- }
5622
-
5623
- if (!listenerBank[registrationName][key]) {
5624
- continue;
5625
- }
5626
-
5627
- var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];
5628
- if (PluginModule && PluginModule.willDeleteListener) {
5629
- PluginModule.willDeleteListener(inst, registrationName);
5630
- }
5631
-
5632
- delete listenerBank[registrationName][key];
5633
- }
5634
- },
5635
-
5636
- /**
5637
- * Allows registered plugins an opportunity to extract events from top-level
5638
- * native browser events.
5639
- *
5640
- * @return {*} An accumulation of synthetic events.
5641
- * @internal
5642
- */
5643
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
5644
- var events;
5645
- var plugins = EventPluginRegistry.plugins;
5646
- for (var i = 0; i < plugins.length; i++) {
5647
- // Not every plugin in the ordering may be loaded at runtime.
5648
- var possiblePlugin = plugins[i];
5649
- if (possiblePlugin) {
5650
- var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);
5651
- if (extractedEvents) {
5652
- events = accumulateInto(events, extractedEvents);
5653
- }
5654
- }
5655
- }
5656
- return events;
5657
- },
5658
-
5659
- /**
5660
- * Enqueues a synthetic event that should be dispatched when
5661
- * `processEventQueue` is invoked.
5662
- *
5663
- * @param {*} events An accumulation of synthetic events.
5664
- * @internal
5665
- */
5666
- enqueueEvents: function (events) {
5667
- if (events) {
5668
- eventQueue = accumulateInto(eventQueue, events);
5669
- }
5670
- },
5671
-
5672
- /**
5673
- * Dispatches all synthetic events on the event queue.
5674
- *
5675
- * @internal
5676
- */
5677
- processEventQueue: function (simulated) {
5678
- // Set `eventQueue` to null before processing it so that we can tell if more
5679
- // events get enqueued while processing.
5680
- var processingEventQueue = eventQueue;
5681
- eventQueue = null;
5682
- if (simulated) {
5683
- forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);
5684
- } else {
5685
- forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);
5686
- }
5687
- !!eventQueue ? process.env.NODE_ENV !== '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;
5688
- // This would be a good time to rethrow if any of the event handlers threw.
5689
- ReactErrorUtils.rethrowCaughtError();
5690
- },
5691
-
5692
- /**
5693
- * These are needed for tests only. Do not use!
5694
- */
5695
- __purge: function () {
5696
- listenerBank = {};
5697
- },
5698
-
5699
- __getListenerBank: function () {
5700
- return listenerBank;
5701
- }
5702
-
5703
- };
5704
-
5705
- module.exports = EventPluginHub;
5706
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
5707
-
5708
- /***/ },
5709
- /* 44 */
5710
- /***/ function(module, exports, __webpack_require__) {
5711
-
5712
- /* WEBPACK VAR INJECTION */(function(process) {/**
5713
- * Copyright 2013-present, Facebook, Inc.
5714
- * All rights reserved.
5715
- *
5716
- * This source code is licensed under the BSD-style license found in the
5717
- * LICENSE file in the root directory of this source tree. An additional grant
5718
- * of patent rights can be found in the PATENTS file in the same directory.
5719
- *
5720
- *
5721
- */
5722
-
5723
- 'use strict';
5724
-
5725
- var _prodInvariant = __webpack_require__(36);
5726
-
5727
- var invariant = __webpack_require__(9);
5728
-
5729
- /**
5730
- * Injectable ordering of event plugins.
5731
- */
5732
- var eventPluginOrder = null;
5733
-
5734
- /**
5735
- * Injectable mapping from names to event plugin modules.
5736
- */
5737
- var namesToPlugins = {};
5738
-
5739
- /**
5740
- * Recomputes the plugin list using the injected plugins and plugin ordering.
5741
- *
5742
- * @private
5743
- */
5744
- function recomputePluginOrdering() {
5745
- if (!eventPluginOrder) {
5746
- // Wait until an `eventPluginOrder` is injected.
5747
- return;
5748
- }
5749
- for (var pluginName in namesToPlugins) {
5750
- var pluginModule = namesToPlugins[pluginName];
5751
- var pluginIndex = eventPluginOrder.indexOf(pluginName);
5752
- !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;
5753
- if (EventPluginRegistry.plugins[pluginIndex]) {
5754
- continue;
5755
- }
5756
- !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;
5757
- EventPluginRegistry.plugins[pluginIndex] = pluginModule;
5758
- var publishedEvents = pluginModule.eventTypes;
5759
- for (var eventName in publishedEvents) {
5760
- !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;
5761
- }
5762
- }
5763
- }
5764
-
5765
- /**
5766
- * Publishes an event so that it can be dispatched by the supplied plugin.
5767
- *
5768
- * @param {object} dispatchConfig Dispatch configuration for the event.
5769
- * @param {object} PluginModule Plugin publishing the event.
5770
- * @return {boolean} True if the event was successfully published.
5771
- * @private
5772
- */
5773
- function publishEventForPlugin(dispatchConfig, pluginModule, eventName) {
5774
- !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;
5775
- EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;
5776
-
5777
- var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
5778
- if (phasedRegistrationNames) {
5779
- for (var phaseName in phasedRegistrationNames) {
5780
- if (phasedRegistrationNames.hasOwnProperty(phaseName)) {
5781
- var phasedRegistrationName = phasedRegistrationNames[phaseName];
5782
- publishRegistrationName(phasedRegistrationName, pluginModule, eventName);
5783
- }
5784
- }
5785
- return true;
5786
- } else if (dispatchConfig.registrationName) {
5787
- publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);
5788
- return true;
5789
- }
5790
- return false;
5791
- }
5792
-
5793
- /**
5794
- * Publishes a registration name that is used to identify dispatched events and
5795
- * can be used with `EventPluginHub.putListener` to register listeners.
5796
- *
5797
- * @param {string} registrationName Registration name to add.
5798
- * @param {object} PluginModule Plugin publishing the event.
5799
- * @private
5800
- */
5801
- function publishRegistrationName(registrationName, pluginModule, eventName) {
5802
- !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;
5803
- EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;
5804
- EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;
5805
-
5806
- if (process.env.NODE_ENV !== 'production') {
5807
- var lowerCasedName = registrationName.toLowerCase();
5808
- EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;
5809
-
5810
- if (registrationName === 'onDoubleClick') {
5811
- EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;
5812
- }
5813
- }
5814
- }
5815
-
5816
- /**
5817
- * Registers plugins so that they can extract and dispatch events.
5818
- *
5819
- * @see {EventPluginHub}
5820
- */
5821
- var EventPluginRegistry = {
5822
-
5823
- /**
5824
- * Ordered list of injected plugins.
5825
- */
5826
- plugins: [],
5827
-
5828
- /**
5829
- * Mapping from event name to dispatch config
5830
- */
5831
- eventNameDispatchConfigs: {},
5832
-
5833
- /**
5834
- * Mapping from registration name to plugin module
5835
- */
5836
- registrationNameModules: {},
5837
-
5838
- /**
5839
- * Mapping from registration name to event name
5840
- */
5841
- registrationNameDependencies: {},
5842
-
5843
- /**
5844
- * Mapping from lowercase registration names to the properly cased version,
5845
- * used to warn in the case of missing event handlers. Available
5846
- * only in __DEV__.
5847
- * @type {Object}
5848
- */
5849
- possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,
5850
- // Trust the developer to only use possibleRegistrationNames in __DEV__
5851
-
5852
- /**
5853
- * Injects an ordering of plugins (by plugin name). This allows the ordering
5854
- * to be decoupled from injection of the actual plugins so that ordering is
5855
- * always deterministic regardless of packaging, on-the-fly injection, etc.
5856
- *
5857
- * @param {array} InjectedEventPluginOrder
5858
- * @internal
5859
- * @see {EventPluginHub.injection.injectEventPluginOrder}
5860
- */
5861
- injectEventPluginOrder: function (injectedEventPluginOrder) {
5862
- !!eventPluginOrder ? process.env.NODE_ENV !== '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;
5863
- // Clone the ordering so it cannot be dynamically mutated.
5864
- eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);
5865
- recomputePluginOrdering();
5866
- },
5867
-
5868
- /**
5869
- * Injects plugins to be used by `EventPluginHub`. The plugin names must be
5870
- * in the ordering injected by `injectEventPluginOrder`.
5871
- *
5872
- * Plugins can be injected as part of page initialization or on-the-fly.
5873
- *
5874
- * @param {object} injectedNamesToPlugins Map from names to plugin modules.
5875
- * @internal
5876
- * @see {EventPluginHub.injection.injectEventPluginsByName}
5877
- */
5878
- injectEventPluginsByName: function (injectedNamesToPlugins) {
5879
- var isOrderingDirty = false;
5880
- for (var pluginName in injectedNamesToPlugins) {
5881
- if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {
5882
- continue;
5883
- }
5884
- var pluginModule = injectedNamesToPlugins[pluginName];
5885
- if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {
5886
- !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;
5887
- namesToPlugins[pluginName] = pluginModule;
5888
- isOrderingDirty = true;
5889
- }
5890
- }
5891
- if (isOrderingDirty) {
5892
- recomputePluginOrdering();
5893
- }
5894
- },
5895
-
5896
- /**
5897
- * Looks up the plugin for the supplied event.
5898
- *
5899
- * @param {object} event A synthetic event.
5900
- * @return {?object} The plugin that created the supplied event.
5901
- * @internal
5902
- */
5903
- getPluginModuleForEvent: function (event) {
5904
- var dispatchConfig = event.dispatchConfig;
5905
- if (dispatchConfig.registrationName) {
5906
- return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;
5907
- }
5908
- if (dispatchConfig.phasedRegistrationNames !== undefined) {
5909
- // pulling phasedRegistrationNames out of dispatchConfig helps Flow see
5910
- // that it is not undefined.
5911
- var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
5912
-
5913
- for (var phase in phasedRegistrationNames) {
5914
- if (!phasedRegistrationNames.hasOwnProperty(phase)) {
5915
- continue;
5916
- }
5917
- var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];
5918
- if (pluginModule) {
5919
- return pluginModule;
5920
- }
5921
- }
5922
- }
5923
- return null;
5924
- },
5925
-
5926
- /**
5927
- * Exposed for unit testing.
5928
- * @private
5929
- */
5930
- _resetEventPlugins: function () {
5931
- eventPluginOrder = null;
5932
- for (var pluginName in namesToPlugins) {
5933
- if (namesToPlugins.hasOwnProperty(pluginName)) {
5934
- delete namesToPlugins[pluginName];
5935
- }
5936
- }
5937
- EventPluginRegistry.plugins.length = 0;
5938
-
5939
- var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;
5940
- for (var eventName in eventNameDispatchConfigs) {
5941
- if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {
5942
- delete eventNameDispatchConfigs[eventName];
5943
- }
5944
- }
5945
-
5946
- var registrationNameModules = EventPluginRegistry.registrationNameModules;
5947
- for (var registrationName in registrationNameModules) {
5948
- if (registrationNameModules.hasOwnProperty(registrationName)) {
5949
- delete registrationNameModules[registrationName];
5950
- }
5951
- }
5952
-
5953
- if (process.env.NODE_ENV !== 'production') {
5954
- var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;
5955
- for (var lowerCasedName in possibleRegistrationNames) {
5956
- if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {
5957
- delete possibleRegistrationNames[lowerCasedName];
5958
- }
5959
- }
5960
- }
5961
- }
5962
-
5963
- };
5964
-
5965
- module.exports = EventPluginRegistry;
5966
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
5967
-
5968
- /***/ },
5969
- /* 45 */
5970
- /***/ function(module, exports, __webpack_require__) {
5971
-
5972
- /* WEBPACK VAR INJECTION */(function(process) {/**
5973
- * Copyright 2013-present, Facebook, Inc.
5974
- * All rights reserved.
5975
- *
5976
- * This source code is licensed under the BSD-style license found in the
5977
- * LICENSE file in the root directory of this source tree. An additional grant
5978
- * of patent rights can be found in the PATENTS file in the same directory.
5979
- *
5980
- */
5981
-
5982
- 'use strict';
5983
-
5984
- var _prodInvariant = __webpack_require__(36);
5985
-
5986
- var ReactErrorUtils = __webpack_require__(46);
5987
-
5988
- var invariant = __webpack_require__(9);
5989
- var warning = __webpack_require__(12);
5990
-
5991
- /**
5992
- * Injected dependencies:
5993
- */
5994
-
5995
- /**
5996
- * - `ComponentTree`: [required] Module that can convert between React instances
5997
- * and actual node references.
5998
- */
5999
- var ComponentTree;
6000
- var TreeTraversal;
6001
- var injection = {
6002
- injectComponentTree: function (Injected) {
6003
- ComponentTree = Injected;
6004
- if (process.env.NODE_ENV !== 'production') {
6005
- process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;
6006
- }
6007
- },
6008
- injectTreeTraversal: function (Injected) {
6009
- TreeTraversal = Injected;
6010
- if (process.env.NODE_ENV !== 'production') {
6011
- process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;
6012
- }
6013
- }
6014
- };
6015
-
6016
- function isEndish(topLevelType) {
6017
- return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';
6018
- }
6019
-
6020
- function isMoveish(topLevelType) {
6021
- return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';
6022
- }
6023
- function isStartish(topLevelType) {
6024
- return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';
6025
- }
6026
-
6027
- var validateEventDispatches;
6028
- if (process.env.NODE_ENV !== 'production') {
6029
- validateEventDispatches = function (event) {
6030
- var dispatchListeners = event._dispatchListeners;
6031
- var dispatchInstances = event._dispatchInstances;
6032
-
6033
- var listenersIsArr = Array.isArray(dispatchListeners);
6034
- var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;
6035
-
6036
- var instancesIsArr = Array.isArray(dispatchInstances);
6037
- var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;
6038
-
6039
- process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;
6040
- };
6041
- }
6042
-
6043
- /**
6044
- * Dispatch the event to the listener.
6045
- * @param {SyntheticEvent} event SyntheticEvent to handle
6046
- * @param {boolean} simulated If the event is simulated (changes exn behavior)
6047
- * @param {function} listener Application-level callback
6048
- * @param {*} inst Internal component instance
6049
- */
6050
- function executeDispatch(event, simulated, listener, inst) {
6051
- var type = event.type || 'unknown-event';
6052
- event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);
6053
- if (simulated) {
6054
- ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);
6055
- } else {
6056
- ReactErrorUtils.invokeGuardedCallback(type, listener, event);
6057
- }
6058
- event.currentTarget = null;
6059
- }
6060
-
6061
- /**
6062
- * Standard/simple iteration through an event's collected dispatches.
6063
- */
6064
- function executeDispatchesInOrder(event, simulated) {
6065
- var dispatchListeners = event._dispatchListeners;
6066
- var dispatchInstances = event._dispatchInstances;
6067
- if (process.env.NODE_ENV !== 'production') {
6068
- validateEventDispatches(event);
6069
- }
6070
- if (Array.isArray(dispatchListeners)) {
6071
- for (var i = 0; i < dispatchListeners.length; i++) {
6072
- if (event.isPropagationStopped()) {
6073
- break;
6074
- }
6075
- // Listeners and Instances are two parallel arrays that are always in sync.
6076
- executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);
6077
- }
6078
- } else if (dispatchListeners) {
6079
- executeDispatch(event, simulated, dispatchListeners, dispatchInstances);
6080
- }
6081
- event._dispatchListeners = null;
6082
- event._dispatchInstances = null;
6083
- }
6084
-
6085
- /**
6086
- * Standard/simple iteration through an event's collected dispatches, but stops
6087
- * at the first dispatch execution returning true, and returns that id.
6088
- *
6089
- * @return {?string} id of the first dispatch execution who's listener returns
6090
- * true, or null if no listener returned true.
6091
- */
6092
- function executeDispatchesInOrderStopAtTrueImpl(event) {
6093
- var dispatchListeners = event._dispatchListeners;
6094
- var dispatchInstances = event._dispatchInstances;
6095
- if (process.env.NODE_ENV !== 'production') {
6096
- validateEventDispatches(event);
6097
- }
6098
- if (Array.isArray(dispatchListeners)) {
6099
- for (var i = 0; i < dispatchListeners.length; i++) {
6100
- if (event.isPropagationStopped()) {
6101
- break;
6102
- }
6103
- // Listeners and Instances are two parallel arrays that are always in sync.
6104
- if (dispatchListeners[i](event, dispatchInstances[i])) {
6105
- return dispatchInstances[i];
6106
- }
6107
- }
6108
- } else if (dispatchListeners) {
6109
- if (dispatchListeners(event, dispatchInstances)) {
6110
- return dispatchInstances;
6111
- }
6112
- }
6113
- return null;
6114
- }
6115
-
6116
- /**
6117
- * @see executeDispatchesInOrderStopAtTrueImpl
6118
- */
6119
- function executeDispatchesInOrderStopAtTrue(event) {
6120
- var ret = executeDispatchesInOrderStopAtTrueImpl(event);
6121
- event._dispatchInstances = null;
6122
- event._dispatchListeners = null;
6123
- return ret;
6124
- }
6125
-
6126
- /**
6127
- * Execution of a "direct" dispatch - there must be at most one dispatch
6128
- * accumulated on the event or it is considered an error. It doesn't really make
6129
- * sense for an event with multiple dispatches (bubbled) to keep track of the
6130
- * return values at each dispatch execution, but it does tend to make sense when
6131
- * dealing with "direct" dispatches.
6132
- *
6133
- * @return {*} The return value of executing the single dispatch.
6134
- */
6135
- function executeDirectDispatch(event) {
6136
- if (process.env.NODE_ENV !== 'production') {
6137
- validateEventDispatches(event);
6138
- }
6139
- var dispatchListener = event._dispatchListeners;
6140
- var dispatchInstance = event._dispatchInstances;
6141
- !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;
6142
- event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;
6143
- var res = dispatchListener ? dispatchListener(event) : null;
6144
- event.currentTarget = null;
6145
- event._dispatchListeners = null;
6146
- event._dispatchInstances = null;
6147
- return res;
6148
- }
6149
-
6150
- /**
6151
- * @param {SyntheticEvent} event
6152
- * @return {boolean} True iff number of dispatches accumulated is greater than 0.
6153
- */
6154
- function hasDispatches(event) {
6155
- return !!event._dispatchListeners;
6156
- }
6157
-
6158
- /**
6159
- * General utilities that are useful in creating custom Event Plugins.
6160
- */
6161
- var EventPluginUtils = {
6162
- isEndish: isEndish,
6163
- isMoveish: isMoveish,
6164
- isStartish: isStartish,
6165
-
6166
- executeDirectDispatch: executeDirectDispatch,
6167
- executeDispatchesInOrder: executeDispatchesInOrder,
6168
- executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,
6169
- hasDispatches: hasDispatches,
6170
-
6171
- getInstanceFromNode: function (node) {
6172
- return ComponentTree.getInstanceFromNode(node);
6173
- },
6174
- getNodeFromInstance: function (node) {
6175
- return ComponentTree.getNodeFromInstance(node);
6176
- },
6177
- isAncestor: function (a, b) {
6178
- return TreeTraversal.isAncestor(a, b);
6179
- },
6180
- getLowestCommonAncestor: function (a, b) {
6181
- return TreeTraversal.getLowestCommonAncestor(a, b);
6182
- },
6183
- getParentInstance: function (inst) {
6184
- return TreeTraversal.getParentInstance(inst);
6185
- },
6186
- traverseTwoPhase: function (target, fn, arg) {
6187
- return TreeTraversal.traverseTwoPhase(target, fn, arg);
6188
- },
6189
- traverseEnterLeave: function (from, to, fn, argFrom, argTo) {
6190
- return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);
6191
- },
6192
-
6193
- injection: injection
6194
- };
6195
-
6196
- module.exports = EventPluginUtils;
6197
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
6198
-
6199
- /***/ },
6200
- /* 46 */
6201
- /***/ function(module, exports, __webpack_require__) {
6202
-
6203
- /* WEBPACK VAR INJECTION */(function(process) {/**
6204
- * Copyright 2013-present, Facebook, Inc.
6205
- * All rights reserved.
6206
- *
6207
- * This source code is licensed under the BSD-style license found in the
6208
- * LICENSE file in the root directory of this source tree. An additional grant
6209
- * of patent rights can be found in the PATENTS file in the same directory.
6210
- *
6211
- *
6212
- */
6213
-
6214
- 'use strict';
6215
-
6216
- var caughtError = null;
6217
-
6218
- /**
6219
- * Call a function while guarding against errors that happens within it.
6220
- *
6221
- * @param {String} name of the guard to use for logging or debugging
6222
- * @param {Function} func The function to invoke
6223
- * @param {*} a First argument
6224
- * @param {*} b Second argument
6225
- */
6226
- function invokeGuardedCallback(name, func, a) {
6227
- try {
6228
- func(a);
6229
- } catch (x) {
6230
- if (caughtError === null) {
6231
- caughtError = x;
6232
- }
6233
- }
6234
- }
6235
-
6236
- var ReactErrorUtils = {
6237
- invokeGuardedCallback: invokeGuardedCallback,
6238
-
6239
- /**
6240
- * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event
6241
- * handler are sure to be rethrown by rethrowCaughtError.
6242
- */
6243
- invokeGuardedCallbackWithCatch: invokeGuardedCallback,
6244
-
6245
- /**
6246
- * During execution of guarded functions we will capture the first error which
6247
- * we will rethrow to be handled by the top level error handler.
6248
- */
6249
- rethrowCaughtError: function () {
6250
- if (caughtError) {
6251
- var error = caughtError;
6252
- caughtError = null;
6253
- throw error;
6254
- }
6255
- }
6256
- };
6257
-
6258
- if (process.env.NODE_ENV !== 'production') {
6259
- /**
6260
- * To help development we can get better devtools integration by simulating a
6261
- * real browser event.
6262
- */
6263
- if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {
6264
- var fakeNode = document.createElement('react');
6265
- ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {
6266
- var boundFunc = func.bind(null, a);
6267
- var evtType = 'react-' + name;
6268
- fakeNode.addEventListener(evtType, boundFunc, false);
6269
- var evt = document.createEvent('Event');
6270
- // $FlowFixMe https://github.com/facebook/flow/issues/2336
6271
- evt.initEvent(evtType, false, false);
6272
- fakeNode.dispatchEvent(evt);
6273
- fakeNode.removeEventListener(evtType, boundFunc, false);
6274
- };
6275
- }
6276
- }
6277
-
6278
- module.exports = ReactErrorUtils;
6279
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
6280
-
6281
- /***/ },
6282
- /* 47 */
6283
- /***/ function(module, exports, __webpack_require__) {
6284
-
6285
- /* WEBPACK VAR INJECTION */(function(process) {/**
6286
- * Copyright 2014-present, Facebook, Inc.
6287
- * All rights reserved.
6288
- *
6289
- * This source code is licensed under the BSD-style license found in the
6290
- * LICENSE file in the root directory of this source tree. An additional grant
6291
- * of patent rights can be found in the PATENTS file in the same directory.
6292
- *
6293
- *
6294
- */
6295
-
6296
- 'use strict';
6297
-
6298
- var _prodInvariant = __webpack_require__(36);
6299
-
6300
- var invariant = __webpack_require__(9);
6301
-
6302
- /**
6303
- * Accumulates items that must not be null or undefined into the first one. This
6304
- * is used to conserve memory by avoiding array allocations, and thus sacrifices
6305
- * API cleanness. Since `current` can be null before being passed in and not
6306
- * null after this function, make sure to assign it back to `current`:
6307
- *
6308
- * `a = accumulateInto(a, b);`
6309
- *
6310
- * This API should be sparingly used. Try `accumulate` for something cleaner.
6311
- *
6312
- * @return {*|array<*>} An accumulation of items.
6313
- */
6314
-
6315
- function accumulateInto(current, next) {
6316
- !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;
6317
-
6318
- if (current == null) {
6319
- return next;
6320
- }
6321
-
6322
- // Both are not empty. Warning: Never call x.concat(y) when you are not
6323
- // certain that x is an Array (x could be a string with concat method).
6324
- if (Array.isArray(current)) {
6325
- if (Array.isArray(next)) {
6326
- current.push.apply(current, next);
6327
- return current;
6328
- }
6329
- current.push(next);
6330
- return current;
6331
- }
6332
-
6333
- if (Array.isArray(next)) {
6334
- // A bit too dangerous to mutate `next`.
6335
- return [current].concat(next);
6336
- }
6337
-
6338
- return [current, next];
6339
- }
6340
-
6341
- module.exports = accumulateInto;
6342
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
6343
-
6344
- /***/ },
6345
- /* 48 */
6346
- /***/ function(module, exports) {
6347
-
6348
- /**
6349
- * Copyright 2013-present, Facebook, Inc.
6350
- * All rights reserved.
6351
- *
6352
- * This source code is licensed under the BSD-style license found in the
6353
- * LICENSE file in the root directory of this source tree. An additional grant
6354
- * of patent rights can be found in the PATENTS file in the same directory.
6355
- *
6356
- *
6357
- */
6358
-
6359
- 'use strict';
6360
-
6361
- /**
6362
- * @param {array} arr an "accumulation" of items which is either an Array or
6363
- * a single item. Useful when paired with the `accumulate` module. This is a
6364
- * simple utility that allows us to reason about a collection of items, but
6365
- * handling the case when there is exactly one item (and we do not need to
6366
- * allocate an array).
6367
- */
6368
-
6369
- function forEachAccumulated(arr, cb, scope) {
6370
- if (Array.isArray(arr)) {
6371
- arr.forEach(cb, scope);
6372
- } else if (arr) {
6373
- cb.call(scope, arr);
6374
- }
6375
- }
6376
-
6377
- module.exports = forEachAccumulated;
6378
-
6379
- /***/ },
6380
- /* 49 */
6381
- /***/ function(module, exports) {
6382
-
6383
- /**
6384
- * Copyright (c) 2013-present, Facebook, Inc.
6385
- * All rights reserved.
6386
- *
6387
- * This source code is licensed under the BSD-style license found in the
6388
- * LICENSE file in the root directory of this source tree. An additional grant
6389
- * of patent rights can be found in the PATENTS file in the same directory.
6390
- *
6391
- */
6392
-
6393
- 'use strict';
6394
-
6395
- var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
6396
-
6397
- /**
6398
- * Simple, lightweight module assisting with the detection and context of
6399
- * Worker. Helps avoid circular dependencies and allows code to reason about
6400
- * whether or not they are in a Worker, even if they never include the main
6401
- * `ReactWorker` dependency.
6402
- */
6403
- var ExecutionEnvironment = {
6404
-
6405
- canUseDOM: canUseDOM,
6406
-
6407
- canUseWorkers: typeof Worker !== 'undefined',
6408
-
6409
- canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),
6410
-
6411
- canUseViewport: canUseDOM && !!window.screen,
6412
-
6413
- isInWorker: !canUseDOM // For now, this is true - might change in the future.
6414
-
6415
- };
6416
-
6417
- module.exports = ExecutionEnvironment;
6418
-
6419
- /***/ },
6420
- /* 50 */
6421
- /***/ function(module, exports, __webpack_require__) {
6422
-
6423
- /**
6424
- * Copyright 2013-present, Facebook, Inc.
6425
- * All rights reserved.
6426
- *
6427
- * This source code is licensed under the BSD-style license found in the
6428
- * LICENSE file in the root directory of this source tree. An additional grant
6429
- * of patent rights can be found in the PATENTS file in the same directory.
6430
- *
6431
- */
6432
-
6433
- 'use strict';
6434
-
6435
- var _assign = __webpack_require__(51);
6436
-
6437
- var PooledClass = __webpack_require__(52);
6438
-
6439
- var getTextContentAccessor = __webpack_require__(53);
6440
-
6441
- /**
6442
- * This helper class stores information about text content of a target node,
6443
- * allowing comparison of content before and after a given event.
6444
- *
6445
- * Identify the node where selection currently begins, then observe
6446
- * both its text content and its current position in the DOM. Since the
6447
- * browser may natively replace the target node during composition, we can
6448
- * use its position to find its replacement.
6449
- *
6450
- * @param {DOMEventTarget} root
6451
- */
6452
- function FallbackCompositionState(root) {
6453
- this._root = root;
6454
- this._startText = this.getText();
6455
- this._fallbackText = null;
6456
- }
6457
-
6458
- _assign(FallbackCompositionState.prototype, {
6459
- destructor: function () {
6460
- this._root = null;
6461
- this._startText = null;
6462
- this._fallbackText = null;
6463
- },
6464
-
6465
- /**
6466
- * Get current text of input.
6467
- *
6468
- * @return {string}
6469
- */
6470
- getText: function () {
6471
- if ('value' in this._root) {
6472
- return this._root.value;
6473
- }
6474
- return this._root[getTextContentAccessor()];
6475
- },
6476
-
6477
- /**
6478
- * Determine the differing substring between the initially stored
6479
- * text content and the current content.
6480
- *
6481
- * @return {string}
6482
- */
6483
- getData: function () {
6484
- if (this._fallbackText) {
6485
- return this._fallbackText;
6486
- }
6487
-
6488
- var start;
6489
- var startValue = this._startText;
6490
- var startLength = startValue.length;
6491
- var end;
6492
- var endValue = this.getText();
6493
- var endLength = endValue.length;
6494
-
6495
- for (start = 0; start < startLength; start++) {
6496
- if (startValue[start] !== endValue[start]) {
6497
- break;
6498
- }
6499
- }
6500
-
6501
- var minEnd = startLength - start;
6502
- for (end = 1; end <= minEnd; end++) {
6503
- if (startValue[startLength - end] !== endValue[endLength - end]) {
6504
- break;
6505
- }
6506
- }
6507
-
6508
- var sliceTail = end > 1 ? 1 - end : undefined;
6509
- this._fallbackText = endValue.slice(start, sliceTail);
6510
- return this._fallbackText;
6511
- }
6512
- });
6513
-
6514
- PooledClass.addPoolingTo(FallbackCompositionState);
6515
-
6516
- module.exports = FallbackCompositionState;
6517
-
6518
- /***/ },
6519
- /* 51 */
6520
- /***/ function(module, exports) {
6521
-
6522
- /*
6523
- object-assign
6524
- (c) Sindre Sorhus
6525
- @license MIT
6526
- */
6527
-
6528
- 'use strict';
6529
- /* eslint-disable no-unused-vars */
6530
- var getOwnPropertySymbols = Object.getOwnPropertySymbols;
6531
- var hasOwnProperty = Object.prototype.hasOwnProperty;
6532
- var propIsEnumerable = Object.prototype.propertyIsEnumerable;
6533
-
6534
- function toObject(val) {
6535
- if (val === null || val === undefined) {
6536
- throw new TypeError('Object.assign cannot be called with null or undefined');
6537
- }
6538
-
6539
- return Object(val);
6540
- }
6541
-
6542
- function shouldUseNative() {
6543
- try {
6544
- if (!Object.assign) {
6545
- return false;
6546
- }
6547
-
6548
- // Detect buggy property enumeration order in older V8 versions.
6549
-
6550
- // https://bugs.chromium.org/p/v8/issues/detail?id=4118
6551
- var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
6552
- test1[5] = 'de';
6553
- if (Object.getOwnPropertyNames(test1)[0] === '5') {
6554
- return false;
6555
- }
6556
-
6557
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
6558
- var test2 = {};
6559
- for (var i = 0; i < 10; i++) {
6560
- test2['_' + String.fromCharCode(i)] = i;
6561
- }
6562
- var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
6563
- return test2[n];
6564
- });
6565
- if (order2.join('') !== '0123456789') {
6566
- return false;
6567
- }
6568
-
6569
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
6570
- var test3 = {};
6571
- 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
6572
- test3[letter] = letter;
6573
- });
6574
- if (Object.keys(Object.assign({}, test3)).join('') !==
6575
- 'abcdefghijklmnopqrst') {
6576
- return false;
6577
- }
6578
-
6579
- return true;
6580
- } catch (err) {
6581
- // We don't expect any of the above to throw, but better to be safe.
6582
- return false;
6583
- }
6584
- }
6585
-
6586
- module.exports = shouldUseNative() ? Object.assign : function (target, source) {
6587
- var from;
6588
- var to = toObject(target);
6589
- var symbols;
6590
-
6591
- for (var s = 1; s < arguments.length; s++) {
6592
- from = Object(arguments[s]);
6593
-
6594
- for (var key in from) {
6595
- if (hasOwnProperty.call(from, key)) {
6596
- to[key] = from[key];
6597
- }
6598
- }
6599
-
6600
- if (getOwnPropertySymbols) {
6601
- symbols = getOwnPropertySymbols(from);
6602
- for (var i = 0; i < symbols.length; i++) {
6603
- if (propIsEnumerable.call(from, symbols[i])) {
6604
- to[symbols[i]] = from[symbols[i]];
6605
- }
6606
- }
6607
- }
6608
- }
6609
-
6610
- return to;
6611
- };
6612
-
6613
-
6614
- /***/ },
6615
- /* 52 */
6616
- /***/ function(module, exports, __webpack_require__) {
6617
-
6618
- /* WEBPACK VAR INJECTION */(function(process) {/**
6619
- * Copyright 2013-present, Facebook, Inc.
6620
- * All rights reserved.
6621
- *
6622
- * This source code is licensed under the BSD-style license found in the
6623
- * LICENSE file in the root directory of this source tree. An additional grant
6624
- * of patent rights can be found in the PATENTS file in the same directory.
6625
- *
6626
- *
6627
- */
6628
-
6629
- 'use strict';
6630
-
6631
- var _prodInvariant = __webpack_require__(36);
6632
-
6633
- var invariant = __webpack_require__(9);
6634
-
6635
- /**
6636
- * Static poolers. Several custom versions for each potential number of
6637
- * arguments. A completely generic pooler is easy to implement, but would
6638
- * require accessing the `arguments` object. In each of these, `this` refers to
6639
- * the Class itself, not an instance. If any others are needed, simply add them
6640
- * here, or in their own files.
6641
- */
6642
- var oneArgumentPooler = function (copyFieldsFrom) {
6643
- var Klass = this;
6644
- if (Klass.instancePool.length) {
6645
- var instance = Klass.instancePool.pop();
6646
- Klass.call(instance, copyFieldsFrom);
6647
- return instance;
6648
- } else {
6649
- return new Klass(copyFieldsFrom);
6650
- }
6651
- };
6652
-
6653
- var twoArgumentPooler = function (a1, a2) {
6654
- var Klass = this;
6655
- if (Klass.instancePool.length) {
6656
- var instance = Klass.instancePool.pop();
6657
- Klass.call(instance, a1, a2);
6658
- return instance;
6659
- } else {
6660
- return new Klass(a1, a2);
6661
- }
6662
- };
6663
-
6664
- var threeArgumentPooler = function (a1, a2, a3) {
6665
- var Klass = this;
6666
- if (Klass.instancePool.length) {
6667
- var instance = Klass.instancePool.pop();
6668
- Klass.call(instance, a1, a2, a3);
6669
- return instance;
6670
- } else {
6671
- return new Klass(a1, a2, a3);
6672
- }
6673
- };
6674
-
6675
- var fourArgumentPooler = function (a1, a2, a3, a4) {
6676
- var Klass = this;
6677
- if (Klass.instancePool.length) {
6678
- var instance = Klass.instancePool.pop();
6679
- Klass.call(instance, a1, a2, a3, a4);
6680
- return instance;
6681
- } else {
6682
- return new Klass(a1, a2, a3, a4);
6683
- }
6684
- };
6685
-
6686
- var standardReleaser = function (instance) {
6687
- var Klass = this;
6688
- !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;
6689
- instance.destructor();
6690
- if (Klass.instancePool.length < Klass.poolSize) {
6691
- Klass.instancePool.push(instance);
6692
- }
6693
- };
6694
-
6695
- var DEFAULT_POOL_SIZE = 10;
6696
- var DEFAULT_POOLER = oneArgumentPooler;
6697
-
6698
- /**
6699
- * Augments `CopyConstructor` to be a poolable class, augmenting only the class
6700
- * itself (statically) not adding any prototypical fields. Any CopyConstructor
6701
- * you give this may have a `poolSize` property, and will look for a
6702
- * prototypical `destructor` on instances.
6703
- *
6704
- * @param {Function} CopyConstructor Constructor that can be used to reset.
6705
- * @param {Function} pooler Customizable pooler.
6706
- */
6707
- var addPoolingTo = function (CopyConstructor, pooler) {
6708
- // Casting as any so that flow ignores the actual implementation and trusts
6709
- // it to match the type we declared
6710
- var NewKlass = CopyConstructor;
6711
- NewKlass.instancePool = [];
6712
- NewKlass.getPooled = pooler || DEFAULT_POOLER;
6713
- if (!NewKlass.poolSize) {
6714
- NewKlass.poolSize = DEFAULT_POOL_SIZE;
6715
- }
6716
- NewKlass.release = standardReleaser;
6717
- return NewKlass;
6718
- };
6719
-
6720
- var PooledClass = {
6721
- addPoolingTo: addPoolingTo,
6722
- oneArgumentPooler: oneArgumentPooler,
6723
- twoArgumentPooler: twoArgumentPooler,
6724
- threeArgumentPooler: threeArgumentPooler,
6725
- fourArgumentPooler: fourArgumentPooler
6726
- };
6727
-
6728
- module.exports = PooledClass;
6729
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
6730
-
6731
- /***/ },
6732
- /* 53 */
6733
- /***/ function(module, exports, __webpack_require__) {
6734
-
6735
- /**
6736
- * Copyright 2013-present, Facebook, Inc.
6737
- * All rights reserved.
6738
- *
6739
- * This source code is licensed under the BSD-style license found in the
6740
- * LICENSE file in the root directory of this source tree. An additional grant
6741
- * of patent rights can be found in the PATENTS file in the same directory.
6742
- *
6743
- */
6744
-
6745
- 'use strict';
6746
-
6747
- var ExecutionEnvironment = __webpack_require__(49);
6748
-
6749
- var contentKey = null;
6750
-
6751
- /**
6752
- * Gets the key used to access text content on a DOM node.
6753
- *
6754
- * @return {?string} Key used to access text content.
6755
- * @internal
6756
- */
6757
- function getTextContentAccessor() {
6758
- if (!contentKey && ExecutionEnvironment.canUseDOM) {
6759
- // Prefer textContent to innerText because many browsers support both but
6760
- // SVG <text> elements don't support innerText even when <div> does.
6761
- contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';
6762
- }
6763
- return contentKey;
6764
- }
6765
-
6766
- module.exports = getTextContentAccessor;
6767
-
6768
- /***/ },
6769
- /* 54 */
6770
- /***/ function(module, exports, __webpack_require__) {
6771
-
6772
- /**
6773
- * Copyright 2013-present, Facebook, Inc.
6774
- * All rights reserved.
6775
- *
6776
- * This source code is licensed under the BSD-style license found in the
6777
- * LICENSE file in the root directory of this source tree. An additional grant
6778
- * of patent rights can be found in the PATENTS file in the same directory.
6779
- *
6780
- */
6781
-
6782
- 'use strict';
6783
-
6784
- var SyntheticEvent = __webpack_require__(55);
6785
-
6786
- /**
6787
- * @interface Event
6788
- * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents
6789
- */
6790
- var CompositionEventInterface = {
6791
- data: null
6792
- };
6793
-
6794
- /**
6795
- * @param {object} dispatchConfig Configuration used to dispatch this event.
6796
- * @param {string} dispatchMarker Marker identifying the event target.
6797
- * @param {object} nativeEvent Native browser event.
6798
- * @extends {SyntheticUIEvent}
6799
- */
6800
- function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
6801
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
6802
- }
6803
-
6804
- SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);
6805
-
6806
- module.exports = SyntheticCompositionEvent;
6807
-
6808
- /***/ },
6809
- /* 55 */
6810
- /***/ function(module, exports, __webpack_require__) {
6811
-
6812
- /* WEBPACK VAR INJECTION */(function(process) {/**
6813
- * Copyright 2013-present, Facebook, Inc.
6814
- * All rights reserved.
6815
- *
6816
- * This source code is licensed under the BSD-style license found in the
6817
- * LICENSE file in the root directory of this source tree. An additional grant
6818
- * of patent rights can be found in the PATENTS file in the same directory.
6819
- *
6820
- */
6821
-
6822
- 'use strict';
6823
-
6824
- var _assign = __webpack_require__(51);
6825
-
6826
- var PooledClass = __webpack_require__(52);
6827
-
6828
- var emptyFunction = __webpack_require__(13);
6829
- var warning = __webpack_require__(12);
6830
-
6831
- var didWarnForAddedNewProperty = false;
6832
- var isProxySupported = typeof Proxy === 'function';
6833
-
6834
- var shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];
6835
-
6836
- /**
6837
- * @interface Event
6838
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
6839
- */
6840
- var EventInterface = {
6841
- type: null,
6842
- target: null,
6843
- // currentTarget is set when dispatching; no use in copying it here
6844
- currentTarget: emptyFunction.thatReturnsNull,
6845
- eventPhase: null,
6846
- bubbles: null,
6847
- cancelable: null,
6848
- timeStamp: function (event) {
6849
- return event.timeStamp || Date.now();
6850
- },
6851
- defaultPrevented: null,
6852
- isTrusted: null
6853
- };
6854
-
6855
- /**
6856
- * Synthetic events are dispatched by event plugins, typically in response to a
6857
- * top-level event delegation handler.
6858
- *
6859
- * These systems should generally use pooling to reduce the frequency of garbage
6860
- * collection. The system should check `isPersistent` to determine whether the
6861
- * event should be released into the pool after being dispatched. Users that
6862
- * need a persisted event should invoke `persist`.
6863
- *
6864
- * Synthetic events (and subclasses) implement the DOM Level 3 Events API by
6865
- * normalizing browser quirks. Subclasses do not necessarily have to implement a
6866
- * DOM interface; custom application-specific events can also subclass this.
6867
- *
6868
- * @param {object} dispatchConfig Configuration used to dispatch this event.
6869
- * @param {*} targetInst Marker identifying the event target.
6870
- * @param {object} nativeEvent Native browser event.
6871
- * @param {DOMEventTarget} nativeEventTarget Target node.
6872
- */
6873
- function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {
6874
- if (process.env.NODE_ENV !== 'production') {
6875
- // these have a getter/setter for warnings
6876
- delete this.nativeEvent;
6877
- delete this.preventDefault;
6878
- delete this.stopPropagation;
6879
- }
6880
-
6881
- this.dispatchConfig = dispatchConfig;
6882
- this._targetInst = targetInst;
6883
- this.nativeEvent = nativeEvent;
6884
-
6885
- var Interface = this.constructor.Interface;
6886
- for (var propName in Interface) {
6887
- if (!Interface.hasOwnProperty(propName)) {
6888
- continue;
6889
- }
6890
- if (process.env.NODE_ENV !== 'production') {
6891
- delete this[propName]; // this has a getter/setter for warnings
6892
- }
6893
- var normalize = Interface[propName];
6894
- if (normalize) {
6895
- this[propName] = normalize(nativeEvent);
6896
- } else {
6897
- if (propName === 'target') {
6898
- this.target = nativeEventTarget;
6899
- } else {
6900
- this[propName] = nativeEvent[propName];
6901
- }
6902
- }
6903
- }
6904
-
6905
- var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;
6906
- if (defaultPrevented) {
6907
- this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
6908
- } else {
6909
- this.isDefaultPrevented = emptyFunction.thatReturnsFalse;
6910
- }
6911
- this.isPropagationStopped = emptyFunction.thatReturnsFalse;
6912
- return this;
6913
- }
6914
-
6915
- _assign(SyntheticEvent.prototype, {
6916
-
6917
- preventDefault: function () {
6918
- this.defaultPrevented = true;
6919
- var event = this.nativeEvent;
6920
- if (!event) {
6921
- return;
6922
- }
6923
-
6924
- if (event.preventDefault) {
6925
- event.preventDefault();
6926
- } else if (typeof event.returnValue !== 'unknown') {
6927
- // eslint-disable-line valid-typeof
6928
- event.returnValue = false;
6929
- }
6930
- this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
6931
- },
6932
-
6933
- stopPropagation: function () {
6934
- var event = this.nativeEvent;
6935
- if (!event) {
6936
- return;
6937
- }
6938
-
6939
- if (event.stopPropagation) {
6940
- event.stopPropagation();
6941
- } else if (typeof event.cancelBubble !== 'unknown') {
6942
- // eslint-disable-line valid-typeof
6943
- // The ChangeEventPlugin registers a "propertychange" event for
6944
- // IE. This event does not support bubbling or cancelling, and
6945
- // any references to cancelBubble throw "Member not found". A
6946
- // typeof check of "unknown" circumvents this issue (and is also
6947
- // IE specific).
6948
- event.cancelBubble = true;
6949
- }
6950
-
6951
- this.isPropagationStopped = emptyFunction.thatReturnsTrue;
6952
- },
6953
-
6954
- /**
6955
- * We release all dispatched `SyntheticEvent`s after each event loop, adding
6956
- * them back into the pool. This allows a way to hold onto a reference that
6957
- * won't be added back into the pool.
6958
- */
6959
- persist: function () {
6960
- this.isPersistent = emptyFunction.thatReturnsTrue;
6961
- },
6962
-
6963
- /**
6964
- * Checks if this event should be released back into the pool.
6965
- *
6966
- * @return {boolean} True if this should not be released, false otherwise.
6967
- */
6968
- isPersistent: emptyFunction.thatReturnsFalse,
6969
-
6970
- /**
6971
- * `PooledClass` looks for `destructor` on each instance it releases.
6972
- */
6973
- destructor: function () {
6974
- var Interface = this.constructor.Interface;
6975
- for (var propName in Interface) {
6976
- if (process.env.NODE_ENV !== 'production') {
6977
- Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));
6978
- } else {
6979
- this[propName] = null;
6980
- }
6981
- }
6982
- for (var i = 0; i < shouldBeReleasedProperties.length; i++) {
6983
- this[shouldBeReleasedProperties[i]] = null;
6984
- }
6985
- if (process.env.NODE_ENV !== 'production') {
6986
- Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));
6987
- Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));
6988
- Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));
6989
- }
6990
- }
6991
-
6992
- });
6993
-
6994
- SyntheticEvent.Interface = EventInterface;
6995
-
6996
- if (process.env.NODE_ENV !== 'production') {
6997
- if (isProxySupported) {
6998
- /*eslint-disable no-func-assign */
6999
- SyntheticEvent = new Proxy(SyntheticEvent, {
7000
- construct: function (target, args) {
7001
- return this.apply(target, Object.create(target.prototype), args);
7002
- },
7003
- apply: function (constructor, that, args) {
7004
- return new Proxy(constructor.apply(that, args), {
7005
- set: function (target, prop, value) {
7006
- if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {
7007
- process.env.NODE_ENV !== '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;
7008
- didWarnForAddedNewProperty = true;
7009
- }
7010
- target[prop] = value;
7011
- return true;
7012
- }
7013
- });
7014
- }
7015
- });
7016
- /*eslint-enable no-func-assign */
7017
- }
7018
- }
7019
- /**
7020
- * Helper to reduce boilerplate when creating subclasses.
7021
- *
7022
- * @param {function} Class
7023
- * @param {?object} Interface
7024
- */
7025
- SyntheticEvent.augmentClass = function (Class, Interface) {
7026
- var Super = this;
7027
-
7028
- var E = function () {};
7029
- E.prototype = Super.prototype;
7030
- var prototype = new E();
7031
-
7032
- _assign(prototype, Class.prototype);
7033
- Class.prototype = prototype;
7034
- Class.prototype.constructor = Class;
7035
-
7036
- Class.Interface = _assign({}, Super.Interface, Interface);
7037
- Class.augmentClass = Super.augmentClass;
7038
-
7039
- PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);
7040
- };
7041
-
7042
- PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);
7043
-
7044
- module.exports = SyntheticEvent;
7045
-
7046
- /**
7047
- * Helper to nullify syntheticEvent instance properties when destructing
7048
- *
7049
- * @param {object} SyntheticEvent
7050
- * @param {String} propName
7051
- * @return {object} defineProperty object
7052
- */
7053
- function getPooledWarningPropertyDefinition(propName, getVal) {
7054
- var isFunction = typeof getVal === 'function';
7055
- return {
7056
- configurable: true,
7057
- set: set,
7058
- get: get
7059
- };
7060
-
7061
- function set(val) {
7062
- var action = isFunction ? 'setting the method' : 'setting the property';
7063
- warn(action, 'This is effectively a no-op');
7064
- return val;
7065
- }
7066
-
7067
- function get() {
7068
- var action = isFunction ? 'accessing the method' : 'accessing the property';
7069
- var result = isFunction ? 'This is a no-op function' : 'This is set to null';
7070
- warn(action, result);
7071
- return getVal;
7072
- }
7073
-
7074
- function warn(action, result) {
7075
- var warningCondition = false;
7076
- process.env.NODE_ENV !== '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;
7077
- }
7078
- }
7079
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
7080
-
7081
- /***/ },
7082
- /* 56 */
7083
- /***/ function(module, exports, __webpack_require__) {
7084
-
7085
- /**
7086
- * Copyright 2013-present, Facebook, Inc.
7087
- * All rights reserved.
7088
- *
7089
- * This source code is licensed under the BSD-style license found in the
7090
- * LICENSE file in the root directory of this source tree. An additional grant
7091
- * of patent rights can be found in the PATENTS file in the same directory.
7092
- *
7093
- */
7094
-
7095
- 'use strict';
7096
-
7097
- var SyntheticEvent = __webpack_require__(55);
7098
-
7099
- /**
7100
- * @interface Event
7101
- * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105
7102
- * /#events-inputevents
7103
- */
7104
- var InputEventInterface = {
7105
- data: null
7106
- };
7107
-
7108
- /**
7109
- * @param {object} dispatchConfig Configuration used to dispatch this event.
7110
- * @param {string} dispatchMarker Marker identifying the event target.
7111
- * @param {object} nativeEvent Native browser event.
7112
- * @extends {SyntheticUIEvent}
7113
- */
7114
- function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
7115
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
7116
- }
7117
-
7118
- SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);
7119
-
7120
- module.exports = SyntheticInputEvent;
7121
-
7122
- /***/ },
7123
- /* 57 */
7124
- /***/ function(module, exports, __webpack_require__) {
7125
-
7126
- /**
7127
- * Copyright 2013-present, Facebook, Inc.
7128
- * All rights reserved.
7129
- *
7130
- * This source code is licensed under the BSD-style license found in the
7131
- * LICENSE file in the root directory of this source tree. An additional grant
7132
- * of patent rights can be found in the PATENTS file in the same directory.
7133
- *
7134
- */
7135
-
7136
- 'use strict';
7137
-
7138
- var EventPluginHub = __webpack_require__(43);
7139
- var EventPropagators = __webpack_require__(42);
7140
- var ExecutionEnvironment = __webpack_require__(49);
7141
- var ReactDOMComponentTree = __webpack_require__(35);
7142
- var ReactUpdates = __webpack_require__(58);
7143
- var SyntheticEvent = __webpack_require__(55);
7144
-
7145
- var getEventTarget = __webpack_require__(71);
7146
- var isEventSupported = __webpack_require__(72);
7147
- var isTextInputElement = __webpack_require__(73);
7148
-
7149
- var eventTypes = {
7150
- change: {
7151
- phasedRegistrationNames: {
7152
- bubbled: 'onChange',
7153
- captured: 'onChangeCapture'
7154
- },
7155
- dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']
7156
- }
7157
- };
7158
-
7159
- /**
7160
- * For IE shims
7161
- */
7162
- var activeElement = null;
7163
- var activeElementInst = null;
7164
- var activeElementValue = null;
7165
- var activeElementValueProp = null;
7166
-
7167
- /**
7168
- * SECTION: handle `change` event
7169
- */
7170
- function shouldUseChangeEvent(elem) {
7171
- var nodeName = elem.nodeName && elem.nodeName.toLowerCase();
7172
- return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';
7173
- }
7174
-
7175
- var doesChangeEventBubble = false;
7176
- if (ExecutionEnvironment.canUseDOM) {
7177
- // See `handleChange` comment below
7178
- doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);
7179
- }
7180
-
7181
- function manualDispatchChangeEvent(nativeEvent) {
7182
- var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));
7183
- EventPropagators.accumulateTwoPhaseDispatches(event);
7184
-
7185
- // If change and propertychange bubbled, we'd just bind to it like all the
7186
- // other events and have it go through ReactBrowserEventEmitter. Since it
7187
- // doesn't, we manually listen for the events and so we have to enqueue and
7188
- // process the abstract event manually.
7189
- //
7190
- // Batching is necessary here in order to ensure that all event handlers run
7191
- // before the next rerender (including event handlers attached to ancestor
7192
- // elements instead of directly on the input). Without this, controlled
7193
- // components don't work properly in conjunction with event bubbling because
7194
- // the component is rerendered and the value reverted before all the event
7195
- // handlers can run. See https://github.com/facebook/react/issues/708.
7196
- ReactUpdates.batchedUpdates(runEventInBatch, event);
7197
- }
7198
-
7199
- function runEventInBatch(event) {
7200
- EventPluginHub.enqueueEvents(event);
7201
- EventPluginHub.processEventQueue(false);
7202
- }
7203
-
7204
- function startWatchingForChangeEventIE8(target, targetInst) {
7205
- activeElement = target;
7206
- activeElementInst = targetInst;
7207
- activeElement.attachEvent('onchange', manualDispatchChangeEvent);
7208
- }
7209
-
7210
- function stopWatchingForChangeEventIE8() {
7211
- if (!activeElement) {
7212
- return;
7213
- }
7214
- activeElement.detachEvent('onchange', manualDispatchChangeEvent);
7215
- activeElement = null;
7216
- activeElementInst = null;
7217
- }
7218
-
7219
- function getTargetInstForChangeEvent(topLevelType, targetInst) {
7220
- if (topLevelType === 'topChange') {
7221
- return targetInst;
7222
- }
7223
- }
7224
- function handleEventsForChangeEventIE8(topLevelType, target, targetInst) {
7225
- if (topLevelType === 'topFocus') {
7226
- // stopWatching() should be a noop here but we call it just in case we
7227
- // missed a blur event somehow.
7228
- stopWatchingForChangeEventIE8();
7229
- startWatchingForChangeEventIE8(target, targetInst);
7230
- } else if (topLevelType === 'topBlur') {
7231
- stopWatchingForChangeEventIE8();
7232
- }
7233
- }
7234
-
7235
- /**
7236
- * SECTION: handle `input` event
7237
- */
7238
- var isInputEventSupported = false;
7239
- if (ExecutionEnvironment.canUseDOM) {
7240
- // IE9 claims to support the input event but fails to trigger it when
7241
- // deleting text, so we ignore its input events.
7242
- // IE10+ fire input events to often, such when a placeholder
7243
- // changes or when an input with a placeholder is focused.
7244
- isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);
7245
- }
7246
-
7247
- /**
7248
- * (For IE <=11) Replacement getter/setter for the `value` property that gets
7249
- * set on the active element.
7250
- */
7251
- var newValueProp = {
7252
- get: function () {
7253
- return activeElementValueProp.get.call(this);
7254
- },
7255
- set: function (val) {
7256
- // Cast to a string so we can do equality checks.
7257
- activeElementValue = '' + val;
7258
- activeElementValueProp.set.call(this, val);
7259
- }
7260
- };
7261
-
7262
- /**
7263
- * (For IE <=11) Starts tracking propertychange events on the passed-in element
7264
- * and override the value property so that we can distinguish user events from
7265
- * value changes in JS.
7266
- */
7267
- function startWatchingForValueChange(target, targetInst) {
7268
- activeElement = target;
7269
- activeElementInst = targetInst;
7270
- activeElementValue = target.value;
7271
- activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');
7272
-
7273
- // Not guarded in a canDefineProperty check: IE8 supports defineProperty only
7274
- // on DOM elements
7275
- Object.defineProperty(activeElement, 'value', newValueProp);
7276
- if (activeElement.attachEvent) {
7277
- activeElement.attachEvent('onpropertychange', handlePropertyChange);
7278
- } else {
7279
- activeElement.addEventListener('propertychange', handlePropertyChange, false);
7280
- }
7281
- }
7282
-
7283
- /**
7284
- * (For IE <=11) Removes the event listeners from the currently-tracked element,
7285
- * if any exists.
7286
- */
7287
- function stopWatchingForValueChange() {
7288
- if (!activeElement) {
7289
- return;
7290
- }
7291
-
7292
- // delete restores the original property definition
7293
- delete activeElement.value;
7294
-
7295
- if (activeElement.detachEvent) {
7296
- activeElement.detachEvent('onpropertychange', handlePropertyChange);
7297
- } else {
7298
- activeElement.removeEventListener('propertychange', handlePropertyChange, false);
7299
- }
7300
-
7301
- activeElement = null;
7302
- activeElementInst = null;
7303
- activeElementValue = null;
7304
- activeElementValueProp = null;
7305
- }
7306
-
7307
- /**
7308
- * (For IE <=11) Handles a propertychange event, sending a `change` event if
7309
- * the value of the active element has changed.
7310
- */
7311
- function handlePropertyChange(nativeEvent) {
7312
- if (nativeEvent.propertyName !== 'value') {
7313
- return;
7314
- }
7315
- var value = nativeEvent.srcElement.value;
7316
- if (value === activeElementValue) {
7317
- return;
7318
- }
7319
- activeElementValue = value;
7320
-
7321
- manualDispatchChangeEvent(nativeEvent);
7322
- }
7323
-
7324
- /**
7325
- * If a `change` event should be fired, returns the target's ID.
7326
- */
7327
- function getTargetInstForInputEvent(topLevelType, targetInst) {
7328
- if (topLevelType === 'topInput') {
7329
- // In modern browsers (i.e., not IE8 or IE9), the input event is exactly
7330
- // what we want so fall through here and trigger an abstract event
7331
- return targetInst;
7332
- }
7333
- }
7334
-
7335
- function handleEventsForInputEventIE(topLevelType, target, targetInst) {
7336
- if (topLevelType === 'topFocus') {
7337
- // In IE8, we can capture almost all .value changes by adding a
7338
- // propertychange handler and looking for events with propertyName
7339
- // equal to 'value'
7340
- // In IE9-11, propertychange fires for most input events but is buggy and
7341
- // doesn't fire when text is deleted, but conveniently, selectionchange
7342
- // appears to fire in all of the remaining cases so we catch those and
7343
- // forward the event if the value has changed
7344
- // In either case, we don't want to call the event handler if the value
7345
- // is changed from JS so we redefine a setter for `.value` that updates
7346
- // our activeElementValue variable, allowing us to ignore those changes
7347
- //
7348
- // stopWatching() should be a noop here but we call it just in case we
7349
- // missed a blur event somehow.
7350
- stopWatchingForValueChange();
7351
- startWatchingForValueChange(target, targetInst);
7352
- } else if (topLevelType === 'topBlur') {
7353
- stopWatchingForValueChange();
7354
- }
7355
- }
7356
-
7357
- // For IE8 and IE9.
7358
- function getTargetInstForInputEventIE(topLevelType, targetInst) {
7359
- if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {
7360
- // On the selectionchange event, the target is just document which isn't
7361
- // helpful for us so just check activeElement instead.
7362
- //
7363
- // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
7364
- // propertychange on the first input event after setting `value` from a
7365
- // script and fires only keydown, keypress, keyup. Catching keyup usually
7366
- // gets it and catching keydown lets us fire an event for the first
7367
- // keystroke if user does a key repeat (it'll be a little delayed: right
7368
- // before the second keystroke). Other input methods (e.g., paste) seem to
7369
- // fire selectionchange normally.
7370
- if (activeElement && activeElement.value !== activeElementValue) {
7371
- activeElementValue = activeElement.value;
7372
- return activeElementInst;
7373
- }
7374
- }
7375
- }
7376
-
7377
- /**
7378
- * SECTION: handle `click` event
7379
- */
7380
- function shouldUseClickEvent(elem) {
7381
- // Use the `click` event to detect changes to checkbox and radio inputs.
7382
- // This approach works across all browsers, whereas `change` does not fire
7383
- // until `blur` in IE8.
7384
- return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');
7385
- }
7386
-
7387
- function getTargetInstForClickEvent(topLevelType, targetInst) {
7388
- if (topLevelType === 'topClick') {
7389
- return targetInst;
7390
- }
7391
- }
7392
-
7393
- /**
7394
- * This plugin creates an `onChange` event that normalizes change events
7395
- * across form elements. This event fires at a time when it's possible to
7396
- * change the element's value without seeing a flicker.
7397
- *
7398
- * Supported elements are:
7399
- * - input (see `isTextInputElement`)
7400
- * - textarea
7401
- * - select
7402
- */
7403
- var ChangeEventPlugin = {
7404
-
7405
- eventTypes: eventTypes,
7406
-
7407
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
7408
- var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;
7409
-
7410
- var getTargetInstFunc, handleEventFunc;
7411
- if (shouldUseChangeEvent(targetNode)) {
7412
- if (doesChangeEventBubble) {
7413
- getTargetInstFunc = getTargetInstForChangeEvent;
7414
- } else {
7415
- handleEventFunc = handleEventsForChangeEventIE8;
7416
- }
7417
- } else if (isTextInputElement(targetNode)) {
7418
- if (isInputEventSupported) {
7419
- getTargetInstFunc = getTargetInstForInputEvent;
7420
- } else {
7421
- getTargetInstFunc = getTargetInstForInputEventIE;
7422
- handleEventFunc = handleEventsForInputEventIE;
7423
- }
7424
- } else if (shouldUseClickEvent(targetNode)) {
7425
- getTargetInstFunc = getTargetInstForClickEvent;
7426
- }
7427
-
7428
- if (getTargetInstFunc) {
7429
- var inst = getTargetInstFunc(topLevelType, targetInst);
7430
- if (inst) {
7431
- var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);
7432
- event.type = 'change';
7433
- EventPropagators.accumulateTwoPhaseDispatches(event);
7434
- return event;
7435
- }
7436
- }
7437
-
7438
- if (handleEventFunc) {
7439
- handleEventFunc(topLevelType, targetNode, targetInst);
7440
- }
7441
- }
7442
-
7443
- };
7444
-
7445
- module.exports = ChangeEventPlugin;
7446
-
7447
- /***/ },
7448
- /* 58 */
7449
- /***/ function(module, exports, __webpack_require__) {
7450
-
7451
- /* WEBPACK VAR INJECTION */(function(process) {/**
7452
- * Copyright 2013-present, Facebook, Inc.
7453
- * All rights reserved.
7454
- *
7455
- * This source code is licensed under the BSD-style license found in the
7456
- * LICENSE file in the root directory of this source tree. An additional grant
7457
- * of patent rights can be found in the PATENTS file in the same directory.
7458
- *
7459
- */
7460
-
7461
- 'use strict';
7462
-
7463
- var _prodInvariant = __webpack_require__(36),
7464
- _assign = __webpack_require__(51);
7465
-
7466
- var CallbackQueue = __webpack_require__(59);
7467
- var PooledClass = __webpack_require__(52);
7468
- var ReactFeatureFlags = __webpack_require__(60);
7469
- var ReactReconciler = __webpack_require__(61);
7470
- var Transaction = __webpack_require__(70);
7471
-
7472
- var invariant = __webpack_require__(9);
7473
-
7474
- var dirtyComponents = [];
7475
- var updateBatchNumber = 0;
7476
- var asapCallbackQueue = CallbackQueue.getPooled();
7477
- var asapEnqueued = false;
7478
-
7479
- var batchingStrategy = null;
7480
-
7481
- function ensureInjected() {
7482
- !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;
7483
- }
7484
-
7485
- var NESTED_UPDATES = {
7486
- initialize: function () {
7487
- this.dirtyComponentsLength = dirtyComponents.length;
7488
- },
7489
- close: function () {
7490
- if (this.dirtyComponentsLength !== dirtyComponents.length) {
7491
- // Additional updates were enqueued by componentDidUpdate handlers or
7492
- // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run
7493
- // these new updates so that if A's componentDidUpdate calls setState on
7494
- // B, B will update before the callback A's updater provided when calling
7495
- // setState.
7496
- dirtyComponents.splice(0, this.dirtyComponentsLength);
7497
- flushBatchedUpdates();
7498
- } else {
7499
- dirtyComponents.length = 0;
7500
- }
7501
- }
7502
- };
7503
-
7504
- var UPDATE_QUEUEING = {
7505
- initialize: function () {
7506
- this.callbackQueue.reset();
7507
- },
7508
- close: function () {
7509
- this.callbackQueue.notifyAll();
7510
- }
7511
- };
7512
-
7513
- var TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];
7514
-
7515
- function ReactUpdatesFlushTransaction() {
7516
- this.reinitializeTransaction();
7517
- this.dirtyComponentsLength = null;
7518
- this.callbackQueue = CallbackQueue.getPooled();
7519
- this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(
7520
- /* useCreateElement */true);
7521
- }
7522
-
7523
- _assign(ReactUpdatesFlushTransaction.prototype, Transaction, {
7524
- getTransactionWrappers: function () {
7525
- return TRANSACTION_WRAPPERS;
7526
- },
7527
-
7528
- destructor: function () {
7529
- this.dirtyComponentsLength = null;
7530
- CallbackQueue.release(this.callbackQueue);
7531
- this.callbackQueue = null;
7532
- ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);
7533
- this.reconcileTransaction = null;
7534
- },
7535
-
7536
- perform: function (method, scope, a) {
7537
- // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`
7538
- // with this transaction's wrappers around it.
7539
- return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);
7540
- }
7541
- });
7542
-
7543
- PooledClass.addPoolingTo(ReactUpdatesFlushTransaction);
7544
-
7545
- function batchedUpdates(callback, a, b, c, d, e) {
7546
- ensureInjected();
7547
- return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);
7548
- }
7549
-
7550
- /**
7551
- * Array comparator for ReactComponents by mount ordering.
7552
- *
7553
- * @param {ReactComponent} c1 first component you're comparing
7554
- * @param {ReactComponent} c2 second component you're comparing
7555
- * @return {number} Return value usable by Array.prototype.sort().
7556
- */
7557
- function mountOrderComparator(c1, c2) {
7558
- return c1._mountOrder - c2._mountOrder;
7559
- }
7560
-
7561
- function runBatchedUpdates(transaction) {
7562
- var len = transaction.dirtyComponentsLength;
7563
- !(len === dirtyComponents.length) ? process.env.NODE_ENV !== '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;
7564
-
7565
- // Since reconciling a component higher in the owner hierarchy usually (not
7566
- // always -- see shouldComponentUpdate()) will reconcile children, reconcile
7567
- // them before their children by sorting the array.
7568
- dirtyComponents.sort(mountOrderComparator);
7569
-
7570
- // Any updates enqueued while reconciling must be performed after this entire
7571
- // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and
7572
- // C, B could update twice in a single batch if C's render enqueues an update
7573
- // to B (since B would have already updated, we should skip it, and the only
7574
- // way we can know to do so is by checking the batch counter).
7575
- updateBatchNumber++;
7576
-
7577
- for (var i = 0; i < len; i++) {
7578
- // If a component is unmounted before pending changes apply, it will still
7579
- // be here, but we assume that it has cleared its _pendingCallbacks and
7580
- // that performUpdateIfNecessary is a noop.
7581
- var component = dirtyComponents[i];
7582
-
7583
- // If performUpdateIfNecessary happens to enqueue any new updates, we
7584
- // shouldn't execute the callbacks until the next render happens, so
7585
- // stash the callbacks first
7586
- var callbacks = component._pendingCallbacks;
7587
- component._pendingCallbacks = null;
7588
-
7589
- var markerName;
7590
- if (ReactFeatureFlags.logTopLevelRenders) {
7591
- var namedComponent = component;
7592
- // Duck type TopLevelWrapper. This is probably always true.
7593
- if (component._currentElement.type.isReactTopLevelWrapper) {
7594
- namedComponent = component._renderedComponent;
7595
- }
7596
- markerName = 'React update: ' + namedComponent.getName();
7597
- console.time(markerName);
7598
- }
7599
-
7600
- ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);
7601
-
7602
- if (markerName) {
7603
- console.timeEnd(markerName);
7604
- }
7605
-
7606
- if (callbacks) {
7607
- for (var j = 0; j < callbacks.length; j++) {
7608
- transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());
7609
- }
7610
- }
7611
- }
7612
- }
7613
-
7614
- var flushBatchedUpdates = function () {
7615
- // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents
7616
- // array and perform any updates enqueued by mount-ready handlers (i.e.,
7617
- // componentDidUpdate) but we need to check here too in order to catch
7618
- // updates enqueued by setState callbacks and asap calls.
7619
- while (dirtyComponents.length || asapEnqueued) {
7620
- if (dirtyComponents.length) {
7621
- var transaction = ReactUpdatesFlushTransaction.getPooled();
7622
- transaction.perform(runBatchedUpdates, null, transaction);
7623
- ReactUpdatesFlushTransaction.release(transaction);
7624
- }
7625
-
7626
- if (asapEnqueued) {
7627
- asapEnqueued = false;
7628
- var queue = asapCallbackQueue;
7629
- asapCallbackQueue = CallbackQueue.getPooled();
7630
- queue.notifyAll();
7631
- CallbackQueue.release(queue);
7632
- }
7633
- }
7634
- };
7635
-
7636
- /**
7637
- * Mark a component as needing a rerender, adding an optional callback to a
7638
- * list of functions which will be executed once the rerender occurs.
7639
- */
7640
- function enqueueUpdate(component) {
7641
- ensureInjected();
7642
-
7643
- // Various parts of our code (such as ReactCompositeComponent's
7644
- // _renderValidatedComponent) assume that calls to render aren't nested;
7645
- // verify that that's the case. (This is called by each top-level update
7646
- // function, like setState, forceUpdate, etc.; creation and
7647
- // destruction of top-level components is guarded in ReactMount.)
7648
-
7649
- if (!batchingStrategy.isBatchingUpdates) {
7650
- batchingStrategy.batchedUpdates(enqueueUpdate, component);
7651
- return;
7652
- }
7653
-
7654
- dirtyComponents.push(component);
7655
- if (component._updateBatchNumber == null) {
7656
- component._updateBatchNumber = updateBatchNumber + 1;
7657
- }
7658
- }
7659
-
7660
- /**
7661
- * Enqueue a callback to be run at the end of the current batching cycle. Throws
7662
- * if no updates are currently being performed.
7663
- */
7664
- function asap(callback, context) {
7665
- !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;
7666
- asapCallbackQueue.enqueue(callback, context);
7667
- asapEnqueued = true;
7668
- }
7669
-
7670
- var ReactUpdatesInjection = {
7671
- injectReconcileTransaction: function (ReconcileTransaction) {
7672
- !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;
7673
- ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;
7674
- },
7675
-
7676
- injectBatchingStrategy: function (_batchingStrategy) {
7677
- !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;
7678
- !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;
7679
- !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;
7680
- batchingStrategy = _batchingStrategy;
7681
- }
7682
- };
7683
-
7684
- var ReactUpdates = {
7685
- /**
7686
- * React references `ReactReconcileTransaction` using this property in order
7687
- * to allow dependency injection.
7688
- *
7689
- * @internal
7690
- */
7691
- ReactReconcileTransaction: null,
7692
-
7693
- batchedUpdates: batchedUpdates,
7694
- enqueueUpdate: enqueueUpdate,
7695
- flushBatchedUpdates: flushBatchedUpdates,
7696
- injection: ReactUpdatesInjection,
7697
- asap: asap
7698
- };
7699
-
7700
- module.exports = ReactUpdates;
7701
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
7702
-
7703
- /***/ },
7704
- /* 59 */
7705
- /***/ function(module, exports, __webpack_require__) {
7706
-
7707
- /* WEBPACK VAR INJECTION */(function(process) {/**
7708
- * Copyright 2013-present, Facebook, Inc.
7709
- * All rights reserved.
7710
- *
7711
- * This source code is licensed under the BSD-style license found in the
7712
- * LICENSE file in the root directory of this source tree. An additional grant
7713
- * of patent rights can be found in the PATENTS file in the same directory.
7714
- *
7715
- *
7716
- */
7717
-
7718
- 'use strict';
7719
-
7720
- var _prodInvariant = __webpack_require__(36);
7721
-
7722
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7723
-
7724
- var PooledClass = __webpack_require__(52);
7725
-
7726
- var invariant = __webpack_require__(9);
7727
-
7728
- /**
7729
- * A specialized pseudo-event module to help keep track of components waiting to
7730
- * be notified when their DOM representations are available for use.
7731
- *
7732
- * This implements `PooledClass`, so you should never need to instantiate this.
7733
- * Instead, use `CallbackQueue.getPooled()`.
7734
- *
7735
- * @class ReactMountReady
7736
- * @implements PooledClass
7737
- * @internal
7738
- */
7739
-
7740
- var CallbackQueue = function () {
7741
- function CallbackQueue(arg) {
7742
- _classCallCheck(this, CallbackQueue);
7743
-
7744
- this._callbacks = null;
7745
- this._contexts = null;
7746
- this._arg = arg;
7747
- }
7748
-
7749
- /**
7750
- * Enqueues a callback to be invoked when `notifyAll` is invoked.
7751
- *
7752
- * @param {function} callback Invoked when `notifyAll` is invoked.
7753
- * @param {?object} context Context to call `callback` with.
7754
- * @internal
7755
- */
7756
-
7757
-
7758
- CallbackQueue.prototype.enqueue = function enqueue(callback, context) {
7759
- this._callbacks = this._callbacks || [];
7760
- this._callbacks.push(callback);
7761
- this._contexts = this._contexts || [];
7762
- this._contexts.push(context);
7763
- };
7764
-
7765
- /**
7766
- * Invokes all enqueued callbacks and clears the queue. This is invoked after
7767
- * the DOM representation of a component has been created or updated.
7768
- *
7769
- * @internal
7770
- */
7771
-
7772
-
7773
- CallbackQueue.prototype.notifyAll = function notifyAll() {
7774
- var callbacks = this._callbacks;
7775
- var contexts = this._contexts;
7776
- var arg = this._arg;
7777
- if (callbacks && contexts) {
7778
- !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;
7779
- this._callbacks = null;
7780
- this._contexts = null;
7781
- for (var i = 0; i < callbacks.length; i++) {
7782
- callbacks[i].call(contexts[i], arg);
7783
- }
7784
- callbacks.length = 0;
7785
- contexts.length = 0;
7786
- }
7787
- };
7788
-
7789
- CallbackQueue.prototype.checkpoint = function checkpoint() {
7790
- return this._callbacks ? this._callbacks.length : 0;
7791
- };
7792
-
7793
- CallbackQueue.prototype.rollback = function rollback(len) {
7794
- if (this._callbacks && this._contexts) {
7795
- this._callbacks.length = len;
7796
- this._contexts.length = len;
7797
- }
7798
- };
7799
-
7800
- /**
7801
- * Resets the internal queue.
7802
- *
7803
- * @internal
7804
- */
7805
-
7806
-
7807
- CallbackQueue.prototype.reset = function reset() {
7808
- this._callbacks = null;
7809
- this._contexts = null;
7810
- };
7811
-
7812
- /**
7813
- * `PooledClass` looks for this.
7814
- */
7815
-
7816
-
7817
- CallbackQueue.prototype.destructor = function destructor() {
7818
- this.reset();
7819
- };
7820
-
7821
- return CallbackQueue;
7822
- }();
7823
-
7824
- module.exports = PooledClass.addPoolingTo(CallbackQueue);
7825
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
7826
-
7827
- /***/ },
7828
- /* 60 */
7829
- /***/ function(module, exports) {
7830
-
7831
- /**
7832
- * Copyright 2013-present, Facebook, Inc.
7833
- * All rights reserved.
7834
- *
7835
- * This source code is licensed under the BSD-style license found in the
7836
- * LICENSE file in the root directory of this source tree. An additional grant
7837
- * of patent rights can be found in the PATENTS file in the same directory.
7838
- *
7839
- *
7840
- */
7841
-
7842
- 'use strict';
7843
-
7844
- var ReactFeatureFlags = {
7845
- // When true, call console.time() before and .timeEnd() after each top-level
7846
- // render (both initial renders and updates). Useful when looking at prod-mode
7847
- // timeline profiles in Chrome, for example.
7848
- logTopLevelRenders: false
7849
- };
7850
-
7851
- module.exports = ReactFeatureFlags;
7852
-
7853
- /***/ },
7854
- /* 61 */
7855
- /***/ function(module, exports, __webpack_require__) {
7856
-
7857
- /* WEBPACK VAR INJECTION */(function(process) {/**
7858
- * Copyright 2013-present, Facebook, Inc.
7859
- * All rights reserved.
7860
- *
7861
- * This source code is licensed under the BSD-style license found in the
7862
- * LICENSE file in the root directory of this source tree. An additional grant
7863
- * of patent rights can be found in the PATENTS file in the same directory.
7864
- *
7865
- */
7866
-
7867
- 'use strict';
7868
-
7869
- var ReactRef = __webpack_require__(62);
7870
- var ReactInstrumentation = __webpack_require__(64);
7871
-
7872
- var warning = __webpack_require__(12);
7873
-
7874
- /**
7875
- * Helper to call ReactRef.attachRefs with this composite component, split out
7876
- * to avoid allocations in the transaction mount-ready queue.
7877
- */
7878
- function attachRefs() {
7879
- ReactRef.attachRefs(this, this._currentElement);
7880
- }
7881
-
7882
- var ReactReconciler = {
7883
-
7884
- /**
7885
- * Initializes the component, renders markup, and registers event listeners.
7886
- *
7887
- * @param {ReactComponent} internalInstance
7888
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
7889
- * @param {?object} the containing host component instance
7890
- * @param {?object} info about the host container
7891
- * @return {?string} Rendered markup to be inserted into the DOM.
7892
- * @final
7893
- * @internal
7894
- */
7895
- mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots
7896
- ) {
7897
- if (process.env.NODE_ENV !== 'production') {
7898
- if (internalInstance._debugID !== 0) {
7899
- ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);
7900
- }
7901
- }
7902
- var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);
7903
- if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {
7904
- transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
7905
- }
7906
- if (process.env.NODE_ENV !== 'production') {
7907
- if (internalInstance._debugID !== 0) {
7908
- ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);
7909
- }
7910
- }
7911
- return markup;
7912
- },
7913
-
7914
- /**
7915
- * Returns a value that can be passed to
7916
- * ReactComponentEnvironment.replaceNodeWithMarkup.
7917
- */
7918
- getHostNode: function (internalInstance) {
7919
- return internalInstance.getHostNode();
7920
- },
7921
-
7922
- /**
7923
- * Releases any resources allocated by `mountComponent`.
7924
- *
7925
- * @final
7926
- * @internal
7927
- */
7928
- unmountComponent: function (internalInstance, safely) {
7929
- if (process.env.NODE_ENV !== 'production') {
7930
- if (internalInstance._debugID !== 0) {
7931
- ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);
7932
- }
7933
- }
7934
- ReactRef.detachRefs(internalInstance, internalInstance._currentElement);
7935
- internalInstance.unmountComponent(safely);
7936
- if (process.env.NODE_ENV !== 'production') {
7937
- if (internalInstance._debugID !== 0) {
7938
- ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);
7939
- }
7940
- }
7941
- },
7942
-
7943
- /**
7944
- * Update a component using a new element.
7945
- *
7946
- * @param {ReactComponent} internalInstance
7947
- * @param {ReactElement} nextElement
7948
- * @param {ReactReconcileTransaction} transaction
7949
- * @param {object} context
7950
- * @internal
7951
- */
7952
- receiveComponent: function (internalInstance, nextElement, transaction, context) {
7953
- var prevElement = internalInstance._currentElement;
7954
-
7955
- if (nextElement === prevElement && context === internalInstance._context) {
7956
- // Since elements are immutable after the owner is rendered,
7957
- // we can do a cheap identity compare here to determine if this is a
7958
- // superfluous reconcile. It's possible for state to be mutable but such
7959
- // change should trigger an update of the owner which would recreate
7960
- // the element. We explicitly check for the existence of an owner since
7961
- // it's possible for an element created outside a composite to be
7962
- // deeply mutated and reused.
7963
-
7964
- // TODO: Bailing out early is just a perf optimization right?
7965
- // TODO: Removing the return statement should affect correctness?
7966
- return;
7967
- }
7968
-
7969
- if (process.env.NODE_ENV !== 'production') {
7970
- if (internalInstance._debugID !== 0) {
7971
- ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);
7972
- }
7973
- }
7974
-
7975
- var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);
7976
-
7977
- if (refsChanged) {
7978
- ReactRef.detachRefs(internalInstance, prevElement);
7979
- }
7980
-
7981
- internalInstance.receiveComponent(nextElement, transaction, context);
7982
-
7983
- if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {
7984
- transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
7985
- }
7986
-
7987
- if (process.env.NODE_ENV !== 'production') {
7988
- if (internalInstance._debugID !== 0) {
7989
- ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
7990
- }
7991
- }
7992
- },
7993
-
7994
- /**
7995
- * Flush any dirty changes in a component.
7996
- *
7997
- * @param {ReactComponent} internalInstance
7998
- * @param {ReactReconcileTransaction} transaction
7999
- * @internal
8000
- */
8001
- performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {
8002
- if (internalInstance._updateBatchNumber !== updateBatchNumber) {
8003
- // The component's enqueued batch number should always be the current
8004
- // batch or the following one.
8005
- process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;
8006
- return;
8007
- }
8008
- if (process.env.NODE_ENV !== 'production') {
8009
- if (internalInstance._debugID !== 0) {
8010
- ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);
8011
- }
8012
- }
8013
- internalInstance.performUpdateIfNecessary(transaction);
8014
- if (process.env.NODE_ENV !== 'production') {
8015
- if (internalInstance._debugID !== 0) {
8016
- ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
8017
- }
8018
- }
8019
- }
8020
-
8021
- };
8022
-
8023
- module.exports = ReactReconciler;
8024
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8025
-
8026
- /***/ },
8027
- /* 62 */
8028
- /***/ function(module, exports, __webpack_require__) {
8029
-
8030
- /**
8031
- * Copyright 2013-present, Facebook, Inc.
8032
- * All rights reserved.
8033
- *
8034
- * This source code is licensed under the BSD-style license found in the
8035
- * LICENSE file in the root directory of this source tree. An additional grant
8036
- * of patent rights can be found in the PATENTS file in the same directory.
8037
- *
8038
- *
8039
- */
8040
-
8041
- 'use strict';
8042
-
8043
- var ReactOwner = __webpack_require__(63);
8044
-
8045
- var ReactRef = {};
8046
-
8047
- function attachRef(ref, component, owner) {
8048
- if (typeof ref === 'function') {
8049
- ref(component.getPublicInstance());
8050
- } else {
8051
- // Legacy ref
8052
- ReactOwner.addComponentAsRefTo(component, ref, owner);
8053
- }
8054
- }
8055
-
8056
- function detachRef(ref, component, owner) {
8057
- if (typeof ref === 'function') {
8058
- ref(null);
8059
- } else {
8060
- // Legacy ref
8061
- ReactOwner.removeComponentAsRefFrom(component, ref, owner);
8062
- }
8063
- }
8064
-
8065
- ReactRef.attachRefs = function (instance, element) {
8066
- if (element === null || typeof element !== 'object') {
8067
- return;
8068
- }
8069
- var ref = element.ref;
8070
- if (ref != null) {
8071
- attachRef(ref, instance, element._owner);
8072
- }
8073
- };
8074
-
8075
- ReactRef.shouldUpdateRefs = function (prevElement, nextElement) {
8076
- // If either the owner or a `ref` has changed, make sure the newest owner
8077
- // has stored a reference to `this`, and the previous owner (if different)
8078
- // has forgotten the reference to `this`. We use the element instead
8079
- // of the public this.props because the post processing cannot determine
8080
- // a ref. The ref conceptually lives on the element.
8081
-
8082
- // TODO: Should this even be possible? The owner cannot change because
8083
- // it's forbidden by shouldUpdateReactComponent. The ref can change
8084
- // if you swap the keys of but not the refs. Reconsider where this check
8085
- // is made. It probably belongs where the key checking and
8086
- // instantiateReactComponent is done.
8087
-
8088
- var prevRef = null;
8089
- var prevOwner = null;
8090
- if (prevElement !== null && typeof prevElement === 'object') {
8091
- prevRef = prevElement.ref;
8092
- prevOwner = prevElement._owner;
8093
- }
8094
-
8095
- var nextRef = null;
8096
- var nextOwner = null;
8097
- if (nextElement !== null && typeof nextElement === 'object') {
8098
- nextRef = nextElement.ref;
8099
- nextOwner = nextElement._owner;
8100
- }
8101
-
8102
- return prevRef !== nextRef ||
8103
- // If owner changes but we have an unchanged function ref, don't update refs
8104
- typeof nextRef === 'string' && nextOwner !== prevOwner;
8105
- };
8106
-
8107
- ReactRef.detachRefs = function (instance, element) {
8108
- if (element === null || typeof element !== 'object') {
8109
- return;
8110
- }
8111
- var ref = element.ref;
8112
- if (ref != null) {
8113
- detachRef(ref, instance, element._owner);
8114
- }
8115
- };
8116
-
8117
- module.exports = ReactRef;
8118
-
8119
- /***/ },
8120
- /* 63 */
8121
- /***/ function(module, exports, __webpack_require__) {
8122
-
8123
- /* WEBPACK VAR INJECTION */(function(process) {/**
8124
- * Copyright 2013-present, Facebook, Inc.
8125
- * All rights reserved.
8126
- *
8127
- * This source code is licensed under the BSD-style license found in the
8128
- * LICENSE file in the root directory of this source tree. An additional grant
8129
- * of patent rights can be found in the PATENTS file in the same directory.
8130
- *
8131
- *
8132
- */
8133
-
8134
- 'use strict';
8135
-
8136
- var _prodInvariant = __webpack_require__(36);
8137
-
8138
- var invariant = __webpack_require__(9);
8139
-
8140
- /**
8141
- * @param {?object} object
8142
- * @return {boolean} True if `object` is a valid owner.
8143
- * @final
8144
- */
8145
- function isValidOwner(object) {
8146
- return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');
8147
- }
8148
-
8149
- /**
8150
- * ReactOwners are capable of storing references to owned components.
8151
- *
8152
- * All components are capable of //being// referenced by owner components, but
8153
- * only ReactOwner components are capable of //referencing// owned components.
8154
- * The named reference is known as a "ref".
8155
- *
8156
- * Refs are available when mounted and updated during reconciliation.
8157
- *
8158
- * var MyComponent = React.createClass({
8159
- * render: function() {
8160
- * return (
8161
- * <div onClick={this.handleClick}>
8162
- * <CustomComponent ref="custom" />
8163
- * </div>
8164
- * );
8165
- * },
8166
- * handleClick: function() {
8167
- * this.refs.custom.handleClick();
8168
- * },
8169
- * componentDidMount: function() {
8170
- * this.refs.custom.initialize();
8171
- * }
8172
- * });
8173
- *
8174
- * Refs should rarely be used. When refs are used, they should only be done to
8175
- * control data that is not handled by React's data flow.
8176
- *
8177
- * @class ReactOwner
8178
- */
8179
- var ReactOwner = {
8180
- /**
8181
- * Adds a component by ref to an owner component.
8182
- *
8183
- * @param {ReactComponent} component Component to reference.
8184
- * @param {string} ref Name by which to refer to the component.
8185
- * @param {ReactOwner} owner Component on which to record the ref.
8186
- * @final
8187
- * @internal
8188
- */
8189
- addComponentAsRefTo: function (component, ref, owner) {
8190
- !isValidOwner(owner) ? process.env.NODE_ENV !== '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;
8191
- owner.attachRef(ref, component);
8192
- },
8193
-
8194
- /**
8195
- * Removes a component by ref from an owner component.
8196
- *
8197
- * @param {ReactComponent} component Component to dereference.
8198
- * @param {string} ref Name of the ref to remove.
8199
- * @param {ReactOwner} owner Component on which the ref is recorded.
8200
- * @final
8201
- * @internal
8202
- */
8203
- removeComponentAsRefFrom: function (component, ref, owner) {
8204
- !isValidOwner(owner) ? process.env.NODE_ENV !== '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;
8205
- var ownerPublicInstance = owner.getPublicInstance();
8206
- // Check that `component`'s owner is still alive and that `component` is still the current ref
8207
- // because we do not want to detach the ref if another component stole it.
8208
- if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {
8209
- owner.detachRef(ref);
8210
- }
8211
- }
8212
-
8213
- };
8214
-
8215
- module.exports = ReactOwner;
8216
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8217
-
8218
- /***/ },
8219
- /* 64 */
8220
- /***/ function(module, exports, __webpack_require__) {
8221
-
8222
- /* WEBPACK VAR INJECTION */(function(process) {/**
8223
- * Copyright 2016-present, Facebook, Inc.
8224
- * All rights reserved.
8225
- *
8226
- * This source code is licensed under the BSD-style license found in the
8227
- * LICENSE file in the root directory of this source tree. An additional grant
8228
- * of patent rights can be found in the PATENTS file in the same directory.
8229
- *
8230
- *
8231
- */
8232
-
8233
- 'use strict';
8234
-
8235
- // Trust the developer to only use ReactInstrumentation with a __DEV__ check
8236
-
8237
- var debugTool = null;
8238
-
8239
- if (process.env.NODE_ENV !== 'production') {
8240
- var ReactDebugTool = __webpack_require__(65);
8241
- debugTool = ReactDebugTool;
8242
- }
8243
-
8244
- module.exports = { debugTool: debugTool };
8245
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8246
-
8247
- /***/ },
8248
- /* 65 */
8249
- /***/ function(module, exports, __webpack_require__) {
8250
-
8251
- /* WEBPACK VAR INJECTION */(function(process) {/**
8252
- * Copyright 2016-present, Facebook, Inc.
8253
- * All rights reserved.
8254
- *
8255
- * This source code is licensed under the BSD-style license found in the
8256
- * LICENSE file in the root directory of this source tree. An additional grant
8257
- * of patent rights can be found in the PATENTS file in the same directory.
8258
- *
8259
- *
8260
- */
8261
-
8262
- 'use strict';
8263
-
8264
- var ReactInvalidSetStateWarningHook = __webpack_require__(66);
8265
- var ReactHostOperationHistoryHook = __webpack_require__(67);
8266
- var ReactComponentTreeHook = __webpack_require__(27);
8267
- var ExecutionEnvironment = __webpack_require__(49);
8268
-
8269
- var performanceNow = __webpack_require__(68);
8270
- var warning = __webpack_require__(12);
8271
-
8272
- var hooks = [];
8273
- var didHookThrowForEvent = {};
8274
-
8275
- function callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) {
8276
- try {
8277
- fn.call(context, arg1, arg2, arg3, arg4, arg5);
8278
- } catch (e) {
8279
- process.env.NODE_ENV !== 'production' ? warning(didHookThrowForEvent[event], 'Exception thrown by hook while handling %s: %s', event, e + '\n' + e.stack) : void 0;
8280
- didHookThrowForEvent[event] = true;
8281
- }
8282
- }
8283
-
8284
- function emitEvent(event, arg1, arg2, arg3, arg4, arg5) {
8285
- for (var i = 0; i < hooks.length; i++) {
8286
- var hook = hooks[i];
8287
- var fn = hook[event];
8288
- if (fn) {
8289
- callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5);
8290
- }
8291
- }
8292
- }
8293
-
8294
- var isProfiling = false;
8295
- var flushHistory = [];
8296
- var lifeCycleTimerStack = [];
8297
- var currentFlushNesting = 0;
8298
- var currentFlushMeasurements = [];
8299
- var currentFlushStartTime = 0;
8300
- var currentTimerDebugID = null;
8301
- var currentTimerStartTime = 0;
8302
- var currentTimerNestedFlushDuration = 0;
8303
- var currentTimerType = null;
8304
-
8305
- var lifeCycleTimerHasWarned = false;
8306
-
8307
- function clearHistory() {
8308
- ReactComponentTreeHook.purgeUnmountedComponents();
8309
- ReactHostOperationHistoryHook.clearHistory();
8310
- }
8311
-
8312
- function getTreeSnapshot(registeredIDs) {
8313
- return registeredIDs.reduce(function (tree, id) {
8314
- var ownerID = ReactComponentTreeHook.getOwnerID(id);
8315
- var parentID = ReactComponentTreeHook.getParentID(id);
8316
- tree[id] = {
8317
- displayName: ReactComponentTreeHook.getDisplayName(id),
8318
- text: ReactComponentTreeHook.getText(id),
8319
- updateCount: ReactComponentTreeHook.getUpdateCount(id),
8320
- childIDs: ReactComponentTreeHook.getChildIDs(id),
8321
- // Text nodes don't have owners but this is close enough.
8322
- ownerID: ownerID || parentID && ReactComponentTreeHook.getOwnerID(parentID) || 0,
8323
- parentID: parentID
8324
- };
8325
- return tree;
8326
- }, {});
8327
- }
8328
-
8329
- function resetMeasurements() {
8330
- var previousStartTime = currentFlushStartTime;
8331
- var previousMeasurements = currentFlushMeasurements;
8332
- var previousOperations = ReactHostOperationHistoryHook.getHistory();
8333
-
8334
- if (currentFlushNesting === 0) {
8335
- currentFlushStartTime = 0;
8336
- currentFlushMeasurements = [];
8337
- clearHistory();
8338
- return;
8339
- }
8340
-
8341
- if (previousMeasurements.length || previousOperations.length) {
8342
- var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();
8343
- flushHistory.push({
8344
- duration: performanceNow() - previousStartTime,
8345
- measurements: previousMeasurements || [],
8346
- operations: previousOperations || [],
8347
- treeSnapshot: getTreeSnapshot(registeredIDs)
8348
- });
8349
- }
8350
-
8351
- clearHistory();
8352
- currentFlushStartTime = performanceNow();
8353
- currentFlushMeasurements = [];
8354
- }
8355
-
8356
- function checkDebugID(debugID) {
8357
- var allowRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8358
-
8359
- if (allowRoot && debugID === 0) {
8360
- return;
8361
- }
8362
- if (!debugID) {
8363
- process.env.NODE_ENV !== 'production' ? warning(false, 'ReactDebugTool: debugID may not be empty.') : void 0;
8364
- }
8365
- }
8366
-
8367
- function beginLifeCycleTimer(debugID, timerType) {
8368
- if (currentFlushNesting === 0) {
8369
- return;
8370
- }
8371
- if (currentTimerType && !lifeCycleTimerHasWarned) {
8372
- process.env.NODE_ENV !== '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;
8373
- lifeCycleTimerHasWarned = true;
8374
- }
8375
- currentTimerStartTime = performanceNow();
8376
- currentTimerNestedFlushDuration = 0;
8377
- currentTimerDebugID = debugID;
8378
- currentTimerType = timerType;
8379
- }
8380
-
8381
- function endLifeCycleTimer(debugID, timerType) {
8382
- if (currentFlushNesting === 0) {
8383
- return;
8384
- }
8385
- if (currentTimerType !== timerType && !lifeCycleTimerHasWarned) {
8386
- process.env.NODE_ENV !== '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;
8387
- lifeCycleTimerHasWarned = true;
8388
- }
8389
- if (isProfiling) {
8390
- currentFlushMeasurements.push({
8391
- timerType: timerType,
8392
- instanceID: debugID,
8393
- duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration
8394
- });
8395
- }
8396
- currentTimerStartTime = 0;
8397
- currentTimerNestedFlushDuration = 0;
8398
- currentTimerDebugID = null;
8399
- currentTimerType = null;
8400
- }
8401
-
8402
- function pauseCurrentLifeCycleTimer() {
8403
- var currentTimer = {
8404
- startTime: currentTimerStartTime,
8405
- nestedFlushStartTime: performanceNow(),
8406
- debugID: currentTimerDebugID,
8407
- timerType: currentTimerType
8408
- };
8409
- lifeCycleTimerStack.push(currentTimer);
8410
- currentTimerStartTime = 0;
8411
- currentTimerNestedFlushDuration = 0;
8412
- currentTimerDebugID = null;
8413
- currentTimerType = null;
8414
- }
8415
-
8416
- function resumeCurrentLifeCycleTimer() {
8417
- var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),
8418
- startTime = _lifeCycleTimerStack$.startTime,
8419
- nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,
8420
- debugID = _lifeCycleTimerStack$.debugID,
8421
- timerType = _lifeCycleTimerStack$.timerType;
8422
-
8423
- var nestedFlushDuration = performanceNow() - nestedFlushStartTime;
8424
- currentTimerStartTime = startTime;
8425
- currentTimerNestedFlushDuration += nestedFlushDuration;
8426
- currentTimerDebugID = debugID;
8427
- currentTimerType = timerType;
8428
- }
8429
-
8430
- var lastMarkTimeStamp = 0;
8431
- var canUsePerformanceMeasure =
8432
- // $FlowFixMe https://github.com/facebook/flow/issues/2345
8433
- typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function';
8434
-
8435
- function shouldMark(debugID) {
8436
- if (!isProfiling || !canUsePerformanceMeasure) {
8437
- return false;
8438
- }
8439
- var element = ReactComponentTreeHook.getElement(debugID);
8440
- if (element == null || typeof element !== 'object') {
8441
- return false;
8442
- }
8443
- var isHostElement = typeof element.type === 'string';
8444
- if (isHostElement) {
8445
- return false;
8446
- }
8447
- return true;
8448
- }
8449
-
8450
- function markBegin(debugID, markType) {
8451
- if (!shouldMark(debugID)) {
8452
- return;
8453
- }
8454
-
8455
- var markName = debugID + '::' + markType;
8456
- lastMarkTimeStamp = performanceNow();
8457
- performance.mark(markName);
8458
- }
8459
-
8460
- function markEnd(debugID, markType) {
8461
- if (!shouldMark(debugID)) {
8462
- return;
8463
- }
8464
-
8465
- var markName = debugID + '::' + markType;
8466
- var displayName = ReactComponentTreeHook.getDisplayName(debugID) || 'Unknown';
8467
-
8468
- // Chrome has an issue of dropping markers recorded too fast:
8469
- // https://bugs.chromium.org/p/chromium/issues/detail?id=640652
8470
- // To work around this, we will not report very small measurements.
8471
- // I determined the magic number by tweaking it back and forth.
8472
- // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe.
8473
- // When the bug is fixed, we can `measure()` unconditionally if we want to.
8474
- var timeStamp = performanceNow();
8475
- if (timeStamp - lastMarkTimeStamp > 0.1) {
8476
- var measurementName = displayName + ' [' + markType + ']';
8477
- performance.measure(measurementName, markName);
8478
- }
8479
-
8480
- performance.clearMarks(markName);
8481
- performance.clearMeasures(measurementName);
8482
- }
8483
-
8484
- var ReactDebugTool = {
8485
- addHook: function (hook) {
8486
- hooks.push(hook);
8487
- },
8488
- removeHook: function (hook) {
8489
- for (var i = 0; i < hooks.length; i++) {
8490
- if (hooks[i] === hook) {
8491
- hooks.splice(i, 1);
8492
- i--;
8493
- }
8494
- }
8495
- },
8496
- isProfiling: function () {
8497
- return isProfiling;
8498
- },
8499
- beginProfiling: function () {
8500
- if (isProfiling) {
8501
- return;
8502
- }
8503
-
8504
- isProfiling = true;
8505
- flushHistory.length = 0;
8506
- resetMeasurements();
8507
- ReactDebugTool.addHook(ReactHostOperationHistoryHook);
8508
- },
8509
- endProfiling: function () {
8510
- if (!isProfiling) {
8511
- return;
8512
- }
8513
-
8514
- isProfiling = false;
8515
- resetMeasurements();
8516
- ReactDebugTool.removeHook(ReactHostOperationHistoryHook);
8517
- },
8518
- getFlushHistory: function () {
8519
- return flushHistory;
8520
- },
8521
- onBeginFlush: function () {
8522
- currentFlushNesting++;
8523
- resetMeasurements();
8524
- pauseCurrentLifeCycleTimer();
8525
- emitEvent('onBeginFlush');
8526
- },
8527
- onEndFlush: function () {
8528
- resetMeasurements();
8529
- currentFlushNesting--;
8530
- resumeCurrentLifeCycleTimer();
8531
- emitEvent('onEndFlush');
8532
- },
8533
- onBeginLifeCycleTimer: function (debugID, timerType) {
8534
- checkDebugID(debugID);
8535
- emitEvent('onBeginLifeCycleTimer', debugID, timerType);
8536
- markBegin(debugID, timerType);
8537
- beginLifeCycleTimer(debugID, timerType);
8538
- },
8539
- onEndLifeCycleTimer: function (debugID, timerType) {
8540
- checkDebugID(debugID);
8541
- endLifeCycleTimer(debugID, timerType);
8542
- markEnd(debugID, timerType);
8543
- emitEvent('onEndLifeCycleTimer', debugID, timerType);
8544
- },
8545
- onBeginProcessingChildContext: function () {
8546
- emitEvent('onBeginProcessingChildContext');
8547
- },
8548
- onEndProcessingChildContext: function () {
8549
- emitEvent('onEndProcessingChildContext');
8550
- },
8551
- onHostOperation: function (operation) {
8552
- checkDebugID(operation.instanceID);
8553
- emitEvent('onHostOperation', operation);
8554
- },
8555
- onSetState: function () {
8556
- emitEvent('onSetState');
8557
- },
8558
- onSetChildren: function (debugID, childDebugIDs) {
8559
- checkDebugID(debugID);
8560
- childDebugIDs.forEach(checkDebugID);
8561
- emitEvent('onSetChildren', debugID, childDebugIDs);
8562
- },
8563
- onBeforeMountComponent: function (debugID, element, parentDebugID) {
8564
- checkDebugID(debugID);
8565
- checkDebugID(parentDebugID, true);
8566
- emitEvent('onBeforeMountComponent', debugID, element, parentDebugID);
8567
- markBegin(debugID, 'mount');
8568
- },
8569
- onMountComponent: function (debugID) {
8570
- checkDebugID(debugID);
8571
- markEnd(debugID, 'mount');
8572
- emitEvent('onMountComponent', debugID);
8573
- },
8574
- onBeforeUpdateComponent: function (debugID, element) {
8575
- checkDebugID(debugID);
8576
- emitEvent('onBeforeUpdateComponent', debugID, element);
8577
- markBegin(debugID, 'update');
8578
- },
8579
- onUpdateComponent: function (debugID) {
8580
- checkDebugID(debugID);
8581
- markEnd(debugID, 'update');
8582
- emitEvent('onUpdateComponent', debugID);
8583
- },
8584
- onBeforeUnmountComponent: function (debugID) {
8585
- checkDebugID(debugID);
8586
- emitEvent('onBeforeUnmountComponent', debugID);
8587
- markBegin(debugID, 'unmount');
8588
- },
8589
- onUnmountComponent: function (debugID) {
8590
- checkDebugID(debugID);
8591
- markEnd(debugID, 'unmount');
8592
- emitEvent('onUnmountComponent', debugID);
8593
- },
8594
- onTestEvent: function () {
8595
- emitEvent('onTestEvent');
8596
- }
8597
- };
8598
-
8599
- // TODO remove these when RN/www gets updated
8600
- ReactDebugTool.addDevtool = ReactDebugTool.addHook;
8601
- ReactDebugTool.removeDevtool = ReactDebugTool.removeHook;
8602
-
8603
- ReactDebugTool.addHook(ReactInvalidSetStateWarningHook);
8604
- ReactDebugTool.addHook(ReactComponentTreeHook);
8605
- var url = ExecutionEnvironment.canUseDOM && window.location.href || '';
8606
- if (/[?&]react_perf\b/.test(url)) {
8607
- ReactDebugTool.beginProfiling();
8608
- }
8609
-
8610
- module.exports = ReactDebugTool;
8611
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8612
-
8613
- /***/ },
8614
- /* 66 */
8615
- /***/ function(module, exports, __webpack_require__) {
8616
-
8617
- /* WEBPACK VAR INJECTION */(function(process) {/**
8618
- * Copyright 2016-present, Facebook, Inc.
8619
- * All rights reserved.
8620
- *
8621
- * This source code is licensed under the BSD-style license found in the
8622
- * LICENSE file in the root directory of this source tree. An additional grant
8623
- * of patent rights can be found in the PATENTS file in the same directory.
8624
- *
8625
- *
8626
- */
8627
-
8628
- 'use strict';
8629
-
8630
- var warning = __webpack_require__(12);
8631
-
8632
- if (process.env.NODE_ENV !== 'production') {
8633
- var processingChildContext = false;
8634
-
8635
- var warnInvalidSetState = function () {
8636
- process.env.NODE_ENV !== 'production' ? warning(!processingChildContext, 'setState(...): Cannot call setState() inside getChildContext()') : void 0;
8637
- };
8638
- }
8639
-
8640
- var ReactInvalidSetStateWarningHook = {
8641
- onBeginProcessingChildContext: function () {
8642
- processingChildContext = true;
8643
- },
8644
- onEndProcessingChildContext: function () {
8645
- processingChildContext = false;
8646
- },
8647
- onSetState: function () {
8648
- warnInvalidSetState();
8649
- }
8650
- };
8651
-
8652
- module.exports = ReactInvalidSetStateWarningHook;
8653
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8654
-
8655
- /***/ },
8656
- /* 67 */
8657
- /***/ function(module, exports) {
8658
-
8659
- /**
8660
- * Copyright 2016-present, Facebook, Inc.
8661
- * All rights reserved.
8662
- *
8663
- * This source code is licensed under the BSD-style license found in the
8664
- * LICENSE file in the root directory of this source tree. An additional grant
8665
- * of patent rights can be found in the PATENTS file in the same directory.
8666
- *
8667
- *
8668
- */
8669
-
8670
- 'use strict';
8671
-
8672
- var history = [];
8673
-
8674
- var ReactHostOperationHistoryHook = {
8675
- onHostOperation: function (operation) {
8676
- history.push(operation);
8677
- },
8678
- clearHistory: function () {
8679
- if (ReactHostOperationHistoryHook._preventClearing) {
8680
- // Should only be used for tests.
8681
- return;
8682
- }
8683
-
8684
- history = [];
8685
- },
8686
- getHistory: function () {
8687
- return history;
8688
- }
8689
- };
8690
-
8691
- module.exports = ReactHostOperationHistoryHook;
8692
-
8693
- /***/ },
8694
- /* 68 */
8695
- /***/ function(module, exports, __webpack_require__) {
8696
-
8697
- 'use strict';
8698
-
8699
- /**
8700
- * Copyright (c) 2013-present, Facebook, Inc.
8701
- * All rights reserved.
8702
- *
8703
- * This source code is licensed under the BSD-style license found in the
8704
- * LICENSE file in the root directory of this source tree. An additional grant
8705
- * of patent rights can be found in the PATENTS file in the same directory.
8706
- *
8707
- * @typechecks
8708
- */
8709
-
8710
- var performance = __webpack_require__(69);
8711
-
8712
- var performanceNow;
8713
-
8714
- /**
8715
- * Detect if we can use `window.performance.now()` and gracefully fallback to
8716
- * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now
8717
- * because of Facebook's testing infrastructure.
8718
- */
8719
- if (performance.now) {
8720
- performanceNow = function performanceNow() {
8721
- return performance.now();
8722
- };
8723
- } else {
8724
- performanceNow = function performanceNow() {
8725
- return Date.now();
8726
- };
8727
- }
8728
-
8729
- module.exports = performanceNow;
8730
-
8731
- /***/ },
8732
- /* 69 */
8733
- /***/ function(module, exports, __webpack_require__) {
8734
-
8735
- /**
8736
- * Copyright (c) 2013-present, Facebook, Inc.
8737
- * All rights reserved.
8738
- *
8739
- * This source code is licensed under the BSD-style license found in the
8740
- * LICENSE file in the root directory of this source tree. An additional grant
8741
- * of patent rights can be found in the PATENTS file in the same directory.
8742
- *
8743
- * @typechecks
8744
- */
8745
-
8746
- 'use strict';
8747
-
8748
- var ExecutionEnvironment = __webpack_require__(49);
8749
-
8750
- var performance;
8751
-
8752
- if (ExecutionEnvironment.canUseDOM) {
8753
- performance = window.performance || window.msPerformance || window.webkitPerformance;
8754
- }
8755
-
8756
- module.exports = performance || {};
8757
-
8758
- /***/ },
8759
- /* 70 */
8760
- /***/ function(module, exports, __webpack_require__) {
8761
-
8762
- /* WEBPACK VAR INJECTION */(function(process) {/**
8763
- * Copyright 2013-present, Facebook, Inc.
8764
- * All rights reserved.
8765
- *
8766
- * This source code is licensed under the BSD-style license found in the
8767
- * LICENSE file in the root directory of this source tree. An additional grant
8768
- * of patent rights can be found in the PATENTS file in the same directory.
8769
- *
8770
- *
8771
- */
8772
-
8773
- 'use strict';
8774
-
8775
- var _prodInvariant = __webpack_require__(36);
8776
-
8777
- var invariant = __webpack_require__(9);
8778
-
8779
- var OBSERVED_ERROR = {};
8780
-
8781
- /**
8782
- * `Transaction` creates a black box that is able to wrap any method such that
8783
- * certain invariants are maintained before and after the method is invoked
8784
- * (Even if an exception is thrown while invoking the wrapped method). Whoever
8785
- * instantiates a transaction can provide enforcers of the invariants at
8786
- * creation time. The `Transaction` class itself will supply one additional
8787
- * automatic invariant for you - the invariant that any transaction instance
8788
- * should not be run while it is already being run. You would typically create a
8789
- * single instance of a `Transaction` for reuse multiple times, that potentially
8790
- * is used to wrap several different methods. Wrappers are extremely simple -
8791
- * they only require implementing two methods.
8792
- *
8793
- * <pre>
8794
- * wrappers (injected at creation time)
8795
- * + +
8796
- * | |
8797
- * +-----------------|--------|--------------+
8798
- * | v | |
8799
- * | +---------------+ | |
8800
- * | +--| wrapper1 |---|----+ |
8801
- * | | +---------------+ v | |
8802
- * | | +-------------+ | |
8803
- * | | +----| wrapper2 |--------+ |
8804
- * | | | +-------------+ | | |
8805
- * | | | | | |
8806
- * | v v v v | wrapper
8807
- * | +---+ +---+ +---------+ +---+ +---+ | invariants
8808
- * perform(anyMethod) | | | | | | | | | | | | maintained
8809
- * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->
8810
- * | | | | | | | | | | | |
8811
- * | | | | | | | | | | | |
8812
- * | | | | | | | | | | | |
8813
- * | +---+ +---+ +---------+ +---+ +---+ |
8814
- * | initialize close |
8815
- * +-----------------------------------------+
8816
- * </pre>
8817
- *
8818
- * Use cases:
8819
- * - Preserving the input selection ranges before/after reconciliation.
8820
- * Restoring selection even in the event of an unexpected error.
8821
- * - Deactivating events while rearranging the DOM, preventing blurs/focuses,
8822
- * while guaranteeing that afterwards, the event system is reactivated.
8823
- * - Flushing a queue of collected DOM mutations to the main UI thread after a
8824
- * reconciliation takes place in a worker thread.
8825
- * - Invoking any collected `componentDidUpdate` callbacks after rendering new
8826
- * content.
8827
- * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue
8828
- * to preserve the `scrollTop` (an automatic scroll aware DOM).
8829
- * - (Future use case): Layout calculations before and after DOM updates.
8830
- *
8831
- * Transactional plugin API:
8832
- * - A module that has an `initialize` method that returns any precomputation.
8833
- * - and a `close` method that accepts the precomputation. `close` is invoked
8834
- * when the wrapped process is completed, or has failed.
8835
- *
8836
- * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules
8837
- * that implement `initialize` and `close`.
8838
- * @return {Transaction} Single transaction for reuse in thread.
8839
- *
8840
- * @class Transaction
8841
- */
8842
- var TransactionImpl = {
8843
- /**
8844
- * Sets up this instance so that it is prepared for collecting metrics. Does
8845
- * so such that this setup method may be used on an instance that is already
8846
- * initialized, in a way that does not consume additional memory upon reuse.
8847
- * That can be useful if you decide to make your subclass of this mixin a
8848
- * "PooledClass".
8849
- */
8850
- reinitializeTransaction: function () {
8851
- this.transactionWrappers = this.getTransactionWrappers();
8852
- if (this.wrapperInitData) {
8853
- this.wrapperInitData.length = 0;
8854
- } else {
8855
- this.wrapperInitData = [];
8856
- }
8857
- this._isInTransaction = false;
8858
- },
8859
-
8860
- _isInTransaction: false,
8861
-
8862
- /**
8863
- * @abstract
8864
- * @return {Array<TransactionWrapper>} Array of transaction wrappers.
8865
- */
8866
- getTransactionWrappers: null,
8867
-
8868
- isInTransaction: function () {
8869
- return !!this._isInTransaction;
8870
- },
8871
-
8872
- /**
8873
- * Executes the function within a safety window. Use this for the top level
8874
- * methods that result in large amounts of computation/mutations that would
8875
- * need to be safety checked. The optional arguments helps prevent the need
8876
- * to bind in many cases.
8877
- *
8878
- * @param {function} method Member of scope to call.
8879
- * @param {Object} scope Scope to invoke from.
8880
- * @param {Object?=} a Argument to pass to the method.
8881
- * @param {Object?=} b Argument to pass to the method.
8882
- * @param {Object?=} c Argument to pass to the method.
8883
- * @param {Object?=} d Argument to pass to the method.
8884
- * @param {Object?=} e Argument to pass to the method.
8885
- * @param {Object?=} f Argument to pass to the method.
8886
- *
8887
- * @return {*} Return value from `method`.
8888
- */
8889
- perform: function (method, scope, a, b, c, d, e, f) {
8890
- !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;
8891
- var errorThrown;
8892
- var ret;
8893
- try {
8894
- this._isInTransaction = true;
8895
- // Catching errors makes debugging more difficult, so we start with
8896
- // errorThrown set to true before setting it to false after calling
8897
- // close -- if it's still set to true in the finally block, it means
8898
- // one of these calls threw.
8899
- errorThrown = true;
8900
- this.initializeAll(0);
8901
- ret = method.call(scope, a, b, c, d, e, f);
8902
- errorThrown = false;
8903
- } finally {
8904
- try {
8905
- if (errorThrown) {
8906
- // If `method` throws, prefer to show that stack trace over any thrown
8907
- // by invoking `closeAll`.
8908
- try {
8909
- this.closeAll(0);
8910
- } catch (err) {}
8911
- } else {
8912
- // Since `method` didn't throw, we don't want to silence the exception
8913
- // here.
8914
- this.closeAll(0);
8915
- }
8916
- } finally {
8917
- this._isInTransaction = false;
8918
- }
8919
- }
8920
- return ret;
8921
- },
8922
-
8923
- initializeAll: function (startIndex) {
8924
- var transactionWrappers = this.transactionWrappers;
8925
- for (var i = startIndex; i < transactionWrappers.length; i++) {
8926
- var wrapper = transactionWrappers[i];
8927
- try {
8928
- // Catching errors makes debugging more difficult, so we start with the
8929
- // OBSERVED_ERROR state before overwriting it with the real return value
8930
- // of initialize -- if it's still set to OBSERVED_ERROR in the finally
8931
- // block, it means wrapper.initialize threw.
8932
- this.wrapperInitData[i] = OBSERVED_ERROR;
8933
- this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;
8934
- } finally {
8935
- if (this.wrapperInitData[i] === OBSERVED_ERROR) {
8936
- // The initializer for wrapper i threw an error; initialize the
8937
- // remaining wrappers but silence any exceptions from them to ensure
8938
- // that the first error is the one to bubble up.
8939
- try {
8940
- this.initializeAll(i + 1);
8941
- } catch (err) {}
8942
- }
8943
- }
8944
- }
8945
- },
8946
-
8947
- /**
8948
- * Invokes each of `this.transactionWrappers.close[i]` functions, passing into
8949
- * them the respective return values of `this.transactionWrappers.init[i]`
8950
- * (`close`rs that correspond to initializers that failed will not be
8951
- * invoked).
8952
- */
8953
- closeAll: function (startIndex) {
8954
- !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;
8955
- var transactionWrappers = this.transactionWrappers;
8956
- for (var i = startIndex; i < transactionWrappers.length; i++) {
8957
- var wrapper = transactionWrappers[i];
8958
- var initData = this.wrapperInitData[i];
8959
- var errorThrown;
8960
- try {
8961
- // Catching errors makes debugging more difficult, so we start with
8962
- // errorThrown set to true before setting it to false after calling
8963
- // close -- if it's still set to true in the finally block, it means
8964
- // wrapper.close threw.
8965
- errorThrown = true;
8966
- if (initData !== OBSERVED_ERROR && wrapper.close) {
8967
- wrapper.close.call(this, initData);
8968
- }
8969
- errorThrown = false;
8970
- } finally {
8971
- if (errorThrown) {
8972
- // The closer for wrapper i threw an error; close the remaining
8973
- // wrappers but silence any exceptions from them to ensure that the
8974
- // first error is the one to bubble up.
8975
- try {
8976
- this.closeAll(i + 1);
8977
- } catch (e) {}
8978
- }
8979
- }
8980
- }
8981
- this.wrapperInitData.length = 0;
8982
- }
8983
- };
8984
-
8985
- module.exports = TransactionImpl;
8986
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
8987
-
8988
- /***/ },
8989
- /* 71 */
8990
- /***/ function(module, exports) {
8991
-
8992
- /**
8993
- * Copyright 2013-present, Facebook, Inc.
8994
- * All rights reserved.
8995
- *
8996
- * This source code is licensed under the BSD-style license found in the
8997
- * LICENSE file in the root directory of this source tree. An additional grant
8998
- * of patent rights can be found in the PATENTS file in the same directory.
8999
- *
9000
- */
9001
-
9002
- 'use strict';
9003
-
9004
- /**
9005
- * Gets the target node from a native browser event by accounting for
9006
- * inconsistencies in browser DOM APIs.
9007
- *
9008
- * @param {object} nativeEvent Native browser event.
9009
- * @return {DOMEventTarget} Target node.
9010
- */
9011
-
9012
- function getEventTarget(nativeEvent) {
9013
- var target = nativeEvent.target || nativeEvent.srcElement || window;
9014
-
9015
- // Normalize SVG <use> element events #4963
9016
- if (target.correspondingUseElement) {
9017
- target = target.correspondingUseElement;
9018
- }
9019
-
9020
- // Safari may fire events on text nodes (Node.TEXT_NODE is 3).
9021
- // @see http://www.quirksmode.org/js/events_properties.html
9022
- return target.nodeType === 3 ? target.parentNode : target;
9023
- }
9024
-
9025
- module.exports = getEventTarget;
9026
-
9027
- /***/ },
9028
- /* 72 */
9029
- /***/ function(module, exports, __webpack_require__) {
9030
-
9031
- /**
9032
- * Copyright 2013-present, Facebook, Inc.
9033
- * All rights reserved.
9034
- *
9035
- * This source code is licensed under the BSD-style license found in the
9036
- * LICENSE file in the root directory of this source tree. An additional grant
9037
- * of patent rights can be found in the PATENTS file in the same directory.
9038
- *
9039
- */
9040
-
9041
- 'use strict';
9042
-
9043
- var ExecutionEnvironment = __webpack_require__(49);
9044
-
9045
- var useHasFeature;
9046
- if (ExecutionEnvironment.canUseDOM) {
9047
- useHasFeature = document.implementation && document.implementation.hasFeature &&
9048
- // always returns true in newer browsers as per the standard.
9049
- // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature
9050
- document.implementation.hasFeature('', '') !== true;
9051
- }
9052
-
9053
- /**
9054
- * Checks if an event is supported in the current execution environment.
9055
- *
9056
- * NOTE: This will not work correctly for non-generic events such as `change`,
9057
- * `reset`, `load`, `error`, and `select`.
9058
- *
9059
- * Borrows from Modernizr.
9060
- *
9061
- * @param {string} eventNameSuffix Event name, e.g. "click".
9062
- * @param {?boolean} capture Check if the capture phase is supported.
9063
- * @return {boolean} True if the event is supported.
9064
- * @internal
9065
- * @license Modernizr 3.0.0pre (Custom Build) | MIT
9066
- */
9067
- function isEventSupported(eventNameSuffix, capture) {
9068
- if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {
9069
- return false;
9070
- }
9071
-
9072
- var eventName = 'on' + eventNameSuffix;
9073
- var isSupported = eventName in document;
9074
-
9075
- if (!isSupported) {
9076
- var element = document.createElement('div');
9077
- element.setAttribute(eventName, 'return;');
9078
- isSupported = typeof element[eventName] === 'function';
9079
- }
9080
-
9081
- if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {
9082
- // This is the only way to test support for the `wheel` event in IE9+.
9083
- isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
9084
- }
9085
-
9086
- return isSupported;
9087
- }
9088
-
9089
- module.exports = isEventSupported;
9090
-
9091
- /***/ },
9092
- /* 73 */
9093
- /***/ function(module, exports) {
9094
-
9095
- /**
9096
- * Copyright 2013-present, Facebook, Inc.
9097
- * All rights reserved.
9098
- *
9099
- * This source code is licensed under the BSD-style license found in the
9100
- * LICENSE file in the root directory of this source tree. An additional grant
9101
- * of patent rights can be found in the PATENTS file in the same directory.
9102
- *
9103
- *
9104
- */
9105
-
9106
- 'use strict';
9107
-
9108
- /**
9109
- * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
9110
- */
9111
-
9112
- var supportedInputTypes = {
9113
- 'color': true,
9114
- 'date': true,
9115
- 'datetime': true,
9116
- 'datetime-local': true,
9117
- 'email': true,
9118
- 'month': true,
9119
- 'number': true,
9120
- 'password': true,
9121
- 'range': true,
9122
- 'search': true,
9123
- 'tel': true,
9124
- 'text': true,
9125
- 'time': true,
9126
- 'url': true,
9127
- 'week': true
9128
- };
9129
-
9130
- function isTextInputElement(elem) {
9131
- var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
9132
-
9133
- if (nodeName === 'input') {
9134
- return !!supportedInputTypes[elem.type];
9135
- }
9136
-
9137
- if (nodeName === 'textarea') {
9138
- return true;
9139
- }
9140
-
9141
- return false;
9142
- }
9143
-
9144
- module.exports = isTextInputElement;
9145
-
9146
- /***/ },
9147
- /* 74 */
9148
- /***/ function(module, exports) {
9149
-
9150
- /**
9151
- * Copyright 2013-present, Facebook, Inc.
9152
- * All rights reserved.
9153
- *
9154
- * This source code is licensed under the BSD-style license found in the
9155
- * LICENSE file in the root directory of this source tree. An additional grant
9156
- * of patent rights can be found in the PATENTS file in the same directory.
9157
- *
9158
- */
9159
-
9160
- 'use strict';
9161
-
9162
- /**
9163
- * Module that is injectable into `EventPluginHub`, that specifies a
9164
- * deterministic ordering of `EventPlugin`s. A convenient way to reason about
9165
- * plugins, without having to package every one of them. This is better than
9166
- * having plugins be ordered in the same order that they are injected because
9167
- * that ordering would be influenced by the packaging order.
9168
- * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that
9169
- * preventing default on events is convenient in `SimpleEventPlugin` handlers.
9170
- */
9171
-
9172
- var DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];
9173
-
9174
- module.exports = DefaultEventPluginOrder;
9175
-
9176
- /***/ },
9177
- /* 75 */
9178
- /***/ function(module, exports, __webpack_require__) {
9179
-
9180
- /**
9181
- * Copyright 2013-present, Facebook, Inc.
9182
- * All rights reserved.
9183
- *
9184
- * This source code is licensed under the BSD-style license found in the
9185
- * LICENSE file in the root directory of this source tree. An additional grant
9186
- * of patent rights can be found in the PATENTS file in the same directory.
9187
- *
9188
- */
9189
-
9190
- 'use strict';
9191
-
9192
- var EventPropagators = __webpack_require__(42);
9193
- var ReactDOMComponentTree = __webpack_require__(35);
9194
- var SyntheticMouseEvent = __webpack_require__(76);
9195
-
9196
- var eventTypes = {
9197
- mouseEnter: {
9198
- registrationName: 'onMouseEnter',
9199
- dependencies: ['topMouseOut', 'topMouseOver']
9200
- },
9201
- mouseLeave: {
9202
- registrationName: 'onMouseLeave',
9203
- dependencies: ['topMouseOut', 'topMouseOver']
9204
- }
9205
- };
9206
-
9207
- var EnterLeaveEventPlugin = {
9208
-
9209
- eventTypes: eventTypes,
9210
-
9211
- /**
9212
- * For almost every interaction we care about, there will be both a top-level
9213
- * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that
9214
- * we do not extract duplicate events. However, moving the mouse into the
9215
- * browser from outside will not fire a `mouseout` event. In this case, we use
9216
- * the `mouseover` top-level event.
9217
- */
9218
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
9219
- if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {
9220
- return null;
9221
- }
9222
- if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {
9223
- // Must not be a mouse in or mouse out - ignoring.
9224
- return null;
9225
- }
9226
-
9227
- var win;
9228
- if (nativeEventTarget.window === nativeEventTarget) {
9229
- // `nativeEventTarget` is probably a window object.
9230
- win = nativeEventTarget;
9231
- } else {
9232
- // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
9233
- var doc = nativeEventTarget.ownerDocument;
9234
- if (doc) {
9235
- win = doc.defaultView || doc.parentWindow;
9236
- } else {
9237
- win = window;
9238
- }
9239
- }
9240
-
9241
- var from;
9242
- var to;
9243
- if (topLevelType === 'topMouseOut') {
9244
- from = targetInst;
9245
- var related = nativeEvent.relatedTarget || nativeEvent.toElement;
9246
- to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;
9247
- } else {
9248
- // Moving to a node from outside the window.
9249
- from = null;
9250
- to = targetInst;
9251
- }
9252
-
9253
- if (from === to) {
9254
- // Nothing pertains to our managed components.
9255
- return null;
9256
- }
9257
-
9258
- var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);
9259
- var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);
9260
-
9261
- var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);
9262
- leave.type = 'mouseleave';
9263
- leave.target = fromNode;
9264
- leave.relatedTarget = toNode;
9265
-
9266
- var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);
9267
- enter.type = 'mouseenter';
9268
- enter.target = toNode;
9269
- enter.relatedTarget = fromNode;
9270
-
9271
- EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);
9272
-
9273
- return [leave, enter];
9274
- }
9275
-
9276
- };
9277
-
9278
- module.exports = EnterLeaveEventPlugin;
9279
-
9280
- /***/ },
9281
- /* 76 */
9282
- /***/ function(module, exports, __webpack_require__) {
9283
-
9284
- /**
9285
- * Copyright 2013-present, Facebook, Inc.
9286
- * All rights reserved.
9287
- *
9288
- * This source code is licensed under the BSD-style license found in the
9289
- * LICENSE file in the root directory of this source tree. An additional grant
9290
- * of patent rights can be found in the PATENTS file in the same directory.
9291
- *
9292
- */
9293
-
9294
- 'use strict';
9295
-
9296
- var SyntheticUIEvent = __webpack_require__(77);
9297
- var ViewportMetrics = __webpack_require__(78);
9298
-
9299
- var getEventModifierState = __webpack_require__(79);
9300
-
9301
- /**
9302
- * @interface MouseEvent
9303
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
9304
- */
9305
- var MouseEventInterface = {
9306
- screenX: null,
9307
- screenY: null,
9308
- clientX: null,
9309
- clientY: null,
9310
- ctrlKey: null,
9311
- shiftKey: null,
9312
- altKey: null,
9313
- metaKey: null,
9314
- getModifierState: getEventModifierState,
9315
- button: function (event) {
9316
- // Webkit, Firefox, IE9+
9317
- // which: 1 2 3
9318
- // button: 0 1 2 (standard)
9319
- var button = event.button;
9320
- if ('which' in event) {
9321
- return button;
9322
- }
9323
- // IE<9
9324
- // which: undefined
9325
- // button: 0 0 0
9326
- // button: 1 4 2 (onmouseup)
9327
- return button === 2 ? 2 : button === 4 ? 1 : 0;
9328
- },
9329
- buttons: null,
9330
- relatedTarget: function (event) {
9331
- return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);
9332
- },
9333
- // "Proprietary" Interface.
9334
- pageX: function (event) {
9335
- return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;
9336
- },
9337
- pageY: function (event) {
9338
- return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;
9339
- }
9340
- };
9341
-
9342
- /**
9343
- * @param {object} dispatchConfig Configuration used to dispatch this event.
9344
- * @param {string} dispatchMarker Marker identifying the event target.
9345
- * @param {object} nativeEvent Native browser event.
9346
- * @extends {SyntheticUIEvent}
9347
- */
9348
- function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
9349
- return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
9350
- }
9351
-
9352
- SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
9353
-
9354
- module.exports = SyntheticMouseEvent;
9355
-
9356
- /***/ },
9357
- /* 77 */
9358
- /***/ function(module, exports, __webpack_require__) {
9359
-
9360
- /**
9361
- * Copyright 2013-present, Facebook, Inc.
9362
- * All rights reserved.
9363
- *
9364
- * This source code is licensed under the BSD-style license found in the
9365
- * LICENSE file in the root directory of this source tree. An additional grant
9366
- * of patent rights can be found in the PATENTS file in the same directory.
9367
- *
9368
- */
9369
-
9370
- 'use strict';
9371
-
9372
- var SyntheticEvent = __webpack_require__(55);
9373
-
9374
- var getEventTarget = __webpack_require__(71);
9375
-
9376
- /**
9377
- * @interface UIEvent
9378
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
9379
- */
9380
- var UIEventInterface = {
9381
- view: function (event) {
9382
- if (event.view) {
9383
- return event.view;
9384
- }
9385
-
9386
- var target = getEventTarget(event);
9387
- if (target.window === target) {
9388
- // target is a window object
9389
- return target;
9390
- }
9391
-
9392
- var doc = target.ownerDocument;
9393
- // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
9394
- if (doc) {
9395
- return doc.defaultView || doc.parentWindow;
9396
- } else {
9397
- return window;
9398
- }
9399
- },
9400
- detail: function (event) {
9401
- return event.detail || 0;
9402
- }
9403
- };
9404
-
9405
- /**
9406
- * @param {object} dispatchConfig Configuration used to dispatch this event.
9407
- * @param {string} dispatchMarker Marker identifying the event target.
9408
- * @param {object} nativeEvent Native browser event.
9409
- * @extends {SyntheticEvent}
9410
- */
9411
- function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
9412
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
9413
- }
9414
-
9415
- SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
9416
-
9417
- module.exports = SyntheticUIEvent;
9418
-
9419
- /***/ },
9420
- /* 78 */
9421
- /***/ function(module, exports) {
9422
-
9423
- /**
9424
- * Copyright 2013-present, Facebook, Inc.
9425
- * All rights reserved.
9426
- *
9427
- * This source code is licensed under the BSD-style license found in the
9428
- * LICENSE file in the root directory of this source tree. An additional grant
9429
- * of patent rights can be found in the PATENTS file in the same directory.
9430
- *
9431
- */
9432
-
9433
- 'use strict';
9434
-
9435
- var ViewportMetrics = {
9436
-
9437
- currentScrollLeft: 0,
9438
-
9439
- currentScrollTop: 0,
9440
-
9441
- refreshScrollValues: function (scrollPosition) {
9442
- ViewportMetrics.currentScrollLeft = scrollPosition.x;
9443
- ViewportMetrics.currentScrollTop = scrollPosition.y;
9444
- }
9445
-
9446
- };
9447
-
9448
- module.exports = ViewportMetrics;
9449
-
9450
- /***/ },
9451
- /* 79 */
9452
- /***/ function(module, exports) {
9453
-
9454
- /**
9455
- * Copyright 2013-present, Facebook, Inc.
9456
- * All rights reserved.
9457
- *
9458
- * This source code is licensed under the BSD-style license found in the
9459
- * LICENSE file in the root directory of this source tree. An additional grant
9460
- * of patent rights can be found in the PATENTS file in the same directory.
9461
- *
9462
- */
9463
-
9464
- 'use strict';
9465
-
9466
- /**
9467
- * Translation from modifier key to the associated property in the event.
9468
- * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers
9469
- */
9470
-
9471
- var modifierKeyToProp = {
9472
- 'Alt': 'altKey',
9473
- 'Control': 'ctrlKey',
9474
- 'Meta': 'metaKey',
9475
- 'Shift': 'shiftKey'
9476
- };
9477
-
9478
- // IE8 does not implement getModifierState so we simply map it to the only
9479
- // modifier keys exposed by the event itself, does not support Lock-keys.
9480
- // Currently, all major browsers except Chrome seems to support Lock-keys.
9481
- function modifierStateGetter(keyArg) {
9482
- var syntheticEvent = this;
9483
- var nativeEvent = syntheticEvent.nativeEvent;
9484
- if (nativeEvent.getModifierState) {
9485
- return nativeEvent.getModifierState(keyArg);
9486
- }
9487
- var keyProp = modifierKeyToProp[keyArg];
9488
- return keyProp ? !!nativeEvent[keyProp] : false;
9489
- }
9490
-
9491
- function getEventModifierState(nativeEvent) {
9492
- return modifierStateGetter;
9493
- }
9494
-
9495
- module.exports = getEventModifierState;
9496
-
9497
- /***/ },
9498
- /* 80 */
9499
- /***/ function(module, exports, __webpack_require__) {
9500
-
9501
- /**
9502
- * Copyright 2013-present, Facebook, Inc.
9503
- * All rights reserved.
9504
- *
9505
- * This source code is licensed under the BSD-style license found in the
9506
- * LICENSE file in the root directory of this source tree. An additional grant
9507
- * of patent rights can be found in the PATENTS file in the same directory.
9508
- *
9509
- */
9510
-
9511
- 'use strict';
9512
-
9513
- var DOMProperty = __webpack_require__(37);
9514
-
9515
- var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
9516
- var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
9517
- var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;
9518
- var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
9519
- var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
9520
-
9521
- var HTMLDOMPropertyConfig = {
9522
- isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),
9523
- Properties: {
9524
- /**
9525
- * Standard Properties
9526
- */
9527
- accept: 0,
9528
- acceptCharset: 0,
9529
- accessKey: 0,
9530
- action: 0,
9531
- allowFullScreen: HAS_BOOLEAN_VALUE,
9532
- allowTransparency: 0,
9533
- alt: 0,
9534
- // specifies target context for links with `preload` type
9535
- as: 0,
9536
- async: HAS_BOOLEAN_VALUE,
9537
- autoComplete: 0,
9538
- // autoFocus is polyfilled/normalized by AutoFocusUtils
9539
- // autoFocus: HAS_BOOLEAN_VALUE,
9540
- autoPlay: HAS_BOOLEAN_VALUE,
9541
- capture: HAS_BOOLEAN_VALUE,
9542
- cellPadding: 0,
9543
- cellSpacing: 0,
9544
- charSet: 0,
9545
- challenge: 0,
9546
- checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9547
- cite: 0,
9548
- classID: 0,
9549
- className: 0,
9550
- cols: HAS_POSITIVE_NUMERIC_VALUE,
9551
- colSpan: 0,
9552
- content: 0,
9553
- contentEditable: 0,
9554
- contextMenu: 0,
9555
- controls: HAS_BOOLEAN_VALUE,
9556
- coords: 0,
9557
- crossOrigin: 0,
9558
- data: 0, // For `<object />` acts as `src`.
9559
- dateTime: 0,
9560
- 'default': HAS_BOOLEAN_VALUE,
9561
- defer: HAS_BOOLEAN_VALUE,
9562
- dir: 0,
9563
- disabled: HAS_BOOLEAN_VALUE,
9564
- download: HAS_OVERLOADED_BOOLEAN_VALUE,
9565
- draggable: 0,
9566
- encType: 0,
9567
- form: 0,
9568
- formAction: 0,
9569
- formEncType: 0,
9570
- formMethod: 0,
9571
- formNoValidate: HAS_BOOLEAN_VALUE,
9572
- formTarget: 0,
9573
- frameBorder: 0,
9574
- headers: 0,
9575
- height: 0,
9576
- hidden: HAS_BOOLEAN_VALUE,
9577
- high: 0,
9578
- href: 0,
9579
- hrefLang: 0,
9580
- htmlFor: 0,
9581
- httpEquiv: 0,
9582
- icon: 0,
9583
- id: 0,
9584
- inputMode: 0,
9585
- integrity: 0,
9586
- is: 0,
9587
- keyParams: 0,
9588
- keyType: 0,
9589
- kind: 0,
9590
- label: 0,
9591
- lang: 0,
9592
- list: 0,
9593
- loop: HAS_BOOLEAN_VALUE,
9594
- low: 0,
9595
- manifest: 0,
9596
- marginHeight: 0,
9597
- marginWidth: 0,
9598
- max: 0,
9599
- maxLength: 0,
9600
- media: 0,
9601
- mediaGroup: 0,
9602
- method: 0,
9603
- min: 0,
9604
- minLength: 0,
9605
- // Caution; `option.selected` is not updated if `select.multiple` is
9606
- // disabled with `removeAttribute`.
9607
- multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9608
- muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9609
- name: 0,
9610
- nonce: 0,
9611
- noValidate: HAS_BOOLEAN_VALUE,
9612
- open: HAS_BOOLEAN_VALUE,
9613
- optimum: 0,
9614
- pattern: 0,
9615
- placeholder: 0,
9616
- playsInline: HAS_BOOLEAN_VALUE,
9617
- poster: 0,
9618
- preload: 0,
9619
- profile: 0,
9620
- radioGroup: 0,
9621
- readOnly: HAS_BOOLEAN_VALUE,
9622
- referrerPolicy: 0,
9623
- rel: 0,
9624
- required: HAS_BOOLEAN_VALUE,
9625
- reversed: HAS_BOOLEAN_VALUE,
9626
- role: 0,
9627
- rows: HAS_POSITIVE_NUMERIC_VALUE,
9628
- rowSpan: HAS_NUMERIC_VALUE,
9629
- sandbox: 0,
9630
- scope: 0,
9631
- scoped: HAS_BOOLEAN_VALUE,
9632
- scrolling: 0,
9633
- seamless: HAS_BOOLEAN_VALUE,
9634
- selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
9635
- shape: 0,
9636
- size: HAS_POSITIVE_NUMERIC_VALUE,
9637
- sizes: 0,
9638
- span: HAS_POSITIVE_NUMERIC_VALUE,
9639
- spellCheck: 0,
9640
- src: 0,
9641
- srcDoc: 0,
9642
- srcLang: 0,
9643
- srcSet: 0,
9644
- start: HAS_NUMERIC_VALUE,
9645
- step: 0,
9646
- style: 0,
9647
- summary: 0,
9648
- tabIndex: 0,
9649
- target: 0,
9650
- title: 0,
9651
- // Setting .type throws on non-<input> tags
9652
- type: 0,
9653
- useMap: 0,
9654
- value: 0,
9655
- width: 0,
9656
- wmode: 0,
9657
- wrap: 0,
9658
-
9659
- /**
9660
- * RDFa Properties
9661
- */
9662
- about: 0,
9663
- datatype: 0,
9664
- inlist: 0,
9665
- prefix: 0,
9666
- // property is also supported for OpenGraph in meta tags.
9667
- property: 0,
9668
- resource: 0,
9669
- 'typeof': 0,
9670
- vocab: 0,
9671
-
9672
- /**
9673
- * Non-standard Properties
9674
- */
9675
- // autoCapitalize and autoCorrect are supported in Mobile Safari for
9676
- // keyboard hints.
9677
- autoCapitalize: 0,
9678
- autoCorrect: 0,
9679
- // autoSave allows WebKit/Blink to persist values of input fields on page reloads
9680
- autoSave: 0,
9681
- // color is for Safari mask-icon link
9682
- color: 0,
9683
- // itemProp, itemScope, itemType are for
9684
- // Microdata support. See http://schema.org/docs/gs.html
9685
- itemProp: 0,
9686
- itemScope: HAS_BOOLEAN_VALUE,
9687
- itemType: 0,
9688
- // itemID and itemRef are for Microdata support as well but
9689
- // only specified in the WHATWG spec document. See
9690
- // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api
9691
- itemID: 0,
9692
- itemRef: 0,
9693
- // results show looking glass icon and recent searches on input
9694
- // search fields in WebKit/Blink
9695
- results: 0,
9696
- // IE-only attribute that specifies security restrictions on an iframe
9697
- // as an alternative to the sandbox attribute on IE<10
9698
- security: 0,
9699
- // IE-only attribute that controls focus behavior
9700
- unselectable: 0
9701
- },
9702
- DOMAttributeNames: {
9703
- acceptCharset: 'accept-charset',
9704
- className: 'class',
9705
- htmlFor: 'for',
9706
- httpEquiv: 'http-equiv'
9707
- },
9708
- DOMPropertyNames: {}
9709
- };
9710
-
9711
- module.exports = HTMLDOMPropertyConfig;
9712
-
9713
- /***/ },
9714
- /* 81 */
9715
- /***/ function(module, exports, __webpack_require__) {
9716
-
9717
- /**
9718
- * Copyright 2013-present, Facebook, Inc.
9719
- * All rights reserved.
9720
- *
9721
- * This source code is licensed under the BSD-style license found in the
9722
- * LICENSE file in the root directory of this source tree. An additional grant
9723
- * of patent rights can be found in the PATENTS file in the same directory.
9724
- *
9725
- */
9726
-
9727
- 'use strict';
9728
-
9729
- var DOMChildrenOperations = __webpack_require__(82);
9730
- var ReactDOMIDOperations = __webpack_require__(93);
9731
-
9732
- /**
9733
- * Abstracts away all functionality of the reconciler that requires knowledge of
9734
- * the browser context. TODO: These callers should be refactored to avoid the
9735
- * need for this injection.
9736
- */
9737
- var ReactComponentBrowserEnvironment = {
9738
-
9739
- processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,
9740
-
9741
- replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup
9742
-
9743
- };
9744
-
9745
- module.exports = ReactComponentBrowserEnvironment;
9746
-
9747
- /***/ },
9748
- /* 82 */
9749
- /***/ function(module, exports, __webpack_require__) {
9750
-
9751
- /* WEBPACK VAR INJECTION */(function(process) {/**
9752
- * Copyright 2013-present, Facebook, Inc.
9753
- * All rights reserved.
9754
- *
9755
- * This source code is licensed under the BSD-style license found in the
9756
- * LICENSE file in the root directory of this source tree. An additional grant
9757
- * of patent rights can be found in the PATENTS file in the same directory.
9758
- *
9759
- */
9760
-
9761
- 'use strict';
9762
-
9763
- var DOMLazyTree = __webpack_require__(83);
9764
- var Danger = __webpack_require__(89);
9765
- var ReactDOMComponentTree = __webpack_require__(35);
9766
- var ReactInstrumentation = __webpack_require__(64);
9767
-
9768
- var createMicrosoftUnsafeLocalFunction = __webpack_require__(86);
9769
- var setInnerHTML = __webpack_require__(85);
9770
- var setTextContent = __webpack_require__(87);
9771
-
9772
- function getNodeAfter(parentNode, node) {
9773
- // Special case for text components, which return [open, close] comments
9774
- // from getHostNode.
9775
- if (Array.isArray(node)) {
9776
- node = node[1];
9777
- }
9778
- return node ? node.nextSibling : parentNode.firstChild;
9779
- }
9780
-
9781
- /**
9782
- * Inserts `childNode` as a child of `parentNode` at the `index`.
9783
- *
9784
- * @param {DOMElement} parentNode Parent node in which to insert.
9785
- * @param {DOMElement} childNode Child node to insert.
9786
- * @param {number} index Index at which to insert the child.
9787
- * @internal
9788
- */
9789
- var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {
9790
- // We rely exclusively on `insertBefore(node, null)` instead of also using
9791
- // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so
9792
- // we are careful to use `null`.)
9793
- parentNode.insertBefore(childNode, referenceNode);
9794
- });
9795
-
9796
- function insertLazyTreeChildAt(parentNode, childTree, referenceNode) {
9797
- DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);
9798
- }
9799
-
9800
- function moveChild(parentNode, childNode, referenceNode) {
9801
- if (Array.isArray(childNode)) {
9802
- moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);
9803
- } else {
9804
- insertChildAt(parentNode, childNode, referenceNode);
9805
- }
9806
- }
9807
-
9808
- function removeChild(parentNode, childNode) {
9809
- if (Array.isArray(childNode)) {
9810
- var closingComment = childNode[1];
9811
- childNode = childNode[0];
9812
- removeDelimitedText(parentNode, childNode, closingComment);
9813
- parentNode.removeChild(closingComment);
9814
- }
9815
- parentNode.removeChild(childNode);
9816
- }
9817
-
9818
- function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {
9819
- var node = openingComment;
9820
- while (true) {
9821
- var nextNode = node.nextSibling;
9822
- insertChildAt(parentNode, node, referenceNode);
9823
- if (node === closingComment) {
9824
- break;
9825
- }
9826
- node = nextNode;
9827
- }
9828
- }
9829
-
9830
- function removeDelimitedText(parentNode, startNode, closingComment) {
9831
- while (true) {
9832
- var node = startNode.nextSibling;
9833
- if (node === closingComment) {
9834
- // The closing comment is removed by ReactMultiChild.
9835
- break;
9836
- } else {
9837
- parentNode.removeChild(node);
9838
- }
9839
- }
9840
- }
9841
-
9842
- function replaceDelimitedText(openingComment, closingComment, stringText) {
9843
- var parentNode = openingComment.parentNode;
9844
- var nodeAfterComment = openingComment.nextSibling;
9845
- if (nodeAfterComment === closingComment) {
9846
- // There are no text nodes between the opening and closing comments; insert
9847
- // a new one if stringText isn't empty.
9848
- if (stringText) {
9849
- insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);
9850
- }
9851
- } else {
9852
- if (stringText) {
9853
- // Set the text content of the first node after the opening comment, and
9854
- // remove all following nodes up until the closing comment.
9855
- setTextContent(nodeAfterComment, stringText);
9856
- removeDelimitedText(parentNode, nodeAfterComment, closingComment);
9857
- } else {
9858
- removeDelimitedText(parentNode, openingComment, closingComment);
9859
- }
9860
- }
9861
-
9862
- if (process.env.NODE_ENV !== 'production') {
9863
- ReactInstrumentation.debugTool.onHostOperation({
9864
- instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,
9865
- type: 'replace text',
9866
- payload: stringText
9867
- });
9868
- }
9869
- }
9870
-
9871
- var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;
9872
- if (process.env.NODE_ENV !== 'production') {
9873
- dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {
9874
- Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);
9875
- if (prevInstance._debugID !== 0) {
9876
- ReactInstrumentation.debugTool.onHostOperation({
9877
- instanceID: prevInstance._debugID,
9878
- type: 'replace with',
9879
- payload: markup.toString()
9880
- });
9881
- } else {
9882
- var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);
9883
- if (nextInstance._debugID !== 0) {
9884
- ReactInstrumentation.debugTool.onHostOperation({
9885
- instanceID: nextInstance._debugID,
9886
- type: 'mount',
9887
- payload: markup.toString()
9888
- });
9889
- }
9890
- }
9891
- };
9892
- }
9893
-
9894
- /**
9895
- * Operations for updating with DOM children.
9896
- */
9897
- var DOMChildrenOperations = {
9898
-
9899
- dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,
9900
-
9901
- replaceDelimitedText: replaceDelimitedText,
9902
-
9903
- /**
9904
- * Updates a component's children by processing a series of updates. The
9905
- * update configurations are each expected to have a `parentNode` property.
9906
- *
9907
- * @param {array<object>} updates List of update configurations.
9908
- * @internal
9909
- */
9910
- processUpdates: function (parentNode, updates) {
9911
- if (process.env.NODE_ENV !== 'production') {
9912
- var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;
9913
- }
9914
-
9915
- for (var k = 0; k < updates.length; k++) {
9916
- var update = updates[k];
9917
- switch (update.type) {
9918
- case 'INSERT_MARKUP':
9919
- insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));
9920
- if (process.env.NODE_ENV !== 'production') {
9921
- ReactInstrumentation.debugTool.onHostOperation({
9922
- instanceID: parentNodeDebugID,
9923
- type: 'insert child',
9924
- payload: { toIndex: update.toIndex, content: update.content.toString() }
9925
- });
9926
- }
9927
- break;
9928
- case 'MOVE_EXISTING':
9929
- moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));
9930
- if (process.env.NODE_ENV !== 'production') {
9931
- ReactInstrumentation.debugTool.onHostOperation({
9932
- instanceID: parentNodeDebugID,
9933
- type: 'move child',
9934
- payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }
9935
- });
9936
- }
9937
- break;
9938
- case 'SET_MARKUP':
9939
- setInnerHTML(parentNode, update.content);
9940
- if (process.env.NODE_ENV !== 'production') {
9941
- ReactInstrumentation.debugTool.onHostOperation({
9942
- instanceID: parentNodeDebugID,
9943
- type: 'replace children',
9944
- payload: update.content.toString()
9945
- });
9946
- }
9947
- break;
9948
- case 'TEXT_CONTENT':
9949
- setTextContent(parentNode, update.content);
9950
- if (process.env.NODE_ENV !== 'production') {
9951
- ReactInstrumentation.debugTool.onHostOperation({
9952
- instanceID: parentNodeDebugID,
9953
- type: 'replace text',
9954
- payload: update.content.toString()
9955
- });
9956
- }
9957
- break;
9958
- case 'REMOVE_NODE':
9959
- removeChild(parentNode, update.fromNode);
9960
- if (process.env.NODE_ENV !== 'production') {
9961
- ReactInstrumentation.debugTool.onHostOperation({
9962
- instanceID: parentNodeDebugID,
9963
- type: 'remove child',
9964
- payload: { fromIndex: update.fromIndex }
9965
- });
9966
- }
9967
- break;
9968
- }
9969
- }
9970
- }
9971
-
9972
- };
9973
-
9974
- module.exports = DOMChildrenOperations;
9975
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
9976
-
9977
- /***/ },
9978
- /* 83 */
9979
- /***/ function(module, exports, __webpack_require__) {
9980
-
9981
- /**
9982
- * Copyright 2015-present, Facebook, Inc.
9983
- * All rights reserved.
9984
- *
9985
- * This source code is licensed under the BSD-style license found in the
9986
- * LICENSE file in the root directory of this source tree. An additional grant
9987
- * of patent rights can be found in the PATENTS file in the same directory.
9988
- *
9989
- */
9990
-
9991
- 'use strict';
9992
-
9993
- var DOMNamespaces = __webpack_require__(84);
9994
- var setInnerHTML = __webpack_require__(85);
9995
-
9996
- var createMicrosoftUnsafeLocalFunction = __webpack_require__(86);
9997
- var setTextContent = __webpack_require__(87);
9998
-
9999
- var ELEMENT_NODE_TYPE = 1;
10000
- var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
10001
-
10002
- /**
10003
- * In IE (8-11) and Edge, appending nodes with no children is dramatically
10004
- * faster than appending a full subtree, so we essentially queue up the
10005
- * .appendChild calls here and apply them so each node is added to its parent
10006
- * before any children are added.
10007
- *
10008
- * In other browsers, doing so is slower or neutral compared to the other order
10009
- * (in Firefox, twice as slow) so we only do this inversion in IE.
10010
- *
10011
- * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.
10012
- */
10013
- var enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\bEdge\/\d/.test(navigator.userAgent);
10014
-
10015
- function insertTreeChildren(tree) {
10016
- if (!enableLazy) {
10017
- return;
10018
- }
10019
- var node = tree.node;
10020
- var children = tree.children;
10021
- if (children.length) {
10022
- for (var i = 0; i < children.length; i++) {
10023
- insertTreeBefore(node, children[i], null);
10024
- }
10025
- } else if (tree.html != null) {
10026
- setInnerHTML(node, tree.html);
10027
- } else if (tree.text != null) {
10028
- setTextContent(node, tree.text);
10029
- }
10030
- }
10031
-
10032
- var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {
10033
- // DocumentFragments aren't actually part of the DOM after insertion so
10034
- // appending children won't update the DOM. We need to ensure the fragment
10035
- // is properly populated first, breaking out of our lazy approach for just
10036
- // this level. Also, some <object> plugins (like Flash Player) will read
10037
- // <param> nodes immediately upon insertion into the DOM, so <object>
10038
- // must also be populated prior to insertion into the DOM.
10039
- 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)) {
10040
- insertTreeChildren(tree);
10041
- parentNode.insertBefore(tree.node, referenceNode);
10042
- } else {
10043
- parentNode.insertBefore(tree.node, referenceNode);
10044
- insertTreeChildren(tree);
10045
- }
10046
- });
10047
-
10048
- function replaceChildWithTree(oldNode, newTree) {
10049
- oldNode.parentNode.replaceChild(newTree.node, oldNode);
10050
- insertTreeChildren(newTree);
10051
- }
10052
-
10053
- function queueChild(parentTree, childTree) {
10054
- if (enableLazy) {
10055
- parentTree.children.push(childTree);
10056
- } else {
10057
- parentTree.node.appendChild(childTree.node);
10058
- }
10059
- }
10060
-
10061
- function queueHTML(tree, html) {
10062
- if (enableLazy) {
10063
- tree.html = html;
10064
- } else {
10065
- setInnerHTML(tree.node, html);
10066
- }
10067
- }
10068
-
10069
- function queueText(tree, text) {
10070
- if (enableLazy) {
10071
- tree.text = text;
10072
- } else {
10073
- setTextContent(tree.node, text);
10074
- }
10075
- }
10076
-
10077
- function toString() {
10078
- return this.node.nodeName;
10079
- }
10080
-
10081
- function DOMLazyTree(node) {
10082
- return {
10083
- node: node,
10084
- children: [],
10085
- html: null,
10086
- text: null,
10087
- toString: toString
10088
- };
10089
- }
10090
-
10091
- DOMLazyTree.insertTreeBefore = insertTreeBefore;
10092
- DOMLazyTree.replaceChildWithTree = replaceChildWithTree;
10093
- DOMLazyTree.queueChild = queueChild;
10094
- DOMLazyTree.queueHTML = queueHTML;
10095
- DOMLazyTree.queueText = queueText;
10096
-
10097
- module.exports = DOMLazyTree;
10098
-
10099
- /***/ },
10100
- /* 84 */
10101
- /***/ function(module, exports) {
10102
-
10103
- /**
10104
- * Copyright 2013-present, Facebook, Inc.
10105
- * All rights reserved.
10106
- *
10107
- * This source code is licensed under the BSD-style license found in the
10108
- * LICENSE file in the root directory of this source tree. An additional grant
10109
- * of patent rights can be found in the PATENTS file in the same directory.
10110
- *
10111
- */
10112
-
10113
- 'use strict';
10114
-
10115
- var DOMNamespaces = {
10116
- html: 'http://www.w3.org/1999/xhtml',
10117
- mathml: 'http://www.w3.org/1998/Math/MathML',
10118
- svg: 'http://www.w3.org/2000/svg'
10119
- };
10120
-
10121
- module.exports = DOMNamespaces;
10122
-
10123
- /***/ },
10124
- /* 85 */
10125
- /***/ function(module, exports, __webpack_require__) {
10126
-
10127
- /**
10128
- * Copyright 2013-present, Facebook, Inc.
10129
- * All rights reserved.
10130
- *
10131
- * This source code is licensed under the BSD-style license found in the
10132
- * LICENSE file in the root directory of this source tree. An additional grant
10133
- * of patent rights can be found in the PATENTS file in the same directory.
10134
- *
10135
- */
10136
-
10137
- 'use strict';
10138
-
10139
- var ExecutionEnvironment = __webpack_require__(49);
10140
- var DOMNamespaces = __webpack_require__(84);
10141
-
10142
- var WHITESPACE_TEST = /^[ \r\n\t\f]/;
10143
- var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/;
10144
-
10145
- var createMicrosoftUnsafeLocalFunction = __webpack_require__(86);
10146
-
10147
- // SVG temp container for IE lacking innerHTML
10148
- var reusableSVGContainer;
10149
-
10150
- /**
10151
- * Set the innerHTML property of a node, ensuring that whitespace is preserved
10152
- * even in IE8.
10153
- *
10154
- * @param {DOMElement} node
10155
- * @param {string} html
10156
- * @internal
10157
- */
10158
- var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {
10159
- // IE does not have innerHTML for SVG nodes, so instead we inject the
10160
- // new markup in a temp node and then move the child nodes across into
10161
- // the target node
10162
- if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {
10163
- reusableSVGContainer = reusableSVGContainer || document.createElement('div');
10164
- reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';
10165
- var svgNode = reusableSVGContainer.firstChild;
10166
- while (svgNode.firstChild) {
10167
- node.appendChild(svgNode.firstChild);
10168
- }
10169
- } else {
10170
- node.innerHTML = html;
10171
- }
10172
- });
10173
-
10174
- if (ExecutionEnvironment.canUseDOM) {
10175
- // IE8: When updating a just created node with innerHTML only leading
10176
- // whitespace is removed. When updating an existing node with innerHTML
10177
- // whitespace in root TextNodes is also collapsed.
10178
- // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html
10179
-
10180
- // Feature detection; only IE8 is known to behave improperly like this.
10181
- var testElement = document.createElement('div');
10182
- testElement.innerHTML = ' ';
10183
- if (testElement.innerHTML === '') {
10184
- setInnerHTML = function (node, html) {
10185
- // Magic theory: IE8 supposedly differentiates between added and updated
10186
- // nodes when processing innerHTML, innerHTML on updated nodes suffers
10187
- // from worse whitespace behavior. Re-adding a node like this triggers
10188
- // the initial and more favorable whitespace behavior.
10189
- // TODO: What to do on a detached node?
10190
- if (node.parentNode) {
10191
- node.parentNode.replaceChild(node, node);
10192
- }
10193
-
10194
- // We also implement a workaround for non-visible tags disappearing into
10195
- // thin air on IE8, this only happens if there is no visible text
10196
- // in-front of the non-visible tags. Piggyback on the whitespace fix
10197
- // and simply check if any non-visible tags appear in the source.
10198
- if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {
10199
- // Recover leading whitespace by temporarily prepending any character.
10200
- // \uFEFF has the potential advantage of being zero-width/invisible.
10201
- // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode
10202
- // in hopes that this is preserved even if "\uFEFF" is transformed to
10203
- // the actual Unicode character (by Babel, for example).
10204
- // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216
10205
- node.innerHTML = String.fromCharCode(0xFEFF) + html;
10206
-
10207
- // deleteData leaves an empty `TextNode` which offsets the index of all
10208
- // children. Definitely want to avoid this.
10209
- var textNode = node.firstChild;
10210
- if (textNode.data.length === 1) {
10211
- node.removeChild(textNode);
10212
- } else {
10213
- textNode.deleteData(0, 1);
10214
- }
10215
- } else {
10216
- node.innerHTML = html;
10217
- }
10218
- };
10219
- }
10220
- testElement = null;
10221
- }
10222
-
10223
- module.exports = setInnerHTML;
10224
-
10225
- /***/ },
10226
- /* 86 */
10227
- /***/ function(module, exports) {
10228
-
10229
- /**
10230
- * Copyright 2013-present, Facebook, Inc.
10231
- * All rights reserved.
10232
- *
10233
- * This source code is licensed under the BSD-style license found in the
10234
- * LICENSE file in the root directory of this source tree. An additional grant
10235
- * of patent rights can be found in the PATENTS file in the same directory.
10236
- *
10237
- */
10238
-
10239
- /* globals MSApp */
10240
-
10241
- 'use strict';
10242
-
10243
- /**
10244
- * Create a function which has 'unsafe' privileges (required by windows8 apps)
10245
- */
10246
-
10247
- var createMicrosoftUnsafeLocalFunction = function (func) {
10248
- if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {
10249
- return function (arg0, arg1, arg2, arg3) {
10250
- MSApp.execUnsafeLocalFunction(function () {
10251
- return func(arg0, arg1, arg2, arg3);
10252
- });
10253
- };
10254
- } else {
10255
- return func;
10256
- }
10257
- };
10258
-
10259
- module.exports = createMicrosoftUnsafeLocalFunction;
10260
-
10261
- /***/ },
10262
- /* 87 */
10263
- /***/ function(module, exports, __webpack_require__) {
10264
-
10265
- /**
10266
- * Copyright 2013-present, Facebook, Inc.
10267
- * All rights reserved.
10268
- *
10269
- * This source code is licensed under the BSD-style license found in the
10270
- * LICENSE file in the root directory of this source tree. An additional grant
10271
- * of patent rights can be found in the PATENTS file in the same directory.
10272
- *
10273
- */
10274
-
10275
- 'use strict';
10276
-
10277
- var ExecutionEnvironment = __webpack_require__(49);
10278
- var escapeTextContentForBrowser = __webpack_require__(88);
10279
- var setInnerHTML = __webpack_require__(85);
10280
-
10281
- /**
10282
- * Set the textContent property of a node, ensuring that whitespace is preserved
10283
- * even in IE8. innerText is a poor substitute for textContent and, among many
10284
- * issues, inserts <br> instead of the literal newline chars. innerHTML behaves
10285
- * as it should.
10286
- *
10287
- * @param {DOMElement} node
10288
- * @param {string} text
10289
- * @internal
10290
- */
10291
- var setTextContent = function (node, text) {
10292
- if (text) {
10293
- var firstChild = node.firstChild;
10294
-
10295
- if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {
10296
- firstChild.nodeValue = text;
10297
- return;
10298
- }
10299
- }
10300
- node.textContent = text;
10301
- };
10302
-
10303
- if (ExecutionEnvironment.canUseDOM) {
10304
- if (!('textContent' in document.documentElement)) {
10305
- setTextContent = function (node, text) {
10306
- if (node.nodeType === 3) {
10307
- node.nodeValue = text;
10308
- return;
10309
- }
10310
- setInnerHTML(node, escapeTextContentForBrowser(text));
10311
- };
10312
- }
10313
- }
10314
-
10315
- module.exports = setTextContent;
10316
-
10317
- /***/ },
10318
- /* 88 */
10319
- /***/ function(module, exports) {
10320
-
10321
- /**
10322
- * Copyright 2016-present, Facebook, Inc.
10323
- * All rights reserved.
10324
- *
10325
- * This source code is licensed under the BSD-style license found in the
10326
- * LICENSE file in the root directory of this source tree. An additional grant
10327
- * of patent rights can be found in the PATENTS file in the same directory.
10328
- *
10329
- * Based on the escape-html library, which is used under the MIT License below:
10330
- *
10331
- * Copyright (c) 2012-2013 TJ Holowaychuk
10332
- * Copyright (c) 2015 Andreas Lubbe
10333
- * Copyright (c) 2015 Tiancheng "Timothy" Gu
10334
- *
10335
- * Permission is hereby granted, free of charge, to any person obtaining
10336
- * a copy of this software and associated documentation files (the
10337
- * 'Software'), to deal in the Software without restriction, including
10338
- * without limitation the rights to use, copy, modify, merge, publish,
10339
- * distribute, sublicense, and/or sell copies of the Software, and to
10340
- * permit persons to whom the Software is furnished to do so, subject to
10341
- * the following conditions:
10342
- *
10343
- * The above copyright notice and this permission notice shall be
10344
- * included in all copies or substantial portions of the Software.
10345
- *
10346
- * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
10347
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10348
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
10349
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
10350
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10351
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
10352
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10353
- *
10354
- */
10355
-
10356
- 'use strict';
10357
-
10358
- // code copied and modified from escape-html
10359
- /**
10360
- * Module variables.
10361
- * @private
10362
- */
10363
-
10364
- var matchHtmlRegExp = /["'&<>]/;
10365
-
10366
- /**
10367
- * Escape special characters in the given string of html.
10368
- *
10369
- * @param {string} string The string to escape for inserting into HTML
10370
- * @return {string}
10371
- * @public
10372
- */
10373
-
10374
- function escapeHtml(string) {
10375
- var str = '' + string;
10376
- var match = matchHtmlRegExp.exec(str);
10377
-
10378
- if (!match) {
10379
- return str;
10380
- }
10381
-
10382
- var escape;
10383
- var html = '';
10384
- var index = 0;
10385
- var lastIndex = 0;
10386
-
10387
- for (index = match.index; index < str.length; index++) {
10388
- switch (str.charCodeAt(index)) {
10389
- case 34:
10390
- // "
10391
- escape = '&quot;';
10392
- break;
10393
- case 38:
10394
- // &
10395
- escape = '&amp;';
10396
- break;
10397
- case 39:
10398
- // '
10399
- escape = '&#x27;'; // modified from escape-html; used to be '&#39'
10400
- break;
10401
- case 60:
10402
- // <
10403
- escape = '&lt;';
10404
- break;
10405
- case 62:
10406
- // >
10407
- escape = '&gt;';
10408
- break;
10409
- default:
10410
- continue;
10411
- }
10412
-
10413
- if (lastIndex !== index) {
10414
- html += str.substring(lastIndex, index);
10415
- }
10416
-
10417
- lastIndex = index + 1;
10418
- html += escape;
10419
- }
10420
-
10421
- return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
10422
- }
10423
- // end code copied and modified from escape-html
10424
-
10425
-
10426
- /**
10427
- * Escapes text to prevent scripting attacks.
10428
- *
10429
- * @param {*} text Text value to escape.
10430
- * @return {string} An escaped string.
10431
- */
10432
- function escapeTextContentForBrowser(text) {
10433
- if (typeof text === 'boolean' || typeof text === 'number') {
10434
- // this shortcircuit helps perf for types that we know will never have
10435
- // special characters, especially given that this function is used often
10436
- // for numeric dom ids.
10437
- return '' + text;
10438
- }
10439
- return escapeHtml(text);
10440
- }
10441
-
10442
- module.exports = escapeTextContentForBrowser;
10443
-
10444
- /***/ },
10445
- /* 89 */
10446
- /***/ function(module, exports, __webpack_require__) {
10447
-
10448
- /* WEBPACK VAR INJECTION */(function(process) {/**
10449
- * Copyright 2013-present, Facebook, Inc.
10450
- * All rights reserved.
10451
- *
10452
- * This source code is licensed under the BSD-style license found in the
10453
- * LICENSE file in the root directory of this source tree. An additional grant
10454
- * of patent rights can be found in the PATENTS file in the same directory.
10455
- *
10456
- */
10457
-
10458
- 'use strict';
10459
-
10460
- var _prodInvariant = __webpack_require__(36);
10461
-
10462
- var DOMLazyTree = __webpack_require__(83);
10463
- var ExecutionEnvironment = __webpack_require__(49);
10464
-
10465
- var createNodesFromMarkup = __webpack_require__(90);
10466
- var emptyFunction = __webpack_require__(13);
10467
- var invariant = __webpack_require__(9);
10468
-
10469
- var Danger = {
10470
-
10471
- /**
10472
- * Replaces a node with a string of markup at its current position within its
10473
- * parent. The markup must render into a single root node.
10474
- *
10475
- * @param {DOMElement} oldChild Child node to replace.
10476
- * @param {string} markup Markup to render in place of the child node.
10477
- * @internal
10478
- */
10479
- dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {
10480
- !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== '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;
10481
- !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;
10482
- !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== '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;
10483
-
10484
- if (typeof markup === 'string') {
10485
- var newChild = createNodesFromMarkup(markup, emptyFunction)[0];
10486
- oldChild.parentNode.replaceChild(newChild, oldChild);
10487
- } else {
10488
- DOMLazyTree.replaceChildWithTree(oldChild, markup);
10489
- }
10490
- }
10491
-
10492
- };
10493
-
10494
- module.exports = Danger;
10495
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
10496
-
10497
- /***/ },
10498
- /* 90 */
10499
- /***/ function(module, exports, __webpack_require__) {
10500
-
10501
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
10502
-
10503
- /**
10504
- * Copyright (c) 2013-present, Facebook, Inc.
10505
- * All rights reserved.
10506
- *
10507
- * This source code is licensed under the BSD-style license found in the
10508
- * LICENSE file in the root directory of this source tree. An additional grant
10509
- * of patent rights can be found in the PATENTS file in the same directory.
10510
- *
10511
- * @typechecks
10512
- */
10513
-
10514
- /*eslint-disable fb-www/unsafe-html*/
10515
-
10516
- var ExecutionEnvironment = __webpack_require__(49);
10517
-
10518
- var createArrayFromMixed = __webpack_require__(91);
10519
- var getMarkupWrap = __webpack_require__(92);
10520
- var invariant = __webpack_require__(9);
10521
-
10522
- /**
10523
- * Dummy container used to render all markup.
10524
- */
10525
- var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;
10526
-
10527
- /**
10528
- * Pattern used by `getNodeName`.
10529
- */
10530
- var nodeNamePattern = /^\s*<(\w+)/;
10531
-
10532
- /**
10533
- * Extracts the `nodeName` of the first element in a string of markup.
10534
- *
10535
- * @param {string} markup String of markup.
10536
- * @return {?string} Node name of the supplied markup.
10537
- */
10538
- function getNodeName(markup) {
10539
- var nodeNameMatch = markup.match(nodeNamePattern);
10540
- return nodeNameMatch && nodeNameMatch[1].toLowerCase();
10541
- }
10542
-
10543
- /**
10544
- * Creates an array containing the nodes rendered from the supplied markup. The
10545
- * optionally supplied `handleScript` function will be invoked once for each
10546
- * <script> element that is rendered. If no `handleScript` function is supplied,
10547
- * an exception is thrown if any <script> elements are rendered.
10548
- *
10549
- * @param {string} markup A string of valid HTML markup.
10550
- * @param {?function} handleScript Invoked once for each rendered <script>.
10551
- * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.
10552
- */
10553
- function createNodesFromMarkup(markup, handleScript) {
10554
- var node = dummyNode;
10555
- !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;
10556
- var nodeName = getNodeName(markup);
10557
-
10558
- var wrap = nodeName && getMarkupWrap(nodeName);
10559
- if (wrap) {
10560
- node.innerHTML = wrap[1] + markup + wrap[2];
10561
-
10562
- var wrapDepth = wrap[0];
10563
- while (wrapDepth--) {
10564
- node = node.lastChild;
10565
- }
10566
- } else {
10567
- node.innerHTML = markup;
10568
- }
10569
-
10570
- var scripts = node.getElementsByTagName('script');
10571
- if (scripts.length) {
10572
- !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;
10573
- createArrayFromMixed(scripts).forEach(handleScript);
10574
- }
10575
-
10576
- var nodes = Array.from(node.childNodes);
10577
- while (node.lastChild) {
10578
- node.removeChild(node.lastChild);
10579
- }
10580
- return nodes;
10581
- }
10582
-
10583
- module.exports = createNodesFromMarkup;
10584
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
10585
-
10586
- /***/ },
10587
- /* 91 */
10588
- /***/ function(module, exports, __webpack_require__) {
10589
-
10590
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
10591
-
10592
- /**
10593
- * Copyright (c) 2013-present, Facebook, Inc.
10594
- * All rights reserved.
10595
- *
10596
- * This source code is licensed under the BSD-style license found in the
10597
- * LICENSE file in the root directory of this source tree. An additional grant
10598
- * of patent rights can be found in the PATENTS file in the same directory.
10599
- *
10600
- * @typechecks
10601
- */
10602
-
10603
- var invariant = __webpack_require__(9);
10604
-
10605
- /**
10606
- * Convert array-like objects to arrays.
10607
- *
10608
- * This API assumes the caller knows the contents of the data type. For less
10609
- * well defined inputs use createArrayFromMixed.
10610
- *
10611
- * @param {object|function|filelist} obj
10612
- * @return {array}
10613
- */
10614
- function toArray(obj) {
10615
- var length = obj.length;
10616
-
10617
- // Some browsers builtin objects can report typeof 'function' (e.g. NodeList
10618
- // in old versions of Safari).
10619
- !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;
10620
-
10621
- !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;
10622
-
10623
- !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;
10624
-
10625
- !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;
10626
-
10627
- // Old IE doesn't give collections access to hasOwnProperty. Assume inputs
10628
- // without method will throw during the slice call and skip straight to the
10629
- // fallback.
10630
- if (obj.hasOwnProperty) {
10631
- try {
10632
- return Array.prototype.slice.call(obj);
10633
- } catch (e) {
10634
- // IE < 9 does not support Array#slice on collections objects
10635
- }
10636
- }
10637
-
10638
- // Fall back to copying key by key. This assumes all keys have a value,
10639
- // so will not preserve sparsely populated inputs.
10640
- var ret = Array(length);
10641
- for (var ii = 0; ii < length; ii++) {
10642
- ret[ii] = obj[ii];
10643
- }
10644
- return ret;
10645
- }
10646
-
10647
- /**
10648
- * Perform a heuristic test to determine if an object is "array-like".
10649
- *
10650
- * A monk asked Joshu, a Zen master, "Has a dog Buddha nature?"
10651
- * Joshu replied: "Mu."
10652
- *
10653
- * This function determines if its argument has "array nature": it returns
10654
- * true if the argument is an actual array, an `arguments' object, or an
10655
- * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).
10656
- *
10657
- * It will return false for other array-like objects like Filelist.
10658
- *
10659
- * @param {*} obj
10660
- * @return {boolean}
10661
- */
10662
- function hasArrayNature(obj) {
10663
- return (
10664
- // not null/false
10665
- !!obj && (
10666
- // arrays are objects, NodeLists are functions in Safari
10667
- typeof obj == 'object' || typeof obj == 'function') &&
10668
- // quacks like an array
10669
- 'length' in obj &&
10670
- // not window
10671
- !('setInterval' in obj) &&
10672
- // no DOM node should be considered an array-like
10673
- // a 'select' element has 'length' and 'item' properties on IE8
10674
- typeof obj.nodeType != 'number' && (
10675
- // a real array
10676
- Array.isArray(obj) ||
10677
- // arguments
10678
- 'callee' in obj ||
10679
- // HTMLCollection/NodeList
10680
- 'item' in obj)
10681
- );
10682
- }
10683
-
10684
- /**
10685
- * Ensure that the argument is an array by wrapping it in an array if it is not.
10686
- * Creates a copy of the argument if it is already an array.
10687
- *
10688
- * This is mostly useful idiomatically:
10689
- *
10690
- * var createArrayFromMixed = require('createArrayFromMixed');
10691
- *
10692
- * function takesOneOrMoreThings(things) {
10693
- * things = createArrayFromMixed(things);
10694
- * ...
10695
- * }
10696
- *
10697
- * This allows you to treat `things' as an array, but accept scalars in the API.
10698
- *
10699
- * If you need to convert an array-like object, like `arguments`, into an array
10700
- * use toArray instead.
10701
- *
10702
- * @param {*} obj
10703
- * @return {array}
10704
- */
10705
- function createArrayFromMixed(obj) {
10706
- if (!hasArrayNature(obj)) {
10707
- return [obj];
10708
- } else if (Array.isArray(obj)) {
10709
- return obj.slice();
10710
- } else {
10711
- return toArray(obj);
10712
- }
10713
- }
10714
-
10715
- module.exports = createArrayFromMixed;
10716
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
10717
-
10718
- /***/ },
10719
- /* 92 */
10720
- /***/ function(module, exports, __webpack_require__) {
10721
-
10722
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
10723
-
10724
- /**
10725
- * Copyright (c) 2013-present, Facebook, Inc.
10726
- * All rights reserved.
10727
- *
10728
- * This source code is licensed under the BSD-style license found in the
10729
- * LICENSE file in the root directory of this source tree. An additional grant
10730
- * of patent rights can be found in the PATENTS file in the same directory.
10731
- *
10732
- */
10733
-
10734
- /*eslint-disable fb-www/unsafe-html */
10735
-
10736
- var ExecutionEnvironment = __webpack_require__(49);
10737
-
10738
- var invariant = __webpack_require__(9);
10739
-
10740
- /**
10741
- * Dummy container used to detect which wraps are necessary.
10742
- */
10743
- var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;
10744
-
10745
- /**
10746
- * Some browsers cannot use `innerHTML` to render certain elements standalone,
10747
- * so we wrap them, render the wrapped nodes, then extract the desired node.
10748
- *
10749
- * In IE8, certain elements cannot render alone, so wrap all elements ('*').
10750
- */
10751
-
10752
- var shouldWrap = {};
10753
-
10754
- var selectWrap = [1, '<select multiple="true">', '</select>'];
10755
- var tableWrap = [1, '<table>', '</table>'];
10756
- var trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];
10757
-
10758
- var svgWrap = [1, '<svg xmlns="http://www.w3.org/2000/svg">', '</svg>'];
10759
-
10760
- var markupWrap = {
10761
- '*': [1, '?<div>', '</div>'],
10762
-
10763
- 'area': [1, '<map>', '</map>'],
10764
- 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],
10765
- 'legend': [1, '<fieldset>', '</fieldset>'],
10766
- 'param': [1, '<object>', '</object>'],
10767
- 'tr': [2, '<table><tbody>', '</tbody></table>'],
10768
-
10769
- 'optgroup': selectWrap,
10770
- 'option': selectWrap,
10771
-
10772
- 'caption': tableWrap,
10773
- 'colgroup': tableWrap,
10774
- 'tbody': tableWrap,
10775
- 'tfoot': tableWrap,
10776
- 'thead': tableWrap,
10777
-
10778
- 'td': trWrap,
10779
- 'th': trWrap
10780
- };
10781
-
10782
- // Initialize the SVG elements since we know they'll always need to be wrapped
10783
- // consistently. If they are created inside a <div> they will be initialized in
10784
- // the wrong namespace (and will not display).
10785
- var svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];
10786
- svgElements.forEach(function (nodeName) {
10787
- markupWrap[nodeName] = svgWrap;
10788
- shouldWrap[nodeName] = true;
10789
- });
10790
-
10791
- /**
10792
- * Gets the markup wrap configuration for the supplied `nodeName`.
10793
- *
10794
- * NOTE: This lazily detects which wraps are necessary for the current browser.
10795
- *
10796
- * @param {string} nodeName Lowercase `nodeName`.
10797
- * @return {?array} Markup wrap configuration, if applicable.
10798
- */
10799
- function getMarkupWrap(nodeName) {
10800
- !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;
10801
- if (!markupWrap.hasOwnProperty(nodeName)) {
10802
- nodeName = '*';
10803
- }
10804
- if (!shouldWrap.hasOwnProperty(nodeName)) {
10805
- if (nodeName === '*') {
10806
- dummyNode.innerHTML = '<link />';
10807
- } else {
10808
- dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';
10809
- }
10810
- shouldWrap[nodeName] = !dummyNode.firstChild;
10811
- }
10812
- return shouldWrap[nodeName] ? markupWrap[nodeName] : null;
10813
- }
10814
-
10815
- module.exports = getMarkupWrap;
10816
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
10817
-
10818
- /***/ },
10819
- /* 93 */
10820
- /***/ function(module, exports, __webpack_require__) {
10821
-
10822
- /**
10823
- * Copyright 2013-present, Facebook, Inc.
10824
- * All rights reserved.
10825
- *
10826
- * This source code is licensed under the BSD-style license found in the
10827
- * LICENSE file in the root directory of this source tree. An additional grant
10828
- * of patent rights can be found in the PATENTS file in the same directory.
10829
- *
10830
- */
10831
-
10832
- 'use strict';
10833
-
10834
- var DOMChildrenOperations = __webpack_require__(82);
10835
- var ReactDOMComponentTree = __webpack_require__(35);
10836
-
10837
- /**
10838
- * Operations used to process updates to DOM nodes.
10839
- */
10840
- var ReactDOMIDOperations = {
10841
-
10842
- /**
10843
- * Updates a component's children by processing a series of updates.
10844
- *
10845
- * @param {array<object>} updates List of update configurations.
10846
- * @internal
10847
- */
10848
- dangerouslyProcessChildrenUpdates: function (parentInst, updates) {
10849
- var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);
10850
- DOMChildrenOperations.processUpdates(node, updates);
10851
- }
10852
- };
10853
-
10854
- module.exports = ReactDOMIDOperations;
10855
-
10856
- /***/ },
10857
- /* 94 */
10858
- /***/ function(module, exports, __webpack_require__) {
10859
-
10860
- /* WEBPACK VAR INJECTION */(function(process) {/**
10861
- * Copyright 2013-present, Facebook, Inc.
10862
- * All rights reserved.
10863
- *
10864
- * This source code is licensed under the BSD-style license found in the
10865
- * LICENSE file in the root directory of this source tree. An additional grant
10866
- * of patent rights can be found in the PATENTS file in the same directory.
10867
- *
10868
- */
10869
-
10870
- /* global hasOwnProperty:true */
10871
-
10872
- 'use strict';
10873
-
10874
- var _prodInvariant = __webpack_require__(36),
10875
- _assign = __webpack_require__(51);
10876
-
10877
- var AutoFocusUtils = __webpack_require__(95);
10878
- var CSSPropertyOperations = __webpack_require__(97);
10879
- var DOMLazyTree = __webpack_require__(83);
10880
- var DOMNamespaces = __webpack_require__(84);
10881
- var DOMProperty = __webpack_require__(37);
10882
- var DOMPropertyOperations = __webpack_require__(105);
10883
- var EventPluginHub = __webpack_require__(43);
10884
- var EventPluginRegistry = __webpack_require__(44);
10885
- var ReactBrowserEventEmitter = __webpack_require__(107);
10886
- var ReactDOMComponentFlags = __webpack_require__(38);
10887
- var ReactDOMComponentTree = __webpack_require__(35);
10888
- var ReactDOMInput = __webpack_require__(110);
10889
- var ReactDOMOption = __webpack_require__(113);
10890
- var ReactDOMSelect = __webpack_require__(114);
10891
- var ReactDOMTextarea = __webpack_require__(115);
10892
- var ReactInstrumentation = __webpack_require__(64);
10893
- var ReactMultiChild = __webpack_require__(116);
10894
- var ReactServerRenderingTransaction = __webpack_require__(135);
10895
-
10896
- var emptyFunction = __webpack_require__(13);
10897
- var escapeTextContentForBrowser = __webpack_require__(88);
10898
- var invariant = __webpack_require__(9);
10899
- var isEventSupported = __webpack_require__(72);
10900
- var shallowEqual = __webpack_require__(125);
10901
- var validateDOMNesting = __webpack_require__(138);
10902
- var warning = __webpack_require__(12);
10903
-
10904
- var Flags = ReactDOMComponentFlags;
10905
- var deleteListener = EventPluginHub.deleteListener;
10906
- var getNode = ReactDOMComponentTree.getNodeFromInstance;
10907
- var listenTo = ReactBrowserEventEmitter.listenTo;
10908
- var registrationNameModules = EventPluginRegistry.registrationNameModules;
10909
-
10910
- // For quickly matching children type, to test if can be treated as content.
10911
- var CONTENT_TYPES = { 'string': true, 'number': true };
10912
-
10913
- var STYLE = 'style';
10914
- var HTML = '__html';
10915
- var RESERVED_PROPS = {
10916
- children: null,
10917
- dangerouslySetInnerHTML: null,
10918
- suppressContentEditableWarning: null
10919
- };
10920
-
10921
- // Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).
10922
- var DOC_FRAGMENT_TYPE = 11;
10923
-
10924
- function getDeclarationErrorAddendum(internalInstance) {
10925
- if (internalInstance) {
10926
- var owner = internalInstance._currentElement._owner || null;
10927
- if (owner) {
10928
- var name = owner.getName();
10929
- if (name) {
10930
- return ' This DOM node was rendered by `' + name + '`.';
10931
- }
10932
- }
10933
- }
10934
- return '';
10935
- }
10936
-
10937
- function friendlyStringify(obj) {
10938
- if (typeof obj === 'object') {
10939
- if (Array.isArray(obj)) {
10940
- return '[' + obj.map(friendlyStringify).join(', ') + ']';
10941
- } else {
10942
- var pairs = [];
10943
- for (var key in obj) {
10944
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
10945
- var keyEscaped = /^[a-z$_][\w$_]*$/i.test(key) ? key : JSON.stringify(key);
10946
- pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));
10947
- }
10948
- }
10949
- return '{' + pairs.join(', ') + '}';
10950
- }
10951
- } else if (typeof obj === 'string') {
10952
- return JSON.stringify(obj);
10953
- } else if (typeof obj === 'function') {
10954
- return '[function object]';
10955
- }
10956
- // Differs from JSON.stringify in that undefined because undefined and that
10957
- // inf and nan don't become null
10958
- return String(obj);
10959
- }
10960
-
10961
- var styleMutationWarning = {};
10962
-
10963
- function checkAndWarnForMutatedStyle(style1, style2, component) {
10964
- if (style1 == null || style2 == null) {
10965
- return;
10966
- }
10967
- if (shallowEqual(style1, style2)) {
10968
- return;
10969
- }
10970
-
10971
- var componentName = component._tag;
10972
- var owner = component._currentElement._owner;
10973
- var ownerName;
10974
- if (owner) {
10975
- ownerName = owner.getName();
10976
- }
10977
-
10978
- var hash = ownerName + '|' + componentName;
10979
-
10980
- if (styleMutationWarning.hasOwnProperty(hash)) {
10981
- return;
10982
- }
10983
-
10984
- styleMutationWarning[hash] = true;
10985
-
10986
- process.env.NODE_ENV !== '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;
10987
- }
10988
-
10989
- /**
10990
- * @param {object} component
10991
- * @param {?object} props
10992
- */
10993
- function assertValidProps(component, props) {
10994
- if (!props) {
10995
- return;
10996
- }
10997
- // Note the use of `==` which checks for null or undefined.
10998
- if (voidElementTags[component._tag]) {
10999
- !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== '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;
11000
- }
11001
- if (props.dangerouslySetInnerHTML != null) {
11002
- !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;
11003
- !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== '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;
11004
- }
11005
- if (process.env.NODE_ENV !== 'production') {
11006
- process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;
11007
- process.env.NODE_ENV !== '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;
11008
- process.env.NODE_ENV !== '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;
11009
- }
11010
- !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== '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;
11011
- }
11012
-
11013
- function enqueuePutListener(inst, registrationName, listener, transaction) {
11014
- if (transaction instanceof ReactServerRenderingTransaction) {
11015
- return;
11016
- }
11017
- if (process.env.NODE_ENV !== 'production') {
11018
- // IE8 has no API for event capturing and the `onScroll` event doesn't
11019
- // bubble.
11020
- process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\'t support the `onScroll` event') : void 0;
11021
- }
11022
- var containerInfo = inst._hostContainerInfo;
11023
- var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;
11024
- var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;
11025
- listenTo(registrationName, doc);
11026
- transaction.getReactMountReady().enqueue(putListener, {
11027
- inst: inst,
11028
- registrationName: registrationName,
11029
- listener: listener
11030
- });
11031
- }
11032
-
11033
- function putListener() {
11034
- var listenerToPut = this;
11035
- EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);
11036
- }
11037
-
11038
- function inputPostMount() {
11039
- var inst = this;
11040
- ReactDOMInput.postMountWrapper(inst);
11041
- }
11042
-
11043
- function textareaPostMount() {
11044
- var inst = this;
11045
- ReactDOMTextarea.postMountWrapper(inst);
11046
- }
11047
-
11048
- function optionPostMount() {
11049
- var inst = this;
11050
- ReactDOMOption.postMountWrapper(inst);
11051
- }
11052
-
11053
- var setAndValidateContentChildDev = emptyFunction;
11054
- if (process.env.NODE_ENV !== 'production') {
11055
- setAndValidateContentChildDev = function (content) {
11056
- var hasExistingContent = this._contentDebugID != null;
11057
- var debugID = this._debugID;
11058
- // This ID represents the inlined child that has no backing instance:
11059
- var contentDebugID = -debugID;
11060
-
11061
- if (content == null) {
11062
- if (hasExistingContent) {
11063
- ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);
11064
- }
11065
- this._contentDebugID = null;
11066
- return;
11067
- }
11068
-
11069
- validateDOMNesting(null, String(content), this, this._ancestorInfo);
11070
- this._contentDebugID = contentDebugID;
11071
- if (hasExistingContent) {
11072
- ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);
11073
- ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);
11074
- } else {
11075
- ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);
11076
- ReactInstrumentation.debugTool.onMountComponent(contentDebugID);
11077
- ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);
11078
- }
11079
- };
11080
- }
11081
-
11082
- // There are so many media events, it makes sense to just
11083
- // maintain a list rather than create a `trapBubbledEvent` for each
11084
- var mediaEvents = {
11085
- topAbort: 'abort',
11086
- topCanPlay: 'canplay',
11087
- topCanPlayThrough: 'canplaythrough',
11088
- topDurationChange: 'durationchange',
11089
- topEmptied: 'emptied',
11090
- topEncrypted: 'encrypted',
11091
- topEnded: 'ended',
11092
- topError: 'error',
11093
- topLoadedData: 'loadeddata',
11094
- topLoadedMetadata: 'loadedmetadata',
11095
- topLoadStart: 'loadstart',
11096
- topPause: 'pause',
11097
- topPlay: 'play',
11098
- topPlaying: 'playing',
11099
- topProgress: 'progress',
11100
- topRateChange: 'ratechange',
11101
- topSeeked: 'seeked',
11102
- topSeeking: 'seeking',
11103
- topStalled: 'stalled',
11104
- topSuspend: 'suspend',
11105
- topTimeUpdate: 'timeupdate',
11106
- topVolumeChange: 'volumechange',
11107
- topWaiting: 'waiting'
11108
- };
11109
-
11110
- function trapBubbledEventsLocal() {
11111
- var inst = this;
11112
- // If a component renders to null or if another component fatals and causes
11113
- // the state of the tree to be corrupted, `node` here can be null.
11114
- !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;
11115
- var node = getNode(inst);
11116
- !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;
11117
-
11118
- switch (inst._tag) {
11119
- case 'iframe':
11120
- case 'object':
11121
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];
11122
- break;
11123
- case 'video':
11124
- case 'audio':
11125
-
11126
- inst._wrapperState.listeners = [];
11127
- // Create listener for each media event
11128
- for (var event in mediaEvents) {
11129
- if (mediaEvents.hasOwnProperty(event)) {
11130
- inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));
11131
- }
11132
- }
11133
- break;
11134
- case 'source':
11135
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];
11136
- break;
11137
- case 'img':
11138
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];
11139
- break;
11140
- case 'form':
11141
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];
11142
- break;
11143
- case 'input':
11144
- case 'select':
11145
- case 'textarea':
11146
- inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];
11147
- break;
11148
- }
11149
- }
11150
-
11151
- function postUpdateSelectWrapper() {
11152
- ReactDOMSelect.postUpdateWrapper(this);
11153
- }
11154
-
11155
- // For HTML, certain tags should omit their close tag. We keep a whitelist for
11156
- // those special-case tags.
11157
-
11158
- var omittedCloseTags = {
11159
- 'area': true,
11160
- 'base': true,
11161
- 'br': true,
11162
- 'col': true,
11163
- 'embed': true,
11164
- 'hr': true,
11165
- 'img': true,
11166
- 'input': true,
11167
- 'keygen': true,
11168
- 'link': true,
11169
- 'meta': true,
11170
- 'param': true,
11171
- 'source': true,
11172
- 'track': true,
11173
- 'wbr': true
11174
- };
11175
-
11176
- var newlineEatingTags = {
11177
- 'listing': true,
11178
- 'pre': true,
11179
- 'textarea': true
11180
- };
11181
-
11182
- // For HTML, certain tags cannot have children. This has the same purpose as
11183
- // `omittedCloseTags` except that `menuitem` should still have its closing tag.
11184
-
11185
- var voidElementTags = _assign({
11186
- 'menuitem': true
11187
- }, omittedCloseTags);
11188
-
11189
- // We accept any tag to be rendered but since this gets injected into arbitrary
11190
- // HTML, we want to make sure that it's a safe tag.
11191
- // http://www.w3.org/TR/REC-xml/#NT-Name
11192
-
11193
- var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/; // Simplified subset
11194
- var validatedTagCache = {};
11195
- var hasOwnProperty = {}.hasOwnProperty;
11196
-
11197
- function validateDangerousTag(tag) {
11198
- if (!hasOwnProperty.call(validatedTagCache, tag)) {
11199
- !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;
11200
- validatedTagCache[tag] = true;
11201
- }
11202
- }
11203
-
11204
- function isCustomComponent(tagName, props) {
11205
- return tagName.indexOf('-') >= 0 || props.is != null;
11206
- }
11207
-
11208
- var globalIdCounter = 1;
11209
-
11210
- /**
11211
- * Creates a new React class that is idempotent and capable of containing other
11212
- * React components. It accepts event listeners and DOM properties that are
11213
- * valid according to `DOMProperty`.
11214
- *
11215
- * - Event listeners: `onClick`, `onMouseDown`, etc.
11216
- * - DOM properties: `className`, `name`, `title`, etc.
11217
- *
11218
- * The `style` property functions differently from the DOM API. It accepts an
11219
- * object mapping of style properties to values.
11220
- *
11221
- * @constructor ReactDOMComponent
11222
- * @extends ReactMultiChild
11223
- */
11224
- function ReactDOMComponent(element) {
11225
- var tag = element.type;
11226
- validateDangerousTag(tag);
11227
- this._currentElement = element;
11228
- this._tag = tag.toLowerCase();
11229
- this._namespaceURI = null;
11230
- this._renderedChildren = null;
11231
- this._previousStyle = null;
11232
- this._previousStyleCopy = null;
11233
- this._hostNode = null;
11234
- this._hostParent = null;
11235
- this._rootNodeID = 0;
11236
- this._domID = 0;
11237
- this._hostContainerInfo = null;
11238
- this._wrapperState = null;
11239
- this._topLevelWrapper = null;
11240
- this._flags = 0;
11241
- if (process.env.NODE_ENV !== 'production') {
11242
- this._ancestorInfo = null;
11243
- setAndValidateContentChildDev.call(this, null);
11244
- }
11245
- }
11246
-
11247
- ReactDOMComponent.displayName = 'ReactDOMComponent';
11248
-
11249
- ReactDOMComponent.Mixin = {
11250
-
11251
- /**
11252
- * Generates root tag markup then recurses. This method has side effects and
11253
- * is not idempotent.
11254
- *
11255
- * @internal
11256
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11257
- * @param {?ReactDOMComponent} the parent component instance
11258
- * @param {?object} info about the host container
11259
- * @param {object} context
11260
- * @return {string} The computed markup.
11261
- */
11262
- mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
11263
- this._rootNodeID = globalIdCounter++;
11264
- this._domID = hostContainerInfo._idCounter++;
11265
- this._hostParent = hostParent;
11266
- this._hostContainerInfo = hostContainerInfo;
11267
-
11268
- var props = this._currentElement.props;
11269
-
11270
- switch (this._tag) {
11271
- case 'audio':
11272
- case 'form':
11273
- case 'iframe':
11274
- case 'img':
11275
- case 'link':
11276
- case 'object':
11277
- case 'source':
11278
- case 'video':
11279
- this._wrapperState = {
11280
- listeners: null
11281
- };
11282
- transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11283
- break;
11284
- case 'input':
11285
- ReactDOMInput.mountWrapper(this, props, hostParent);
11286
- props = ReactDOMInput.getHostProps(this, props);
11287
- transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11288
- break;
11289
- case 'option':
11290
- ReactDOMOption.mountWrapper(this, props, hostParent);
11291
- props = ReactDOMOption.getHostProps(this, props);
11292
- break;
11293
- case 'select':
11294
- ReactDOMSelect.mountWrapper(this, props, hostParent);
11295
- props = ReactDOMSelect.getHostProps(this, props);
11296
- transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11297
- break;
11298
- case 'textarea':
11299
- ReactDOMTextarea.mountWrapper(this, props, hostParent);
11300
- props = ReactDOMTextarea.getHostProps(this, props);
11301
- transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);
11302
- break;
11303
- }
11304
-
11305
- assertValidProps(this, props);
11306
-
11307
- // We create tags in the namespace of their parent container, except HTML
11308
- // tags get no namespace.
11309
- var namespaceURI;
11310
- var parentTag;
11311
- if (hostParent != null) {
11312
- namespaceURI = hostParent._namespaceURI;
11313
- parentTag = hostParent._tag;
11314
- } else if (hostContainerInfo._tag) {
11315
- namespaceURI = hostContainerInfo._namespaceURI;
11316
- parentTag = hostContainerInfo._tag;
11317
- }
11318
- if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {
11319
- namespaceURI = DOMNamespaces.html;
11320
- }
11321
- if (namespaceURI === DOMNamespaces.html) {
11322
- if (this._tag === 'svg') {
11323
- namespaceURI = DOMNamespaces.svg;
11324
- } else if (this._tag === 'math') {
11325
- namespaceURI = DOMNamespaces.mathml;
11326
- }
11327
- }
11328
- this._namespaceURI = namespaceURI;
11329
-
11330
- if (process.env.NODE_ENV !== 'production') {
11331
- var parentInfo;
11332
- if (hostParent != null) {
11333
- parentInfo = hostParent._ancestorInfo;
11334
- } else if (hostContainerInfo._tag) {
11335
- parentInfo = hostContainerInfo._ancestorInfo;
11336
- }
11337
- if (parentInfo) {
11338
- // parentInfo should always be present except for the top-level
11339
- // component when server rendering
11340
- validateDOMNesting(this._tag, null, this, parentInfo);
11341
- }
11342
- this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);
11343
- }
11344
-
11345
- var mountImage;
11346
- if (transaction.useCreateElement) {
11347
- var ownerDocument = hostContainerInfo._ownerDocument;
11348
- var el;
11349
- if (namespaceURI === DOMNamespaces.html) {
11350
- if (this._tag === 'script') {
11351
- // Create the script via .innerHTML so its "parser-inserted" flag is
11352
- // set to true and it does not execute
11353
- var div = ownerDocument.createElement('div');
11354
- var type = this._currentElement.type;
11355
- div.innerHTML = '<' + type + '></' + type + '>';
11356
- el = div.removeChild(div.firstChild);
11357
- } else if (props.is) {
11358
- el = ownerDocument.createElement(this._currentElement.type, props.is);
11359
- } else {
11360
- // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.
11361
- // See discussion in https://github.com/facebook/react/pull/6896
11362
- // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
11363
- el = ownerDocument.createElement(this._currentElement.type);
11364
- }
11365
- } else {
11366
- el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);
11367
- }
11368
- ReactDOMComponentTree.precacheNode(this, el);
11369
- this._flags |= Flags.hasCachedChildNodes;
11370
- if (!this._hostParent) {
11371
- DOMPropertyOperations.setAttributeForRoot(el);
11372
- }
11373
- this._updateDOMProperties(null, props, transaction);
11374
- var lazyTree = DOMLazyTree(el);
11375
- this._createInitialChildren(transaction, props, context, lazyTree);
11376
- mountImage = lazyTree;
11377
- } else {
11378
- var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);
11379
- var tagContent = this._createContentMarkup(transaction, props, context);
11380
- if (!tagContent && omittedCloseTags[this._tag]) {
11381
- mountImage = tagOpen + '/>';
11382
- } else {
11383
- mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';
11384
- }
11385
- }
11386
-
11387
- switch (this._tag) {
11388
- case 'input':
11389
- transaction.getReactMountReady().enqueue(inputPostMount, this);
11390
- if (props.autoFocus) {
11391
- transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11392
- }
11393
- break;
11394
- case 'textarea':
11395
- transaction.getReactMountReady().enqueue(textareaPostMount, this);
11396
- if (props.autoFocus) {
11397
- transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11398
- }
11399
- break;
11400
- case 'select':
11401
- if (props.autoFocus) {
11402
- transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11403
- }
11404
- break;
11405
- case 'button':
11406
- if (props.autoFocus) {
11407
- transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);
11408
- }
11409
- break;
11410
- case 'option':
11411
- transaction.getReactMountReady().enqueue(optionPostMount, this);
11412
- break;
11413
- }
11414
-
11415
- return mountImage;
11416
- },
11417
-
11418
- /**
11419
- * Creates markup for the open tag and all attributes.
11420
- *
11421
- * This method has side effects because events get registered.
11422
- *
11423
- * Iterating over object properties is faster than iterating over arrays.
11424
- * @see http://jsperf.com/obj-vs-arr-iteration
11425
- *
11426
- * @private
11427
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11428
- * @param {object} props
11429
- * @return {string} Markup of opening tag.
11430
- */
11431
- _createOpenTagMarkupAndPutListeners: function (transaction, props) {
11432
- var ret = '<' + this._currentElement.type;
11433
-
11434
- for (var propKey in props) {
11435
- if (!props.hasOwnProperty(propKey)) {
11436
- continue;
11437
- }
11438
- var propValue = props[propKey];
11439
- if (propValue == null) {
11440
- continue;
11441
- }
11442
- if (registrationNameModules.hasOwnProperty(propKey)) {
11443
- if (propValue) {
11444
- enqueuePutListener(this, propKey, propValue, transaction);
11445
- }
11446
- } else {
11447
- if (propKey === STYLE) {
11448
- if (propValue) {
11449
- if (process.env.NODE_ENV !== 'production') {
11450
- // See `_updateDOMProperties`. style block
11451
- this._previousStyle = propValue;
11452
- }
11453
- propValue = this._previousStyleCopy = _assign({}, props.style);
11454
- }
11455
- propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);
11456
- }
11457
- var markup = null;
11458
- if (this._tag != null && isCustomComponent(this._tag, props)) {
11459
- if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
11460
- markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);
11461
- }
11462
- } else {
11463
- markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);
11464
- }
11465
- if (markup) {
11466
- ret += ' ' + markup;
11467
- }
11468
- }
11469
- }
11470
-
11471
- // For static pages, no need to put React ID and checksum. Saves lots of
11472
- // bytes.
11473
- if (transaction.renderToStaticMarkup) {
11474
- return ret;
11475
- }
11476
-
11477
- if (!this._hostParent) {
11478
- ret += ' ' + DOMPropertyOperations.createMarkupForRoot();
11479
- }
11480
- ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);
11481
- return ret;
11482
- },
11483
-
11484
- /**
11485
- * Creates markup for the content between the tags.
11486
- *
11487
- * @private
11488
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11489
- * @param {object} props
11490
- * @param {object} context
11491
- * @return {string} Content markup.
11492
- */
11493
- _createContentMarkup: function (transaction, props, context) {
11494
- var ret = '';
11495
-
11496
- // Intentional use of != to avoid catching zero/false.
11497
- var innerHTML = props.dangerouslySetInnerHTML;
11498
- if (innerHTML != null) {
11499
- if (innerHTML.__html != null) {
11500
- ret = innerHTML.__html;
11501
- }
11502
- } else {
11503
- var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;
11504
- var childrenToUse = contentToUse != null ? null : props.children;
11505
- if (contentToUse != null) {
11506
- // TODO: Validate that text is allowed as a child of this node
11507
- ret = escapeTextContentForBrowser(contentToUse);
11508
- if (process.env.NODE_ENV !== 'production') {
11509
- setAndValidateContentChildDev.call(this, contentToUse);
11510
- }
11511
- } else if (childrenToUse != null) {
11512
- var mountImages = this.mountChildren(childrenToUse, transaction, context);
11513
- ret = mountImages.join('');
11514
- }
11515
- }
11516
- if (newlineEatingTags[this._tag] && ret.charAt(0) === '\n') {
11517
- // text/html ignores the first character in these tags if it's a newline
11518
- // Prefer to break application/xml over text/html (for now) by adding
11519
- // a newline specifically to get eaten by the parser. (Alternately for
11520
- // textareas, replacing "^\n" with "\r\n" doesn't get eaten, and the first
11521
- // \r is normalized out by HTMLTextAreaElement#value.)
11522
- // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>
11523
- // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>
11524
- // See: <http://www.w3.org/TR/html5/syntax.html#newlines>
11525
- // See: Parsing of "textarea" "listing" and "pre" elements
11526
- // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>
11527
- return '\n' + ret;
11528
- } else {
11529
- return ret;
11530
- }
11531
- },
11532
-
11533
- _createInitialChildren: function (transaction, props, context, lazyTree) {
11534
- // Intentional use of != to avoid catching zero/false.
11535
- var innerHTML = props.dangerouslySetInnerHTML;
11536
- if (innerHTML != null) {
11537
- if (innerHTML.__html != null) {
11538
- DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);
11539
- }
11540
- } else {
11541
- var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;
11542
- var childrenToUse = contentToUse != null ? null : props.children;
11543
- // TODO: Validate that text is allowed as a child of this node
11544
- if (contentToUse != null) {
11545
- // Avoid setting textContent when the text is empty. In IE11 setting
11546
- // textContent on a text area will cause the placeholder to not
11547
- // show within the textarea until it has been focused and blurred again.
11548
- // https://github.com/facebook/react/issues/6731#issuecomment-254874553
11549
- if (contentToUse !== '') {
11550
- if (process.env.NODE_ENV !== 'production') {
11551
- setAndValidateContentChildDev.call(this, contentToUse);
11552
- }
11553
- DOMLazyTree.queueText(lazyTree, contentToUse);
11554
- }
11555
- } else if (childrenToUse != null) {
11556
- var mountImages = this.mountChildren(childrenToUse, transaction, context);
11557
- for (var i = 0; i < mountImages.length; i++) {
11558
- DOMLazyTree.queueChild(lazyTree, mountImages[i]);
11559
- }
11560
- }
11561
- }
11562
- },
11563
-
11564
- /**
11565
- * Receives a next element and updates the component.
11566
- *
11567
- * @internal
11568
- * @param {ReactElement} nextElement
11569
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
11570
- * @param {object} context
11571
- */
11572
- receiveComponent: function (nextElement, transaction, context) {
11573
- var prevElement = this._currentElement;
11574
- this._currentElement = nextElement;
11575
- this.updateComponent(transaction, prevElement, nextElement, context);
11576
- },
11577
-
11578
- /**
11579
- * Updates a DOM component after it has already been allocated and
11580
- * attached to the DOM. Reconciles the root DOM node, then recurses.
11581
- *
11582
- * @param {ReactReconcileTransaction} transaction
11583
- * @param {ReactElement} prevElement
11584
- * @param {ReactElement} nextElement
11585
- * @internal
11586
- * @overridable
11587
- */
11588
- updateComponent: function (transaction, prevElement, nextElement, context) {
11589
- var lastProps = prevElement.props;
11590
- var nextProps = this._currentElement.props;
11591
-
11592
- switch (this._tag) {
11593
- case 'input':
11594
- lastProps = ReactDOMInput.getHostProps(this, lastProps);
11595
- nextProps = ReactDOMInput.getHostProps(this, nextProps);
11596
- break;
11597
- case 'option':
11598
- lastProps = ReactDOMOption.getHostProps(this, lastProps);
11599
- nextProps = ReactDOMOption.getHostProps(this, nextProps);
11600
- break;
11601
- case 'select':
11602
- lastProps = ReactDOMSelect.getHostProps(this, lastProps);
11603
- nextProps = ReactDOMSelect.getHostProps(this, nextProps);
11604
- break;
11605
- case 'textarea':
11606
- lastProps = ReactDOMTextarea.getHostProps(this, lastProps);
11607
- nextProps = ReactDOMTextarea.getHostProps(this, nextProps);
11608
- break;
11609
- }
11610
-
11611
- assertValidProps(this, nextProps);
11612
- this._updateDOMProperties(lastProps, nextProps, transaction);
11613
- this._updateDOMChildren(lastProps, nextProps, transaction, context);
11614
-
11615
- switch (this._tag) {
11616
- case 'input':
11617
- // Update the wrapper around inputs *after* updating props. This has to
11618
- // happen after `_updateDOMProperties`. Otherwise HTML5 input validations
11619
- // raise warnings and prevent the new value from being assigned.
11620
- ReactDOMInput.updateWrapper(this);
11621
- break;
11622
- case 'textarea':
11623
- ReactDOMTextarea.updateWrapper(this);
11624
- break;
11625
- case 'select':
11626
- // <select> value update needs to occur after <option> children
11627
- // reconciliation
11628
- transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);
11629
- break;
11630
- }
11631
- },
11632
-
11633
- /**
11634
- * Reconciles the properties by detecting differences in property values and
11635
- * updating the DOM as necessary. This function is probably the single most
11636
- * critical path for performance optimization.
11637
- *
11638
- * TODO: Benchmark whether checking for changed values in memory actually
11639
- * improves performance (especially statically positioned elements).
11640
- * TODO: Benchmark the effects of putting this at the top since 99% of props
11641
- * do not change for a given reconciliation.
11642
- * TODO: Benchmark areas that can be improved with caching.
11643
- *
11644
- * @private
11645
- * @param {object} lastProps
11646
- * @param {object} nextProps
11647
- * @param {?DOMElement} node
11648
- */
11649
- _updateDOMProperties: function (lastProps, nextProps, transaction) {
11650
- var propKey;
11651
- var styleName;
11652
- var styleUpdates;
11653
- for (propKey in lastProps) {
11654
- if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {
11655
- continue;
11656
- }
11657
- if (propKey === STYLE) {
11658
- var lastStyle = this._previousStyleCopy;
11659
- for (styleName in lastStyle) {
11660
- if (lastStyle.hasOwnProperty(styleName)) {
11661
- styleUpdates = styleUpdates || {};
11662
- styleUpdates[styleName] = '';
11663
- }
11664
- }
11665
- this._previousStyleCopy = null;
11666
- } else if (registrationNameModules.hasOwnProperty(propKey)) {
11667
- if (lastProps[propKey]) {
11668
- // Only call deleteListener if there was a listener previously or
11669
- // else willDeleteListener gets called when there wasn't actually a
11670
- // listener (e.g., onClick={null})
11671
- deleteListener(this, propKey);
11672
- }
11673
- } else if (isCustomComponent(this._tag, lastProps)) {
11674
- if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
11675
- DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);
11676
- }
11677
- } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {
11678
- DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);
11679
- }
11680
- }
11681
- for (propKey in nextProps) {
11682
- var nextProp = nextProps[propKey];
11683
- var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;
11684
- if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {
11685
- continue;
11686
- }
11687
- if (propKey === STYLE) {
11688
- if (nextProp) {
11689
- if (process.env.NODE_ENV !== 'production') {
11690
- checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);
11691
- this._previousStyle = nextProp;
11692
- }
11693
- nextProp = this._previousStyleCopy = _assign({}, nextProp);
11694
- } else {
11695
- this._previousStyleCopy = null;
11696
- }
11697
- if (lastProp) {
11698
- // Unset styles on `lastProp` but not on `nextProp`.
11699
- for (styleName in lastProp) {
11700
- if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {
11701
- styleUpdates = styleUpdates || {};
11702
- styleUpdates[styleName] = '';
11703
- }
11704
- }
11705
- // Update styles that changed since `lastProp`.
11706
- for (styleName in nextProp) {
11707
- if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {
11708
- styleUpdates = styleUpdates || {};
11709
- styleUpdates[styleName] = nextProp[styleName];
11710
- }
11711
- }
11712
- } else {
11713
- // Relies on `updateStylesByID` not mutating `styleUpdates`.
11714
- styleUpdates = nextProp;
11715
- }
11716
- } else if (registrationNameModules.hasOwnProperty(propKey)) {
11717
- if (nextProp) {
11718
- enqueuePutListener(this, propKey, nextProp, transaction);
11719
- } else if (lastProp) {
11720
- deleteListener(this, propKey);
11721
- }
11722
- } else if (isCustomComponent(this._tag, nextProps)) {
11723
- if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
11724
- DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);
11725
- }
11726
- } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {
11727
- var node = getNode(this);
11728
- // If we're updating to null or undefined, we should remove the property
11729
- // from the DOM node instead of inadvertently setting to a string. This
11730
- // brings us in line with the same behavior we have on initial render.
11731
- if (nextProp != null) {
11732
- DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);
11733
- } else {
11734
- DOMPropertyOperations.deleteValueForProperty(node, propKey);
11735
- }
11736
- }
11737
- }
11738
- if (styleUpdates) {
11739
- CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);
11740
- }
11741
- },
11742
-
11743
- /**
11744
- * Reconciles the children with the various properties that affect the
11745
- * children content.
11746
- *
11747
- * @param {object} lastProps
11748
- * @param {object} nextProps
11749
- * @param {ReactReconcileTransaction} transaction
11750
- * @param {object} context
11751
- */
11752
- _updateDOMChildren: function (lastProps, nextProps, transaction, context) {
11753
- var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;
11754
- var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;
11755
-
11756
- var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;
11757
- var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;
11758
-
11759
- // Note the use of `!=` which checks for null or undefined.
11760
- var lastChildren = lastContent != null ? null : lastProps.children;
11761
- var nextChildren = nextContent != null ? null : nextProps.children;
11762
-
11763
- // If we're switching from children to content/html or vice versa, remove
11764
- // the old content
11765
- var lastHasContentOrHtml = lastContent != null || lastHtml != null;
11766
- var nextHasContentOrHtml = nextContent != null || nextHtml != null;
11767
- if (lastChildren != null && nextChildren == null) {
11768
- this.updateChildren(null, transaction, context);
11769
- } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {
11770
- this.updateTextContent('');
11771
- if (process.env.NODE_ENV !== 'production') {
11772
- ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
11773
- }
11774
- }
11775
-
11776
- if (nextContent != null) {
11777
- if (lastContent !== nextContent) {
11778
- this.updateTextContent('' + nextContent);
11779
- if (process.env.NODE_ENV !== 'production') {
11780
- setAndValidateContentChildDev.call(this, nextContent);
11781
- }
11782
- }
11783
- } else if (nextHtml != null) {
11784
- if (lastHtml !== nextHtml) {
11785
- this.updateMarkup('' + nextHtml);
11786
- }
11787
- if (process.env.NODE_ENV !== 'production') {
11788
- ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
11789
- }
11790
- } else if (nextChildren != null) {
11791
- if (process.env.NODE_ENV !== 'production') {
11792
- setAndValidateContentChildDev.call(this, null);
11793
- }
11794
-
11795
- this.updateChildren(nextChildren, transaction, context);
11796
- }
11797
- },
11798
-
11799
- getHostNode: function () {
11800
- return getNode(this);
11801
- },
11802
-
11803
- /**
11804
- * Destroys all event registrations for this instance. Does not remove from
11805
- * the DOM. That must be done by the parent.
11806
- *
11807
- * @internal
11808
- */
11809
- unmountComponent: function (safely) {
11810
- switch (this._tag) {
11811
- case 'audio':
11812
- case 'form':
11813
- case 'iframe':
11814
- case 'img':
11815
- case 'link':
11816
- case 'object':
11817
- case 'source':
11818
- case 'video':
11819
- var listeners = this._wrapperState.listeners;
11820
- if (listeners) {
11821
- for (var i = 0; i < listeners.length; i++) {
11822
- listeners[i].remove();
11823
- }
11824
- }
11825
- break;
11826
- case 'html':
11827
- case 'head':
11828
- case 'body':
11829
- /**
11830
- * Components like <html> <head> and <body> can't be removed or added
11831
- * easily in a cross-browser way, however it's valuable to be able to
11832
- * take advantage of React's reconciliation for styling and <title>
11833
- * management. So we just document it and throw in dangerous cases.
11834
- */
11835
- true ? process.env.NODE_ENV !== '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;
11836
- break;
11837
- }
11838
-
11839
- this.unmountChildren(safely);
11840
- ReactDOMComponentTree.uncacheNode(this);
11841
- EventPluginHub.deleteAllListeners(this);
11842
- this._rootNodeID = 0;
11843
- this._domID = 0;
11844
- this._wrapperState = null;
11845
-
11846
- if (process.env.NODE_ENV !== 'production') {
11847
- setAndValidateContentChildDev.call(this, null);
11848
- }
11849
- },
11850
-
11851
- getPublicInstance: function () {
11852
- return getNode(this);
11853
- }
11854
-
11855
- };
11856
-
11857
- _assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);
11858
-
11859
- module.exports = ReactDOMComponent;
11860
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
11861
-
11862
- /***/ },
11863
- /* 95 */
11864
- /***/ function(module, exports, __webpack_require__) {
11865
-
11866
- /**
11867
- * Copyright 2013-present, Facebook, Inc.
11868
- * All rights reserved.
11869
- *
11870
- * This source code is licensed under the BSD-style license found in the
11871
- * LICENSE file in the root directory of this source tree. An additional grant
11872
- * of patent rights can be found in the PATENTS file in the same directory.
11873
- *
11874
- */
11875
-
11876
- 'use strict';
11877
-
11878
- var ReactDOMComponentTree = __webpack_require__(35);
11879
-
11880
- var focusNode = __webpack_require__(96);
11881
-
11882
- var AutoFocusUtils = {
11883
- focusDOMComponent: function () {
11884
- focusNode(ReactDOMComponentTree.getNodeFromInstance(this));
11885
- }
11886
- };
11887
-
11888
- module.exports = AutoFocusUtils;
11889
-
11890
- /***/ },
11891
- /* 96 */
11892
- /***/ function(module, exports) {
11893
-
11894
- /**
11895
- * Copyright (c) 2013-present, Facebook, Inc.
11896
- * All rights reserved.
11897
- *
11898
- * This source code is licensed under the BSD-style license found in the
11899
- * LICENSE file in the root directory of this source tree. An additional grant
11900
- * of patent rights can be found in the PATENTS file in the same directory.
11901
- *
11902
- */
11903
-
11904
- 'use strict';
11905
-
11906
- /**
11907
- * @param {DOMElement} node input/textarea to focus
11908
- */
11909
-
11910
- function focusNode(node) {
11911
- // IE8 can throw "Can't move focus to the control because it is invisible,
11912
- // not enabled, or of a type that does not accept the focus." for all kinds of
11913
- // reasons that are too expensive and fragile to test.
11914
- try {
11915
- node.focus();
11916
- } catch (e) {}
11917
- }
11918
-
11919
- module.exports = focusNode;
11920
-
11921
- /***/ },
11922
- /* 97 */
11923
- /***/ function(module, exports, __webpack_require__) {
11924
-
11925
- /* WEBPACK VAR INJECTION */(function(process) {/**
11926
- * Copyright 2013-present, Facebook, Inc.
11927
- * All rights reserved.
11928
- *
11929
- * This source code is licensed under the BSD-style license found in the
11930
- * LICENSE file in the root directory of this source tree. An additional grant
11931
- * of patent rights can be found in the PATENTS file in the same directory.
11932
- *
11933
- */
11934
-
11935
- 'use strict';
11936
-
11937
- var CSSProperty = __webpack_require__(98);
11938
- var ExecutionEnvironment = __webpack_require__(49);
11939
- var ReactInstrumentation = __webpack_require__(64);
11940
-
11941
- var camelizeStyleName = __webpack_require__(99);
11942
- var dangerousStyleValue = __webpack_require__(101);
11943
- var hyphenateStyleName = __webpack_require__(102);
11944
- var memoizeStringOnly = __webpack_require__(104);
11945
- var warning = __webpack_require__(12);
11946
-
11947
- var processStyleName = memoizeStringOnly(function (styleName) {
11948
- return hyphenateStyleName(styleName);
11949
- });
11950
-
11951
- var hasShorthandPropertyBug = false;
11952
- var styleFloatAccessor = 'cssFloat';
11953
- if (ExecutionEnvironment.canUseDOM) {
11954
- var tempStyle = document.createElement('div').style;
11955
- try {
11956
- // IE8 throws "Invalid argument." if resetting shorthand style properties.
11957
- tempStyle.font = '';
11958
- } catch (e) {
11959
- hasShorthandPropertyBug = true;
11960
- }
11961
- // IE8 only supports accessing cssFloat (standard) as styleFloat
11962
- if (document.documentElement.style.cssFloat === undefined) {
11963
- styleFloatAccessor = 'styleFloat';
11964
- }
11965
- }
11966
-
11967
- if (process.env.NODE_ENV !== 'production') {
11968
- // 'msTransform' is correct, but the other prefixes should be capitalized
11969
- var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
11970
-
11971
- // style values shouldn't contain a semicolon
11972
- var badStyleValueWithSemicolonPattern = /;\s*$/;
11973
-
11974
- var warnedStyleNames = {};
11975
- var warnedStyleValues = {};
11976
- var warnedForNaNValue = false;
11977
-
11978
- var warnHyphenatedStyleName = function (name, owner) {
11979
- if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
11980
- return;
11981
- }
11982
-
11983
- warnedStyleNames[name] = true;
11984
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;
11985
- };
11986
-
11987
- var warnBadVendoredStyleName = function (name, owner) {
11988
- if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
11989
- return;
11990
- }
11991
-
11992
- warnedStyleNames[name] = true;
11993
- process.env.NODE_ENV !== '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;
11994
- };
11995
-
11996
- var warnStyleValueWithSemicolon = function (name, value, owner) {
11997
- if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
11998
- return;
11999
- }
12000
-
12001
- warnedStyleValues[value] = true;
12002
- process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\'t contain a semicolon.%s ' + 'Try "%s: %s" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;
12003
- };
12004
-
12005
- var warnStyleValueIsNaN = function (name, value, owner) {
12006
- if (warnedForNaNValue) {
12007
- return;
12008
- }
12009
-
12010
- warnedForNaNValue = true;
12011
- process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;
12012
- };
12013
-
12014
- var checkRenderMessage = function (owner) {
12015
- if (owner) {
12016
- var name = owner.getName();
12017
- if (name) {
12018
- return ' Check the render method of `' + name + '`.';
12019
- }
12020
- }
12021
- return '';
12022
- };
12023
-
12024
- /**
12025
- * @param {string} name
12026
- * @param {*} value
12027
- * @param {ReactDOMComponent} component
12028
- */
12029
- var warnValidStyle = function (name, value, component) {
12030
- var owner;
12031
- if (component) {
12032
- owner = component._currentElement._owner;
12033
- }
12034
- if (name.indexOf('-') > -1) {
12035
- warnHyphenatedStyleName(name, owner);
12036
- } else if (badVendoredStyleNamePattern.test(name)) {
12037
- warnBadVendoredStyleName(name, owner);
12038
- } else if (badStyleValueWithSemicolonPattern.test(value)) {
12039
- warnStyleValueWithSemicolon(name, value, owner);
12040
- }
12041
-
12042
- if (typeof value === 'number' && isNaN(value)) {
12043
- warnStyleValueIsNaN(name, value, owner);
12044
- }
12045
- };
12046
- }
12047
-
12048
- /**
12049
- * Operations for dealing with CSS properties.
12050
- */
12051
- var CSSPropertyOperations = {
12052
-
12053
- /**
12054
- * Serializes a mapping of style properties for use as inline styles:
12055
- *
12056
- * > createMarkupForStyles({width: '200px', height: 0})
12057
- * "width:200px;height:0;"
12058
- *
12059
- * Undefined values are ignored so that declarative programming is easier.
12060
- * The result should be HTML-escaped before insertion into the DOM.
12061
- *
12062
- * @param {object} styles
12063
- * @param {ReactDOMComponent} component
12064
- * @return {?string}
12065
- */
12066
- createMarkupForStyles: function (styles, component) {
12067
- var serialized = '';
12068
- for (var styleName in styles) {
12069
- if (!styles.hasOwnProperty(styleName)) {
12070
- continue;
12071
- }
12072
- var styleValue = styles[styleName];
12073
- if (process.env.NODE_ENV !== 'production') {
12074
- warnValidStyle(styleName, styleValue, component);
12075
- }
12076
- if (styleValue != null) {
12077
- serialized += processStyleName(styleName) + ':';
12078
- serialized += dangerousStyleValue(styleName, styleValue, component) + ';';
12079
- }
12080
- }
12081
- return serialized || null;
12082
- },
12083
-
12084
- /**
12085
- * Sets the value for multiple styles on a node. If a value is specified as
12086
- * '' (empty string), the corresponding style property will be unset.
12087
- *
12088
- * @param {DOMElement} node
12089
- * @param {object} styles
12090
- * @param {ReactDOMComponent} component
12091
- */
12092
- setValueForStyles: function (node, styles, component) {
12093
- if (process.env.NODE_ENV !== 'production') {
12094
- ReactInstrumentation.debugTool.onHostOperation({
12095
- instanceID: component._debugID,
12096
- type: 'update styles',
12097
- payload: styles
12098
- });
12099
- }
12100
-
12101
- var style = node.style;
12102
- for (var styleName in styles) {
12103
- if (!styles.hasOwnProperty(styleName)) {
12104
- continue;
12105
- }
12106
- if (process.env.NODE_ENV !== 'production') {
12107
- warnValidStyle(styleName, styles[styleName], component);
12108
- }
12109
- var styleValue = dangerousStyleValue(styleName, styles[styleName], component);
12110
- if (styleName === 'float' || styleName === 'cssFloat') {
12111
- styleName = styleFloatAccessor;
12112
- }
12113
- if (styleValue) {
12114
- style[styleName] = styleValue;
12115
- } else {
12116
- var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];
12117
- if (expansion) {
12118
- // Shorthand property that IE8 won't like unsetting, so unset each
12119
- // component to placate it
12120
- for (var individualStyleName in expansion) {
12121
- style[individualStyleName] = '';
12122
- }
12123
- } else {
12124
- style[styleName] = '';
12125
- }
12126
- }
12127
- }
12128
- }
12129
-
12130
- };
12131
-
12132
- module.exports = CSSPropertyOperations;
12133
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
12134
-
12135
- /***/ },
12136
- /* 98 */
12137
- /***/ function(module, exports) {
12138
-
12139
- /**
12140
- * Copyright 2013-present, Facebook, Inc.
12141
- * All rights reserved.
12142
- *
12143
- * This source code is licensed under the BSD-style license found in the
12144
- * LICENSE file in the root directory of this source tree. An additional grant
12145
- * of patent rights can be found in the PATENTS file in the same directory.
12146
- *
12147
- */
12148
-
12149
- 'use strict';
12150
-
12151
- /**
12152
- * CSS properties which accept numbers but are not in units of "px".
12153
- */
12154
-
12155
- var isUnitlessNumber = {
12156
- animationIterationCount: true,
12157
- borderImageOutset: true,
12158
- borderImageSlice: true,
12159
- borderImageWidth: true,
12160
- boxFlex: true,
12161
- boxFlexGroup: true,
12162
- boxOrdinalGroup: true,
12163
- columnCount: true,
12164
- flex: true,
12165
- flexGrow: true,
12166
- flexPositive: true,
12167
- flexShrink: true,
12168
- flexNegative: true,
12169
- flexOrder: true,
12170
- gridRow: true,
12171
- gridColumn: true,
12172
- fontWeight: true,
12173
- lineClamp: true,
12174
- lineHeight: true,
12175
- opacity: true,
12176
- order: true,
12177
- orphans: true,
12178
- tabSize: true,
12179
- widows: true,
12180
- zIndex: true,
12181
- zoom: true,
12182
-
12183
- // SVG-related properties
12184
- fillOpacity: true,
12185
- floodOpacity: true,
12186
- stopOpacity: true,
12187
- strokeDasharray: true,
12188
- strokeDashoffset: true,
12189
- strokeMiterlimit: true,
12190
- strokeOpacity: true,
12191
- strokeWidth: true
12192
- };
12193
-
12194
- /**
12195
- * @param {string} prefix vendor-specific prefix, eg: Webkit
12196
- * @param {string} key style name, eg: transitionDuration
12197
- * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
12198
- * WebkitTransitionDuration
12199
- */
12200
- function prefixKey(prefix, key) {
12201
- return prefix + key.charAt(0).toUpperCase() + key.substring(1);
12202
- }
12203
-
12204
- /**
12205
- * Support style names that may come passed in prefixed by adding permutations
12206
- * of vendor prefixes.
12207
- */
12208
- var prefixes = ['Webkit', 'ms', 'Moz', 'O'];
12209
-
12210
- // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
12211
- // infinite loop, because it iterates over the newly added props too.
12212
- Object.keys(isUnitlessNumber).forEach(function (prop) {
12213
- prefixes.forEach(function (prefix) {
12214
- isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
12215
- });
12216
- });
12217
-
12218
- /**
12219
- * Most style properties can be unset by doing .style[prop] = '' but IE8
12220
- * doesn't like doing that with shorthand properties so for the properties that
12221
- * IE8 breaks on, which are listed here, we instead unset each of the
12222
- * individual properties. See http://bugs.jquery.com/ticket/12385.
12223
- * The 4-value 'clock' properties like margin, padding, border-width seem to
12224
- * behave without any problems. Curiously, list-style works too without any
12225
- * special prodding.
12226
- */
12227
- var shorthandPropertyExpansions = {
12228
- background: {
12229
- backgroundAttachment: true,
12230
- backgroundColor: true,
12231
- backgroundImage: true,
12232
- backgroundPositionX: true,
12233
- backgroundPositionY: true,
12234
- backgroundRepeat: true
12235
- },
12236
- backgroundPosition: {
12237
- backgroundPositionX: true,
12238
- backgroundPositionY: true
12239
- },
12240
- border: {
12241
- borderWidth: true,
12242
- borderStyle: true,
12243
- borderColor: true
12244
- },
12245
- borderBottom: {
12246
- borderBottomWidth: true,
12247
- borderBottomStyle: true,
12248
- borderBottomColor: true
12249
- },
12250
- borderLeft: {
12251
- borderLeftWidth: true,
12252
- borderLeftStyle: true,
12253
- borderLeftColor: true
12254
- },
12255
- borderRight: {
12256
- borderRightWidth: true,
12257
- borderRightStyle: true,
12258
- borderRightColor: true
12259
- },
12260
- borderTop: {
12261
- borderTopWidth: true,
12262
- borderTopStyle: true,
12263
- borderTopColor: true
12264
- },
12265
- font: {
12266
- fontStyle: true,
12267
- fontVariant: true,
12268
- fontWeight: true,
12269
- fontSize: true,
12270
- lineHeight: true,
12271
- fontFamily: true
12272
- },
12273
- outline: {
12274
- outlineWidth: true,
12275
- outlineStyle: true,
12276
- outlineColor: true
12277
- }
12278
- };
12279
-
12280
- var CSSProperty = {
12281
- isUnitlessNumber: isUnitlessNumber,
12282
- shorthandPropertyExpansions: shorthandPropertyExpansions
12283
- };
12284
-
12285
- module.exports = CSSProperty;
12286
-
12287
- /***/ },
12288
- /* 99 */
12289
- /***/ function(module, exports, __webpack_require__) {
12290
-
12291
- /**
12292
- * Copyright (c) 2013-present, Facebook, Inc.
12293
- * All rights reserved.
12294
- *
12295
- * This source code is licensed under the BSD-style license found in the
12296
- * LICENSE file in the root directory of this source tree. An additional grant
12297
- * of patent rights can be found in the PATENTS file in the same directory.
12298
- *
12299
- * @typechecks
12300
- */
12301
-
12302
- 'use strict';
12303
-
12304
- var camelize = __webpack_require__(100);
12305
-
12306
- var msPattern = /^-ms-/;
12307
-
12308
- /**
12309
- * Camelcases a hyphenated CSS property name, for example:
12310
- *
12311
- * > camelizeStyleName('background-color')
12312
- * < "backgroundColor"
12313
- * > camelizeStyleName('-moz-transition')
12314
- * < "MozTransition"
12315
- * > camelizeStyleName('-ms-transition')
12316
- * < "msTransition"
12317
- *
12318
- * As Andi Smith suggests
12319
- * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix
12320
- * is converted to lowercase `ms`.
12321
- *
12322
- * @param {string} string
12323
- * @return {string}
12324
- */
12325
- function camelizeStyleName(string) {
12326
- return camelize(string.replace(msPattern, 'ms-'));
12327
- }
12328
-
12329
- module.exports = camelizeStyleName;
12330
-
12331
- /***/ },
12332
- /* 100 */
12333
- /***/ function(module, exports) {
12334
-
12335
- "use strict";
12336
-
12337
- /**
12338
- * Copyright (c) 2013-present, Facebook, Inc.
12339
- * All rights reserved.
12340
- *
12341
- * This source code is licensed under the BSD-style license found in the
12342
- * LICENSE file in the root directory of this source tree. An additional grant
12343
- * of patent rights can be found in the PATENTS file in the same directory.
12344
- *
12345
- * @typechecks
12346
- */
12347
-
12348
- var _hyphenPattern = /-(.)/g;
12349
-
12350
- /**
12351
- * Camelcases a hyphenated string, for example:
12352
- *
12353
- * > camelize('background-color')
12354
- * < "backgroundColor"
12355
- *
12356
- * @param {string} string
12357
- * @return {string}
12358
- */
12359
- function camelize(string) {
12360
- return string.replace(_hyphenPattern, function (_, character) {
12361
- return character.toUpperCase();
12362
- });
12363
- }
12364
-
12365
- module.exports = camelize;
12366
-
12367
- /***/ },
12368
- /* 101 */
12369
- /***/ function(module, exports, __webpack_require__) {
12370
-
12371
- /* WEBPACK VAR INJECTION */(function(process) {/**
12372
- * Copyright 2013-present, Facebook, Inc.
12373
- * All rights reserved.
12374
- *
12375
- * This source code is licensed under the BSD-style license found in the
12376
- * LICENSE file in the root directory of this source tree. An additional grant
12377
- * of patent rights can be found in the PATENTS file in the same directory.
12378
- *
12379
- */
12380
-
12381
- 'use strict';
12382
-
12383
- var CSSProperty = __webpack_require__(98);
12384
- var warning = __webpack_require__(12);
12385
-
12386
- var isUnitlessNumber = CSSProperty.isUnitlessNumber;
12387
- var styleWarnings = {};
12388
-
12389
- /**
12390
- * Convert a value into the proper css writable value. The style name `name`
12391
- * should be logical (no hyphens), as specified
12392
- * in `CSSProperty.isUnitlessNumber`.
12393
- *
12394
- * @param {string} name CSS property name such as `topMargin`.
12395
- * @param {*} value CSS property value such as `10px`.
12396
- * @param {ReactDOMComponent} component
12397
- * @return {string} Normalized style value with dimensions applied.
12398
- */
12399
- function dangerousStyleValue(name, value, component) {
12400
- // Note that we've removed escapeTextForBrowser() calls here since the
12401
- // whole string will be escaped when the attribute is injected into
12402
- // the markup. If you provide unsafe user data here they can inject
12403
- // arbitrary CSS which may be problematic (I couldn't repro this):
12404
- // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
12405
- // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/
12406
- // This is not an XSS hole but instead a potential CSS injection issue
12407
- // which has lead to a greater discussion about how we're going to
12408
- // trust URLs moving forward. See #2115901
12409
-
12410
- var isEmpty = value == null || typeof value === 'boolean' || value === '';
12411
- if (isEmpty) {
12412
- return '';
12413
- }
12414
-
12415
- var isNonNumeric = isNaN(value);
12416
- if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {
12417
- return '' + value; // cast to string
12418
- }
12419
-
12420
- if (typeof value === 'string') {
12421
- if (process.env.NODE_ENV !== 'production') {
12422
- // Allow '0' to pass through without warning. 0 is already special and
12423
- // doesn't require units, so we don't need to warn about it.
12424
- if (component && value !== '0') {
12425
- var owner = component._currentElement._owner;
12426
- var ownerName = owner ? owner.getName() : null;
12427
- if (ownerName && !styleWarnings[ownerName]) {
12428
- styleWarnings[ownerName] = {};
12429
- }
12430
- var warned = false;
12431
- if (ownerName) {
12432
- var warnings = styleWarnings[ownerName];
12433
- warned = warnings[name];
12434
- if (!warned) {
12435
- warnings[name] = true;
12436
- }
12437
- }
12438
- if (!warned) {
12439
- process.env.NODE_ENV !== '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;
12440
- }
12441
- }
12442
- }
12443
- value = value.trim();
12444
- }
12445
- return value + 'px';
12446
- }
12447
-
12448
- module.exports = dangerousStyleValue;
12449
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
12450
-
12451
- /***/ },
12452
- /* 102 */
12453
- /***/ function(module, exports, __webpack_require__) {
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
- 'use strict';
12467
-
12468
- var hyphenate = __webpack_require__(103);
12469
-
12470
- var msPattern = /^ms-/;
12471
-
12472
- /**
12473
- * Hyphenates a camelcased CSS property name, for example:
12474
- *
12475
- * > hyphenateStyleName('backgroundColor')
12476
- * < "background-color"
12477
- * > hyphenateStyleName('MozTransition')
12478
- * < "-moz-transition"
12479
- * > hyphenateStyleName('msTransition')
12480
- * < "-ms-transition"
12481
- *
12482
- * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
12483
- * is converted to `-ms-`.
12484
- *
12485
- * @param {string} string
12486
- * @return {string}
12487
- */
12488
- function hyphenateStyleName(string) {
12489
- return hyphenate(string).replace(msPattern, '-ms-');
12490
- }
12491
-
12492
- module.exports = hyphenateStyleName;
12493
-
12494
- /***/ },
12495
- /* 103 */
12496
- /***/ function(module, exports) {
12497
-
12498
- 'use strict';
12499
-
12500
- /**
12501
- * Copyright (c) 2013-present, Facebook, Inc.
12502
- * All rights reserved.
12503
- *
12504
- * This source code is licensed under the BSD-style license found in the
12505
- * LICENSE file in the root directory of this source tree. An additional grant
12506
- * of patent rights can be found in the PATENTS file in the same directory.
12507
- *
12508
- * @typechecks
12509
- */
12510
-
12511
- var _uppercasePattern = /([A-Z])/g;
12512
-
12513
- /**
12514
- * Hyphenates a camelcased string, for example:
12515
- *
12516
- * > hyphenate('backgroundColor')
12517
- * < "background-color"
12518
- *
12519
- * For CSS style names, use `hyphenateStyleName` instead which works properly
12520
- * with all vendor prefixes, including `ms`.
12521
- *
12522
- * @param {string} string
12523
- * @return {string}
12524
- */
12525
- function hyphenate(string) {
12526
- return string.replace(_uppercasePattern, '-$1').toLowerCase();
12527
- }
12528
-
12529
- module.exports = hyphenate;
12530
-
12531
- /***/ },
12532
- /* 104 */
12533
- /***/ function(module, exports) {
12534
-
12535
- /**
12536
- * Copyright (c) 2013-present, Facebook, Inc.
12537
- * All rights reserved.
12538
- *
12539
- * This source code is licensed under the BSD-style license found in the
12540
- * LICENSE file in the root directory of this source tree. An additional grant
12541
- * of patent rights can be found in the PATENTS file in the same directory.
12542
- *
12543
- *
12544
- * @typechecks static-only
12545
- */
12546
-
12547
- 'use strict';
12548
-
12549
- /**
12550
- * Memoizes the return value of a function that accepts one string argument.
12551
- */
12552
-
12553
- function memoizeStringOnly(callback) {
12554
- var cache = {};
12555
- return function (string) {
12556
- if (!cache.hasOwnProperty(string)) {
12557
- cache[string] = callback.call(this, string);
12558
- }
12559
- return cache[string];
12560
- };
12561
- }
12562
-
12563
- module.exports = memoizeStringOnly;
12564
-
12565
- /***/ },
12566
- /* 105 */
12567
- /***/ function(module, exports, __webpack_require__) {
12568
-
12569
- /* WEBPACK VAR INJECTION */(function(process) {/**
12570
- * Copyright 2013-present, Facebook, Inc.
12571
- * All rights reserved.
12572
- *
12573
- * This source code is licensed under the BSD-style license found in the
12574
- * LICENSE file in the root directory of this source tree. An additional grant
12575
- * of patent rights can be found in the PATENTS file in the same directory.
12576
- *
12577
- */
12578
-
12579
- 'use strict';
12580
-
12581
- var DOMProperty = __webpack_require__(37);
12582
- var ReactDOMComponentTree = __webpack_require__(35);
12583
- var ReactInstrumentation = __webpack_require__(64);
12584
-
12585
- var quoteAttributeValueForBrowser = __webpack_require__(106);
12586
- var warning = __webpack_require__(12);
12587
-
12588
- var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
12589
- var illegalAttributeNameCache = {};
12590
- var validatedAttributeNameCache = {};
12591
-
12592
- function isAttributeNameSafe(attributeName) {
12593
- if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {
12594
- return true;
12595
- }
12596
- if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {
12597
- return false;
12598
- }
12599
- if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
12600
- validatedAttributeNameCache[attributeName] = true;
12601
- return true;
12602
- }
12603
- illegalAttributeNameCache[attributeName] = true;
12604
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;
12605
- return false;
12606
- }
12607
-
12608
- function shouldIgnoreValue(propertyInfo, value) {
12609
- return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;
12610
- }
12611
-
12612
- /**
12613
- * Operations for dealing with DOM properties.
12614
- */
12615
- var DOMPropertyOperations = {
12616
-
12617
- /**
12618
- * Creates markup for the ID property.
12619
- *
12620
- * @param {string} id Unescaped ID.
12621
- * @return {string} Markup string.
12622
- */
12623
- createMarkupForID: function (id) {
12624
- return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);
12625
- },
12626
-
12627
- setAttributeForID: function (node, id) {
12628
- node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);
12629
- },
12630
-
12631
- createMarkupForRoot: function () {
12632
- return DOMProperty.ROOT_ATTRIBUTE_NAME + '=""';
12633
- },
12634
-
12635
- setAttributeForRoot: function (node) {
12636
- node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');
12637
- },
12638
-
12639
- /**
12640
- * Creates markup for a property.
12641
- *
12642
- * @param {string} name
12643
- * @param {*} value
12644
- * @return {?string} Markup string, or null if the property was invalid.
12645
- */
12646
- createMarkupForProperty: function (name, value) {
12647
- var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
12648
- if (propertyInfo) {
12649
- if (shouldIgnoreValue(propertyInfo, value)) {
12650
- return '';
12651
- }
12652
- var attributeName = propertyInfo.attributeName;
12653
- if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
12654
- return attributeName + '=""';
12655
- }
12656
- return attributeName + '=' + quoteAttributeValueForBrowser(value);
12657
- } else if (DOMProperty.isCustomAttribute(name)) {
12658
- if (value == null) {
12659
- return '';
12660
- }
12661
- return name + '=' + quoteAttributeValueForBrowser(value);
12662
- }
12663
- return null;
12664
- },
12665
-
12666
- /**
12667
- * Creates markup for a custom property.
12668
- *
12669
- * @param {string} name
12670
- * @param {*} value
12671
- * @return {string} Markup string, or empty string if the property was invalid.
12672
- */
12673
- createMarkupForCustomAttribute: function (name, value) {
12674
- if (!isAttributeNameSafe(name) || value == null) {
12675
- return '';
12676
- }
12677
- return name + '=' + quoteAttributeValueForBrowser(value);
12678
- },
12679
-
12680
- /**
12681
- * Sets the value for a property on a node.
12682
- *
12683
- * @param {DOMElement} node
12684
- * @param {string} name
12685
- * @param {*} value
12686
- */
12687
- setValueForProperty: function (node, name, value) {
12688
- var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
12689
- if (propertyInfo) {
12690
- var mutationMethod = propertyInfo.mutationMethod;
12691
- if (mutationMethod) {
12692
- mutationMethod(node, value);
12693
- } else if (shouldIgnoreValue(propertyInfo, value)) {
12694
- this.deleteValueForProperty(node, name);
12695
- return;
12696
- } else if (propertyInfo.mustUseProperty) {
12697
- // Contrary to `setAttribute`, object properties are properly
12698
- // `toString`ed by IE8/9.
12699
- node[propertyInfo.propertyName] = value;
12700
- } else {
12701
- var attributeName = propertyInfo.attributeName;
12702
- var namespace = propertyInfo.attributeNamespace;
12703
- // `setAttribute` with objects becomes only `[object]` in IE8/9,
12704
- // ('' + value) makes it output the correct toString()-value.
12705
- if (namespace) {
12706
- node.setAttributeNS(namespace, attributeName, '' + value);
12707
- } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {
12708
- node.setAttribute(attributeName, '');
12709
- } else {
12710
- node.setAttribute(attributeName, '' + value);
12711
- }
12712
- }
12713
- } else if (DOMProperty.isCustomAttribute(name)) {
12714
- DOMPropertyOperations.setValueForAttribute(node, name, value);
12715
- return;
12716
- }
12717
-
12718
- if (process.env.NODE_ENV !== 'production') {
12719
- var payload = {};
12720
- payload[name] = value;
12721
- ReactInstrumentation.debugTool.onHostOperation({
12722
- instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
12723
- type: 'update attribute',
12724
- payload: payload
12725
- });
12726
- }
12727
- },
12728
-
12729
- setValueForAttribute: function (node, name, value) {
12730
- if (!isAttributeNameSafe(name)) {
12731
- return;
12732
- }
12733
- if (value == null) {
12734
- node.removeAttribute(name);
12735
- } else {
12736
- node.setAttribute(name, '' + value);
12737
- }
12738
-
12739
- if (process.env.NODE_ENV !== 'production') {
12740
- var payload = {};
12741
- payload[name] = value;
12742
- ReactInstrumentation.debugTool.onHostOperation({
12743
- instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
12744
- type: 'update attribute',
12745
- payload: payload
12746
- });
12747
- }
12748
- },
12749
-
12750
- /**
12751
- * Deletes an attributes from a node.
12752
- *
12753
- * @param {DOMElement} node
12754
- * @param {string} name
12755
- */
12756
- deleteValueForAttribute: function (node, name) {
12757
- node.removeAttribute(name);
12758
- if (process.env.NODE_ENV !== 'production') {
12759
- ReactInstrumentation.debugTool.onHostOperation({
12760
- instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
12761
- type: 'remove attribute',
12762
- payload: name
12763
- });
12764
- }
12765
- },
12766
-
12767
- /**
12768
- * Deletes the value for a property on a node.
12769
- *
12770
- * @param {DOMElement} node
12771
- * @param {string} name
12772
- */
12773
- deleteValueForProperty: function (node, name) {
12774
- var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
12775
- if (propertyInfo) {
12776
- var mutationMethod = propertyInfo.mutationMethod;
12777
- if (mutationMethod) {
12778
- mutationMethod(node, undefined);
12779
- } else if (propertyInfo.mustUseProperty) {
12780
- var propName = propertyInfo.propertyName;
12781
- if (propertyInfo.hasBooleanValue) {
12782
- node[propName] = false;
12783
- } else {
12784
- node[propName] = '';
12785
- }
12786
- } else {
12787
- node.removeAttribute(propertyInfo.attributeName);
12788
- }
12789
- } else if (DOMProperty.isCustomAttribute(name)) {
12790
- node.removeAttribute(name);
12791
- }
12792
-
12793
- if (process.env.NODE_ENV !== 'production') {
12794
- ReactInstrumentation.debugTool.onHostOperation({
12795
- instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,
12796
- type: 'remove attribute',
12797
- payload: name
12798
- });
12799
- }
12800
- }
12801
-
12802
- };
12803
-
12804
- module.exports = DOMPropertyOperations;
12805
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
12806
-
12807
- /***/ },
12808
- /* 106 */
12809
- /***/ function(module, exports, __webpack_require__) {
12810
-
12811
- /**
12812
- * Copyright 2013-present, Facebook, Inc.
12813
- * All rights reserved.
12814
- *
12815
- * This source code is licensed under the BSD-style license found in the
12816
- * LICENSE file in the root directory of this source tree. An additional grant
12817
- * of patent rights can be found in the PATENTS file in the same directory.
12818
- *
12819
- */
12820
-
12821
- 'use strict';
12822
-
12823
- var escapeTextContentForBrowser = __webpack_require__(88);
12824
-
12825
- /**
12826
- * Escapes attribute value to prevent scripting attacks.
12827
- *
12828
- * @param {*} value Value to escape.
12829
- * @return {string} An escaped string.
12830
- */
12831
- function quoteAttributeValueForBrowser(value) {
12832
- return '"' + escapeTextContentForBrowser(value) + '"';
12833
- }
12834
-
12835
- module.exports = quoteAttributeValueForBrowser;
12836
-
12837
- /***/ },
12838
- /* 107 */
12839
- /***/ function(module, exports, __webpack_require__) {
12840
-
12841
- /**
12842
- * Copyright 2013-present, Facebook, Inc.
12843
- * All rights reserved.
12844
- *
12845
- * This source code is licensed under the BSD-style license found in the
12846
- * LICENSE file in the root directory of this source tree. An additional grant
12847
- * of patent rights can be found in the PATENTS file in the same directory.
12848
- *
12849
- */
12850
-
12851
- 'use strict';
12852
-
12853
- var _assign = __webpack_require__(51);
12854
-
12855
- var EventPluginRegistry = __webpack_require__(44);
12856
- var ReactEventEmitterMixin = __webpack_require__(108);
12857
- var ViewportMetrics = __webpack_require__(78);
12858
-
12859
- var getVendorPrefixedEventName = __webpack_require__(109);
12860
- var isEventSupported = __webpack_require__(72);
12861
-
12862
- /**
12863
- * Summary of `ReactBrowserEventEmitter` event handling:
12864
- *
12865
- * - Top-level delegation is used to trap most native browser events. This
12866
- * may only occur in the main thread and is the responsibility of
12867
- * ReactEventListener, which is injected and can therefore support pluggable
12868
- * event sources. This is the only work that occurs in the main thread.
12869
- *
12870
- * - We normalize and de-duplicate events to account for browser quirks. This
12871
- * may be done in the worker thread.
12872
- *
12873
- * - Forward these native events (with the associated top-level type used to
12874
- * trap it) to `EventPluginHub`, which in turn will ask plugins if they want
12875
- * to extract any synthetic events.
12876
- *
12877
- * - The `EventPluginHub` will then process each event by annotating them with
12878
- * "dispatches", a sequence of listeners and IDs that care about that event.
12879
- *
12880
- * - The `EventPluginHub` then dispatches the events.
12881
- *
12882
- * Overview of React and the event system:
12883
- *
12884
- * +------------+ .
12885
- * | DOM | .
12886
- * +------------+ .
12887
- * | .
12888
- * v .
12889
- * +------------+ .
12890
- * | ReactEvent | .
12891
- * | Listener | .
12892
- * +------------+ . +-----------+
12893
- * | . +--------+|SimpleEvent|
12894
- * | . | |Plugin |
12895
- * +-----|------+ . v +-----------+
12896
- * | | | . +--------------+ +------------+
12897
- * | +-----------.--->|EventPluginHub| | Event |
12898
- * | | . | | +-----------+ | Propagators|
12899
- * | ReactEvent | . | | |TapEvent | |------------|
12900
- * | Emitter | . | |<---+|Plugin | |other plugin|
12901
- * | | . | | +-----------+ | utilities |
12902
- * | +-----------.--->| | +------------+
12903
- * | | | . +--------------+
12904
- * +-----|------+ . ^ +-----------+
12905
- * | . | |Enter/Leave|
12906
- * + . +-------+|Plugin |
12907
- * +-------------+ . +-----------+
12908
- * | application | .
12909
- * |-------------| .
12910
- * | | .
12911
- * | | .
12912
- * +-------------+ .
12913
- * .
12914
- * React Core . General Purpose Event Plugin System
12915
- */
12916
-
12917
- var hasEventPageXY;
12918
- var alreadyListeningTo = {};
12919
- var isMonitoringScrollValue = false;
12920
- var reactTopListenersCounter = 0;
12921
-
12922
- // For events like 'submit' which don't consistently bubble (which we trap at a
12923
- // lower node than `document`), binding at `document` would cause duplicate
12924
- // events so we don't include them here
12925
- var topEventMapping = {
12926
- topAbort: 'abort',
12927
- topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',
12928
- topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',
12929
- topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',
12930
- topBlur: 'blur',
12931
- topCanPlay: 'canplay',
12932
- topCanPlayThrough: 'canplaythrough',
12933
- topChange: 'change',
12934
- topClick: 'click',
12935
- topCompositionEnd: 'compositionend',
12936
- topCompositionStart: 'compositionstart',
12937
- topCompositionUpdate: 'compositionupdate',
12938
- topContextMenu: 'contextmenu',
12939
- topCopy: 'copy',
12940
- topCut: 'cut',
12941
- topDoubleClick: 'dblclick',
12942
- topDrag: 'drag',
12943
- topDragEnd: 'dragend',
12944
- topDragEnter: 'dragenter',
12945
- topDragExit: 'dragexit',
12946
- topDragLeave: 'dragleave',
12947
- topDragOver: 'dragover',
12948
- topDragStart: 'dragstart',
12949
- topDrop: 'drop',
12950
- topDurationChange: 'durationchange',
12951
- topEmptied: 'emptied',
12952
- topEncrypted: 'encrypted',
12953
- topEnded: 'ended',
12954
- topError: 'error',
12955
- topFocus: 'focus',
12956
- topInput: 'input',
12957
- topKeyDown: 'keydown',
12958
- topKeyPress: 'keypress',
12959
- topKeyUp: 'keyup',
12960
- topLoadedData: 'loadeddata',
12961
- topLoadedMetadata: 'loadedmetadata',
12962
- topLoadStart: 'loadstart',
12963
- topMouseDown: 'mousedown',
12964
- topMouseMove: 'mousemove',
12965
- topMouseOut: 'mouseout',
12966
- topMouseOver: 'mouseover',
12967
- topMouseUp: 'mouseup',
12968
- topPaste: 'paste',
12969
- topPause: 'pause',
12970
- topPlay: 'play',
12971
- topPlaying: 'playing',
12972
- topProgress: 'progress',
12973
- topRateChange: 'ratechange',
12974
- topScroll: 'scroll',
12975
- topSeeked: 'seeked',
12976
- topSeeking: 'seeking',
12977
- topSelectionChange: 'selectionchange',
12978
- topStalled: 'stalled',
12979
- topSuspend: 'suspend',
12980
- topTextInput: 'textInput',
12981
- topTimeUpdate: 'timeupdate',
12982
- topTouchCancel: 'touchcancel',
12983
- topTouchEnd: 'touchend',
12984
- topTouchMove: 'touchmove',
12985
- topTouchStart: 'touchstart',
12986
- topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',
12987
- topVolumeChange: 'volumechange',
12988
- topWaiting: 'waiting',
12989
- topWheel: 'wheel'
12990
- };
12991
-
12992
- /**
12993
- * To ensure no conflicts with other potential React instances on the page
12994
- */
12995
- var topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);
12996
-
12997
- function getListeningForDocument(mountAt) {
12998
- // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`
12999
- // directly.
13000
- if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {
13001
- mountAt[topListenersIDKey] = reactTopListenersCounter++;
13002
- alreadyListeningTo[mountAt[topListenersIDKey]] = {};
13003
- }
13004
- return alreadyListeningTo[mountAt[topListenersIDKey]];
13005
- }
13006
-
13007
- /**
13008
- * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For
13009
- * example:
13010
- *
13011
- * EventPluginHub.putListener('myID', 'onClick', myFunction);
13012
- *
13013
- * This would allocate a "registration" of `('onClick', myFunction)` on 'myID'.
13014
- *
13015
- * @internal
13016
- */
13017
- var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {
13018
-
13019
- /**
13020
- * Injectable event backend
13021
- */
13022
- ReactEventListener: null,
13023
-
13024
- injection: {
13025
- /**
13026
- * @param {object} ReactEventListener
13027
- */
13028
- injectReactEventListener: function (ReactEventListener) {
13029
- ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);
13030
- ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;
13031
- }
13032
- },
13033
-
13034
- /**
13035
- * Sets whether or not any created callbacks should be enabled.
13036
- *
13037
- * @param {boolean} enabled True if callbacks should be enabled.
13038
- */
13039
- setEnabled: function (enabled) {
13040
- if (ReactBrowserEventEmitter.ReactEventListener) {
13041
- ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);
13042
- }
13043
- },
13044
-
13045
- /**
13046
- * @return {boolean} True if callbacks are enabled.
13047
- */
13048
- isEnabled: function () {
13049
- return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());
13050
- },
13051
-
13052
- /**
13053
- * We listen for bubbled touch events on the document object.
13054
- *
13055
- * Firefox v8.01 (and possibly others) exhibited strange behavior when
13056
- * mounting `onmousemove` events at some node that was not the document
13057
- * element. The symptoms were that if your mouse is not moving over something
13058
- * contained within that mount point (for example on the background) the
13059
- * top-level listeners for `onmousemove` won't be called. However, if you
13060
- * register the `mousemove` on the document object, then it will of course
13061
- * catch all `mousemove`s. This along with iOS quirks, justifies restricting
13062
- * top-level listeners to the document object only, at least for these
13063
- * movement types of events and possibly all events.
13064
- *
13065
- * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
13066
- *
13067
- * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but
13068
- * they bubble to document.
13069
- *
13070
- * @param {string} registrationName Name of listener (e.g. `onClick`).
13071
- * @param {object} contentDocumentHandle Document which owns the container
13072
- */
13073
- listenTo: function (registrationName, contentDocumentHandle) {
13074
- var mountAt = contentDocumentHandle;
13075
- var isListening = getListeningForDocument(mountAt);
13076
- var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];
13077
-
13078
- for (var i = 0; i < dependencies.length; i++) {
13079
- var dependency = dependencies[i];
13080
- if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {
13081
- if (dependency === 'topWheel') {
13082
- if (isEventSupported('wheel')) {
13083
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);
13084
- } else if (isEventSupported('mousewheel')) {
13085
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);
13086
- } else {
13087
- // Firefox needs to capture a different mouse scroll event.
13088
- // @see http://www.quirksmode.org/dom/events/tests/scroll.html
13089
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);
13090
- }
13091
- } else if (dependency === 'topScroll') {
13092
-
13093
- if (isEventSupported('scroll', true)) {
13094
- ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);
13095
- } else {
13096
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);
13097
- }
13098
- } else if (dependency === 'topFocus' || dependency === 'topBlur') {
13099
-
13100
- if (isEventSupported('focus', true)) {
13101
- ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);
13102
- ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);
13103
- } else if (isEventSupported('focusin')) {
13104
- // IE has `focusin` and `focusout` events which bubble.
13105
- // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html
13106
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);
13107
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);
13108
- }
13109
-
13110
- // to make sure blur and focus event listeners are only attached once
13111
- isListening.topBlur = true;
13112
- isListening.topFocus = true;
13113
- } else if (topEventMapping.hasOwnProperty(dependency)) {
13114
- ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);
13115
- }
13116
-
13117
- isListening[dependency] = true;
13118
- }
13119
- }
13120
- },
13121
-
13122
- trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {
13123
- return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);
13124
- },
13125
-
13126
- trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {
13127
- return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);
13128
- },
13129
-
13130
- /**
13131
- * Protect against document.createEvent() returning null
13132
- * Some popup blocker extensions appear to do this:
13133
- * https://github.com/facebook/react/issues/6887
13134
- */
13135
- supportsEventPageXY: function () {
13136
- if (!document.createEvent) {
13137
- return false;
13138
- }
13139
- var ev = document.createEvent('MouseEvent');
13140
- return ev != null && 'pageX' in ev;
13141
- },
13142
-
13143
- /**
13144
- * Listens to window scroll and resize events. We cache scroll values so that
13145
- * application code can access them without triggering reflows.
13146
- *
13147
- * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when
13148
- * pageX/pageY isn't supported (legacy browsers).
13149
- *
13150
- * NOTE: Scroll events do not bubble.
13151
- *
13152
- * @see http://www.quirksmode.org/dom/events/scroll.html
13153
- */
13154
- ensureScrollValueMonitoring: function () {
13155
- if (hasEventPageXY === undefined) {
13156
- hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();
13157
- }
13158
- if (!hasEventPageXY && !isMonitoringScrollValue) {
13159
- var refresh = ViewportMetrics.refreshScrollValues;
13160
- ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);
13161
- isMonitoringScrollValue = true;
13162
- }
13163
- }
13164
-
13165
- });
13166
-
13167
- module.exports = ReactBrowserEventEmitter;
13168
-
13169
- /***/ },
13170
- /* 108 */
13171
- /***/ function(module, exports, __webpack_require__) {
13172
-
13173
- /**
13174
- * Copyright 2013-present, Facebook, Inc.
13175
- * All rights reserved.
13176
- *
13177
- * This source code is licensed under the BSD-style license found in the
13178
- * LICENSE file in the root directory of this source tree. An additional grant
13179
- * of patent rights can be found in the PATENTS file in the same directory.
13180
- *
13181
- */
13182
-
13183
- 'use strict';
13184
-
13185
- var EventPluginHub = __webpack_require__(43);
13186
-
13187
- function runEventQueueInBatch(events) {
13188
- EventPluginHub.enqueueEvents(events);
13189
- EventPluginHub.processEventQueue(false);
13190
- }
13191
-
13192
- var ReactEventEmitterMixin = {
13193
-
13194
- /**
13195
- * Streams a fired top-level event to `EventPluginHub` where plugins have the
13196
- * opportunity to create `ReactEvent`s to be dispatched.
13197
- */
13198
- handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
13199
- var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);
13200
- runEventQueueInBatch(events);
13201
- }
13202
- };
13203
-
13204
- module.exports = ReactEventEmitterMixin;
13205
-
13206
- /***/ },
13207
- /* 109 */
13208
- /***/ function(module, exports, __webpack_require__) {
13209
-
13210
- /**
13211
- * Copyright 2013-present, Facebook, Inc.
13212
- * All rights reserved.
13213
- *
13214
- * This source code is licensed under the BSD-style license found in the
13215
- * LICENSE file in the root directory of this source tree. An additional grant
13216
- * of patent rights can be found in the PATENTS file in the same directory.
13217
- *
13218
- */
13219
-
13220
- 'use strict';
13221
-
13222
- var ExecutionEnvironment = __webpack_require__(49);
13223
-
13224
- /**
13225
- * Generate a mapping of standard vendor prefixes using the defined style property and event name.
13226
- *
13227
- * @param {string} styleProp
13228
- * @param {string} eventName
13229
- * @returns {object}
13230
- */
13231
- function makePrefixMap(styleProp, eventName) {
13232
- var prefixes = {};
13233
-
13234
- prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
13235
- prefixes['Webkit' + styleProp] = 'webkit' + eventName;
13236
- prefixes['Moz' + styleProp] = 'moz' + eventName;
13237
- prefixes['ms' + styleProp] = 'MS' + eventName;
13238
- prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();
13239
-
13240
- return prefixes;
13241
- }
13242
-
13243
- /**
13244
- * A list of event names to a configurable list of vendor prefixes.
13245
- */
13246
- var vendorPrefixes = {
13247
- animationend: makePrefixMap('Animation', 'AnimationEnd'),
13248
- animationiteration: makePrefixMap('Animation', 'AnimationIteration'),
13249
- animationstart: makePrefixMap('Animation', 'AnimationStart'),
13250
- transitionend: makePrefixMap('Transition', 'TransitionEnd')
13251
- };
13252
-
13253
- /**
13254
- * Event names that have already been detected and prefixed (if applicable).
13255
- */
13256
- var prefixedEventNames = {};
13257
-
13258
- /**
13259
- * Element to check for prefixes on.
13260
- */
13261
- var style = {};
13262
-
13263
- /**
13264
- * Bootstrap if a DOM exists.
13265
- */
13266
- if (ExecutionEnvironment.canUseDOM) {
13267
- style = document.createElement('div').style;
13268
-
13269
- // On some platforms, in particular some releases of Android 4.x,
13270
- // the un-prefixed "animation" and "transition" properties are defined on the
13271
- // style object but the events that fire will still be prefixed, so we need
13272
- // to check if the un-prefixed events are usable, and if not remove them from the map.
13273
- if (!('AnimationEvent' in window)) {
13274
- delete vendorPrefixes.animationend.animation;
13275
- delete vendorPrefixes.animationiteration.animation;
13276
- delete vendorPrefixes.animationstart.animation;
13277
- }
13278
-
13279
- // Same as above
13280
- if (!('TransitionEvent' in window)) {
13281
- delete vendorPrefixes.transitionend.transition;
13282
- }
13283
- }
13284
-
13285
- /**
13286
- * Attempts to determine the correct vendor prefixed event name.
13287
- *
13288
- * @param {string} eventName
13289
- * @returns {string}
13290
- */
13291
- function getVendorPrefixedEventName(eventName) {
13292
- if (prefixedEventNames[eventName]) {
13293
- return prefixedEventNames[eventName];
13294
- } else if (!vendorPrefixes[eventName]) {
13295
- return eventName;
13296
- }
13297
-
13298
- var prefixMap = vendorPrefixes[eventName];
13299
-
13300
- for (var styleProp in prefixMap) {
13301
- if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {
13302
- return prefixedEventNames[eventName] = prefixMap[styleProp];
13303
- }
13304
- }
13305
-
13306
- return '';
13307
- }
13308
-
13309
- module.exports = getVendorPrefixedEventName;
13310
-
13311
- /***/ },
13312
- /* 110 */
13313
- /***/ function(module, exports, __webpack_require__) {
13314
-
13315
- /* WEBPACK VAR INJECTION */(function(process) {/**
13316
- * Copyright 2013-present, Facebook, Inc.
13317
- * All rights reserved.
13318
- *
13319
- * This source code is licensed under the BSD-style license found in the
13320
- * LICENSE file in the root directory of this source tree. An additional grant
13321
- * of patent rights can be found in the PATENTS file in the same directory.
13322
- *
13323
- */
13324
-
13325
- 'use strict';
13326
-
13327
- var _prodInvariant = __webpack_require__(36),
13328
- _assign = __webpack_require__(51);
13329
-
13330
- var DOMPropertyOperations = __webpack_require__(105);
13331
- var LinkedValueUtils = __webpack_require__(111);
13332
- var ReactDOMComponentTree = __webpack_require__(35);
13333
- var ReactUpdates = __webpack_require__(58);
13334
-
13335
- var invariant = __webpack_require__(9);
13336
- var warning = __webpack_require__(12);
13337
-
13338
- var didWarnValueLink = false;
13339
- var didWarnCheckedLink = false;
13340
- var didWarnValueDefaultValue = false;
13341
- var didWarnCheckedDefaultChecked = false;
13342
- var didWarnControlledToUncontrolled = false;
13343
- var didWarnUncontrolledToControlled = false;
13344
-
13345
- function forceUpdateIfMounted() {
13346
- if (this._rootNodeID) {
13347
- // DOM component is still mounted; update
13348
- ReactDOMInput.updateWrapper(this);
13349
- }
13350
- }
13351
-
13352
- function isControlled(props) {
13353
- var usesChecked = props.type === 'checkbox' || props.type === 'radio';
13354
- return usesChecked ? props.checked != null : props.value != null;
13355
- }
13356
-
13357
- /**
13358
- * Implements an <input> host component that allows setting these optional
13359
- * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.
13360
- *
13361
- * If `checked` or `value` are not supplied (or null/undefined), user actions
13362
- * that affect the checked state or value will trigger updates to the element.
13363
- *
13364
- * If they are supplied (and not null/undefined), the rendered element will not
13365
- * trigger updates to the element. Instead, the props must change in order for
13366
- * the rendered element to be updated.
13367
- *
13368
- * The rendered element will be initialized as unchecked (or `defaultChecked`)
13369
- * with an empty value (or `defaultValue`).
13370
- *
13371
- * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html
13372
- */
13373
- var ReactDOMInput = {
13374
- getHostProps: function (inst, props) {
13375
- var value = LinkedValueUtils.getValue(props);
13376
- var checked = LinkedValueUtils.getChecked(props);
13377
-
13378
- var hostProps = _assign({
13379
- // Make sure we set .type before any other properties (setting .value
13380
- // before .type means .value is lost in IE11 and below)
13381
- type: undefined,
13382
- // Make sure we set .step before .value (setting .value before .step
13383
- // means .value is rounded on mount, based upon step precision)
13384
- step: undefined,
13385
- // Make sure we set .min & .max before .value (to ensure proper order
13386
- // in corner cases such as min or max deriving from value, e.g. Issue #7170)
13387
- min: undefined,
13388
- max: undefined
13389
- }, props, {
13390
- defaultChecked: undefined,
13391
- defaultValue: undefined,
13392
- value: value != null ? value : inst._wrapperState.initialValue,
13393
- checked: checked != null ? checked : inst._wrapperState.initialChecked,
13394
- onChange: inst._wrapperState.onChange
13395
- });
13396
-
13397
- return hostProps;
13398
- },
13399
-
13400
- mountWrapper: function (inst, props) {
13401
- if (process.env.NODE_ENV !== 'production') {
13402
- LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);
13403
-
13404
- var owner = inst._currentElement._owner;
13405
-
13406
- if (props.valueLink !== undefined && !didWarnValueLink) {
13407
- process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;
13408
- didWarnValueLink = true;
13409
- }
13410
- if (props.checkedLink !== undefined && !didWarnCheckedLink) {
13411
- process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;
13412
- didWarnCheckedLink = true;
13413
- }
13414
- if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {
13415
- process.env.NODE_ENV !== '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;
13416
- didWarnCheckedDefaultChecked = true;
13417
- }
13418
- if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
13419
- process.env.NODE_ENV !== '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;
13420
- didWarnValueDefaultValue = true;
13421
- }
13422
- }
13423
-
13424
- var defaultValue = props.defaultValue;
13425
- inst._wrapperState = {
13426
- initialChecked: props.checked != null ? props.checked : props.defaultChecked,
13427
- initialValue: props.value != null ? props.value : defaultValue,
13428
- listeners: null,
13429
- onChange: _handleChange.bind(inst)
13430
- };
13431
-
13432
- if (process.env.NODE_ENV !== 'production') {
13433
- inst._wrapperState.controlled = isControlled(props);
13434
- }
13435
- },
13436
-
13437
- updateWrapper: function (inst) {
13438
- var props = inst._currentElement.props;
13439
-
13440
- if (process.env.NODE_ENV !== 'production') {
13441
- var controlled = isControlled(props);
13442
- var owner = inst._currentElement._owner;
13443
-
13444
- if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {
13445
- process.env.NODE_ENV !== '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;
13446
- didWarnUncontrolledToControlled = true;
13447
- }
13448
- if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {
13449
- process.env.NODE_ENV !== '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;
13450
- didWarnControlledToUncontrolled = true;
13451
- }
13452
- }
13453
-
13454
- // TODO: Shouldn't this be getChecked(props)?
13455
- var checked = props.checked;
13456
- if (checked != null) {
13457
- DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);
13458
- }
13459
-
13460
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
13461
- var value = LinkedValueUtils.getValue(props);
13462
- if (value != null) {
13463
-
13464
- // Cast `value` to a string to ensure the value is set correctly. While
13465
- // browsers typically do this as necessary, jsdom doesn't.
13466
- var newValue = '' + value;
13467
-
13468
- // To avoid side effects (such as losing text selection), only set value if changed
13469
- if (newValue !== node.value) {
13470
- node.value = newValue;
13471
- }
13472
- } else {
13473
- if (props.value == null && props.defaultValue != null) {
13474
- // In Chrome, assigning defaultValue to certain input types triggers input validation.
13475
- // For number inputs, the display value loses trailing decimal points. For email inputs,
13476
- // Chrome raises "The specified value <x> is not a valid email address".
13477
- //
13478
- // Here we check to see if the defaultValue has actually changed, avoiding these problems
13479
- // when the user is inputting text
13480
- //
13481
- // https://github.com/facebook/react/issues/7253
13482
- if (node.defaultValue !== '' + props.defaultValue) {
13483
- node.defaultValue = '' + props.defaultValue;
13484
- }
13485
- }
13486
- if (props.checked == null && props.defaultChecked != null) {
13487
- node.defaultChecked = !!props.defaultChecked;
13488
- }
13489
- }
13490
- },
13491
-
13492
- postMountWrapper: function (inst) {
13493
- var props = inst._currentElement.props;
13494
-
13495
- // This is in postMount because we need access to the DOM node, which is not
13496
- // available until after the component has mounted.
13497
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
13498
-
13499
- // Detach value from defaultValue. We won't do anything if we're working on
13500
- // submit or reset inputs as those values & defaultValues are linked. They
13501
- // are not resetable nodes so this operation doesn't matter and actually
13502
- // removes browser-default values (eg "Submit Query") when no value is
13503
- // provided.
13504
-
13505
- switch (props.type) {
13506
- case 'submit':
13507
- case 'reset':
13508
- break;
13509
- case 'color':
13510
- case 'date':
13511
- case 'datetime':
13512
- case 'datetime-local':
13513
- case 'month':
13514
- case 'time':
13515
- case 'week':
13516
- // This fixes the no-show issue on iOS Safari and Android Chrome:
13517
- // https://github.com/facebook/react/issues/7233
13518
- node.value = '';
13519
- node.value = node.defaultValue;
13520
- break;
13521
- default:
13522
- node.value = node.value;
13523
- break;
13524
- }
13525
-
13526
- // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug
13527
- // this is needed to work around a chrome bug where setting defaultChecked
13528
- // will sometimes influence the value of checked (even after detachment).
13529
- // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416
13530
- // We need to temporarily unset name to avoid disrupting radio button groups.
13531
- var name = node.name;
13532
- if (name !== '') {
13533
- node.name = '';
13534
- }
13535
- node.defaultChecked = !node.defaultChecked;
13536
- node.defaultChecked = !node.defaultChecked;
13537
- if (name !== '') {
13538
- node.name = name;
13539
- }
13540
- }
13541
- };
13542
-
13543
- function _handleChange(event) {
13544
- var props = this._currentElement.props;
13545
-
13546
- var returnValue = LinkedValueUtils.executeOnChange(props, event);
13547
-
13548
- // Here we use asap to wait until all updates have propagated, which
13549
- // is important when using controlled components within layers:
13550
- // https://github.com/facebook/react/issues/1698
13551
- ReactUpdates.asap(forceUpdateIfMounted, this);
13552
-
13553
- var name = props.name;
13554
- if (props.type === 'radio' && name != null) {
13555
- var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);
13556
- var queryRoot = rootNode;
13557
-
13558
- while (queryRoot.parentNode) {
13559
- queryRoot = queryRoot.parentNode;
13560
- }
13561
-
13562
- // If `rootNode.form` was non-null, then we could try `form.elements`,
13563
- // but that sometimes behaves strangely in IE8. We could also try using
13564
- // `form.getElementsByName`, but that will only return direct children
13565
- // and won't include inputs that use the HTML5 `form=` attribute. Since
13566
- // the input might not even be in a form, let's just use the global
13567
- // `querySelectorAll` to ensure we don't miss anything.
13568
- var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]');
13569
-
13570
- for (var i = 0; i < group.length; i++) {
13571
- var otherNode = group[i];
13572
- if (otherNode === rootNode || otherNode.form !== rootNode.form) {
13573
- continue;
13574
- }
13575
- // This will throw if radio buttons rendered by different copies of React
13576
- // and the same name are rendered into the same form (same as #1939).
13577
- // That's probably okay; we don't support it just as we don't support
13578
- // mixing React radio buttons with non-React ones.
13579
- var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);
13580
- !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;
13581
- // If this is a controlled radio button group, forcing the input that
13582
- // was previously checked to update will cause it to be come re-checked
13583
- // as appropriate.
13584
- ReactUpdates.asap(forceUpdateIfMounted, otherInstance);
13585
- }
13586
- }
13587
-
13588
- return returnValue;
13589
- }
13590
-
13591
- module.exports = ReactDOMInput;
13592
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
13593
-
13594
- /***/ },
13595
- /* 111 */
13596
- /***/ function(module, exports, __webpack_require__) {
13597
-
13598
- /* WEBPACK VAR INJECTION */(function(process) {/**
13599
- * Copyright 2013-present, Facebook, Inc.
13600
- * All rights reserved.
13601
- *
13602
- * This source code is licensed under the BSD-style license found in the
13603
- * LICENSE file in the root directory of this source tree. An additional grant
13604
- * of patent rights can be found in the PATENTS file in the same directory.
13605
- *
13606
- */
13607
-
13608
- 'use strict';
13609
-
13610
- var _prodInvariant = __webpack_require__(36);
13611
-
13612
- var React = __webpack_require__(3);
13613
- var ReactPropTypesSecret = __webpack_require__(112);
13614
-
13615
- var invariant = __webpack_require__(9);
13616
- var warning = __webpack_require__(12);
13617
-
13618
- var hasReadOnlyValue = {
13619
- 'button': true,
13620
- 'checkbox': true,
13621
- 'image': true,
13622
- 'hidden': true,
13623
- 'radio': true,
13624
- 'reset': true,
13625
- 'submit': true
13626
- };
13627
-
13628
- function _assertSingleLink(inputProps) {
13629
- !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== '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;
13630
- }
13631
- function _assertValueLink(inputProps) {
13632
- _assertSingleLink(inputProps);
13633
- !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== '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;
13634
- }
13635
-
13636
- function _assertCheckedLink(inputProps) {
13637
- _assertSingleLink(inputProps);
13638
- !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== '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;
13639
- }
13640
-
13641
- var propTypes = {
13642
- value: function (props, propName, componentName) {
13643
- if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {
13644
- return null;
13645
- }
13646
- 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`.');
13647
- },
13648
- checked: function (props, propName, componentName) {
13649
- if (!props[propName] || props.onChange || props.readOnly || props.disabled) {
13650
- return null;
13651
- }
13652
- 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`.');
13653
- },
13654
- onChange: React.PropTypes.func
13655
- };
13656
-
13657
- var loggedTypeFailures = {};
13658
- function getDeclarationErrorAddendum(owner) {
13659
- if (owner) {
13660
- var name = owner.getName();
13661
- if (name) {
13662
- return ' Check the render method of `' + name + '`.';
13663
- }
13664
- }
13665
- return '';
13666
- }
13667
-
13668
- /**
13669
- * Provide a linked `value` attribute for controlled forms. You should not use
13670
- * this outside of the ReactDOM controlled form components.
13671
- */
13672
- var LinkedValueUtils = {
13673
- checkPropTypes: function (tagName, props, owner) {
13674
- for (var propName in propTypes) {
13675
- if (propTypes.hasOwnProperty(propName)) {
13676
- var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);
13677
- }
13678
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
13679
- // Only monitor this failure once because there tends to be a lot of the
13680
- // same error.
13681
- loggedTypeFailures[error.message] = true;
13682
-
13683
- var addendum = getDeclarationErrorAddendum(owner);
13684
- process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;
13685
- }
13686
- }
13687
- },
13688
-
13689
- /**
13690
- * @param {object} inputProps Props for form component
13691
- * @return {*} current value of the input either from value prop or link.
13692
- */
13693
- getValue: function (inputProps) {
13694
- if (inputProps.valueLink) {
13695
- _assertValueLink(inputProps);
13696
- return inputProps.valueLink.value;
13697
- }
13698
- return inputProps.value;
13699
- },
13700
-
13701
- /**
13702
- * @param {object} inputProps Props for form component
13703
- * @return {*} current checked status of the input either from checked prop
13704
- * or link.
13705
- */
13706
- getChecked: function (inputProps) {
13707
- if (inputProps.checkedLink) {
13708
- _assertCheckedLink(inputProps);
13709
- return inputProps.checkedLink.value;
13710
- }
13711
- return inputProps.checked;
13712
- },
13713
-
13714
- /**
13715
- * @param {object} inputProps Props for form component
13716
- * @param {SyntheticEvent} event change event to handle
13717
- */
13718
- executeOnChange: function (inputProps, event) {
13719
- if (inputProps.valueLink) {
13720
- _assertValueLink(inputProps);
13721
- return inputProps.valueLink.requestChange(event.target.value);
13722
- } else if (inputProps.checkedLink) {
13723
- _assertCheckedLink(inputProps);
13724
- return inputProps.checkedLink.requestChange(event.target.checked);
13725
- } else if (inputProps.onChange) {
13726
- return inputProps.onChange.call(undefined, event);
13727
- }
13728
- }
13729
- };
13730
-
13731
- module.exports = LinkedValueUtils;
13732
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
13733
-
13734
- /***/ },
13735
- /* 112 */
13736
- /***/ function(module, exports) {
13737
-
13738
- /**
13739
- * Copyright 2013-present, Facebook, Inc.
13740
- * All rights reserved.
13741
- *
13742
- * This source code is licensed under the BSD-style license found in the
13743
- * LICENSE file in the root directory of this source tree. An additional grant
13744
- * of patent rights can be found in the PATENTS file in the same directory.
13745
- *
13746
- *
13747
- */
13748
-
13749
- 'use strict';
13750
-
13751
- var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
13752
-
13753
- module.exports = ReactPropTypesSecret;
13754
-
13755
- /***/ },
13756
- /* 113 */
13757
- /***/ function(module, exports, __webpack_require__) {
13758
-
13759
- /* WEBPACK VAR INJECTION */(function(process) {/**
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
- */
13768
-
13769
- 'use strict';
13770
-
13771
- var _assign = __webpack_require__(51);
13772
-
13773
- var React = __webpack_require__(3);
13774
- var ReactDOMComponentTree = __webpack_require__(35);
13775
- var ReactDOMSelect = __webpack_require__(114);
13776
-
13777
- var warning = __webpack_require__(12);
13778
- var didWarnInvalidOptionChildren = false;
13779
-
13780
- function flattenChildren(children) {
13781
- var content = '';
13782
-
13783
- // Flatten children and warn if they aren't strings or numbers;
13784
- // invalid types are ignored.
13785
- React.Children.forEach(children, function (child) {
13786
- if (child == null) {
13787
- return;
13788
- }
13789
- if (typeof child === 'string' || typeof child === 'number') {
13790
- content += child;
13791
- } else if (!didWarnInvalidOptionChildren) {
13792
- didWarnInvalidOptionChildren = true;
13793
- process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;
13794
- }
13795
- });
13796
-
13797
- return content;
13798
- }
13799
-
13800
- /**
13801
- * Implements an <option> host component that warns when `selected` is set.
13802
- */
13803
- var ReactDOMOption = {
13804
- mountWrapper: function (inst, props, hostParent) {
13805
- // TODO (yungsters): Remove support for `selected` in <option>.
13806
- if (process.env.NODE_ENV !== 'production') {
13807
- process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;
13808
- }
13809
-
13810
- // Look up whether this option is 'selected'
13811
- var selectValue = null;
13812
- if (hostParent != null) {
13813
- var selectParent = hostParent;
13814
-
13815
- if (selectParent._tag === 'optgroup') {
13816
- selectParent = selectParent._hostParent;
13817
- }
13818
-
13819
- if (selectParent != null && selectParent._tag === 'select') {
13820
- selectValue = ReactDOMSelect.getSelectValueContext(selectParent);
13821
- }
13822
- }
13823
-
13824
- // If the value is null (e.g., no specified value or after initial mount)
13825
- // or missing (e.g., for <datalist>), we don't change props.selected
13826
- var selected = null;
13827
- if (selectValue != null) {
13828
- var value;
13829
- if (props.value != null) {
13830
- value = props.value + '';
13831
- } else {
13832
- value = flattenChildren(props.children);
13833
- }
13834
- selected = false;
13835
- if (Array.isArray(selectValue)) {
13836
- // multiple
13837
- for (var i = 0; i < selectValue.length; i++) {
13838
- if ('' + selectValue[i] === value) {
13839
- selected = true;
13840
- break;
13841
- }
13842
- }
13843
- } else {
13844
- selected = '' + selectValue === value;
13845
- }
13846
- }
13847
-
13848
- inst._wrapperState = { selected: selected };
13849
- },
13850
-
13851
- postMountWrapper: function (inst) {
13852
- // value="" should make a value attribute (#6219)
13853
- var props = inst._currentElement.props;
13854
- if (props.value != null) {
13855
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
13856
- node.setAttribute('value', props.value);
13857
- }
13858
- },
13859
-
13860
- getHostProps: function (inst, props) {
13861
- var hostProps = _assign({ selected: undefined, children: undefined }, props);
13862
-
13863
- // Read state only from initial mount because <select> updates value
13864
- // manually; we need the initial state only for server rendering
13865
- if (inst._wrapperState.selected != null) {
13866
- hostProps.selected = inst._wrapperState.selected;
13867
- }
13868
-
13869
- var content = flattenChildren(props.children);
13870
-
13871
- if (content) {
13872
- hostProps.children = content;
13873
- }
13874
-
13875
- return hostProps;
13876
- }
13877
-
13878
- };
13879
-
13880
- module.exports = ReactDOMOption;
13881
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
13882
-
13883
- /***/ },
13884
- /* 114 */
13885
- /***/ function(module, exports, __webpack_require__) {
13886
-
13887
- /* WEBPACK VAR INJECTION */(function(process) {/**
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
- */
13896
-
13897
- 'use strict';
13898
-
13899
- var _assign = __webpack_require__(51);
13900
-
13901
- var LinkedValueUtils = __webpack_require__(111);
13902
- var ReactDOMComponentTree = __webpack_require__(35);
13903
- var ReactUpdates = __webpack_require__(58);
13904
-
13905
- var warning = __webpack_require__(12);
13906
-
13907
- var didWarnValueLink = false;
13908
- var didWarnValueDefaultValue = false;
13909
-
13910
- function updateOptionsIfPendingUpdateAndMounted() {
13911
- if (this._rootNodeID && this._wrapperState.pendingUpdate) {
13912
- this._wrapperState.pendingUpdate = false;
13913
-
13914
- var props = this._currentElement.props;
13915
- var value = LinkedValueUtils.getValue(props);
13916
-
13917
- if (value != null) {
13918
- updateOptions(this, Boolean(props.multiple), value);
13919
- }
13920
- }
13921
- }
13922
-
13923
- function getDeclarationErrorAddendum(owner) {
13924
- if (owner) {
13925
- var name = owner.getName();
13926
- if (name) {
13927
- return ' Check the render method of `' + name + '`.';
13928
- }
13929
- }
13930
- return '';
13931
- }
13932
-
13933
- var valuePropNames = ['value', 'defaultValue'];
13934
-
13935
- /**
13936
- * Validation function for `value` and `defaultValue`.
13937
- * @private
13938
- */
13939
- function checkSelectPropTypes(inst, props) {
13940
- var owner = inst._currentElement._owner;
13941
- LinkedValueUtils.checkPropTypes('select', props, owner);
13942
-
13943
- if (props.valueLink !== undefined && !didWarnValueLink) {
13944
- process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;
13945
- didWarnValueLink = true;
13946
- }
13947
-
13948
- for (var i = 0; i < valuePropNames.length; i++) {
13949
- var propName = valuePropNames[i];
13950
- if (props[propName] == null) {
13951
- continue;
13952
- }
13953
- var isArray = Array.isArray(props[propName]);
13954
- if (props.multiple && !isArray) {
13955
- process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;
13956
- } else if (!props.multiple && isArray) {
13957
- process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;
13958
- }
13959
- }
13960
- }
13961
-
13962
- /**
13963
- * @param {ReactDOMComponent} inst
13964
- * @param {boolean} multiple
13965
- * @param {*} propValue A stringable (with `multiple`, a list of stringables).
13966
- * @private
13967
- */
13968
- function updateOptions(inst, multiple, propValue) {
13969
- var selectedValue, i;
13970
- var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;
13971
-
13972
- if (multiple) {
13973
- selectedValue = {};
13974
- for (i = 0; i < propValue.length; i++) {
13975
- selectedValue['' + propValue[i]] = true;
13976
- }
13977
- for (i = 0; i < options.length; i++) {
13978
- var selected = selectedValue.hasOwnProperty(options[i].value);
13979
- if (options[i].selected !== selected) {
13980
- options[i].selected = selected;
13981
- }
13982
- }
13983
- } else {
13984
- // Do not set `select.value` as exact behavior isn't consistent across all
13985
- // browsers for all cases.
13986
- selectedValue = '' + propValue;
13987
- for (i = 0; i < options.length; i++) {
13988
- if (options[i].value === selectedValue) {
13989
- options[i].selected = true;
13990
- return;
13991
- }
13992
- }
13993
- if (options.length) {
13994
- options[0].selected = true;
13995
- }
13996
- }
13997
- }
13998
-
13999
- /**
14000
- * Implements a <select> host component that allows optionally setting the
14001
- * props `value` and `defaultValue`. If `multiple` is false, the prop must be a
14002
- * stringable. If `multiple` is true, the prop must be an array of stringables.
14003
- *
14004
- * If `value` is not supplied (or null/undefined), user actions that change the
14005
- * selected option will trigger updates to the rendered options.
14006
- *
14007
- * If it is supplied (and not null/undefined), the rendered options will not
14008
- * update in response to user actions. Instead, the `value` prop must change in
14009
- * order for the rendered options to update.
14010
- *
14011
- * If `defaultValue` is provided, any options with the supplied values will be
14012
- * selected.
14013
- */
14014
- var ReactDOMSelect = {
14015
- getHostProps: function (inst, props) {
14016
- return _assign({}, props, {
14017
- onChange: inst._wrapperState.onChange,
14018
- value: undefined
14019
- });
14020
- },
14021
-
14022
- mountWrapper: function (inst, props) {
14023
- if (process.env.NODE_ENV !== 'production') {
14024
- checkSelectPropTypes(inst, props);
14025
- }
14026
-
14027
- var value = LinkedValueUtils.getValue(props);
14028
- inst._wrapperState = {
14029
- pendingUpdate: false,
14030
- initialValue: value != null ? value : props.defaultValue,
14031
- listeners: null,
14032
- onChange: _handleChange.bind(inst),
14033
- wasMultiple: Boolean(props.multiple)
14034
- };
14035
-
14036
- if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
14037
- process.env.NODE_ENV !== '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;
14038
- didWarnValueDefaultValue = true;
14039
- }
14040
- },
14041
-
14042
- getSelectValueContext: function (inst) {
14043
- // ReactDOMOption looks at this initial value so the initial generated
14044
- // markup has correct `selected` attributes
14045
- return inst._wrapperState.initialValue;
14046
- },
14047
-
14048
- postUpdateWrapper: function (inst) {
14049
- var props = inst._currentElement.props;
14050
-
14051
- // After the initial mount, we control selected-ness manually so don't pass
14052
- // this value down
14053
- inst._wrapperState.initialValue = undefined;
14054
-
14055
- var wasMultiple = inst._wrapperState.wasMultiple;
14056
- inst._wrapperState.wasMultiple = Boolean(props.multiple);
14057
-
14058
- var value = LinkedValueUtils.getValue(props);
14059
- if (value != null) {
14060
- inst._wrapperState.pendingUpdate = false;
14061
- updateOptions(inst, Boolean(props.multiple), value);
14062
- } else if (wasMultiple !== Boolean(props.multiple)) {
14063
- // For simplicity, reapply `defaultValue` if `multiple` is toggled.
14064
- if (props.defaultValue != null) {
14065
- updateOptions(inst, Boolean(props.multiple), props.defaultValue);
14066
- } else {
14067
- // Revert the select back to its default unselected state.
14068
- updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');
14069
- }
14070
- }
14071
- }
14072
- };
14073
-
14074
- function _handleChange(event) {
14075
- var props = this._currentElement.props;
14076
- var returnValue = LinkedValueUtils.executeOnChange(props, event);
14077
-
14078
- if (this._rootNodeID) {
14079
- this._wrapperState.pendingUpdate = true;
14080
- }
14081
- ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);
14082
- return returnValue;
14083
- }
14084
-
14085
- module.exports = ReactDOMSelect;
14086
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14087
-
14088
- /***/ },
14089
- /* 115 */
14090
- /***/ function(module, exports, __webpack_require__) {
14091
-
14092
- /* WEBPACK VAR INJECTION */(function(process) {/**
14093
- * Copyright 2013-present, Facebook, Inc.
14094
- * All rights reserved.
14095
- *
14096
- * This source code is licensed under the BSD-style license found in the
14097
- * LICENSE file in the root directory of this source tree. An additional grant
14098
- * of patent rights can be found in the PATENTS file in the same directory.
14099
- *
14100
- */
14101
-
14102
- 'use strict';
14103
-
14104
- var _prodInvariant = __webpack_require__(36),
14105
- _assign = __webpack_require__(51);
14106
-
14107
- var LinkedValueUtils = __webpack_require__(111);
14108
- var ReactDOMComponentTree = __webpack_require__(35);
14109
- var ReactUpdates = __webpack_require__(58);
14110
-
14111
- var invariant = __webpack_require__(9);
14112
- var warning = __webpack_require__(12);
14113
-
14114
- var didWarnValueLink = false;
14115
- var didWarnValDefaultVal = false;
14116
-
14117
- function forceUpdateIfMounted() {
14118
- if (this._rootNodeID) {
14119
- // DOM component is still mounted; update
14120
- ReactDOMTextarea.updateWrapper(this);
14121
- }
14122
- }
14123
-
14124
- /**
14125
- * Implements a <textarea> host component that allows setting `value`, and
14126
- * `defaultValue`. This differs from the traditional DOM API because value is
14127
- * usually set as PCDATA children.
14128
- *
14129
- * If `value` is not supplied (or null/undefined), user actions that affect the
14130
- * value will trigger updates to the element.
14131
- *
14132
- * If `value` is supplied (and not null/undefined), the rendered element will
14133
- * not trigger updates to the element. Instead, the `value` prop must change in
14134
- * order for the rendered element to be updated.
14135
- *
14136
- * The rendered element will be initialized with an empty value, the prop
14137
- * `defaultValue` if specified, or the children content (deprecated).
14138
- */
14139
- var ReactDOMTextarea = {
14140
- getHostProps: function (inst, props) {
14141
- !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;
14142
-
14143
- // Always set children to the same thing. In IE9, the selection range will
14144
- // get reset if `textContent` is mutated. We could add a check in setTextContent
14145
- // to only set the value if/when the value differs from the node value (which would
14146
- // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.
14147
- // The value can be a boolean or object so that's why it's forced to be a string.
14148
- var hostProps = _assign({}, props, {
14149
- value: undefined,
14150
- defaultValue: undefined,
14151
- children: '' + inst._wrapperState.initialValue,
14152
- onChange: inst._wrapperState.onChange
14153
- });
14154
-
14155
- return hostProps;
14156
- },
14157
-
14158
- mountWrapper: function (inst, props) {
14159
- if (process.env.NODE_ENV !== 'production') {
14160
- LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);
14161
- if (props.valueLink !== undefined && !didWarnValueLink) {
14162
- process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;
14163
- didWarnValueLink = true;
14164
- }
14165
- if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {
14166
- process.env.NODE_ENV !== '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;
14167
- didWarnValDefaultVal = true;
14168
- }
14169
- }
14170
-
14171
- var value = LinkedValueUtils.getValue(props);
14172
- var initialValue = value;
14173
-
14174
- // Only bother fetching default value if we're going to use it
14175
- if (value == null) {
14176
- var defaultValue = props.defaultValue;
14177
- // TODO (yungsters): Remove support for children content in <textarea>.
14178
- var children = props.children;
14179
- if (children != null) {
14180
- if (process.env.NODE_ENV !== 'production') {
14181
- process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;
14182
- }
14183
- !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;
14184
- if (Array.isArray(children)) {
14185
- !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;
14186
- children = children[0];
14187
- }
14188
-
14189
- defaultValue = '' + children;
14190
- }
14191
- if (defaultValue == null) {
14192
- defaultValue = '';
14193
- }
14194
- initialValue = defaultValue;
14195
- }
14196
-
14197
- inst._wrapperState = {
14198
- initialValue: '' + initialValue,
14199
- listeners: null,
14200
- onChange: _handleChange.bind(inst)
14201
- };
14202
- },
14203
-
14204
- updateWrapper: function (inst) {
14205
- var props = inst._currentElement.props;
14206
-
14207
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
14208
- var value = LinkedValueUtils.getValue(props);
14209
- if (value != null) {
14210
- // Cast `value` to a string to ensure the value is set correctly. While
14211
- // browsers typically do this as necessary, jsdom doesn't.
14212
- var newValue = '' + value;
14213
-
14214
- // To avoid side effects (such as losing text selection), only set value if changed
14215
- if (newValue !== node.value) {
14216
- node.value = newValue;
14217
- }
14218
- if (props.defaultValue == null) {
14219
- node.defaultValue = newValue;
14220
- }
14221
- }
14222
- if (props.defaultValue != null) {
14223
- node.defaultValue = props.defaultValue;
14224
- }
14225
- },
14226
-
14227
- postMountWrapper: function (inst) {
14228
- // This is in postMount because we need access to the DOM node, which is not
14229
- // available until after the component has mounted.
14230
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
14231
- var textContent = node.textContent;
14232
-
14233
- // Only set node.value if textContent is equal to the expected
14234
- // initial value. In IE10/IE11 there is a bug where the placeholder attribute
14235
- // will populate textContent as well.
14236
- // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/
14237
- if (textContent === inst._wrapperState.initialValue) {
14238
- node.value = textContent;
14239
- }
14240
- }
14241
- };
14242
-
14243
- function _handleChange(event) {
14244
- var props = this._currentElement.props;
14245
- var returnValue = LinkedValueUtils.executeOnChange(props, event);
14246
- ReactUpdates.asap(forceUpdateIfMounted, this);
14247
- return returnValue;
14248
- }
14249
-
14250
- module.exports = ReactDOMTextarea;
14251
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14252
-
14253
- /***/ },
14254
- /* 116 */
14255
- /***/ function(module, exports, __webpack_require__) {
14256
-
14257
- /* WEBPACK VAR INJECTION */(function(process) {/**
14258
- * Copyright 2013-present, Facebook, Inc.
14259
- * All rights reserved.
14260
- *
14261
- * This source code is licensed under the BSD-style license found in the
14262
- * LICENSE file in the root directory of this source tree. An additional grant
14263
- * of patent rights can be found in the PATENTS file in the same directory.
14264
- *
14265
- */
14266
-
14267
- 'use strict';
14268
-
14269
- var _prodInvariant = __webpack_require__(36);
14270
-
14271
- var ReactComponentEnvironment = __webpack_require__(117);
14272
- var ReactInstanceMap = __webpack_require__(118);
14273
- var ReactInstrumentation = __webpack_require__(64);
14274
-
14275
- var ReactCurrentOwner = __webpack_require__(11);
14276
- var ReactReconciler = __webpack_require__(61);
14277
- var ReactChildReconciler = __webpack_require__(119);
14278
-
14279
- var emptyFunction = __webpack_require__(13);
14280
- var flattenChildren = __webpack_require__(134);
14281
- var invariant = __webpack_require__(9);
14282
-
14283
- /**
14284
- * Make an update for markup to be rendered and inserted at a supplied index.
14285
- *
14286
- * @param {string} markup Markup that renders into an element.
14287
- * @param {number} toIndex Destination index.
14288
- * @private
14289
- */
14290
- function makeInsertMarkup(markup, afterNode, toIndex) {
14291
- // NOTE: Null values reduce hidden classes.
14292
- return {
14293
- type: 'INSERT_MARKUP',
14294
- content: markup,
14295
- fromIndex: null,
14296
- fromNode: null,
14297
- toIndex: toIndex,
14298
- afterNode: afterNode
14299
- };
14300
- }
14301
-
14302
- /**
14303
- * Make an update for moving an existing element to another index.
14304
- *
14305
- * @param {number} fromIndex Source index of the existing element.
14306
- * @param {number} toIndex Destination index of the element.
14307
- * @private
14308
- */
14309
- function makeMove(child, afterNode, toIndex) {
14310
- // NOTE: Null values reduce hidden classes.
14311
- return {
14312
- type: 'MOVE_EXISTING',
14313
- content: null,
14314
- fromIndex: child._mountIndex,
14315
- fromNode: ReactReconciler.getHostNode(child),
14316
- toIndex: toIndex,
14317
- afterNode: afterNode
14318
- };
14319
- }
14320
-
14321
- /**
14322
- * Make an update for removing an element at an index.
14323
- *
14324
- * @param {number} fromIndex Index of the element to remove.
14325
- * @private
14326
- */
14327
- function makeRemove(child, node) {
14328
- // NOTE: Null values reduce hidden classes.
14329
- return {
14330
- type: 'REMOVE_NODE',
14331
- content: null,
14332
- fromIndex: child._mountIndex,
14333
- fromNode: node,
14334
- toIndex: null,
14335
- afterNode: null
14336
- };
14337
- }
14338
-
14339
- /**
14340
- * Make an update for setting the markup of a node.
14341
- *
14342
- * @param {string} markup Markup that renders into an element.
14343
- * @private
14344
- */
14345
- function makeSetMarkup(markup) {
14346
- // NOTE: Null values reduce hidden classes.
14347
- return {
14348
- type: 'SET_MARKUP',
14349
- content: markup,
14350
- fromIndex: null,
14351
- fromNode: null,
14352
- toIndex: null,
14353
- afterNode: null
14354
- };
14355
- }
14356
-
14357
- /**
14358
- * Make an update for setting the text content.
14359
- *
14360
- * @param {string} textContent Text content to set.
14361
- * @private
14362
- */
14363
- function makeTextContent(textContent) {
14364
- // NOTE: Null values reduce hidden classes.
14365
- return {
14366
- type: 'TEXT_CONTENT',
14367
- content: textContent,
14368
- fromIndex: null,
14369
- fromNode: null,
14370
- toIndex: null,
14371
- afterNode: null
14372
- };
14373
- }
14374
-
14375
- /**
14376
- * Push an update, if any, onto the queue. Creates a new queue if none is
14377
- * passed and always returns the queue. Mutative.
14378
- */
14379
- function enqueue(queue, update) {
14380
- if (update) {
14381
- queue = queue || [];
14382
- queue.push(update);
14383
- }
14384
- return queue;
14385
- }
14386
-
14387
- /**
14388
- * Processes any enqueued updates.
14389
- *
14390
- * @private
14391
- */
14392
- function processQueue(inst, updateQueue) {
14393
- ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);
14394
- }
14395
-
14396
- var setChildrenForInstrumentation = emptyFunction;
14397
- if (process.env.NODE_ENV !== 'production') {
14398
- var getDebugID = function (inst) {
14399
- if (!inst._debugID) {
14400
- // Check for ART-like instances. TODO: This is silly/gross.
14401
- var internal;
14402
- if (internal = ReactInstanceMap.get(inst)) {
14403
- inst = internal;
14404
- }
14405
- }
14406
- return inst._debugID;
14407
- };
14408
- setChildrenForInstrumentation = function (children) {
14409
- var debugID = getDebugID(this);
14410
- // TODO: React Native empty components are also multichild.
14411
- // This means they still get into this method but don't have _debugID.
14412
- if (debugID !== 0) {
14413
- ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {
14414
- return children[key]._debugID;
14415
- }) : []);
14416
- }
14417
- };
14418
- }
14419
-
14420
- /**
14421
- * ReactMultiChild are capable of reconciling multiple children.
14422
- *
14423
- * @class ReactMultiChild
14424
- * @internal
14425
- */
14426
- var ReactMultiChild = {
14427
-
14428
- /**
14429
- * Provides common functionality for components that must reconcile multiple
14430
- * children. This is used by `ReactDOMComponent` to mount, update, and
14431
- * unmount child components.
14432
- *
14433
- * @lends {ReactMultiChild.prototype}
14434
- */
14435
- Mixin: {
14436
-
14437
- _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {
14438
- if (process.env.NODE_ENV !== 'production') {
14439
- var selfDebugID = getDebugID(this);
14440
- if (this._currentElement) {
14441
- try {
14442
- ReactCurrentOwner.current = this._currentElement._owner;
14443
- return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);
14444
- } finally {
14445
- ReactCurrentOwner.current = null;
14446
- }
14447
- }
14448
- }
14449
- return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);
14450
- },
14451
-
14452
- _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {
14453
- var nextChildren;
14454
- var selfDebugID = 0;
14455
- if (process.env.NODE_ENV !== 'production') {
14456
- selfDebugID = getDebugID(this);
14457
- if (this._currentElement) {
14458
- try {
14459
- ReactCurrentOwner.current = this._currentElement._owner;
14460
- nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);
14461
- } finally {
14462
- ReactCurrentOwner.current = null;
14463
- }
14464
- ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);
14465
- return nextChildren;
14466
- }
14467
- }
14468
- nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);
14469
- ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);
14470
- return nextChildren;
14471
- },
14472
-
14473
- /**
14474
- * Generates a "mount image" for each of the supplied children. In the case
14475
- * of `ReactDOMComponent`, a mount image is a string of markup.
14476
- *
14477
- * @param {?object} nestedChildren Nested child maps.
14478
- * @return {array} An array of mounted representations.
14479
- * @internal
14480
- */
14481
- mountChildren: function (nestedChildren, transaction, context) {
14482
- var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);
14483
- this._renderedChildren = children;
14484
-
14485
- var mountImages = [];
14486
- var index = 0;
14487
- for (var name in children) {
14488
- if (children.hasOwnProperty(name)) {
14489
- var child = children[name];
14490
- var selfDebugID = 0;
14491
- if (process.env.NODE_ENV !== 'production') {
14492
- selfDebugID = getDebugID(this);
14493
- }
14494
- var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);
14495
- child._mountIndex = index++;
14496
- mountImages.push(mountImage);
14497
- }
14498
- }
14499
-
14500
- if (process.env.NODE_ENV !== 'production') {
14501
- setChildrenForInstrumentation.call(this, children);
14502
- }
14503
-
14504
- return mountImages;
14505
- },
14506
-
14507
- /**
14508
- * Replaces any rendered children with a text content string.
14509
- *
14510
- * @param {string} nextContent String of content.
14511
- * @internal
14512
- */
14513
- updateTextContent: function (nextContent) {
14514
- var prevChildren = this._renderedChildren;
14515
- // Remove any rendered children.
14516
- ReactChildReconciler.unmountChildren(prevChildren, false);
14517
- for (var name in prevChildren) {
14518
- if (prevChildren.hasOwnProperty(name)) {
14519
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;
14520
- }
14521
- }
14522
- // Set new text content.
14523
- var updates = [makeTextContent(nextContent)];
14524
- processQueue(this, updates);
14525
- },
14526
-
14527
- /**
14528
- * Replaces any rendered children with a markup string.
14529
- *
14530
- * @param {string} nextMarkup String of markup.
14531
- * @internal
14532
- */
14533
- updateMarkup: function (nextMarkup) {
14534
- var prevChildren = this._renderedChildren;
14535
- // Remove any rendered children.
14536
- ReactChildReconciler.unmountChildren(prevChildren, false);
14537
- for (var name in prevChildren) {
14538
- if (prevChildren.hasOwnProperty(name)) {
14539
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;
14540
- }
14541
- }
14542
- var updates = [makeSetMarkup(nextMarkup)];
14543
- processQueue(this, updates);
14544
- },
14545
-
14546
- /**
14547
- * Updates the rendered children with new children.
14548
- *
14549
- * @param {?object} nextNestedChildrenElements Nested child element maps.
14550
- * @param {ReactReconcileTransaction} transaction
14551
- * @internal
14552
- */
14553
- updateChildren: function (nextNestedChildrenElements, transaction, context) {
14554
- // Hook used by React ART
14555
- this._updateChildren(nextNestedChildrenElements, transaction, context);
14556
- },
14557
-
14558
- /**
14559
- * @param {?object} nextNestedChildrenElements Nested child element maps.
14560
- * @param {ReactReconcileTransaction} transaction
14561
- * @final
14562
- * @protected
14563
- */
14564
- _updateChildren: function (nextNestedChildrenElements, transaction, context) {
14565
- var prevChildren = this._renderedChildren;
14566
- var removedNodes = {};
14567
- var mountImages = [];
14568
- var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);
14569
- if (!nextChildren && !prevChildren) {
14570
- return;
14571
- }
14572
- var updates = null;
14573
- var name;
14574
- // `nextIndex` will increment for each child in `nextChildren`, but
14575
- // `lastIndex` will be the last index visited in `prevChildren`.
14576
- var nextIndex = 0;
14577
- var lastIndex = 0;
14578
- // `nextMountIndex` will increment for each newly mounted child.
14579
- var nextMountIndex = 0;
14580
- var lastPlacedNode = null;
14581
- for (name in nextChildren) {
14582
- if (!nextChildren.hasOwnProperty(name)) {
14583
- continue;
14584
- }
14585
- var prevChild = prevChildren && prevChildren[name];
14586
- var nextChild = nextChildren[name];
14587
- if (prevChild === nextChild) {
14588
- updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));
14589
- lastIndex = Math.max(prevChild._mountIndex, lastIndex);
14590
- prevChild._mountIndex = nextIndex;
14591
- } else {
14592
- if (prevChild) {
14593
- // Update `lastIndex` before `_mountIndex` gets unset by unmounting.
14594
- lastIndex = Math.max(prevChild._mountIndex, lastIndex);
14595
- // The `removedNodes` loop below will actually remove the child.
14596
- }
14597
- // The child must be instantiated before it's mounted.
14598
- updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));
14599
- nextMountIndex++;
14600
- }
14601
- nextIndex++;
14602
- lastPlacedNode = ReactReconciler.getHostNode(nextChild);
14603
- }
14604
- // Remove children that are no longer present.
14605
- for (name in removedNodes) {
14606
- if (removedNodes.hasOwnProperty(name)) {
14607
- updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));
14608
- }
14609
- }
14610
- if (updates) {
14611
- processQueue(this, updates);
14612
- }
14613
- this._renderedChildren = nextChildren;
14614
-
14615
- if (process.env.NODE_ENV !== 'production') {
14616
- setChildrenForInstrumentation.call(this, nextChildren);
14617
- }
14618
- },
14619
-
14620
- /**
14621
- * Unmounts all rendered children. This should be used to clean up children
14622
- * when this component is unmounted. It does not actually perform any
14623
- * backend operations.
14624
- *
14625
- * @internal
14626
- */
14627
- unmountChildren: function (safely) {
14628
- var renderedChildren = this._renderedChildren;
14629
- ReactChildReconciler.unmountChildren(renderedChildren, safely);
14630
- this._renderedChildren = null;
14631
- },
14632
-
14633
- /**
14634
- * Moves a child component to the supplied index.
14635
- *
14636
- * @param {ReactComponent} child Component to move.
14637
- * @param {number} toIndex Destination index of the element.
14638
- * @param {number} lastIndex Last index visited of the siblings of `child`.
14639
- * @protected
14640
- */
14641
- moveChild: function (child, afterNode, toIndex, lastIndex) {
14642
- // If the index of `child` is less than `lastIndex`, then it needs to
14643
- // be moved. Otherwise, we do not need to move it because a child will be
14644
- // inserted or moved before `child`.
14645
- if (child._mountIndex < lastIndex) {
14646
- return makeMove(child, afterNode, toIndex);
14647
- }
14648
- },
14649
-
14650
- /**
14651
- * Creates a child component.
14652
- *
14653
- * @param {ReactComponent} child Component to create.
14654
- * @param {string} mountImage Markup to insert.
14655
- * @protected
14656
- */
14657
- createChild: function (child, afterNode, mountImage) {
14658
- return makeInsertMarkup(mountImage, afterNode, child._mountIndex);
14659
- },
14660
-
14661
- /**
14662
- * Removes a child component.
14663
- *
14664
- * @param {ReactComponent} child Child to remove.
14665
- * @protected
14666
- */
14667
- removeChild: function (child, node) {
14668
- return makeRemove(child, node);
14669
- },
14670
-
14671
- /**
14672
- * Mounts a child with the supplied name.
14673
- *
14674
- * NOTE: This is part of `updateChildren` and is here for readability.
14675
- *
14676
- * @param {ReactComponent} child Component to mount.
14677
- * @param {string} name Name of the child.
14678
- * @param {number} index Index at which to insert the child.
14679
- * @param {ReactReconcileTransaction} transaction
14680
- * @private
14681
- */
14682
- _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {
14683
- child._mountIndex = index;
14684
- return this.createChild(child, afterNode, mountImage);
14685
- },
14686
-
14687
- /**
14688
- * Unmounts a rendered child.
14689
- *
14690
- * NOTE: This is part of `updateChildren` and is here for readability.
14691
- *
14692
- * @param {ReactComponent} child Component to unmount.
14693
- * @private
14694
- */
14695
- _unmountChild: function (child, node) {
14696
- var update = this.removeChild(child, node);
14697
- child._mountIndex = null;
14698
- return update;
14699
- }
14700
-
14701
- }
14702
-
14703
- };
14704
-
14705
- module.exports = ReactMultiChild;
14706
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14707
-
14708
- /***/ },
14709
- /* 117 */
14710
- /***/ function(module, exports, __webpack_require__) {
14711
-
14712
- /* WEBPACK VAR INJECTION */(function(process) {/**
14713
- * Copyright 2014-present, Facebook, Inc.
14714
- * All rights reserved.
14715
- *
14716
- * This source code is licensed under the BSD-style license found in the
14717
- * LICENSE file in the root directory of this source tree. An additional grant
14718
- * of patent rights can be found in the PATENTS file in the same directory.
14719
- *
14720
- *
14721
- */
14722
-
14723
- 'use strict';
14724
-
14725
- var _prodInvariant = __webpack_require__(36);
14726
-
14727
- var invariant = __webpack_require__(9);
14728
-
14729
- var injected = false;
14730
-
14731
- var ReactComponentEnvironment = {
14732
-
14733
- /**
14734
- * Optionally injectable hook for swapping out mount images in the middle of
14735
- * the tree.
14736
- */
14737
- replaceNodeWithMarkup: null,
14738
-
14739
- /**
14740
- * Optionally injectable hook for processing a queue of child updates. Will
14741
- * later move into MultiChildComponents.
14742
- */
14743
- processChildrenUpdates: null,
14744
-
14745
- injection: {
14746
- injectEnvironment: function (environment) {
14747
- !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;
14748
- ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;
14749
- ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;
14750
- injected = true;
14751
- }
14752
- }
14753
-
14754
- };
14755
-
14756
- module.exports = ReactComponentEnvironment;
14757
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14758
-
14759
- /***/ },
14760
- /* 118 */
14761
- /***/ function(module, exports) {
14762
-
14763
- /**
14764
- * Copyright 2013-present, Facebook, Inc.
14765
- * All rights reserved.
14766
- *
14767
- * This source code is licensed under the BSD-style license found in the
14768
- * LICENSE file in the root directory of this source tree. An additional grant
14769
- * of patent rights can be found in the PATENTS file in the same directory.
14770
- *
14771
- */
14772
-
14773
- 'use strict';
14774
-
14775
- /**
14776
- * `ReactInstanceMap` maintains a mapping from a public facing stateful
14777
- * instance (key) and the internal representation (value). This allows public
14778
- * methods to accept the user facing instance as an argument and map them back
14779
- * to internal methods.
14780
- */
14781
-
14782
- // TODO: Replace this with ES6: var ReactInstanceMap = new Map();
14783
-
14784
- var ReactInstanceMap = {
14785
-
14786
- /**
14787
- * This API should be called `delete` but we'd have to make sure to always
14788
- * transform these to strings for IE support. When this transform is fully
14789
- * supported we can rename it.
14790
- */
14791
- remove: function (key) {
14792
- key._reactInternalInstance = undefined;
14793
- },
14794
-
14795
- get: function (key) {
14796
- return key._reactInternalInstance;
14797
- },
14798
-
14799
- has: function (key) {
14800
- return key._reactInternalInstance !== undefined;
14801
- },
14802
-
14803
- set: function (key, value) {
14804
- key._reactInternalInstance = value;
14805
- }
14806
-
14807
- };
14808
-
14809
- module.exports = ReactInstanceMap;
14810
-
14811
- /***/ },
14812
- /* 119 */
14813
- /***/ function(module, exports, __webpack_require__) {
14814
-
14815
- /* WEBPACK VAR INJECTION */(function(process) {/**
14816
- * Copyright 2014-present, Facebook, Inc.
14817
- * All rights reserved.
14818
- *
14819
- * This source code is licensed under the BSD-style license found in the
14820
- * LICENSE file in the root directory of this source tree. An additional grant
14821
- * of patent rights can be found in the PATENTS file in the same directory.
14822
- *
14823
- */
14824
-
14825
- 'use strict';
14826
-
14827
- var ReactReconciler = __webpack_require__(61);
14828
-
14829
- var instantiateReactComponent = __webpack_require__(120);
14830
- var KeyEscapeUtils = __webpack_require__(130);
14831
- var shouldUpdateReactComponent = __webpack_require__(126);
14832
- var traverseAllChildren = __webpack_require__(131);
14833
- var warning = __webpack_require__(12);
14834
-
14835
- var ReactComponentTreeHook;
14836
-
14837
- if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
14838
- // Temporary hack.
14839
- // Inline requires don't work well with Jest:
14840
- // https://github.com/facebook/react/issues/7240
14841
- // Remove the inline requires when we don't need them anymore:
14842
- // https://github.com/facebook/react/pull/7178
14843
- ReactComponentTreeHook = __webpack_require__(27);
14844
- }
14845
-
14846
- function instantiateChild(childInstances, child, name, selfDebugID) {
14847
- // We found a component instance.
14848
- var keyUnique = childInstances[name] === undefined;
14849
- if (process.env.NODE_ENV !== 'production') {
14850
- if (!ReactComponentTreeHook) {
14851
- ReactComponentTreeHook = __webpack_require__(27);
14852
- }
14853
- if (!keyUnique) {
14854
- process.env.NODE_ENV !== '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;
14855
- }
14856
- }
14857
- if (child != null && keyUnique) {
14858
- childInstances[name] = instantiateReactComponent(child, true);
14859
- }
14860
- }
14861
-
14862
- /**
14863
- * ReactChildReconciler provides helpers for initializing or updating a set of
14864
- * children. Its output is suitable for passing it onto ReactMultiChild which
14865
- * does diffed reordering and insertion.
14866
- */
14867
- var ReactChildReconciler = {
14868
- /**
14869
- * Generates a "mount image" for each of the supplied children. In the case
14870
- * of `ReactDOMComponent`, a mount image is a string of markup.
14871
- *
14872
- * @param {?object} nestedChildNodes Nested child maps.
14873
- * @return {?object} A set of child instances.
14874
- * @internal
14875
- */
14876
- instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots
14877
- ) {
14878
- if (nestedChildNodes == null) {
14879
- return null;
14880
- }
14881
- var childInstances = {};
14882
-
14883
- if (process.env.NODE_ENV !== 'production') {
14884
- traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {
14885
- return instantiateChild(childInsts, child, name, selfDebugID);
14886
- }, childInstances);
14887
- } else {
14888
- traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);
14889
- }
14890
- return childInstances;
14891
- },
14892
-
14893
- /**
14894
- * Updates the rendered children and returns a new set of children.
14895
- *
14896
- * @param {?object} prevChildren Previously initialized set of children.
14897
- * @param {?object} nextChildren Flat child element maps.
14898
- * @param {ReactReconcileTransaction} transaction
14899
- * @param {object} context
14900
- * @return {?object} A new set of child instances.
14901
- * @internal
14902
- */
14903
- updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots
14904
- ) {
14905
- // We currently don't have a way to track moves here but if we use iterators
14906
- // instead of for..in we can zip the iterators and check if an item has
14907
- // moved.
14908
- // TODO: If nothing has changed, return the prevChildren object so that we
14909
- // can quickly bailout if nothing has changed.
14910
- if (!nextChildren && !prevChildren) {
14911
- return;
14912
- }
14913
- var name;
14914
- var prevChild;
14915
- for (name in nextChildren) {
14916
- if (!nextChildren.hasOwnProperty(name)) {
14917
- continue;
14918
- }
14919
- prevChild = prevChildren && prevChildren[name];
14920
- var prevElement = prevChild && prevChild._currentElement;
14921
- var nextElement = nextChildren[name];
14922
- if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {
14923
- ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);
14924
- nextChildren[name] = prevChild;
14925
- } else {
14926
- if (prevChild) {
14927
- removedNodes[name] = ReactReconciler.getHostNode(prevChild);
14928
- ReactReconciler.unmountComponent(prevChild, false);
14929
- }
14930
- // The child must be instantiated before it's mounted.
14931
- var nextChildInstance = instantiateReactComponent(nextElement, true);
14932
- nextChildren[name] = nextChildInstance;
14933
- // Creating mount image now ensures refs are resolved in right order
14934
- // (see https://github.com/facebook/react/pull/7101 for explanation).
14935
- var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);
14936
- mountImages.push(nextChildMountImage);
14937
- }
14938
- }
14939
- // Unmount children that are no longer present.
14940
- for (name in prevChildren) {
14941
- if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {
14942
- prevChild = prevChildren[name];
14943
- removedNodes[name] = ReactReconciler.getHostNode(prevChild);
14944
- ReactReconciler.unmountComponent(prevChild, false);
14945
- }
14946
- }
14947
- },
14948
-
14949
- /**
14950
- * Unmounts all rendered children. This should be used to clean up children
14951
- * when this component is unmounted.
14952
- *
14953
- * @param {?object} renderedChildren Previously initialized set of children.
14954
- * @internal
14955
- */
14956
- unmountChildren: function (renderedChildren, safely) {
14957
- for (var name in renderedChildren) {
14958
- if (renderedChildren.hasOwnProperty(name)) {
14959
- var renderedChild = renderedChildren[name];
14960
- ReactReconciler.unmountComponent(renderedChild, safely);
14961
- }
14962
- }
14963
- }
14964
-
14965
- };
14966
-
14967
- module.exports = ReactChildReconciler;
14968
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
14969
-
14970
- /***/ },
14971
- /* 120 */
14972
- /***/ function(module, exports, __webpack_require__) {
14973
-
14974
- /* WEBPACK VAR INJECTION */(function(process) {/**
14975
- * Copyright 2013-present, Facebook, Inc.
14976
- * All rights reserved.
14977
- *
14978
- * This source code is licensed under the BSD-style license found in the
14979
- * LICENSE file in the root directory of this source tree. An additional grant
14980
- * of patent rights can be found in the PATENTS file in the same directory.
14981
- *
14982
- */
14983
-
14984
- 'use strict';
14985
-
14986
- var _prodInvariant = __webpack_require__(36),
14987
- _assign = __webpack_require__(51);
14988
-
14989
- var ReactCompositeComponent = __webpack_require__(121);
14990
- var ReactEmptyComponent = __webpack_require__(127);
14991
- var ReactHostComponent = __webpack_require__(128);
14992
-
14993
- var getNextDebugID = __webpack_require__(129);
14994
- var invariant = __webpack_require__(9);
14995
- var warning = __webpack_require__(12);
14996
-
14997
- // To avoid a cyclic dependency, we create the final class in this module
14998
- var ReactCompositeComponentWrapper = function (element) {
14999
- this.construct(element);
15000
- };
15001
- _assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {
15002
- _instantiateReactComponent: instantiateReactComponent
15003
- });
15004
-
15005
- function getDeclarationErrorAddendum(owner) {
15006
- if (owner) {
15007
- var name = owner.getName();
15008
- if (name) {
15009
- return ' Check the render method of `' + name + '`.';
15010
- }
15011
- }
15012
- return '';
15013
- }
15014
-
15015
- /**
15016
- * Check if the type reference is a known internal type. I.e. not a user
15017
- * provided composite type.
15018
- *
15019
- * @param {function} type
15020
- * @return {boolean} Returns true if this is a valid internal type.
15021
- */
15022
- function isInternalComponentType(type) {
15023
- return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';
15024
- }
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
- var type = element.type;
15042
- if (typeof type !== 'function' && typeof type !== 'string') {
15043
- var info = '';
15044
- if (process.env.NODE_ENV !== 'production') {
15045
- if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
15046
- info += ' You likely forgot to export your component from the file ' + 'it\'s defined in.';
15047
- }
15048
- }
15049
- info += getDeclarationErrorAddendum(element._owner);
15050
- true ? process.env.NODE_ENV !== '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', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;
15051
- }
15052
-
15053
- // Special case string values
15054
- if (typeof element.type === 'string') {
15055
- instance = ReactHostComponent.createInternalComponent(element);
15056
- } else if (isInternalComponentType(element.type)) {
15057
- // This is temporarily available for custom components that are not string
15058
- // representations. I.e. ART. Once those are updated to use the string
15059
- // representation, we can drop this code path.
15060
- instance = new element.type(element);
15061
-
15062
- // We renamed this. Allow the old name for compat. :(
15063
- if (!instance.getHostNode) {
15064
- instance.getHostNode = instance.getNativeNode;
15065
- }
15066
- } else {
15067
- instance = new ReactCompositeComponentWrapper(element);
15068
- }
15069
- } else if (typeof node === 'string' || typeof node === 'number') {
15070
- instance = ReactHostComponent.createInstanceForText(node);
15071
- } else {
15072
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;
15073
- }
15074
-
15075
- if (process.env.NODE_ENV !== 'production') {
15076
- process.env.NODE_ENV !== '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;
15077
- }
15078
-
15079
- // These two fields are used by the DOM and ART diffing algorithms
15080
- // respectively. Instead of using expandos on components, we should be
15081
- // storing the state needed by the diffing algorithms elsewhere.
15082
- instance._mountIndex = 0;
15083
- instance._mountImage = null;
15084
-
15085
- if (process.env.NODE_ENV !== 'production') {
15086
- instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;
15087
- }
15088
-
15089
- // Internal instances should fully constructed at this point, so they should
15090
- // not get any new fields added to them at this point.
15091
- if (process.env.NODE_ENV !== 'production') {
15092
- if (Object.preventExtensions) {
15093
- Object.preventExtensions(instance);
15094
- }
15095
- }
15096
-
15097
- return instance;
15098
- }
15099
-
15100
- module.exports = instantiateReactComponent;
15101
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
15102
-
15103
- /***/ },
15104
- /* 121 */
15105
- /***/ function(module, exports, __webpack_require__) {
15106
-
15107
- /* WEBPACK VAR INJECTION */(function(process) {/**
15108
- * Copyright 2013-present, Facebook, Inc.
15109
- * All rights reserved.
15110
- *
15111
- * This source code is licensed under the BSD-style license found in the
15112
- * LICENSE file in the root directory of this source tree. An additional grant
15113
- * of patent rights can be found in the PATENTS file in the same directory.
15114
- *
15115
- */
15116
-
15117
- 'use strict';
15118
-
15119
- var _prodInvariant = __webpack_require__(36),
15120
- _assign = __webpack_require__(51);
15121
-
15122
- var React = __webpack_require__(3);
15123
- var ReactComponentEnvironment = __webpack_require__(117);
15124
- var ReactCurrentOwner = __webpack_require__(11);
15125
- var ReactErrorUtils = __webpack_require__(46);
15126
- var ReactInstanceMap = __webpack_require__(118);
15127
- var ReactInstrumentation = __webpack_require__(64);
15128
- var ReactNodeTypes = __webpack_require__(122);
15129
- var ReactReconciler = __webpack_require__(61);
15130
-
15131
- if (process.env.NODE_ENV !== 'production') {
15132
- var checkReactTypeSpec = __webpack_require__(123);
15133
- }
15134
-
15135
- var emptyObject = __webpack_require__(21);
15136
- var invariant = __webpack_require__(9);
15137
- var shallowEqual = __webpack_require__(125);
15138
- var shouldUpdateReactComponent = __webpack_require__(126);
15139
- var warning = __webpack_require__(12);
15140
-
15141
- var CompositeTypes = {
15142
- ImpureClass: 0,
15143
- PureClass: 1,
15144
- StatelessFunctional: 2
15145
- };
15146
-
15147
- function StatelessComponent(Component) {}
15148
- StatelessComponent.prototype.render = function () {
15149
- var Component = ReactInstanceMap.get(this)._currentElement.type;
15150
- var element = Component(this.props, this.context, this.updater);
15151
- warnIfInvalidElement(Component, element);
15152
- return element;
15153
- };
15154
-
15155
- function warnIfInvalidElement(Component, element) {
15156
- if (process.env.NODE_ENV !== 'production') {
15157
- process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;
15158
- process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;
15159
- }
15160
- }
15161
-
15162
- function shouldConstruct(Component) {
15163
- return !!(Component.prototype && Component.prototype.isReactComponent);
15164
- }
15165
-
15166
- function isPureComponent(Component) {
15167
- return !!(Component.prototype && Component.prototype.isPureReactComponent);
15168
- }
15169
-
15170
- // Separated into a function to contain deoptimizations caused by try/finally.
15171
- function measureLifeCyclePerf(fn, debugID, timerType) {
15172
- if (debugID === 0) {
15173
- // Top-level wrappers (see ReactMount) and empty components (see
15174
- // ReactDOMEmptyComponent) are invisible to hooks and devtools.
15175
- // Both are implementation details that should go away in the future.
15176
- return fn();
15177
- }
15178
-
15179
- ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);
15180
- try {
15181
- return fn();
15182
- } finally {
15183
- ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);
15184
- }
15185
- }
15186
-
15187
- /**
15188
- * ------------------ The Life-Cycle of a Composite Component ------------------
15189
- *
15190
- * - constructor: Initialization of state. The instance is now retained.
15191
- * - componentWillMount
15192
- * - render
15193
- * - [children's constructors]
15194
- * - [children's componentWillMount and render]
15195
- * - [children's componentDidMount]
15196
- * - componentDidMount
15197
- *
15198
- * Update Phases:
15199
- * - componentWillReceiveProps (only called if parent updated)
15200
- * - shouldComponentUpdate
15201
- * - componentWillUpdate
15202
- * - render
15203
- * - [children's constructors or receive props phases]
15204
- * - componentDidUpdate
15205
- *
15206
- * - componentWillUnmount
15207
- * - [children's componentWillUnmount]
15208
- * - [children destroyed]
15209
- * - (destroyed): The instance is now blank, released by React and ready for GC.
15210
- *
15211
- * -----------------------------------------------------------------------------
15212
- */
15213
-
15214
- /**
15215
- * An incrementing ID assigned to each component when it is mounted. This is
15216
- * used to enforce the order in which `ReactUpdates` updates dirty components.
15217
- *
15218
- * @private
15219
- */
15220
- var nextMountID = 1;
15221
-
15222
- /**
15223
- * @lends {ReactCompositeComponent.prototype}
15224
- */
15225
- var ReactCompositeComponent = {
15226
-
15227
- /**
15228
- * Base constructor for all composite component.
15229
- *
15230
- * @param {ReactElement} element
15231
- * @final
15232
- * @internal
15233
- */
15234
- construct: function (element) {
15235
- this._currentElement = element;
15236
- this._rootNodeID = 0;
15237
- this._compositeType = null;
15238
- this._instance = null;
15239
- this._hostParent = null;
15240
- this._hostContainerInfo = null;
15241
-
15242
- // See ReactUpdateQueue
15243
- this._updateBatchNumber = null;
15244
- this._pendingElement = null;
15245
- this._pendingStateQueue = null;
15246
- this._pendingReplaceState = false;
15247
- this._pendingForceUpdate = false;
15248
-
15249
- this._renderedNodeType = null;
15250
- this._renderedComponent = null;
15251
- this._context = null;
15252
- this._mountOrder = 0;
15253
- this._topLevelWrapper = null;
15254
-
15255
- // See ReactUpdates and ReactUpdateQueue.
15256
- this._pendingCallbacks = null;
15257
-
15258
- // ComponentWillUnmount shall only be called once
15259
- this._calledComponentWillUnmount = false;
15260
-
15261
- if (process.env.NODE_ENV !== 'production') {
15262
- this._warnedAboutRefsInRender = false;
15263
- }
15264
- },
15265
-
15266
- /**
15267
- * Initializes the component, renders markup, and registers event listeners.
15268
- *
15269
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
15270
- * @param {?object} hostParent
15271
- * @param {?object} hostContainerInfo
15272
- * @param {?object} context
15273
- * @return {?string} Rendered markup to be inserted into the DOM.
15274
- * @final
15275
- * @internal
15276
- */
15277
- mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
15278
- var _this = this;
15279
-
15280
- this._context = context;
15281
- this._mountOrder = nextMountID++;
15282
- this._hostParent = hostParent;
15283
- this._hostContainerInfo = hostContainerInfo;
15284
-
15285
- var publicProps = this._currentElement.props;
15286
- var publicContext = this._processContext(context);
15287
-
15288
- var Component = this._currentElement.type;
15289
-
15290
- var updateQueue = transaction.getUpdateQueue();
15291
-
15292
- // Initialize the public class
15293
- var doConstruct = shouldConstruct(Component);
15294
- var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);
15295
- var renderedElement;
15296
-
15297
- // Support functional components
15298
- if (!doConstruct && (inst == null || inst.render == null)) {
15299
- renderedElement = inst;
15300
- warnIfInvalidElement(Component, renderedElement);
15301
- !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== '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;
15302
- inst = new StatelessComponent(Component);
15303
- this._compositeType = CompositeTypes.StatelessFunctional;
15304
- } else {
15305
- if (isPureComponent(Component)) {
15306
- this._compositeType = CompositeTypes.PureClass;
15307
- } else {
15308
- this._compositeType = CompositeTypes.ImpureClass;
15309
- }
15310
- }
15311
-
15312
- if (process.env.NODE_ENV !== 'production') {
15313
- // This will throw later in _renderValidatedComponent, but add an early
15314
- // warning now to help debugging
15315
- if (inst.render == null) {
15316
- process.env.NODE_ENV !== '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;
15317
- }
15318
-
15319
- var propsMutated = inst.props !== publicProps;
15320
- var componentName = Component.displayName || Component.name || 'Component';
15321
-
15322
- process.env.NODE_ENV !== '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;
15323
- }
15324
-
15325
- // These should be set up in the constructor, but as a convenience for
15326
- // simpler class abstractions, we set them up after the fact.
15327
- inst.props = publicProps;
15328
- inst.context = publicContext;
15329
- inst.refs = emptyObject;
15330
- inst.updater = updateQueue;
15331
-
15332
- this._instance = inst;
15333
-
15334
- // Store a reference from the instance back to the internal representation
15335
- ReactInstanceMap.set(inst, this);
15336
-
15337
- if (process.env.NODE_ENV !== 'production') {
15338
- // Since plain JS classes are defined without any special initialization
15339
- // logic, we can not catch common errors early. Therefore, we have to
15340
- // catch them here, at initialization time, instead.
15341
- process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;
15342
- process.env.NODE_ENV !== '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;
15343
- process.env.NODE_ENV !== '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;
15344
- process.env.NODE_ENV !== '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;
15345
- process.env.NODE_ENV !== '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;
15346
- process.env.NODE_ENV !== '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;
15347
- process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;
15348
- }
15349
-
15350
- var initialState = inst.state;
15351
- if (initialState === undefined) {
15352
- inst.state = initialState = null;
15353
- }
15354
- !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;
15355
-
15356
- this._pendingStateQueue = null;
15357
- this._pendingReplaceState = false;
15358
- this._pendingForceUpdate = false;
15359
-
15360
- var markup;
15361
- if (inst.unstable_handleError) {
15362
- markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);
15363
- } else {
15364
- markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
15365
- }
15366
-
15367
- if (inst.componentDidMount) {
15368
- if (process.env.NODE_ENV !== 'production') {
15369
- transaction.getReactMountReady().enqueue(function () {
15370
- measureLifeCyclePerf(function () {
15371
- return inst.componentDidMount();
15372
- }, _this._debugID, 'componentDidMount');
15373
- });
15374
- } else {
15375
- transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
15376
- }
15377
- }
15378
-
15379
- return markup;
15380
- },
15381
-
15382
- _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {
15383
- if (process.env.NODE_ENV !== 'production') {
15384
- ReactCurrentOwner.current = this;
15385
- try {
15386
- return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
15387
- } finally {
15388
- ReactCurrentOwner.current = null;
15389
- }
15390
- } else {
15391
- return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);
15392
- }
15393
- },
15394
-
15395
- _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {
15396
- var Component = this._currentElement.type;
15397
-
15398
- if (doConstruct) {
15399
- if (process.env.NODE_ENV !== 'production') {
15400
- return measureLifeCyclePerf(function () {
15401
- return new Component(publicProps, publicContext, updateQueue);
15402
- }, this._debugID, 'ctor');
15403
- } else {
15404
- return new Component(publicProps, publicContext, updateQueue);
15405
- }
15406
- }
15407
-
15408
- // This can still be an instance in case of factory components
15409
- // but we'll count this as time spent rendering as the more common case.
15410
- if (process.env.NODE_ENV !== 'production') {
15411
- return measureLifeCyclePerf(function () {
15412
- return Component(publicProps, publicContext, updateQueue);
15413
- }, this._debugID, 'render');
15414
- } else {
15415
- return Component(publicProps, publicContext, updateQueue);
15416
- }
15417
- },
15418
-
15419
- performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
15420
- var markup;
15421
- var checkpoint = transaction.checkpoint();
15422
- try {
15423
- markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
15424
- } catch (e) {
15425
- // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint
15426
- transaction.rollback(checkpoint);
15427
- this._instance.unstable_handleError(e);
15428
- if (this._pendingStateQueue) {
15429
- this._instance.state = this._processPendingState(this._instance.props, this._instance.context);
15430
- }
15431
- checkpoint = transaction.checkpoint();
15432
-
15433
- this._renderedComponent.unmountComponent(true);
15434
- transaction.rollback(checkpoint);
15435
-
15436
- // Try again - we've informed the component about the error, so they can render an error message this time.
15437
- // If this throws again, the error will bubble up (and can be caught by a higher error boundary).
15438
- markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
15439
- }
15440
- return markup;
15441
- },
15442
-
15443
- performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
15444
- var inst = this._instance;
15445
-
15446
- var debugID = 0;
15447
- if (process.env.NODE_ENV !== 'production') {
15448
- debugID = this._debugID;
15449
- }
15450
-
15451
- if (inst.componentWillMount) {
15452
- if (process.env.NODE_ENV !== 'production') {
15453
- measureLifeCyclePerf(function () {
15454
- return inst.componentWillMount();
15455
- }, debugID, 'componentWillMount');
15456
- } else {
15457
- inst.componentWillMount();
15458
- }
15459
- // When mounting, calls to `setState` by `componentWillMount` will set
15460
- // `this._pendingStateQueue` without triggering a re-render.
15461
- if (this._pendingStateQueue) {
15462
- inst.state = this._processPendingState(inst.props, inst.context);
15463
- }
15464
- }
15465
-
15466
- // If not a stateless component, we now render
15467
- if (renderedElement === undefined) {
15468
- renderedElement = this._renderValidatedComponent();
15469
- }
15470
-
15471
- var nodeType = ReactNodeTypes.getType(renderedElement);
15472
- this._renderedNodeType = nodeType;
15473
- var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */
15474
- );
15475
- this._renderedComponent = child;
15476
-
15477
- var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);
15478
-
15479
- if (process.env.NODE_ENV !== 'production') {
15480
- if (debugID !== 0) {
15481
- var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];
15482
- ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);
15483
- }
15484
- }
15485
-
15486
- return markup;
15487
- },
15488
-
15489
- getHostNode: function () {
15490
- return ReactReconciler.getHostNode(this._renderedComponent);
15491
- },
15492
-
15493
- /**
15494
- * Releases any resources allocated by `mountComponent`.
15495
- *
15496
- * @final
15497
- * @internal
15498
- */
15499
- unmountComponent: function (safely) {
15500
- if (!this._renderedComponent) {
15501
- return;
15502
- }
15503
-
15504
- var inst = this._instance;
15505
-
15506
- if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {
15507
- inst._calledComponentWillUnmount = true;
15508
-
15509
- if (safely) {
15510
- var name = this.getName() + '.componentWillUnmount()';
15511
- ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));
15512
- } else {
15513
- if (process.env.NODE_ENV !== 'production') {
15514
- measureLifeCyclePerf(function () {
15515
- return inst.componentWillUnmount();
15516
- }, this._debugID, 'componentWillUnmount');
15517
- } else {
15518
- inst.componentWillUnmount();
15519
- }
15520
- }
15521
- }
15522
-
15523
- if (this._renderedComponent) {
15524
- ReactReconciler.unmountComponent(this._renderedComponent, safely);
15525
- this._renderedNodeType = null;
15526
- this._renderedComponent = null;
15527
- this._instance = null;
15528
- }
15529
-
15530
- // Reset pending fields
15531
- // Even if this component is scheduled for another update in ReactUpdates,
15532
- // it would still be ignored because these fields are reset.
15533
- this._pendingStateQueue = null;
15534
- this._pendingReplaceState = false;
15535
- this._pendingForceUpdate = false;
15536
- this._pendingCallbacks = null;
15537
- this._pendingElement = null;
15538
-
15539
- // These fields do not really need to be reset since this object is no
15540
- // longer accessible.
15541
- this._context = null;
15542
- this._rootNodeID = 0;
15543
- this._topLevelWrapper = null;
15544
-
15545
- // Delete the reference from the instance to this internal representation
15546
- // which allow the internals to be properly cleaned up even if the user
15547
- // leaks a reference to the public instance.
15548
- ReactInstanceMap.remove(inst);
15549
-
15550
- // Some existing components rely on inst.props even after they've been
15551
- // destroyed (in event handlers).
15552
- // TODO: inst.props = null;
15553
- // TODO: inst.state = null;
15554
- // TODO: inst.context = null;
15555
- },
15556
-
15557
- /**
15558
- * Filters the context object to only contain keys specified in
15559
- * `contextTypes`
15560
- *
15561
- * @param {object} context
15562
- * @return {?object}
15563
- * @private
15564
- */
15565
- _maskContext: function (context) {
15566
- var Component = this._currentElement.type;
15567
- var contextTypes = Component.contextTypes;
15568
- if (!contextTypes) {
15569
- return emptyObject;
15570
- }
15571
- var maskedContext = {};
15572
- for (var contextName in contextTypes) {
15573
- maskedContext[contextName] = context[contextName];
15574
- }
15575
- return maskedContext;
15576
- },
15577
-
15578
- /**
15579
- * Filters the context object to only contain keys specified in
15580
- * `contextTypes`, and asserts that they are valid.
15581
- *
15582
- * @param {object} context
15583
- * @return {?object}
15584
- * @private
15585
- */
15586
- _processContext: function (context) {
15587
- var maskedContext = this._maskContext(context);
15588
- if (process.env.NODE_ENV !== 'production') {
15589
- var Component = this._currentElement.type;
15590
- if (Component.contextTypes) {
15591
- this._checkContextTypes(Component.contextTypes, maskedContext, 'context');
15592
- }
15593
- }
15594
- return maskedContext;
15595
- },
15596
-
15597
- /**
15598
- * @param {object} currentContext
15599
- * @return {object}
15600
- * @private
15601
- */
15602
- _processChildContext: function (currentContext) {
15603
- var Component = this._currentElement.type;
15604
- var inst = this._instance;
15605
- var childContext;
15606
-
15607
- if (inst.getChildContext) {
15608
- if (process.env.NODE_ENV !== 'production') {
15609
- ReactInstrumentation.debugTool.onBeginProcessingChildContext();
15610
- try {
15611
- childContext = inst.getChildContext();
15612
- } finally {
15613
- ReactInstrumentation.debugTool.onEndProcessingChildContext();
15614
- }
15615
- } else {
15616
- childContext = inst.getChildContext();
15617
- }
15618
- }
15619
-
15620
- if (childContext) {
15621
- !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;
15622
- if (process.env.NODE_ENV !== 'production') {
15623
- this._checkContextTypes(Component.childContextTypes, childContext, 'childContext');
15624
- }
15625
- for (var name in childContext) {
15626
- !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;
15627
- }
15628
- return _assign({}, currentContext, childContext);
15629
- }
15630
- return currentContext;
15631
- },
15632
-
15633
- /**
15634
- * Assert that the context types are valid
15635
- *
15636
- * @param {object} typeSpecs Map of context field to a ReactPropType
15637
- * @param {object} values Runtime values that need to be type-checked
15638
- * @param {string} location e.g. "prop", "context", "child context"
15639
- * @private
15640
- */
15641
- _checkContextTypes: function (typeSpecs, values, location) {
15642
- if (process.env.NODE_ENV !== 'production') {
15643
- checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);
15644
- }
15645
- },
15646
-
15647
- receiveComponent: function (nextElement, transaction, nextContext) {
15648
- var prevElement = this._currentElement;
15649
- var prevContext = this._context;
15650
-
15651
- this._pendingElement = null;
15652
-
15653
- this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);
15654
- },
15655
-
15656
- /**
15657
- * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`
15658
- * is set, update the component.
15659
- *
15660
- * @param {ReactReconcileTransaction} transaction
15661
- * @internal
15662
- */
15663
- performUpdateIfNecessary: function (transaction) {
15664
- if (this._pendingElement != null) {
15665
- ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);
15666
- } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {
15667
- this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);
15668
- } else {
15669
- this._updateBatchNumber = null;
15670
- }
15671
- },
15672
-
15673
- /**
15674
- * Perform an update to a mounted component. The componentWillReceiveProps and
15675
- * shouldComponentUpdate methods are called, then (assuming the update isn't
15676
- * skipped) the remaining update lifecycle methods are called and the DOM
15677
- * representation is updated.
15678
- *
15679
- * By default, this implements React's rendering and reconciliation algorithm.
15680
- * Sophisticated clients may wish to override this.
15681
- *
15682
- * @param {ReactReconcileTransaction} transaction
15683
- * @param {ReactElement} prevParentElement
15684
- * @param {ReactElement} nextParentElement
15685
- * @internal
15686
- * @overridable
15687
- */
15688
- updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {
15689
- var inst = this._instance;
15690
- !(inst != null) ? process.env.NODE_ENV !== '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;
15691
-
15692
- var willReceive = false;
15693
- var nextContext;
15694
-
15695
- // Determine if the context has changed or not
15696
- if (this._context === nextUnmaskedContext) {
15697
- nextContext = inst.context;
15698
- } else {
15699
- nextContext = this._processContext(nextUnmaskedContext);
15700
- willReceive = true;
15701
- }
15702
-
15703
- var prevProps = prevParentElement.props;
15704
- var nextProps = nextParentElement.props;
15705
-
15706
- // Not a simple state update but a props update
15707
- if (prevParentElement !== nextParentElement) {
15708
- willReceive = true;
15709
- }
15710
-
15711
- // An update here will schedule an update but immediately set
15712
- // _pendingStateQueue which will ensure that any state updates gets
15713
- // immediately reconciled instead of waiting for the next batch.
15714
- if (willReceive && inst.componentWillReceiveProps) {
15715
- if (process.env.NODE_ENV !== 'production') {
15716
- measureLifeCyclePerf(function () {
15717
- return inst.componentWillReceiveProps(nextProps, nextContext);
15718
- }, this._debugID, 'componentWillReceiveProps');
15719
- } else {
15720
- inst.componentWillReceiveProps(nextProps, nextContext);
15721
- }
15722
- }
15723
-
15724
- var nextState = this._processPendingState(nextProps, nextContext);
15725
- var shouldUpdate = true;
15726
-
15727
- if (!this._pendingForceUpdate) {
15728
- if (inst.shouldComponentUpdate) {
15729
- if (process.env.NODE_ENV !== 'production') {
15730
- shouldUpdate = measureLifeCyclePerf(function () {
15731
- return inst.shouldComponentUpdate(nextProps, nextState, nextContext);
15732
- }, this._debugID, 'shouldComponentUpdate');
15733
- } else {
15734
- shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);
15735
- }
15736
- } else {
15737
- if (this._compositeType === CompositeTypes.PureClass) {
15738
- shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);
15739
- }
15740
- }
15741
- }
15742
-
15743
- if (process.env.NODE_ENV !== 'production') {
15744
- process.env.NODE_ENV !== '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;
15745
- }
15746
-
15747
- this._updateBatchNumber = null;
15748
- if (shouldUpdate) {
15749
- this._pendingForceUpdate = false;
15750
- // Will set `this.props`, `this.state` and `this.context`.
15751
- this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);
15752
- } else {
15753
- // If it's determined that a component should not update, we still want
15754
- // to set props and state but we shortcut the rest of the update.
15755
- this._currentElement = nextParentElement;
15756
- this._context = nextUnmaskedContext;
15757
- inst.props = nextProps;
15758
- inst.state = nextState;
15759
- inst.context = nextContext;
15760
- }
15761
- },
15762
-
15763
- _processPendingState: function (props, context) {
15764
- var inst = this._instance;
15765
- var queue = this._pendingStateQueue;
15766
- var replace = this._pendingReplaceState;
15767
- this._pendingReplaceState = false;
15768
- this._pendingStateQueue = null;
15769
-
15770
- if (!queue) {
15771
- return inst.state;
15772
- }
15773
-
15774
- if (replace && queue.length === 1) {
15775
- return queue[0];
15776
- }
15777
-
15778
- var nextState = _assign({}, replace ? queue[0] : inst.state);
15779
- for (var i = replace ? 1 : 0; i < queue.length; i++) {
15780
- var partial = queue[i];
15781
- _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);
15782
- }
15783
-
15784
- return nextState;
15785
- },
15786
-
15787
- /**
15788
- * Merges new props and state, notifies delegate methods of update and
15789
- * performs update.
15790
- *
15791
- * @param {ReactElement} nextElement Next element
15792
- * @param {object} nextProps Next public object to set as properties.
15793
- * @param {?object} nextState Next object to set as state.
15794
- * @param {?object} nextContext Next public object to set as context.
15795
- * @param {ReactReconcileTransaction} transaction
15796
- * @param {?object} unmaskedContext
15797
- * @private
15798
- */
15799
- _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {
15800
- var _this2 = this;
15801
-
15802
- var inst = this._instance;
15803
-
15804
- var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);
15805
- var prevProps;
15806
- var prevState;
15807
- var prevContext;
15808
- if (hasComponentDidUpdate) {
15809
- prevProps = inst.props;
15810
- prevState = inst.state;
15811
- prevContext = inst.context;
15812
- }
15813
-
15814
- if (inst.componentWillUpdate) {
15815
- if (process.env.NODE_ENV !== 'production') {
15816
- measureLifeCyclePerf(function () {
15817
- return inst.componentWillUpdate(nextProps, nextState, nextContext);
15818
- }, this._debugID, 'componentWillUpdate');
15819
- } else {
15820
- inst.componentWillUpdate(nextProps, nextState, nextContext);
15821
- }
15822
- }
15823
-
15824
- this._currentElement = nextElement;
15825
- this._context = unmaskedContext;
15826
- inst.props = nextProps;
15827
- inst.state = nextState;
15828
- inst.context = nextContext;
15829
-
15830
- this._updateRenderedComponent(transaction, unmaskedContext);
15831
-
15832
- if (hasComponentDidUpdate) {
15833
- if (process.env.NODE_ENV !== 'production') {
15834
- transaction.getReactMountReady().enqueue(function () {
15835
- measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');
15836
- });
15837
- } else {
15838
- transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);
15839
- }
15840
- }
15841
- },
15842
-
15843
- /**
15844
- * Call the component's `render` method and update the DOM accordingly.
15845
- *
15846
- * @param {ReactReconcileTransaction} transaction
15847
- * @internal
15848
- */
15849
- _updateRenderedComponent: function (transaction, context) {
15850
- var prevComponentInstance = this._renderedComponent;
15851
- var prevRenderedElement = prevComponentInstance._currentElement;
15852
- var nextRenderedElement = this._renderValidatedComponent();
15853
-
15854
- var debugID = 0;
15855
- if (process.env.NODE_ENV !== 'production') {
15856
- debugID = this._debugID;
15857
- }
15858
-
15859
- if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {
15860
- ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));
15861
- } else {
15862
- var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);
15863
- ReactReconciler.unmountComponent(prevComponentInstance, false);
15864
-
15865
- var nodeType = ReactNodeTypes.getType(nextRenderedElement);
15866
- this._renderedNodeType = nodeType;
15867
- var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */
15868
- );
15869
- this._renderedComponent = child;
15870
-
15871
- var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);
15872
-
15873
- if (process.env.NODE_ENV !== 'production') {
15874
- if (debugID !== 0) {
15875
- var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];
15876
- ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);
15877
- }
15878
- }
15879
-
15880
- this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);
15881
- }
15882
- },
15883
-
15884
- /**
15885
- * Overridden in shallow rendering.
15886
- *
15887
- * @protected
15888
- */
15889
- _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {
15890
- ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);
15891
- },
15892
-
15893
- /**
15894
- * @protected
15895
- */
15896
- _renderValidatedComponentWithoutOwnerOrContext: function () {
15897
- var inst = this._instance;
15898
- var renderedElement;
15899
-
15900
- if (process.env.NODE_ENV !== 'production') {
15901
- renderedElement = measureLifeCyclePerf(function () {
15902
- return inst.render();
15903
- }, this._debugID, 'render');
15904
- } else {
15905
- renderedElement = inst.render();
15906
- }
15907
-
15908
- if (process.env.NODE_ENV !== 'production') {
15909
- // We allow auto-mocks to proceed as if they're returning null.
15910
- if (renderedElement === undefined && inst.render._isMockFunction) {
15911
- // This is probably bad practice. Consider warning here and
15912
- // deprecating this convenience.
15913
- renderedElement = null;
15914
- }
15915
- }
15916
-
15917
- return renderedElement;
15918
- },
15919
-
15920
- /**
15921
- * @private
15922
- */
15923
- _renderValidatedComponent: function () {
15924
- var renderedElement;
15925
- if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {
15926
- ReactCurrentOwner.current = this;
15927
- try {
15928
- renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();
15929
- } finally {
15930
- ReactCurrentOwner.current = null;
15931
- }
15932
- } else {
15933
- renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();
15934
- }
15935
- !(
15936
- // TODO: An `isValidNode` function would probably be more appropriate
15937
- renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== '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;
15938
-
15939
- return renderedElement;
15940
- },
15941
-
15942
- /**
15943
- * Lazily allocates the refs object and stores `component` as `ref`.
15944
- *
15945
- * @param {string} ref Reference name.
15946
- * @param {component} component Component to store as `ref`.
15947
- * @final
15948
- * @private
15949
- */
15950
- attachRef: function (ref, component) {
15951
- var inst = this.getPublicInstance();
15952
- !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;
15953
- var publicComponentInstance = component.getPublicInstance();
15954
- if (process.env.NODE_ENV !== 'production') {
15955
- var componentName = component && component.getName ? component.getName() : 'a component';
15956
- process.env.NODE_ENV !== '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;
15957
- }
15958
- var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;
15959
- refs[ref] = publicComponentInstance;
15960
- },
15961
-
15962
- /**
15963
- * Detaches a reference name.
15964
- *
15965
- * @param {string} ref Name to dereference.
15966
- * @final
15967
- * @private
15968
- */
15969
- detachRef: function (ref) {
15970
- var refs = this.getPublicInstance().refs;
15971
- delete refs[ref];
15972
- },
15973
-
15974
- /**
15975
- * Get a text description of the component that can be used to identify it
15976
- * in error messages.
15977
- * @return {string} The name or null.
15978
- * @internal
15979
- */
15980
- getName: function () {
15981
- var type = this._currentElement.type;
15982
- var constructor = this._instance && this._instance.constructor;
15983
- return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;
15984
- },
15985
-
15986
- /**
15987
- * Get the publicly accessible representation of this component - i.e. what
15988
- * is exposed by refs and returned by render. Can be null for stateless
15989
- * components.
15990
- *
15991
- * @return {ReactComponent} the public component instance.
15992
- * @internal
15993
- */
15994
- getPublicInstance: function () {
15995
- var inst = this._instance;
15996
- if (this._compositeType === CompositeTypes.StatelessFunctional) {
15997
- return null;
15998
- }
15999
- return inst;
16000
- },
16001
-
16002
- // Stub
16003
- _instantiateReactComponent: null
16004
-
16005
- };
16006
-
16007
- module.exports = ReactCompositeComponent;
16008
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16009
-
16010
- /***/ },
16011
- /* 122 */
16012
- /***/ function(module, exports, __webpack_require__) {
16013
-
16014
- /* WEBPACK VAR INJECTION */(function(process) {/**
16015
- * Copyright 2013-present, Facebook, Inc.
16016
- * All rights reserved.
16017
- *
16018
- * This source code is licensed under the BSD-style license found in the
16019
- * LICENSE file in the root directory of this source tree. An additional grant
16020
- * of patent rights can be found in the PATENTS file in the same directory.
16021
- *
16022
- *
16023
- */
16024
-
16025
- 'use strict';
16026
-
16027
- var _prodInvariant = __webpack_require__(36);
16028
-
16029
- var React = __webpack_require__(3);
16030
-
16031
- var invariant = __webpack_require__(9);
16032
-
16033
- var ReactNodeTypes = {
16034
- HOST: 0,
16035
- COMPOSITE: 1,
16036
- EMPTY: 2,
16037
-
16038
- getType: function (node) {
16039
- if (node === null || node === false) {
16040
- return ReactNodeTypes.EMPTY;
16041
- } else if (React.isValidElement(node)) {
16042
- if (typeof node.type === 'function') {
16043
- return ReactNodeTypes.COMPOSITE;
16044
- } else {
16045
- return ReactNodeTypes.HOST;
16046
- }
16047
- }
16048
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;
16049
- }
16050
- };
16051
-
16052
- module.exports = ReactNodeTypes;
16053
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16054
-
16055
- /***/ },
16056
- /* 123 */
16057
- /***/ function(module, exports, __webpack_require__) {
16058
-
16059
- /* WEBPACK VAR INJECTION */(function(process) {/**
16060
- * Copyright 2013-present, Facebook, Inc.
16061
- * All rights reserved.
16062
- *
16063
- * This source code is licensed under the BSD-style license found in the
16064
- * LICENSE file in the root directory of this source tree. An additional grant
16065
- * of patent rights can be found in the PATENTS file in the same directory.
16066
- *
16067
- */
16068
-
16069
- 'use strict';
16070
-
16071
- var _prodInvariant = __webpack_require__(36);
16072
-
16073
- var ReactPropTypeLocationNames = __webpack_require__(124);
16074
- var ReactPropTypesSecret = __webpack_require__(112);
16075
-
16076
- var invariant = __webpack_require__(9);
16077
- var warning = __webpack_require__(12);
16078
-
16079
- var ReactComponentTreeHook;
16080
-
16081
- if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
16082
- // Temporary hack.
16083
- // Inline requires don't work well with Jest:
16084
- // https://github.com/facebook/react/issues/7240
16085
- // Remove the inline requires when we don't need them anymore:
16086
- // https://github.com/facebook/react/pull/7178
16087
- ReactComponentTreeHook = __webpack_require__(27);
16088
- }
16089
-
16090
- var loggedTypeFailures = {};
16091
-
16092
- /**
16093
- * Assert that the values match with the type specs.
16094
- * Error messages are memorized and will only be shown once.
16095
- *
16096
- * @param {object} typeSpecs Map of name to a ReactPropType
16097
- * @param {object} values Runtime values that need to be type-checked
16098
- * @param {string} location e.g. "prop", "context", "child context"
16099
- * @param {string} componentName Name of the component for error messages.
16100
- * @param {?object} element The React element that is being type-checked
16101
- * @param {?number} debugID The React component instance that is being type-checked
16102
- * @private
16103
- */
16104
- function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {
16105
- for (var typeSpecName in typeSpecs) {
16106
- if (typeSpecs.hasOwnProperty(typeSpecName)) {
16107
- var error;
16108
- // Prop type validation may throw. In case they do, we don't want to
16109
- // fail the render phase where it didn't fail before. So we log it.
16110
- // After these have been cleaned up, we'll let them throw.
16111
- try {
16112
- // This is intentionally an invariant that gets caught. It's the same
16113
- // behavior as without this statement except with a better message.
16114
- !(typeof typeSpecs[typeSpecName] === 'function') ? process.env.NODE_ENV !== '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;
16115
- error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
16116
- } catch (ex) {
16117
- error = ex;
16118
- }
16119
- process.env.NODE_ENV !== '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;
16120
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
16121
- // Only monitor this failure once because there tends to be a lot of the
16122
- // same error.
16123
- loggedTypeFailures[error.message] = true;
16124
-
16125
- var componentStackInfo = '';
16126
-
16127
- if (process.env.NODE_ENV !== 'production') {
16128
- if (!ReactComponentTreeHook) {
16129
- ReactComponentTreeHook = __webpack_require__(27);
16130
- }
16131
- if (debugID !== null) {
16132
- componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);
16133
- } else if (element !== null) {
16134
- componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);
16135
- }
16136
- }
16137
-
16138
- process.env.NODE_ENV !== 'production' ? warning(false, 'Failed %s type: %s%s', location, error.message, componentStackInfo) : void 0;
16139
- }
16140
- }
16141
- }
16142
- }
16143
-
16144
- module.exports = checkReactTypeSpec;
16145
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16146
-
16147
- /***/ },
16148
- /* 124 */
16149
- /***/ function(module, exports, __webpack_require__) {
16150
-
16151
- /* WEBPACK VAR INJECTION */(function(process) {/**
16152
- * Copyright 2013-present, Facebook, Inc.
16153
- * All rights reserved.
16154
- *
16155
- * This source code is licensed under the BSD-style license found in the
16156
- * LICENSE file in the root directory of this source tree. An additional grant
16157
- * of patent rights can be found in the PATENTS file in the same directory.
16158
- *
16159
- *
16160
- */
16161
-
16162
- 'use strict';
16163
-
16164
- var ReactPropTypeLocationNames = {};
16165
-
16166
- if (process.env.NODE_ENV !== 'production') {
16167
- ReactPropTypeLocationNames = {
16168
- prop: 'prop',
16169
- context: 'context',
16170
- childContext: 'child context'
16171
- };
16172
- }
16173
-
16174
- module.exports = ReactPropTypeLocationNames;
16175
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16176
-
16177
- /***/ },
16178
- /* 125 */
16179
- /***/ function(module, exports) {
16180
-
16181
- /**
16182
- * Copyright (c) 2013-present, Facebook, Inc.
16183
- * All rights reserved.
16184
- *
16185
- * This source code is licensed under the BSD-style license found in the
16186
- * LICENSE file in the root directory of this source tree. An additional grant
16187
- * of patent rights can be found in the PATENTS file in the same directory.
16188
- *
16189
- * @typechecks
16190
- *
16191
- */
16192
-
16193
- /*eslint-disable no-self-compare */
16194
-
16195
- 'use strict';
16196
-
16197
- var hasOwnProperty = Object.prototype.hasOwnProperty;
16198
-
16199
- /**
16200
- * inlined Object.is polyfill to avoid requiring consumers ship their own
16201
- * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
16202
- */
16203
- function is(x, y) {
16204
- // SameValue algorithm
16205
- if (x === y) {
16206
- // Steps 1-5, 7-10
16207
- // Steps 6.b-6.e: +0 != -0
16208
- // Added the nonzero y check to make Flow happy, but it is redundant
16209
- return x !== 0 || y !== 0 || 1 / x === 1 / y;
16210
- } else {
16211
- // Step 6.a: NaN == NaN
16212
- return x !== x && y !== y;
16213
- }
16214
- }
16215
-
16216
- /**
16217
- * Performs equality by iterating through keys on an object and returning false
16218
- * when any key has values which are not strictly equal between the arguments.
16219
- * Returns true when the values of all keys are strictly equal.
16220
- */
16221
- function shallowEqual(objA, objB) {
16222
- if (is(objA, objB)) {
16223
- return true;
16224
- }
16225
-
16226
- if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
16227
- return false;
16228
- }
16229
-
16230
- var keysA = Object.keys(objA);
16231
- var keysB = Object.keys(objB);
16232
-
16233
- if (keysA.length !== keysB.length) {
16234
- return false;
16235
- }
16236
-
16237
- // Test for A's keys different from B.
16238
- for (var i = 0; i < keysA.length; i++) {
16239
- if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
16240
- return false;
16241
- }
16242
- }
16243
-
16244
- return true;
16245
- }
16246
-
16247
- module.exports = shallowEqual;
16248
-
16249
- /***/ },
16250
- /* 126 */
16251
- /***/ function(module, exports) {
16252
-
16253
- /**
16254
- * Copyright 2013-present, Facebook, Inc.
16255
- * All rights reserved.
16256
- *
16257
- * This source code is licensed under the BSD-style license found in the
16258
- * LICENSE file in the root directory of this source tree. An additional grant
16259
- * of patent rights can be found in the PATENTS file in the same directory.
16260
- *
16261
- */
16262
-
16263
- 'use strict';
16264
-
16265
- /**
16266
- * Given a `prevElement` and `nextElement`, determines if the existing
16267
- * instance should be updated as opposed to being destroyed or replaced by a new
16268
- * instance. Both arguments are elements. This ensures that this logic can
16269
- * operate on stateless trees without any backing instance.
16270
- *
16271
- * @param {?object} prevElement
16272
- * @param {?object} nextElement
16273
- * @return {boolean} True if the existing instance should be updated.
16274
- * @protected
16275
- */
16276
-
16277
- function shouldUpdateReactComponent(prevElement, nextElement) {
16278
- var prevEmpty = prevElement === null || prevElement === false;
16279
- var nextEmpty = nextElement === null || nextElement === false;
16280
- if (prevEmpty || nextEmpty) {
16281
- return prevEmpty === nextEmpty;
16282
- }
16283
-
16284
- var prevType = typeof prevElement;
16285
- var nextType = typeof nextElement;
16286
- if (prevType === 'string' || prevType === 'number') {
16287
- return nextType === 'string' || nextType === 'number';
16288
- } else {
16289
- return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;
16290
- }
16291
- }
16292
-
16293
- module.exports = shouldUpdateReactComponent;
16294
-
16295
- /***/ },
16296
- /* 127 */
16297
- /***/ function(module, exports) {
16298
-
16299
- /**
16300
- * Copyright 2014-present, Facebook, Inc.
16301
- * All rights reserved.
16302
- *
16303
- * This source code is licensed under the BSD-style license found in the
16304
- * LICENSE file in the root directory of this source tree. An additional grant
16305
- * of patent rights can be found in the PATENTS file in the same directory.
16306
- *
16307
- */
16308
-
16309
- 'use strict';
16310
-
16311
- var emptyComponentFactory;
16312
-
16313
- var ReactEmptyComponentInjection = {
16314
- injectEmptyComponentFactory: function (factory) {
16315
- emptyComponentFactory = factory;
16316
- }
16317
- };
16318
-
16319
- var ReactEmptyComponent = {
16320
- create: function (instantiate) {
16321
- return emptyComponentFactory(instantiate);
16322
- }
16323
- };
16324
-
16325
- ReactEmptyComponent.injection = ReactEmptyComponentInjection;
16326
-
16327
- module.exports = ReactEmptyComponent;
16328
-
16329
- /***/ },
16330
- /* 128 */
16331
- /***/ function(module, exports, __webpack_require__) {
16332
-
16333
- /* WEBPACK VAR INJECTION */(function(process) {/**
16334
- * Copyright 2014-present, Facebook, Inc.
16335
- * All rights reserved.
16336
- *
16337
- * This source code is licensed under the BSD-style license found in the
16338
- * LICENSE file in the root directory of this source tree. An additional grant
16339
- * of patent rights can be found in the PATENTS file in the same directory.
16340
- *
16341
- */
16342
-
16343
- 'use strict';
16344
-
16345
- var _prodInvariant = __webpack_require__(36);
16346
-
16347
- var invariant = __webpack_require__(9);
16348
-
16349
- var genericComponentClass = null;
16350
- var textComponentClass = null;
16351
-
16352
- var ReactHostComponentInjection = {
16353
- // This accepts a class that receives the tag string. This is a catch all
16354
- // that can render any kind of tag.
16355
- injectGenericComponentClass: function (componentClass) {
16356
- genericComponentClass = componentClass;
16357
- },
16358
- // This accepts a text component class that takes the text string to be
16359
- // rendered as props.
16360
- injectTextComponentClass: function (componentClass) {
16361
- textComponentClass = componentClass;
16362
- }
16363
- };
16364
-
16365
- /**
16366
- * Get a host internal component class for a specific tag.
16367
- *
16368
- * @param {ReactElement} element The element to create.
16369
- * @return {function} The internal class constructor function.
16370
- */
16371
- function createInternalComponent(element) {
16372
- !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;
16373
- return new genericComponentClass(element);
16374
- }
16375
-
16376
- /**
16377
- * @param {ReactText} text
16378
- * @return {ReactComponent}
16379
- */
16380
- function createInstanceForText(text) {
16381
- return new textComponentClass(text);
16382
- }
16383
-
16384
- /**
16385
- * @param {ReactComponent} component
16386
- * @return {boolean}
16387
- */
16388
- function isTextComponent(component) {
16389
- return component instanceof textComponentClass;
16390
- }
16391
-
16392
- var ReactHostComponent = {
16393
- createInternalComponent: createInternalComponent,
16394
- createInstanceForText: createInstanceForText,
16395
- isTextComponent: isTextComponent,
16396
- injection: ReactHostComponentInjection
16397
- };
16398
-
16399
- module.exports = ReactHostComponent;
16400
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16401
-
16402
- /***/ },
16403
- /* 129 */
16404
- /***/ function(module, exports) {
16405
-
16406
- /**
16407
- * Copyright 2013-present, Facebook, Inc.
16408
- * All rights reserved.
16409
- *
16410
- * This source code is licensed under the BSD-style license found in the
16411
- * LICENSE file in the root directory of this source tree. An additional grant
16412
- * of patent rights can be found in the PATENTS file in the same directory.
16413
- *
16414
- *
16415
- */
16416
-
16417
- 'use strict';
16418
-
16419
- var nextDebugID = 1;
16420
-
16421
- function getNextDebugID() {
16422
- return nextDebugID++;
16423
- }
16424
-
16425
- module.exports = getNextDebugID;
16426
-
16427
- /***/ },
16428
- /* 130 */
16429
- /***/ function(module, exports) {
16430
-
16431
- /**
16432
- * Copyright 2013-present, Facebook, Inc.
16433
- * All rights reserved.
16434
- *
16435
- * This source code is licensed under the BSD-style license found in the
16436
- * LICENSE file in the root directory of this source tree. An additional grant
16437
- * of patent rights can be found in the PATENTS file in the same directory.
16438
- *
16439
- *
16440
- */
16441
-
16442
- 'use strict';
16443
-
16444
- /**
16445
- * Escape and wrap key so it is safe to use as a reactid
16446
- *
16447
- * @param {string} key to be escaped.
16448
- * @return {string} the escaped key.
16449
- */
16450
-
16451
- function escape(key) {
16452
- var escapeRegex = /[=:]/g;
16453
- var escaperLookup = {
16454
- '=': '=0',
16455
- ':': '=2'
16456
- };
16457
- var escapedString = ('' + key).replace(escapeRegex, function (match) {
16458
- return escaperLookup[match];
16459
- });
16460
-
16461
- return '$' + escapedString;
16462
- }
16463
-
16464
- /**
16465
- * Unescape and unwrap key for human-readable display
16466
- *
16467
- * @param {string} key to unescape.
16468
- * @return {string} the unescaped key.
16469
- */
16470
- function unescape(key) {
16471
- var unescapeRegex = /(=0|=2)/g;
16472
- var unescaperLookup = {
16473
- '=0': '=',
16474
- '=2': ':'
16475
- };
16476
- var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
16477
-
16478
- return ('' + keySubstring).replace(unescapeRegex, function (match) {
16479
- return unescaperLookup[match];
16480
- });
16481
- }
16482
-
16483
- var KeyEscapeUtils = {
16484
- escape: escape,
16485
- unescape: unescape
16486
- };
16487
-
16488
- module.exports = KeyEscapeUtils;
16489
-
16490
- /***/ },
16491
- /* 131 */
16492
- /***/ function(module, exports, __webpack_require__) {
16493
-
16494
- /* WEBPACK VAR INJECTION */(function(process) {/**
16495
- * Copyright 2013-present, Facebook, Inc.
16496
- * All rights reserved.
16497
- *
16498
- * This source code is licensed under the BSD-style license found in the
16499
- * LICENSE file in the root directory of this source tree. An additional grant
16500
- * of patent rights can be found in the PATENTS file in the same directory.
16501
- *
16502
- */
16503
-
16504
- 'use strict';
16505
-
16506
- var _prodInvariant = __webpack_require__(36);
16507
-
16508
- var ReactCurrentOwner = __webpack_require__(11);
16509
- var REACT_ELEMENT_TYPE = __webpack_require__(132);
16510
-
16511
- var getIteratorFn = __webpack_require__(133);
16512
- var invariant = __webpack_require__(9);
16513
- var KeyEscapeUtils = __webpack_require__(130);
16514
- var warning = __webpack_require__(12);
16515
-
16516
- var SEPARATOR = '.';
16517
- var SUBSEPARATOR = ':';
16518
-
16519
- /**
16520
- * This is inlined from ReactElement since this file is shared between
16521
- * isomorphic and renderers. We could extract this to a
16522
- *
16523
- */
16524
-
16525
- /**
16526
- * TODO: Test that a single child and an array with one item have the same key
16527
- * pattern.
16528
- */
16529
-
16530
- var didWarnAboutMaps = false;
16531
-
16532
- /**
16533
- * Generate a key string that identifies a component within a set.
16534
- *
16535
- * @param {*} component A component that could contain a manual key.
16536
- * @param {number} index Index that is used if a manual key is not provided.
16537
- * @return {string}
16538
- */
16539
- function getComponentKey(component, index) {
16540
- // Do some typechecking here since we call this blindly. We want to ensure
16541
- // that we don't block potential future ES APIs.
16542
- if (component && typeof component === 'object' && component.key != null) {
16543
- // Explicit key
16544
- return KeyEscapeUtils.escape(component.key);
16545
- }
16546
- // Implicit key determined by the index in the set
16547
- return index.toString(36);
16548
- }
16549
-
16550
- /**
16551
- * @param {?*} children Children tree container.
16552
- * @param {!string} nameSoFar Name of the key path so far.
16553
- * @param {!function} callback Callback to invoke with each child found.
16554
- * @param {?*} traverseContext Used to pass information throughout the traversal
16555
- * process.
16556
- * @return {!number} The number of children in this subtree.
16557
- */
16558
- function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
16559
- var type = typeof children;
16560
-
16561
- if (type === 'undefined' || type === 'boolean') {
16562
- // All of the above are perceived as null.
16563
- children = null;
16564
- }
16565
-
16566
- if (children === null || type === 'string' || type === 'number' ||
16567
- // The following is inlined from ReactElement. This means we can optimize
16568
- // some checks. React Fiber also inlines this logic for similar purposes.
16569
- type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {
16570
- callback(traverseContext, children,
16571
- // If it's the only child, treat the name as if it was wrapped in an array
16572
- // so that it's consistent if the number of children grows.
16573
- nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
16574
- return 1;
16575
- }
16576
-
16577
- var child;
16578
- var nextName;
16579
- var subtreeCount = 0; // Count of children found in the current subtree.
16580
- var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
16581
-
16582
- if (Array.isArray(children)) {
16583
- for (var i = 0; i < children.length; i++) {
16584
- child = children[i];
16585
- nextName = nextNamePrefix + getComponentKey(child, i);
16586
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
16587
- }
16588
- } else {
16589
- var iteratorFn = getIteratorFn(children);
16590
- if (iteratorFn) {
16591
- var iterator = iteratorFn.call(children);
16592
- var step;
16593
- if (iteratorFn !== children.entries) {
16594
- var ii = 0;
16595
- while (!(step = iterator.next()).done) {
16596
- child = step.value;
16597
- nextName = nextNamePrefix + getComponentKey(child, ii++);
16598
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
16599
- }
16600
- } else {
16601
- if (process.env.NODE_ENV !== 'production') {
16602
- var mapsAsChildrenAddendum = '';
16603
- if (ReactCurrentOwner.current) {
16604
- var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();
16605
- if (mapsAsChildrenOwnerName) {
16606
- mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';
16607
- }
16608
- }
16609
- process.env.NODE_ENV !== '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;
16610
- didWarnAboutMaps = true;
16611
- }
16612
- // Iterator will provide entry [k,v] tuples rather than values.
16613
- while (!(step = iterator.next()).done) {
16614
- var entry = step.value;
16615
- if (entry) {
16616
- child = entry[1];
16617
- nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);
16618
- subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
16619
- }
16620
- }
16621
- }
16622
- } else if (type === 'object') {
16623
- var addendum = '';
16624
- if (process.env.NODE_ENV !== 'production') {
16625
- 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.';
16626
- if (children._isReactElement) {
16627
- 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.';
16628
- }
16629
- if (ReactCurrentOwner.current) {
16630
- var name = ReactCurrentOwner.current.getName();
16631
- if (name) {
16632
- addendum += ' Check the render method of `' + name + '`.';
16633
- }
16634
- }
16635
- }
16636
- var childrenString = String(children);
16637
- true ? process.env.NODE_ENV !== '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;
16638
- }
16639
- }
16640
-
16641
- return subtreeCount;
16642
- }
16643
-
16644
- /**
16645
- * Traverses children that are typically specified as `props.children`, but
16646
- * might also be specified through attributes:
16647
- *
16648
- * - `traverseAllChildren(this.props.children, ...)`
16649
- * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
16650
- *
16651
- * The `traverseContext` is an optional argument that is passed through the
16652
- * entire traversal. It can be used to store accumulations or anything else that
16653
- * the callback might find relevant.
16654
- *
16655
- * @param {?*} children Children tree object.
16656
- * @param {!function} callback To invoke upon traversing each child.
16657
- * @param {?*} traverseContext Context for traversal.
16658
- * @return {!number} The number of children in this subtree.
16659
- */
16660
- function traverseAllChildren(children, callback, traverseContext) {
16661
- if (children == null) {
16662
- return 0;
16663
- }
16664
-
16665
- return traverseAllChildrenImpl(children, '', callback, traverseContext);
16666
- }
16667
-
16668
- module.exports = traverseAllChildren;
16669
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16670
-
16671
- /***/ },
16672
- /* 132 */
16673
- /***/ function(module, exports) {
16674
-
16675
- /**
16676
- * Copyright 2014-present, Facebook, Inc.
16677
- * All rights reserved.
16678
- *
16679
- * This source code is licensed under the BSD-style license found in the
16680
- * LICENSE file in the root directory of this source tree. An additional grant
16681
- * of patent rights can be found in the PATENTS file in the same directory.
16682
- *
16683
- *
16684
- */
16685
-
16686
- 'use strict';
16687
-
16688
- // The Symbol used to tag the ReactElement type. If there is no native Symbol
16689
- // nor polyfill, then a plain number is used for performance.
16690
-
16691
- var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
16692
-
16693
- module.exports = REACT_ELEMENT_TYPE;
16694
-
16695
- /***/ },
16696
- /* 133 */
16697
- /***/ function(module, exports) {
16698
-
16699
- /**
16700
- * Copyright 2013-present, Facebook, Inc.
16701
- * All rights reserved.
16702
- *
16703
- * This source code is licensed under the BSD-style license found in the
16704
- * LICENSE file in the root directory of this source tree. An additional grant
16705
- * of patent rights can be found in the PATENTS file in the same directory.
16706
- *
16707
- *
16708
- */
16709
-
16710
- 'use strict';
16711
-
16712
- /* global Symbol */
16713
-
16714
- var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
16715
- var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
16716
-
16717
- /**
16718
- * Returns the iterator method function contained on the iterable object.
16719
- *
16720
- * Be sure to invoke the function with the iterable as context:
16721
- *
16722
- * var iteratorFn = getIteratorFn(myIterable);
16723
- * if (iteratorFn) {
16724
- * var iterator = iteratorFn.call(myIterable);
16725
- * ...
16726
- * }
16727
- *
16728
- * @param {?object} maybeIterable
16729
- * @return {?function}
16730
- */
16731
- function getIteratorFn(maybeIterable) {
16732
- var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
16733
- if (typeof iteratorFn === 'function') {
16734
- return iteratorFn;
16735
- }
16736
- }
16737
-
16738
- module.exports = getIteratorFn;
16739
-
16740
- /***/ },
16741
- /* 134 */
16742
- /***/ function(module, exports, __webpack_require__) {
16743
-
16744
- /* WEBPACK VAR INJECTION */(function(process) {/**
16745
- * Copyright 2013-present, Facebook, Inc.
16746
- * All rights reserved.
16747
- *
16748
- * This source code is licensed under the BSD-style license found in the
16749
- * LICENSE file in the root directory of this source tree. An additional grant
16750
- * of patent rights can be found in the PATENTS file in the same directory.
16751
- *
16752
- *
16753
- */
16754
-
16755
- 'use strict';
16756
-
16757
- var KeyEscapeUtils = __webpack_require__(130);
16758
- var traverseAllChildren = __webpack_require__(131);
16759
- var warning = __webpack_require__(12);
16760
-
16761
- var ReactComponentTreeHook;
16762
-
16763
- if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {
16764
- // Temporary hack.
16765
- // Inline requires don't work well with Jest:
16766
- // https://github.com/facebook/react/issues/7240
16767
- // Remove the inline requires when we don't need them anymore:
16768
- // https://github.com/facebook/react/pull/7178
16769
- ReactComponentTreeHook = __webpack_require__(27);
16770
- }
16771
-
16772
- /**
16773
- * @param {function} traverseContext Context passed through traversal.
16774
- * @param {?ReactComponent} child React child component.
16775
- * @param {!string} name String name of key path to child.
16776
- * @param {number=} selfDebugID Optional debugID of the current internal instance.
16777
- */
16778
- function flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {
16779
- // We found a component instance.
16780
- if (traverseContext && typeof traverseContext === 'object') {
16781
- var result = traverseContext;
16782
- var keyUnique = result[name] === undefined;
16783
- if (process.env.NODE_ENV !== 'production') {
16784
- if (!ReactComponentTreeHook) {
16785
- ReactComponentTreeHook = __webpack_require__(27);
16786
- }
16787
- if (!keyUnique) {
16788
- process.env.NODE_ENV !== '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;
16789
- }
16790
- }
16791
- if (keyUnique && child != null) {
16792
- result[name] = child;
16793
- }
16794
- }
16795
- }
16796
-
16797
- /**
16798
- * Flattens children that are typically specified as `props.children`. Any null
16799
- * children will not be included in the resulting object.
16800
- * @return {!object} flattened children keyed by name.
16801
- */
16802
- function flattenChildren(children, selfDebugID) {
16803
- if (children == null) {
16804
- return children;
16805
- }
16806
- var result = {};
16807
-
16808
- if (process.env.NODE_ENV !== 'production') {
16809
- traverseAllChildren(children, function (traverseContext, child, name) {
16810
- return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);
16811
- }, result);
16812
- } else {
16813
- traverseAllChildren(children, flattenSingleChildIntoContext, result);
16814
- }
16815
- return result;
16816
- }
16817
-
16818
- module.exports = flattenChildren;
16819
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16820
-
16821
- /***/ },
16822
- /* 135 */
16823
- /***/ function(module, exports, __webpack_require__) {
16824
-
16825
- /* WEBPACK VAR INJECTION */(function(process) {/**
16826
- * Copyright 2014-present, Facebook, Inc.
16827
- * All rights reserved.
16828
- *
16829
- * This source code is licensed under the BSD-style license found in the
16830
- * LICENSE file in the root directory of this source tree. An additional grant
16831
- * of patent rights can be found in the PATENTS file in the same directory.
16832
- *
16833
- */
16834
-
16835
- 'use strict';
16836
-
16837
- var _assign = __webpack_require__(51);
16838
-
16839
- var PooledClass = __webpack_require__(52);
16840
- var Transaction = __webpack_require__(70);
16841
- var ReactInstrumentation = __webpack_require__(64);
16842
- var ReactServerUpdateQueue = __webpack_require__(136);
16843
-
16844
- /**
16845
- * Executed within the scope of the `Transaction` instance. Consider these as
16846
- * being member methods, but with an implied ordering while being isolated from
16847
- * each other.
16848
- */
16849
- var TRANSACTION_WRAPPERS = [];
16850
-
16851
- if (process.env.NODE_ENV !== 'production') {
16852
- TRANSACTION_WRAPPERS.push({
16853
- initialize: ReactInstrumentation.debugTool.onBeginFlush,
16854
- close: ReactInstrumentation.debugTool.onEndFlush
16855
- });
16856
- }
16857
-
16858
- var noopCallbackQueue = {
16859
- enqueue: function () {}
16860
- };
16861
-
16862
- /**
16863
- * @class ReactServerRenderingTransaction
16864
- * @param {boolean} renderToStaticMarkup
16865
- */
16866
- function ReactServerRenderingTransaction(renderToStaticMarkup) {
16867
- this.reinitializeTransaction();
16868
- this.renderToStaticMarkup = renderToStaticMarkup;
16869
- this.useCreateElement = false;
16870
- this.updateQueue = new ReactServerUpdateQueue(this);
16871
- }
16872
-
16873
- var Mixin = {
16874
- /**
16875
- * @see Transaction
16876
- * @abstract
16877
- * @final
16878
- * @return {array} Empty list of operation wrap procedures.
16879
- */
16880
- getTransactionWrappers: function () {
16881
- return TRANSACTION_WRAPPERS;
16882
- },
16883
-
16884
- /**
16885
- * @return {object} The queue to collect `onDOMReady` callbacks with.
16886
- */
16887
- getReactMountReady: function () {
16888
- return noopCallbackQueue;
16889
- },
16890
-
16891
- /**
16892
- * @return {object} The queue to collect React async events.
16893
- */
16894
- getUpdateQueue: function () {
16895
- return this.updateQueue;
16896
- },
16897
-
16898
- /**
16899
- * `PooledClass` looks for this, and will invoke this before allowing this
16900
- * instance to be reused.
16901
- */
16902
- destructor: function () {},
16903
-
16904
- checkpoint: function () {},
16905
-
16906
- rollback: function () {}
16907
- };
16908
-
16909
- _assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);
16910
-
16911
- PooledClass.addPoolingTo(ReactServerRenderingTransaction);
16912
-
16913
- module.exports = ReactServerRenderingTransaction;
16914
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
16915
-
16916
- /***/ },
16917
- /* 136 */
16918
- /***/ function(module, exports, __webpack_require__) {
16919
-
16920
- /* WEBPACK VAR INJECTION */(function(process) {/**
16921
- * Copyright 2015-present, Facebook, Inc.
16922
- * All rights reserved.
16923
- *
16924
- * This source code is licensed under the BSD-style license found in the
16925
- * LICENSE file in the root directory of this source tree. An additional grant
16926
- * of patent rights can be found in the PATENTS file in the same directory.
16927
- *
16928
- *
16929
- */
16930
-
16931
- 'use strict';
16932
-
16933
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
16934
-
16935
- var ReactUpdateQueue = __webpack_require__(137);
16936
-
16937
- var warning = __webpack_require__(12);
16938
-
16939
- function warnNoop(publicInstance, callerName) {
16940
- if (process.env.NODE_ENV !== 'production') {
16941
- var constructor = publicInstance.constructor;
16942
- process.env.NODE_ENV !== '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;
16943
- }
16944
- }
16945
-
16946
- /**
16947
- * This is the update queue used for server rendering.
16948
- * It delegates to ReactUpdateQueue while server rendering is in progress and
16949
- * switches to ReactNoopUpdateQueue after the transaction has completed.
16950
- * @class ReactServerUpdateQueue
16951
- * @param {Transaction} transaction
16952
- */
16953
-
16954
- var ReactServerUpdateQueue = function () {
16955
- function ReactServerUpdateQueue(transaction) {
16956
- _classCallCheck(this, ReactServerUpdateQueue);
16957
-
16958
- this.transaction = transaction;
16959
- }
16960
-
16961
- /**
16962
- * Checks whether or not this composite component is mounted.
16963
- * @param {ReactClass} publicInstance The instance we want to test.
16964
- * @return {boolean} True if mounted, false otherwise.
16965
- * @protected
16966
- * @final
16967
- */
16968
-
16969
-
16970
- ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {
16971
- return false;
16972
- };
16973
-
16974
- /**
16975
- * Enqueue a callback that will be executed after all the pending updates
16976
- * have processed.
16977
- *
16978
- * @param {ReactClass} publicInstance The instance to use as `this` context.
16979
- * @param {?function} callback Called after state is updated.
16980
- * @internal
16981
- */
16982
-
16983
-
16984
- ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {
16985
- if (this.transaction.isInTransaction()) {
16986
- ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);
16987
- }
16988
- };
16989
-
16990
- /**
16991
- * Forces an update. This should only be invoked when it is known with
16992
- * certainty that we are **not** in a DOM transaction.
16993
- *
16994
- * You may want to call this when you know that some deeper aspect of the
16995
- * component's state has changed but `setState` was not called.
16996
- *
16997
- * This will not invoke `shouldComponentUpdate`, but it will invoke
16998
- * `componentWillUpdate` and `componentDidUpdate`.
16999
- *
17000
- * @param {ReactClass} publicInstance The instance that should rerender.
17001
- * @internal
17002
- */
17003
-
17004
-
17005
- ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {
17006
- if (this.transaction.isInTransaction()) {
17007
- ReactUpdateQueue.enqueueForceUpdate(publicInstance);
17008
- } else {
17009
- warnNoop(publicInstance, 'forceUpdate');
17010
- }
17011
- };
17012
-
17013
- /**
17014
- * Replaces all of the state. Always use this or `setState` to mutate state.
17015
- * You should treat `this.state` as immutable.
17016
- *
17017
- * There is no guarantee that `this.state` will be immediately updated, so
17018
- * accessing `this.state` after calling this method may return the old value.
17019
- *
17020
- * @param {ReactClass} publicInstance The instance that should rerender.
17021
- * @param {object|function} completeState Next state.
17022
- * @internal
17023
- */
17024
-
17025
-
17026
- ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {
17027
- if (this.transaction.isInTransaction()) {
17028
- ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);
17029
- } else {
17030
- warnNoop(publicInstance, 'replaceState');
17031
- }
17032
- };
17033
-
17034
- /**
17035
- * Sets a subset of the state. This only exists because _pendingState is
17036
- * internal. This provides a merging strategy that is not available to deep
17037
- * properties which is confusing. TODO: Expose pendingState or don't use it
17038
- * during the merge.
17039
- *
17040
- * @param {ReactClass} publicInstance The instance that should rerender.
17041
- * @param {object|function} partialState Next partial state to be merged with state.
17042
- * @internal
17043
- */
17044
-
17045
-
17046
- ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {
17047
- if (this.transaction.isInTransaction()) {
17048
- ReactUpdateQueue.enqueueSetState(publicInstance, partialState);
17049
- } else {
17050
- warnNoop(publicInstance, 'setState');
17051
- }
17052
- };
17053
-
17054
- return ReactServerUpdateQueue;
17055
- }();
17056
-
17057
- module.exports = ReactServerUpdateQueue;
17058
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
17059
-
17060
- /***/ },
17061
- /* 137 */
17062
- /***/ function(module, exports, __webpack_require__) {
17063
-
17064
- /* WEBPACK VAR INJECTION */(function(process) {/**
17065
- * Copyright 2015-present, Facebook, Inc.
17066
- * All rights reserved.
17067
- *
17068
- * This source code is licensed under the BSD-style license found in the
17069
- * LICENSE file in the root directory of this source tree. An additional grant
17070
- * of patent rights can be found in the PATENTS file in the same directory.
17071
- *
17072
- */
17073
-
17074
- 'use strict';
17075
-
17076
- var _prodInvariant = __webpack_require__(36);
17077
-
17078
- var ReactCurrentOwner = __webpack_require__(11);
17079
- var ReactInstanceMap = __webpack_require__(118);
17080
- var ReactInstrumentation = __webpack_require__(64);
17081
- var ReactUpdates = __webpack_require__(58);
17082
-
17083
- var invariant = __webpack_require__(9);
17084
- var warning = __webpack_require__(12);
17085
-
17086
- function enqueueUpdate(internalInstance) {
17087
- ReactUpdates.enqueueUpdate(internalInstance);
17088
- }
17089
-
17090
- function formatUnexpectedArgument(arg) {
17091
- var type = typeof arg;
17092
- if (type !== 'object') {
17093
- return type;
17094
- }
17095
- var displayName = arg.constructor && arg.constructor.name || type;
17096
- var keys = Object.keys(arg);
17097
- if (keys.length > 0 && keys.length < 20) {
17098
- return displayName + ' (keys: ' + keys.join(', ') + ')';
17099
- }
17100
- return displayName;
17101
- }
17102
-
17103
- function getInternalInstanceReadyForUpdate(publicInstance, callerName) {
17104
- var internalInstance = ReactInstanceMap.get(publicInstance);
17105
- if (!internalInstance) {
17106
- if (process.env.NODE_ENV !== 'production') {
17107
- var ctor = publicInstance.constructor;
17108
- // Only warn when we have a callerName. Otherwise we should be silent.
17109
- // We're probably calling from enqueueCallback. We don't want to warn
17110
- // there because we already warned for the corresponding lifecycle method.
17111
- process.env.NODE_ENV !== '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;
17112
- }
17113
- return null;
17114
- }
17115
-
17116
- if (process.env.NODE_ENV !== 'production') {
17117
- process.env.NODE_ENV !== '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;
17118
- }
17119
-
17120
- return internalInstance;
17121
- }
17122
-
17123
- /**
17124
- * ReactUpdateQueue allows for state updates to be scheduled into a later
17125
- * reconciliation step.
17126
- */
17127
- var ReactUpdateQueue = {
17128
-
17129
- /**
17130
- * Checks whether or not this composite component is mounted.
17131
- * @param {ReactClass} publicInstance The instance we want to test.
17132
- * @return {boolean} True if mounted, false otherwise.
17133
- * @protected
17134
- * @final
17135
- */
17136
- isMounted: function (publicInstance) {
17137
- if (process.env.NODE_ENV !== 'production') {
17138
- var owner = ReactCurrentOwner.current;
17139
- if (owner !== null) {
17140
- process.env.NODE_ENV !== '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;
17141
- owner._warnedAboutRefsInRender = true;
17142
- }
17143
- }
17144
- var internalInstance = ReactInstanceMap.get(publicInstance);
17145
- if (internalInstance) {
17146
- // During componentWillMount and render this will still be null but after
17147
- // that will always render to something. At least for now. So we can use
17148
- // this hack.
17149
- return !!internalInstance._renderedComponent;
17150
- } else {
17151
- return false;
17152
- }
17153
- },
17154
-
17155
- /**
17156
- * Enqueue a callback that will be executed after all the pending updates
17157
- * have processed.
17158
- *
17159
- * @param {ReactClass} publicInstance The instance to use as `this` context.
17160
- * @param {?function} callback Called after state is updated.
17161
- * @param {string} callerName Name of the calling function in the public API.
17162
- * @internal
17163
- */
17164
- enqueueCallback: function (publicInstance, callback, callerName) {
17165
- ReactUpdateQueue.validateCallback(callback, callerName);
17166
- var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);
17167
-
17168
- // Previously we would throw an error if we didn't have an internal
17169
- // instance. Since we want to make it a no-op instead, we mirror the same
17170
- // behavior we have in other enqueue* methods.
17171
- // We also need to ignore callbacks in componentWillMount. See
17172
- // enqueueUpdates.
17173
- if (!internalInstance) {
17174
- return null;
17175
- }
17176
-
17177
- if (internalInstance._pendingCallbacks) {
17178
- internalInstance._pendingCallbacks.push(callback);
17179
- } else {
17180
- internalInstance._pendingCallbacks = [callback];
17181
- }
17182
- // TODO: The callback here is ignored when setState is called from
17183
- // componentWillMount. Either fix it or disallow doing so completely in
17184
- // favor of getInitialState. Alternatively, we can disallow
17185
- // componentWillMount during server-side rendering.
17186
- enqueueUpdate(internalInstance);
17187
- },
17188
-
17189
- enqueueCallbackInternal: function (internalInstance, callback) {
17190
- if (internalInstance._pendingCallbacks) {
17191
- internalInstance._pendingCallbacks.push(callback);
17192
- } else {
17193
- internalInstance._pendingCallbacks = [callback];
17194
- }
17195
- enqueueUpdate(internalInstance);
17196
- },
17197
-
17198
- /**
17199
- * Forces an update. This should only be invoked when it is known with
17200
- * certainty that we are **not** in a DOM transaction.
17201
- *
17202
- * You may want to call this when you know that some deeper aspect of the
17203
- * component's state has changed but `setState` was not called.
17204
- *
17205
- * This will not invoke `shouldComponentUpdate`, but it will invoke
17206
- * `componentWillUpdate` and `componentDidUpdate`.
17207
- *
17208
- * @param {ReactClass} publicInstance The instance that should rerender.
17209
- * @internal
17210
- */
17211
- enqueueForceUpdate: function (publicInstance) {
17212
- var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');
17213
-
17214
- if (!internalInstance) {
17215
- return;
17216
- }
17217
-
17218
- internalInstance._pendingForceUpdate = true;
17219
-
17220
- enqueueUpdate(internalInstance);
17221
- },
17222
-
17223
- /**
17224
- * Replaces all of the state. Always use this or `setState` to mutate state.
17225
- * You should treat `this.state` as immutable.
17226
- *
17227
- * There is no guarantee that `this.state` will be immediately updated, so
17228
- * accessing `this.state` after calling this method may return the old value.
17229
- *
17230
- * @param {ReactClass} publicInstance The instance that should rerender.
17231
- * @param {object} completeState Next state.
17232
- * @internal
17233
- */
17234
- enqueueReplaceState: function (publicInstance, completeState) {
17235
- var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');
17236
-
17237
- if (!internalInstance) {
17238
- return;
17239
- }
17240
-
17241
- internalInstance._pendingStateQueue = [completeState];
17242
- internalInstance._pendingReplaceState = true;
17243
-
17244
- enqueueUpdate(internalInstance);
17245
- },
17246
-
17247
- /**
17248
- * Sets a subset of the state. This only exists because _pendingState is
17249
- * internal. This provides a merging strategy that is not available to deep
17250
- * properties which is confusing. TODO: Expose pendingState or don't use it
17251
- * during the merge.
17252
- *
17253
- * @param {ReactClass} publicInstance The instance that should rerender.
17254
- * @param {object} partialState Next partial state to be merged with state.
17255
- * @internal
17256
- */
17257
- enqueueSetState: function (publicInstance, partialState) {
17258
- if (process.env.NODE_ENV !== 'production') {
17259
- ReactInstrumentation.debugTool.onSetState();
17260
- process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;
17261
- }
17262
-
17263
- var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');
17264
-
17265
- if (!internalInstance) {
17266
- return;
17267
- }
17268
-
17269
- var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);
17270
- queue.push(partialState);
17271
-
17272
- enqueueUpdate(internalInstance);
17273
- },
17274
-
17275
- enqueueElementInternal: function (internalInstance, nextElement, nextContext) {
17276
- internalInstance._pendingElement = nextElement;
17277
- // TODO: introduce _pendingContext instead of setting it directly.
17278
- internalInstance._context = nextContext;
17279
- enqueueUpdate(internalInstance);
17280
- },
17281
-
17282
- validateCallback: function (callback, callerName) {
17283
- !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== '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;
17284
- }
17285
-
17286
- };
17287
-
17288
- module.exports = ReactUpdateQueue;
17289
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
17290
-
17291
- /***/ },
17292
- /* 138 */
17293
- /***/ function(module, exports, __webpack_require__) {
17294
-
17295
- /* WEBPACK VAR INJECTION */(function(process) {/**
17296
- * Copyright 2015-present, Facebook, Inc.
17297
- * All rights reserved.
17298
- *
17299
- * This source code is licensed under the BSD-style license found in the
17300
- * LICENSE file in the root directory of this source tree. An additional grant
17301
- * of patent rights can be found in the PATENTS file in the same directory.
17302
- *
17303
- */
17304
-
17305
- 'use strict';
17306
-
17307
- var _assign = __webpack_require__(51);
17308
-
17309
- var emptyFunction = __webpack_require__(13);
17310
- var warning = __webpack_require__(12);
17311
-
17312
- var validateDOMNesting = emptyFunction;
17313
-
17314
- if (process.env.NODE_ENV !== 'production') {
17315
- // This validation code was written based on the HTML5 parsing spec:
17316
- // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
17317
- //
17318
- // Note: this does not catch all invalid nesting, nor does it try to (as it's
17319
- // not clear what practical benefit doing so provides); instead, we warn only
17320
- // for cases where the parser will give a parse tree differing from what React
17321
- // intended. For example, <b><div></div></b> is invalid but we don't warn
17322
- // because it still parses correctly; we do warn for other cases like nested
17323
- // <p> tags where the beginning of the second element implicitly closes the
17324
- // first, causing a confusing mess.
17325
-
17326
- // https://html.spec.whatwg.org/multipage/syntax.html#special
17327
- 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'];
17328
-
17329
- // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
17330
- var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',
17331
-
17332
- // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point
17333
- // TODO: Distinguish by namespace here -- for <title>, including it here
17334
- // errs on the side of fewer warnings
17335
- 'foreignObject', 'desc', 'title'];
17336
-
17337
- // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope
17338
- var buttonScopeTags = inScopeTags.concat(['button']);
17339
-
17340
- // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags
17341
- var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];
17342
-
17343
- var emptyAncestorInfo = {
17344
- current: null,
17345
-
17346
- formTag: null,
17347
- aTagInScope: null,
17348
- buttonTagInScope: null,
17349
- nobrTagInScope: null,
17350
- pTagInButtonScope: null,
17351
-
17352
- listItemTagAutoclosing: null,
17353
- dlItemTagAutoclosing: null
17354
- };
17355
-
17356
- var updatedAncestorInfo = function (oldInfo, tag, instance) {
17357
- var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);
17358
- var info = { tag: tag, instance: instance };
17359
-
17360
- if (inScopeTags.indexOf(tag) !== -1) {
17361
- ancestorInfo.aTagInScope = null;
17362
- ancestorInfo.buttonTagInScope = null;
17363
- ancestorInfo.nobrTagInScope = null;
17364
- }
17365
- if (buttonScopeTags.indexOf(tag) !== -1) {
17366
- ancestorInfo.pTagInButtonScope = null;
17367
- }
17368
-
17369
- // See rules for 'li', 'dd', 'dt' start tags in
17370
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
17371
- if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {
17372
- ancestorInfo.listItemTagAutoclosing = null;
17373
- ancestorInfo.dlItemTagAutoclosing = null;
17374
- }
17375
-
17376
- ancestorInfo.current = info;
17377
-
17378
- if (tag === 'form') {
17379
- ancestorInfo.formTag = info;
17380
- }
17381
- if (tag === 'a') {
17382
- ancestorInfo.aTagInScope = info;
17383
- }
17384
- if (tag === 'button') {
17385
- ancestorInfo.buttonTagInScope = info;
17386
- }
17387
- if (tag === 'nobr') {
17388
- ancestorInfo.nobrTagInScope = info;
17389
- }
17390
- if (tag === 'p') {
17391
- ancestorInfo.pTagInButtonScope = info;
17392
- }
17393
- if (tag === 'li') {
17394
- ancestorInfo.listItemTagAutoclosing = info;
17395
- }
17396
- if (tag === 'dd' || tag === 'dt') {
17397
- ancestorInfo.dlItemTagAutoclosing = info;
17398
- }
17399
-
17400
- return ancestorInfo;
17401
- };
17402
-
17403
- /**
17404
- * Returns whether
17405
- */
17406
- var isTagValidWithParent = function (tag, parentTag) {
17407
- // First, let's check if we're in an unusual parsing mode...
17408
- switch (parentTag) {
17409
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect
17410
- case 'select':
17411
- return tag === 'option' || tag === 'optgroup' || tag === '#text';
17412
- case 'optgroup':
17413
- return tag === 'option' || tag === '#text';
17414
- // Strictly speaking, seeing an <option> doesn't mean we're in a <select>
17415
- // but
17416
- case 'option':
17417
- return tag === '#text';
17418
-
17419
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd
17420
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption
17421
- // No special behavior since these rules fall back to "in body" mode for
17422
- // all except special table nodes which cause bad parsing behavior anyway.
17423
-
17424
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr
17425
- case 'tr':
17426
- return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';
17427
-
17428
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody
17429
- case 'tbody':
17430
- case 'thead':
17431
- case 'tfoot':
17432
- return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';
17433
-
17434
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup
17435
- case 'colgroup':
17436
- return tag === 'col' || tag === 'template';
17437
-
17438
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable
17439
- case 'table':
17440
- return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';
17441
-
17442
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead
17443
- case 'head':
17444
- return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';
17445
-
17446
- // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element
17447
- case 'html':
17448
- return tag === 'head' || tag === 'body';
17449
- case '#document':
17450
- return tag === 'html';
17451
- }
17452
-
17453
- // Probably in the "in body" parsing mode, so we outlaw only tag combos
17454
- // where the parsing rules cause implicit opens or closes to be added.
17455
- // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
17456
- switch (tag) {
17457
- case 'h1':
17458
- case 'h2':
17459
- case 'h3':
17460
- case 'h4':
17461
- case 'h5':
17462
- case 'h6':
17463
- return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';
17464
-
17465
- case 'rp':
17466
- case 'rt':
17467
- return impliedEndTags.indexOf(parentTag) === -1;
17468
-
17469
- case 'body':
17470
- case 'caption':
17471
- case 'col':
17472
- case 'colgroup':
17473
- case 'frame':
17474
- case 'head':
17475
- case 'html':
17476
- case 'tbody':
17477
- case 'td':
17478
- case 'tfoot':
17479
- case 'th':
17480
- case 'thead':
17481
- case 'tr':
17482
- // These tags are only valid with a few parents that have special child
17483
- // parsing rules -- if we're down here, then none of those matched and
17484
- // so we allow it only if we don't know what the parent is, as all other
17485
- // cases are invalid.
17486
- return parentTag == null;
17487
- }
17488
-
17489
- return true;
17490
- };
17491
-
17492
- /**
17493
- * Returns whether
17494
- */
17495
- var findInvalidAncestorForTag = function (tag, ancestorInfo) {
17496
- switch (tag) {
17497
- case 'address':
17498
- case 'article':
17499
- case 'aside':
17500
- case 'blockquote':
17501
- case 'center':
17502
- case 'details':
17503
- case 'dialog':
17504
- case 'dir':
17505
- case 'div':
17506
- case 'dl':
17507
- case 'fieldset':
17508
- case 'figcaption':
17509
- case 'figure':
17510
- case 'footer':
17511
- case 'header':
17512
- case 'hgroup':
17513
- case 'main':
17514
- case 'menu':
17515
- case 'nav':
17516
- case 'ol':
17517
- case 'p':
17518
- case 'section':
17519
- case 'summary':
17520
- case 'ul':
17521
-
17522
- case 'pre':
17523
- case 'listing':
17524
-
17525
- case 'table':
17526
-
17527
- case 'hr':
17528
-
17529
- case 'xmp':
17530
-
17531
- case 'h1':
17532
- case 'h2':
17533
- case 'h3':
17534
- case 'h4':
17535
- case 'h5':
17536
- case 'h6':
17537
- return ancestorInfo.pTagInButtonScope;
17538
-
17539
- case 'form':
17540
- return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;
17541
-
17542
- case 'li':
17543
- return ancestorInfo.listItemTagAutoclosing;
17544
-
17545
- case 'dd':
17546
- case 'dt':
17547
- return ancestorInfo.dlItemTagAutoclosing;
17548
-
17549
- case 'button':
17550
- return ancestorInfo.buttonTagInScope;
17551
-
17552
- case 'a':
17553
- // Spec says something about storing a list of markers, but it sounds
17554
- // equivalent to this check.
17555
- return ancestorInfo.aTagInScope;
17556
-
17557
- case 'nobr':
17558
- return ancestorInfo.nobrTagInScope;
17559
- }
17560
-
17561
- return null;
17562
- };
17563
-
17564
- /**
17565
- * Given a ReactCompositeComponent instance, return a list of its recursive
17566
- * owners, starting at the root and ending with the instance itself.
17567
- */
17568
- var findOwnerStack = function (instance) {
17569
- if (!instance) {
17570
- return [];
17571
- }
17572
-
17573
- var stack = [];
17574
- do {
17575
- stack.push(instance);
17576
- } while (instance = instance._currentElement._owner);
17577
- stack.reverse();
17578
- return stack;
17579
- };
17580
-
17581
- var didWarn = {};
17582
-
17583
- validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {
17584
- ancestorInfo = ancestorInfo || emptyAncestorInfo;
17585
- var parentInfo = ancestorInfo.current;
17586
- var parentTag = parentInfo && parentInfo.tag;
17587
-
17588
- if (childText != null) {
17589
- process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;
17590
- childTag = '#text';
17591
- }
17592
-
17593
- var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;
17594
- var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);
17595
- var problematic = invalidParent || invalidAncestor;
17596
-
17597
- if (problematic) {
17598
- var ancestorTag = problematic.tag;
17599
- var ancestorInstance = problematic.instance;
17600
-
17601
- var childOwner = childInstance && childInstance._currentElement._owner;
17602
- var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;
17603
-
17604
- var childOwners = findOwnerStack(childOwner);
17605
- var ancestorOwners = findOwnerStack(ancestorOwner);
17606
-
17607
- var minStackLen = Math.min(childOwners.length, ancestorOwners.length);
17608
- var i;
17609
-
17610
- var deepestCommon = -1;
17611
- for (i = 0; i < minStackLen; i++) {
17612
- if (childOwners[i] === ancestorOwners[i]) {
17613
- deepestCommon = i;
17614
- } else {
17615
- break;
17616
- }
17617
- }
17618
-
17619
- var UNKNOWN = '(unknown)';
17620
- var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {
17621
- return inst.getName() || UNKNOWN;
17622
- });
17623
- var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {
17624
- return inst.getName() || UNKNOWN;
17625
- });
17626
- var ownerInfo = [].concat(
17627
- // If the parent and child instances have a common owner ancestor, start
17628
- // with that -- otherwise we just start with the parent's owners.
17629
- deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,
17630
- // If we're warning about an invalid (non-parent) ancestry, add '...'
17631
- invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');
17632
-
17633
- var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;
17634
- if (didWarn[warnKey]) {
17635
- return;
17636
- }
17637
- didWarn[warnKey] = true;
17638
-
17639
- var tagDisplayName = childTag;
17640
- var whitespaceInfo = '';
17641
- if (childTag === '#text') {
17642
- if (/\S/.test(childText)) {
17643
- tagDisplayName = 'Text nodes';
17644
- } else {
17645
- tagDisplayName = 'Whitespace text nodes';
17646
- whitespaceInfo = ' Make sure you don\'t have any extra whitespace between tags on ' + 'each line of your source code.';
17647
- }
17648
- } else {
17649
- tagDisplayName = '<' + childTag + '>';
17650
- }
17651
-
17652
- if (invalidParent) {
17653
- var info = '';
17654
- if (ancestorTag === 'table' && childTag === 'tr') {
17655
- info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';
17656
- }
17657
- process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;
17658
- } else {
17659
- process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;
17660
- }
17661
- }
17662
- };
17663
-
17664
- validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;
17665
-
17666
- // For testing
17667
- validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {
17668
- ancestorInfo = ancestorInfo || emptyAncestorInfo;
17669
- var parentInfo = ancestorInfo.current;
17670
- var parentTag = parentInfo && parentInfo.tag;
17671
- return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);
17672
- };
17673
- }
17674
-
17675
- module.exports = validateDOMNesting;
17676
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
17677
-
17678
- /***/ },
17679
- /* 139 */
17680
- /***/ function(module, exports, __webpack_require__) {
17681
-
17682
- /**
17683
- * Copyright 2014-present, Facebook, Inc.
17684
- * All rights reserved.
17685
- *
17686
- * This source code is licensed under the BSD-style license found in the
17687
- * LICENSE file in the root directory of this source tree. An additional grant
17688
- * of patent rights can be found in the PATENTS file in the same directory.
17689
- *
17690
- */
17691
-
17692
- 'use strict';
17693
-
17694
- var _assign = __webpack_require__(51);
17695
-
17696
- var DOMLazyTree = __webpack_require__(83);
17697
- var ReactDOMComponentTree = __webpack_require__(35);
17698
-
17699
- var ReactDOMEmptyComponent = function (instantiate) {
17700
- // ReactCompositeComponent uses this:
17701
- this._currentElement = null;
17702
- // ReactDOMComponentTree uses these:
17703
- this._hostNode = null;
17704
- this._hostParent = null;
17705
- this._hostContainerInfo = null;
17706
- this._domID = 0;
17707
- };
17708
- _assign(ReactDOMEmptyComponent.prototype, {
17709
- mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
17710
- var domID = hostContainerInfo._idCounter++;
17711
- this._domID = domID;
17712
- this._hostParent = hostParent;
17713
- this._hostContainerInfo = hostContainerInfo;
17714
-
17715
- var nodeValue = ' react-empty: ' + this._domID + ' ';
17716
- if (transaction.useCreateElement) {
17717
- var ownerDocument = hostContainerInfo._ownerDocument;
17718
- var node = ownerDocument.createComment(nodeValue);
17719
- ReactDOMComponentTree.precacheNode(this, node);
17720
- return DOMLazyTree(node);
17721
- } else {
17722
- if (transaction.renderToStaticMarkup) {
17723
- // Normally we'd insert a comment node, but since this is a situation
17724
- // where React won't take over (static pages), we can simply return
17725
- // nothing.
17726
- return '';
17727
- }
17728
- return '<!--' + nodeValue + '-->';
17729
- }
17730
- },
17731
- receiveComponent: function () {},
17732
- getHostNode: function () {
17733
- return ReactDOMComponentTree.getNodeFromInstance(this);
17734
- },
17735
- unmountComponent: function () {
17736
- ReactDOMComponentTree.uncacheNode(this);
17737
- }
17738
- });
17739
-
17740
- module.exports = ReactDOMEmptyComponent;
17741
-
17742
- /***/ },
17743
- /* 140 */
17744
- /***/ function(module, exports, __webpack_require__) {
17745
-
17746
- /* WEBPACK VAR INJECTION */(function(process) {/**
17747
- * Copyright 2015-present, Facebook, Inc.
17748
- * All rights reserved.
17749
- *
17750
- * This source code is licensed under the BSD-style license found in the
17751
- * LICENSE file in the root directory of this source tree. An additional grant
17752
- * of patent rights can be found in the PATENTS file in the same directory.
17753
- *
17754
- */
17755
-
17756
- 'use strict';
17757
-
17758
- var _prodInvariant = __webpack_require__(36);
17759
-
17760
- var invariant = __webpack_require__(9);
17761
-
17762
- /**
17763
- * Return the lowest common ancestor of A and B, or null if they are in
17764
- * different trees.
17765
- */
17766
- function getLowestCommonAncestor(instA, instB) {
17767
- !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
17768
- !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;
17769
-
17770
- var depthA = 0;
17771
- for (var tempA = instA; tempA; tempA = tempA._hostParent) {
17772
- depthA++;
17773
- }
17774
- var depthB = 0;
17775
- for (var tempB = instB; tempB; tempB = tempB._hostParent) {
17776
- depthB++;
17777
- }
17778
-
17779
- // If A is deeper, crawl up.
17780
- while (depthA - depthB > 0) {
17781
- instA = instA._hostParent;
17782
- depthA--;
17783
- }
17784
-
17785
- // If B is deeper, crawl up.
17786
- while (depthB - depthA > 0) {
17787
- instB = instB._hostParent;
17788
- depthB--;
17789
- }
17790
-
17791
- // Walk in lockstep until we find a match.
17792
- var depth = depthA;
17793
- while (depth--) {
17794
- if (instA === instB) {
17795
- return instA;
17796
- }
17797
- instA = instA._hostParent;
17798
- instB = instB._hostParent;
17799
- }
17800
- return null;
17801
- }
17802
-
17803
- /**
17804
- * Return if A is an ancestor of B.
17805
- */
17806
- function isAncestor(instA, instB) {
17807
- !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;
17808
- !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;
17809
-
17810
- while (instB) {
17811
- if (instB === instA) {
17812
- return true;
17813
- }
17814
- instB = instB._hostParent;
17815
- }
17816
- return false;
17817
- }
17818
-
17819
- /**
17820
- * Return the parent instance of the passed-in instance.
17821
- */
17822
- function getParentInstance(inst) {
17823
- !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;
17824
-
17825
- return inst._hostParent;
17826
- }
17827
-
17828
- /**
17829
- * Simulates the traversal of a two-phase, capture/bubble event dispatch.
17830
- */
17831
- function traverseTwoPhase(inst, fn, arg) {
17832
- var path = [];
17833
- while (inst) {
17834
- path.push(inst);
17835
- inst = inst._hostParent;
17836
- }
17837
- var i;
17838
- for (i = path.length; i-- > 0;) {
17839
- fn(path[i], 'captured', arg);
17840
- }
17841
- for (i = 0; i < path.length; i++) {
17842
- fn(path[i], 'bubbled', arg);
17843
- }
17844
- }
17845
-
17846
- /**
17847
- * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that
17848
- * should would receive a `mouseEnter` or `mouseLeave` event.
17849
- *
17850
- * Does not invoke the callback on the nearest common ancestor because nothing
17851
- * "entered" or "left" that element.
17852
- */
17853
- function traverseEnterLeave(from, to, fn, argFrom, argTo) {
17854
- var common = from && to ? getLowestCommonAncestor(from, to) : null;
17855
- var pathFrom = [];
17856
- while (from && from !== common) {
17857
- pathFrom.push(from);
17858
- from = from._hostParent;
17859
- }
17860
- var pathTo = [];
17861
- while (to && to !== common) {
17862
- pathTo.push(to);
17863
- to = to._hostParent;
17864
- }
17865
- var i;
17866
- for (i = 0; i < pathFrom.length; i++) {
17867
- fn(pathFrom[i], 'bubbled', argFrom);
17868
- }
17869
- for (i = pathTo.length; i-- > 0;) {
17870
- fn(pathTo[i], 'captured', argTo);
17871
- }
17872
- }
17873
-
17874
- module.exports = {
17875
- isAncestor: isAncestor,
17876
- getLowestCommonAncestor: getLowestCommonAncestor,
17877
- getParentInstance: getParentInstance,
17878
- traverseTwoPhase: traverseTwoPhase,
17879
- traverseEnterLeave: traverseEnterLeave
17880
- };
17881
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
17882
-
17883
- /***/ },
17884
- /* 141 */
17885
- /***/ function(module, exports, __webpack_require__) {
17886
-
17887
- /* WEBPACK VAR INJECTION */(function(process) {/**
17888
- * Copyright 2013-present, Facebook, Inc.
17889
- * All rights reserved.
17890
- *
17891
- * This source code is licensed under the BSD-style license found in the
17892
- * LICENSE file in the root directory of this source tree. An additional grant
17893
- * of patent rights can be found in the PATENTS file in the same directory.
17894
- *
17895
- */
17896
-
17897
- 'use strict';
17898
-
17899
- var _prodInvariant = __webpack_require__(36),
17900
- _assign = __webpack_require__(51);
17901
-
17902
- var DOMChildrenOperations = __webpack_require__(82);
17903
- var DOMLazyTree = __webpack_require__(83);
17904
- var ReactDOMComponentTree = __webpack_require__(35);
17905
-
17906
- var escapeTextContentForBrowser = __webpack_require__(88);
17907
- var invariant = __webpack_require__(9);
17908
- var validateDOMNesting = __webpack_require__(138);
17909
-
17910
- /**
17911
- * Text nodes violate a couple assumptions that React makes about components:
17912
- *
17913
- * - When mounting text into the DOM, adjacent text nodes are merged.
17914
- * - Text nodes cannot be assigned a React root ID.
17915
- *
17916
- * This component is used to wrap strings between comment nodes so that they
17917
- * can undergo the same reconciliation that is applied to elements.
17918
- *
17919
- * TODO: Investigate representing React components in the DOM with text nodes.
17920
- *
17921
- * @class ReactDOMTextComponent
17922
- * @extends ReactComponent
17923
- * @internal
17924
- */
17925
- var ReactDOMTextComponent = function (text) {
17926
- // TODO: This is really a ReactText (ReactNode), not a ReactElement
17927
- this._currentElement = text;
17928
- this._stringText = '' + text;
17929
- // ReactDOMComponentTree uses these:
17930
- this._hostNode = null;
17931
- this._hostParent = null;
17932
-
17933
- // Properties
17934
- this._domID = 0;
17935
- this._mountIndex = 0;
17936
- this._closingComment = null;
17937
- this._commentNodes = null;
17938
- };
17939
-
17940
- _assign(ReactDOMTextComponent.prototype, {
17941
-
17942
- /**
17943
- * Creates the markup for this text node. This node is not intended to have
17944
- * any features besides containing text content.
17945
- *
17946
- * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
17947
- * @return {string} Markup for this text node.
17948
- * @internal
17949
- */
17950
- mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
17951
- if (process.env.NODE_ENV !== 'production') {
17952
- var parentInfo;
17953
- if (hostParent != null) {
17954
- parentInfo = hostParent._ancestorInfo;
17955
- } else if (hostContainerInfo != null) {
17956
- parentInfo = hostContainerInfo._ancestorInfo;
17957
- }
17958
- if (parentInfo) {
17959
- // parentInfo should always be present except for the top-level
17960
- // component when server rendering
17961
- validateDOMNesting(null, this._stringText, this, parentInfo);
17962
- }
17963
- }
17964
-
17965
- var domID = hostContainerInfo._idCounter++;
17966
- var openingValue = ' react-text: ' + domID + ' ';
17967
- var closingValue = ' /react-text ';
17968
- this._domID = domID;
17969
- this._hostParent = hostParent;
17970
- if (transaction.useCreateElement) {
17971
- var ownerDocument = hostContainerInfo._ownerDocument;
17972
- var openingComment = ownerDocument.createComment(openingValue);
17973
- var closingComment = ownerDocument.createComment(closingValue);
17974
- var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());
17975
- DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));
17976
- if (this._stringText) {
17977
- DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));
17978
- }
17979
- DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));
17980
- ReactDOMComponentTree.precacheNode(this, openingComment);
17981
- this._closingComment = closingComment;
17982
- return lazyTree;
17983
- } else {
17984
- var escapedText = escapeTextContentForBrowser(this._stringText);
17985
-
17986
- if (transaction.renderToStaticMarkup) {
17987
- // Normally we'd wrap this between comment nodes for the reasons stated
17988
- // above, but since this is a situation where React won't take over
17989
- // (static pages), we can simply return the text as it is.
17990
- return escapedText;
17991
- }
17992
-
17993
- return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';
17994
- }
17995
- },
17996
-
17997
- /**
17998
- * Updates this component by updating the text content.
17999
- *
18000
- * @param {ReactText} nextText The next text content
18001
- * @param {ReactReconcileTransaction} transaction
18002
- * @internal
18003
- */
18004
- receiveComponent: function (nextText, transaction) {
18005
- if (nextText !== this._currentElement) {
18006
- this._currentElement = nextText;
18007
- var nextStringText = '' + nextText;
18008
- if (nextStringText !== this._stringText) {
18009
- // TODO: Save this as pending props and use performUpdateIfNecessary
18010
- // and/or updateComponent to do the actual update for consistency with
18011
- // other component types?
18012
- this._stringText = nextStringText;
18013
- var commentNodes = this.getHostNode();
18014
- DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);
18015
- }
18016
- }
18017
- },
18018
-
18019
- getHostNode: function () {
18020
- var hostNode = this._commentNodes;
18021
- if (hostNode) {
18022
- return hostNode;
18023
- }
18024
- if (!this._closingComment) {
18025
- var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);
18026
- var node = openingComment.nextSibling;
18027
- while (true) {
18028
- !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;
18029
- if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {
18030
- this._closingComment = node;
18031
- break;
18032
- }
18033
- node = node.nextSibling;
18034
- }
18035
- }
18036
- hostNode = [this._hostNode, this._closingComment];
18037
- this._commentNodes = hostNode;
18038
- return hostNode;
18039
- },
18040
-
18041
- unmountComponent: function () {
18042
- this._closingComment = null;
18043
- this._commentNodes = null;
18044
- ReactDOMComponentTree.uncacheNode(this);
18045
- }
18046
-
18047
- });
18048
-
18049
- module.exports = ReactDOMTextComponent;
18050
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
18051
-
18052
- /***/ },
18053
- /* 142 */
18054
- /***/ function(module, exports, __webpack_require__) {
18055
-
18056
- /**
18057
- * Copyright 2013-present, Facebook, Inc.
18058
- * All rights reserved.
18059
- *
18060
- * This source code is licensed under the BSD-style license found in the
18061
- * LICENSE file in the root directory of this source tree. An additional grant
18062
- * of patent rights can be found in the PATENTS file in the same directory.
18063
- *
18064
- */
18065
-
18066
- 'use strict';
18067
-
18068
- var _assign = __webpack_require__(51);
18069
-
18070
- var ReactUpdates = __webpack_require__(58);
18071
- var Transaction = __webpack_require__(70);
18072
-
18073
- var emptyFunction = __webpack_require__(13);
18074
-
18075
- var RESET_BATCHED_UPDATES = {
18076
- initialize: emptyFunction,
18077
- close: function () {
18078
- ReactDefaultBatchingStrategy.isBatchingUpdates = false;
18079
- }
18080
- };
18081
-
18082
- var FLUSH_BATCHED_UPDATES = {
18083
- initialize: emptyFunction,
18084
- close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)
18085
- };
18086
-
18087
- var TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];
18088
-
18089
- function ReactDefaultBatchingStrategyTransaction() {
18090
- this.reinitializeTransaction();
18091
- }
18092
-
18093
- _assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {
18094
- getTransactionWrappers: function () {
18095
- return TRANSACTION_WRAPPERS;
18096
- }
18097
- });
18098
-
18099
- var transaction = new ReactDefaultBatchingStrategyTransaction();
18100
-
18101
- var ReactDefaultBatchingStrategy = {
18102
- isBatchingUpdates: false,
18103
-
18104
- /**
18105
- * Call the provided function in a context within which calls to `setState`
18106
- * and friends are batched such that components aren't updated unnecessarily.
18107
- */
18108
- batchedUpdates: function (callback, a, b, c, d, e) {
18109
- var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;
18110
-
18111
- ReactDefaultBatchingStrategy.isBatchingUpdates = true;
18112
-
18113
- // The code is written this way to avoid extra allocations
18114
- if (alreadyBatchingUpdates) {
18115
- return callback(a, b, c, d, e);
18116
- } else {
18117
- return transaction.perform(callback, null, a, b, c, d, e);
18118
- }
18119
- }
18120
- };
18121
-
18122
- module.exports = ReactDefaultBatchingStrategy;
18123
-
18124
- /***/ },
18125
- /* 143 */
18126
- /***/ function(module, exports, __webpack_require__) {
18127
-
18128
- /**
18129
- * Copyright 2013-present, Facebook, Inc.
18130
- * All rights reserved.
18131
- *
18132
- * This source code is licensed under the BSD-style license found in the
18133
- * LICENSE file in the root directory of this source tree. An additional grant
18134
- * of patent rights can be found in the PATENTS file in the same directory.
18135
- *
18136
- */
18137
-
18138
- 'use strict';
18139
-
18140
- var _assign = __webpack_require__(51);
18141
-
18142
- var EventListener = __webpack_require__(144);
18143
- var ExecutionEnvironment = __webpack_require__(49);
18144
- var PooledClass = __webpack_require__(52);
18145
- var ReactDOMComponentTree = __webpack_require__(35);
18146
- var ReactUpdates = __webpack_require__(58);
18147
-
18148
- var getEventTarget = __webpack_require__(71);
18149
- var getUnboundedScrollPosition = __webpack_require__(145);
18150
-
18151
- /**
18152
- * Find the deepest React component completely containing the root of the
18153
- * passed-in instance (for use when entire React trees are nested within each
18154
- * other). If React trees are not nested, returns null.
18155
- */
18156
- function findParent(inst) {
18157
- // TODO: It may be a good idea to cache this to prevent unnecessary DOM
18158
- // traversal, but caching is difficult to do correctly without using a
18159
- // mutation observer to listen for all DOM changes.
18160
- while (inst._hostParent) {
18161
- inst = inst._hostParent;
18162
- }
18163
- var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);
18164
- var container = rootNode.parentNode;
18165
- return ReactDOMComponentTree.getClosestInstanceFromNode(container);
18166
- }
18167
-
18168
- // Used to store ancestor hierarchy in top level callback
18169
- function TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {
18170
- this.topLevelType = topLevelType;
18171
- this.nativeEvent = nativeEvent;
18172
- this.ancestors = [];
18173
- }
18174
- _assign(TopLevelCallbackBookKeeping.prototype, {
18175
- destructor: function () {
18176
- this.topLevelType = null;
18177
- this.nativeEvent = null;
18178
- this.ancestors.length = 0;
18179
- }
18180
- });
18181
- PooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);
18182
-
18183
- function handleTopLevelImpl(bookKeeping) {
18184
- var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);
18185
- var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);
18186
-
18187
- // Loop through the hierarchy, in case there's any nested components.
18188
- // It's important that we build the array of ancestors before calling any
18189
- // event handlers, because event handlers can modify the DOM, leading to
18190
- // inconsistencies with ReactMount's node cache. See #1105.
18191
- var ancestor = targetInst;
18192
- do {
18193
- bookKeeping.ancestors.push(ancestor);
18194
- ancestor = ancestor && findParent(ancestor);
18195
- } while (ancestor);
18196
-
18197
- for (var i = 0; i < bookKeeping.ancestors.length; i++) {
18198
- targetInst = bookKeeping.ancestors[i];
18199
- ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));
18200
- }
18201
- }
18202
-
18203
- function scrollValueMonitor(cb) {
18204
- var scrollPosition = getUnboundedScrollPosition(window);
18205
- cb(scrollPosition);
18206
- }
18207
-
18208
- var ReactEventListener = {
18209
- _enabled: true,
18210
- _handleTopLevel: null,
18211
-
18212
- WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,
18213
-
18214
- setHandleTopLevel: function (handleTopLevel) {
18215
- ReactEventListener._handleTopLevel = handleTopLevel;
18216
- },
18217
-
18218
- setEnabled: function (enabled) {
18219
- ReactEventListener._enabled = !!enabled;
18220
- },
18221
-
18222
- isEnabled: function () {
18223
- return ReactEventListener._enabled;
18224
- },
18225
-
18226
- /**
18227
- * Traps top-level events by using event bubbling.
18228
- *
18229
- * @param {string} topLevelType Record from `EventConstants`.
18230
- * @param {string} handlerBaseName Event name (e.g. "click").
18231
- * @param {object} element Element on which to attach listener.
18232
- * @return {?object} An object with a remove function which will forcefully
18233
- * remove the listener.
18234
- * @internal
18235
- */
18236
- trapBubbledEvent: function (topLevelType, handlerBaseName, element) {
18237
- if (!element) {
18238
- return null;
18239
- }
18240
- return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));
18241
- },
18242
-
18243
- /**
18244
- * Traps a top-level event by using event capturing.
18245
- *
18246
- * @param {string} topLevelType Record from `EventConstants`.
18247
- * @param {string} handlerBaseName Event name (e.g. "click").
18248
- * @param {object} element Element on which to attach listener.
18249
- * @return {?object} An object with a remove function which will forcefully
18250
- * remove the listener.
18251
- * @internal
18252
- */
18253
- trapCapturedEvent: function (topLevelType, handlerBaseName, element) {
18254
- if (!element) {
18255
- return null;
18256
- }
18257
- return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));
18258
- },
18259
-
18260
- monitorScrollValue: function (refresh) {
18261
- var callback = scrollValueMonitor.bind(null, refresh);
18262
- EventListener.listen(window, 'scroll', callback);
18263
- },
18264
-
18265
- dispatchEvent: function (topLevelType, nativeEvent) {
18266
- if (!ReactEventListener._enabled) {
18267
- return;
18268
- }
18269
-
18270
- var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);
18271
- try {
18272
- // Event queue being processed in the same cycle allows
18273
- // `preventDefault`.
18274
- ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);
18275
- } finally {
18276
- TopLevelCallbackBookKeeping.release(bookKeeping);
18277
- }
18278
- }
18279
- };
18280
-
18281
- module.exports = ReactEventListener;
18282
-
18283
- /***/ },
18284
- /* 144 */
18285
- /***/ function(module, exports, __webpack_require__) {
18286
-
18287
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
18288
-
18289
- /**
18290
- * Copyright (c) 2013-present, Facebook, Inc.
18291
- *
18292
- * Licensed under the Apache License, Version 2.0 (the "License");
18293
- * you may not use this file except in compliance with the License.
18294
- * You may obtain a copy of the License at
18295
- *
18296
- * http://www.apache.org/licenses/LICENSE-2.0
18297
- *
18298
- * Unless required by applicable law or agreed to in writing, software
18299
- * distributed under the License is distributed on an "AS IS" BASIS,
18300
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18301
- * See the License for the specific language governing permissions and
18302
- * limitations under the License.
18303
- *
18304
- * @typechecks
18305
- */
18306
-
18307
- var emptyFunction = __webpack_require__(13);
18308
-
18309
- /**
18310
- * Upstream version of event listener. Does not take into account specific
18311
- * nature of platform.
18312
- */
18313
- var EventListener = {
18314
- /**
18315
- * Listen to DOM events during the bubble phase.
18316
- *
18317
- * @param {DOMEventTarget} target DOM element to register listener on.
18318
- * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.
18319
- * @param {function} callback Callback function.
18320
- * @return {object} Object with a `remove` method.
18321
- */
18322
- listen: function listen(target, eventType, callback) {
18323
- if (target.addEventListener) {
18324
- target.addEventListener(eventType, callback, false);
18325
- return {
18326
- remove: function remove() {
18327
- target.removeEventListener(eventType, callback, false);
18328
- }
18329
- };
18330
- } else if (target.attachEvent) {
18331
- target.attachEvent('on' + eventType, callback);
18332
- return {
18333
- remove: function remove() {
18334
- target.detachEvent('on' + eventType, callback);
18335
- }
18336
- };
18337
- }
18338
- },
18339
-
18340
- /**
18341
- * Listen to DOM events during the capture phase.
18342
- *
18343
- * @param {DOMEventTarget} target DOM element to register listener on.
18344
- * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.
18345
- * @param {function} callback Callback function.
18346
- * @return {object} Object with a `remove` method.
18347
- */
18348
- capture: function capture(target, eventType, callback) {
18349
- if (target.addEventListener) {
18350
- target.addEventListener(eventType, callback, true);
18351
- return {
18352
- remove: function remove() {
18353
- target.removeEventListener(eventType, callback, true);
18354
- }
18355
- };
18356
- } else {
18357
- if (process.env.NODE_ENV !== 'production') {
18358
- 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.');
18359
- }
18360
- return {
18361
- remove: emptyFunction
18362
- };
18363
- }
18364
- },
18365
-
18366
- registerDefault: function registerDefault() {}
18367
- };
18368
-
18369
- module.exports = EventListener;
18370
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
18371
-
18372
- /***/ },
18373
- /* 145 */
18374
- /***/ function(module, exports) {
18375
-
18376
- /**
18377
- * Copyright (c) 2013-present, Facebook, Inc.
18378
- * All rights reserved.
18379
- *
18380
- * This source code is licensed under the BSD-style license found in the
18381
- * LICENSE file in the root directory of this source tree. An additional grant
18382
- * of patent rights can be found in the PATENTS file in the same directory.
18383
- *
18384
- * @typechecks
18385
- */
18386
-
18387
- 'use strict';
18388
-
18389
- /**
18390
- * Gets the scroll position of the supplied element or window.
18391
- *
18392
- * The return values are unbounded, unlike `getScrollPosition`. This means they
18393
- * may be negative or exceed the element boundaries (which is possible using
18394
- * inertial scrolling).
18395
- *
18396
- * @param {DOMWindow|DOMElement} scrollable
18397
- * @return {object} Map with `x` and `y` keys.
18398
- */
18399
-
18400
- function getUnboundedScrollPosition(scrollable) {
18401
- if (scrollable === window) {
18402
- return {
18403
- x: window.pageXOffset || document.documentElement.scrollLeft,
18404
- y: window.pageYOffset || document.documentElement.scrollTop
18405
- };
18406
- }
18407
- return {
18408
- x: scrollable.scrollLeft,
18409
- y: scrollable.scrollTop
18410
- };
18411
- }
18412
-
18413
- module.exports = getUnboundedScrollPosition;
18414
-
18415
- /***/ },
18416
- /* 146 */
18417
- /***/ function(module, exports, __webpack_require__) {
18418
-
18419
- /**
18420
- * Copyright 2013-present, Facebook, Inc.
18421
- * All rights reserved.
18422
- *
18423
- * This source code is licensed under the BSD-style license found in the
18424
- * LICENSE file in the root directory of this source tree. An additional grant
18425
- * of patent rights can be found in the PATENTS file in the same directory.
18426
- *
18427
- */
18428
-
18429
- 'use strict';
18430
-
18431
- var DOMProperty = __webpack_require__(37);
18432
- var EventPluginHub = __webpack_require__(43);
18433
- var EventPluginUtils = __webpack_require__(45);
18434
- var ReactComponentEnvironment = __webpack_require__(117);
18435
- var ReactEmptyComponent = __webpack_require__(127);
18436
- var ReactBrowserEventEmitter = __webpack_require__(107);
18437
- var ReactHostComponent = __webpack_require__(128);
18438
- var ReactUpdates = __webpack_require__(58);
18439
-
18440
- var ReactInjection = {
18441
- Component: ReactComponentEnvironment.injection,
18442
- DOMProperty: DOMProperty.injection,
18443
- EmptyComponent: ReactEmptyComponent.injection,
18444
- EventPluginHub: EventPluginHub.injection,
18445
- EventPluginUtils: EventPluginUtils.injection,
18446
- EventEmitter: ReactBrowserEventEmitter.injection,
18447
- HostComponent: ReactHostComponent.injection,
18448
- Updates: ReactUpdates.injection
18449
- };
18450
-
18451
- module.exports = ReactInjection;
18452
-
18453
- /***/ },
18454
- /* 147 */
18455
- /***/ function(module, exports, __webpack_require__) {
18456
-
18457
- /* WEBPACK VAR INJECTION */(function(process) {/**
18458
- * Copyright 2013-present, Facebook, Inc.
18459
- * All rights reserved.
18460
- *
18461
- * This source code is licensed under the BSD-style license found in the
18462
- * LICENSE file in the root directory of this source tree. An additional grant
18463
- * of patent rights can be found in the PATENTS file in the same directory.
18464
- *
18465
- */
18466
-
18467
- 'use strict';
18468
-
18469
- var _assign = __webpack_require__(51);
18470
-
18471
- var CallbackQueue = __webpack_require__(59);
18472
- var PooledClass = __webpack_require__(52);
18473
- var ReactBrowserEventEmitter = __webpack_require__(107);
18474
- var ReactInputSelection = __webpack_require__(148);
18475
- var ReactInstrumentation = __webpack_require__(64);
18476
- var Transaction = __webpack_require__(70);
18477
- var ReactUpdateQueue = __webpack_require__(137);
18478
-
18479
- /**
18480
- * Ensures that, when possible, the selection range (currently selected text
18481
- * input) is not disturbed by performing the transaction.
18482
- */
18483
- var SELECTION_RESTORATION = {
18484
- /**
18485
- * @return {Selection} Selection information.
18486
- */
18487
- initialize: ReactInputSelection.getSelectionInformation,
18488
- /**
18489
- * @param {Selection} sel Selection information returned from `initialize`.
18490
- */
18491
- close: ReactInputSelection.restoreSelection
18492
- };
18493
-
18494
- /**
18495
- * Suppresses events (blur/focus) that could be inadvertently dispatched due to
18496
- * high level DOM manipulations (like temporarily removing a text input from the
18497
- * DOM).
18498
- */
18499
- var EVENT_SUPPRESSION = {
18500
- /**
18501
- * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before
18502
- * the reconciliation.
18503
- */
18504
- initialize: function () {
18505
- var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();
18506
- ReactBrowserEventEmitter.setEnabled(false);
18507
- return currentlyEnabled;
18508
- },
18509
-
18510
- /**
18511
- * @param {boolean} previouslyEnabled Enabled status of
18512
- * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`
18513
- * restores the previous value.
18514
- */
18515
- close: function (previouslyEnabled) {
18516
- ReactBrowserEventEmitter.setEnabled(previouslyEnabled);
18517
- }
18518
- };
18519
-
18520
- /**
18521
- * Provides a queue for collecting `componentDidMount` and
18522
- * `componentDidUpdate` callbacks during the transaction.
18523
- */
18524
- var ON_DOM_READY_QUEUEING = {
18525
- /**
18526
- * Initializes the internal `onDOMReady` queue.
18527
- */
18528
- initialize: function () {
18529
- this.reactMountReady.reset();
18530
- },
18531
-
18532
- /**
18533
- * After DOM is flushed, invoke all registered `onDOMReady` callbacks.
18534
- */
18535
- close: function () {
18536
- this.reactMountReady.notifyAll();
18537
- }
18538
- };
18539
-
18540
- /**
18541
- * Executed within the scope of the `Transaction` instance. Consider these as
18542
- * being member methods, but with an implied ordering while being isolated from
18543
- * each other.
18544
- */
18545
- var TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];
18546
-
18547
- if (process.env.NODE_ENV !== 'production') {
18548
- TRANSACTION_WRAPPERS.push({
18549
- initialize: ReactInstrumentation.debugTool.onBeginFlush,
18550
- close: ReactInstrumentation.debugTool.onEndFlush
18551
- });
18552
- }
18553
-
18554
- /**
18555
- * Currently:
18556
- * - The order that these are listed in the transaction is critical:
18557
- * - Suppresses events.
18558
- * - Restores selection range.
18559
- *
18560
- * Future:
18561
- * - Restore document/overflow scroll positions that were unintentionally
18562
- * modified via DOM insertions above the top viewport boundary.
18563
- * - Implement/integrate with customized constraint based layout system and keep
18564
- * track of which dimensions must be remeasured.
18565
- *
18566
- * @class ReactReconcileTransaction
18567
- */
18568
- function ReactReconcileTransaction(useCreateElement) {
18569
- this.reinitializeTransaction();
18570
- // Only server-side rendering really needs this option (see
18571
- // `ReactServerRendering`), but server-side uses
18572
- // `ReactServerRenderingTransaction` instead. This option is here so that it's
18573
- // accessible and defaults to false when `ReactDOMComponent` and
18574
- // `ReactDOMTextComponent` checks it in `mountComponent`.`
18575
- this.renderToStaticMarkup = false;
18576
- this.reactMountReady = CallbackQueue.getPooled(null);
18577
- this.useCreateElement = useCreateElement;
18578
- }
18579
-
18580
- var Mixin = {
18581
- /**
18582
- * @see Transaction
18583
- * @abstract
18584
- * @final
18585
- * @return {array<object>} List of operation wrap procedures.
18586
- * TODO: convert to array<TransactionWrapper>
18587
- */
18588
- getTransactionWrappers: function () {
18589
- return TRANSACTION_WRAPPERS;
18590
- },
18591
-
18592
- /**
18593
- * @return {object} The queue to collect `onDOMReady` callbacks with.
18594
- */
18595
- getReactMountReady: function () {
18596
- return this.reactMountReady;
18597
- },
18598
-
18599
- /**
18600
- * @return {object} The queue to collect React async events.
18601
- */
18602
- getUpdateQueue: function () {
18603
- return ReactUpdateQueue;
18604
- },
18605
-
18606
- /**
18607
- * Save current transaction state -- if the return value from this method is
18608
- * passed to `rollback`, the transaction will be reset to that state.
18609
- */
18610
- checkpoint: function () {
18611
- // reactMountReady is the our only stateful wrapper
18612
- return this.reactMountReady.checkpoint();
18613
- },
18614
-
18615
- rollback: function (checkpoint) {
18616
- this.reactMountReady.rollback(checkpoint);
18617
- },
18618
-
18619
- /**
18620
- * `PooledClass` looks for this, and will invoke this before allowing this
18621
- * instance to be reused.
18622
- */
18623
- destructor: function () {
18624
- CallbackQueue.release(this.reactMountReady);
18625
- this.reactMountReady = null;
18626
- }
18627
- };
18628
-
18629
- _assign(ReactReconcileTransaction.prototype, Transaction, Mixin);
18630
-
18631
- PooledClass.addPoolingTo(ReactReconcileTransaction);
18632
-
18633
- module.exports = ReactReconcileTransaction;
18634
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
18635
-
18636
- /***/ },
18637
- /* 148 */
18638
- /***/ function(module, exports, __webpack_require__) {
18639
-
18640
- /**
18641
- * Copyright 2013-present, Facebook, Inc.
18642
- * All rights reserved.
18643
- *
18644
- * This source code is licensed under the BSD-style license found in the
18645
- * LICENSE file in the root directory of this source tree. An additional grant
18646
- * of patent rights can be found in the PATENTS file in the same directory.
18647
- *
18648
- */
18649
-
18650
- 'use strict';
18651
-
18652
- var ReactDOMSelection = __webpack_require__(149);
18653
-
18654
- var containsNode = __webpack_require__(151);
18655
- var focusNode = __webpack_require__(96);
18656
- var getActiveElement = __webpack_require__(154);
18657
-
18658
- function isInDocument(node) {
18659
- return containsNode(document.documentElement, node);
18660
- }
18661
-
18662
- /**
18663
- * @ReactInputSelection: React input selection module. Based on Selection.js,
18664
- * but modified to be suitable for react and has a couple of bug fixes (doesn't
18665
- * assume buttons have range selections allowed).
18666
- * Input selection module for React.
18667
- */
18668
- var ReactInputSelection = {
18669
-
18670
- hasSelectionCapabilities: function (elem) {
18671
- var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
18672
- return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');
18673
- },
18674
-
18675
- getSelectionInformation: function () {
18676
- var focusedElem = getActiveElement();
18677
- return {
18678
- focusedElem: focusedElem,
18679
- selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null
18680
- };
18681
- },
18682
-
18683
- /**
18684
- * @restoreSelection: If any selection information was potentially lost,
18685
- * restore it. This is useful when performing operations that could remove dom
18686
- * nodes and place them back in, resulting in focus being lost.
18687
- */
18688
- restoreSelection: function (priorSelectionInformation) {
18689
- var curFocusedElem = getActiveElement();
18690
- var priorFocusedElem = priorSelectionInformation.focusedElem;
18691
- var priorSelectionRange = priorSelectionInformation.selectionRange;
18692
- if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {
18693
- if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {
18694
- ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);
18695
- }
18696
- focusNode(priorFocusedElem);
18697
- }
18698
- },
18699
-
18700
- /**
18701
- * @getSelection: Gets the selection bounds of a focused textarea, input or
18702
- * contentEditable node.
18703
- * -@input: Look up selection bounds of this input
18704
- * -@return {start: selectionStart, end: selectionEnd}
18705
- */
18706
- getSelection: function (input) {
18707
- var selection;
18708
-
18709
- if ('selectionStart' in input) {
18710
- // Modern browser with input or textarea.
18711
- selection = {
18712
- start: input.selectionStart,
18713
- end: input.selectionEnd
18714
- };
18715
- } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {
18716
- // IE8 input.
18717
- var range = document.selection.createRange();
18718
- // There can only be one selection per document in IE, so it must
18719
- // be in our element.
18720
- if (range.parentElement() === input) {
18721
- selection = {
18722
- start: -range.moveStart('character', -input.value.length),
18723
- end: -range.moveEnd('character', -input.value.length)
18724
- };
18725
- }
18726
- } else {
18727
- // Content editable or old IE textarea.
18728
- selection = ReactDOMSelection.getOffsets(input);
18729
- }
18730
-
18731
- return selection || { start: 0, end: 0 };
18732
- },
18733
-
18734
- /**
18735
- * @setSelection: Sets the selection bounds of a textarea or input and focuses
18736
- * the input.
18737
- * -@input Set selection bounds of this input or textarea
18738
- * -@offsets Object of same form that is returned from get*
18739
- */
18740
- setSelection: function (input, offsets) {
18741
- var start = offsets.start;
18742
- var end = offsets.end;
18743
- if (end === undefined) {
18744
- end = start;
18745
- }
18746
-
18747
- if ('selectionStart' in input) {
18748
- input.selectionStart = start;
18749
- input.selectionEnd = Math.min(end, input.value.length);
18750
- } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {
18751
- var range = input.createTextRange();
18752
- range.collapse(true);
18753
- range.moveStart('character', start);
18754
- range.moveEnd('character', end - start);
18755
- range.select();
18756
- } else {
18757
- ReactDOMSelection.setOffsets(input, offsets);
18758
- }
18759
- }
18760
- };
18761
-
18762
- module.exports = ReactInputSelection;
18763
-
18764
- /***/ },
18765
- /* 149 */
18766
- /***/ function(module, exports, __webpack_require__) {
18767
-
18768
- /**
18769
- * Copyright 2013-present, Facebook, Inc.
18770
- * All rights reserved.
18771
- *
18772
- * This source code is licensed under the BSD-style license found in the
18773
- * LICENSE file in the root directory of this source tree. An additional grant
18774
- * of patent rights can be found in the PATENTS file in the same directory.
18775
- *
18776
- */
18777
-
18778
- 'use strict';
18779
-
18780
- var ExecutionEnvironment = __webpack_require__(49);
18781
-
18782
- var getNodeForCharacterOffset = __webpack_require__(150);
18783
- var getTextContentAccessor = __webpack_require__(53);
18784
-
18785
- /**
18786
- * While `isCollapsed` is available on the Selection object and `collapsed`
18787
- * is available on the Range object, IE11 sometimes gets them wrong.
18788
- * If the anchor/focus nodes and offsets are the same, the range is collapsed.
18789
- */
18790
- function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {
18791
- return anchorNode === focusNode && anchorOffset === focusOffset;
18792
- }
18793
-
18794
- /**
18795
- * Get the appropriate anchor and focus node/offset pairs for IE.
18796
- *
18797
- * The catch here is that IE's selection API doesn't provide information
18798
- * about whether the selection is forward or backward, so we have to
18799
- * behave as though it's always forward.
18800
- *
18801
- * IE text differs from modern selection in that it behaves as though
18802
- * block elements end with a new line. This means character offsets will
18803
- * differ between the two APIs.
18804
- *
18805
- * @param {DOMElement} node
18806
- * @return {object}
18807
- */
18808
- function getIEOffsets(node) {
18809
- var selection = document.selection;
18810
- var selectedRange = selection.createRange();
18811
- var selectedLength = selectedRange.text.length;
18812
-
18813
- // Duplicate selection so we can move range without breaking user selection.
18814
- var fromStart = selectedRange.duplicate();
18815
- fromStart.moveToElementText(node);
18816
- fromStart.setEndPoint('EndToStart', selectedRange);
18817
-
18818
- var startOffset = fromStart.text.length;
18819
- var endOffset = startOffset + selectedLength;
18820
-
18821
- return {
18822
- start: startOffset,
18823
- end: endOffset
18824
- };
18825
- }
18826
-
18827
- /**
18828
- * @param {DOMElement} node
18829
- * @return {?object}
18830
- */
18831
- function getModernOffsets(node) {
18832
- var selection = window.getSelection && window.getSelection();
18833
-
18834
- if (!selection || selection.rangeCount === 0) {
18835
- return null;
18836
- }
18837
-
18838
- var anchorNode = selection.anchorNode;
18839
- var anchorOffset = selection.anchorOffset;
18840
- var focusNode = selection.focusNode;
18841
- var focusOffset = selection.focusOffset;
18842
-
18843
- var currentRange = selection.getRangeAt(0);
18844
-
18845
- // In Firefox, range.startContainer and range.endContainer can be "anonymous
18846
- // divs", e.g. the up/down buttons on an <input type="number">. Anonymous
18847
- // divs do not seem to expose properties, triggering a "Permission denied
18848
- // error" if any of its properties are accessed. The only seemingly possible
18849
- // way to avoid erroring is to access a property that typically works for
18850
- // non-anonymous divs and catch any error that may otherwise arise. See
18851
- // https://bugzilla.mozilla.org/show_bug.cgi?id=208427
18852
- try {
18853
- /* eslint-disable no-unused-expressions */
18854
- currentRange.startContainer.nodeType;
18855
- currentRange.endContainer.nodeType;
18856
- /* eslint-enable no-unused-expressions */
18857
- } catch (e) {
18858
- return null;
18859
- }
18860
-
18861
- // If the node and offset values are the same, the selection is collapsed.
18862
- // `Selection.isCollapsed` is available natively, but IE sometimes gets
18863
- // this value wrong.
18864
- var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);
18865
-
18866
- var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;
18867
-
18868
- var tempRange = currentRange.cloneRange();
18869
- tempRange.selectNodeContents(node);
18870
- tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);
18871
-
18872
- var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);
18873
-
18874
- var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;
18875
- var end = start + rangeLength;
18876
-
18877
- // Detect whether the selection is backward.
18878
- var detectionRange = document.createRange();
18879
- detectionRange.setStart(anchorNode, anchorOffset);
18880
- detectionRange.setEnd(focusNode, focusOffset);
18881
- var isBackward = detectionRange.collapsed;
18882
-
18883
- return {
18884
- start: isBackward ? end : start,
18885
- end: isBackward ? start : end
18886
- };
18887
- }
18888
-
18889
- /**
18890
- * @param {DOMElement|DOMTextNode} node
18891
- * @param {object} offsets
18892
- */
18893
- function setIEOffsets(node, offsets) {
18894
- var range = document.selection.createRange().duplicate();
18895
- var start, end;
18896
-
18897
- if (offsets.end === undefined) {
18898
- start = offsets.start;
18899
- end = start;
18900
- } else if (offsets.start > offsets.end) {
18901
- start = offsets.end;
18902
- end = offsets.start;
18903
- } else {
18904
- start = offsets.start;
18905
- end = offsets.end;
18906
- }
18907
-
18908
- range.moveToElementText(node);
18909
- range.moveStart('character', start);
18910
- range.setEndPoint('EndToStart', range);
18911
- range.moveEnd('character', end - start);
18912
- range.select();
18913
- }
18914
-
18915
- /**
18916
- * In modern non-IE browsers, we can support both forward and backward
18917
- * selections.
18918
- *
18919
- * Note: IE10+ supports the Selection object, but it does not support
18920
- * the `extend` method, which means that even in modern IE, it's not possible
18921
- * to programmatically create a backward selection. Thus, for all IE
18922
- * versions, we use the old IE API to create our selections.
18923
- *
18924
- * @param {DOMElement|DOMTextNode} node
18925
- * @param {object} offsets
18926
- */
18927
- function setModernOffsets(node, offsets) {
18928
- if (!window.getSelection) {
18929
- return;
18930
- }
18931
-
18932
- var selection = window.getSelection();
18933
- var length = node[getTextContentAccessor()].length;
18934
- var start = Math.min(offsets.start, length);
18935
- var end = offsets.end === undefined ? start : Math.min(offsets.end, length);
18936
-
18937
- // IE 11 uses modern selection, but doesn't support the extend method.
18938
- // Flip backward selections, so we can set with a single range.
18939
- if (!selection.extend && start > end) {
18940
- var temp = end;
18941
- end = start;
18942
- start = temp;
18943
- }
18944
-
18945
- var startMarker = getNodeForCharacterOffset(node, start);
18946
- var endMarker = getNodeForCharacterOffset(node, end);
18947
-
18948
- if (startMarker && endMarker) {
18949
- var range = document.createRange();
18950
- range.setStart(startMarker.node, startMarker.offset);
18951
- selection.removeAllRanges();
18952
-
18953
- if (start > end) {
18954
- selection.addRange(range);
18955
- selection.extend(endMarker.node, endMarker.offset);
18956
- } else {
18957
- range.setEnd(endMarker.node, endMarker.offset);
18958
- selection.addRange(range);
18959
- }
18960
- }
18961
- }
18962
-
18963
- var useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);
18964
-
18965
- var ReactDOMSelection = {
18966
- /**
18967
- * @param {DOMElement} node
18968
- */
18969
- getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,
18970
-
18971
- /**
18972
- * @param {DOMElement|DOMTextNode} node
18973
- * @param {object} offsets
18974
- */
18975
- setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets
18976
- };
18977
-
18978
- module.exports = ReactDOMSelection;
18979
-
18980
- /***/ },
18981
- /* 150 */
18982
- /***/ function(module, exports) {
18983
-
18984
- /**
18985
- * Copyright 2013-present, Facebook, Inc.
18986
- * All rights reserved.
18987
- *
18988
- * This source code is licensed under the BSD-style license found in the
18989
- * LICENSE file in the root directory of this source tree. An additional grant
18990
- * of patent rights can be found in the PATENTS file in the same directory.
18991
- *
18992
- */
18993
-
18994
- 'use strict';
18995
-
18996
- /**
18997
- * Given any node return the first leaf node without children.
18998
- *
18999
- * @param {DOMElement|DOMTextNode} node
19000
- * @return {DOMElement|DOMTextNode}
19001
- */
19002
-
19003
- function getLeafNode(node) {
19004
- while (node && node.firstChild) {
19005
- node = node.firstChild;
19006
- }
19007
- return node;
19008
- }
19009
-
19010
- /**
19011
- * Get the next sibling within a container. This will walk up the
19012
- * DOM if a node's siblings have been exhausted.
19013
- *
19014
- * @param {DOMElement|DOMTextNode} node
19015
- * @return {?DOMElement|DOMTextNode}
19016
- */
19017
- function getSiblingNode(node) {
19018
- while (node) {
19019
- if (node.nextSibling) {
19020
- return node.nextSibling;
19021
- }
19022
- node = node.parentNode;
19023
- }
19024
- }
19025
-
19026
- /**
19027
- * Get object describing the nodes which contain characters at offset.
19028
- *
19029
- * @param {DOMElement|DOMTextNode} root
19030
- * @param {number} offset
19031
- * @return {?object}
19032
- */
19033
- function getNodeForCharacterOffset(root, offset) {
19034
- var node = getLeafNode(root);
19035
- var nodeStart = 0;
19036
- var nodeEnd = 0;
19037
-
19038
- while (node) {
19039
- if (node.nodeType === 3) {
19040
- nodeEnd = nodeStart + node.textContent.length;
19041
-
19042
- if (nodeStart <= offset && nodeEnd >= offset) {
19043
- return {
19044
- node: node,
19045
- offset: offset - nodeStart
19046
- };
19047
- }
19048
-
19049
- nodeStart = nodeEnd;
19050
- }
19051
-
19052
- node = getLeafNode(getSiblingNode(node));
19053
- }
19054
- }
19055
-
19056
- module.exports = getNodeForCharacterOffset;
19057
-
19058
- /***/ },
19059
- /* 151 */
19060
- /***/ function(module, exports, __webpack_require__) {
19061
-
19062
- 'use strict';
19063
-
19064
- /**
19065
- * Copyright (c) 2013-present, Facebook, Inc.
19066
- * All rights reserved.
19067
- *
19068
- * This source code is licensed under the BSD-style license found in the
19069
- * LICENSE file in the root directory of this source tree. An additional grant
19070
- * of patent rights can be found in the PATENTS file in the same directory.
19071
- *
19072
- *
19073
- */
19074
-
19075
- var isTextNode = __webpack_require__(152);
19076
-
19077
- /*eslint-disable no-bitwise */
19078
-
19079
- /**
19080
- * Checks if a given DOM node contains or is another DOM node.
19081
- */
19082
- function containsNode(outerNode, innerNode) {
19083
- if (!outerNode || !innerNode) {
19084
- return false;
19085
- } else if (outerNode === innerNode) {
19086
- return true;
19087
- } else if (isTextNode(outerNode)) {
19088
- return false;
19089
- } else if (isTextNode(innerNode)) {
19090
- return containsNode(outerNode, innerNode.parentNode);
19091
- } else if ('contains' in outerNode) {
19092
- return outerNode.contains(innerNode);
19093
- } else if (outerNode.compareDocumentPosition) {
19094
- return !!(outerNode.compareDocumentPosition(innerNode) & 16);
19095
- } else {
19096
- return false;
19097
- }
19098
- }
19099
-
19100
- module.exports = containsNode;
19101
-
19102
- /***/ },
19103
- /* 152 */
19104
- /***/ function(module, exports, __webpack_require__) {
19105
-
19106
- 'use strict';
19107
-
19108
- /**
19109
- * Copyright (c) 2013-present, Facebook, Inc.
19110
- * All rights reserved.
19111
- *
19112
- * This source code is licensed under the BSD-style license found in the
19113
- * LICENSE file in the root directory of this source tree. An additional grant
19114
- * of patent rights can be found in the PATENTS file in the same directory.
19115
- *
19116
- * @typechecks
19117
- */
19118
-
19119
- var isNode = __webpack_require__(153);
19120
-
19121
- /**
19122
- * @param {*} object The object to check.
19123
- * @return {boolean} Whether or not the object is a DOM text node.
19124
- */
19125
- function isTextNode(object) {
19126
- return isNode(object) && object.nodeType == 3;
19127
- }
19128
-
19129
- module.exports = isTextNode;
19130
-
19131
- /***/ },
19132
- /* 153 */
19133
- /***/ function(module, exports) {
19134
-
19135
- 'use strict';
19136
-
19137
- /**
19138
- * Copyright (c) 2013-present, Facebook, Inc.
19139
- * All rights reserved.
19140
- *
19141
- * This source code is licensed under the BSD-style license found in the
19142
- * LICENSE file in the root directory of this source tree. An additional grant
19143
- * of patent rights can be found in the PATENTS file in the same directory.
19144
- *
19145
- * @typechecks
19146
- */
19147
-
19148
- /**
19149
- * @param {*} object The object to check.
19150
- * @return {boolean} Whether or not the object is a DOM node.
19151
- */
19152
- function isNode(object) {
19153
- return !!(object && (typeof Node === 'function' ? object instanceof Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));
19154
- }
19155
-
19156
- module.exports = isNode;
19157
-
19158
- /***/ },
19159
- /* 154 */
19160
- /***/ function(module, exports) {
19161
-
19162
- 'use strict';
19163
-
19164
- /**
19165
- * Copyright (c) 2013-present, Facebook, Inc.
19166
- * All rights reserved.
19167
- *
19168
- * This source code is licensed under the BSD-style license found in the
19169
- * LICENSE file in the root directory of this source tree. An additional grant
19170
- * of patent rights can be found in the PATENTS file in the same directory.
19171
- *
19172
- * @typechecks
19173
- */
19174
-
19175
- /* eslint-disable fb-www/typeof-undefined */
19176
-
19177
- /**
19178
- * Same as document.activeElement but wraps in a try-catch block. In IE it is
19179
- * not safe to call document.activeElement if there is nothing focused.
19180
- *
19181
- * The activeElement will be null only if the document or document body is not
19182
- * yet defined.
19183
- */
19184
- function getActiveElement() /*?DOMElement*/{
19185
- if (typeof document === 'undefined') {
19186
- return null;
19187
- }
19188
- try {
19189
- return document.activeElement || document.body;
19190
- } catch (e) {
19191
- return document.body;
19192
- }
19193
- }
19194
-
19195
- module.exports = getActiveElement;
19196
-
19197
- /***/ },
19198
- /* 155 */
19199
- /***/ function(module, exports) {
19200
-
19201
- /**
19202
- * Copyright 2013-present, Facebook, Inc.
19203
- * All rights reserved.
19204
- *
19205
- * This source code is licensed under the BSD-style license found in the
19206
- * LICENSE file in the root directory of this source tree. An additional grant
19207
- * of patent rights can be found in the PATENTS file in the same directory.
19208
- *
19209
- */
19210
-
19211
- 'use strict';
19212
-
19213
- var NS = {
19214
- xlink: 'http://www.w3.org/1999/xlink',
19215
- xml: 'http://www.w3.org/XML/1998/namespace'
19216
- };
19217
-
19218
- // We use attributes for everything SVG so let's avoid some duplication and run
19219
- // code instead.
19220
- // The following are all specified in the HTML config already so we exclude here.
19221
- // - class (as className)
19222
- // - color
19223
- // - height
19224
- // - id
19225
- // - lang
19226
- // - max
19227
- // - media
19228
- // - method
19229
- // - min
19230
- // - name
19231
- // - style
19232
- // - target
19233
- // - type
19234
- // - width
19235
- var ATTRS = {
19236
- accentHeight: 'accent-height',
19237
- accumulate: 0,
19238
- additive: 0,
19239
- alignmentBaseline: 'alignment-baseline',
19240
- allowReorder: 'allowReorder',
19241
- alphabetic: 0,
19242
- amplitude: 0,
19243
- arabicForm: 'arabic-form',
19244
- ascent: 0,
19245
- attributeName: 'attributeName',
19246
- attributeType: 'attributeType',
19247
- autoReverse: 'autoReverse',
19248
- azimuth: 0,
19249
- baseFrequency: 'baseFrequency',
19250
- baseProfile: 'baseProfile',
19251
- baselineShift: 'baseline-shift',
19252
- bbox: 0,
19253
- begin: 0,
19254
- bias: 0,
19255
- by: 0,
19256
- calcMode: 'calcMode',
19257
- capHeight: 'cap-height',
19258
- clip: 0,
19259
- clipPath: 'clip-path',
19260
- clipRule: 'clip-rule',
19261
- clipPathUnits: 'clipPathUnits',
19262
- colorInterpolation: 'color-interpolation',
19263
- colorInterpolationFilters: 'color-interpolation-filters',
19264
- colorProfile: 'color-profile',
19265
- colorRendering: 'color-rendering',
19266
- contentScriptType: 'contentScriptType',
19267
- contentStyleType: 'contentStyleType',
19268
- cursor: 0,
19269
- cx: 0,
19270
- cy: 0,
19271
- d: 0,
19272
- decelerate: 0,
19273
- descent: 0,
19274
- diffuseConstant: 'diffuseConstant',
19275
- direction: 0,
19276
- display: 0,
19277
- divisor: 0,
19278
- dominantBaseline: 'dominant-baseline',
19279
- dur: 0,
19280
- dx: 0,
19281
- dy: 0,
19282
- edgeMode: 'edgeMode',
19283
- elevation: 0,
19284
- enableBackground: 'enable-background',
19285
- end: 0,
19286
- exponent: 0,
19287
- externalResourcesRequired: 'externalResourcesRequired',
19288
- fill: 0,
19289
- fillOpacity: 'fill-opacity',
19290
- fillRule: 'fill-rule',
19291
- filter: 0,
19292
- filterRes: 'filterRes',
19293
- filterUnits: 'filterUnits',
19294
- floodColor: 'flood-color',
19295
- floodOpacity: 'flood-opacity',
19296
- focusable: 0,
19297
- fontFamily: 'font-family',
19298
- fontSize: 'font-size',
19299
- fontSizeAdjust: 'font-size-adjust',
19300
- fontStretch: 'font-stretch',
19301
- fontStyle: 'font-style',
19302
- fontVariant: 'font-variant',
19303
- fontWeight: 'font-weight',
19304
- format: 0,
19305
- from: 0,
19306
- fx: 0,
19307
- fy: 0,
19308
- g1: 0,
19309
- g2: 0,
19310
- glyphName: 'glyph-name',
19311
- glyphOrientationHorizontal: 'glyph-orientation-horizontal',
19312
- glyphOrientationVertical: 'glyph-orientation-vertical',
19313
- glyphRef: 'glyphRef',
19314
- gradientTransform: 'gradientTransform',
19315
- gradientUnits: 'gradientUnits',
19316
- hanging: 0,
19317
- horizAdvX: 'horiz-adv-x',
19318
- horizOriginX: 'horiz-origin-x',
19319
- ideographic: 0,
19320
- imageRendering: 'image-rendering',
19321
- 'in': 0,
19322
- in2: 0,
19323
- intercept: 0,
19324
- k: 0,
19325
- k1: 0,
19326
- k2: 0,
19327
- k3: 0,
19328
- k4: 0,
19329
- kernelMatrix: 'kernelMatrix',
19330
- kernelUnitLength: 'kernelUnitLength',
19331
- kerning: 0,
19332
- keyPoints: 'keyPoints',
19333
- keySplines: 'keySplines',
19334
- keyTimes: 'keyTimes',
19335
- lengthAdjust: 'lengthAdjust',
19336
- letterSpacing: 'letter-spacing',
19337
- lightingColor: 'lighting-color',
19338
- limitingConeAngle: 'limitingConeAngle',
19339
- local: 0,
19340
- markerEnd: 'marker-end',
19341
- markerMid: 'marker-mid',
19342
- markerStart: 'marker-start',
19343
- markerHeight: 'markerHeight',
19344
- markerUnits: 'markerUnits',
19345
- markerWidth: 'markerWidth',
19346
- mask: 0,
19347
- maskContentUnits: 'maskContentUnits',
19348
- maskUnits: 'maskUnits',
19349
- mathematical: 0,
19350
- mode: 0,
19351
- numOctaves: 'numOctaves',
19352
- offset: 0,
19353
- opacity: 0,
19354
- operator: 0,
19355
- order: 0,
19356
- orient: 0,
19357
- orientation: 0,
19358
- origin: 0,
19359
- overflow: 0,
19360
- overlinePosition: 'overline-position',
19361
- overlineThickness: 'overline-thickness',
19362
- paintOrder: 'paint-order',
19363
- panose1: 'panose-1',
19364
- pathLength: 'pathLength',
19365
- patternContentUnits: 'patternContentUnits',
19366
- patternTransform: 'patternTransform',
19367
- patternUnits: 'patternUnits',
19368
- pointerEvents: 'pointer-events',
19369
- points: 0,
19370
- pointsAtX: 'pointsAtX',
19371
- pointsAtY: 'pointsAtY',
19372
- pointsAtZ: 'pointsAtZ',
19373
- preserveAlpha: 'preserveAlpha',
19374
- preserveAspectRatio: 'preserveAspectRatio',
19375
- primitiveUnits: 'primitiveUnits',
19376
- r: 0,
19377
- radius: 0,
19378
- refX: 'refX',
19379
- refY: 'refY',
19380
- renderingIntent: 'rendering-intent',
19381
- repeatCount: 'repeatCount',
19382
- repeatDur: 'repeatDur',
19383
- requiredExtensions: 'requiredExtensions',
19384
- requiredFeatures: 'requiredFeatures',
19385
- restart: 0,
19386
- result: 0,
19387
- rotate: 0,
19388
- rx: 0,
19389
- ry: 0,
19390
- scale: 0,
19391
- seed: 0,
19392
- shapeRendering: 'shape-rendering',
19393
- slope: 0,
19394
- spacing: 0,
19395
- specularConstant: 'specularConstant',
19396
- specularExponent: 'specularExponent',
19397
- speed: 0,
19398
- spreadMethod: 'spreadMethod',
19399
- startOffset: 'startOffset',
19400
- stdDeviation: 'stdDeviation',
19401
- stemh: 0,
19402
- stemv: 0,
19403
- stitchTiles: 'stitchTiles',
19404
- stopColor: 'stop-color',
19405
- stopOpacity: 'stop-opacity',
19406
- strikethroughPosition: 'strikethrough-position',
19407
- strikethroughThickness: 'strikethrough-thickness',
19408
- string: 0,
19409
- stroke: 0,
19410
- strokeDasharray: 'stroke-dasharray',
19411
- strokeDashoffset: 'stroke-dashoffset',
19412
- strokeLinecap: 'stroke-linecap',
19413
- strokeLinejoin: 'stroke-linejoin',
19414
- strokeMiterlimit: 'stroke-miterlimit',
19415
- strokeOpacity: 'stroke-opacity',
19416
- strokeWidth: 'stroke-width',
19417
- surfaceScale: 'surfaceScale',
19418
- systemLanguage: 'systemLanguage',
19419
- tableValues: 'tableValues',
19420
- targetX: 'targetX',
19421
- targetY: 'targetY',
19422
- textAnchor: 'text-anchor',
19423
- textDecoration: 'text-decoration',
19424
- textRendering: 'text-rendering',
19425
- textLength: 'textLength',
19426
- to: 0,
19427
- transform: 0,
19428
- u1: 0,
19429
- u2: 0,
19430
- underlinePosition: 'underline-position',
19431
- underlineThickness: 'underline-thickness',
19432
- unicode: 0,
19433
- unicodeBidi: 'unicode-bidi',
19434
- unicodeRange: 'unicode-range',
19435
- unitsPerEm: 'units-per-em',
19436
- vAlphabetic: 'v-alphabetic',
19437
- vHanging: 'v-hanging',
19438
- vIdeographic: 'v-ideographic',
19439
- vMathematical: 'v-mathematical',
19440
- values: 0,
19441
- vectorEffect: 'vector-effect',
19442
- version: 0,
19443
- vertAdvY: 'vert-adv-y',
19444
- vertOriginX: 'vert-origin-x',
19445
- vertOriginY: 'vert-origin-y',
19446
- viewBox: 'viewBox',
19447
- viewTarget: 'viewTarget',
19448
- visibility: 0,
19449
- widths: 0,
19450
- wordSpacing: 'word-spacing',
19451
- writingMode: 'writing-mode',
19452
- x: 0,
19453
- xHeight: 'x-height',
19454
- x1: 0,
19455
- x2: 0,
19456
- xChannelSelector: 'xChannelSelector',
19457
- xlinkActuate: 'xlink:actuate',
19458
- xlinkArcrole: 'xlink:arcrole',
19459
- xlinkHref: 'xlink:href',
19460
- xlinkRole: 'xlink:role',
19461
- xlinkShow: 'xlink:show',
19462
- xlinkTitle: 'xlink:title',
19463
- xlinkType: 'xlink:type',
19464
- xmlBase: 'xml:base',
19465
- xmlns: 0,
19466
- xmlnsXlink: 'xmlns:xlink',
19467
- xmlLang: 'xml:lang',
19468
- xmlSpace: 'xml:space',
19469
- y: 0,
19470
- y1: 0,
19471
- y2: 0,
19472
- yChannelSelector: 'yChannelSelector',
19473
- z: 0,
19474
- zoomAndPan: 'zoomAndPan'
19475
- };
19476
-
19477
- var SVGDOMPropertyConfig = {
19478
- Properties: {},
19479
- DOMAttributeNamespaces: {
19480
- xlinkActuate: NS.xlink,
19481
- xlinkArcrole: NS.xlink,
19482
- xlinkHref: NS.xlink,
19483
- xlinkRole: NS.xlink,
19484
- xlinkShow: NS.xlink,
19485
- xlinkTitle: NS.xlink,
19486
- xlinkType: NS.xlink,
19487
- xmlBase: NS.xml,
19488
- xmlLang: NS.xml,
19489
- xmlSpace: NS.xml
19490
- },
19491
- DOMAttributeNames: {}
19492
- };
19493
-
19494
- Object.keys(ATTRS).forEach(function (key) {
19495
- SVGDOMPropertyConfig.Properties[key] = 0;
19496
- if (ATTRS[key]) {
19497
- SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];
19498
- }
19499
- });
19500
-
19501
- module.exports = SVGDOMPropertyConfig;
19502
-
19503
- /***/ },
19504
- /* 156 */
19505
- /***/ function(module, exports, __webpack_require__) {
19506
-
19507
- /**
19508
- * Copyright 2013-present, Facebook, Inc.
19509
- * All rights reserved.
19510
- *
19511
- * This source code is licensed under the BSD-style license found in the
19512
- * LICENSE file in the root directory of this source tree. An additional grant
19513
- * of patent rights can be found in the PATENTS file in the same directory.
19514
- *
19515
- */
19516
-
19517
- 'use strict';
19518
-
19519
- var EventPropagators = __webpack_require__(42);
19520
- var ExecutionEnvironment = __webpack_require__(49);
19521
- var ReactDOMComponentTree = __webpack_require__(35);
19522
- var ReactInputSelection = __webpack_require__(148);
19523
- var SyntheticEvent = __webpack_require__(55);
19524
-
19525
- var getActiveElement = __webpack_require__(154);
19526
- var isTextInputElement = __webpack_require__(73);
19527
- var shallowEqual = __webpack_require__(125);
19528
-
19529
- var skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;
19530
-
19531
- var eventTypes = {
19532
- select: {
19533
- phasedRegistrationNames: {
19534
- bubbled: 'onSelect',
19535
- captured: 'onSelectCapture'
19536
- },
19537
- dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']
19538
- }
19539
- };
19540
-
19541
- var activeElement = null;
19542
- var activeElementInst = null;
19543
- var lastSelection = null;
19544
- var mouseDown = false;
19545
-
19546
- // Track whether a listener exists for this plugin. If none exist, we do
19547
- // not extract events. See #3639.
19548
- var hasListener = false;
19549
-
19550
- /**
19551
- * Get an object which is a unique representation of the current selection.
19552
- *
19553
- * The return value will not be consistent across nodes or browsers, but
19554
- * two identical selections on the same node will return identical objects.
19555
- *
19556
- * @param {DOMElement} node
19557
- * @return {object}
19558
- */
19559
- function getSelection(node) {
19560
- if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {
19561
- return {
19562
- start: node.selectionStart,
19563
- end: node.selectionEnd
19564
- };
19565
- } else if (window.getSelection) {
19566
- var selection = window.getSelection();
19567
- return {
19568
- anchorNode: selection.anchorNode,
19569
- anchorOffset: selection.anchorOffset,
19570
- focusNode: selection.focusNode,
19571
- focusOffset: selection.focusOffset
19572
- };
19573
- } else if (document.selection) {
19574
- var range = document.selection.createRange();
19575
- return {
19576
- parentElement: range.parentElement(),
19577
- text: range.text,
19578
- top: range.boundingTop,
19579
- left: range.boundingLeft
19580
- };
19581
- }
19582
- }
19583
-
19584
- /**
19585
- * Poll selection to see whether it's changed.
19586
- *
19587
- * @param {object} nativeEvent
19588
- * @return {?SyntheticEvent}
19589
- */
19590
- function constructSelectEvent(nativeEvent, nativeEventTarget) {
19591
- // Ensure we have the right element, and that the user is not dragging a
19592
- // selection (this matches native `select` event behavior). In HTML5, select
19593
- // fires only on input and textarea thus if there's no focused element we
19594
- // won't dispatch.
19595
- if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {
19596
- return null;
19597
- }
19598
-
19599
- // Only fire when selection has actually changed.
19600
- var currentSelection = getSelection(activeElement);
19601
- if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {
19602
- lastSelection = currentSelection;
19603
-
19604
- var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);
19605
-
19606
- syntheticEvent.type = 'select';
19607
- syntheticEvent.target = activeElement;
19608
-
19609
- EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);
19610
-
19611
- return syntheticEvent;
19612
- }
19613
-
19614
- return null;
19615
- }
19616
-
19617
- /**
19618
- * This plugin creates an `onSelect` event that normalizes select events
19619
- * across form elements.
19620
- *
19621
- * Supported elements are:
19622
- * - input (see `isTextInputElement`)
19623
- * - textarea
19624
- * - contentEditable
19625
- *
19626
- * This differs from native browser implementations in the following ways:
19627
- * - Fires on contentEditable fields as well as inputs.
19628
- * - Fires for collapsed selection.
19629
- * - Fires after user input.
19630
- */
19631
- var SelectEventPlugin = {
19632
-
19633
- eventTypes: eventTypes,
19634
-
19635
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
19636
- if (!hasListener) {
19637
- return null;
19638
- }
19639
-
19640
- var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;
19641
-
19642
- switch (topLevelType) {
19643
- // Track the input node that has focus.
19644
- case 'topFocus':
19645
- if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {
19646
- activeElement = targetNode;
19647
- activeElementInst = targetInst;
19648
- lastSelection = null;
19649
- }
19650
- break;
19651
- case 'topBlur':
19652
- activeElement = null;
19653
- activeElementInst = null;
19654
- lastSelection = null;
19655
- break;
19656
-
19657
- // Don't fire the event while the user is dragging. This matches the
19658
- // semantics of the native select event.
19659
- case 'topMouseDown':
19660
- mouseDown = true;
19661
- break;
19662
- case 'topContextMenu':
19663
- case 'topMouseUp':
19664
- mouseDown = false;
19665
- return constructSelectEvent(nativeEvent, nativeEventTarget);
19666
-
19667
- // Chrome and IE fire non-standard event when selection is changed (and
19668
- // sometimes when it hasn't). IE's event fires out of order with respect
19669
- // to key and input events on deletion, so we discard it.
19670
- //
19671
- // Firefox doesn't support selectionchange, so check selection status
19672
- // after each key entry. The selection changes after keydown and before
19673
- // keyup, but we check on keydown as well in the case of holding down a
19674
- // key, when multiple keydown events are fired but only one keyup is.
19675
- // This is also our approach for IE handling, for the reason above.
19676
- case 'topSelectionChange':
19677
- if (skipSelectionChangeEvent) {
19678
- break;
19679
- }
19680
- // falls through
19681
- case 'topKeyDown':
19682
- case 'topKeyUp':
19683
- return constructSelectEvent(nativeEvent, nativeEventTarget);
19684
- }
19685
-
19686
- return null;
19687
- },
19688
-
19689
- didPutListener: function (inst, registrationName, listener) {
19690
- if (registrationName === 'onSelect') {
19691
- hasListener = true;
19692
- }
19693
- }
19694
- };
19695
-
19696
- module.exports = SelectEventPlugin;
19697
-
19698
- /***/ },
19699
- /* 157 */
19700
- /***/ function(module, exports, __webpack_require__) {
19701
-
19702
- /* WEBPACK VAR INJECTION */(function(process) {/**
19703
- * Copyright 2013-present, Facebook, Inc.
19704
- * All rights reserved.
19705
- *
19706
- * This source code is licensed under the BSD-style license found in the
19707
- * LICENSE file in the root directory of this source tree. An additional grant
19708
- * of patent rights can be found in the PATENTS file in the same directory.
19709
- *
19710
- *
19711
- */
19712
-
19713
- 'use strict';
19714
-
19715
- var _prodInvariant = __webpack_require__(36);
19716
-
19717
- var EventListener = __webpack_require__(144);
19718
- var EventPropagators = __webpack_require__(42);
19719
- var ReactDOMComponentTree = __webpack_require__(35);
19720
- var SyntheticAnimationEvent = __webpack_require__(158);
19721
- var SyntheticClipboardEvent = __webpack_require__(159);
19722
- var SyntheticEvent = __webpack_require__(55);
19723
- var SyntheticFocusEvent = __webpack_require__(160);
19724
- var SyntheticKeyboardEvent = __webpack_require__(161);
19725
- var SyntheticMouseEvent = __webpack_require__(76);
19726
- var SyntheticDragEvent = __webpack_require__(164);
19727
- var SyntheticTouchEvent = __webpack_require__(165);
19728
- var SyntheticTransitionEvent = __webpack_require__(166);
19729
- var SyntheticUIEvent = __webpack_require__(77);
19730
- var SyntheticWheelEvent = __webpack_require__(167);
19731
-
19732
- var emptyFunction = __webpack_require__(13);
19733
- var getEventCharCode = __webpack_require__(162);
19734
- var invariant = __webpack_require__(9);
19735
-
19736
- /**
19737
- * Turns
19738
- * ['abort', ...]
19739
- * into
19740
- * eventTypes = {
19741
- * 'abort': {
19742
- * phasedRegistrationNames: {
19743
- * bubbled: 'onAbort',
19744
- * captured: 'onAbortCapture',
19745
- * },
19746
- * dependencies: ['topAbort'],
19747
- * },
19748
- * ...
19749
- * };
19750
- * topLevelEventsToDispatchConfig = {
19751
- * 'topAbort': { sameConfig }
19752
- * };
19753
- */
19754
- var eventTypes = {};
19755
- var topLevelEventsToDispatchConfig = {};
19756
- ['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {
19757
- var capitalizedEvent = event[0].toUpperCase() + event.slice(1);
19758
- var onEvent = 'on' + capitalizedEvent;
19759
- var topEvent = 'top' + capitalizedEvent;
19760
-
19761
- var type = {
19762
- phasedRegistrationNames: {
19763
- bubbled: onEvent,
19764
- captured: onEvent + 'Capture'
19765
- },
19766
- dependencies: [topEvent]
19767
- };
19768
- eventTypes[event] = type;
19769
- topLevelEventsToDispatchConfig[topEvent] = type;
19770
- });
19771
-
19772
- var onClickListeners = {};
19773
-
19774
- function getDictionaryKey(inst) {
19775
- // Prevents V8 performance issue:
19776
- // https://github.com/facebook/react/pull/7232
19777
- return '.' + inst._rootNodeID;
19778
- }
19779
-
19780
- function isInteractive(tag) {
19781
- return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';
19782
- }
19783
-
19784
- var SimpleEventPlugin = {
19785
-
19786
- eventTypes: eventTypes,
19787
-
19788
- extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {
19789
- var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];
19790
- if (!dispatchConfig) {
19791
- return null;
19792
- }
19793
- var EventConstructor;
19794
- switch (topLevelType) {
19795
- case 'topAbort':
19796
- case 'topCanPlay':
19797
- case 'topCanPlayThrough':
19798
- case 'topDurationChange':
19799
- case 'topEmptied':
19800
- case 'topEncrypted':
19801
- case 'topEnded':
19802
- case 'topError':
19803
- case 'topInput':
19804
- case 'topInvalid':
19805
- case 'topLoad':
19806
- case 'topLoadedData':
19807
- case 'topLoadedMetadata':
19808
- case 'topLoadStart':
19809
- case 'topPause':
19810
- case 'topPlay':
19811
- case 'topPlaying':
19812
- case 'topProgress':
19813
- case 'topRateChange':
19814
- case 'topReset':
19815
- case 'topSeeked':
19816
- case 'topSeeking':
19817
- case 'topStalled':
19818
- case 'topSubmit':
19819
- case 'topSuspend':
19820
- case 'topTimeUpdate':
19821
- case 'topVolumeChange':
19822
- case 'topWaiting':
19823
- // HTML Events
19824
- // @see http://www.w3.org/TR/html5/index.html#events-0
19825
- EventConstructor = SyntheticEvent;
19826
- break;
19827
- case 'topKeyPress':
19828
- // Firefox creates a keypress event for function keys too. This removes
19829
- // the unwanted keypress events. Enter is however both printable and
19830
- // non-printable. One would expect Tab to be as well (but it isn't).
19831
- if (getEventCharCode(nativeEvent) === 0) {
19832
- return null;
19833
- }
19834
- /* falls through */
19835
- case 'topKeyDown':
19836
- case 'topKeyUp':
19837
- EventConstructor = SyntheticKeyboardEvent;
19838
- break;
19839
- case 'topBlur':
19840
- case 'topFocus':
19841
- EventConstructor = SyntheticFocusEvent;
19842
- break;
19843
- case 'topClick':
19844
- // Firefox creates a click event on right mouse clicks. This removes the
19845
- // unwanted click events.
19846
- if (nativeEvent.button === 2) {
19847
- return null;
19848
- }
19849
- /* falls through */
19850
- case 'topDoubleClick':
19851
- case 'topMouseDown':
19852
- case 'topMouseMove':
19853
- case 'topMouseUp':
19854
- // TODO: Disabled elements should not respond to mouse events
19855
- /* falls through */
19856
- case 'topMouseOut':
19857
- case 'topMouseOver':
19858
- case 'topContextMenu':
19859
- EventConstructor = SyntheticMouseEvent;
19860
- break;
19861
- case 'topDrag':
19862
- case 'topDragEnd':
19863
- case 'topDragEnter':
19864
- case 'topDragExit':
19865
- case 'topDragLeave':
19866
- case 'topDragOver':
19867
- case 'topDragStart':
19868
- case 'topDrop':
19869
- EventConstructor = SyntheticDragEvent;
19870
- break;
19871
- case 'topTouchCancel':
19872
- case 'topTouchEnd':
19873
- case 'topTouchMove':
19874
- case 'topTouchStart':
19875
- EventConstructor = SyntheticTouchEvent;
19876
- break;
19877
- case 'topAnimationEnd':
19878
- case 'topAnimationIteration':
19879
- case 'topAnimationStart':
19880
- EventConstructor = SyntheticAnimationEvent;
19881
- break;
19882
- case 'topTransitionEnd':
19883
- EventConstructor = SyntheticTransitionEvent;
19884
- break;
19885
- case 'topScroll':
19886
- EventConstructor = SyntheticUIEvent;
19887
- break;
19888
- case 'topWheel':
19889
- EventConstructor = SyntheticWheelEvent;
19890
- break;
19891
- case 'topCopy':
19892
- case 'topCut':
19893
- case 'topPaste':
19894
- EventConstructor = SyntheticClipboardEvent;
19895
- break;
19896
- }
19897
- !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;
19898
- var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);
19899
- EventPropagators.accumulateTwoPhaseDispatches(event);
19900
- return event;
19901
- },
19902
-
19903
- didPutListener: function (inst, registrationName, listener) {
19904
- // Mobile Safari does not fire properly bubble click events on
19905
- // non-interactive elements, which means delegated click listeners do not
19906
- // fire. The workaround for this bug involves attaching an empty click
19907
- // listener on the target node.
19908
- // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
19909
- if (registrationName === 'onClick' && !isInteractive(inst._tag)) {
19910
- var key = getDictionaryKey(inst);
19911
- var node = ReactDOMComponentTree.getNodeFromInstance(inst);
19912
- if (!onClickListeners[key]) {
19913
- onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);
19914
- }
19915
- }
19916
- },
19917
-
19918
- willDeleteListener: function (inst, registrationName) {
19919
- if (registrationName === 'onClick' && !isInteractive(inst._tag)) {
19920
- var key = getDictionaryKey(inst);
19921
- onClickListeners[key].remove();
19922
- delete onClickListeners[key];
19923
- }
19924
- }
19925
-
19926
- };
19927
-
19928
- module.exports = SimpleEventPlugin;
19929
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
19930
-
19931
- /***/ },
19932
- /* 158 */
19933
- /***/ function(module, exports, __webpack_require__) {
19934
-
19935
- /**
19936
- * Copyright 2013-present, Facebook, Inc.
19937
- * All rights reserved.
19938
- *
19939
- * This source code is licensed under the BSD-style license found in the
19940
- * LICENSE file in the root directory of this source tree. An additional grant
19941
- * of patent rights can be found in the PATENTS file in the same directory.
19942
- *
19943
- */
19944
-
19945
- 'use strict';
19946
-
19947
- var SyntheticEvent = __webpack_require__(55);
19948
-
19949
- /**
19950
- * @interface Event
19951
- * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface
19952
- * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent
19953
- */
19954
- var AnimationEventInterface = {
19955
- animationName: null,
19956
- elapsedTime: null,
19957
- pseudoElement: null
19958
- };
19959
-
19960
- /**
19961
- * @param {object} dispatchConfig Configuration used to dispatch this event.
19962
- * @param {string} dispatchMarker Marker identifying the event target.
19963
- * @param {object} nativeEvent Native browser event.
19964
- * @extends {SyntheticEvent}
19965
- */
19966
- function SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
19967
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
19968
- }
19969
-
19970
- SyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);
19971
-
19972
- module.exports = SyntheticAnimationEvent;
19973
-
19974
- /***/ },
19975
- /* 159 */
19976
- /***/ function(module, exports, __webpack_require__) {
19977
-
19978
- /**
19979
- * Copyright 2013-present, Facebook, Inc.
19980
- * All rights reserved.
19981
- *
19982
- * This source code is licensed under the BSD-style license found in the
19983
- * LICENSE file in the root directory of this source tree. An additional grant
19984
- * of patent rights can be found in the PATENTS file in the same directory.
19985
- *
19986
- */
19987
-
19988
- 'use strict';
19989
-
19990
- var SyntheticEvent = __webpack_require__(55);
19991
-
19992
- /**
19993
- * @interface Event
19994
- * @see http://www.w3.org/TR/clipboard-apis/
19995
- */
19996
- var ClipboardEventInterface = {
19997
- clipboardData: function (event) {
19998
- return 'clipboardData' in event ? event.clipboardData : window.clipboardData;
19999
- }
20000
- };
20001
-
20002
- /**
20003
- * @param {object} dispatchConfig Configuration used to dispatch this event.
20004
- * @param {string} dispatchMarker Marker identifying the event target.
20005
- * @param {object} nativeEvent Native browser event.
20006
- * @extends {SyntheticUIEvent}
20007
- */
20008
- function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20009
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20010
- }
20011
-
20012
- SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);
20013
-
20014
- module.exports = SyntheticClipboardEvent;
20015
-
20016
- /***/ },
20017
- /* 160 */
20018
- /***/ function(module, exports, __webpack_require__) {
20019
-
20020
- /**
20021
- * Copyright 2013-present, Facebook, Inc.
20022
- * All rights reserved.
20023
- *
20024
- * This source code is licensed under the BSD-style license found in the
20025
- * LICENSE file in the root directory of this source tree. An additional grant
20026
- * of patent rights can be found in the PATENTS file in the same directory.
20027
- *
20028
- */
20029
-
20030
- 'use strict';
20031
-
20032
- var SyntheticUIEvent = __webpack_require__(77);
20033
-
20034
- /**
20035
- * @interface FocusEvent
20036
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
20037
- */
20038
- var FocusEventInterface = {
20039
- relatedTarget: null
20040
- };
20041
-
20042
- /**
20043
- * @param {object} dispatchConfig Configuration used to dispatch this event.
20044
- * @param {string} dispatchMarker Marker identifying the event target.
20045
- * @param {object} nativeEvent Native browser event.
20046
- * @extends {SyntheticUIEvent}
20047
- */
20048
- function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20049
- return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20050
- }
20051
-
20052
- SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);
20053
-
20054
- module.exports = SyntheticFocusEvent;
20055
-
20056
- /***/ },
20057
- /* 161 */
20058
- /***/ function(module, exports, __webpack_require__) {
20059
-
20060
- /**
20061
- * Copyright 2013-present, Facebook, Inc.
20062
- * All rights reserved.
20063
- *
20064
- * This source code is licensed under the BSD-style license found in the
20065
- * LICENSE file in the root directory of this source tree. An additional grant
20066
- * of patent rights can be found in the PATENTS file in the same directory.
20067
- *
20068
- */
20069
-
20070
- 'use strict';
20071
-
20072
- var SyntheticUIEvent = __webpack_require__(77);
20073
-
20074
- var getEventCharCode = __webpack_require__(162);
20075
- var getEventKey = __webpack_require__(163);
20076
- var getEventModifierState = __webpack_require__(79);
20077
-
20078
- /**
20079
- * @interface KeyboardEvent
20080
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
20081
- */
20082
- var KeyboardEventInterface = {
20083
- key: getEventKey,
20084
- location: null,
20085
- ctrlKey: null,
20086
- shiftKey: null,
20087
- altKey: null,
20088
- metaKey: null,
20089
- repeat: null,
20090
- locale: null,
20091
- getModifierState: getEventModifierState,
20092
- // Legacy Interface
20093
- charCode: function (event) {
20094
- // `charCode` is the result of a KeyPress event and represents the value of
20095
- // the actual printable character.
20096
-
20097
- // KeyPress is deprecated, but its replacement is not yet final and not
20098
- // implemented in any major browser. Only KeyPress has charCode.
20099
- if (event.type === 'keypress') {
20100
- return getEventCharCode(event);
20101
- }
20102
- return 0;
20103
- },
20104
- keyCode: function (event) {
20105
- // `keyCode` is the result of a KeyDown/Up event and represents the value of
20106
- // physical keyboard key.
20107
-
20108
- // The actual meaning of the value depends on the users' keyboard layout
20109
- // which cannot be detected. Assuming that it is a US keyboard layout
20110
- // provides a surprisingly accurate mapping for US and European users.
20111
- // Due to this, it is left to the user to implement at this time.
20112
- if (event.type === 'keydown' || event.type === 'keyup') {
20113
- return event.keyCode;
20114
- }
20115
- return 0;
20116
- },
20117
- which: function (event) {
20118
- // `which` is an alias for either `keyCode` or `charCode` depending on the
20119
- // type of the event.
20120
- if (event.type === 'keypress') {
20121
- return getEventCharCode(event);
20122
- }
20123
- if (event.type === 'keydown' || event.type === 'keyup') {
20124
- return event.keyCode;
20125
- }
20126
- return 0;
20127
- }
20128
- };
20129
-
20130
- /**
20131
- * @param {object} dispatchConfig Configuration used to dispatch this event.
20132
- * @param {string} dispatchMarker Marker identifying the event target.
20133
- * @param {object} nativeEvent Native browser event.
20134
- * @extends {SyntheticUIEvent}
20135
- */
20136
- function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20137
- return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20138
- }
20139
-
20140
- SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);
20141
-
20142
- module.exports = SyntheticKeyboardEvent;
20143
-
20144
- /***/ },
20145
- /* 162 */
20146
- /***/ function(module, exports) {
20147
-
20148
- /**
20149
- * Copyright 2013-present, Facebook, Inc.
20150
- * All rights reserved.
20151
- *
20152
- * This source code is licensed under the BSD-style license found in the
20153
- * LICENSE file in the root directory of this source tree. An additional grant
20154
- * of patent rights can be found in the PATENTS file in the same directory.
20155
- *
20156
- */
20157
-
20158
- 'use strict';
20159
-
20160
- /**
20161
- * `charCode` represents the actual "character code" and is safe to use with
20162
- * `String.fromCharCode`. As such, only keys that correspond to printable
20163
- * characters produce a valid `charCode`, the only exception to this is Enter.
20164
- * The Tab-key is considered non-printable and does not have a `charCode`,
20165
- * presumably because it does not produce a tab-character in browsers.
20166
- *
20167
- * @param {object} nativeEvent Native browser event.
20168
- * @return {number} Normalized `charCode` property.
20169
- */
20170
-
20171
- function getEventCharCode(nativeEvent) {
20172
- var charCode;
20173
- var keyCode = nativeEvent.keyCode;
20174
-
20175
- if ('charCode' in nativeEvent) {
20176
- charCode = nativeEvent.charCode;
20177
-
20178
- // FF does not set `charCode` for the Enter-key, check against `keyCode`.
20179
- if (charCode === 0 && keyCode === 13) {
20180
- charCode = 13;
20181
- }
20182
- } else {
20183
- // IE8 does not implement `charCode`, but `keyCode` has the correct value.
20184
- charCode = keyCode;
20185
- }
20186
-
20187
- // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.
20188
- // Must not discard the (non-)printable Enter-key.
20189
- if (charCode >= 32 || charCode === 13) {
20190
- return charCode;
20191
- }
20192
-
20193
- return 0;
20194
- }
20195
-
20196
- module.exports = getEventCharCode;
20197
-
20198
- /***/ },
20199
- /* 163 */
20200
- /***/ function(module, exports, __webpack_require__) {
20201
-
20202
- /**
20203
- * Copyright 2013-present, Facebook, Inc.
20204
- * All rights reserved.
20205
- *
20206
- * This source code is licensed under the BSD-style license found in the
20207
- * LICENSE file in the root directory of this source tree. An additional grant
20208
- * of patent rights can be found in the PATENTS file in the same directory.
20209
- *
20210
- */
20211
-
20212
- 'use strict';
20213
-
20214
- var getEventCharCode = __webpack_require__(162);
20215
-
20216
- /**
20217
- * Normalization of deprecated HTML5 `key` values
20218
- * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
20219
- */
20220
- var normalizeKey = {
20221
- 'Esc': 'Escape',
20222
- 'Spacebar': ' ',
20223
- 'Left': 'ArrowLeft',
20224
- 'Up': 'ArrowUp',
20225
- 'Right': 'ArrowRight',
20226
- 'Down': 'ArrowDown',
20227
- 'Del': 'Delete',
20228
- 'Win': 'OS',
20229
- 'Menu': 'ContextMenu',
20230
- 'Apps': 'ContextMenu',
20231
- 'Scroll': 'ScrollLock',
20232
- 'MozPrintableKey': 'Unidentified'
20233
- };
20234
-
20235
- /**
20236
- * Translation from legacy `keyCode` to HTML5 `key`
20237
- * Only special keys supported, all others depend on keyboard layout or browser
20238
- * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
20239
- */
20240
- var translateToKey = {
20241
- 8: 'Backspace',
20242
- 9: 'Tab',
20243
- 12: 'Clear',
20244
- 13: 'Enter',
20245
- 16: 'Shift',
20246
- 17: 'Control',
20247
- 18: 'Alt',
20248
- 19: 'Pause',
20249
- 20: 'CapsLock',
20250
- 27: 'Escape',
20251
- 32: ' ',
20252
- 33: 'PageUp',
20253
- 34: 'PageDown',
20254
- 35: 'End',
20255
- 36: 'Home',
20256
- 37: 'ArrowLeft',
20257
- 38: 'ArrowUp',
20258
- 39: 'ArrowRight',
20259
- 40: 'ArrowDown',
20260
- 45: 'Insert',
20261
- 46: 'Delete',
20262
- 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',
20263
- 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',
20264
- 144: 'NumLock',
20265
- 145: 'ScrollLock',
20266
- 224: 'Meta'
20267
- };
20268
-
20269
- /**
20270
- * @param {object} nativeEvent Native browser event.
20271
- * @return {string} Normalized `key` property.
20272
- */
20273
- function getEventKey(nativeEvent) {
20274
- if (nativeEvent.key) {
20275
- // Normalize inconsistent values reported by browsers due to
20276
- // implementations of a working draft specification.
20277
-
20278
- // FireFox implements `key` but returns `MozPrintableKey` for all
20279
- // printable characters (normalized to `Unidentified`), ignore it.
20280
- var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
20281
- if (key !== 'Unidentified') {
20282
- return key;
20283
- }
20284
- }
20285
-
20286
- // Browser does not implement `key`, polyfill as much of it as we can.
20287
- if (nativeEvent.type === 'keypress') {
20288
- var charCode = getEventCharCode(nativeEvent);
20289
-
20290
- // The enter-key is technically both printable and non-printable and can
20291
- // thus be captured by `keypress`, no other non-printable key should.
20292
- return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);
20293
- }
20294
- if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {
20295
- // While user keyboard layout determines the actual meaning of each
20296
- // `keyCode` value, almost all function keys have a universal value.
20297
- return translateToKey[nativeEvent.keyCode] || 'Unidentified';
20298
- }
20299
- return '';
20300
- }
20301
-
20302
- module.exports = getEventKey;
20303
-
20304
- /***/ },
20305
- /* 164 */
20306
- /***/ function(module, exports, __webpack_require__) {
20307
-
20308
- /**
20309
- * Copyright 2013-present, Facebook, Inc.
20310
- * All rights reserved.
20311
- *
20312
- * This source code is licensed under the BSD-style license found in the
20313
- * LICENSE file in the root directory of this source tree. An additional grant
20314
- * of patent rights can be found in the PATENTS file in the same directory.
20315
- *
20316
- */
20317
-
20318
- 'use strict';
20319
-
20320
- var SyntheticMouseEvent = __webpack_require__(76);
20321
-
20322
- /**
20323
- * @interface DragEvent
20324
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
20325
- */
20326
- var DragEventInterface = {
20327
- dataTransfer: null
20328
- };
20329
-
20330
- /**
20331
- * @param {object} dispatchConfig Configuration used to dispatch this event.
20332
- * @param {string} dispatchMarker Marker identifying the event target.
20333
- * @param {object} nativeEvent Native browser event.
20334
- * @extends {SyntheticUIEvent}
20335
- */
20336
- function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20337
- return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20338
- }
20339
-
20340
- SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);
20341
-
20342
- module.exports = SyntheticDragEvent;
20343
-
20344
- /***/ },
20345
- /* 165 */
20346
- /***/ function(module, exports, __webpack_require__) {
20347
-
20348
- /**
20349
- * Copyright 2013-present, Facebook, Inc.
20350
- * All rights reserved.
20351
- *
20352
- * This source code is licensed under the BSD-style license found in the
20353
- * LICENSE file in the root directory of this source tree. An additional grant
20354
- * of patent rights can be found in the PATENTS file in the same directory.
20355
- *
20356
- */
20357
-
20358
- 'use strict';
20359
-
20360
- var SyntheticUIEvent = __webpack_require__(77);
20361
-
20362
- var getEventModifierState = __webpack_require__(79);
20363
-
20364
- /**
20365
- * @interface TouchEvent
20366
- * @see http://www.w3.org/TR/touch-events/
20367
- */
20368
- var TouchEventInterface = {
20369
- touches: null,
20370
- targetTouches: null,
20371
- changedTouches: null,
20372
- altKey: null,
20373
- metaKey: null,
20374
- ctrlKey: null,
20375
- shiftKey: null,
20376
- getModifierState: getEventModifierState
20377
- };
20378
-
20379
- /**
20380
- * @param {object} dispatchConfig Configuration used to dispatch this event.
20381
- * @param {string} dispatchMarker Marker identifying the event target.
20382
- * @param {object} nativeEvent Native browser event.
20383
- * @extends {SyntheticUIEvent}
20384
- */
20385
- function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20386
- return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20387
- }
20388
-
20389
- SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);
20390
-
20391
- module.exports = SyntheticTouchEvent;
20392
-
20393
- /***/ },
20394
- /* 166 */
20395
- /***/ function(module, exports, __webpack_require__) {
20396
-
20397
- /**
20398
- * Copyright 2013-present, Facebook, Inc.
20399
- * All rights reserved.
20400
- *
20401
- * This source code is licensed under the BSD-style license found in the
20402
- * LICENSE file in the root directory of this source tree. An additional grant
20403
- * of patent rights can be found in the PATENTS file in the same directory.
20404
- *
20405
- */
20406
-
20407
- 'use strict';
20408
-
20409
- var SyntheticEvent = __webpack_require__(55);
20410
-
20411
- /**
20412
- * @interface Event
20413
- * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-
20414
- * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent
20415
- */
20416
- var TransitionEventInterface = {
20417
- propertyName: null,
20418
- elapsedTime: null,
20419
- pseudoElement: null
20420
- };
20421
-
20422
- /**
20423
- * @param {object} dispatchConfig Configuration used to dispatch this event.
20424
- * @param {string} dispatchMarker Marker identifying the event target.
20425
- * @param {object} nativeEvent Native browser event.
20426
- * @extends {SyntheticEvent}
20427
- */
20428
- function SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20429
- return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20430
- }
20431
-
20432
- SyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);
20433
-
20434
- module.exports = SyntheticTransitionEvent;
20435
-
20436
- /***/ },
20437
- /* 167 */
20438
- /***/ function(module, exports, __webpack_require__) {
20439
-
20440
- /**
20441
- * Copyright 2013-present, Facebook, Inc.
20442
- * All rights reserved.
20443
- *
20444
- * This source code is licensed under the BSD-style license found in the
20445
- * LICENSE file in the root directory of this source tree. An additional grant
20446
- * of patent rights can be found in the PATENTS file in the same directory.
20447
- *
20448
- */
20449
-
20450
- 'use strict';
20451
-
20452
- var SyntheticMouseEvent = __webpack_require__(76);
20453
-
20454
- /**
20455
- * @interface WheelEvent
20456
- * @see http://www.w3.org/TR/DOM-Level-3-Events/
20457
- */
20458
- var WheelEventInterface = {
20459
- deltaX: function (event) {
20460
- return 'deltaX' in event ? event.deltaX :
20461
- // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
20462
- 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;
20463
- },
20464
- deltaY: function (event) {
20465
- return 'deltaY' in event ? event.deltaY :
20466
- // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
20467
- 'wheelDeltaY' in event ? -event.wheelDeltaY :
20468
- // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
20469
- 'wheelDelta' in event ? -event.wheelDelta : 0;
20470
- },
20471
- deltaZ: null,
20472
-
20473
- // Browsers without "deltaMode" is reporting in raw wheel delta where one
20474
- // notch on the scroll is always +/- 120, roughly equivalent to pixels.
20475
- // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
20476
- // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
20477
- deltaMode: null
20478
- };
20479
-
20480
- /**
20481
- * @param {object} dispatchConfig Configuration used to dispatch this event.
20482
- * @param {string} dispatchMarker Marker identifying the event target.
20483
- * @param {object} nativeEvent Native browser event.
20484
- * @extends {SyntheticMouseEvent}
20485
- */
20486
- function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {
20487
- return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);
20488
- }
20489
-
20490
- SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
20491
-
20492
- module.exports = SyntheticWheelEvent;
20493
-
20494
- /***/ },
20495
- /* 168 */
20496
- /***/ function(module, exports, __webpack_require__) {
20497
-
20498
- /* WEBPACK VAR INJECTION */(function(process) {/**
20499
- * Copyright 2013-present, Facebook, Inc.
20500
- * All rights reserved.
20501
- *
20502
- * This source code is licensed under the BSD-style license found in the
20503
- * LICENSE file in the root directory of this source tree. An additional grant
20504
- * of patent rights can be found in the PATENTS file in the same directory.
20505
- *
20506
- */
20507
-
20508
- 'use strict';
20509
-
20510
- var _prodInvariant = __webpack_require__(36);
20511
-
20512
- var DOMLazyTree = __webpack_require__(83);
20513
- var DOMProperty = __webpack_require__(37);
20514
- var React = __webpack_require__(3);
20515
- var ReactBrowserEventEmitter = __webpack_require__(107);
20516
- var ReactCurrentOwner = __webpack_require__(11);
20517
- var ReactDOMComponentTree = __webpack_require__(35);
20518
- var ReactDOMContainerInfo = __webpack_require__(169);
20519
- var ReactDOMFeatureFlags = __webpack_require__(170);
20520
- var ReactFeatureFlags = __webpack_require__(60);
20521
- var ReactInstanceMap = __webpack_require__(118);
20522
- var ReactInstrumentation = __webpack_require__(64);
20523
- var ReactMarkupChecksum = __webpack_require__(171);
20524
- var ReactReconciler = __webpack_require__(61);
20525
- var ReactUpdateQueue = __webpack_require__(137);
20526
- var ReactUpdates = __webpack_require__(58);
20527
-
20528
- var emptyObject = __webpack_require__(21);
20529
- var instantiateReactComponent = __webpack_require__(120);
20530
- var invariant = __webpack_require__(9);
20531
- var setInnerHTML = __webpack_require__(85);
20532
- var shouldUpdateReactComponent = __webpack_require__(126);
20533
- var warning = __webpack_require__(12);
20534
-
20535
- var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
20536
- var ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;
20537
-
20538
- var ELEMENT_NODE_TYPE = 1;
20539
- var DOC_NODE_TYPE = 9;
20540
- var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
20541
-
20542
- var instancesByReactRootID = {};
20543
-
20544
- /**
20545
- * Finds the index of the first character
20546
- * that's not common between the two given strings.
20547
- *
20548
- * @return {number} the index of the character where the strings diverge
20549
- */
20550
- function firstDifferenceIndex(string1, string2) {
20551
- var minLen = Math.min(string1.length, string2.length);
20552
- for (var i = 0; i < minLen; i++) {
20553
- if (string1.charAt(i) !== string2.charAt(i)) {
20554
- return i;
20555
- }
20556
- }
20557
- return string1.length === string2.length ? -1 : minLen;
20558
- }
20559
-
20560
- /**
20561
- * @param {DOMElement|DOMDocument} container DOM element that may contain
20562
- * a React component
20563
- * @return {?*} DOM element that may have the reactRoot ID, or null.
20564
- */
20565
- function getReactRootElementInContainer(container) {
20566
- if (!container) {
20567
- return null;
20568
- }
20569
-
20570
- if (container.nodeType === DOC_NODE_TYPE) {
20571
- return container.documentElement;
20572
- } else {
20573
- return container.firstChild;
20574
- }
20575
- }
20576
-
20577
- function internalGetID(node) {
20578
- // If node is something like a window, document, or text node, none of
20579
- // which support attributes or a .getAttribute method, gracefully return
20580
- // the empty string, as if the attribute were missing.
20581
- return node.getAttribute && node.getAttribute(ATTR_NAME) || '';
20582
- }
20583
-
20584
- /**
20585
- * Mounts this component and inserts it into the DOM.
20586
- *
20587
- * @param {ReactComponent} componentInstance The instance to mount.
20588
- * @param {DOMElement} container DOM element to mount into.
20589
- * @param {ReactReconcileTransaction} transaction
20590
- * @param {boolean} shouldReuseMarkup If true, do not insert markup
20591
- */
20592
- function mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {
20593
- var markerName;
20594
- if (ReactFeatureFlags.logTopLevelRenders) {
20595
- var wrappedElement = wrapperInstance._currentElement.props.child;
20596
- var type = wrappedElement.type;
20597
- markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);
20598
- console.time(markerName);
20599
- }
20600
-
20601
- var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */
20602
- );
20603
-
20604
- if (markerName) {
20605
- console.timeEnd(markerName);
20606
- }
20607
-
20608
- wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;
20609
- ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);
20610
- }
20611
-
20612
- /**
20613
- * Batched mount.
20614
- *
20615
- * @param {ReactComponent} componentInstance The instance to mount.
20616
- * @param {DOMElement} container DOM element to mount into.
20617
- * @param {boolean} shouldReuseMarkup If true, do not insert markup
20618
- */
20619
- function batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {
20620
- var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(
20621
- /* useCreateElement */
20622
- !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);
20623
- transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);
20624
- ReactUpdates.ReactReconcileTransaction.release(transaction);
20625
- }
20626
-
20627
- /**
20628
- * Unmounts a component and removes it from the DOM.
20629
- *
20630
- * @param {ReactComponent} instance React component instance.
20631
- * @param {DOMElement} container DOM element to unmount from.
20632
- * @final
20633
- * @internal
20634
- * @see {ReactMount.unmountComponentAtNode}
20635
- */
20636
- function unmountComponentFromNode(instance, container, safely) {
20637
- if (process.env.NODE_ENV !== 'production') {
20638
- ReactInstrumentation.debugTool.onBeginFlush();
20639
- }
20640
- ReactReconciler.unmountComponent(instance, safely);
20641
- if (process.env.NODE_ENV !== 'production') {
20642
- ReactInstrumentation.debugTool.onEndFlush();
20643
- }
20644
-
20645
- if (container.nodeType === DOC_NODE_TYPE) {
20646
- container = container.documentElement;
20647
- }
20648
-
20649
- // http://jsperf.com/emptying-a-node
20650
- while (container.lastChild) {
20651
- container.removeChild(container.lastChild);
20652
- }
20653
- }
20654
-
20655
- /**
20656
- * True if the supplied DOM node has a direct React-rendered child that is
20657
- * not a React root element. Useful for warning in `render`,
20658
- * `unmountComponentAtNode`, etc.
20659
- *
20660
- * @param {?DOMElement} node The candidate DOM node.
20661
- * @return {boolean} True if the DOM element contains a direct child that was
20662
- * rendered by React but is not a root element.
20663
- * @internal
20664
- */
20665
- function hasNonRootReactChild(container) {
20666
- var rootEl = getReactRootElementInContainer(container);
20667
- if (rootEl) {
20668
- var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);
20669
- return !!(inst && inst._hostParent);
20670
- }
20671
- }
20672
-
20673
- /**
20674
- * True if the supplied DOM node is a React DOM element and
20675
- * it has been rendered by another copy of React.
20676
- *
20677
- * @param {?DOMElement} node The candidate DOM node.
20678
- * @return {boolean} True if the DOM has been rendered by another copy of React
20679
- * @internal
20680
- */
20681
- function nodeIsRenderedByOtherInstance(container) {
20682
- var rootEl = getReactRootElementInContainer(container);
20683
- return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));
20684
- }
20685
-
20686
- /**
20687
- * True if the supplied DOM node is a valid node element.
20688
- *
20689
- * @param {?DOMElement} node The candidate DOM node.
20690
- * @return {boolean} True if the DOM is a valid DOM node.
20691
- * @internal
20692
- */
20693
- function isValidContainer(node) {
20694
- return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));
20695
- }
20696
-
20697
- /**
20698
- * True if the supplied DOM node is a valid React node element.
20699
- *
20700
- * @param {?DOMElement} node The candidate DOM node.
20701
- * @return {boolean} True if the DOM is a valid React DOM node.
20702
- * @internal
20703
- */
20704
- function isReactNode(node) {
20705
- return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));
20706
- }
20707
-
20708
- function getHostRootInstanceInContainer(container) {
20709
- var rootEl = getReactRootElementInContainer(container);
20710
- var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);
20711
- return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;
20712
- }
20713
-
20714
- function getTopLevelWrapperInContainer(container) {
20715
- var root = getHostRootInstanceInContainer(container);
20716
- return root ? root._hostContainerInfo._topLevelWrapper : null;
20717
- }
20718
-
20719
- /**
20720
- * Temporary (?) hack so that we can store all top-level pending updates on
20721
- * composites instead of having to worry about different types of components
20722
- * here.
20723
- */
20724
- var topLevelRootCounter = 1;
20725
- var TopLevelWrapper = function () {
20726
- this.rootID = topLevelRootCounter++;
20727
- };
20728
- TopLevelWrapper.prototype.isReactComponent = {};
20729
- if (process.env.NODE_ENV !== 'production') {
20730
- TopLevelWrapper.displayName = 'TopLevelWrapper';
20731
- }
20732
- TopLevelWrapper.prototype.render = function () {
20733
- return this.props.child;
20734
- };
20735
- TopLevelWrapper.isReactTopLevelWrapper = true;
20736
-
20737
- /**
20738
- * Mounting is the process of initializing a React component by creating its
20739
- * representative DOM elements and inserting them into a supplied `container`.
20740
- * Any prior content inside `container` is destroyed in the process.
20741
- *
20742
- * ReactMount.render(
20743
- * component,
20744
- * document.getElementById('container')
20745
- * );
20746
- *
20747
- * <div id="container"> <-- Supplied `container`.
20748
- * <div data-reactid=".3"> <-- Rendered reactRoot of React
20749
- * // ... component.
20750
- * </div>
20751
- * </div>
20752
- *
20753
- * Inside of `container`, the first element rendered is the "reactRoot".
20754
- */
20755
- var ReactMount = {
20756
-
20757
- TopLevelWrapper: TopLevelWrapper,
20758
-
20759
- /**
20760
- * Used by devtools. The keys are not important.
20761
- */
20762
- _instancesByReactRootID: instancesByReactRootID,
20763
-
20764
- /**
20765
- * This is a hook provided to support rendering React components while
20766
- * ensuring that the apparent scroll position of its `container` does not
20767
- * change.
20768
- *
20769
- * @param {DOMElement} container The `container` being rendered into.
20770
- * @param {function} renderCallback This must be called once to do the render.
20771
- */
20772
- scrollMonitor: function (container, renderCallback) {
20773
- renderCallback();
20774
- },
20775
-
20776
- /**
20777
- * Take a component that's already mounted into the DOM and replace its props
20778
- * @param {ReactComponent} prevComponent component instance already in the DOM
20779
- * @param {ReactElement} nextElement component instance to render
20780
- * @param {DOMElement} container container to render into
20781
- * @param {?function} callback function triggered on completion
20782
- */
20783
- _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {
20784
- ReactMount.scrollMonitor(container, function () {
20785
- ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);
20786
- if (callback) {
20787
- ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);
20788
- }
20789
- });
20790
-
20791
- return prevComponent;
20792
- },
20793
-
20794
- /**
20795
- * Render a new component into the DOM. Hooked by hooks!
20796
- *
20797
- * @param {ReactElement} nextElement element to render
20798
- * @param {DOMElement} container container to render into
20799
- * @param {boolean} shouldReuseMarkup if we should skip the markup insertion
20800
- * @return {ReactComponent} nextComponent
20801
- */
20802
- _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {
20803
- // Various parts of our code (such as ReactCompositeComponent's
20804
- // _renderValidatedComponent) assume that calls to render aren't nested;
20805
- // verify that that's the case.
20806
- process.env.NODE_ENV !== '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;
20807
-
20808
- !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;
20809
-
20810
- ReactBrowserEventEmitter.ensureScrollValueMonitoring();
20811
- var componentInstance = instantiateReactComponent(nextElement, false);
20812
-
20813
- // The initial render is synchronous but any updates that happen during
20814
- // rendering, in componentWillMount or componentDidMount, will be batched
20815
- // according to the current batching strategy.
20816
-
20817
- ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);
20818
-
20819
- var wrapperID = componentInstance._instance.rootID;
20820
- instancesByReactRootID[wrapperID] = componentInstance;
20821
-
20822
- return componentInstance;
20823
- },
20824
-
20825
- /**
20826
- * Renders a React component into the DOM in the supplied `container`.
20827
- *
20828
- * If the React component was previously rendered into `container`, this will
20829
- * perform an update on it and only mutate the DOM as necessary to reflect the
20830
- * latest React component.
20831
- *
20832
- * @param {ReactComponent} parentComponent The conceptual parent of this render tree.
20833
- * @param {ReactElement} nextElement Component element to render.
20834
- * @param {DOMElement} container DOM element to render into.
20835
- * @param {?function} callback function triggered on completion
20836
- * @return {ReactComponent} Component instance rendered in `container`.
20837
- */
20838
- renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {
20839
- !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;
20840
- return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);
20841
- },
20842
-
20843
- _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {
20844
- ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');
20845
- !React.isValidElement(nextElement) ? process.env.NODE_ENV !== '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 />.' :
20846
- // Check if it quacks like an element
20847
- 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;
20848
-
20849
- process.env.NODE_ENV !== '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;
20850
-
20851
- var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });
20852
-
20853
- var nextContext;
20854
- if (parentComponent) {
20855
- var parentInst = ReactInstanceMap.get(parentComponent);
20856
- nextContext = parentInst._processChildContext(parentInst._context);
20857
- } else {
20858
- nextContext = emptyObject;
20859
- }
20860
-
20861
- var prevComponent = getTopLevelWrapperInContainer(container);
20862
-
20863
- if (prevComponent) {
20864
- var prevWrappedElement = prevComponent._currentElement;
20865
- var prevElement = prevWrappedElement.props.child;
20866
- if (shouldUpdateReactComponent(prevElement, nextElement)) {
20867
- var publicInst = prevComponent._renderedComponent.getPublicInstance();
20868
- var updatedCallback = callback && function () {
20869
- callback.call(publicInst);
20870
- };
20871
- ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);
20872
- return publicInst;
20873
- } else {
20874
- ReactMount.unmountComponentAtNode(container);
20875
- }
20876
- }
20877
-
20878
- var reactRootElement = getReactRootElementInContainer(container);
20879
- var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);
20880
- var containerHasNonRootReactChild = hasNonRootReactChild(container);
20881
-
20882
- if (process.env.NODE_ENV !== 'production') {
20883
- process.env.NODE_ENV !== '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;
20884
-
20885
- if (!containerHasReactMarkup || reactRootElement.nextSibling) {
20886
- var rootElementSibling = reactRootElement;
20887
- while (rootElementSibling) {
20888
- if (internalGetID(rootElementSibling)) {
20889
- process.env.NODE_ENV !== '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;
20890
- break;
20891
- }
20892
- rootElementSibling = rootElementSibling.nextSibling;
20893
- }
20894
- }
20895
- }
20896
-
20897
- var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;
20898
- var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();
20899
- if (callback) {
20900
- callback.call(component);
20901
- }
20902
- return component;
20903
- },
20904
-
20905
- /**
20906
- * Renders a React component into the DOM in the supplied `container`.
20907
- * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render
20908
- *
20909
- * If the React component was previously rendered into `container`, this will
20910
- * perform an update on it and only mutate the DOM as necessary to reflect the
20911
- * latest React component.
20912
- *
20913
- * @param {ReactElement} nextElement Component element to render.
20914
- * @param {DOMElement} container DOM element to render into.
20915
- * @param {?function} callback function triggered on completion
20916
- * @return {ReactComponent} Component instance rendered in `container`.
20917
- */
20918
- render: function (nextElement, container, callback) {
20919
- return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);
20920
- },
20921
-
20922
- /**
20923
- * Unmounts and destroys the React component rendered in the `container`.
20924
- * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode
20925
- *
20926
- * @param {DOMElement} container DOM element containing a React component.
20927
- * @return {boolean} True if a component was found in and unmounted from
20928
- * `container`
20929
- */
20930
- unmountComponentAtNode: function (container) {
20931
- // Various parts of our code (such as ReactCompositeComponent's
20932
- // _renderValidatedComponent) assume that calls to render aren't nested;
20933
- // verify that that's the case. (Strictly speaking, unmounting won't cause a
20934
- // render but we still don't expect to be in a render call here.)
20935
- process.env.NODE_ENV !== '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;
20936
-
20937
- !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;
20938
-
20939
- if (process.env.NODE_ENV !== 'production') {
20940
- process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;
20941
- }
20942
-
20943
- var prevComponent = getTopLevelWrapperInContainer(container);
20944
- if (!prevComponent) {
20945
- // Check if the node being unmounted was rendered by React, but isn't a
20946
- // root node.
20947
- var containerHasNonRootReactChild = hasNonRootReactChild(container);
20948
-
20949
- // Check if the container itself is a React root node.
20950
- var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);
20951
-
20952
- if (process.env.NODE_ENV !== 'production') {
20953
- process.env.NODE_ENV !== '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;
20954
- }
20955
-
20956
- return false;
20957
- }
20958
- delete instancesByReactRootID[prevComponent._instance.rootID];
20959
- ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);
20960
- return true;
20961
- },
20962
-
20963
- _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {
20964
- !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;
20965
-
20966
- if (shouldReuseMarkup) {
20967
- var rootElement = getReactRootElementInContainer(container);
20968
- if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {
20969
- ReactDOMComponentTree.precacheNode(instance, rootElement);
20970
- return;
20971
- } else {
20972
- var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
20973
- rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
20974
-
20975
- var rootMarkup = rootElement.outerHTML;
20976
- rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);
20977
-
20978
- var normalizedMarkup = markup;
20979
- if (process.env.NODE_ENV !== 'production') {
20980
- // because rootMarkup is retrieved from the DOM, various normalizations
20981
- // will have occurred which will not be present in `markup`. Here,
20982
- // insert markup into a <div> or <iframe> depending on the container
20983
- // type to perform the same normalizations before comparing.
20984
- var normalizer;
20985
- if (container.nodeType === ELEMENT_NODE_TYPE) {
20986
- normalizer = document.createElement('div');
20987
- normalizer.innerHTML = markup;
20988
- normalizedMarkup = normalizer.innerHTML;
20989
- } else {
20990
- normalizer = document.createElement('iframe');
20991
- document.body.appendChild(normalizer);
20992
- normalizer.contentDocument.write(markup);
20993
- normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;
20994
- document.body.removeChild(normalizer);
20995
- }
20996
- }
20997
-
20998
- var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);
20999
- var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);
21000
-
21001
- !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== '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;
21002
-
21003
- if (process.env.NODE_ENV !== 'production') {
21004
- process.env.NODE_ENV !== '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;
21005
- }
21006
- }
21007
- }
21008
-
21009
- !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== '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;
21010
-
21011
- if (transaction.useCreateElement) {
21012
- while (container.lastChild) {
21013
- container.removeChild(container.lastChild);
21014
- }
21015
- DOMLazyTree.insertTreeBefore(container, markup, null);
21016
- } else {
21017
- setInnerHTML(container, markup);
21018
- ReactDOMComponentTree.precacheNode(instance, container.firstChild);
21019
- }
21020
-
21021
- if (process.env.NODE_ENV !== 'production') {
21022
- var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);
21023
- if (hostNode._debugID !== 0) {
21024
- ReactInstrumentation.debugTool.onHostOperation({
21025
- instanceID: hostNode._debugID,
21026
- type: 'mount',
21027
- payload: markup.toString()
21028
- });
21029
- }
21030
- }
21031
- }
21032
- };
21033
-
21034
- module.exports = ReactMount;
21035
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
21036
-
21037
- /***/ },
21038
- /* 169 */
21039
- /***/ function(module, exports, __webpack_require__) {
21040
-
21041
- /* WEBPACK VAR INJECTION */(function(process) {/**
21042
- * Copyright 2013-present, Facebook, Inc.
21043
- * All rights reserved.
21044
- *
21045
- * This source code is licensed under the BSD-style license found in the
21046
- * LICENSE file in the root directory of this source tree. An additional grant
21047
- * of patent rights can be found in the PATENTS file in the same directory.
21048
- *
21049
- */
21050
-
21051
- 'use strict';
21052
-
21053
- var validateDOMNesting = __webpack_require__(138);
21054
-
21055
- var DOC_NODE_TYPE = 9;
21056
-
21057
- function ReactDOMContainerInfo(topLevelWrapper, node) {
21058
- var info = {
21059
- _topLevelWrapper: topLevelWrapper,
21060
- _idCounter: 1,
21061
- _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,
21062
- _node: node,
21063
- _tag: node ? node.nodeName.toLowerCase() : null,
21064
- _namespaceURI: node ? node.namespaceURI : null
21065
- };
21066
- if (process.env.NODE_ENV !== 'production') {
21067
- info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;
21068
- }
21069
- return info;
21070
- }
21071
-
21072
- module.exports = ReactDOMContainerInfo;
21073
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
21074
-
21075
- /***/ },
21076
- /* 170 */
21077
- /***/ function(module, exports) {
21078
-
21079
- /**
21080
- * Copyright 2013-present, Facebook, Inc.
21081
- * All rights reserved.
21082
- *
21083
- * This source code is licensed under the BSD-style license found in the
21084
- * LICENSE file in the root directory of this source tree. An additional grant
21085
- * of patent rights can be found in the PATENTS file in the same directory.
21086
- *
21087
- */
21088
-
21089
- 'use strict';
21090
-
21091
- var ReactDOMFeatureFlags = {
21092
- useCreateElement: true,
21093
- useFiber: false
21094
- };
21095
-
21096
- module.exports = ReactDOMFeatureFlags;
21097
-
21098
- /***/ },
21099
- /* 171 */
21100
- /***/ function(module, exports, __webpack_require__) {
21101
-
21102
- /**
21103
- * Copyright 2013-present, Facebook, Inc.
21104
- * All rights reserved.
21105
- *
21106
- * This source code is licensed under the BSD-style license found in the
21107
- * LICENSE file in the root directory of this source tree. An additional grant
21108
- * of patent rights can be found in the PATENTS file in the same directory.
21109
- *
21110
- */
21111
-
21112
- 'use strict';
21113
-
21114
- var adler32 = __webpack_require__(172);
21115
-
21116
- var TAG_END = /\/?>/;
21117
- var COMMENT_START = /^<\!\-\-/;
21118
-
21119
- var ReactMarkupChecksum = {
21120
- CHECKSUM_ATTR_NAME: 'data-react-checksum',
21121
-
21122
- /**
21123
- * @param {string} markup Markup string
21124
- * @return {string} Markup string with checksum attribute attached
21125
- */
21126
- addChecksumToMarkup: function (markup) {
21127
- var checksum = adler32(markup);
21128
-
21129
- // Add checksum (handle both parent tags, comments and self-closing tags)
21130
- if (COMMENT_START.test(markup)) {
21131
- return markup;
21132
- } else {
21133
- return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '"$&');
21134
- }
21135
- },
21136
-
21137
- /**
21138
- * @param {string} markup to use
21139
- * @param {DOMElement} element root React element
21140
- * @returns {boolean} whether or not the markup is the same
21141
- */
21142
- canReuseMarkup: function (markup, element) {
21143
- var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);
21144
- existingChecksum = existingChecksum && parseInt(existingChecksum, 10);
21145
- var markupChecksum = adler32(markup);
21146
- return markupChecksum === existingChecksum;
21147
- }
21148
- };
21149
-
21150
- module.exports = ReactMarkupChecksum;
21151
-
21152
- /***/ },
21153
- /* 172 */
21154
- /***/ function(module, exports) {
21155
-
21156
- /**
21157
- * Copyright 2013-present, Facebook, Inc.
21158
- * All rights reserved.
21159
- *
21160
- * This source code is licensed under the BSD-style license found in the
21161
- * LICENSE file in the root directory of this source tree. An additional grant
21162
- * of patent rights can be found in the PATENTS file in the same directory.
21163
- *
21164
- *
21165
- */
21166
-
21167
- 'use strict';
21168
-
21169
- var MOD = 65521;
21170
-
21171
- // adler32 is not cryptographically strong, and is only used to sanity check that
21172
- // markup generated on the server matches the markup generated on the client.
21173
- // This implementation (a modified version of the SheetJS version) has been optimized
21174
- // for our use case, at the expense of conforming to the adler32 specification
21175
- // for non-ascii inputs.
21176
- function adler32(data) {
21177
- var a = 1;
21178
- var b = 0;
21179
- var i = 0;
21180
- var l = data.length;
21181
- var m = l & ~0x3;
21182
- while (i < m) {
21183
- var n = Math.min(i + 4096, m);
21184
- for (; i < n; i += 4) {
21185
- b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));
21186
- }
21187
- a %= MOD;
21188
- b %= MOD;
21189
- }
21190
- for (; i < l; i++) {
21191
- b += a += data.charCodeAt(i);
21192
- }
21193
- a %= MOD;
21194
- b %= MOD;
21195
- return a | b << 16;
21196
- }
21197
-
21198
- module.exports = adler32;
21199
-
21200
- /***/ },
21201
- /* 173 */
21202
- /***/ function(module, exports) {
21203
-
21204
- /**
21205
- * Copyright 2013-present, Facebook, Inc.
21206
- * All rights reserved.
21207
- *
21208
- * This source code is licensed under the BSD-style license found in the
21209
- * LICENSE file in the root directory of this source tree. An additional grant
21210
- * of patent rights can be found in the PATENTS file in the same directory.
21211
- *
21212
- */
21213
-
21214
- 'use strict';
21215
-
21216
- module.exports = '15.4.2';
21217
-
21218
- /***/ },
21219
- /* 174 */
21220
- /***/ function(module, exports, __webpack_require__) {
21221
-
21222
- /* WEBPACK VAR INJECTION */(function(process) {/**
21223
- * Copyright 2013-present, Facebook, Inc.
21224
- * All rights reserved.
21225
- *
21226
- * This source code is licensed under the BSD-style license found in the
21227
- * LICENSE file in the root directory of this source tree. An additional grant
21228
- * of patent rights can be found in the PATENTS file in the same directory.
21229
- *
21230
- */
21231
-
21232
- 'use strict';
21233
-
21234
- var _prodInvariant = __webpack_require__(36);
21235
-
21236
- var ReactCurrentOwner = __webpack_require__(11);
21237
- var ReactDOMComponentTree = __webpack_require__(35);
21238
- var ReactInstanceMap = __webpack_require__(118);
21239
-
21240
- var getHostComponentFromComposite = __webpack_require__(175);
21241
- var invariant = __webpack_require__(9);
21242
- var warning = __webpack_require__(12);
21243
-
21244
- /**
21245
- * Returns the DOM node rendered by this element.
21246
- *
21247
- * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode
21248
- *
21249
- * @param {ReactComponent|DOMElement} componentOrElement
21250
- * @return {?DOMElement} The root node of this element.
21251
- */
21252
- function findDOMNode(componentOrElement) {
21253
- if (process.env.NODE_ENV !== 'production') {
21254
- var owner = ReactCurrentOwner.current;
21255
- if (owner !== null) {
21256
- process.env.NODE_ENV !== '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;
21257
- owner._warnedAboutRefsInRender = true;
21258
- }
21259
- }
21260
- if (componentOrElement == null) {
21261
- return null;
21262
- }
21263
- if (componentOrElement.nodeType === 1) {
21264
- return componentOrElement;
21265
- }
21266
-
21267
- var inst = ReactInstanceMap.get(componentOrElement);
21268
- if (inst) {
21269
- inst = getHostComponentFromComposite(inst);
21270
- return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;
21271
- }
21272
-
21273
- if (typeof componentOrElement.render === 'function') {
21274
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;
21275
- } else {
21276
- true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;
21277
- }
21278
- }
21279
-
21280
- module.exports = findDOMNode;
21281
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
21282
-
21283
- /***/ },
21284
- /* 175 */
21285
- /***/ function(module, exports, __webpack_require__) {
21286
-
21287
- /**
21288
- * Copyright 2013-present, Facebook, Inc.
21289
- * All rights reserved.
21290
- *
21291
- * This source code is licensed under the BSD-style license found in the
21292
- * LICENSE file in the root directory of this source tree. An additional grant
21293
- * of patent rights can be found in the PATENTS file in the same directory.
21294
- *
21295
- */
21296
-
21297
- 'use strict';
21298
-
21299
- var ReactNodeTypes = __webpack_require__(122);
21300
-
21301
- function getHostComponentFromComposite(inst) {
21302
- var type;
21303
-
21304
- while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {
21305
- inst = inst._renderedComponent;
21306
- }
21307
-
21308
- if (type === ReactNodeTypes.HOST) {
21309
- return inst._renderedComponent;
21310
- } else if (type === ReactNodeTypes.EMPTY) {
21311
- return null;
21312
- }
21313
- }
21314
-
21315
- module.exports = getHostComponentFromComposite;
21316
-
21317
- /***/ },
21318
- /* 176 */
21319
- /***/ function(module, exports, __webpack_require__) {
21320
-
21321
- /**
21322
- * Copyright 2013-present, Facebook, Inc.
21323
- * All rights reserved.
21324
- *
21325
- * This source code is licensed under the BSD-style license found in the
21326
- * LICENSE file in the root directory of this source tree. An additional grant
21327
- * of patent rights can be found in the PATENTS file in the same directory.
21328
- *
21329
- */
21330
-
21331
- 'use strict';
21332
-
21333
- var ReactMount = __webpack_require__(168);
21334
-
21335
- module.exports = ReactMount.renderSubtreeIntoContainer;
21336
-
21337
- /***/ },
21338
- /* 177 */
21339
- /***/ function(module, exports, __webpack_require__) {
21340
-
21341
- /* WEBPACK VAR INJECTION */(function(process) {/**
21342
- * Copyright 2013-present, Facebook, Inc.
21343
- * All rights reserved.
21344
- *
21345
- * This source code is licensed under the BSD-style license found in the
21346
- * LICENSE file in the root directory of this source tree. An additional grant
21347
- * of patent rights can be found in the PATENTS file in the same directory.
21348
- *
21349
- */
21350
-
21351
- 'use strict';
21352
-
21353
- var DOMProperty = __webpack_require__(37);
21354
- var EventPluginRegistry = __webpack_require__(44);
21355
- var ReactComponentTreeHook = __webpack_require__(27);
21356
-
21357
- var warning = __webpack_require__(12);
21358
-
21359
- if (process.env.NODE_ENV !== 'production') {
21360
- var reactProps = {
21361
- children: true,
21362
- dangerouslySetInnerHTML: true,
21363
- key: true,
21364
- ref: true,
21365
-
21366
- autoFocus: true,
21367
- defaultValue: true,
21368
- valueLink: true,
21369
- defaultChecked: true,
21370
- checkedLink: true,
21371
- innerHTML: true,
21372
- suppressContentEditableWarning: true,
21373
- onFocusIn: true,
21374
- onFocusOut: true
21375
- };
21376
- var warnedProperties = {};
21377
-
21378
- var validateProperty = function (tagName, name, debugID) {
21379
- if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) {
21380
- return true;
21381
- }
21382
- if (reactProps.hasOwnProperty(name) && reactProps[name] || warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {
21383
- return true;
21384
- }
21385
- if (EventPluginRegistry.registrationNameModules.hasOwnProperty(name)) {
21386
- return true;
21387
- }
21388
- warnedProperties[name] = true;
21389
- var lowerCasedName = name.toLowerCase();
21390
-
21391
- // data-* attributes should be lowercase; suggest the lowercase version
21392
- var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;
21393
-
21394
- var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null;
21395
-
21396
- if (standardName != null) {
21397
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown DOM property %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21398
- return true;
21399
- } else if (registrationName != null) {
21400
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown event handler property %s. Did you mean `%s`?%s', name, registrationName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21401
- return true;
21402
- } else {
21403
- // We were unable to guess which prop the user intended.
21404
- // It is likely that the user was just blindly spreading/forwarding props
21405
- // Components should be careful to only render valid props/attributes.
21406
- // Warning will be invoked in warnUnknownProperties to allow grouping.
21407
- return false;
21408
- }
21409
- };
21410
- }
21411
-
21412
- var warnUnknownProperties = function (debugID, element) {
21413
- var unknownProps = [];
21414
- for (var key in element.props) {
21415
- var isValid = validateProperty(element.type, key, debugID);
21416
- if (!isValid) {
21417
- unknownProps.push(key);
21418
- }
21419
- }
21420
-
21421
- var unknownPropString = unknownProps.map(function (prop) {
21422
- return '`' + prop + '`';
21423
- }).join(', ');
21424
-
21425
- if (unknownProps.length === 1) {
21426
- process.env.NODE_ENV !== '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;
21427
- } else if (unknownProps.length > 1) {
21428
- process.env.NODE_ENV !== '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;
21429
- }
21430
- };
21431
-
21432
- function handleElement(debugID, element) {
21433
- if (element == null || typeof element.type !== 'string') {
21434
- return;
21435
- }
21436
- if (element.type.indexOf('-') >= 0 || element.props.is) {
21437
- return;
21438
- }
21439
- warnUnknownProperties(debugID, element);
21440
- }
21441
-
21442
- var ReactDOMUnknownPropertyHook = {
21443
- onBeforeMountComponent: function (debugID, element) {
21444
- handleElement(debugID, element);
21445
- },
21446
- onBeforeUpdateComponent: function (debugID, element) {
21447
- handleElement(debugID, element);
21448
- }
21449
- };
21450
-
21451
- module.exports = ReactDOMUnknownPropertyHook;
21452
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
21453
-
21454
- /***/ },
21455
- /* 178 */
21456
- /***/ function(module, exports, __webpack_require__) {
21457
-
21458
- /* WEBPACK VAR INJECTION */(function(process) {/**
21459
- * Copyright 2013-present, Facebook, Inc.
21460
- * All rights reserved.
21461
- *
21462
- * This source code is licensed under the BSD-style license found in the
21463
- * LICENSE file in the root directory of this source tree. An additional grant
21464
- * of patent rights can be found in the PATENTS file in the same directory.
21465
- *
21466
- */
21467
-
21468
- 'use strict';
21469
-
21470
- var ReactComponentTreeHook = __webpack_require__(27);
21471
-
21472
- var warning = __webpack_require__(12);
21473
-
21474
- var didWarnValueNull = false;
21475
-
21476
- function handleElement(debugID, element) {
21477
- if (element == null) {
21478
- return;
21479
- }
21480
- if (element.type !== 'input' && element.type !== 'textarea' && element.type !== 'select') {
21481
- return;
21482
- }
21483
- if (element.props != null && element.props.value === null && !didWarnValueNull) {
21484
- process.env.NODE_ENV !== '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;
21485
-
21486
- didWarnValueNull = true;
21487
- }
21488
- }
21489
-
21490
- var ReactDOMNullInputValuePropHook = {
21491
- onBeforeMountComponent: function (debugID, element) {
21492
- handleElement(debugID, element);
21493
- },
21494
- onBeforeUpdateComponent: function (debugID, element) {
21495
- handleElement(debugID, element);
21496
- }
21497
- };
21498
-
21499
- module.exports = ReactDOMNullInputValuePropHook;
21500
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
21501
-
21502
- /***/ },
21503
- /* 179 */
21504
- /***/ function(module, exports, __webpack_require__) {
21505
-
21506
- /* WEBPACK VAR INJECTION */(function(process) {/**
21507
- * Copyright 2013-present, Facebook, Inc.
21508
- * All rights reserved.
21509
- *
21510
- * This source code is licensed under the BSD-style license found in the
21511
- * LICENSE file in the root directory of this source tree. An additional grant
21512
- * of patent rights can be found in the PATENTS file in the same directory.
21513
- *
21514
- */
21515
-
21516
- 'use strict';
21517
-
21518
- var DOMProperty = __webpack_require__(37);
21519
- var ReactComponentTreeHook = __webpack_require__(27);
21520
-
21521
- var warning = __webpack_require__(12);
21522
-
21523
- var warnedProperties = {};
21524
- var rARIA = new RegExp('^(aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
21525
-
21526
- function validateProperty(tagName, name, debugID) {
21527
- if (warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {
21528
- return true;
21529
- }
21530
-
21531
- if (rARIA.test(name)) {
21532
- var lowerCasedName = name.toLowerCase();
21533
- var standardName = DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;
21534
-
21535
- // If this is an aria-* attribute, but is not listed in the known DOM
21536
- // DOM properties, then it is an invalid aria-* attribute.
21537
- if (standardName == null) {
21538
- warnedProperties[name] = true;
21539
- return false;
21540
- }
21541
- // aria-* attributes should be lowercase; suggest the lowercase version.
21542
- if (name !== standardName) {
21543
- process.env.NODE_ENV !== 'production' ? warning(false, 'Unknown ARIA attribute %s. Did you mean %s?%s', name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21544
- warnedProperties[name] = true;
21545
- return true;
21546
- }
21547
- }
21548
-
21549
- return true;
21550
- }
21551
-
21552
- function warnInvalidARIAProps(debugID, element) {
21553
- var invalidProps = [];
21554
-
21555
- for (var key in element.props) {
21556
- var isValid = validateProperty(element.type, key, debugID);
21557
- if (!isValid) {
21558
- invalidProps.push(key);
21559
- }
21560
- }
21561
-
21562
- var unknownPropString = invalidProps.map(function (prop) {
21563
- return '`' + prop + '`';
21564
- }).join(', ');
21565
-
21566
- if (invalidProps.length === 1) {
21567
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21568
- } else if (invalidProps.length > 1) {
21569
- process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;
21570
- }
21571
- }
21572
-
21573
- function handleElement(debugID, element) {
21574
- if (element == null || typeof element.type !== 'string') {
21575
- return;
21576
- }
21577
- if (element.type.indexOf('-') >= 0 || element.props.is) {
21578
- return;
21579
- }
21580
-
21581
- warnInvalidARIAProps(debugID, element);
21582
- }
21583
-
21584
- var ReactDOMInvalidARIAHook = {
21585
- onBeforeMountComponent: function (debugID, element) {
21586
- if (process.env.NODE_ENV !== 'production') {
21587
- handleElement(debugID, element);
21588
- }
21589
- },
21590
- onBeforeUpdateComponent: function (debugID, element) {
21591
- if (process.env.NODE_ENV !== 'production') {
21592
- handleElement(debugID, element);
21593
- }
21594
- }
21595
- };
21596
-
21597
- module.exports = ReactDOMInvalidARIAHook;
21598
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
21599
-
21600
- /***/ },
21601
- /* 180 */
21602
- /***/ function(module, exports, __webpack_require__) {
21603
-
21604
- 'use strict';
21605
-
21606
- exports.__esModule = true;
21607
- exports.createMemoryHistory = exports.hashHistory = exports.browserHistory = exports.applyRouterMiddleware = exports.formatPattern = exports.useRouterHistory = exports.match = exports.routerShape = exports.locationShape = exports.RouterContext = exports.createRoutes = exports.Route = exports.Redirect = exports.IndexRoute = exports.IndexRedirect = exports.withRouter = exports.IndexLink = exports.Link = exports.Router = undefined;
21608
-
21609
- var _RouteUtils = __webpack_require__(181);
21610
-
21611
- Object.defineProperty(exports, 'createRoutes', {
21612
- enumerable: true,
21613
- get: function get() {
21614
- return _RouteUtils.createRoutes;
21615
- }
21616
- });
21617
-
21618
- var _PropTypes = __webpack_require__(182);
21619
-
21620
- Object.defineProperty(exports, 'locationShape', {
21621
- enumerable: true,
21622
- get: function get() {
21623
- return _PropTypes.locationShape;
21624
- }
21625
- });
21626
- Object.defineProperty(exports, 'routerShape', {
21627
- enumerable: true,
21628
- get: function get() {
21629
- return _PropTypes.routerShape;
21630
- }
21631
- });
21632
-
21633
- var _PatternUtils = __webpack_require__(183);
21634
-
21635
- Object.defineProperty(exports, 'formatPattern', {
21636
- enumerable: true,
21637
- get: function get() {
21638
- return _PatternUtils.formatPattern;
21639
- }
21640
- });
21641
-
21642
- var _Router2 = __webpack_require__(185);
21643
-
21644
- var _Router3 = _interopRequireDefault(_Router2);
21645
-
21646
- var _Link2 = __webpack_require__(201);
21647
-
21648
- var _Link3 = _interopRequireDefault(_Link2);
21649
-
21650
- var _IndexLink2 = __webpack_require__(202);
21651
-
21652
- var _IndexLink3 = _interopRequireDefault(_IndexLink2);
21653
-
21654
- var _withRouter2 = __webpack_require__(203);
21655
-
21656
- var _withRouter3 = _interopRequireDefault(_withRouter2);
21657
-
21658
- var _IndexRedirect2 = __webpack_require__(205);
21659
-
21660
- var _IndexRedirect3 = _interopRequireDefault(_IndexRedirect2);
21661
-
21662
- var _IndexRoute2 = __webpack_require__(207);
21663
-
21664
- var _IndexRoute3 = _interopRequireDefault(_IndexRoute2);
21665
-
21666
- var _Redirect2 = __webpack_require__(206);
21667
-
21668
- var _Redirect3 = _interopRequireDefault(_Redirect2);
21669
-
21670
- var _Route2 = __webpack_require__(208);
21671
-
21672
- var _Route3 = _interopRequireDefault(_Route2);
21673
-
21674
- var _RouterContext2 = __webpack_require__(197);
21675
-
21676
- var _RouterContext3 = _interopRequireDefault(_RouterContext2);
21677
-
21678
- var _match2 = __webpack_require__(209);
21679
-
21680
- var _match3 = _interopRequireDefault(_match2);
21681
-
21682
- var _useRouterHistory2 = __webpack_require__(223);
21683
-
21684
- var _useRouterHistory3 = _interopRequireDefault(_useRouterHistory2);
21685
-
21686
- var _applyRouterMiddleware2 = __webpack_require__(224);
21687
-
21688
- var _applyRouterMiddleware3 = _interopRequireDefault(_applyRouterMiddleware2);
21689
-
21690
- var _browserHistory2 = __webpack_require__(225);
21691
-
21692
- var _browserHistory3 = _interopRequireDefault(_browserHistory2);
21693
-
21694
- var _hashHistory2 = __webpack_require__(233);
21695
-
21696
- var _hashHistory3 = _interopRequireDefault(_hashHistory2);
21697
-
21698
- var _createMemoryHistory2 = __webpack_require__(211);
21699
-
21700
- var _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2);
21701
-
21702
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21703
-
21704
- exports.Router = _Router3.default; /* components */
21705
-
21706
- exports.Link = _Link3.default;
21707
- exports.IndexLink = _IndexLink3.default;
21708
- exports.withRouter = _withRouter3.default;
21709
-
21710
- /* components (configuration) */
21711
-
21712
- exports.IndexRedirect = _IndexRedirect3.default;
21713
- exports.IndexRoute = _IndexRoute3.default;
21714
- exports.Redirect = _Redirect3.default;
21715
- exports.Route = _Route3.default;
21716
-
21717
- /* utils */
21718
-
21719
- exports.RouterContext = _RouterContext3.default;
21720
- exports.match = _match3.default;
21721
- exports.useRouterHistory = _useRouterHistory3.default;
21722
- exports.applyRouterMiddleware = _applyRouterMiddleware3.default;
21723
-
21724
- /* histories */
21725
-
21726
- exports.browserHistory = _browserHistory3.default;
21727
- exports.hashHistory = _hashHistory3.default;
21728
- exports.createMemoryHistory = _createMemoryHistory3.default;
21729
-
21730
- /***/ },
21731
- /* 181 */
21732
- /***/ function(module, exports, __webpack_require__) {
21733
-
21734
- 'use strict';
21735
-
21736
- exports.__esModule = true;
21737
-
21738
- 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; };
21739
-
21740
- exports.isReactChildren = isReactChildren;
21741
- exports.createRouteFromReactElement = createRouteFromReactElement;
21742
- exports.createRoutesFromReactChildren = createRoutesFromReactChildren;
21743
- exports.createRoutes = createRoutes;
21744
-
21745
- var _react = __webpack_require__(2);
21746
-
21747
- var _react2 = _interopRequireDefault(_react);
21748
-
21749
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21750
-
21751
- function isValidChild(object) {
21752
- return object == null || _react2.default.isValidElement(object);
21753
- }
21754
-
21755
- function isReactChildren(object) {
21756
- return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);
21757
- }
21758
-
21759
- function createRoute(defaultProps, props) {
21760
- return _extends({}, defaultProps, props);
21761
- }
21762
-
21763
- function createRouteFromReactElement(element) {
21764
- var type = element.type;
21765
- var route = createRoute(type.defaultProps, element.props);
21766
-
21767
- if (route.children) {
21768
- var childRoutes = createRoutesFromReactChildren(route.children, route);
21769
-
21770
- if (childRoutes.length) route.childRoutes = childRoutes;
21771
-
21772
- delete route.children;
21773
- }
21774
-
21775
- return route;
21776
- }
21777
-
21778
- /**
21779
- * Creates and returns a routes object from the given ReactChildren. JSX
21780
- * provides a convenient way to visualize how routes in the hierarchy are
21781
- * nested.
21782
- *
21783
- * import { Route, createRoutesFromReactChildren } from 'react-router'
21784
- *
21785
- * const routes = createRoutesFromReactChildren(
21786
- * <Route component={App}>
21787
- * <Route path="home" component={Dashboard}/>
21788
- * <Route path="news" component={NewsFeed}/>
21789
- * </Route>
21790
- * )
21791
- *
21792
- * Note: This method is automatically used when you provide <Route> children
21793
- * to a <Router> component.
21794
- */
21795
- function createRoutesFromReactChildren(children, parentRoute) {
21796
- var routes = [];
21797
-
21798
- _react2.default.Children.forEach(children, function (element) {
21799
- if (_react2.default.isValidElement(element)) {
21800
- // Component classes may have a static create* method.
21801
- if (element.type.createRouteFromReactElement) {
21802
- var route = element.type.createRouteFromReactElement(element, parentRoute);
21803
-
21804
- if (route) routes.push(route);
21805
- } else {
21806
- routes.push(createRouteFromReactElement(element));
21807
- }
21808
- }
21809
- });
21810
-
21811
- return routes;
21812
- }
21813
-
21814
- /**
21815
- * Creates and returns an array of routes from the given object which
21816
- * may be a JSX route, a plain object route, or an array of either.
21817
- */
21818
- function createRoutes(routes) {
21819
- if (isReactChildren(routes)) {
21820
- routes = createRoutesFromReactChildren(routes);
21821
- } else if (routes && !Array.isArray(routes)) {
21822
- routes = [routes];
21823
- }
21824
-
21825
- return routes;
21826
- }
21827
-
21828
- /***/ },
21829
- /* 182 */
21830
- /***/ function(module, exports, __webpack_require__) {
21831
-
21832
- 'use strict';
21833
-
21834
- exports.__esModule = true;
21835
- exports.locationShape = exports.routerShape = undefined;
21836
-
21837
- var _react = __webpack_require__(2);
21838
-
21839
- var func = _react.PropTypes.func,
21840
- object = _react.PropTypes.object,
21841
- shape = _react.PropTypes.shape,
21842
- string = _react.PropTypes.string;
21843
- var routerShape = exports.routerShape = shape({
21844
- push: func.isRequired,
21845
- replace: func.isRequired,
21846
- go: func.isRequired,
21847
- goBack: func.isRequired,
21848
- goForward: func.isRequired,
21849
- setRouteLeaveHook: func.isRequired,
21850
- isActive: func.isRequired
21851
- });
21852
-
21853
- var locationShape = exports.locationShape = shape({
21854
- pathname: string.isRequired,
21855
- search: string.isRequired,
21856
- state: object,
21857
- action: string.isRequired,
21858
- key: string
21859
- });
21860
-
21861
- /***/ },
21862
- /* 183 */
21863
- /***/ function(module, exports, __webpack_require__) {
21864
-
21865
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
21866
-
21867
- exports.__esModule = true;
21868
- exports.compilePattern = compilePattern;
21869
- exports.matchPattern = matchPattern;
21870
- exports.getParamNames = getParamNames;
21871
- exports.getParams = getParams;
21872
- exports.formatPattern = formatPattern;
21873
-
21874
- var _invariant = __webpack_require__(184);
21875
-
21876
- var _invariant2 = _interopRequireDefault(_invariant);
21877
-
21878
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21879
-
21880
- function escapeRegExp(string) {
21881
- return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
21882
- }
21883
-
21884
- function _compilePattern(pattern) {
21885
- var regexpSource = '';
21886
- var paramNames = [];
21887
- var tokens = [];
21888
-
21889
- var match = void 0,
21890
- lastIndex = 0,
21891
- matcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|\*\*|\*|\(|\)|\\\(|\\\)/g;
21892
- while (match = matcher.exec(pattern)) {
21893
- if (match.index !== lastIndex) {
21894
- tokens.push(pattern.slice(lastIndex, match.index));
21895
- regexpSource += escapeRegExp(pattern.slice(lastIndex, match.index));
21896
- }
21897
-
21898
- if (match[1]) {
21899
- regexpSource += '([^/]+)';
21900
- paramNames.push(match[1]);
21901
- } else if (match[0] === '**') {
21902
- regexpSource += '(.*)';
21903
- paramNames.push('splat');
21904
- } else if (match[0] === '*') {
21905
- regexpSource += '(.*?)';
21906
- paramNames.push('splat');
21907
- } else if (match[0] === '(') {
21908
- regexpSource += '(?:';
21909
- } else if (match[0] === ')') {
21910
- regexpSource += ')?';
21911
- } else if (match[0] === '\\(') {
21912
- regexpSource += '\\(';
21913
- } else if (match[0] === '\\)') {
21914
- regexpSource += '\\)';
21915
- }
21916
-
21917
- tokens.push(match[0]);
21918
-
21919
- lastIndex = matcher.lastIndex;
21920
- }
21921
-
21922
- if (lastIndex !== pattern.length) {
21923
- tokens.push(pattern.slice(lastIndex, pattern.length));
21924
- regexpSource += escapeRegExp(pattern.slice(lastIndex, pattern.length));
21925
- }
21926
-
21927
- return {
21928
- pattern: pattern,
21929
- regexpSource: regexpSource,
21930
- paramNames: paramNames,
21931
- tokens: tokens
21932
- };
21933
- }
21934
-
21935
- var CompiledPatternsCache = Object.create(null);
21936
-
21937
- function compilePattern(pattern) {
21938
- if (!CompiledPatternsCache[pattern]) CompiledPatternsCache[pattern] = _compilePattern(pattern);
21939
-
21940
- return CompiledPatternsCache[pattern];
21941
- }
21942
-
21943
- /**
21944
- * Attempts to match a pattern on the given pathname. Patterns may use
21945
- * the following special characters:
21946
- *
21947
- * - :paramName Matches a URL segment up to the next /, ?, or #. The
21948
- * captured string is considered a "param"
21949
- * - () Wraps a segment of the URL that is optional
21950
- * - * Consumes (non-greedy) all characters up to the next
21951
- * character in the pattern, or to the end of the URL if
21952
- * there is none
21953
- * - ** Consumes (greedy) all characters up to the next character
21954
- * in the pattern, or to the end of the URL if there is none
21955
- *
21956
- * The function calls callback(error, matched) when finished.
21957
- * The return value is an object with the following properties:
21958
- *
21959
- * - remainingPathname
21960
- * - paramNames
21961
- * - paramValues
21962
- */
21963
- function matchPattern(pattern, pathname) {
21964
- // Ensure pattern starts with leading slash for consistency with pathname.
21965
- if (pattern.charAt(0) !== '/') {
21966
- pattern = '/' + pattern;
21967
- }
21968
-
21969
- var _compilePattern2 = compilePattern(pattern),
21970
- regexpSource = _compilePattern2.regexpSource,
21971
- paramNames = _compilePattern2.paramNames,
21972
- tokens = _compilePattern2.tokens;
21973
-
21974
- if (pattern.charAt(pattern.length - 1) !== '/') {
21975
- regexpSource += '/?'; // Allow optional path separator at end.
21976
- }
21977
-
21978
- // Special-case patterns like '*' for catch-all routes.
21979
- if (tokens[tokens.length - 1] === '*') {
21980
- regexpSource += '$';
21981
- }
21982
-
21983
- var match = pathname.match(new RegExp('^' + regexpSource, 'i'));
21984
- if (match == null) {
21985
- return null;
21986
- }
21987
-
21988
- var matchedPath = match[0];
21989
- var remainingPathname = pathname.substr(matchedPath.length);
21990
-
21991
- if (remainingPathname) {
21992
- // Require that the match ends at a path separator, if we didn't match
21993
- // the full path, so any remaining pathname is a new path segment.
21994
- if (matchedPath.charAt(matchedPath.length - 1) !== '/') {
21995
- return null;
21996
- }
21997
-
21998
- // If there is a remaining pathname, treat the path separator as part of
21999
- // the remaining pathname for properly continuing the match.
22000
- remainingPathname = '/' + remainingPathname;
22001
- }
22002
-
22003
- return {
22004
- remainingPathname: remainingPathname,
22005
- paramNames: paramNames,
22006
- paramValues: match.slice(1).map(function (v) {
22007
- return v && decodeURIComponent(v);
22008
- })
22009
- };
22010
- }
22011
-
22012
- function getParamNames(pattern) {
22013
- return compilePattern(pattern).paramNames;
22014
- }
22015
-
22016
- function getParams(pattern, pathname) {
22017
- var match = matchPattern(pattern, pathname);
22018
- if (!match) {
22019
- return null;
22020
- }
22021
-
22022
- var paramNames = match.paramNames,
22023
- paramValues = match.paramValues;
22024
-
22025
- var params = {};
22026
-
22027
- paramNames.forEach(function (paramName, index) {
22028
- params[paramName] = paramValues[index];
22029
- });
22030
-
22031
- return params;
22032
- }
22033
-
22034
- /**
22035
- * Returns a version of the given pattern with params interpolated. Throws
22036
- * if there is a dynamic segment of the pattern for which there is no param.
22037
- */
22038
- function formatPattern(pattern, params) {
22039
- params = params || {};
22040
-
22041
- var _compilePattern3 = compilePattern(pattern),
22042
- tokens = _compilePattern3.tokens;
22043
-
22044
- var parenCount = 0,
22045
- pathname = '',
22046
- splatIndex = 0,
22047
- parenHistory = [];
22048
-
22049
- var token = void 0,
22050
- paramName = void 0,
22051
- paramValue = void 0;
22052
- for (var i = 0, len = tokens.length; i < len; ++i) {
22053
- token = tokens[i];
22054
-
22055
- if (token === '*' || token === '**') {
22056
- paramValue = Array.isArray(params.splat) ? params.splat[splatIndex++] : params.splat;
22057
-
22058
- !(paramValue != null || parenCount > 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Missing splat #%s for path "%s"', splatIndex, pattern) : (0, _invariant2.default)(false) : void 0;
22059
-
22060
- if (paramValue != null) pathname += encodeURI(paramValue);
22061
- } else if (token === '(') {
22062
- parenHistory[parenCount] = '';
22063
- parenCount += 1;
22064
- } else if (token === ')') {
22065
- var parenText = parenHistory.pop();
22066
- parenCount -= 1;
22067
-
22068
- if (parenCount) parenHistory[parenCount - 1] += parenText;else pathname += parenText;
22069
- } else if (token === '\\(') {
22070
- pathname += '(';
22071
- } else if (token === '\\)') {
22072
- pathname += ')';
22073
- } else if (token.charAt(0) === ':') {
22074
- paramName = token.substring(1);
22075
- paramValue = params[paramName];
22076
-
22077
- !(paramValue != null || parenCount > 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Missing "%s" parameter for path "%s"', paramName, pattern) : (0, _invariant2.default)(false) : void 0;
22078
-
22079
- if (paramValue == null) {
22080
- if (parenCount) {
22081
- parenHistory[parenCount - 1] = '';
22082
-
22083
- var curTokenIdx = tokens.indexOf(token);
22084
- var tokensSubset = tokens.slice(curTokenIdx, tokens.length);
22085
- var nextParenIdx = -1;
22086
-
22087
- for (var _i = 0; _i < tokensSubset.length; _i++) {
22088
- if (tokensSubset[_i] == ')') {
22089
- nextParenIdx = _i;
22090
- break;
22091
- }
22092
- }
22093
-
22094
- !(nextParenIdx > 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Path "%s" is missing end paren at segment "%s"', pattern, tokensSubset.join('')) : (0, _invariant2.default)(false) : void 0;
22095
-
22096
- // jump to ending paren
22097
- i = curTokenIdx + nextParenIdx - 1;
22098
- }
22099
- } else if (parenCount) parenHistory[parenCount - 1] += encodeURIComponent(paramValue);else pathname += encodeURIComponent(paramValue);
22100
- } else {
22101
- if (parenCount) parenHistory[parenCount - 1] += token;else pathname += token;
22102
- }
22103
- }
22104
-
22105
- !(parenCount <= 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Path "%s" is missing end paren', pattern) : (0, _invariant2.default)(false) : void 0;
22106
-
22107
- return pathname.replace(/\/+/g, '/');
22108
- }
22109
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
22110
-
22111
- /***/ },
22112
- /* 184 */
22113
- /***/ function(module, exports, __webpack_require__) {
22114
-
22115
- /* WEBPACK VAR INJECTION */(function(process) {/**
22116
- * Copyright 2013-2015, Facebook, Inc.
22117
- * All rights reserved.
22118
- *
22119
- * This source code is licensed under the BSD-style license found in the
22120
- * LICENSE file in the root directory of this source tree. An additional grant
22121
- * of patent rights can be found in the PATENTS file in the same directory.
22122
- */
22123
-
22124
- 'use strict';
22125
-
22126
- /**
22127
- * Use invariant() to assert state which your program assumes to be true.
22128
- *
22129
- * Provide sprintf-style format (only %s is supported) and arguments
22130
- * to provide information about what broke and what you were
22131
- * expecting.
22132
- *
22133
- * The invariant message will be stripped in production, but the invariant
22134
- * will remain to ensure logic does not differ in production.
22135
- */
22136
-
22137
- var invariant = function(condition, format, a, b, c, d, e, f) {
22138
- if (process.env.NODE_ENV !== 'production') {
22139
- if (format === undefined) {
22140
- throw new Error('invariant requires an error message argument');
22141
- }
22142
- }
22143
-
22144
- if (!condition) {
22145
- var error;
22146
- if (format === undefined) {
22147
- error = new Error(
22148
- 'Minified exception occurred; use the non-minified dev environment ' +
22149
- 'for the full error message and additional helpful warnings.'
22150
- );
22151
- } else {
22152
- var args = [a, b, c, d, e, f];
22153
- var argIndex = 0;
22154
- error = new Error(
22155
- format.replace(/%s/g, function() { return args[argIndex++]; })
22156
- );
22157
- error.name = 'Invariant Violation';
22158
- }
22159
-
22160
- error.framesToPop = 1; // we don't care about invariant's own frame
22161
- throw error;
22162
- }
22163
- };
22164
-
22165
- module.exports = invariant;
22166
-
22167
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
22168
-
22169
- /***/ },
22170
- /* 185 */
22171
- /***/ function(module, exports, __webpack_require__) {
22172
-
22173
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
22174
-
22175
- exports.__esModule = true;
22176
-
22177
- 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; };
22178
-
22179
- var _invariant = __webpack_require__(184);
22180
-
22181
- var _invariant2 = _interopRequireDefault(_invariant);
22182
-
22183
- var _react = __webpack_require__(2);
22184
-
22185
- var _react2 = _interopRequireDefault(_react);
22186
-
22187
- var _createTransitionManager2 = __webpack_require__(186);
22188
-
22189
- var _createTransitionManager3 = _interopRequireDefault(_createTransitionManager2);
22190
-
22191
- var _InternalPropTypes = __webpack_require__(196);
22192
-
22193
- var _RouterContext = __webpack_require__(197);
22194
-
22195
- var _RouterContext2 = _interopRequireDefault(_RouterContext);
22196
-
22197
- var _RouteUtils = __webpack_require__(181);
22198
-
22199
- var _RouterUtils = __webpack_require__(200);
22200
-
22201
- var _routerWarning = __webpack_require__(187);
22202
-
22203
- var _routerWarning2 = _interopRequireDefault(_routerWarning);
22204
-
22205
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22206
-
22207
- 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; }
22208
-
22209
- var _React$PropTypes = _react2.default.PropTypes,
22210
- func = _React$PropTypes.func,
22211
- object = _React$PropTypes.object;
22212
-
22213
- /**
22214
- * A <Router> is a high-level API for automatically setting up
22215
- * a router that renders a <RouterContext> with all the props
22216
- * it needs each time the URL changes.
22217
- */
22218
-
22219
- var Router = _react2.default.createClass({
22220
- displayName: 'Router',
22221
-
22222
-
22223
- propTypes: {
22224
- history: object,
22225
- children: _InternalPropTypes.routes,
22226
- routes: _InternalPropTypes.routes, // alias for children
22227
- render: func,
22228
- createElement: func,
22229
- onError: func,
22230
- onUpdate: func,
22231
-
22232
- // PRIVATE: For client-side rehydration of server match.
22233
- matchContext: object
22234
- },
22235
-
22236
- getDefaultProps: function getDefaultProps() {
22237
- return {
22238
- render: function render(props) {
22239
- return _react2.default.createElement(_RouterContext2.default, props);
22240
- }
22241
- };
22242
- },
22243
- getInitialState: function getInitialState() {
22244
- return {
22245
- location: null,
22246
- routes: null,
22247
- params: null,
22248
- components: null
22249
- };
22250
- },
22251
- handleError: function handleError(error) {
22252
- if (this.props.onError) {
22253
- this.props.onError.call(this, error);
22254
- } else {
22255
- // Throw errors by default so we don't silently swallow them!
22256
- throw error; // This error probably occurred in getChildRoutes or getComponents.
22257
- }
22258
- },
22259
- createRouterObject: function createRouterObject(state) {
22260
- var matchContext = this.props.matchContext;
22261
-
22262
- if (matchContext) {
22263
- return matchContext.router;
22264
- }
22265
-
22266
- var history = this.props.history;
22267
-
22268
- return (0, _RouterUtils.createRouterObject)(history, this.transitionManager, state);
22269
- },
22270
- createTransitionManager: function createTransitionManager() {
22271
- var matchContext = this.props.matchContext;
22272
-
22273
- if (matchContext) {
22274
- return matchContext.transitionManager;
22275
- }
22276
-
22277
- var history = this.props.history;
22278
- var _props = this.props,
22279
- routes = _props.routes,
22280
- children = _props.children;
22281
-
22282
-
22283
- !history.getCurrentLocation ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You have provided a history object created with history v4.x or v2.x ' + 'and earlier. This version of React Router is only compatible with v3 ' + 'history objects. Please change to history v3.x.') : (0, _invariant2.default)(false) : void 0;
22284
-
22285
- return (0, _createTransitionManager3.default)(history, (0, _RouteUtils.createRoutes)(routes || children));
22286
- },
22287
- componentWillMount: function componentWillMount() {
22288
- var _this = this;
22289
-
22290
- this.transitionManager = this.createTransitionManager();
22291
- this.router = this.createRouterObject(this.state);
22292
-
22293
- this._unlisten = this.transitionManager.listen(function (error, state) {
22294
- if (error) {
22295
- _this.handleError(error);
22296
- } else {
22297
- // Keep the identity of this.router because of a caveat in ContextUtils:
22298
- // they only work if the object identity is preserved.
22299
- (0, _RouterUtils.assignRouterState)(_this.router, state);
22300
- _this.setState(state, _this.props.onUpdate);
22301
- }
22302
- });
22303
- },
22304
-
22305
-
22306
- /* istanbul ignore next: sanity check */
22307
- componentWillReceiveProps: function componentWillReceiveProps(nextProps) {
22308
- process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(nextProps.history === this.props.history, 'You cannot change <Router history>; it will be ignored') : void 0;
22309
-
22310
- process.env.NODE_ENV !== '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;
22311
- },
22312
- componentWillUnmount: function componentWillUnmount() {
22313
- if (this._unlisten) this._unlisten();
22314
- },
22315
- render: function render() {
22316
- var _state = this.state,
22317
- location = _state.location,
22318
- routes = _state.routes,
22319
- params = _state.params,
22320
- components = _state.components;
22321
-
22322
- var _props2 = this.props,
22323
- createElement = _props2.createElement,
22324
- render = _props2.render,
22325
- props = _objectWithoutProperties(_props2, ['createElement', 'render']);
22326
-
22327
- if (location == null) return null; // Async match
22328
-
22329
- // Only forward non-Router-specific props to routing context, as those are
22330
- // the only ones that might be custom routing context props.
22331
- Object.keys(Router.propTypes).forEach(function (propType) {
22332
- return delete props[propType];
22333
- });
22334
-
22335
- return render(_extends({}, props, {
22336
- router: this.router,
22337
- location: location,
22338
- routes: routes,
22339
- params: params,
22340
- components: components,
22341
- createElement: createElement
22342
- }));
22343
- }
22344
- });
22345
-
22346
- exports.default = Router;
22347
- module.exports = exports['default'];
22348
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
22349
-
22350
- /***/ },
22351
- /* 186 */
22352
- /***/ function(module, exports, __webpack_require__) {
22353
-
22354
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
22355
-
22356
- exports.__esModule = true;
22357
-
22358
- 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; };
22359
-
22360
- exports.default = createTransitionManager;
22361
-
22362
- var _routerWarning = __webpack_require__(187);
22363
-
22364
- var _routerWarning2 = _interopRequireDefault(_routerWarning);
22365
-
22366
- var _computeChangedRoutes2 = __webpack_require__(189);
22367
-
22368
- var _computeChangedRoutes3 = _interopRequireDefault(_computeChangedRoutes2);
22369
-
22370
- var _TransitionUtils = __webpack_require__(190);
22371
-
22372
- var _isActive2 = __webpack_require__(192);
22373
-
22374
- var _isActive3 = _interopRequireDefault(_isActive2);
22375
-
22376
- var _getComponents = __webpack_require__(193);
22377
-
22378
- var _getComponents2 = _interopRequireDefault(_getComponents);
22379
-
22380
- var _matchRoutes = __webpack_require__(195);
22381
-
22382
- var _matchRoutes2 = _interopRequireDefault(_matchRoutes);
22383
-
22384
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22385
-
22386
- function hasAnyProperties(object) {
22387
- for (var p in object) {
22388
- if (Object.prototype.hasOwnProperty.call(object, p)) return true;
22389
- }return false;
22390
- }
22391
-
22392
- function createTransitionManager(history, routes) {
22393
- var state = {};
22394
-
22395
- // Signature should be (location, indexOnly), but needs to support (path,
22396
- // query, indexOnly)
22397
- function isActive(location, indexOnly) {
22398
- location = history.createLocation(location);
22399
-
22400
- return (0, _isActive3.default)(location, indexOnly, state.location, state.routes, state.params);
22401
- }
22402
-
22403
- var partialNextState = void 0;
22404
-
22405
- function match(location, callback) {
22406
- if (partialNextState && partialNextState.location === location) {
22407
- // Continue from where we left off.
22408
- finishMatch(partialNextState, callback);
22409
- } else {
22410
- (0, _matchRoutes2.default)(routes, location, function (error, nextState) {
22411
- if (error) {
22412
- callback(error);
22413
- } else if (nextState) {
22414
- finishMatch(_extends({}, nextState, { location: location }), callback);
22415
- } else {
22416
- callback();
22417
- }
22418
- });
22419
- }
22420
- }
22421
-
22422
- function finishMatch(nextState, callback) {
22423
- var _computeChangedRoutes = (0, _computeChangedRoutes3.default)(state, nextState),
22424
- leaveRoutes = _computeChangedRoutes.leaveRoutes,
22425
- changeRoutes = _computeChangedRoutes.changeRoutes,
22426
- enterRoutes = _computeChangedRoutes.enterRoutes;
22427
-
22428
- (0, _TransitionUtils.runLeaveHooks)(leaveRoutes, state);
22429
-
22430
- // Tear down confirmation hooks for left routes
22431
- leaveRoutes.filter(function (route) {
22432
- return enterRoutes.indexOf(route) === -1;
22433
- }).forEach(removeListenBeforeHooksForRoute);
22434
-
22435
- // change and enter hooks are run in series
22436
- (0, _TransitionUtils.runChangeHooks)(changeRoutes, state, nextState, function (error, redirectInfo) {
22437
- if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);
22438
-
22439
- (0, _TransitionUtils.runEnterHooks)(enterRoutes, nextState, finishEnterHooks);
22440
- });
22441
-
22442
- function finishEnterHooks(error, redirectInfo) {
22443
- if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);
22444
-
22445
- // TODO: Fetch components after state is updated.
22446
- (0, _getComponents2.default)(nextState, function (error, components) {
22447
- if (error) {
22448
- callback(error);
22449
- } else {
22450
- // TODO: Make match a pure function and have some other API
22451
- // for "match and update state".
22452
- callback(null, null, state = _extends({}, nextState, { components: components }));
22453
- }
22454
- });
22455
- }
22456
-
22457
- function handleErrorOrRedirect(error, redirectInfo) {
22458
- if (error) callback(error);else callback(null, redirectInfo);
22459
- }
22460
- }
22461
-
22462
- var RouteGuid = 1;
22463
-
22464
- function getRouteID(route) {
22465
- var create = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
22466
-
22467
- return route.__id__ || create && (route.__id__ = RouteGuid++);
22468
- }
22469
-
22470
- var RouteHooks = Object.create(null);
22471
-
22472
- function getRouteHooksForRoutes(routes) {
22473
- return routes.map(function (route) {
22474
- return RouteHooks[getRouteID(route)];
22475
- }).filter(function (hook) {
22476
- return hook;
22477
- });
22478
- }
22479
-
22480
- function transitionHook(location, callback) {
22481
- (0, _matchRoutes2.default)(routes, location, function (error, nextState) {
22482
- if (nextState == null) {
22483
- // TODO: We didn't actually match anything, but hang
22484
- // onto error/nextState so we don't have to matchRoutes
22485
- // again in the listen callback.
22486
- callback();
22487
- return;
22488
- }
22489
-
22490
- // Cache some state here so we don't have to
22491
- // matchRoutes() again in the listen callback.
22492
- partialNextState = _extends({}, nextState, { location: location });
22493
-
22494
- var hooks = getRouteHooksForRoutes((0, _computeChangedRoutes3.default)(state, partialNextState).leaveRoutes);
22495
-
22496
- var result = void 0;
22497
- for (var i = 0, len = hooks.length; result == null && i < len; ++i) {
22498
- // Passing the location arg here indicates to
22499
- // the user that this is a transition hook.
22500
- result = hooks[i](location);
22501
- }
22502
-
22503
- callback(result);
22504
- });
22505
- }
22506
-
22507
- /* istanbul ignore next: untestable with Karma */
22508
- function beforeUnloadHook() {
22509
- // Synchronously check to see if any route hooks want
22510
- // to prevent the current window/tab from closing.
22511
- if (state.routes) {
22512
- var hooks = getRouteHooksForRoutes(state.routes);
22513
-
22514
- var message = void 0;
22515
- for (var i = 0, len = hooks.length; typeof message !== 'string' && i < len; ++i) {
22516
- // Passing no args indicates to the user that this is a
22517
- // beforeunload hook. We don't know the next location.
22518
- message = hooks[i]();
22519
- }
22520
-
22521
- return message;
22522
- }
22523
- }
22524
-
22525
- var unlistenBefore = void 0,
22526
- unlistenBeforeUnload = void 0;
22527
-
22528
- function removeListenBeforeHooksForRoute(route) {
22529
- var routeID = getRouteID(route);
22530
- if (!routeID) {
22531
- return;
22532
- }
22533
-
22534
- delete RouteHooks[routeID];
22535
-
22536
- if (!hasAnyProperties(RouteHooks)) {
22537
- // teardown transition & beforeunload hooks
22538
- if (unlistenBefore) {
22539
- unlistenBefore();
22540
- unlistenBefore = null;
22541
- }
22542
-
22543
- if (unlistenBeforeUnload) {
22544
- unlistenBeforeUnload();
22545
- unlistenBeforeUnload = null;
22546
- }
22547
- }
22548
- }
22549
-
22550
- /**
22551
- * Registers the given hook function to run before leaving the given route.
22552
- *
22553
- * During a normal transition, the hook function receives the next location
22554
- * as its only argument and can return either a prompt message (string) to show the user,
22555
- * to make sure they want to leave the page; or `false`, to prevent the transition.
22556
- * Any other return value will have no effect.
22557
- *
22558
- * During the beforeunload event (in browsers) the hook receives no arguments.
22559
- * In this case it must return a prompt message to prevent the transition.
22560
- *
22561
- * Returns a function that may be used to unbind the listener.
22562
- */
22563
- function listenBeforeLeavingRoute(route, hook) {
22564
- var thereWereNoRouteHooks = !hasAnyProperties(RouteHooks);
22565
- var routeID = getRouteID(route, true);
22566
-
22567
- RouteHooks[routeID] = hook;
22568
-
22569
- if (thereWereNoRouteHooks) {
22570
- // setup transition & beforeunload hooks
22571
- unlistenBefore = history.listenBefore(transitionHook);
22572
-
22573
- if (history.listenBeforeUnload) unlistenBeforeUnload = history.listenBeforeUnload(beforeUnloadHook);
22574
- }
22575
-
22576
- return function () {
22577
- removeListenBeforeHooksForRoute(route);
22578
- };
22579
- }
22580
-
22581
- /**
22582
- * This is the API for stateful environments. As the location
22583
- * changes, we update state and call the listener. We can also
22584
- * gracefully handle errors and redirects.
22585
- */
22586
- function listen(listener) {
22587
- function historyListener(location) {
22588
- if (state.location === location) {
22589
- listener(null, state);
22590
- } else {
22591
- match(location, function (error, redirectLocation, nextState) {
22592
- if (error) {
22593
- listener(error);
22594
- } else if (redirectLocation) {
22595
- history.replace(redirectLocation);
22596
- } else if (nextState) {
22597
- listener(null, nextState);
22598
- } else {
22599
- process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'Location "%s" did not match any routes', location.pathname + location.search + location.hash) : void 0;
22600
- }
22601
- });
22602
- }
22603
- }
22604
-
22605
- // TODO: Only use a single history listener. Otherwise we'll end up with
22606
- // multiple concurrent calls to match.
22607
-
22608
- // Set up the history listener first in case the initial match redirects.
22609
- var unsubscribe = history.listen(historyListener);
22610
-
22611
- if (state.location) {
22612
- // Picking up on a matchContext.
22613
- listener(null, state);
22614
- } else {
22615
- historyListener(history.getCurrentLocation());
22616
- }
22617
-
22618
- return unsubscribe;
22619
- }
22620
-
22621
- return {
22622
- isActive: isActive,
22623
- match: match,
22624
- listenBeforeLeavingRoute: listenBeforeLeavingRoute,
22625
- listen: listen
22626
- };
22627
- }
22628
- module.exports = exports['default'];
22629
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
22630
-
22631
- /***/ },
22632
- /* 187 */
22633
- /***/ function(module, exports, __webpack_require__) {
22634
-
22635
- 'use strict';
22636
-
22637
- exports.__esModule = true;
22638
- exports.default = routerWarning;
22639
- exports._resetWarned = _resetWarned;
22640
-
22641
- var _warning = __webpack_require__(188);
22642
-
22643
- var _warning2 = _interopRequireDefault(_warning);
22644
-
22645
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22646
-
22647
- var warned = {};
22648
-
22649
- function routerWarning(falseToWarn, message) {
22650
- // Only issue deprecation warnings once.
22651
- if (message.indexOf('deprecated') !== -1) {
22652
- if (warned[message]) {
22653
- return;
22654
- }
22655
-
22656
- warned[message] = true;
22657
- }
22658
-
22659
- message = '[react-router] ' + message;
22660
-
22661
- for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
22662
- args[_key - 2] = arguments[_key];
22663
- }
22664
-
22665
- _warning2.default.apply(undefined, [falseToWarn, message].concat(args));
22666
- }
22667
-
22668
- function _resetWarned() {
22669
- warned = {};
22670
- }
22671
-
22672
- /***/ },
22673
- /* 188 */
22674
- /***/ function(module, exports, __webpack_require__) {
22675
-
22676
- /* WEBPACK VAR INJECTION */(function(process) {/**
22677
- * Copyright 2014-2015, Facebook, Inc.
22678
- * All rights reserved.
22679
- *
22680
- * This source code is licensed under the BSD-style license found in the
22681
- * LICENSE file in the root directory of this source tree. An additional grant
22682
- * of patent rights can be found in the PATENTS file in the same directory.
22683
- */
22684
-
22685
- 'use strict';
22686
-
22687
- /**
22688
- * Similar to invariant but only logs a warning if the condition is not met.
22689
- * This can be used to log issues in development environments in critical
22690
- * paths. Removing the logging code for production environments will keep the
22691
- * same logic and follow the same code paths.
22692
- */
22693
-
22694
- var warning = function() {};
22695
-
22696
- if (process.env.NODE_ENV !== 'production') {
22697
- warning = function(condition, format, args) {
22698
- var len = arguments.length;
22699
- args = new Array(len > 2 ? len - 2 : 0);
22700
- for (var key = 2; key < len; key++) {
22701
- args[key - 2] = arguments[key];
22702
- }
22703
- if (format === undefined) {
22704
- throw new Error(
22705
- '`warning(condition, format, ...args)` requires a warning ' +
22706
- 'message argument'
22707
- );
22708
- }
22709
-
22710
- if (format.length < 10 || (/^[s\W]*$/).test(format)) {
22711
- throw new Error(
22712
- 'The warning format should be able to uniquely identify this ' +
22713
- 'warning. Please, use a more descriptive format than: ' + format
22714
- );
22715
- }
22716
-
22717
- if (!condition) {
22718
- var argIndex = 0;
22719
- var message = 'Warning: ' +
22720
- format.replace(/%s/g, function() {
22721
- return args[argIndex++];
22722
- });
22723
- if (typeof console !== 'undefined') {
22724
- console.error(message);
22725
- }
22726
- try {
22727
- // This error was thrown as a convenience so that you can use this stack
22728
- // to find the callsite that caused this warning to fire.
22729
- throw new Error(message);
22730
- } catch(x) {}
22731
- }
22732
- };
22733
- }
22734
-
22735
- module.exports = warning;
22736
-
22737
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
22738
-
22739
- /***/ },
22740
- /* 189 */
22741
- /***/ function(module, exports, __webpack_require__) {
22742
-
22743
- 'use strict';
22744
-
22745
- exports.__esModule = true;
22746
-
22747
- var _PatternUtils = __webpack_require__(183);
22748
-
22749
- function routeParamsChanged(route, prevState, nextState) {
22750
- if (!route.path) return false;
22751
-
22752
- var paramNames = (0, _PatternUtils.getParamNames)(route.path);
22753
-
22754
- return paramNames.some(function (paramName) {
22755
- return prevState.params[paramName] !== nextState.params[paramName];
22756
- });
22757
- }
22758
-
22759
- /**
22760
- * Returns an object of { leaveRoutes, changeRoutes, enterRoutes } determined by
22761
- * the change from prevState to nextState. We leave routes if either
22762
- * 1) they are not in the next state or 2) they are in the next state
22763
- * but their params have changed (i.e. /users/123 => /users/456).
22764
- *
22765
- * leaveRoutes are ordered starting at the leaf route of the tree
22766
- * we're leaving up to the common parent route. enterRoutes are ordered
22767
- * from the top of the tree we're entering down to the leaf route.
22768
- *
22769
- * changeRoutes are any routes that didn't leave or enter during
22770
- * the transition.
22771
- */
22772
- function computeChangedRoutes(prevState, nextState) {
22773
- var prevRoutes = prevState && prevState.routes;
22774
- var nextRoutes = nextState.routes;
22775
-
22776
- var leaveRoutes = void 0,
22777
- changeRoutes = void 0,
22778
- enterRoutes = void 0;
22779
- if (prevRoutes) {
22780
- (function () {
22781
- var parentIsLeaving = false;
22782
- leaveRoutes = prevRoutes.filter(function (route) {
22783
- if (parentIsLeaving) {
22784
- return true;
22785
- } else {
22786
- var isLeaving = nextRoutes.indexOf(route) === -1 || routeParamsChanged(route, prevState, nextState);
22787
- if (isLeaving) parentIsLeaving = true;
22788
- return isLeaving;
22789
- }
22790
- });
22791
-
22792
- // onLeave hooks start at the leaf route.
22793
- leaveRoutes.reverse();
22794
-
22795
- enterRoutes = [];
22796
- changeRoutes = [];
22797
-
22798
- nextRoutes.forEach(function (route) {
22799
- var isNew = prevRoutes.indexOf(route) === -1;
22800
- var paramsChanged = leaveRoutes.indexOf(route) !== -1;
22801
-
22802
- if (isNew || paramsChanged) enterRoutes.push(route);else changeRoutes.push(route);
22803
- });
22804
- })();
22805
- } else {
22806
- leaveRoutes = [];
22807
- changeRoutes = [];
22808
- enterRoutes = nextRoutes;
22809
- }
22810
-
22811
- return {
22812
- leaveRoutes: leaveRoutes,
22813
- changeRoutes: changeRoutes,
22814
- enterRoutes: enterRoutes
22815
- };
22816
- }
22817
-
22818
- exports.default = computeChangedRoutes;
22819
- module.exports = exports['default'];
22820
-
22821
- /***/ },
22822
- /* 190 */
22823
- /***/ function(module, exports, __webpack_require__) {
22824
-
22825
- 'use strict';
22826
-
22827
- exports.__esModule = true;
22828
- exports.runEnterHooks = runEnterHooks;
22829
- exports.runChangeHooks = runChangeHooks;
22830
- exports.runLeaveHooks = runLeaveHooks;
22831
-
22832
- var _AsyncUtils = __webpack_require__(191);
22833
-
22834
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
22835
-
22836
- var PendingHooks = function PendingHooks() {
22837
- var _this = this;
22838
-
22839
- _classCallCheck(this, PendingHooks);
22840
-
22841
- this.hooks = [];
22842
-
22843
- this.add = function (hook) {
22844
- return _this.hooks.push(hook);
22845
- };
22846
-
22847
- this.remove = function (hook) {
22848
- return _this.hooks = _this.hooks.filter(function (h) {
22849
- return h !== hook;
22850
- });
22851
- };
22852
-
22853
- this.has = function (hook) {
22854
- return _this.hooks.indexOf(hook) !== -1;
22855
- };
22856
-
22857
- this.clear = function () {
22858
- return _this.hooks = [];
22859
- };
22860
- };
22861
-
22862
- var enterHooks = new PendingHooks();
22863
- var changeHooks = new PendingHooks();
22864
-
22865
- function createTransitionHook(hook, route, asyncArity, pendingHooks) {
22866
- var isSync = hook.length < asyncArity;
22867
-
22868
- var transitionHook = function transitionHook() {
22869
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
22870
- args[_key] = arguments[_key];
22871
- }
22872
-
22873
- hook.apply(route, args);
22874
-
22875
- if (isSync) {
22876
- var callback = args[args.length - 1];
22877
- // Assume hook executes synchronously and
22878
- // automatically call the callback.
22879
- callback();
22880
- }
22881
- };
22882
-
22883
- pendingHooks.add(transitionHook);
22884
-
22885
- return transitionHook;
22886
- }
22887
-
22888
- function getEnterHooks(routes) {
22889
- return routes.reduce(function (hooks, route) {
22890
- if (route.onEnter) hooks.push(createTransitionHook(route.onEnter, route, 3, enterHooks));
22891
- return hooks;
22892
- }, []);
22893
- }
22894
-
22895
- function getChangeHooks(routes) {
22896
- return routes.reduce(function (hooks, route) {
22897
- if (route.onChange) hooks.push(createTransitionHook(route.onChange, route, 4, changeHooks));
22898
- return hooks;
22899
- }, []);
22900
- }
22901
-
22902
- function runTransitionHooks(length, iter, callback) {
22903
- if (!length) {
22904
- callback();
22905
- return;
22906
- }
22907
-
22908
- var redirectInfo = void 0;
22909
- function replace(location) {
22910
- redirectInfo = location;
22911
- }
22912
-
22913
- (0, _AsyncUtils.loopAsync)(length, function (index, next, done) {
22914
- iter(index, replace, function (error) {
22915
- if (error || redirectInfo) {
22916
- done(error, redirectInfo); // No need to continue.
22917
- } else {
22918
- next();
22919
- }
22920
- });
22921
- }, callback);
22922
- }
22923
-
22924
- /**
22925
- * Runs all onEnter hooks in the given array of routes in order
22926
- * with onEnter(nextState, replace, callback) and calls
22927
- * callback(error, redirectInfo) when finished. The first hook
22928
- * to use replace short-circuits the loop.
22929
- *
22930
- * If a hook needs to run asynchronously, it may use the callback
22931
- * function. However, doing so will cause the transition to pause,
22932
- * which could lead to a non-responsive UI if the hook is slow.
22933
- */
22934
- function runEnterHooks(routes, nextState, callback) {
22935
- enterHooks.clear();
22936
- var hooks = getEnterHooks(routes);
22937
- return runTransitionHooks(hooks.length, function (index, replace, next) {
22938
- var wrappedNext = function wrappedNext() {
22939
- if (enterHooks.has(hooks[index])) {
22940
- next.apply(undefined, arguments);
22941
- enterHooks.remove(hooks[index]);
22942
- }
22943
- };
22944
- hooks[index](nextState, replace, wrappedNext);
22945
- }, callback);
22946
- }
22947
-
22948
- /**
22949
- * Runs all onChange hooks in the given array of routes in order
22950
- * with onChange(prevState, nextState, replace, callback) and calls
22951
- * callback(error, redirectInfo) when finished. The first hook
22952
- * to use replace short-circuits the loop.
22953
- *
22954
- * If a hook needs to run asynchronously, it may use the callback
22955
- * function. However, doing so will cause the transition to pause,
22956
- * which could lead to a non-responsive UI if the hook is slow.
22957
- */
22958
- function runChangeHooks(routes, state, nextState, callback) {
22959
- changeHooks.clear();
22960
- var hooks = getChangeHooks(routes);
22961
- return runTransitionHooks(hooks.length, function (index, replace, next) {
22962
- var wrappedNext = function wrappedNext() {
22963
- if (changeHooks.has(hooks[index])) {
22964
- next.apply(undefined, arguments);
22965
- changeHooks.remove(hooks[index]);
22966
- }
22967
- };
22968
- hooks[index](state, nextState, replace, wrappedNext);
22969
- }, callback);
22970
- }
22971
-
22972
- /**
22973
- * Runs all onLeave hooks in the given array of routes in order.
22974
- */
22975
- function runLeaveHooks(routes, prevState) {
22976
- for (var i = 0, len = routes.length; i < len; ++i) {
22977
- if (routes[i].onLeave) routes[i].onLeave.call(routes[i], prevState);
22978
- }
22979
- }
22980
-
22981
- /***/ },
22982
- /* 191 */
22983
- /***/ function(module, exports) {
22984
-
22985
- "use strict";
22986
-
22987
- exports.__esModule = true;
22988
- exports.loopAsync = loopAsync;
22989
- exports.mapAsync = mapAsync;
22990
- function loopAsync(turns, work, callback) {
22991
- var currentTurn = 0,
22992
- isDone = false;
22993
- var sync = false,
22994
- hasNext = false,
22995
- doneArgs = void 0;
22996
-
22997
- function done() {
22998
- isDone = true;
22999
- if (sync) {
23000
- // Iterate instead of recursing if possible.
23001
- doneArgs = [].concat(Array.prototype.slice.call(arguments));
23002
- return;
23003
- }
23004
-
23005
- callback.apply(this, arguments);
23006
- }
23007
-
23008
- function next() {
23009
- if (isDone) {
23010
- return;
23011
- }
23012
-
23013
- hasNext = true;
23014
- if (sync) {
23015
- // Iterate instead of recursing if possible.
23016
- return;
23017
- }
23018
-
23019
- sync = true;
23020
-
23021
- while (!isDone && currentTurn < turns && hasNext) {
23022
- hasNext = false;
23023
- work.call(this, currentTurn++, next, done);
23024
- }
23025
-
23026
- sync = false;
23027
-
23028
- if (isDone) {
23029
- // This means the loop finished synchronously.
23030
- callback.apply(this, doneArgs);
23031
- return;
23032
- }
23033
-
23034
- if (currentTurn >= turns && hasNext) {
23035
- isDone = true;
23036
- callback();
23037
- }
23038
- }
23039
-
23040
- next();
23041
- }
23042
-
23043
- function mapAsync(array, work, callback) {
23044
- var length = array.length;
23045
- var values = [];
23046
-
23047
- if (length === 0) return callback(null, values);
23048
-
23049
- var isDone = false,
23050
- doneCount = 0;
23051
-
23052
- function done(index, error, value) {
23053
- if (isDone) return;
23054
-
23055
- if (error) {
23056
- isDone = true;
23057
- callback(error);
23058
- } else {
23059
- values[index] = value;
23060
-
23061
- isDone = ++doneCount === length;
23062
-
23063
- if (isDone) callback(null, values);
23064
- }
23065
- }
23066
-
23067
- array.forEach(function (item, index) {
23068
- work(item, index, function (error, value) {
23069
- done(index, error, value);
23070
- });
23071
- });
23072
- }
23073
-
23074
- /***/ },
23075
- /* 192 */
23076
- /***/ function(module, exports, __webpack_require__) {
23077
-
23078
- 'use strict';
23079
-
23080
- exports.__esModule = true;
23081
-
23082
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
23083
-
23084
- exports.default = isActive;
23085
-
23086
- var _PatternUtils = __webpack_require__(183);
23087
-
23088
- function deepEqual(a, b) {
23089
- if (a == b) return true;
23090
-
23091
- if (a == null || b == null) return false;
23092
-
23093
- if (Array.isArray(a)) {
23094
- return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {
23095
- return deepEqual(item, b[index]);
23096
- });
23097
- }
23098
-
23099
- if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {
23100
- for (var p in a) {
23101
- if (!Object.prototype.hasOwnProperty.call(a, p)) {
23102
- continue;
23103
- }
23104
-
23105
- if (a[p] === undefined) {
23106
- if (b[p] !== undefined) {
23107
- return false;
23108
- }
23109
- } else if (!Object.prototype.hasOwnProperty.call(b, p)) {
23110
- return false;
23111
- } else if (!deepEqual(a[p], b[p])) {
23112
- return false;
23113
- }
23114
- }
23115
-
23116
- return true;
23117
- }
23118
-
23119
- return String(a) === String(b);
23120
- }
23121
-
23122
- /**
23123
- * Returns true if the current pathname matches the supplied one, net of
23124
- * leading and trailing slash normalization. This is sufficient for an
23125
- * indexOnly route match.
23126
- */
23127
- function pathIsActive(pathname, currentPathname) {
23128
- // Normalize leading slash for consistency. Leading slash on pathname has
23129
- // already been normalized in isActive. See caveat there.
23130
- if (currentPathname.charAt(0) !== '/') {
23131
- currentPathname = '/' + currentPathname;
23132
- }
23133
-
23134
- // Normalize the end of both path names too. Maybe `/foo/` shouldn't show
23135
- // `/foo` as active, but in this case, we would already have failed the
23136
- // match.
23137
- if (pathname.charAt(pathname.length - 1) !== '/') {
23138
- pathname += '/';
23139
- }
23140
- if (currentPathname.charAt(currentPathname.length - 1) !== '/') {
23141
- currentPathname += '/';
23142
- }
23143
-
23144
- return currentPathname === pathname;
23145
- }
23146
-
23147
- /**
23148
- * Returns true if the given pathname matches the active routes and params.
23149
- */
23150
- function routeIsActive(pathname, routes, params) {
23151
- var remainingPathname = pathname,
23152
- paramNames = [],
23153
- paramValues = [];
23154
-
23155
- // for...of would work here but it's probably slower post-transpilation.
23156
- for (var i = 0, len = routes.length; i < len; ++i) {
23157
- var route = routes[i];
23158
- var pattern = route.path || '';
23159
-
23160
- if (pattern.charAt(0) === '/') {
23161
- remainingPathname = pathname;
23162
- paramNames = [];
23163
- paramValues = [];
23164
- }
23165
-
23166
- if (remainingPathname !== null && pattern) {
23167
- var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);
23168
- if (matched) {
23169
- remainingPathname = matched.remainingPathname;
23170
- paramNames = [].concat(paramNames, matched.paramNames);
23171
- paramValues = [].concat(paramValues, matched.paramValues);
23172
- } else {
23173
- remainingPathname = null;
23174
- }
23175
-
23176
- if (remainingPathname === '') {
23177
- // We have an exact match on the route. Just check that all the params
23178
- // match.
23179
- // FIXME: This doesn't work on repeated params.
23180
- return paramNames.every(function (paramName, index) {
23181
- return String(paramValues[index]) === String(params[paramName]);
23182
- });
23183
- }
23184
- }
23185
- }
23186
-
23187
- return false;
23188
- }
23189
-
23190
- /**
23191
- * Returns true if all key/value pairs in the given query are
23192
- * currently active.
23193
- */
23194
- function queryIsActive(query, activeQuery) {
23195
- if (activeQuery == null) return query == null;
23196
-
23197
- if (query == null) return true;
23198
-
23199
- return deepEqual(query, activeQuery);
23200
- }
23201
-
23202
- /**
23203
- * Returns true if a <Link> to the given pathname/query combination is
23204
- * currently active.
23205
- */
23206
- function isActive(_ref, indexOnly, currentLocation, routes, params) {
23207
- var pathname = _ref.pathname,
23208
- query = _ref.query;
23209
-
23210
- if (currentLocation == null) return false;
23211
-
23212
- // TODO: This is a bit ugly. It keeps around support for treating pathnames
23213
- // without preceding slashes as absolute paths, but possibly also works
23214
- // around the same quirks with basenames as in matchRoutes.
23215
- if (pathname.charAt(0) !== '/') {
23216
- pathname = '/' + pathname;
23217
- }
23218
-
23219
- if (!pathIsActive(pathname, currentLocation.pathname)) {
23220
- // The path check is necessary and sufficient for indexOnly, but otherwise
23221
- // we still need to check the routes.
23222
- if (indexOnly || !routeIsActive(pathname, routes, params)) {
23223
- return false;
23224
- }
23225
- }
23226
-
23227
- return queryIsActive(query, currentLocation.query);
23228
- }
23229
- module.exports = exports['default'];
23230
-
23231
- /***/ },
23232
- /* 193 */
23233
- /***/ function(module, exports, __webpack_require__) {
23234
-
23235
- 'use strict';
23236
-
23237
- exports.__esModule = true;
23238
-
23239
- var _AsyncUtils = __webpack_require__(191);
23240
-
23241
- var _PromiseUtils = __webpack_require__(194);
23242
-
23243
- function getComponentsForRoute(nextState, route, callback) {
23244
- if (route.component || route.components) {
23245
- callback(null, route.component || route.components);
23246
- return;
23247
- }
23248
-
23249
- var getComponent = route.getComponent || route.getComponents;
23250
- if (getComponent) {
23251
- var componentReturn = getComponent.call(route, nextState, callback);
23252
- if ((0, _PromiseUtils.isPromise)(componentReturn)) componentReturn.then(function (component) {
23253
- return callback(null, component);
23254
- }, callback);
23255
- } else {
23256
- callback();
23257
- }
23258
- }
23259
-
23260
- /**
23261
- * Asynchronously fetches all components needed for the given router
23262
- * state and calls callback(error, components) when finished.
23263
- *
23264
- * Note: This operation may finish synchronously if no routes have an
23265
- * asynchronous getComponents method.
23266
- */
23267
- function getComponents(nextState, callback) {
23268
- (0, _AsyncUtils.mapAsync)(nextState.routes, function (route, index, callback) {
23269
- getComponentsForRoute(nextState, route, callback);
23270
- }, callback);
23271
- }
23272
-
23273
- exports.default = getComponents;
23274
- module.exports = exports['default'];
23275
-
23276
- /***/ },
23277
- /* 194 */
23278
- /***/ function(module, exports) {
23279
-
23280
- 'use strict';
23281
-
23282
- exports.__esModule = true;
23283
- exports.isPromise = isPromise;
23284
- function isPromise(obj) {
23285
- return obj && typeof obj.then === 'function';
23286
- }
23287
-
23288
- /***/ },
23289
- /* 195 */
23290
- /***/ function(module, exports, __webpack_require__) {
23291
-
23292
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
23293
-
23294
- exports.__esModule = true;
23295
-
23296
- 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; };
23297
-
23298
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
23299
-
23300
- exports.default = matchRoutes;
23301
-
23302
- var _AsyncUtils = __webpack_require__(191);
23303
-
23304
- var _PromiseUtils = __webpack_require__(194);
23305
-
23306
- var _PatternUtils = __webpack_require__(183);
23307
-
23308
- var _routerWarning = __webpack_require__(187);
23309
-
23310
- var _routerWarning2 = _interopRequireDefault(_routerWarning);
23311
-
23312
- var _RouteUtils = __webpack_require__(181);
23313
-
23314
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23315
-
23316
- function getChildRoutes(route, location, paramNames, paramValues, callback) {
23317
- if (route.childRoutes) {
23318
- return [null, route.childRoutes];
23319
- }
23320
- if (!route.getChildRoutes) {
23321
- return [];
23322
- }
23323
-
23324
- var sync = true,
23325
- result = void 0;
23326
-
23327
- var partialNextState = {
23328
- location: location,
23329
- params: createParams(paramNames, paramValues)
23330
- };
23331
-
23332
- var childRoutesReturn = route.getChildRoutes(partialNextState, function (error, childRoutes) {
23333
- childRoutes = !error && (0, _RouteUtils.createRoutes)(childRoutes);
23334
- if (sync) {
23335
- result = [error, childRoutes];
23336
- return;
23337
- }
23338
-
23339
- callback(error, childRoutes);
23340
- });
23341
-
23342
- if ((0, _PromiseUtils.isPromise)(childRoutesReturn)) childRoutesReturn.then(function (childRoutes) {
23343
- return callback(null, (0, _RouteUtils.createRoutes)(childRoutes));
23344
- }, callback);
23345
-
23346
- sync = false;
23347
- return result; // Might be undefined.
23348
- }
23349
-
23350
- function getIndexRoute(route, location, paramNames, paramValues, callback) {
23351
- if (route.indexRoute) {
23352
- callback(null, route.indexRoute);
23353
- } else if (route.getIndexRoute) {
23354
- var partialNextState = {
23355
- location: location,
23356
- params: createParams(paramNames, paramValues)
23357
- };
23358
-
23359
- var indexRoutesReturn = route.getIndexRoute(partialNextState, function (error, indexRoute) {
23360
- callback(error, !error && (0, _RouteUtils.createRoutes)(indexRoute)[0]);
23361
- });
23362
-
23363
- if ((0, _PromiseUtils.isPromise)(indexRoutesReturn)) indexRoutesReturn.then(function (indexRoute) {
23364
- return callback(null, (0, _RouteUtils.createRoutes)(indexRoute)[0]);
23365
- }, callback);
23366
- } else if (route.childRoutes || route.getChildRoutes) {
23367
- var onChildRoutes = function onChildRoutes(error, childRoutes) {
23368
- if (error) {
23369
- callback(error);
23370
- return;
23371
- }
23372
-
23373
- var pathless = childRoutes.filter(function (childRoute) {
23374
- return !childRoute.path;
23375
- });
23376
-
23377
- (0, _AsyncUtils.loopAsync)(pathless.length, function (index, next, done) {
23378
- getIndexRoute(pathless[index], location, paramNames, paramValues, function (error, indexRoute) {
23379
- if (error || indexRoute) {
23380
- var routes = [pathless[index]].concat(Array.isArray(indexRoute) ? indexRoute : [indexRoute]);
23381
- done(error, routes);
23382
- } else {
23383
- next();
23384
- }
23385
- });
23386
- }, function (err, routes) {
23387
- callback(null, routes);
23388
- });
23389
- };
23390
-
23391
- var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);
23392
- if (result) {
23393
- onChildRoutes.apply(undefined, result);
23394
- }
23395
- } else {
23396
- callback();
23397
- }
23398
- }
23399
-
23400
- function assignParams(params, paramNames, paramValues) {
23401
- return paramNames.reduce(function (params, paramName, index) {
23402
- var paramValue = paramValues && paramValues[index];
23403
-
23404
- if (Array.isArray(params[paramName])) {
23405
- params[paramName].push(paramValue);
23406
- } else if (paramName in params) {
23407
- params[paramName] = [params[paramName], paramValue];
23408
- } else {
23409
- params[paramName] = paramValue;
23410
- }
23411
-
23412
- return params;
23413
- }, params);
23414
- }
23415
-
23416
- function createParams(paramNames, paramValues) {
23417
- return assignParams({}, paramNames, paramValues);
23418
- }
23419
-
23420
- function matchRouteDeep(route, location, remainingPathname, paramNames, paramValues, callback) {
23421
- var pattern = route.path || '';
23422
-
23423
- if (pattern.charAt(0) === '/') {
23424
- remainingPathname = location.pathname;
23425
- paramNames = [];
23426
- paramValues = [];
23427
- }
23428
-
23429
- // Only try to match the path if the route actually has a pattern, and if
23430
- // we're not just searching for potential nested absolute paths.
23431
- if (remainingPathname !== null && pattern) {
23432
- try {
23433
- var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);
23434
- if (matched) {
23435
- remainingPathname = matched.remainingPathname;
23436
- paramNames = [].concat(paramNames, matched.paramNames);
23437
- paramValues = [].concat(paramValues, matched.paramValues);
23438
- } else {
23439
- remainingPathname = null;
23440
- }
23441
- } catch (error) {
23442
- callback(error);
23443
- }
23444
-
23445
- // By assumption, pattern is non-empty here, which is the prerequisite for
23446
- // actually terminating a match.
23447
- if (remainingPathname === '') {
23448
- var _ret = function () {
23449
- var match = {
23450
- routes: [route],
23451
- params: createParams(paramNames, paramValues)
23452
- };
23453
-
23454
- getIndexRoute(route, location, paramNames, paramValues, function (error, indexRoute) {
23455
- if (error) {
23456
- callback(error);
23457
- } else {
23458
- if (Array.isArray(indexRoute)) {
23459
- var _match$routes;
23460
-
23461
- process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(indexRoute.every(function (route) {
23462
- return !route.path;
23463
- }), 'Index routes should not have paths') : void 0;
23464
- (_match$routes = match.routes).push.apply(_match$routes, indexRoute);
23465
- } else if (indexRoute) {
23466
- process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(!indexRoute.path, 'Index routes should not have paths') : void 0;
23467
- match.routes.push(indexRoute);
23468
- }
23469
-
23470
- callback(null, match);
23471
- }
23472
- });
23473
-
23474
- return {
23475
- v: void 0
23476
- };
23477
- }();
23478
-
23479
- if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
23480
- }
23481
- }
23482
-
23483
- if (remainingPathname != null || route.childRoutes) {
23484
- // Either a) this route matched at least some of the path or b)
23485
- // we don't have to load this route's children asynchronously. In
23486
- // either case continue checking for matches in the subtree.
23487
- var onChildRoutes = function onChildRoutes(error, childRoutes) {
23488
- if (error) {
23489
- callback(error);
23490
- } else if (childRoutes) {
23491
- // Check the child routes to see if any of them match.
23492
- matchRoutes(childRoutes, location, function (error, match) {
23493
- if (error) {
23494
- callback(error);
23495
- } else if (match) {
23496
- // A child route matched! Augment the match and pass it up the stack.
23497
- match.routes.unshift(route);
23498
- callback(null, match);
23499
- } else {
23500
- callback();
23501
- }
23502
- }, remainingPathname, paramNames, paramValues);
23503
- } else {
23504
- callback();
23505
- }
23506
- };
23507
-
23508
- var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);
23509
- if (result) {
23510
- onChildRoutes.apply(undefined, result);
23511
- }
23512
- } else {
23513
- callback();
23514
- }
23515
- }
23516
-
23517
- /**
23518
- * Asynchronously matches the given location to a set of routes and calls
23519
- * callback(error, state) when finished. The state object will have the
23520
- * following properties:
23521
- *
23522
- * - routes An array of routes that matched, in hierarchical order
23523
- * - params An object of URL parameters
23524
- *
23525
- * Note: This operation may finish synchronously if no routes have an
23526
- * asynchronous getChildRoutes method.
23527
- */
23528
- function matchRoutes(routes, location, callback, remainingPathname) {
23529
- var paramNames = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
23530
- var paramValues = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];
23531
-
23532
- if (remainingPathname === undefined) {
23533
- // TODO: This is a little bit ugly, but it works around a quirk in history
23534
- // that strips the leading slash from pathnames when using basenames with
23535
- // trailing slashes.
23536
- if (location.pathname.charAt(0) !== '/') {
23537
- location = _extends({}, location, {
23538
- pathname: '/' + location.pathname
23539
- });
23540
- }
23541
- remainingPathname = location.pathname;
23542
- }
23543
-
23544
- (0, _AsyncUtils.loopAsync)(routes.length, function (index, next, done) {
23545
- matchRouteDeep(routes[index], location, remainingPathname, paramNames, paramValues, function (error, match) {
23546
- if (error || match) {
23547
- done(error, match);
23548
- } else {
23549
- next();
23550
- }
23551
- });
23552
- }, callback);
23553
- }
23554
- module.exports = exports['default'];
23555
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
23556
-
23557
- /***/ },
23558
- /* 196 */
23559
- /***/ function(module, exports, __webpack_require__) {
23560
-
23561
- 'use strict';
23562
-
23563
- exports.__esModule = true;
23564
- exports.routes = exports.route = exports.components = exports.component = exports.history = undefined;
23565
- exports.falsy = falsy;
23566
-
23567
- var _react = __webpack_require__(2);
23568
-
23569
- var func = _react.PropTypes.func,
23570
- object = _react.PropTypes.object,
23571
- arrayOf = _react.PropTypes.arrayOf,
23572
- oneOfType = _react.PropTypes.oneOfType,
23573
- element = _react.PropTypes.element,
23574
- shape = _react.PropTypes.shape,
23575
- string = _react.PropTypes.string;
23576
- function falsy(props, propName, componentName) {
23577
- if (props[propName]) return new Error('<' + componentName + '> should not have a "' + propName + '" prop');
23578
- }
23579
-
23580
- var history = exports.history = shape({
23581
- listen: func.isRequired,
23582
- push: func.isRequired,
23583
- replace: func.isRequired,
23584
- go: func.isRequired,
23585
- goBack: func.isRequired,
23586
- goForward: func.isRequired
23587
- });
23588
-
23589
- var component = exports.component = oneOfType([func, string]);
23590
- var components = exports.components = oneOfType([component, object]);
23591
- var route = exports.route = oneOfType([object, element]);
23592
- var routes = exports.routes = oneOfType([route, arrayOf(route)]);
23593
-
23594
- /***/ },
23595
- /* 197 */
23596
- /***/ function(module, exports, __webpack_require__) {
23597
-
23598
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
23599
-
23600
- exports.__esModule = true;
23601
-
23602
- 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; };
23603
-
23604
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
23605
-
23606
- var _invariant = __webpack_require__(184);
23607
-
23608
- var _invariant2 = _interopRequireDefault(_invariant);
23609
-
23610
- var _react = __webpack_require__(2);
23611
-
23612
- var _react2 = _interopRequireDefault(_react);
23613
-
23614
- var _getRouteParams = __webpack_require__(198);
23615
-
23616
- var _getRouteParams2 = _interopRequireDefault(_getRouteParams);
23617
-
23618
- var _ContextUtils = __webpack_require__(199);
23619
-
23620
- var _RouteUtils = __webpack_require__(181);
23621
-
23622
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23623
-
23624
- var _React$PropTypes = _react2.default.PropTypes,
23625
- array = _React$PropTypes.array,
23626
- func = _React$PropTypes.func,
23627
- object = _React$PropTypes.object;
23628
-
23629
- /**
23630
- * A <RouterContext> renders the component tree for a given router state
23631
- * and sets the history object and the current location in context.
23632
- */
23633
-
23634
- var RouterContext = _react2.default.createClass({
23635
- displayName: 'RouterContext',
23636
-
23637
-
23638
- mixins: [(0, _ContextUtils.ContextProvider)('router')],
23639
-
23640
- propTypes: {
23641
- router: object.isRequired,
23642
- location: object.isRequired,
23643
- routes: array.isRequired,
23644
- params: object.isRequired,
23645
- components: array.isRequired,
23646
- createElement: func.isRequired
23647
- },
23648
-
23649
- getDefaultProps: function getDefaultProps() {
23650
- return {
23651
- createElement: _react2.default.createElement
23652
- };
23653
- },
23654
-
23655
-
23656
- childContextTypes: {
23657
- router: object.isRequired
23658
- },
23659
-
23660
- getChildContext: function getChildContext() {
23661
- return {
23662
- router: this.props.router
23663
- };
23664
- },
23665
- createElement: function createElement(component, props) {
23666
- return component == null ? null : this.props.createElement(component, props);
23667
- },
23668
- render: function render() {
23669
- var _this = this;
23670
-
23671
- var _props = this.props,
23672
- location = _props.location,
23673
- routes = _props.routes,
23674
- params = _props.params,
23675
- components = _props.components,
23676
- router = _props.router;
23677
-
23678
- var element = null;
23679
-
23680
- if (components) {
23681
- element = components.reduceRight(function (element, components, index) {
23682
- if (components == null) return element; // Don't create new children; use the grandchildren.
23683
-
23684
- var route = routes[index];
23685
- var routeParams = (0, _getRouteParams2.default)(route, params);
23686
- var props = {
23687
- location: location,
23688
- params: params,
23689
- route: route,
23690
- router: router,
23691
- routeParams: routeParams,
23692
- routes: routes
23693
- };
23694
-
23695
- if ((0, _RouteUtils.isReactChildren)(element)) {
23696
- props.children = element;
23697
- } else if (element) {
23698
- for (var prop in element) {
23699
- if (Object.prototype.hasOwnProperty.call(element, prop)) props[prop] = element[prop];
23700
- }
23701
- }
23702
-
23703
- if ((typeof components === 'undefined' ? 'undefined' : _typeof(components)) === 'object') {
23704
- var elements = {};
23705
-
23706
- for (var key in components) {
23707
- if (Object.prototype.hasOwnProperty.call(components, key)) {
23708
- // Pass through the key as a prop to createElement to allow
23709
- // custom createElement functions to know which named component
23710
- // they're rendering, for e.g. matching up to fetched data.
23711
- elements[key] = _this.createElement(components[key], _extends({
23712
- key: key }, props));
23713
- }
23714
- }
23715
-
23716
- return elements;
23717
- }
23718
-
23719
- return _this.createElement(components, props);
23720
- }, element);
23721
- }
23722
-
23723
- !(element === null || element === false || _react2.default.isValidElement(element)) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'The root route must render a single element') : (0, _invariant2.default)(false) : void 0;
23724
-
23725
- return element;
23726
- }
23727
- });
23728
-
23729
- exports.default = RouterContext;
23730
- module.exports = exports['default'];
23731
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
23732
-
23733
- /***/ },
23734
- /* 198 */
23735
- /***/ function(module, exports, __webpack_require__) {
23736
-
23737
- 'use strict';
23738
-
23739
- exports.__esModule = true;
23740
-
23741
- var _PatternUtils = __webpack_require__(183);
23742
-
23743
- /**
23744
- * Extracts an object of params the given route cares about from
23745
- * the given params object.
23746
- */
23747
- function getRouteParams(route, params) {
23748
- var routeParams = {};
23749
-
23750
- if (!route.path) return routeParams;
23751
-
23752
- (0, _PatternUtils.getParamNames)(route.path).forEach(function (p) {
23753
- if (Object.prototype.hasOwnProperty.call(params, p)) {
23754
- routeParams[p] = params[p];
23755
- }
23756
- });
23757
-
23758
- return routeParams;
23759
- }
23760
-
23761
- exports.default = getRouteParams;
23762
- module.exports = exports['default'];
23763
-
23764
- /***/ },
23765
- /* 199 */
23766
- /***/ function(module, exports, __webpack_require__) {
23767
-
23768
- 'use strict';
23769
-
23770
- exports.__esModule = true;
23771
- exports.ContextProvider = ContextProvider;
23772
- exports.ContextSubscriber = ContextSubscriber;
23773
-
23774
- var _react = __webpack_require__(2);
23775
-
23776
- // Works around issues with context updates failing to propagate.
23777
- // Caveat: the context value is expected to never change its identity.
23778
- // https://github.com/facebook/react/issues/2517
23779
- // https://github.com/reactjs/react-router/issues/470
23780
-
23781
- var contextProviderShape = _react.PropTypes.shape({
23782
- subscribe: _react.PropTypes.func.isRequired,
23783
- eventIndex: _react.PropTypes.number.isRequired
23784
- });
23785
-
23786
- function makeContextName(name) {
23787
- return '@@contextSubscriber/' + name;
23788
- }
23789
-
23790
- function ContextProvider(name) {
23791
- var _childContextTypes, _ref2;
23792
-
23793
- var contextName = makeContextName(name);
23794
- var listenersKey = contextName + '/listeners';
23795
- var eventIndexKey = contextName + '/eventIndex';
23796
- var subscribeKey = contextName + '/subscribe';
23797
-
23798
- return _ref2 = {
23799
- childContextTypes: (_childContextTypes = {}, _childContextTypes[contextName] = contextProviderShape.isRequired, _childContextTypes),
23800
-
23801
- getChildContext: function getChildContext() {
23802
- var _ref;
23803
-
23804
- return _ref = {}, _ref[contextName] = {
23805
- eventIndex: this[eventIndexKey],
23806
- subscribe: this[subscribeKey]
23807
- }, _ref;
23808
- },
23809
- componentWillMount: function componentWillMount() {
23810
- this[listenersKey] = [];
23811
- this[eventIndexKey] = 0;
23812
- },
23813
- componentWillReceiveProps: function componentWillReceiveProps() {
23814
- this[eventIndexKey]++;
23815
- },
23816
- componentDidUpdate: function componentDidUpdate() {
23817
- var _this = this;
23818
-
23819
- this[listenersKey].forEach(function (listener) {
23820
- return listener(_this[eventIndexKey]);
23821
- });
23822
- }
23823
- }, _ref2[subscribeKey] = function (listener) {
23824
- var _this2 = this;
23825
-
23826
- // No need to immediately call listener here.
23827
- this[listenersKey].push(listener);
23828
-
23829
- return function () {
23830
- _this2[listenersKey] = _this2[listenersKey].filter(function (item) {
23831
- return item !== listener;
23832
- });
23833
- };
23834
- }, _ref2;
23835
- }
23836
-
23837
- function ContextSubscriber(name) {
23838
- var _contextTypes, _ref4;
23839
-
23840
- var contextName = makeContextName(name);
23841
- var lastRenderedEventIndexKey = contextName + '/lastRenderedEventIndex';
23842
- var handleContextUpdateKey = contextName + '/handleContextUpdate';
23843
- var unsubscribeKey = contextName + '/unsubscribe';
23844
-
23845
- return _ref4 = {
23846
- contextTypes: (_contextTypes = {}, _contextTypes[contextName] = contextProviderShape, _contextTypes),
23847
-
23848
- getInitialState: function getInitialState() {
23849
- var _ref3;
23850
-
23851
- if (!this.context[contextName]) {
23852
- return {};
23853
- }
23854
-
23855
- return _ref3 = {}, _ref3[lastRenderedEventIndexKey] = this.context[contextName].eventIndex, _ref3;
23856
- },
23857
- componentDidMount: function componentDidMount() {
23858
- if (!this.context[contextName]) {
23859
- return;
23860
- }
23861
-
23862
- this[unsubscribeKey] = this.context[contextName].subscribe(this[handleContextUpdateKey]);
23863
- },
23864
- componentWillReceiveProps: function componentWillReceiveProps() {
23865
- var _setState;
23866
-
23867
- if (!this.context[contextName]) {
23868
- return;
23869
- }
23870
-
23871
- this.setState((_setState = {}, _setState[lastRenderedEventIndexKey] = this.context[contextName].eventIndex, _setState));
23872
- },
23873
- componentWillUnmount: function componentWillUnmount() {
23874
- if (!this[unsubscribeKey]) {
23875
- return;
23876
- }
23877
-
23878
- this[unsubscribeKey]();
23879
- this[unsubscribeKey] = null;
23880
- }
23881
- }, _ref4[handleContextUpdateKey] = function (eventIndex) {
23882
- if (eventIndex !== this.state[lastRenderedEventIndexKey]) {
23883
- var _setState2;
23884
-
23885
- this.setState((_setState2 = {}, _setState2[lastRenderedEventIndexKey] = eventIndex, _setState2));
23886
- }
23887
- }, _ref4;
23888
- }
23889
-
23890
- /***/ },
23891
- /* 200 */
23892
- /***/ function(module, exports) {
23893
-
23894
- "use strict";
23895
-
23896
- exports.__esModule = true;
23897
-
23898
- 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; };
23899
-
23900
- exports.createRouterObject = createRouterObject;
23901
- exports.assignRouterState = assignRouterState;
23902
- function createRouterObject(history, transitionManager, state) {
23903
- var router = _extends({}, history, {
23904
- setRouteLeaveHook: transitionManager.listenBeforeLeavingRoute,
23905
- isActive: transitionManager.isActive
23906
- });
23907
-
23908
- return assignRouterState(router, state);
23909
- }
23910
-
23911
- function assignRouterState(router, _ref) {
23912
- var location = _ref.location,
23913
- params = _ref.params,
23914
- routes = _ref.routes;
23915
-
23916
- router.location = location;
23917
- router.params = params;
23918
- router.routes = routes;
23919
-
23920
- return router;
23921
- }
23922
-
23923
- /***/ },
23924
- /* 201 */
23925
- /***/ function(module, exports, __webpack_require__) {
23926
-
23927
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
23928
-
23929
- exports.__esModule = true;
23930
-
23931
- 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; };
23932
-
23933
- var _react = __webpack_require__(2);
23934
-
23935
- var _react2 = _interopRequireDefault(_react);
23936
-
23937
- var _invariant = __webpack_require__(184);
23938
-
23939
- var _invariant2 = _interopRequireDefault(_invariant);
23940
-
23941
- var _PropTypes = __webpack_require__(182);
23942
-
23943
- var _ContextUtils = __webpack_require__(199);
23944
-
23945
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23946
-
23947
- 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; }
23948
-
23949
- var _React$PropTypes = _react2.default.PropTypes,
23950
- bool = _React$PropTypes.bool,
23951
- object = _React$PropTypes.object,
23952
- string = _React$PropTypes.string,
23953
- func = _React$PropTypes.func,
23954
- oneOfType = _React$PropTypes.oneOfType;
23955
-
23956
-
23957
- function isLeftClickEvent(event) {
23958
- return event.button === 0;
23959
- }
23960
-
23961
- function isModifiedEvent(event) {
23962
- return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
23963
- }
23964
-
23965
- // TODO: De-duplicate against hasAnyProperties in createTransitionManager.
23966
- function isEmptyObject(object) {
23967
- for (var p in object) {
23968
- if (Object.prototype.hasOwnProperty.call(object, p)) return false;
23969
- }return true;
23970
- }
23971
-
23972
- function resolveToLocation(to, router) {
23973
- return typeof to === 'function' ? to(router.location) : to;
23974
- }
23975
-
23976
- /**
23977
- * A <Link> is used to create an <a> element that links to a route.
23978
- * When that route is active, the link gets the value of its
23979
- * activeClassName prop.
23980
- *
23981
- * For example, assuming you have the following route:
23982
- *
23983
- * <Route path="/posts/:postID" component={Post} />
23984
- *
23985
- * You could use the following component to link to that route:
23986
- *
23987
- * <Link to={`/posts/${post.id}`} />
23988
- *
23989
- * Links may pass along location state and/or query string parameters
23990
- * in the state/query props, respectively.
23991
- *
23992
- * <Link ... query={{ show: true }} state={{ the: 'state' }} />
23993
- */
23994
- var Link = _react2.default.createClass({
23995
- displayName: 'Link',
23996
-
23997
-
23998
- mixins: [(0, _ContextUtils.ContextSubscriber)('router')],
23999
-
24000
- contextTypes: {
24001
- router: _PropTypes.routerShape
24002
- },
24003
-
24004
- propTypes: {
24005
- to: oneOfType([string, object, func]),
24006
- query: object,
24007
- hash: string,
24008
- state: object,
24009
- activeStyle: object,
24010
- activeClassName: string,
24011
- onlyActiveOnIndex: bool.isRequired,
24012
- onClick: func,
24013
- target: string
24014
- },
24015
-
24016
- getDefaultProps: function getDefaultProps() {
24017
- return {
24018
- onlyActiveOnIndex: false,
24019
- style: {}
24020
- };
24021
- },
24022
- handleClick: function handleClick(event) {
24023
- if (this.props.onClick) this.props.onClick(event);
24024
-
24025
- if (event.defaultPrevented) return;
24026
-
24027
- var router = this.context.router;
24028
-
24029
- !router ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<Link>s rendered outside of a router context cannot navigate.') : (0, _invariant2.default)(false) : void 0;
24030
-
24031
- if (isModifiedEvent(event) || !isLeftClickEvent(event)) return;
24032
-
24033
- // If target prop is set (e.g. to "_blank"), let browser handle link.
24034
- /* istanbul ignore if: untestable with Karma */
24035
- if (this.props.target) return;
24036
-
24037
- event.preventDefault();
24038
-
24039
- router.push(resolveToLocation(this.props.to, router));
24040
- },
24041
- render: function render() {
24042
- var _props = this.props,
24043
- to = _props.to,
24044
- activeClassName = _props.activeClassName,
24045
- activeStyle = _props.activeStyle,
24046
- onlyActiveOnIndex = _props.onlyActiveOnIndex,
24047
- props = _objectWithoutProperties(_props, ['to', 'activeClassName', 'activeStyle', 'onlyActiveOnIndex']);
24048
-
24049
- // Ignore if rendered outside the context of router to simplify unit testing.
24050
-
24051
-
24052
- var router = this.context.router;
24053
-
24054
-
24055
- if (router) {
24056
- // If user does not specify a `to` prop, return an empty anchor tag.
24057
- if (!to) {
24058
- return _react2.default.createElement('a', props);
24059
- }
24060
-
24061
- var toLocation = resolveToLocation(to, router);
24062
- props.href = router.createHref(toLocation);
24063
-
24064
- if (activeClassName || activeStyle != null && !isEmptyObject(activeStyle)) {
24065
- if (router.isActive(toLocation, onlyActiveOnIndex)) {
24066
- if (activeClassName) {
24067
- if (props.className) {
24068
- props.className += ' ' + activeClassName;
24069
- } else {
24070
- props.className = activeClassName;
24071
- }
24072
- }
24073
-
24074
- if (activeStyle) props.style = _extends({}, props.style, activeStyle);
24075
- }
24076
- }
24077
- }
24078
-
24079
- return _react2.default.createElement('a', _extends({}, props, { onClick: this.handleClick }));
24080
- }
24081
- });
24082
-
24083
- exports.default = Link;
24084
- module.exports = exports['default'];
24085
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
24086
-
24087
- /***/ },
24088
- /* 202 */
24089
- /***/ function(module, exports, __webpack_require__) {
24090
-
24091
- 'use strict';
24092
-
24093
- exports.__esModule = true;
24094
-
24095
- 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; };
24096
-
24097
- var _react = __webpack_require__(2);
24098
-
24099
- var _react2 = _interopRequireDefault(_react);
24100
-
24101
- var _Link = __webpack_require__(201);
24102
-
24103
- var _Link2 = _interopRequireDefault(_Link);
24104
-
24105
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24106
-
24107
- /**
24108
- * An <IndexLink> is used to link to an <IndexRoute>.
24109
- */
24110
- var IndexLink = _react2.default.createClass({
24111
- displayName: 'IndexLink',
24112
- render: function render() {
24113
- return _react2.default.createElement(_Link2.default, _extends({}, this.props, { onlyActiveOnIndex: true }));
24114
- }
24115
- });
24116
-
24117
- exports.default = IndexLink;
24118
- module.exports = exports['default'];
24119
-
24120
- /***/ },
24121
- /* 203 */
24122
- /***/ function(module, exports, __webpack_require__) {
24123
-
24124
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
24125
-
24126
- exports.__esModule = true;
24127
-
24128
- 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; };
24129
-
24130
- exports.default = withRouter;
24131
-
24132
- var _invariant = __webpack_require__(184);
24133
-
24134
- var _invariant2 = _interopRequireDefault(_invariant);
24135
-
24136
- var _react = __webpack_require__(2);
24137
-
24138
- var _react2 = _interopRequireDefault(_react);
24139
-
24140
- var _hoistNonReactStatics = __webpack_require__(204);
24141
-
24142
- var _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);
24143
-
24144
- var _ContextUtils = __webpack_require__(199);
24145
-
24146
- var _PropTypes = __webpack_require__(182);
24147
-
24148
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24149
-
24150
- function getDisplayName(WrappedComponent) {
24151
- return WrappedComponent.displayName || WrappedComponent.name || 'Component';
24152
- }
24153
-
24154
- function withRouter(WrappedComponent, options) {
24155
- var withRef = options && options.withRef;
24156
-
24157
- var WithRouter = _react2.default.createClass({
24158
- displayName: 'WithRouter',
24159
-
24160
- mixins: [(0, _ContextUtils.ContextSubscriber)('router')],
24161
-
24162
- contextTypes: { router: _PropTypes.routerShape },
24163
- propTypes: { router: _PropTypes.routerShape },
24164
-
24165
- getWrappedInstance: function getWrappedInstance() {
24166
- !withRef ? process.env.NODE_ENV !== '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;
24167
-
24168
- return this.wrappedInstance;
24169
- },
24170
- render: function render() {
24171
- var _this = this;
24172
-
24173
- var router = this.props.router || this.context.router;
24174
- if (!router) {
24175
- return _react2.default.createElement(WrappedComponent, this.props);
24176
- }
24177
-
24178
- var params = router.params,
24179
- location = router.location,
24180
- routes = router.routes;
24181
-
24182
- var props = _extends({}, this.props, { router: router, params: params, location: location, routes: routes });
24183
-
24184
- if (withRef) {
24185
- props.ref = function (c) {
24186
- _this.wrappedInstance = c;
24187
- };
24188
- }
24189
-
24190
- return _react2.default.createElement(WrappedComponent, props);
24191
- }
24192
- });
24193
-
24194
- WithRouter.displayName = 'withRouter(' + getDisplayName(WrappedComponent) + ')';
24195
- WithRouter.WrappedComponent = WrappedComponent;
24196
-
24197
- return (0, _hoistNonReactStatics2.default)(WithRouter, WrappedComponent);
24198
- }
24199
- module.exports = exports['default'];
24200
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
24201
-
24202
- /***/ },
24203
- /* 204 */
24204
- /***/ function(module, exports) {
24205
-
24206
- /**
24207
- * Copyright 2015, Yahoo! Inc.
24208
- * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
24209
- */
24210
- 'use strict';
24211
-
24212
- var REACT_STATICS = {
24213
- childContextTypes: true,
24214
- contextTypes: true,
24215
- defaultProps: true,
24216
- displayName: true,
24217
- getDefaultProps: true,
24218
- mixins: true,
24219
- propTypes: true,
24220
- type: true
24221
- };
24222
-
24223
- var KNOWN_STATICS = {
24224
- name: true,
24225
- length: true,
24226
- prototype: true,
24227
- caller: true,
24228
- arguments: true,
24229
- arity: true
24230
- };
24231
-
24232
- var isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';
24233
-
24234
- module.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {
24235
- if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components
24236
- var keys = Object.getOwnPropertyNames(sourceComponent);
24237
-
24238
- /* istanbul ignore else */
24239
- if (isGetOwnPropertySymbolsAvailable) {
24240
- keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));
24241
- }
24242
-
24243
- for (var i = 0; i < keys.length; ++i) {
24244
- if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {
24245
- try {
24246
- targetComponent[keys[i]] = sourceComponent[keys[i]];
24247
- } catch (error) {
24248
-
24249
- }
24250
- }
24251
- }
24252
- }
24253
-
24254
- return targetComponent;
24255
- };
24256
-
24257
-
24258
- /***/ },
24259
- /* 205 */
24260
- /***/ function(module, exports, __webpack_require__) {
24261
-
24262
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
24263
-
24264
- exports.__esModule = true;
24265
-
24266
- var _react = __webpack_require__(2);
24267
-
24268
- var _react2 = _interopRequireDefault(_react);
24269
-
24270
- var _routerWarning = __webpack_require__(187);
24271
-
24272
- var _routerWarning2 = _interopRequireDefault(_routerWarning);
24273
-
24274
- var _invariant = __webpack_require__(184);
24275
-
24276
- var _invariant2 = _interopRequireDefault(_invariant);
24277
-
24278
- var _Redirect = __webpack_require__(206);
24279
-
24280
- var _Redirect2 = _interopRequireDefault(_Redirect);
24281
-
24282
- var _InternalPropTypes = __webpack_require__(196);
24283
-
24284
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24285
-
24286
- var _React$PropTypes = _react2.default.PropTypes,
24287
- string = _React$PropTypes.string,
24288
- object = _React$PropTypes.object;
24289
-
24290
- /**
24291
- * An <IndexRedirect> is used to redirect from an indexRoute.
24292
- */
24293
- /* eslint-disable react/require-render-return */
24294
-
24295
- var IndexRedirect = _react2.default.createClass({
24296
- displayName: 'IndexRedirect',
24297
-
24298
-
24299
- statics: {
24300
- createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {
24301
- /* istanbul ignore else: sanity check */
24302
- if (parentRoute) {
24303
- parentRoute.indexRoute = _Redirect2.default.createRouteFromReactElement(element);
24304
- } else {
24305
- process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRedirect> does not make sense at the root of your route config') : void 0;
24306
- }
24307
- }
24308
- },
24309
-
24310
- propTypes: {
24311
- to: string.isRequired,
24312
- query: object,
24313
- state: object,
24314
- onEnter: _InternalPropTypes.falsy,
24315
- children: _InternalPropTypes.falsy
24316
- },
24317
-
24318
- /* istanbul ignore next: sanity check */
24319
- render: function render() {
24320
- true ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<IndexRedirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;
24321
- }
24322
- });
24323
-
24324
- exports.default = IndexRedirect;
24325
- module.exports = exports['default'];
24326
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
24327
-
24328
- /***/ },
24329
- /* 206 */
24330
- /***/ function(module, exports, __webpack_require__) {
24331
-
24332
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
24333
-
24334
- exports.__esModule = true;
24335
-
24336
- var _react = __webpack_require__(2);
24337
-
24338
- var _react2 = _interopRequireDefault(_react);
24339
-
24340
- var _invariant = __webpack_require__(184);
24341
-
24342
- var _invariant2 = _interopRequireDefault(_invariant);
24343
-
24344
- var _RouteUtils = __webpack_require__(181);
24345
-
24346
- var _PatternUtils = __webpack_require__(183);
24347
-
24348
- var _InternalPropTypes = __webpack_require__(196);
24349
-
24350
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24351
-
24352
- var _React$PropTypes = _react2.default.PropTypes,
24353
- string = _React$PropTypes.string,
24354
- object = _React$PropTypes.object;
24355
-
24356
- /**
24357
- * A <Redirect> is used to declare another URL path a client should
24358
- * be sent to when they request a given URL.
24359
- *
24360
- * Redirects are placed alongside routes in the route configuration
24361
- * and are traversed in the same manner.
24362
- */
24363
- /* eslint-disable react/require-render-return */
24364
-
24365
- var Redirect = _react2.default.createClass({
24366
- displayName: 'Redirect',
24367
-
24368
-
24369
- statics: {
24370
- createRouteFromReactElement: function createRouteFromReactElement(element) {
24371
- var route = (0, _RouteUtils.createRouteFromReactElement)(element);
24372
-
24373
- if (route.from) route.path = route.from;
24374
-
24375
- route.onEnter = function (nextState, replace) {
24376
- var location = nextState.location,
24377
- params = nextState.params;
24378
-
24379
-
24380
- var pathname = void 0;
24381
- if (route.to.charAt(0) === '/') {
24382
- pathname = (0, _PatternUtils.formatPattern)(route.to, params);
24383
- } else if (!route.to) {
24384
- pathname = location.pathname;
24385
- } else {
24386
- var routeIndex = nextState.routes.indexOf(route);
24387
- var parentPattern = Redirect.getRoutePattern(nextState.routes, routeIndex - 1);
24388
- var pattern = parentPattern.replace(/\/*$/, '/') + route.to;
24389
- pathname = (0, _PatternUtils.formatPattern)(pattern, params);
24390
- }
24391
-
24392
- replace({
24393
- pathname: pathname,
24394
- query: route.query || location.query,
24395
- state: route.state || location.state
24396
- });
24397
- };
24398
-
24399
- return route;
24400
- },
24401
- getRoutePattern: function getRoutePattern(routes, routeIndex) {
24402
- var parentPattern = '';
24403
-
24404
- for (var i = routeIndex; i >= 0; i--) {
24405
- var route = routes[i];
24406
- var pattern = route.path || '';
24407
-
24408
- parentPattern = pattern.replace(/\/*$/, '/') + parentPattern;
24409
-
24410
- if (pattern.indexOf('/') === 0) break;
24411
- }
24412
-
24413
- return '/' + parentPattern;
24414
- }
24415
- },
24416
-
24417
- propTypes: {
24418
- path: string,
24419
- from: string, // Alias for path
24420
- to: string.isRequired,
24421
- query: object,
24422
- state: object,
24423
- onEnter: _InternalPropTypes.falsy,
24424
- children: _InternalPropTypes.falsy
24425
- },
24426
-
24427
- /* istanbul ignore next: sanity check */
24428
- render: function render() {
24429
- true ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<Redirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;
24430
- }
24431
- });
24432
-
24433
- exports.default = Redirect;
24434
- module.exports = exports['default'];
24435
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
24436
-
24437
- /***/ },
24438
- /* 207 */
24439
- /***/ function(module, exports, __webpack_require__) {
24440
-
24441
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
24442
-
24443
- exports.__esModule = true;
24444
-
24445
- var _react = __webpack_require__(2);
24446
-
24447
- var _react2 = _interopRequireDefault(_react);
24448
-
24449
- var _routerWarning = __webpack_require__(187);
24450
-
24451
- var _routerWarning2 = _interopRequireDefault(_routerWarning);
24452
-
24453
- var _invariant = __webpack_require__(184);
24454
-
24455
- var _invariant2 = _interopRequireDefault(_invariant);
24456
-
24457
- var _RouteUtils = __webpack_require__(181);
24458
-
24459
- var _InternalPropTypes = __webpack_require__(196);
24460
-
24461
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24462
-
24463
- var func = _react2.default.PropTypes.func;
24464
-
24465
- /**
24466
- * An <IndexRoute> is used to specify its parent's <Route indexRoute> in
24467
- * a JSX route config.
24468
- */
24469
- /* eslint-disable react/require-render-return */
24470
-
24471
- var IndexRoute = _react2.default.createClass({
24472
- displayName: 'IndexRoute',
24473
-
24474
-
24475
- statics: {
24476
- createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {
24477
- /* istanbul ignore else: sanity check */
24478
- if (parentRoute) {
24479
- parentRoute.indexRoute = (0, _RouteUtils.createRouteFromReactElement)(element);
24480
- } else {
24481
- process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRoute> does not make sense at the root of your route config') : void 0;
24482
- }
24483
- }
24484
- },
24485
-
24486
- propTypes: {
24487
- path: _InternalPropTypes.falsy,
24488
- component: _InternalPropTypes.component,
24489
- components: _InternalPropTypes.components,
24490
- getComponent: func,
24491
- getComponents: func
24492
- },
24493
-
24494
- /* istanbul ignore next: sanity check */
24495
- render: function render() {
24496
- true ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<IndexRoute> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;
24497
- }
24498
- });
24499
-
24500
- exports.default = IndexRoute;
24501
- module.exports = exports['default'];
24502
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
24503
-
24504
- /***/ },
24505
- /* 208 */
24506
- /***/ function(module, exports, __webpack_require__) {
24507
-
24508
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
24509
-
24510
- exports.__esModule = true;
24511
-
24512
- var _react = __webpack_require__(2);
24513
-
24514
- var _react2 = _interopRequireDefault(_react);
24515
-
24516
- var _invariant = __webpack_require__(184);
24517
-
24518
- var _invariant2 = _interopRequireDefault(_invariant);
24519
-
24520
- var _RouteUtils = __webpack_require__(181);
24521
-
24522
- var _InternalPropTypes = __webpack_require__(196);
24523
-
24524
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24525
-
24526
- var _React$PropTypes = _react2.default.PropTypes,
24527
- string = _React$PropTypes.string,
24528
- func = _React$PropTypes.func;
24529
-
24530
- /**
24531
- * A <Route> is used to declare which components are rendered to the
24532
- * page when the URL matches a given pattern.
24533
- *
24534
- * Routes are arranged in a nested tree structure. When a new URL is
24535
- * requested, the tree is searched depth-first to find a route whose
24536
- * path matches the URL. When one is found, all routes in the tree
24537
- * that lead to it are considered "active" and their components are
24538
- * rendered into the DOM, nested in the same order as in the tree.
24539
- */
24540
- /* eslint-disable react/require-render-return */
24541
-
24542
- var Route = _react2.default.createClass({
24543
- displayName: 'Route',
24544
-
24545
-
24546
- statics: {
24547
- createRouteFromReactElement: _RouteUtils.createRouteFromReactElement
24548
- },
24549
-
24550
- propTypes: {
24551
- path: string,
24552
- component: _InternalPropTypes.component,
24553
- components: _InternalPropTypes.components,
24554
- getComponent: func,
24555
- getComponents: func
24556
- },
24557
-
24558
- /* istanbul ignore next: sanity check */
24559
- render: function render() {
24560
- true ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<Route> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;
24561
- }
24562
- });
24563
-
24564
- exports.default = Route;
24565
- module.exports = exports['default'];
24566
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
24567
-
24568
- /***/ },
24569
- /* 209 */
24570
- /***/ function(module, exports, __webpack_require__) {
24571
-
24572
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
24573
-
24574
- exports.__esModule = true;
24575
-
24576
- 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; };
24577
-
24578
- var _Actions = __webpack_require__(210);
24579
-
24580
- var _invariant = __webpack_require__(184);
24581
-
24582
- var _invariant2 = _interopRequireDefault(_invariant);
24583
-
24584
- var _createMemoryHistory = __webpack_require__(211);
24585
-
24586
- var _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);
24587
-
24588
- var _createTransitionManager = __webpack_require__(186);
24589
-
24590
- var _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);
24591
-
24592
- var _RouteUtils = __webpack_require__(181);
24593
-
24594
- var _RouterUtils = __webpack_require__(200);
24595
-
24596
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24597
-
24598
- 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; }
24599
-
24600
- /**
24601
- * A high-level API to be used for server-side rendering.
24602
- *
24603
- * This function matches a location to a set of routes and calls
24604
- * callback(error, redirectLocation, renderProps) when finished.
24605
- *
24606
- * Note: You probably don't want to use this in a browser unless you're using
24607
- * server-side rendering with async routes.
24608
- */
24609
- function match(_ref, callback) {
24610
- var history = _ref.history,
24611
- routes = _ref.routes,
24612
- location = _ref.location,
24613
- options = _objectWithoutProperties(_ref, ['history', 'routes', 'location']);
24614
-
24615
- !(history || location) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'match needs a history or a location') : (0, _invariant2.default)(false) : void 0;
24616
-
24617
- history = history ? history : (0, _createMemoryHistory2.default)(options);
24618
- var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes));
24619
-
24620
- if (location) {
24621
- // Allow match({ location: '/the/path', ... })
24622
- location = history.createLocation(location);
24623
- } else {
24624
- location = history.getCurrentLocation();
24625
- }
24626
-
24627
- transitionManager.match(location, function (error, redirectLocation, nextState) {
24628
- var renderProps = void 0;
24629
-
24630
- if (nextState) {
24631
- var router = (0, _RouterUtils.createRouterObject)(history, transitionManager, nextState);
24632
- renderProps = _extends({}, nextState, {
24633
- router: router,
24634
- matchContext: { transitionManager: transitionManager, router: router }
24635
- });
24636
- }
24637
-
24638
- callback(error, redirectLocation && history.createLocation(redirectLocation, _Actions.REPLACE), renderProps);
24639
- });
24640
- }
24641
-
24642
- exports.default = match;
24643
- module.exports = exports['default'];
24644
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
24645
-
24646
- /***/ },
24647
- /* 210 */
24648
- /***/ function(module, exports) {
24649
-
24650
- 'use strict';
24651
-
24652
- exports.__esModule = true;
24653
- /**
24654
- * Indicates that navigation was caused by a call to history.push.
24655
- */
24656
- var PUSH = exports.PUSH = 'PUSH';
24657
-
24658
- /**
24659
- * Indicates that navigation was caused by a call to history.replace.
24660
- */
24661
- var REPLACE = exports.REPLACE = 'REPLACE';
24662
-
24663
- /**
24664
- * Indicates that navigation was caused by some other action such
24665
- * as using a browser's back/forward buttons and/or manually manipulating
24666
- * the URL in a browser's location bar. This is the default.
24667
- *
24668
- * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate
24669
- * for more information.
24670
- */
24671
- var POP = exports.POP = 'POP';
24672
-
24673
- /***/ },
24674
- /* 211 */
24675
- /***/ function(module, exports, __webpack_require__) {
24676
-
24677
- 'use strict';
24678
-
24679
- exports.__esModule = true;
24680
- exports.default = createMemoryHistory;
24681
-
24682
- var _useQueries = __webpack_require__(212);
24683
-
24684
- var _useQueries2 = _interopRequireDefault(_useQueries);
24685
-
24686
- var _useBasename = __webpack_require__(219);
24687
-
24688
- var _useBasename2 = _interopRequireDefault(_useBasename);
24689
-
24690
- var _createMemoryHistory = __webpack_require__(220);
24691
-
24692
- var _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);
24693
-
24694
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24695
-
24696
- function createMemoryHistory(options) {
24697
- // signatures and type checking differ between `useQueries` and
24698
- // `createMemoryHistory`, have to create `memoryHistory` first because
24699
- // `useQueries` doesn't understand the signature
24700
- var memoryHistory = (0, _createMemoryHistory2.default)(options);
24701
- var createHistory = function createHistory() {
24702
- return memoryHistory;
24703
- };
24704
- var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);
24705
- return history;
24706
- }
24707
- module.exports = exports['default'];
24708
-
24709
- /***/ },
24710
- /* 212 */
24711
- /***/ function(module, exports, __webpack_require__) {
24712
-
24713
- 'use strict';
24714
-
24715
- exports.__esModule = true;
24716
-
24717
- 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; };
24718
-
24719
- var _queryString = __webpack_require__(213);
24720
-
24721
- var _runTransitionHook = __webpack_require__(216);
24722
-
24723
- var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
24724
-
24725
- var _LocationUtils = __webpack_require__(217);
24726
-
24727
- var _PathUtils = __webpack_require__(218);
24728
-
24729
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24730
-
24731
- var defaultStringifyQuery = function defaultStringifyQuery(query) {
24732
- return (0, _queryString.stringify)(query).replace(/%20/g, '+');
24733
- };
24734
-
24735
- var defaultParseQueryString = _queryString.parse;
24736
-
24737
- /**
24738
- * Returns a new createHistory function that may be used to create
24739
- * history objects that know how to handle URL queries.
24740
- */
24741
- var useQueries = function useQueries(createHistory) {
24742
- return function () {
24743
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
24744
-
24745
- var history = createHistory(options);
24746
- var stringifyQuery = options.stringifyQuery,
24747
- parseQueryString = options.parseQueryString;
24748
-
24749
-
24750
- if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;
24751
-
24752
- if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;
24753
-
24754
- var decodeQuery = function decodeQuery(location) {
24755
- if (!location) return location;
24756
-
24757
- if (location.query == null) location.query = parseQueryString(location.search.substring(1));
24758
-
24759
- return location;
24760
- };
24761
-
24762
- var encodeQuery = function encodeQuery(location, query) {
24763
- if (query == null) return location;
24764
-
24765
- var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;
24766
- var queryString = stringifyQuery(query);
24767
- var search = queryString ? '?' + queryString : '';
24768
-
24769
- return _extends({}, object, {
24770
- search: search
24771
- });
24772
- };
24773
-
24774
- // Override all read methods with query-aware versions.
24775
- var getCurrentLocation = function getCurrentLocation() {
24776
- return decodeQuery(history.getCurrentLocation());
24777
- };
24778
-
24779
- var listenBefore = function listenBefore(hook) {
24780
- return history.listenBefore(function (location, callback) {
24781
- return (0, _runTransitionHook2.default)(hook, decodeQuery(location), callback);
24782
- });
24783
- };
24784
-
24785
- var listen = function listen(listener) {
24786
- return history.listen(function (location) {
24787
- return listener(decodeQuery(location));
24788
- });
24789
- };
24790
-
24791
- // Override all write methods with query-aware versions.
24792
- var push = function push(location) {
24793
- return history.push(encodeQuery(location, location.query));
24794
- };
24795
-
24796
- var replace = function replace(location) {
24797
- return history.replace(encodeQuery(location, location.query));
24798
- };
24799
-
24800
- var createPath = function createPath(location) {
24801
- return history.createPath(encodeQuery(location, location.query));
24802
- };
24803
-
24804
- var createHref = function createHref(location) {
24805
- return history.createHref(encodeQuery(location, location.query));
24806
- };
24807
-
24808
- var createLocation = function createLocation(location) {
24809
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
24810
- args[_key - 1] = arguments[_key];
24811
- }
24812
-
24813
- var newLocation = history.createLocation.apply(history, [encodeQuery(location, location.query)].concat(args));
24814
-
24815
- if (location.query) newLocation.query = (0, _LocationUtils.createQuery)(location.query);
24816
-
24817
- return decodeQuery(newLocation);
24818
- };
24819
-
24820
- return _extends({}, history, {
24821
- getCurrentLocation: getCurrentLocation,
24822
- listenBefore: listenBefore,
24823
- listen: listen,
24824
- push: push,
24825
- replace: replace,
24826
- createPath: createPath,
24827
- createHref: createHref,
24828
- createLocation: createLocation
24829
- });
24830
- };
24831
- };
24832
-
24833
- exports.default = useQueries;
24834
-
24835
- /***/ },
24836
- /* 213 */
24837
- /***/ function(module, exports, __webpack_require__) {
24838
-
24839
- 'use strict';
24840
- var strictUriEncode = __webpack_require__(214);
24841
- var objectAssign = __webpack_require__(215);
24842
-
24843
- function encoderForArrayFormat(opts) {
24844
- switch (opts.arrayFormat) {
24845
- case 'index':
24846
- return function (key, value, index) {
24847
- return value === null ? [
24848
- encode(key, opts),
24849
- '[',
24850
- index,
24851
- ']'
24852
- ].join('') : [
24853
- encode(key, opts),
24854
- '[',
24855
- encode(index, opts),
24856
- ']=',
24857
- encode(value, opts)
24858
- ].join('');
24859
- };
24860
-
24861
- case 'bracket':
24862
- return function (key, value) {
24863
- return value === null ? encode(key, opts) : [
24864
- encode(key, opts),
24865
- '[]=',
24866
- encode(value, opts)
24867
- ].join('');
24868
- };
24869
-
24870
- default:
24871
- return function (key, value) {
24872
- return value === null ? encode(key, opts) : [
24873
- encode(key, opts),
24874
- '=',
24875
- encode(value, opts)
24876
- ].join('');
24877
- };
24878
- }
24879
- }
24880
-
24881
- function parserForArrayFormat(opts) {
24882
- var result;
24883
-
24884
- switch (opts.arrayFormat) {
24885
- case 'index':
24886
- return function (key, value, accumulator) {
24887
- result = /\[(\d*)\]$/.exec(key);
24888
-
24889
- key = key.replace(/\[\d*\]$/, '');
24890
-
24891
- if (!result) {
24892
- accumulator[key] = value;
24893
- return;
24894
- }
24895
-
24896
- if (accumulator[key] === undefined) {
24897
- accumulator[key] = {};
24898
- }
24899
-
24900
- accumulator[key][result[1]] = value;
24901
- };
24902
-
24903
- case 'bracket':
24904
- return function (key, value, accumulator) {
24905
- result = /(\[\])$/.exec(key);
24906
-
24907
- key = key.replace(/\[\]$/, '');
24908
-
24909
- if (!result || accumulator[key] === undefined) {
24910
- accumulator[key] = value;
24911
- return;
24912
- }
24913
-
24914
- accumulator[key] = [].concat(accumulator[key], value);
24915
- };
24916
-
24917
- default:
24918
- return function (key, value, accumulator) {
24919
- if (accumulator[key] === undefined) {
24920
- accumulator[key] = value;
24921
- return;
24922
- }
24923
-
24924
- accumulator[key] = [].concat(accumulator[key], value);
24925
- };
24926
- }
24927
- }
24928
-
24929
- function encode(value, opts) {
24930
- if (opts.encode) {
24931
- return opts.strict ? strictUriEncode(value) : encodeURIComponent(value);
24932
- }
24933
-
24934
- return value;
24935
- }
24936
-
24937
- function keysSorter(input) {
24938
- if (Array.isArray(input)) {
24939
- return input.sort();
24940
- } else if (typeof input === 'object') {
24941
- return keysSorter(Object.keys(input)).sort(function (a, b) {
24942
- return Number(a) - Number(b);
24943
- }).map(function (key) {
24944
- return input[key];
24945
- });
24946
- }
24947
-
24948
- return input;
24949
- }
24950
-
24951
- exports.extract = function (str) {
24952
- return str.split('?')[1] || '';
24953
- };
24954
-
24955
- exports.parse = function (str, opts) {
24956
- opts = objectAssign({arrayFormat: 'none'}, opts);
24957
-
24958
- var formatter = parserForArrayFormat(opts);
24959
-
24960
- // Create an object with no prototype
24961
- // https://github.com/sindresorhus/query-string/issues/47
24962
- var ret = Object.create(null);
24963
-
24964
- if (typeof str !== 'string') {
24965
- return ret;
24966
- }
24967
-
24968
- str = str.trim().replace(/^(\?|#|&)/, '');
24969
-
24970
- if (!str) {
24971
- return ret;
24972
- }
24973
-
24974
- str.split('&').forEach(function (param) {
24975
- var parts = param.replace(/\+/g, ' ').split('=');
24976
- // Firefox (pre 40) decodes `%3D` to `=`
24977
- // https://github.com/sindresorhus/query-string/pull/37
24978
- var key = parts.shift();
24979
- var val = parts.length > 0 ? parts.join('=') : undefined;
24980
-
24981
- // missing `=` should be `null`:
24982
- // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
24983
- val = val === undefined ? null : decodeURIComponent(val);
24984
-
24985
- formatter(decodeURIComponent(key), val, ret);
24986
- });
24987
-
24988
- return Object.keys(ret).sort().reduce(function (result, key) {
24989
- var val = ret[key];
24990
- if (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {
24991
- // Sort object keys, not values
24992
- result[key] = keysSorter(val);
24993
- } else {
24994
- result[key] = val;
24995
- }
24996
-
24997
- return result;
24998
- }, Object.create(null));
24999
- };
25000
-
25001
- exports.stringify = function (obj, opts) {
25002
- var defaults = {
25003
- encode: true,
25004
- strict: true,
25005
- arrayFormat: 'none'
25006
- };
25007
-
25008
- opts = objectAssign(defaults, opts);
25009
-
25010
- var formatter = encoderForArrayFormat(opts);
25011
-
25012
- return obj ? Object.keys(obj).sort().map(function (key) {
25013
- var val = obj[key];
25014
-
25015
- if (val === undefined) {
25016
- return '';
25017
- }
25018
-
25019
- if (val === null) {
25020
- return encode(key, opts);
25021
- }
25022
-
25023
- if (Array.isArray(val)) {
25024
- var result = [];
25025
-
25026
- val.slice().forEach(function (val2) {
25027
- if (val2 === undefined) {
25028
- return;
25029
- }
25030
-
25031
- result.push(formatter(key, val2, result.length));
25032
- });
25033
-
25034
- return result.join('&');
25035
- }
25036
-
25037
- return encode(key, opts) + '=' + encode(val, opts);
25038
- }).filter(function (x) {
25039
- return x.length > 0;
25040
- }).join('&') : '';
25041
- };
25042
-
25043
-
25044
- /***/ },
25045
- /* 214 */
25046
- /***/ function(module, exports) {
25047
-
25048
- 'use strict';
25049
- module.exports = function (str) {
25050
- return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
25051
- return '%' + c.charCodeAt(0).toString(16).toUpperCase();
25052
- });
25053
- };
25054
-
25055
-
25056
- /***/ },
25057
- /* 215 */
25058
- /***/ function(module, exports) {
25059
-
25060
- /*
25061
- object-assign
25062
- (c) Sindre Sorhus
25063
- @license MIT
25064
- */
25065
-
25066
- 'use strict';
25067
- /* eslint-disable no-unused-vars */
25068
- var getOwnPropertySymbols = Object.getOwnPropertySymbols;
25069
- var hasOwnProperty = Object.prototype.hasOwnProperty;
25070
- var propIsEnumerable = Object.prototype.propertyIsEnumerable;
25071
-
25072
- function toObject(val) {
25073
- if (val === null || val === undefined) {
25074
- throw new TypeError('Object.assign cannot be called with null or undefined');
25075
- }
25076
-
25077
- return Object(val);
25078
- }
25079
-
25080
- function shouldUseNative() {
25081
- try {
25082
- if (!Object.assign) {
25083
- return false;
25084
- }
25085
-
25086
- // Detect buggy property enumeration order in older V8 versions.
25087
-
25088
- // https://bugs.chromium.org/p/v8/issues/detail?id=4118
25089
- var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
25090
- test1[5] = 'de';
25091
- if (Object.getOwnPropertyNames(test1)[0] === '5') {
25092
- return false;
25093
- }
25094
-
25095
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
25096
- var test2 = {};
25097
- for (var i = 0; i < 10; i++) {
25098
- test2['_' + String.fromCharCode(i)] = i;
25099
- }
25100
- var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
25101
- return test2[n];
25102
- });
25103
- if (order2.join('') !== '0123456789') {
25104
- return false;
25105
- }
25106
-
25107
- // https://bugs.chromium.org/p/v8/issues/detail?id=3056
25108
- var test3 = {};
25109
- 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
25110
- test3[letter] = letter;
25111
- });
25112
- if (Object.keys(Object.assign({}, test3)).join('') !==
25113
- 'abcdefghijklmnopqrst') {
25114
- return false;
25115
- }
25116
-
25117
- return true;
25118
- } catch (err) {
25119
- // We don't expect any of the above to throw, but better to be safe.
25120
- return false;
25121
- }
25122
- }
25123
-
25124
- module.exports = shouldUseNative() ? Object.assign : function (target, source) {
25125
- var from;
25126
- var to = toObject(target);
25127
- var symbols;
25128
-
25129
- for (var s = 1; s < arguments.length; s++) {
25130
- from = Object(arguments[s]);
25131
-
25132
- for (var key in from) {
25133
- if (hasOwnProperty.call(from, key)) {
25134
- to[key] = from[key];
25135
- }
25136
- }
25137
-
25138
- if (getOwnPropertySymbols) {
25139
- symbols = getOwnPropertySymbols(from);
25140
- for (var i = 0; i < symbols.length; i++) {
25141
- if (propIsEnumerable.call(from, symbols[i])) {
25142
- to[symbols[i]] = from[symbols[i]];
25143
- }
25144
- }
25145
- }
25146
- }
25147
-
25148
- return to;
25149
- };
25150
-
25151
-
25152
- /***/ },
25153
- /* 216 */
25154
- /***/ function(module, exports, __webpack_require__) {
25155
-
25156
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
25157
-
25158
- exports.__esModule = true;
25159
-
25160
- var _warning = __webpack_require__(188);
25161
-
25162
- var _warning2 = _interopRequireDefault(_warning);
25163
-
25164
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25165
-
25166
- var runTransitionHook = function runTransitionHook(hook, location, callback) {
25167
- var result = hook(location, callback);
25168
-
25169
- if (hook.length < 2) {
25170
- // Assume the hook runs synchronously and automatically
25171
- // call the callback with the return value.
25172
- callback(result);
25173
- } else {
25174
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(result === undefined, 'You should not "return" in a transition hook with a callback argument; ' + 'call the callback instead') : void 0;
25175
- }
25176
- };
25177
-
25178
- exports.default = runTransitionHook;
25179
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
25180
-
25181
- /***/ },
25182
- /* 217 */
25183
- /***/ function(module, exports, __webpack_require__) {
25184
-
25185
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
25186
-
25187
- exports.__esModule = true;
25188
- exports.locationsAreEqual = exports.statesAreEqual = exports.createLocation = exports.createQuery = undefined;
25189
-
25190
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
25191
-
25192
- 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; };
25193
-
25194
- var _invariant = __webpack_require__(184);
25195
-
25196
- var _invariant2 = _interopRequireDefault(_invariant);
25197
-
25198
- var _warning = __webpack_require__(188);
25199
-
25200
- var _warning2 = _interopRequireDefault(_warning);
25201
-
25202
- var _PathUtils = __webpack_require__(218);
25203
-
25204
- var _Actions = __webpack_require__(210);
25205
-
25206
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25207
-
25208
- var createQuery = exports.createQuery = function createQuery(props) {
25209
- return _extends(Object.create(null), props);
25210
- };
25211
-
25212
- var createLocation = exports.createLocation = function createLocation() {
25213
- var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '/';
25214
- var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Actions.POP;
25215
- var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
25216
-
25217
- var object = typeof input === 'string' ? (0, _PathUtils.parsePath)(input) : input;
25218
-
25219
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(!object.path, 'Location descriptor objects should have a `pathname`, not a `path`.') : void 0;
25220
-
25221
- var pathname = object.pathname || '/';
25222
- var search = object.search || '';
25223
- var hash = object.hash || '';
25224
- var state = object.state;
25225
-
25226
- return {
25227
- pathname: pathname,
25228
- search: search,
25229
- hash: hash,
25230
- state: state,
25231
- action: action,
25232
- key: key
25233
- };
25234
- };
25235
-
25236
- var isDate = function isDate(object) {
25237
- return Object.prototype.toString.call(object) === '[object Date]';
25238
- };
25239
-
25240
- var statesAreEqual = exports.statesAreEqual = function statesAreEqual(a, b) {
25241
- if (a === b) return true;
25242
-
25243
- var typeofA = typeof a === 'undefined' ? 'undefined' : _typeof(a);
25244
- var typeofB = typeof b === 'undefined' ? 'undefined' : _typeof(b);
25245
-
25246
- if (typeofA !== typeofB) return false;
25247
-
25248
- !(typeofA !== 'function') ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store functions in location state') : (0, _invariant2.default)(false) : void 0;
25249
-
25250
- // Not the same object, but same type.
25251
- if (typeofA === 'object') {
25252
- !!(isDate(a) && isDate(b)) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store Date objects in location state') : (0, _invariant2.default)(false) : void 0;
25253
-
25254
- if (!Array.isArray(a)) {
25255
- var keysofA = Object.keys(a);
25256
- var keysofB = Object.keys(b);
25257
- return keysofA.length === keysofB.length && keysofA.every(function (key) {
25258
- return statesAreEqual(a[key], b[key]);
25259
- });
25260
- }
25261
-
25262
- return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {
25263
- return statesAreEqual(item, b[index]);
25264
- });
25265
- }
25266
-
25267
- // All other serializable types (string, number, boolean)
25268
- // should be strict equal.
25269
- return false;
25270
- };
25271
-
25272
- var locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {
25273
- return a.key === b.key &&
25274
- // a.action === b.action && // Different action !== location change.
25275
- a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && statesAreEqual(a.state, b.state);
25276
- };
25277
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
25278
-
25279
- /***/ },
25280
- /* 218 */
25281
- /***/ function(module, exports, __webpack_require__) {
25282
-
25283
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
25284
-
25285
- exports.__esModule = true;
25286
- exports.createPath = exports.parsePath = exports.getQueryStringValueFromPath = exports.stripQueryStringValueFromPath = exports.addQueryStringValueToPath = undefined;
25287
-
25288
- var _warning = __webpack_require__(188);
25289
-
25290
- var _warning2 = _interopRequireDefault(_warning);
25291
-
25292
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25293
-
25294
- var addQueryStringValueToPath = exports.addQueryStringValueToPath = function addQueryStringValueToPath(path, key, value) {
25295
- var _parsePath = parsePath(path),
25296
- pathname = _parsePath.pathname,
25297
- search = _parsePath.search,
25298
- hash = _parsePath.hash;
25299
-
25300
- return createPath({
25301
- pathname: pathname,
25302
- search: search + (search.indexOf('?') === -1 ? '?' : '&') + key + '=' + value,
25303
- hash: hash
25304
- });
25305
- };
25306
-
25307
- var stripQueryStringValueFromPath = exports.stripQueryStringValueFromPath = function stripQueryStringValueFromPath(path, key) {
25308
- var _parsePath2 = parsePath(path),
25309
- pathname = _parsePath2.pathname,
25310
- search = _parsePath2.search,
25311
- hash = _parsePath2.hash;
25312
-
25313
- return createPath({
25314
- pathname: pathname,
25315
- search: search.replace(new RegExp('([?&])' + key + '=[a-zA-Z0-9]+(&?)'), function (match, prefix, suffix) {
25316
- return prefix === '?' ? prefix : suffix;
25317
- }),
25318
- hash: hash
25319
- });
25320
- };
25321
-
25322
- var getQueryStringValueFromPath = exports.getQueryStringValueFromPath = function getQueryStringValueFromPath(path, key) {
25323
- var _parsePath3 = parsePath(path),
25324
- search = _parsePath3.search;
25325
-
25326
- var match = search.match(new RegExp('[?&]' + key + '=([a-zA-Z0-9]+)'));
25327
- return match && match[1];
25328
- };
25329
-
25330
- var extractPath = function extractPath(string) {
25331
- var match = string.match(/^(https?:)?\/\/[^\/]*/);
25332
- return match == null ? string : string.substring(match[0].length);
25333
- };
25334
-
25335
- var parsePath = exports.parsePath = function parsePath(path) {
25336
- var pathname = extractPath(path);
25337
- var search = '';
25338
- var hash = '';
25339
-
25340
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(path === pathname, 'A path must be pathname + search + hash only, not a full URL like "%s"', path) : void 0;
25341
-
25342
- var hashIndex = pathname.indexOf('#');
25343
- if (hashIndex !== -1) {
25344
- hash = pathname.substring(hashIndex);
25345
- pathname = pathname.substring(0, hashIndex);
25346
- }
25347
-
25348
- var searchIndex = pathname.indexOf('?');
25349
- if (searchIndex !== -1) {
25350
- search = pathname.substring(searchIndex);
25351
- pathname = pathname.substring(0, searchIndex);
25352
- }
25353
-
25354
- if (pathname === '') pathname = '/';
25355
-
25356
- return {
25357
- pathname: pathname,
25358
- search: search,
25359
- hash: hash
25360
- };
25361
- };
25362
-
25363
- var createPath = exports.createPath = function createPath(location) {
25364
- if (location == null || typeof location === 'string') return location;
25365
-
25366
- var basename = location.basename,
25367
- pathname = location.pathname,
25368
- search = location.search,
25369
- hash = location.hash;
25370
-
25371
- var path = (basename || '') + pathname;
25372
-
25373
- if (search && search !== '?') path += search;
25374
-
25375
- if (hash) path += hash;
25376
-
25377
- return path;
25378
- };
25379
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
25380
-
25381
- /***/ },
25382
- /* 219 */
25383
- /***/ function(module, exports, __webpack_require__) {
25384
-
25385
- 'use strict';
25386
-
25387
- exports.__esModule = true;
25388
-
25389
- 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; };
25390
-
25391
- var _runTransitionHook = __webpack_require__(216);
25392
-
25393
- var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
25394
-
25395
- var _PathUtils = __webpack_require__(218);
25396
-
25397
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25398
-
25399
- var useBasename = function useBasename(createHistory) {
25400
- return function () {
25401
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25402
-
25403
- var history = createHistory(options);
25404
- var basename = options.basename;
25405
-
25406
-
25407
- var addBasename = function addBasename(location) {
25408
- if (!location) return location;
25409
-
25410
- if (basename && location.basename == null) {
25411
- if (location.pathname.toLowerCase().indexOf(basename.toLowerCase()) === 0) {
25412
- location.pathname = location.pathname.substring(basename.length);
25413
- location.basename = basename;
25414
-
25415
- if (location.pathname === '') location.pathname = '/';
25416
- } else {
25417
- location.basename = '';
25418
- }
25419
- }
25420
-
25421
- return location;
25422
- };
25423
-
25424
- var prependBasename = function prependBasename(location) {
25425
- if (!basename) return location;
25426
-
25427
- var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;
25428
- var pname = object.pathname;
25429
- var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';
25430
- var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;
25431
- var pathname = normalizedBasename + normalizedPathname;
25432
-
25433
- return _extends({}, object, {
25434
- pathname: pathname
25435
- });
25436
- };
25437
-
25438
- // Override all read methods with basename-aware versions.
25439
- var getCurrentLocation = function getCurrentLocation() {
25440
- return addBasename(history.getCurrentLocation());
25441
- };
25442
-
25443
- var listenBefore = function listenBefore(hook) {
25444
- return history.listenBefore(function (location, callback) {
25445
- return (0, _runTransitionHook2.default)(hook, addBasename(location), callback);
25446
- });
25447
- };
25448
-
25449
- var listen = function listen(listener) {
25450
- return history.listen(function (location) {
25451
- return listener(addBasename(location));
25452
- });
25453
- };
25454
-
25455
- // Override all write methods with basename-aware versions.
25456
- var push = function push(location) {
25457
- return history.push(prependBasename(location));
25458
- };
25459
-
25460
- var replace = function replace(location) {
25461
- return history.replace(prependBasename(location));
25462
- };
25463
-
25464
- var createPath = function createPath(location) {
25465
- return history.createPath(prependBasename(location));
25466
- };
25467
-
25468
- var createHref = function createHref(location) {
25469
- return history.createHref(prependBasename(location));
25470
- };
25471
-
25472
- var createLocation = function createLocation(location) {
25473
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
25474
- args[_key - 1] = arguments[_key];
25475
- }
25476
-
25477
- return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));
25478
- };
25479
-
25480
- return _extends({}, history, {
25481
- getCurrentLocation: getCurrentLocation,
25482
- listenBefore: listenBefore,
25483
- listen: listen,
25484
- push: push,
25485
- replace: replace,
25486
- createPath: createPath,
25487
- createHref: createHref,
25488
- createLocation: createLocation
25489
- });
25490
- };
25491
- };
25492
-
25493
- exports.default = useBasename;
25494
-
25495
- /***/ },
25496
- /* 220 */
25497
- /***/ function(module, exports, __webpack_require__) {
25498
-
25499
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
25500
-
25501
- exports.__esModule = true;
25502
-
25503
- 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; };
25504
-
25505
- var _warning = __webpack_require__(188);
25506
-
25507
- var _warning2 = _interopRequireDefault(_warning);
25508
-
25509
- var _invariant = __webpack_require__(184);
25510
-
25511
- var _invariant2 = _interopRequireDefault(_invariant);
25512
-
25513
- var _LocationUtils = __webpack_require__(217);
25514
-
25515
- var _PathUtils = __webpack_require__(218);
25516
-
25517
- var _createHistory = __webpack_require__(221);
25518
-
25519
- var _createHistory2 = _interopRequireDefault(_createHistory);
25520
-
25521
- var _Actions = __webpack_require__(210);
25522
-
25523
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25524
-
25525
- var createStateStorage = function createStateStorage(entries) {
25526
- return entries.filter(function (entry) {
25527
- return entry.state;
25528
- }).reduce(function (memo, entry) {
25529
- memo[entry.key] = entry.state;
25530
- return memo;
25531
- }, {});
25532
- };
25533
-
25534
- var createMemoryHistory = function createMemoryHistory() {
25535
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25536
-
25537
- if (Array.isArray(options)) {
25538
- options = { entries: options };
25539
- } else if (typeof options === 'string') {
25540
- options = { entries: [options] };
25541
- }
25542
-
25543
- var getCurrentLocation = function getCurrentLocation() {
25544
- var entry = entries[current];
25545
- var path = (0, _PathUtils.createPath)(entry);
25546
-
25547
- var key = void 0,
25548
- state = void 0;
25549
- if (entry.key) {
25550
- key = entry.key;
25551
- state = readState(key);
25552
- }
25553
-
25554
- var init = (0, _PathUtils.parsePath)(path);
25555
-
25556
- return (0, _LocationUtils.createLocation)(_extends({}, init, { state: state }), undefined, key);
25557
- };
25558
-
25559
- var canGo = function canGo(n) {
25560
- var index = current + n;
25561
- return index >= 0 && index < entries.length;
25562
- };
25563
-
25564
- var go = function go(n) {
25565
- if (!n) return;
25566
-
25567
- if (!canGo(n)) {
25568
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Cannot go(%s) there is not enough history', n) : void 0;
25569
-
25570
- return;
25571
- }
25572
-
25573
- current += n;
25574
- var currentLocation = getCurrentLocation();
25575
-
25576
- // Change action to POP
25577
- history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));
25578
- };
25579
-
25580
- var pushLocation = function pushLocation(location) {
25581
- current += 1;
25582
-
25583
- if (current < entries.length) entries.splice(current);
25584
-
25585
- entries.push(location);
25586
-
25587
- saveState(location.key, location.state);
25588
- };
25589
-
25590
- var replaceLocation = function replaceLocation(location) {
25591
- entries[current] = location;
25592
- saveState(location.key, location.state);
25593
- };
25594
-
25595
- var history = (0, _createHistory2.default)(_extends({}, options, {
25596
- getCurrentLocation: getCurrentLocation,
25597
- pushLocation: pushLocation,
25598
- replaceLocation: replaceLocation,
25599
- go: go
25600
- }));
25601
-
25602
- var _options = options,
25603
- entries = _options.entries,
25604
- current = _options.current;
25605
-
25606
-
25607
- if (typeof entries === 'string') {
25608
- entries = [entries];
25609
- } else if (!Array.isArray(entries)) {
25610
- entries = ['/'];
25611
- }
25612
-
25613
- entries = entries.map(function (entry) {
25614
- return (0, _LocationUtils.createLocation)(entry);
25615
- });
25616
-
25617
- if (current == null) {
25618
- current = entries.length - 1;
25619
- } else {
25620
- !(current >= 0 && current < entries.length) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : (0, _invariant2.default)(false) : void 0;
25621
- }
25622
-
25623
- var storage = createStateStorage(entries);
25624
-
25625
- var saveState = function saveState(key, state) {
25626
- return storage[key] = state;
25627
- };
25628
-
25629
- var readState = function readState(key) {
25630
- return storage[key];
25631
- };
25632
-
25633
- return _extends({}, history, {
25634
- canGo: canGo
25635
- });
25636
- };
25637
-
25638
- exports.default = createMemoryHistory;
25639
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
25640
-
25641
- /***/ },
25642
- /* 221 */
25643
- /***/ function(module, exports, __webpack_require__) {
25644
-
25645
- 'use strict';
25646
-
25647
- exports.__esModule = true;
25648
-
25649
- var _AsyncUtils = __webpack_require__(222);
25650
-
25651
- var _PathUtils = __webpack_require__(218);
25652
-
25653
- var _runTransitionHook = __webpack_require__(216);
25654
-
25655
- var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
25656
-
25657
- var _Actions = __webpack_require__(210);
25658
-
25659
- var _LocationUtils = __webpack_require__(217);
25660
-
25661
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25662
-
25663
- var createHistory = function createHistory() {
25664
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25665
- var getCurrentLocation = options.getCurrentLocation,
25666
- getUserConfirmation = options.getUserConfirmation,
25667
- pushLocation = options.pushLocation,
25668
- replaceLocation = options.replaceLocation,
25669
- go = options.go,
25670
- keyLength = options.keyLength;
25671
-
25672
-
25673
- var currentLocation = void 0;
25674
- var pendingLocation = void 0;
25675
- var beforeListeners = [];
25676
- var listeners = [];
25677
- var allKeys = [];
25678
-
25679
- var getCurrentIndex = function getCurrentIndex() {
25680
- if (pendingLocation && pendingLocation.action === _Actions.POP) return allKeys.indexOf(pendingLocation.key);
25681
-
25682
- if (currentLocation) return allKeys.indexOf(currentLocation.key);
25683
-
25684
- return -1;
25685
- };
25686
-
25687
- var updateLocation = function updateLocation(nextLocation) {
25688
- var currentIndex = getCurrentIndex();
25689
-
25690
- currentLocation = nextLocation;
25691
-
25692
- if (currentLocation.action === _Actions.PUSH) {
25693
- allKeys = [].concat(allKeys.slice(0, currentIndex + 1), [currentLocation.key]);
25694
- } else if (currentLocation.action === _Actions.REPLACE) {
25695
- allKeys[currentIndex] = currentLocation.key;
25696
- }
25697
-
25698
- listeners.forEach(function (listener) {
25699
- return listener(currentLocation);
25700
- });
25701
- };
25702
-
25703
- var listenBefore = function listenBefore(listener) {
25704
- beforeListeners.push(listener);
25705
-
25706
- return function () {
25707
- return beforeListeners = beforeListeners.filter(function (item) {
25708
- return item !== listener;
25709
- });
25710
- };
25711
- };
25712
-
25713
- var listen = function listen(listener) {
25714
- listeners.push(listener);
25715
-
25716
- return function () {
25717
- return listeners = listeners.filter(function (item) {
25718
- return item !== listener;
25719
- });
25720
- };
25721
- };
25722
-
25723
- var confirmTransitionTo = function confirmTransitionTo(location, callback) {
25724
- (0, _AsyncUtils.loopAsync)(beforeListeners.length, function (index, next, done) {
25725
- (0, _runTransitionHook2.default)(beforeListeners[index], location, function (result) {
25726
- return result != null ? done(result) : next();
25727
- });
25728
- }, function (message) {
25729
- if (getUserConfirmation && typeof message === 'string') {
25730
- getUserConfirmation(message, function (ok) {
25731
- return callback(ok !== false);
25732
- });
25733
- } else {
25734
- callback(message !== false);
25735
- }
25736
- });
25737
- };
25738
-
25739
- var transitionTo = function transitionTo(nextLocation) {
25740
- if (currentLocation && (0, _LocationUtils.locationsAreEqual)(currentLocation, nextLocation) || pendingLocation && (0, _LocationUtils.locationsAreEqual)(pendingLocation, nextLocation)) return; // Nothing to do
25741
-
25742
- pendingLocation = nextLocation;
25743
-
25744
- confirmTransitionTo(nextLocation, function (ok) {
25745
- if (pendingLocation !== nextLocation) return; // Transition was interrupted during confirmation
25746
-
25747
- pendingLocation = null;
25748
-
25749
- if (ok) {
25750
- // Treat PUSH to same path like REPLACE to be consistent with browsers
25751
- if (nextLocation.action === _Actions.PUSH) {
25752
- var prevPath = (0, _PathUtils.createPath)(currentLocation);
25753
- var nextPath = (0, _PathUtils.createPath)(nextLocation);
25754
-
25755
- if (nextPath === prevPath && (0, _LocationUtils.statesAreEqual)(currentLocation.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;
25756
- }
25757
-
25758
- if (nextLocation.action === _Actions.POP) {
25759
- updateLocation(nextLocation);
25760
- } else if (nextLocation.action === _Actions.PUSH) {
25761
- if (pushLocation(nextLocation) !== false) updateLocation(nextLocation);
25762
- } else if (nextLocation.action === _Actions.REPLACE) {
25763
- if (replaceLocation(nextLocation) !== false) updateLocation(nextLocation);
25764
- }
25765
- } else if (currentLocation && nextLocation.action === _Actions.POP) {
25766
- var prevIndex = allKeys.indexOf(currentLocation.key);
25767
- var nextIndex = allKeys.indexOf(nextLocation.key);
25768
-
25769
- if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL
25770
- }
25771
- });
25772
- };
25773
-
25774
- var push = function push(input) {
25775
- return transitionTo(createLocation(input, _Actions.PUSH));
25776
- };
25777
-
25778
- var replace = function replace(input) {
25779
- return transitionTo(createLocation(input, _Actions.REPLACE));
25780
- };
25781
-
25782
- var goBack = function goBack() {
25783
- return go(-1);
25784
- };
25785
-
25786
- var goForward = function goForward() {
25787
- return go(1);
25788
- };
25789
-
25790
- var createKey = function createKey() {
25791
- return Math.random().toString(36).substr(2, keyLength || 6);
25792
- };
25793
-
25794
- var createHref = function createHref(location) {
25795
- return (0, _PathUtils.createPath)(location);
25796
- };
25797
-
25798
- var createLocation = function createLocation(location, action) {
25799
- var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : createKey();
25800
- return (0, _LocationUtils.createLocation)(location, action, key);
25801
- };
25802
-
25803
- return {
25804
- getCurrentLocation: getCurrentLocation,
25805
- listenBefore: listenBefore,
25806
- listen: listen,
25807
- transitionTo: transitionTo,
25808
- push: push,
25809
- replace: replace,
25810
- go: go,
25811
- goBack: goBack,
25812
- goForward: goForward,
25813
- createKey: createKey,
25814
- createPath: _PathUtils.createPath,
25815
- createHref: createHref,
25816
- createLocation: createLocation
25817
- };
25818
- };
25819
-
25820
- exports.default = createHistory;
25821
-
25822
- /***/ },
25823
- /* 222 */
25824
- /***/ function(module, exports) {
25825
-
25826
- "use strict";
25827
-
25828
- exports.__esModule = true;
25829
- var loopAsync = exports.loopAsync = function loopAsync(turns, work, callback) {
25830
- var currentTurn = 0,
25831
- isDone = false;
25832
- var isSync = false,
25833
- hasNext = false,
25834
- doneArgs = void 0;
25835
-
25836
- var done = function done() {
25837
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
25838
- args[_key] = arguments[_key];
25839
- }
25840
-
25841
- isDone = true;
25842
-
25843
- if (isSync) {
25844
- // Iterate instead of recursing if possible.
25845
- doneArgs = args;
25846
- return;
25847
- }
25848
-
25849
- callback.apply(undefined, args);
25850
- };
25851
-
25852
- var next = function next() {
25853
- if (isDone) return;
25854
-
25855
- hasNext = true;
25856
-
25857
- if (isSync) return; // Iterate instead of recursing if possible.
25858
-
25859
- isSync = true;
25860
-
25861
- while (!isDone && currentTurn < turns && hasNext) {
25862
- hasNext = false;
25863
- work(currentTurn++, next, done);
25864
- }
25865
-
25866
- isSync = false;
25867
-
25868
- if (isDone) {
25869
- // This means the loop finished synchronously.
25870
- callback.apply(undefined, doneArgs);
25871
- return;
25872
- }
25873
-
25874
- if (currentTurn >= turns && hasNext) {
25875
- isDone = true;
25876
- callback();
25877
- }
25878
- };
25879
-
25880
- next();
25881
- };
25882
-
25883
- /***/ },
25884
- /* 223 */
25885
- /***/ function(module, exports, __webpack_require__) {
25886
-
25887
- 'use strict';
25888
-
25889
- exports.__esModule = true;
25890
- exports.default = useRouterHistory;
25891
-
25892
- var _useQueries = __webpack_require__(212);
25893
-
25894
- var _useQueries2 = _interopRequireDefault(_useQueries);
25895
-
25896
- var _useBasename = __webpack_require__(219);
25897
-
25898
- var _useBasename2 = _interopRequireDefault(_useBasename);
25899
-
25900
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25901
-
25902
- function useRouterHistory(createHistory) {
25903
- return function (options) {
25904
- var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);
25905
- return history;
25906
- };
25907
- }
25908
- module.exports = exports['default'];
25909
-
25910
- /***/ },
25911
- /* 224 */
25912
- /***/ function(module, exports, __webpack_require__) {
25913
-
25914
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
25915
-
25916
- exports.__esModule = true;
25917
-
25918
- 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; };
25919
-
25920
- var _react = __webpack_require__(2);
25921
-
25922
- var _react2 = _interopRequireDefault(_react);
25923
-
25924
- var _RouterContext = __webpack_require__(197);
25925
-
25926
- var _RouterContext2 = _interopRequireDefault(_RouterContext);
25927
-
25928
- var _routerWarning = __webpack_require__(187);
25929
-
25930
- var _routerWarning2 = _interopRequireDefault(_routerWarning);
25931
-
25932
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25933
-
25934
- exports.default = function () {
25935
- for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
25936
- middlewares[_key] = arguments[_key];
25937
- }
25938
-
25939
- if (process.env.NODE_ENV !== 'production') {
25940
- middlewares.forEach(function (middleware, index) {
25941
- process.env.NODE_ENV !== '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;
25942
- });
25943
- }
25944
-
25945
- var withContext = middlewares.map(function (middleware) {
25946
- return middleware.renderRouterContext;
25947
- }).filter(Boolean);
25948
- var withComponent = middlewares.map(function (middleware) {
25949
- return middleware.renderRouteComponent;
25950
- }).filter(Boolean);
25951
-
25952
- var makeCreateElement = function makeCreateElement() {
25953
- var baseCreateElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _react.createElement;
25954
- return function (Component, props) {
25955
- return withComponent.reduceRight(function (previous, renderRouteComponent) {
25956
- return renderRouteComponent(previous, props);
25957
- }, baseCreateElement(Component, props));
25958
- };
25959
- };
25960
-
25961
- return function (renderProps) {
25962
- return withContext.reduceRight(function (previous, renderRouterContext) {
25963
- return renderRouterContext(previous, renderProps);
25964
- }, _react2.default.createElement(_RouterContext2.default, _extends({}, renderProps, {
25965
- createElement: makeCreateElement(renderProps.createElement)
25966
- })));
25967
- };
25968
- };
25969
-
25970
- module.exports = exports['default'];
25971
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
25972
-
25973
- /***/ },
25974
- /* 225 */
25975
- /***/ function(module, exports, __webpack_require__) {
25976
-
25977
- 'use strict';
25978
-
25979
- exports.__esModule = true;
25980
-
25981
- var _createBrowserHistory = __webpack_require__(226);
25982
-
25983
- var _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);
25984
-
25985
- var _createRouterHistory = __webpack_require__(232);
25986
-
25987
- var _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);
25988
-
25989
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25990
-
25991
- exports.default = (0, _createRouterHistory2.default)(_createBrowserHistory2.default);
25992
- module.exports = exports['default'];
25993
-
25994
- /***/ },
25995
- /* 226 */
25996
- /***/ function(module, exports, __webpack_require__) {
25997
-
25998
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
25999
-
26000
- exports.__esModule = true;
26001
-
26002
- 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; };
26003
-
26004
- var _invariant = __webpack_require__(184);
26005
-
26006
- var _invariant2 = _interopRequireDefault(_invariant);
26007
-
26008
- var _ExecutionEnvironment = __webpack_require__(227);
26009
-
26010
- var _BrowserProtocol = __webpack_require__(228);
26011
-
26012
- var BrowserProtocol = _interopRequireWildcard(_BrowserProtocol);
26013
-
26014
- var _RefreshProtocol = __webpack_require__(231);
26015
-
26016
- var RefreshProtocol = _interopRequireWildcard(_RefreshProtocol);
26017
-
26018
- var _DOMUtils = __webpack_require__(229);
26019
-
26020
- var _createHistory = __webpack_require__(221);
26021
-
26022
- var _createHistory2 = _interopRequireDefault(_createHistory);
26023
-
26024
- 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; } }
26025
-
26026
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26027
-
26028
- /**
26029
- * Creates and returns a history object that uses HTML5's history API
26030
- * (pushState, replaceState, and the popstate event) to manage history.
26031
- * This is the recommended method of managing history in browsers because
26032
- * it provides the cleanest URLs.
26033
- *
26034
- * Note: In browsers that do not support the HTML5 history API full
26035
- * page reloads will be used to preserve clean URLs. You can force this
26036
- * behavior using { forceRefresh: true } in options.
26037
- */
26038
- var createBrowserHistory = function createBrowserHistory() {
26039
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
26040
-
26041
- !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Browser history needs a DOM') : (0, _invariant2.default)(false) : void 0;
26042
-
26043
- var useRefresh = options.forceRefresh || !(0, _DOMUtils.supportsHistory)();
26044
- var Protocol = useRefresh ? RefreshProtocol : BrowserProtocol;
26045
-
26046
- var getUserConfirmation = Protocol.getUserConfirmation,
26047
- getCurrentLocation = Protocol.getCurrentLocation,
26048
- pushLocation = Protocol.pushLocation,
26049
- replaceLocation = Protocol.replaceLocation,
26050
- go = Protocol.go;
26051
-
26052
-
26053
- var history = (0, _createHistory2.default)(_extends({
26054
- getUserConfirmation: getUserConfirmation }, options, {
26055
- getCurrentLocation: getCurrentLocation,
26056
- pushLocation: pushLocation,
26057
- replaceLocation: replaceLocation,
26058
- go: go
26059
- }));
26060
-
26061
- var listenerCount = 0,
26062
- stopListener = void 0;
26063
-
26064
- var startListener = function startListener(listener, before) {
26065
- if (++listenerCount === 1) stopListener = BrowserProtocol.startListener(history.transitionTo);
26066
-
26067
- var unlisten = before ? history.listenBefore(listener) : history.listen(listener);
26068
-
26069
- return function () {
26070
- unlisten();
26071
-
26072
- if (--listenerCount === 0) stopListener();
26073
- };
26074
- };
26075
-
26076
- var listenBefore = function listenBefore(listener) {
26077
- return startListener(listener, true);
26078
- };
26079
-
26080
- var listen = function listen(listener) {
26081
- return startListener(listener, false);
26082
- };
26083
-
26084
- return _extends({}, history, {
26085
- listenBefore: listenBefore,
26086
- listen: listen
26087
- });
26088
- };
26089
-
26090
- exports.default = createBrowserHistory;
26091
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
26092
-
26093
- /***/ },
26094
- /* 227 */
26095
- /***/ function(module, exports) {
26096
-
26097
- 'use strict';
26098
-
26099
- exports.__esModule = true;
26100
- var canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
26101
-
26102
- /***/ },
26103
- /* 228 */
26104
- /***/ function(module, exports, __webpack_require__) {
26105
-
26106
- 'use strict';
26107
-
26108
- exports.__esModule = true;
26109
- exports.go = exports.replaceLocation = exports.pushLocation = exports.startListener = exports.getUserConfirmation = exports.getCurrentLocation = undefined;
26110
-
26111
- var _LocationUtils = __webpack_require__(217);
26112
-
26113
- var _DOMUtils = __webpack_require__(229);
26114
-
26115
- var _DOMStateStorage = __webpack_require__(230);
26116
-
26117
- var _PathUtils = __webpack_require__(218);
26118
-
26119
- var _ExecutionEnvironment = __webpack_require__(227);
26120
-
26121
- var PopStateEvent = 'popstate';
26122
- var HashChangeEvent = 'hashchange';
26123
-
26124
- var needsHashchangeListener = _ExecutionEnvironment.canUseDOM && !(0, _DOMUtils.supportsPopstateOnHashchange)();
26125
-
26126
- var _createLocation = function _createLocation(historyState) {
26127
- var key = historyState && historyState.key;
26128
-
26129
- return (0, _LocationUtils.createLocation)({
26130
- pathname: window.location.pathname,
26131
- search: window.location.search,
26132
- hash: window.location.hash,
26133
- state: key ? (0, _DOMStateStorage.readState)(key) : undefined
26134
- }, undefined, key);
26135
- };
26136
-
26137
- var getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {
26138
- var historyState = void 0;
26139
- try {
26140
- historyState = window.history.state || {};
26141
- } catch (error) {
26142
- // IE 11 sometimes throws when accessing window.history.state
26143
- // See https://github.com/ReactTraining/history/pull/289
26144
- historyState = {};
26145
- }
26146
-
26147
- return _createLocation(historyState);
26148
- };
26149
-
26150
- var getUserConfirmation = exports.getUserConfirmation = function getUserConfirmation(message, callback) {
26151
- return callback(window.confirm(message));
26152
- }; // eslint-disable-line no-alert
26153
-
26154
- var startListener = exports.startListener = function startListener(listener) {
26155
- var handlePopState = function handlePopState(event) {
26156
- if ((0, _DOMUtils.isExtraneousPopstateEvent)(event)) // Ignore extraneous popstate events in WebKit
26157
- return;
26158
- listener(_createLocation(event.state));
26159
- };
26160
-
26161
- (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState);
26162
-
26163
- var handleUnpoppedHashChange = function handleUnpoppedHashChange() {
26164
- return listener(getCurrentLocation());
26165
- };
26166
-
26167
- if (needsHashchangeListener) {
26168
- (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);
26169
- }
26170
-
26171
- return function () {
26172
- (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState);
26173
-
26174
- if (needsHashchangeListener) {
26175
- (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);
26176
- }
26177
- };
26178
- };
26179
-
26180
- var updateLocation = function updateLocation(location, updateState) {
26181
- var state = location.state,
26182
- key = location.key;
26183
-
26184
-
26185
- if (state !== undefined) (0, _DOMStateStorage.saveState)(key, state);
26186
-
26187
- updateState({ key: key }, (0, _PathUtils.createPath)(location));
26188
- };
26189
-
26190
- var pushLocation = exports.pushLocation = function pushLocation(location) {
26191
- return updateLocation(location, function (state, path) {
26192
- return window.history.pushState(state, null, path);
26193
- });
26194
- };
26195
-
26196
- var replaceLocation = exports.replaceLocation = function replaceLocation(location) {
26197
- return updateLocation(location, function (state, path) {
26198
- return window.history.replaceState(state, null, path);
26199
- });
26200
- };
26201
-
26202
- var go = exports.go = function go(n) {
26203
- if (n) window.history.go(n);
26204
- };
26205
-
26206
- /***/ },
26207
- /* 229 */
26208
- /***/ function(module, exports) {
26209
-
26210
- 'use strict';
26211
-
26212
- exports.__esModule = true;
26213
- var addEventListener = exports.addEventListener = function addEventListener(node, event, listener) {
26214
- return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);
26215
- };
26216
-
26217
- var removeEventListener = exports.removeEventListener = function removeEventListener(node, event, listener) {
26218
- return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);
26219
- };
26220
-
26221
- /**
26222
- * Returns true if the HTML5 history API is supported. Taken from Modernizr.
26223
- *
26224
- * https://github.com/Modernizr/Modernizr/blob/master/LICENSE
26225
- * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js
26226
- * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586
26227
- */
26228
- var supportsHistory = exports.supportsHistory = function supportsHistory() {
26229
- var ua = window.navigator.userAgent;
26230
-
26231
- 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) return false;
26232
-
26233
- return window.history && 'pushState' in window.history;
26234
- };
26235
-
26236
- /**
26237
- * Returns false if using go(n) with hash history causes a full page reload.
26238
- */
26239
- var supportsGoWithoutReloadUsingHash = exports.supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {
26240
- return window.navigator.userAgent.indexOf('Firefox') === -1;
26241
- };
26242
-
26243
- /**
26244
- * Returns true if browser fires popstate on hash change.
26245
- * IE10 and IE11 do not.
26246
- */
26247
- var supportsPopstateOnHashchange = exports.supportsPopstateOnHashchange = function supportsPopstateOnHashchange() {
26248
- return window.navigator.userAgent.indexOf('Trident') === -1;
26249
- };
26250
-
26251
- /**
26252
- * Returns true if a given popstate event is an extraneous WebKit event.
26253
- * Accounts for the fact that Chrome on iOS fires real popstate events
26254
- * containing undefined state when pressing the back button.
26255
- */
26256
- var isExtraneousPopstateEvent = exports.isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {
26257
- return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;
26258
- };
26259
-
26260
- /***/ },
26261
- /* 230 */
26262
- /***/ function(module, exports, __webpack_require__) {
26263
-
26264
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
26265
-
26266
- exports.__esModule = true;
26267
- exports.readState = exports.saveState = undefined;
26268
-
26269
- var _warning = __webpack_require__(188);
26270
-
26271
- var _warning2 = _interopRequireDefault(_warning);
26272
-
26273
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26274
-
26275
- var QuotaExceededErrors = {
26276
- QuotaExceededError: true,
26277
- QUOTA_EXCEEDED_ERR: true
26278
- };
26279
-
26280
- var SecurityErrors = {
26281
- SecurityError: true
26282
- };
26283
-
26284
- var KeyPrefix = '@@History/';
26285
-
26286
- var createKey = function createKey(key) {
26287
- return KeyPrefix + key;
26288
- };
26289
-
26290
- var saveState = exports.saveState = function saveState(key, state) {
26291
- if (!window.sessionStorage) {
26292
- // Session storage is not available or hidden.
26293
- // sessionStorage is undefined in Internet Explorer when served via file protocol.
26294
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available') : void 0;
26295
-
26296
- return;
26297
- }
26298
-
26299
- try {
26300
- if (state == null) {
26301
- window.sessionStorage.removeItem(createKey(key));
26302
- } else {
26303
- window.sessionStorage.setItem(createKey(key), JSON.stringify(state));
26304
- }
26305
- } catch (error) {
26306
- if (SecurityErrors[error.name]) {
26307
- // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any
26308
- // attempt to access window.sessionStorage.
26309
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available due to security settings') : void 0;
26310
-
26311
- return;
26312
- }
26313
-
26314
- if (QuotaExceededErrors[error.name] && window.sessionStorage.length === 0) {
26315
- // Safari "private mode" throws QuotaExceededError.
26316
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : void 0;
26317
-
26318
- return;
26319
- }
26320
-
26321
- throw error;
26322
- }
26323
- };
26324
-
26325
- var readState = exports.readState = function readState(key) {
26326
- var json = void 0;
26327
- try {
26328
- json = window.sessionStorage.getItem(createKey(key));
26329
- } catch (error) {
26330
- if (SecurityErrors[error.name]) {
26331
- // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any
26332
- // attempt to access window.sessionStorage.
26333
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to read state; sessionStorage is not available due to security settings') : void 0;
26334
-
26335
- return undefined;
26336
- }
26337
- }
26338
-
26339
- if (json) {
26340
- try {
26341
- return JSON.parse(json);
26342
- } catch (error) {
26343
- // Ignore invalid JSON.
26344
- }
26345
- }
26346
-
26347
- return undefined;
26348
- };
26349
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
26350
-
26351
- /***/ },
26352
- /* 231 */
26353
- /***/ function(module, exports, __webpack_require__) {
26354
-
26355
- 'use strict';
26356
-
26357
- exports.__esModule = true;
26358
- exports.replaceLocation = exports.pushLocation = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;
26359
-
26360
- var _BrowserProtocol = __webpack_require__(228);
26361
-
26362
- Object.defineProperty(exports, 'getUserConfirmation', {
26363
- enumerable: true,
26364
- get: function get() {
26365
- return _BrowserProtocol.getUserConfirmation;
26366
- }
26367
- });
26368
- Object.defineProperty(exports, 'go', {
26369
- enumerable: true,
26370
- get: function get() {
26371
- return _BrowserProtocol.go;
26372
- }
26373
- });
26374
-
26375
- var _LocationUtils = __webpack_require__(217);
26376
-
26377
- var _PathUtils = __webpack_require__(218);
26378
-
26379
- var getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {
26380
- return (0, _LocationUtils.createLocation)(window.location);
26381
- };
26382
-
26383
- var pushLocation = exports.pushLocation = function pushLocation(location) {
26384
- window.location.href = (0, _PathUtils.createPath)(location);
26385
- return false; // Don't update location
26386
- };
26387
-
26388
- var replaceLocation = exports.replaceLocation = function replaceLocation(location) {
26389
- window.location.replace((0, _PathUtils.createPath)(location));
26390
- return false; // Don't update location
26391
- };
26392
-
26393
- /***/ },
26394
- /* 232 */
26395
- /***/ function(module, exports, __webpack_require__) {
26396
-
26397
- 'use strict';
26398
-
26399
- exports.__esModule = true;
26400
-
26401
- exports.default = function (createHistory) {
26402
- var history = void 0;
26403
- if (canUseDOM) history = (0, _useRouterHistory2.default)(createHistory)();
26404
- return history;
26405
- };
26406
-
26407
- var _useRouterHistory = __webpack_require__(223);
26408
-
26409
- var _useRouterHistory2 = _interopRequireDefault(_useRouterHistory);
26410
-
26411
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26412
-
26413
- var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
26414
-
26415
- module.exports = exports['default'];
26416
-
26417
- /***/ },
26418
- /* 233 */
26419
- /***/ function(module, exports, __webpack_require__) {
26420
-
26421
- 'use strict';
26422
-
26423
- exports.__esModule = true;
26424
-
26425
- var _createHashHistory = __webpack_require__(234);
26426
-
26427
- var _createHashHistory2 = _interopRequireDefault(_createHashHistory);
26428
-
26429
- var _createRouterHistory = __webpack_require__(232);
26430
-
26431
- var _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);
26432
-
26433
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26434
-
26435
- exports.default = (0, _createRouterHistory2.default)(_createHashHistory2.default);
26436
- module.exports = exports['default'];
26437
-
26438
- /***/ },
26439
- /* 234 */
26440
- /***/ function(module, exports, __webpack_require__) {
26441
-
26442
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
26443
-
26444
- exports.__esModule = true;
26445
-
26446
- 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; };
26447
-
26448
- var _warning = __webpack_require__(188);
26449
-
26450
- var _warning2 = _interopRequireDefault(_warning);
26451
-
26452
- var _invariant = __webpack_require__(184);
26453
-
26454
- var _invariant2 = _interopRequireDefault(_invariant);
26455
-
26456
- var _ExecutionEnvironment = __webpack_require__(227);
26457
-
26458
- var _DOMUtils = __webpack_require__(229);
26459
-
26460
- var _HashProtocol = __webpack_require__(235);
26461
-
26462
- var HashProtocol = _interopRequireWildcard(_HashProtocol);
26463
-
26464
- var _createHistory = __webpack_require__(221);
26465
-
26466
- var _createHistory2 = _interopRequireDefault(_createHistory);
26467
-
26468
- 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; } }
26469
-
26470
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26471
-
26472
- var DefaultQueryKey = '_k';
26473
-
26474
- var addLeadingSlash = function addLeadingSlash(path) {
26475
- return path.charAt(0) === '/' ? path : '/' + path;
26476
- };
26477
-
26478
- var HashPathCoders = {
26479
- hashbang: {
26480
- encodePath: function encodePath(path) {
26481
- return path.charAt(0) === '!' ? path : '!' + path;
26482
- },
26483
- decodePath: function decodePath(path) {
26484
- return path.charAt(0) === '!' ? path.substring(1) : path;
26485
- }
26486
- },
26487
- noslash: {
26488
- encodePath: function encodePath(path) {
26489
- return path.charAt(0) === '/' ? path.substring(1) : path;
26490
- },
26491
- decodePath: addLeadingSlash
26492
- },
26493
- slash: {
26494
- encodePath: addLeadingSlash,
26495
- decodePath: addLeadingSlash
26496
- }
26497
- };
26498
-
26499
- var createHashHistory = function createHashHistory() {
26500
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
26501
-
26502
- !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Hash history needs a DOM') : (0, _invariant2.default)(false) : void 0;
26503
-
26504
- var queryKey = options.queryKey,
26505
- hashType = options.hashType;
26506
-
26507
-
26508
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(queryKey !== false, 'Using { queryKey: false } no longer works. Instead, just don\'t ' + 'use location state if you don\'t want a key in your URL query string') : void 0;
26509
-
26510
- if (typeof queryKey !== 'string') queryKey = DefaultQueryKey;
26511
-
26512
- if (hashType == null) hashType = 'slash';
26513
-
26514
- if (!(hashType in HashPathCoders)) {
26515
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Invalid hash type: %s', hashType) : void 0;
26516
-
26517
- hashType = 'slash';
26518
- }
26519
-
26520
- var pathCoder = HashPathCoders[hashType];
26521
-
26522
- var getUserConfirmation = HashProtocol.getUserConfirmation;
26523
-
26524
-
26525
- var getCurrentLocation = function getCurrentLocation() {
26526
- return HashProtocol.getCurrentLocation(pathCoder, queryKey);
26527
- };
26528
-
26529
- var pushLocation = function pushLocation(location) {
26530
- return HashProtocol.pushLocation(location, pathCoder, queryKey);
26531
- };
26532
-
26533
- var replaceLocation = function replaceLocation(location) {
26534
- return HashProtocol.replaceLocation(location, pathCoder, queryKey);
26535
- };
26536
-
26537
- var history = (0, _createHistory2.default)(_extends({
26538
- getUserConfirmation: getUserConfirmation }, options, {
26539
- getCurrentLocation: getCurrentLocation,
26540
- pushLocation: pushLocation,
26541
- replaceLocation: replaceLocation,
26542
- go: HashProtocol.go
26543
- }));
26544
-
26545
- var listenerCount = 0,
26546
- stopListener = void 0;
26547
-
26548
- var startListener = function startListener(listener, before) {
26549
- if (++listenerCount === 1) stopListener = HashProtocol.startListener(history.transitionTo, pathCoder, queryKey);
26550
-
26551
- var unlisten = before ? history.listenBefore(listener) : history.listen(listener);
26552
-
26553
- return function () {
26554
- unlisten();
26555
-
26556
- if (--listenerCount === 0) stopListener();
26557
- };
26558
- };
26559
-
26560
- var listenBefore = function listenBefore(listener) {
26561
- return startListener(listener, true);
26562
- };
26563
-
26564
- var listen = function listen(listener) {
26565
- return startListener(listener, false);
26566
- };
26567
-
26568
- var goIsSupportedWithoutReload = (0, _DOMUtils.supportsGoWithoutReloadUsingHash)();
26569
-
26570
- var go = function go(n) {
26571
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;
26572
-
26573
- history.go(n);
26574
- };
26575
-
26576
- var createHref = function createHref(path) {
26577
- return '#' + pathCoder.encodePath(history.createHref(path));
26578
- };
26579
-
26580
- return _extends({}, history, {
26581
- listenBefore: listenBefore,
26582
- listen: listen,
26583
- go: go,
26584
- createHref: createHref
26585
- });
26586
- };
26587
-
26588
- exports.default = createHashHistory;
26589
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
26590
-
26591
- /***/ },
26592
- /* 235 */
26593
- /***/ function(module, exports, __webpack_require__) {
26594
-
26595
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
26596
-
26597
- exports.__esModule = true;
26598
- exports.replaceLocation = exports.pushLocation = exports.startListener = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;
26599
-
26600
- var _BrowserProtocol = __webpack_require__(228);
26601
-
26602
- Object.defineProperty(exports, 'getUserConfirmation', {
26603
- enumerable: true,
26604
- get: function get() {
26605
- return _BrowserProtocol.getUserConfirmation;
26606
- }
26607
- });
26608
- Object.defineProperty(exports, 'go', {
26609
- enumerable: true,
26610
- get: function get() {
26611
- return _BrowserProtocol.go;
26612
- }
26613
- });
26614
-
26615
- var _warning = __webpack_require__(188);
26616
-
26617
- var _warning2 = _interopRequireDefault(_warning);
26618
-
26619
- var _LocationUtils = __webpack_require__(217);
26620
-
26621
- var _DOMUtils = __webpack_require__(229);
26622
-
26623
- var _DOMStateStorage = __webpack_require__(230);
26624
-
26625
- var _PathUtils = __webpack_require__(218);
26626
-
26627
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26628
-
26629
- var HashChangeEvent = 'hashchange';
26630
-
26631
- var getHashPath = function getHashPath() {
26632
- // We can't use window.location.hash here because it's not
26633
- // consistent across browsers - Firefox will pre-decode it!
26634
- var href = window.location.href;
26635
- var hashIndex = href.indexOf('#');
26636
- return hashIndex === -1 ? '' : href.substring(hashIndex + 1);
26637
- };
26638
-
26639
- var pushHashPath = function pushHashPath(path) {
26640
- return window.location.hash = path;
26641
- };
26642
-
26643
- var replaceHashPath = function replaceHashPath(path) {
26644
- var hashIndex = window.location.href.indexOf('#');
26645
-
26646
- window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);
26647
- };
26648
-
26649
- var getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation(pathCoder, queryKey) {
26650
- var path = pathCoder.decodePath(getHashPath());
26651
- var key = (0, _PathUtils.getQueryStringValueFromPath)(path, queryKey);
26652
-
26653
- var state = void 0;
26654
- if (key) {
26655
- path = (0, _PathUtils.stripQueryStringValueFromPath)(path, queryKey);
26656
- state = (0, _DOMStateStorage.readState)(key);
26657
- }
26658
-
26659
- var init = (0, _PathUtils.parsePath)(path);
26660
- init.state = state;
26661
-
26662
- return (0, _LocationUtils.createLocation)(init, undefined, key);
26663
- };
26664
-
26665
- var prevLocation = void 0;
26666
-
26667
- var startListener = exports.startListener = function startListener(listener, pathCoder, queryKey) {
26668
- var handleHashChange = function handleHashChange() {
26669
- var path = getHashPath();
26670
- var encodedPath = pathCoder.encodePath(path);
26671
-
26672
- if (path !== encodedPath) {
26673
- // Always be sure we have a properly-encoded hash.
26674
- replaceHashPath(encodedPath);
26675
- } else {
26676
- var currentLocation = getCurrentLocation(pathCoder, queryKey);
26677
-
26678
- if (prevLocation && currentLocation.key && prevLocation.key === currentLocation.key) return; // Ignore extraneous hashchange events
26679
-
26680
- prevLocation = currentLocation;
26681
-
26682
- listener(currentLocation);
26683
- }
26684
- };
26685
-
26686
- // Ensure the hash is encoded properly.
26687
- var path = getHashPath();
26688
- var encodedPath = pathCoder.encodePath(path);
26689
-
26690
- if (path !== encodedPath) replaceHashPath(encodedPath);
26691
-
26692
- (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);
26693
-
26694
- return function () {
26695
- return (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);
26696
- };
26697
- };
26698
-
26699
- var updateLocation = function updateLocation(location, pathCoder, queryKey, updateHash) {
26700
- var state = location.state,
26701
- key = location.key;
26702
-
26703
-
26704
- var path = pathCoder.encodePath((0, _PathUtils.createPath)(location));
26705
-
26706
- if (state !== undefined) {
26707
- path = (0, _PathUtils.addQueryStringValueToPath)(path, queryKey, key);
26708
- (0, _DOMStateStorage.saveState)(key, state);
26709
- }
26710
-
26711
- prevLocation = location;
26712
-
26713
- updateHash(path);
26714
- };
26715
-
26716
- var pushLocation = exports.pushLocation = function pushLocation(location, pathCoder, queryKey) {
26717
- return updateLocation(location, pathCoder, queryKey, function (path) {
26718
- if (getHashPath() !== path) {
26719
- pushHashPath(path);
26720
- } else {
26721
- process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'You cannot PUSH the same path using hash history') : void 0;
26722
- }
26723
- });
26724
- };
26725
-
26726
- var replaceLocation = exports.replaceLocation = function replaceLocation(location, pathCoder, queryKey) {
26727
- return updateLocation(location, pathCoder, queryKey, function (path) {
26728
- if (getHashPath() !== path) replaceHashPath(path);
26729
- });
26730
- };
26731
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
26732
-
26733
- /***/ },
26734
- /* 236 */
26735
  /***/ function(module, exports, __webpack_require__) {
26736
 
26737
  'use strict';
@@ -26740,49 +312,49 @@ webpackJsonp([0],[
26740
 
26741
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
26742
 
26743
- var _createBrowserHistory = __webpack_require__(237);
26744
 
26745
  var _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);
26746
 
26747
  exports.createHistory = _createBrowserHistory2['default'];
26748
 
26749
- var _createHashHistory2 = __webpack_require__(254);
26750
 
26751
  var _createHashHistory3 = _interopRequireDefault(_createHashHistory2);
26752
 
26753
  exports.createHashHistory = _createHashHistory3['default'];
26754
 
26755
- var _createMemoryHistory2 = __webpack_require__(255);
26756
 
26757
  var _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2);
26758
 
26759
  exports.createMemoryHistory = _createMemoryHistory3['default'];
26760
 
26761
- var _createLocation2 = __webpack_require__(249);
26762
 
26763
  var _createLocation3 = _interopRequireDefault(_createLocation2);
26764
 
26765
  exports.createLocation = _createLocation3['default'];
26766
 
26767
- var _useBasename2 = __webpack_require__(256);
26768
 
26769
  var _useBasename3 = _interopRequireDefault(_useBasename2);
26770
 
26771
  exports.useBasename = _useBasename3['default'];
26772
 
26773
- var _useBeforeUnload2 = __webpack_require__(257);
26774
 
26775
  var _useBeforeUnload3 = _interopRequireDefault(_useBeforeUnload2);
26776
 
26777
  exports.useBeforeUnload = _useBeforeUnload3['default'];
26778
 
26779
- var _useQueries2 = __webpack_require__(258);
26780
 
26781
  var _useQueries3 = _interopRequireDefault(_useQueries2);
26782
 
26783
  exports.useQueries = _useQueries3['default'];
26784
 
26785
- var _Actions2 = __webpack_require__(238);
26786
 
26787
  var _Actions3 = _interopRequireDefault(_Actions2);
26788
 
@@ -26790,20 +362,20 @@ webpackJsonp([0],[
26790
 
26791
  // deprecated
26792
 
26793
- var _enableBeforeUnload2 = __webpack_require__(263);
26794
 
26795
  var _enableBeforeUnload3 = _interopRequireDefault(_enableBeforeUnload2);
26796
 
26797
  exports.enableBeforeUnload = _enableBeforeUnload3['default'];
26798
 
26799
- var _enableQueries2 = __webpack_require__(264);
26800
 
26801
  var _enableQueries3 = _interopRequireDefault(_enableQueries2);
26802
 
26803
  exports.enableQueries = _enableQueries3['default'];
26804
 
26805
  /***/ },
26806
- /* 237 */
26807
  /***/ function(module, exports, __webpack_require__) {
26808
 
26809
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
@@ -26814,19 +386,19 @@ webpackJsonp([0],[
26814
 
26815
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
26816
 
26817
- var _invariant = __webpack_require__(184);
26818
 
26819
  var _invariant2 = _interopRequireDefault(_invariant);
26820
 
26821
- var _Actions = __webpack_require__(238);
26822
 
26823
- var _ExecutionEnvironment = __webpack_require__(239);
26824
 
26825
- var _DOMUtils = __webpack_require__(240);
26826
 
26827
- var _DOMStateStorage = __webpack_require__(241);
26828
 
26829
- var _createDOMHistory = __webpack_require__(243);
26830
 
26831
  var _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);
26832
 
@@ -26978,10 +550,10 @@ webpackJsonp([0],[
26978
 
26979
  exports['default'] = createBrowserHistory;
26980
  module.exports = exports['default'];
26981
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
26982
 
26983
  /***/ },
26984
- /* 238 */
26985
  /***/ function(module, exports) {
26986
 
26987
  /**
@@ -27017,7 +589,7 @@ webpackJsonp([0],[
27017
  };
27018
 
27019
  /***/ },
27020
- /* 239 */
27021
  /***/ function(module, exports) {
27022
 
27023
  'use strict';
@@ -27027,7 +599,7 @@ webpackJsonp([0],[
27027
  exports.canUseDOM = canUseDOM;
27028
 
27029
  /***/ },
27030
- /* 240 */
27031
  /***/ function(module, exports) {
27032
 
27033
  'use strict';
@@ -27107,7 +679,7 @@ webpackJsonp([0],[
27107
  }
27108
 
27109
  /***/ },
27110
- /* 241 */
27111
  /***/ function(module, exports, __webpack_require__) {
27112
 
27113
  /* WEBPACK VAR INJECTION */(function(process) {/*eslint-disable no-empty */
@@ -27119,7 +691,7 @@ webpackJsonp([0],[
27119
 
27120
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27121
 
27122
- var _warning = __webpack_require__(242);
27123
 
27124
  var _warning2 = _interopRequireDefault(_warning);
27125
 
@@ -27178,10 +750,10 @@ webpackJsonp([0],[
27178
 
27179
  return null;
27180
  }
27181
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
27182
 
27183
  /***/ },
27184
- /* 242 */
27185
  /***/ function(module, exports, __webpack_require__) {
27186
 
27187
  /* WEBPACK VAR INJECTION */(function(process) {/**
@@ -27245,10 +817,10 @@ webpackJsonp([0],[
27245
 
27246
  module.exports = warning;
27247
 
27248
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
27249
 
27250
  /***/ },
27251
- /* 243 */
27252
  /***/ function(module, exports, __webpack_require__) {
27253
 
27254
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
@@ -27259,15 +831,15 @@ webpackJsonp([0],[
27259
 
27260
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27261
 
27262
- var _invariant = __webpack_require__(184);
27263
 
27264
  var _invariant2 = _interopRequireDefault(_invariant);
27265
 
27266
- var _ExecutionEnvironment = __webpack_require__(239);
27267
 
27268
- var _DOMUtils = __webpack_require__(240);
27269
 
27270
- var _createHistory = __webpack_require__(244);
27271
 
27272
  var _createHistory2 = _interopRequireDefault(_createHistory);
27273
 
@@ -27291,10 +863,10 @@ webpackJsonp([0],[
27291
 
27292
  exports['default'] = createDOMHistory;
27293
  module.exports = exports['default'];
27294
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
27295
 
27296
  /***/ },
27297
- /* 244 */
27298
  /***/ function(module, exports, __webpack_require__) {
27299
 
27300
  'use strict';
@@ -27305,23 +877,23 @@ webpackJsonp([0],[
27305
 
27306
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27307
 
27308
- var _deepEqual = __webpack_require__(245);
27309
 
27310
  var _deepEqual2 = _interopRequireDefault(_deepEqual);
27311
 
27312
- var _AsyncUtils = __webpack_require__(248);
27313
 
27314
- var _Actions = __webpack_require__(238);
27315
 
27316
- var _createLocation2 = __webpack_require__(249);
27317
 
27318
  var _createLocation3 = _interopRequireDefault(_createLocation2);
27319
 
27320
- var _runTransitionHook = __webpack_require__(252);
27321
 
27322
  var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
27323
 
27324
- var _deprecate = __webpack_require__(253);
27325
 
27326
  var _deprecate2 = _interopRequireDefault(_deprecate);
27327
 
@@ -27569,12 +1141,12 @@ webpackJsonp([0],[
27569
  module.exports = exports['default'];
27570
 
27571
  /***/ },
27572
- /* 245 */
27573
  /***/ function(module, exports, __webpack_require__) {
27574
 
27575
  var pSlice = Array.prototype.slice;
27576
- var objectKeys = __webpack_require__(246);
27577
- var isArguments = __webpack_require__(247);
27578
 
27579
  var deepEqual = module.exports = function (actual, expected, opts) {
27580
  if (!opts) opts = {};
@@ -27669,7 +1241,7 @@ webpackJsonp([0],[
27669
 
27670
 
27671
  /***/ },
27672
- /* 246 */
27673
  /***/ function(module, exports) {
27674
 
27675
  exports = module.exports = typeof Object.keys === 'function'
@@ -27684,7 +1256,7 @@ webpackJsonp([0],[
27684
 
27685
 
27686
  /***/ },
27687
- /* 247 */
27688
  /***/ function(module, exports) {
27689
 
27690
  var supportsArgumentsClass = (function(){
@@ -27710,7 +1282,7 @@ webpackJsonp([0],[
27710
 
27711
 
27712
  /***/ },
27713
- /* 248 */
27714
  /***/ function(module, exports) {
27715
 
27716
  "use strict";
@@ -27741,7 +1313,7 @@ webpackJsonp([0],[
27741
  }
27742
 
27743
  /***/ },
27744
- /* 249 */
27745
  /***/ function(module, exports, __webpack_require__) {
27746
 
27747
  'use strict';
@@ -27750,9 +1322,9 @@ webpackJsonp([0],[
27750
 
27751
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27752
 
27753
- var _Actions = __webpack_require__(238);
27754
 
27755
- var _parsePath = __webpack_require__(250);
27756
 
27757
  var _parsePath2 = _interopRequireDefault(_parsePath);
27758
 
@@ -27782,7 +1354,7 @@ webpackJsonp([0],[
27782
  module.exports = exports['default'];
27783
 
27784
  /***/ },
27785
- /* 250 */
27786
  /***/ function(module, exports, __webpack_require__) {
27787
 
27788
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
@@ -27791,11 +1363,11 @@ webpackJsonp([0],[
27791
 
27792
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27793
 
27794
- var _warning = __webpack_require__(242);
27795
 
27796
  var _warning2 = _interopRequireDefault(_warning);
27797
 
27798
- var _extractPath = __webpack_require__(251);
27799
 
27800
  var _extractPath2 = _interopRequireDefault(_extractPath);
27801
 
@@ -27829,10 +1401,10 @@ webpackJsonp([0],[
27829
 
27830
  exports['default'] = parsePath;
27831
  module.exports = exports['default'];
27832
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
27833
 
27834
  /***/ },
27835
- /* 251 */
27836
  /***/ function(module, exports) {
27837
 
27838
  "use strict";
@@ -27850,7 +1422,7 @@ webpackJsonp([0],[
27850
  module.exports = exports["default"];
27851
 
27852
  /***/ },
27853
- /* 252 */
27854
  /***/ function(module, exports, __webpack_require__) {
27855
 
27856
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
@@ -27859,7 +1431,7 @@ webpackJsonp([0],[
27859
 
27860
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27861
 
27862
- var _warning = __webpack_require__(242);
27863
 
27864
  var _warning2 = _interopRequireDefault(_warning);
27865
 
@@ -27877,10 +1449,10 @@ webpackJsonp([0],[
27877
 
27878
  exports['default'] = runTransitionHook;
27879
  module.exports = exports['default'];
27880
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
27881
 
27882
  /***/ },
27883
- /* 253 */
27884
  /***/ function(module, exports, __webpack_require__) {
27885
 
27886
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
@@ -27889,7 +1461,7 @@ webpackJsonp([0],[
27889
 
27890
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27891
 
27892
- var _warning = __webpack_require__(242);
27893
 
27894
  var _warning2 = _interopRequireDefault(_warning);
27895
 
@@ -27902,10 +1474,10 @@ webpackJsonp([0],[
27902
 
27903
  exports['default'] = deprecate;
27904
  module.exports = exports['default'];
27905
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
27906
 
27907
  /***/ },
27908
- /* 254 */
27909
  /***/ function(module, exports, __webpack_require__) {
27910
 
27911
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
@@ -27916,23 +1488,23 @@ webpackJsonp([0],[
27916
 
27917
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
27918
 
27919
- var _warning = __webpack_require__(242);
27920
 
27921
  var _warning2 = _interopRequireDefault(_warning);
27922
 
27923
- var _invariant = __webpack_require__(184);
27924
 
27925
  var _invariant2 = _interopRequireDefault(_invariant);
27926
 
27927
- var _Actions = __webpack_require__(238);
27928
 
27929
- var _ExecutionEnvironment = __webpack_require__(239);
27930
 
27931
- var _DOMUtils = __webpack_require__(240);
27932
 
27933
- var _DOMStateStorage = __webpack_require__(241);
27934
 
27935
- var _createDOMHistory = __webpack_require__(243);
27936
 
27937
  var _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);
27938
 
@@ -28133,10 +1705,10 @@ webpackJsonp([0],[
28133
 
28134
  exports['default'] = createHashHistory;
28135
  module.exports = exports['default'];
28136
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
28137
 
28138
  /***/ },
28139
- /* 255 */
28140
  /***/ function(module, exports, __webpack_require__) {
28141
 
28142
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
@@ -28147,13 +1719,13 @@ webpackJsonp([0],[
28147
 
28148
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
28149
 
28150
- var _invariant = __webpack_require__(184);
28151
 
28152
  var _invariant2 = _interopRequireDefault(_invariant);
28153
 
28154
- var _Actions = __webpack_require__(238);
28155
 
28156
- var _createHistory = __webpack_require__(244);
28157
 
28158
  var _createHistory2 = _interopRequireDefault(_createHistory);
28159
 
@@ -28281,10 +1853,10 @@ webpackJsonp([0],[
28281
 
28282
  exports['default'] = createMemoryHistory;
28283
  module.exports = exports['default'];
28284
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
28285
 
28286
  /***/ },
28287
- /* 256 */
28288
  /***/ function(module, exports, __webpack_require__) {
28289
 
28290
  'use strict';
@@ -28297,17 +1869,17 @@ webpackJsonp([0],[
28297
 
28298
  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; }
28299
 
28300
- var _ExecutionEnvironment = __webpack_require__(239);
28301
 
28302
- var _runTransitionHook = __webpack_require__(252);
28303
 
28304
  var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
28305
 
28306
- var _extractPath = __webpack_require__(251);
28307
 
28308
  var _extractPath2 = _interopRequireDefault(_extractPath);
28309
 
28310
- var _parsePath = __webpack_require__(250);
28311
 
28312
  var _parsePath2 = _interopRequireDefault(_parsePath);
28313
 
@@ -28418,7 +1990,7 @@ webpackJsonp([0],[
28418
  module.exports = exports['default'];
28419
 
28420
  /***/ },
28421
- /* 257 */
28422
  /***/ function(module, exports, __webpack_require__) {
28423
 
28424
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
@@ -28429,15 +2001,15 @@ webpackJsonp([0],[
28429
 
28430
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
28431
 
28432
- var _warning = __webpack_require__(242);
28433
 
28434
  var _warning2 = _interopRequireDefault(_warning);
28435
 
28436
- var _ExecutionEnvironment = __webpack_require__(239);
28437
 
28438
- var _DOMUtils = __webpack_require__(240);
28439
 
28440
- var _deprecate = __webpack_require__(253);
28441
 
28442
  var _deprecate2 = _interopRequireDefault(_deprecate);
28443
 
@@ -28532,10 +2104,10 @@ webpackJsonp([0],[
28532
 
28533
  exports['default'] = useBeforeUnload;
28534
  module.exports = exports['default'];
28535
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)))
28536
 
28537
  /***/ },
28538
- /* 258 */
28539
  /***/ function(module, exports, __webpack_require__) {
28540
 
28541
  'use strict';
@@ -28548,15 +2120,15 @@ webpackJsonp([0],[
28548
 
28549
  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; }
28550
 
28551
- var _qs = __webpack_require__(259);
28552
 
28553
  var _qs2 = _interopRequireDefault(_qs);
28554
 
28555
- var _runTransitionHook = __webpack_require__(252);
28556
 
28557
  var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
28558
 
28559
- var _parsePath = __webpack_require__(250);
28560
 
28561
  var _parsePath2 = _interopRequireDefault(_parsePath);
28562
 
@@ -28655,13 +2227,13 @@ webpackJsonp([0],[
28655
  module.exports = exports['default'];
28656
 
28657
  /***/ },
28658
- /* 259 */
28659
  /***/ function(module, exports, __webpack_require__) {
28660
 
28661
  // Load modules
28662
 
28663
- var Stringify = __webpack_require__(260);
28664
- var Parse = __webpack_require__(262);
28665
 
28666
 
28667
  // Declare internals
@@ -28676,12 +2248,12 @@ webpackJsonp([0],[
28676
 
28677
 
28678
  /***/ },
28679
- /* 260 */
28680
  /***/ function(module, exports, __webpack_require__) {
28681
 
28682
  // Load modules
28683
 
28684
- var Utils = __webpack_require__(261);
28685
 
28686
 
28687
  // Declare internals
@@ -28803,7 +2375,7 @@ webpackJsonp([0],[
28803
 
28804
 
28805
  /***/ },
28806
- /* 261 */
28807
  /***/ function(module, exports) {
28808
 
28809
  // Load modules
@@ -28999,12 +2571,12 @@ webpackJsonp([0],[
28999
 
29000
 
29001
  /***/ },
29002
- /* 262 */
29003
  /***/ function(module, exports, __webpack_require__) {
29004
 
29005
  // Load modules
29006
 
29007
- var Utils = __webpack_require__(261);
29008
 
29009
 
29010
  // Declare internals
@@ -29191,7 +2763,7 @@ webpackJsonp([0],[
29191
 
29192
 
29193
  /***/ },
29194
- /* 263 */
29195
  /***/ function(module, exports, __webpack_require__) {
29196
 
29197
  'use strict';
@@ -29200,11 +2772,11 @@ webpackJsonp([0],[
29200
 
29201
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
29202
 
29203
- var _deprecate = __webpack_require__(253);
29204
 
29205
  var _deprecate2 = _interopRequireDefault(_deprecate);
29206
 
29207
- var _useBeforeUnload = __webpack_require__(257);
29208
 
29209
  var _useBeforeUnload2 = _interopRequireDefault(_useBeforeUnload);
29210
 
@@ -29212,7 +2784,7 @@ webpackJsonp([0],[
29212
  module.exports = exports['default'];
29213
 
29214
  /***/ },
29215
- /* 264 */
29216
  /***/ function(module, exports, __webpack_require__) {
29217
 
29218
  'use strict';
@@ -29221,11 +2793,11 @@ webpackJsonp([0],[
29221
 
29222
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
29223
 
29224
- var _deprecate = __webpack_require__(253);
29225
 
29226
  var _deprecate2 = _interopRequireDefault(_deprecate);
29227
 
29228
- var _useQueries = __webpack_require__(258);
29229
 
29230
  var _useQueries2 = _interopRequireDefault(_useQueries);
29231
 
@@ -29233,7 +2805,7 @@ webpackJsonp([0],[
29233
  module.exports = exports['default'];
29234
 
29235
  /***/ },
29236
- /* 265 */
29237
  /***/ function(module, exports, __webpack_require__) {
29238
 
29239
  'use strict';
@@ -29244,25 +2816,25 @@ webpackJsonp([0],[
29244
 
29245
  var _react2 = _interopRequireDefault(_react);
29246
 
29247
- var _reactRouter = __webpack_require__(180);
29248
 
29249
- var _jquery = __webpack_require__(266);
29250
 
29251
  var _jquery2 = _interopRequireDefault(_jquery);
29252
 
29253
- var _mailpoet = __webpack_require__(267);
29254
 
29255
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
29256
 
29257
- var _classnames = __webpack_require__(268);
29258
 
29259
  var _classnames2 = _interopRequireDefault(_classnames);
29260
 
29261
- var _listingListingJsx = __webpack_require__(269);
29262
 
29263
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
29264
 
29265
- var _formFieldsSelectionJsx = __webpack_require__(278);
29266
 
29267
  var _formFieldsSelectionJsx2 = _interopRequireDefault(_formFieldsSelectionJsx);
29268
 
@@ -29607,13 +3179,13 @@ webpackJsonp([0],[
29607
  module.exports = SubscriberList;
29608
 
29609
  /***/ },
29610
- /* 266 */
29611
  /***/ function(module, exports) {
29612
 
29613
  module.exports = jQuery;
29614
 
29615
  /***/ },
29616
- /* 267 */
29617
  /***/ function(module, exports, __webpack_require__) {
29618
 
29619
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
@@ -29628,7 +3200,7 @@ webpackJsonp([0],[
29628
 
29629
 
29630
  /***/ },
29631
- /* 268 */
29632
  /***/ function(module, exports, __webpack_require__) {
29633
 
29634
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -29682,7 +3254,7 @@ webpackJsonp([0],[
29682
 
29683
 
29684
  /***/ },
29685
- /* 269 */
29686
  /***/ function(module, exports, __webpack_require__) {
29687
 
29688
  'use strict';
@@ -29691,11 +3263,11 @@ webpackJsonp([0],[
29691
 
29692
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
29693
 
29694
- var _mailpoet = __webpack_require__(267);
29695
 
29696
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
29697
 
29698
- var _jquery = __webpack_require__(266);
29699
 
29700
  var _jquery2 = _interopRequireDefault(_jquery);
29701
 
@@ -29703,37 +3275,37 @@ webpackJsonp([0],[
29703
 
29704
  var _react2 = _interopRequireDefault(_react);
29705
 
29706
- var _underscore = __webpack_require__(270);
29707
 
29708
  var _underscore2 = _interopRequireDefault(_underscore);
29709
 
29710
- var _reactRouter = __webpack_require__(180);
29711
 
29712
- var _classnames = __webpack_require__(268);
29713
 
29714
  var _classnames2 = _interopRequireDefault(_classnames);
29715
 
29716
- var _listingBulk_actionsJsx = __webpack_require__(272);
29717
 
29718
  var _listingBulk_actionsJsx2 = _interopRequireDefault(_listingBulk_actionsJsx);
29719
 
29720
- var _listingHeaderJsx = __webpack_require__(273);
29721
 
29722
  var _listingHeaderJsx2 = _interopRequireDefault(_listingHeaderJsx);
29723
 
29724
- var _listingPagesJsx = __webpack_require__(274);
29725
 
29726
  var _listingPagesJsx2 = _interopRequireDefault(_listingPagesJsx);
29727
 
29728
- var _listingSearchJsx = __webpack_require__(275);
29729
 
29730
  var _listingSearchJsx2 = _interopRequireDefault(_listingSearchJsx);
29731
 
29732
- var _listingGroupsJsx = __webpack_require__(276);
29733
 
29734
  var _listingGroupsJsx2 = _interopRequireDefault(_listingGroupsJsx);
29735
 
29736
- var _listingFiltersJsx = __webpack_require__(277);
29737
 
29738
  var _listingFiltersJsx2 = _interopRequireDefault(_listingFiltersJsx);
29739
 
@@ -30603,14 +4175,14 @@ webpackJsonp([0],[
30603
  module.exports = Listing;
30604
 
30605
  /***/ },
30606
- /* 270 */
30607
  /***/ function(module, exports, __webpack_require__) {
30608
 
30609
- /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["_"] = __webpack_require__(271);
30610
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
30611
 
30612
  /***/ },
30613
- /* 271 */
30614
  /***/ function(module, exports, __webpack_require__) {
30615
 
30616
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscore.js 1.8.3
@@ -32164,12 +5736,12 @@ webpackJsonp([0],[
32164
 
32165
 
32166
  /***/ },
32167
- /* 272 */
32168
  /***/ function(module, exports, __webpack_require__) {
32169
 
32170
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
32171
 
32172
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(267)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, MailPoet) {
32173
  var ListingBulkActions = React.createClass({
32174
  displayName: 'ListingBulkActions',
32175
 
@@ -32292,14 +5864,14 @@ webpackJsonp([0],[
32292
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
32293
 
32294
  /***/ },
32295
- /* 273 */
32296
  /***/ function(module, exports, __webpack_require__) {
32297
 
32298
  'use strict';
32299
 
32300
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
32301
 
32302
- var _mailpoet = __webpack_require__(267);
32303
 
32304
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
32305
 
@@ -32307,7 +5879,7 @@ webpackJsonp([0],[
32307
 
32308
  var _react2 = _interopRequireDefault(_react);
32309
 
32310
- var _classnames = __webpack_require__(268);
32311
 
32312
  var _classnames2 = _interopRequireDefault(_classnames);
32313
 
@@ -32400,12 +5972,12 @@ webpackJsonp([0],[
32400
  module.exports = ListingHeader;
32401
 
32402
  /***/ },
32403
- /* 274 */
32404
  /***/ function(module, exports, __webpack_require__) {
32405
 
32406
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
32407
 
32408
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(268), __webpack_require__(267)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, classNames, MailPoet) {
32409
 
32410
  var ListingPages = React.createClass({
32411
  displayName: 'ListingPages',
@@ -32632,12 +6204,12 @@ webpackJsonp([0],[
32632
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
32633
 
32634
  /***/ },
32635
- /* 275 */
32636
  /***/ function(module, exports, __webpack_require__) {
32637
 
32638
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
32639
 
32640
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267), __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, React) {
32641
 
32642
  var ListingSearch = React.createClass({
32643
  displayName: 'ListingSearch',
@@ -32684,12 +6256,12 @@ webpackJsonp([0],[
32684
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
32685
 
32686
  /***/ },
32687
- /* 276 */
32688
  /***/ function(module, exports, __webpack_require__) {
32689
 
32690
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
32691
 
32692
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(268)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, classNames) {
32693
 
32694
  var ListingGroups = React.createClass({
32695
  displayName: 'ListingGroups',
@@ -32740,12 +6312,12 @@ webpackJsonp([0],[
32740
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
32741
 
32742
  /***/ },
32743
- /* 277 */
32744
  /***/ function(module, exports, __webpack_require__) {
32745
 
32746
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
32747
 
32748
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(266), __webpack_require__(267)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, jQuery, MailPoet) {
32749
  var ListingFilters = React.createClass({
32750
  displayName: 'ListingFilters',
32751
 
@@ -32833,14 +6405,14 @@ webpackJsonp([0],[
32833
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
32834
 
32835
  /***/ },
32836
- /* 278 */
32837
  /***/ function(module, exports, __webpack_require__) {
32838
 
32839
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
32840
 
32841
  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; };
32842
 
32843
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(33), __webpack_require__(266), __webpack_require__(279)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, ReactDOM, jQuery) {
32844
  var Selection = React.createClass({
32845
  displayName: 'Selection',
32846
 
@@ -33024,7 +6596,7 @@ webpackJsonp([0],[
33024
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
33025
 
33026
  /***/ },
33027
- /* 279 */
33028
  /***/ function(module, exports, __webpack_require__) {
33029
 
33030
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;/*!
@@ -33037,7 +6609,7 @@ webpackJsonp([0],[
33037
  (function (factory) {
33038
  if (true) {
33039
  // AMD. Register as an anonymous module.
33040
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(266)], __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__));
33041
  } else if (typeof exports === 'object') {
33042
  // Node/CommonJS
33043
  factory(require('jquery'));
@@ -38755,12 +12327,12 @@ webpackJsonp([0],[
38755
 
38756
 
38757
  /***/ },
38758
- /* 280 */
38759
  /***/ function(module, exports, __webpack_require__) {
38760
 
38761
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
38762
 
38763
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(180), __webpack_require__(267), __webpack_require__(281), __webpack_require__(400)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, MailPoet, Form, ReactStringReplace) {
38764
  var fields = [{
38765
  name: 'email',
38766
  label: MailPoet.I18n.t('email'),
@@ -38949,12 +12521,12 @@ webpackJsonp([0],[
38949
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
38950
 
38951
  /***/ },
38952
- /* 281 */
38953
  /***/ function(module, exports, __webpack_require__) {
38954
 
38955
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
38956
 
38957
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(267), __webpack_require__(268), __webpack_require__(180), __webpack_require__(282)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, MailPoet, classNames, Router, FormField) {
38958
 
38959
  var Form = React.createClass({
38960
  displayName: 'Form',
@@ -39174,12 +12746,12 @@ webpackJsonp([0],[
39174
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
39175
 
39176
  /***/ },
39177
- /* 282 */
39178
  /***/ function(module, exports, __webpack_require__) {
39179
 
39180
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
39181
 
39182
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(283), __webpack_require__(284), __webpack_require__(285), __webpack_require__(286), __webpack_require__(287), __webpack_require__(278), __webpack_require__(288)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, FormFieldText, FormFieldTextarea, FormFieldSelect, FormFieldRadio, FormFieldCheckbox, FormFieldSelection, FormFieldDate) {
39183
  var FormField = React.createClass({
39184
  displayName: 'FormField',
39185
 
@@ -39304,7 +12876,7 @@ webpackJsonp([0],[
39304
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
39305
 
39306
  /***/ },
39307
- /* 283 */
39308
  /***/ function(module, exports, __webpack_require__) {
39309
 
39310
  'use strict';
@@ -39343,7 +12915,7 @@ webpackJsonp([0],[
39343
  module.exports = FormFieldText;
39344
 
39345
  /***/ },
39346
- /* 284 */
39347
  /***/ function(module, exports, __webpack_require__) {
39348
 
39349
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";
@@ -39372,7 +12944,7 @@ webpackJsonp([0],[
39372
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
39373
 
39374
  /***/ },
39375
- /* 285 */
39376
  /***/ function(module, exports, __webpack_require__) {
39377
 
39378
  'use strict';
@@ -39385,7 +12957,7 @@ webpackJsonp([0],[
39385
 
39386
  var _react2 = _interopRequireDefault(_react);
39387
 
39388
- var _underscore = __webpack_require__(270);
39389
 
39390
  var _underscore2 = _interopRequireDefault(_underscore);
39391
 
@@ -39464,7 +13036,7 @@ webpackJsonp([0],[
39464
  module.exports = FormFieldSelect;
39465
 
39466
  /***/ },
39467
- /* 286 */
39468
  /***/ function(module, exports, __webpack_require__) {
39469
 
39470
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -39511,7 +13083,7 @@ webpackJsonp([0],[
39511
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
39512
 
39513
  /***/ },
39514
- /* 287 */
39515
  /***/ function(module, exports, __webpack_require__) {
39516
 
39517
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -39566,7 +13138,7 @@ webpackJsonp([0],[
39566
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
39567
 
39568
  /***/ },
39569
- /* 288 */
39570
  /***/ function(module, exports, __webpack_require__) {
39571
 
39572
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
@@ -39581,7 +13153,7 @@ webpackJsonp([0],[
39581
 
39582
  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; }
39583
 
39584
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(289)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Moment) {
39585
  var FormFieldDateYear = (function (_React$Component) {
39586
  _inherits(FormFieldDateYear, _React$Component);
39587
 
@@ -39898,11 +13470,11 @@ webpackJsonp([0],[
39898
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
39899
 
39900
  /***/ },
39901
- /* 289 */
39902
  /***/ function(module, exports, __webpack_require__) {
39903
 
39904
  /* WEBPACK VAR INJECTION */(function(module) {//! moment.js
39905
- //! version : 2.17.1
39906
  //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
39907
  //! license : MIT
39908
  //! momentjs.com
@@ -39944,6 +13516,10 @@ webpackJsonp([0],[
39944
  return true;
39945
  }
39946
 
 
 
 
 
39947
  function isNumber(input) {
39948
  return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
39949
  }
@@ -40000,7 +13576,9 @@ webpackJsonp([0],[
40000
  userInvalidated : false,
40001
  iso : false,
40002
  parsedDateParts : [],
40003
- meridiem : null
 
 
40004
  };
40005
  }
40006
 
@@ -40076,10 +13654,6 @@ webpackJsonp([0],[
40076
  return m;
40077
  }
40078
 
40079
- function isUndefined(input) {
40080
- return input === void 0;
40081
- }
40082
-
40083
  // Plugins that add properties should also add the key here (null value),
40084
  // so we can properly clone ourselves.
40085
  var momentProperties = hooks.momentProperties = [];
@@ -40119,7 +13693,7 @@ webpackJsonp([0],[
40119
  }
40120
 
40121
  if (momentProperties.length > 0) {
40122
- for (i in momentProperties) {
40123
  prop = momentProperties[i];
40124
  val = from[prop];
40125
  if (!isUndefined(val)) {
@@ -40256,8 +13830,11 @@ webpackJsonp([0],[
40256
  }
40257
  this._config = config;
40258
  // Lenient ordinal parsing accepts just a number in addition to
40259
- // number + (possibly) stuff coming from _ordinalParseLenient.
40260
- this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
 
 
 
40261
  }
40262
 
40263
  function mergeConfigs(parentConfig, childConfig) {
@@ -40355,7 +13932,7 @@ webpackJsonp([0],[
40355
  }
40356
 
40357
  var defaultOrdinal = '%d';
40358
- var defaultOrdinalParse = /\d{1,2}/;
40359
 
40360
  function ordinal (number) {
40361
  return this._ordinal.replace('%d', number);
@@ -40365,6 +13942,7 @@ webpackJsonp([0],[
40365
  future : 'in %s',
40366
  past : '%s ago',
40367
  s : 'a few seconds',
 
40368
  m : 'a minute',
40369
  mm : '%d minutes',
40370
  h : 'an hour',
@@ -40547,7 +14125,7 @@ webpackJsonp([0],[
40547
  return function (mom) {
40548
  var output = '', i;
40549
  for (i = 0; i < length; i++) {
40550
- output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
40551
  }
40552
  return output;
40553
  };
@@ -40750,7 +14328,8 @@ webpackJsonp([0],[
40750
  var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
40751
  function localeMonths (m, format) {
40752
  if (!m) {
40753
- return this._months;
 
40754
  }
40755
  return isArray(this._months) ? this._months[m.month()] :
40756
  this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
@@ -40759,7 +14338,8 @@ webpackJsonp([0],[
40759
  var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
40760
  function localeMonthsShort (m, format) {
40761
  if (!m) {
40762
- return this._monthsShort;
 
40763
  }
40764
  return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
40765
  this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
@@ -41026,11 +14606,11 @@ webpackJsonp([0],[
41026
  }
41027
 
41028
  function createDate (y, m, d, h, M, s, ms) {
41029
- //can't just apply() to create a date:
41030
- //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
41031
  var date = new Date(y, m, d, h, M, s, ms);
41032
 
41033
- //the date constructor remaps years 0-99 to 1900-1999
41034
  if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
41035
  date.setFullYear(y);
41036
  }
@@ -41040,7 +14620,7 @@ webpackJsonp([0],[
41040
  function createUTCDate (y) {
41041
  var date = new Date(Date.UTC.apply(null, arguments));
41042
 
41043
- //the Date.UTC function remaps years 0-99 to 1900-1999
41044
  if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
41045
  date.setUTCFullYear(y);
41046
  }
@@ -41057,7 +14637,7 @@ webpackJsonp([0],[
41057
  return -fwdlw + fwd - 1;
41058
  }
41059
 
41060
- //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
41061
  function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
41062
  var localWeekday = (7 + weekday - dow) % 7,
41063
  weekOffset = firstWeekOffset(year, dow, doy),
@@ -41258,7 +14838,8 @@ webpackJsonp([0],[
41258
  var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
41259
  function localeWeekdays (m, format) {
41260
  if (!m) {
41261
- return this._weekdays;
 
41262
  }
41263
  return isArray(this._weekdays) ? this._weekdays[m.day()] :
41264
  this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
@@ -41578,8 +15159,10 @@ webpackJsonp([0],[
41578
  addRegexToken('A', matchMeridiem);
41579
  addRegexToken('H', match1to2);
41580
  addRegexToken('h', match1to2);
 
41581
  addRegexToken('HH', match1to2, match2);
41582
  addRegexToken('hh', match1to2, match2);
 
41583
 
41584
  addRegexToken('hmm', match3to4);
41585
  addRegexToken('hmmss', match5to6);
@@ -41587,6 +15170,10 @@ webpackJsonp([0],[
41587
  addRegexToken('Hmmss', match5to6);
41588
 
41589
  addParseToken(['H', 'HH'], HOUR);
 
 
 
 
41590
  addParseToken(['a', 'A'], function (input, array, config) {
41591
  config._isPm = config._locale.isPM(input);
41592
  config._meridiem = input;
@@ -41657,7 +15244,7 @@ webpackJsonp([0],[
41657
  longDateFormat: defaultLongDateFormat,
41658
  invalidDate: defaultInvalidDate,
41659
  ordinal: defaultOrdinal,
41660
- ordinalParse: defaultOrdinalParse,
41661
  relativeTime: defaultRelativeTime,
41662
 
41663
  months: defaultLocaleMonths,
@@ -41715,7 +15302,7 @@ webpackJsonp([0],[
41715
  module && module.exports) {
41716
  try {
41717
  oldLocale = globalLocale._abbr;
41718
- __webpack_require__(291)("./" + name);
41719
  // because defineLocale currently also sets the global locale, we
41720
  // want to undo that for lazy loaded locales
41721
  getSetGlobalLocale(oldLocale);
@@ -41968,6 +15555,77 @@ webpackJsonp([0],[
41968
  }
41969
  }
41970
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41971
  // date from iso format or fallback
41972
  function configFromString(config) {
41973
  var matched = aspNetJsonRegex.exec(config._i);
@@ -41980,13 +15638,24 @@ webpackJsonp([0],[
41980
  configFromISO(config);
41981
  if (config._isValid === false) {
41982
  delete config._isValid;
41983
- hooks.createFromInputFallback(config);
 
 
 
 
 
 
 
 
41984
  }
 
 
 
41985
  }
41986
 
41987
  hooks.createFromInputFallback = deprecate(
41988
- 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +
41989
- 'which is not reliable across all browsers and versions. Non ISO date formats are ' +
41990
  'discouraged and will be removed in an upcoming major release. Please refer to ' +
41991
  'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
41992
  function (config) {
@@ -42033,10 +15702,10 @@ webpackJsonp([0],[
42033
  }
42034
 
42035
  //if the day of the year is set, figure out what it is
42036
- if (config._dayOfYear) {
42037
  yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
42038
 
42039
- if (config._dayOfYear > daysInYear(yearToUse)) {
42040
  getParsingFlags(config)._overflowDayOfYear = true;
42041
  }
42042
 
@@ -42140,6 +15809,9 @@ webpackJsonp([0],[
42140
  // constant that refers to the ISO standard
42141
  hooks.ISO_8601 = function () {};
42142
 
 
 
 
42143
  // date from string and format string
42144
  function configFromStringAndFormat(config) {
42145
  // TODO: Move this to another part of the creation flow to prevent circular deps
@@ -42147,7 +15819,10 @@ webpackJsonp([0],[
42147
  configFromISO(config);
42148
  return;
42149
  }
42150
-
 
 
 
42151
  config._a = [];
42152
  getParsingFlags(config).empty = true;
42153
 
@@ -42339,7 +16014,7 @@ webpackJsonp([0],[
42339
 
42340
  function configFromInput(config) {
42341
  var input = config._i;
42342
- if (input === undefined) {
42343
  config._d = new Date(hooks.now());
42344
  } else if (isDate(input)) {
42345
  config._d = new Date(input.valueOf());
@@ -42350,7 +16025,7 @@ webpackJsonp([0],[
42350
  return parseInt(obj, 10);
42351
  });
42352
  configFromArray(config);
42353
- } else if (typeof(input) === 'object') {
42354
  configFromObject(config);
42355
  } else if (isNumber(input)) {
42356
  // from milliseconds
@@ -42451,6 +16126,38 @@ webpackJsonp([0],[
42451
  return Date.now ? Date.now() : +(new Date());
42452
  };
42453
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42454
  function Duration (duration) {
42455
  var normalizedInput = normalizeObjectUnits(duration),
42456
  years = normalizedInput.year || 0,
@@ -42463,6 +16170,8 @@ webpackJsonp([0],[
42463
  seconds = normalizedInput.second || 0,
42464
  milliseconds = normalizedInput.millisecond || 0;
42465
 
 
 
42466
  // representation for dateAddRemove
42467
  this._milliseconds = +milliseconds +
42468
  seconds * 1e3 + // 1000
@@ -42586,7 +16295,7 @@ webpackJsonp([0],[
42586
  // a second time. In case it wants us to change the offset again
42587
  // _changeInProgress == true case, then we have to adjust, because
42588
  // there is no such time in the given timezone.
42589
- function getSetOffset (input, keepLocalTime) {
42590
  var offset = this._offset || 0,
42591
  localAdjust;
42592
  if (!this.isValid()) {
@@ -42598,7 +16307,7 @@ webpackJsonp([0],[
42598
  if (input === null) {
42599
  return this;
42600
  }
42601
- } else if (Math.abs(input) < 16) {
42602
  input = input * 60;
42603
  }
42604
  if (!this._isUTC && keepLocalTime) {
@@ -42656,7 +16365,7 @@ webpackJsonp([0],[
42656
 
42657
  function setOffsetToParsedOffset () {
42658
  if (this._tzm != null) {
42659
- this.utcOffset(this._tzm);
42660
  } else if (typeof this._i === 'string') {
42661
  var tZone = offsetFromString(matchOffset, this._i);
42662
  if (tZone != null) {
@@ -42788,6 +16497,7 @@ webpackJsonp([0],[
42788
  }
42789
 
42790
  createDuration.fn = Duration.prototype;
 
42791
 
42792
  function parseIso (inp, sign) {
42793
  // We'd normally use ~~inp for this, but unfortunately it also
@@ -43024,18 +16734,19 @@ webpackJsonp([0],[
43024
  return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
43025
  }
43026
 
43027
- function toISOString () {
 
 
 
43028
  var m = this.clone().utc();
43029
- if (0 < m.year() && m.year() <= 9999) {
43030
- if (isFunction(Date.prototype.toISOString)) {
43031
- // native implementation is ~50x faster, use it when we can
43032
- return this.toDate().toISOString();
43033
- } else {
43034
- return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
43035
- }
43036
- } else {
43037
  return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
43038
  }
 
 
 
 
 
43039
  }
43040
 
43041
  /**
@@ -43055,7 +16766,7 @@ webpackJsonp([0],[
43055
  zone = 'Z';
43056
  }
43057
  var prefix = '[' + func + '("]';
43058
- var year = (0 < this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
43059
  var datetime = '-MM-DD[T]HH:mm:ss.SSS';
43060
  var suffix = zone + '[")]';
43061
 
@@ -43223,7 +16934,7 @@ webpackJsonp([0],[
43223
  return this.isValid() ? this.toISOString() : null;
43224
  }
43225
 
43226
- function isValid$1 () {
43227
  return isValid(this);
43228
  }
43229
 
@@ -43383,7 +17094,10 @@ webpackJsonp([0],[
43383
  addRegexToken('D', match1to2);
43384
  addRegexToken('DD', match1to2, match2);
43385
  addRegexToken('Do', function (isStrict, locale) {
43386
- return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
 
 
 
43387
  });
43388
 
43389
  addParseToken(['D', 'DD'], DATE);
@@ -43563,7 +17277,7 @@ webpackJsonp([0],[
43563
  proto.isSame = isSame;
43564
  proto.isSameOrAfter = isSameOrAfter;
43565
  proto.isSameOrBefore = isSameOrBefore;
43566
- proto.isValid = isValid$1;
43567
  proto.lang = lang;
43568
  proto.locale = locale;
43569
  proto.localeData = localeData;
@@ -43788,7 +17502,7 @@ webpackJsonp([0],[
43788
  }
43789
 
43790
  getSetGlobalLocale('en', {
43791
- ordinalParse: /\d{1,2}(th|st|nd|rd)/,
43792
  ordinal : function (number) {
43793
  var b = number % 10,
43794
  output = (toInt(number % 100 / 10) === 1) ? 'th' :
@@ -43909,6 +17623,9 @@ webpackJsonp([0],[
43909
  }
43910
 
43911
  function as (units) {
 
 
 
43912
  var days;
43913
  var months;
43914
  var milliseconds = this._milliseconds;
@@ -43937,6 +17654,9 @@ webpackJsonp([0],[
43937
 
43938
  // TODO: Use this.as('ms')?
43939
  function valueOf$1 () {
 
 
 
43940
  return (
43941
  this._milliseconds +
43942
  this._days * 864e5 +
@@ -43962,12 +17682,12 @@ webpackJsonp([0],[
43962
 
43963
  function get$2 (units) {
43964
  units = normalizeUnits(units);
43965
- return this[units + 's']();
43966
  }
43967
 
43968
  function makeGetter(name) {
43969
  return function () {
43970
- return this._data[name];
43971
  };
43972
  }
43973
 
@@ -43985,11 +17705,12 @@ webpackJsonp([0],[
43985
 
43986
  var round = Math.round;
43987
  var thresholds = {
43988
- s: 45, // seconds to minute
43989
- m: 45, // minutes to hour
43990
- h: 22, // hours to day
43991
- d: 26, // days to month
43992
- M: 11 // months to year
 
43993
  };
43994
 
43995
  // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
@@ -44006,16 +17727,17 @@ webpackJsonp([0],[
44006
  var months = round(duration.as('M'));
44007
  var years = round(duration.as('y'));
44008
 
44009
- var a = seconds < thresholds.s && ['s', seconds] ||
44010
- minutes <= 1 && ['m'] ||
44011
- minutes < thresholds.m && ['mm', minutes] ||
44012
- hours <= 1 && ['h'] ||
44013
- hours < thresholds.h && ['hh', hours] ||
44014
- days <= 1 && ['d'] ||
44015
- days < thresholds.d && ['dd', days] ||
44016
- months <= 1 && ['M'] ||
44017
- months < thresholds.M && ['MM', months] ||
44018
- years <= 1 && ['y'] || ['yy', years];
 
44019
 
44020
  a[2] = withoutSuffix;
44021
  a[3] = +posNegDuration > 0;
@@ -44044,10 +17766,17 @@ webpackJsonp([0],[
44044
  return thresholds[threshold];
44045
  }
44046
  thresholds[threshold] = limit;
 
 
 
44047
  return true;
44048
  }
44049
 
44050
  function humanize (withSuffix) {
 
 
 
 
44051
  var locale = this.localeData();
44052
  var output = relativeTime$1(this, !withSuffix, locale);
44053
 
@@ -44068,6 +17797,10 @@ webpackJsonp([0],[
44068
  // This is because there is no context-free conversion between hours and days
44069
  // (think of clock changes)
44070
  // and also not between days and months (28-31 days per month)
 
 
 
 
44071
  var seconds = abs$1(this._milliseconds) / 1000;
44072
  var days = abs$1(this._days);
44073
  var months = abs$1(this._months);
@@ -44112,6 +17845,7 @@ webpackJsonp([0],[
44112
 
44113
  var proto$2 = Duration.prototype;
44114
 
 
44115
  proto$2.abs = abs;
44116
  proto$2.add = add$1;
44117
  proto$2.subtract = subtract$1;
@@ -44167,7 +17901,7 @@ webpackJsonp([0],[
44167
  // Side effect imports
44168
 
44169
 
44170
- hooks.version = '2.17.1';
44171
 
44172
  setHookCallback(createLocal);
44173
 
@@ -44203,245 +17937,244 @@ webpackJsonp([0],[
44203
 
44204
  })));
44205
 
44206
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(290)(module)))
44207
-
44208
- /***/ },
44209
- /* 290 */
44210
- /***/ function(module, exports) {
44211
-
44212
- module.exports = function(module) {
44213
- if(!module.webpackPolyfill) {
44214
- module.deprecate = function() {};
44215
- module.paths = [];
44216
- // module.parent = undefined by default
44217
- module.children = [];
44218
- module.webpackPolyfill = 1;
44219
- }
44220
- return module;
44221
- }
44222
-
44223
 
44224
  /***/ },
44225
- /* 291 */
 
44226
  /***/ function(module, exports, __webpack_require__) {
44227
 
44228
  var map = {
44229
- "./af": 292,
44230
- "./af.js": 292,
44231
- "./ar": 293,
44232
- "./ar-dz": 294,
44233
- "./ar-dz.js": 294,
44234
- "./ar-ly": 295,
44235
- "./ar-ly.js": 295,
44236
- "./ar-ma": 296,
44237
- "./ar-ma.js": 296,
44238
- "./ar-sa": 297,
44239
- "./ar-sa.js": 297,
44240
- "./ar-tn": 298,
44241
- "./ar-tn.js": 298,
44242
- "./ar.js": 293,
44243
- "./az": 299,
44244
- "./az.js": 299,
44245
- "./be": 300,
44246
- "./be.js": 300,
44247
- "./bg": 301,
44248
- "./bg.js": 301,
44249
- "./bn": 302,
44250
- "./bn.js": 302,
44251
- "./bo": 303,
44252
- "./bo.js": 303,
44253
- "./br": 304,
44254
- "./br.js": 304,
44255
- "./bs": 305,
44256
- "./bs.js": 305,
44257
- "./ca": 306,
44258
- "./ca.js": 306,
44259
- "./cs": 307,
44260
- "./cs.js": 307,
44261
- "./cv": 308,
44262
- "./cv.js": 308,
44263
- "./cy": 309,
44264
- "./cy.js": 309,
44265
- "./da": 310,
44266
- "./da.js": 310,
44267
- "./de": 311,
44268
- "./de-at": 312,
44269
- "./de-at.js": 312,
44270
- "./de.js": 311,
44271
- "./dv": 313,
44272
- "./dv.js": 313,
44273
- "./el": 314,
44274
- "./el.js": 314,
44275
- "./en-au": 315,
44276
- "./en-au.js": 315,
44277
- "./en-ca": 316,
44278
- "./en-ca.js": 316,
44279
- "./en-gb": 317,
44280
- "./en-gb.js": 317,
44281
- "./en-ie": 318,
44282
- "./en-ie.js": 318,
44283
- "./en-nz": 319,
44284
- "./en-nz.js": 319,
44285
- "./eo": 320,
44286
- "./eo.js": 320,
44287
- "./es": 321,
44288
- "./es-do": 322,
44289
- "./es-do.js": 322,
44290
- "./es.js": 321,
44291
- "./et": 323,
44292
- "./et.js": 323,
44293
- "./eu": 324,
44294
- "./eu.js": 324,
44295
- "./fa": 325,
44296
- "./fa.js": 325,
44297
- "./fi": 326,
44298
- "./fi.js": 326,
44299
- "./fo": 327,
44300
- "./fo.js": 327,
44301
- "./fr": 328,
44302
- "./fr-ca": 329,
44303
- "./fr-ca.js": 329,
44304
- "./fr-ch": 330,
44305
- "./fr-ch.js": 330,
44306
- "./fr.js": 328,
44307
- "./fy": 331,
44308
- "./fy.js": 331,
44309
- "./gd": 332,
44310
- "./gd.js": 332,
44311
- "./gl": 333,
44312
- "./gl.js": 333,
44313
- "./he": 334,
44314
- "./he.js": 334,
44315
- "./hi": 335,
44316
- "./hi.js": 335,
44317
- "./hr": 336,
44318
- "./hr.js": 336,
44319
- "./hu": 337,
44320
- "./hu.js": 337,
44321
- "./hy-am": 338,
44322
- "./hy-am.js": 338,
44323
- "./id": 339,
44324
- "./id.js": 339,
44325
- "./is": 340,
44326
- "./is.js": 340,
44327
- "./it": 341,
44328
- "./it.js": 341,
44329
- "./ja": 342,
44330
- "./ja.js": 342,
44331
- "./jv": 343,
44332
- "./jv.js": 343,
44333
- "./ka": 344,
44334
- "./ka.js": 344,
44335
- "./kk": 345,
44336
- "./kk.js": 345,
44337
- "./km": 346,
44338
- "./km.js": 346,
44339
- "./ko": 347,
44340
- "./ko.js": 347,
44341
- "./ky": 348,
44342
- "./ky.js": 348,
44343
- "./lb": 349,
44344
- "./lb.js": 349,
44345
- "./lo": 350,
44346
- "./lo.js": 350,
44347
- "./lt": 351,
44348
- "./lt.js": 351,
44349
- "./lv": 352,
44350
- "./lv.js": 352,
44351
- "./me": 353,
44352
- "./me.js": 353,
44353
- "./mi": 354,
44354
- "./mi.js": 354,
44355
- "./mk": 355,
44356
- "./mk.js": 355,
44357
- "./ml": 356,
44358
- "./ml.js": 356,
44359
- "./mr": 357,
44360
- "./mr.js": 357,
44361
- "./ms": 358,
44362
- "./ms-my": 359,
44363
- "./ms-my.js": 359,
44364
- "./ms.js": 358,
44365
- "./my": 360,
44366
- "./my.js": 360,
44367
- "./nb": 361,
44368
- "./nb.js": 361,
44369
- "./ne": 362,
44370
- "./ne.js": 362,
44371
- "./nl": 363,
44372
- "./nl-be": 364,
44373
- "./nl-be.js": 364,
44374
- "./nl.js": 363,
44375
- "./nn": 365,
44376
- "./nn.js": 365,
44377
- "./pa-in": 366,
44378
- "./pa-in.js": 366,
44379
- "./pl": 367,
44380
- "./pl.js": 367,
44381
- "./pt": 368,
44382
- "./pt-br": 369,
44383
- "./pt-br.js": 369,
44384
- "./pt.js": 368,
44385
- "./ro": 370,
44386
- "./ro.js": 370,
44387
- "./ru": 371,
44388
- "./ru.js": 371,
44389
- "./se": 372,
44390
- "./se.js": 372,
44391
- "./si": 373,
44392
- "./si.js": 373,
44393
- "./sk": 374,
44394
- "./sk.js": 374,
44395
- "./sl": 375,
44396
- "./sl.js": 375,
44397
- "./sq": 376,
44398
- "./sq.js": 376,
44399
- "./sr": 377,
44400
- "./sr-cyrl": 378,
44401
- "./sr-cyrl.js": 378,
44402
- "./sr.js": 377,
44403
- "./ss": 379,
44404
- "./ss.js": 379,
44405
- "./sv": 380,
44406
- "./sv.js": 380,
44407
- "./sw": 381,
44408
- "./sw.js": 381,
44409
- "./ta": 382,
44410
- "./ta.js": 382,
44411
- "./te": 383,
44412
- "./te.js": 383,
44413
- "./tet": 384,
44414
- "./tet.js": 384,
44415
- "./th": 385,
44416
- "./th.js": 385,
44417
- "./tl-ph": 386,
44418
- "./tl-ph.js": 386,
44419
- "./tlh": 387,
44420
- "./tlh.js": 387,
44421
- "./tr": 388,
44422
- "./tr.js": 388,
44423
- "./tzl": 389,
44424
- "./tzl.js": 389,
44425
- "./tzm": 390,
44426
- "./tzm-latn": 391,
44427
- "./tzm-latn.js": 391,
44428
- "./tzm.js": 390,
44429
- "./uk": 392,
44430
- "./uk.js": 392,
44431
- "./uz": 393,
44432
- "./uz.js": 393,
44433
- "./vi": 394,
44434
- "./vi.js": 394,
44435
- "./x-pseudo": 395,
44436
- "./x-pseudo.js": 395,
44437
- "./yo": 396,
44438
- "./yo.js": 396,
44439
- "./zh-cn": 397,
44440
- "./zh-cn.js": 397,
44441
- "./zh-hk": 398,
44442
- "./zh-hk.js": 398,
44443
- "./zh-tw": 399,
44444
- "./zh-tw.js": 399
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44445
  };
44446
  function webpackContext(req) {
44447
  return __webpack_require__(webpackContextResolve(req));
@@ -44454,11 +18187,11 @@ webpackJsonp([0],[
44454
  };
44455
  webpackContext.resolve = webpackContextResolve;
44456
  module.exports = webpackContext;
44457
- webpackContext.id = 291;
44458
 
44459
 
44460
  /***/ },
44461
- /* 292 */
44462
  /***/ function(module, exports, __webpack_require__) {
44463
 
44464
  //! moment.js locale configuration
@@ -44466,7 +18199,7 @@ webpackJsonp([0],[
44466
  //! author : Werner Mollentze : https://github.com/wernerm
44467
 
44468
  ;(function (global, factory) {
44469
- true ? factory(__webpack_require__(289)) :
44470
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
44471
  factory(global.moment)
44472
  }(this, (function (moment) { 'use strict';
@@ -44520,7 +18253,7 @@ webpackJsonp([0],[
44520
  y : '\'n jaar',
44521
  yy : '%d jaar'
44522
  },
44523
- ordinalParse: /\d{1,2}(ste|de)/,
44524
  ordinal : function (number) {
44525
  return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
44526
  },
@@ -44536,7 +18269,7 @@ webpackJsonp([0],[
44536
 
44537
 
44538
  /***/ },
44539
- /* 293 */
44540
  /***/ function(module, exports, __webpack_require__) {
44541
 
44542
  //! moment.js locale configuration
@@ -44546,7 +18279,7 @@ webpackJsonp([0],[
44546
  //! author : forabi https://github.com/forabi
44547
 
44548
  ;(function (global, factory) {
44549
- true ? factory(__webpack_require__(289)) :
44550
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
44551
  factory(global.moment)
44552
  }(this, (function (moment) { 'use strict';
@@ -44683,7 +18416,7 @@ webpackJsonp([0],[
44683
 
44684
 
44685
  /***/ },
44686
- /* 294 */
44687
  /***/ function(module, exports, __webpack_require__) {
44688
 
44689
  //! moment.js locale configuration
@@ -44691,7 +18424,7 @@ webpackJsonp([0],[
44691
  //! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
44692
 
44693
  ;(function (global, factory) {
44694
- true ? factory(__webpack_require__(289)) :
44695
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
44696
  factory(global.moment)
44697
  }(this, (function (moment) { 'use strict';
@@ -44747,7 +18480,71 @@ webpackJsonp([0],[
44747
 
44748
 
44749
  /***/ },
44750
- /* 295 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44751
  /***/ function(module, exports, __webpack_require__) {
44752
 
44753
  //! moment.js locale configuration
@@ -44755,7 +18552,7 @@ webpackJsonp([0],[
44755
  //! author : Ali Hmer: https://github.com/kikoanis
44756
 
44757
  ;(function (global, factory) {
44758
- true ? factory(__webpack_require__(289)) :
44759
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
44760
  factory(global.moment)
44761
  }(this, (function (moment) { 'use strict';
@@ -44878,7 +18675,7 @@ webpackJsonp([0],[
44878
 
44879
 
44880
  /***/ },
44881
- /* 296 */
44882
  /***/ function(module, exports, __webpack_require__) {
44883
 
44884
  //! moment.js locale configuration
@@ -44887,7 +18684,7 @@ webpackJsonp([0],[
44887
  //! author : Abdel Said : https://github.com/abdelsaid
44888
 
44889
  ;(function (global, factory) {
44890
- true ? factory(__webpack_require__(289)) :
44891
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
44892
  factory(global.moment)
44893
  }(this, (function (moment) { 'use strict';
@@ -44943,7 +18740,7 @@ webpackJsonp([0],[
44943
 
44944
 
44945
  /***/ },
44946
- /* 297 */
44947
  /***/ function(module, exports, __webpack_require__) {
44948
 
44949
  //! moment.js locale configuration
@@ -44951,7 +18748,7 @@ webpackJsonp([0],[
44951
  //! author : Suhail Alkowaileet : https://github.com/xsoh
44952
 
44953
  ;(function (global, factory) {
44954
- true ? factory(__webpack_require__(289)) :
44955
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
44956
  factory(global.moment)
44957
  }(this, (function (moment) { 'use strict';
@@ -45053,7 +18850,7 @@ webpackJsonp([0],[
45053
 
45054
 
45055
  /***/ },
45056
- /* 298 */
45057
  /***/ function(module, exports, __webpack_require__) {
45058
 
45059
  //! moment.js locale configuration
@@ -45061,7 +18858,7 @@ webpackJsonp([0],[
45061
  //! author : Nader Toukabri : https://github.com/naderio
45062
 
45063
  ;(function (global, factory) {
45064
- true ? factory(__webpack_require__(289)) :
45065
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45066
  factory(global.moment)
45067
  }(this, (function (moment) { 'use strict';
@@ -45117,7 +18914,7 @@ webpackJsonp([0],[
45117
 
45118
 
45119
  /***/ },
45120
- /* 299 */
45121
  /***/ function(module, exports, __webpack_require__) {
45122
 
45123
  //! moment.js locale configuration
@@ -45125,7 +18922,7 @@ webpackJsonp([0],[
45125
  //! author : topchiyev : https://github.com/topchiyev
45126
 
45127
  ;(function (global, factory) {
45128
- true ? factory(__webpack_require__(289)) :
45129
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45130
  factory(global.moment)
45131
  }(this, (function (moment) { 'use strict';
@@ -45205,7 +19002,7 @@ webpackJsonp([0],[
45205
  return 'axşam';
45206
  }
45207
  },
45208
- ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
45209
  ordinal : function (number) {
45210
  if (number === 0) { // special case for zero
45211
  return number + '-ıncı';
@@ -45227,7 +19024,7 @@ webpackJsonp([0],[
45227
 
45228
 
45229
  /***/ },
45230
- /* 300 */
45231
  /***/ function(module, exports, __webpack_require__) {
45232
 
45233
  //! moment.js locale configuration
@@ -45237,7 +19034,7 @@ webpackJsonp([0],[
45237
  //! Author : Menelion Elensúle : https://github.com/Oire
45238
 
45239
  ;(function (global, factory) {
45240
- true ? factory(__webpack_require__(289)) :
45241
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45242
  factory(global.moment)
45243
  }(this, (function (moment) { 'use strict';
@@ -45339,7 +19136,7 @@ webpackJsonp([0],[
45339
  return 'вечара';
45340
  }
45341
  },
45342
- ordinalParse: /\d{1,2}-(і|ы|га)/,
45343
  ordinal: function (number, period) {
45344
  switch (period) {
45345
  case 'M':
@@ -45366,7 +19163,7 @@ webpackJsonp([0],[
45366
 
45367
 
45368
  /***/ },
45369
- /* 301 */
45370
  /***/ function(module, exports, __webpack_require__) {
45371
 
45372
  //! moment.js locale configuration
@@ -45374,7 +19171,7 @@ webpackJsonp([0],[
45374
  //! author : Krasen Borisov : https://github.com/kraz
45375
 
45376
  ;(function (global, factory) {
45377
- true ? factory(__webpack_require__(289)) :
45378
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45379
  factory(global.moment)
45380
  }(this, (function (moment) { 'use strict';
@@ -45429,7 +19226,7 @@ webpackJsonp([0],[
45429
  y : 'година',
45430
  yy : '%d години'
45431
  },
45432
- ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
45433
  ordinal : function (number) {
45434
  var lastDigit = number % 10,
45435
  last2Digits = number % 100;
@@ -45461,7 +19258,7 @@ webpackJsonp([0],[
45461
 
45462
 
45463
  /***/ },
45464
- /* 302 */
45465
  /***/ function(module, exports, __webpack_require__) {
45466
 
45467
  //! moment.js locale configuration
@@ -45469,7 +19266,7 @@ webpackJsonp([0],[
45469
  //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
45470
 
45471
  ;(function (global, factory) {
45472
- true ? factory(__webpack_require__(289)) :
45473
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45474
  factory(global.moment)
45475
  }(this, (function (moment) { 'use strict';
@@ -45585,7 +19382,7 @@ webpackJsonp([0],[
45585
 
45586
 
45587
  /***/ },
45588
- /* 303 */
45589
  /***/ function(module, exports, __webpack_require__) {
45590
 
45591
  //! moment.js locale configuration
@@ -45593,7 +19390,7 @@ webpackJsonp([0],[
45593
  //! author : Thupten N. Chakrishar : https://github.com/vajradog
45594
 
45595
  ;(function (global, factory) {
45596
- true ? factory(__webpack_require__(289)) :
45597
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45598
  factory(global.moment)
45599
  }(this, (function (moment) { 'use strict';
@@ -45709,7 +19506,7 @@ webpackJsonp([0],[
45709
 
45710
 
45711
  /***/ },
45712
- /* 304 */
45713
  /***/ function(module, exports, __webpack_require__) {
45714
 
45715
  //! moment.js locale configuration
@@ -45717,7 +19514,7 @@ webpackJsonp([0],[
45717
  //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
45718
 
45719
  ;(function (global, factory) {
45720
- true ? factory(__webpack_require__(289)) :
45721
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45722
  factory(global.moment)
45723
  }(this, (function (moment) { 'use strict';
@@ -45805,7 +19602,7 @@ webpackJsonp([0],[
45805
  y : 'ur bloaz',
45806
  yy : specialMutationForYears
45807
  },
45808
- ordinalParse: /\d{1,2}(añ|vet)/,
45809
  ordinal : function (number) {
45810
  var output = (number === 1) ? 'añ' : 'vet';
45811
  return number + output;
@@ -45822,7 +19619,7 @@ webpackJsonp([0],[
45822
 
45823
 
45824
  /***/ },
45825
- /* 305 */
45826
  /***/ function(module, exports, __webpack_require__) {
45827
 
45828
  //! moment.js locale configuration
@@ -45831,7 +19628,7 @@ webpackJsonp([0],[
45831
  //! based on (hr) translation by Bojan Marković
45832
 
45833
  ;(function (global, factory) {
45834
- true ? factory(__webpack_require__(289)) :
45835
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45836
  factory(global.moment)
45837
  }(this, (function (moment) { 'use strict';
@@ -45956,7 +19753,7 @@ webpackJsonp([0],[
45956
  y : 'godinu',
45957
  yy : translate
45958
  },
45959
- ordinalParse: /\d{1,2}\./,
45960
  ordinal : '%d.',
45961
  week : {
45962
  dow : 1, // Monday is the first day of the week.
@@ -45970,7 +19767,7 @@ webpackJsonp([0],[
45970
 
45971
 
45972
  /***/ },
45973
- /* 306 */
45974
  /***/ function(module, exports, __webpack_require__) {
45975
 
45976
  //! moment.js locale configuration
@@ -45978,15 +19775,19 @@ webpackJsonp([0],[
45978
  //! author : Juan G. Hurtado : https://github.com/juanghurtado
45979
 
45980
  ;(function (global, factory) {
45981
- true ? factory(__webpack_require__(289)) :
45982
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
45983
  factory(global.moment)
45984
  }(this, (function (moment) { 'use strict';
45985
 
45986
 
45987
  var ca = moment.defineLocale('ca', {
45988
- months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
45989
- monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),
 
 
 
 
45990
  monthsParseExact : true,
45991
  weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
45992
  weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
@@ -45996,9 +19797,12 @@ webpackJsonp([0],[
45996
  LT : 'H:mm',
45997
  LTS : 'H:mm:ss',
45998
  L : 'DD/MM/YYYY',
45999
- LL : 'D MMMM YYYY',
46000
- LLL : 'D MMMM YYYY H:mm',
46001
- LLLL : 'dddd D MMMM YYYY H:mm'
 
 
 
46002
  },
46003
  calendar : {
46004
  sameDay : function () {
@@ -46033,7 +19837,7 @@ webpackJsonp([0],[
46033
  y : 'un any',
46034
  yy : '%d anys'
46035
  },
46036
- ordinalParse: /\d{1,2}(r|n|t|è|a)/,
46037
  ordinal : function (number, period) {
46038
  var output = (number === 1) ? 'r' :
46039
  (number === 2) ? 'n' :
@@ -46056,7 +19860,7 @@ webpackJsonp([0],[
46056
 
46057
 
46058
  /***/ },
46059
- /* 307 */
46060
  /***/ function(module, exports, __webpack_require__) {
46061
 
46062
  //! moment.js locale configuration
@@ -46064,7 +19868,7 @@ webpackJsonp([0],[
46064
  //! author : petrbela : https://github.com/petrbela
46065
 
46066
  ;(function (global, factory) {
46067
- true ? factory(__webpack_require__(289)) :
46068
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46069
  factory(global.moment)
46070
  }(this, (function (moment) { 'use strict';
@@ -46219,7 +20023,7 @@ webpackJsonp([0],[
46219
  y : translate,
46220
  yy : translate
46221
  },
46222
- ordinalParse : /\d{1,2}\./,
46223
  ordinal : '%d.',
46224
  week : {
46225
  dow : 1, // Monday is the first day of the week.
@@ -46233,7 +20037,7 @@ webpackJsonp([0],[
46233
 
46234
 
46235
  /***/ },
46236
- /* 308 */
46237
  /***/ function(module, exports, __webpack_require__) {
46238
 
46239
  //! moment.js locale configuration
@@ -46241,7 +20045,7 @@ webpackJsonp([0],[
46241
  //! author : Anatoly Mironov : https://github.com/mirontoli
46242
 
46243
  ;(function (global, factory) {
46244
- true ? factory(__webpack_require__(289)) :
46245
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46246
  factory(global.moment)
46247
  }(this, (function (moment) { 'use strict';
@@ -46287,7 +20091,7 @@ webpackJsonp([0],[
46287
  y : 'пӗр ҫул',
46288
  yy : '%d ҫул'
46289
  },
46290
- ordinalParse: /\d{1,2}-мӗш/,
46291
  ordinal : '%d-мӗш',
46292
  week : {
46293
  dow : 1, // Monday is the first day of the week.
@@ -46301,7 +20105,7 @@ webpackJsonp([0],[
46301
 
46302
 
46303
  /***/ },
46304
- /* 309 */
46305
  /***/ function(module, exports, __webpack_require__) {
46306
 
46307
  //! moment.js locale configuration
@@ -46310,7 +20114,7 @@ webpackJsonp([0],[
46310
  //! author : https://github.com/ryangreaves
46311
 
46312
  ;(function (global, factory) {
46313
- true ? factory(__webpack_require__(289)) :
46314
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46315
  factory(global.moment)
46316
  }(this, (function (moment) { 'use strict';
@@ -46355,7 +20159,7 @@ webpackJsonp([0],[
46355
  y: 'blwyddyn',
46356
  yy: '%d flynedd'
46357
  },
46358
- ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
46359
  // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
46360
  ordinal: function (number) {
46361
  var b = number,
@@ -46387,7 +20191,7 @@ webpackJsonp([0],[
46387
 
46388
 
46389
  /***/ },
46390
- /* 310 */
46391
  /***/ function(module, exports, __webpack_require__) {
46392
 
46393
  //! moment.js locale configuration
@@ -46395,7 +20199,7 @@ webpackJsonp([0],[
46395
  //! author : Ulrik Nielsen : https://github.com/mrbase
46396
 
46397
  ;(function (global, factory) {
46398
- true ? factory(__webpack_require__(289)) :
46399
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46400
  factory(global.moment)
46401
  }(this, (function (moment) { 'use strict';
@@ -46413,14 +20217,14 @@ webpackJsonp([0],[
46413
  L : 'DD/MM/YYYY',
46414
  LL : 'D. MMMM YYYY',
46415
  LLL : 'D. MMMM YYYY HH:mm',
46416
- LLLL : 'dddd [d.] D. MMMM YYYY HH:mm'
46417
  },
46418
  calendar : {
46419
- sameDay : '[I dag kl.] LT',
46420
- nextDay : '[I morgen kl.] LT',
46421
- nextWeek : 'dddd [kl.] LT',
46422
- lastDay : '[I går kl.] LT',
46423
- lastWeek : '[sidste] dddd [kl] LT',
46424
  sameElse : 'L'
46425
  },
46426
  relativeTime : {
@@ -46438,7 +20242,7 @@ webpackJsonp([0],[
46438
  y : 'et år',
46439
  yy : '%d år'
46440
  },
46441
- ordinalParse: /\d{1,2}\./,
46442
  ordinal : '%d.',
46443
  week : {
46444
  dow : 1, // Monday is the first day of the week.
@@ -46452,7 +20256,7 @@ webpackJsonp([0],[
46452
 
46453
 
46454
  /***/ },
46455
- /* 311 */
46456
  /***/ function(module, exports, __webpack_require__) {
46457
 
46458
  //! moment.js locale configuration
@@ -46462,7 +20266,7 @@ webpackJsonp([0],[
46462
  //! author : Mikolaj Dadela : https://github.com/mik01aj
46463
 
46464
  ;(function (global, factory) {
46465
- true ? factory(__webpack_require__(289)) :
46466
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46467
  factory(global.moment)
46468
  }(this, (function (moment) { 'use strict';
@@ -46521,7 +20325,7 @@ webpackJsonp([0],[
46521
  y : processRelativeTime,
46522
  yy : processRelativeTime
46523
  },
46524
- ordinalParse: /\d{1,2}\./,
46525
  ordinal : '%d.',
46526
  week : {
46527
  dow : 1, // Monday is the first day of the week.
@@ -46535,7 +20339,7 @@ webpackJsonp([0],[
46535
 
46536
 
46537
  /***/ },
46538
- /* 312 */
46539
  /***/ function(module, exports, __webpack_require__) {
46540
 
46541
  //! moment.js locale configuration
@@ -46546,7 +20350,7 @@ webpackJsonp([0],[
46546
  //! author : Mikolaj Dadela : https://github.com/mik01aj
46547
 
46548
  ;(function (global, factory) {
46549
- true ? factory(__webpack_require__(289)) :
46550
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46551
  factory(global.moment)
46552
  }(this, (function (moment) { 'use strict';
@@ -46605,7 +20409,7 @@ webpackJsonp([0],[
46605
  y : processRelativeTime,
46606
  yy : processRelativeTime
46607
  },
46608
- ordinalParse: /\d{1,2}\./,
46609
  ordinal : '%d.',
46610
  week : {
46611
  dow : 1, // Monday is the first day of the week.
@@ -46619,7 +20423,90 @@ webpackJsonp([0],[
46619
 
46620
 
46621
  /***/ },
46622
- /* 313 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46623
  /***/ function(module, exports, __webpack_require__) {
46624
 
46625
  //! moment.js locale configuration
@@ -46627,7 +20514,7 @@ webpackJsonp([0],[
46627
  //! author : Jawish Hameed : https://github.com/jawish
46628
 
46629
  ;(function (global, factory) {
46630
- true ? factory(__webpack_require__(289)) :
46631
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46632
  factory(global.moment)
46633
  }(this, (function (moment) { 'use strict';
@@ -46724,7 +20611,7 @@ webpackJsonp([0],[
46724
 
46725
 
46726
  /***/ },
46727
- /* 314 */
46728
  /***/ function(module, exports, __webpack_require__) {
46729
 
46730
  //! moment.js locale configuration
@@ -46732,7 +20619,7 @@ webpackJsonp([0],[
46732
  //! author : Aggelos Karalias : https://github.com/mehiel
46733
 
46734
  ;(function (global, factory) {
46735
- true ? factory(__webpack_require__(289)) :
46736
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46737
  factory(global.moment)
46738
  }(this, (function (moment) { 'use strict';
@@ -46746,7 +20633,9 @@ webpackJsonp([0],[
46746
  monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
46747
  monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
46748
  months : function (momentToFormat, format) {
46749
- if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
 
 
46750
  return this._monthsGenitiveEl[momentToFormat.month()];
46751
  } else {
46752
  return this._monthsNominativeEl[momentToFormat.month()];
@@ -46813,7 +20702,7 @@ webpackJsonp([0],[
46813
  y : 'ένας χρόνος',
46814
  yy : '%d χρόνια'
46815
  },
46816
- ordinalParse: /\d{1,2}η/,
46817
  ordinal: '%dη',
46818
  week : {
46819
  dow : 1, // Monday is the first day of the week.
@@ -46827,7 +20716,7 @@ webpackJsonp([0],[
46827
 
46828
 
46829
  /***/ },
46830
- /* 315 */
46831
  /***/ function(module, exports, __webpack_require__) {
46832
 
46833
  //! moment.js locale configuration
@@ -46835,7 +20724,7 @@ webpackJsonp([0],[
46835
  //! author : Jared Morse : https://github.com/jarcoal
46836
 
46837
  ;(function (global, factory) {
46838
- true ? factory(__webpack_require__(289)) :
46839
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46840
  factory(global.moment)
46841
  }(this, (function (moment) { 'use strict';
@@ -46878,7 +20767,7 @@ webpackJsonp([0],[
46878
  y : 'a year',
46879
  yy : '%d years'
46880
  },
46881
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
46882
  ordinal : function (number) {
46883
  var b = number % 10,
46884
  output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -46899,7 +20788,7 @@ webpackJsonp([0],[
46899
 
46900
 
46901
  /***/ },
46902
- /* 316 */
46903
  /***/ function(module, exports, __webpack_require__) {
46904
 
46905
  //! moment.js locale configuration
@@ -46907,7 +20796,7 @@ webpackJsonp([0],[
46907
  //! author : Jonathan Abourbih : https://github.com/jonbca
46908
 
46909
  ;(function (global, factory) {
46910
- true ? factory(__webpack_require__(289)) :
46911
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46912
  factory(global.moment)
46913
  }(this, (function (moment) { 'use strict';
@@ -46950,7 +20839,7 @@ webpackJsonp([0],[
46950
  y : 'a year',
46951
  yy : '%d years'
46952
  },
46953
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
46954
  ordinal : function (number) {
46955
  var b = number % 10,
46956
  output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -46967,7 +20856,7 @@ webpackJsonp([0],[
46967
 
46968
 
46969
  /***/ },
46970
- /* 317 */
46971
  /***/ function(module, exports, __webpack_require__) {
46972
 
46973
  //! moment.js locale configuration
@@ -46975,7 +20864,7 @@ webpackJsonp([0],[
46975
  //! author : Chris Gedrim : https://github.com/chrisgedrim
46976
 
46977
  ;(function (global, factory) {
46978
- true ? factory(__webpack_require__(289)) :
46979
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
46980
  factory(global.moment)
46981
  }(this, (function (moment) { 'use strict';
@@ -47018,7 +20907,7 @@ webpackJsonp([0],[
47018
  y : 'a year',
47019
  yy : '%d years'
47020
  },
47021
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
47022
  ordinal : function (number) {
47023
  var b = number % 10,
47024
  output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -47039,7 +20928,7 @@ webpackJsonp([0],[
47039
 
47040
 
47041
  /***/ },
47042
- /* 318 */
47043
  /***/ function(module, exports, __webpack_require__) {
47044
 
47045
  //! moment.js locale configuration
@@ -47047,7 +20936,7 @@ webpackJsonp([0],[
47047
  //! author : Chris Cartlidge : https://github.com/chriscartlidge
47048
 
47049
  ;(function (global, factory) {
47050
- true ? factory(__webpack_require__(289)) :
47051
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47052
  factory(global.moment)
47053
  }(this, (function (moment) { 'use strict';
@@ -47090,7 +20979,7 @@ webpackJsonp([0],[
47090
  y : 'a year',
47091
  yy : '%d years'
47092
  },
47093
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
47094
  ordinal : function (number) {
47095
  var b = number % 10,
47096
  output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -47111,7 +21000,7 @@ webpackJsonp([0],[
47111
 
47112
 
47113
  /***/ },
47114
- /* 319 */
47115
  /***/ function(module, exports, __webpack_require__) {
47116
 
47117
  //! moment.js locale configuration
@@ -47119,7 +21008,7 @@ webpackJsonp([0],[
47119
  //! author : Luke McGregor : https://github.com/lukemcgregor
47120
 
47121
  ;(function (global, factory) {
47122
- true ? factory(__webpack_require__(289)) :
47123
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47124
  factory(global.moment)
47125
  }(this, (function (moment) { 'use strict';
@@ -47162,7 +21051,7 @@ webpackJsonp([0],[
47162
  y : 'a year',
47163
  yy : '%d years'
47164
  },
47165
- ordinalParse: /\d{1,2}(st|nd|rd|th)/,
47166
  ordinal : function (number) {
47167
  var b = number % 10,
47168
  output = (~~(number % 100 / 10) === 1) ? 'th' :
@@ -47183,17 +21072,17 @@ webpackJsonp([0],[
47183
 
47184
 
47185
  /***/ },
47186
- /* 320 */
47187
  /***/ function(module, exports, __webpack_require__) {
47188
 
47189
  //! moment.js locale configuration
47190
  //! locale : Esperanto [eo]
47191
  //! author : Colin Dean : https://github.com/colindean
47192
- //! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
47193
- //! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
47194
 
47195
  ;(function (global, factory) {
47196
- true ? factory(__webpack_require__(289)) :
47197
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47198
  factory(global.moment)
47199
  }(this, (function (moment) { 'use strict';
@@ -47202,16 +21091,16 @@ webpackJsonp([0],[
47202
  var eo = moment.defineLocale('eo', {
47203
  months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
47204
  monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
47205
- weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),
47206
- weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'),
47207
- weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'),
47208
  longDateFormat : {
47209
  LT : 'HH:mm',
47210
  LTS : 'HH:mm:ss',
47211
  L : 'YYYY-MM-DD',
47212
- LL : 'D[-an de] MMMM, YYYY',
47213
- LLL : 'D[-an de] MMMM, YYYY HH:mm',
47214
- LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm'
47215
  },
47216
  meridiemParse: /[ap]\.t\.m/i,
47217
  isPM: function (input) {
@@ -47233,7 +21122,7 @@ webpackJsonp([0],[
47233
  sameElse : 'L'
47234
  },
47235
  relativeTime : {
47236
- future : 'je %s',
47237
  past : 'antaŭ %s',
47238
  s : 'sekundoj',
47239
  m : 'minuto',
@@ -47247,7 +21136,7 @@ webpackJsonp([0],[
47247
  y : 'jaro',
47248
  yy : '%d jaroj'
47249
  },
47250
- ordinalParse: /\d{1,2}a/,
47251
  ordinal : '%da',
47252
  week : {
47253
  dow : 1, // Monday is the first day of the week.
@@ -47261,7 +21150,7 @@ webpackJsonp([0],[
47261
 
47262
 
47263
  /***/ },
47264
- /* 321 */
47265
  /***/ function(module, exports, __webpack_require__) {
47266
 
47267
  //! moment.js locale configuration
@@ -47269,7 +21158,7 @@ webpackJsonp([0],[
47269
  //! author : Julio Napurí : https://github.com/julionc
47270
 
47271
  ;(function (global, factory) {
47272
- true ? factory(__webpack_require__(289)) :
47273
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47274
  factory(global.moment)
47275
  }(this, (function (moment) { 'use strict';
@@ -47281,7 +21170,9 @@ webpackJsonp([0],[
47281
  var es = moment.defineLocale('es', {
47282
  months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
47283
  monthsShort : function (m, format) {
47284
- if (/-MMM-/.test(format)) {
 
 
47285
  return monthsShort[m.month()];
47286
  } else {
47287
  return monthsShortDot[m.month()];
@@ -47333,7 +21224,7 @@ webpackJsonp([0],[
47333
  y : 'un año',
47334
  yy : '%d años'
47335
  },
47336
- ordinalParse : /\d{1,2}º/,
47337
  ordinal : '%dº',
47338
  week : {
47339
  dow : 1, // Monday is the first day of the week.
@@ -47347,14 +21238,14 @@ webpackJsonp([0],[
47347
 
47348
 
47349
  /***/ },
47350
- /* 322 */
47351
  /***/ function(module, exports, __webpack_require__) {
47352
 
47353
  //! moment.js locale configuration
47354
  //! locale : Spanish (Dominican Republic) [es-do]
47355
 
47356
  ;(function (global, factory) {
47357
- true ? factory(__webpack_require__(289)) :
47358
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47359
  factory(global.moment)
47360
  }(this, (function (moment) { 'use strict';
@@ -47366,7 +21257,9 @@ webpackJsonp([0],[
47366
  var esDo = moment.defineLocale('es-do', {
47367
  months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
47368
  monthsShort : function (m, format) {
47369
- if (/-MMM-/.test(format)) {
 
 
47370
  return monthsShort[m.month()];
47371
  } else {
47372
  return monthsShortDot[m.month()];
@@ -47418,7 +21311,7 @@ webpackJsonp([0],[
47418
  y : 'un año',
47419
  yy : '%d años'
47420
  },
47421
- ordinalParse : /\d{1,2}º/,
47422
  ordinal : '%dº',
47423
  week : {
47424
  dow : 1, // Monday is the first day of the week.
@@ -47432,7 +21325,7 @@ webpackJsonp([0],[
47432
 
47433
 
47434
  /***/ },
47435
- /* 323 */
47436
  /***/ function(module, exports, __webpack_require__) {
47437
 
47438
  //! moment.js locale configuration
@@ -47441,7 +21334,7 @@ webpackJsonp([0],[
47441
  //! improvements : Illimar Tambek : https://github.com/ragulka
47442
 
47443
  ;(function (global, factory) {
47444
- true ? factory(__webpack_require__(289)) :
47445
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47446
  factory(global.moment)
47447
  }(this, (function (moment) { 'use strict';
@@ -47503,7 +21396,7 @@ webpackJsonp([0],[
47503
  y : processRelativeTime,
47504
  yy : processRelativeTime
47505
  },
47506
- ordinalParse: /\d{1,2}\./,
47507
  ordinal : '%d.',
47508
  week : {
47509
  dow : 1, // Monday is the first day of the week.
@@ -47517,7 +21410,7 @@ webpackJsonp([0],[
47517
 
47518
 
47519
  /***/ },
47520
- /* 324 */
47521
  /***/ function(module, exports, __webpack_require__) {
47522
 
47523
  //! moment.js locale configuration
@@ -47525,7 +21418,7 @@ webpackJsonp([0],[
47525
  //! author : Eneko Illarramendi : https://github.com/eillarra
47526
 
47527
  ;(function (global, factory) {
47528
- true ? factory(__webpack_require__(289)) :
47529
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47530
  factory(global.moment)
47531
  }(this, (function (moment) { 'use strict';
@@ -47574,7 +21467,7 @@ webpackJsonp([0],[
47574
  y : 'urte bat',
47575
  yy : '%d urte'
47576
  },
47577
- ordinalParse: /\d{1,2}\./,
47578
  ordinal : '%d.',
47579
  week : {
47580
  dow : 1, // Monday is the first day of the week.
@@ -47588,7 +21481,7 @@ webpackJsonp([0],[
47588
 
47589
 
47590
  /***/ },
47591
- /* 325 */
47592
  /***/ function(module, exports, __webpack_require__) {
47593
 
47594
  //! moment.js locale configuration
@@ -47596,7 +21489,7 @@ webpackJsonp([0],[
47596
  //! author : Ebrahim Byagowi : https://github.com/ebraminio
47597
 
47598
  ;(function (global, factory) {
47599
- true ? factory(__webpack_require__(289)) :
47600
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47601
  factory(global.moment)
47602
  }(this, (function (moment) { 'use strict';
@@ -47664,7 +21557,7 @@ webpackJsonp([0],[
47664
  relativeTime : {
47665
  future : 'در %s',
47666
  past : '%s پیش',
47667
- s : 'چندین ثانیه',
47668
  m : 'یک دقیقه',
47669
  mm : '%d دقیقه',
47670
  h : 'یک ساعت',
@@ -47686,7 +21579,7 @@ webpackJsonp([0],[
47686
  return symbolMap[match];
47687
  }).replace(/,/g, '،');
47688
  },
47689
- ordinalParse: /\d{1,2}م/,
47690
  ordinal : '%dم',
47691
  week : {
47692
  dow : 6, // Saturday is the first day of the week.
@@ -47700,7 +21593,7 @@ webpackJsonp([0],[
47700
 
47701
 
47702
  /***/ },
47703
- /* 326 */
47704
  /***/ function(module, exports, __webpack_require__) {
47705
 
47706
  //! moment.js locale configuration
@@ -47708,7 +21601,7 @@ webpackJsonp([0],[
47708
  //! author : Tarmo Aidantausta : https://github.com/bleadof
47709
 
47710
  ;(function (global, factory) {
47711
- true ? factory(__webpack_require__(289)) :
47712
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47713
  factory(global.moment)
47714
  }(this, (function (moment) { 'use strict';
@@ -47798,7 +21691,7 @@ webpackJsonp([0],[
47798
  y : translate,
47799
  yy : translate
47800
  },
47801
- ordinalParse: /\d{1,2}\./,
47802
  ordinal : '%d.',
47803
  week : {
47804
  dow : 1, // Monday is the first day of the week.
@@ -47812,7 +21705,7 @@ webpackJsonp([0],[
47812
 
47813
 
47814
  /***/ },
47815
- /* 327 */
47816
  /***/ function(module, exports, __webpack_require__) {
47817
 
47818
  //! moment.js locale configuration
@@ -47820,7 +21713,7 @@ webpackJsonp([0],[
47820
  //! author : Ragnar Johannesen : https://github.com/ragnar123
47821
 
47822
  ;(function (global, factory) {
47823
- true ? factory(__webpack_require__(289)) :
47824
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47825
  factory(global.moment)
47826
  }(this, (function (moment) { 'use strict';
@@ -47863,7 +21756,7 @@ webpackJsonp([0],[
47863
  y : 'eitt ár',
47864
  yy : '%d ár'
47865
  },
47866
- ordinalParse: /\d{1,2}\./,
47867
  ordinal : '%d.',
47868
  week : {
47869
  dow : 1, // Monday is the first day of the week.
@@ -47877,7 +21770,7 @@ webpackJsonp([0],[
47877
 
47878
 
47879
  /***/ },
47880
- /* 328 */
47881
  /***/ function(module, exports, __webpack_require__) {
47882
 
47883
  //! moment.js locale configuration
@@ -47885,7 +21778,7 @@ webpackJsonp([0],[
47885
  //! author : John Fischer : https://github.com/jfroffice
47886
 
47887
  ;(function (global, factory) {
47888
- true ? factory(__webpack_require__(289)) :
47889
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47890
  factory(global.moment)
47891
  }(this, (function (moment) { 'use strict';
@@ -47908,12 +21801,12 @@ webpackJsonp([0],[
47908
  LLLL : 'dddd D MMMM YYYY HH:mm'
47909
  },
47910
  calendar : {
47911
- sameDay: '[Aujourd\'hui à] LT',
47912
- nextDay: '[Demain à] LT',
47913
- nextWeek: 'dddd [à] LT',
47914
- lastDay: '[Hier à] LT',
47915
- lastWeek: 'dddd [dernier à] LT',
47916
- sameElse: 'L'
47917
  },
47918
  relativeTime : {
47919
  future : 'dans %s',
@@ -47930,9 +21823,28 @@ webpackJsonp([0],[
47930
  y : 'un an',
47931
  yy : '%d ans'
47932
  },
47933
- ordinalParse: /\d{1,2}(er|)/,
47934
- ordinal : function (number) {
47935
- return number + (number === 1 ? 'er' : '');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47936
  },
47937
  week : {
47938
  dow : 1, // Monday is the first day of the week.
@@ -47946,7 +21858,7 @@ webpackJsonp([0],[
47946
 
47947
 
47948
  /***/ },
47949
- /* 329 */
47950
  /***/ function(module, exports, __webpack_require__) {
47951
 
47952
  //! moment.js locale configuration
@@ -47954,7 +21866,7 @@ webpackJsonp([0],[
47954
  //! author : Jonathan Abourbih : https://github.com/jonbca
47955
 
47956
  ;(function (global, factory) {
47957
- true ? factory(__webpack_require__(289)) :
47958
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
47959
  factory(global.moment)
47960
  }(this, (function (moment) { 'use strict';
@@ -47977,12 +21889,12 @@ webpackJsonp([0],[
47977
  LLLL : 'dddd D MMMM YYYY HH:mm'
47978
  },
47979
  calendar : {
47980
- sameDay: '[Aujourd\'hui à] LT',
47981
- nextDay: '[Demain à] LT',
47982
- nextWeek: 'dddd [à] LT',
47983
- lastDay: '[Hier à] LT',
47984
- lastWeek: 'dddd [dernier à] LT',
47985
- sameElse: 'L'
47986
  },
47987
  relativeTime : {
47988
  future : 'dans %s',
@@ -47999,9 +21911,23 @@ webpackJsonp([0],[
47999
  y : 'un an',
48000
  yy : '%d ans'
48001
  },
48002
- ordinalParse: /\d{1,2}(er|e)/,
48003
- ordinal : function (number) {
48004
- return number + (number === 1 ? 'er' : 'e');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48005
  }
48006
  });
48007
 
@@ -48011,7 +21937,7 @@ webpackJsonp([0],[
48011
 
48012
 
48013
  /***/ },
48014
- /* 330 */
48015
  /***/ function(module, exports, __webpack_require__) {
48016
 
48017
  //! moment.js locale configuration
@@ -48019,7 +21945,7 @@ webpackJsonp([0],[
48019
  //! author : Gaspard Bucher : https://github.com/gaspard
48020
 
48021
  ;(function (global, factory) {
48022
- true ? factory(__webpack_require__(289)) :
48023
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
48024
  factory(global.moment)
48025
  }(this, (function (moment) { 'use strict';
@@ -48042,12 +21968,12 @@ webpackJsonp([0],[
48042
  LLLL : 'dddd D MMMM YYYY HH:mm'
48043
  },
48044
  calendar : {
48045
- sameDay: '[Aujourd\'hui à] LT',
48046
- nextDay: '[Demain à] LT',
48047
- nextWeek: 'dddd [à] LT',
48048
- lastDay: '[Hier à] LT',
48049
- lastWeek: 'dddd [dernier à] LT',
48050
- sameElse: 'L'
48051
  },
48052
  relativeTime : {
48053
  future : 'dans %s',
@@ -48064,9 +21990,23 @@ webpackJsonp([0],[
48064
  y : 'un an',
48065
  yy : '%d ans'
48066
  },
48067
- ordinalParse: /\d{1,2}(er|e)/,
48068
- ordinal : function (number) {
48069
- return number + (number === 1 ? 'er' : 'e');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48070
  },
48071
  week : {
48072
  dow : 1, // Monday is the first day of the week.
@@ -48080,7 +22020,7 @@ webpackJsonp([0],[
48080
 
48081
 
48082
  /***/ },
48083
- /* 331 */
48084
  /***/ function(module, exports, __webpack_require__) {
48085
 
48086
  //! moment.js locale configuration
@@ -48088,7 +22028,7 @@ webpackJsonp([0],[
48088
  //! author : Robin van der Vliet : https://github.com/robin0van0der0v
48089
 
48090
  ;(function (global, factory) {
48091
- true ? factory(__webpack_require__(289)) :
48092
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
48093
  factory(global.moment)
48094
  }(this, (function (moment) { 'use strict';
@@ -48100,7 +22040,9 @@ webpackJsonp([0],[
48100
  var fy = moment.defineLocale('fy', {
48101
  months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
48102
  monthsShort : function (m, format) {
48103
- if (/-MMM-/.test(format)) {
 
 
48104
  return monthsShortWithoutDots[m.month()];
48105
  } else {
48106
  return monthsShortWithDots[m.month()];
@@ -48142,7 +22084,7 @@ webpackJsonp([0],[
48142
  y : 'ien jier',
48143
  yy : '%d jierren'
48144
  },
48145
- ordinalParse: /\d{1,2}(ste|de)/,
48146
  ordinal : function (number) {
48147
  return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
48148
  },
@@ -48158,7 +22100,7 @@ webpackJsonp([0],[
48158
 
48159
 
48160
  /***/ },
48161
- /* 332 */
48162
  /***/ function(module, exports, __webpack_require__) {
48163
 
48164
  //! moment.js locale configuration
@@ -48166,7 +22108,7 @@ webpackJsonp([0],[
48166
  //! author : Jon Ashdown : https://github.com/jonashdown
48167
 
48168
  ;(function (global, factory) {
48169
- true ? factory(__webpack_require__(289)) :
48170
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
48171
  factory(global.moment)
48172
  }(this, (function (moment) { 'use strict';
@@ -48222,7 +22164,7 @@ webpackJsonp([0],[
48222
  y : 'bliadhna',
48223
  yy : '%d bliadhna'
48224
  },
48225
- ordinalParse : /\d{1,2}(d|na|mh)/,
48226
  ordinal : function (number) {
48227
  var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
48228
  return number + output;
@@ -48239,7 +22181,7 @@ webpackJsonp([0],[
48239
 
48240
 
48241
  /***/ },
48242
- /* 333 */
48243
  /***/ function(module, exports, __webpack_require__) {
48244
 
48245
  //! moment.js locale configuration
@@ -48247,7 +22189,7 @@ webpackJsonp([0],[
48247
  //! author : Juan G. Hurtado : https://github.com/juanghurtado
48248
 
48249
  ;(function (global, factory) {
48250
- true ? factory(__webpack_require__(289)) :
48251
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
48252
  factory(global.moment)
48253
  }(this, (function (moment) { 'use strict';
@@ -48307,7 +22249,7 @@ webpackJsonp([0],[
48307
  y : 'un ano',
48308
  yy : '%d anos'
48309
  },
48310
- ordinalParse : /\d{1,2}º/,
48311
  ordinal : '%dº',
48312
  week : {
48313
  dow : 1, // Monday is the first day of the week.
@@ -48321,7 +22263,134 @@ webpackJsonp([0],[
48321
 
48322
 
48323
  /***/ },
48324
- /* 334 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  /***/ function(module, exports, __webpack_require__) {
4
 
5
  __webpack_require__(1);
6
+ __webpack_require__(414);
7
+ __webpack_require__(436);
8
+ __webpack_require__(439);
9
+ __webpack_require__(441);
10
+ __webpack_require__(444);
11
+ __webpack_require__(448);
12
+ module.exports = __webpack_require__(449);
13
 
14
 
15
  /***/ },
24
 
25
  var _react2 = _interopRequireDefault(_react);
26
 
27
+ var _reactDom = __webpack_require__(34);
28
 
29
  var _reactDom2 = _interopRequireDefault(_reactDom);
30
 
31
+ var _reactRouter = __webpack_require__(181);
32
 
33
+ var _history = __webpack_require__(237);
34
 
35
+ var _subscribersListJsx = __webpack_require__(266);
36
 
37
  var _subscribersListJsx2 = _interopRequireDefault(_subscribersListJsx);
38
 
39
+ var _subscribersFormJsx = __webpack_require__(281);
40
 
41
  var _subscribersFormJsx2 = _interopRequireDefault(_subscribersFormJsx);
42
 
68
  }
69
 
70
  /***/ },
71
+ /* 2 */,
72
+ /* 3 */,
73
+ /* 4 */,
74
+ /* 5 */,
75
+ /* 6 */,
76
+ /* 7 */,
77
+ /* 8 */,
78
+ /* 9 */,
79
+ /* 10 */,
80
+ /* 11 */,
81
+ /* 12 */,
82
+ /* 13 */,
83
+ /* 14 */,
84
+ /* 15 */,
85
+ /* 16 */,
86
+ /* 17 */,
87
+ /* 18 */,
88
+ /* 19 */,
89
+ /* 20 */,
90
+ /* 21 */,
91
+ /* 22 */,
92
+ /* 23 */,
93
+ /* 24 */,
94
+ /* 25 */,
95
+ /* 26 */,
96
+ /* 27 */,
97
+ /* 28 */,
98
+ /* 29 */,
99
+ /* 30 */,
100
+ /* 31 */,
101
+ /* 32 */,
102
+ /* 33 */,
103
+ /* 34 */,
104
+ /* 35 */,
105
+ /* 36 */,
106
+ /* 37 */,
107
+ /* 38 */,
108
+ /* 39 */,
109
+ /* 40 */,
110
+ /* 41 */,
111
+ /* 42 */,
112
+ /* 43 */,
113
+ /* 44 */,
114
+ /* 45 */,
115
+ /* 46 */,
116
+ /* 47 */,
117
+ /* 48 */,
118
+ /* 49 */,
119
+ /* 50 */,
120
+ /* 51 */,
121
+ /* 52 */,
122
+ /* 53 */,
123
+ /* 54 */,
124
+ /* 55 */,
125
+ /* 56 */,
126
+ /* 57 */,
127
+ /* 58 */,
128
+ /* 59 */,
129
+ /* 60 */,
130
+ /* 61 */,
131
+ /* 62 */,
132
+ /* 63 */,
133
+ /* 64 */,
134
+ /* 65 */,
135
+ /* 66 */,
136
+ /* 67 */,
137
+ /* 68 */,
138
+ /* 69 */,
139
+ /* 70 */,
140
+ /* 71 */,
141
+ /* 72 */,
142
+ /* 73 */,
143
+ /* 74 */,
144
+ /* 75 */,
145
+ /* 76 */,
146
+ /* 77 */,
147
+ /* 78 */,
148
+ /* 79 */,
149
+ /* 80 */,
150
+ /* 81 */,
151
+ /* 82 */,
152
+ /* 83 */,
153
+ /* 84 */,
154
+ /* 85 */,
155
+ /* 86 */,
156
+ /* 87 */,
157
+ /* 88 */,
158
+ /* 89 */,
159
+ /* 90 */,
160
+ /* 91 */,
161
+ /* 92 */,
162
+ /* 93 */,
163
+ /* 94 */,
164
+ /* 95 */,
165
+ /* 96 */,
166
+ /* 97 */,
167
+ /* 98 */,
168
+ /* 99 */,
169
+ /* 100 */,
170
+ /* 101 */,
171
+ /* 102 */,
172
+ /* 103 */,
173
+ /* 104 */,
174
+ /* 105 */,
175
+ /* 106 */,
176
+ /* 107 */,
177
+ /* 108 */,
178
+ /* 109 */,
179
+ /* 110 */,
180
+ /* 111 */,
181
+ /* 112 */,
182
+ /* 113 */,
183
+ /* 114 */,
184
+ /* 115 */,
185
+ /* 116 */,
186
+ /* 117 */,
187
+ /* 118 */,
188
+ /* 119 */,
189
+ /* 120 */,
190
+ /* 121 */,
191
+ /* 122 */,
192
+ /* 123 */,
193
+ /* 124 */,
194
+ /* 125 */,
195
+ /* 126 */,
196
+ /* 127 */,
197
+ /* 128 */,
198
+ /* 129 */,
199
+ /* 130 */,
200
+ /* 131 */,
201
+ /* 132 */,
202
+ /* 133 */,
203
+ /* 134 */,
204
+ /* 135 */,
205
+ /* 136 */,
206
+ /* 137 */,
207
+ /* 138 */,
208
+ /* 139 */,
209
+ /* 140 */,
210
+ /* 141 */,
211
+ /* 142 */,
212
+ /* 143 */,
213
+ /* 144 */,
214
+ /* 145 */,
215
+ /* 146 */,
216
+ /* 147 */,
217
+ /* 148 */,
218
+ /* 149 */,
219
+ /* 150 */,
220
+ /* 151 */,
221
+ /* 152 */,
222
+ /* 153 */,
223
+ /* 154 */,
224
+ /* 155 */,
225
+ /* 156 */,
226
+ /* 157 */,
227
+ /* 158 */,
228
+ /* 159 */,
229
+ /* 160 */,
230
+ /* 161 */,
231
+ /* 162 */,
232
+ /* 163 */,
233
+ /* 164 */,
234
+ /* 165 */,
235
+ /* 166 */,
236
+ /* 167 */,
237
+ /* 168 */,
238
+ /* 169 */,
239
+ /* 170 */,
240
+ /* 171 */,
241
+ /* 172 */,
242
+ /* 173 */,
243
+ /* 174 */,
244
+ /* 175 */,
245
+ /* 176 */,
246
+ /* 177 */,
247
+ /* 178 */,
248
+ /* 179 */,
249
+ /* 180 */,
250
+ /* 181 */,
251
+ /* 182 */,
252
+ /* 183 */,
253
+ /* 184 */,
254
+ /* 185 */,
255
+ /* 186 */,
256
+ /* 187 */,
257
+ /* 188 */,
258
+ /* 189 */,
259
+ /* 190 */,
260
+ /* 191 */,
261
+ /* 192 */,
262
+ /* 193 */,
263
+ /* 194 */,
264
+ /* 195 */,
265
+ /* 196 */,
266
+ /* 197 */,
267
+ /* 198 */,
268
+ /* 199 */,
269
+ /* 200 */,
270
+ /* 201 */,
271
+ /* 202 */,
272
+ /* 203 */,
273
+ /* 204 */,
274
+ /* 205 */,
275
+ /* 206 */,
276
+ /* 207 */,
277
+ /* 208 */,
278
+ /* 209 */,
279
+ /* 210 */,
280
+ /* 211 */,
281
+ /* 212 */,
282
+ /* 213 */,
283
+ /* 214 */,
284
+ /* 215 */,
285
+ /* 216 */,
286
+ /* 217 */,
287
+ /* 218 */,
288
+ /* 219 */,
289
+ /* 220 */,
290
+ /* 221 */,
291
+ /* 222 */,
292
+ /* 223 */,
293
+ /* 224 */,
294
+ /* 225 */,
295
+ /* 226 */,
296
+ /* 227 */,
297
+ /* 228 */,
298
+ /* 229 */,
299
+ /* 230 */,
300
+ /* 231 */,
301
+ /* 232 */,
302
+ /* 233 */,
303
+ /* 234 */,
304
+ /* 235 */,
305
+ /* 236 */,
306
+ /* 237 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
307
  /***/ function(module, exports, __webpack_require__) {
308
 
309
  'use strict';
312
 
313
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
314
 
315
+ var _createBrowserHistory = __webpack_require__(238);
316
 
317
  var _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);
318
 
319
  exports.createHistory = _createBrowserHistory2['default'];
320
 
321
+ var _createHashHistory2 = __webpack_require__(255);
322
 
323
  var _createHashHistory3 = _interopRequireDefault(_createHashHistory2);
324
 
325
  exports.createHashHistory = _createHashHistory3['default'];
326
 
327
+ var _createMemoryHistory2 = __webpack_require__(256);
328
 
329
  var _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2);
330
 
331
  exports.createMemoryHistory = _createMemoryHistory3['default'];
332
 
333
+ var _createLocation2 = __webpack_require__(250);
334
 
335
  var _createLocation3 = _interopRequireDefault(_createLocation2);
336
 
337
  exports.createLocation = _createLocation3['default'];
338
 
339
+ var _useBasename2 = __webpack_require__(257);
340
 
341
  var _useBasename3 = _interopRequireDefault(_useBasename2);
342
 
343
  exports.useBasename = _useBasename3['default'];
344
 
345
+ var _useBeforeUnload2 = __webpack_require__(258);
346
 
347
  var _useBeforeUnload3 = _interopRequireDefault(_useBeforeUnload2);
348
 
349
  exports.useBeforeUnload = _useBeforeUnload3['default'];
350
 
351
+ var _useQueries2 = __webpack_require__(259);
352
 
353
  var _useQueries3 = _interopRequireDefault(_useQueries2);
354
 
355
  exports.useQueries = _useQueries3['default'];
356
 
357
+ var _Actions2 = __webpack_require__(239);
358
 
359
  var _Actions3 = _interopRequireDefault(_Actions2);
360
 
362
 
363
  // deprecated
364
 
365
+ var _enableBeforeUnload2 = __webpack_require__(264);
366
 
367
  var _enableBeforeUnload3 = _interopRequireDefault(_enableBeforeUnload2);
368
 
369
  exports.enableBeforeUnload = _enableBeforeUnload3['default'];
370
 
371
+ var _enableQueries2 = __webpack_require__(265);
372
 
373
  var _enableQueries3 = _interopRequireDefault(_enableQueries2);
374
 
375
  exports.enableQueries = _enableQueries3['default'];
376
 
377
  /***/ },
378
+ /* 238 */
379
  /***/ function(module, exports, __webpack_require__) {
380
 
381
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
386
 
387
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
388
 
389
+ var _invariant = __webpack_require__(185);
390
 
391
  var _invariant2 = _interopRequireDefault(_invariant);
392
 
393
+ var _Actions = __webpack_require__(239);
394
 
395
+ var _ExecutionEnvironment = __webpack_require__(240);
396
 
397
+ var _DOMUtils = __webpack_require__(241);
398
 
399
+ var _DOMStateStorage = __webpack_require__(242);
400
 
401
+ var _createDOMHistory = __webpack_require__(244);
402
 
403
  var _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);
404
 
550
 
551
  exports['default'] = createBrowserHistory;
552
  module.exports = exports['default'];
553
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
554
 
555
  /***/ },
556
+ /* 239 */
557
  /***/ function(module, exports) {
558
 
559
  /**
589
  };
590
 
591
  /***/ },
592
+ /* 240 */
593
  /***/ function(module, exports) {
594
 
595
  'use strict';
599
  exports.canUseDOM = canUseDOM;
600
 
601
  /***/ },
602
+ /* 241 */
603
  /***/ function(module, exports) {
604
 
605
  'use strict';
679
  }
680
 
681
  /***/ },
682
+ /* 242 */
683
  /***/ function(module, exports, __webpack_require__) {
684
 
685
  /* WEBPACK VAR INJECTION */(function(process) {/*eslint-disable no-empty */
691
 
692
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
693
 
694
+ var _warning = __webpack_require__(243);
695
 
696
  var _warning2 = _interopRequireDefault(_warning);
697
 
750
 
751
  return null;
752
  }
753
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
754
 
755
  /***/ },
756
+ /* 243 */
757
  /***/ function(module, exports, __webpack_require__) {
758
 
759
  /* WEBPACK VAR INJECTION */(function(process) {/**
817
 
818
  module.exports = warning;
819
 
820
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
821
 
822
  /***/ },
823
+ /* 244 */
824
  /***/ function(module, exports, __webpack_require__) {
825
 
826
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
831
 
832
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
833
 
834
+ var _invariant = __webpack_require__(185);
835
 
836
  var _invariant2 = _interopRequireDefault(_invariant);
837
 
838
+ var _ExecutionEnvironment = __webpack_require__(240);
839
 
840
+ var _DOMUtils = __webpack_require__(241);
841
 
842
+ var _createHistory = __webpack_require__(245);
843
 
844
  var _createHistory2 = _interopRequireDefault(_createHistory);
845
 
863
 
864
  exports['default'] = createDOMHistory;
865
  module.exports = exports['default'];
866
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
867
 
868
  /***/ },
869
+ /* 245 */
870
  /***/ function(module, exports, __webpack_require__) {
871
 
872
  'use strict';
877
 
878
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
879
 
880
+ var _deepEqual = __webpack_require__(246);
881
 
882
  var _deepEqual2 = _interopRequireDefault(_deepEqual);
883
 
884
+ var _AsyncUtils = __webpack_require__(249);
885
 
886
+ var _Actions = __webpack_require__(239);
887
 
888
+ var _createLocation2 = __webpack_require__(250);
889
 
890
  var _createLocation3 = _interopRequireDefault(_createLocation2);
891
 
892
+ var _runTransitionHook = __webpack_require__(253);
893
 
894
  var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
895
 
896
+ var _deprecate = __webpack_require__(254);
897
 
898
  var _deprecate2 = _interopRequireDefault(_deprecate);
899
 
1141
  module.exports = exports['default'];
1142
 
1143
  /***/ },
1144
+ /* 246 */
1145
  /***/ function(module, exports, __webpack_require__) {
1146
 
1147
  var pSlice = Array.prototype.slice;
1148
+ var objectKeys = __webpack_require__(247);
1149
+ var isArguments = __webpack_require__(248);
1150
 
1151
  var deepEqual = module.exports = function (actual, expected, opts) {
1152
  if (!opts) opts = {};
1241
 
1242
 
1243
  /***/ },
1244
+ /* 247 */
1245
  /***/ function(module, exports) {
1246
 
1247
  exports = module.exports = typeof Object.keys === 'function'
1256
 
1257
 
1258
  /***/ },
1259
+ /* 248 */
1260
  /***/ function(module, exports) {
1261
 
1262
  var supportsArgumentsClass = (function(){
1282
 
1283
 
1284
  /***/ },
1285
+ /* 249 */
1286
  /***/ function(module, exports) {
1287
 
1288
  "use strict";
1313
  }
1314
 
1315
  /***/ },
1316
+ /* 250 */
1317
  /***/ function(module, exports, __webpack_require__) {
1318
 
1319
  'use strict';
1322
 
1323
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
1324
 
1325
+ var _Actions = __webpack_require__(239);
1326
 
1327
+ var _parsePath = __webpack_require__(251);
1328
 
1329
  var _parsePath2 = _interopRequireDefault(_parsePath);
1330
 
1354
  module.exports = exports['default'];
1355
 
1356
  /***/ },
1357
+ /* 251 */
1358
  /***/ function(module, exports, __webpack_require__) {
1359
 
1360
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
1363
 
1364
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
1365
 
1366
+ var _warning = __webpack_require__(243);
1367
 
1368
  var _warning2 = _interopRequireDefault(_warning);
1369
 
1370
+ var _extractPath = __webpack_require__(252);
1371
 
1372
  var _extractPath2 = _interopRequireDefault(_extractPath);
1373
 
1401
 
1402
  exports['default'] = parsePath;
1403
  module.exports = exports['default'];
1404
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
1405
 
1406
  /***/ },
1407
+ /* 252 */
1408
  /***/ function(module, exports) {
1409
 
1410
  "use strict";
1422
  module.exports = exports["default"];
1423
 
1424
  /***/ },
1425
+ /* 253 */
1426
  /***/ function(module, exports, __webpack_require__) {
1427
 
1428
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
1431
 
1432
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
1433
 
1434
+ var _warning = __webpack_require__(243);
1435
 
1436
  var _warning2 = _interopRequireDefault(_warning);
1437
 
1449
 
1450
  exports['default'] = runTransitionHook;
1451
  module.exports = exports['default'];
1452
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
1453
 
1454
  /***/ },
1455
+ /* 254 */
1456
  /***/ function(module, exports, __webpack_require__) {
1457
 
1458
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
1461
 
1462
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
1463
 
1464
+ var _warning = __webpack_require__(243);
1465
 
1466
  var _warning2 = _interopRequireDefault(_warning);
1467
 
1474
 
1475
  exports['default'] = deprecate;
1476
  module.exports = exports['default'];
1477
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
1478
 
1479
  /***/ },
1480
+ /* 255 */
1481
  /***/ function(module, exports, __webpack_require__) {
1482
 
1483
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
1488
 
1489
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
1490
 
1491
+ var _warning = __webpack_require__(243);
1492
 
1493
  var _warning2 = _interopRequireDefault(_warning);
1494
 
1495
+ var _invariant = __webpack_require__(185);
1496
 
1497
  var _invariant2 = _interopRequireDefault(_invariant);
1498
 
1499
+ var _Actions = __webpack_require__(239);
1500
 
1501
+ var _ExecutionEnvironment = __webpack_require__(240);
1502
 
1503
+ var _DOMUtils = __webpack_require__(241);
1504
 
1505
+ var _DOMStateStorage = __webpack_require__(242);
1506
 
1507
+ var _createDOMHistory = __webpack_require__(244);
1508
 
1509
  var _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);
1510
 
1705
 
1706
  exports['default'] = createHashHistory;
1707
  module.exports = exports['default'];
1708
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
1709
 
1710
  /***/ },
1711
+ /* 256 */
1712
  /***/ function(module, exports, __webpack_require__) {
1713
 
1714
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
1719
 
1720
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
1721
 
1722
+ var _invariant = __webpack_require__(185);
1723
 
1724
  var _invariant2 = _interopRequireDefault(_invariant);
1725
 
1726
+ var _Actions = __webpack_require__(239);
1727
 
1728
+ var _createHistory = __webpack_require__(245);
1729
 
1730
  var _createHistory2 = _interopRequireDefault(_createHistory);
1731
 
1853
 
1854
  exports['default'] = createMemoryHistory;
1855
  module.exports = exports['default'];
1856
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
1857
 
1858
  /***/ },
1859
+ /* 257 */
1860
  /***/ function(module, exports, __webpack_require__) {
1861
 
1862
  'use strict';
1869
 
1870
  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; }
1871
 
1872
+ var _ExecutionEnvironment = __webpack_require__(240);
1873
 
1874
+ var _runTransitionHook = __webpack_require__(253);
1875
 
1876
  var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
1877
 
1878
+ var _extractPath = __webpack_require__(252);
1879
 
1880
  var _extractPath2 = _interopRequireDefault(_extractPath);
1881
 
1882
+ var _parsePath = __webpack_require__(251);
1883
 
1884
  var _parsePath2 = _interopRequireDefault(_parsePath);
1885
 
1990
  module.exports = exports['default'];
1991
 
1992
  /***/ },
1993
+ /* 258 */
1994
  /***/ function(module, exports, __webpack_require__) {
1995
 
1996
  /* WEBPACK VAR INJECTION */(function(process) {'use strict';
2001
 
2002
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2003
 
2004
+ var _warning = __webpack_require__(243);
2005
 
2006
  var _warning2 = _interopRequireDefault(_warning);
2007
 
2008
+ var _ExecutionEnvironment = __webpack_require__(240);
2009
 
2010
+ var _DOMUtils = __webpack_require__(241);
2011
 
2012
+ var _deprecate = __webpack_require__(254);
2013
 
2014
  var _deprecate2 = _interopRequireDefault(_deprecate);
2015
 
2104
 
2105
  exports['default'] = useBeforeUnload;
2106
  module.exports = exports['default'];
2107
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(5)))
2108
 
2109
  /***/ },
2110
+ /* 259 */
2111
  /***/ function(module, exports, __webpack_require__) {
2112
 
2113
  'use strict';
2120
 
2121
  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; }
2122
 
2123
+ var _qs = __webpack_require__(260);
2124
 
2125
  var _qs2 = _interopRequireDefault(_qs);
2126
 
2127
+ var _runTransitionHook = __webpack_require__(253);
2128
 
2129
  var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
2130
 
2131
+ var _parsePath = __webpack_require__(251);
2132
 
2133
  var _parsePath2 = _interopRequireDefault(_parsePath);
2134
 
2227
  module.exports = exports['default'];
2228
 
2229
  /***/ },
2230
+ /* 260 */
2231
  /***/ function(module, exports, __webpack_require__) {
2232
 
2233
  // Load modules
2234
 
2235
+ var Stringify = __webpack_require__(261);
2236
+ var Parse = __webpack_require__(263);
2237
 
2238
 
2239
  // Declare internals
2248
 
2249
 
2250
  /***/ },
2251
+ /* 261 */
2252
  /***/ function(module, exports, __webpack_require__) {
2253
 
2254
  // Load modules
2255
 
2256
+ var Utils = __webpack_require__(262);
2257
 
2258
 
2259
  // Declare internals
2375
 
2376
 
2377
  /***/ },
2378
+ /* 262 */
2379
  /***/ function(module, exports) {
2380
 
2381
  // Load modules
2571
 
2572
 
2573
  /***/ },
2574
+ /* 263 */
2575
  /***/ function(module, exports, __webpack_require__) {
2576
 
2577
  // Load modules
2578
 
2579
+ var Utils = __webpack_require__(262);
2580
 
2581
 
2582
  // Declare internals
2763
 
2764
 
2765
  /***/ },
2766
+ /* 264 */
2767
  /***/ function(module, exports, __webpack_require__) {
2768
 
2769
  'use strict';
2772
 
2773
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2774
 
2775
+ var _deprecate = __webpack_require__(254);
2776
 
2777
  var _deprecate2 = _interopRequireDefault(_deprecate);
2778
 
2779
+ var _useBeforeUnload = __webpack_require__(258);
2780
 
2781
  var _useBeforeUnload2 = _interopRequireDefault(_useBeforeUnload);
2782
 
2784
  module.exports = exports['default'];
2785
 
2786
  /***/ },
2787
+ /* 265 */
2788
  /***/ function(module, exports, __webpack_require__) {
2789
 
2790
  'use strict';
2793
 
2794
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2795
 
2796
+ var _deprecate = __webpack_require__(254);
2797
 
2798
  var _deprecate2 = _interopRequireDefault(_deprecate);
2799
 
2800
+ var _useQueries = __webpack_require__(259);
2801
 
2802
  var _useQueries2 = _interopRequireDefault(_useQueries);
2803
 
2805
  module.exports = exports['default'];
2806
 
2807
  /***/ },
2808
+ /* 266 */
2809
  /***/ function(module, exports, __webpack_require__) {
2810
 
2811
  'use strict';
2816
 
2817
  var _react2 = _interopRequireDefault(_react);
2818
 
2819
+ var _reactRouter = __webpack_require__(181);
2820
 
2821
+ var _jquery = __webpack_require__(267);
2822
 
2823
  var _jquery2 = _interopRequireDefault(_jquery);
2824
 
2825
+ var _mailpoet = __webpack_require__(268);
2826
 
2827
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
2828
 
2829
+ var _classnames = __webpack_require__(269);
2830
 
2831
  var _classnames2 = _interopRequireDefault(_classnames);
2832
 
2833
+ var _listingListingJsx = __webpack_require__(270);
2834
 
2835
  var _listingListingJsx2 = _interopRequireDefault(_listingListingJsx);
2836
 
2837
+ var _formFieldsSelectionJsx = __webpack_require__(279);
2838
 
2839
  var _formFieldsSelectionJsx2 = _interopRequireDefault(_formFieldsSelectionJsx);
2840
 
3179
  module.exports = SubscriberList;
3180
 
3181
  /***/ },
3182
+ /* 267 */
3183
  /***/ function(module, exports) {
3184
 
3185
  module.exports = jQuery;
3186
 
3187
  /***/ },
3188
+ /* 268 */
3189
  /***/ function(module, exports, __webpack_require__) {
3190
 
3191
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
3200
 
3201
 
3202
  /***/ },
3203
+ /* 269 */
3204
  /***/ function(module, exports, __webpack_require__) {
3205
 
3206
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
3254
 
3255
 
3256
  /***/ },
3257
+ /* 270 */
3258
  /***/ function(module, exports, __webpack_require__) {
3259
 
3260
  'use strict';
3263
 
3264
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3265
 
3266
+ var _mailpoet = __webpack_require__(268);
3267
 
3268
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
3269
 
3270
+ var _jquery = __webpack_require__(267);
3271
 
3272
  var _jquery2 = _interopRequireDefault(_jquery);
3273
 
3275
 
3276
  var _react2 = _interopRequireDefault(_react);
3277
 
3278
+ var _underscore = __webpack_require__(271);
3279
 
3280
  var _underscore2 = _interopRequireDefault(_underscore);
3281
 
3282
+ var _reactRouter = __webpack_require__(181);
3283
 
3284
+ var _classnames = __webpack_require__(269);
3285
 
3286
  var _classnames2 = _interopRequireDefault(_classnames);
3287
 
3288
+ var _listingBulk_actionsJsx = __webpack_require__(273);
3289
 
3290
  var _listingBulk_actionsJsx2 = _interopRequireDefault(_listingBulk_actionsJsx);
3291
 
3292
+ var _listingHeaderJsx = __webpack_require__(274);
3293
 
3294
  var _listingHeaderJsx2 = _interopRequireDefault(_listingHeaderJsx);
3295
 
3296
+ var _listingPagesJsx = __webpack_require__(275);
3297
 
3298
  var _listingPagesJsx2 = _interopRequireDefault(_listingPagesJsx);
3299
 
3300
+ var _listingSearchJsx = __webpack_require__(276);
3301
 
3302
  var _listingSearchJsx2 = _interopRequireDefault(_listingSearchJsx);
3303
 
3304
+ var _listingGroupsJsx = __webpack_require__(277);
3305
 
3306
  var _listingGroupsJsx2 = _interopRequireDefault(_listingGroupsJsx);
3307
 
3308
+ var _listingFiltersJsx = __webpack_require__(278);
3309
 
3310
  var _listingFiltersJsx2 = _interopRequireDefault(_listingFiltersJsx);
3311
 
4175
  module.exports = Listing;
4176
 
4177
  /***/ },
4178
+ /* 271 */
4179
  /***/ function(module, exports, __webpack_require__) {
4180
 
4181
+ /* WEBPACK VAR INJECTION */(function(global) {module.exports = global["_"] = __webpack_require__(272);
4182
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
4183
 
4184
  /***/ },
4185
+ /* 272 */
4186
  /***/ function(module, exports, __webpack_require__) {
4187
 
4188
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Underscore.js 1.8.3
5736
 
5737
 
5738
  /***/ },
5739
+ /* 273 */
5740
  /***/ function(module, exports, __webpack_require__) {
5741
 
5742
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
5743
 
5744
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(268)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, MailPoet) {
5745
  var ListingBulkActions = React.createClass({
5746
  displayName: 'ListingBulkActions',
5747
 
5864
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
5865
 
5866
  /***/ },
5867
+ /* 274 */
5868
  /***/ function(module, exports, __webpack_require__) {
5869
 
5870
  'use strict';
5871
 
5872
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
5873
 
5874
+ var _mailpoet = __webpack_require__(268);
5875
 
5876
  var _mailpoet2 = _interopRequireDefault(_mailpoet);
5877
 
5879
 
5880
  var _react2 = _interopRequireDefault(_react);
5881
 
5882
+ var _classnames = __webpack_require__(269);
5883
 
5884
  var _classnames2 = _interopRequireDefault(_classnames);
5885
 
5972
  module.exports = ListingHeader;
5973
 
5974
  /***/ },
5975
+ /* 275 */
5976
  /***/ function(module, exports, __webpack_require__) {
5977
 
5978
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
5979
 
5980
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(269), __webpack_require__(268)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, classNames, MailPoet) {
5981
 
5982
  var ListingPages = React.createClass({
5983
  displayName: 'ListingPages',
6204
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
6205
 
6206
  /***/ },
6207
+ /* 276 */
6208
  /***/ function(module, exports, __webpack_require__) {
6209
 
6210
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
6211
 
6212
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(268), __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (MailPoet, React) {
6213
 
6214
  var ListingSearch = React.createClass({
6215
  displayName: 'ListingSearch',
6256
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
6257
 
6258
  /***/ },
6259
+ /* 277 */
6260
  /***/ function(module, exports, __webpack_require__) {
6261
 
6262
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
6263
 
6264
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(269)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, classNames) {
6265
 
6266
  var ListingGroups = React.createClass({
6267
  displayName: 'ListingGroups',
6312
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
6313
 
6314
  /***/ },
6315
+ /* 278 */
6316
  /***/ function(module, exports, __webpack_require__) {
6317
 
6318
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
6319
 
6320
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(267), __webpack_require__(268)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, jQuery, MailPoet) {
6321
  var ListingFilters = React.createClass({
6322
  displayName: 'ListingFilters',
6323
 
6405
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
6406
 
6407
  /***/ },
6408
+ /* 279 */
6409
  /***/ function(module, exports, __webpack_require__) {
6410
 
6411
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
6412
 
6413
  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; };
6414
 
6415
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(34), __webpack_require__(267), __webpack_require__(280)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, ReactDOM, jQuery) {
6416
  var Selection = React.createClass({
6417
  displayName: 'Selection',
6418
 
6596
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
6597
 
6598
  /***/ },
6599
+ /* 280 */
6600
  /***/ function(module, exports, __webpack_require__) {
6601
 
6602
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;var require;/*!
6609
  (function (factory) {
6610
  if (true) {
6611
  // AMD. Register as an anonymous module.
6612
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(267)], __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__));
6613
  } else if (typeof exports === 'object') {
6614
  // Node/CommonJS
6615
  factory(require('jquery'));
12327
 
12328
 
12329
  /***/ },
12330
+ /* 281 */
12331
  /***/ function(module, exports, __webpack_require__) {
12332
 
12333
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
12334
 
12335
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(181), __webpack_require__(268), __webpack_require__(282), __webpack_require__(408)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Router, MailPoet, Form, ReactStringReplace) {
12336
  var fields = [{
12337
  name: 'email',
12338
  label: MailPoet.I18n.t('email'),
12521
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
12522
 
12523
  /***/ },
12524
+ /* 282 */
12525
  /***/ function(module, exports, __webpack_require__) {
12526
 
12527
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
12528
 
12529
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(268), __webpack_require__(269), __webpack_require__(181), __webpack_require__(283)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, MailPoet, classNames, Router, FormField) {
12530
 
12531
  var Form = React.createClass({
12532
  displayName: 'Form',
12746
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
12747
 
12748
  /***/ },
12749
+ /* 283 */
12750
  /***/ function(module, exports, __webpack_require__) {
12751
 
12752
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
12753
 
12754
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(284), __webpack_require__(285), __webpack_require__(286), __webpack_require__(287), __webpack_require__(288), __webpack_require__(279), __webpack_require__(289)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, FormFieldText, FormFieldTextarea, FormFieldSelect, FormFieldRadio, FormFieldCheckbox, FormFieldSelection, FormFieldDate) {
12755
  var FormField = React.createClass({
12756
  displayName: 'FormField',
12757
 
12876
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
12877
 
12878
  /***/ },
12879
+ /* 284 */
12880
  /***/ function(module, exports, __webpack_require__) {
12881
 
12882
  'use strict';
12915
  module.exports = FormFieldText;
12916
 
12917
  /***/ },
12918
+ /* 285 */
12919
  /***/ function(module, exports, __webpack_require__) {
12920
 
12921
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";
12944
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
12945
 
12946
  /***/ },
12947
+ /* 286 */
12948
  /***/ function(module, exports, __webpack_require__) {
12949
 
12950
  'use strict';
12957
 
12958
  var _react2 = _interopRequireDefault(_react);
12959
 
12960
+ var _underscore = __webpack_require__(271);
12961
 
12962
  var _underscore2 = _interopRequireDefault(_underscore);
12963
 
13036
  module.exports = FormFieldSelect;
13037
 
13038
  /***/ },
13039
+ /* 287 */
13040
  /***/ function(module, exports, __webpack_require__) {
13041
 
13042
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
13083
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
13084
 
13085
  /***/ },
13086
+ /* 288 */
13087
  /***/ function(module, exports, __webpack_require__) {
13088
 
13089
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
13138
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
13139
 
13140
  /***/ },
13141
+ /* 289 */
13142
  /***/ function(module, exports, __webpack_require__) {
13143
 
13144
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;'use strict';
13153
 
13154
  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; }
13155
 
13156
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(290)], __WEBPACK_AMD_DEFINE_RESULT__ = function (React, Moment) {
13157
  var FormFieldDateYear = (function (_React$Component) {
13158
  _inherits(FormFieldDateYear, _React$Component);
13159
 
13470
  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
13471
 
13472
  /***/ },
13473
+ /* 290 */
13474
  /***/ function(module, exports, __webpack_require__) {
13475
 
13476
  /* WEBPACK VAR INJECTION */(function(module) {//! moment.js
13477
+ //! version : 2.18.1
13478
  //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
13479
  //! license : MIT
13480
  //! momentjs.com
13516
  return true;
13517
  }
13518
 
13519
+ function isUndefined(input) {
13520
+ return input === void 0;
13521
+ }
13522
+
13523
  function isNumber(input) {
13524
  return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
13525
  }
13576
  userInvalidated : false,
13577
  iso : false,
13578
  parsedDateParts : [],
13579
+ meridiem : null,
13580
+ rfc2822 : false,
13581
+ weekdayMismatch : false
13582
  };
13583
  }
13584
 
13654
  return m;
13655
  }
13656
 
 
 
 
 
13657
  // Plugins that add properties should also add the key here (null value),
13658
  // so we can properly clone ourselves.
13659
  var momentProperties = hooks.momentProperties = [];
13693
  }
13694
 
13695
  if (momentProperties.length > 0) {
13696
+ for (i = 0; i < momentProperties.length; i++) {
13697
  prop = momentProperties[i];
13698
  val = from[prop];
13699
  if (!isUndefined(val)) {
13830
  }
13831
  this._config = config;
13832
  // Lenient ordinal parsing accepts just a number in addition to
13833
+ // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
13834
+ // TODO: Remove "ordinalParse" fallback in next major release.
13835
+ this._dayOfMonthOrdinalParseLenient = new RegExp(
13836
+ (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
13837
+ '|' + (/\d{1,2}/).source);
13838
  }
13839
 
13840
  function mergeConfigs(parentConfig, childConfig) {
13932
  }
13933
 
13934
  var defaultOrdinal = '%d';
13935
+ var defaultDayOfMonthOrdinalParse = /\d{1,2}/;
13936
 
13937
  function ordinal (number) {
13938
  return this._ordinal.replace('%d', number);
13942
  future : 'in %s',
13943
  past : '%s ago',
13944
  s : 'a few seconds',
13945
+ ss : '%d seconds',
13946
  m : 'a minute',
13947
  mm : '%d minutes',
13948
  h : 'an hour',
14125
  return function (mom) {
14126
  var output = '', i;
14127
  for (i = 0; i < length; i++) {
14128
+ output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
14129
  }
14130
  return output;
14131
  };
14328
  var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
14329
  function localeMonths (m, format) {
14330
  if (!m) {
14331
+ return isArray(this._months) ? this._months :
14332
+ this._months['standalone'];
14333
  }
14334
  return isArray(this._months) ? this._months[m.month()] :
14335
  this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
14338
  var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
14339
  function localeMonthsShort (m, format) {
14340
  if (!m) {
14341
+ return isArray(this._monthsShort) ? this._monthsShort :
14342
+ this._monthsShort['standalone'];
14343
  }
14344
  return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
14345
  this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
14606
  }
14607
 
14608
  function createDate (y, m, d, h, M, s, ms) {
14609
+ // can't just apply() to create a date:
14610
+ // https://stackoverflow.com/q/181348
14611
  var date = new Date(y, m, d, h, M, s, ms);
14612
 
14613
+ // the date constructor remaps years 0-99 to 1900-1999
14614
  if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
14615
  date.setFullYear(y);
14616
  }
14620
  function createUTCDate (y) {
14621
  var date = new Date(Date.UTC.apply(null, arguments));
14622
 
14623
+ // the Date.UTC function remaps years 0-99 to 1900-1999
14624
  if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
14625
  date.setUTCFullYear(y);
14626
  }
14637
  return -fwdlw + fwd - 1;
14638
  }
14639
 
14640
+ // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
14641
  function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
14642
  var localWeekday = (7 + weekday - dow) % 7,
14643
  weekOffset = firstWeekOffset(year, dow, doy),
14838
  var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
14839
  function localeWeekdays (m, format) {
14840
  if (!m) {
14841
+ return isArray(this._weekdays) ? this._weekdays :
14842
+ this._weekdays['standalone'];
14843
  }
14844
  return isArray(this._weekdays) ? this._weekdays[m.day()] :
14845
  this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
15159
  addRegexToken('A', matchMeridiem);
15160
  addRegexToken('H', match1to2);
15161
  addRegexToken('h', match1to2);
15162
+ addRegexToken('k', match1to2);
15163
  addRegexToken('HH', match1to2, match2);
15164
  addRegexToken('hh', match1to2, match2);
15165
+ addRegexToken('kk', match1to2, match2);
15166
 
15167
  addRegexToken('hmm', match3to4);
15168
  addRegexToken('hmmss', match5to6);
15170
  addRegexToken('Hmmss', match5to6);
15171
 
15172
  addParseToken(['H', 'HH'], HOUR);
15173
+ addParseToken(['k', 'kk'], function (input, array, config) {
15174
+ var kInput = toInt(input);
15175
+ array[HOUR] = kInput === 24 ? 0 : kInput;
15176
+ });
15177
  addParseToken(['a', 'A'], function (input, array, config) {
15178
  config._isPm = config._locale.isPM(input);
15179
  config._meridiem = input;
15244
  longDateFormat: defaultLongDateFormat,
15245
  invalidDate: defaultInvalidDate,
15246
  ordinal: defaultOrdinal,
15247
+ dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
15248
  relativeTime: defaultRelativeTime,
15249
 
15250
  months: defaultLocaleMonths,
15302
  module && module.exports) {
15303
  try {
15304
  oldLocale = globalLocale._abbr;
15305
+ __webpack_require__(292)("./" + name);
15306
  // because defineLocale currently also sets the global locale, we
15307
  // want to undo that for lazy loaded locales
15308
  getSetGlobalLocale(oldLocale);
15555
  }
15556
  }
15557
 
15558
+ // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
15559
+ var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/;
15560
+
15561
+ // date and time from ref 2822 format
15562
+ function configFromRFC2822(config) {
15563
+ var string, match, dayFormat,
15564
+ dateFormat, timeFormat, tzFormat;
15565
+ var timezones = {
15566
+ ' GMT': ' +0000',
15567
+ ' EDT': ' -0400',
15568
+ ' EST': ' -0500',
15569
+ ' CDT': ' -0500',
15570
+ ' CST': ' -0600',
15571
+ ' MDT': ' -0600',
15572
+ ' MST': ' -0700',
15573
+ ' PDT': ' -0700',
15574
+ ' PST': ' -0800'
15575
+ };
15576
+ var military = 'YXWVUTSRQPONZABCDEFGHIKLM';
15577
+ var timezone, timezoneIndex;
15578
+
15579
+ string = config._i
15580
+ .replace(/\([^\)]*\)|[\n\t]/g, ' ') // Remove comments and folding whitespace
15581
+ .replace(/(\s\s+)/g, ' ') // Replace multiple-spaces with a single space
15582
+ .replace(/^\s|\s$/g, ''); // Remove leading and trailing spaces
15583
+ match = basicRfcRegex.exec(string);
15584
+
15585
+ if (match) {
15586
+ dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : '';
15587
+ dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY ');
15588
+ timeFormat = 'HH:mm' + (match[4] ? ':ss' : '');
15589
+
15590
+ // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
15591
+ if (match[1]) { // day of week given
15592
+ var momentDate = new Date(match[2]);
15593
+ var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()];
15594
+
15595
+ if (match[1].substr(0,3) !== momentDay) {
15596
+ getParsingFlags(config).weekdayMismatch = true;
15597
+ config._isValid = false;
15598
+ return;
15599
+ }
15600
+ }
15601
+
15602
+ switch (match[5].length) {
15603
+ case 2: // military
15604
+ if (timezoneIndex === 0) {
15605
+ timezone = ' +0000';
15606
+ } else {
15607
+ timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12;
15608
+ timezone = ((timezoneIndex < 0) ? ' -' : ' +') +
15609
+ (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00';
15610
+ }
15611
+ break;
15612
+ case 4: // Zone
15613
+ timezone = timezones[match[5]];
15614
+ break;
15615
+ default: // UT or +/-9999
15616
+ timezone = timezones[' GMT'];
15617
+ }
15618
+ match[5] = timezone;
15619
+ config._i = match.splice(1).join('');
15620
+ tzFormat = ' ZZ';
15621
+ config._f = dayFormat + dateFormat + timeFormat + tzFormat;
15622
+ configFromStringAndFormat(config);
15623
+ getParsingFlags(config).rfc2822 = true;
15624
+ } else {
15625
+ config._isValid = false;
15626
+ }
15627
+ }
15628
+
15629
  // date from iso format or fallback
15630
  function configFromString(config) {
15631
  var matched = aspNetJsonRegex.exec(config._i);
15638
  configFromISO(config);
15639
  if (config._isValid === false) {
15640
  delete config._isValid;
15641
+ } else {
15642
+ return;
15643
+ }
15644
+
15645
+ configFromRFC2822(config);
15646
+ if (config._isValid === false) {
15647
+ delete config._isValid;
15648
+ } else {
15649
+ return;
15650
  }
15651
+
15652
+ // Final attempt, use Input Fallback
15653
+ hooks.createFromInputFallback(config);
15654
  }
15655
 
15656
  hooks.createFromInputFallback = deprecate(
15657
+ 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
15658
+ 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
15659
  'discouraged and will be removed in an upcoming major release. Please refer to ' +
15660
  'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
15661
  function (config) {
15702
  }
15703
 
15704
  //if the day of the year is set, figure out what it is
15705
+ if (config._dayOfYear != null) {
15706
  yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
15707
 
15708
+ if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
15709
  getParsingFlags(config)._overflowDayOfYear = true;
15710
  }
15711
 
15809
  // constant that refers to the ISO standard
15810
  hooks.ISO_8601 = function () {};
15811
 
15812
+ // constant that refers to the RFC 2822 form
15813
+ hooks.RFC_2822 = function () {};
15814
+
15815
  // date from string and format string
15816
  function configFromStringAndFormat(config) {
15817
  // TODO: Move this to another part of the creation flow to prevent circular deps
15819
  configFromISO(config);
15820
  return;
15821
  }
15822
+ if (config._f === hooks.RFC_2822) {
15823
+ configFromRFC2822(config);
15824
+ return;
15825
+ }
15826
  config._a = [];
15827
  getParsingFlags(config).empty = true;
15828
 
16014
 
16015
  function configFromInput(config) {
16016
  var input = config._i;
16017
+ if (isUndefined(input)) {
16018
  config._d = new Date(hooks.now());
16019
  } else if (isDate(input)) {
16020
  config._d = new Date(input.valueOf());
16025
  return parseInt(obj, 10);
16026
  });
16027
  configFromArray(config);
16028
+ } else if (isObject(input)) {
16029
  configFromObject(config);
16030
  } else if (isNumber(input)) {
16031
  // from milliseconds
16126
  return Date.now ? Date.now() : +(new Date());
16127
  };
16128
 
16129
+ var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
16130
+
16131
+ function isDurationValid(m) {
16132
+ for (var key in m) {
16133
+ if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
16134
+ return false;
16135
+ }
16136
+ }
16137
+
16138
+ var unitHasDecimal = false;
16139
+ for (var i = 0; i < ordering.length; ++i) {
16140
+ if (m[ordering[i]]) {
16141
+ if (unitHasDecimal) {
16142
+ return false; // only allow non-integers for smallest unit
16143
+ }
16144
+ if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
16145
+ unitHasDecimal = true;
16146
+ }
16147
+ }
16148
+ }
16149
+
16150
+ return true;
16151
+ }
16152
+
16153
+ function isValid$1() {
16154
+ return this._isValid;
16155
+ }
16156
+
16157
+ function createInvalid$1() {
16158
+ return createDuration(NaN);
16159
+ }
16160
+
16161
  function Duration (duration) {
16162
  var normalizedInput = normalizeObjectUnits(duration),
16163
  years = normalizedInput.year || 0,
16170
  seconds = normalizedInput.second || 0,
16171
  milliseconds = normalizedInput.millisecond || 0;
16172
 
16173
+ this._isValid = isDurationValid(normalizedInput);
16174
+
16175
  // representation for dateAddRemove
16176
  this._milliseconds = +milliseconds +
16177
  seconds * 1e3 + // 1000
16295
  // a second time. In case it wants us to change the offset again
16296
  // _changeInProgress == true case, then we have to adjust, because
16297
  // there is no such time in the given timezone.
16298
+ function getSetOffset (input, keepLocalTime, keepMinutes) {
16299
  var offset = this._offset || 0,
16300
  localAdjust;
16301
  if (!this.isValid()) {
16307
  if (input === null) {
16308
  return this;
16309
  }
16310
+ } else if (Math.abs(input) < 16 && !keepMinutes) {
16311
  input = input * 60;
16312
  }
16313
  if (!this._isUTC && keepLocalTime) {
16365
 
16366
  function setOffsetToParsedOffset () {
16367
  if (this._tzm != null) {
16368
+ this.utcOffset(this._tzm, false, true);
16369
  } else if (typeof this._i === 'string') {
16370
  var tZone = offsetFromString(matchOffset, this._i);
16371
  if (tZone != null) {
16497
  }
16498
 
16499
  createDuration.fn = Duration.prototype;
16500
+ createDuration.invalid = createInvalid$1;
16501
 
16502
  function parseIso (inp, sign) {
16503
  // We'd normally use ~~inp for this, but unfortunately it also
16734
  return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
16735
  }
16736
 
16737
+ function toISOString() {
16738
+ if (!this.isValid()) {
16739
+ return null;
16740
+ }
16741
  var m = this.clone().utc();
16742
+ if (m.year() < 0 || m.year() > 9999) {
 
 
 
 
 
 
 
16743
  return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
16744
  }
16745
+ if (isFunction(Date.prototype.toISOString)) {
16746
+ // native implementation is ~50x faster, use it when we can
16747
+ return this.toDate().toISOString();
16748
+ }
16749
+ return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
16750
  }
16751
 
16752
  /**
16766
  zone = 'Z';
16767
  }
16768
  var prefix = '[' + func + '("]';
16769
+ var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
16770
  var datetime = '-MM-DD[T]HH:mm:ss.SSS';
16771
  var suffix = zone + '[")]';
16772
 
16934
  return this.isValid() ? this.toISOString() : null;
16935
  }
16936
 
16937
+ function isValid$2 () {
16938
  return isValid(this);
16939
  }
16940
 
17094
  addRegexToken('D', match1to2);
17095
  addRegexToken('DD', match1to2, match2);
17096
  addRegexToken('Do', function (isStrict, locale) {
17097
+ // TODO: Remove "ordinalParse" fallback in next major release.
17098
+ return isStrict ?
17099
+ (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
17100
+ locale._dayOfMonthOrdinalParseLenient;
17101
  });
17102
 
17103
  addParseToken(['D', 'DD'], DATE);
17277
  proto.isSame = isSame;
17278
  proto.isSameOrAfter = isSameOrAfter;
17279
  proto.isSameOrBefore = isSameOrBefore;
17280
+ proto.isValid = isValid$2;
17281
  proto.lang = lang;
17282
  proto.locale = locale;
17283
  proto.localeData = localeData;
17502
  }
17503
 
17504
  getSetGlobalLocale('en', {
17505
+ dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
17506
  ordinal : function (number) {
17507
  var b = number % 10,
17508
  output = (toInt(number % 100 / 10) === 1) ? 'th' :
17623
  }
17624
 
17625
  function as (units) {
17626
+ if (!this.isValid()) {
17627
+ return NaN;
17628
+ }
17629
  var days;
17630
  var months;
17631
  var milliseconds = this._milliseconds;
17654
 
17655
  // TODO: Use this.as('ms')?
17656
  function valueOf$1 () {
17657
+ if (!this.isValid()) {
17658
+ return NaN;
17659
+ }
17660
  return (
17661
  this._milliseconds +
17662
  this._days * 864e5 +
17682
 
17683
  function get$2 (units) {
17684
  units = normalizeUnits(units);
17685
+ return this.isValid() ? this[units + 's']() : NaN;
17686
  }
17687
 
17688
  function makeGetter(name) {
17689
  return function () {
17690
+ return this.isValid() ? this._data[name] : NaN;
17691
  };
17692
  }
17693
 
17705
 
17706
  var round = Math.round;
17707
  var thresholds = {
17708
+ ss: 44, // a few seconds to seconds
17709
+ s : 45, // seconds to minute
17710
+ m : 45, // minutes to hour
17711
+ h : 22, // hours to day
17712
+ d : 26, // days to month
17713
+ M : 11 // months to year
17714
  };
17715
 
17716
  // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
17727
  var months = round(duration.as('M'));
17728
  var years = round(duration.as('y'));
17729
 
17730
+ var a = seconds <= thresholds.ss && ['s', seconds] ||
17731
+ seconds < thresholds.s && ['ss', seconds] ||
17732
+ minutes <= 1 && ['m'] ||
17733
+ minutes < thresholds.m && ['mm', minutes] ||
17734
+ hours <= 1 && ['h'] ||
17735
+ hours < thresholds.h && ['hh', hours] ||
17736
+ days <= 1 && ['d'] ||
17737
+ days < thresholds.d && ['dd', days] ||
17738
+ months <= 1 && ['M'] ||
17739
+ months < thresholds.M && ['MM', months] ||
17740
+ years <= 1 && ['y'] || ['yy', years];
17741
 
17742
  a[2] = withoutSuffix;
17743
  a[3] = +posNegDuration > 0;
17766
  return thresholds[threshold];
17767
  }
17768
  thresholds[threshold] = limit;
17769
+ if (threshold === 's') {
17770
+ thresholds.ss = limit - 1;
17771
+ }
17772
  return true;
17773
  }
17774
 
17775
  function humanize (withSuffix) {
17776
+ if (!this.isValid()) {
17777
+ return this.localeData().invalidDate();
17778
+ }
17779
+
17780
  var locale = this.localeData();
17781
  var output = relativeTime$1(this, !withSuffix, locale);
17782
 
17797
  // This is because there is no context-free conversion between hours and days
17798
  // (think of clock changes)
17799
  // and also not between days and months (28-31 days per month)
17800
+ if (!this.isValid()) {
17801
+ return this.localeData().invalidDate();
17802
+ }
17803
+
17804
  var seconds = abs$1(this._milliseconds) / 1000;
17805
  var days = abs$1(this._days);
17806
  var months = abs$1(this._months);
17845
 
17846
  var proto$2 = Duration.prototype;
17847
 
17848
+ proto$2.isValid = isValid$1;
17849
  proto$2.abs = abs;
17850
  proto$2.add = add$1;
17851
  proto$2.subtract = subtract$1;
17901
  // Side effect imports
17902
 
17903
 
17904
+ hooks.version = '2.18.1';
17905
 
17906
  setHookCallback(createLocal);
17907
 
17937
 
17938
  })));
17939
 
17940
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(291)(module)))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17941
 
17942
  /***/ },
17943
+ /* 291 */,
17944
+ /* 292 */
17945
  /***/ function(module, exports, __webpack_require__) {
17946
 
17947
  var map = {
17948
+ "./af": 293,
17949
+ "./af.js": 293,
17950
+ "./ar": 294,
17951
+ "./ar-dz": 295,
17952
+ "./ar-dz.js": 295,
17953
+ "./ar-kw": 296,
17954
+ "./ar-kw.js": 296,
17955
+ "./ar-ly": 297,
17956
+ "./ar-ly.js": 297,
17957
+ "./ar-ma": 298,
17958
+ "./ar-ma.js": 298,
17959
+ "./ar-sa": 299,
17960
+ "./ar-sa.js": 299,
17961
+ "./ar-tn": 300,
17962
+ "./ar-tn.js": 300,
17963
+ "./ar.js": 294,
17964
+ "./az": 301,
17965
+ "./az.js": 301,
17966
+ "./be": 302,
17967
+ "./be.js": 302,
17968
+ "./bg": 303,
17969
+ "./bg.js": 303,
17970
+ "./bn": 304,
17971
+ "./bn.js": 304,
17972
+ "./bo": 305,
17973
+ "./bo.js": 305,
17974
+ "./br": 306,
17975
+ "./br.js": 306,
17976
+ "./bs": 307,
17977
+ "./bs.js": 307,
17978
+ "./ca": 308,
17979
+ "./ca.js": 308,
17980
+ "./cs": 309,
17981
+ "./cs.js": 309,
17982
+ "./cv": 310,
17983
+ "./cv.js": 310,
17984
+ "./cy": 311,
17985
+ "./cy.js": 311,
17986
+ "./da": 312,
17987
+ "./da.js": 312,
17988
+ "./de": 313,
17989
+ "./de-at": 314,
17990
+ "./de-at.js": 314,
17991
+ "./de-ch": 315,
17992
+ "./de-ch.js": 315,
17993
+ "./de.js": 313,
17994
+ "./dv": 316,
17995
+ "./dv.js": 316,
17996
+ "./el": 317,
17997
+ "./el.js": 317,
17998
+ "./en-au": 318,
17999
+ "./en-au.js": 318,
18000
+ "./en-ca": 319,
18001
+ "./en-ca.js": 319,
18002
+ "./en-gb": 320,
18003
+ "./en-gb.js": 320,
18004
+ "./en-ie": 321,
18005
+ "./en-ie.js": 321,
18006
+ "./en-nz": 322,
18007
+ "./en-nz.js": 322,
18008
+ "./eo": 323,
18009
+ "./eo.js": 323,
18010
+ "./es": 324,
18011
+ "./es-do": 325,
18012
+ "./es-do.js": 325,
18013
+ "./es.js": 324,
18014
+ "./et": 326,
18015
+ "./et.js": 326,
18016
+ "./eu": 327,
18017
+ "./eu.js": 327,
18018
+ "./fa": 328,
18019
+ "./fa.js": 328,
18020
+ "./fi": 329,
18021
+ "./fi.js": 329,
18022
+ "./fo": 330,
18023
+ "./fo.js": 330,
18024
+ "./fr": 331,
18025
+ "./fr-ca": 332,
18026
+ "./fr-ca.js": 332,
18027
+ "./fr-ch": 333,
18028
+ "./fr-ch.js": 333,
18029
+ "./fr.js": 331,
18030
+ "./fy": 334,
18031
+ "./fy.js": 334,
18032
+ "./gd": 335,
18033
+ "./gd.js": 335,
18034
+ "./gl": 336,
18035
+ "./gl.js": 336,
18036
+ "./gom-latn": 337,
18037
+ "./gom-latn.js": 337,
18038
+ "./he": 338,
18039
+ "./he.js": 338,
18040
+ "./hi": 339,
18041
+ "./hi.js": 339,
18042
+ "./hr": 340,
18043
+ "./hr.js": 340,
18044
+ "./hu": 341,
18045
+ "./hu.js": 341,
18046
+ "./hy-am": 342,
18047
+ "./hy-am.js": 342,
18048
+ "./id": 343,
18049
+ "./id.js": 343,
18050
+ "./is": 344,
18051
+ "./is.js": 344,
18052
+ "./it": 345,
18053
+ "./it.js": 345,
18054
+ "./ja": 346,
18055
+ "./ja.js": 346,
18056
+ "./jv": 347,
18057
+ "./jv.js": 347,
18058
+ "./ka": 348,
18059
+ "./ka.js": 348,
18060
+ "./kk": 349,
18061
+ "./kk.js": 349,
18062
+ "./km": 350,
18063
+ "./km.js": 350,
18064
+ "./kn": 351,
18065
+ "./kn.js": 351,
18066
+ "./ko": 352,
18067
+ "./ko.js": 352,
18068
+ "./ky": 353,
18069
+ "./ky.js": 353,
18070
+ "./lb": 354,
18071
+ "./lb.js": 354,
18072
+ "./lo": 355,
18073
+ "./lo.js": 355,
18074
+ "./lt": 356,
18075
+ "./lt.js": 356,
18076
+ "./lv": 357,
18077
+ "./lv.js": 357,
18078
+ "./me": 358,
18079
+ "./me.js": 358,
18080
+ "./mi": 359,
18081
+ "./mi.js": 359,
18082
+ "./mk": 360,
18083
+ "./mk.js": 360,
18084
+ "./ml": 361,
18085
+ "./ml.js": 361,
18086
+ "./mr": 362,
18087
+ "./mr.js": 362,
18088
+ "./ms": 363,
18089
+ "./ms-my": 364,
18090
+ "./ms-my.js": 364,
18091
+ "./ms.js": 363,
18092
+ "./my": 365,
18093
+ "./my.js": 365,
18094
+ "./nb": 366,
18095
+ "./nb.js": 366,
18096
+ "./ne": 367,
18097
+ "./ne.js": 367,
18098
+ "./nl": 368,
18099
+ "./nl-be": 369,
18100
+ "./nl-be.js": 369,
18101
+ "./nl.js": 368,
18102
+ "./nn": 370,
18103
+ "./nn.js": 370,
18104
+ "./pa-in": 371,
18105
+ "./pa-in.js": 371,
18106
+ "./pl": 372,
18107
+ "./pl.js": 372,
18108
+ "./pt": 373,
18109
+ "./pt-br": 374,
18110
+ "./pt-br.js": 374,
18111
+ "./pt.js": 373,
18112
+ "./ro": 375,
18113
+ "./ro.js": 375,
18114
+ "./ru": 376,
18115
+ "./ru.js": 376,
18116
+ "./sd": 377,
18117
+ "./sd.js": 377,
18118
+ "./se": 378,
18119
+ "./se.js": 378,
18120
+ "./si": 379,
18121
+ "./si.js": 379,
18122
+ "./sk": 380,
18123
+ "./sk.js": 380,
18124
+ "./sl": 381,
18125
+ "./sl.js": 381,
18126
+ "./sq": 382,
18127
+ "./sq.js": 382,
18128
+ "./sr": 383,
18129
+ "./sr-cyrl": 384,
18130
+ "./sr-cyrl.js": 384,
18131
+ "./sr.js": 383,
18132
+ "./ss": 385,
18133
+ "./ss.js": 385,
18134
+ "./sv": 386,
18135
+ "./sv.js": 386,
18136
+ "./sw": 387,
18137
+ "./sw.js": 387,
18138
+ "./ta": 388,
18139
+ "./ta.js": 388,
18140
+ "./te": 389,
18141
+ "./te.js": 389,
18142
+ "./tet": 390,
18143
+ "./tet.js": 390,
18144
+ "./th": 391,
18145
+ "./th.js": 391,
18146
+ "./tl-ph": 392,
18147
+ "./tl-ph.js": 392,
18148
+ "./tlh": 393,
18149
+ "./tlh.js": 393,
18150
+ "./tr": 394,
18151
+ "./tr.js": 394,
18152
+ "./tzl": 395,
18153
+ "./tzl.js": 395,
18154
+ "./tzm": 396,
18155
+ "./tzm-latn": 397,
18156
+ "./tzm-latn.js": 397,
18157
+ "./tzm.js": 396,
18158
+ "./uk": 398,
18159
+ "./uk.js": 398,
18160
+ "./ur": 399,
18161
+ "./ur.js": 399,
18162
+ "./uz": 400,
18163
+ "./uz-latn": 401,
18164
+ "./uz-latn.js": 401,
18165
+ "./uz.js": 400,
18166
+ "./vi": 402,
18167
+ "./vi.js": 402,
18168
+ "./x-pseudo": 403,
18169
+ "./x-pseudo.js": 403,
18170
+ "./yo": 404,
18171
+ "./yo.js": 404,
18172
+ "./zh-cn": 405,
18173
+ "./zh-cn.js": 405,
18174
+ "./zh-hk": 406,
18175
+ "./zh-hk.js": 406,
18176
+ "./zh-tw": 407,
18177
+ "./zh-tw.js": 407
18178
  };
18179
  function webpackContext(req) {
18180
  return __webpack_require__(webpackContextResolve(req));
18187
  };
18188
  webpackContext.resolve = webpackContextResolve;
18189
  module.exports = webpackContext;
18190
+ webpackContext.id = 292;
18191
 
18192
 
18193
  /***/ },
18194
+ /* 293 */
18195
  /***/ function(module, exports, __webpack_require__) {
18196
 
18197
  //! moment.js locale configuration
18199
  //! author : Werner Mollentze : https://github.com/wernerm
18200
 
18201
  ;(function (global, factory) {
18202
+ true ? factory(__webpack_require__(290)) :
18203
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
18204
  factory(global.moment)
18205
  }(this, (function (moment) { 'use strict';
18253
  y : '\'n jaar',
18254
  yy : '%d jaar'
18255
  },
18256
+ dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
18257
  ordinal : function (number) {
18258
  return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
18259
  },
18269
 
18270
 
18271
  /***/ },
18272
+ /* 294 */
18273
  /***/ function(module, exports, __webpack_require__) {
18274
 
18275
  //! moment.js locale configuration
18279
  //! author : forabi https://github.com/forabi
18280
 
18281
  ;(function (global, factory) {
18282
+ true ? factory(__webpack_require__(290)) :
18283
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
18284
  factory(global.moment)
18285
  }(this, (function (moment) { 'use strict';
18416
 
18417
 
18418
  /***/ },
18419
+ /* 295 */
18420
  /***/ function(module, exports, __webpack_require__) {
18421
 
18422
  //! moment.js locale configuration
18424
  //! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
18425
 
18426
  ;(function (global, factory) {
18427
+ true ? factory(__webpack_require__(290)) :
18428
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
18429
  factory(global.moment)
18430
  }(this, (function (moment) { 'use strict';
18480
 
18481
 
18482
  /***/ },
18483
+ /* 296 */
18484
+ /***/ function(module, exports, __webpack_require__) {
18485
+
18486
+ //! moment.js locale configuration
18487
+ //! locale : Arabic (Kuwait) [ar-kw]
18488
+ //! author : Nusret Parlak: https://github.com/nusretparlak
18489
+
18490
+ ;(function (global, factory) {
18491
+ true ? factory(__webpack_require__(290)) :
18492
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
18493
+ factory(global.moment)
18494
+ }(this, (function (moment) { 'use strict';
18495
+
18496
+
18497
+ var arKw = moment.defineLocale('ar-kw', {
18498
+ months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
18499
+ monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
18500
+ weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
18501
+ weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
18502
+ weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
18503
+ weekdaysParseExact : true,
18504
+ longDateFormat : {
18505
+ LT : 'HH:mm',
18506
+ LTS : 'HH:mm:ss',
18507
+ L : 'DD/MM/YYYY',
18508
+ LL : 'D MMMM YYYY',
18509
+ LLL : 'D MMMM YYYY HH:mm',
18510
+ LLLL : 'dddd D MMMM YYYY HH:mm'
18511
+ },
18512
+ calendar : {
18513
+ sameDay: '[اليوم على الساعة] LT',
18514
+ nextDay: '[غدا على الساعة] LT',
18515
+ nextWeek: 'dddd [على الساعة] LT',
18516
+ lastDay: '[أمس على الساعة] LT',
18517
+ lastWeek: 'dddd [على الساعة] LT',
18518
+ sameElse: 'L'
18519
+ },
18520
+ relativeTime : {
18521
+ future : 'في %s',
18522
+ past : 'منذ %s',
18523
+ s : 'ثوان',
18524
+ m : 'دقيقة',
18525
+ mm : '%d دقائق',
18526
+ h : 'ساعة',
18527
+ hh : '%d ساعات',
18528
+ d : 'يوم',
18529
+ dd : '%d أيام',
18530
+ M : 'شهر',
18531
+ MM : '%d أشهر',
18532
+ y : 'سنة',
18533
+ yy : '%d سنوات'
18534
+ },
18535
+ week : {
18536
+ dow : 0, // Sunday is the first day of the week.
18537
+ doy : 12 // The week that contains Jan 1st is the first week of the year.
18538
+ }
18539
+ });
18540
+
18541
+ return arKw;
18542
+
18543
+ })));
18544
+
18545
+
18546
+ /***/ },
18547
+ /* 297 */
18548
  /***/ function(module, exports, __webpack_require__) {
18549
 
18550
  //! moment.js locale configuration
18552
  //! author : Ali Hmer: https://github.com/kikoanis
18553
 
18554
  ;(function (global, factory) {
18555
+ true ? factory(__webpack_require__(290)) :
18556
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
18557
  factory(global.moment)
18558
  }(this, (function (moment) { 'use strict';
18675
 
18676
 
18677
  /***/ },
18678
+ /* 298 */
18679
  /***/ function(module, exports, __webpack_require__) {
18680
 
18681
  //! moment.js locale configuration
18684
  //! author : Abdel Said : https://github.com/abdelsaid
18685
 
18686
  ;(function (global, factory) {
18687
+ true ? factory(__webpack_require__(290)) :
18688
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
18689
  factory(global.moment)
18690
  }(this, (function (moment) { 'use strict';
18740
 
18741
 
18742
  /***/ },
18743
+ /* 299 */
18744
  /***/ function(module, exports, __webpack_require__) {
18745
 
18746
  //! moment.js locale configuration
18748
  //! author : Suhail Alkowaileet : https://github.com/xsoh
18749
 
18750
  ;(function (global, factory) {
18751
+ true ? factory(__webpack_require__(290)) :
18752
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
18753
  factory(global.moment)
18754
  }(this, (function (moment) { 'use strict';
18850
 
18851
 
18852
  /***/ },
18853
+ /* 300 */
18854
  /***/ function(module, exports, __webpack_require__) {
18855
 
18856
  //! moment.js locale configuration
18858
  //! author : Nader Toukabri : https://github.com/naderio
18859
 
18860
  ;(function (global, factory) {
18861
+ true ? factory(__webpack_require__(290)) :
18862
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
18863
  factory(global.moment)
18864
  }(this, (function (moment) { 'use strict';
18914
 
18915
 
18916
  /***/ },
18917
+ /* 301 */
18918
  /***/ function(module, exports, __webpack_require__) {
18919
 
18920
  //! moment.js locale configuration
18922
  //! author : topchiyev : https://github.com/topchiyev
18923
 
18924
  ;(function (global, factory) {
18925
+ true ? factory(__webpack_require__(290)) :
18926
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
18927
  factory(global.moment)
18928
  }(this, (function (moment) { 'use strict';
19002
  return 'axşam';
19003
  }
19004
  },
19005
+ dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
19006
  ordinal : function (number) {
19007
  if (number === 0) { // special case for zero
19008
  return number + '-ıncı';
19024
 
19025
 
19026
  /***/ },
19027
+ /* 302 */
19028
  /***/ function(module, exports, __webpack_require__) {
19029
 
19030
  //! moment.js locale configuration
19034
  //! Author : Menelion Elensúle : https://github.com/Oire
19035
 
19036
  ;(function (global, factory) {
19037
+ true ? factory(__webpack_require__(290)) :
19038
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
19039
  factory(global.moment)
19040
  }(this, (function (moment) { 'use strict';
19136
  return 'вечара';
19137
  }
19138
  },
19139
+ dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
19140
  ordinal: function (number, period) {
19141
  switch (period) {
19142
  case 'M':
19163
 
19164
 
19165
  /***/ },
19166
+ /* 303 */
19167
  /***/ function(module, exports, __webpack_require__) {
19168
 
19169
  //! moment.js locale configuration
19171
  //! author : Krasen Borisov : https://github.com/kraz
19172
 
19173
  ;(function (global, factory) {
19174
+ true ? factory(__webpack_require__(290)) :
19175
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
19176
  factory(global.moment)
19177
  }(this, (function (moment) { 'use strict';
19226
  y : 'година',
19227
  yy : '%d години'
19228
  },
19229
+ dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
19230
  ordinal : function (number) {
19231
  var lastDigit = number % 10,
19232
  last2Digits = number % 100;
19258
 
19259
 
19260
  /***/ },
19261
+ /* 304 */
19262
  /***/ function(module, exports, __webpack_require__) {
19263
 
19264
  //! moment.js locale configuration
19266
  //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
19267
 
19268
  ;(function (global, factory) {
19269
+ true ? factory(__webpack_require__(290)) :
19270
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
19271
  factory(global.moment)
19272
  }(this, (function (moment) { 'use strict';
19382
 
19383
 
19384
  /***/ },
19385
+ /* 305 */
19386
  /***/ function(module, exports, __webpack_require__) {
19387
 
19388
  //! moment.js locale configuration
19390
  //! author : Thupten N. Chakrishar : https://github.com/vajradog
19391
 
19392
  ;(function (global, factory) {
19393
+ true ? factory(__webpack_require__(290)) :
19394
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
19395
  factory(global.moment)
19396
  }(this, (function (moment) { 'use strict';
19506
 
19507
 
19508
  /***/ },
19509
+ /* 306 */
19510
  /***/ function(module, exports, __webpack_require__) {
19511
 
19512
  //! moment.js locale configuration
19514
  //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
19515
 
19516
  ;(function (global, factory) {
19517
+ true ? factory(__webpack_require__(290)) :
19518
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
19519
  factory(global.moment)
19520
  }(this, (function (moment) { 'use strict';
19602
  y : 'ur bloaz',
19603
  yy : specialMutationForYears
19604
  },
19605
+ dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
19606
  ordinal : function (number) {
19607
  var output = (number === 1) ? 'añ' : 'vet';
19608
  return number + output;
19619
 
19620
 
19621
  /***/ },
19622
+ /* 307 */
19623
  /***/ function(module, exports, __webpack_require__) {
19624
 
19625
  //! moment.js locale configuration
19628
  //! based on (hr) translation by Bojan Marković
19629
 
19630
  ;(function (global, factory) {
19631
+ true ? factory(__webpack_require__(290)) :
19632
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
19633
  factory(global.moment)
19634
  }(this, (function (moment) { 'use strict';
19753
  y : 'godinu',
19754
  yy : translate
19755
  },
19756
+ dayOfMonthOrdinalParse: /\d{1,2}\./,
19757
  ordinal : '%d.',
19758
  week : {
19759
  dow : 1, // Monday is the first day of the week.
19767
 
19768
 
19769
  /***/ },
19770
+ /* 308 */
19771
  /***/ function(module, exports, __webpack_require__) {
19772
 
19773
  //! moment.js locale configuration
19775
  //! author : Juan G. Hurtado : https://github.com/juanghurtado
19776
 
19777
  ;(function (global, factory) {
19778
+ true ? factory(__webpack_require__(290)) :
19779
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
19780
  factory(global.moment)
19781
  }(this, (function (moment) { 'use strict';
19782
 
19783
 
19784
  var ca = moment.defineLocale('ca', {
19785
+ months : {
19786
+ standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
19787
+ format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'),
19788
+ isFormat: /D[oD]?(\s)+MMMM/
19789
+ },
19790
+ monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),
19791
  monthsParseExact : true,
19792
  weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
19793
  weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
19797
  LT : 'H:mm',
19798
  LTS : 'H:mm:ss',
19799
  L : 'DD/MM/YYYY',
19800
+ LL : '[el] D MMMM [de] YYYY',
19801
+ ll : 'D MMM YYYY',
19802
+ LLL : '[el] D MMMM [de] YYYY [a les] H:mm',
19803
+ lll : 'D MMM YYYY, H:mm',
19804
+ LLLL : '[el] dddd D MMMM [de] YYYY [a les] H:mm',
19805
+ llll : 'ddd D MMM YYYY, H:mm'
19806
  },
19807
  calendar : {
19808
  sameDay : function () {
19837
  y : 'un any',
19838
  yy : '%d anys'
19839
  },
19840
+ dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
19841
  ordinal : function (number, period) {
19842
  var output = (number === 1) ? 'r' :
19843
  (number === 2) ? 'n' :
19860
 
19861
 
19862
  /***/ },
19863
+ /* 309 */
19864
  /***/ function(module, exports, __webpack_require__) {
19865
 
19866
  //! moment.js locale configuration
19868
  //! author : petrbela : https://github.com/petrbela
19869
 
19870
  ;(function (global, factory) {
19871
+ true ? factory(__webpack_require__(290)) :
19872
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
19873
  factory(global.moment)
19874
  }(this, (function (moment) { 'use strict';
20023
  y : translate,
20024
  yy : translate
20025
  },
20026
+ dayOfMonthOrdinalParse : /\d{1,2}\./,
20027
  ordinal : '%d.',
20028
  week : {
20029
  dow : 1, // Monday is the first day of the week.
20037
 
20038
 
20039
  /***/ },
20040
+ /* 310 */
20041
  /***/ function(module, exports, __webpack_require__) {
20042
 
20043
  //! moment.js locale configuration
20045
  //! author : Anatoly Mironov : https://github.com/mirontoli
20046
 
20047
  ;(function (global, factory) {
20048
+ true ? factory(__webpack_require__(290)) :
20049
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20050
  factory(global.moment)
20051
  }(this, (function (moment) { 'use strict';
20091
  y : 'пӗр ҫул',
20092
  yy : '%d ҫул'
20093
  },
20094
+ dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
20095
  ordinal : '%d-мӗш',
20096
  week : {
20097
  dow : 1, // Monday is the first day of the week.
20105
 
20106
 
20107
  /***/ },
20108
+ /* 311 */
20109
  /***/ function(module, exports, __webpack_require__) {
20110
 
20111
  //! moment.js locale configuration
20114
  //! author : https://github.com/ryangreaves
20115
 
20116
  ;(function (global, factory) {
20117
+ true ? factory(__webpack_require__(290)) :
20118
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20119
  factory(global.moment)
20120
  }(this, (function (moment) { 'use strict';
20159
  y: 'blwyddyn',
20160
  yy: '%d flynedd'
20161
  },
20162
+ dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
20163
  // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
20164
  ordinal: function (number) {
20165
  var b = number,
20191
 
20192
 
20193
  /***/ },
20194
+ /* 312 */
20195
  /***/ function(module, exports, __webpack_require__) {
20196
 
20197
  //! moment.js locale configuration
20199
  //! author : Ulrik Nielsen : https://github.com/mrbase
20200
 
20201
  ;(function (global, factory) {
20202
+ true ? factory(__webpack_require__(290)) :
20203
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20204
  factory(global.moment)
20205
  }(this, (function (moment) { 'use strict';
20217
  L : 'DD/MM/YYYY',
20218
  LL : 'D. MMMM YYYY',
20219
  LLL : 'D. MMMM YYYY HH:mm',
20220
+ LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
20221
  },
20222
  calendar : {
20223
+ sameDay : '[i dag kl.] LT',
20224
+ nextDay : '[i morgen kl.] LT',
20225
+ nextWeek : 'dddd [kl.] LT',
20226
+ lastDay : '[i går kl.] LT',
20227
+ lastWeek : '[i] dddd[s kl.] LT',
20228
  sameElse : 'L'
20229
  },
20230
  relativeTime : {
20242
  y : 'et år',
20243
  yy : '%d år'
20244
  },
20245
+ dayOfMonthOrdinalParse: /\d{1,2}\./,
20246
  ordinal : '%d.',
20247
  week : {
20248
  dow : 1, // Monday is the first day of the week.
20256
 
20257
 
20258
  /***/ },
20259
+ /* 313 */
20260
  /***/ function(module, exports, __webpack_require__) {
20261
 
20262
  //! moment.js locale configuration
20266
  //! author : Mikolaj Dadela : https://github.com/mik01aj
20267
 
20268
  ;(function (global, factory) {
20269
+ true ? factory(__webpack_require__(290)) :
20270
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20271
  factory(global.moment)
20272
  }(this, (function (moment) { 'use strict';
20325
  y : processRelativeTime,
20326
  yy : processRelativeTime
20327
  },
20328
+ dayOfMonthOrdinalParse: /\d{1,2}\./,
20329
  ordinal : '%d.',
20330
  week : {
20331
  dow : 1, // Monday is the first day of the week.
20339
 
20340
 
20341
  /***/ },
20342
+ /* 314 */
20343
  /***/ function(module, exports, __webpack_require__) {
20344
 
20345
  //! moment.js locale configuration
20350
  //! author : Mikolaj Dadela : https://github.com/mik01aj
20351
 
20352
  ;(function (global, factory) {
20353
+ true ? factory(__webpack_require__(290)) :
20354
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20355
  factory(global.moment)
20356
  }(this, (function (moment) { 'use strict';
20409
  y : processRelativeTime,
20410
  yy : processRelativeTime
20411
  },
20412
+ dayOfMonthOrdinalParse: /\d{1,2}\./,
20413
  ordinal : '%d.',
20414
  week : {
20415
  dow : 1, // Monday is the first day of the week.
20423
 
20424
 
20425
  /***/ },
20426
+ /* 315 */
20427
+ /***/ function(module, exports, __webpack_require__) {
20428
+
20429
+ //! moment.js locale configuration
20430
+ //! locale : German (Switzerland) [de-ch]
20431
+ //! author : sschueller : https://github.com/sschueller
20432
+
20433
+ ;(function (global, factory) {
20434
+ true ? factory(__webpack_require__(290)) :
20435
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20436
+ factory(global.moment)
20437
+ }(this, (function (moment) { 'use strict';
20438
+
20439
+
20440
+ // based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de#
20441
+
20442
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
20443
+ var format = {
20444
+ 'm': ['eine Minute', 'einer Minute'],
20445
+ 'h': ['eine Stunde', 'einer Stunde'],
20446
+ 'd': ['ein Tag', 'einem Tag'],
20447
+ 'dd': [number + ' Tage', number + ' Tagen'],
20448
+ 'M': ['ein Monat', 'einem Monat'],
20449
+ 'MM': [number + ' Monate', number + ' Monaten'],
20450
+ 'y': ['ein Jahr', 'einem Jahr'],
20451
+ 'yy': [number + ' Jahre', number + ' Jahren']
20452
+ };
20453
+ return withoutSuffix ? format[key][0] : format[key][1];
20454
+ }
20455
+
20456
+ var deCh = moment.defineLocale('de-ch', {
20457
+ months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
20458
+ monthsShort : 'Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'),
20459
+ monthsParseExact : true,
20460
+ weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
20461
+ weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
20462
+ weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
20463
+ weekdaysParseExact : true,
20464
+ longDateFormat : {
20465
+ LT: 'HH.mm',
20466
+ LTS: 'HH.mm.ss',
20467
+ L : 'DD.MM.YYYY',
20468
+ LL : 'D. MMMM YYYY',
20469
+ LLL : 'D. MMMM YYYY HH.mm',
20470
+ LLLL : 'dddd, D. MMMM YYYY HH.mm'
20471
+ },
20472
+ calendar : {
20473
+ sameDay: '[heute um] LT [Uhr]',
20474
+ sameElse: 'L',
20475
+ nextDay: '[morgen um] LT [Uhr]',
20476
+ nextWeek: 'dddd [um] LT [Uhr]',
20477
+ lastDay: '[gestern um] LT [Uhr]',
20478
+ lastWeek: '[letzten] dddd [um] LT [Uhr]'
20479
+ },
20480
+ relativeTime : {
20481
+ future : 'in %s',
20482
+ past : 'vor %s',
20483
+ s : 'ein paar Sekunden',
20484
+ m : processRelativeTime,
20485
+ mm : '%d Minuten',
20486
+ h : processRelativeTime,
20487
+ hh : '%d Stunden',
20488
+ d : processRelativeTime,
20489
+ dd : processRelativeTime,
20490
+ M : processRelativeTime,
20491
+ MM : processRelativeTime,
20492
+ y : processRelativeTime,
20493
+ yy : processRelativeTime
20494
+ },
20495
+ dayOfMonthOrdinalParse: /\d{1,2}\./,
20496
+ ordinal : '%d.',
20497
+ week : {
20498
+ dow : 1, // Monday is the first day of the week.
20499
+ doy : 4 // The week that contains Jan 4th is the first week of the year.
20500
+ }
20501
+ });
20502
+
20503
+ return deCh;
20504
+
20505
+ })));
20506
+
20507
+
20508
+ /***/ },
20509
+ /* 316 */
20510
  /***/ function(module, exports, __webpack_require__) {
20511
 
20512
  //! moment.js locale configuration
20514
  //! author : Jawish Hameed : https://github.com/jawish
20515
 
20516
  ;(function (global, factory) {
20517
+ true ? factory(__webpack_require__(290)) :
20518
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20519
  factory(global.moment)
20520
  }(this, (function (moment) { 'use strict';
20611
 
20612
 
20613
  /***/ },
20614
+ /* 317 */
20615
  /***/ function(module, exports, __webpack_require__) {
20616
 
20617
  //! moment.js locale configuration
20619
  //! author : Aggelos Karalias : https://github.com/mehiel
20620
 
20621
  ;(function (global, factory) {
20622
+ true ? factory(__webpack_require__(290)) :
20623
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20624
  factory(global.moment)
20625
  }(this, (function (moment) { 'use strict';
20633
  monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
20634
  monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
20635
  months : function (momentToFormat, format) {
20636
+ if (!momentToFormat) {
20637
+ return this._monthsNominativeEl;
20638
+ } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
20639
  return this._monthsGenitiveEl[momentToFormat.month()];
20640
  } else {
20641
  return this._monthsNominativeEl[momentToFormat.month()];
20702
  y : 'ένας χρόνος',
20703
  yy : '%d χρόνια'
20704
  },
20705
+ dayOfMonthOrdinalParse: /\d{1,2}η/,
20706
  ordinal: '%dη',
20707
  week : {
20708
  dow : 1, // Monday is the first day of the week.
20716
 
20717
 
20718
  /***/ },
20719
+ /* 318 */
20720
  /***/ function(module, exports, __webpack_require__) {
20721
 
20722
  //! moment.js locale configuration
20724
  //! author : Jared Morse : https://github.com/jarcoal
20725
 
20726
  ;(function (global, factory) {
20727
+ true ? factory(__webpack_require__(290)) :
20728
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20729
  factory(global.moment)
20730
  }(this, (function (moment) { 'use strict';
20767
  y : 'a year',
20768
  yy : '%d years'
20769
  },
20770
+ dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
20771
  ordinal : function (number) {
20772
  var b = number % 10,
20773
  output = (~~(number % 100 / 10) === 1) ? 'th' :
20788
 
20789
 
20790
  /***/ },
20791
+ /* 319 */
20792
  /***/ function(module, exports, __webpack_require__) {
20793
 
20794
  //! moment.js locale configuration
20796
  //! author : Jonathan Abourbih : https://github.com/jonbca
20797
 
20798
  ;(function (global, factory) {
20799
+ true ? factory(__webpack_require__(290)) :
20800
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20801
  factory(global.moment)
20802
  }(this, (function (moment) { 'use strict';
20839
  y : 'a year',
20840
  yy : '%d years'
20841
  },
20842
+ dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
20843
  ordinal : function (number) {
20844
  var b = number % 10,
20845
  output = (~~(number % 100 / 10) === 1) ? 'th' :
20856
 
20857
 
20858
  /***/ },
20859
+ /* 320 */
20860
  /***/ function(module, exports, __webpack_require__) {
20861
 
20862
  //! moment.js locale configuration
20864
  //! author : Chris Gedrim : https://github.com/chrisgedrim
20865
 
20866
  ;(function (global, factory) {
20867
+ true ? factory(__webpack_require__(290)) :
20868
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20869
  factory(global.moment)
20870
  }(this, (function (moment) { 'use strict';
20907
  y : 'a year',
20908
  yy : '%d years'
20909
  },
20910
+ dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
20911
  ordinal : function (number) {
20912
  var b = number % 10,
20913
  output = (~~(number % 100 / 10) === 1) ? 'th' :
20928
 
20929
 
20930
  /***/ },
20931
+ /* 321 */
20932
  /***/ function(module, exports, __webpack_require__) {
20933
 
20934
  //! moment.js locale configuration
20936
  //! author : Chris Cartlidge : https://github.com/chriscartlidge
20937
 
20938
  ;(function (global, factory) {
20939
+ true ? factory(__webpack_require__(290)) :
20940
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
20941
  factory(global.moment)
20942
  }(this, (function (moment) { 'use strict';
20979
  y : 'a year',
20980
  yy : '%d years'
20981
  },
20982
+ dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
20983
  ordinal : function (number) {
20984
  var b = number % 10,
20985
  output = (~~(number % 100 / 10) === 1) ? 'th' :
21000
 
21001
 
21002
  /***/ },
21003
+ /* 322 */
21004
  /***/ function(module, exports, __webpack_require__) {
21005
 
21006
  //! moment.js locale configuration
21008
  //! author : Luke McGregor : https://github.com/lukemcgregor
21009
 
21010
  ;(function (global, factory) {
21011
+ true ? factory(__webpack_require__(290)) :
21012
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21013
  factory(global.moment)
21014
  }(this, (function (moment) { 'use strict';
21051
  y : 'a year',
21052
  yy : '%d years'
21053
  },
21054
+ dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
21055
  ordinal : function (number) {
21056
  var b = number % 10,
21057
  output = (~~(number % 100 / 10) === 1) ? 'th' :
21072
 
21073
 
21074
  /***/ },
21075
+ /* 323 */
21076
  /***/ function(module, exports, __webpack_require__) {
21077
 
21078
  //! moment.js locale configuration
21079
  //! locale : Esperanto [eo]
21080
  //! author : Colin Dean : https://github.com/colindean
21081
+ //! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
21082
+ //! comment : miestasmia corrected the translation by colindean
21083
 
21084
  ;(function (global, factory) {
21085
+ true ? factory(__webpack_require__(290)) :
21086
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21087
  factory(global.moment)
21088
  }(this, (function (moment) { 'use strict';
21091
  var eo = moment.defineLocale('eo', {
21092
  months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
21093
  monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
21094
+ weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
21095
+ weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
21096
+ weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
21097
  longDateFormat : {
21098
  LT : 'HH:mm',
21099
  LTS : 'HH:mm:ss',
21100
  L : 'YYYY-MM-DD',
21101
+ LL : 'D[-a de] MMMM, YYYY',
21102
+ LLL : 'D[-a de] MMMM, YYYY HH:mm',
21103
+ LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'
21104
  },
21105
  meridiemParse: /[ap]\.t\.m/i,
21106
  isPM: function (input) {
21122
  sameElse : 'L'
21123
  },
21124
  relativeTime : {
21125
+ future : 'post %s',
21126
  past : 'antaŭ %s',
21127
  s : 'sekundoj',
21128
  m : 'minuto',
21136
  y : 'jaro',
21137
  yy : '%d jaroj'
21138
  },
21139
+ dayOfMonthOrdinalParse: /\d{1,2}a/,
21140
  ordinal : '%da',
21141
  week : {
21142
  dow : 1, // Monday is the first day of the week.
21150
 
21151
 
21152
  /***/ },
21153
+ /* 324 */
21154
  /***/ function(module, exports, __webpack_require__) {
21155
 
21156
  //! moment.js locale configuration
21158
  //! author : Julio Napurí : https://github.com/julionc
21159
 
21160
  ;(function (global, factory) {
21161
+ true ? factory(__webpack_require__(290)) :
21162
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21163
  factory(global.moment)
21164
  }(this, (function (moment) { 'use strict';
21170
  var es = moment.defineLocale('es', {
21171
  months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
21172
  monthsShort : function (m, format) {
21173
+ if (!m) {
21174
+ return monthsShortDot;
21175
+ } else if (/-MMM-/.test(format)) {
21176
  return monthsShort[m.month()];
21177
  } else {
21178
  return monthsShortDot[m.month()];
21224
  y : 'un año',
21225
  yy : '%d años'
21226
  },
21227
+ dayOfMonthOrdinalParse : /\d{1,2}º/,
21228
  ordinal : '%dº',
21229
  week : {
21230
  dow : 1, // Monday is the first day of the week.
21238
 
21239
 
21240
  /***/ },
21241
+ /* 325 */
21242
  /***/ function(module, exports, __webpack_require__) {
21243
 
21244
  //! moment.js locale configuration
21245
  //! locale : Spanish (Dominican Republic) [es-do]
21246
 
21247
  ;(function (global, factory) {
21248
+ true ? factory(__webpack_require__(290)) :
21249
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21250
  factory(global.moment)
21251
  }(this, (function (moment) { 'use strict';
21257
  var esDo = moment.defineLocale('es-do', {
21258
  months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
21259
  monthsShort : function (m, format) {
21260
+ if (!m) {
21261
+ return monthsShortDot;
21262
+ } else if (/-MMM-/.test(format)) {
21263
  return monthsShort[m.month()];
21264
  } else {
21265
  return monthsShortDot[m.month()];
21311
  y : 'un año',
21312
  yy : '%d años'
21313
  },
21314
+ dayOfMonthOrdinalParse : /\d{1,2}º/,
21315
  ordinal : '%dº',
21316
  week : {
21317
  dow : 1, // Monday is the first day of the week.
21325
 
21326
 
21327
  /***/ },
21328
+ /* 326 */
21329
  /***/ function(module, exports, __webpack_require__) {
21330
 
21331
  //! moment.js locale configuration
21334
  //! improvements : Illimar Tambek : https://github.com/ragulka
21335
 
21336
  ;(function (global, factory) {
21337
+ true ? factory(__webpack_require__(290)) :
21338
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21339
  factory(global.moment)
21340
  }(this, (function (moment) { 'use strict';
21396
  y : processRelativeTime,
21397
  yy : processRelativeTime
21398
  },
21399
+ dayOfMonthOrdinalParse: /\d{1,2}\./,
21400
  ordinal : '%d.',
21401
  week : {
21402
  dow : 1, // Monday is the first day of the week.
21410
 
21411
 
21412
  /***/ },
21413
+ /* 327 */
21414
  /***/ function(module, exports, __webpack_require__) {
21415
 
21416
  //! moment.js locale configuration
21418
  //! author : Eneko Illarramendi : https://github.com/eillarra
21419
 
21420
  ;(function (global, factory) {
21421
+ true ? factory(__webpack_require__(290)) :
21422
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21423
  factory(global.moment)
21424
  }(this, (function (moment) { 'use strict';
21467
  y : 'urte bat',
21468
  yy : '%d urte'
21469
  },
21470
+ dayOfMonthOrdinalParse: /\d{1,2}\./,
21471
  ordinal : '%d.',
21472
  week : {
21473
  dow : 1, // Monday is the first day of the week.
21481
 
21482
 
21483
  /***/ },
21484
+ /* 328 */
21485
  /***/ function(module, exports, __webpack_require__) {
21486
 
21487
  //! moment.js locale configuration
21489
  //! author : Ebrahim Byagowi : https://github.com/ebraminio
21490
 
21491
  ;(function (global, factory) {
21492
+ true ? factory(__webpack_require__(290)) :
21493
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21494
  factory(global.moment)
21495
  }(this, (function (moment) { 'use strict';
21557
  relativeTime : {
21558
  future : 'در %s',
21559
  past : '%s پیش',
21560
+ s : 'چند ثانیه',
21561
  m : 'یک دقیقه',
21562
  mm : '%d دقیقه',
21563
  h : 'یک ساعت',
21579
  return symbolMap[match];
21580
  }).replace(/,/g, '،');
21581
  },
21582
+ dayOfMonthOrdinalParse: /\d{1,2}م/,
21583
  ordinal : '%dم',
21584
  week : {
21585
  dow : 6, // Saturday is the first day of the week.
21593
 
21594
 
21595
  /***/ },
21596
+ /* 329 */
21597
  /***/ function(module, exports, __webpack_require__) {
21598
 
21599
  //! moment.js locale configuration
21601
  //! author : Tarmo Aidantausta : https://github.com/bleadof
21602
 
21603
  ;(function (global, factory) {
21604
+ true ? factory(__webpack_require__(290)) :
21605
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21606
  factory(global.moment)
21607
  }(this, (function (moment) { 'use strict';
21691
  y : translate,
21692
  yy : translate
21693
  },
21694
+ dayOfMonthOrdinalParse: /\d{1,2}\./,
21695
  ordinal : '%d.',
21696
  week : {
21697
  dow : 1, // Monday is the first day of the week.
21705
 
21706
 
21707
  /***/ },
21708
+ /* 330 */
21709
  /***/ function(module, exports, __webpack_require__) {
21710
 
21711
  //! moment.js locale configuration
21713
  //! author : Ragnar Johannesen : https://github.com/ragnar123
21714
 
21715
  ;(function (global, factory) {
21716
+ true ? factory(__webpack_require__(290)) :
21717
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21718
  factory(global.moment)
21719
  }(this, (function (moment) { 'use strict';
21756
  y : 'eitt ár',
21757
  yy : '%d ár'
21758
  },
21759
+ dayOfMonthOrdinalParse: /\d{1,2}\./,
21760
  ordinal : '%d.',
21761
  week : {
21762
  dow : 1, // Monday is the first day of the week.
21770
 
21771
 
21772
  /***/ },
21773
+ /* 331 */
21774
  /***/ function(module, exports, __webpack_require__) {
21775
 
21776
  //! moment.js locale configuration
21778
  //! author : John Fischer : https://github.com/jfroffice
21779
 
21780
  ;(function (global, factory) {
21781
+ true ? factory(__webpack_require__(290)) :
21782
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21783
  factory(global.moment)
21784
  }(this, (function (moment) { 'use strict';
21801
  LLLL : 'dddd D MMMM YYYY HH:mm'
21802
  },
21803
  calendar : {
21804
+ sameDay : '[Aujourdhui à] LT',
21805
+ nextDay : '[Demain à] LT',
21806
+ nextWeek : 'dddd [à] LT',
21807
+ lastDay : '[Hier à] LT',
21808
+ lastWeek : 'dddd [dernier à] LT',
21809
+ sameElse : 'L'
21810
  },
21811
  relativeTime : {
21812
  future : 'dans %s',
21823
  y : 'un an',
21824
  yy : '%d ans'
21825
  },
21826
+ dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
21827
+ ordinal : function (number, period) {
21828
+ switch (period) {
21829
+ // TODO: Return 'e' when day of month > 1. Move this case inside
21830
+ // block for masculine words below.
21831
+ // See https://github.com/moment/moment/issues/3375
21832
+ case 'D':
21833
+ return number + (number === 1 ? 'er' : '');
21834
+
21835
+ // Words with masculine grammatical gender: mois, trimestre, jour
21836
+ default:
21837
+ case 'M':
21838
+ case 'Q':
21839
+ case 'DDD':
21840
+ case 'd':
21841
+ return number + (number === 1 ? 'er' : 'e');
21842
+
21843
+ // Words with feminine grammatical gender: semaine
21844
+ case 'w':
21845
+ case 'W':
21846
+ return number + (number === 1 ? 're' : 'e');
21847
+ }
21848
  },
21849
  week : {
21850
  dow : 1, // Monday is the first day of the week.
21858
 
21859
 
21860
  /***/ },
21861
+ /* 332 */
21862
  /***/ function(module, exports, __webpack_require__) {
21863
 
21864
  //! moment.js locale configuration
21866
  //! author : Jonathan Abourbih : https://github.com/jonbca
21867
 
21868
  ;(function (global, factory) {
21869
+ true ? factory(__webpack_require__(290)) :
21870
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21871
  factory(global.moment)
21872
  }(this, (function (moment) { 'use strict';
21889
  LLLL : 'dddd D MMMM YYYY HH:mm'
21890
  },
21891
  calendar : {
21892
+ sameDay : '[Aujourdhui à] LT',
21893
+ nextDay : '[Demain à] LT',
21894
+ nextWeek : 'dddd [à] LT',
21895
+ lastDay : '[Hier à] LT',
21896
+ lastWeek : 'dddd [dernier à] LT',
21897
+ sameElse : 'L'
21898
  },
21899
  relativeTime : {
21900
  future : 'dans %s',
21911
  y : 'un an',
21912
  yy : '%d ans'
21913
  },
21914
+ dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
21915
+ ordinal : function (number, period) {
21916
+ switch (period) {
21917
+ // Words with masculine grammatical gender: mois, trimestre, jour
21918
+ default:
21919
+ case 'M':
21920
+ case 'Q':
21921
+ case 'D':
21922
+ case 'DDD':
21923
+ case 'd':
21924
+ return number + (number === 1 ? 'er' : 'e');
21925
+
21926
+ // Words with feminine grammatical gender: semaine
21927
+ case 'w':
21928
+ case 'W':
21929
+ return number + (number === 1 ? 're' : 'e');
21930
+ }
21931
  }
21932
  });
21933
 
21937
 
21938
 
21939
  /***/ },
21940
+ /* 333 */
21941
  /***/ function(module, exports, __webpack_require__) {
21942
 
21943
  //! moment.js locale configuration
21945
  //! author : Gaspard Bucher : https://github.com/gaspard
21946
 
21947
  ;(function (global, factory) {
21948
+ true ? factory(__webpack_require__(290)) :
21949
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
21950
  factory(global.moment)
21951
  }(this, (function (moment) { 'use strict';
21968
  LLLL : 'dddd D MMMM YYYY HH:mm'
21969
  },
21970
  calendar : {
21971
+ sameDay : '[Aujourdhui à] LT',
21972
+ nextDay : '[Demain à] LT',
21973
+ nextWeek : 'dddd [à] LT',
21974
+ lastDay : '[Hier à] LT',
21975
+ lastWeek : 'dddd [dernier à] LT',
21976
+ sameElse : 'L'
21977
  },
21978
  relativeTime : {
21979
  future : 'dans %s',
21990
  y : 'un an',
21991
  yy : '%d ans'
21992
  },
21993
+ dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
21994
+ ordinal : function (number, period) {
21995
+ switch (period) {
21996
+ // Words with masculine grammatical gender: mois, trimestre, jour
21997
+ default:
21998
+ case 'M':
21999
+ case 'Q':
22000
+ case 'D':
22001
+ case 'DDD':
22002
+ case 'd':
22003
+ return number + (number === 1 ? 'er' : 'e');
22004
+
22005
+ // Words with feminine grammatical gender: semaine
22006
+ case 'w':
22007
+ case 'W':
22008
+ return number + (number === 1 ? 're' : 'e');
22009
+ }
22010
  },
22011
  week : {
22012
  dow : 1, // Monday is the first day of the week.
22020
 
22021
 
22022
  /***/ },
22023
+ /* 334 */
22024
  /***/ function(module, exports, __webpack_require__) {
22025
 
22026
  //! moment.js locale configuration
22028
  //! author : Robin van der Vliet : https://github.com/robin0van0der0v
22029
 
22030
  ;(function (global, factory) {
22031
+ true ? factory(__webpack_require__(290)) :
22032
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
22033
  factory(global.moment)
22034
  }(this, (function (moment) { 'use strict';
22040
  var fy = moment.defineLocale('fy', {
22041
  months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
22042
  monthsShort : function (m, format) {
22043
+ if (!m) {
22044
+ return monthsShortWithDots;
22045
+ } else if (/-MMM-/.test(format)) {
22046
  return monthsShortWithoutDots[m.month()];
22047
  } else {
22048
  return monthsShortWithDots[m.month()];
22084
  y : 'ien jier',
22085
  yy : '%d jierren'
22086
  },
22087
+ dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
22088
  ordinal : function (number) {
22089
  return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
22090
  },
22100
 
22101
 
22102
  /***/ },
22103
+ /* 335 */
22104
  /***/ function(module, exports, __webpack_require__) {
22105
 
22106
  //! moment.js locale configuration
22108
  //! author : Jon Ashdown : https://github.com/jonashdown
22109
 
22110
  ;(function (global, factory) {
22111
+ true ? factory(__webpack_require__(290)) :
22112
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
22113
  factory(global.moment)
22114
  }(this, (function (moment) { 'use strict';
22164
  y : 'bliadhna',
22165
  yy : '%d bliadhna'
22166
  },
22167
+ dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/,
22168
  ordinal : function (number) {
22169
  var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
22170
  return number + output;
22181
 
22182
 
22183
  /***/ },
22184
+ /* 336 */
22185
  /***/ function(module, exports, __webpack_require__) {
22186
 
22187
  //! moment.js locale configuration
22189
  //! author : Juan G. Hurtado : https://github.com/juanghurtado
22190
 
22191
  ;(function (global, factory) {
22192
+ true ? factory(__webpack_require__(290)) :
22193
  typeof define === 'function' && define.amd ? define(['../moment'], factory) :
22194
  factory(global.moment)
22195
  }(this, (function (moment) { 'use strict';
22249
  y : 'un ano',
22250
  yy : '%d anos'
22251
  },
22252
+ dayOfMonthOrdinalParse : /\d{1,2}º/,
22253
  ordinal : '%dº',
22254
  week : {
22255
  dow : 1, // Monday is the first day of the week.
22263
 
22264
 
22265
  /***/ },
22266
+ /* 337 */
22267
+ /***/ function(module, exports, __webpack_require__) {
22268
+
22269
+ //! moment.js locale configuration
22270
+ //! locale : Konkani Latin script [gom-latn]
22271
+ //! author : The Discoverer : https://github.com/WikiDiscoverer
22272
+
22273
+ ;(function (global, factory) {
22274
+ true ? factory(__webpack_require__(290)) :
22275
+ typeof define === 'function' && define.amd ? define(['../moment'], factory) :
22276
+ factory(global.moment)
22277
+ }(this, (function (moment) { 'use strict';
22278
+
22279
+
22280
+ function processRelativeTime(number, withoutSuffix, key, isFuture) {
22281
+ var format = {
22282
+ 's': ['thodde secondanim', 'thodde second'],
22283
+ 'm': ['eka mintan', 'ek minute'],
22284
+ 'mm': [number + ' mintanim', number + ' mintam'],
22285
+ 'h': ['eka horan', 'ek hor'],
22286
+ 'hh': [number + ' horanim', number + ' hor'],
22287
+ 'd': ['eka disan', 'ek dis'],
22288
+ 'dd': [number + ' disanim', number + ' dis'],
22289
+ 'M': ['eka mhoinean', 'ek mhoino'],
22290
+ 'MM': [number + ' mhoineanim', number + ' mhoine'],
22291
+ 'y': ['eka vorsan', 'ek voros'],
22292
+ 'yy': [number + ' vorsanim', number + ' vorsam']
22293
+ };
22294
+ return withoutSuffix ? format[key][0] : format[key][1];
22295
+ }
22296
+
22297
+ var gomLatn = moment.defineLocale('