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('