/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict-local * @format */ import type {ViewProps} from 'react-native/Libraries/Components/View/ViewPropTypes'; import type {HostComponent} from 'react-native/Libraries/Renderer/shims/ReactNativeTypes'; import type { BubblingEventHandler, Double, Float, Int32, } from 'react-native/Libraries/Types/CodegenTypes'; import * as React from 'react'; import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands'; import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; type Event = $ReadOnly<{ values: $ReadOnlyArray, boolValues: $ReadOnlyArray, floats: $ReadOnlyArray, doubles: $ReadOnlyArray, yesNos: $ReadOnlyArray<'yep' | 'nope'>, strings: $ReadOnlyArray, latLons: $ReadOnlyArray<{lat: Double, lon: Double}>, multiArrays: $ReadOnlyArray<$ReadOnlyArray>, }>; type LegacyStyleEvent = $ReadOnly<{ string: string, }>; type NativeProps = $ReadOnly<{ ...ViewProps, opacity?: Float, values: $ReadOnlyArray, // Events onIntArrayChanged?: ?BubblingEventHandler, onLegacyStyleEvent?: ?BubblingEventHandler< LegacyStyleEvent, 'alternativeLegacyName', >, }>; export type MyNativeViewType = HostComponent; interface NativeCommands { +callNativeMethodToChangeBackgroundColor: ( viewRef: React.ElementRef, color: string, ) => void; +callNativeMethodToAddOverlays: ( viewRef: React.ElementRef, overlayColors: $ReadOnlyArray, ) => void; +callNativeMethodToRemoveOverlays: ( viewRef: React.ElementRef, ) => void; +fireLagacyStyleEvent: (viewRef: React.ElementRef) => void; } export const Commands: NativeCommands = codegenNativeCommands({ supportedCommands: [ 'callNativeMethodToChangeBackgroundColor', 'callNativeMethodToAddOverlays', 'callNativeMethodToRemoveOverlays', 'fireLagacyStyleEvent', ], }); export default (codegenNativeComponent( 'RNTMyNativeView', ): MyNativeViewType);