Run Closure on non-minified prod builds, too (#28827)

In #26446 we started publishing non-minified versions of our production
build artifacts, along with source maps, for easier debugging of React
when running in production mode.

The way it's currently set up is that these builds are generated
*before* Closure compiler has run. Which means it's missing many of the
optimizations that are in the final build, like dead code elimination.

This PR changes the build process to run Closure on the non-minified
production builds, too, by moving the sourcemap generation to later in
the pipeline.

The non-minified builds will still preserve the original symbol names,
and we'll use Prettier to add back whitespace. This is the exact same
approach we've been using for years to generate production builds for
Meta.

The idea is that the only difference between the minified and non-
minified builds is whitespace and symbol mangling. The semantic
structure of the program should be identical.

To implement this, I disabled symbol mangling when running Closure
compiler. Then, in a later step, the symbols are mangled by Terser. This
is when the source maps are generated.

DiffTrain build for [0e0b69321a](https://github.com/facebook/react/commit/0e0b69321a6fcfe8a3eaae3b1016beb110437b38)
This commit is contained in:
acdlite
2024-04-19 18:28:37 +00:00
parent cf94a4aade
commit 8309f584ec
31 changed files with 304553 additions and 361632 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1 +1 @@
f5ce642deed7c74c5ae5df54ec4340a8d028eac9
0e0b69321a6fcfe8a3eaae3b1016beb110437b38
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+268 -294
View File
@@ -10,332 +10,306 @@
* @preserve-invariant-messages
*/
"use strict";
'use strict';
if (__DEV__) {
(function () {
"use strict";
(function() {
'use strict';
var React = require("react");
var Scheduler = require("scheduler");
var React = require('react');
var Scheduler = require('scheduler');
// This refers to a WWW module.
var warningWWW = require("warning");
function error(format) {
{
{
for (
var _len2 = arguments.length,
args = new Array(_len2 > 1 ? _len2 - 1 : 0),
_key2 = 1;
_key2 < _len2;
_key2++
) {
args[_key2 - 1] = arguments[_key2];
}
printWarning("error", format, args);
}
// This refers to a WWW module.
var warningWWW = require('warning');
function error(format) {
{
{
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
printWarning('error', format, args);
}
}
}
function printWarning(level, format, args) {
{
var React = require("react");
function printWarning(level, format, args) {
{
var React = require('react');
var ReactSharedInternals =
React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE; // Defensive in case this is fired before React is initialized.
var ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE; // Defensive in case this is fired before React is initialized.
if (ReactSharedInternals != null) {
var stack = ReactSharedInternals.getStackAddendum();
if (ReactSharedInternals != null) {
var stack = ReactSharedInternals.getStackAddendum();
if (stack !== "") {
format += "%s";
args.push(stack);
}
} // TODO: don't ignore level and pass it down somewhere too.
args.unshift(format);
args.unshift(false);
warningWWW.apply(null, args);
if (stack !== '') {
format += '%s';
args.push(stack);
}
} // TODO: don't ignore level and pass it down somewhere too.
args.unshift(format);
args.unshift(false);
warningWWW.apply(null, args);
}
}
// use dynamic dispatch for CommonJS interop named imports.
var scheduleCallback = Scheduler.unstable_scheduleCallback,
IdlePriority = Scheduler.unstable_IdlePriority;
function createLRU(limit) {
var LIMIT = limit; // Circular, doubly-linked list
var first = null;
var size = 0;
var cleanUpIsScheduled = false;
function scheduleCleanUp() {
if (cleanUpIsScheduled === false && size > LIMIT) {
// The cache size exceeds the limit. Schedule a callback to delete the
// least recently used entries.
cleanUpIsScheduled = true;
scheduleCallback(IdlePriority, cleanUp);
}
}
// use dynamic dispatch for CommonJS interop named imports.
function cleanUp() {
cleanUpIsScheduled = false;
deleteLeastRecentlyUsedEntries(LIMIT);
}
var scheduleCallback = Scheduler.unstable_scheduleCallback,
IdlePriority = Scheduler.unstable_IdlePriority;
function createLRU(limit) {
var LIMIT = limit; // Circular, doubly-linked list
function deleteLeastRecentlyUsedEntries(targetSize) {
// Delete entries from the cache, starting from the end of the list.
if (first !== null) {
var resolvedFirst = first;
var last = resolvedFirst.previous;
var first = null;
var size = 0;
var cleanUpIsScheduled = false;
while (size > targetSize && last !== null) {
var onDelete = last.onDelete;
var previous = last.previous;
last.onDelete = null; // Remove from the list
function scheduleCleanUp() {
if (cleanUpIsScheduled === false && size > LIMIT) {
// The cache size exceeds the limit. Schedule a callback to delete the
// least recently used entries.
cleanUpIsScheduled = true;
scheduleCallback(IdlePriority, cleanUp);
}
}
last.previous = last.next = null;
function cleanUp() {
cleanUpIsScheduled = false;
deleteLeastRecentlyUsedEntries(LIMIT);
}
function deleteLeastRecentlyUsedEntries(targetSize) {
// Delete entries from the cache, starting from the end of the list.
if (first !== null) {
var resolvedFirst = first;
var last = resolvedFirst.previous;
while (size > targetSize && last !== null) {
var onDelete = last.onDelete;
var previous = last.previous;
last.onDelete = null; // Remove from the list
last.previous = last.next = null;
if (last === first) {
// Reached the head of the list.
first = last = null;
} else {
first.previous = previous;
previous.next = first;
last = previous;
}
size -= 1; // Call the destroy method after removing the entry from the list. If it
// throws, the rest of cache will not be deleted, but it will be in a
// valid state.
onDelete();
}
}
}
function add(value, onDelete) {
var entry = {
value: value,
onDelete: onDelete,
next: null,
previous: null
};
if (first === null) {
entry.previous = entry.next = entry;
first = entry;
if (last === first) {
// Reached the head of the list.
first = last = null;
} else {
// Append to head
var last = first.previous;
last.next = entry;
entry.previous = last;
first.previous = entry;
entry.next = first;
first = entry;
first.previous = previous;
previous.next = first;
last = previous;
}
size += 1;
return entry;
size -= 1; // Call the destroy method after removing the entry from the list. If it
// throws, the rest of cache will not be deleted, but it will be in a
// valid state.
onDelete();
}
}
}
function update(entry, newValue) {
entry.value = newValue;
function add(value, onDelete) {
var entry = {
value: value,
onDelete: onDelete,
next: null,
previous: null
};
if (first === null) {
entry.previous = entry.next = entry;
first = entry;
} else {
// Append to head
var last = first.previous;
last.next = entry;
entry.previous = last;
first.previous = entry;
entry.next = first;
first = entry;
}
size += 1;
return entry;
}
function update(entry, newValue) {
entry.value = newValue;
}
function access(entry) {
var next = entry.next;
if (next !== null) {
// Entry already cached
var resolvedFirst = first;
if (first !== entry) {
// Remove from current position
var previous = entry.previous;
previous.next = next;
next.previous = previous; // Append to head
var last = resolvedFirst.previous;
last.next = entry;
entry.previous = last;
resolvedFirst.previous = entry;
entry.next = resolvedFirst;
first = entry;
}
}
function access(entry) {
var next = entry.next;
scheduleCleanUp();
return entry.value;
}
if (next !== null) {
// Entry already cached
var resolvedFirst = first;
function setLimit(newLimit) {
LIMIT = newLimit;
scheduleCleanUp();
}
if (first !== entry) {
// Remove from current position
var previous = entry.previous;
previous.next = next;
next.previous = previous; // Append to head
return {
add: add,
update: update,
access: access,
setLimit: setLimit
};
}
var last = resolvedFirst.previous;
last.next = entry;
entry.previous = last;
resolvedFirst.previous = entry;
entry.next = resolvedFirst;
first = entry;
var Pending = 0;
var Resolved = 1;
var Rejected = 2;
var SharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
function readContext(Context) {
var dispatcher = SharedInternals.H;
if (dispatcher === null) {
// This wasn't being minified but we're going to retire this package anyway.
// eslint-disable-next-line react-internal/prod-error-codes
throw new Error('react-cache: read and preload may only be called from within a ' + "component's render. They are not supported in event handlers or " + 'lifecycle methods.');
}
return dispatcher.readContext(Context);
} // $FlowFixMe[missing-local-annot]
function identityHashFn(input) {
{
if (typeof input !== 'string' && typeof input !== 'number' && typeof input !== 'boolean' && input !== undefined && input !== null) {
error('Invalid key type. Expected a string, number, symbol, or boolean, ' + 'but instead received: %s' + '\n\nTo use non-primitive values as keys, you must pass a hash ' + 'function as the second argument to createResource().', input);
}
}
return input;
}
var CACHE_LIMIT = 500;
var lru = createLRU(CACHE_LIMIT);
var entries = new Map();
var CacheContext = React.createContext(null);
function accessResult(resource, fetch, input, key) {
var entriesForResource = entries.get(resource);
if (entriesForResource === undefined) {
entriesForResource = new Map();
entries.set(resource, entriesForResource);
}
var entry = entriesForResource.get(key);
if (entry === undefined) {
var thenable = fetch(input);
thenable.then(function (value) {
if (newResult.status === Pending) {
var resolvedResult = newResult;
resolvedResult.status = Resolved;
resolvedResult.value = value;
}
}, function (error) {
if (newResult.status === Pending) {
var rejectedResult = newResult;
rejectedResult.status = Rejected;
rejectedResult.value = error;
}
});
var newResult = {
status: Pending,
value: thenable
};
var newEntry = lru.add(newResult, deleteEntry.bind(null, resource, key));
entriesForResource.set(key, newEntry);
return newResult;
} else {
return lru.access(entry);
}
}
function deleteEntry(resource, key) {
var entriesForResource = entries.get(resource);
if (entriesForResource !== undefined) {
entriesForResource.delete(key);
if (entriesForResource.size === 0) {
entries.delete(resource);
}
}
}
function unstable_createResource(fetch, maybeHashInput) {
var hashInput = maybeHashInput !== undefined ? maybeHashInput : identityHashFn;
var resource = {
read: function (input) {
// react-cache currently doesn't rely on context, but it may in the
// future, so we read anyway to prevent access outside of render.
readContext(CacheContext);
var key = hashInput(input);
var result = accessResult(resource, fetch, input, key);
switch (result.status) {
case Pending:
{
var suspender = result.value;
throw suspender;
}
}
scheduleCleanUp();
return entry.value;
}
function setLimit(newLimit) {
LIMIT = newLimit;
scheduleCleanUp();
}
return {
add: add,
update: update,
access: access,
setLimit: setLimit
};
}
var Pending = 0;
var Resolved = 1;
var Rejected = 2;
var SharedInternals =
React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
function readContext(Context) {
var dispatcher = SharedInternals.H;
if (dispatcher === null) {
// This wasn't being minified but we're going to retire this package anyway.
// eslint-disable-next-line react-internal/prod-error-codes
throw new Error(
"react-cache: read and preload may only be called from within a " +
"component's render. They are not supported in event handlers or " +
"lifecycle methods."
);
}
return dispatcher.readContext(Context);
} // $FlowFixMe[missing-local-annot]
function identityHashFn(input) {
{
if (
typeof input !== "string" &&
typeof input !== "number" &&
typeof input !== "boolean" &&
input !== undefined &&
input !== null
) {
error(
"Invalid key type. Expected a string, number, symbol, or boolean, " +
"but instead received: %s" +
"\n\nTo use non-primitive values as keys, you must pass a hash " +
"function as the second argument to createResource().",
input
);
}
}
return input;
}
var CACHE_LIMIT = 500;
var lru = createLRU(CACHE_LIMIT);
var entries = new Map();
var CacheContext = React.createContext(null);
function accessResult(resource, fetch, input, key) {
var entriesForResource = entries.get(resource);
if (entriesForResource === undefined) {
entriesForResource = new Map();
entries.set(resource, entriesForResource);
}
var entry = entriesForResource.get(key);
if (entry === undefined) {
var thenable = fetch(input);
thenable.then(
function (value) {
if (newResult.status === Pending) {
var resolvedResult = newResult;
resolvedResult.status = Resolved;
resolvedResult.value = value;
}
},
function (error) {
if (newResult.status === Pending) {
var rejectedResult = newResult;
rejectedResult.status = Rejected;
rejectedResult.value = error;
}
case Resolved:
{
var value = result.value;
return value;
}
);
var newResult = {
status: Pending,
value: thenable
};
var newEntry = lru.add(
newResult,
deleteEntry.bind(null, resource, key)
);
entriesForResource.set(key, newEntry);
return newResult;
} else {
return lru.access(entry);
}
}
function deleteEntry(resource, key) {
var entriesForResource = entries.get(resource);
if (entriesForResource !== undefined) {
entriesForResource.delete(key);
if (entriesForResource.size === 0) {
entries.delete(resource);
}
}
}
function unstable_createResource(fetch, maybeHashInput) {
var hashInput =
maybeHashInput !== undefined ? maybeHashInput : identityHashFn;
var resource = {
read: function (input) {
// react-cache currently doesn't rely on context, but it may in the
// future, so we read anyway to prevent access outside of render.
readContext(CacheContext);
var key = hashInput(input);
var result = accessResult(resource, fetch, input, key);
switch (result.status) {
case Pending: {
var suspender = result.value;
throw suspender;
}
case Resolved: {
var value = result.value;
return value;
}
case Rejected: {
var error = result.value;
throw error;
}
default:
// Should be unreachable
return undefined;
case Rejected:
{
var error = result.value;
throw error;
}
},
preload: function (input) {
// react-cache currently doesn't rely on context, but it may in the
// future, so we read anyway to prevent access outside of render.
readContext(CacheContext);
var key = hashInput(input);
accessResult(resource, fetch, input, key);
}
};
return resource;
}
function unstable_setGlobalCacheLimit(limit) {
lru.setLimit(limit);
}
exports.unstable_createResource = unstable_createResource;
exports.unstable_setGlobalCacheLimit = unstable_setGlobalCacheLimit;
default:
// Should be unreachable
return undefined;
}
},
preload: function (input) {
// react-cache currently doesn't rely on context, but it may in the
// future, so we read anyway to prevent access outside of render.
readContext(CacheContext);
var key = hashInput(input);
accessResult(resource, fetch, input, key);
}
};
return resource;
}
function unstable_setGlobalCacheLimit(limit) {
lru.setLimit(limit);
}
exports.unstable_createResource = unstable_createResource;
exports.unstable_setGlobalCacheLimit = unstable_setGlobalCacheLimit;
})();
}
+268 -294
View File
@@ -10,332 +10,306 @@
* @preserve-invariant-messages
*/
"use strict";
'use strict';
if (__DEV__) {
(function () {
"use strict";
(function() {
'use strict';
var React = require("react");
var Scheduler = require("scheduler");
var React = require('react');
var Scheduler = require('scheduler');
// This refers to a WWW module.
var warningWWW = require("warning");
function error(format) {
{
{
for (
var _len2 = arguments.length,
args = new Array(_len2 > 1 ? _len2 - 1 : 0),
_key2 = 1;
_key2 < _len2;
_key2++
) {
args[_key2 - 1] = arguments[_key2];
}
printWarning("error", format, args);
}
// This refers to a WWW module.
var warningWWW = require('warning');
function error(format) {
{
{
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
printWarning('error', format, args);
}
}
}
function printWarning(level, format, args) {
{
var React = require("react");
function printWarning(level, format, args) {
{
var React = require('react');
var ReactSharedInternals =
React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE; // Defensive in case this is fired before React is initialized.
var ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE; // Defensive in case this is fired before React is initialized.
if (ReactSharedInternals != null) {
var stack = ReactSharedInternals.getStackAddendum();
if (ReactSharedInternals != null) {
var stack = ReactSharedInternals.getStackAddendum();
if (stack !== "") {
format += "%s";
args.push(stack);
}
} // TODO: don't ignore level and pass it down somewhere too.
args.unshift(format);
args.unshift(false);
warningWWW.apply(null, args);
if (stack !== '') {
format += '%s';
args.push(stack);
}
} // TODO: don't ignore level and pass it down somewhere too.
args.unshift(format);
args.unshift(false);
warningWWW.apply(null, args);
}
}
// use dynamic dispatch for CommonJS interop named imports.
var scheduleCallback = Scheduler.unstable_scheduleCallback,
IdlePriority = Scheduler.unstable_IdlePriority;
function createLRU(limit) {
var LIMIT = limit; // Circular, doubly-linked list
var first = null;
var size = 0;
var cleanUpIsScheduled = false;
function scheduleCleanUp() {
if (cleanUpIsScheduled === false && size > LIMIT) {
// The cache size exceeds the limit. Schedule a callback to delete the
// least recently used entries.
cleanUpIsScheduled = true;
scheduleCallback(IdlePriority, cleanUp);
}
}
// use dynamic dispatch for CommonJS interop named imports.
function cleanUp() {
cleanUpIsScheduled = false;
deleteLeastRecentlyUsedEntries(LIMIT);
}
var scheduleCallback = Scheduler.unstable_scheduleCallback,
IdlePriority = Scheduler.unstable_IdlePriority;
function createLRU(limit) {
var LIMIT = limit; // Circular, doubly-linked list
function deleteLeastRecentlyUsedEntries(targetSize) {
// Delete entries from the cache, starting from the end of the list.
if (first !== null) {
var resolvedFirst = first;
var last = resolvedFirst.previous;
var first = null;
var size = 0;
var cleanUpIsScheduled = false;
while (size > targetSize && last !== null) {
var onDelete = last.onDelete;
var previous = last.previous;
last.onDelete = null; // Remove from the list
function scheduleCleanUp() {
if (cleanUpIsScheduled === false && size > LIMIT) {
// The cache size exceeds the limit. Schedule a callback to delete the
// least recently used entries.
cleanUpIsScheduled = true;
scheduleCallback(IdlePriority, cleanUp);
}
}
last.previous = last.next = null;
function cleanUp() {
cleanUpIsScheduled = false;
deleteLeastRecentlyUsedEntries(LIMIT);
}
function deleteLeastRecentlyUsedEntries(targetSize) {
// Delete entries from the cache, starting from the end of the list.
if (first !== null) {
var resolvedFirst = first;
var last = resolvedFirst.previous;
while (size > targetSize && last !== null) {
var onDelete = last.onDelete;
var previous = last.previous;
last.onDelete = null; // Remove from the list
last.previous = last.next = null;
if (last === first) {
// Reached the head of the list.
first = last = null;
} else {
first.previous = previous;
previous.next = first;
last = previous;
}
size -= 1; // Call the destroy method after removing the entry from the list. If it
// throws, the rest of cache will not be deleted, but it will be in a
// valid state.
onDelete();
}
}
}
function add(value, onDelete) {
var entry = {
value: value,
onDelete: onDelete,
next: null,
previous: null
};
if (first === null) {
entry.previous = entry.next = entry;
first = entry;
if (last === first) {
// Reached the head of the list.
first = last = null;
} else {
// Append to head
var last = first.previous;
last.next = entry;
entry.previous = last;
first.previous = entry;
entry.next = first;
first = entry;
first.previous = previous;
previous.next = first;
last = previous;
}
size += 1;
return entry;
size -= 1; // Call the destroy method after removing the entry from the list. If it
// throws, the rest of cache will not be deleted, but it will be in a
// valid state.
onDelete();
}
}
}
function update(entry, newValue) {
entry.value = newValue;
function add(value, onDelete) {
var entry = {
value: value,
onDelete: onDelete,
next: null,
previous: null
};
if (first === null) {
entry.previous = entry.next = entry;
first = entry;
} else {
// Append to head
var last = first.previous;
last.next = entry;
entry.previous = last;
first.previous = entry;
entry.next = first;
first = entry;
}
size += 1;
return entry;
}
function update(entry, newValue) {
entry.value = newValue;
}
function access(entry) {
var next = entry.next;
if (next !== null) {
// Entry already cached
var resolvedFirst = first;
if (first !== entry) {
// Remove from current position
var previous = entry.previous;
previous.next = next;
next.previous = previous; // Append to head
var last = resolvedFirst.previous;
last.next = entry;
entry.previous = last;
resolvedFirst.previous = entry;
entry.next = resolvedFirst;
first = entry;
}
}
function access(entry) {
var next = entry.next;
scheduleCleanUp();
return entry.value;
}
if (next !== null) {
// Entry already cached
var resolvedFirst = first;
function setLimit(newLimit) {
LIMIT = newLimit;
scheduleCleanUp();
}
if (first !== entry) {
// Remove from current position
var previous = entry.previous;
previous.next = next;
next.previous = previous; // Append to head
return {
add: add,
update: update,
access: access,
setLimit: setLimit
};
}
var last = resolvedFirst.previous;
last.next = entry;
entry.previous = last;
resolvedFirst.previous = entry;
entry.next = resolvedFirst;
first = entry;
var Pending = 0;
var Resolved = 1;
var Rejected = 2;
var SharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
function readContext(Context) {
var dispatcher = SharedInternals.H;
if (dispatcher === null) {
// This wasn't being minified but we're going to retire this package anyway.
// eslint-disable-next-line react-internal/prod-error-codes
throw new Error('react-cache: read and preload may only be called from within a ' + "component's render. They are not supported in event handlers or " + 'lifecycle methods.');
}
return dispatcher.readContext(Context);
} // $FlowFixMe[missing-local-annot]
function identityHashFn(input) {
{
if (typeof input !== 'string' && typeof input !== 'number' && typeof input !== 'boolean' && input !== undefined && input !== null) {
error('Invalid key type. Expected a string, number, symbol, or boolean, ' + 'but instead received: %s' + '\n\nTo use non-primitive values as keys, you must pass a hash ' + 'function as the second argument to createResource().', input);
}
}
return input;
}
var CACHE_LIMIT = 500;
var lru = createLRU(CACHE_LIMIT);
var entries = new Map();
var CacheContext = React.createContext(null);
function accessResult(resource, fetch, input, key) {
var entriesForResource = entries.get(resource);
if (entriesForResource === undefined) {
entriesForResource = new Map();
entries.set(resource, entriesForResource);
}
var entry = entriesForResource.get(key);
if (entry === undefined) {
var thenable = fetch(input);
thenable.then(function (value) {
if (newResult.status === Pending) {
var resolvedResult = newResult;
resolvedResult.status = Resolved;
resolvedResult.value = value;
}
}, function (error) {
if (newResult.status === Pending) {
var rejectedResult = newResult;
rejectedResult.status = Rejected;
rejectedResult.value = error;
}
});
var newResult = {
status: Pending,
value: thenable
};
var newEntry = lru.add(newResult, deleteEntry.bind(null, resource, key));
entriesForResource.set(key, newEntry);
return newResult;
} else {
return lru.access(entry);
}
}
function deleteEntry(resource, key) {
var entriesForResource = entries.get(resource);
if (entriesForResource !== undefined) {
entriesForResource.delete(key);
if (entriesForResource.size === 0) {
entries.delete(resource);
}
}
}
function unstable_createResource(fetch, maybeHashInput) {
var hashInput = maybeHashInput !== undefined ? maybeHashInput : identityHashFn;
var resource = {
read: function (input) {
// react-cache currently doesn't rely on context, but it may in the
// future, so we read anyway to prevent access outside of render.
readContext(CacheContext);
var key = hashInput(input);
var result = accessResult(resource, fetch, input, key);
switch (result.status) {
case Pending:
{
var suspender = result.value;
throw suspender;
}
}
scheduleCleanUp();
return entry.value;
}
function setLimit(newLimit) {
LIMIT = newLimit;
scheduleCleanUp();
}
return {
add: add,
update: update,
access: access,
setLimit: setLimit
};
}
var Pending = 0;
var Resolved = 1;
var Rejected = 2;
var SharedInternals =
React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
function readContext(Context) {
var dispatcher = SharedInternals.H;
if (dispatcher === null) {
// This wasn't being minified but we're going to retire this package anyway.
// eslint-disable-next-line react-internal/prod-error-codes
throw new Error(
"react-cache: read and preload may only be called from within a " +
"component's render. They are not supported in event handlers or " +
"lifecycle methods."
);
}
return dispatcher.readContext(Context);
} // $FlowFixMe[missing-local-annot]
function identityHashFn(input) {
{
if (
typeof input !== "string" &&
typeof input !== "number" &&
typeof input !== "boolean" &&
input !== undefined &&
input !== null
) {
error(
"Invalid key type. Expected a string, number, symbol, or boolean, " +
"but instead received: %s" +
"\n\nTo use non-primitive values as keys, you must pass a hash " +
"function as the second argument to createResource().",
input
);
}
}
return input;
}
var CACHE_LIMIT = 500;
var lru = createLRU(CACHE_LIMIT);
var entries = new Map();
var CacheContext = React.createContext(null);
function accessResult(resource, fetch, input, key) {
var entriesForResource = entries.get(resource);
if (entriesForResource === undefined) {
entriesForResource = new Map();
entries.set(resource, entriesForResource);
}
var entry = entriesForResource.get(key);
if (entry === undefined) {
var thenable = fetch(input);
thenable.then(
function (value) {
if (newResult.status === Pending) {
var resolvedResult = newResult;
resolvedResult.status = Resolved;
resolvedResult.value = value;
}
},
function (error) {
if (newResult.status === Pending) {
var rejectedResult = newResult;
rejectedResult.status = Rejected;
rejectedResult.value = error;
}
case Resolved:
{
var value = result.value;
return value;
}
);
var newResult = {
status: Pending,
value: thenable
};
var newEntry = lru.add(
newResult,
deleteEntry.bind(null, resource, key)
);
entriesForResource.set(key, newEntry);
return newResult;
} else {
return lru.access(entry);
}
}
function deleteEntry(resource, key) {
var entriesForResource = entries.get(resource);
if (entriesForResource !== undefined) {
entriesForResource.delete(key);
if (entriesForResource.size === 0) {
entries.delete(resource);
}
}
}
function unstable_createResource(fetch, maybeHashInput) {
var hashInput =
maybeHashInput !== undefined ? maybeHashInput : identityHashFn;
var resource = {
read: function (input) {
// react-cache currently doesn't rely on context, but it may in the
// future, so we read anyway to prevent access outside of render.
readContext(CacheContext);
var key = hashInput(input);
var result = accessResult(resource, fetch, input, key);
switch (result.status) {
case Pending: {
var suspender = result.value;
throw suspender;
}
case Resolved: {
var value = result.value;
return value;
}
case Rejected: {
var error = result.value;
throw error;
}
default:
// Should be unreachable
return undefined;
case Rejected:
{
var error = result.value;
throw error;
}
},
preload: function (input) {
// react-cache currently doesn't rely on context, but it may in the
// future, so we read anyway to prevent access outside of render.
readContext(CacheContext);
var key = hashInput(input);
accessResult(resource, fetch, input, key);
}
};
return resource;
}
function unstable_setGlobalCacheLimit(limit) {
lru.setLimit(limit);
}
exports.unstable_createResource = unstable_createResource;
exports.unstable_setGlobalCacheLimit = unstable_setGlobalCacheLimit;
default:
// Should be unreachable
return undefined;
}
},
preload: function (input) {
// react-cache currently doesn't rely on context, but it may in the
// future, so we read anyway to prevent access outside of render.
readContext(CacheContext);
var key = hashInput(input);
accessResult(resource, fetch, input, key);
}
};
return resource;
}
function unstable_setGlobalCacheLimit(limit) {
lru.setLimit(limit);
}
exports.unstable_createResource = unstable_createResource;
exports.unstable_setGlobalCacheLimit = unstable_setGlobalCacheLimit;
})();
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+176 -201
View File
@@ -10,228 +10,203 @@
* @preserve-invariant-messages
*/
"use strict";
'use strict';
if (__DEV__) {
(function () {
"use strict";
(function() {
'use strict';
// ATTENTION
// When adding new symbols to this file,
// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
// The Symbol used to tag the ReactElement-like types.
var REACT_ELEMENT_TYPE = Symbol.for("react.element");
var REACT_PORTAL_TYPE = Symbol.for("react.portal");
var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
var REACT_PROFILER_TYPE = Symbol.for("react.profiler");
var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); // TODO: Delete with enableRenderableContext
// ATTENTION
// When adding new symbols to this file,
// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
// The Symbol used to tag the ReactElement-like types.
var REACT_ELEMENT_TYPE = Symbol.for('react.element');
var REACT_PORTAL_TYPE = Symbol.for('react.portal');
var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
var REACT_PROVIDER_TYPE = Symbol.for('react.provider'); // TODO: Delete with enableRenderableContext
var REACT_CONSUMER_TYPE = Symbol.for("react.consumer");
var REACT_CONTEXT_TYPE = Symbol.for("react.context");
var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense");
var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list");
var REACT_MEMO_TYPE = Symbol.for("react.memo");
var REACT_LAZY_TYPE = Symbol.for("react.lazy");
var REACT_SCOPE_TYPE = Symbol.for("react.scope");
var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for("react.debug_trace_mode");
var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen");
var REACT_LEGACY_HIDDEN_TYPE = Symbol.for("react.legacy_hidden");
var REACT_TRACING_MARKER_TYPE = Symbol.for("react.tracing_marker");
var REACT_CONSUMER_TYPE = Symbol.for('react.consumer');
var REACT_CONTEXT_TYPE = Symbol.for('react.context');
var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
var REACT_MEMO_TYPE = Symbol.for('react.memo');
var REACT_LAZY_TYPE = Symbol.for('react.lazy');
var REACT_SCOPE_TYPE = Symbol.for('react.scope');
var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode');
var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
var REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');
var REACT_TRACING_MARKER_TYPE = Symbol.for('react.tracing_marker');
// Re-export dynamic flags from the www version.
var dynamicFeatureFlags = require("ReactFeatureFlags");
// Re-export dynamic flags from the www version.
var dynamicFeatureFlags = require('ReactFeatureFlags');
var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing,
enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing,
enableRenderableContext = dynamicFeatureFlags.enableRenderableContext;
// On WWW, false is used for a new modern build.
var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing,
enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing,
enableRenderableContext = dynamicFeatureFlags.enableRenderableContext;
// On WWW, false is used for a new modern build.
var REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
function isValidElementType(type) {
if (typeof type === "string" || typeof type === "function") {
return true;
} // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
var REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference');
function isValidElementType(type) {
if (typeof type === 'string' || typeof type === 'function') {
return true;
} // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
if (
type === REACT_FRAGMENT_TYPE ||
type === REACT_PROFILER_TYPE ||
(enableDebugTracing && type === REACT_DEBUG_TRACING_MODE_TYPE) ||
type === REACT_STRICT_MODE_TYPE ||
type === REACT_SUSPENSE_TYPE ||
type === REACT_SUSPENSE_LIST_TYPE ||
type === REACT_LEGACY_HIDDEN_TYPE ||
type === REACT_OFFSCREEN_TYPE ||
type === REACT_SCOPE_TYPE ||
(enableTransitionTracing && type === REACT_TRACING_MARKER_TYPE)
) {
return true;
}
if (typeof type === "object" && type !== null) {
if (
type.$$typeof === REACT_LAZY_TYPE ||
type.$$typeof === REACT_MEMO_TYPE ||
type.$$typeof === REACT_CONTEXT_TYPE ||
(!enableRenderableContext && type.$$typeof === REACT_PROVIDER_TYPE) ||
(enableRenderableContext && type.$$typeof === REACT_CONSUMER_TYPE) ||
type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
// types supported by any Flight configuration anywhere since
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_CLIENT_REFERENCE ||
type.getModuleId !== undefined
) {
return true;
}
}
if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing && type === REACT_DEBUG_TRACING_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || type === REACT_OFFSCREEN_TYPE || type === REACT_SCOPE_TYPE || enableTransitionTracing && type === REACT_TRACING_MARKER_TYPE) {
return true;
}
return false;
if (typeof type === 'object' && type !== null) {
if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || !enableRenderableContext && type.$$typeof === REACT_PROVIDER_TYPE || enableRenderableContext && type.$$typeof === REACT_CONSUMER_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
// types supported by any Flight configuration anywhere since
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_CLIENT_REFERENCE || type.getModuleId !== undefined) {
return true;
}
}
function typeOf(object) {
if (typeof object === "object" && object !== null) {
var $$typeof = object.$$typeof;
return false;
}
switch ($$typeof) {
case REACT_ELEMENT_TYPE:
var type = object.type;
function typeOf(object) {
if (typeof object === 'object' && object !== null) {
var $$typeof = object.$$typeof;
switch (type) {
case REACT_FRAGMENT_TYPE:
case REACT_PROFILER_TYPE:
case REACT_STRICT_MODE_TYPE:
case REACT_SUSPENSE_TYPE:
case REACT_SUSPENSE_LIST_TYPE:
return type;
switch ($$typeof) {
case REACT_ELEMENT_TYPE:
var type = object.type;
switch (type) {
case REACT_FRAGMENT_TYPE:
case REACT_PROFILER_TYPE:
case REACT_STRICT_MODE_TYPE:
case REACT_SUSPENSE_TYPE:
case REACT_SUSPENSE_LIST_TYPE:
return type;
default:
var $$typeofType = type && type.$$typeof;
switch ($$typeofType) {
case REACT_CONTEXT_TYPE:
case REACT_FORWARD_REF_TYPE:
case REACT_LAZY_TYPE:
case REACT_MEMO_TYPE:
return $$typeofType;
case REACT_CONSUMER_TYPE:
if (enableRenderableContext) {
return $$typeofType;
}
// Fall through
case REACT_PROVIDER_TYPE:
if (!enableRenderableContext) {
return $$typeofType;
}
// Fall through
default:
var $$typeofType = type && type.$$typeof;
switch ($$typeofType) {
case REACT_CONTEXT_TYPE:
case REACT_FORWARD_REF_TYPE:
case REACT_LAZY_TYPE:
case REACT_MEMO_TYPE:
return $$typeofType;
case REACT_CONSUMER_TYPE:
if (enableRenderableContext) {
return $$typeofType;
}
// Fall through
case REACT_PROVIDER_TYPE:
if (!enableRenderableContext) {
return $$typeofType;
}
// Fall through
default:
return $$typeof;
}
return $$typeof;
}
case REACT_PORTAL_TYPE:
return $$typeof;
}
}
return undefined;
}
var ContextConsumer = enableRenderableContext
? REACT_CONSUMER_TYPE
: REACT_CONTEXT_TYPE;
var ContextProvider = enableRenderableContext
? REACT_CONTEXT_TYPE
: REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var SuspenseList = REACT_SUSPENSE_LIST_TYPE;
function isContextConsumer(object) {
if (enableRenderableContext) {
return typeOf(object) === REACT_CONSUMER_TYPE;
} else {
return typeOf(object) === REACT_CONTEXT_TYPE;
}
}
function isContextProvider(object) {
if (enableRenderableContext) {
return typeOf(object) === REACT_CONTEXT_TYPE;
} else {
return typeOf(object) === REACT_PROVIDER_TYPE;
}
}
function isElement(object) {
return (
typeof object === "object" &&
object !== null &&
object.$$typeof === REACT_ELEMENT_TYPE
);
}
function isForwardRef(object) {
return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
return typeOf(object) === REACT_SUSPENSE_TYPE;
}
function isSuspenseList(object) {
return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
case REACT_PORTAL_TYPE:
return $$typeof;
}
}
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.SuspenseList = SuspenseList;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isSuspenseList = isSuspenseList;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
return undefined;
}
var ContextConsumer = enableRenderableContext ? REACT_CONSUMER_TYPE : REACT_CONTEXT_TYPE;
var ContextProvider = enableRenderableContext ? REACT_CONTEXT_TYPE : REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var SuspenseList = REACT_SUSPENSE_LIST_TYPE;
function isContextConsumer(object) {
if (enableRenderableContext) {
return typeOf(object) === REACT_CONSUMER_TYPE;
} else {
return typeOf(object) === REACT_CONTEXT_TYPE;
}
}
function isContextProvider(object) {
if (enableRenderableContext) {
return typeOf(object) === REACT_CONTEXT_TYPE;
} else {
return typeOf(object) === REACT_PROVIDER_TYPE;
}
}
function isElement(object) {
return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
}
function isForwardRef(object) {
return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
return typeOf(object) === REACT_SUSPENSE_TYPE;
}
function isSuspenseList(object) {
return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
}
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.SuspenseList = SuspenseList;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isSuspenseList = isSuspenseList;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
})();
}
+176 -201
View File
@@ -10,228 +10,203 @@
* @preserve-invariant-messages
*/
"use strict";
'use strict';
if (__DEV__) {
(function () {
"use strict";
(function() {
'use strict';
// ATTENTION
// When adding new symbols to this file,
// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
// The Symbol used to tag the ReactElement-like types.
var REACT_ELEMENT_TYPE = Symbol.for("react.element");
var REACT_PORTAL_TYPE = Symbol.for("react.portal");
var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
var REACT_PROFILER_TYPE = Symbol.for("react.profiler");
var REACT_PROVIDER_TYPE = Symbol.for("react.provider"); // TODO: Delete with enableRenderableContext
// ATTENTION
// When adding new symbols to this file,
// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
// The Symbol used to tag the ReactElement-like types.
var REACT_ELEMENT_TYPE = Symbol.for('react.element');
var REACT_PORTAL_TYPE = Symbol.for('react.portal');
var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
var REACT_PROVIDER_TYPE = Symbol.for('react.provider'); // TODO: Delete with enableRenderableContext
var REACT_CONSUMER_TYPE = Symbol.for("react.consumer");
var REACT_CONTEXT_TYPE = Symbol.for("react.context");
var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense");
var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list");
var REACT_MEMO_TYPE = Symbol.for("react.memo");
var REACT_LAZY_TYPE = Symbol.for("react.lazy");
var REACT_SCOPE_TYPE = Symbol.for("react.scope");
var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for("react.debug_trace_mode");
var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen");
var REACT_LEGACY_HIDDEN_TYPE = Symbol.for("react.legacy_hidden");
var REACT_TRACING_MARKER_TYPE = Symbol.for("react.tracing_marker");
var REACT_CONSUMER_TYPE = Symbol.for('react.consumer');
var REACT_CONTEXT_TYPE = Symbol.for('react.context');
var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
var REACT_MEMO_TYPE = Symbol.for('react.memo');
var REACT_LAZY_TYPE = Symbol.for('react.lazy');
var REACT_SCOPE_TYPE = Symbol.for('react.scope');
var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode');
var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
var REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');
var REACT_TRACING_MARKER_TYPE = Symbol.for('react.tracing_marker');
// Re-export dynamic flags from the www version.
var dynamicFeatureFlags = require("ReactFeatureFlags");
// Re-export dynamic flags from the www version.
var dynamicFeatureFlags = require('ReactFeatureFlags');
var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing,
enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing,
enableRenderableContext = dynamicFeatureFlags.enableRenderableContext;
// On WWW, true is used for a new modern build.
var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing,
enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing,
enableRenderableContext = dynamicFeatureFlags.enableRenderableContext;
// On WWW, true is used for a new modern build.
var REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
function isValidElementType(type) {
if (typeof type === "string" || typeof type === "function") {
return true;
} // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
var REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference');
function isValidElementType(type) {
if (typeof type === 'string' || typeof type === 'function') {
return true;
} // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
if (
type === REACT_FRAGMENT_TYPE ||
type === REACT_PROFILER_TYPE ||
(enableDebugTracing && type === REACT_DEBUG_TRACING_MODE_TYPE) ||
type === REACT_STRICT_MODE_TYPE ||
type === REACT_SUSPENSE_TYPE ||
type === REACT_SUSPENSE_LIST_TYPE ||
type === REACT_LEGACY_HIDDEN_TYPE ||
type === REACT_OFFSCREEN_TYPE ||
type === REACT_SCOPE_TYPE ||
(enableTransitionTracing && type === REACT_TRACING_MARKER_TYPE)
) {
return true;
}
if (typeof type === "object" && type !== null) {
if (
type.$$typeof === REACT_LAZY_TYPE ||
type.$$typeof === REACT_MEMO_TYPE ||
type.$$typeof === REACT_CONTEXT_TYPE ||
(!enableRenderableContext && type.$$typeof === REACT_PROVIDER_TYPE) ||
(enableRenderableContext && type.$$typeof === REACT_CONSUMER_TYPE) ||
type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
// types supported by any Flight configuration anywhere since
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_CLIENT_REFERENCE ||
type.getModuleId !== undefined
) {
return true;
}
}
if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing && type === REACT_DEBUG_TRACING_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || type === REACT_OFFSCREEN_TYPE || type === REACT_SCOPE_TYPE || enableTransitionTracing && type === REACT_TRACING_MARKER_TYPE) {
return true;
}
return false;
if (typeof type === 'object' && type !== null) {
if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || !enableRenderableContext && type.$$typeof === REACT_PROVIDER_TYPE || enableRenderableContext && type.$$typeof === REACT_CONSUMER_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
// types supported by any Flight configuration anywhere since
// we don't know which Flight build this will end up being used
// with.
type.$$typeof === REACT_CLIENT_REFERENCE || type.getModuleId !== undefined) {
return true;
}
}
function typeOf(object) {
if (typeof object === "object" && object !== null) {
var $$typeof = object.$$typeof;
return false;
}
switch ($$typeof) {
case REACT_ELEMENT_TYPE:
var type = object.type;
function typeOf(object) {
if (typeof object === 'object' && object !== null) {
var $$typeof = object.$$typeof;
switch (type) {
case REACT_FRAGMENT_TYPE:
case REACT_PROFILER_TYPE:
case REACT_STRICT_MODE_TYPE:
case REACT_SUSPENSE_TYPE:
case REACT_SUSPENSE_LIST_TYPE:
return type;
switch ($$typeof) {
case REACT_ELEMENT_TYPE:
var type = object.type;
switch (type) {
case REACT_FRAGMENT_TYPE:
case REACT_PROFILER_TYPE:
case REACT_STRICT_MODE_TYPE:
case REACT_SUSPENSE_TYPE:
case REACT_SUSPENSE_LIST_TYPE:
return type;
default:
var $$typeofType = type && type.$$typeof;
switch ($$typeofType) {
case REACT_CONTEXT_TYPE:
case REACT_FORWARD_REF_TYPE:
case REACT_LAZY_TYPE:
case REACT_MEMO_TYPE:
return $$typeofType;
case REACT_CONSUMER_TYPE:
if (enableRenderableContext) {
return $$typeofType;
}
// Fall through
case REACT_PROVIDER_TYPE:
if (!enableRenderableContext) {
return $$typeofType;
}
// Fall through
default:
var $$typeofType = type && type.$$typeof;
switch ($$typeofType) {
case REACT_CONTEXT_TYPE:
case REACT_FORWARD_REF_TYPE:
case REACT_LAZY_TYPE:
case REACT_MEMO_TYPE:
return $$typeofType;
case REACT_CONSUMER_TYPE:
if (enableRenderableContext) {
return $$typeofType;
}
// Fall through
case REACT_PROVIDER_TYPE:
if (!enableRenderableContext) {
return $$typeofType;
}
// Fall through
default:
return $$typeof;
}
return $$typeof;
}
case REACT_PORTAL_TYPE:
return $$typeof;
}
}
return undefined;
}
var ContextConsumer = enableRenderableContext
? REACT_CONSUMER_TYPE
: REACT_CONTEXT_TYPE;
var ContextProvider = enableRenderableContext
? REACT_CONTEXT_TYPE
: REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var SuspenseList = REACT_SUSPENSE_LIST_TYPE;
function isContextConsumer(object) {
if (enableRenderableContext) {
return typeOf(object) === REACT_CONSUMER_TYPE;
} else {
return typeOf(object) === REACT_CONTEXT_TYPE;
}
}
function isContextProvider(object) {
if (enableRenderableContext) {
return typeOf(object) === REACT_CONTEXT_TYPE;
} else {
return typeOf(object) === REACT_PROVIDER_TYPE;
}
}
function isElement(object) {
return (
typeof object === "object" &&
object !== null &&
object.$$typeof === REACT_ELEMENT_TYPE
);
}
function isForwardRef(object) {
return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
return typeOf(object) === REACT_SUSPENSE_TYPE;
}
function isSuspenseList(object) {
return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
case REACT_PORTAL_TYPE:
return $$typeof;
}
}
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.SuspenseList = SuspenseList;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isSuspenseList = isSuspenseList;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
return undefined;
}
var ContextConsumer = enableRenderableContext ? REACT_CONSUMER_TYPE : REACT_CONTEXT_TYPE;
var ContextProvider = enableRenderableContext ? REACT_CONTEXT_TYPE : REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var SuspenseList = REACT_SUSPENSE_LIST_TYPE;
function isContextConsumer(object) {
if (enableRenderableContext) {
return typeOf(object) === REACT_CONSUMER_TYPE;
} else {
return typeOf(object) === REACT_CONTEXT_TYPE;
}
}
function isContextProvider(object) {
if (enableRenderableContext) {
return typeOf(object) === REACT_CONTEXT_TYPE;
} else {
return typeOf(object) === REACT_PROVIDER_TYPE;
}
}
function isElement(object) {
return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
}
function isForwardRef(object) {
return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
return typeOf(object) === REACT_SUSPENSE_TYPE;
}
function isSuspenseList(object) {
return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;
}
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.SuspenseList = SuspenseList;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isSuspenseList = isSuspenseList;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
})();
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -10,220 +10,201 @@
* @preserve-invariant-messages
*/
"use strict";
'use strict';
if (__DEV__) {
(function () {
"use strict";
(function() {
'use strict';
// TODO: Use symbols?
var ImmediatePriority = 1;
var UserBlockingPriority = 2;
var NormalPriority = 3;
var LowPriority = 4;
var IdlePriority = 5;
// TODO: Use symbols?
var ImmediatePriority = 1;
var UserBlockingPriority = 2;
var NormalPriority = 3;
var LowPriority = 4;
var IdlePriority = 5;
var perf = window.performance;
var setTimeout = window.setTimeout; // Use experimental Chrome Scheduler postTask API.
var perf = window.performance;
var setTimeout = window.setTimeout; // Use experimental Chrome Scheduler postTask API.
var scheduler = global.scheduler;
var getCurrentTime = perf.now.bind(perf);
var unstable_now = getCurrentTime; // Scheduler periodically yields in case there is other work on the main
// thread, like user events. By default, it yields multiple times per frame.
// It does not attempt to align with frame boundaries, since most tasks don't
// need to be frame aligned; for those that do, use requestAnimationFrame.
var scheduler = global.scheduler;
var getCurrentTime = perf.now.bind(perf);
var unstable_now = getCurrentTime; // Scheduler periodically yields in case there is other work on the main
// thread, like user events. By default, it yields multiple times per frame.
// It does not attempt to align with frame boundaries, since most tasks don't
// need to be frame aligned; for those that do, use requestAnimationFrame.
var yieldInterval = 5;
var deadline = 0;
var currentPriorityLevel_DEPRECATED = NormalPriority; // Always yield at the end of the frame.
var yieldInterval = 5;
var deadline = 0;
var currentPriorityLevel_DEPRECATED = NormalPriority; // Always yield at the end of the frame.
function unstable_shouldYield() {
return getCurrentTime() >= deadline;
}
function unstable_requestPaint() {
// Since we yield every frame regardless, `requestPaint` has no effect.
}
function unstable_scheduleCallback(priorityLevel, callback, options) {
var postTaskPriority;
function unstable_shouldYield() {
return getCurrentTime() >= deadline;
}
function unstable_requestPaint() {// Since we yield every frame regardless, `requestPaint` has no effect.
}
function unstable_scheduleCallback(priorityLevel, callback, options) {
var postTaskPriority;
switch (priorityLevel) {
case ImmediatePriority:
case UserBlockingPriority:
postTaskPriority = "user-blocking";
break;
switch (priorityLevel) {
case ImmediatePriority:
case UserBlockingPriority:
postTaskPriority = 'user-blocking';
break;
case LowPriority:
case NormalPriority:
postTaskPriority = "user-visible";
break;
case LowPriority:
case NormalPriority:
postTaskPriority = 'user-visible';
break;
case IdlePriority:
postTaskPriority = "background";
break;
case IdlePriority:
postTaskPriority = 'background';
break;
default:
postTaskPriority = "user-visible";
break;
}
default:
postTaskPriority = 'user-visible';
break;
}
var controller = new TaskController({
priority: postTaskPriority
});
var postTaskOptions = {
delay:
typeof options === "object" && options !== null ? options.delay : 0,
signal: controller.signal
var controller = new TaskController({
priority: postTaskPriority
});
var postTaskOptions = {
delay: typeof options === 'object' && options !== null ? options.delay : 0,
signal: controller.signal
};
var node = {
_controller: controller
};
scheduler.postTask(runTask.bind(null, priorityLevel, postTaskPriority, node, callback), postTaskOptions).catch(handleAbortError);
return node;
}
function runTask(priorityLevel, postTaskPriority, node, callback) {
deadline = getCurrentTime() + yieldInterval;
try {
currentPriorityLevel_DEPRECATED = priorityLevel;
var didTimeout_DEPRECATED = false;
var result = callback(didTimeout_DEPRECATED);
if (typeof result === 'function') {
// Assume this is a continuation
var continuation = result;
var continuationOptions = {
signal: node._controller.signal
};
var node = {
_controller: controller
};
scheduler
.postTask(
runTask.bind(null, priorityLevel, postTaskPriority, node, callback),
postTaskOptions
)
.catch(handleAbortError);
return node;
}
var nextTask = runTask.bind(null, priorityLevel, postTaskPriority, node, continuation);
function runTask(priorityLevel, postTaskPriority, node, callback) {
deadline = getCurrentTime() + yieldInterval;
try {
currentPriorityLevel_DEPRECATED = priorityLevel;
var didTimeout_DEPRECATED = false;
var result = callback(didTimeout_DEPRECATED);
if (typeof result === "function") {
// Assume this is a continuation
var continuation = result;
var continuationOptions = {
signal: node._controller.signal
};
var nextTask = runTask.bind(
null,
priorityLevel,
postTaskPriority,
node,
continuation
);
if (scheduler.yield !== undefined) {
scheduler
.yield(continuationOptions)
.then(nextTask)
.catch(handleAbortError);
} else {
scheduler
.postTask(nextTask, continuationOptions)
.catch(handleAbortError);
}
}
} catch (error) {
// We're inside a `postTask` promise. If we don't handle this error, then it
// will trigger an "Unhandled promise rejection" error. We don't want that,
// but we do want the default error reporting behavior that normal
// (non-Promise) tasks get for unhandled errors.
//
// So we'll re-throw the error inside a regular browser task.
setTimeout(function () {
throw error;
});
} finally {
currentPriorityLevel_DEPRECATED = NormalPriority;
if (scheduler.yield !== undefined) {
scheduler.yield(continuationOptions).then(nextTask).catch(handleAbortError);
} else {
scheduler.postTask(nextTask, continuationOptions).catch(handleAbortError);
}
}
} catch (error) {
// We're inside a `postTask` promise. If we don't handle this error, then it
// will trigger an "Unhandled promise rejection" error. We don't want that,
// but we do want the default error reporting behavior that normal
// (non-Promise) tasks get for unhandled errors.
//
// So we'll re-throw the error inside a regular browser task.
setTimeout(function () {
throw error;
});
} finally {
currentPriorityLevel_DEPRECATED = NormalPriority;
}
}
function handleAbortError(error) {
// Abort errors are an implementation detail. We don't expose the
// TaskController to the user, nor do we expose the promise that is returned
// from `postTask`. So we should suppress them, since there's no way for the
// user to handle them.
function handleAbortError(error) {// Abort errors are an implementation detail. We don't expose the
// TaskController to the user, nor do we expose the promise that is returned
// from `postTask`. So we should suppress them, since there's no way for the
// user to handle them.
}
function unstable_cancelCallback(node) {
var controller = node._controller;
controller.abort();
}
function unstable_runWithPriority(priorityLevel, callback) {
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = priorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
}
function unstable_getCurrentPriorityLevel() {
return currentPriorityLevel_DEPRECATED;
}
function unstable_next(callback) {
var priorityLevel;
switch (currentPriorityLevel_DEPRECATED) {
case ImmediatePriority:
case UserBlockingPriority:
case NormalPriority:
// Shift down to normal priority
priorityLevel = NormalPriority;
break;
default:
// Anything lower than normal priority should remain at the current level.
priorityLevel = currentPriorityLevel_DEPRECATED;
break;
}
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = priorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
}
function unstable_wrapCallback(callback) {
var parentPriorityLevel = currentPriorityLevel_DEPRECATED;
return function () {
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = parentPriorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
};
}
function unstable_forceFrameRate() {}
function unstable_pauseExecution() {}
function unstable_continueExecution() {}
function unstable_getFirstCallbackNode() {
return null;
} // Currently no profiling build
function unstable_cancelCallback(node) {
var controller = node._controller;
controller.abort();
}
function unstable_runWithPriority(priorityLevel, callback) {
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = priorityLevel;
var unstable_Profiling = null;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
}
function unstable_getCurrentPriorityLevel() {
return currentPriorityLevel_DEPRECATED;
}
function unstable_next(callback) {
var priorityLevel;
switch (currentPriorityLevel_DEPRECATED) {
case ImmediatePriority:
case UserBlockingPriority:
case NormalPriority:
// Shift down to normal priority
priorityLevel = NormalPriority;
break;
default:
// Anything lower than normal priority should remain at the current level.
priorityLevel = currentPriorityLevel_DEPRECATED;
break;
}
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = priorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
}
function unstable_wrapCallback(callback) {
var parentPriorityLevel = currentPriorityLevel_DEPRECATED;
return function () {
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = parentPriorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
};
}
function unstable_forceFrameRate() {}
function unstable_pauseExecution() {}
function unstable_continueExecution() {}
function unstable_getFirstCallbackNode() {
return null;
} // Currently no profiling build
var unstable_Profiling = null;
exports.unstable_IdlePriority = IdlePriority;
exports.unstable_ImmediatePriority = ImmediatePriority;
exports.unstable_LowPriority = LowPriority;
exports.unstable_NormalPriority = NormalPriority;
exports.unstable_Profiling = unstable_Profiling;
exports.unstable_UserBlockingPriority = UserBlockingPriority;
exports.unstable_cancelCallback = unstable_cancelCallback;
exports.unstable_continueExecution = unstable_continueExecution;
exports.unstable_forceFrameRate = unstable_forceFrameRate;
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;
exports.unstable_next = unstable_next;
exports.unstable_now = unstable_now;
exports.unstable_pauseExecution = unstable_pauseExecution;
exports.unstable_requestPaint = unstable_requestPaint;
exports.unstable_runWithPriority = unstable_runWithPriority;
exports.unstable_scheduleCallback = unstable_scheduleCallback;
exports.unstable_shouldYield = unstable_shouldYield;
exports.unstable_wrapCallback = unstable_wrapCallback;
exports.unstable_IdlePriority = IdlePriority;
exports.unstable_ImmediatePriority = ImmediatePriority;
exports.unstable_LowPriority = LowPriority;
exports.unstable_NormalPriority = NormalPriority;
exports.unstable_Profiling = unstable_Profiling;
exports.unstable_UserBlockingPriority = UserBlockingPriority;
exports.unstable_cancelCallback = unstable_cancelCallback;
exports.unstable_continueExecution = unstable_continueExecution;
exports.unstable_forceFrameRate = unstable_forceFrameRate;
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;
exports.unstable_next = unstable_next;
exports.unstable_now = unstable_now;
exports.unstable_pauseExecution = unstable_pauseExecution;
exports.unstable_requestPaint = unstable_requestPaint;
exports.unstable_runWithPriority = unstable_runWithPriority;
exports.unstable_scheduleCallback = unstable_scheduleCallback;
exports.unstable_shouldYield = unstable_shouldYield;
exports.unstable_wrapCallback = unstable_wrapCallback;
})();
}
@@ -10,220 +10,201 @@
* @preserve-invariant-messages
*/
"use strict";
'use strict';
if (__DEV__) {
(function () {
"use strict";
(function() {
'use strict';
// TODO: Use symbols?
var ImmediatePriority = 1;
var UserBlockingPriority = 2;
var NormalPriority = 3;
var LowPriority = 4;
var IdlePriority = 5;
// TODO: Use symbols?
var ImmediatePriority = 1;
var UserBlockingPriority = 2;
var NormalPriority = 3;
var LowPriority = 4;
var IdlePriority = 5;
var perf = window.performance;
var setTimeout = window.setTimeout; // Use experimental Chrome Scheduler postTask API.
var perf = window.performance;
var setTimeout = window.setTimeout; // Use experimental Chrome Scheduler postTask API.
var scheduler = global.scheduler;
var getCurrentTime = perf.now.bind(perf);
var unstable_now = getCurrentTime; // Scheduler periodically yields in case there is other work on the main
// thread, like user events. By default, it yields multiple times per frame.
// It does not attempt to align with frame boundaries, since most tasks don't
// need to be frame aligned; for those that do, use requestAnimationFrame.
var scheduler = global.scheduler;
var getCurrentTime = perf.now.bind(perf);
var unstable_now = getCurrentTime; // Scheduler periodically yields in case there is other work on the main
// thread, like user events. By default, it yields multiple times per frame.
// It does not attempt to align with frame boundaries, since most tasks don't
// need to be frame aligned; for those that do, use requestAnimationFrame.
var yieldInterval = 5;
var deadline = 0;
var currentPriorityLevel_DEPRECATED = NormalPriority; // Always yield at the end of the frame.
var yieldInterval = 5;
var deadline = 0;
var currentPriorityLevel_DEPRECATED = NormalPriority; // Always yield at the end of the frame.
function unstable_shouldYield() {
return getCurrentTime() >= deadline;
}
function unstable_requestPaint() {
// Since we yield every frame regardless, `requestPaint` has no effect.
}
function unstable_scheduleCallback(priorityLevel, callback, options) {
var postTaskPriority;
function unstable_shouldYield() {
return getCurrentTime() >= deadline;
}
function unstable_requestPaint() {// Since we yield every frame regardless, `requestPaint` has no effect.
}
function unstable_scheduleCallback(priorityLevel, callback, options) {
var postTaskPriority;
switch (priorityLevel) {
case ImmediatePriority:
case UserBlockingPriority:
postTaskPriority = "user-blocking";
break;
switch (priorityLevel) {
case ImmediatePriority:
case UserBlockingPriority:
postTaskPriority = 'user-blocking';
break;
case LowPriority:
case NormalPriority:
postTaskPriority = "user-visible";
break;
case LowPriority:
case NormalPriority:
postTaskPriority = 'user-visible';
break;
case IdlePriority:
postTaskPriority = "background";
break;
case IdlePriority:
postTaskPriority = 'background';
break;
default:
postTaskPriority = "user-visible";
break;
}
default:
postTaskPriority = 'user-visible';
break;
}
var controller = new TaskController({
priority: postTaskPriority
});
var postTaskOptions = {
delay:
typeof options === "object" && options !== null ? options.delay : 0,
signal: controller.signal
var controller = new TaskController({
priority: postTaskPriority
});
var postTaskOptions = {
delay: typeof options === 'object' && options !== null ? options.delay : 0,
signal: controller.signal
};
var node = {
_controller: controller
};
scheduler.postTask(runTask.bind(null, priorityLevel, postTaskPriority, node, callback), postTaskOptions).catch(handleAbortError);
return node;
}
function runTask(priorityLevel, postTaskPriority, node, callback) {
deadline = getCurrentTime() + yieldInterval;
try {
currentPriorityLevel_DEPRECATED = priorityLevel;
var didTimeout_DEPRECATED = false;
var result = callback(didTimeout_DEPRECATED);
if (typeof result === 'function') {
// Assume this is a continuation
var continuation = result;
var continuationOptions = {
signal: node._controller.signal
};
var node = {
_controller: controller
};
scheduler
.postTask(
runTask.bind(null, priorityLevel, postTaskPriority, node, callback),
postTaskOptions
)
.catch(handleAbortError);
return node;
}
var nextTask = runTask.bind(null, priorityLevel, postTaskPriority, node, continuation);
function runTask(priorityLevel, postTaskPriority, node, callback) {
deadline = getCurrentTime() + yieldInterval;
try {
currentPriorityLevel_DEPRECATED = priorityLevel;
var didTimeout_DEPRECATED = false;
var result = callback(didTimeout_DEPRECATED);
if (typeof result === "function") {
// Assume this is a continuation
var continuation = result;
var continuationOptions = {
signal: node._controller.signal
};
var nextTask = runTask.bind(
null,
priorityLevel,
postTaskPriority,
node,
continuation
);
if (scheduler.yield !== undefined) {
scheduler
.yield(continuationOptions)
.then(nextTask)
.catch(handleAbortError);
} else {
scheduler
.postTask(nextTask, continuationOptions)
.catch(handleAbortError);
}
}
} catch (error) {
// We're inside a `postTask` promise. If we don't handle this error, then it
// will trigger an "Unhandled promise rejection" error. We don't want that,
// but we do want the default error reporting behavior that normal
// (non-Promise) tasks get for unhandled errors.
//
// So we'll re-throw the error inside a regular browser task.
setTimeout(function () {
throw error;
});
} finally {
currentPriorityLevel_DEPRECATED = NormalPriority;
if (scheduler.yield !== undefined) {
scheduler.yield(continuationOptions).then(nextTask).catch(handleAbortError);
} else {
scheduler.postTask(nextTask, continuationOptions).catch(handleAbortError);
}
}
} catch (error) {
// We're inside a `postTask` promise. If we don't handle this error, then it
// will trigger an "Unhandled promise rejection" error. We don't want that,
// but we do want the default error reporting behavior that normal
// (non-Promise) tasks get for unhandled errors.
//
// So we'll re-throw the error inside a regular browser task.
setTimeout(function () {
throw error;
});
} finally {
currentPriorityLevel_DEPRECATED = NormalPriority;
}
}
function handleAbortError(error) {
// Abort errors are an implementation detail. We don't expose the
// TaskController to the user, nor do we expose the promise that is returned
// from `postTask`. So we should suppress them, since there's no way for the
// user to handle them.
function handleAbortError(error) {// Abort errors are an implementation detail. We don't expose the
// TaskController to the user, nor do we expose the promise that is returned
// from `postTask`. So we should suppress them, since there's no way for the
// user to handle them.
}
function unstable_cancelCallback(node) {
var controller = node._controller;
controller.abort();
}
function unstable_runWithPriority(priorityLevel, callback) {
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = priorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
}
function unstable_getCurrentPriorityLevel() {
return currentPriorityLevel_DEPRECATED;
}
function unstable_next(callback) {
var priorityLevel;
switch (currentPriorityLevel_DEPRECATED) {
case ImmediatePriority:
case UserBlockingPriority:
case NormalPriority:
// Shift down to normal priority
priorityLevel = NormalPriority;
break;
default:
// Anything lower than normal priority should remain at the current level.
priorityLevel = currentPriorityLevel_DEPRECATED;
break;
}
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = priorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
}
function unstable_wrapCallback(callback) {
var parentPriorityLevel = currentPriorityLevel_DEPRECATED;
return function () {
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = parentPriorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
};
}
function unstable_forceFrameRate() {}
function unstable_pauseExecution() {}
function unstable_continueExecution() {}
function unstable_getFirstCallbackNode() {
return null;
} // Currently no profiling build
function unstable_cancelCallback(node) {
var controller = node._controller;
controller.abort();
}
function unstable_runWithPriority(priorityLevel, callback) {
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = priorityLevel;
var unstable_Profiling = null;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
}
function unstable_getCurrentPriorityLevel() {
return currentPriorityLevel_DEPRECATED;
}
function unstable_next(callback) {
var priorityLevel;
switch (currentPriorityLevel_DEPRECATED) {
case ImmediatePriority:
case UserBlockingPriority:
case NormalPriority:
// Shift down to normal priority
priorityLevel = NormalPriority;
break;
default:
// Anything lower than normal priority should remain at the current level.
priorityLevel = currentPriorityLevel_DEPRECATED;
break;
}
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = priorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
}
function unstable_wrapCallback(callback) {
var parentPriorityLevel = currentPriorityLevel_DEPRECATED;
return function () {
var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
currentPriorityLevel_DEPRECATED = parentPriorityLevel;
try {
return callback();
} finally {
currentPriorityLevel_DEPRECATED = previousPriorityLevel;
}
};
}
function unstable_forceFrameRate() {}
function unstable_pauseExecution() {}
function unstable_continueExecution() {}
function unstable_getFirstCallbackNode() {
return null;
} // Currently no profiling build
var unstable_Profiling = null;
exports.unstable_IdlePriority = IdlePriority;
exports.unstable_ImmediatePriority = ImmediatePriority;
exports.unstable_LowPriority = LowPriority;
exports.unstable_NormalPriority = NormalPriority;
exports.unstable_Profiling = unstable_Profiling;
exports.unstable_UserBlockingPriority = UserBlockingPriority;
exports.unstable_cancelCallback = unstable_cancelCallback;
exports.unstable_continueExecution = unstable_continueExecution;
exports.unstable_forceFrameRate = unstable_forceFrameRate;
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;
exports.unstable_next = unstable_next;
exports.unstable_now = unstable_now;
exports.unstable_pauseExecution = unstable_pauseExecution;
exports.unstable_requestPaint = unstable_requestPaint;
exports.unstable_runWithPriority = unstable_runWithPriority;
exports.unstable_scheduleCallback = unstable_scheduleCallback;
exports.unstable_shouldYield = unstable_shouldYield;
exports.unstable_wrapCallback = unstable_wrapCallback;
exports.unstable_IdlePriority = IdlePriority;
exports.unstable_ImmediatePriority = ImmediatePriority;
exports.unstable_LowPriority = LowPriority;
exports.unstable_NormalPriority = NormalPriority;
exports.unstable_Profiling = unstable_Profiling;
exports.unstable_UserBlockingPriority = UserBlockingPriority;
exports.unstable_cancelCallback = unstable_cancelCallback;
exports.unstable_continueExecution = unstable_continueExecution;
exports.unstable_forceFrameRate = unstable_forceFrameRate;
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;
exports.unstable_next = unstable_next;
exports.unstable_now = unstable_now;
exports.unstable_pauseExecution = unstable_pauseExecution;
exports.unstable_requestPaint = unstable_requestPaint;
exports.unstable_runWithPriority = unstable_runWithPriority;
exports.unstable_scheduleCallback = unstable_scheduleCallback;
exports.unstable_shouldYield = unstable_shouldYield;
exports.unstable_wrapCallback = unstable_wrapCallback;
})();
}
@@ -1,7 +1 @@
(function(){function p(b,a,d){a=document.getElementById(a);a.parentNode.removeChild(a);var c=document.getElementById(b);if(c){b=c.previousSibling;if(d)b.data="$!",c.setAttribute("data-dgst",d);else{d=b.parentNode;c=b.nextSibling;var f=0;do{if(c&&8===c.nodeType){var g=c.data;if("/$"===g)if(0===f)break;else f--;else"$"!==g&&"$?"!==g&&"$!"!==g||f++}g=c.nextSibling;d.removeChild(c);c=g}while(c);for(;a.firstChild;)d.insertBefore(a.firstChild,c);b.data="$"}b._reactRetry&&b._reactRetry()}}function B(b,a,
d){for(var c=new Map,f=document,g,e,q=f.querySelectorAll("link[data-precedence],style[data-precedence]"),w=[],r=0;e=q[r++];)"not all"===e.getAttribute("media")?w.push(e):("LINK"===e.tagName&&v.set(e.getAttribute("href"),e),c.set(e.dataset.precedence,g=e));e=0;q=[];var t,h;for(r=!0;;){if(r){var n=d[e++];if(!n){r=!1;e=0;continue}var k=!1,u=0;var l=n[u++];if(h=v.get(l)){var m=h._p;k=!0}else{h=f.createElement("link");h.href=l;h.rel="stylesheet";for(h.dataset.precedence=t=n[u++];m=n[u++];)h.setAttribute(m,
n[u++]);m=h._p=new Promise(function(C,D){h.onload=C;h.onerror=D});v.set(l,h)}l=h.getAttribute("media");!m||"l"===m.s||l&&!window.matchMedia(l).matches||q.push(m);if(k)continue}else{h=w[e++];if(!h)break;t=h.getAttribute("data-precedence");h.removeAttribute("media")}k=c.get(t)||g;k===g&&(g=h);c.set(t,h);k?k.parentNode.insertBefore(h,k.nextSibling):(k=f.head,k.insertBefore(h,k.firstChild))}Promise.all(q).then(p.bind(null,b,a,""),p.bind(null,b,a,"Resource failed to load"))}function x(b){b=b.querySelectorAll("template");
for(var a=0;a<b.length;a++)y(b[a])}function z(b){function a(c){for(var f=0;f<c.length;f++)for(var g=c[f].addedNodes,e=0;e<g.length;e++)g[e].parentNode&&y(g[e])}var d=new MutationObserver(a);d.observe(b,{childList:!0});window.addEventListener("DOMContentLoaded",function(){a(d.takeRecords());d.disconnect()})}function y(b){if(1===b.nodeType&&b.dataset){var a=b.dataset;if(null!=a.rxi){var d=a.dgst,c=a.msg,f=a.stck,g=a.cstck,e=document.getElementById(a.bid);e&&(a=e.previousSibling,a.data="$!",e=e.dataset,
d&&(e.dgst=d),c&&(e.msg=c),f&&(e.stck=f),g&&(e.cstck=g),a._reactRetry&&a._reactRetry());b.remove()}else if(null!=a.rri)B(a.bid,a.sid,JSON.parse(a.sty)),b.remove();else if(null!=a.rci)p(a.bid,a.sid),b.remove();else if(null!=a.rsi){d=a.pid;c=document.getElementById(a.sid);d=document.getElementById(d);for(c.parentNode.removeChild(c);c.firstChild;)d.parentNode.insertBefore(c.firstChild,d);d.parentNode.removeChild(d);b.remove()}}}var v=new Map;(function(){addEventListener("submit",function(b){if(!b.defaultPrevented){var a=
b.target,d=b.submitter,c=a.action,f=d;if(d){var g=d.getAttribute("formAction");null!=g&&(c=g,f=null)}"javascript:throw new Error('React form unexpectedly submitted.')"===c&&(b.preventDefault(),f?(b=document.createElement("input"),b.name=f.name,b.value=f.value,f.parentNode.insertBefore(b,f),f=new FormData(a),b.parentNode.removeChild(b)):f=new FormData(a),b=a.ownerDocument||a,(b.$$reactFormReplay=b.$$reactFormReplay||[]).push(a,d,f))}})})();window.$RC||(window.$RC=p,window.$RM=new Map);if(null!=document.body)"loading"===
document.readyState&&z(document.body),x(document.body);else{var A=new MutationObserver(function(){null!=document.body&&("loading"===document.readyState&&z(document.body),x(document.body),A.disconnect())});A.observe(document.documentElement,{childList:!0})}})();
(function(){function e(e,t,n){t=document.getElementById(t);t.parentNode.removeChild(t);var r=document.getElementById(e);if(r){e=r.previousSibling;if(n)e.data="$!",r.setAttribute("data-dgst",n);else{n=e.parentNode;r=e.nextSibling;var i=0;do{if(r&&8===r.nodeType){var d=r.data;if("/$"===d)if(0===i)break;else i--;else"$"!==d&&"$?"!==d&&"$!"!==d||i++}d=r.nextSibling;n.removeChild(r);r=d}while(r);for(;t.firstChild;)n.insertBefore(t.firstChild,r);e.data="$"}e._reactRetry&&e._reactRetry()}}function t(t,n,r){for(var i=new Map,o=document,a,l,c=o.querySelectorAll("link[data-precedence],style[data-precedence]"),s=[],u=0;l=c[u++];)"not all"===l.getAttribute("media")?s.push(l):("LINK"===l.tagName&&d.set(l.getAttribute("href"),l),i.set(l.dataset.precedence,a=l));l=0;c=[];var m,f;for(u=!0;;){if(u){var v=r[l++];if(!v){u=!1;l=0;continue}var p=!1,b=0;var g=v[b++];if(f=d.get(g)){var h=f._p;p=!0}else{f=o.createElement("link");f.href=g;f.rel="stylesheet";for(f.dataset.precedence=m=v[b++];h=v[b++];)f.setAttribute(h,v[b++]);h=f._p=new Promise((function(e,t){f.onload=e;f.onerror=t}));d.set(g,f)}g=f.getAttribute("media");!h||"l"===h.s||g&&!window.matchMedia(g).matches||c.push(h);if(p)continue}else{f=s[l++];if(!f)break;m=f.getAttribute("data-precedence");f.removeAttribute("media")}p=i.get(m)||a;p===a&&(a=f);i.set(m,f);p?p.parentNode.insertBefore(f,p.nextSibling):(p=o.head,p.insertBefore(f,p.firstChild))}Promise.all(c).then(e.bind(null,t,n,""),e.bind(null,t,n,"Resource failed to load"))}function n(e){e=e.querySelectorAll("template");for(var t=0;t<e.length;t++)i(e[t])}function r(e){function t(e){for(var t=0;t<e.length;t++)for(var n=e[t].addedNodes,r=0;r<n.length;r++)n[r].parentNode&&i(n[r])}var n=new MutationObserver(t);n.observe(e,{childList:!0});window.addEventListener("DOMContentLoaded",(function(){t(n.takeRecords());n.disconnect()}))}function i(n){if(1===n.nodeType&&n.dataset){var r=n.dataset;if(null!=r.rxi){var i=r.dgst,d=r.msg,o=r.stck,a=r.cstck,l=document.getElementById(r.bid);l&&(r=l.previousSibling,r.data="$!",l=l.dataset,i&&(l.dgst=i),d&&(l.msg=d),o&&(l.stck=o),a&&(l.cstck=a),r._reactRetry&&r._reactRetry());n.remove()}else if(null!=r.rri)t(r.bid,r.sid,JSON.parse(r.sty)),n.remove();else if(null!=r.rci)e(r.bid,r.sid),n.remove();else if(null!=r.rsi){i=r.pid;d=document.getElementById(r.sid);i=document.getElementById(i);for(d.parentNode.removeChild(d);d.firstChild;)i.parentNode.insertBefore(d.firstChild,i);i.parentNode.removeChild(i);n.remove()}}}var d=new Map;(function(){addEventListener("submit",(function(e){if(!e.defaultPrevented){var t=e.target,n=e.submitter,r=t.action,i=n;if(n){var d=n.getAttribute("formAction");null!=d&&(r=d,i=null)}"javascript:throw new Error('React form unexpectedly submitted.')"===r&&(e.preventDefault(),i?(e=document.createElement("input"),e.name=i.name,e.value=i.value,i.parentNode.insertBefore(e,i),i=new FormData(t),e.parentNode.removeChild(e)):i=new FormData(t),e=t.ownerDocument||t,(e.$$reactFormReplay=e.$$reactFormReplay||[]).push(t,n,i))}}))})();window.$RC||(window.$RC=e,window.$RM=new Map);if(null!=document.body)"loading"===document.readyState&&r(document.body),n(document.body);else{var o=new MutationObserver((function(){null!=document.body&&("loading"===document.readyState&&r(document.body),n(document.body),o.disconnect())}));o.observe(document.documentElement,{childList:!0})}})();