@tamagui/linear-gradient 2.0.0-1769320275396 → 2.0.0-1769401121849

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,6 +38,12 @@ var import_core = require("@tamagui/core"),
38
38
  React = __toESM(require("react"), 1),
39
39
  import_react_native = require("react-native-web"),
40
40
  import_jsx_runtime = require("react/jsx-runtime");
41
+ function needsDimensionAwareAngle(start, end) {
42
+ if (!start && !end) return !1;
43
+ const startX = start?.[0] ?? 0.5,
44
+ endX = end?.[0] ?? 0.5;
45
+ return startX !== endX;
46
+ }
41
47
  function LinearGradient({
42
48
  colors,
43
49
  locations,
@@ -45,7 +51,10 @@ function LinearGradient({
45
51
  end,
46
52
  ...props
47
53
  }) {
48
- const [{
54
+ const normalizedStart = start ? Array.isArray(start) ? start : [start.x, start.y] : void 0,
55
+ normalizedEnd = end ? Array.isArray(end) ? end : [end.x, end.y] : void 0,
56
+ needsLayout = needsDimensionAwareAngle(normalizedStart, normalizedEnd),
57
+ [{
49
58
  height,
50
59
  width
51
60
  }, setLayout] = React.useState({
@@ -54,8 +63,8 @@ function LinearGradient({
54
63
  }),
55
64
  linearGradientBackgroundImage = React.useMemo(() => getLinearGradientBackgroundImage(
56
65
  // @ts-expect-error ok
57
- colors, locations, start ? Array.isArray(start) ? start : [start.x, start.y] : void 0, end ? Array.isArray(end) ? end : [end.x, end.y] : void 0, width, height), [colors, locations, start, end, width, height]);
58
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
66
+ colors, locations, normalizedStart, normalizedEnd, width, height), [colors, locations, normalizedStart, normalizedEnd, width, height]);
67
+ return needsLayout ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
59
68
  ...props,
60
69
  style: [props.style,
61
70
  // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
@@ -72,6 +81,14 @@ function LinearGradient({
72
81
  width: width2
73
82
  } : oldLayout), props.onLayout && props.onLayout(event);
74
83
  }
84
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
85
+ ...props,
86
+ onLayout: props.onLayout,
87
+ style: [props.style,
88
+ // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
89
+ {
90
+ backgroundImage: linearGradientBackgroundImage
91
+ }]
75
92
  });
76
93
  }
77
94
  function getLinearGradientBackgroundImage(colors, locations, startPoint, endPoint, width = 1, height = 1) {
@@ -26,6 +26,11 @@ __export(linear_gradient_exports, {
26
26
  });
27
27
  module.exports = __toCommonJS(linear_gradient_exports);
28
28
  var import_core = require("@tamagui/core"), React = __toESM(require("react"), 1), import_react_native = require("react-native-web"), import_jsx_runtime = require("react/jsx-runtime");
29
+ function needsDimensionAwareAngle(start, end) {
30
+ if (!start && !end) return !1;
31
+ const startX = start?.[0] ?? 0.5, endX = end?.[0] ?? 0.5;
32
+ return startX !== endX;
33
+ }
29
34
  function LinearGradient({
30
35
  colors,
31
36
  locations,
@@ -33,19 +38,22 @@ function LinearGradient({
33
38
  end,
34
39
  ...props
35
40
  }) {
36
- const [{ height, width }, setLayout] = React.useState({
41
+ const normalizedStart = start ? Array.isArray(start) ? start : [start.x, start.y] : void 0, normalizedEnd = end ? Array.isArray(end) ? end : [end.x, end.y] : void 0, needsLayout = needsDimensionAwareAngle(
42
+ normalizedStart,
43
+ normalizedEnd
44
+ ), [{ height, width }, setLayout] = React.useState({
37
45
  height: 1,
38
46
  width: 1
39
47
  }), linearGradientBackgroundImage = React.useMemo(() => getLinearGradientBackgroundImage(
40
48
  // @ts-expect-error ok
41
49
  colors,
42
50
  locations,
43
- start ? Array.isArray(start) ? start : [start.x, start.y] : void 0,
44
- end ? Array.isArray(end) ? end : [end.x, end.y] : void 0,
51
+ normalizedStart,
52
+ normalizedEnd,
45
53
  width,
46
54
  height
47
- ), [colors, locations, start, end, width, height]);
48
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
55
+ ), [colors, locations, normalizedStart, normalizedEnd, width, height]);
56
+ return needsLayout ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
49
57
  import_react_native.View,
50
58
  {
51
59
  ...props,
@@ -59,6 +67,17 @@ function LinearGradient({
59
67
  setLayout((oldLayout) => width2 !== oldLayout.width || height2 !== oldLayout.height ? { height: height2, width: width2 } : oldLayout), props.onLayout && props.onLayout(event);
60
68
  }
61
69
  }
70
+ ) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
71
+ import_react_native.View,
72
+ {
73
+ ...props,
74
+ onLayout: props.onLayout,
75
+ style: [
76
+ props.style,
77
+ // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
78
+ { backgroundImage: linearGradientBackgroundImage }
79
+ ]
80
+ }
62
81
  );
63
82
  }
64
83
  function getLinearGradientBackgroundImage(colors, locations, startPoint, endPoint, width = 1, height = 1) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/linear-gradient.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["width", "height"]
6
6
  }
@@ -22,8 +22,19 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
22
22
  }), mod);
