From 34d3efe2efa6482d01b83d53d7779fe77032e823 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 17 Feb 2021 10:43:39 -0800 Subject: [PATCH] TextInlineImage view configs Summary: Migrate RCTTextInlineImage to use NativeComponentRegistry changelog: [internal] internal Reviewed By: PeteTheHeat Differential Revision: D26427141 fbshipit-source-id: 56c120f19493e17c9be4e467032e0a4f2244c0a9 --- .../Image/TextInlineImageNativeComponent.js | 86 ++++++++++++++++++- 1 file changed, 84 insertions(+), 2 deletions(-) diff --git a/Libraries/Image/TextInlineImageNativeComponent.js b/Libraries/Image/TextInlineImageNativeComponent.js index 139c88ba8a1..c17de2581f0 100644 --- a/Libraries/Image/TextInlineImageNativeComponent.js +++ b/Libraries/Image/TextInlineImageNativeComponent.js @@ -10,11 +10,93 @@ 'use strict'; -const requireNativeComponent = require('../ReactNative/requireNativeComponent'); +import type {ResolvedAssetSource} from './AssetSourceResolver'; import type {HostComponent} from '../Renderer/shims/ReactNativeTypes'; +import type {ImageProps} from './ImageProps'; +import type {ViewProps} from '../Components/View/ViewPropTypes'; +import * as NativeComponentRegistry from '../NativeComponent/NativeComponentRegistry'; +import type { + ColorValue, + DangerouslyImpreciseStyle, + ImageStyleProp, +} from '../StyleSheet/StyleSheet'; -const TextInlineImage: HostComponent = requireNativeComponent( +type Props = $ReadOnly<{ + ...ImageProps, + ...ViewProps, + + style?: ImageStyleProp | DangerouslyImpreciseStyle, + + // iOS native props + tintColor?: ColorValue, + + // Android native props + shouldNotifyLoadEvents?: boolean, + src?: ?ResolvedAssetSource | $ReadOnlyArray<{uri: string, ...}>, + headers?: ?string, + defaultSrc?: ?string, + loadingIndicatorSrc?: ?string, + internal_analyticTag?: ?string, +}>; + +const TextInlineImage: HostComponent = NativeComponentRegistry.get( 'RCTTextInlineImage', + () => ({ + uiViewClassName: 'RCTImageView', + bubblingEventTypes: {}, + directEventTypes: { + topLoadStart: { + registrationName: 'onLoadStart', + }, + topProgress: { + registrationName: 'onProgress', + }, + topError: { + registrationName: 'onError', + }, + topPartialLoad: { + registrationName: 'onPartialLoad', + }, + topLoad: { + registrationName: 'onLoad', + }, + topLoadEnd: { + registrationName: 'onLoadEnd', + }, + }, + validAttributes: { + blurRadius: true, + capInsets: { + diff: require('../Utilities/differ/insetsDiffer'), + }, + defaultSource: { + process: require('./resolveAssetSource'), + }, + defaultSrc: true, + fadeDuration: true, + headers: true, + internal_analyticTag: true, + loadingIndicatorSrc: true, + onError: true, + onLoad: true, + onLoadEnd: true, + onLoadStart: true, + onPartialLoad: true, + onProgress: true, + overlayColor: { + process: require('../StyleSheet/processColor'), + }, + progressiveRenderingEnabled: true, + resizeMethod: true, + resizeMode: true, + shouldNotifyLoadEvents: true, + source: true, + src: true, + tintColor: { + process: require('../StyleSheet/processColor'), + }, + }, + }), ); module.exports = TextInlineImage;