Projekt

Obecné

Profil

Stáhnout (101 KB) Statistiky
| Větev: | Revize:
1
(function (global, factory) {
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
3
  typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
4
  (global = global || self, factory(global.ReactRouter = {}, global.React));
5
}(this, function (exports, React) { 'use strict';
6

    
7
  var React__default = 'default' in React ? React['default'] : React;
8

    
9
  function _inheritsLoose(subClass, superClass) {
10
    subClass.prototype = Object.create(superClass.prototype);
11
    subClass.prototype.constructor = subClass;
12
    subClass.__proto__ = superClass;
13
  }
14

    
15
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
16

    
17
  function unwrapExports (x) {
18
  	return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
19
  }
20

    
21
  function createCommonjsModule(fn, module) {
22
  	return module = { exports: {} }, fn(module, module.exports), module.exports;
23
  }
24

    
25
  var reactIs_production_min = createCommonjsModule(function (module, exports) {
26
  Object.defineProperty(exports,"__esModule",{value:!0});
27
  var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b?Symbol.for("react.suspense_list"):
28
  60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.fundamental"):60117,w=b?Symbol.for("react.responder"):60118;function x(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case t:case r:case d:return u}}}function y(a){return x(a)===m}exports.typeOf=x;exports.AsyncMode=l;
29
  exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;
30
  exports.isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===v||a.$$typeof===w)};exports.isAsyncMode=function(a){return y(a)||x(a)===l};exports.isConcurrentMode=y;exports.isContextConsumer=function(a){return x(a)===k};exports.isContextProvider=function(a){return x(a)===h};
31
  exports.isElement=function(a){return "object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return x(a)===n};exports.isFragment=function(a){return x(a)===e};exports.isLazy=function(a){return x(a)===t};exports.isMemo=function(a){return x(a)===r};exports.isPortal=function(a){return x(a)===d};exports.isProfiler=function(a){return x(a)===g};exports.isStrictMode=function(a){return x(a)===f};exports.isSuspense=function(a){return x(a)===p};
32
  });
33

    
34
  unwrapExports(reactIs_production_min);
35
  var reactIs_production_min_1 = reactIs_production_min.typeOf;
36
  var reactIs_production_min_2 = reactIs_production_min.AsyncMode;
37
  var reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;
38
  var reactIs_production_min_4 = reactIs_production_min.ContextConsumer;
39
  var reactIs_production_min_5 = reactIs_production_min.ContextProvider;
40
  var reactIs_production_min_6 = reactIs_production_min.Element;
41
  var reactIs_production_min_7 = reactIs_production_min.ForwardRef;
42
  var reactIs_production_min_8 = reactIs_production_min.Fragment;
43
  var reactIs_production_min_9 = reactIs_production_min.Lazy;
44
  var reactIs_production_min_10 = reactIs_production_min.Memo;
45
  var reactIs_production_min_11 = reactIs_production_min.Portal;
46
  var reactIs_production_min_12 = reactIs_production_min.Profiler;
47
  var reactIs_production_min_13 = reactIs_production_min.StrictMode;
48
  var reactIs_production_min_14 = reactIs_production_min.Suspense;
49
  var reactIs_production_min_15 = reactIs_production_min.isValidElementType;
50
  var reactIs_production_min_16 = reactIs_production_min.isAsyncMode;
51
  var reactIs_production_min_17 = reactIs_production_min.isConcurrentMode;
52
  var reactIs_production_min_18 = reactIs_production_min.isContextConsumer;
53
  var reactIs_production_min_19 = reactIs_production_min.isContextProvider;
54
  var reactIs_production_min_20 = reactIs_production_min.isElement;
55
  var reactIs_production_min_21 = reactIs_production_min.isForwardRef;
56
  var reactIs_production_min_22 = reactIs_production_min.isFragment;
57
  var reactIs_production_min_23 = reactIs_production_min.isLazy;
58
  var reactIs_production_min_24 = reactIs_production_min.isMemo;
59
  var reactIs_production_min_25 = reactIs_production_min.isPortal;
60
  var reactIs_production_min_26 = reactIs_production_min.isProfiler;
61
  var reactIs_production_min_27 = reactIs_production_min.isStrictMode;
62
  var reactIs_production_min_28 = reactIs_production_min.isSuspense;
63

    
64
  var reactIs_development = createCommonjsModule(function (module, exports) {
65

    
66

    
67

    
68
  {
69
    (function() {
70

    
71
  Object.defineProperty(exports, '__esModule', { value: true });
72

    
73
  // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
74
  // nor polyfill, then a plain number is used for performance.
75
  var hasSymbol = typeof Symbol === 'function' && Symbol.for;
76

    
77
  var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
78
  var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
79
  var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
80
  var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
81
  var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
82
  var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
83
  var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;
84
  // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
85
  // (unstable) APIs that have been removed. Can we remove the symbols?
86
  var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
87
  var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
88
  var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
89
  var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
90
  var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
91
  var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
92
  var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
93
  var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
94
  var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
95

    
96
  function isValidElementType(type) {
97
    return typeof type === 'string' || typeof type === 'function' ||
98
    // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
99
    type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE);
100
  }
101

    
102
  /**
103
   * Forked from fbjs/warning:
104
   * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js
105
   *
106
   * Only change is we use console.warn instead of console.error,
107
   * and do nothing when 'console' is not supported.
108
   * This really simplifies the code.
109
   * ---
110
   * Similar to invariant but only logs a warning if the condition is not met.
111
   * This can be used to log issues in development environments in critical
112
   * paths. Removing the logging code for production environments will keep the
113
   * same logic and follow the same code paths.
114
   */
115

    
116
  var lowPriorityWarning = function () {};
117

    
118
  {
119
    var printWarning = function (format) {
120
      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
121
        args[_key - 1] = arguments[_key];
122
      }
123

    
124
      var argIndex = 0;
125
      var message = 'Warning: ' + format.replace(/%s/g, function () {
126
        return args[argIndex++];
127
      });
128
      if (typeof console !== 'undefined') {
129
        console.warn(message);
130
      }
131
      try {
132
        // --- Welcome to debugging React ---
133
        // This error was thrown as a convenience so that you can use this stack
134
        // to find the callsite that caused this warning to fire.
135
        throw new Error(message);
136
      } catch (x) {}
137
    };
138

    
139
    lowPriorityWarning = function (condition, format) {
140
      if (format === undefined) {
141
        throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');
142
      }
143
      if (!condition) {
144
        for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
145
          args[_key2 - 2] = arguments[_key2];
146
        }
147

    
148
        printWarning.apply(undefined, [format].concat(args));
149
      }
150
    };
151
  }
152

    
153
  var lowPriorityWarning$1 = lowPriorityWarning;
154

    
155
  function typeOf(object) {
156
    if (typeof object === 'object' && object !== null) {
157
      var $$typeof = object.$$typeof;
158
      switch ($$typeof) {
159
        case REACT_ELEMENT_TYPE:
160
          var type = object.type;
161

    
162
          switch (type) {
163
            case REACT_ASYNC_MODE_TYPE:
164
            case REACT_CONCURRENT_MODE_TYPE:
165
            case REACT_FRAGMENT_TYPE:
166
            case REACT_PROFILER_TYPE:
167
            case REACT_STRICT_MODE_TYPE:
168
            case REACT_SUSPENSE_TYPE:
169
              return type;
170
            default:
171
              var $$typeofType = type && type.$$typeof;
172

    
173
              switch ($$typeofType) {
174
                case REACT_CONTEXT_TYPE:
175
                case REACT_FORWARD_REF_TYPE:
176
                case REACT_PROVIDER_TYPE:
177
                  return $$typeofType;
178
                default:
179
                  return $$typeof;
180
              }
181
          }
182
        case REACT_LAZY_TYPE:
183
        case REACT_MEMO_TYPE:
184
        case REACT_PORTAL_TYPE:
185
          return $$typeof;
186
      }
187
    }
188

    
189
    return undefined;
190
  }
191

    
192
  // AsyncMode is deprecated along with isAsyncMode
193
  var AsyncMode = REACT_ASYNC_MODE_TYPE;
194
  var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
195
  var ContextConsumer = REACT_CONTEXT_TYPE;
196
  var ContextProvider = REACT_PROVIDER_TYPE;
197
  var Element = REACT_ELEMENT_TYPE;
198
  var ForwardRef = REACT_FORWARD_REF_TYPE;
199
  var Fragment = REACT_FRAGMENT_TYPE;
200
  var Lazy = REACT_LAZY_TYPE;
201
  var Memo = REACT_MEMO_TYPE;
202
  var Portal = REACT_PORTAL_TYPE;
203
  var Profiler = REACT_PROFILER_TYPE;
204
  var StrictMode = REACT_STRICT_MODE_TYPE;
205
  var Suspense = REACT_SUSPENSE_TYPE;
206

    
207
  var hasWarnedAboutDeprecatedIsAsyncMode = false;
208

    
209
  // AsyncMode should be deprecated
210
  function isAsyncMode(object) {
211
    {
212
      if (!hasWarnedAboutDeprecatedIsAsyncMode) {
213
        hasWarnedAboutDeprecatedIsAsyncMode = true;
214
        lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
215
      }
216
    }
217
    return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
218
  }
219
  function isConcurrentMode(object) {
220
    return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
221
  }
222
  function isContextConsumer(object) {
223
    return typeOf(object) === REACT_CONTEXT_TYPE;
224
  }
225
  function isContextProvider(object) {
226
    return typeOf(object) === REACT_PROVIDER_TYPE;
227
  }
228
  function isElement(object) {
229
    return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
230
  }
231
  function isForwardRef(object) {
232
    return typeOf(object) === REACT_FORWARD_REF_TYPE;
233
  }
234
  function isFragment(object) {
235
    return typeOf(object) === REACT_FRAGMENT_TYPE;
236
  }
237
  function isLazy(object) {
238
    return typeOf(object) === REACT_LAZY_TYPE;
239
  }
240
  function isMemo(object) {
241
    return typeOf(object) === REACT_MEMO_TYPE;
242
  }
243
  function isPortal(object) {
244
    return typeOf(object) === REACT_PORTAL_TYPE;
245
  }
246
  function isProfiler(object) {
247
    return typeOf(object) === REACT_PROFILER_TYPE;
248
  }
249
  function isStrictMode(object) {
250
    return typeOf(object) === REACT_STRICT_MODE_TYPE;
251
  }
252
  function isSuspense(object) {
253
    return typeOf(object) === REACT_SUSPENSE_TYPE;
254
  }
255

    
256
  exports.typeOf = typeOf;
257
  exports.AsyncMode = AsyncMode;
258
  exports.ConcurrentMode = ConcurrentMode;
259
  exports.ContextConsumer = ContextConsumer;
260
  exports.ContextProvider = ContextProvider;
261
  exports.Element = Element;
262
  exports.ForwardRef = ForwardRef;
263
  exports.Fragment = Fragment;
264
  exports.Lazy = Lazy;
265
  exports.Memo = Memo;
266
  exports.Portal = Portal;
267
  exports.Profiler = Profiler;
268
  exports.StrictMode = StrictMode;
269
  exports.Suspense = Suspense;
270
  exports.isValidElementType = isValidElementType;
271
  exports.isAsyncMode = isAsyncMode;
272
  exports.isConcurrentMode = isConcurrentMode;
273
  exports.isContextConsumer = isContextConsumer;
274
  exports.isContextProvider = isContextProvider;
275
  exports.isElement = isElement;
276
  exports.isForwardRef = isForwardRef;
277
  exports.isFragment = isFragment;
278
  exports.isLazy = isLazy;
279
  exports.isMemo = isMemo;
280
  exports.isPortal = isPortal;
281
  exports.isProfiler = isProfiler;
282
  exports.isStrictMode = isStrictMode;
283
  exports.isSuspense = isSuspense;
284
    })();
285
  }
286
  });
287

    
288
  unwrapExports(reactIs_development);
289
  var reactIs_development_1 = reactIs_development.typeOf;
290
  var reactIs_development_2 = reactIs_development.AsyncMode;
291
  var reactIs_development_3 = reactIs_development.ConcurrentMode;
292
  var reactIs_development_4 = reactIs_development.ContextConsumer;
293
  var reactIs_development_5 = reactIs_development.ContextProvider;
294
  var reactIs_development_6 = reactIs_development.Element;
295
  var reactIs_development_7 = reactIs_development.ForwardRef;
296
  var reactIs_development_8 = reactIs_development.Fragment;
297
  var reactIs_development_9 = reactIs_development.Lazy;
298
  var reactIs_development_10 = reactIs_development.Memo;
299
  var reactIs_development_11 = reactIs_development.Portal;
