1{"version":3,"file":"NativeLinearGradient.web.js","sourceRoot":"","sources":["../src/NativeLinearGradient.web.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, View } from 'react-native';\n\ntype Props = {\n colors: number[];\n locations?: number[] | null;\n startPoint?: Point | null;\n endPoint?: Point | null;\n onLayout?: Function;\n} & React.ComponentProps<typeof View>;\n\ntype State = {\n width?: number;\n height?: number;\n};\n\ntype Point = [number, number];\n\nexport default class NativeLinearGradient extends React.PureComponent<Props, State> {\n state = {\n width: undefined,\n height: undefined,\n };\n\n onLayout = event => {\n this.setState({\n width: event.nativeEvent.layout.width,\n height: event.nativeEvent.layout.height,\n });\n if (this.props.onLayout) {\n this.props.onLayout(event);\n }\n };\n\n getAngle(): string {\n const startPoint = this.props.startPoint ? this.props.startPoint : [0.5, 0.0];\n const endPoint = this.props.endPoint ? this.props.endPoint : [0.5, 1.0];\n const { width = 0, height = 0 } = this.state;\n let angle = 0;\n\n const gradientWidth = height * (endPoint[0] - startPoint[0]);\n const gradientHeight = width * (endPoint[1] - startPoint[1]);\n angle = Math.atan2(gradientHeight, gradientWidth) + Math.PI / 2;\n\n return `${angle}rad`;\n }\n\n getColors(): string {\n const { colors } = this.props;\n return colors\n .map((color, index) => {\n const colorStr = `${color.toString(16)}`;\n const hex = `#${colorStr.substring(2, colorStr.length)}`;\n\n const location = this.props.locations && this.props.locations[index];\n if (location) {\n return `${hex} ${location * 100}%`;\n }\n return hex;\n })\n .join(',');\n }\n\n getBackgroundImage(): string | null {\n if (this.state.width && this.state.height) {\n return `linear-gradient(${this.getAngle()},${this.getColors()})`;\n } else {\n return 'transparent';\n }\n }\n\n render() {\n const { colors, locations, startPoint, endPoint, onLayout, style, ...props } = this.props;\n let compiledStyle = StyleSheet.flatten(style) || {};\n\n const flatStyle = {\n ...compiledStyle,\n // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.\n backgroundImage: this.getBackgroundImage(),\n };\n // TODO: Bacon: In the future we could consider adding `backgroundRepeat: \"no-repeat\"`. For more browser support.\n return <View style={flatStyle} onLayout={this.onLayout} {...props} />;\n }\n}\n"]}