@office-iss/react-native-win32 0.0.0-canary.260 → 0.0.0-canary.262

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.flowconfig +4 -3
  2. package/CHANGELOG.json +37 -1
  3. package/CHANGELOG.md +21 -4
  4. package/Libraries/Animated/nodes/AnimatedObject.js +2 -5
  5. package/Libraries/Animated/nodes/AnimatedProps.js +2 -0
  6. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +0 -3
  7. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +0 -3
  8. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -3
  9. package/Libraries/Components/TextInput/TextInput.js +20 -24
  10. package/Libraries/Components/TextInput/TextInput.win32.js +20 -24
  11. package/Libraries/Components/View/ViewNativeComponent.js +0 -7
  12. package/Libraries/Core/ReactNativeVersion.js +1 -1
  13. package/Libraries/Image/ImageViewNativeComponent.js +0 -3
  14. package/Libraries/Lists/SectionListModern.js +2 -2
  15. package/Libraries/LogBox/Data/LogBoxData.js +8 -14
  16. package/Libraries/Modal/Modal.js +0 -1
  17. package/Libraries/NativeComponent/BaseViewConfig.android.js +6 -0
  18. package/Libraries/NativeComponent/NativeComponentRegistry.js +13 -20
  19. package/Libraries/NativeComponent/StaticViewConfigValidator.js +0 -21
  20. package/Libraries/ReactNative/RendererImplementation.js +2 -2
  21. package/Libraries/Renderer/shims/ReactNativeTypes.js +9 -4
  22. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +3 -3
  23. package/Libraries/StyleSheet/StyleSheetTypes.js +1 -1
  24. package/Libraries/StyleSheet/processBackgroundImage.js +137 -39
  25. package/Libraries/StyleSheet/processBoxShadow.js +1 -1
  26. package/Libraries/StyleSheet/processFilter.js +9 -5
  27. package/Libraries/Text/Text.win32.js +1 -1
  28. package/Libraries/Text/TextNativeComponent.js +0 -6
  29. package/Libraries/Text/TextNativeComponent.win32.js +0 -6
  30. package/Libraries/Utilities/Appearance.js +108 -84
  31. package/Libraries/Utilities/DevLoadingView.js +2 -4
  32. package/Libraries/Utilities/HMRClient.js +1 -1
  33. package/Libraries/Utilities/createPerformanceLogger.js +0 -9
  34. package/Libraries/Utilities/stringifyViewConfig.js +22 -0
  35. package/Libraries/Utilities/useColorScheme.js +3 -3
  36. package/Libraries/promiseRejectionTrackingOptions.js +1 -1
  37. package/index.js +1 -1
  38. package/index.win32.js +1 -1
  39. package/jest/setup.js +0 -4
  40. package/overrides.json +5 -5
  41. package/package.json +13 -13
  42. package/src/private/featureflags/ReactNativeFeatureFlags.js +27 -6
  43. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +5 -2
  44. package/src/private/fusebox/FuseboxSessionObserver.js +42 -0
  45. package/src/private/specs/modules/NativeAppearance.js +3 -3
  46. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +4 -2
  47. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +9 -9
  48. package/src/private/webapis/mutationobserver/MutationObserver.js +4 -2
  49. package/src/private/webapis/mutationobserver/MutationObserverManager.js +19 -10
  50. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +0 -135
  51. package/src/private/specs/modules/NativeDebuggerSessionObserver.js +0 -23
package/.flowconfig CHANGED
@@ -54,8 +54,6 @@
54
54
  .*/node_modules/sample-apps/.*
55
55
  .*/node_modules/playground/.*
56
56
 
57
- ; Ignore templates for 'npx @react-native-community/cli init'
58
- <PROJECT_ROOT>/packages/react-native/template/.*
59
57
  <PROJECT_ROOT>/packages/react-native/sdks/.*
60
58
 
61
59
  ; Ignore the codegen e2e tests
@@ -67,6 +65,9 @@
67
65
  ; Ignore "BUCK" generated dirs
68
66
  <PROJECT_ROOT>/\.buckd/
69
67
 
68
+ ; Ignore cache files
69
+ .*/node_modules/.cache*
70
+
70
71
  ; Ignore the src-win folder - flow files are combined with ones from react-native into the root Libraries folder