300
  var reactIs_development_12 = reactIs_development.Profiler;
301
  var reactIs_development_13 = reactIs_development.StrictMode;
302
  var reactIs_development_14 = reactIs_development.Suspense;
303
  var reactIs_development_15 = reactIs_development.isValidElementType;
304
  var reactIs_development_16 = reactIs_development.isAsyncMode;
305
  var reactIs_development_17 = reactIs_development.isConcurrentMode;
306
  var reactIs_development_18 = reactIs_development.isContextConsumer;
307
  var reactIs_development_19 = reactIs_development.isContextProvider;
308
  var reactIs_development_20 = reactIs_development.isElement;
309
  var reactIs_development_21 = reactIs_development.isForwardRef;
310
  var reactIs_development_22 = reactIs_development.isFragment;
311
  var reactIs_development_23 = reactIs_development.isLazy;
312
  var reactIs_development_24 = reactIs_development.isMemo;
313
  var reactIs_development_25 = reactIs_development.isPortal;
314
  var reactIs_development_26 = reactIs_development.isProfiler;
315
  var reactIs_development_27 = reactIs_development.isStrictMode;
316
  var reactIs_development_28 = reactIs_development.isSuspense;
317

    
318
  var reactIs = createCommonjsModule(function (module) {
319

    
320
  {
321
    module.exports = reactIs_development;
322
  }
323
  });
324
  var reactIs_1 = reactIs.isValidElementType;
325

    
326
  /*
327
  object-assign
328
  (c) Sindre Sorhus
329
  @license MIT
330
  */
331
  /* eslint-disable no-unused-vars */
332
  var getOwnPropertySymbols = Object.getOwnPropertySymbols;
333
  var hasOwnProperty = Object.prototype.hasOwnProperty;
334
  var propIsEnumerable = Object.prototype.propertyIsEnumerable;
335

    
336
  function toObject(val) {
337
  	if (val === null || val === undefined) {
338
  		throw new TypeError('Object.assign cannot be called with null or undefined');
339
  	}
340

    
341
  	return Object(val);
342
  }
343

    
344
  function shouldUseNative() {
345
  	try {
346
  		if (!Object.assign) {
347
  			return false;
348
  		}
349

    
350
  		// Detect buggy property enumeration order in older V8 versions.
351

    
352
  		// https://bugs.chromium.org/p/v8/issues/detail?id=4118
353
  		var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
354
  		test1[5] = 'de';
355
  		if (Object.getOwnPropertyNames(test1)[0] === '5') {
356
  			return false;
357
  		}
358

    
359
  		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
360
  		var test2 = {};
361
  		for (var i = 0; i < 10; i++) {
362
  			test2['_' + String.fromCharCode(i)] = i;
363
  		}
364
  		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
365
  			return test2[n];
366
  		});
367
  		if (order2.join('') !== '0123456789') {
368
  			return false;
369
  		}
370

    
371
  		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
372
  		var test3 = {};
373
  		'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
374
  			test3[letter] = letter;
375
  		});
376
  		if (Object.keys(Object.assign({}, test3)).join('') !==
377
  				'abcdefghijklmnopqrst') {
378
  			return false;
379
  		}
380

    
381
  		return true;
382
  	} catch (err) {
383
  		// We don't expect any of the above to throw, but better to be safe.
384
  		return false;
385
  	}
386
  }
387

    
388
  var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
389
  	var from;
390
  	var to = toObject(target);
391
  	var symbols;
392

    
393
  	for (var s = 1; s < arguments.length; s++) {
394
  		from = Object(arguments[s]);
395

    
396
  		for (var key in from) {
397
  			if (hasOwnProperty.call(from, key)) {
398
  				to[key] = from[key];
399
  			}
400
  		}
401

    
402
  		if (getOwnPropertySymbols) {
403
  			symbols = getOwnPropertySymbols(from);
404
  			for (var i = 0; i < symbols.length; i++) {
405
  				if (propIsEnumerable.call(from, symbols[i])) {
406
  					to[symbols[i]] = from[symbols[i]];
407
  				}
408
  			}
409
  		}
410
  	}
411

    
412
  	return to;
413
  };
414

    
415
  /**
416
   * Copyright (c) 2013-present, Facebook, Inc.
417
   *
418
   * This source code is licensed under the MIT license found in the
419
   * LICENSE file in the root directory of this source tree.
420
   */
421

    
422
  var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
423

    
424
  var ReactPropTypesSecret_1 = ReactPropTypesSecret;
425

    
426
  var printWarning = function() {};
427

    
428
  {
429
    var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;
430
    var loggedTypeFailures = {};
431
    var has = Function.call.bind(Object.prototype.hasOwnProperty);
432

    
433
    printWarning = function(text) {
434
      var message = 'Warning: ' + text;
435
      if (typeof console !== 'undefined') {
436
        console.error(message);
437
      }
438
      try {
439
        // --- Welcome to debugging React ---
440
        // This error was thrown as a convenience so that you can use this stack
441
        // to find the callsite that caused this warning to fire.
442
        throw new Error(message);
443
      } catch (x) {}
444
    };
445
  }
446

    
447
  /**
448
   * Assert that the values match with the type specs.
449
   * Error messages are memorized and will only be shown once.
450
   *
451
   * @param {object} typeSpecs Map of name to a ReactPropType
452
   * @param {object} values Runtime values that need to be type-checked
453
   * @param {string} location e.g. "prop", "context", "child context"
454
   * @param {string} componentName Name of the component for error messages.
455
   * @param {?Function} getStack Returns the component stack.
456
   * @private
457
   */
458
  function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
459
    {
460
      for (var typeSpecName in typeSpecs) {
461
        if (has(typeSpecs, typeSpecName)) {
462
          var error;
463
          // Prop type validation may throw. In case they do, we don't want to
464
          // fail the render phase where it didn't fail before. So we log it.
465
          // After these have been cleaned up, we'll let them throw.
466
          try {
467
            // This is intentionally an invariant that gets caught. It's the same
468
            // behavior as without this statement except with a better message.
469
            if (typeof typeSpecs[typeSpecName] !== 'function') {
470
              var err = Error(
471
                (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
472
                'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'
473
              );
474
              err.name = 'Invariant Violation';
475
              throw err;
476
            }
477
            error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);
478
          } catch (ex) {
479
            error = ex;
480
          }
481
          if (error && !(error instanceof Error)) {
482
            printWarning(
483
              (componentName || 'React class') + ': type specification of ' +
484
              location + ' `' + typeSpecName + '` is invalid; the type checker ' +
485
              'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
486
              'You may have forgotten to pass an argument to the type checker ' +
487
              'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
488
              'shape all require an argument).'
489
            );
490
          }
491
          if (error instanceof Error && !(error.message in loggedTypeFailures)) {
492
            // Only monitor this failure once because there tends to be a lot of the
493
            // same error.
494
            loggedTypeFailures[error.message] = true;
495

    
496
            var stack = getStack ? getStack() : '';
497

    
498
            printWarning(
499
              'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
500
            );
501
          }
502
        }
503
      }
504
    }
505
  }
506

    
507
  /**
508
   * Resets warning cache when testing.
509
   *
510
   * @private
511
   */
512
  checkPropTypes.resetWarningCache = function() {
513
    {
514
      loggedTypeFailures = {};
515
    }
516
  };
517

    
518
  var checkPropTypes_1 = checkPropTypes;
519

    
520
  var has$1 = Function.call.bind(Object.prototype.hasOwnProperty);
521
  var printWarning$1 = function() {};
522

    
523
  {
524
    printWarning$1 = function(text) {
525
      var message = 'Warning: ' + text;
526
      if (typeof console !== 'undefined') {
527
        console.error(message);
528
      }
529
      try {
530
        // --- Welcome to debugging React ---
531
        // This error was thrown as a convenience so that you can use this stack
532
        // to find the callsite that caused this warning to fire.
533
        throw new Error(message);
534
      } catch (x) {}
535
    };
536
  }
537

    
538
  function emptyFunctionThatReturnsNull() {
539
    return null;
540
  }
541

    
542
  var factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {
543
    /* global Symbol */
544
    var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
545
    var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
546

    
547
    /**
548
     * Returns the iterator method function contained on the iterable object.
549
     *
550
     * Be sure to invoke the function with the iterable as context:
551
     *
552
     *     var iteratorFn = getIteratorFn(myIterable);
553
     *     if (iteratorFn) {
554
     *       var iterator = iteratorFn.call(myIterable);
555
     *       ...
556
     *     }
557
     *
558
     * @param {?object} maybeIterable
559
     * @return {?function}
560
     */
561
    function getIteratorFn(maybeIterable) {
562
      var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
563
      if (typeof iteratorFn === 'function') {
564
        return iteratorFn;
565
      }
566
    }
567

    
568
    /**
569
     * Collection of methods that allow declaration and validation of props that are
570
     * supplied to React components. Example usage:
571
     *
572
     *   var Props = require('ReactPropTypes');
573
     *   var MyArticle = React.createClass({
574
     *     propTypes: {
575
     *       // An optional string prop named "description".
576
     *       description: Props.string,
577
     *
578
     *       // A required enum prop named "category".
579
     *       category: Props.oneOf(['News','Photos']).isRequired,
580
     *
581
     *       // A prop named "dialog" that requires an instance of Dialog.
582
     *       dialog: Props.instanceOf(Dialog).isRequired
583
     *     },
584
     *     render: function() { ... }
585
     *   });
586
     *
587
     * A more formal specification of how these methods are used:
588
     *
589
     *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
590
     *   decl := ReactPropTypes.{type}(.isRequired)?
591
     *
592
     * Each and every declaration produces a function with the same signature. This
593
     * allows the creation of custom validation functions. For example:
594
     *
595
     *  var MyLink = React.createClass({
596
     *    propTypes: {
597
     *      // An optional string or URI prop named "href".
598
     *      href: function(props, propName, componentName) {
599
     *        var propValue = props[propName];
600
     *        if (propValue != null && typeof propValue !== 'string' &&
601
     *            !(propValue instanceof URI)) {
602
     *          return new Error(
603
     *            'Expected a string or an URI for ' + propName + ' in ' +
604
     *            componentName
605
     *          );
606
     *        }
607
     *      }
608
     *    },
609
     *    render: function() {...}
610
     *  });
611
     *
612
     * @internal
613
     */
614

    
615
    var ANONYMOUS = '<<anonymous>>';
616

    
617
    // Important!
618
    // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
619
    var ReactPropTypes = {
620
      array: createPrimitiveTypeChecker('array'),
621
      bool: createPrimitiveTypeChecker('boolean'),
622
      func: createPrimitiveTypeChecker('function'),
623
      number: createPrimitiveTypeChecker('number'),
624
      object: createPrimitiveTypeChecker('object'),
625
      string: createPrimitiveTypeChecker('string'),
626
      symbol: createPrimitiveTypeChecker('symbol'),
627

    
628
      any: createAnyTypeChecker(),
629
      arrayOf: createArrayOfTypeChecker,
630
      element: createElementTypeChecker(),
631
      elementType: createElementTypeTypeChecker(),
632
      instanceOf: createInstanceTypeChecker,
633
      node: createNodeChecker(),
634
      objectOf: createObjectOfTypeChecker,
635
      oneOf: createEnumTypeChecker,
636
      oneOfType: createUnionTypeChecker,
637
      shape: createShapeTypeChecker,
638
      exact: createStrictShapeTypeChecker,
639
    };
640

    
641
    /**
642
     * inlined Object.is polyfill to avoid requiring consumers ship their own
643
     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
644
     */
645
    /*eslint-disable no-self-compare*/
646
    function is(x, y) {
647
      // SameValue algorithm
648
      if (x === y) {
649
        // Steps 1-5, 7-10
650
        // Steps 6.b-6.e: +0 != -0
651
        return x !== 0 || 1 / x === 1 / y;
652
      } else {
653
        // Step 6.a: NaN == NaN
654
        return x !== x && y !== y;
655
      }
656
    }
657
    /*eslint-enable no-self-compare*/
658

    
659
    /**
660
     * We use an Error-like object for backward compatibility as people may call
661
     * PropTypes directly and inspect their output. However, we don't use real
662
     * Errors anymore. We don't inspect their stack anyway, and creating them
663
     * is prohibitively expensive if they are created too often, such as what
664
     * happens in oneOfType() for any type before the one that matched.
665
     */
666
    function PropTypeError(message) {
667
      this.message = message;
668
      this.stack = '';
669
    }
670
    // Make `instanceof Error` still work for returned errors.
671
    PropTypeError.prototype = Error.prototype;
672

    
673
    function createChainableTypeChecker(validate) {
674
      {
675
        var manualPropTypeCallCache = {};
676
        var manualPropTypeWarningCount = 0;
677
      }
678
      function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
679
        componentName = componentName || ANONYMOUS;
680
        propFullName = propFullName || propName;
681

    
682
        if (secret !== ReactPropTypesSecret_1) {
683
          if (throwOnDirectAccess) {
684
            // New behavior only for users of `prop-types` package
685
            var err = new Error(
686
              'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
687
              'Use `PropTypes.checkPropTypes()` to call them. ' +
688
              'Read more at http://fb.me/use-check-prop-types'
689
            );
690
            err.name = 'Invariant Violation';
691
            throw err;
692
          } else if ( typeof console !== 'undefined') {
693
            // Old behavior for people using React.PropTypes
694
            var cacheKey = componentName + ':' + propName;
695
            if (
696
              !manualPropTypeCallCache[cacheKey] &&
697
              // Avoid spamming the console because they are often not actionable except for lib authors
698
              manualPropTypeWarningCount < 3
699
            ) {
700
              printWarning$1(
701
                'You are manually calling a React.PropTypes validation ' +
702
                'function for the `' + propFullName + '` prop on `' + componentName  + '`. This is deprecated ' +
703
                'and will throw in the standalone `prop-types` package. ' +
704
                'You may be seeing this warning due to a third-party PropTypes ' +
705
                'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'
706
              );
707
              manualPropTypeCallCache[cacheKey] = true;
708
              manualPropTypeWarningCount++;
709
            }
710
          }
711
        }
712
        if (props[propName] == null) {
713
          if (isRequired) {
714
            if (props[propName] === null) {
715
              return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
716
            }
717
            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
718
          }
719
          return null;
720
        } else {
721
          return validate(props, propName, componentName, location, propFullName);
722
        }
723
      }
724

    
725
      var chainedCheckType = checkType.bind(null, false);
726
      chainedCheckType.isRequired = checkType.bind(null, true);
727

    
728
      return chainedCheckType;
729
    }
