{"ast":null,"code":"import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"colors\", \"locations\", \"startPoint\", \"endPoint\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport * as React from 'react';\nimport View from \"react-native-web/dist/exports/View\";\nimport normalizeColor from 'react-native-web/src/modules/normalizeColor';\nexport default function NativeLinearGradient(_ref) {\n  var colors = _ref.colors,\n      locations = _ref.locations,\n      startPoint = _ref.startPoint,\n      endPoint = _ref.endPoint,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  var _React$useState = React.useState(null),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      layout = _React$useState2[0],\n      setLayout = _React$useState2[1];\n\n  var _ref2 = layout != null ? layout : {},\n      _ref2$width = _ref2.width,\n      width = _ref2$width === void 0 ? 1 : _ref2$width,\n      _ref2$height = _ref2.height,\n      height = _ref2$height === void 0 ? 1 : _ref2$height;\n\n  var pseudoAngle = React.useMemo(function () {\n    var getControlPoints = function getControlPoints() {\n      var correctedStartPoint = [0, 0];\n\n      if (Array.isArray(startPoint)) {\n        correctedStartPoint = [startPoint[0] != null ? startPoint[0] : 0.0, startPoint[1] != null ? startPoint[1] : 0.0];\n      }\n\n      var correctedEndPoint = [0.0, 1.0];\n\n      if (Array.isArray(endPoint)) {\n        correctedEndPoint = [endPoint[0] != null ? endPoint[0] : 0.0, endPoint[1] != null ? endPoint[1] : 1.0];\n      }\n\n      return [correctedStartPoint, correctedEndPoint];\n    };\n\n    var _getControlPoints = getControlPoints(),\n        _getControlPoints2 = _slicedToArray(_getControlPoints, 2),\n        start = _getControlPoints2[0],\n        end = _getControlPoints2[1];\n\n    start[0] *= width;\n    end[0] *= width;\n    start[1] *= height;\n    end[1] *= height;\n    var py = end[1] - start[1];\n    var px = end[0] - start[0];\n    return 90 + Math.atan2(py, px) * 180 / Math.PI;\n  }, [width, height, startPoint, endPoint]);\n  var gradientColors = React.useMemo(function () {\n    return colors.map(function (color, index) {\n      var hexColor = normalizeColor(color);\n      var output = hexColor;\n\n      if (locations && locations[index]) {\n        var location = Math.max(0, Math.min(1, locations[index]));\n        var percentage = location * 100;\n        output += \" \" + percentage + \"%\";\n      }\n\n      return output;\n    });\n  }, [colors, locations]);\n  var colorStyle = gradientColors.join(',');\n  var backgroundImage = \"linear-gradient(\" + pseudoAngle + \"deg, \" + colorStyle + \")\";\n  return React.createElement(View, _objectSpread(_objectSpread({}, props), {}, {\n    style: [props.style, {\n      backgroundImage: backgroundImage\n    }],\n    onLayout: function onLayout(event) {\n      var _event$nativeEvent$la = event.nativeEvent.layout,\n          x = _event$nativeEvent$la.x,\n          y = _event$nativeEvent$la.y,\n          width = _event$nativeEvent$la.width,\n          height = _event$nativeEvent$la.height;\n      var oldLayout = layout != null ? layout : {\n        x: 0,\n        y: 0,\n        width: 1,\n        height: 1\n      };\n\n      if (x !== oldLayout.x || y !== oldLayout.y || width !== oldLayout.width || height !== oldLayout.height) {\n        setLayout({\n          x: x,\n          y: y,\n          width: width,\n          height: height\n        });\n      }\n\n      if (props.onLayout) {\n        props.onLayout(event);\n      }\n    }\n  }));\n}","map":{"version":3,"sources":["../src/NativeLinearGradient.web.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;;AAEA,OAAO,cAAP,MAA2B,6CAA3B;AAIA,eAAc,SAAU,oBAAV,OAMc;AAAA,MAL1B,MAK0B,QAL1B,MAK0B;AAAA,MAJ1B,SAI0B,QAJ1B,SAI0B;AAAA,MAH1B,UAG0B,QAH1B,UAG0B;AAAA,MAF1B,QAE0B,QAF1B,QAE0B;AAAA,MADvB,KACuB;;AAC1B,wBAA4B,KAAK,CAAC,QAAN,CAAuC,IAAvC,CAA5B;AAAA;AAAA,MAAO,MAAP;AAAA,MAAe,SAAf;;AAEA,cAAkC,MAAlC,WAAkC,MAAlC,GAA4C,EAA5C;AAAA,0BAAQ,KAAR;AAAA,MAAQ,KAAR,4BAAgB,CAAhB;AAAA,2BAAmB,MAAnB;AAAA,MAAmB,MAAnB,6BAA4B,CAA5B;;AAEA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAN,CAAc,YAAK;AACrC,QAAM,gBAAgB,GAAG,SAAnB,gBAAmB,GAAkC;AACzD,UAAI,mBAAmB,GAA8B,CAAC,CAAD,EAAI,CAAJ,CAArD;;AACA,UAAI,KAAK,CAAC,OAAN,CAAc,UAAd,CAAJ,EAA+B;AAC7B,QAAA,mBAAmB,GAAG,CACpB,UAAU,CAAC,CAAD,CAAV,IAAiB,IAAjB,GAAwB,UAAU,CAAC,CAAD,CAAlC,GAAwC,GADpB,EAEpB,UAAU,CAAC,CAAD,CAAV,IAAiB,IAAjB,GAAwB,UAAU,CAAC,CAAD,CAAlC,GAAwC,GAFpB,CAAtB;AAID;;AACD,UAAI,iBAAiB,GAA8B,CAAC,GAAD,EAAM,GAAN,CAAnD;;AACA,UAAI,KAAK,CAAC,OAAN,CAAc,QAAd,CAAJ,EAA6B;AAC3B,QAAA,iBAAiB,GAAG,CAClB,QAAQ,CAAC,CAAD,CAAR,IAAe,IAAf,GAAsB,QAAQ,CAAC,CAAD,CAA9B,GAAoC,GADlB,EAElB,QAAQ,CAAC,CAAD,CAAR,IAAe,IAAf,GAAsB,QAAQ,CAAC,CAAD,CAA9B,GAAoC,GAFlB,CAApB;AAID;;AACD,aAAO,CAAC,mBAAD,EAAsB,iBAAtB,CAAP;AACD,KAhBD;;AAkBA,4BAAqB,gBAAgB,EAArC;AAAA;AAAA,QAAO,KAAP;AAAA,QAAc,GAAd;;AACA,IAAA,KAAK,CAAC,CAAD,CAAL,IAAY,KAAZ;AACA,IAAA,GAAG,CAAC,CAAD,CAAH,IAAU,KAAV;AACA,IAAA,KAAK,CAAC,CAAD,CAAL,IAAY,MAAZ;AACA,IAAA,GAAG,CAAC,CAAD,CAAH,IAAU,MAAV;AACA,QAAM,EAAE,GAAG,GAAG,CAAC,CAAD,CAAH,GAAS,KAAK,CAAC,CAAD,CAAzB;AACA,QAAM,EAAE,GAAG,GAAG,CAAC,CAAD,CAAH,GAAS,KAAK,CAAC,CAAD,CAAzB;AAEA,WAAO,KAAM,IAAI,CAAC,KAAL,CAAW,EAAX,EAAe,EAAf,IAAqB,GAAtB,GAA6B,IAAI,CAAC,EAA9C;AACD,GA5BmB,EA4BjB,CAAC,KAAD,EAAQ,MAAR,EAAgB,UAAhB,EAA4B,QAA5B,CA5BiB,CAApB;AA8BA,MAAM,cAAc,GAAG,KAAK,CAAC,OAAN,CAAc,YAAK;AACxC,WAAO,MAAM,CAAC,GAAP,CAAW,UAAC,KAAD,EAAgB,KAAhB,EAAyC;AACzD,UAAM,QAAQ,GAAG,cAAc,CAAC,KAAD,CAA/B;AACA,UAAI,MAAM,GAAG,QAAb;;AACA,UAAI,SAAS,IAAI,SAAS,CAAC,KAAD,CAA1B,EAAmC;AACjC,YAAM,QAAQ,GAAG,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,SAAS,CAAC,KAAD,CAArB,CAAZ,CAAjB;AAEA,YAAM,UAAU,GAAG,QAAQ,GAAG,GAA9B;AACA,QAAA,MAAM,UAAQ,UAAR,MAAN;AACD;;AACD,aAAO,MAAP;AACD,KAVM,CAAP;AAWD,GAZsB,EAYpB,CAAC,MAAD,EAAS,SAAT,CAZoB,CAAvB;AAcA,MAAM,UAAU,GAAG,cAAc,CAAC,IAAf,CAAoB,GAApB,CAAnB;AACA,MAAM,eAAe,wBAAsB,WAAtB,aAAyC,UAAzC,MAArB;AAGA,SACE,KAAA,CAAA,aAAA,CAAC,IAAD,kCACM,KADN;AAEE,IAAA,KAAK,EAAE,CACL,KAAK,CAAC,KADD,EAGL;AAAE,MAAA,eAAe,EAAf;AAAF,KAHK,CAFT;AAOE,IAAA,QAAQ,EAAE,kBAAC,KAAD,EAAU;AAClB,kCAAgC,KAAK,CAAC,WAAN,CAAkB,MAAlD;AAAA,UAAQ,CAAR,yBAAQ,CAAR;AAAA,UAAW,CAAX,yBAAW,CAAX;AAAA,UAAc,KAAd,yBAAc,KAAd;AAAA,UAAqB,MAArB,yBAAqB,MAArB;AACA,UAAM,SAAS,GAAG,MAAH,WAAG,MAAH,GAAa;AAAE,QAAA,CAAC,EAAE,CAAL;AAAQ,QAAA,CAAC,EAAE,CAAX;AAAc,QAAA,KAAK,EAAE,CAArB;AAAwB,QAAA,MAAM,EAAE;AAAhC,OAA5B;;AAEA,UACE,CAAC,KAAK,SAAS,CAAC,CAAhB,IACA,CAAC,KAAK,SAAS,CAAC,CADhB,IAEA,KAAK,KAAK,SAAS,CAAC,KAFpB,IAGA,MAAM,KAAK,SAAS,CAAC,MAJvB,EAKE;AACA,QAAA,SAAS,CAAC;AAAE,UAAA,CAAC,EAAD,CAAF;AAAK,UAAA,CAAC,EAAD,CAAL;AAAQ,UAAA,KAAK,EAAL,KAAR;AAAe,UAAA,MAAM,EAAN;AAAf,SAAD,CAAT;AACD;;AAED,UAAI,KAAK,CAAC,QAAV,EAAoB;AAClB,QAAA,KAAK,CAAC,QAAN,CAAe,KAAf;AACD;AACF;AAvBH,KADF;AA2BD","sourcesContent":["import * as React from 'react';\nimport { LayoutRectangle, View } from 'react-native';\nimport normalizeColor from 'react-native-web/src/modules/normalizeColor';\n\nimport { NativeLinearGradientPoint, NativeLinearGradientProps } from './NativeLinearGradient.types';\n\nexport default function NativeLinearGradient({\n  colors,\n  locations,\n  startPoint,\n  endPoint,\n  ...props\n}: NativeLinearGradientProps): React.ReactElement {\n  const [layout, setLayout] = React.useState<LayoutRectangle | null>(null);\n\n  const { width = 1, height = 1 } = layout ?? {};\n\n  const pseudoAngle = React.useMemo(() => {\n    const getControlPoints = (): NativeLinearGradientPoint[] => {\n      let correctedStartPoint: NativeLinearGradientPoint = [0, 0];\n      if (Array.isArray(startPoint)) {\n        correctedStartPoint = [\n          startPoint[0] != null ? startPoint[0] : 0.0,\n          startPoint[1] != null ? startPoint[1] : 0.0,\n        ];\n      }\n      let correctedEndPoint: NativeLinearGradientPoint = [0.0, 1.0];\n      if (Array.isArray(endPoint)) {\n        correctedEndPoint = [\n          endPoint[0] != null ? endPoint[0] : 0.0,\n          endPoint[1] != null ? endPoint[1] : 1.0,\n        ];\n      }\n      return [correctedStartPoint, correctedEndPoint];\n    };\n\n    const [start, end] = getControlPoints();\n    start[0] *= width;\n    end[0] *= width;\n    start[1] *= height;\n    end[1] *= height;\n    const py = end[1] - start[1];\n    const px = end[0] - start[0];\n\n    return 90 + (Math.atan2(py, px) * 180) / Math.PI;\n  }, [width, height, startPoint, endPoint]);\n\n  const gradientColors = React.useMemo(() => {\n    return colors.map((color: number, index: number): string => {\n      const hexColor = normalizeColor(color);\n      let output = hexColor;\n      if (locations && locations[index]) {\n        const location = Math.max(0, Math.min(1, locations[index]));\n        // Convert 0...1 to 0...100\n        const percentage = location * 100;\n        output += ` ${percentage}%`;\n      }\n      return output;\n    });\n  }, [colors, locations]);\n\n  const colorStyle = gradientColors.join(',');\n  const backgroundImage = `linear-gradient(${pseudoAngle}deg, ${colorStyle})`;\n  // TODO(Bacon): In the future we could consider adding `backgroundRepeat: \"no-repeat\"`. For more\n  // browser support.\n  return (\n    <View\n      {...props}\n      style={[\n        props.style,\n        // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.\n        { backgroundImage },\n      ]}\n      onLayout={(event) => {\n        const { x, y, width, height } = event.nativeEvent.layout;\n        const oldLayout = layout ?? { x: 0, y: 0, width: 1, height: 1 };\n        // don't set new layout state unless the layout has actually changed\n        if (\n          x !== oldLayout.x ||\n          y !== oldLayout.y ||\n          width !== oldLayout.width ||\n          height !== oldLayout.height\n        ) {\n          setLayout({ x, y, width, height });\n        }\n\n        if (props.onLayout) {\n          props.onLayout(event);\n        }\n      }}\n    />\n  );\n}\n"],"sourceRoot":""},"metadata":{},"sourceType":"module"}