23
23
  var linear_gradient_native_exports = {};
24
24
  __export(linear_gradient_native_exports, {
25
- LinearGradient: () => import_expo_linear_gradient.LinearGradient
25
+ LinearGradient: () => LinearGradient
26
26
  });
27
27
  module.exports = __toCommonJS(linear_gradient_native_exports);
28
- var import_expo_linear_gradient = require("expo-linear-gradient");
28
+ var import_jsx_runtime = require("react/jsx-runtime"),
29
+ import_native = require("@tamagui/native");
30
+ function LinearGradient(props) {
31
+ var state = (0, import_native.getLinearGradient)().state;
32
+ if (state.enabled && state.Component) {
33
+ var ExpoLinearGradient = state.Component;
34
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(ExpoLinearGradient, {
35
+ ...props
36
+ });
37
+ }
38
+ console.warn("Warning: Must call import '@tamagui/native/setup-expo-linear-gradient' at root");
39
+ }
29
40
  //# sourceMappingURL=linear-gradient.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["linear_gradient_native_exports","__export","LinearGradient","import_expo_linear_gradient","module","exports","__toCommonJS","require"],"sources":["../../src/linear-gradient.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,8BAAA;AAAAC,QAAA,CAAAD,8BAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAC,2BAAA,CAAAD;AAAA;AAAAE,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAN,8BAAA;AAAA,IAAAG,2BAAA,GAA+BI,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["linear_gradient_native_exports","__export","LinearGradient","module","exports","__toCommonJS","import_jsx_runtime","require","import_native","props","state","getLinearGradient","enabled","Component","ExpoLinearGradient","jsx","console","warn"],"sources":["../../src/linear-gradient.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,8BAAA;AAAAC,QAAA,CAAAD,8BAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAL,8BAAA;AAAA,IAAAM,kBAAA,GAA4BC,OAAA;EAC5BC,aAAA,GAAkCD,OAAA;AAC3B,SAASL,eAAeO,KAAA,EAAO;EAClC,IAAIC,KAAA,OAAQF,aAAA,CAAAG,iBAAA,EAAkB,EAAED,KAAA;EAChC,IAAIA,KAAA,CAAME,OAAA,IAAWF,KAAA,CAAMG,SAAA,EAAW;IAClC,IAAIC,kBAAA,GAAqBJ,KAAA,CAAMG,SAAA;IAC/B,OAAqB,mBAAAP,kBAAA,CAAAS,GAAA,EAAKD,kBAAA,EAAoB;MAC1C,GAAGL;IACP,CAAC;EACL;EACAO,OAAA,CAAQC,IAAA,CAAK,gFAAgF;AAEjG","ignoreList":[]}
@@ -2,6 +2,11 @@ import { normalizeColor } from "@tamagui/core";
2
2
  import * as React from "react";
3
3
  import { View } from "react-native-web";
4
4
  import { jsx } from "react/jsx-runtime";