730

    
731
    function createPrimitiveTypeChecker(expectedType) {
732
      function validate(props, propName, componentName, location, propFullName, secret) {
733
        var propValue = props[propName];
734
        var propType = getPropType(propValue);
735
        if (propType !== expectedType) {
736
          // `propValue` being instance of, say, date/regexp, pass the 'object'
737
          // check, but we can offer a more precise error message here rather than
738
          // 'of type `object`'.
739
          var preciseType = getPreciseType(propValue);
740

    
741
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
742
        }
743
        return null;
744
      }
745
      return createChainableTypeChecker(validate);
746
    }
747

    
748
    function createAnyTypeChecker() {
749
      return createChainableTypeChecker(emptyFunctionThatReturnsNull);
750
    }
751

    
752
    function createArrayOfTypeChecker(typeChecker) {
753
      function validate(props, propName, componentName, location, propFullName) {
754
        if (typeof typeChecker !== 'function') {
755
          return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
756
        }
757
        var propValue = props[propName];
758
        if (!Array.isArray(propValue)) {
759
          var propType = getPropType(propValue);
760
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
761
        }
762
        for (var i = 0; i < propValue.length; i++) {
763
          var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);
764
          if (error instanceof Error) {
765
            return error;
766
          }
767
        }
768
        return null;
769
      }
770
      return createChainableTypeChecker(validate);
771
    }
772

    
773
    function createElementTypeChecker() {
774
      function validate(props, propName, componentName, location, propFullName) {
775
        var propValue = props[propName];
776
        if (!isValidElement(propValue)) {
777
          var propType = getPropType(propValue);
778
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
779
        }
780
        return null;
781
      }
782
      return createChainableTypeChecker(validate);
783
    }
784

    
785
    function createElementTypeTypeChecker() {
786
      function validate(props, propName, componentName, location, propFullName) {
787
        var propValue = props[propName];
788
        if (!reactIs.isValidElementType(propValue)) {
789
          var propType = getPropType(propValue);
790
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
791
        }
792
        return null;
793
      }
794
      return createChainableTypeChecker(validate);
795
    }
796

    
797
    function createInstanceTypeChecker(expectedClass) {
798
      function validate(props, propName, componentName, location, propFullName) {
799
        if (!(props[propName] instanceof expectedClass)) {
800
          var expectedClassName = expectedClass.name || ANONYMOUS;
801
          var actualClassName = getClassName(props[propName]);
802
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
803
        }
804
        return null;
805
      }
806
      return createChainableTypeChecker(validate);
807
    }
808

    
809
    function createEnumTypeChecker(expectedValues) {
810
      if (!Array.isArray(expectedValues)) {
811
        {
812
          if (arguments.length > 1) {
813
            printWarning$1(
814
              'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +
815
              'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
816
            );
817
          } else {
818
            printWarning$1('Invalid argument supplied to oneOf, expected an array.');
819
          }
820
        }
821
        return emptyFunctionThatReturnsNull;
822
      }
823

    
824
      function validate(props, propName, componentName, location, propFullName) {
825
        var propValue = props[propName];
826
        for (var i = 0; i < expectedValues.length; i++) {
827
          if (is(propValue, expectedValues[i])) {
828
            return null;
829
          }
830
        }
831

    
832
        var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
833
          var type = getPreciseType(value);
834
          if (type === 'symbol') {
835
            return String(value);
836
          }
837
          return value;
838
        });
839
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
840
      }
841
      return createChainableTypeChecker(validate);
842
    }
843

    
844
    function createObjectOfTypeChecker(typeChecker) {
845
      function validate(props, propName, componentName, location, propFullName) {
846
        if (typeof typeChecker !== 'function') {
847
          return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
848
        }
849
        var propValue = props[propName];
850
        var propType = getPropType(propValue);
851
        if (propType !== 'object') {
852
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
853
        }
854
        for (var key in propValue) {
855
          if (has$1(propValue, key)) {
856
            var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);
857
            if (error instanceof Error) {
858
              return error;
859
            }
860
          }
861
        }
862
        return null;
863
      }
864
      return createChainableTypeChecker(validate);
865
    }
866

    
867
    function createUnionTypeChecker(arrayOfTypeCheckers) {
868
      if (!Array.isArray(arrayOfTypeCheckers)) {
869
         printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') ;
870
        return emptyFunctionThatReturnsNull;
871
      }
872

    
873
      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
874
        var checker = arrayOfTypeCheckers[i];
875
        if (typeof checker !== 'function') {
876
          printWarning$1(
877
            'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
878
            'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'
879
          );
880
          return emptyFunctionThatReturnsNull;
881
        }
882
      }
883

    
884
      function validate(props, propName, componentName, location, propFullName) {
885
        for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
886
          var checker = arrayOfTypeCheckers[i];
887
          if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {
888
            return null;
889
          }
890
        }
891

    
892
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
893
      }
894
      return createChainableTypeChecker(validate);
895
    }
896

    
897
    function createNodeChecker() {
898
      function validate(props, propName, componentName, location, propFullName) {
899
        if (!isNode(props[propName])) {
900
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
901
        }
902
        return null;
903
      }
904
      return createChainableTypeChecker(validate);
905
    }
906

    
907
    function createShapeTypeChecker(shapeTypes) {
908
      function validate(props, propName, componentName, location, propFullName) {
909
        var propValue = props[propName];
910
        var propType = getPropType(propValue);
911
        if (propType !== 'object') {
912
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
913
        }
914
        for (var key in shapeTypes) {
915
          var checker = shapeTypes[key];
916
          if (!checker) {
917
            continue;
918
          }
919
          var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);
920
          if (error) {
921
            return error;
922
          }
923
        }
924
        return null;
925
      }
926
      return createChainableTypeChecker(validate);
927
    }
928

    
929
    function createStrictShapeTypeChecker(shapeTypes) {
930
      function validate(props, propName, componentName, location, propFullName) {
931
        var propValue = props[propName];
932
        var propType = getPropType(propValue);
933
        if (propType !== 'object') {
934
          return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
935
        }
936
        // We need to check all keys in case some are required but missing from
937
        // props.
938
        var allKeys = objectAssign({}, props[propName], shapeTypes);
939
        for (var key in allKeys) {
940
          var checker = shapeTypes[key];
941
          if (!checker) {
942
            return new PropTypeError(
943
              'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
944
              '\nBad object: ' + JSON.stringify(props[propName], null, '  ') +
945
              '\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')
946
            );
947
          }
948
          var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);
949
          if (error) {
950
            return error;
951
          }
952
        }
953
        return null;
954
      }
955

    
956
      return createChainableTypeChecker(validate);
957
    }
958

    
959
    function isNode(propValue) {
960
      switch (typeof propValue) {
961
        case 'number':
962
        case 'string':
963
        case 'undefined':
964
          return true;
965
        case 'boolean':
966
          return !propValue;
967
        case 'object':
968
          if (Array.isArray(propValue)) {
969
            return propValue.every(isNode);
970
          }
971
          if (propValue === null || isValidElement(propValue)) {
972
            return true;
973
          }
974

    
975
          var iteratorFn = getIteratorFn(propValue);
976
          if (iteratorFn) {
977
            var iterator = iteratorFn.call(propValue);
978
            var step;
979
            if (iteratorFn !== propValue.entries) {
980
              while (!(step = iterator.next()).done) {
981
                if (!isNode(step.value)) {
982
                  return false;
983
                }
984
              }
985
            } else {
986
              // Iterator will provide entry [k,v] tuples rather than values.
987
              while (!(step = iterator.next()).done) {
988
                var entry = step.value;
989
                if (entry) {
990
                  if (!isNode(entry[1])) {
991
                    return false;
992
                  }
993
                }
994
              }
995
            }
996
          } else {
997
            return false;
998
          }
999

    
1000
          return true;
1001
        default:
1002
          return false;
1003
      }
1004
    }
1005

    
1006
    function isSymbol(propType, propValue) {
1007
      // Native Symbol.
1008
      if (propType === 'symbol') {
1009
        return true;
1010
      }
1011

    
1012
      // falsy value can't be a Symbol
1013
      if (!propValue) {
1014
        return false;
1015
      }
1016

    
1017
      // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
1018
      if (propValue['@@toStringTag'] === 'Symbol') {
1019
        return true;
1020
      }
1021

    
1022
      // Fallback for non-spec compliant Symbols which are polyfilled.
1023
      if (typeof Symbol === 'function' && propValue instanceof Symbol) {
1024
        return true;
1025
      }
1026

    
1027
      return false;
1028
    }
1029

    
1030
    // Equivalent of `typeof` but with special handling for array and regexp.
1031
    function getPropType(propValue) {
1032
      var propType = typeof propValue;
1033
      if (Array.isArray(propValue)) {
1034
        return 'array';
1035
      }
1036
      if (propValue instanceof RegExp) {
1037
        // Old webkits (at least until Android 4.0) return 'function' rather than
1038
        // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
1039
        // passes PropTypes.object.
1040
        return 'object';
1041
      }
1042
      if (isSymbol(propType, propValue)) {
1043
        return 'symbol';
1044
      }
1045
      return propType;
1046
    }
1047

    
1048
    // This handles more types than `getPropType`. Only used for error messages.
1049
    // See `createPrimitiveTypeChecker`.
1050
    function getPreciseType(propValue) {
1051
      if (typeof propValue === 'undefined' || propValue === null) {
1052
        return '' + propValue;
1053
      }
1054
      var propType = getPropType(propValue);
1055
      if (propType === 'object') {
1056
        if (propValue instanceof Date) {
1057
          return 'date';
1058
        } else if (propValue instanceof RegExp) {
1059
          return 'regexp';
1060
        }
1061
      }
1062
      return propType;
1063
    }
1064

    
1065
    // Returns a string that is postfixed to a warning about an invalid type.
1066
    // For example, "undefined" or "of type array"
1067
    function getPostfixForTypeWarning(value) {
1068
      var type = getPreciseType(value);
1069
      switch (type) {
1070
        case 'array':
1071
        case 'object':
1072
          return 'an ' + type;
1073
        case 'boolean':
1074
        case 'date':
1075
        case 'regexp':
1076
          return 'a ' + type;
1077
        default:
1078
          return type;
1079
      }
1080
    }
1081

    
1082
    // Returns class name of the object, if any.
1083
    function getClassName(propValue) {
1084
      if (!propValue.constructor || !propValue.constructor.name) {
1085
        return ANONYMOUS;
1086
      }
1087
      return propValue.constructor.name;
1088
    }
1089

    
1090
    ReactPropTypes.checkPropTypes = checkPropTypes_1;
1091
    ReactPropTypes.resetWarningCache = checkPropTypes_1.resetWarningCache;
