@tamagui/web 1.115.5 → 1.116.0
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.cjs +16 -25
- package/dist/cjs/createComponent.cjs.map +1 -1
- package/dist/cjs/createComponent.native.js +14 -18
- package/dist/cjs/createComponent.native.js.map +2 -2
- package/dist/cjs/defaultComponentState.cjs +1 -6
- package/dist/cjs/defaultComponentState.cjs.map +1 -1
- package/dist/cjs/defaultComponentState.native.js +2 -7
- package/dist/cjs/defaultComponentState.native.js.map +2 -2
- package/dist/cjs/helpers/getSplitStyles.cjs +4 -4
- package/dist/cjs/helpers/getSplitStyles.cjs.map +1 -1
- package/dist/cjs/helpers/getSplitStyles.native.js +3 -3
- package/dist/cjs/helpers/getSplitStyles.native.js.map +2 -2
- package/dist/cjs/helpers/log.cjs +2 -2
- package/dist/cjs/helpers/log.cjs.map +1 -1
- package/dist/cjs/helpers/log.native.js +2 -2
- package/dist/cjs/helpers/log.native.js.map +2 -2
- package/dist/cjs/helpers/themeable.cjs +9 -9
- package/dist/cjs/helpers/themeable.cjs.map +1 -1
- package/dist/cjs/helpers/themeable.native.js +6 -6
- package/dist/cjs/helpers/themeable.native.js.map +2 -2
- package/dist/cjs/hooks/useComponentState.cjs +21 -21
- package/dist/cjs/hooks/useComponentState.cjs.map +1 -1
- package/dist/cjs/hooks/useComponentState.native.js +12 -10
- package/dist/cjs/hooks/useComponentState.native.js.map +2 -2
- package/dist/cjs/hooks/useMedia.cjs +34 -37
- package/dist/cjs/hooks/useMedia.cjs.map +1 -1
- package/dist/cjs/hooks/useMedia.native.js +55 -40
- package/dist/cjs/hooks/useMedia.native.js.map +2 -2
- package/dist/cjs/hooks/useProps.cjs +1 -1
- package/dist/cjs/hooks/useProps.cjs.map +1 -1
- package/dist/cjs/hooks/useProps.native.js +1 -1
- package/dist/cjs/hooks/useProps.native.js.map +2 -2
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.native.js +2 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/views/TamaguiProvider.cjs +1 -2
- package/dist/cjs/views/TamaguiProvider.cjs.map +1 -1
- package/dist/cjs/views/TamaguiProvider.native.js +2 -2
- package/dist/cjs/views/TamaguiProvider.native.js.map +2 -2
- package/dist/cjs/views/Theme.cjs +2 -2
- package/dist/cjs/views/Theme.cjs.map +1 -1
- package/dist/cjs/views/Theme.native.js +2 -2
- package/dist/cjs/views/Theme.native.js.map +2 -2
- package/dist/cjs/views/ThemeDebug.cjs.map +1 -1
- package/dist/esm/createComponent.js +13 -16
- package/dist/esm/createComponent.js.map +1 -1
- package/dist/esm/createComponent.mjs +16 -25
- package/dist/esm/createComponent.mjs.map +1 -1
- package/dist/esm/createComponent.native.js +14 -18
- package/dist/esm/createComponent.native.js.map +2 -2
- package/dist/esm/defaultComponentState.js +1 -5
- package/dist/esm/defaultComponentState.js.map +1 -1
- package/dist/esm/defaultComponentState.mjs +1 -5
- package/dist/esm/defaultComponentState.mjs.map +1 -1
- package/dist/esm/defaultComponentState.native.js +1 -5
- package/dist/esm/defaultComponentState.native.js.map +2 -2
- package/dist/esm/helpers/getSplitStyles.js +4 -14
- package/dist/esm/helpers/getSplitStyles.js.map +1 -1
- package/dist/esm/helpers/getSplitStyles.mjs +4 -4
- package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
- package/dist/esm/helpers/getSplitStyles.native.js +3 -3
- package/dist/esm/helpers/getSplitStyles.native.js.map +2 -2
- package/dist/esm/helpers/log.js +3 -3
- package/dist/esm/helpers/log.js.map +1 -1
- package/dist/esm/helpers/log.mjs +3 -3
- package/dist/esm/helpers/log.mjs.map +1 -1
- package/dist/esm/helpers/log.native.js +3 -3
- package/dist/esm/helpers/log.native.js.map +2 -2
- package/dist/esm/helpers/themeable.js +5 -13
- package/dist/esm/helpers/themeable.js.map +1 -1
- package/dist/esm/helpers/themeable.mjs +12 -12
- package/dist/esm/helpers/themeable.mjs.map +1 -1
- package/dist/esm/helpers/themeable.native.js +6 -6
- package/dist/esm/helpers/themeable.native.js.map +2 -2
- package/dist/esm/hooks/useComponentState.js +14 -14
- package/dist/esm/hooks/useComponentState.js.map +1 -1
- package/dist/esm/hooks/useComponentState.mjs +21 -21
- package/dist/esm/hooks/useComponentState.mjs.map +1 -1
- package/dist/esm/hooks/useComponentState.native.js +13 -12
- package/dist/esm/hooks/useComponentState.native.js.map +2 -2
- package/dist/esm/hooks/useMedia.js +38 -37
- package/dist/esm/hooks/useMedia.js.map +1 -1
- package/dist/esm/hooks/useMedia.mjs +33 -36
- package/dist/esm/hooks/useMedia.mjs.map +1 -1
- package/dist/esm/hooks/useMedia.native.js +54 -39
- package/dist/esm/hooks/useMedia.native.js.map +2 -2
- package/dist/esm/hooks/useProps.js +1 -1
- package/dist/esm/hooks/useProps.js.map +1 -1
- package/dist/esm/hooks/useProps.mjs +1 -1
- package/dist/esm/hooks/useProps.mjs.map +1 -1
- package/dist/esm/hooks/useProps.native.js +1 -1
- package/dist/esm/hooks/useProps.native.js.map +2 -2
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -1
- package/dist/esm/index.native.js.map +2 -2
- package/dist/esm/views/TamaguiProvider.js +1 -2
- package/dist/esm/views/TamaguiProvider.js.map +1 -1
- package/dist/esm/views/TamaguiProvider.mjs +1 -2
- package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
- package/dist/esm/views/TamaguiProvider.native.js +1 -2
- package/dist/esm/views/TamaguiProvider.native.js.map +2 -2
- package/dist/esm/views/Theme.js +2 -2
- package/dist/esm/views/Theme.js.map +1 -1
- package/dist/esm/views/Theme.mjs +2 -2
- package/dist/esm/views/Theme.mjs.map +1 -1
- package/dist/esm/views/Theme.native.js +2 -2
- package/dist/esm/views/Theme.native.js.map +2 -2
- package/dist/esm/views/ThemeDebug.js.map +1 -1
- package/dist/esm/views/ThemeDebug.mjs.map +1 -1
- package/package.json +13 -11
- package/src/createComponent.tsx +19 -26
- package/src/defaultComponentState.tsx +0 -5
- package/src/helpers/getSplitStyles.tsx +5 -15
- package/src/helpers/log.ts +3 -3
- package/src/helpers/themeable.tsx +27 -9
- package/src/hooks/useComponentState.ts +47 -39
- package/src/hooks/useMedia.tsx +67 -75
- package/src/hooks/useProps.tsx +3 -3
- package/src/index.ts +1 -0
- package/src/types.tsx +1 -1
- package/src/views/TamaguiProvider.tsx +0 -4
- package/src/views/Theme.tsx +7 -3
- package/src/views/ThemeDebug.tsx +0 -1
- package/types/createComponent.d.ts.map +1 -1
- package/types/defaultComponentState.d.ts +0 -1
- package/types/defaultComponentState.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/themeable.d.ts.map +1 -1
- package/types/hooks/useComponentState.d.ts +1 -1
- package/types/hooks/useComponentState.d.ts.map +1 -1
- package/types/hooks/useMedia.d.ts +2 -2
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/useProps.d.ts +2 -2
- package/types/hooks/useProps.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/types.d.ts +1 -1
- package/types/types.d.ts.map +1 -1
- package/types/views/TamaguiProvider.d.ts.map +1 -1
- package/types/views/Theme.d.ts.map +1 -1
- package/types/views/ThemeDebug.d.ts.map +1 -1
- package/dist/cjs/hooks/useDidHydrateOnce.cjs +0 -50
- package/dist/cjs/hooks/useDidHydrateOnce.cjs.map +0 -6
- package/dist/cjs/hooks/useDidHydrateOnce.native.js +0 -53
- package/dist/cjs/hooks/useDidHydrateOnce.native.js.map +0 -6
- package/dist/esm/hooks/useDidHydrateOnce.js +0 -16
- package/dist/esm/hooks/useDidHydrateOnce.js.map +0 -6
- package/dist/esm/hooks/useDidHydrateOnce.mjs +0 -15
- package/dist/esm/hooks/useDidHydrateOnce.mjs.map +0 -1
- package/dist/esm/hooks/useDidHydrateOnce.native.js +0 -24
- package/dist/esm/hooks/useDidHydrateOnce.native.js.map +0 -6
- package/src/hooks/useDidHydrateOnce.tsx +0 -42
- package/types/hooks/useDidHydrateOnce.d.ts +0 -3
- package/types/hooks/useDidHydrateOnce.d.ts.map +0 -1
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
import { isServer, isWeb } from "@tamagui/constants";
|
|
2
|
+
import { useRef, useState } from "react";
|
|
1
3
|
import {
|
|
2
4
|
defaultComponentState,
|
|
3
|
-
defaultComponentStateMounted
|
|
4
|
-
defaultComponentStateShouldEnter
|
|
5
|
+
defaultComponentStateMounted
|
|
5
6
|
} from "../defaultComponentState";
|
|
6
|
-
import { useDidHydrateOnce } from "../hooks/useDidHydrateOnce";
|
|
7
|
-
import { useRef, useState } from "react";
|
|
8
|
-
import { isServer, isWeb } from "@tamagui/constants";
|
|
9
7
|
import { createShallowSetState } from "../helpers/createShallowSetState";
|
|
10
8
|
import { isObj } from "../helpers/isObj";
|
|
11
9
|
import { log } from "../helpers/log";
|
|
@@ -16,18 +14,20 @@ const useComponentState = (props, { animationDriver, groups }, staticConfig, con
|
|
|
16
14
|
stateRef.current || (stateRef.current = {});
|
|
17
15
|
const hasAnimationProp = !!("animation" in props || props.style && hasAnimatedStyleValue(props.style)), supportsCSSVars = animationDriver?.supportsCSSVars, curStateRef = stateRef.current, willBeAnimatedClient = !!(!!(hasAnimationProp && !staticConfig.isHOC && useAnimations) || curStateRef.hasAnimated), willBeAnimated = !isServer && willBeAnimatedClient;
|
|
18
16
|
willBeAnimated && !curStateRef.hasAnimated && (curStateRef.hasAnimated = !0);
|
|
19
|
-
const presence = willBeAnimated && props.animatePresence !== !1 && animationDriver?.usePresence?.() || null, presenceState = presence?.[2], isExiting = presenceState?.isPresent === !1, isEntering = presenceState?.isPresent === !0 && presenceState.initial !== !1, hasEnterStyle = !!props.enterStyle,
|
|
17
|
+
const { disableClassName } = props, presence = willBeAnimated && props.animatePresence !== !1 && animationDriver?.usePresence?.() || null, presenceState = presence?.[2], isExiting = presenceState?.isPresent === !1, isEntering = presenceState?.isPresent === !0 && presenceState.initial !== !1, hasEnterStyle = !!props.enterStyle, hasAnimationThatNeedsHydrate = hasAnimationProp && (animationDriver?.isReactNative || !supportsCSSVars), initialState = hasEnterStyle || isEntering || hasAnimationThatNeedsHydrate || // disableClassName doesnt work server side, only client, so needs hydrate
|
|
18
|
+
// this is just for a better ux, supports css variables for light/dark, media queries, etc
|
|
19
|
+
disableClassName ? (
|
|
20
20
|
// on the very first render we switch all spring animation drivers to css rendering
|
|
21
21
|
// this is because we need to use css variables, which they don't support to do proper SSR
|
|
22
22
|
// without flickers of the wrong colors.
|
|
23
23
|
// but once we do that initial hydration and we are in client side rendering mode,
|
|
24
24
|
// we can avoid the extra re-render on mount
|
|
25
|
-
|
|
25
|
+
defaultComponentState
|
|
26
26
|
) : defaultComponentStateMounted, disabled = isDisabled(props);
|
|
27
27
|
disabled != null && (initialState.disabled = disabled);
|
|
28
|
-
const states = useState(initialState), state = props.forceStyle ? { ...states[0], [props.forceStyle]: !0 } : states[0], setState = states[1], isHydrated = state.unmounted === !1
|
|
28
|
+
const states = useState(initialState), state = props.forceStyle ? { ...states[0], [props.forceStyle]: !0 } : states[0], setState = states[1], isHydrated = state.unmounted === !1;
|
|
29
29
|
let isAnimated = willBeAnimated;
|
|
30
|
-
isWeb &&
|
|
30
|
+
isWeb && hasAnimationThatNeedsHydrate && !staticConfig.isHOC && state.unmounted === !0 && (isAnimated = !1, curStateRef.willHydrate = !0), disabled !== state.disabled && (state.disabled = disabled, disabled && Object.assign(state, defaultComponentStateMounted), setState({ ...state }));
|
|
31
31
|
let setStateShallow = createShallowSetState(setState, disabled, !1, props.debug);
|
|
32
32
|
if (presenceState && isAnimated && isHydrated && staticConfig.variants) {
|
|
33
33
|
process.env.NODE_ENV === "development" && props.debug === "verbose" && console.warn(`has presenceState ${JSON.stringify(presenceState)}`);
|
|
@@ -36,10 +36,10 @@ const useComponentState = (props, { animationDriver, groups }, staticConfig, con
|
|
|
36
36
|
const exv = exitVariant ?? enterExitVariant, env = enterVariant ?? enterExitVariant;
|
|
37
37
|
state.unmounted && env && staticConfig.variants[env] ? (process.env.NODE_ENV === "development" && props.debug === "verbose" && console.warn(`Animating presence ENTER "${env}"`), props[env] = !0) : isExiting && exv && (process.env.NODE_ENV === "development" && props.debug === "verbose" && console.warn(`Animating presence EXIT "${exv}"`), props[exv] = exitVariant !== enterExitVariant);
|
|
38
38
|
}
|
|
39
|
-
let
|
|
40
|
-
if (isWeb) {
|
|
41
|
-
const
|
|
42
|
-
(isAnimatedAndHydrated || isDisabledManually || isClassNameDisabled) && (
|
|
39
|
+
let noClass = !isWeb || !!props.forceStyle;
|
|
40
|
+
if (isWeb && (!isServer || isHydrated)) {
|
|
41
|
+
const isAnimatedAndHydrated = isAnimated && !supportsCSSVars, isClassNameDisabled = !staticConfig.acceptsClassName && (config.disableSSR || !state.unmounted), isDisabledManually = disableClassName && !state.unmounted;
|
|
42
|
+
(isAnimatedAndHydrated || isDisabledManually || isClassNameDisabled) && (noClass = !0, process.env.NODE_ENV === "development" && props.debug && log("avoiding className", {
|
|
43
43
|
isAnimatedAndHydrated,
|
|
44
44
|
isDisabledManually,
|
|
45
45
|
isClassNameDisabled
|
|
@@ -86,7 +86,7 @@ const useComponentState = (props, { animationDriver, groups }, staticConfig, con
|
|
|
86
86
|
presenceState,
|
|
87
87
|
setState,
|
|
88
88
|
setStateShallow,
|
|
89
|
-
|
|
89
|
+
noClass,
|
|
90
90
|
state,
|
|
91
91
|
stateRef,
|
|
92
92
|
supportsCSSVars,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useComponentState.ts"],
|
|
4
|
-
"mappings": "AAAA;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["state"]
|
|
6
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { defaultComponentState, defaultComponentStateMounted, defaultComponentStateShouldEnter } from "../defaultComponentState.mjs";
|
|
2
|
-
import { useDidHydrateOnce } from "../hooks/useDidHydrateOnce.mjs";
|
|
3
|
-
import { useRef, useState } from "react";
|
|
4
1
|
import { isServer, isWeb } from "@tamagui/constants";
|
|
2
|
+
import { useRef, useState } from "react";
|
|
3
|
+
import { defaultComponentState, defaultComponentStateMounted } from "../defaultComponentState.mjs";
|
|
5
4
|
import { createShallowSetState } from "../helpers/createShallowSetState.mjs";
|
|
6
5
|
import { isObj } from "../helpers/isObj.mjs";
|
|
7
6
|
import { log } from "../helpers/log.mjs";
|
|
@@ -18,21 +17,25 @@ const useComponentState = (props, {
|
|
|
18
17
|
willBeAnimatedClient = !!(!!(hasAnimationProp && !staticConfig.isHOC && useAnimations) || curStateRef.hasAnimated),
|
|
19
18
|
willBeAnimated = !isServer && willBeAnimatedClient;
|
|
20
19
|
willBeAnimated && !curStateRef.hasAnimated && (curStateRef.hasAnimated = !0);
|
|
21
|
-
const
|
|
20
|
+
const {
|
|
21
|
+
disableClassName
|
|
22
|
+
} = props,
|
|
23
|
+
presence = willBeAnimated && props.animatePresence !== !1 && animationDriver?.usePresence?.() || null,
|
|
22
24
|
presenceState = presence?.[2],
|
|
23
25
|
isExiting = presenceState?.isPresent === !1,
|
|
24
26
|
isEntering = presenceState?.isPresent === !0 && presenceState.initial !== !1,
|
|
25
27
|
hasEnterStyle = !!props.enterStyle,
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
hasAnimationThatNeedsHydrate = hasAnimationProp && (animationDriver?.isReactNative || !supportsCSSVars),
|
|
29
|
+
initialState = hasEnterStyle || isEntering || hasAnimationThatNeedsHydrate ||
|
|
30
|
+
// disableClassName doesnt work server side, only client, so needs hydrate
|
|
31
|
+
// this is just for a better ux, supports css variables for light/dark, media queries, etc
|
|
32
|
+
disableClassName ?
|
|
30
33
|
// on the very first render we switch all spring animation drivers to css rendering
|
|
31
34
|
// this is because we need to use css variables, which they don't support to do proper SSR
|
|
32
35
|
// without flickers of the wrong colors.
|
|
33
36
|
// but once we do that initial hydration and we are in client side rendering mode,
|
|
34
37
|
// we can avoid the extra re-render on mount
|
|
35
|
-
|
|
38
|
+
defaultComponentState : defaultComponentStateMounted,
|
|
36
39
|
disabled = isDisabled(props);
|
|
37
40
|
disabled != null && (initialState.disabled = disabled);
|
|
38
41
|
const states = useState(initialState),
|
|
@@ -41,9 +44,9 @@ const useComponentState = (props, {
|
|
|
41
44
|
[props.forceStyle]: !0
|
|
42
45
|
} : states[0],
|
|
43
46
|
setState = states[1],
|
|
44
|
-
isHydrated = state.unmounted === !1
|
|
47
|
+
isHydrated = state.unmounted === !1;
|
|
45
48
|
let isAnimated = willBeAnimated;
|
|
46
|
-
isWeb &&
|
|
49
|
+
isWeb && hasAnimationThatNeedsHydrate && !staticConfig.isHOC && state.unmounted === !0 && (isAnimated = !1, curStateRef.willHydrate = !0), disabled !== state.disabled && (state.disabled = disabled, disabled && Object.assign(state, defaultComponentStateMounted), setState({
|
|
47
50
|
...state
|
|
48
51
|
}));
|
|
49
52
|
let setStateShallow = createShallowSetState(setState, disabled, !1, props.debug);
|
|
@@ -60,15 +63,12 @@ const useComponentState = (props, {
|
|
|
60
63
|
env = enterVariant ?? enterExitVariant;
|
|
61
64
|
state.unmounted && env && staticConfig.variants[env] ? (process.env.NODE_ENV === "development" && props.debug === "verbose" && console.warn(`Animating presence ENTER "${env}"`), props[env] = !0) : isExiting && exv && (process.env.NODE_ENV === "development" && props.debug === "verbose" && console.warn(`Animating presence EXIT "${exv}"`), props[exv] = exitVariant !== enterExitVariant);
|
|
62
65
|
}
|
|
63
|
-
let
|
|
64
|
-
if (isWeb) {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
isClassNameDisabled = !staticConfig.acceptsClassName && (config.disableSSR || didHydrateOnce),
|
|
70
|
-
isDisabledManually = disableClassName && !isServer && didHydrateOnce && state.unmounted === !0;
|
|
71
|
-
(isAnimatedAndHydrated || isDisabledManually || isClassNameDisabled) && (shouldAvoidClasses = !0, process.env.NODE_ENV === "development" && props.debug && log("avoiding className", {
|
|
66
|
+
let noClass = !isWeb || !!props.forceStyle;
|
|
67
|
+
if (isWeb && (!isServer || isHydrated)) {
|
|
68
|
+
const isAnimatedAndHydrated = isAnimated && !supportsCSSVars,
|
|
69
|
+
isClassNameDisabled = !staticConfig.acceptsClassName && (config.disableSSR || !state.unmounted),
|
|
70
|
+
isDisabledManually = disableClassName && !state.unmounted;
|
|
71
|
+
(isAnimatedAndHydrated || isDisabledManually || isClassNameDisabled) && (noClass = !0, process.env.NODE_ENV === "development" && props.debug && log("avoiding className", {
|
|
72
72
|
isAnimatedAndHydrated,
|
|
73
73
|
isDisabledManually,
|
|
74
74
|
isClassNameDisabled
|
|
@@ -116,7 +116,7 @@ const useComponentState = (props, {
|
|
|
116
116
|
presenceState,
|
|
117
117
|
setState,
|
|
118
118
|
setStateShallow,
|
|
119
|
-
|
|
119
|
+
noClass,
|
|
120
120
|
state,
|
|
121
121
|
stateRef,
|
|
122
122
|
supportsCSSVars,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["isServer","isWeb","useRef","useState","defaultComponentState","defaultComponentStateMounted","createShallowSetState","isObj","log","useComponentState","props","animationDriver","groups","staticConfig","config","useAnimations","stateRef","current","hasAnimationProp","style","hasAnimatedStyleValue","supportsCSSVars","curStateRef","willBeAnimatedClient","isHOC","hasAnimated","willBeAnimated","disableClassName","presence","animatePresence","usePresence","presenceState","isExiting","isPresent","isEntering","initial","hasEnterStyle","enterStyle","hasAnimationThatNeedsHydrate","isReactNative","initialState","disabled","isDisabled","states","state","forceStyle","setState","isHydrated","unmounted","isAnimated","willHydrate","Object","assign","setStateShallow","debug","variants","process","env","NODE_ENV","console","warn","JSON","stringify","enterVariant","exitVariant","enterExitVariant","custom","exv","noClass","isAnimatedAndHydrated","isClassNameDisabled","acceptsClassName","disableSSR","isDisabledManually","groupName","group","listeners","Set","emit","name","state2","forEach","l","subscribe","cb","add","delete","groupContextState","og","pseudo","next","keys","some","k","val","accessibilityState","accessibilityDisabled"],"sources":["../../../src/hooks/useComponentState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { defaultComponentState, defaultComponentStateMounted, defaultComponentStateShouldEnter } from "../defaultComponentState";
|
|
2
|
-
import { useDidHydrateOnce } from "../hooks/useDidHydrateOnce";
|
|
3
|
-
import { useRef, useState } from "react";
|
|
4
1
|
import { isServer, isWeb } from "@tamagui/constants";
|
|
2
|
+
import { useRef, useState } from "react";
|
|
3
|
+
import { defaultComponentState, defaultComponentStateMounted } from "../defaultComponentState";
|
|
5
4
|
import { createShallowSetState } from "../helpers/createShallowSetState";
|
|
6
5
|
import { isObj } from "../helpers/isObj";
|
|
7
6
|
import { log } from "../helpers/log";
|
|
@@ -13,20 +12,22 @@ var useComponentState = function(props, param, staticConfig, config) {
|
|
|
13
12
|
return !!(next || curStateRef.hasAnimated);
|
|
14
13
|
}(), willBeAnimated = !isServer && willBeAnimatedClient;
|
|
15
14
|
willBeAnimated && !curStateRef.hasAnimated && (curStateRef.hasAnimated = !0);
|
|
16
|
-
var presence = willBeAnimated && props.animatePresence !== !1 && (animationDriver == null || (_animationDriver_usePresence = animationDriver.usePresence) === null || _animationDriver_usePresence === void 0 ? void 0 : _animationDriver_usePresence.call(animationDriver)) || null, presenceState = presence?.[2], isExiting = presenceState?.isPresent === !1, isEntering = presenceState?.isPresent === !0 && presenceState.initial !== !1, hasEnterStyle = !!props.enterStyle,
|
|
15
|
+
var { disableClassName } = props, presence = willBeAnimated && props.animatePresence !== !1 && (animationDriver == null || (_animationDriver_usePresence = animationDriver.usePresence) === null || _animationDriver_usePresence === void 0 ? void 0 : _animationDriver_usePresence.call(animationDriver)) || null, presenceState = presence?.[2], isExiting = presenceState?.isPresent === !1, isEntering = presenceState?.isPresent === !0 && presenceState.initial !== !1, hasEnterStyle = !!props.enterStyle, hasAnimationThatNeedsHydrate = hasAnimationProp && (animationDriver?.isReactNative || !supportsCSSVars), hasEnterState = hasEnterStyle || isEntering, shouldEnter = hasEnterState || hasAnimationThatNeedsHydrate || // disableClassName doesnt work server side, only client, so needs hydrate
|
|
16
|
+
// this is just for a better ux, supports css variables for light/dark, media queries, etc
|
|
17
|
+
disableClassName, initialState = shouldEnter ? (
|
|
17
18
|
// on the very first render we switch all spring animation drivers to css rendering
|
|
18
19
|
// this is because we need to use css variables, which they don't support to do proper SSR
|
|
19
20
|
// without flickers of the wrong colors.
|
|
20
21
|
// but once we do that initial hydration and we are in client side rendering mode,
|
|
21
22
|
// we can avoid the extra re-render on mount
|
|
22
|
-
|
|
23
|
+
defaultComponentState
|
|
23
24
|
) : defaultComponentStateMounted, disabled = isDisabled(props);
|
|
24
25
|
disabled != null && (initialState.disabled = disabled);
|
|
25
26
|
var states = useState(initialState), state = props.forceStyle ? {
|
|
26
27
|
...states[0],
|
|
27
28
|
[props.forceStyle]: !0
|
|
28
|
-
} : states[0], setState = states[1], isHydrated = state.unmounted === !1
|
|
29
|
-
isWeb &&
|
|
29
|
+
} : states[0], setState = states[1], isHydrated = state.unmounted === !1, isAnimated = willBeAnimated;
|
|
30
|
+
isWeb && hasAnimationThatNeedsHydrate && !staticConfig.isHOC && state.unmounted === !0 && (isAnimated = !1, curStateRef.willHydrate = !0), disabled !== state.disabled && (state.disabled = disabled, disabled && Object.assign(state, defaultComponentStateMounted), setState({
|
|
30
31
|
...state
|
|
31
32
|
}));
|
|
32
33
|
var setStateShallow = createShallowSetState(setState, disabled, !1, props.debug);
|
|
@@ -37,10 +38,10 @@ var useComponentState = function(props, param, staticConfig, config) {
|
|
|
37
38
|
var exv = exitVariant ?? enterExitVariant, env = enterVariant ?? enterExitVariant;
|
|
38
39
|
state.unmounted && env && staticConfig.variants[env] ? (process.env.NODE_ENV === "development" && props.debug === "verbose" && console.warn(`Animating presence ENTER "${env}"`), props[env] = !0) : isExiting && exv && (process.env.NODE_ENV === "development" && props.debug === "verbose" && console.warn(`Animating presence EXIT "${exv}"`), props[exv] = exitVariant !== enterExitVariant);
|
|
39
40
|
}
|
|
40
|
-
var
|
|
41
|
-
if (isWeb) {
|
|
42
|
-
var
|
|
43
|
-
(isAnimatedAndHydrated || isDisabledManually || isClassNameDisabled) && (
|
|
41
|
+
var noClass = !isWeb || !!props.forceStyle;
|
|
42
|
+
if (isWeb && (!isServer || isHydrated)) {
|
|
43
|
+
var isAnimatedAndHydrated = isAnimated && !supportsCSSVars, isClassNameDisabled = !staticConfig.acceptsClassName && (config.disableSSR || !state.unmounted), isDisabledManually = disableClassName && !state.unmounted;
|
|
44
|
+
(isAnimatedAndHydrated || isDisabledManually || isClassNameDisabled) && (noClass = !0, process.env.NODE_ENV === "development" && props.debug && log("avoiding className", {
|
|
44
45
|
isAnimatedAndHydrated,
|
|
45
46
|
isDisabledManually,
|
|
46
47
|
isClassNameDisabled
|
|
@@ -89,7 +90,7 @@ var useComponentState = function(props, param, staticConfig, config) {
|
|
|
89
90
|
presenceState,
|
|
90
91
|
setState,
|
|
91
92
|
setStateShallow,
|
|
92
|
-
|
|
93
|
+
noClass,
|
|
93
94
|
state,
|
|
94
95
|
stateRef,
|
|
95
96
|
supportsCSSVars,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/Users/n8/tamagui/code/core/web/src/hooks/useComponentState.ts"],
|
|
4
|
-
"mappings": "AAAA,
|
|
5
|
-
"names": ["
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["isServer", "isWeb", "useRef", "useState", "defaultComponentState", "defaultComponentStateMounted", "createShallowSetState", "isObj", "log", "useComponentState", "props", "staticConfig", "config", "animationDriver", "groups", "useAnimations", "stateRef", "undefined", "current", "hasAnimationProp", "Boolean", "style", "hasAnimatedStyleValue", "supportsCSSVars", "curStateRef", "willBeAnimatedClient", "next", "isHOC", "hasAnimated", "willBeAnimated", "disableClassName", "presence", "usePresence", "presenceState", "isExiting", "isPresent", "isEntering", "initial", "hasEnterStyle", "enterStyle", "hasAnimationThatNeedsHydrate", "isReactNative", "hasEnterState", "shouldEnter", "initialState", "disabled", "isDisabled", "states", "state", "forceStyle", "setState", "isHydrated", "unmounted", "isAnimated", "willHydrate", "Object", "assign", "setStateShallow", "debug", "variants", "process", "env", "NODE_ENV", "console", "warn", "JSON", "stringify", "enterVariant", "exitVariant", "enterExitVariant", "custom", "exv", "noClass", "isAnimatedAndHydrated", "isClassNameDisabled", "acceptsClassName", "disableSSR", "isDisabledManually", "groupName", "group", "listeners", "Set", "emit", "name", "forEach", "l", "subscribe", "cb", "add", "delete", "groupContextState", "og", "pseudo", "keys", "some", "k", "val", "accessibilityState", "accessibilityDisabled"]
|
|
6
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { isServer, isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
|
+
import React from "react";
|
|
3
3
|
import { getConfig, getSetting } from "../config";
|
|
4
4
|
import { matchMedia } from "../helpers/matchMedia";
|
|
5
5
|
import { pseudoDescriptors } from "../helpers/pseudoDescriptors";
|
|
@@ -41,7 +41,7 @@ const configureMedia = (config) => {
|
|
|
41
41
|
mediaVersion++;
|
|
42
42
|
for (const key in media)
|
|
43
43
|
mediaState[key] = mediaQueryDefaultActive?.[key] || !1, mediaKeys.add(`$${key}`);
|
|
44
|
-
Object.assign(mediaQueryConfig, media), initState = { ...mediaState }, mediaKeysOrdered = Object.keys(media),
|
|
44
|
+
Object.assign(mediaQueryConfig, media), initState = { ...mediaState }, mediaKeysOrdered = Object.keys(media), setupMediaListeners();
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
47
|
function unlisten() {
|
|
@@ -86,46 +86,47 @@ function subscribe(subscriber) {
|
|
|
86
86
|
listeners.delete(subscriber);
|
|
87
87
|
};
|
|
88
88
|
}
|
|
89
|
-
function useMedia(
|
|
90
|
-
const
|
|
91
|
-
let
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (!
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
let state;
|
|
103
|
-
if (process.env.TAMAGUI_SYNC_MEDIA_QUERY)
|
|
104
|
-
state = React.useSyncExternalStore(
|
|
105
|
-
subscribe,
|
|
106
|
-
getSnapshot,
|
|
107
|
-
() => initialState
|
|
108
|
-
);
|
|
109
|
-
else {
|
|
110
|
-
const [_state, setState] = React.useState(initialState);
|
|
111
|
-
state = _state, useIsomorphicLayoutEffect(() => {
|
|
112
|
-
function update() {
|
|
113
|
-
setState(getSnapshot);
|
|
114
|
-
}
|
|
115
|
-
return update(), disableSSR || Promise.resolve().then(() => {
|
|
116
|
-
update();
|
|
117
|
-
}), subscribe(update);
|
|
118
|
-
}, []);
|
|
89
|
+
function useMedia(cc, debug) {
|
|
90
|
+
const initialState = getSetting("disableSSR") || getDisableSSR(cc) || !isWeb ? mediaState : initState, [state, setState] = React.useState(initialState);
|
|
91
|
+
let currentKeys;
|
|
92
|
+
const getCurrentKeys = () => currentKeys;
|
|
93
|
+
function getSnapshot(cur, keys = cur.lastKeys) {
|
|
94
|
+
if (!keys) return cur;
|
|
95
|
+
for (const key of keys)
|
|
96
|
+
if (mediaState[key] !== cur[key])
|
|
97
|
+
return process.env.NODE_ENV === "development" && debug && console.warn("useMedia()\u270D\uFE0F", key, cur[key], ">", mediaState[key]), {
|
|
98
|
+
...mediaState,
|
|
99
|
+
lastKeys: new Set(keys)
|
|
100
|
+
};
|
|
101
|
+
return cur;
|
|
119
102
|
}
|
|
120
|
-
|
|
103
|
+
let isRendering = !0;
|
|
104
|
+
const isInitialState = state === initialState;
|
|
105
|
+
return useIsomorphicLayoutEffect(() => {
|
|
106
|
+
isRendering = !1;
|
|
107
|
+
}), useIsomorphicLayoutEffect(() => {
|
|
108
|
+
const update = () => setState(
|
|
109
|
+
(prev) => getSnapshot(
|
|
110
|
+
prev,
|
|
111
|
+
// because the !didHydrateOnce logic we can't update as we render
|
|
112
|
+
// we need to get the current keys in case we added
|
|
113
|
+
// these only ever add keys so likely ok?
|
|
114
|
+
getCurrentKeys()
|
|
115
|
+
)
|
|
116
|
+
);
|
|
117
|
+
return update(), subscribe(update);
|
|
118
|
+
}, []), new Proxy(state, {
|
|
121
119
|
get(_, key) {
|
|
122
|
-
if (!disableMediaTouch)
|
|
123
|
-
|
|
120
|
+
if (isRendering && !disableMediaTouch && typeof key == "string" && (!state.lastKeys || !state.lastKeys.has(key) || state[key] !== mediaState[key]) && (process.env.NODE_ENV === "development" && debug && console.info("useMedia() TOUCH", key), currentKeys ||= /* @__PURE__ */ new Set(), currentKeys.add(key), !isInitialState)) {
|
|
121
|
+
const next = getSnapshot(state, currentKeys);
|
|
122
|
+
next !== state && setState(next);
|
|
123
|
+
}
|
|
124
|
+
return Reflect.get(state, key);
|
|
124
125
|
}
|
|
125
126
|
});
|
|
126
127
|
}
|
|
127
128
|
let disableMediaTouch = !1;
|
|
128
|
-
function
|
|
129
|
+
function _disableMediaTouch(val) {
|
|
129
130
|
disableMediaTouch = val;
|
|
130
131
|
}
|
|
131
132
|
function getMediaState(mediaGroups, layout) {
|
|
@@ -167,7 +168,7 @@ function mediaKeyMatch(key, dimensions) {
|
|
|
167
168
|
});
|
|
168
169
|
}
|
|
169
170
|
export {
|
|
170
|
-
|
|
171
|
+
_disableMediaTouch,
|
|
171
172
|
configureMedia,
|
|
172
173
|
getMedia,
|
|
173
174
|
getMediaImportanceIfMoreImportant,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useMedia.tsx"],
|
|
4
|
-
"mappings": "AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { isServer, isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
|
+
import React from "react";
|
|
3
3
|
import { getConfig, getSetting } from "../config.mjs";
|
|
4
4
|
import { matchMedia } from "../helpers/matchMedia.mjs";
|
|
5
5
|
import { pseudoDescriptors } from "../helpers/pseudoDescriptors.mjs";
|
|
@@ -45,7 +45,7 @@ const configureMedia = config => {
|
|
|
45
45
|
for (const key in media) mediaState[key] = mediaQueryDefaultActive?.[key] || !1, mediaKeys.add(`$${key}`);
|
|
46
46
|
Object.assign(mediaQueryConfig, media), initState = {
|
|
47
47
|
...mediaState
|
|
48
|
-
}, mediaKeysOrdered = Object.keys(media),
|
|
48
|
+
}, mediaKeysOrdered = Object.keys(media), setupMediaListeners();
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
function unlisten() {
|
|
@@ -95,45 +95,42 @@ function subscribe(subscriber) {
|
|
|
95
95
|
listeners.delete(subscriber);
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
|
-
function useMedia(
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
keys,
|
|
111
|
-
prev = initialState
|
|
112
|
-
} = componentState;
|
|
113
|
-
if (enabled === !1) return prev;
|
|
114
|
-
const testKeys = keys ?? (enabled && keys) ?? null;
|
|
115
|
-
return !testKeys || Object.keys(testKeys).every(key => mediaState[key] === prev[key]) ? prev : (componentState.prev = mediaState, mediaState);
|
|
116
|
-
};
|
|
117
|
-
let state;
|
|
118
|
-
if (process.env.TAMAGUI_SYNC_MEDIA_QUERY) state = React.useSyncExternalStore(subscribe, getSnapshot, () => initialState);else {
|
|
119
|
-
const [_state, setState] = React.useState(initialState);
|
|
120
|
-
state = _state, useIsomorphicLayoutEffect(() => {
|
|
121
|
-
function update() {
|
|
122
|
-
setState(getSnapshot);
|
|
123
|
-
}
|
|
124
|
-
return update(), disableSSR || Promise.resolve().then(() => {
|
|
125
|
-
update();
|
|
126
|
-
}), subscribe(update);
|
|
127
|
-
}, []);
|
|
98
|
+
function useMedia(cc, debug) {
|
|
99
|
+
const initialState = getSetting("disableSSR") || getDisableSSR(cc) || !isWeb ? mediaState : initState,
|
|
100
|
+
[state, setState] = React.useState(initialState);
|
|
101
|
+
let currentKeys;
|
|
102
|
+
const getCurrentKeys = () => currentKeys;
|
|
103
|
+
function getSnapshot(cur, keys = cur.lastKeys) {
|
|
104
|
+
if (!keys) return cur;
|
|
105
|
+
for (const key of keys) if (mediaState[key] !== cur[key]) return process.env.NODE_ENV === "development" && debug && console.warn("useMedia()\u270D\uFE0F", key, cur[key], ">", mediaState[key]), {
|
|
106
|
+
...mediaState,
|
|
107
|
+
lastKeys: new Set(keys)
|
|
108
|
+
};
|
|
109
|
+
return cur;
|
|
128
110
|
}
|
|
129
|
-
|
|
111
|
+
let isRendering = !0;
|
|
112
|
+
const isInitialState = state === initialState;
|
|
113
|
+
return useIsomorphicLayoutEffect(() => {
|
|
114
|
+
isRendering = !1;
|
|
115
|
+
}), useIsomorphicLayoutEffect(() => {
|
|
116
|
+
const update = () => setState(prev => getSnapshot(prev,
|
|
117
|
+
// because the !didHydrateOnce logic we can't update as we render
|
|
118
|
+
// we need to get the current keys in case we added
|
|
119
|
+
// these only ever add keys so likely ok?
|
|
120
|
+
getCurrentKeys()));
|
|
121
|
+
return update(), subscribe(update);
|
|
122
|
+
}, []), new Proxy(state, {
|
|
130
123
|
get(_, key) {
|
|
131
|
-
if (!disableMediaTouch
|
|
124
|
+
if (isRendering && !disableMediaTouch && typeof key == "string" && (!state.lastKeys || !state.lastKeys.has(key) || state[key] !== mediaState[key]) && (process.env.NODE_ENV === "development" && debug && console.info("useMedia() TOUCH", key), currentKeys ||= /* @__PURE__ */new Set(), currentKeys.add(key), !isInitialState)) {
|
|
125
|
+
const next = getSnapshot(state, currentKeys);
|
|
126
|
+
next !== state && setState(next);
|
|
127
|
+
}
|
|
128
|
+
return Reflect.get(state, key);
|
|
132
129
|
}
|
|
133
130
|
});
|
|
134
131
|
}
|
|
135
132
|
let disableMediaTouch = !1;
|
|
136
|
-
function
|
|
133
|
+
function _disableMediaTouch(val) {
|
|
137
134
|
disableMediaTouch = val;
|
|
138
135
|
}
|
|
139
136
|
function getMediaState(mediaGroups, layout) {
|
|
@@ -174,5 +171,5 @@ function mediaKeyMatch(key, dimensions) {
|
|
|
174
171
|
return isMax ? givenVal < expectedVal : givenVal > expectedVal;
|
|
175
172
|
});
|
|
176
173
|
}
|
|
177
|
-
export {
|
|
174
|
+
export { _disableMediaTouch, configureMedia, getMedia, getMediaImportanceIfMoreImportant, getMediaKeyImportance, getMediaState, isMediaKey, mediaKeyMatch, mediaKeyToQuery, mediaKeys, mediaObjectToString, mediaQueryConfig, mediaState, setMediaShouldUpdate, setupMediaListeners, useMedia };
|
|
178
175
|
//# sourceMappingURL=useMedia.mjs.map
|