5
+ function needsDimensionAwareAngle(start, end) {
6
+ if (!start && !end) return !1;
7
+ const startX = start?.[0] ?? 0.5, endX = end?.[0] ?? 0.5;
8
+ return startX !== endX;
9
+ }
5
10
  function LinearGradient({
6
11
  colors,
7
12
  locations,
@@ -9,19 +14,22 @@ function LinearGradient({
9
14
  end,
10
15
  ...props
11
16
  }) {
12
- const [{ height, width }, setLayout] = React.useState({
17
+ const normalizedStart = start ? Array.isArray(start) ? start : [start.x, start.y] : void 0, normalizedEnd = end ? Array.isArray(end) ? end : [end.x, end.y] : void 0, needsLayout = needsDimensionAwareAngle(
18
+ normalizedStart,
19
+ normalizedEnd
20
+ ), [{ height, width }, setLayout] = React.useState({
13
21
  height: 1,
14
22
  width: 1
15
23
  }), linearGradientBackgroundImage = React.useMemo(() => getLinearGradientBackgroundImage(
16
24
  // @ts-expect-error ok
17
25
  colors,
18
26
  locations,
19
- start ? Array.isArray(start) ? start : [start.x, start.y] : void 0,
20
- end ? Array.isArray(end) ? end : [end.x, end.y] : void 0,
27
+ normalizedStart,
28
+ normalizedEnd,
21
29
  width,
22
30
  height
23
- ), [colors, locations, start, end, width, height]);
24
- return /* @__PURE__ */ jsx(
31
+ ), [colors, locations, normalizedStart, normalizedEnd, width, height]);
32
+ return needsLayout ? /* @__PURE__ */ jsx(
25
33
  View,
26
34
  {
27
35
  ...props,
@@ -35,6 +43,17 @@ function LinearGradient({
35
43
  setLayout((oldLayout) => width2 !== oldLayout.width || height2 !== oldLayout.height ? { height: height2, width: width2 } : oldLayout), props.onLayout && props.onLayout(event);
36
44
  }
37
45
  }
46
+ ) : /* @__PURE__ */ jsx(
47
+ View,
48
+ {
49
+ ...props,
50
+ onLayout: props.onLayout,
51
+ style: [
52
+ props.style,
53
+ // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
54
+ { backgroundImage: linearGradientBackgroundImage }
55
+ ]
56
+ }
38
57
  );
39
58
  }
40
59
  function getLinearGradientBackgroundImage(colors, locations, startPoint, endPoint, width = 1, height = 1) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/linear-gradient.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["width", "height"]
6
6
  }
@@ -2,6 +2,12 @@ import { normalizeColor } from "@tamagui/core";
2
2
  import * as React from "react";
3
3
  import { View } from "react-native-web";
4
4
  import { jsx } from "react/jsx-runtime";
5
+ function needsDimensionAwareAngle(start, end) {
6
+ if (!start && !end) return !1;
7
+ const startX = start?.[0] ?? 0.5,
8
+ endX = end?.[0] ?? 0.5;
9
+ return startX !== endX;
10
+ }
5
11
  function LinearGradient({
6
12
  colors,
7
13
  locations,
@@ -9,7 +15,10 @@ function LinearGradient({
9
15
  end,
10
16
  ...props
11
17
  }) {
12
- const [{
18
+ const normalizedStart = start ? Array.isArray(start) ? start : [start.x, start.y] : void 0,
19
+ normalizedEnd = end ? Array.isArray(end) ? end : [end.x, end.y] : void 0,
20
+ needsLayout = needsDimensionAwareAngle(normalizedStart, normalizedEnd),
21
+ [{
13
22
  height,
14
23
  width
15
24
  }, setLayout] = React.useState({
@@ -18,8 +27,8 @@ function LinearGradient({
18
27
  }),
19
28
  linearGradientBackgroundImage = React.useMemo(() => getLinearGradientBackgroundImage(
20
29
  // @ts-expect-error ok
21
- colors, locations, start ? Array.isArray(start) ? start : [start.x, start.y] : void 0, end ? Array.isArray(end) ? end : [end.x, end.y] : void 0, width, height), [colors, locations, start, end, width, height]);
22
- return /* @__PURE__ */jsx(View, {
30
+ colors, locations, normalizedStart, normalizedEnd, width, height), [colors, locations, normalizedStart, normalizedEnd, width, height]);
31
+ return needsLayout ? /* @__PURE__ */jsx(View, {
23
32
  ...props,
24
33
  style: [props.style,
25
34
  // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
@@ -36,6 +45,14 @@ function LinearGradient({
36
45
  width: width2
37
46
  } : oldLayout), props.onLayout && props.onLayout(event);
38
47
  }
48
+ }) : /* @__PURE__ */jsx(View, {
49
+ ...props,
50
+ onLayout: props.onLayout,
51
+ style: [props.style,
52
+ // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
53
+ {
54
+ backgroundImage: linearGradientBackgroundImage
55
+ }]
39
56
  });
40
57
  }
41
58
  function getLinearGradientBackgroundImage(colors, locations, startPoint, endPoint, width = 1, height = 1) {
@@ -1 +1 @@
1
- {"version":3,"names":["normalizeColor","React","View","jsx","LinearGradient","colors","locations","start","end","props","height","width","setLayout","useState","linearGradientBackgroundImage","useMemo","getLinearGradientBackgroundImage","Array","isArray","x","y","style","backgroundImage","onLayout","event","width2","height2","nativeEvent","layout","oldLayout","startPoint","endPoint","gradientColors","calculateGradientColors","calculatePseudoAngle","join","getControlPoints","correctedStartPoint","correctedEndPoint","py","px","Math","atan2","PI","map","color","index","output","percentage","max","min"],"sources":["../../src/linear-gradient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["normalizeColor","React","View","jsx","needsDimensionAwareAngle","start","end","startX","endX","LinearGradient","colors","locations","props","normalizedStart","Array","isArray","x","y","normalizedEnd","needsLayout","height","width","setLayout","useState","linearGradientBackgroundImage","useMemo","getLinearGradientBackgroundImage","style","backgroundImage","onLayout","event","width2","height2","nativeEvent","layout","oldLayout","startPoint","endPoint","gradientColors","calculateGradientColors","calculatePseudoAngle","join","getControlPoints","correctedStartPoint","correctedEndPoint","py","px","Math","atan2","PI","map","color","index","output","percentage","max","min"],"sources":["../../src/linear-gradient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,14 @@
1
- import { LinearGradient } from "expo-linear-gradient";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { getLinearGradient } from "@tamagui/native";
3
+ function LinearGradient(props) {
4
+ var state = getLinearGradient().state;
5
+ if (state.enabled && state.Component) {
6
+ var ExpoLinearGradient = state.Component;
7
+ return /* @__PURE__ */_jsx(ExpoLinearGradient, {
8
+ ...props
9
+ });
10
+ }
11
+ console.warn("Warning: Must call import '@tamagui/native/setup-expo-linear-gradient' at root");
12
+ }
2
13
  export { LinearGradient };
3
14
  //# sourceMappingURL=linear-gradient.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LinearGradient"],"sources":["../../src/linear-gradient.native.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,cAAA,QAAsB","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","getLinearGradient","LinearGradient","props","state","enabled","Component","ExpoLinearGradient","console","warn"],"sources":["../../src/linear-gradient.native.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAOC,IAAA,QAAY;AAC5B,SAASC,iBAAA,QAAyB;AAC3B,SAASC,eAAeC,KAAA,EAAO;EAClC,IAAIC,KAAA,GAAQH,iBAAA,CAAkB,EAAEG,KAAA;EAChC,IAAIA,KAAA,CAAMC,OAAA,IAAWD,KAAA,CAAME,SAAA,EAAW;IAClC,IAAIC,kBAAA,GAAqBH,KAAA,CAAME,SAAA;IAC/B,OAAqB,eAAAN,IAAA,CAAKO,kBAAA,EAAoB;MAC1C,GAAGJ;IACP,CAAC;EACL;EACAK,OAAA,CAAQC,IAAA,CAAK,gFAAgF;AAEjG","ignoreList":[]}
@@ -2,6 +2,11 @@ import { normalizeColor } from "@tamagui/core";
2
2
  import * as React from "react";
3
3
  import { View } from "react-native-web";
4
4
  import { jsx } from "react/jsx-runtime";
5
+ function needsDimensionAwareAngle(start, end) {
6
+ if (!start && !end) return !1;
7
+ const startX = start?.[0] ?? 0.5, endX = end?.[0] ?? 0.5;
8
+ return startX !== endX;
9
+ }
5
10
  function LinearGradient({
6
11
  colors,
7
12
  locations,
@@ -9,19 +14,22 @@ function LinearGradient({
9
14
  end,
10
15
  ...props
11
16
  }) {
12
- const [{ height, width }, setLayout] = React.useState({
17
+ const normalizedStart = start ? Array.isArray(start) ? start : [start.x, start.y] : void 0, normalizedEnd = end ? Array.isArray(end) ? end : [end.x, end.y] : void 0, needsLayout = needsDimensionAwareAngle(
18
+ normalizedStart,
19
+ normalizedEnd
20
+ ), [{ height, width }, setLayout] = React.useState({
13
21
  height: 1,
14
22
  width: 1
15
23
  }), linearGradientBackgroundImage = React.useMemo(() => getLinearGradientBackgroundImage(
16
24
  // @ts-expect-error ok
17
25
  colors,
18
26
  locations,
19
- start ? Array.isArray(start) ? start : [start.x, start.y] : void 0,
20
- end ? Array.isArray(end) ? end : [end.x, end.y] : void 0,
27
+ normalizedStart,
28
+ normalizedEnd,
21
29
  width,
22
30
  height
23
- ), [colors, locations, start, end, width, height]);
24
- return /* @__PURE__ */ jsx(
31
+ ), [colors, locations, normalizedStart, normalizedEnd, width, height]);
32
+ return needsLayout ? /* @__PURE__ */ jsx(
25
33
  View,
26
34
  {
27
35
  ...props,
@@ -35,6 +43,17 @@ function LinearGradient({
35
43
  setLayout((oldLayout) => width2 !== oldLayout.width || height2 !== oldLayout.height ? { height: height2, width: width2 } : oldLayout), props.onLayout && props.onLayout(event);
36
44
  }
37
45
  }
46
+ ) : /* @__PURE__ */ jsx(
47
+ View,
48
+ {
49
+ ...props,
50
+ onLayout: props.onLayout,
51
+ style: [
52
+ props.style,
53
+ // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
54
+ { backgroundImage: linearGradientBackgroundImage }
55
+ ]
56
+ }
38
57
  );
39
58
  }
40
59
  function getLinearGradientBackgroundImage(colors, locations, startPoint, endPoint, width = 1, height = 1) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/linear-gradient.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["width", "height"]
6
6
  }
@@ -2,6 +2,12 @@ import { normalizeColor } from "@tamagui/core";
2
2
  import * as React from "react";
3
3
  import { View } from "react-native-web";
4
4
  import { jsx } from "react/jsx-runtime";
5
+ function needsDimensionAwareAngle(start, end) {
6
+ if (!start && !end) return !1;
7
+ const startX = start?.[0] ?? 0.5,
8
+ endX = end?.[0] ?? 0.5;
9
+ return startX !== endX;
10
+ }
5
11
  function LinearGradient({
6
12
  colors,
7
13
  locations,
@@ -9,7 +15,10 @@ function LinearGradient({
9
15
  end,
10
16
  ...props
11
17
  }) {
12
- const [{
18
+ const normalizedStart = start ? Array.isArray(start) ? start : [start.x, start.y] : void 0,
19
+ normalizedEnd = end ? Array.isArray(end) ? end : [end.x, end.y] : void 0,
20
+ needsLayout = needsDimensionAwareAngle(normalizedStart, normalizedEnd),
21
+ [{
13
22
  height,
14
23
  width
15
24
  }, setLayout] = React.useState({
@@ -18,8 +27,8 @@ function LinearGradient({
18
27
  }),
19
28
  linearGradientBackgroundImage = React.useMemo(() => getLinearGradientBackgroundImage(
20
29
  // @ts-expect-error ok
21
- colors, locations, start ? Array.isArray(start) ? start : [start.x, start.y] : void 0, end ? Array.isArray(end) ? end : [end.x, end.y] : void 0, width, height), [colors, locations, start, end, width, height]);
22
- return /* @__PURE__ */jsx(View, {
30
+ colors, locations, normalizedStart, normalizedEnd, width, height), [colors, locations, normalizedStart, normalizedEnd, width, height]);
31
+ return needsLayout ? /* @__PURE__ */jsx(View, {
23
32
  ...props,
24
33
  style: [props.style,
25
34
  // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
@@ -36,6 +45,14 @@ function LinearGradient({
36
45
  width: width2
37
46
  } : oldLayout), props.onLayout && props.onLayout(event);
38
47
  }
48
+ }) : /* @__PURE__ */jsx(View, {
49
+ ...props,
50
+ onLayout: props.onLayout,
51
+ style: [props.style,
52
+ // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
53
+ {
54
+ backgroundImage: linearGradientBackgroundImage
55
+ }]
39
56
  });
40
57
  }
41
58
  function getLinearGradientBackgroundImage(colors, locations, startPoint, endPoint, width = 1, height = 1) {
@@ -1 +1 @@
1
- {"version":3,"names":["normalizeColor","React","View","jsx","LinearGradient","colors","locations","start","end","props","height","width","setLayout","useState","linearGradientBackgroundImage","useMemo","getLinearGradientBackgroundImage","Array","isArray","x","y","style","backgroundImage","onLayout","event","width2","height2","nativeEvent","layout","oldLayout","startPoint","endPoint","gradientColors","calculateGradientColors","calculatePseudoAngle","join","getControlPoints","correctedStartPoint","correctedEndPoint","py","px","Math","atan2","PI","map","color","index","output","percentage","max","min"],"sources":["../../src/linear-gradient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["normalizeColor","React","View","jsx","needsDimensionAwareAngle","start","end","startX","endX","LinearGradient","colors","locations","props","normalizedStart","Array","isArray","x","y","normalizedEnd","needsLayout","height","width","setLayout","useState","linearGradientBackgroundImage","useMemo","getLinearGradientBackgroundImage","style","backgroundImage","onLayout","event","width2","height2","nativeEvent","layout","oldLayout","startPoint","endPoint","gradientColors","calculateGradientColors","calculatePseudoAngle","join","getControlPoints","correctedStartPoint","correctedEndPoint","py","px","Math","atan2","PI","map","color","index","output","percentage","max","min"],"sources":["../../src/linear-gradient.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -22,8 +22,19 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
22
22
  }), mod);
23
23
  var linear_gradient_native_exports = {};
24
24
  __export(linear_gradient_native_exports, {
25
- LinearGradient: () => import_expo_linear_gradient.LinearGradient
25
+ LinearGradient: () => LinearGradient
26
26
  });
27
27
  module.exports = __toCommonJS(linear_gradient_native_exports);
28
- var import_expo_linear_gradient = require("expo-linear-gradient");
28
+ var import_jsx_runtime = require("react/jsx-runtime"),
29
+ import_native = require("@tamagui/native");
30
+ function LinearGradient(props) {
31
+ var state = (0, import_native.getLinearGradient)().state;
32
+ if (state.enabled && state.Component) {
33
+ var ExpoLinearGradient = state.Component;
34
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(ExpoLinearGradient, {
35
+ ...props
36
+ });
37
+ }
38
+ console.warn("Warning: Must call import '@tamagui/native/setup-expo-linear-gradient' at root");
39
+ }
29
40
  //# sourceMappingURL=linear-gradient.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["linear_gradient_native_exports","__export","LinearGradient","import_expo_linear_gradient","module","exports","__toCommonJS","require"],"sources":["../../src/linear-gradient.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,8BAAA;AAAAC,QAAA,CAAAD,8BAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAC,2BAAA,CAAAD;AAAA;AAAAE,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAN,8BAAA;AAAA,IAAAG,2BAAA,GAA+BI,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["linear_gradient_native_exports","__export","LinearGradient","module","exports","__toCommonJS","import_jsx_runtime","require","import_native","props","state","getLinearGradient","enabled","Component","ExpoLinearGradient","jsx","console","warn"],"sources":["../../src/linear-gradient.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,8BAAA;AAAAC,QAAA,CAAAD,8BAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAL,8BAAA;AAAA,IAAAM,kBAAA,GAA4BC,OAAA;EAC5BC,aAAA,GAAkCD,OAAA;AAC3B,SAASL,eAAeO,KAAA,EAAO;EAClC,IAAIC,KAAA,OAAQF,aAAA,CAAAG,iBAAA,EAAkB,EAAED,KAAA;EAChC,IAAIA,KAAA,CAAME,OAAA,IAAWF,KAAA,CAAMG,SAAA,EAAW;IAClC,IAAIC,kBAAA,GAAqBJ,KAAA,CAAMG,SAAA;IAC/B,OAAqB,mBAAAP,kBAAA,CAAAS,GAAA,EAAKD,kBAAA,EAAoB;MAC1C,GAAGL;IACP,CAAC;EACL;EACAO,OAAA,CAAQC,IAAA,CAAK,gFAAgF;AAEjG","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/linear-gradient",
3
- "version": "2.0.0-1769320275396",
3
+ "version": "2.0.0-1769401121849",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "*.css"
@@ -39,11 +39,12 @@
39
39
  }
40
40
  },
41
41
  "dependencies": {
42
- "@tamagui/core": "2.0.0-1769320275396",
43
- "@tamagui/stacks": "2.0.0-1769320275396"
42
+ "@tamagui/core": "2.0.0-1769401121849",
43
+ "@tamagui/native": "2.0.0-1769401121849",
44
+ "@tamagui/stacks": "2.0.0-1769401121849"
44
45
  },
45
46
  "devDependencies": {
46
- "@tamagui/build": "2.0.0-1769320275396",
47
+ "@tamagui/build": "2.0.0-1769401121849",
47
48
  "expo-linear-gradient": "~15.0.7",
48
49
  "react": "*",
49
50
  "react-native": "0.81.5"
@@ -1,2 +1,15 @@
1
- export { LinearGradient } from 'expo-linear-gradient'
1
+ import { getLinearGradient } from '@tamagui/native'
2
+
2
3
  export type { LinearGradientProps, LinearGradientPoint } from 'expo-linear-gradient'
4
+
5
+ export function LinearGradient(props: any) {
6
+ const state = getLinearGradient().state
7
+ if (state.enabled && state.Component) {
8
+ const ExpoLinearGradient = state.Component
9
+ return <ExpoLinearGradient {...props} />
10
+ }
11
+ console.warn(
12
+ `Warning: Must call import '@tamagui/native/setup-expo-linear-gradient' at root`
13
+ )
14
+ return
15
+ }
@@ -1,16 +1,40 @@
1
- export type { LinearGradientProps, LinearGradientPoint } from 'expo-linear-gradient'
1
+ /**
2
+ * Adapted from expo-linear-gradient
3
+ * https://github.com/expo/expo/blob/main/packages/expo-linear-gradient/src/LinearGradient.web.tsx
4
+ *
5
+ * MIT License
6
+ * Copyright (c) 2015-present 650 Industries, Inc. (aka Expo)
7
+ */
8
+
2
9
  import { normalizeColor } from '@tamagui/core'
3
10
  import type {
4
- LinearGradientProps,
5
11
  LinearGradientPoint,
12
+ LinearGradientProps,
6
13
  NativeLinearGradientPoint,
7
14
  } from 'expo-linear-gradient'
8
15
 
9
- // copied from https://raw.githubusercontent.com/expo/expo/main/packages/expo-linear-gradient/src/LinearGradient.web.tsx
16
+ export type { LinearGradientPoint, LinearGradientProps } from 'expo-linear-gradient'
10
17
 
11
18
  import * as React from 'react'
12
19
  import { View } from 'react-native'
13
20
 
21
+ // check if start/end points require dimension-aware angle calculation
22
+ function needsDimensionAwareAngle(
23
+ start?: NativeLinearGradientPoint | null,
24
+ end?: NativeLinearGradientPoint | null
25
+ ): boolean {
26
+ // default is top-to-bottom: start [0.5, 0] to end [0.5, 1]
27
+ // for this case (and any case where x values are equal), width doesn't matter
28
+ // we only need onLayout when x values differ AND could create non-standard angles
29
+ if (!start && !end) return false
30
+
31
+ const startX = start?.[0] ?? 0.5
32
+ const endX = end?.[0] ?? 0.5
33
+
34
+ // if x coordinates are different, angle depends on aspect ratio
35
+ return startX !== endX
36
+ }
37
+
14
38
  export function LinearGradient({
15
39
  colors,
16
40
  locations,
@@ -18,6 +42,18 @@ export function LinearGradient({
18
42
  end,
19
43
  ...props
20
44
  }: LinearGradientProps) {
45
+ const normalizedStart = start
46
+ ? Array.isArray(start)
47
+ ? start
48
+ : [start.x, start.y]
49
+ : undefined
50
+ const normalizedEnd = end ? (Array.isArray(end) ? end : [end.x, end.y]) : undefined
51
+
52
+ const needsLayout = needsDimensionAwareAngle(
53
+ normalizedStart as NativeLinearGradientPoint,
54
+ normalizedEnd as NativeLinearGradientPoint
55
+ )
56
+
21
57
  const [{ height, width }, setLayout] = React.useState({
22
58
  height: 1,
23
59
  width: 1,
@@ -28,12 +64,27 @@ export function LinearGradient({
28
64
  // @ts-expect-error ok
29
65
  colors,
30
66
  locations,
31
- start ? (Array.isArray(start) ? start : [start.x, start.y]) : undefined,
32
- end ? (Array.isArray(end) ? end : [end.x, end.y]) : undefined,
67
+ normalizedStart as NativeLinearGradientPoint,
68
+ normalizedEnd as NativeLinearGradientPoint,
33
69
  width,
34
70
  height
35
71
  )
36
- }, [colors, locations, start, end, width, height])
72
+ }, [colors, locations, normalizedStart, normalizedEnd, width, height])
73
+
74
+ // if we don't need dimension-aware angles, skip the onLayout overhead
75
+ if (!needsLayout) {
76
+ return (
77
+ <View
78
+ {...props}
79
+ onLayout={props.onLayout}
80
+ style={[
81
+ props.style,
82
+ // @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
83
+ { backgroundImage: linearGradientBackgroundImage },
84
+ ]}
85
+ />
86
+ )
87
+ }
37
88
 
38
89
  return (
39
90
  <View
@@ -1,4 +1,11 @@
1
- export type { LinearGradientProps, LinearGradientPoint } from 'expo-linear-gradient';
1
+ /**
2
+ * Adapted from expo-linear-gradient
3
+ * https://github.com/expo/expo/blob/main/packages/expo-linear-gradient/src/LinearGradient.web.tsx
4
+ *
5
+ * MIT License
6
+ * Copyright (c) 2015-present 650 Industries, Inc. (aka Expo)
7
+ */
2
8
  import type { LinearGradientProps } from 'expo-linear-gradient';
9
+ export type { LinearGradientPoint, LinearGradientProps } from 'expo-linear-gradient';
3
10
  export declare function LinearGradient({ colors, locations, start, end, ...props }: LinearGradientProps): import("react/jsx-runtime").JSX.Element;
4
11
  //# sourceMappingURL=linear-gradient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"linear-gradient.d.ts","sourceRoot":"","sources":["../src/linear-gradient.tsx"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAEpF,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,sBAAsB,CAAA;AAO7B,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,mBAAmB,2CA4CrB"}
1
+ {"version":3,"file":"linear-gradient.d.ts","sourceRoot":"","sources":["../src/linear-gradient.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAEV,mBAAmB,EAEpB,MAAM,sBAAsB,CAAA;AAE7B,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAsBpF,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,mBAAmB,2CAuErB"}
@@ -1,3 +1,3 @@
1
- export { LinearGradient } from 'expo-linear-gradient';
2
1
  export type { LinearGradientProps, LinearGradientPoint } from 'expo-linear-gradient';
2
+ export declare function LinearGradient(props: any): import("react/jsx-runtime").JSX.Element | undefined;
3
3
  //# sourceMappingURL=linear-gradient.native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"linear-gradient.native.d.ts","sourceRoot":"","sources":["../src/linear-gradient.native.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"linear-gradient.native.d.ts","sourceRoot":"","sources":["../src/linear-gradient.native.tsx"],"names":[],"mappings":"AAEA,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAEpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,uDAUxC"}