1092
    ReactPropTypes.PropTypes = ReactPropTypes;
1093

    
1094
    return ReactPropTypes;
1095
  };
1096

    
1097
  var propTypes = createCommonjsModule(function (module) {
1098
  /**
1099
   * Copyright (c) 2013-present, Facebook, Inc.
1100
   *
1101
   * This source code is licensed under the MIT license found in the
1102
   * LICENSE file in the root directory of this source tree.
1103
   */
1104

    
1105
  {
1106
    var ReactIs = reactIs;
1107

    
1108
    // By explicitly using `prop-types` you are opting into new development behavior.
1109
    // http://fb.me/prop-types-in-prod
1110
    var throwOnDirectAccess = true;
1111
    module.exports = factoryWithTypeCheckers(ReactIs.isElement, throwOnDirectAccess);
1112
  }
1113
  });
1114

    
1115
  function _extends() {
1116
    _extends = Object.assign || function (target) {
1117
      for (var i = 1; i < arguments.length; i++) {
1118
        var source = arguments[i];
1119

    
1120
        for (var key in source) {
1121
          if (Object.prototype.hasOwnProperty.call(source, key)) {
1122
            target[key] = source[key];
1123
          }
1124
        }
1125
      }
1126

    
1127
      return target;
1128
    };
1129

    
1130
    return _extends.apply(this, arguments);
1131
  }
1132

    
1133
  function isAbsolute(pathname) {
1134
    return pathname.charAt(0) === '/';
1135
  }
1136

    
1137
  // About 1.5x faster than the two-arg version of Array#splice()
1138
  function spliceOne(list, index) {
1139
    for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {
1140
      list[i] = list[k];
1141
    }
1142

    
1143
    list.pop();
1144
  }
1145

    
1146
  // This implementation is based heavily on node's url.parse
1147
  function resolvePathname(to) {
1148
    var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
1149

    
1150
    var toParts = to && to.split('/') || [];
1151
    var fromParts = from && from.split('/') || [];
1152

    
1153
    var isToAbs = to && isAbsolute(to);
1154
    var isFromAbs = from && isAbsolute(from);
1155
    var mustEndAbs = isToAbs || isFromAbs;
1156

    
1157
    if (to && isAbsolute(to)) {
1158
      // to is absolute
1159
      fromParts = toParts;
1160
    } else if (toParts.length) {
1161
      // to is relative, drop the filename
1162
      fromParts.pop();
1163
      fromParts = fromParts.concat(toParts);
1164
    }
1165

    
1166
    if (!fromParts.length) return '/';
1167

    
1168
    var hasTrailingSlash = void 0;
1169
    if (fromParts.length) {
1170
      var last = fromParts[fromParts.length - 1];
1171
      hasTrailingSlash = last === '.' || last === '..' || last === '';
1172
    } else {
1173
      hasTrailingSlash = false;
1174
    }
1175

    
1176
    var up = 0;
1177
    for (var i = fromParts.length; i >= 0; i--) {
1178
      var part = fromParts[i];
1179

    
1180
      if (part === '.') {
1181
        spliceOne(fromParts, i);
1182
      } else if (part === '..') {
1183
        spliceOne(fromParts, i);
1184
        up++;
1185
      } else if (up) {
1186
        spliceOne(fromParts, i);
1187
        up--;
1188
      }
1189
    }
1190

    
1191
    if (!mustEndAbs) for (; up--; up) {
1192
      fromParts.unshift('..');
1193
    }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');
1194

    
1195
    var result = fromParts.join('/');
1196

    
1197
    if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';
1198

    
1199
    return result;
1200
  }
1201

    
1202
  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; };
1203

    
1204
  function valueEqual(a, b) {
1205
    if (a === b) return true;
1206

    
1207
    if (a == null || b == null) return false;
1208

    
1209
    if (Array.isArray(a)) {
1210
      return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {
1211
        return valueEqual(item, b[index]);
1212
      });
1213
    }
1214

    
1215
    var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);
1216
    var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);
1217

    
1218
    if (aType !== bType) return false;
1219

    
1220
    if (aType === 'object') {
1221
      var aValue = a.valueOf();
1222
      var bValue = b.valueOf();
1223

    
1224
      if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);
1225

    
1226
      var aKeys = Object.keys(a);
1227
      var bKeys = Object.keys(b);
1228

    
1229
      if (aKeys.length !== bKeys.length) return false;
1230

    
1231
      return aKeys.every(function (key) {
1232
        return valueEqual(a[key], b[key]);
1233
      });
1234
    }
1235

    
1236
    return false;
1237
  }
1238

    
1239
  function warning(condition, message) {
1240
    {
1241
      if (condition) {
1242
        return;
1243
      }
1244

    
1245
      var text = "Warning: " + message;
1246

    
1247
      if (typeof console !== 'undefined') {
1248
        console.warn(text);
1249
      }
1250

    
1251
      try {
1252
        throw Error(text);
1253
      } catch (x) {}
1254
    }
1255
  }
1256

    
1257
  var prefix = 'Invariant failed';
1258
  function invariant(condition, message) {
1259
    if (condition) {
1260
      return;
1261
    }
1262

    
1263
    {
1264
      throw new Error(prefix + ": " + (message || ''));
1265
    }
1266
  }
1267

    
1268
  function parsePath(path) {
1269
    var pathname = path || '/';
1270
    var search = '';
1271
    var hash = '';
1272
    var hashIndex = pathname.indexOf('#');
1273

    
1274
    if (hashIndex !== -1) {
1275
      hash = pathname.substr(hashIndex);
1276
      pathname = pathname.substr(0, hashIndex);
1277
    }
1278

    
1279
    var searchIndex = pathname.indexOf('?');
1280

    
1281
    if (searchIndex !== -1) {
1282
      search = pathname.substr(searchIndex);
1283
      pathname = pathname.substr(0, searchIndex);
1284
    }
1285

    
1286
    return {
1287
      pathname: pathname,
1288
      search: search === '?' ? '' : search,
1289
      hash: hash === '#' ? '' : hash
1290
    };
1291
  }
1292
  function createPath(location) {
1293
    var pathname = location.pathname,
1294
        search = location.search,
1295
        hash = location.hash;
1296
    var path = pathname || '/';
1297
    if (search && search !== '?') path += search.charAt(0) === '?' ? search : "?" + search;
1298
    if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : "#" + hash;
1299
    return path;
1300
  }
1301

    
1302
  function createLocation(path, state, key, currentLocation) {
1303
    var location;
1304

    
1305
    if (typeof path === 'string') {
1306
      // Two-arg form: push(path, state)
1307
      location = parsePath(path);
1308
      location.state = state;
1309
    } else {
1310
      // One-arg form: push(location)
1311
      location = _extends({}, path);
1312
      if (location.pathname === undefined) location.pathname = '';
1313

    
1314
      if (location.search) {
1315
        if (location.search.charAt(0) !== '?') location.search = '?' + location.search;
1316
      } else {
1317
        location.search = '';
1318
      }
1319

    
1320
      if (location.hash) {
1321
        if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;
1322
      } else {
1323
        location.hash = '';
1324
      }
1325

    
1326
      if (state !== undefined && location.state === undefined) location.state = state;
1327
    }
1328

    
1329
    try {
1330
      location.pathname = decodeURI(location.pathname);
1331
    } catch (e) {
1332
      if (e instanceof URIError) {
1333
        throw new URIError('Pathname "' + location.pathname + '" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');
1334
      } else {
1335
        throw e;
1336
      }
1337
    }
1338

    
1339
    if (key) location.key = key;
1340

    
1341
    if (currentLocation) {
1342
      // Resolve incomplete/relative pathname relative to current location.
1343
      if (!location.pathname) {
1344
        location.pathname = currentLocation.pathname;
1345
      } else if (location.pathname.charAt(0) !== '/') {
1346
        location.pathname = resolvePathname(location.pathname, currentLocation.pathname);
1347
      }
1348
    } else {
1349
      // When there is no prior location and pathname is empty, set it to /
1350
      if (!location.pathname) {
1351
        location.pathname = '/';
1352
      }
1353
    }
1354

    
1355
    return location;
1356
  }
1357
  function locationsAreEqual(a, b) {
1358
    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);
1359
  }
1360

    
1361
  function createTransitionManager() {
1362
    var prompt = null;
1363

    
1364
    function setPrompt(nextPrompt) {
1365
       warning(prompt == null, 'A history supports only one prompt at a time') ;
1366
      prompt = nextPrompt;
1367
      return function () {
1368
        if (prompt === nextPrompt) prompt = null;
1369
      };
1370
    }
1371

    
1372
    function confirmTransitionTo(location, action, getUserConfirmation, callback) {
1373
      // TODO: If another transition starts while we're still confirming
1374
      // the previous one, we may end up in a weird state. Figure out the
1375
      // best way to handle this.
1376
      if (prompt != null) {
1377
        var result = typeof prompt === 'function' ? prompt(location, action) : prompt;
1378

    
1379
        if (typeof result === 'string') {
1380
          if (typeof getUserConfirmation === 'function') {
1381
            getUserConfirmation(result, callback);
1382
          } else {
1383
             warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') ;
1384
            callback(true);
1385
          }
1386
        } else {
1387
          // Return false from a transition hook to cancel the transition.
1388
          callback(result !== false);
1389
        }
1390
      } else {
1391
        callback(true);
1392
      }
1393
    }
1394

    
1395
    var listeners = [];
1396

    
1397
    function appendListener(fn) {
1398
      var isActive = true;
1399

    
1400
      function listener() {
1401
        if (isActive) fn.apply(void 0, arguments);
1402
      }
1403

    
1404
      listeners.push(listener);
1405
      return function () {
1406
        isActive = false;
1407
        listeners = listeners.filter(function (item) {
1408
          return item !== listener;
1409
        });
1410
      };
1411
    }
1412

    
1413
    function notifyListeners() {
1414
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1415
        args[_key] = arguments[_key];
1416
      }
1417

    
1418
      listeners.forEach(function (listener) {
1419
        return listener.apply(void 0, args);
1420
      });
1421
    }
1422

    
1423
    return {
1424
      setPrompt: setPrompt,
1425
      confirmTransitionTo: confirmTransitionTo,
1426
      appendListener: appendListener,
1427
      notifyListeners: notifyListeners
1428
    };
1429
  }
1430

    
1431
  var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
1432

    
1433
  function clamp(n, lowerBound, upperBound) {
1434
    return Math.min(Math.max(n, lowerBound), upperBound);
1435
  }
1436
  /**
1437
   * Creates a history object that stores locations in memory.
1438
   */
1439

    
1440

    
1441
  function createMemoryHistory(props) {
1442
    if (props === void 0) {
1443
      props = {};
1444
    }
1445

    
1446
    var _props = props,
1447
        getUserConfirmation = _props.getUserConfirmation,
1448
        _props$initialEntries = _props.initialEntries,
1449
        initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,
1450
        _props$initialIndex = _props.initialIndex,
1451
        initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,
1452
        _props$keyLength = _props.keyLength,
1453
        keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;
1454
    var transitionManager = createTransitionManager();
1455

    
1456
    function setState(nextState) {
1457
      _extends(history, nextState);
1458

    
1459
      history.length = history.entries.length;
1460
      transitionManager.notifyListeners(history.location, history.action);
1461
    }
1462

    
1463
    function createKey() {
1464
      return Math.random().toString(36).substr(2, keyLength);
1465
    }
1466

    
1467
    var index = clamp(initialIndex, 0, initialEntries.length - 1);
1468
    var entries = initialEntries.map(function (entry) {
1469
      return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());
1470
    }); // Public interface
1471

    
1472
    var createHref = createPath;
1473

    
1474
    function push(path, state) {
1475
       warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') ;
1476
      var action = 'PUSH';
1477
      var location = createLocation(path, state, createKey(), history.location);
1478
      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
1479
        if (!ok) return;
1480
        var prevIndex = history.index;
1481
        var nextIndex = prevIndex + 1;
1482
        var nextEntries = history.entries.slice(0);
1483

    
1484
        if (nextEntries.length > nextIndex) {
1485
          nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);
1486
        } else {
1487
          nextEntries.push(location);
1488
        }
1489

    
1490
        setState({
1491
          action: action,
1492
          location: location,
1493
          index: nextIndex,
1494
          entries: nextEntries
1495
        });
1496
      });
1497
    }
1498

    
1499
    function replace(path, state) {
1500
       warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') ;
1501
      var action = 'REPLACE';
1502
      var location = createLocation(path, state, createKey(), history.location);
1503
      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
1504
        if (!ok) return;
1505
        history.entries[history.index] = location;
1506
        setState({
1507
          action: action,
1508
          location: location
1509
        });
1510
      });