71
72
  .*/react-native-win32/src-win/.*
72
73
 
@@ -159,4 +160,4 @@ untyped-import
159
160
  untyped-type-import
160
161
 
161
162
  [version]
162
- ^0.243.0
163
+ ^0.245.0
package/CHANGELOG.json CHANGED
@@ -2,7 +2,43 @@
2
2
  "name": "@office-iss/react-native-win32",
3
3
  "entries": [
4
4
  {
5
- "date": "Wed, 28 Aug 2024 05:14:05 GMT",
5
+ "date": "Sat, 07 Sep 2024 05:13:20 GMT",
6
+ "version": "0.0.0-canary.262",
7
+ "tag": "@office-iss/react-native-win32_v0.0.0-canary.262",
8
+ "comments": {
9
+ "prerelease": [
10
+ {
11
+ "author": "tatianakapos@microsoft.com",
12
+ "package": "@office-iss/react-native-win32",
13
+ "commit": "55e32071ac30a673c7830f717fcbd1a3a228dcff",
14
+ "comment": "switch to optimized text"
15
+ },
16
+ {
17
+ "author": "34109996+chiaramooney@users.noreply.github.com",
18
+ "package": "@office-iss/react-native-win32",
19
+ "commit": "409bf6e085cc1aa6421cff078037f7b3774bd8ec",
20
+ "comment": "Integrate 8/31"
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ {
26
+ "date": "Thu, 05 Sep 2024 05:13:45 GMT",
27
+ "version": "0.0.0-canary.261",
28
+ "tag": "@office-iss/react-native-win32_v0.0.0-canary.261",
29
+ "comments": {
30
+ "prerelease": [
31
+ {
32
+ "author": "34109996+chiaramooney@users.noreply.github.com",
33
+ "package": "@office-iss/react-native-win32",
34
+ "commit": "277d6f06a3e1bf1650cd9d1e7b4f22e0619968e9",
35
+ "comment": "Integrate 8/20"
36
+ }
37
+ ]
38
+ }
39
+ },
40
+ {
41
+ "date": "Wed, 28 Aug 2024 05:14:44 GMT",
6
42
  "version": "0.0.0-canary.260",
7
43
  "tag": "@office-iss/react-native-win32_v0.0.0-canary.260",
8
44
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,17 +1,34 @@
1
1
  # Change Log - @office-iss/react-native-win32
2
2
 
3
- This log was last generated on Wed, 28 Aug 2024 05:14:05 GMT and should not be manually modified.
3
+ <!-- This log was last generated on Sat, 07 Sep 2024 05:13:20 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## 0.0.0-canary.260
7
+ ## 0.0.0-canary.262
8
8
 
9
- Wed, 28 Aug 2024 05:14:05 GMT
9
+ Sat, 07 Sep 2024 05:13:20 GMT
10
10
 
11
11
  ### Changes
12
12
 
13
- - integrate 0.76.0-nightly-20240816-17017d2b8 (tatianakapos@microsoft.com)
13
+ - switch to optimized text (tatianakapos@microsoft.com)
14
+ - Integrate 8/31 (34109996+chiaramooney@users.noreply.github.com)
14
15
 
16
+ ## 0.0.0-canary.261
17
+
18
+ Thu, 05 Sep 2024 05:13:45 GMT
19
+
20
+ ### Changes
21
+
22
+ - Integrate 8/20 (34109996+chiaramooney@users.noreply.github.com)
23
+
24
+ ## 0.0.0-canary.260
25
+
26
+ Wed, 28 Aug 2024 05:14:44 GMT
27
+
28
+ ### Changes
29
+
30
+ - integrate 0.76.0-nightly-20240816-17017d2b8 (tatianakapos@microsoft.com)
31
+
15
32
  ## 0.0.0-canary.259
16
33
 
17
34
  Thu, 22 Aug 2024 05:24:27 GMT
@@ -23,7 +23,8 @@ function isPlainObject(value: any): boolean {
23
23
  return (
24
24
  value !== null &&
25
25
  typeof value === 'object' &&
26
- Object.getPrototypeOf(value).isPrototypeOf(Object)
26
+ Object.getPrototypeOf(value).isPrototypeOf(Object) &&
27
+ !React.isValidElement(value)
27
28
  );
28
29
  }
29
30
 
@@ -81,10 +82,6 @@ export function hasAnimatedNode(value: any, depth: number = 0): boolean {
81
82
  }
82
83
  }
83
84
  } else if (isPlainObject(value)) {
84
- // Don't consider React elements
85
- if (React.isValidElement(value)) {
86
- return false;
87
- }
88
85
  for (const key in value) {
89
86
  if (hasAnimatedNode(value[key], depth + 1)) {
90
87
  return true;
@@ -88,6 +88,8 @@ export default class AnimatedProps extends AnimatedNode {
88
88
  if (this.__isNative && this._animatedView) {
89
89
  this.__disconnectAnimatedView();
90
90
  }
91
+ this._animatedView = null;
92
+
91
93
  for (const key in this._props) {
92
94
  const value = this._props[key];
93
95
  if (value instanceof AnimatedNode) {
@@ -25,9 +25,6 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {
25
25
  disableIntervalMomentum: true,
26
26
  maintainVisibleContentPosition: true,
27
27
  endFillColor: {process: require('../../StyleSheet/processColor').default},
28
- experimental_boxShadow: {
29
- process: require('../../StyleSheet/processBoxShadow').default,
30
- },
31
28
  fadingEdgeLength: true,
32
29
  nestedScrollEnabled: true,
33
30
  overScrollMode: true,
@@ -46,9 +46,6 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
46
46
  },
47
47
  decelerationRate: true,
48
48
  enableSyncOnScroll: true, // Fabric only.
49
- experimental_boxShadow: {
50
- process: require('../../StyleSheet/processBoxShadow').default,
51
- },
52
49
  disableIntervalMomentum: true,
53
50
  maintainVisibleContentPosition: true,
54
51
  pagingEnabled: true,
@@ -739,9 +739,6 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig = {
739
739
  },
740
740
  borderTopLeftRadius: true,
741
741
  borderTopColor: {process: require('../../StyleSheet/processColor').default},
742
- experimental_boxShadow: {
743
- process: require('../../StyleSheet/processBoxShadow').default,
744
- },
745
742
  },
746
743
  };
747
744
 
@@ -1538,15 +1538,26 @@ function InternalTextInput(props: Props): React.Node {
1538
1538
  // Keep the original (potentially nested) style when possible, as React can diff these more efficiently
1539
1539
  let _style = props.style;
1540
1540
  const flattenedStyle = flattenStyle<TextStyleProp>(props.style);
1541
- if (typeof flattenedStyle?.fontWeight === 'number') {
1542
- _style = [
1543
- _style,
1544
- {
1545
- fontWeight:
1546
- // $FlowFixMe[incompatible-cast]
1547
- (flattenedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']),
1548
- },
1549
- ];
1541
+ if (flattenedStyle != null) {
1542
+ let overrides: ?{...TextStyleInternal} = null;
1543
+ if (typeof flattenedStyle?.fontWeight === 'number') {
1544
+ overrides = overrides || ({}: {...TextStyleInternal});
1545
+ overrides.fontWeight =
1546
+ // $FlowFixMe[incompatible-cast]
1547
+ (flattenedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']);
1548
+ }
1549
+
1550
+ if (flattenedStyle.verticalAlign != null) {
1551
+ overrides = overrides || ({}: {...TextStyleInternal});
1552
+ overrides.textAlignVertical =
1553
+ verticalAlignToTextAlignVerticalMap[flattenedStyle.verticalAlign];
1554
+ overrides.verticalAlign = undefined;
1555
+ }
1556
+
1557
+ if (overrides != null) {
1558
+ // $FlowFixMe[incompatible-type]
1559
+ _style = [_style, overrides];
1560
+ }
1550
1561
  }
1551
1562
 
1552
1563
  if (Platform.OS === 'ios') {
@@ -1782,20 +1793,6 @@ const ExportedForwardRef: React.AbstractComponent<
1782
1793
  },
1783
1794
  forwardedRef: ReactRefSetter<TextInputInstance>,
1784
1795
  ) {
1785
- // $FlowFixMe[underconstrained-implicit-instantiation]
1786
- let style = flattenStyle(restProps.style);
1787
-
1788
- if (style?.verticalAlign != null) {
1789
- // $FlowFixMe[prop-missing]
1790
- // $FlowFixMe[cannot-write]
1791
- style.textAlignVertical =
1792
- // $FlowFixMe[invalid-computed-prop]
1793
- verticalAlignToTextAlignVerticalMap[style.verticalAlign];
1794
- // $FlowFixMe[prop-missing]
1795
- // $FlowFixMe[cannot-write]
1796
- delete style.verticalAlign;
1797
- }
1798
-
1799
1796
  return (
1800
1797
  <InternalTextInput
1801
1798
  allowFontScaling={allowFontScaling}
@@ -1832,7 +1829,6 @@ const ExportedForwardRef: React.AbstractComponent<
1832
1829
  }
1833
1830
  {...restProps}
1834
1831
  forwardedRef={forwardedRef}
1835
- style={style}
1836
1832
  />
1837
1833
  );
1838
1834
  });
@@ -1645,15 +1645,26 @@ function InternalTextInput(props: Props): React.Node {
1645
1645
  // Keep the original (potentially nested) style when possible, as React can diff these more efficiently
1646
1646
  let _style = props.style;
1647
1647
  const flattenedStyle = flattenStyle<TextStyleProp>(props.style);
1648
- if (typeof flattenedStyle?.fontWeight === 'number') {
1649
- _style = [
1650
- _style,
1651
- {
1652
- fontWeight:
1653
- // $FlowFixMe[incompatible-cast]
1654
- (flattenedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']),
1655
- },
1656
- ];
1648
+ if (flattenedStyle != null) {
1649
+ let overrides: ?{...TextStyleInternal} = null;
1650
+ if (typeof flattenedStyle?.fontWeight === 'number') {
1651
+ overrides = overrides || ({}: {...TextStyleInternal});
1652
+ overrides.fontWeight =
1653
+ // $FlowFixMe[incompatible-cast]
1654
+ (flattenedStyle.fontWeight.toString(): TextStyleInternal['fontWeight']);
1655
+ }
1656
+
1657
+ if (flattenedStyle.verticalAlign != null) {
1658
+ overrides = overrides || ({}: {...TextStyleInternal});
1659
+ overrides.textAlignVertical =
1660
+ verticalAlignToTextAlignVerticalMap[flattenedStyle.verticalAlign];
1661
+ overrides.verticalAlign = undefined;
1662
+ }
1663
+
1664
+ if (overrides != null) {
1665
+ // $FlowFixMe[incompatible-type]
1666
+ _style = [_style, overrides];
1667
+ }
1657
1668
  }
1658
1669
 
1659
1670
  if (Platform.OS === 'ios') {
@@ -1917,20 +1928,6 @@ const ExportedForwardRef: React.AbstractComponent<
1917
1928
  },
1918
1929
  forwardedRef: ReactRefSetter<TextInputInstance>,
1919
1930
  ) {
1920
- // $FlowFixMe[underconstrained-implicit-instantiation]
1921
- let style = flattenStyle(restProps.style);
1922
-
1923
- if (style?.verticalAlign != null) {
1924
- // $FlowFixMe[prop-missing]
1925
- // $FlowFixMe[cannot-write]
1926
- style.textAlignVertical =
1927
- // $FlowFixMe[invalid-computed-prop]
1928
- verticalAlignToTextAlignVerticalMap[style.verticalAlign];
1929
- // $FlowFixMe[prop-missing]
1930
- // $FlowFixMe[cannot-write]
1931
- delete style.verticalAlign;
1932
- }
1933
-
1934
1931
  return (
1935
1932
  <InternalTextInput
1936
1933
  allowFontScaling={allowFontScaling}
@@ -1966,7 +1963,6 @@ const ExportedForwardRef: React.AbstractComponent<
1966
1963
  }
1967
1964
  {...restProps}
1968
1965
  forwardedRef={forwardedRef}
1969
- style={style}
1970
1966
  />
1971
1967
  );
1972
1968
  });
@@ -94,17 +94,10 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
94
94
  borderBlockStartColor: {
95
95
  process: require('../../StyleSheet/processColor').default,
96
96
  },
97
- experimental_boxShadow: {
98
- process: require('../../StyleSheet/processBoxShadow').default,
99
- },
100
-
101
97
  focusable: true,
102
98
  overflow: true,
103
99
  backfaceVisibility: true,
104
100
  experimental_layoutConformance: true,
105
- experimental_backgroundImage: {
106
- process: require('../../StyleSheet/processBackgroundImage').default,
107
- },
108
101
  },
109
102
  }
110
103
  : {
@@ -17,7 +17,7 @@ const version: $ReadOnly<{
17
17
  major: 0,
18
18
  minor: 76,
19
19
  patch: 0,
20
- prerelease: 'nightly-20240816-17017d2b8',
20
+ prerelease: 'nightly-20240901-305b4357e',
21
21
  };
22
22
 
23
23
  module.exports = {version};
@@ -113,9 +113,6 @@ export const __INTERNAL_VIEW_CONFIG: PartialViewConfig =
113
113
  borderBottomRightRadius: true,
114
114
  borderTopRightRadius: true,
115
115
  loadingIndicatorSrc: true,
116
- experimental_boxShadow: {
117
- process: require('../StyleSheet/processBoxShadow').default,
118
- },
119
116
  },
120
117
  }
121
118
  : {
@@ -16,7 +16,7 @@ import type {
16
16
  SectionBase as _SectionBase,
17
17
  VirtualizedSectionListProps,
18
18
  } from '@react-native/virtualized-lists';
19
- import type {AbstractComponent, Element, ElementRef} from 'react';
19
+ import type {AbstractComponent, ElementRef} from 'react';
20
20
 
21
21
  import Platform from '../Utilities/Platform';
22
22
  import {VirtualizedSectionList} from '@react-native/virtualized-lists';
@@ -56,7 +56,7 @@ type OptionalProps<SectionT: SectionBase<any>> = {|
56
56
  ...
57
57
  },
58
58
  ...
59
- }) => null | Element<any>,
59
+ }) => null | React.MixedElement,
60
60
  /**
61
61
  * A marker property for telling the list to re-render (since it implements `PureComponent`). If
62
62
  * any of your `renderItem`, Header, Footer, etc. functions depend on anything outside of the
@@ -18,7 +18,7 @@ import type {
18
18
  Message,
19
19
  } from './parseLogBoxLog';
20
20
 
21
- import NativeDebuggerSessionObserver from '../../../src/private/specs/modules/NativeDebuggerSessionObserver';
21
+ import DebuggerSessionObserver from '../../../src/private/fusebox/FuseboxSessionObserver';
22
22
  import parseErrorStack from '../../Core/Devtools/parseErrorStack';
23
23
  import NativeDevSettings from '../../NativeModules/specs/NativeDevSettings';
24
24
  import NativeLogBox from '../../NativeModules/specs/NativeLogBox';
@@ -198,29 +198,23 @@ function appendNewLog(newLog: LogBoxLog) {
198
198
  }
199
199
 
200
200
  export function addLog(log: LogData): void {
201
- if (
202
- hostTargetSessionObserverSubscription == null &&
203
- NativeDebuggerSessionObserver != null
204
- ) {
205
- hostTargetSessionObserverSubscription =
206
- NativeDebuggerSessionObserver.subscribe(hasActiveSession => {
201
+ if (hostTargetSessionObserverSubscription == null) {
202
+ hostTargetSessionObserverSubscription = DebuggerSessionObserver.subscribe(
203
+ hasActiveSession => {
207
204
  if (hasActiveSession) {
208
205
  clearWarnings();
209
206
  } else {
210
207
  // Reset the flag so that we can show the message again if new warning was emitted
211
208
  hasShownFuseboxWarningsMigrationMessage = false;
212
209
  }
213
- });
210
+ },
211
+ );
214
212
  }
215
213
 
216
214
  // If Host has Fusebox support
217
- if (
218
- log.level === 'warn' &&
219
- global.__FUSEBOX_HAS_FULL_CONSOLE_SUPPORT__ &&
220
- NativeDebuggerSessionObserver != null
221
- ) {
215
+ if (log.level === 'warn' && global.__FUSEBOX_HAS_FULL_CONSOLE_SUPPORT__) {
222
216
  // And there is no active debugging session
223
- if (!NativeDebuggerSessionObserver.hasActiveSession()) {
217
+ if (!DebuggerSessionObserver.hasActiveSession()) {
224
218
  showFuseboxWarningsMigrationMessageOnce();
225
219
  }
226
220
 
@@ -218,7 +218,6 @@ class Modal extends React.Component<Props, State> {
218
218
  }
219
219
 
220
220
  componentWillUnmount() {
221
- this.setState({isRendered: false});
222
221
  if (this._eventSubscription) {
223
222
  this._eventSubscription.remove();
224
223
  }
@@ -166,6 +166,12 @@ const validAttributesForNonEventProps = {
166
166
  backgroundColor: {process: require('../StyleSheet/processColor').default},
167
167
  transform: true,
168
168
  transformOrigin: true,
169
+ experimental_backgroundImage: {
170
+ process: require('../StyleSheet/processBackgroundImage').default,
171
+ },
172
+ experimental_boxShadow: {
173
+ process: require('../StyleSheet/processBoxShadow').default,
174
+ },
169
175
  experimental_filter: {
170
176
  process: require('../StyleSheet/processFilter').default,
171
177
  },
@@ -17,7 +17,6 @@ import type {
17
17
  import getNativeComponentAttributes from '../ReactNative/getNativeComponentAttributes';
18
18
  import UIManager from '../ReactNative/UIManager';
19
19
  import * as ReactNativeViewConfigRegistry from '../Renderer/shims/ReactNativeViewConfigRegistry';
20
- import verifyComponentAttributeEquivalence from '../Utilities/verifyComponentAttributeEquivalence';
21
20
  import * as StaticViewConfigValidator from './StaticViewConfigValidator';
22
21
  import {createViewConfig} from './ViewConfig';
23
22
  import invariant from 'invariant';
@@ -35,7 +34,6 @@ let getRuntimeConfig;
35
34
  export function setRuntimeConfigProvider(
36
35
  runtimeConfigProvider: (name: string) => ?{
37
36
  native: boolean,
38
- strict: boolean,
39
37
  verify: boolean,
40
38
  },
41
39
  ): void {
@@ -55,9 +53,8 @@ export function get<Config>(
55
53
  viewConfigProvider: () => PartialViewConfig,
56
54
  ): HostComponent<Config> {
57
55
  ReactNativeViewConfigRegistry.register(name, () => {
58
- const {native, strict, verify} = getRuntimeConfig?.(name) ?? {
56
+ const {native, verify} = getRuntimeConfig?.(name) ?? {
59
57
  native: !global.RN$Bridgeless,
60
- strict: false,
61
58
  verify: false,
62
59
  };
63
60
 
@@ -92,23 +89,19 @@ export function get<Config>(
92
89
  ? createViewConfig(viewConfigProvider())
93
90
  : viewConfig;
94
91
 
95
- if (strict) {
96
- const validationOutput = StaticViewConfigValidator.validate(
97
- name,
98
- nativeViewConfig,
99
- staticViewConfig,
92
+ const validationOutput = StaticViewConfigValidator.validate(
93
+ name,
94
+ nativeViewConfig,
95
+ staticViewConfig,
96
+ );
97
+
98
+ if (validationOutput.type === 'invalid') {
99
+ console.error(
100
+ StaticViewConfigValidator.stringifyValidationResult(
101
+ name,
102
+ validationOutput,
103
+ ),
100
104
  );
101
-
102
- if (validationOutput.type === 'invalid') {
103
- console.error(
104
- StaticViewConfigValidator.stringifyValidationResult(
105
- name,
106
- validationOutput,
107
- ),
108
- );
109
- }
110
- } else {
111
- verifyComponentAttributeEquivalence(nativeViewConfig, staticViewConfig);
112
105
  }
113
106
  }
114
107
 
@@ -22,11 +22,6 @@ export type Difference =
22
22
  path: Array<string>,
23
23
  nativeValue: mixed,
24
24
  staticValue: mixed,
25
- }
26
- | {
27
- type: 'unexpected',
28
- path: Array<string>,
29
- staticValue: mixed,
30
25
  };
31
26
 
32
27
  export type ValidationResult = ValidResult | InvalidResult;
@@ -90,8 +85,6 @@ export function stringifyValidationResult(
90
85
  return `- '${path.join('.')}' is missing.`;
91
86
  case 'unequal':
92
87
  return `- '${path.join('.')}' is the wrong value.`;
93
- case 'unexpected':
94
- return `- '${path.join('.')}' is present but not expected to be.`;
95
88
  }
96
89
  }),
97
90
  '',
@@ -145,20 +138,6 @@ function accumulateDifferences(
145
138
  });
146
139
  }
147
140
  }
148
-
149
- for (const staticKey in staticObject) {
150
- if (
151
- !nativeObject.hasOwnProperty(staticKey) &&
152
- // $FlowFixMe[invalid-computed-prop]
153
- !isIgnored(staticObject[staticKey])
154
- ) {
155
- differences.push({
156
- path: [...path, staticKey],
157
- type: 'unexpected',
158
- staticValue: staticObject[staticKey],
159
- });
160
- }
161
- }
162
141
  }
163
142
 
164
143
  function ifObject(value: mixed): ?{...} {
@@ -14,7 +14,7 @@ import type {
14
14
  Node,
15
15
  } from '../Renderer/shims/ReactNativeTypes';
16
16
  import type ReactFabricHostComponent from './ReactFabricPublicInstance/ReactFabricHostComponent';
17
- import type {Element, ElementRef, ElementType} from 'react';
17
+ import type {ElementRef, ElementType} from 'react';
18
18
 
19
19
  import {
20
20
  onCaughtError,
@@ -28,7 +28,7 @@ export function renderElement({
28
28
  useFabric,
29
29
  useConcurrentRoot,
30
30
  }: {
31
- element: Element<ElementType>,
31
+ element: React.MixedElement,
32
32
  rootTag: number,
33
33
  useFabric: boolean,
34
34
  useConcurrentRoot: boolean,
@@ -7,10 +7,15 @@
7
7
  * @noformat
8
8
  * @nolint
9
9
  * @flow strict
10
- * @generated SignedSource<<4405023a5d82ddc01db31d8eb46a7aa0>>
10
+ * @generated SignedSource<<89361333bb6b688486e35849a9c669a6>>
11
11
  */
12
12
 
13
- import type {ElementRef, ElementType, Element, AbstractComponent} from 'react';
13
+ import type {
14
+ ElementRef,
15
+ ElementType,
16
+ MixedElement,
17
+ AbstractComponent,
18
+ } from 'react';
14
19
 
15
20
  export type MeasureOnSuccessCallback = (
16
21
  x: number,
@@ -222,7 +227,7 @@ export type ReactNativeType = {
222
227
  eventType: string,
223
228
  ): void,
224
229
  render(
225
- element: Element<ElementType>,
230
+ element: MixedElement,
226
231
  containerTag: number,
227
232
  callback: ?() => void,
228
233
  options: ?RenderRootOptions,
@@ -257,7 +262,7 @@ export type ReactFabricType = {
257
262
  eventType: string,
258
263
  ): void,
259
264
  render(
260
- element: Element<ElementType>,
265
+ element: MixedElement,
261
266
  containerTag: number,
262
267
  callback: ?() => void,
263
268
  concurrentRoot: ?boolean,
@@ -276,10 +276,10 @@ export type BlendMode =
276
276
  export type GradientValue = {
277
277
  type: 'linearGradient';
278
278
  // Angle or direction enums
279
- direction: string | undefined;
280
- colorStops: Array<{
279
+ direction?: string | undefined;
280
+ colorStops: ReadonlyArray<{
281
281
  color: ColorValue;
282
- position: number | undefined;
282
+ positions?: ReadonlyArray<string[]> | undefined;
283
283
  }>;
284
284
  };
285
285
 
@@ -715,7 +715,7 @@ export type GradientValue = {
715
715
  direction?: string,
716
716
  colorStops: $ReadOnlyArray<{
717
717
  color: ____ColorValue_Internal,
718
- position?: string,
718
+ positions?: $ReadOnlyArray<string>,
719
719
  }>,
720
720
  };
721
721