react-native
Version:
A framework for building native apps using React
221 lines (219 loc) • 8.47 kB
TypeScript
/**
* 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.
*
* @generated SignedSource<<a52c932a016621f6a318a4327eae6af9>>
*
* This file was translated from Flow by scripts/build-types/index.js.
* Original file: packages/react-native/Libraries/Text/TextProps.js
*/
import type { AccessibilityActionEvent, AccessibilityProps, Role } from "../Components/View/ViewAccessibility";
import type { ColorValue, TextStyleProp } from "../StyleSheet/StyleSheet";
import type { GestureResponderEvent, LayoutChangeEvent, PointerEvent, TextLayoutEvent } from "../Types/CoreEventTypes";
import * as React from "react";
export type PressRetentionOffset = Readonly<{
top: number;
left: number;
bottom: number;
right: number;
}>;
type PointerEventProps = Readonly<{
onPointerEnter?: (event: PointerEvent) => void;
onPointerLeave?: (event: PointerEvent) => void;
onPointerMove?: (event: PointerEvent) => void;
}>;
export type TextPropsIOS = {
/**
* Specifies whether font should be scaled down automatically to fit given style constraints.
*
* See https://reactnative.dev/docs/text#adjustsfontsizetofit
*/
adjustsFontSizeToFit?: boolean | undefined;
/**
* The Dynamic Type scale ramp to apply to this element on iOS.
*/
dynamicTypeRamp?: ("caption2" | "caption1" | "footnote" | "subheadline" | "callout" | "body" | "headline" | "title3" | "title2" | "title1" | "largeTitle") | undefined;
/**
* When `true`, no visual change is made when text is pressed down. By
* default, a gray oval highlights the text on press down.
*
* See https://reactnative.dev/docs/text#supperhighlighting
*/
suppressHighlighting?: boolean | undefined;
/**
* Set line break strategy on iOS.
*
* See https://reactnative.dev/docs/text.html#linebreakstrategyios
*/
lineBreakStrategyIOS?: ("none" | "standard" | "hangul-word" | "push-out") | undefined;
};
export type TextPropsAndroid = {
/**
* Specifies the disabled state of the text view for testing purposes.
*
* See https://reactnative.dev/docs/text#disabled
*/
disabled?: boolean | undefined;
/**
* The highlight color of the text.
*
* See https://reactnative.dev/docs/text#selectioncolor
*/
selectionColor?: ColorValue | undefined;
/**
* Determines the types of data converted to clickable URLs in the text element.
* By default no data types are detected.
*/
dataDetectorType?: ("phoneNumber" | "link" | "email" | "none" | "all") | undefined;
/**
* Set text break strategy on Android API Level 23+
* default is `highQuality`.
*
* See https://reactnative.dev/docs/text#textbreakstrategy
*/
textBreakStrategy?: ("balanced" | "highQuality" | "simple") | undefined;
/**
* iOS Only
*/
adjustsFontSizeToFit?: boolean | undefined;
/**
* Specifies smallest possible scale a font can reach when adjustsFontSizeToFit is enabled. (values 0.01-1.0).
*
* See https://reactnative.dev/docs/text#minimumfontscale
*/
minimumFontScale?: number | undefined;
};
type TextBaseProps = Readonly<{
onAccessibilityAction?: ((event: AccessibilityActionEvent) => unknown) | undefined;
/**
* Whether fonts should scale to respect Text Size accessibility settings.
* The default is `true`.
*
* See https://reactnative.dev/docs/text#allowfontscaling
*/
allowFontScaling?: boolean | undefined;
/**
* Set hyphenation strategy on Android.
*
*/
android_hyphenationFrequency?: ("normal" | "none" | "full") | undefined;
children?: React.ReactNode | undefined;
/**
* When `numberOfLines` is set, this prop defines how text will be
* truncated.
*
* This can be one of the following values:
*
* - `head` - The line is displayed so that the end fits in the container and the missing text
* at the beginning of the line is indicated by an ellipsis glyph. e.g., "...wxyz"
* - `middle` - The line is displayed so that the beginning and end fit in the container and the
* missing text in the middle is indicated by an ellipsis glyph. "ab...yz"
* - `tail` - The line is displayed so that the beginning fits in the container and the
* missing text at the end of the line is indicated by an ellipsis glyph. e.g., "abcd..."
* - `clip` - Lines are not drawn past the edge of the text container.
*
* The default is `tail`.
*
* `numberOfLines` must be set in conjunction with this prop.
*
* > `clip` is working only for iOS
*
* See https://reactnative.dev/docs/text#ellipsizemode
*/
ellipsizeMode?: ("clip" | "head" | "middle" | "tail") | undefined;
/**
* Used to reference react managed views from native code.
*
* See https://reactnative.dev/docs/text#nativeid
*/
id?: string;
/**
* Specifies largest possible scale a font can reach when `allowFontScaling` is enabled.
* Possible values:
* `null/undefined` (default): inherit from the parent node or the global default (0)
* `0`: no max, ignore parent/global default
* `>= 1`: sets the maxFontSizeMultiplier of this node to this value
*/
maxFontSizeMultiplier?: number | undefined;
/**
* Used to locate this view from native code.
*
* See https://reactnative.dev/docs/text#nativeid
*/
nativeID?: string | undefined;
/**
* Used to truncate the text with an ellipsis after computing the text
* layout, including line wrapping, such that the total number of lines
* does not exceed this number.
*
* This prop is commonly used with `ellipsizeMode`.
*
* See https://reactnative.dev/docs/text#numberoflines
*/
numberOfLines?: number | undefined;
/**
* Invoked on mount and layout changes.
*
* {nativeEvent: { layout: {x, y, width, height}}}.
*
* See https://reactnative.dev/docs/text#onlayout
*/
onLayout?: ((event: LayoutChangeEvent) => unknown) | undefined;
/**
* This function is called on long press.
* e.g., `onLongPress={this.increaseSize}>`
*
* See https://reactnative.dev/docs/text#onlongpress
*/
onLongPress?: ((event: GestureResponderEvent) => unknown) | undefined;
/**
* This function is called on press.
* Text intrinsically supports press handling with a default highlight state (which can be disabled with suppressHighlighting).
*
* See https://reactnative.dev/docs/text#onpress
*/
onPress?: ((event: GestureResponderEvent) => unknown) | undefined;
onPressIn?: ((event: GestureResponderEvent) => unknown) | undefined;
onPressOut?: ((event: GestureResponderEvent) => unknown) | undefined;
onResponderGrant?: ((event: GestureResponderEvent) => void) | undefined;
onResponderMove?: ((event: GestureResponderEvent) => void) | undefined;
onResponderRelease?: ((event: GestureResponderEvent) => void) | undefined;
onResponderTerminate?: ((event: GestureResponderEvent) => void) | undefined;
onResponderTerminationRequest?: (() => boolean) | undefined;
onStartShouldSetResponder?: (() => boolean) | undefined;
onMoveShouldSetResponder?: (() => boolean) | undefined;
onTextLayout?: ((event: TextLayoutEvent) => unknown) | undefined;
/**
* Defines how far your touch may move off of the button, before
* deactivating the button.
*
* See https://reactnative.dev/docs/text#pressretentionoffset
*/
pressRetentionOffset?: PressRetentionOffset | undefined;
/**
* Indicates to accessibility services to treat UI component like a specific role.
*/
role?: Role | undefined;
/**
* Lets the user select text.
*
* See https://reactnative.dev/docs/text#selectable
*/
selectable?: boolean | undefined;
/**
* @see https://reactnative.dev/docs/text#style
*/
style?: TextStyleProp | undefined;
/**
* Used to locate this view in end-to-end tests.
*
* See https://reactnative.dev/docs/text#testid
*/
testID?: string | undefined;
}>;
/**
* @see https://reactnative.dev/docs/text#reference
*/
export type TextProps = Readonly<Omit<PointerEventProps, keyof TextPropsIOS | keyof TextPropsAndroid | keyof TextBaseProps | keyof AccessibilityProps | keyof {}> & Omit<TextPropsIOS, keyof TextPropsAndroid | keyof TextBaseProps | keyof AccessibilityProps | keyof {}> & Omit<TextPropsAndroid, keyof TextBaseProps | keyof AccessibilityProps | keyof {}> & Omit<TextBaseProps, keyof AccessibilityProps | keyof {}> & Omit<AccessibilityProps, keyof {}> & {}>;