1511
    }
1512

    
1513
    function go(n) {
1514
      var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);
1515
      var action = 'POP';
1516
      var location = history.entries[nextIndex];
1517
      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {
1518
        if (ok) {
1519
          setState({
1520
            action: action,
1521
            location: location,
1522
            index: nextIndex
1523
          });
1524
        } else {
1525
          // Mimic the behavior of DOM histories by
1526
          // causing a render after a cancelled POP.
1527
          setState();
1528
        }
1529
      });
1530
    }
1531

    
1532
    function goBack() {
1533
      go(-1);
1534
    }
1535

    
1536
    function goForward() {
1537
      go(1);
1538
    }
1539

    
1540
    function canGo(n) {
1541
      var nextIndex = history.index + n;
1542
      return nextIndex >= 0 && nextIndex < history.entries.length;
1543
    }
1544

    
1545
    function block(prompt) {
1546
      if (prompt === void 0) {
1547
        prompt = false;
1548
      }
1549

    
1550
      return transitionManager.setPrompt(prompt);
1551
    }
1552

    
1553
    function listen(listener) {
1554
      return transitionManager.appendListener(listener);
1555
    }
1556

    
1557
    var history = {
1558
      length: entries.length,
1559
      action: 'POP',
1560
      location: entries[index],
1561
      index: index,
1562
      entries: entries,
1563
      createHref: createHref,
1564
      push: push,
1565
      replace: replace,
1566
      go: go,
1567
      goBack: goBack,
1568
      goForward: goForward,
1569
      canGo: canGo,
1570
      block: block,
1571
      listen: listen
1572
    };
1573
    return history;
1574
  }
1575

    
1576
  function _inheritsLoose$1(subClass, superClass) {
1577
    subClass.prototype = Object.create(superClass.prototype);
1578
    subClass.prototype.constructor = subClass;
1579
    subClass.__proto__ = superClass;
1580
  }
1581

    
1582
  var inheritsLoose = _inheritsLoose$1;
1583

    
1584
  var key = '__global_unique_id__';
1585

    
1586
  var gud = function() {
1587
    return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;
1588
  };
1589

    
1590
  var MAX_SIGNED_31_BIT_INT = 1073741823;
1591

    
1592
  function objectIs(x, y) {
1593
    if (x === y) {
1594
      return x !== 0 || 1 / x === 1 / y;
1595
    } else {
1596
      return x !== x && y !== y;
1597
    }
1598
  }
1599

    
1600
  function createEventEmitter(value) {
1601
    var handlers = [];
1602
    return {
1603
      on: function on(handler) {
1604
        handlers.push(handler);
1605
      },
1606
      off: function off(handler) {
1607
        handlers = handlers.filter(function (h) {
1608
          return h !== handler;
1609
        });
1610
      },
1611
      get: function get() {
1612
        return value;
1613
      },
1614
      set: function set(newValue, changedBits) {
1615
        value = newValue;
1616
        handlers.forEach(function (handler) {
1617
          return handler(value, changedBits);
1618
        });
1619
      }
1620
    };
1621
  }
1622

    
1623
  function onlyChild(children) {
1624
    return Array.isArray(children) ? children[0] : children;
1625
  }
1626

    
1627
  function createReactContext(defaultValue, calculateChangedBits) {
1628
    var _Provider$childContex, _Consumer$contextType;
1629

    
1630
    var contextProp = '__create-react-context-' + gud() + '__';
1631

    
1632
    var Provider =
1633
    /*#__PURE__*/
1634
    function (_Component) {
1635
      inheritsLoose(Provider, _Component);
1636

    
1637
      function Provider() {
1638
        var _this;
1639

    
1640
        _this = _Component.apply(this, arguments) || this;
1641
        _this.emitter = createEventEmitter(_this.props.value);
1642
        return _this;
1643
      }
1644

    
1645
      var _proto = Provider.prototype;
1646

    
1647
      _proto.getChildContext = function getChildContext() {
1648
        var _ref;
1649

    
1650
        return _ref = {}, _ref[contextProp] = this.emitter, _ref;
1651
      };
1652

    
1653
      _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
1654
        if (this.props.value !== nextProps.value) {
1655
          var oldValue = this.props.value;
1656
          var newValue = nextProps.value;
1657
          var changedBits;
1658

    
1659
          if (objectIs(oldValue, newValue)) {
1660
            changedBits = 0;
1661
          } else {
1662
            changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;
1663

    
1664
            {
1665
              warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);
1666
            }
1667

    
1668
            changedBits |= 0;
1669

    
1670
            if (changedBits !== 0) {
1671
              this.emitter.set(nextProps.value, changedBits);
1672
            }
1673
          }
1674
        }
1675
      };
1676

    
1677
      _proto.render = function render() {
1678
        return this.props.children;
1679
      };
1680

    
1681
      return Provider;
1682
    }(React.Component);
1683

    
1684
    Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = propTypes.object.isRequired, _Provider$childContex);
1685

    
1686
    var Consumer =
1687
    /*#__PURE__*/
1688
    function (_Component2) {
1689
      inheritsLoose(Consumer, _Component2);
1690

    
1691
      function Consumer() {
1692
        var _this2;
1693

    
1694
        _this2 = _Component2.apply(this, arguments) || this;
1695
        _this2.state = {
1696
          value: _this2.getValue()
1697
        };
1698

    
1699
        _this2.onUpdate = function (newValue, changedBits) {
1700
          var observedBits = _this2.observedBits | 0;
1701

    
1702
          if ((observedBits & changedBits) !== 0) {
1703
            _this2.setState({
1704
              value: _this2.getValue()
1705
            });
1706
          }
1707
        };
1708

    
1709
        return _this2;
1710
      }
1711

    
1712
      var _proto2 = Consumer.prototype;
1713

    
1714
      _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
1715
        var observedBits = nextProps.observedBits;
1716
        this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;
1717
      };
1718

    
1719
      _proto2.componentDidMount = function componentDidMount() {
1720
        if (this.context[contextProp]) {
1721
          this.context[contextProp].on(this.onUpdate);
1722
        }
1723

    
1724
        var observedBits = this.props.observedBits;
1725
        this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;
1726
      };
1727

    
1728
      _proto2.componentWillUnmount = function componentWillUnmount() {
1729
        if (this.context[contextProp]) {
1730
          this.context[contextProp].off(this.onUpdate);
1731
        }
1732
      };
1733

    
1734
      _proto2.getValue = function getValue() {
1735
        if (this.context[contextProp]) {
1736
          return this.context[contextProp].get();
1737
        } else {
1738
          return defaultValue;
1739
        }
1740
      };
1741

    
1742
      _proto2.render = function render() {
1743
        return onlyChild(this.props.children)(this.state.value);
1744
      };
1745

    
1746
      return Consumer;
1747
    }(React.Component);
1748

    
1749
    Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = propTypes.object, _Consumer$contextType);
1750
    return {
1751
      Provider: Provider,
1752
      Consumer: Consumer
1753
    };
1754
  }
1755

    
1756
  var index = React__default.createContext || createReactContext;
1757

    
1758
  // TODO: Replace with React.createContext once we can assume React 16+
1759

    
1760
  var createNamedContext = function createNamedContext(name) {
1761
    var context = index();
1762
    context.displayName = name;
1763
    return context;
1764
  };
1765

    
1766
  var context =
1767
  /*#__PURE__*/
1768
  createNamedContext("Router");
1769

    
1770
  /**
1771
   * The public API for putting history on context.
1772
   */
1773

    
1774
  var Router =
1775
  /*#__PURE__*/
1776
  function (_React$Component) {
1777
    _inheritsLoose(Router, _React$Component);
1778

    
1779
    Router.computeRootMatch = function computeRootMatch(pathname) {
1780
      return {
1781
        path: "/",
1782
        url: "/",
1783
        params: {},
1784
        isExact: pathname === "/"
1785
      };
1786
    };
1787

    
1788
    function Router(props) {
1789
      var _this;
1790

    
1791
      _this = _React$Component.call(this, props) || this;
1792
      _this.state = {
1793
        location: props.history.location
1794
      }; // This is a bit of a hack. We have to start listening for location
1795
      // changes here in the constructor in case there are any <Redirect>s
1796
      // on the initial render. If there are, they will replace/push when
1797
      // they mount and since cDM fires in children before parents, we may
1798
      // get a new location before the <Router> is mounted.
1799

    
1800
      _this._isMounted = false;
1801
      _this._pendingLocation = null;
1802

    
1803
      if (!props.staticContext) {
1804
        _this.unlisten = props.history.listen(function (location) {
1805
          if (_this._isMounted) {
1806
            _this.setState({
1807
              location: location
1808
            });
1809
          } else {
1810
            _this._pendingLocation = location;
1811
          }
1812
        });
1813
      }
1814

    
1815
      return _this;
1816
    }
1817

    
1818
    var _proto = Router.prototype;
1819

    
1820
    _proto.componentDidMount = function componentDidMount() {
1821
      this._isMounted = true;
1822

    
1823
      if (this._pendingLocation) {
1824
        this.setState({
1825
          location: this._pendingLocation
1826
        });
1827
      }
1828
    };
1829

    
1830
    _proto.componentWillUnmount = function componentWillUnmount() {
1831
      if (this.unlisten) this.unlisten();
1832
    };
1833

    
1834
    _proto.render = function render() {
1835
      return React__default.createElement(context.Provider, {
1836
        children: this.props.children || null,
1837
        value: {
1838
          history: this.props.history,
1839
          location: this.state.location,
1840
          match: Router.computeRootMatch(this.state.location.pathname),
1841
          staticContext: this.props.staticContext
1842
        }
1843
      });
1844
    };
1845

    
1846
    return Router;
1847
  }(React__default.Component);
1848

    
1849
  {
1850
    Router.propTypes = {
1851
      children: propTypes.node,
1852
      history: propTypes.object.isRequired,
1853
      staticContext: propTypes.object
1854
    };
1855

    
1856
    Router.prototype.componentDidUpdate = function (prevProps) {
1857
       warning(prevProps.history === this.props.history, "You cannot change <Router history>") ;
1858
    };
1859
  }
1860

    
1861
  /**
1862
   * The public API for a <Router> that stores location in memory.
1863
   */
1864

    
1865
  var MemoryRouter =
1866
  /*#__PURE__*/
1867
  function (_React$Component) {
1868
    _inheritsLoose(MemoryRouter, _React$Component);
1869

    
1870
    function MemoryRouter() {
1871
      var _this;
1872

    
1873
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1874
        args[_key] = arguments[_key];
1875
      }
1876

    
1877
      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
1878
      _this.history = createMemoryHistory(_this.props);
1879
      return _this;
1880
    }
1881

    
1882
    var _proto = MemoryRouter.prototype;
1883

    
1884
    _proto.render = function render() {
1885
      return React__default.createElement(Router, {
1886
        history: this.history,
1887
        children: this.props.children
1888
      });
1889
    };
1890

    
1891
    return MemoryRouter;
1892
  }(React__default.Component);
1893

    
1894
  {
1895
    MemoryRouter.propTypes = {
1896
      initialEntries: propTypes.array,
1897
      initialIndex: propTypes.number,
1898
      getUserConfirmation: propTypes.func,
1899
      keyLength: propTypes.number,
1900
      children: propTypes.node
1901
    };
1902

    
1903
    MemoryRouter.prototype.componentDidMount = function () {
1904
       warning(!this.props.history, "<MemoryRouter> ignores the history prop. To use a custom history, " + "use `import { Router }` instead of `import { MemoryRouter as Router }`.") ;
1905
    };
1906
  }
1907

    
1908
  var Lifecycle =
1909
  /*#__PURE__*/
1910
  function (_React$Component) {
1911
    _inheritsLoose(Lifecycle, _React$Component);
1912

    
1913
    function Lifecycle() {
1914
      return _React$Component.apply(this, arguments) || this;
1915
    }
1916

    
1917
    var _proto = Lifecycle.prototype;
1918

    
1919
    _proto.componentDidMount = function componentDidMount() {
1920
      if (this.props.onMount) this.props.onMount.call(this, this);
1921
    };
1922

    
1923
    _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
1924
      if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);
1925
    };
1926

    
1927
    _proto.componentWillUnmount = function componentWillUnmount() {
1928
      if (this.props.onUnmount) this.props.onUnmount.call(this, this);
1929
    };
1930

    
1931
    _proto.render = function render() {
1932
      return null;
1933
    };
1934

    
1935
    return Lifecycle;
1936
  }(React__default.Component);
