/** * Copyright (c) 2015-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @providesModule StyleSheetTypes * @flow * @format */ 'use strict'; import AnimatedNode from 'AnimatedNode'; export opaque type StyleSheetStyle: number = number; export type ColorValue = null | string; export type DimensionValue = null | number | string | AnimatedNode; export type LayoutStyle = $ReadOnly<{| display?: 'none' | 'flex', width?: DimensionValue, height?: DimensionValue, bottom?: DimensionValue, end?: DimensionValue, left?: DimensionValue, right?: DimensionValue, start?: DimensionValue, top?: DimensionValue, minWidth?: DimensionValue, maxWidth?: DimensionValue, minHeight?: DimensionValue, maxHeight?: DimensionValue, margin?: DimensionValue, marginBottom?: DimensionValue, marginEnd?: DimensionValue, marginHorizontal?: DimensionValue, marginLeft?: DimensionValue, marginRight?: DimensionValue, marginStart?: DimensionValue, marginTop?: DimensionValue, marginVertical?: DimensionValue, padding?: DimensionValue, paddingBottom?: DimensionValue, paddingEnd?: DimensionValue, paddingHorizontal?: DimensionValue, paddingLeft?: DimensionValue, paddingRight?: DimensionValue, paddingStart?: DimensionValue, paddingTop?: DimensionValue, paddingVertical?: DimensionValue, borderWidth?: number, borderBottomWidth?: number, borderEndWidth?: number, borderLeftWidth?: number, borderRightWidth?: number, borderStartWidth?: number, borderTopWidth?: number, position?: 'absolute' | 'relative', flexDirection?: 'row' | 'row-reverse' | 'column' | 'column-reverse', flexWrap?: 'wrap' | 'nowrap', justifyContent?: | 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly', alignItems?: 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline', alignSelf?: | 'auto' | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline', alignContent?: | 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'space-between' | 'space-around', overflow?: 'visible' | 'hidden' | 'scroll', flex?: number, flexGrow?: number, flexShrink?: number, flexBasis?: number | string, aspectRatio?: number, zIndex?: number, direction?: 'inherit' | 'ltr' | 'rtl', |}>; export type TransformStyle = $ReadOnly<{| transform?: $ReadOnlyArray< | {|+perspective: number | AnimatedNode|} | {|+rotate: string|} | {|+rotateX: string|} | {|+rotateY: string|} | {|+rotateZ: string|} | {|+scale: number | AnimatedNode|} | {|+scaleX: number | AnimatedNode|} | {|+scaleY: number | AnimatedNode|} | {|+translateX: number | AnimatedNode|} | {|+translateY: number | AnimatedNode|} | {| +translate: [number | AnimatedNode, number | AnimatedNode] | AnimatedNode, |} | {|+skewX: string|} | {|+skewY: string|} // TODO: what is the actual type it expects? | {| +matrix: $ReadOnlyArray | AnimatedNode, |}, >, |}>; export type ShadowStyle = $ReadOnly<{| shadowColor?: ColorValue, shadowOffset?: $ReadOnly<{| width?: number, height?: number, |}>, shadowOpacity?: number | AnimatedNode, shadowRadius?: number, |}>; export type ViewStyle = $ReadOnly<{| ...$Exact, ...$Exact, ...$Exact, backfaceVisibility?: 'visible' | 'hidden', backgroundColor?: ColorValue, borderColor?: ColorValue, borderBottomColor?: ColorValue, borderEndColor?: ColorValue, borderLeftColor?: ColorValue, borderRightColor?: ColorValue, borderStartColor?: ColorValue, borderTopColor?: ColorValue, borderRadius?: number, borderBottomEndRadius?: number, borderBottomLeftRadius?: number, borderBottomRightRadius?: number, borderBottomStartRadius?: number, borderTopEndRadius?: number, borderTopLeftRadius?: number, borderTopRightRadius?: number, borderTopStartRadius?: number, borderStyle?: 'solid' | 'dotted' | 'dashed', borderWidth?: number, borderBottomWidth?: number, borderEndWidth?: number, borderLeftWidth?: number, borderRightWidth?: number, borderStartWidth?: number, borderTopWidth?: number, opacity?: number | AnimatedNode, elevation?: number, |}>; export type TextStyle = $ReadOnly<{| ...$Exact, color?: ColorValue, fontFamily?: string, fontSize?: number, fontStyle?: 'normal' | 'italic', fontWeight?: | 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900', fontVariant?: $ReadOnlyArray< | 'small-caps' | 'oldstyle-nums' | 'lining-nums' | 'tabular-nums' | 'proportional-nums', >, textShadowOffset?: $ReadOnly<{| width?: number, height?: number, |}>, textShadowRadius?: number, textShadowColor?: ColorValue, letterSpacing?: number, lineHeight?: number, textAlign?: 'auto' | 'left' | 'right' | 'center' | 'justify', textAlignVertical?: 'auto' | 'top' | 'bottom' | 'center', includeFontPadding?: boolean, textDecorationLine?: | 'none' | 'underline' | 'line-through' | 'underline line-through', textDecorationStyle?: 'solid' | 'double' | 'dotted' | 'dashed', textDecorationColor?: ColorValue, writingDirection?: 'auto' | 'ltr' | 'rtl', |}>; export type ImageStyle = $ReadOnly<{| ...$Exact, resizeMode?: 'contain' | 'cover' | 'stretch' | 'center' | 'repeat', tintColor?: ColorValue, overlayColor?: string, |}>; export type Style = { ...$Exact, +resizeMode?: 'contain' | 'cover' | 'stretch' | 'center' | 'repeat', +tintColor?: ColorValue, +overlayColor?: string, }; type GenericStyleProp<+T> = | null | void | T | StyleSheetStyle | number | false | '' | $ReadOnlyArray>; export type ____StyleObj_Internal = GenericStyleProp<$Shape