From 769be695f52a1c600fc88888ab4104fcffcdcc71 Mon Sep 17 00:00:00 2001 From: acdlite Date: Thu, 4 Apr 2024 15:04:09 +0000 Subject: [PATCH] Remove defaultProps support (except for classes) (#28733) This removes defaultProps support for all component types except for classes. We've chosen to continue supporting defaultProps for classes because lots of older code relies on it, and unlike function components, (which can use default params), there's no straightforward alternative. By implication, it also removes support for setting defaultProps on `React.lazy` wrapper. So this will not work: ```js const MyClassComponent = React.lazy(() => import('./MyClassComponent')); // MyClassComponent is not actually a class; it's a lazy wrapper. So // defaultProps does not work. MyClassComponent.defaultProps = { foo: 'bar' }; ``` However, if you set the default props on the class itself, then it's fine. For classes, this change also moves where defaultProps are resolved. Previously, defaultProps were resolved by the JSX runtime. This change is only observable if you introspect a JSX element, which is relatively rare but does happen. In other words, previously `.props.aDefaultProp` would resolve to the default prop value, but now it does not. DiffTrain build for [48b4ecc9012638ed51b275aad24b2086b8215e32](https://github.com/facebook/react/commit/48b4ecc9012638ed51b275aad24b2086b8215e32) --- .../facebook-www/JSXDEVRuntime-dev.classic.js | 20 +- .../facebook-www/JSXDEVRuntime-dev.modern.js | 20 +- compiled/facebook-www/REVISION | 2 +- compiled/facebook-www/React-dev.classic.js | 104 +++--- compiled/facebook-www/React-dev.modern.js | 104 +++--- compiled/facebook-www/React-prod.classic.js | 20 +- compiled/facebook-www/React-prod.modern.js | 20 +- .../facebook-www/React-profiling.classic.js | 20 +- .../facebook-www/React-profiling.modern.js | 20 +- compiled/facebook-www/ReactART-dev.classic.js | 106 ++++-- compiled/facebook-www/ReactART-dev.modern.js | 106 ++++-- .../facebook-www/ReactART-prod.classic.js | 53 ++- compiled/facebook-www/ReactART-prod.modern.js | 53 ++- compiled/facebook-www/ReactDOM-dev.classic.js | 105 ++++-- compiled/facebook-www/ReactDOM-dev.modern.js | 105 ++++-- .../facebook-www/ReactDOM-prod.classic.js | 55 ++- compiled/facebook-www/ReactDOM-prod.modern.js | 55 ++- .../ReactDOM-profiling.classic.js | 55 ++- .../facebook-www/ReactDOM-profiling.modern.js | 55 ++- .../ReactDOMServer-dev.classic.js | 49 ++- .../facebook-www/ReactDOMServer-dev.modern.js | 49 ++- .../ReactDOMServer-prod.classic.js | 275 +++++++------- .../ReactDOMServer-prod.modern.js | 339 +++++++++--------- .../ReactDOMServerStreaming-dev.modern.js | 47 ++- .../ReactDOMServerStreaming-prod.modern.js | 297 +++++++-------- .../ReactDOMTesting-dev.classic.js | 105 ++++-- .../ReactDOMTesting-dev.modern.js | 105 ++++-- .../ReactDOMTesting-prod.classic.js | 55 ++- .../ReactDOMTesting-prod.modern.js | 55 ++- .../facebook-www/ReactServer-dev.modern.js | 104 +++--- .../facebook-www/ReactServer-prod.modern.js | 20 +- .../ReactTestRenderer-dev.classic.js | 81 +++-- .../ReactTestRenderer-dev.modern.js | 81 +++-- .../__test_utils__/ReactAllWarnings.js | 1 - 34 files changed, 1690 insertions(+), 1051 deletions(-) diff --git a/compiled/facebook-www/JSXDEVRuntime-dev.classic.js b/compiled/facebook-www/JSXDEVRuntime-dev.classic.js index 8ef75488e7..6c0ef234f5 100644 --- a/compiled/facebook-www/JSXDEVRuntime-dev.classic.js +++ b/compiled/facebook-www/JSXDEVRuntime-dev.classic.js @@ -109,8 +109,9 @@ if (__DEV__) { var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing, enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, - enableRefAsProp = dynamicFeatureFlags.enableRefAsProp; - // On WWW, false is used for a new modern build. + enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, false is used for a new modern build. function getWrappedName(outerType, innerType, wrapperName) { var displayName = outerType.displayName; @@ -1231,14 +1232,17 @@ if (__DEV__) { ) { props[propName] = config[propName]; } - } // Resolve default props + } - if (type && type.defaultProps) { - var defaultProps = type.defaultProps; + if (!disableDefaultPropsExceptForClasses) { + // Resolve default props + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; - for (propName in defaultProps) { - if (props[propName] === undefined) { - props[propName] = defaultProps[propName]; + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } } } } diff --git a/compiled/facebook-www/JSXDEVRuntime-dev.modern.js b/compiled/facebook-www/JSXDEVRuntime-dev.modern.js index 332d026130..fed4994b37 100644 --- a/compiled/facebook-www/JSXDEVRuntime-dev.modern.js +++ b/compiled/facebook-www/JSXDEVRuntime-dev.modern.js @@ -109,8 +109,9 @@ if (__DEV__) { var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing, enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, - enableRefAsProp = dynamicFeatureFlags.enableRefAsProp; - // On WWW, true is used for a new modern build. + enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, true is used for a new modern build. function getWrappedName(outerType, innerType, wrapperName) { var displayName = outerType.displayName; @@ -1231,14 +1232,17 @@ if (__DEV__) { ) { props[propName] = config[propName]; } - } // Resolve default props + } - if (type && type.defaultProps) { - var defaultProps = type.defaultProps; + if (!disableDefaultPropsExceptForClasses) { + // Resolve default props + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; - for (propName in defaultProps) { - if (props[propName] === undefined) { - props[propName] = defaultProps[propName]; + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } } } } diff --git a/compiled/facebook-www/REVISION b/compiled/facebook-www/REVISION index d223277239..efcac2c6f9 100644 --- a/compiled/facebook-www/REVISION +++ b/compiled/facebook-www/REVISION @@ -1 +1 @@ -6090cab099a8f7f373e04c7eb2937425a8f80f80 +48b4ecc9012638ed51b275aad24b2086b8215e32 diff --git a/compiled/facebook-www/React-dev.classic.js b/compiled/facebook-www/React-dev.classic.js index b9d62d12e7..2afafcfb99 100644 --- a/compiled/facebook-www/React-dev.classic.js +++ b/compiled/facebook-www/React-dev.classic.js @@ -24,7 +24,7 @@ if (__DEV__) { ) { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); } - var ReactVersion = "19.0.0-www-classic-308d9210"; + var ReactVersion = "19.0.0-www-classic-b9e0eea7"; // ATTENTION // When adding new symbols to this file, @@ -475,8 +475,9 @@ if (__DEV__) { var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing, enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, - enableRefAsProp = dynamicFeatureFlags.enableRefAsProp; - // On WWW, false is used for a new modern build. + enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, false is used for a new modern build. var disableLegacyMode = false; function getWrappedName(outerType, innerType, wrapperName) { @@ -1639,14 +1640,17 @@ if (__DEV__) { ) { props[propName] = config[propName]; } - } // Resolve default props + } - if (type && type.defaultProps) { - var defaultProps = type.defaultProps; + if (!disableDefaultPropsExceptForClasses) { + // Resolve default props + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; - for (propName in defaultProps) { - if (props[propName] === undefined) { - props[propName] = defaultProps[propName]; + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } } } } @@ -1906,7 +1910,11 @@ if (__DEV__) { var defaultProps; - if (element.type && element.type.defaultProps) { + if ( + !disableDefaultPropsExceptForClasses && + element.type && + element.type.defaultProps + ) { defaultProps = element.type.defaultProps; } @@ -1926,7 +1934,11 @@ if (__DEV__) { // backwards compatibility. !(enableRefAsProp && propName === "ref" && config.ref === undefined) ) { - if (config[propName] === undefined && defaultProps !== undefined) { + if ( + !disableDefaultPropsExceptForClasses && + config[propName] === undefined && + defaultProps !== undefined + ) { // Resolve default props props[propName] = defaultProps[propName]; } else { @@ -2765,55 +2777,35 @@ if (__DEV__) { _init: lazyInitializer }; - { - // In production, this would just set it on the object. - var defaultProps; - var propTypes; // $FlowFixMe[prop-missing] + if (!disableDefaultPropsExceptForClasses) { + { + // In production, this would just set it on the object. + var defaultProps; // $FlowFixMe[prop-missing] - Object.defineProperties(lazyType, { - defaultProps: { - configurable: true, - get: function () { - return defaultProps; - }, - // $FlowFixMe[missing-local-annot] - set: function (newDefaultProps) { - error( - "It is not supported to assign `defaultProps` to " + - "a lazy component import. Either specify them where the component " + - "is defined, or create a wrapping component around it." - ); + Object.defineProperties(lazyType, { + defaultProps: { + configurable: true, + get: function () { + return defaultProps; + }, + // $FlowFixMe[missing-local-annot] + set: function (newDefaultProps) { + error( + "It is not supported to assign `defaultProps` to " + + "a lazy component import. Either specify them where the component " + + "is defined, or create a wrapping component around it." + ); - defaultProps = newDefaultProps; // Match production behavior more closely: - // $FlowFixMe[prop-missing] + defaultProps = newDefaultProps; // Match production behavior more closely: + // $FlowFixMe[prop-missing] - Object.defineProperty(lazyType, "defaultProps", { - enumerable: true - }); + Object.defineProperty(lazyType, "defaultProps", { + enumerable: true + }); + } } - }, - propTypes: { - configurable: true, - get: function () { - return propTypes; - }, - // $FlowFixMe[missing-local-annot] - set: function (newPropTypes) { - error( - "It is not supported to assign `propTypes` to " + - "a lazy component import. Either specify them where the component " + - "is defined, or create a wrapping component around it." - ); - - propTypes = newPropTypes; // Match production behavior more closely: - // $FlowFixMe[prop-missing] - - Object.defineProperty(lazyType, "propTypes", { - enumerable: true - }); - } - } - }); + }); + } } return lazyType; diff --git a/compiled/facebook-www/React-dev.modern.js b/compiled/facebook-www/React-dev.modern.js index fbbd44a46a..e81bca2033 100644 --- a/compiled/facebook-www/React-dev.modern.js +++ b/compiled/facebook-www/React-dev.modern.js @@ -24,7 +24,7 @@ if (__DEV__) { ) { __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error()); } - var ReactVersion = "19.0.0-www-modern-3e52800d"; + var ReactVersion = "19.0.0-www-modern-3a8173ed"; // ATTENTION // When adding new symbols to this file, @@ -475,8 +475,9 @@ if (__DEV__) { var enableDebugTracing = dynamicFeatureFlags.enableDebugTracing, enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, - enableRefAsProp = dynamicFeatureFlags.enableRefAsProp; - // On WWW, true is used for a new modern build. + enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, true is used for a new modern build. var disableLegacyMode = true; function getWrappedName(outerType, innerType, wrapperName) { @@ -1639,14 +1640,17 @@ if (__DEV__) { ) { props[propName] = config[propName]; } - } // Resolve default props + } - if (type && type.defaultProps) { - var defaultProps = type.defaultProps; + if (!disableDefaultPropsExceptForClasses) { + // Resolve default props + if (type && type.defaultProps) { + var defaultProps = type.defaultProps; - for (propName in defaultProps) { - if (props[propName] === undefined) { - props[propName] = defaultProps[propName]; + for (propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } } } } @@ -1906,7 +1910,11 @@ if (__DEV__) { var defaultProps; - if (element.type && element.type.defaultProps) { + if ( + !disableDefaultPropsExceptForClasses && + element.type && + element.type.defaultProps + ) { defaultProps = element.type.defaultProps; } @@ -1926,7 +1934,11 @@ if (__DEV__) { // backwards compatibility. !(enableRefAsProp && propName === "ref" && config.ref === undefined) ) { - if (config[propName] === undefined && defaultProps !== undefined) { + if ( + !disableDefaultPropsExceptForClasses && + config[propName] === undefined && + defaultProps !== undefined + ) { // Resolve default props props[propName] = defaultProps[propName]; } else { @@ -2765,55 +2777,35 @@ if (__DEV__) { _init: lazyInitializer }; - { - // In production, this would just set it on the object. - var defaultProps; - var propTypes; // $FlowFixMe[prop-missing] + if (!disableDefaultPropsExceptForClasses) { + { + // In production, this would just set it on the object. + var defaultProps; // $FlowFixMe[prop-missing] - Object.defineProperties(lazyType, { - defaultProps: { - configurable: true, - get: function () { - return defaultProps; - }, - // $FlowFixMe[missing-local-annot] - set: function (newDefaultProps) { - error( - "It is not supported to assign `defaultProps` to " + - "a lazy component import. Either specify them where the component " + - "is defined, or create a wrapping component around it." - ); + Object.defineProperties(lazyType, { + defaultProps: { + configurable: true, + get: function () { + return defaultProps; + }, + // $FlowFixMe[missing-local-annot] + set: function (newDefaultProps) { + error( + "It is not supported to assign `defaultProps` to " + + "a lazy component import. Either specify them where the component " + + "is defined, or create a wrapping component around it." + ); - defaultProps = newDefaultProps; // Match production behavior more closely: - // $FlowFixMe[prop-missing] + defaultProps = newDefaultProps; // Match production behavior more closely: + // $FlowFixMe[prop-missing] - Object.defineProperty(lazyType, "defaultProps", { - enumerable: true - }); + Object.defineProperty(lazyType, "defaultProps", { + enumerable: true + }); + } } - }, - propTypes: { - configurable: true, - get: function () { - return propTypes; - }, - // $FlowFixMe[missing-local-annot] - set: function (newPropTypes) { - error( - "It is not supported to assign `propTypes` to " + - "a lazy component import. Either specify them where the component " + - "is defined, or create a wrapping component around it." - ); - - propTypes = newPropTypes; // Match production behavior more closely: - // $FlowFixMe[prop-missing] - - Object.defineProperty(lazyType, "propTypes", { - enumerable: true - }); - } - } - }); + }); + } } return lazyType; diff --git a/compiled/facebook-www/React-prod.classic.js b/compiled/facebook-www/React-prod.classic.js index 313635748a..1321fa9560 100644 --- a/compiled/facebook-www/React-prod.classic.js +++ b/compiled/facebook-www/React-prod.classic.js @@ -85,6 +85,8 @@ var isArrayImpl = Array.isArray, enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, ReactCurrentDispatcher = { current: null }, ReactCurrentCache = { current: null }, ReactCurrentBatchConfig = { transition: null }, @@ -121,7 +123,7 @@ function jsxProd(type, config, maybeKey) { "key" !== propName && (enableRefAsProp || "ref" !== propName) && (props[propName] = config[propName]); - if (type && type.defaultProps) + if (!disableDefaultPropsExceptForClasses && type && type.defaultProps) for (propName in ((config = type.defaultProps), config)) void 0 === props[propName] && (props[propName] = config[propName]); return ReactElement( @@ -429,7 +431,11 @@ exports.cloneElement = function (element, config, children) { (enableRefAsProp || (ref = config.ref), (owner = ReactCurrentOwner.current)); void 0 !== config.key && (key = "" + config.key); - if (element.type && element.type.defaultProps) + if ( + !disableDefaultPropsExceptForClasses && + element.type && + element.type.defaultProps + ) var defaultProps = element.type.defaultProps; for (propName in config) !hasOwnProperty.call(config, propName) || @@ -439,9 +445,11 @@ exports.cloneElement = function (element, config, children) { "__source" === propName || (enableRefAsProp && "ref" === propName && void 0 === config.ref) || (props[propName] = - void 0 === config[propName] && void 0 !== defaultProps - ? defaultProps[propName] - : config[propName]); + disableDefaultPropsExceptForClasses || + void 0 !== config[propName] || + void 0 === defaultProps + ? config[propName] + : defaultProps[propName]); } var propName = arguments.length - 2; if (1 === propName) props.children = children; @@ -644,4 +652,4 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactCurrentDispatcher.current.useTransition(); }; -exports.version = "19.0.0-www-classic-1ba025a1"; +exports.version = "19.0.0-www-classic-6f7d270a"; diff --git a/compiled/facebook-www/React-prod.modern.js b/compiled/facebook-www/React-prod.modern.js index 4a6a84496d..992e6e6900 100644 --- a/compiled/facebook-www/React-prod.modern.js +++ b/compiled/facebook-www/React-prod.modern.js @@ -85,6 +85,8 @@ var isArrayImpl = Array.isArray, enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, ReactCurrentDispatcher = { current: null }, ReactCurrentCache = { current: null }, ReactCurrentBatchConfig = { transition: null }, @@ -121,7 +123,7 @@ function jsxProd(type, config, maybeKey) { "key" !== propName && (enableRefAsProp || "ref" !== propName) && (props[propName] = config[propName]); - if (type && type.defaultProps) + if (!disableDefaultPropsExceptForClasses && type && type.defaultProps) for (propName in ((config = type.defaultProps), config)) void 0 === props[propName] && (props[propName] = config[propName]); return ReactElement( @@ -429,7 +431,11 @@ exports.cloneElement = function (element, config, children) { (enableRefAsProp || (ref = config.ref), (owner = ReactCurrentOwner.current)); void 0 !== config.key && (key = "" + config.key); - if (element.type && element.type.defaultProps) + if ( + !disableDefaultPropsExceptForClasses && + element.type && + element.type.defaultProps + ) var defaultProps = element.type.defaultProps; for (propName in config) !hasOwnProperty.call(config, propName) || @@ -439,9 +445,11 @@ exports.cloneElement = function (element, config, children) { "__source" === propName || (enableRefAsProp && "ref" === propName && void 0 === config.ref) || (props[propName] = - void 0 === config[propName] && void 0 !== defaultProps - ? defaultProps[propName] - : config[propName]); + disableDefaultPropsExceptForClasses || + void 0 !== config[propName] || + void 0 === defaultProps + ? config[propName] + : defaultProps[propName]); } var propName = arguments.length - 2; if (1 === propName) props.children = children; @@ -644,4 +652,4 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactCurrentDispatcher.current.useTransition(); }; -exports.version = "19.0.0-www-modern-1ba025a1"; +exports.version = "19.0.0-www-modern-6f7d270a"; diff --git a/compiled/facebook-www/React-profiling.classic.js b/compiled/facebook-www/React-profiling.classic.js index 08b76e2c05..45d8fb65fe 100644 --- a/compiled/facebook-www/React-profiling.classic.js +++ b/compiled/facebook-www/React-profiling.classic.js @@ -89,6 +89,8 @@ var isArrayImpl = Array.isArray, enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, ReactCurrentDispatcher = { current: null }, ReactCurrentCache = { current: null }, ReactCurrentBatchConfig = { transition: null }, @@ -125,7 +127,7 @@ function jsxProd(type, config, maybeKey) { "key" !== propName && (enableRefAsProp || "ref" !== propName) && (props[propName] = config[propName]); - if (type && type.defaultProps) + if (!disableDefaultPropsExceptForClasses && type && type.defaultProps) for (propName in ((config = type.defaultProps), config)) void 0 === props[propName] && (props[propName] = config[propName]); return ReactElement( @@ -433,7 +435,11 @@ exports.cloneElement = function (element, config, children) { (enableRefAsProp || (ref = config.ref), (owner = ReactCurrentOwner.current)); void 0 !== config.key && (key = "" + config.key); - if (element.type && element.type.defaultProps) + if ( + !disableDefaultPropsExceptForClasses && + element.type && + element.type.defaultProps + ) var defaultProps = element.type.defaultProps; for (propName in config) !hasOwnProperty.call(config, propName) || @@ -443,9 +449,11 @@ exports.cloneElement = function (element, config, children) { "__source" === propName || (enableRefAsProp && "ref" === propName && void 0 === config.ref) || (props[propName] = - void 0 === config[propName] && void 0 !== defaultProps - ? defaultProps[propName] - : config[propName]); + disableDefaultPropsExceptForClasses || + void 0 !== config[propName] || + void 0 === defaultProps + ? config[propName] + : defaultProps[propName]); } var propName = arguments.length - 2; if (1 === propName) props.children = children; @@ -648,7 +656,7 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactCurrentDispatcher.current.useTransition(); }; -exports.version = "19.0.0-www-classic-fc935265"; +exports.version = "19.0.0-www-classic-26c19df2"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/compiled/facebook-www/React-profiling.modern.js b/compiled/facebook-www/React-profiling.modern.js index f733a6bd50..4ef4a951e7 100644 --- a/compiled/facebook-www/React-profiling.modern.js +++ b/compiled/facebook-www/React-profiling.modern.js @@ -89,6 +89,8 @@ var isArrayImpl = Array.isArray, enableTransitionTracing = dynamicFeatureFlags.enableTransitionTracing, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, ReactCurrentDispatcher = { current: null }, ReactCurrentCache = { current: null }, ReactCurrentBatchConfig = { transition: null }, @@ -125,7 +127,7 @@ function jsxProd(type, config, maybeKey) { "key" !== propName && (enableRefAsProp || "ref" !== propName) && (props[propName] = config[propName]); - if (type && type.defaultProps) + if (!disableDefaultPropsExceptForClasses && type && type.defaultProps) for (propName in ((config = type.defaultProps), config)) void 0 === props[propName] && (props[propName] = config[propName]); return ReactElement( @@ -433,7 +435,11 @@ exports.cloneElement = function (element, config, children) { (enableRefAsProp || (ref = config.ref), (owner = ReactCurrentOwner.current)); void 0 !== config.key && (key = "" + config.key); - if (element.type && element.type.defaultProps) + if ( + !disableDefaultPropsExceptForClasses && + element.type && + element.type.defaultProps + ) var defaultProps = element.type.defaultProps; for (propName in config) !hasOwnProperty.call(config, propName) || @@ -443,9 +449,11 @@ exports.cloneElement = function (element, config, children) { "__source" === propName || (enableRefAsProp && "ref" === propName && void 0 === config.ref) || (props[propName] = - void 0 === config[propName] && void 0 !== defaultProps - ? defaultProps[propName] - : config[propName]); + disableDefaultPropsExceptForClasses || + void 0 !== config[propName] || + void 0 === defaultProps + ? config[propName] + : defaultProps[propName]); } var propName = arguments.length - 2; if (1 === propName) props.children = children; @@ -648,7 +656,7 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactCurrentDispatcher.current.useTransition(); }; -exports.version = "19.0.0-www-modern-fc935265"; +exports.version = "19.0.0-www-modern-26c19df2"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/compiled/facebook-www/ReactART-dev.classic.js b/compiled/facebook-www/ReactART-dev.classic.js index 362c3ffc83..e2a97177ee 100644 --- a/compiled/facebook-www/ReactART-dev.classic.js +++ b/compiled/facebook-www/ReactART-dev.classic.js @@ -66,7 +66,7 @@ if (__DEV__) { return self; } - var ReactVersion = "19.0.0-www-classic-086110c8"; + var ReactVersion = "19.0.0-www-classic-e11823db"; var LegacyRoot = 0; var ConcurrentRoot = 1; @@ -185,8 +185,9 @@ if (__DEV__) { enableInfiniteRenderLoopDetection = dynamicFeatureFlags.enableInfiniteRenderLoopDetection, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, - enableRefAsProp = dynamicFeatureFlags.enableRefAsProp; - // On WWW, false is used for a new modern build. + enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, false is used for a new modern build. var enableProfilerTimer = true; var enableProfilerCommitHooks = true; var enableProfilerNestedUpdatePhase = true; @@ -14497,7 +14498,11 @@ if (__DEV__) { var defaultProps = Component.defaultProps; - if (defaultProps && !alreadyResolvedDefaultProps) { + if ( + defaultProps && // If disableDefaultPropsExceptForClasses is true, we always resolve + // default props here in the reconciler, rather than in the JSX runtime. + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in defaultProps) { @@ -14521,10 +14526,13 @@ if (__DEV__) { return newProps; } - function resolveDefaultProps(Component, baseProps) { - // TODO: Remove support for default props for everything except class - // components, including setting default props on a lazy wrapper around a - // class type. + function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) { + // Support for defaultProps is removed in React 19 for all types + // except classes. + return baseProps; + } + if (Component && Component.defaultProps) { // Resolve default props. Taken from ReactElement var props = assign({}, baseProps); @@ -15550,7 +15558,8 @@ if (__DEV__) { if ( isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either. - Component.defaultProps === undefined + (disableDefaultPropsExceptForClasses || + Component.defaultProps === undefined) ) { var resolvedType = type; @@ -15576,18 +15585,21 @@ if (__DEV__) { ); } - { - if (Component.defaultProps !== undefined) { - var componentName = getComponentNameFromType(type) || "Unknown"; + if (!disableDefaultPropsExceptForClasses) { + { + if (Component.defaultProps !== undefined) { + var componentName = getComponentNameFromType(type) || "Unknown"; - if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { - error( - "%s: Support for defaultProps will be removed from memo components " + - "in a future major release. Use JavaScript default parameters instead.", - componentName - ); + if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { + error( + "%s: Support for defaultProps will be removed from memo components " + + "in a future major release. Use JavaScript default parameters instead.", + componentName + ); - didWarnAboutDefaultPropsOnFunctionComponent[componentName] = true; + didWarnAboutDefaultPropsOnFunctionComponent[componentName] = + true; + } } } } @@ -16663,7 +16675,9 @@ if (__DEV__) { renderLanes ); } else { - var _resolvedProps = resolveDefaultProps(Component, props); + var _resolvedProps = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = FunctionComponent; @@ -16685,7 +16699,9 @@ if (__DEV__) { var $$typeof = Component.$$typeof; if ($$typeof === REACT_FORWARD_REF_TYPE) { - var _resolvedProps2 = resolveDefaultProps(Component, props); + var _resolvedProps2 = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = ForwardRef; @@ -16702,14 +16718,21 @@ if (__DEV__) { renderLanes ); } else if ($$typeof === REACT_MEMO_TYPE) { - var _resolvedProps3 = resolveDefaultProps(Component, props); + var _resolvedProps3 = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = MemoComponent; return updateMemoComponent( null, workInProgress, Component, - resolveDefaultProps(Component.type, _resolvedProps3), // The inner type can have defaults too + disableDefaultPropsExceptForClasses + ? _resolvedProps3 + : resolveDefaultPropsOnNonClassComponent( + Component.type, + _resolvedProps3 + ), // The inner type can have defaults too renderLanes ); } @@ -16808,7 +16831,10 @@ if (__DEV__) { } } - if (Component.defaultProps !== undefined) { + if ( + !disableDefaultPropsExceptForClasses && + Component.defaultProps !== undefined + ) { var _componentName = getComponentNameFromType(Component) || "Unknown"; if (!didWarnAboutDefaultPropsOnFunctionComponent[_componentName]) { @@ -18724,9 +18750,13 @@ if (__DEV__) { var Component = workInProgress.type; var unresolvedProps = workInProgress.pendingProps; var resolvedProps = + disableDefaultPropsExceptForClasses || workInProgress.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + Component, + unresolvedProps + ); return updateFunctionComponent( current, workInProgress, @@ -18783,9 +18813,10 @@ if (__DEV__) { var _unresolvedProps2 = workInProgress.pendingProps; var _resolvedProps5 = + disableDefaultPropsExceptForClasses || workInProgress.elementType === type ? _unresolvedProps2 - : resolveDefaultProps(type, _unresolvedProps2); + : resolveDefaultPropsOnNonClassComponent(type, _unresolvedProps2); return updateForwardRef( current, @@ -18815,9 +18846,16 @@ if (__DEV__) { var _type = workInProgress.type; var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props. - var _resolvedProps6 = resolveDefaultProps(_type, _unresolvedProps3); + var _resolvedProps6 = disableDefaultPropsExceptForClasses + ? _unresolvedProps3 + : resolveDefaultPropsOnNonClassComponent(_type, _unresolvedProps3); - _resolvedProps6 = resolveDefaultProps(_type.type, _resolvedProps6); + _resolvedProps6 = disableDefaultPropsExceptForClasses + ? _resolvedProps6 + : resolveDefaultPropsOnNonClassComponent( + _type.type, + _resolvedProps6 + ); return updateMemoComponent( current, workInProgress, @@ -27653,9 +27691,13 @@ if (__DEV__) { var Component = unitOfWork.type; var unresolvedProps = unitOfWork.pendingProps; var resolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + Component, + unresolvedProps + ); var context; { @@ -27687,9 +27729,13 @@ if (__DEV__) { var _unresolvedProps = unitOfWork.pendingProps; var _resolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === _Component ? _unresolvedProps - : resolveDefaultProps(_Component, _unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + _Component, + _unresolvedProps + ); next = replayFunctionComponent( current, diff --git a/compiled/facebook-www/ReactART-dev.modern.js b/compiled/facebook-www/ReactART-dev.modern.js index 474b60b528..231de1c158 100644 --- a/compiled/facebook-www/ReactART-dev.modern.js +++ b/compiled/facebook-www/ReactART-dev.modern.js @@ -66,7 +66,7 @@ if (__DEV__) { return self; } - var ReactVersion = "19.0.0-www-modern-792ee5bd"; + var ReactVersion = "19.0.0-www-modern-ab20b5da"; var LegacyRoot = 0; var ConcurrentRoot = 1; @@ -185,8 +185,9 @@ if (__DEV__) { enableInfiniteRenderLoopDetection = dynamicFeatureFlags.enableInfiniteRenderLoopDetection, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, - enableRefAsProp = dynamicFeatureFlags.enableRefAsProp; - // On WWW, true is used for a new modern build. + enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, true is used for a new modern build. var enableProfilerTimer = true; var enableProfilerCommitHooks = true; var enableProfilerNestedUpdatePhase = true; @@ -14207,7 +14208,11 @@ if (__DEV__) { var defaultProps = Component.defaultProps; - if (defaultProps && !alreadyResolvedDefaultProps) { + if ( + defaultProps && // If disableDefaultPropsExceptForClasses is true, we always resolve + // default props here in the reconciler, rather than in the JSX runtime. + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in defaultProps) { @@ -14231,10 +14236,13 @@ if (__DEV__) { return newProps; } - function resolveDefaultProps(Component, baseProps) { - // TODO: Remove support for default props for everything except class - // components, including setting default props on a lazy wrapper around a - // class type. + function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) { + // Support for defaultProps is removed in React 19 for all types + // except classes. + return baseProps; + } + if (Component && Component.defaultProps) { // Resolve default props. Taken from ReactElement var props = assign({}, baseProps); @@ -15164,7 +15172,8 @@ if (__DEV__) { if ( isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either. - Component.defaultProps === undefined + (disableDefaultPropsExceptForClasses || + Component.defaultProps === undefined) ) { var resolvedType = type; @@ -15190,18 +15199,21 @@ if (__DEV__) { ); } - { - if (Component.defaultProps !== undefined) { - var componentName = getComponentNameFromType(type) || "Unknown"; + if (!disableDefaultPropsExceptForClasses) { + { + if (Component.defaultProps !== undefined) { + var componentName = getComponentNameFromType(type) || "Unknown"; - if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { - error( - "%s: Support for defaultProps will be removed from memo components " + - "in a future major release. Use JavaScript default parameters instead.", - componentName - ); + if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { + error( + "%s: Support for defaultProps will be removed from memo components " + + "in a future major release. Use JavaScript default parameters instead.", + componentName + ); - didWarnAboutDefaultPropsOnFunctionComponent[componentName] = true; + didWarnAboutDefaultPropsOnFunctionComponent[componentName] = + true; + } } } } @@ -16215,7 +16227,9 @@ if (__DEV__) { renderLanes ); } else { - var _resolvedProps = resolveDefaultProps(Component, props); + var _resolvedProps = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = FunctionComponent; @@ -16237,7 +16251,9 @@ if (__DEV__) { var $$typeof = Component.$$typeof; if ($$typeof === REACT_FORWARD_REF_TYPE) { - var _resolvedProps2 = resolveDefaultProps(Component, props); + var _resolvedProps2 = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = ForwardRef; @@ -16254,14 +16270,21 @@ if (__DEV__) { renderLanes ); } else if ($$typeof === REACT_MEMO_TYPE) { - var _resolvedProps3 = resolveDefaultProps(Component, props); + var _resolvedProps3 = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = MemoComponent; return updateMemoComponent( null, workInProgress, Component, - resolveDefaultProps(Component.type, _resolvedProps3), // The inner type can have defaults too + disableDefaultPropsExceptForClasses + ? _resolvedProps3 + : resolveDefaultPropsOnNonClassComponent( + Component.type, + _resolvedProps3 + ), // The inner type can have defaults too renderLanes ); } @@ -16324,7 +16347,10 @@ if (__DEV__) { } } - if (Component.defaultProps !== undefined) { + if ( + !disableDefaultPropsExceptForClasses && + Component.defaultProps !== undefined + ) { var _componentName = getComponentNameFromType(Component) || "Unknown"; if (!didWarnAboutDefaultPropsOnFunctionComponent[_componentName]) { @@ -18150,9 +18176,13 @@ if (__DEV__) { var Component = workInProgress.type; var unresolvedProps = workInProgress.pendingProps; var resolvedProps = + disableDefaultPropsExceptForClasses || workInProgress.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + Component, + unresolvedProps + ); return updateFunctionComponent( current, workInProgress, @@ -18209,9 +18239,10 @@ if (__DEV__) { var _unresolvedProps2 = workInProgress.pendingProps; var _resolvedProps5 = + disableDefaultPropsExceptForClasses || workInProgress.elementType === type ? _unresolvedProps2 - : resolveDefaultProps(type, _unresolvedProps2); + : resolveDefaultPropsOnNonClassComponent(type, _unresolvedProps2); return updateForwardRef( current, @@ -18241,9 +18272,16 @@ if (__DEV__) { var _type = workInProgress.type; var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props. - var _resolvedProps6 = resolveDefaultProps(_type, _unresolvedProps3); + var _resolvedProps6 = disableDefaultPropsExceptForClasses + ? _unresolvedProps3 + : resolveDefaultPropsOnNonClassComponent(_type, _unresolvedProps3); - _resolvedProps6 = resolveDefaultProps(_type.type, _resolvedProps6); + _resolvedProps6 = disableDefaultPropsExceptForClasses + ? _resolvedProps6 + : resolveDefaultPropsOnNonClassComponent( + _type.type, + _resolvedProps6 + ); return updateMemoComponent( current, workInProgress, @@ -26860,9 +26898,13 @@ if (__DEV__) { var Component = unitOfWork.type; var unresolvedProps = unitOfWork.pendingProps; var resolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + Component, + unresolvedProps + ); var context; next = replayFunctionComponent( @@ -26885,9 +26927,13 @@ if (__DEV__) { var _unresolvedProps = unitOfWork.pendingProps; var _resolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === _Component ? _unresolvedProps - : resolveDefaultProps(_Component, _unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + _Component, + _unresolvedProps + ); next = replayFunctionComponent( current, diff --git a/compiled/facebook-www/ReactART-prod.classic.js b/compiled/facebook-www/ReactART-prod.classic.js index 660322869e..13dbf26912 100644 --- a/compiled/facebook-www/ReactART-prod.classic.js +++ b/compiled/facebook-www/ReactART-prod.classic.js @@ -84,6 +84,8 @@ var ReactSharedInternals = dynamicFeatureFlags.enableInfiniteRenderLoopDetection, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, REACT_ELEMENT_TYPE = Symbol.for("react.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), @@ -3962,7 +3964,10 @@ function resolveClassComponentProps( alreadyResolvedDefaultProps ) { var newProps = baseProps; - if ((Component = Component.defaultProps) && !alreadyResolvedDefaultProps) { + if ( + (Component = Component.defaultProps) && + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in Component) void 0 === newProps[propName] && @@ -3974,7 +3979,8 @@ function resolveClassComponentProps( delete newProps.ref); return newProps; } -function resolveDefaultProps(Component, baseProps) { +function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) return baseProps; if (Component && Component.defaultProps) { baseProps = assign({}, baseProps); Component = Component.defaultProps; @@ -4433,7 +4439,7 @@ function updateMemoComponent( !shouldConstruct(type) && void 0 === type.defaultProps && null === Component.compare && - void 0 === Component.defaultProps + (disableDefaultPropsExceptForClasses || void 0 === Component.defaultProps) ) return ( (workInProgress.tag = 15), @@ -5638,7 +5644,9 @@ function beginWork(current, workInProgress, renderLanes) { props, renderLanes ))) - : ((props = resolveDefaultProps(current, props)), + : ((props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props)), (workInProgress.tag = 0), (workInProgress = updateFunctionComponent( null, @@ -5653,7 +5661,9 @@ function beginWork(current, workInProgress, renderLanes) { ((elementType = current.$$typeof), elementType === REACT_FORWARD_REF_TYPE) ) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 11; workInProgress = updateForwardRef( null, @@ -5664,13 +5674,17 @@ function beginWork(current, workInProgress, renderLanes) { ); break a; } else if (elementType === REACT_MEMO_TYPE) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 14; workInProgress = updateMemoComponent( null, workInProgress, current, - resolveDefaultProps(current.type, props), + disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current.type, props), renderLanes ); break a; @@ -5684,9 +5698,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (elementType = workInProgress.pendingProps), (elementType = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? elementType - : resolveDefaultProps(props, elementType)), + : resolveDefaultPropsOnNonClassComponent(props, elementType)), updateFunctionComponent( current, workInProgress, @@ -5801,9 +5816,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (elementType = workInProgress.pendingProps), (elementType = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? elementType - : resolveDefaultProps(props, elementType)), + : resolveDefaultPropsOnNonClassComponent(props, elementType)), updateForwardRef( current, workInProgress, @@ -5890,8 +5906,13 @@ function beginWork(current, workInProgress, renderLanes) { case 14: return ( (props = workInProgress.type), - (elementType = resolveDefaultProps(props, workInProgress.pendingProps)), - (elementType = resolveDefaultProps(props.type, elementType)), + (elementType = workInProgress.pendingProps), + (elementType = disableDefaultPropsExceptForClasses + ? elementType + : resolveDefaultPropsOnNonClassComponent(props, elementType)), + (elementType = disableDefaultPropsExceptForClasses + ? elementType + : resolveDefaultPropsOnNonClassComponent(props.type, elementType)), updateMemoComponent( current, workInProgress, @@ -9672,9 +9693,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { var Component = unitOfWork.type, unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); var context = isContextProvider(Component) ? previousContext : contextStackCursor$1.current; @@ -9692,9 +9714,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { Component = unitOfWork.type.render; unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); current = replayFunctionComponent( current, unitOfWork, @@ -10673,7 +10696,7 @@ var slice = Array.prototype.slice, return null; }, bundleType: 0, - version: "19.0.0-www-classic-55d59959", + version: "19.0.0-www-classic-442df77a", rendererPackageName: "react-art" }; var internals$jscomp$inline_1317 = { @@ -10704,7 +10727,7 @@ var internals$jscomp$inline_1317 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "19.0.0-www-classic-55d59959" + reconcilerVersion: "19.0.0-www-classic-442df77a" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_1318 = __REACT_DEVTOOLS_GLOBAL_HOOK__; diff --git a/compiled/facebook-www/ReactART-prod.modern.js b/compiled/facebook-www/ReactART-prod.modern.js index dbbb82279f..ffe1fd3530 100644 --- a/compiled/facebook-www/ReactART-prod.modern.js +++ b/compiled/facebook-www/ReactART-prod.modern.js @@ -84,6 +84,8 @@ var ReactSharedInternals = dynamicFeatureFlags.enableInfiniteRenderLoopDetection, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, REACT_ELEMENT_TYPE = Symbol.for("react.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), @@ -3698,7 +3700,10 @@ function resolveClassComponentProps( alreadyResolvedDefaultProps ) { var newProps = baseProps; - if ((Component = Component.defaultProps) && !alreadyResolvedDefaultProps) { + if ( + (Component = Component.defaultProps) && + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in Component) void 0 === newProps[propName] && @@ -3710,7 +3715,8 @@ function resolveClassComponentProps( delete newProps.ref); return newProps; } -function resolveDefaultProps(Component, baseProps) { +function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) return baseProps; if (Component && Component.defaultProps) { baseProps = assign({}, baseProps); Component = Component.defaultProps; @@ -4129,7 +4135,7 @@ function updateMemoComponent( !shouldConstruct(type) && void 0 === type.defaultProps && null === Component.compare && - void 0 === Component.defaultProps + (disableDefaultPropsExceptForClasses || void 0 === Component.defaultProps) ) return ( (workInProgress.tag = 15), @@ -5302,7 +5308,9 @@ function beginWork(current, workInProgress, renderLanes) { props, renderLanes ))) - : ((props = resolveDefaultProps(current, props)), + : ((props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props)), (workInProgress.tag = 0), (workInProgress = updateFunctionComponent( null, @@ -5314,7 +5322,9 @@ function beginWork(current, workInProgress, renderLanes) { else { if (void 0 !== current && null !== current) if (((init = current.$$typeof), init === REACT_FORWARD_REF_TYPE)) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 11; workInProgress = updateForwardRef( null, @@ -5325,13 +5335,17 @@ function beginWork(current, workInProgress, renderLanes) { ); break a; } else if (init === REACT_MEMO_TYPE) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 14; workInProgress = updateMemoComponent( null, workInProgress, current, - resolveDefaultProps(current.type, props), + disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current.type, props), renderLanes ); break a; @@ -5345,9 +5359,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (init = workInProgress.pendingProps), (init = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? init - : resolveDefaultProps(props, init)), + : resolveDefaultPropsOnNonClassComponent(props, init)), updateFunctionComponent( current, workInProgress, @@ -5456,9 +5471,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (init = workInProgress.pendingProps), (init = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? init - : resolveDefaultProps(props, init)), + : resolveDefaultPropsOnNonClassComponent(props, init)), updateForwardRef(current, workInProgress, props, init, renderLanes) ); case 7: @@ -5531,8 +5547,13 @@ function beginWork(current, workInProgress, renderLanes) { case 14: return ( (props = workInProgress.type), - (init = resolveDefaultProps(props, workInProgress.pendingProps)), - (init = resolveDefaultProps(props.type, init)), + (init = workInProgress.pendingProps), + (init = disableDefaultPropsExceptForClasses + ? init + : resolveDefaultPropsOnNonClassComponent(props, init)), + (init = disableDefaultPropsExceptForClasses + ? init + : resolveDefaultPropsOnNonClassComponent(props.type, init)), updateMemoComponent(current, workInProgress, props, init, renderLanes) ); case 15: @@ -9195,9 +9216,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { var Component = unitOfWork.type, unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); current = replayFunctionComponent( current, unitOfWork, @@ -9211,9 +9233,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { Component = unitOfWork.type.render; unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); current = replayFunctionComponent( current, unitOfWork, @@ -10145,7 +10168,7 @@ var slice = Array.prototype.slice, return null; }, bundleType: 0, - version: "19.0.0-www-modern-c8d23bec", + version: "19.0.0-www-modern-292e1686", rendererPackageName: "react-art" }; var internals$jscomp$inline_1298 = { @@ -10176,7 +10199,7 @@ var internals$jscomp$inline_1298 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "19.0.0-www-modern-c8d23bec" + reconcilerVersion: "19.0.0-www-modern-292e1686" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_1299 = __REACT_DEVTOOLS_GLOBAL_HOOK__; diff --git a/compiled/facebook-www/ReactDOM-dev.classic.js b/compiled/facebook-www/ReactDOM-dev.classic.js index 0ed1a3295d..2da877e887 100644 --- a/compiled/facebook-www/ReactDOM-dev.classic.js +++ b/compiled/facebook-www/ReactDOM-dev.classic.js @@ -149,7 +149,9 @@ if (__DEV__) { enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, favorSafetyOverHydrationPerf = - dynamicFeatureFlags.favorSafetyOverHydrationPerf; // On WWW, false is used for a new modern build. + dynamicFeatureFlags.favorSafetyOverHydrationPerf, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, false is used for a new modern build. var enableProfilerTimer = true; var enableProfilerCommitHooks = true; var enableProfilerNestedUpdatePhase = true; @@ -19148,7 +19150,11 @@ if (__DEV__) { var defaultProps = Component.defaultProps; - if (defaultProps && !alreadyResolvedDefaultProps) { + if ( + defaultProps && // If disableDefaultPropsExceptForClasses is true, we always resolve + // default props here in the reconciler, rather than in the JSX runtime. + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in defaultProps) { @@ -19172,10 +19178,13 @@ if (__DEV__) { return newProps; } - function resolveDefaultProps(Component, baseProps) { - // TODO: Remove support for default props for everything except class - // components, including setting default props on a lazy wrapper around a - // class type. + function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) { + // Support for defaultProps is removed in React 19 for all types + // except classes. + return baseProps; + } + if (Component && Component.defaultProps) { // Resolve default props. Taken from ReactElement var props = assign({}, baseProps); @@ -20337,7 +20346,8 @@ if (__DEV__) { if ( isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either. - Component.defaultProps === undefined + (disableDefaultPropsExceptForClasses || + Component.defaultProps === undefined) ) { var resolvedType = type; @@ -20363,18 +20373,21 @@ if (__DEV__) { ); } - { - if (Component.defaultProps !== undefined) { - var componentName = getComponentNameFromType(type) || "Unknown"; + if (!disableDefaultPropsExceptForClasses) { + { + if (Component.defaultProps !== undefined) { + var componentName = getComponentNameFromType(type) || "Unknown"; - if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { - error( - "%s: Support for defaultProps will be removed from memo components " + - "in a future major release. Use JavaScript default parameters instead.", - componentName - ); + if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { + error( + "%s: Support for defaultProps will be removed from memo components " + + "in a future major release. Use JavaScript default parameters instead.", + componentName + ); - didWarnAboutDefaultPropsOnFunctionComponent[componentName] = true; + didWarnAboutDefaultPropsOnFunctionComponent[componentName] = + true; + } } } } @@ -21604,7 +21617,9 @@ if (__DEV__) { renderLanes ); } else { - var _resolvedProps = resolveDefaultProps(Component, props); + var _resolvedProps = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = FunctionComponent; @@ -21626,7 +21641,9 @@ if (__DEV__) { var $$typeof = Component.$$typeof; if ($$typeof === REACT_FORWARD_REF_TYPE) { - var _resolvedProps2 = resolveDefaultProps(Component, props); + var _resolvedProps2 = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = ForwardRef; @@ -21643,14 +21660,21 @@ if (__DEV__) { renderLanes ); } else if ($$typeof === REACT_MEMO_TYPE) { - var _resolvedProps3 = resolveDefaultProps(Component, props); + var _resolvedProps3 = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = MemoComponent; return updateMemoComponent( null, workInProgress, Component, - resolveDefaultProps(Component.type, _resolvedProps3), // The inner type can have defaults too + disableDefaultPropsExceptForClasses + ? _resolvedProps3 + : resolveDefaultPropsOnNonClassComponent( + Component.type, + _resolvedProps3 + ), // The inner type can have defaults too renderLanes ); } @@ -21749,7 +21773,10 @@ if (__DEV__) { } } - if (Component.defaultProps !== undefined) { + if ( + !disableDefaultPropsExceptForClasses && + Component.defaultProps !== undefined + ) { var _componentName = getComponentNameFromType(Component) || "Unknown"; if (!didWarnAboutDefaultPropsOnFunctionComponent[_componentName]) { @@ -23753,9 +23780,13 @@ if (__DEV__) { var Component = workInProgress.type; var unresolvedProps = workInProgress.pendingProps; var resolvedProps = + disableDefaultPropsExceptForClasses || workInProgress.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + Component, + unresolvedProps + ); return updateFunctionComponent( current, workInProgress, @@ -23816,9 +23847,10 @@ if (__DEV__) { var _unresolvedProps2 = workInProgress.pendingProps; var _resolvedProps5 = + disableDefaultPropsExceptForClasses || workInProgress.elementType === type ? _unresolvedProps2 - : resolveDefaultProps(type, _unresolvedProps2); + : resolveDefaultPropsOnNonClassComponent(type, _unresolvedProps2); return updateForwardRef( current, @@ -23848,9 +23880,16 @@ if (__DEV__) { var _type = workInProgress.type; var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props. - var _resolvedProps6 = resolveDefaultProps(_type, _unresolvedProps3); + var _resolvedProps6 = disableDefaultPropsExceptForClasses + ? _unresolvedProps3 + : resolveDefaultPropsOnNonClassComponent(_type, _unresolvedProps3); - _resolvedProps6 = resolveDefaultProps(_type.type, _resolvedProps6); + _resolvedProps6 = disableDefaultPropsExceptForClasses + ? _resolvedProps6 + : resolveDefaultPropsOnNonClassComponent( + _type.type, + _resolvedProps6 + ); return updateMemoComponent( current, workInProgress, @@ -33300,9 +33339,13 @@ if (__DEV__) { var Component = unitOfWork.type; var unresolvedProps = unitOfWork.pendingProps; var resolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + Component, + unresolvedProps + ); var context; { @@ -33334,9 +33377,13 @@ if (__DEV__) { var _unresolvedProps = unitOfWork.pendingProps; var _resolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === _Component ? _unresolvedProps - : resolveDefaultProps(_Component, _unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + _Component, + _unresolvedProps + ); next = replayFunctionComponent( current, @@ -36213,7 +36260,7 @@ if (__DEV__) { return root; } - var ReactVersion = "19.0.0-www-classic-cd5ebeba"; + var ReactVersion = "19.0.0-www-classic-82184e0e"; function createPortal$1( children, diff --git a/compiled/facebook-www/ReactDOM-dev.modern.js b/compiled/facebook-www/ReactDOM-dev.modern.js index ebe081f39b..e2aca2db89 100644 --- a/compiled/facebook-www/ReactDOM-dev.modern.js +++ b/compiled/facebook-www/ReactDOM-dev.modern.js @@ -164,7 +164,9 @@ if (__DEV__) { enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, favorSafetyOverHydrationPerf = - dynamicFeatureFlags.favorSafetyOverHydrationPerf; // On WWW, true is used for a new modern build. + dynamicFeatureFlags.favorSafetyOverHydrationPerf, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, true is used for a new modern build. var enableProfilerTimer = true; var enableProfilerCommitHooks = true; var enableProfilerNestedUpdatePhase = true; @@ -29308,7 +29310,11 @@ if (__DEV__) { var defaultProps = Component.defaultProps; - if (defaultProps && !alreadyResolvedDefaultProps) { + if ( + defaultProps && // If disableDefaultPropsExceptForClasses is true, we always resolve + // default props here in the reconciler, rather than in the JSX runtime. + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in defaultProps) { @@ -29332,10 +29338,13 @@ if (__DEV__) { return newProps; } - function resolveDefaultProps(Component, baseProps) { - // TODO: Remove support for default props for everything except class - // components, including setting default props on a lazy wrapper around a - // class type. + function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) { + // Support for defaultProps is removed in React 19 for all types + // except classes. + return baseProps; + } + if (Component && Component.defaultProps) { // Resolve default props. Taken from ReactElement var props = assign({}, baseProps); @@ -30362,7 +30371,8 @@ if (__DEV__) { if ( isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either. - Component.defaultProps === undefined + (disableDefaultPropsExceptForClasses || + Component.defaultProps === undefined) ) { var resolvedType = type; @@ -30388,18 +30398,21 @@ if (__DEV__) { ); } - { - if (Component.defaultProps !== undefined) { - var componentName = getComponentNameFromType(type) || "Unknown"; + if (!disableDefaultPropsExceptForClasses) { + { + if (Component.defaultProps !== undefined) { + var componentName = getComponentNameFromType(type) || "Unknown"; - if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { - error( - "%s: Support for defaultProps will be removed from memo components " + - "in a future major release. Use JavaScript default parameters instead.", - componentName - ); + if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { + error( + "%s: Support for defaultProps will be removed from memo components " + + "in a future major release. Use JavaScript default parameters instead.", + componentName + ); - didWarnAboutDefaultPropsOnFunctionComponent[componentName] = true; + didWarnAboutDefaultPropsOnFunctionComponent[componentName] = + true; + } } } } @@ -31567,7 +31580,9 @@ if (__DEV__) { renderLanes ); } else { - var _resolvedProps = resolveDefaultProps(Component, props); + var _resolvedProps = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = FunctionComponent; @@ -31589,7 +31604,9 @@ if (__DEV__) { var $$typeof = Component.$$typeof; if ($$typeof === REACT_FORWARD_REF_TYPE) { - var _resolvedProps2 = resolveDefaultProps(Component, props); + var _resolvedProps2 = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = ForwardRef; @@ -31606,14 +31623,21 @@ if (__DEV__) { renderLanes ); } else if ($$typeof === REACT_MEMO_TYPE) { - var _resolvedProps3 = resolveDefaultProps(Component, props); + var _resolvedProps3 = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(Component, props); workInProgress.tag = MemoComponent; return updateMemoComponent( null, workInProgress, Component, - resolveDefaultProps(Component.type, _resolvedProps3), // The inner type can have defaults too + disableDefaultPropsExceptForClasses + ? _resolvedProps3 + : resolveDefaultPropsOnNonClassComponent( + Component.type, + _resolvedProps3 + ), // The inner type can have defaults too renderLanes ); } @@ -31676,7 +31700,10 @@ if (__DEV__) { } } - if (Component.defaultProps !== undefined) { + if ( + !disableDefaultPropsExceptForClasses && + Component.defaultProps !== undefined + ) { var _componentName = getComponentNameFromType(Component) || "Unknown"; if (!didWarnAboutDefaultPropsOnFunctionComponent[_componentName]) { @@ -33590,9 +33617,13 @@ if (__DEV__) { var Component = workInProgress.type; var unresolvedProps = workInProgress.pendingProps; var resolvedProps = + disableDefaultPropsExceptForClasses || workInProgress.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + Component, + unresolvedProps + ); return updateFunctionComponent( current, workInProgress, @@ -33653,9 +33684,10 @@ if (__DEV__) { var _unresolvedProps2 = workInProgress.pendingProps; var _resolvedProps5 = + disableDefaultPropsExceptForClasses || workInProgress.elementType === type ? _unresolvedProps2 - : resolveDefaultProps(type, _unresolvedProps2); + : resolveDefaultPropsOnNonClassComponent(type, _unresolvedProps2); return updateForwardRef( current, @@ -33685,9 +33717,16 @@ if (__DEV__) { var _type = workInProgress.type; var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props. - var _resolvedProps6 = resolveDefaultProps(_type, _unresolvedProps3); + var _resolvedProps6 = disableDefaultPropsExceptForClasses + ? _unresolvedProps3 + : resolveDefaultPropsOnNonClassComponent(_type, _unresolvedProps3); - _resolvedProps6 = resolveDefaultProps(_type.type, _resolvedProps6); + _resolvedProps6 = disableDefaultPropsExceptForClasses + ? _resolvedProps6 + : resolveDefaultPropsOnNonClassComponent( + _type.type, + _resolvedProps6 + ); return updateMemoComponent( current, workInProgress, @@ -42902,9 +42941,13 @@ if (__DEV__) { var Component = unitOfWork.type; var unresolvedProps = unitOfWork.pendingProps; var resolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + Component, + unresolvedProps + ); var context; next = replayFunctionComponent( @@ -42927,9 +42970,13 @@ if (__DEV__) { var _unresolvedProps = unitOfWork.pendingProps; var _resolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === _Component ? _unresolvedProps - : resolveDefaultProps(_Component, _unresolvedProps); + : resolveDefaultPropsOnNonClassComponent( + _Component, + _unresolvedProps + ); next = replayFunctionComponent( current, @@ -45707,7 +45754,7 @@ if (__DEV__) { return root; } - var ReactVersion = "19.0.0-www-modern-b12aa191"; + var ReactVersion = "19.0.0-www-modern-bedb0a17"; function createPortal$1( children, diff --git a/compiled/facebook-www/ReactDOM-prod.classic.js b/compiled/facebook-www/ReactDOM-prod.classic.js index 91d4449cd8..1ab5ec53f5 100644 --- a/compiled/facebook-www/ReactDOM-prod.classic.js +++ b/compiled/facebook-www/ReactDOM-prod.classic.js @@ -62,6 +62,8 @@ var ReactSharedInternals = enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, REACT_ELEMENT_TYPE = Symbol.for("react.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), @@ -4803,7 +4805,10 @@ function resolveClassComponentProps( alreadyResolvedDefaultProps ) { var newProps = baseProps; - if ((Component = Component.defaultProps) && !alreadyResolvedDefaultProps) { + if ( + (Component = Component.defaultProps) && + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in Component) void 0 === newProps[propName] && @@ -4815,7 +4820,8 @@ function resolveClassComponentProps( delete newProps.ref); return newProps; } -function resolveDefaultProps(Component, baseProps) { +function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) return baseProps; if (Component && Component.defaultProps) { baseProps = assign({}, baseProps); Component = Component.defaultProps; @@ -5347,7 +5353,7 @@ function updateMemoComponent( !shouldConstruct(type) && void 0 === type.defaultProps && null === Component.compare && - void 0 === Component.defaultProps + (disableDefaultPropsExceptForClasses || void 0 === Component.defaultProps) ) return ( (workInProgress.tag = 15), @@ -6656,7 +6662,9 @@ function beginWork(current, workInProgress, renderLanes) { props, renderLanes ))) - : ((props = resolveDefaultProps(current, props)), + : ((props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props)), (workInProgress.tag = 0), (workInProgress = updateFunctionComponent( null, @@ -6671,7 +6679,9 @@ function beginWork(current, workInProgress, renderLanes) { ((elementType = current.$$typeof), elementType === REACT_FORWARD_REF_TYPE) ) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 11; workInProgress = updateForwardRef( null, @@ -6682,13 +6692,17 @@ function beginWork(current, workInProgress, renderLanes) { ); break a; } else if (elementType === REACT_MEMO_TYPE) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 14; workInProgress = updateMemoComponent( null, workInProgress, current, - resolveDefaultProps(current.type, props), + disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current.type, props), renderLanes ); break a; @@ -6702,9 +6716,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (elementType = workInProgress.pendingProps), (elementType = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? elementType - : resolveDefaultProps(props, elementType)), + : resolveDefaultPropsOnNonClassComponent(props, elementType)), updateFunctionComponent( current, workInProgress, @@ -6956,9 +6971,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (elementType = workInProgress.pendingProps), (elementType = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? elementType - : resolveDefaultProps(props, elementType)), + : resolveDefaultPropsOnNonClassComponent(props, elementType)), updateForwardRef( current, workInProgress, @@ -7045,8 +7061,13 @@ function beginWork(current, workInProgress, renderLanes) { case 14: return ( (props = workInProgress.type), - (elementType = resolveDefaultProps(props, workInProgress.pendingProps)), - (elementType = resolveDefaultProps(props.type, elementType)), + (elementType = workInProgress.pendingProps), + (elementType = disableDefaultPropsExceptForClasses + ? elementType + : resolveDefaultPropsOnNonClassComponent(props, elementType)), + (elementType = disableDefaultPropsExceptForClasses + ? elementType + : resolveDefaultPropsOnNonClassComponent(props.type, elementType)), updateMemoComponent( current, workInProgress, @@ -11502,9 +11523,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { var Component = unitOfWork.type, unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); var context = isContextProvider(Component) ? previousContext : contextStackCursor.current; @@ -11522,9 +11544,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { Component = unitOfWork.type.render; unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); current = replayFunctionComponent( current, unitOfWork, @@ -16993,7 +17016,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1704 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "19.0.0-www-classic-83138ece", + version: "19.0.0-www-classic-6a77288c", rendererPackageName: "react-dom" }; var internals$jscomp$inline_2134 = { @@ -17023,7 +17046,7 @@ var internals$jscomp$inline_2134 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "19.0.0-www-classic-83138ece" + reconcilerVersion: "19.0.0-www-classic-6a77288c" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2135 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -17479,4 +17502,4 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactCurrentDispatcher$2.current.useHostTransitionStatus(); }; -exports.version = "19.0.0-www-classic-83138ece"; +exports.version = "19.0.0-www-classic-6a77288c"; diff --git a/compiled/facebook-www/ReactDOM-prod.modern.js b/compiled/facebook-www/ReactDOM-prod.modern.js index d4a4a83d51..b5aa706558 100644 --- a/compiled/facebook-www/ReactDOM-prod.modern.js +++ b/compiled/facebook-www/ReactDOM-prod.modern.js @@ -78,6 +78,8 @@ var ReactSharedInternals = enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, REACT_ELEMENT_TYPE = Symbol.for("react.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), @@ -8356,7 +8358,10 @@ function resolveClassComponentProps( alreadyResolvedDefaultProps ) { var newProps = baseProps; - if ((Component = Component.defaultProps) && !alreadyResolvedDefaultProps) { + if ( + (Component = Component.defaultProps) && + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in Component) void 0 === newProps[propName] && @@ -8368,7 +8373,8 @@ function resolveClassComponentProps( delete newProps.ref); return newProps; } -function resolveDefaultProps(Component, baseProps) { +function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) return baseProps; if (Component && Component.defaultProps) { baseProps = assign({}, baseProps); Component = Component.defaultProps; @@ -8803,7 +8809,7 @@ function updateMemoComponent( !shouldConstruct(type) && void 0 === type.defaultProps && null === Component.compare && - void 0 === Component.defaultProps + (disableDefaultPropsExceptForClasses || void 0 === Component.defaultProps) ) return ( (workInProgress.tag = 15), @@ -10073,7 +10079,9 @@ function beginWork(current, workInProgress, renderLanes) { props, renderLanes ))) - : ((props = resolveDefaultProps(current, props)), + : ((props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props)), (workInProgress.tag = 0), (workInProgress = updateFunctionComponent( null, @@ -10085,7 +10093,9 @@ function beginWork(current, workInProgress, renderLanes) { else { if (void 0 !== current && null !== current) if (((init = current.$$typeof), init === REACT_FORWARD_REF_TYPE)) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 11; workInProgress = updateForwardRef( null, @@ -10096,13 +10106,17 @@ function beginWork(current, workInProgress, renderLanes) { ); break a; } else if (init === REACT_MEMO_TYPE) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 14; workInProgress = updateMemoComponent( null, workInProgress, current, - resolveDefaultProps(current.type, props), + disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current.type, props), renderLanes ); break a; @@ -10116,9 +10130,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (init = workInProgress.pendingProps), (init = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? init - : resolveDefaultProps(props, init)), + : resolveDefaultPropsOnNonClassComponent(props, init)), updateFunctionComponent( current, workInProgress, @@ -10367,9 +10382,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (init = workInProgress.pendingProps), (init = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? init - : resolveDefaultProps(props, init)), + : resolveDefaultPropsOnNonClassComponent(props, init)), updateForwardRef(current, workInProgress, props, init, renderLanes) ); case 7: @@ -10442,8 +10458,13 @@ function beginWork(current, workInProgress, renderLanes) { case 14: return ( (props = workInProgress.type), - (init = resolveDefaultProps(props, workInProgress.pendingProps)), - (init = resolveDefaultProps(props.type, init)), + (init = workInProgress.pendingProps), + (init = disableDefaultPropsExceptForClasses + ? init + : resolveDefaultPropsOnNonClassComponent(props, init)), + (init = disableDefaultPropsExceptForClasses + ? init + : resolveDefaultPropsOnNonClassComponent(props.type, init)), updateMemoComponent(current, workInProgress, props, init, renderLanes) ); case 15: @@ -14786,9 +14807,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { var Component = unitOfWork.type, unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); current = replayFunctionComponent( current, unitOfWork, @@ -14802,9 +14824,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { Component = unitOfWork.type.render; unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); current = replayFunctionComponent( current, unitOfWork, @@ -16368,7 +16391,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1687 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "19.0.0-www-modern-8cca1f01", + version: "19.0.0-www-modern-182c8cda", rendererPackageName: "react-dom" }; var internals$jscomp$inline_2114 = { @@ -16398,7 +16421,7 @@ var internals$jscomp$inline_2114 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "19.0.0-www-modern-8cca1f01" + reconcilerVersion: "19.0.0-www-modern-182c8cda" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2115 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -16701,4 +16724,4 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactCurrentDispatcher$2.current.useHostTransitionStatus(); }; -exports.version = "19.0.0-www-modern-8cca1f01"; +exports.version = "19.0.0-www-modern-182c8cda"; diff --git a/compiled/facebook-www/ReactDOM-profiling.classic.js b/compiled/facebook-www/ReactDOM-profiling.classic.js index 93ebac46cc..26b40e0491 100644 --- a/compiled/facebook-www/ReactDOM-profiling.classic.js +++ b/compiled/facebook-www/ReactDOM-profiling.classic.js @@ -66,6 +66,8 @@ var ReactSharedInternals = enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, enableSchedulingProfiler = dynamicFeatureFlags.enableSchedulingProfiler, REACT_ELEMENT_TYPE = Symbol.for("react.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), @@ -5011,7 +5013,10 @@ function resolveClassComponentProps( alreadyResolvedDefaultProps ) { var newProps = baseProps; - if ((Component = Component.defaultProps) && !alreadyResolvedDefaultProps) { + if ( + (Component = Component.defaultProps) && + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in Component) void 0 === newProps[propName] && @@ -5023,7 +5028,8 @@ function resolveClassComponentProps( delete newProps.ref); return newProps; } -function resolveDefaultProps(Component, baseProps) { +function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) return baseProps; if (Component && Component.defaultProps) { baseProps = assign({}, baseProps); Component = Component.defaultProps; @@ -5558,7 +5564,7 @@ function updateMemoComponent( !shouldConstruct(type) && void 0 === type.defaultProps && null === Component.compare && - void 0 === Component.defaultProps + (disableDefaultPropsExceptForClasses || void 0 === Component.defaultProps) ) return ( (workInProgress.tag = 15), @@ -6898,7 +6904,9 @@ function beginWork(current, workInProgress, renderLanes) { props, renderLanes ))) - : ((props = resolveDefaultProps(current, props)), + : ((props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props)), (workInProgress.tag = 0), (workInProgress = updateFunctionComponent( null, @@ -6913,7 +6921,9 @@ function beginWork(current, workInProgress, renderLanes) { ((elementType = current.$$typeof), elementType === REACT_FORWARD_REF_TYPE) ) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 11; workInProgress = updateForwardRef( null, @@ -6924,13 +6934,17 @@ function beginWork(current, workInProgress, renderLanes) { ); break a; } else if (elementType === REACT_MEMO_TYPE) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 14; workInProgress = updateMemoComponent( null, workInProgress, current, - resolveDefaultProps(current.type, props), + disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current.type, props), renderLanes ); break a; @@ -6944,9 +6958,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (elementType = workInProgress.pendingProps), (elementType = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? elementType - : resolveDefaultProps(props, elementType)), + : resolveDefaultPropsOnNonClassComponent(props, elementType)), updateFunctionComponent( current, workInProgress, @@ -7198,9 +7213,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (elementType = workInProgress.pendingProps), (elementType = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? elementType - : resolveDefaultProps(props, elementType)), + : resolveDefaultPropsOnNonClassComponent(props, elementType)), updateForwardRef( current, workInProgress, @@ -7293,8 +7309,13 @@ function beginWork(current, workInProgress, renderLanes) { case 14: return ( (props = workInProgress.type), - (elementType = resolveDefaultProps(props, workInProgress.pendingProps)), - (elementType = resolveDefaultProps(props.type, elementType)), + (elementType = workInProgress.pendingProps), + (elementType = disableDefaultPropsExceptForClasses + ? elementType + : resolveDefaultPropsOnNonClassComponent(props, elementType)), + (elementType = disableDefaultPropsExceptForClasses + ? elementType + : resolveDefaultPropsOnNonClassComponent(props.type, elementType)), updateMemoComponent( current, workInProgress, @@ -12165,9 +12186,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { var Component = unitOfWork.type, unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); var context = isContextProvider(Component) ? previousContext : contextStackCursor.current; @@ -12185,9 +12207,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { Component = unitOfWork.type.render; unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); current = replayFunctionComponent( current, unitOfWork, @@ -17741,7 +17764,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1790 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "19.0.0-www-classic-1231a9cb", + version: "19.0.0-www-classic-1006227c", rendererPackageName: "react-dom" }; (function (internals) { @@ -17785,7 +17808,7 @@ var devToolsConfig$jscomp$inline_1790 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "19.0.0-www-classic-1231a9cb" + reconcilerVersion: "19.0.0-www-classic-1006227c" }); var ReactFiberErrorDialogWWW = require("ReactFiberErrorDialog"); if ("function" !== typeof ReactFiberErrorDialogWWW.showErrorDialog) @@ -18228,7 +18251,7 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactCurrentDispatcher$2.current.useHostTransitionStatus(); }; -exports.version = "19.0.0-www-classic-1231a9cb"; +exports.version = "19.0.0-www-classic-1006227c"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/compiled/facebook-www/ReactDOM-profiling.modern.js b/compiled/facebook-www/ReactDOM-profiling.modern.js index 889e9acadc..b5b56a7a11 100644 --- a/compiled/facebook-www/ReactDOM-profiling.modern.js +++ b/compiled/facebook-www/ReactDOM-profiling.modern.js @@ -82,6 +82,8 @@ var ReactSharedInternals = enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, favorSafetyOverHydrationPerf = dynamicFeatureFlags.favorSafetyOverHydrationPerf, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, enableSchedulingProfiler = dynamicFeatureFlags.enableSchedulingProfiler, REACT_ELEMENT_TYPE = Symbol.for("react.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), @@ -8564,7 +8566,10 @@ function resolveClassComponentProps( alreadyResolvedDefaultProps ) { var newProps = baseProps; - if ((Component = Component.defaultProps) && !alreadyResolvedDefaultProps) { + if ( + (Component = Component.defaultProps) && + (disableDefaultPropsExceptForClasses || !alreadyResolvedDefaultProps) + ) { newProps = assign({}, newProps, baseProps); for (var propName in Component) void 0 === newProps[propName] && @@ -8576,7 +8581,8 @@ function resolveClassComponentProps( delete newProps.ref); return newProps; } -function resolveDefaultProps(Component, baseProps) { +function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) return baseProps; if (Component && Component.defaultProps) { baseProps = assign({}, baseProps); Component = Component.defaultProps; @@ -9014,7 +9020,7 @@ function updateMemoComponent( !shouldConstruct(type) && void 0 === type.defaultProps && null === Component.compare && - void 0 === Component.defaultProps + (disableDefaultPropsExceptForClasses || void 0 === Component.defaultProps) ) return ( (workInProgress.tag = 15), @@ -10298,7 +10304,9 @@ function beginWork(current, workInProgress, renderLanes) { props, renderLanes ))) - : ((props = resolveDefaultProps(current, props)), + : ((props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props)), (workInProgress.tag = 0), (workInProgress = updateFunctionComponent( null, @@ -10310,7 +10318,9 @@ function beginWork(current, workInProgress, renderLanes) { else { if (void 0 !== current && null !== current) if (((init = current.$$typeof), init === REACT_FORWARD_REF_TYPE)) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 11; workInProgress = updateForwardRef( null, @@ -10321,13 +10331,17 @@ function beginWork(current, workInProgress, renderLanes) { ); break a; } else if (init === REACT_MEMO_TYPE) { - props = resolveDefaultProps(current, props); + props = disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current, props); workInProgress.tag = 14; workInProgress = updateMemoComponent( null, workInProgress, current, - resolveDefaultProps(current.type, props), + disableDefaultPropsExceptForClasses + ? props + : resolveDefaultPropsOnNonClassComponent(current.type, props), renderLanes ); break a; @@ -10341,9 +10355,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (init = workInProgress.pendingProps), (init = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? init - : resolveDefaultProps(props, init)), + : resolveDefaultPropsOnNonClassComponent(props, init)), updateFunctionComponent( current, workInProgress, @@ -10592,9 +10607,10 @@ function beginWork(current, workInProgress, renderLanes) { (props = workInProgress.type), (init = workInProgress.pendingProps), (init = + disableDefaultPropsExceptForClasses || workInProgress.elementType === props ? init - : resolveDefaultProps(props, init)), + : resolveDefaultPropsOnNonClassComponent(props, init)), updateForwardRef(current, workInProgress, props, init, renderLanes) ); case 7: @@ -10673,8 +10689,13 @@ function beginWork(current, workInProgress, renderLanes) { case 14: return ( (props = workInProgress.type), - (init = resolveDefaultProps(props, workInProgress.pendingProps)), - (init = resolveDefaultProps(props.type, init)), + (init = workInProgress.pendingProps), + (init = disableDefaultPropsExceptForClasses + ? init + : resolveDefaultPropsOnNonClassComponent(props, init)), + (init = disableDefaultPropsExceptForClasses + ? init + : resolveDefaultPropsOnNonClassComponent(props.type, init)), updateMemoComponent(current, workInProgress, props, init, renderLanes) ); case 15: @@ -15432,9 +15453,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { var Component = unitOfWork.type, unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); current = replayFunctionComponent( current, unitOfWork, @@ -15448,9 +15470,10 @@ function replaySuspendedUnitOfWork(unitOfWork) { Component = unitOfWork.type.render; unresolvedProps = unitOfWork.pendingProps; unresolvedProps = + disableDefaultPropsExceptForClasses || unitOfWork.elementType === Component ? unresolvedProps - : resolveDefaultProps(Component, unresolvedProps); + : resolveDefaultPropsOnNonClassComponent(Component, unresolvedProps); current = replayFunctionComponent( current, unitOfWork, @@ -17099,7 +17122,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1773 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "19.0.0-www-modern-31fa3d44", + version: "19.0.0-www-modern-89fa1e2e", rendererPackageName: "react-dom" }; (function (internals) { @@ -17143,7 +17166,7 @@ var devToolsConfig$jscomp$inline_1773 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "19.0.0-www-modern-31fa3d44" + reconcilerVersion: "19.0.0-www-modern-89fa1e2e" }); var ReactFiberErrorDialogWWW = require("ReactFiberErrorDialog"); if ("function" !== typeof ReactFiberErrorDialogWWW.showErrorDialog) @@ -17433,7 +17456,7 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactCurrentDispatcher$2.current.useHostTransitionStatus(); }; -exports.version = "19.0.0-www-modern-31fa3d44"; +exports.version = "19.0.0-www-modern-89fa1e2e"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/compiled/facebook-www/ReactDOMServer-dev.classic.js b/compiled/facebook-www/ReactDOMServer-dev.classic.js index 1173987eeb..4405b38f0c 100644 --- a/compiled/facebook-www/ReactDOMServer-dev.classic.js +++ b/compiled/facebook-www/ReactDOMServer-dev.classic.js @@ -19,7 +19,7 @@ if (__DEV__) { var React = require("react"); var ReactDOM = require("react-dom"); - var ReactVersion = "19.0.0-www-classic-6ac6cbda"; + var ReactVersion = "19.0.0-www-classic-de6e54b3"; // This refers to a WWW module. var warningWWW = require("warning"); @@ -678,8 +678,9 @@ if (__DEV__) { enableUseDeferredValueInitialArg = dynamicFeatureFlags.enableUseDeferredValueInitialArg, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, - enableRefAsProp = dynamicFeatureFlags.enableRefAsProp; - // On WWW, false is used for a new modern build. + enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, false is used for a new modern build. // $FlowFixMe[method-unbinding] var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -11997,12 +11998,27 @@ if (__DEV__) { } function resolveClassComponentProps(Component, baseProps) { - var newProps = baseProps; // TODO: This is where defaultProps should be resolved, too. + var newProps = baseProps; // Resolve default props. Taken from old JSX runtime, where this used to live. + + var defaultProps = Component.defaultProps; + + if (defaultProps && disableDefaultPropsExceptForClasses) { + newProps = assign({}, newProps, baseProps); + + for (var propName in defaultProps) { + if (newProps[propName] === undefined) { + newProps[propName] = defaultProps[propName]; + } + } + } if (enableRefAsProp) { // Remove ref from the props object, if it exists. if ("ref" in newProps) { - newProps = assign({}, newProps); + if (newProps === baseProps) { + newProps = assign({}, newProps); + } + delete newProps.ref; } } @@ -12177,7 +12193,10 @@ if (__DEV__) { } } - if (Component.defaultProps !== undefined) { + if ( + !disableDefaultPropsExceptForClasses && + Component.defaultProps !== undefined + ) { var componentName = getComponentNameFromType(Component) || "Unknown"; if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { @@ -12224,7 +12243,13 @@ if (__DEV__) { } } - function resolveDefaultProps(Component, baseProps) { + function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) { + // Support for defaultProps is removed in React 19 for all types + // except classes. + return baseProps; + } + if (Component && Component.defaultProps) { // Resolve default props. Taken from ReactElement var props = assign({}, baseProps); @@ -12290,7 +12315,10 @@ if (__DEV__) { function renderMemo(request, task, keyPath, type, props, ref) { var innerType = type.type; - var resolvedProps = resolveDefaultProps(innerType, props); + var resolvedProps = resolveDefaultPropsOnNonClassComponent( + innerType, + props + ); renderElement(request, task, keyPath, innerType, resolvedProps, ref); } @@ -12354,7 +12382,10 @@ if (__DEV__) { var payload = lazyComponent._payload; var init = lazyComponent._init; var Component = init(payload); - var resolvedProps = resolveDefaultProps(Component, props); + var resolvedProps = resolveDefaultPropsOnNonClassComponent( + Component, + props + ); renderElement(request, task, keyPath, Component, resolvedProps, ref); task.componentStack = previousComponentStack; } diff --git a/compiled/facebook-www/ReactDOMServer-dev.modern.js b/compiled/facebook-www/ReactDOMServer-dev.modern.js index 4976e7a54c..1423248457 100644 --- a/compiled/facebook-www/ReactDOMServer-dev.modern.js +++ b/compiled/facebook-www/ReactDOMServer-dev.modern.js @@ -19,7 +19,7 @@ if (__DEV__) { var React = require("react"); var ReactDOM = require("react-dom"); - var ReactVersion = "19.0.0-www-modern-53247bf3"; + var ReactVersion = "19.0.0-www-modern-5712afa3"; // This refers to a WWW module. var warningWWW = require("warning"); @@ -678,8 +678,9 @@ if (__DEV__) { enableUseDeferredValueInitialArg = dynamicFeatureFlags.enableUseDeferredValueInitialArg, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, - enableRefAsProp = dynamicFeatureFlags.enableRefAsProp; - // On WWW, true is used for a new modern build. + enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses; // On WWW, true is used for a new modern build. // $FlowFixMe[method-unbinding] var hasOwnProperty = Object.prototype.hasOwnProperty; @@ -11900,12 +11901,27 @@ if (__DEV__) { } function resolveClassComponentProps(Component, baseProps) { - var newProps = baseProps; // TODO: This is where defaultProps should be resolved, too. + var newProps = baseProps; // Resolve default props. Taken from old JSX runtime, where this used to live. + + var defaultProps = Component.defaultProps; + + if (defaultProps && disableDefaultPropsExceptForClasses) { + newProps = assign({}, newProps, baseProps); + + for (var propName in defaultProps) { + if (newProps[propName] === undefined) { + newProps[propName] = defaultProps[propName]; + } + } + } if (enableRefAsProp) { // Remove ref from the props object, if it exists. if ("ref" in newProps) { - newProps = assign({}, newProps); + if (newProps === baseProps) { + newProps = assign({}, newProps); + } + delete newProps.ref; } } @@ -12082,7 +12098,10 @@ if (__DEV__) { } } - if (Component.defaultProps !== undefined) { + if ( + !disableDefaultPropsExceptForClasses && + Component.defaultProps !== undefined + ) { var componentName = getComponentNameFromType(Component) || "Unknown"; if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { @@ -12129,7 +12148,13 @@ if (__DEV__) { } } - function resolveDefaultProps(Component, baseProps) { + function resolveDefaultPropsOnNonClassComponent(Component, baseProps) { + if (disableDefaultPropsExceptForClasses) { + // Support for defaultProps is removed in React 19 for all types + // except classes. + return baseProps; + } + if (Component && Component.defaultProps) { // Resolve default props. Taken from ReactElement var props = assign({}, baseProps); @@ -12195,7 +12220,10 @@ if (__DEV__) { function renderMemo(request, task, keyPath, type, props, ref) { var innerType = type.type; - var resolvedProps = resolveDefaultProps(innerType, props); + var resolvedProps = resolveDefaultPropsOnNonClassComponent( + innerType, + props + ); renderElement(request, task, keyPath, innerType, resolvedProps, ref); } @@ -12259,7 +12287,10 @@ if (__DEV__) { var payload = lazyComponent._payload; var init = lazyComponent._init; var Component = init(payload); - var resolvedProps = resolveDefaultProps(Component, props); + var resolvedProps = resolveDefaultPropsOnNonClassComponent( + Component, + props + ); renderElement(request, task, keyPath, Component, resolvedProps, ref); task.componentStack = previousComponentStack; } diff --git a/compiled/facebook-www/ReactDOMServer-prod.classic.js b/compiled/facebook-www/ReactDOMServer-prod.classic.js index 07d531b8de..bd100bb541 100644 --- a/compiled/facebook-www/ReactDOMServer-prod.classic.js +++ b/compiled/facebook-www/ReactDOMServer-prod.classic.js @@ -133,6 +133,8 @@ var assign = Object.assign, dynamicFeatureFlags.enableUseDeferredValueInitialArg, enableRenderableContext = dynamicFeatureFlags.enableRenderableContext, enableRefAsProp = dynamicFeatureFlags.enableRefAsProp, + disableDefaultPropsExceptForClasses = + dynamicFeatureFlags.disableDefaultPropsExceptForClasses, hasOwnProperty = Object.prototype.hasOwnProperty, VALID_ATTRIBUTE_NAME_REGEX = RegExp( "^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$" @@ -2617,16 +2619,16 @@ function createRenderState(resumableState, generateStaticMarkup) { "\x3c/script>" ); bootstrapScriptContent = idPrefix + "P:"; - var JSCompiler_object_inline_segmentPrefix_1629 = idPrefix + "S:"; + var JSCompiler_object_inline_segmentPrefix_1631 = idPrefix + "S:"; idPrefix += "B:"; - var JSCompiler_object_inline_preconnects_1643 = new Set(), - JSCompiler_object_inline_fontPreloads_1644 = new Set(), - JSCompiler_object_inline_highImagePreloads_1645 = new Set(), - JSCompiler_object_inline_styles_1646 = new Map(), - JSCompiler_object_inline_bootstrapScripts_1647 = new Set(), - JSCompiler_object_inline_scripts_1648 = new Set(), - JSCompiler_object_inline_bulkPreloads_1649 = new Set(), - JSCompiler_object_inline_preloads_1650 = { + var JSCompiler_object_inline_preconnects_1645 = new Set(), + JSCompiler_object_inline_fontPreloads_1646 = new Set(), + JSCompiler_object_inline_highImagePreloads_1647 = new Set(), + JSCompiler_object_inline_styles_1648 = new Map(), + JSCompiler_object_inline_bootstrapScripts_1649 = new Set(), + JSCompiler_object_inline_scripts_1650 = new Set(), + JSCompiler_object_inline_bulkPreloads_1651 = new Set(), + JSCompiler_object_inline_preloads_1652 = { images: new Map(), stylesheets: new Map(), scripts: new Map(), @@ -2663,7 +2665,7 @@ function createRenderState(resumableState, generateStaticMarkup) { scriptConfig.moduleScriptResources[href] = null; scriptConfig = []; pushLinkImpl(scriptConfig, props); - JSCompiler_object_inline_bootstrapScripts_1647.add(scriptConfig); + JSCompiler_object_inline_bootstrapScripts_1649.add(scriptConfig); bootstrapChunks.push('