1937

    
1938
  /**
1939
   * The public API for prompting the user before navigating away from a screen.
1940
   */
1941

    
1942
  function Prompt(_ref) {
1943
    var message = _ref.message,
1944
        _ref$when = _ref.when,
1945
        when = _ref$when === void 0 ? true : _ref$when;
1946
    return React__default.createElement(context.Consumer, null, function (context) {
1947
      !context ?  invariant(false, "You should not use <Prompt> outside a <Router>")  : void 0;
1948
      if (!when || context.staticContext) return null;
1949
      var method = context.history.block;
1950
      return React__default.createElement(Lifecycle, {
1951
        onMount: function onMount(self) {
1952
          self.release = method(message);
1953
        },
1954
        onUpdate: function onUpdate(self, prevProps) {
1955
          if (prevProps.message !== message) {
1956
            self.release();
1957
            self.release = method(message);
1958
          }
1959
        },
1960
        onUnmount: function onUnmount(self) {
1961
          self.release();
1962
        },
1963
        message: message
1964
      });
1965
    });
1966
  }
1967

    
1968
  {
1969
    var messageType = propTypes.oneOfType([propTypes.func, propTypes.string]);
1970
    Prompt.propTypes = {
1971
      when: propTypes.bool,
1972
      message: messageType.isRequired
1973
    };
1974
  }
1975

    
1976
  var isarray = Array.isArray || function (arr) {
1977
    return Object.prototype.toString.call(arr) == '[object Array]';
1978
  };
1979

    
1980
  /**
1981
   * Expose `pathToRegexp`.
1982
   */
1983
  var pathToRegexp_1 = pathToRegexp;
1984
  var parse_1 = parse;
1985
  var compile_1 = compile;
1986
  var tokensToFunction_1 = tokensToFunction;
1987
  var tokensToRegExp_1 = tokensToRegExp;
1988

    
1989
  /**
1990
   * The main path matching regexp utility.
1991
   *
1992
   * @type {RegExp}
1993
   */
1994
  var PATH_REGEXP = new RegExp([
1995
    // Match escaped characters that would otherwise appear in future matches.
1996
    // This allows the user to escape special characters that won't transform.
1997
    '(\\\\.)',
1998
    // Match Express-style parameters and un-named parameters with a prefix
1999
    // and optional suffixes. Matches appear as:
2000
    //
2001
    // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined]
2002
    // "/route(\\d+)"  => [undefined, undefined, undefined, "\d+", undefined, undefined]
2003
    // "/*"            => ["/", undefined, undefined, undefined, undefined, "*"]
2004
    '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))'
2005
  ].join('|'), 'g');
2006

    
2007
  /**
2008
   * Parse a string for the raw tokens.
2009
   *
2010
   * @param  {string}  str
2011
   * @param  {Object=} options
2012
   * @return {!Array}
2013
   */
2014
  function parse (str, options) {
2015
    var tokens = [];
2016
    var key = 0;
2017
    var index = 0;
2018
    var path = '';
2019
    var defaultDelimiter = options && options.delimiter || '/';
2020
    var res;
2021

    
2022
    while ((res = PATH_REGEXP.exec(str)) != null) {
2023
      var m = res[0];
2024
      var escaped = res[1];
2025
      var offset = res.index;
2026
      path += str.slice(index, offset);
2027
      index = offset + m.length;
2028

    
2029
      // Ignore already escaped sequences.
2030
      if (escaped) {
2031
        path += escaped[1];
2032
        continue
2033
      }
2034

    
2035
      var next = str[index];
2036
      var prefix = res[2];
2037
      var name = res[3];
2038
      var capture = res[4];
2039
      var group = res[5];
2040
      var modifier = res[6];
2041
      var asterisk = res[7];
2042

    
2043
      // Push the current path onto the tokens.
2044
      if (path) {
2045
        tokens.push(path);
2046
        path = '';
2047
      }
2048

    
2049
      var partial = prefix != null && next != null && next !== prefix;
2050
      var repeat = modifier === '+' || modifier === '*';
2051
      var optional = modifier === '?' || modifier === '*';
2052
      var delimiter = res[2] || defaultDelimiter;
2053
      var pattern = capture || group;
2054

    
2055
      tokens.push({
2056
        name: name || key++,
2057
        prefix: prefix || '',
2058
        delimiter: delimiter,
2059
        optional: optional,
2060
        repeat: repeat,
2061
        partial: partial,
2062
        asterisk: !!asterisk,
2063
        pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')
2064
      });
2065
    }
2066

    
2067
    // Match any characters still remaining.
2068
    if (index < str.length) {
2069
      path += str.substr(index);
2070
    }
2071

    
2072
    // If the path exists, push it onto the end.
2073
    if (path) {
2074
      tokens.push(path);
2075
    }
2076

    
2077
    return tokens
2078
  }
2079

    
2080
  /**
2081
   * Compile a string to a template function for the path.
2082
   *
2083
   * @param  {string}             str
2084
   * @param  {Object=}            options
2085
   * @return {!function(Object=, Object=)}
2086
   */
2087
  function compile (str, options) {
2088
    return tokensToFunction(parse(str, options))
2089
  }
2090

    
2091
  /**
2092
   * Prettier encoding of URI path segments.
2093
   *
2094
   * @param  {string}
2095
   * @return {string}
2096
   */
2097
  function encodeURIComponentPretty (str) {
2098
    return encodeURI(str).replace(/[\/?#]/g, function (c) {
2099
      return '%' + c.charCodeAt(0).toString(16).toUpperCase()
2100
    })
2101
  }
2102

    
2103
  /**
2104
   * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.
2105
   *
2106
   * @param  {string}
2107
   * @return {string}
2108
   */
2109
  function encodeAsterisk (str) {
2110
    return encodeURI(str).replace(/[?#]/g, function (c) {
2111
      return '%' + c.charCodeAt(0).toString(16).toUpperCase()
2112
    })
2113
  }
2114

    
2115
  /**
2116
   * Expose a method for transforming tokens into the path function.
2117
   */
2118
  function tokensToFunction (tokens) {
2119
    // Compile all the tokens into regexps.
2120
    var matches = new Array(tokens.length);
2121

    
2122
    // Compile all the patterns before compilation.
2123
    for (var i = 0; i < tokens.length; i++) {
2124
      if (typeof tokens[i] === 'object') {
2125
        matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$');
2126
      }
2127
    }
2128

    
2129
    return function (obj, opts) {
2130
      var path = '';
2131
      var data = obj || {};
2132
      var options = opts || {};
2133
      var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;
2134

    
2135
      for (var i = 0; i < tokens.length; i++) {
2136
        var token = tokens[i];
2137

    
2138
        if (typeof token === 'string') {
2139
          path += token;
2140

    
2141
          continue
2142
        }
2143

    
2144
        var value = data[token.name];
2145
        var segment;
2146

    
2147
        if (value == null) {
2148
          if (token.optional) {
2149
            // Prepend partial segment prefixes.
2150
            if (token.partial) {
2151
              path += token.prefix;
2152
            }
2153

    
2154
            continue
2155
          } else {
2156
            throw new TypeError('Expected "' + token.name + '" to be defined')
2157
          }
2158
        }
2159

    
2160
        if (isarray(value)) {
2161
          if (!token.repeat) {
2162
            throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`')
2163
          }
2164

    
2165
          if (value.length === 0) {
2166
            if (token.optional) {
2167
              continue
2168
            } else {
2169
              throw new TypeError('Expected "' + token.name + '" to not be empty')
2170
            }
2171
          }
2172

    
2173
          for (var j = 0; j < value.length; j++) {
2174
            segment = encode(value[j]);
2175

    
2176
            if (!matches[i].test(segment)) {
2177
              throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`')
2178
            }
2179

    
2180
            path += (j === 0 ? token.prefix : token.delimiter) + segment;
2181
          }
2182

    
2183
          continue
2184
        }
2185

    
2186
        segment = token.asterisk ? encodeAsterisk(value) : encode(value);
2187

    
2188
        if (!matches[i].test(segment)) {
2189
          throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"')
2190
        }
2191

    
2192
        path += token.prefix + segment;
2193
      }
2194

    
2195
      return path
2196
    }
2197
  }
2198

    
2199
  /**
2200
   * Escape a regular expression string.
2201
   *
2202
   * @param  {string} str
2203
   * @return {string}
2204
   */
2205
  function escapeString (str) {
2206
    return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1')
2207
  }
2208

    
2209
  /**
2210
   * Escape the capturing group by escaping special characters and meaning.
2211
   *
2212
   * @param  {string} group
2213
   * @return {string}
2214
   */
2215
  function escapeGroup (group) {
2216
    return group.replace(/([=!:$\/()])/g, '\\$1')
2217
  }
2218

    
2219
  /**
2220
   * Attach the keys as a property of the regexp.
2221
   *
2222
   * @param  {!RegExp} re
2223
   * @param  {Array}   keys
2224
   * @return {!RegExp}
2225
   */
2226
  function attachKeys (re, keys) {
2227
    re.keys = keys;
2228
    return re
2229
  }
2230

    
2231
  /**
2232
   * Get the flags for a regexp from the options.
2233
   *
2234
   * @param  {Object} options
2235
   * @return {string}
2236
   */
2237
  function flags (options) {
2238
    return options.sensitive ? '' : 'i'
2239
  }
2240

    
2241
  /**
2242
   * Pull out keys from a regexp.
2243
   *
2244
   * @param  {!RegExp} path
2245
   * @param  {!Array}  keys
2246
   * @return {!RegExp}
2247
   */
2248
  function regexpToRegexp (path, keys) {
2249
    // Use a negative lookahead to match only capturing groups.
2250
    var groups = path.source.match(/\((?!\?)/g);
2251

    
2252
    if (groups) {
2253
      for (var i = 0; i < groups.length; i++) {
2254
        keys.push({
2255
          name: i,
2256
          prefix: null,
2257
          delimiter: null,
2258
          optional: false,
2259
          repeat: false,
2260
          partial: false,
2261
          asterisk: false,
2262
          pattern: null
2263
        });
2264
      }
2265
    }
2266

    
2267
    return attachKeys(path, keys)
2268
  }
2269

    
2270
  /**
2271
   * Transform an array into a regexp.
2272
   *
2273
   * @param  {!Array}  path
2274
   * @param  {Array}   keys
2275
   * @param  {!Object} options
2276
   * @return {!RegExp}
2277
   */
2278
  function arrayToRegexp (path, keys, options) {
2279
    var parts = [];
2280

    
2281
    for (var i = 0; i < path.length; i++) {
2282
      parts.push(pathToRegexp(path[i], keys, options).source);
2283
    }
2284

    
2285
    var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));
2286

    
2287
    return attachKeys(regexp, keys)
2288
  }
2289

    
2290
  /**
2291
   * Create a path regexp from string input.
2292
   *
2293
   * @param  {string}  path
2294
   * @param  {!Array}  keys
2295
   * @param  {!Object} options
2296
   * @return {!RegExp}
2297
   */
2298
  function stringToRegexp (path, keys, options) {
2299
    return tokensToRegExp(parse(path, options), keys, options)
2300
  }
2301

    
2302
  /**
2303
   * Expose a function for taking tokens and returning a RegExp.
2304
   *
2305
   * @param  {!Array}          tokens
2306
   * @param  {(Array|Object)=} keys
2307
   * @param  {Object=}         options
2308
   * @return {!RegExp}
2309
   */
2310
  function tokensToRegExp (tokens, keys, options) {
2311
    if (!isarray(keys)) {
2312
      options = /** @type {!Object} */ (keys || options);
2313
      keys = [];
2314
    }
2315

    
2316
    options = options || {};
2317

    
2318
    var strict = options.strict;
2319
    var end = options.end !== false;
2320
    var route = '';
2321

    
2322
    // Iterate over the tokens and create our regexp string.
2323
    for (var i = 0; i < tokens.length; i++) {
2324
      var token = tokens[i];
2325

    
2326
      if (typeof token === 'string') {
2327
        route += escapeString(token);
2328
      } else {
2329
        var prefix = escapeString(token.prefix);
2330
        var capture = '(?:' + token.pattern + ')';
2331

    
2332
        keys.push(token);
2333

    
2334
        if (token.repeat) {
2335
          capture += '(?:' + prefix + capture + ')*';
2336
        }
2337

    
2338
        if (token.optional) {
2339
          if (!token.partial) {
2340
            capture = '(?:' + prefix + '(' + capture + '))?';
2341
          } else {
2342
            capture = prefix + '(' + capture + ')?';
2343
          }
2344
        } else {
2345
          capture = prefix + '(' + capture + ')';
2346
        }
2347

    
2348
        route += capture;
2349
      }
2350
    }
2351

    
2352
    var delimiter = escapeString(options.delimiter || '/');
2353
    var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;
2354

    
2355
    // In non-strict mode we allow a slash at the end of match. If the path to
2356
    // match already ends with a slash, we remove it for consistency. The slash
2357
    // is valid at the end of a path match, not in the middle. This is important
2358
    // in non-ending mode, where "/test/" shouldn't match "/test//route".
2359
    if (!strict) {
2360
      route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';
2361
    }
2362

    
2363
    if (end) {
2364
      route += '$';
2365
    } else {
2366
      // In non-ending mode, we need the capturing groups to match as much as
2367
      // possible by using a positive lookahead to the end or next path segment.
2368
      route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';
2369
    }
2370

    
2371
    return attachKeys(new RegExp('^' + route, flags(options)), keys)
2372
  }
