@tamagui/linear-gradient 2.0.0-rc.4 → 2.0.0-rc.40
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.
- package/dist/cjs/LinearGradient.cjs +64 -52
- package/dist/cjs/LinearGradient.native.js +68 -57
- package/dist/cjs/LinearGradient.native.js.map +1 -1
- package/dist/cjs/index.cjs +12 -10
- package/dist/cjs/index.native.js +12 -10
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/linear-gradient.cjs +90 -65
- package/dist/cjs/linear-gradient.native.js +16 -13
- package/dist/cjs/linear-gradient.native.js.map +1 -1
- package/dist/esm/LinearGradient.mjs +48 -38
- package/dist/esm/LinearGradient.mjs.map +1 -1
- package/dist/esm/LinearGradient.native.js +51 -42
- package/dist/esm/LinearGradient.native.js.map +1 -1
- package/dist/esm/index.js +2 -6
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/linear-gradient.mjs +62 -39
- package/dist/esm/linear-gradient.mjs.map +1 -1
- package/dist/esm/linear-gradient.native.js +2 -1
- package/dist/esm/linear-gradient.native.js.map +1 -1
- package/dist/jsx/LinearGradient.mjs +48 -38
- package/dist/jsx/LinearGradient.mjs.map +1 -1
- package/dist/jsx/LinearGradient.native.js +68 -57
- package/dist/jsx/LinearGradient.native.js.map +1 -1
- package/dist/jsx/index.js +2 -6
- package/dist/jsx/index.js.map +1 -6
- package/dist/jsx/index.native.js +12 -10
- package/dist/jsx/linear-gradient.mjs +62 -39
- package/dist/jsx/linear-gradient.mjs.map +1 -1
- package/dist/jsx/linear-gradient.native.js +16 -13
- package/dist/jsx/linear-gradient.native.js.map +1 -1
- package/package.json +10 -13
- package/dist/cjs/LinearGradient.js +0 -57
- package/dist/cjs/LinearGradient.js.map +0 -6
- package/dist/cjs/index.js +0 -21
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/linear-gradient.js +0 -118
- package/dist/cjs/linear-gradient.js.map +0 -6
- package/dist/esm/LinearGradient.js +0 -44
- package/dist/esm/LinearGradient.js.map +0 -6
- package/dist/esm/linear-gradient.js +0 -97
- package/dist/esm/linear-gradient.js.map +0 -6
- package/dist/jsx/LinearGradient.js +0 -44
- package/dist/jsx/LinearGradient.js.map +0 -6
- package/dist/jsx/linear-gradient.js +0 -97
- package/dist/jsx/linear-gradient.js.map +0 -6
|
@@ -3,44 +3,54 @@ import { YStack } from "@tamagui/stacks";
|
|
|
3
3
|
import { LinearGradient as ExpoLinearGradient } from "./linear-gradient.mjs";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
const LinearGradientFrame = styled(YStack, {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return
|
|
6
|
+
name: "LinearGradient",
|
|
7
|
+
overflow: "hidden",
|
|
8
|
+
position: "relative"
|
|
9
|
+
});
|
|
10
|
+
const LinearGradient = LinearGradientFrame.styleable((propsIn, ref) => {
|
|
11
|
+
const props = useProps(propsIn);
|
|
12
|
+
const {
|
|
13
|
+
start,
|
|
14
|
+
end,
|
|
15
|
+
colors: colorsProp,
|
|
16
|
+
locations,
|
|
17
|
+
children,
|
|
18
|
+
...stackProps
|
|
19
|
+
} = props;
|
|
20
|
+
const theme = useTheme();
|
|
21
|
+
let colors = props.colors?.map(c => {
|
|
22
|
+
return theme[c]?.get("web") ?? c;
|
|
23
|
+
}) || [];
|
|
24
|
+
if (process.env.NODE_ENV !== "production") {
|
|
25
|
+
if (colors.some(c => {
|
|
23
26
|
const normalized = normalizeColor(c);
|
|
24
|
-
if (!normalized || normalized.startsWith("$"))
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
27
|
+
if (!normalized || normalized.startsWith("$")) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
})) {
|
|
31
|
+
console.error(`LinearGradient: "colors" prop contains invalid color tokens: ${colors} fallback to default colors: ["#000", "#fff"]`);
|
|
32
|
+
colors = ["#000", "#fff"];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return /* @__PURE__ */jsxs(LinearGradientFrame, {
|
|
36
|
+
ref,
|
|
37
|
+
...stackProps,
|
|
38
|
+
children: [/* @__PURE__ */jsx(ExpoLinearGradient, {
|
|
39
|
+
start,
|
|
40
|
+
end,
|
|
41
|
+
colors,
|
|
42
|
+
locations,
|
|
43
|
+
style: gradientStyle
|
|
44
|
+
}), children]
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
const gradientStyle = {
|
|
48
|
+
position: "absolute",
|
|
49
|
+
top: 0,
|
|
50
|
+
left: 0,
|
|
51
|
+
right: 0,
|
|
52
|
+
bottom: 0,
|
|
53
|
+
zIndex: 0
|
|
54
|
+
};
|
|
45
55
|
export { LinearGradient };
|
|
46
56
|
//# sourceMappingURL=LinearGradient.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["normalizeColor","styled","useProps","useTheme","YStack","LinearGradient","ExpoLinearGradient","jsx","jsxs","LinearGradientFrame","name","overflow","position","styleable","propsIn","ref","props","start","end","colors","colorsProp","locations","children","stackProps","theme","map","c","get","process","env","NODE_ENV","some","normalized","startsWith","console","error","style","gradientStyle","top","left","right","bottom","zIndex"],"sources":["../../src/LinearGradient.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,cAAA,EAAgBC,MAAA,EAAQC,QAAA,EAAUC,QAAA,QAAgB;AAC3D,SAASC,MAAA,QAAc;AAIvB,SAASC,cAAA,IAAkBC,kBAAA,QAA0B;AA6C/C,SACEC,GAAA,EADFC,IAAA;AAnCN,MAAMC,mBAAA,GAAsBR,MAAA,CAAOG,MAAA,EAAQ;
|
|
1
|
+
{"version":3,"names":["normalizeColor","styled","useProps","useTheme","YStack","LinearGradient","ExpoLinearGradient","jsx","jsxs","LinearGradientFrame","name","overflow","position","styleable","propsIn","ref","props","start","end","colors","colorsProp","locations","children","stackProps","theme","map","c","get","process","env","NODE_ENV","some","normalized","startsWith","console","error","style","gradientStyle","top","left","right","bottom","zIndex"],"sources":["../../src/LinearGradient.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,cAAA,EAAgBC,MAAA,EAAQC,QAAA,EAAUC,QAAA,QAAgB;AAC3D,SAASC,MAAA,QAAc;AAIvB,SAASC,cAAA,IAAkBC,kBAAA,QAA0B;AA6C/C,SACEC,GAAA,EADFC,IAAA;AAnCN,MAAMC,mBAAA,GAAsBR,MAAA,CAAOG,MAAA,EAAQ;EACzCM,IAAA,EAAM;EACNC,QAAA,EAAU;EACVC,QAAA,EAAU;AACZ,CAAC;AAEM,MAAMP,cAAA,GAAiBI,mBAAA,CAAoBI,SAAA,CAChD,CAACC,OAAA,EAASC,GAAA,KAAQ;EAChB,MAAMC,KAAA,GAAQd,QAAA,CAASY,OAAO;EAE9B,MAAM;IAAEG,KAAA;IAAOC,GAAA;IAAKC,MAAA,EAAQC,UAAA;IAAYC,SAAA;IAAWC,QAAA;IAAU,GAAGC;EAAW,IAAIP,KAAA;EAC/E,MAAMQ,KAAA,GAAQrB,QAAA,CAAS;EAEvB,IAAIgB,MAAA,GACFH,KAAA,CAAMG,MAAA,EAAQM,GAAA,CAAKC,CAAA,IAAM;IACvB,OAAQF,KAAA,CAAME,CAAC,GAAGC,GAAA,CAAI,KAAK,KAAgBD,CAAA;EAC7C,CAAC,KAAK,EAAC;EAET,IAAIE,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,cAAc;IACzC,IACEX,MAAA,CAAOY,IAAA,CAAML,CAAA,IAAM;MACjB,MAAMM,UAAA,GAAahC,cAAA,CAAe0B,CAAC;MACnC,IAAI,CAACM,UAAA,IAAcA,UAAA,CAAWC,UAAA,CAAW,GAAG,GAAG;QAC7C,OAAO;MACT;IACF,CAAC,GACD;MACAC,OAAA,CAAQC,KAAA,CACN,gEAAgEhB,MAAM,+CACxE;MACAA,MAAA,GAAS,CAAC,QAAQ,MAAM;IAC1B;EACF;EAEA,OACE,eAAAX,IAAA,CAACC,mBAAA;IAAoBM,GAAA;IAAkB,GAAGQ,UAAA;IACxCD,QAAA,kBAAAf,GAAA,CAACD,kBAAA;MACCW,KAAA;MACAC,GAAA;MACAC,MAAA;MACAE,SAAA;MACAe,KAAA,EAAOC;IAAA,CACT,GACCf,QAAA;EAAA,CACH;AAEJ,CACF;AAIA,MAAMe,aAAA,GAA2B;EAC/BzB,QAAA,EAAU;EACV0B,GAAA,EAAK;EACLC,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,MAAA,EAAQ;EACRC,MAAA,EAAQ;AACV","ignoreList":[]}
|
|
@@ -3,48 +3,57 @@ import { normalizeColor, styled, useProps, useTheme } from "@tamagui/core";
|
|
|
3
3
|
import { YStack } from "@tamagui/stacks";
|
|
4
4
|
import { LinearGradient as ExpoLinearGradient } from "./linear-gradient.native.js";
|
|
5
5
|
var LinearGradientFrame = styled(YStack, {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
6
|
+
name: "LinearGradient",
|
|
7
|
+
overflow: "hidden",
|
|
8
|
+
position: "relative"
|
|
9
|
+
});
|
|
10
|
+
var LinearGradient = LinearGradientFrame.styleable(function (propsIn, ref) {
|
|
11
|
+
var _props_colors;
|
|
12
|
+
var props = useProps(propsIn);
|
|
13
|
+
var {
|
|
14
|
+
start,
|
|
15
|
+
end,
|
|
16
|
+
colors: colorsProp,
|
|
17
|
+
locations,
|
|
18
|
+
children,
|
|
19
|
+
...stackProps
|
|
20
|
+
} = props;
|
|
21
|
+
var theme = useTheme();
|
|
22
|
+
var colors = ((_props_colors = props.colors) === null || _props_colors === void 0 ? void 0 : _props_colors.map(function (c) {
|
|
23
|
+
var _theme_c;
|
|
24
|
+
var _theme_c_get;
|
|
25
|
+
return (_theme_c_get = (_theme_c = theme[c]) === null || _theme_c === void 0 ? void 0 : _theme_c.get("web")) !== null && _theme_c_get !== void 0 ? _theme_c_get : c;
|
|
26
|
+
})) || [];
|
|
27
|
+
if (process.env.NODE_ENV !== "production") {
|
|
28
|
+
if (colors.some(function (c) {
|
|
27
29
|
var normalized = normalizeColor(c);
|
|
28
|
-
if (!normalized || normalized.startsWith("$"))
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
30
|
+
if (!normalized || normalized.startsWith("$")) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
})) {
|
|
34
|
+
console.error(`LinearGradient: "colors" prop contains invalid color tokens: ${colors} fallback to default colors: ["#000", "#fff"]`);
|
|
35
|
+
colors = ["#000", "#fff"];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return /* @__PURE__ */_jsxs(LinearGradientFrame, {
|
|
39
|
+
ref,
|
|
40
|
+
...stackProps,
|
|
41
|
+
children: [/* @__PURE__ */_jsx(ExpoLinearGradient, {
|
|
42
|
+
start,
|
|
43
|
+
end,
|
|
44
|
+
colors,
|
|
45
|
+
locations,
|
|
46
|
+
style: gradientStyle
|
|
47
|
+
}), children]
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
var gradientStyle = {
|
|
51
|
+
position: "absolute",
|
|
52
|
+
top: 0,
|
|
53
|
+
left: 0,
|
|
54
|
+
right: 0,
|
|
55
|
+
bottom: 0,
|
|
56
|
+
zIndex: 0
|
|
57
|
+
};
|
|
49
58
|
export { LinearGradient };
|
|
50
59
|
//# sourceMappingURL=LinearGradient.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","normalizeColor","styled","useProps","useTheme","YStack","LinearGradient","ExpoLinearGradient","LinearGradientFrame","name","overflow","position","styleable","propsIn","ref","_props_colors","props","start","end","colors","colorsProp","locations","children","stackProps","theme","map","c","_theme_c","_theme_c_get","get","process","env","NODE_ENV","some","normalized","startsWith","console","error","style","gradientStyle","top","left","right"
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","normalizeColor","styled","useProps","useTheme","YStack","LinearGradient","ExpoLinearGradient","LinearGradientFrame","name","overflow","position","styleable","propsIn","ref","_props_colors","props","start","end","colors","colorsProp","locations","children","stackProps","theme","map","c","_theme_c","_theme_c_get","get","process","env","NODE_ENV","some","normalized","startsWith","console","error","style","gradientStyle","top","left","right"],"sources":["../../src/LinearGradient.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,GAAA,IAAAC,IAAA,EAAAC,IAAgB,IAAAC,KAAQ,QAAU,mBAAgB;AAC3D,SAASC,cAAc,EAAAC,MAAA,EAAAC,QAAA,EAAAC,QAAA;AAIvB,SAASC,MAAA,yBAAkB;AA6CrB,SACEC,cADF,IAAAC,kBAAA;AAnCN,IAAAC,mBAAM,GAAAN,MAAsB,CAAAG,MAAO;EACjCI,IAAA,EAAM;EACNC,QAAA,EAAU;EACVC,QAAA,EAAU;AACZ,CAAC;AAEM,IAAAL,cAAM,GAAAE,mBAAiB,CAAAI,SAAoB,WAAAC,OAAA,EAAAC,GAAA;EAChD,IAACC,aAAS;EACR,IAAAC,KAAM,GAAAb,QAAQ,CAAAU,OAAS;EAEvB;IAAAI,KAAQ;IAAAC,GAAA;IAAOC,MAAK,EAAAC,UAAQ;IAAAC,SAAY;IAAAC,QAAW;IAAA,GAAAC;EAAa,IAAWP,KAAI;EAC/E,IAAAQ,KAAM,GAAApB,QAAQ;EAEd,IAAAe,MAAI,KACFJ,aAAM,GAAQC,KAAK,CAAAG,MAAM,cAAAJ,aAAA,uBAAAA,aAAA,CAAAU,GAAA,WAAAC,CAAA;IACvB,IAAAC,QAAQ;IACV,IAACC,YAAM;IAET,OAAI,CAAAA,YAAY,IAAAD,QAAa,GAAAH,KAAA,CAAAE,CAAA,CAAc,cAAAC,QAAA,uBAAAA,QAAA,CAAAE,GAAA,qBAAAD,YAAA,cAAAA,YAAA,GAAAF,CAAA;EACzC,SACE;EACE,IAAAI,OAAA,CAAMC,GAAA,CAAAC,QAAA,KAAa,YAAgB;IACnC,IAAAb,MAAK,CAAAc,IAAA,WAAcP,CAAA;MACjB,IAAAQ,UAAO,GAAAjC,cAAA,CAAAyB,CAAA;MAAA,IACT,CAAAQ,UAAA,IAAAA,UAAA,CAAAC,UAAA;QACD,OACD;MACA;IAAQ;MACgEC,OACxE,CAAAC,KAAA,iEAAAlB,MAAA;MACAA,MAAA,IACF,QACF,OAEA;IAEI;EAAA;EAAC,sBAAAnB,KAAA,CAAAQ,mBAAA;IAAAM,GAAA;IACC,GAAAS,UACA;IAAAD,QACA,kBACAxB,IAAA,CAAAS,kBAAA;MAAAU,KACA;MAAOC,GAAA;MACTC,MAAA;MACCE,SAAA;MACHiB,KAAA,EAAAC;IAEJ,IACFjB,QAAA;EAKE;AAAU,EACV;AAAK,IACLiB,aAAM;EACN5B,QAAO;EACP6B,GAAA;EACAC,IAAA;EACFC,KAAA","ignoreList":[]}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -3,9 +3,9 @@ import * as React from "react";
|
|
|
3
3
|
import { View } from "react-native-web";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
function needsDimensionAwareAngle(start, end) {
|
|
6
|
-
if (!start && !end) return
|
|
7
|
-
const startX = start?.[0] ?? 0.5
|
|
8
|
-
|
|
6
|
+
if (!start && !end) return false;
|
|
7
|
+
const startX = start?.[0] ?? 0.5;
|
|
8
|
+
const endX = end?.[0] ?? 0.5;
|
|
9
9
|
return startX !== endX;
|
|
10
10
|
}
|
|
11
11
|
function LinearGradient({
|
|
@@ -15,20 +15,33 @@ function LinearGradient({
|
|
|
15
15
|
end,
|
|
16
16
|
...props
|
|
17
17
|
}) {
|
|
18
|
-
const normalizedStart = start ? Array.isArray(start) ? start : [start.x, start.y] : void 0
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
const normalizedStart = start ? Array.isArray(start) ? start : [start.x, start.y] : void 0;
|
|
19
|
+
const normalizedEnd = end ? Array.isArray(end) ? end : [end.x, end.y] : void 0;
|
|
20
|
+
const needsLayout = needsDimensionAwareAngle(normalizedStart, normalizedEnd);
|
|
21
|
+
const [{
|
|
22
|
+
height,
|
|
23
|
+
width
|
|
24
|
+
}, setLayout] = React.useState({
|
|
25
|
+
height: 1,
|
|
26
|
+
width: 1
|
|
27
|
+
});
|
|
28
|
+
const linearGradientBackgroundImage = React.useMemo(() => {
|
|
29
|
+
return getLinearGradientBackgroundImage(
|
|
29
30
|
// @ts-expect-error ok
|
|
30
|
-
colors, locations, normalizedStart, normalizedEnd, width, height)
|
|
31
|
-
|
|
31
|
+
colors, locations, normalizedStart, normalizedEnd, width, height);
|
|
32
|
+
}, [colors, locations, normalizedStart, normalizedEnd, width, height]);
|
|
33
|
+
if (!needsLayout) {
|
|
34
|
+
return /* @__PURE__ */jsx(View, {
|
|
35
|
+
...props,
|
|
36
|
+
onLayout: props.onLayout,
|
|
37
|
+
style: [props.style,
|
|
38
|
+
// @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
|
|
39
|
+
{
|
|
40
|
+
backgroundImage: linearGradientBackgroundImage
|
|
41
|
+
}]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return /* @__PURE__ */jsx(View, {
|
|
32
45
|
...props,
|
|
33
46
|
style: [props.style,
|
|
34
47
|
// @ts-ignore: [ts] Property 'backgroundImage' does not exist on type 'ViewStyle'.
|
|
@@ -40,45 +53,55 @@ function LinearGradient({
|
|
|
40
53
|
width: width2,
|
|
41
54
|
height: height2
|
|
42
55
|
} = event.nativeEvent.layout;
|
|
43
|
-
setLayout(oldLayout =>
|
|
44
|
-
height
|
|
45
|
-
|
|
46
|
-
|
|
56
|
+
setLayout(oldLayout => {
|
|
57
|
+
if (width2 !== oldLayout.width || height2 !== oldLayout.height) {
|
|
58
|
+
return {
|
|
59
|
+
height: height2,
|
|
60
|
+
width: width2
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return oldLayout;
|
|
64
|
+
});
|
|
65
|
+
if (props.onLayout) {
|
|
66
|
+
props.onLayout(event);
|
|
67
|
+
}
|
|
47
68
|
}
|
|
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
|
-
}]
|
|
56
69
|
});
|
|
57
70
|
}
|
|
58
71
|
function getLinearGradientBackgroundImage(colors, locations, startPoint, endPoint, width = 1, height = 1) {
|
|
59
72
|
const gradientColors = calculateGradientColors(
|
|
60
73
|
// @ts-expect-error TODO fix numbers
|
|
61
74
|
colors, locations);
|
|
62
|
-
|
|
75
|
+
const angle = calculatePseudoAngle(width, height, startPoint, endPoint);
|
|
76
|
+
return `linear-gradient(${angle}deg, ${gradientColors.join(", ")})`;
|
|
63
77
|
}
|
|
64
78
|
function calculatePseudoAngle(width, height, startPoint, endPoint) {
|
|
65
79
|
const getControlPoints = () => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
let correctedStartPoint = [0, 0];
|
|
81
|
+
if (Array.isArray(startPoint)) {
|
|
82
|
+
correctedStartPoint = [startPoint[0] != null ? startPoint[0] : 0, startPoint[1] != null ? startPoint[1] : 0];
|
|
83
|
+
}
|
|
84
|
+
let correctedEndPoint = [0, 1];
|
|
85
|
+
if (Array.isArray(endPoint)) {
|
|
86
|
+
correctedEndPoint = [endPoint[0] != null ? endPoint[0] : 0, endPoint[1] != null ? endPoint[1] : 1];
|
|
87
|
+
}
|
|
88
|
+
return [correctedStartPoint, correctedEndPoint];
|
|
89
|
+
};
|
|
90
|
+
const [start, end] = getControlPoints();
|
|
91
|
+
start[0] *= width;
|
|
92
|
+
end[0] *= width;
|
|
93
|
+
start[1] *= height;
|
|
94
|
+
end[1] *= height;
|
|
95
|
+
const py = end[1] - start[1];
|
|
96
|
+
const px = end[0] - start[0];
|
|
75
97
|
return 90 + Math.atan2(py, px) * 180 / Math.PI;
|
|
76
98
|
}
|
|
77
99
|
function calculateGradientColors(colors, locations) {
|
|
78
100
|
return colors.map((color, index) => {
|
|
79
101
|
const output = normalizeColor(color);
|
|
80
102
|
if (locations && locations[index] !== void 0) {
|
|
81
|
-
const
|
|
103
|
+
const location = Math.max(0, Math.min(1, locations[index]));
|
|
104
|
+
const percentage = location * 100;
|
|
82
105
|
return `${output} ${percentage}%`;
|
|
83
106
|
}
|
|
84
107
|
return output;
|
|
@@ -1 +1 @@
|
|
|
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","
|
|
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","onLayout","style","backgroundImage","event","width2","height2","nativeEvent","layout","oldLayout","startPoint","endPoint","gradientColors","calculateGradientColors","angle","calculatePseudoAngle","join","getControlPoints","correctedStartPoint","correctedEndPoint","py","px","Math","atan2","PI","map","color","index","output","location","max","min","percentage"],"sources":["../../src/linear-gradient.tsx"],"sourcesContent":[null],"mappings":"AAQA,SAASA,cAAA,QAAsB;AAS/B,YAAYC,KAAA,MAAW;AACvB,SAASC,IAAA,QAAY;AA0Df,SAAAC,GAAA;AAvDN,SAASC,yBACPC,KAAA,EACAC,GAAA,EACS;EAIT,IAAI,CAACD,KAAA,IAAS,CAACC,GAAA,EAAK,OAAO;EAE3B,MAAMC,MAAA,GAASF,KAAA,GAAQ,CAAC,KAAK;EAC7B,MAAMG,IAAA,GAAOF,GAAA,GAAM,CAAC,KAAK;EAGzB,OAAOC,MAAA,KAAWC,IAAA;AACpB;AAEO,SAASC,eAAe;EAC7BC,MAAA;EACAC,SAAA;EACAN,KAAA;EACAC,GAAA;EACA,GAAGM;AACL,GAAwB;EACtB,MAAMC,eAAA,GAAkBR,KAAA,GACpBS,KAAA,CAAMC,OAAA,CAAQV,KAAK,IACjBA,KAAA,GACA,CAACA,KAAA,CAAMW,CAAA,EAAGX,KAAA,CAAMY,CAAC,IACnB;EACJ,MAAMC,aAAA,GAAgBZ,GAAA,GAAOQ,KAAA,CAAMC,OAAA,CAAQT,GAAG,IAAIA,GAAA,GAAM,CAACA,GAAA,CAAIU,CAAA,EAAGV,GAAA,CAAIW,CAAC,IAAK;EAE1E,MAAME,WAAA,GAAcf,wBAAA,CAClBS,eAAA,EACAK,aACF;EAEA,MAAM,CAAC;IAAEE,MAAA;IAAQC;EAAM,GAAGC,SAAS,IAAIrB,KAAA,CAAMsB,QAAA,CAAS;IACpDH,MAAA,EAAQ;IACRC,KAAA,EAAO;EACT,CAAC;EAED,MAAMG,6BAAA,GAAgCvB,KAAA,CAAMwB,OAAA,CAAQ,MAAM;IACxD,OAAOC,gCAAA;IAAA;IAELhB,MAAA,EACAC,SAAA,EACAE,eAAA,EACAK,aAAA,EACAG,KAAA,EACAD,MACF;EACF,GAAG,CAACV,MAAA,EAAQC,SAAA,EAAWE,eAAA,EAAiBK,aAAA,EAAeG,KAAA,EAAOD,MAAM,CAAC;EAGrE,IAAI,CAACD,WAAA,EAAa;IAChB,OACE,eAAAhB,GAAA,CAACD,IAAA;MACE,GAAGU,KAAA;MACJe,QAAA,EAAUf,KAAA,CAAMe,QAAA;MAChBC,KAAA,EAAO,CACLhB,KAAA,CAAMgB,KAAA;MAAA;MAEN;QAAEC,eAAA,EAAiBL;MAA8B;IACnD,CACF;EAEJ;EAEA,OACE,eAAArB,GAAA,CAACD,IAAA;IACE,GAAGU,KAAA;IACJgB,KAAA,EAAO,CACLhB,KAAA,CAAMgB,KAAA;IAAA;IAEN;MAAEC,eAAA,EAAiBL;IAA8B,EACnD;IACAG,QAAA,EAAWG,KAAA,IAAU;MACnB,MAAM;QAAET,KAAA,EAAAU,MAAA;QAAOX,MAAA,EAAAY;MAAO,IAAIF,KAAA,CAAMG,WAAA,CAAYC,MAAA;MAE5CZ,SAAA,CAAWa,SAAA,IAAc;QAEvB,IAAIJ,MAAA,KAAUI,SAAA,CAAUd,KAAA,IAASW,OAAA,KAAWG,SAAA,CAAUf,MAAA,EAAQ;UAC5D,OAAO;YAAEA,MAAA,EAAAY,OAAA;YAAQX,KAAA,EAAAU;UAAM;QACzB;QAEA,OAAOI,SAAA;MACT,CAAC;MAED,IAAIvB,KAAA,CAAMe,QAAA,EAAU;QAClBf,KAAA,CAAMe,QAAA,CAASG,KAAK;MACtB;IACF;EAAA,CACF;AAEJ;AAEA,SAASJ,iCACPhB,MAAA,EACAC,SAAA,EACAyB,UAAA,EACAC,QAAA,EACAhB,KAAA,GAAQ,GACRD,MAAA,GAAS,GACT;EACA,MAAMkB,cAAA,GAAiBC,uBAAA;EAAA;EAErB7B,MAAA,EACAC,SACF;EACA,MAAM6B,KAAA,GAAQC,oBAAA,CAAqBpB,KAAA,EAAOD,MAAA,EAAQgB,UAAA,EAAYC,QAAQ;EACtE,OAAO,mBAAmBG,KAAK,QAAQF,cAAA,CAAeI,IAAA,CAAK,IAAI,CAAC;AAClE;AAEA,SAASD,qBACPpB,KAAA,EACAD,MAAA,EACAgB,UAAA,EACAC,QAAA,EACA;EACA,MAAMM,gBAAA,GAAmBA,CAAA,KAAM;IAC7B,IAAIC,mBAAA,GAA2C,CAAC,GAAG,CAAC;IACpD,IAAI9B,KAAA,CAAMC,OAAA,CAAQqB,UAAU,GAAG;MAC7BQ,mBAAA,GAAsB,CACpBR,UAAA,CAAW,CAAC,KAAK,OAAOA,UAAA,CAAW,CAAC,IAAI,GACxCA,UAAA,CAAW,CAAC,KAAK,OAAOA,UAAA,CAAW,CAAC,IAAI,EAC1C;IACF;IACA,IAAIS,iBAAA,GAAyC,CAAC,GAAK,CAAG;IACtD,IAAI/B,KAAA,CAAMC,OAAA,CAAQsB,QAAQ,GAAG;MAC3BQ,iBAAA,GAAoB,CAClBR,QAAA,CAAS,CAAC,KAAK,OAAOA,QAAA,CAAS,CAAC,IAAI,GACpCA,QAAA,CAAS,CAAC,KAAK,OAAOA,QAAA,CAAS,CAAC,IAAI,EACtC;IACF;IACA,OAAO,CAACO,mBAAA,EAAqBC,iBAAiB;EAChD;EAEA,MAAM,CAACxC,KAAA,EAAOC,GAAG,IAAIqC,gBAAA,CAAiB;EACtCtC,KAAA,CAAM,CAAC,KAAKgB,KAAA;EACZf,GAAA,CAAI,CAAC,KAAKe,KAAA;EACVhB,KAAA,CAAM,CAAC,KAAKe,MAAA;EACZd,GAAA,CAAI,CAAC,KAAKc,MAAA;EACV,MAAM0B,EAAA,GAAKxC,GAAA,CAAI,CAAC,IAAID,KAAA,CAAM,CAAC;EAC3B,MAAM0C,EAAA,GAAKzC,GAAA,CAAI,CAAC,IAAID,KAAA,CAAM,CAAC;EAE3B,OAAO,KAAM2C,IAAA,CAAKC,KAAA,CAAMH,EAAA,EAAIC,EAAE,IAAI,MAAOC,IAAA,CAAKE,EAAA;AAChD;AAEA,SAASX,wBAAwB7B,MAAA,EAAkBC,SAAA,EAA6B;EAC9E,OAAOD,MAAA,CAAOyC,GAAA,CAAI,CAACC,KAAA,EAAeC,KAAA,KAAiC;IACjE,MAAMC,MAAA,GAAStD,cAAA,CAAeoD,KAAK;IACnC,IAAIzC,SAAA,IAAaA,SAAA,CAAU0C,KAAK,MAAM,QAAW;MAC/C,MAAME,QAAA,GAAWP,IAAA,CAAKQ,GAAA,CAAI,GAAGR,IAAA,CAAKS,GAAA,CAAI,GAAG9C,SAAA,CAAU0C,KAAK,CAAC,CAAC;MAE1D,MAAMK,UAAA,GAAaH,QAAA,GAAW;MAC9B,OAAO,GAAGD,MAAM,IAAII,UAAU;IAChC;IACA,OAAOJ,MAAA;EACT,CAAC;AACH","ignoreList":[]}
|
|
@@ -8,7 +8,8 @@ function LinearGradient(props) {
|
|
|
8
8
|
...props
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
|
-
console.warn(
|
|
11
|
+
console.warn(`Warning: Must call import '@tamagui/native/setup-expo-linear-gradient' at root`);
|
|
12
|
+
return;
|
|
12
13
|
}
|
|
13
14
|
export { LinearGradient };
|
|
14
15
|
//# sourceMappingURL=linear-gradient.native.js.map
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;EAC7F;AACJ","ignoreList":[]}
|
|
@@ -3,44 +3,54 @@ import { YStack } from "@tamagui/stacks";
|
|
|
3
3
|
import { LinearGradient as ExpoLinearGradient } from "./linear-gradient.mjs";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
const LinearGradientFrame = styled(YStack, {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return
|
|
6
|
+
name: "LinearGradient",
|
|
7
|
+
overflow: "hidden",
|
|
8
|
+
position: "relative"
|
|
9
|
+
});
|
|
10
|
+
const LinearGradient = LinearGradientFrame.styleable((propsIn, ref) => {
|
|
11
|
+
const props = useProps(propsIn);
|
|
12
|
+
const {
|
|
13
|
+
start,
|
|
14
|
+
end,
|
|
15
|
+
colors: colorsProp,
|
|
16
|
+
locations,
|
|
17
|
+
children,
|
|
18
|
+
...stackProps
|
|
19
|
+
} = props;
|
|
20
|
+
const theme = useTheme();
|
|
21
|
+
let colors = props.colors?.map(c => {
|
|
22
|
+
return theme[c]?.get("web") ?? c;
|
|
23
|
+
}) || [];
|
|
24
|
+
if (process.env.NODE_ENV !== "production") {
|
|
25
|
+
if (colors.some(c => {
|
|
23
26
|
const normalized = normalizeColor(c);
|
|
24
|
-
if (!normalized || normalized.startsWith("$"))
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
27
|
+
if (!normalized || normalized.startsWith("$")) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
})) {
|
|
31
|
+
console.error(`LinearGradient: "colors" prop contains invalid color tokens: ${colors} fallback to default colors: ["#000", "#fff"]`);
|
|
32
|
+
colors = ["#000", "#fff"];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return /* @__PURE__ */jsxs(LinearGradientFrame, {
|
|
36
|
+
ref,
|
|
37
|
+
...stackProps,
|
|
38
|
+
children: [/* @__PURE__ */jsx(ExpoLinearGradient, {
|
|
39
|
+
start,
|
|
40
|
+
end,
|
|
41
|
+
colors,
|
|
42
|
+
locations,
|
|
43
|
+
style: gradientStyle
|
|
44
|
+
}), children]
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
const gradientStyle = {
|
|
48
|
+
position: "absolute",
|
|
49
|
+
top: 0,
|
|
50
|
+
left: 0,
|
|
51
|
+
right: 0,
|
|
52
|
+
bottom: 0,
|
|
53
|
+
zIndex: 0
|
|
54
|
+
};
|
|
45
55
|
export { LinearGradient };
|
|
46
56
|
//# sourceMappingURL=LinearGradient.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["normalizeColor","styled","useProps","useTheme","YStack","LinearGradient","ExpoLinearGradient","jsx","jsxs","LinearGradientFrame","name","overflow","position","styleable","propsIn","ref","props","start","end","colors","colorsProp","locations","children","stackProps","theme","map","c","get","process","env","NODE_ENV","some","normalized","startsWith","console","error","style","gradientStyle","top","left","right","bottom","zIndex"],"sources":["../../src/LinearGradient.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,cAAA,EAAgBC,MAAA,EAAQC,QAAA,EAAUC,QAAA,QAAgB;AAC3D,SAASC,MAAA,QAAc;AAIvB,SAASC,cAAA,IAAkBC,kBAAA,QAA0B;AA6C/C,SACEC,GAAA,EADFC,IAAA;AAnCN,MAAMC,mBAAA,GAAsBR,MAAA,CAAOG,MAAA,EAAQ;
|
|
1
|
+
{"version":3,"names":["normalizeColor","styled","useProps","useTheme","YStack","LinearGradient","ExpoLinearGradient","jsx","jsxs","LinearGradientFrame","name","overflow","position","styleable","propsIn","ref","props","start","end","colors","colorsProp","locations","children","stackProps","theme","map","c","get","process","env","NODE_ENV","some","normalized","startsWith","console","error","style","gradientStyle","top","left","right","bottom","zIndex"],"sources":["../../src/LinearGradient.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,cAAA,EAAgBC,MAAA,EAAQC,QAAA,EAAUC,QAAA,QAAgB;AAC3D,SAASC,MAAA,QAAc;AAIvB,SAASC,cAAA,IAAkBC,kBAAA,QAA0B;AA6C/C,SACEC,GAAA,EADFC,IAAA;AAnCN,MAAMC,mBAAA,GAAsBR,MAAA,CAAOG,MAAA,EAAQ;EACzCM,IAAA,EAAM;EACNC,QAAA,EAAU;EACVC,QAAA,EAAU;AACZ,CAAC;AAEM,MAAMP,cAAA,GAAiBI,mBAAA,CAAoBI,SAAA,CAChD,CAACC,OAAA,EAASC,GAAA,KAAQ;EAChB,MAAMC,KAAA,GAAQd,QAAA,CAASY,OAAO;EAE9B,MAAM;IAAEG,KAAA;IAAOC,GAAA;IAAKC,MAAA,EAAQC,UAAA;IAAYC,SAAA;IAAWC,QAAA;IAAU,GAAGC;EAAW,IAAIP,KAAA;EAC/E,MAAMQ,KAAA,GAAQrB,QAAA,CAAS;EAEvB,IAAIgB,MAAA,GACFH,KAAA,CAAMG,MAAA,EAAQM,GAAA,CAAKC,CAAA,IAAM;IACvB,OAAQF,KAAA,CAAME,CAAC,GAAGC,GAAA,CAAI,KAAK,KAAgBD,CAAA;EAC7C,CAAC,KAAK,EAAC;EAET,IAAIE,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,cAAc;IACzC,IACEX,MAAA,CAAOY,IAAA,CAAML,CAAA,IAAM;MACjB,MAAMM,UAAA,GAAahC,cAAA,CAAe0B,CAAC;MACnC,IAAI,CAACM,UAAA,IAAcA,UAAA,CAAWC,UAAA,CAAW,GAAG,GAAG;QAC7C,OAAO;MACT;IACF,CAAC,GACD;MACAC,OAAA,CAAQC,KAAA,CACN,gEAAgEhB,MAAM,+CACxE;MACAA,MAAA,GAAS,CAAC,QAAQ,MAAM;IAC1B;EACF;EAEA,OACE,eAAAX,IAAA,CAACC,mBAAA;IAAoBM,GAAA;IAAkB,GAAGQ,UAAA;IACxCD,QAAA,kBAAAf,GAAA,CAACD,kBAAA;MACCW,KAAA;MACAC,GAAA;MACAC,MAAA;MACAE,SAAA;MACAe,KAAA,EAAOC;IAAA,CACT,GACCf,QAAA;EAAA,CACH;AAEJ,CACF;AAIA,MAAMe,aAAA,GAA2B;EAC/BzB,QAAA,EAAU;EACV0B,GAAA,EAAK;EACLC,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,MAAA,EAAQ;EACRC,MAAA,EAAQ;AACV","ignoreList":[]}
|