@tamagui/web 1.68.6 → 1.69.1
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/createComponent.js +44 -25
- package/dist/cjs/createComponent.js.map +1 -1
- package/dist/cjs/createComponent.native.js +12 -17
- package/dist/cjs/createComponent.native.js.map +1 -1
- package/dist/cjs/helpers/createStyledContext.js +15 -5
- package/dist/cjs/helpers/createStyledContext.js.map +2 -2
- package/dist/cjs/helpers/createStyledContext.native.js +15 -5
- package/dist/cjs/helpers/createStyledContext.native.js.map +2 -2
- package/dist/cjs/helpers/getSplitStyles.js +35 -28
- package/dist/cjs/helpers/getSplitStyles.js.map +1 -1
- package/dist/cjs/helpers/getSplitStyles.native.js +18 -11
- package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/cjs/helpers/propMapper.js +11 -9
- package/dist/cjs/helpers/propMapper.js.map +1 -1
- package/dist/cjs/helpers/propMapper.native.js +11 -9
- package/dist/cjs/helpers/propMapper.native.js.map +1 -1
- package/dist/cjs/hooks/useMedia.js +3 -37
- package/dist/cjs/hooks/useMedia.js.map +1 -1
- package/dist/cjs/hooks/useMedia.native.js +3 -37
- package/dist/cjs/hooks/useMedia.native.js.map +1 -1
- package/dist/cjs/hooks/useProps.js +40 -6
- package/dist/cjs/hooks/useProps.js.map +1 -1
- package/dist/cjs/hooks/useProps.native.js +40 -6
- package/dist/cjs/hooks/useProps.native.js.map +1 -1
- package/dist/cjs/index.js +1 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +1 -5
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/createComponent.js +44 -25
- package/dist/esm/createComponent.js.map +1 -1
- package/dist/esm/helpers/createStyledContext.js +16 -6
- package/dist/esm/helpers/createStyledContext.js.map +2 -2
- package/dist/esm/helpers/getSplitStyles.js +35 -28
- package/dist/esm/helpers/getSplitStyles.js.map +1 -1
- package/dist/esm/helpers/propMapper.js +11 -9
- package/dist/esm/helpers/propMapper.js.map +1 -1
- package/dist/esm/hooks/useMedia.js +2 -37
- package/dist/esm/hooks/useMedia.js.map +1 -1
- package/dist/esm/hooks/useProps.js +42 -5
- package/dist/esm/hooks/useProps.js.map +1 -1
- package/dist/esm/index.js +1 -4
- package/dist/esm/index.js.map +1 -1
- package/package.json +9 -9
- package/src/createComponent.tsx +64 -45
- package/src/helpers/createStyledContext.tsx +32 -9
- package/src/helpers/getSplitStyles.tsx +213 -198
- package/src/helpers/propMapper.ts +49 -41
- package/src/hooks/useMedia.tsx +1 -74
- package/src/hooks/useProps.tsx +81 -14
- package/src/index.ts +0 -2
- package/src/types.tsx +17 -2
- package/types/createComponent.d.ts.map +1 -1
- package/types/helpers/createStyledContext.d.ts +8 -3
- package/types/helpers/createStyledContext.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/propMapper.d.ts.map +1 -1
- package/types/hooks/useMedia.d.ts +1 -17
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/useProps.d.ts +28 -9
- package/types/hooks/useProps.d.ts.map +1 -1
- package/types/index.d.ts +1 -2
- package/types/index.d.ts.map +1 -1
- package/types/types.d.ts +16 -2
- package/types/types.d.ts.map +1 -1
- package/src/hooks/useStyle.tsx +0 -48
package/dist/esm/index.js
CHANGED
|
@@ -49,13 +49,11 @@ import {
|
|
|
49
49
|
mediaState,
|
|
50
50
|
useMedia,
|
|
51
51
|
getMedia,
|
|
52
|
-
useMediaPropsActive,
|
|
53
52
|
mediaObjectToString,
|
|
54
53
|
mediaQueryConfig
|
|
55
54
|
} from "./hooks/useMedia";
|
|
56
55
|
export * from "./hooks/useTheme";
|
|
57
56
|
export * from "./hooks/useThemeName";
|
|
58
|
-
export * from "./hooks/useStyle";
|
|
59
57
|
export * from "./hooks/useAnimationDriver";
|
|
60
58
|
export * from "./hooks/useIsTouchDevice";
|
|
61
59
|
export * from "./hooks/useProps";
|
|
@@ -87,7 +85,6 @@ export {
|
|
|
87
85
|
mediaState,
|
|
88
86
|
setupDev,
|
|
89
87
|
updateConfig,
|
|
90
|
-
useMedia
|
|
91
|
-
useMediaPropsActive
|
|
88
|
+
useMedia
|
|
92
89
|
};
|
|
93
90
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,cAAc;AAEd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,
|
|
4
|
+
"mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,cAAc;AAEd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/web",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.69.1",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -27,19 +27,19 @@
|
|
|
27
27
|
"reset.css"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tamagui/compose-refs": "1.
|
|
31
|
-
"@tamagui/constants": "1.
|
|
32
|
-
"@tamagui/helpers": "1.
|
|
33
|
-
"@tamagui/normalize-css-color": "1.
|
|
34
|
-
"@tamagui/timer": "1.
|
|
35
|
-
"@tamagui/use-did-finish-ssr": "1.
|
|
36
|
-
"@tamagui/use-force-update": "1.
|
|
30
|
+
"@tamagui/compose-refs": "1.69.1",
|
|
31
|
+
"@tamagui/constants": "1.69.1",
|
|
32
|
+
"@tamagui/helpers": "1.69.1",
|
|
33
|
+
"@tamagui/normalize-css-color": "1.69.1",
|
|
34
|
+
"@tamagui/timer": "1.69.1",
|
|
35
|
+
"@tamagui/use-did-finish-ssr": "1.69.1",
|
|
36
|
+
"@tamagui/use-force-update": "1.69.1"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"react": "*"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@tamagui/build": "1.
|
|
42
|
+
"@tamagui/build": "1.69.1",
|
|
43
43
|
"@testing-library/react": "^14.0.0",
|
|
44
44
|
"csstype": "^3.0.10",
|
|
45
45
|
"react": "^18.2.0",
|
package/src/createComponent.tsx
CHANGED
|
@@ -580,7 +580,7 @@ export function createComponent<
|
|
|
580
580
|
|
|
581
581
|
setDidGetVariableValue(false)
|
|
582
582
|
|
|
583
|
-
const
|
|
583
|
+
const resolveValues =
|
|
584
584
|
// if HOC + mounted + has animation prop, resolve as value so it passes non-variable to child
|
|
585
585
|
(isAnimated && !supportsCSSVars) ||
|
|
586
586
|
(isHOC && state.unmounted == false && hasAnimationProp)
|
|
@@ -593,7 +593,7 @@ export function createComponent<
|
|
|
593
593
|
const styleProps = {
|
|
594
594
|
mediaState,
|
|
595
595
|
noClassNames,
|
|
596
|
-
|
|
596
|
+
resolveValues,
|
|
597
597
|
isExiting,
|
|
598
598
|
isAnimated,
|
|
599
599
|
keepStyleSSR,
|
|
@@ -713,15 +713,15 @@ export function createComponent<
|
|
|
713
713
|
const {
|
|
714
714
|
asChild,
|
|
715
715
|
children,
|
|
716
|
+
themeShallow,
|
|
717
|
+
spaceDirection: _spaceDirection,
|
|
718
|
+
disabled: disabledProp,
|
|
716
719
|
onPress,
|
|
717
720
|
onLongPress,
|
|
718
721
|
onPressIn,
|
|
719
722
|
onPressOut,
|
|
720
723
|
onHoverIn,
|
|
721
724
|
onHoverOut,
|
|
722
|
-
themeShallow,
|
|
723
|
-
spaceDirection: _spaceDirection,
|
|
724
|
-
disabled: disabledProp,
|
|
725
725
|
onMouseUp,
|
|
726
726
|
onMouseDown,
|
|
727
727
|
onMouseEnter,
|
|
@@ -950,16 +950,9 @@ export function createComponent<
|
|
|
950
950
|
onClick
|
|
951
951
|
)
|
|
952
952
|
const runtimeHoverStyle = !disabled && noClassNames && pseudos?.hoverStyle
|
|
953
|
+
const needsHoverState = runtimeHoverStyle || onHoverIn || onHoverOut
|
|
953
954
|
const isHoverable =
|
|
954
|
-
isWeb &&
|
|
955
|
-
!!(
|
|
956
|
-
groupName ||
|
|
957
|
-
runtimeHoverStyle ||
|
|
958
|
-
onHoverIn ||
|
|
959
|
-
onHoverOut ||
|
|
960
|
-
onMouseEnter ||
|
|
961
|
-
onMouseLeave
|
|
962
|
-
)
|
|
955
|
+
isWeb && !!(groupName || needsHoverState || onMouseEnter || onMouseLeave)
|
|
963
956
|
|
|
964
957
|
const handlesPressEvents = !(isWeb || asChild)
|
|
965
958
|
|
|
@@ -975,7 +968,7 @@ export function createComponent<
|
|
|
975
968
|
if (process.env.NODE_ENV === 'development' && time) time`events-setup`
|
|
976
969
|
|
|
977
970
|
const events: TamaguiComponentEvents | null =
|
|
978
|
-
shouldAttach && !isDisabled && !asChild
|
|
971
|
+
shouldAttach && !isDisabled && !props.asChild
|
|
979
972
|
? {
|
|
980
973
|
onPressOut: attachPress
|
|
981
974
|
? (e) => {
|
|
@@ -987,9 +980,13 @@ export function createComponent<
|
|
|
987
980
|
...((isHoverable || attachPress) && {
|
|
988
981
|
onMouseEnter: (e) => {
|
|
989
982
|
const next: Partial<typeof state> = {}
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
983
|
+
if (needsHoverState) {
|
|
984
|
+
next.hover = true
|
|
985
|
+
}
|
|
986
|
+
if (runtimePressStyle) {
|
|
987
|
+
if (state.pressIn) {
|
|
988
|
+
next.press = true
|
|
989
|
+
}
|
|
993
990
|
}
|
|
994
991
|
setStateShallow(next)
|
|
995
992
|
onHoverIn?.(e)
|
|
@@ -998,10 +995,14 @@ export function createComponent<
|
|
|
998
995
|
onMouseLeave: (e) => {
|
|
999
996
|
const next: Partial<typeof state> = {}
|
|
1000
997
|
mouseUps.add(unPress)
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
998
|
+
if (needsHoverState) {
|
|
999
|
+
next.hover = false
|
|
1000
|
+
}
|
|
1001
|
+
if (runtimePressStyle) {
|
|
1002
|
+
if (state.pressIn) {
|
|
1003
|
+
next.press = false
|
|
1004
|
+
next.pressIn = false
|
|
1005
|
+
}
|
|
1005
1006
|
}
|
|
1006
1007
|
setStateShallow(next)
|
|
1007
1008
|
onHoverOut?.(e)
|
|
@@ -1010,10 +1011,12 @@ export function createComponent<
|
|
|
1010
1011
|
}),
|
|
1011
1012
|
onPressIn: attachPress
|
|
1012
1013
|
? (e) => {
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1014
|
+
if (runtimePressStyle) {
|
|
1015
|
+
setStateShallow({
|
|
1016
|
+
press: true,
|
|
1017
|
+
pressIn: true,
|
|
1018
|
+
})
|
|
1019
|
+
}
|
|
1017
1020
|
onPressIn?.(e)
|
|
1018
1021
|
onMouseDown?.(e)
|
|
1019
1022
|
if (isWeb) {
|
|
@@ -1044,7 +1047,7 @@ export function createComponent<
|
|
|
1044
1047
|
}
|
|
1045
1048
|
: null
|
|
1046
1049
|
|
|
1047
|
-
if (process.env.TAMAGUI_TARGET === 'native' && events) {
|
|
1050
|
+
if (process.env.TAMAGUI_TARGET === 'native' && events && !asChild) {
|
|
1048
1051
|
// replicating TouchableWithoutFeedback
|
|
1049
1052
|
Object.assign(events, {
|
|
1050
1053
|
cancelable: !viewProps.rejectResponderTermination,
|
|
@@ -1072,9 +1075,6 @@ export function createComponent<
|
|
|
1072
1075
|
|
|
1073
1076
|
if (process.env.NODE_ENV === 'development' && time) time`hooks`
|
|
1074
1077
|
|
|
1075
|
-
// since we re-render without changing children often for animations or on mount
|
|
1076
|
-
// we memo children here. tested this on the site homepage which has hundreds of components
|
|
1077
|
-
// and i see no difference in startup performance, but i do see it memoing often
|
|
1078
1078
|
let content =
|
|
1079
1079
|
!children || asChild
|
|
1080
1080
|
? children
|
|
@@ -1089,12 +1089,27 @@ export function createComponent<
|
|
|
1089
1089
|
|
|
1090
1090
|
if (asChild) {
|
|
1091
1091
|
elementType = Slot
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1092
|
+
// on native this is already merged into viewProps in hooks.useEvents
|
|
1093
|
+
if (process.env.TAMAGUI_TARGET === 'web') {
|
|
1094
|
+
const passEvents = {
|
|
1095
|
+
onPress,
|
|
1096
|
+
onLongPress,
|
|
1097
|
+
onPressIn,
|
|
1098
|
+
onPressOut,
|
|
1099
|
+
onHoverIn,
|
|
1100
|
+
onHoverOut,
|
|
1101
|
+
onMouseUp,
|
|
1102
|
+
onMouseDown,
|
|
1103
|
+
onMouseEnter,
|
|
1104
|
+
onMouseLeave,
|
|
1105
|
+
}
|
|
1106
|
+
Object.assign(
|
|
1107
|
+
viewProps,
|
|
1108
|
+
asChild === 'web' || asChild === 'except-style-web'
|
|
1109
|
+
? getWebEvents(passEvents as any)
|
|
1110
|
+
: passEvents
|
|
1111
|
+
)
|
|
1112
|
+
}
|
|
1098
1113
|
}
|
|
1099
1114
|
|
|
1100
1115
|
if (process.env.NODE_ENV === 'development' && time) time`spaced-as-child`
|
|
@@ -1168,15 +1183,7 @@ export function createComponent<
|
|
|
1168
1183
|
content = (
|
|
1169
1184
|
<span
|
|
1170
1185
|
className={`${isAnimatedReactNativeWeb ? className : ''} _dsp_contents`}
|
|
1171
|
-
{...(events &&
|
|
1172
|
-
onMouseEnter: events.onMouseEnter,
|
|
1173
|
-
onMouseLeave: events.onMouseLeave,
|
|
1174
|
-
onClick: events.onPress,
|
|
1175
|
-
onMouseDown: events.onPressIn,
|
|
1176
|
-
onMouseUp: events.onPressOut,
|
|
1177
|
-
onTouchStart: events.onPressIn,
|
|
1178
|
-
onTouchEnd: events.onPressOut,
|
|
1179
|
-
})}
|
|
1186
|
+
{...(events && getWebEvents(events))}
|
|
1180
1187
|
>
|
|
1181
1188
|
{content}
|
|
1182
1189
|
</span>
|
|
@@ -1315,6 +1322,18 @@ export function createComponent<
|
|
|
1315
1322
|
return res
|
|
1316
1323
|
}
|
|
1317
1324
|
|
|
1325
|
+
function getWebEvents<E extends TamaguiComponentEvents>(events: E) {
|
|
1326
|
+
return {
|
|
1327
|
+
onMouseEnter: events.onMouseEnter,
|
|
1328
|
+
onMouseLeave: events.onMouseLeave,
|
|
1329
|
+
onClick: events.onPress,
|
|
1330
|
+
onMouseDown: events.onPressIn,
|
|
1331
|
+
onMouseUp: events.onPressOut,
|
|
1332
|
+
onTouchStart: events.onPressIn,
|
|
1333
|
+
onTouchEnd: events.onPressOut,
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1318
1337
|
// for elements to avoid spacing
|
|
1319
1338
|
export function Unspaced(props: { children?: any }) {
|
|
1320
1339
|
return props.children
|
|
@@ -7,38 +7,61 @@ export type StyledContext<Props extends Object = any> = Omit<
|
|
|
7
7
|
'Provider'
|
|
8
8
|
> & {
|
|
9
9
|
context: React.Context<Props>
|
|
10
|
-
props: Object
|
|
10
|
+
props: Object | undefined
|
|
11
11
|
Provider: React.ProviderExoticComponent<
|
|
12
|
-
Partial<Props> & {
|
|
12
|
+
Partial<Props | undefined> & {
|
|
13
13
|
children?: React.ReactNode
|
|
14
|
+
scope?: string
|
|
14
15
|
}
|
|
15
16
|
>
|
|
17
|
+
useStyledContext: (scope?: string) => Props
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export function createStyledContext<VariantProps extends Record<string, any>>(
|
|
19
|
-
|
|
21
|
+
defaultValues?: VariantProps
|
|
20
22
|
): StyledContext<VariantProps> {
|
|
21
|
-
const OGContext = createContext<VariantProps>(
|
|
23
|
+
const OGContext = createContext<VariantProps | undefined>(defaultValues)
|
|
22
24
|
const OGProvider = OGContext.Provider
|
|
23
25
|
const Context = OGContext as any as StyledContext<VariantProps>
|
|
26
|
+
const scopedContexts = new Map<string, React.Context<VariantProps | undefined>>()
|
|
24
27
|
|
|
25
28
|
const Provider = ({
|
|
26
29
|
children,
|
|
30
|
+
scope,
|
|
27
31
|
...values
|
|
28
|
-
}: VariantProps & { children?: React.ReactNode }) => {
|
|
32
|
+
}: VariantProps & { children?: React.ReactNode; scope: string }) => {
|
|
29
33
|
const value = useMemo(() => {
|
|
30
34
|
return {
|
|
31
|
-
|
|
35
|
+
// this ! is a workaround for ts error
|
|
36
|
+
...defaultValues!,
|
|
32
37
|
...values,
|
|
33
38
|
}
|
|
34
39
|
}, [objectIdentityKey(values)])
|
|
35
|
-
|
|
40
|
+
let Provider = OGProvider
|
|
41
|
+
if (scope) {
|
|
42
|
+
let ScopedContext = scopedContexts.get(scope)
|
|
43
|
+
if (!ScopedContext) {
|
|
44
|
+
ScopedContext = createContext<VariantProps | undefined>(defaultValues)
|
|
45
|
+
scopedContexts.set(scope, ScopedContext)
|
|
46
|
+
}
|
|
47
|
+
Provider = ScopedContext.Provider
|
|
48
|
+
}
|
|
49
|
+
return <Provider value={value}>{children}</Provider>
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// use consumerComponent just to give a better error message
|
|
53
|
+
const useStyledContext = (scope?: string) => {
|
|
54
|
+
const context = scope ? scopedContexts.get(scope) : OGContext
|
|
55
|
+
return useContext(context!) as VariantProps
|
|
36
56
|
}
|
|
37
57
|
|
|
38
58
|
// @ts-ignore
|
|
39
59
|
Context.Provider = Provider
|
|
40
|
-
Context.props =
|
|
41
|
-
Context.context = OGContext
|
|
60
|
+
Context.props = defaultValues
|
|
61
|
+
Context.context = OGContext as React.Context<VariantProps>
|
|
62
|
+
Context.useStyledContext = useStyledContext
|
|
42
63
|
|
|
43
64
|
return Context
|
|
44
65
|
}
|
|
66
|
+
|
|
67
|
+
export type ScopedProps<P, K extends string> = P & { [Key in `__scope${K}`]?: string }
|