2373

    
2374
  /**
2375
   * Normalize the given path string, returning a regular expression.
2376
   *
2377
   * An empty array can be passed in for the keys, which will hold the
2378
   * placeholder key descriptions. For example, using `/user/:id`, `keys` will
2379
   * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
2380
   *
2381
   * @param  {(string|RegExp|Array)} path
2382
   * @param  {(Array|Object)=}       keys
2383
   * @param  {Object=}               options
2384
   * @return {!RegExp}
2385
   */
2386
  function pathToRegexp (path, keys, options) {
2387
    if (!isarray(keys)) {
2388
      options = /** @type {!Object} */ (keys || options);
2389
      keys = [];
2390
    }
2391

    
2392
    options = options || {};
2393

    
2394
    if (path instanceof RegExp) {
2395
      return regexpToRegexp(path, /** @type {!Array} */ (keys))
2396
    }
2397

    
2398
    if (isarray(path)) {
2399
      return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)
2400
    }
2401

    
2402
    return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)
2403
  }
2404
  pathToRegexp_1.parse = parse_1;
2405
  pathToRegexp_1.compile = compile_1;
2406
  pathToRegexp_1.tokensToFunction = tokensToFunction_1;
2407
  pathToRegexp_1.tokensToRegExp = tokensToRegExp_1;
2408

    
2409
  var cache = {};
2410
  var cacheLimit = 10000;
2411
  var cacheCount = 0;
2412

    
2413
  function compilePath(path) {
2414
    if (cache[path]) return cache[path];
2415
    var generator = pathToRegexp_1.compile(path);
2416

    
2417
    if (cacheCount < cacheLimit) {
2418
      cache[path] = generator;
2419
      cacheCount++;
2420
    }
2421

    
2422
    return generator;
2423
  }
2424
  /**
2425
   * Public API for generating a URL pathname from a path and parameters.
2426
   */
2427

    
2428

    
2429
  function generatePath(path, params) {
2430
    if (path === void 0) {
2431
      path = "/";
2432
    }
2433

    
2434
    if (params === void 0) {
2435
      params = {};
2436
    }
2437

    
2438
    return path === "/" ? path : compilePath(path)(params, {
2439
      pretty: true
2440
    });
2441
  }
2442

    
2443
  /**
2444
   * The public API for navigating programmatically with a component.
2445
   */
2446

    
2447
  function Redirect(_ref) {
2448
    var computedMatch = _ref.computedMatch,
2449
        to = _ref.to,
2450
        _ref$push = _ref.push,
2451
        push = _ref$push === void 0 ? false : _ref$push;
2452
    return React__default.createElement(context.Consumer, null, function (context) {
2453
      !context ?  invariant(false, "You should not use <Redirect> outside a <Router>")  : void 0;
2454
      var history = context.history,
2455
          staticContext = context.staticContext;
2456
      var method = push ? history.push : history.replace;
2457
      var location = createLocation(computedMatch ? typeof to === "string" ? generatePath(to, computedMatch.params) : _extends({}, to, {
2458
        pathname: generatePath(to.pathname, computedMatch.params)
2459
      }) : to); // When rendering in a static context,
2460
      // set the new location immediately.
2461

    
2462
      if (staticContext) {
2463
        method(location);
2464
        return null;
2465
      }
2466

    
2467
      return React__default.createElement(Lifecycle, {
2468
        onMount: function onMount() {
2469
          method(location);
2470
        },
2471
        onUpdate: function onUpdate(self, prevProps) {
2472
          var prevLocation = createLocation(prevProps.to);
2473

    
2474
          if (!locationsAreEqual(prevLocation, _extends({}, location, {
2475
            key: prevLocation.key
2476
          }))) {
2477
            method(location);
2478
          }
2479
        },
2480
        to: to
2481
      });
2482
    });
2483
  }
2484

    
2485
  {
2486
    Redirect.propTypes = {
2487
      push: propTypes.bool,
2488
      from: propTypes.string,
2489
      to: propTypes.oneOfType([propTypes.string, propTypes.object]).isRequired
2490
    };
2491
  }
2492

    
2493
  var cache$1 = {};
2494
  var cacheLimit$1 = 10000;
2495
  var cacheCount$1 = 0;
2496

    
2497
  function compilePath$1(path, options) {
2498
    var cacheKey = "" + options.end + options.strict + options.sensitive;
2499
    var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});
2500
    if (pathCache[path]) return pathCache[path];
2501
    var keys = [];
2502
    var regexp = pathToRegexp_1(path, keys, options);
2503
    var result = {
2504
      regexp: regexp,
2505
      keys: keys
2506
    };
2507

    
2508
    if (cacheCount$1 < cacheLimit$1) {
2509
      pathCache[path] = result;
2510
      cacheCount$1++;
2511
    }
2512

    
2513
    return result;
2514
  }
2515
  /**
2516
   * Public API for matching a URL pathname to a path.
2517
   */
2518

    
2519

    
2520
  function matchPath(pathname, options) {
2521
    if (options === void 0) {
2522
      options = {};
2523
    }
2524

    
2525
    if (typeof options === "string" || Array.isArray(options)) {
2526
      options = {
2527
        path: options
2528
      };
2529
    }
2530

    
2531
    var _options = options,
2532
        path = _options.path,
2533
        _options$exact = _options.exact,
2534
        exact = _options$exact === void 0 ? false : _options$exact,
2535
        _options$strict = _options.strict,
2536
        strict = _options$strict === void 0 ? false : _options$strict,
2537
        _options$sensitive = _options.sensitive,
2538
        sensitive = _options$sensitive === void 0 ? false : _options$sensitive;
2539
    var paths = [].concat(path);
2540
    return paths.reduce(function (matched, path) {
2541
      if (!path && path !== "") return null;
2542
      if (matched) return matched;
2543

    
2544
      var _compilePath = compilePath$1(path, {
2545
        end: exact,
2546
        strict: strict,
2547
        sensitive: sensitive
2548
      }),
2549
          regexp = _compilePath.regexp,
2550
          keys = _compilePath.keys;
2551

    
2552
      var match = regexp.exec(pathname);
2553
      if (!match) return null;
2554
      var url = match[0],
2555
          values = match.slice(1);
2556
      var isExact = pathname === url;
2557
      if (exact && !isExact) return null;
2558
      return {
2559
        path: path,
2560
        // the path used to match
2561
        url: path === "/" && url === "" ? "/" : url,
2562
        // the matched portion of the URL
2563
        isExact: isExact,
2564
        // whether or not we matched exactly
2565
        params: keys.reduce(function (memo, key, index) {
2566
          memo[key.name] = values[index];
2567
          return memo;
2568
        }, {})
2569
      };
2570
    }, null);
2571
  }
2572

    
2573
  function isEmptyChildren(children) {
2574
    return React__default.Children.count(children) === 0;
2575
  }
2576

    
2577
  function evalChildrenDev(children, props, path) {
2578
    var value = children(props);
2579
     warning(value !== undefined, "You returned `undefined` from the `children` function of " + ("<Route" + (path ? " path=\"" + path + "\"" : "") + ">, but you ") + "should have returned a React element or `null`") ;
2580
    return value || null;
2581
  }
2582
  /**
2583
   * The public API for matching a single path and rendering.
2584
   */
2585

    
2586

    
2587
  var Route =
2588
  /*#__PURE__*/
2589
  function (_React$Component) {
2590
    _inheritsLoose(Route, _React$Component);
2591

    
2592
    function Route() {
2593
      return _React$Component.apply(this, arguments) || this;
2594
    }
2595

    
2596
    var _proto = Route.prototype;
2597

    
2598
    _proto.render = function render() {
2599
      var _this = this;
2600

    
2601
      return React__default.createElement(context.Consumer, null, function (context$1) {
2602
        !context$1 ?  invariant(false, "You should not use <Route> outside a <Router>")  : void 0;
2603
        var location = _this.props.location || context$1.location;
2604
        var match = _this.props.computedMatch ? _this.props.computedMatch // <Switch> already computed the match for us
2605
        : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;
2606

    
2607
        var props = _extends({}, context$1, {
2608
          location: location,
2609
          match: match
2610
        });
2611

    
2612
        var _this$props = _this.props,
2613
            children = _this$props.children,
2614
            component = _this$props.component,
2615
            render = _this$props.render; // Preact uses an empty array as children by
2616
        // default, so use null if that's the case.
2617

    
2618
        if (Array.isArray(children) && children.length === 0) {
2619
          children = null;
2620
        }
2621

    
2622
        return React__default.createElement(context.Provider, {
2623
          value: props
2624
        }, props.match ? children ? typeof children === "function" ?  evalChildrenDev(children, props, _this.props.path)  : children : component ? React__default.createElement(component, props) : render ? render(props) : null : typeof children === "function" ?  evalChildrenDev(children, props, _this.props.path)  : null);
2625
      });
2626
    };
2627

    
2628
    return Route;
2629
  }(React__default.Component);
2630

    
2631
  {
2632
    Route.propTypes = {
2633
      children: propTypes.oneOfType([propTypes.func, propTypes.node]),
2634
      component: function component(props, propName) {
2635
        if (props[propName] && !reactIs_1(props[propName])) {
2636
          return new Error("Invalid prop 'component' supplied to 'Route': the prop is not a valid React component");
2637
        }
2638
      },
2639
      exact: propTypes.bool,
2640
      location: propTypes.object,
2641
      path: propTypes.oneOfType([propTypes.string, propTypes.arrayOf(propTypes.string)]),
2642
      render: propTypes.func,
2643
      sensitive: propTypes.bool,
2644
      strict: propTypes.bool
2645
    };
2646

    
2647
    Route.prototype.componentDidMount = function () {
2648
       warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), "You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored") ;
2649
       warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), "You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored") ;
2650
       warning(!(this.props.component && this.props.render), "You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored") ;
2651
    };
