155058f92SEvan Baconimport { ClassAttributes, ComponentProps, ComponentType } from 'react'; 268675f3eSEvan Baconimport { 3641d0767SEvan Bacon AccessibilityRole, 468675f3eSEvan Bacon StyleProp, 568675f3eSEvan Bacon View as NativeView, 668675f3eSEvan Bacon ViewStyle as NativeViewStyle, 768675f3eSEvan Bacon} from 'react-native'; 855058f92SEvan Bacon 9641d0767SEvan Baconimport { createDevView } from './createDevView'; 10*8a424bebSJames Ideimport { createSafeStyledView } from '../css/createSafeStyledView'; 11641d0767SEvan Bacon 1255058f92SEvan Bacon// https://github.com/necolas/react-native-web/issues/832 1355058f92SEvan Bacon 1455058f92SEvan Bacontype NativeViewProps = ComponentProps<typeof NativeView> & ClassAttributes<typeof NativeView>; 1555058f92SEvan Bacon 1655058f92SEvan Bacon/** 1755058f92SEvan Bacon * https://baconbrix.gitbook.io/react-native-web/primitives/view 1855058f92SEvan Bacon */ 1955058f92SEvan Baconexport interface WebViewStyle { 2055058f92SEvan Bacon /** @platform web */ 2155058f92SEvan Bacon backdropFilter?: string; 2255058f92SEvan Bacon /** @platform web */ 2355058f92SEvan Bacon animationDelay?: string; 2455058f92SEvan Bacon /** @platform web */ 2555058f92SEvan Bacon animationDirection?: string; 2655058f92SEvan Bacon /** @platform web */ 2755058f92SEvan Bacon animationDuration?: string; 2855058f92SEvan Bacon /** @platform web */ 2955058f92SEvan Bacon animationFillMode?: string; 3055058f92SEvan Bacon /** @platform web */ 3155058f92SEvan Bacon animationName?: string | any[]; 3255058f92SEvan Bacon /** @platform web */ 3355058f92SEvan Bacon animationIterationCount?: number | 'infinite'; 3455058f92SEvan Bacon /** @platform web */ 3555058f92SEvan Bacon animationPlayState?: string; 3655058f92SEvan Bacon /** @platform web */ 3755058f92SEvan Bacon animationTimingFunction?: string; 3855058f92SEvan Bacon /** @platform web */ 3955058f92SEvan Bacon backgroundAttachment?: string; 4055058f92SEvan Bacon /** @platform web */ 4155058f92SEvan Bacon backgroundBlendMode?: string; 4255058f92SEvan Bacon /** @platform web */ 4355058f92SEvan Bacon backgroundClip?: string; 4455058f92SEvan Bacon /** @platform web */ 4555058f92SEvan Bacon backgroundImage?: string; 4655058f92SEvan Bacon /** @platform web */ 4755058f92SEvan Bacon backgroundOrigin?: 'border-box' | 'content-box' | 'padding-box'; 4855058f92SEvan Bacon /** @platform web */ 4955058f92SEvan Bacon backgroundPosition?: string; 5055058f92SEvan Bacon /** @platform web */ 5155058f92SEvan Bacon backgroundRepeat?: string; 5255058f92SEvan Bacon /** @platform web */ 5355058f92SEvan Bacon backgroundSize?: string; 5455058f92SEvan Bacon /** @platform web */ 5555058f92SEvan Bacon boxShadow?: string; 5655058f92SEvan Bacon /** @platform web */ 5755058f92SEvan Bacon boxSizing?: string; 5855058f92SEvan Bacon /** @platform web */ 5955058f92SEvan Bacon clip?: string; 6055058f92SEvan Bacon /** @platform web */ 6155058f92SEvan Bacon cursor?: string; 6255058f92SEvan Bacon /** @platform web */ 6355058f92SEvan Bacon filter?: string; 6455058f92SEvan Bacon /** @platform web */ 6555058f92SEvan Bacon gridAutoColumns?: string; 6655058f92SEvan Bacon /** @platform web */ 6755058f92SEvan Bacon gridAutoFlow?: string; 6855058f92SEvan Bacon /** @platform web */ 6955058f92SEvan Bacon gridAutoRows?: string; 7055058f92SEvan Bacon /** @platform web */ 7155058f92SEvan Bacon gridColumnEnd?: string; 7255058f92SEvan Bacon /** @platform web */ 7355058f92SEvan Bacon gridColumnGap?: string; 7455058f92SEvan Bacon /** @platform web */ 7555058f92SEvan Bacon gridColumnStart?: string; 7655058f92SEvan Bacon /** @platform web */ 7755058f92SEvan Bacon gridRowEnd?: string; 7855058f92SEvan Bacon /** @platform web */ 7955058f92SEvan Bacon gridRowGap?: string; 8055058f92SEvan Bacon /** @platform web */ 8155058f92SEvan Bacon gridRowStart?: string; 8255058f92SEvan Bacon /** @platform web */ 8355058f92SEvan Bacon gridTemplateColumns?: string; 8455058f92SEvan Bacon /** @platform web */ 8555058f92SEvan Bacon gridTemplateRows?: string; 8655058f92SEvan Bacon /** @platform web */ 8755058f92SEvan Bacon gridTemplateAreas?: string; 8855058f92SEvan Bacon /** @platform web */ 8955058f92SEvan Bacon outline?: string; 9055058f92SEvan Bacon /** @platform web */ 9155058f92SEvan Bacon outlineColor?: string; 9255058f92SEvan Bacon /** @platform web */ 9355058f92SEvan Bacon overflowX?: string; 9455058f92SEvan Bacon /** @platform web */ 9555058f92SEvan Bacon overflowY?: string; 9655058f92SEvan Bacon /** @platform web */ 9755058f92SEvan Bacon overscrollBehavior?: 'auto' | 'contain' | 'none'; 9855058f92SEvan Bacon /** @platform web */ 9955058f92SEvan Bacon overscrollBehaviorX?: 'auto' | 'contain' | 'none'; 10055058f92SEvan Bacon /** @platform web */ 10155058f92SEvan Bacon overscrollBehaviorY?: 'auto' | 'contain' | 'none'; 10255058f92SEvan Bacon /** @platform web */ 10355058f92SEvan Bacon perspective?: string; 10455058f92SEvan Bacon /** @platform web */ 10555058f92SEvan Bacon perspectiveOrigin?: string; 10655058f92SEvan Bacon /** @platform web */ 10755058f92SEvan Bacon touchAction?: string; 10855058f92SEvan Bacon /** @platform web */ 10955058f92SEvan Bacon transformOrigin?: string; 11055058f92SEvan Bacon /** @platform web */ 11155058f92SEvan Bacon transitionDelay?: string; 11255058f92SEvan Bacon /** @platform web */ 11355058f92SEvan Bacon transitionDuration?: string; 11455058f92SEvan Bacon /** @platform web */ 11555058f92SEvan Bacon transitionProperty?: string; 11655058f92SEvan Bacon /** @platform web */ 11755058f92SEvan Bacon transitionTimingFunction?: string; 11855058f92SEvan Bacon /** @platform web */ 11955058f92SEvan Bacon userSelect?: string; 12055058f92SEvan Bacon /** @platform web */ 12155058f92SEvan Bacon visibility?: string; 12255058f92SEvan Bacon /** @platform web */ 12355058f92SEvan Bacon willChange?: string; 124641d0767SEvan Bacon /** @platform web */ 125641d0767SEvan Bacon position?: 'static' | 'relative' | 'absolute' | 'fixed' | 'sticky'; 12655058f92SEvan Bacon} 12755058f92SEvan Bacon 128a3634a2bSEvan Baconexport type ViewStyle = Omit<NativeViewStyle, 'position'> & WebViewStyle; 12955058f92SEvan Bacon 13055058f92SEvan Baconexport type WebViewProps = { 13155058f92SEvan Bacon style?: StyleProp<ViewStyle>; 13255058f92SEvan Bacon 13368675f3eSEvan Bacon accessibilityRole?: 134a8465056SEvan Bacon | 'list' 135a8465056SEvan Bacon | 'listitem' 13668675f3eSEvan Bacon | 'complementary' 13768675f3eSEvan Bacon | 'contentinfo' 13868675f3eSEvan Bacon | 'region' 13968675f3eSEvan Bacon | 'navigation' 14068675f3eSEvan Bacon | 'main' 14168675f3eSEvan Bacon | 'article' 14268675f3eSEvan Bacon | 'banner' 14368675f3eSEvan Bacon | AccessibilityRole; 14455058f92SEvan Bacon}; 14555058f92SEvan Bacon 14655058f92SEvan Baconexport type ViewProps = WebViewProps & Omit<NativeViewProps, 'style' | 'accessibilityRole'>; 14755058f92SEvan Bacon 148641d0767SEvan Baconlet View = NativeView as ComponentType<ViewProps>; 14955058f92SEvan Bacon 150641d0767SEvan Baconif (process.env.NODE_ENV !== 'production') { 151641d0767SEvan Bacon // Add better errors and warnings in development builds. 152641d0767SEvan Bacon View = createDevView(NativeView) as ComponentType<ViewProps>; 153641d0767SEvan Bacon} 154641d0767SEvan Bacon 155641d0767SEvan Baconexport default createSafeStyledView(View) as ComponentType<ViewProps>; 156