2652

    
2653
    Route.prototype.componentDidUpdate = function (prevProps) {
2654
       warning(!(this.props.location && !prevProps.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.') ;
2655
       warning(!(!this.props.location && prevProps.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.') ;
2656
    };
2657
  }
2658

    
2659
  function _objectWithoutPropertiesLoose(source, excluded) {
2660
    if (source == null) return {};
2661
    var target = {};
2662
    var sourceKeys = Object.keys(source);
2663
    var key, i;
2664

    
2665
    for (i = 0; i < sourceKeys.length; i++) {
2666
      key = sourceKeys[i];
2667
      if (excluded.indexOf(key) >= 0) continue;
2668
      target[key] = source[key];
2669
    }
2670

    
2671
    return target;
2672
  }
2673

    
2674
  function addLeadingSlash(path) {
2675
    return path.charAt(0) === "/" ? path : "/" + path;
2676
  }
2677

    
2678
  function addBasename(basename, location) {
2679
    if (!basename) return location;
2680
    return _extends({}, location, {
2681
      pathname: addLeadingSlash(basename) + location.pathname
2682
    });
2683
  }
2684

    
2685
  function stripBasename(basename, location) {
2686
    if (!basename) return location;
2687
    var base = addLeadingSlash(basename);
2688
    if (location.pathname.indexOf(base) !== 0) return location;
2689
    return _extends({}, location, {
2690
      pathname: location.pathname.substr(base.length)
2691
    });
2692
  }
2693

    
2694
  function createURL(location) {
2695
    return typeof location === "string" ? location : createPath(location);
2696
  }
2697

    
2698
  function staticHandler(methodName) {
2699
    return function () {
2700
        invariant(false, "You cannot %s with <StaticRouter>")  ;
2701
    };
2702
  }
2703

    
2704
  function noop() {}
2705
  /**
2706
   * The public top-level API for a "static" <Router>, so-called because it
2707
   * can't actually change the current location. Instead, it just records
2708
   * location changes in a context object. Useful mainly in testing and
2709
   * server-rendering scenarios.
2710
   */
2711

    
2712

    
2713
  var StaticRouter =
2714
  /*#__PURE__*/
2715
  function (_React$Component) {
2716
    _inheritsLoose(StaticRouter, _React$Component);
2717

    
2718
    function StaticRouter() {
2719
      var _this;
2720

    
2721
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2722
        args[_key] = arguments[_key];
2723
      }
2724

    
2725
      _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
2726

    
2727
      _this.handlePush = function (location) {
2728
        return _this.navigateTo(location, "PUSH");
2729
      };
2730

    
2731
      _this.handleReplace = function (location) {
2732
        return _this.navigateTo(location, "REPLACE");
2733
      };
2734

    
2735
      _this.handleListen = function () {
2736
        return noop;
2737
      };
2738

    
2739
      _this.handleBlock = function () {
2740
        return noop;
2741
      };
2742

    
2743
      return _this;
2744
    }
2745

    
2746
    var _proto = StaticRouter.prototype;
2747

    
2748
    _proto.navigateTo = function navigateTo(location, action) {
2749
      var _this$props = this.props,
2750
          _this$props$basename = _this$props.basename,
2751
          basename = _this$props$basename === void 0 ? "" : _this$props$basename,
2752
          _this$props$context = _this$props.context,
2753
          context = _this$props$context === void 0 ? {} : _this$props$context;
2754
      context.action = action;
2755
      context.location = addBasename(basename, createLocation(location));
2756
      context.url = createURL(context.location);
2757
    };
2758

    
2759
    _proto.render = function render() {
2760
      var _this$props2 = this.props,
2761
          _this$props2$basename = _this$props2.basename,
2762
          basename = _this$props2$basename === void 0 ? "" : _this$props2$basename,
2763
          _this$props2$context = _this$props2.context,
2764
          context = _this$props2$context === void 0 ? {} : _this$props2$context,
2765
          _this$props2$location = _this$props2.location,
2766
          location = _this$props2$location === void 0 ? "/" : _this$props2$location,
2767
          rest = _objectWithoutPropertiesLoose(_this$props2, ["basename", "context", "location"]);
2768

    
2769
      var history = {
2770
        createHref: function createHref(path) {
2771
          return addLeadingSlash(basename + createURL(path));
2772
        },
2773
        action: "POP",
2774
        location: stripBasename(basename, createLocation(location)),
2775
        push: this.handlePush,
2776
        replace: this.handleReplace,
2777
        go: staticHandler(),
2778
        goBack: staticHandler(),
2779
        goForward: staticHandler(),
2780
        listen: this.handleListen,
2781
        block: this.handleBlock
2782
      };
2783
      return React__default.createElement(Router, _extends({}, rest, {
2784
        history: history,
2785
        staticContext: context
2786
      }));
2787
    };
2788

    
2789
    return StaticRouter;
2790
  }(React__default.Component);
2791

    
2792
  {
2793
    StaticRouter.propTypes = {
2794
      basename: propTypes.string,
2795
      context: propTypes.object,
2796
      location: propTypes.oneOfType([propTypes.string, propTypes.object])
2797
    };
2798

    
2799
    StaticRouter.prototype.componentDidMount = function () {
2800
       warning(!this.props.history, "<StaticRouter> ignores the history prop. To use a custom history, " + "use `import { Router }` instead of `import { StaticRouter as Router }`.") ;
2801
    };
2802
  }
2803

    
2804
  /**
2805
   * The public API for rendering the first <Route> that matches.
2806
   */
2807

    
2808
  var Switch =
2809
  /*#__PURE__*/
2810
  function (_React$Component) {
2811
    _inheritsLoose(Switch, _React$Component);
2812

    
2813
    function Switch() {
2814
      return _React$Component.apply(this, arguments) || this;
2815
    }
2816

    
2817
    var _proto = Switch.prototype;
2818

    
2819
    _proto.render = function render() {
2820
      var _this = this;
2821

    
2822
      return React__default.createElement(context.Consumer, null, function (context) {
2823
        !context ?  invariant(false, "You should not use <Switch> outside a <Router>")  : void 0;
2824
        var location = _this.props.location || context.location;
2825
        var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()
2826
        // here because toArray adds keys to all child elements and we do not want
2827
        // to trigger an unmount/remount for two <Route>s that render the same
2828
        // component at different URLs.
2829

    
2830
        React__default.Children.forEach(_this.props.children, function (child) {
2831
          if (match == null && React__default.isValidElement(child)) {
2832
            element = child;
2833
            var path = child.props.path || child.props.from;
2834
            match = path ? matchPath(location.pathname, _extends({}, child.props, {
2835
              path: path
2836
            })) : context.match;
2837
          }
2838
        });
2839
        return match ? React__default.cloneElement(element, {
2840
          location: location,
2841
          computedMatch: match
2842
        }) : null;
2843
      });
2844
    };
2845

    
2846
    return Switch;
2847
  }(React__default.Component);
2848

    
2849
  {
2850
    Switch.propTypes = {
2851
      children: propTypes.node,
2852
      location: propTypes.object
2853
    };
2854

    
2855
    Switch.prototype.componentDidUpdate = function (prevProps) {
2856
       warning(!(this.props.location && !prevProps.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no "location" prop and then provided one on a subsequent render.') ;
2857
       warning(!(!this.props.location && prevProps.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a "location" prop initially but omitted it on a subsequent render.') ;
2858
    };
2859
  }
2860

    
2861
  /**
2862
   * Copyright 2015, Yahoo! Inc.
2863
   * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
2864
   */
2865

    
2866
  var REACT_STATICS = {
2867
      childContextTypes: true,
2868
      contextType: true,
2869
      contextTypes: true,
2870
      defaultProps: true,
2871
      displayName: true,
2872
      getDefaultProps: true,
2873
      getDerivedStateFromError: true,
2874
      getDerivedStateFromProps: true,
2875
      mixins: true,
2876
      propTypes: true,
2877
      type: true
2878
  };
2879

    
2880
  var KNOWN_STATICS = {
2881
      name: true,
2882
      length: true,
2883
      prototype: true,
2884
      caller: true,
2885
      callee: true,
2886
      arguments: true,
2887
      arity: true
2888
  };
2889

    
2890
  var FORWARD_REF_STATICS = {
2891
      '$$typeof': true,
2892
      render: true,
2893
      defaultProps: true,
2894
      displayName: true,
2895
      propTypes: true
2896
  };
2897

    
2898
  var MEMO_STATICS = {
2899
      '$$typeof': true,
2900
      compare: true,
2901
      defaultProps: true,
2902
      displayName: true,
2903
      propTypes: true,
2904
      type: true
2905
  };
2906

    
2907
  var TYPE_STATICS = {};
2908
  TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
2909

    
2910
  function getStatics(component) {
2911
      if (reactIs.isMemo(component)) {
2912
          return MEMO_STATICS;
2913
      }
2914
      return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;
2915
  }
2916

    
2917
  var defineProperty = Object.defineProperty;
2918
  var getOwnPropertyNames = Object.getOwnPropertyNames;
2919
  var getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;
2920
  var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
2921
  var getPrototypeOf = Object.getPrototypeOf;
2922
  var objectPrototype = Object.prototype;
2923

    
2924
  function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {
2925
      if (typeof sourceComponent !== 'string') {
2926
          // don't hoist over string (html) components
2927

    
2928
          if (objectPrototype) {
2929
              var inheritedComponent = getPrototypeOf(sourceComponent);
2930
              if (inheritedComponent && inheritedComponent !== objectPrototype) {
2931
                  hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);
2932
              }
2933
          }
2934

    
2935
          var keys = getOwnPropertyNames(sourceComponent);
2936

    
2937
          if (getOwnPropertySymbols$1) {
2938
              keys = keys.concat(getOwnPropertySymbols$1(sourceComponent));
2939
          }
2940

    
2941
          var targetStatics = getStatics(targetComponent);
2942
          var sourceStatics = getStatics(sourceComponent);
2943

    
2944
          for (var i = 0; i < keys.length; ++i) {
2945
              var key = keys[i];
2946
              if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {
2947
                  var descriptor = getOwnPropertyDescriptor(sourceComponent, key);
2948
                  try {
2949
                      // Avoid failures from read-only properties
2950
                      defineProperty(targetComponent, key, descriptor);
2951
                  } catch (e) {}
2952
              }
2953
          }
2954

    
2955
          return targetComponent;
2956
      }
2957

    
2958
      return targetComponent;
2959
  }
2960

    
2961
  var hoistNonReactStatics_cjs = hoistNonReactStatics;
2962

    
2963
  /**
2964
   * A public higher-order component to access the imperative API
2965
   */
2966

    
2967
  function withRouter(Component) {
2968
    var displayName = "withRouter(" + (Component.displayName || Component.name) + ")";
2969

    
2970
    var C = function C(props) {
2971
      var wrappedComponentRef = props.wrappedComponentRef,
2972
          remainingProps = _objectWithoutPropertiesLoose(props, ["wrappedComponentRef"]);
2973

    
2974
      return React__default.createElement(context.Consumer, null, function (context) {
2975
        !context ?  invariant(false, "You should not use <" + displayName + " /> outside a <Router>")  : void 0;
2976
        return React__default.createElement(Component, _extends({}, remainingProps, context, {
2977
          ref: wrappedComponentRef
2978
        }));
2979
      });
2980
    };
2981

    
2982
    C.displayName = displayName;
2983
    C.WrappedComponent = Component;
2984

    
2985
    {
2986
      C.propTypes = {
2987
        wrappedComponentRef: propTypes.oneOfType([propTypes.string, propTypes.func, propTypes.object])
2988
      };
2989
    }
2990

    
2991
    return hoistNonReactStatics_cjs(C, Component);
2992
  }
2993

    
2994
  var useContext = React__default.useContext;
2995
  function useHistory() {
2996
    {
2997
      !(typeof useContext === "function") ?  invariant(false, "You must use React >= 16.8 in order to use useHistory()")  : void 0;
2998
    }
2999

    
3000
    return useContext(context).history;
3001
  }
3002
  function useLocation() {
3003
    {
3004
      !(typeof useContext === "function") ?  invariant(false, "You must use React >= 16.8 in order to use useLocation()")  : void 0;
3005
    }
3006

    
3007
    return useContext(context).location;
3008
  }
3009
  function useParams() {
3010
    {
3011
      !(typeof useContext === "function") ?  invariant(false, "You must use React >= 16.8 in order to use useParams()")  : void 0;
3012
    }
3013

    
3014
    var match = useContext(context).match;
3015
    return match ? match.params : {};
3016
  }
3017
  function useRouteMatch(path) {
3018
    {
3019
      !(typeof useContext === "function") ?  invariant(false, "You must use React >= 16.8 in order to use useRouteMatch()")  : void 0;
3020
    }
3021

    
3022
    return path ? matchPath(useLocation().pathname, path) : useContext(context).match;
3023
  }
3024

    
3025
  {
3026
    if (typeof window !== "undefined") {
3027
      var global$1 = window;
3028
      var key$1 = "__react_router_build__";
3029
      var buildNames = {
3030
        cjs: "CommonJS",
3031
        esm: "ES modules",
3032
        umd: "UMD"
3033
      };
3034

    
3035
      if (global$1[key$1] && global$1[key$1] !== "umd") {
3036
        var initialBuildName = buildNames[global$1[key$1]];
3037
        var secondaryBuildName = buildNames["umd"]; // TODO: Add link to article that explains in detail how to avoid
3038
        // loading 2 different builds.
3039

    
3040
        throw new Error("You are loading the " + secondaryBuildName + " build of React Router " + ("on a page that is already running the " + initialBuildName + " ") + "build, so things won't work right.");
3041
      }
3042

    
3043
      global$1[key$1] = "umd";
3044
    }
3045
  }
3046

    
3047
  exports.MemoryRouter = MemoryRouter;
3048
  exports.Prompt = Prompt;
3049
  exports.Redirect = Redirect;
3050
  exports.Route = Route;
3051
  exports.Router = Router;
3052
  exports.StaticRouter = StaticRouter;
3053
  exports.Switch = Switch;
3054
  exports.__RouterContext = context;
3055
  exports.generatePath = generatePath;
3056
  exports.matchPath = matchPath;
3057
  exports.useHistory = useHistory;
3058
  exports.useLocation = useLocation;
3059
  exports.useParams = useParams;
3060
  exports.useRouteMatch = useRouteMatch;
3061
  exports.withRouter = withRouter;
3062

    
3063
  Object.defineProperty(exports, '__esModule', { value: true });
3064

    
3065
}));
3066
//# sourceMappingURL=react-router.js.map
(1-1/4)