@tamagui/web 1.100.0 → 1.100.2
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 +10 -3
- package/dist/cjs/createComponent.js.map +1 -1
- package/dist/cjs/createComponent.native.js +10 -3
- package/dist/cjs/createComponent.native.js.map +2 -2
- package/dist/cjs/hooks/useDidHydrateOnce.js +37 -0
- package/dist/cjs/hooks/useDidHydrateOnce.js.map +6 -0
- package/dist/cjs/hooks/useDidHydrateOnce.native.js +42 -0
- package/dist/cjs/hooks/useDidHydrateOnce.native.js.map +6 -0
- package/dist/cjs/hooks/useMedia.js +15 -3
- package/dist/cjs/hooks/useMedia.js.map +1 -1
- package/dist/cjs/hooks/useMedia.native.js +15 -3
- package/dist/cjs/hooks/useMedia.native.js.map +2 -2
- package/dist/cjs/views/TamaguiProvider.js +3 -3
- package/dist/cjs/views/TamaguiProvider.js.map +1 -1
- package/dist/cjs/views/TamaguiProvider.native.js +3 -3
- package/dist/cjs/views/TamaguiProvider.native.js.map +2 -2
- package/dist/esm/createComponent.js +10 -2
- package/dist/esm/createComponent.js.map +1 -1
- package/dist/esm/createComponent.mjs +11 -2
- package/dist/esm/createComponent.native.js +10 -2
- package/dist/esm/createComponent.native.js.map +2 -2
- package/dist/esm/hooks/useDidHydrateOnce.js +21 -0
- package/dist/esm/hooks/useDidHydrateOnce.js.map +6 -0
- package/dist/esm/hooks/useDidHydrateOnce.mjs +17 -0
- package/dist/esm/hooks/useDidHydrateOnce.native.js +21 -0
- package/dist/esm/hooks/useDidHydrateOnce.native.js.map +6 -0
- package/dist/esm/hooks/useMedia.js +17 -4
- package/dist/esm/hooks/useMedia.js.map +1 -1
- package/dist/esm/hooks/useMedia.mjs +18 -4
- package/dist/esm/hooks/useMedia.native.js +17 -4
- package/dist/esm/hooks/useMedia.native.js.map +2 -2
- package/dist/esm/views/TamaguiProvider.js +3 -2
- package/dist/esm/views/TamaguiProvider.js.map +1 -1
- package/dist/esm/views/TamaguiProvider.mjs +3 -2
- package/dist/esm/views/TamaguiProvider.native.js +3 -2
- package/dist/esm/views/TamaguiProvider.native.js.map +2 -2
- package/package.json +11 -11
- package/src/createComponent.tsx +12 -3
- package/src/hooks/useDidHydrateOnce.tsx +29 -0
- package/src/hooks/useMedia.tsx +32 -4
- package/src/views/TamaguiProvider.tsx +3 -0
- package/types/createComponent.d.ts.map +1 -1
- package/types/hooks/useDidHydrateOnce.d.ts +3 -0
- package/types/hooks/useDidHydrateOnce.d.ts.map +1 -0
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/views/TamaguiProvider.d.ts.map +1 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/Users/n8/tamagui/packages/web/src/hooks/useDidHydrateOnce.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAASA,iBAAiB;AAE1B,IAAIC,iBAAiB;AAKd,SAASC,wBAAAA;AACdF,YAAU,WAAA;AACR,QAAMG,KAAKC,YAAY,WAAA;AACrB,MAAIC,KAAKC,IAAG,IAAKC,OAAO,OACtBN,iBAAiB,IACjBO,cAAcL,EAAAA;IAElB,GAAG,EAAA;AACH,WAAO,WAAA;AACLK,oBAAcL,EAAAA;IAChB;EACF,GAAG,CAAA,CAAE;AACP;AAEA,IAAII,OAAOF,KAAKC,IAAG;AAEZ,SAASG,oBAAAA;AACd,SAAKR,mBACHM,OAAOF,KAAKC,IAAG,IAEVL;AACT;",
|
|
5
|
+
"names": ["useEffect", "didHydrateOnce", "useDidHydrateOnceRoot", "tm", "setInterval", "Date", "now", "last", "clearInterval", "useDidHydrateOnce"]
|
|
6
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { isServer, isWeb } from "@tamagui/constants";
|
|
2
|
-
import { useRef,
|
|
1
|
+
import { isServer, isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
|
+
import { useRef, useState } from "react";
|
|
3
3
|
import { getConfig } from "../config";
|
|
4
4
|
import { matchMedia } from "../helpers/matchMedia";
|
|
5
5
|
import { pseudoDescriptors } from "../helpers/pseudoDescriptors";
|
|
6
6
|
import { getDisableSSR } from "./useDisableSSR";
|
|
7
|
+
import { useDidHydrateOnce } from "./useDidHydrateOnce";
|
|
7
8
|
let mediaState = (
|
|
8
9
|
// development only safeguard
|
|
9
10
|
process.env.NODE_ENV === "development" ? new Proxy(
|
|
@@ -80,12 +81,24 @@ function setMediaShouldUpdate(ref, props) {
|
|
|
80
81
|
function subscribe(subscriber) {
|
|
81
82
|
return listeners.add(subscriber), () => listeners.delete(subscriber);
|
|
82
83
|
}
|
|
84
|
+
function useLayoutExternalStore(subscriber, getSnapshot, getServerSnapshot) {
|
|
85
|
+
const hasHydrated = useDidHydrateOnce(), [state, setState] = useState(hasHydrated ? mediaState : getServerSnapshot);
|
|
86
|
+
return useIsomorphicLayoutEffect(() => {
|
|
87
|
+
function update() {
|
|
88
|
+
setState((prev) => {
|
|
89
|
+
const next = getSnapshot();
|
|
90
|
+
return next !== prev ? next : prev;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return update(), subscriber(update);
|
|
94
|
+
}, []), state;
|
|
95
|
+
}
|
|
83
96
|
function useMedia(uid, componentContext) {
|
|
84
|
-
const internal = useRef(), initialState = (getDisableSSR(componentContext) || !isWeb ? mediaState : initState) || {}, state =
|
|
97
|
+
const internal = useRef(), initialState = (getDisableSSR(componentContext) || !isWeb ? mediaState : initState) || {}, state = useLayoutExternalStore(
|
|
85
98
|
subscribe,
|
|
86
99
|
() => {
|
|
87
100
|
if (!internal.current)
|
|
88
|
-
return
|
|
101
|
+
return mediaState;
|
|
89
102
|
const { touched, prev } = internal.current, componentState = uid ? shouldUpdate.get(uid) : void 0;
|
|
90
103
|
if (componentState && componentState.enabled === !1)
|
|
91
104
|
return prev;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useMedia.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,UAAU,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { isServer, isWeb } from "@tamagui/constants";
|
|
2
|
-
import { useRef,
|
|
1
|
+
import { isServer, isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
|
+
import { useRef, useState } from "react";
|
|
3
3
|
import { getConfig } from "../config.mjs";
|
|
4
4
|
import { matchMedia } from "../helpers/matchMedia.mjs";
|
|
5
5
|
import { pseudoDescriptors } from "../helpers/pseudoDescriptors.mjs";
|
|
6
6
|
import { getDisableSSR } from "./useDisableSSR.mjs";
|
|
7
|
+
import { useDidHydrateOnce } from "./useDidHydrateOnce.mjs";
|
|
7
8
|
let mediaState =
|
|
8
9
|
// development only safeguard
|
|
9
10
|
process.env.NODE_ENV === "development" ? new Proxy({}, {
|
|
@@ -88,11 +89,24 @@ function setMediaShouldUpdate(ref, props) {
|
|
|
88
89
|
function subscribe(subscriber) {
|
|
89
90
|
return listeners.add(subscriber), () => listeners.delete(subscriber);
|
|
90
91
|
}
|
|
92
|
+
function useLayoutExternalStore(subscriber, getSnapshot, getServerSnapshot) {
|
|
93
|
+
const hasHydrated = useDidHydrateOnce(),
|
|
94
|
+
[state, setState] = useState(hasHydrated ? mediaState : getServerSnapshot);
|
|
95
|
+
return useIsomorphicLayoutEffect(() => {
|
|
96
|
+
function update() {
|
|
97
|
+
setState(prev => {
|
|
98
|
+
const next = getSnapshot();
|
|
99
|
+
return next !== prev ? next : prev;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return update(), subscriber(update);
|
|
103
|
+
}, []), state;
|
|
104
|
+
}
|
|
91
105
|
function useMedia(uid, componentContext) {
|
|
92
106
|
const internal = useRef(),
|
|
93
107
|
initialState = (getDisableSSR(componentContext) || !isWeb ? mediaState : initState) || {},
|
|
94
|
-
state =
|
|
95
|
-
if (!internal.current) return
|
|
108
|
+
state = useLayoutExternalStore(subscribe, () => {
|
|
109
|
+
if (!internal.current) return mediaState;
|
|
96
110
|
const {
|
|
97
111
|
touched,
|
|
98
112
|
prev
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { isServer, isWeb } from "@tamagui/constants";
|
|
2
|
-
import { useRef,
|
|
1
|
+
import { isServer, isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
|
+
import { useRef, useState } from "react";
|
|
3
3
|
import { getConfig } from "../config";
|
|
4
4
|
import { matchMedia } from "../helpers/matchMedia";
|
|
5
5
|
import { pseudoDescriptors } from "../helpers/pseudoDescriptors";
|
|
6
6
|
import { getDisableSSR } from "./useDisableSSR";
|
|
7
|
+
import { useDidHydrateOnce } from "./useDidHydrateOnce";
|
|
7
8
|
function _array_like_to_array(arr, len) {
|
|
8
9
|
(len == null || len > arr.length) && (len = arr.length);
|
|
9
10
|
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
@@ -167,10 +168,22 @@ function subscribe(subscriber) {
|
|
|
167
168
|
return listeners.delete(subscriber);
|
|
168
169
|
};
|
|
169
170
|
}
|
|
171
|
+
function useLayoutExternalStore(subscriber, getSnapshot, getServerSnapshot) {
|
|
172
|
+
var hasHydrated = useDidHydrateOnce(), _useState = _sliced_to_array(useState(hasHydrated ? mediaState : getServerSnapshot), 2), state = _useState[0], setState = _useState[1];
|
|
173
|
+
return useIsomorphicLayoutEffect(function() {
|
|
174
|
+
var update = function() {
|
|
175
|
+
setState(function(prev) {
|
|
176
|
+
var next = getSnapshot();
|
|
177
|
+
return next !== prev ? next : prev;
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
return update(), subscriber(update);
|
|
181
|
+
}, []), state;
|
|
182
|
+
}
|
|
170
183
|
function useMedia(uid, componentContext) {
|
|
171
|
-
var internal = useRef(), disableSSR = getDisableSSR(componentContext), initialState = (disableSSR || !isWeb ? mediaState : initState) || {}, state =
|
|
184
|
+
var internal = useRef(), disableSSR = getDisableSSR(componentContext), initialState = (disableSSR || !isWeb ? mediaState : initState) || {}, state = useLayoutExternalStore(subscribe, function() {
|
|
172
185
|
if (!internal.current)
|
|
173
|
-
return
|
|
186
|
+
return mediaState;
|
|
174
187
|
var _internal_current = internal.current, touched = _internal_current.touched, prev = _internal_current.prev, componentState = uid ? shouldUpdate.get(uid) : void 0;
|
|
175
188
|
if (componentState && componentState.enabled === !1)
|
|
176
189
|
return prev;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/Users/n8/tamagui/packages/web/src/hooks/useMedia.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAASA,UAAUC,
|
|
5
|
-
"names": ["isServer", "isWeb", "useRef", "
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["isServer", "isWeb", "useIsomorphicLayoutEffect", "useRef", "useState", "getConfig", "matchMedia", "pseudoDescriptors", "getDisableSSR", "useDidHydrateOnce", "mediaState", "process", "env", "NODE_ENV", "Proxy", "get", "target", "key", "Error", "Reflect", "mediaQueryConfig", "getMedia", "mediaKeys", "Set", "isMediaKey", "has", "startsWith", "initState", "defaultMediaImportance", "Object", "keys", "length", "mediaKeysOrdered", "getMediaKeyImportance", "conf", "settings", "mediaPropOrder", "indexOf", "dispose", "mediaVersion", "configureMedia", "config", "media", "mediaQueryDefaultActive", "add", "assign", "disableSSR", "setupMediaListeners", "updateCurrentState", "unlisten", "forEach", "cb", "clear", "setupVersion", "update", "next", "getMatch", "matches", "str", "mediaObjectToString", "match", "addListener", "removeListener", "listeners", "flushing", "flushVersion", "Promise", "resolve", "then", "shouldUpdate", "WeakMap", "setMediaShouldUpdate", "ref", "props", "set", "subscribe", "subscriber", "delete", "useLayoutExternalStore", "getSnapshot", "getServerSnapshot", "hasHydrated", "state", "setState", "prev", "useMedia", "uid", "componentContext", "internal", "initialState", "current", "touched", "componentState", "undefined", "enabled", "testKeys", "hasntUpdated", "every", "_", "getMediaImportanceIfMoreImportant", "mediaKey", "importancesUsed", "isSizeMedia", "importance", "camelToHyphen", "replace", "m", "toLowerCase", "cache", "cachedMediaKeyToQuery", "query", "res", "entries", "map", "feature", "value", "test", "join", "mediaKeyToQuery", "mediaKeyMatch", "dimensions", "mediaQueries", "result", "expectedVal", "isMax", "isWidth", "endsWith", "givenVal"]
|
|
6
6
|
}
|
|
@@ -3,6 +3,7 @@ import * as React from "react";
|
|
|
3
3
|
import { ComponentContext } from "../contexts/ComponentContext";
|
|
4
4
|
import { setupMediaListeners } from "../hooks/useMedia";
|
|
5
5
|
import { ThemeProvider } from "./ThemeProvider";
|
|
6
|
+
import { useDidHydrateOnceRoot } from "../hooks/useDidHydrateOnce";
|
|
6
7
|
import { jsx } from "react/jsx-runtime";
|
|
7
8
|
function TamaguiProvider({
|
|
8
9
|
children,
|
|
@@ -10,14 +11,14 @@ function TamaguiProvider({
|
|
|
10
11
|
config,
|
|
11
12
|
...themePropsProvider
|
|
12
13
|
}) {
|
|
13
|
-
return setupMediaListeners(), isClient && React.useInsertionEffect(() => {
|
|
14
|
+
return setupMediaListeners(), isClient && (useDidHydrateOnceRoot(), React.useInsertionEffect(() => {
|
|
14
15
|
if (config && (config.disableSSR || document.documentElement.classList.contains("t_unmounted") && document.documentElement.classList.remove("t_unmounted"), !disableInjectCSS)) {
|
|
15
16
|
const style = document.createElement("style");
|
|
16
17
|
return style.appendChild(document.createTextNode(config.getCSS())), document.head.appendChild(style), () => {
|
|
17
18
|
document.head.removeChild(style);
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
|
-
}, [config, disableInjectCSS]), /* @__PURE__ */ jsx(ComponentContext.Provider, { animationDriver: config?.animations, children: /* @__PURE__ */ jsx(
|
|
21
|
+
}, [config, disableInjectCSS])), /* @__PURE__ */ jsx(ComponentContext.Provider, { animationDriver: config?.animations, children: /* @__PURE__ */ jsx(
|
|
21
22
|
ThemeProvider,
|
|
22
23
|
{
|
|
23
24
|
themeClassNameOnRoot: config?.themeClassNameOnRoot,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/views/TamaguiProvider.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,gBAAgB;AACzB,YAAY,WAAW;AAEvB,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;AAEpC,SAAS,qBAAqB;
|
|
4
|
+
"mappings": "AAAA,SAAS,gBAAgB;AACzB,YAAY,WAAW;AAEvB,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;AAEpC,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AAsChC;AApCC,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAyB;AACvB,6BAAoB,GAEhB,aAGF,sBAAsB,GAEtB,MAAM,mBAAmB,MAAM;AAC7B,QAAK,WACA,OAAO,cAGN,SAAS,gBAAgB,UAAU,SAAS,aAAa,KAC3D,SAAS,gBAAgB,UAAU,OAAO,aAAa,GAIvD,CAAC,mBAAkB;AACrB,YAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,mBAAM,YAAY,SAAS,eAAe,OAAO,OAAO,CAAC,CAAC,GAC1D,SAAS,KAAK,YAAY,KAAK,GACxB,MAAM;AACX,iBAAS,KAAK,YAAY,KAAK;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,QAAQ,gBAAgB,CAAC,IAI7B,oBAAC,iBAAiB,UAAjB,EAA0B,iBAAiB,QAAQ,YAClD;AAAA,IAAC;AAAA;AAAA,MACC,sBAAsB,QAAQ;AAAA,MAC9B,uBAAuB,QAAQ;AAAA,MAC9B,GAAG;AAAA,MACJ,cACE,mBAAmB,iBAAiB,SAAS,OAAO,KAAK,OAAO,MAAM,EAAE,CAAC,IAAI;AAAA,MAG9E;AAAA;AAAA,EACH,GACF;AAEJ;AAEA,gBAAgB,cAAiB;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -3,6 +3,7 @@ import * as React from "react";
|
|
|
3
3
|
import { ComponentContext } from "../contexts/ComponentContext.mjs";
|
|
4
4
|
import { setupMediaListeners } from "../hooks/useMedia.mjs";
|
|
5
5
|
import { ThemeProvider } from "./ThemeProvider.mjs";
|
|
6
|
+
import { useDidHydrateOnceRoot } from "../hooks/useDidHydrateOnce.mjs";
|
|
6
7
|
import { jsx } from "react/jsx-runtime";
|
|
7
8
|
function TamaguiProvider({
|
|
8
9
|
children,
|
|
@@ -10,14 +11,14 @@ function TamaguiProvider({
|
|
|
10
11
|
config,
|
|
11
12
|
...themePropsProvider
|
|
12
13
|
}) {
|
|
13
|
-
return setupMediaListeners(), isClient && React.useInsertionEffect(() => {
|
|
14
|
+
return setupMediaListeners(), isClient && (useDidHydrateOnceRoot(), React.useInsertionEffect(() => {
|
|
14
15
|
if (config && (config.disableSSR || document.documentElement.classList.contains("t_unmounted") && document.documentElement.classList.remove("t_unmounted"), !disableInjectCSS)) {
|
|
15
16
|
const style = document.createElement("style");
|
|
16
17
|
return style.appendChild(document.createTextNode(config.getCSS())), document.head.appendChild(style), () => {
|
|
17
18
|
document.head.removeChild(style);
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
|
-
}, [config, disableInjectCSS]), /* @__PURE__ */jsx(ComponentContext.Provider, {
|
|
21
|
+
}, [config, disableInjectCSS])), /* @__PURE__ */jsx(ComponentContext.Provider, {
|
|
21
22
|
animationDriver: config?.animations,
|
|
22
23
|
children: /* @__PURE__ */jsx(ThemeProvider, {
|
|
23
24
|
themeClassNameOnRoot: config?.themeClassNameOnRoot,
|
|
@@ -4,6 +4,7 @@ import * as React from "react";
|
|
|
4
4
|
import { ComponentContext } from "../contexts/ComponentContext";
|
|
5
5
|
import { setupMediaListeners } from "../hooks/useMedia";
|
|
6
6
|
import { ThemeProvider } from "./ThemeProvider";
|
|
7
|
+
import { useDidHydrateOnceRoot } from "../hooks/useDidHydrateOnce";
|
|
7
8
|
function _define_property(obj, key, value) {
|
|
8
9
|
return key in obj ? Object.defineProperty(obj, key, {
|
|
9
10
|
value,
|
|
@@ -61,7 +62,7 @@ function TamaguiProvider(_param) {
|
|
|
61
62
|
"disableInjectCSS",
|
|
62
63
|
"config"
|
|
63
64
|
]);
|
|
64
|
-
setupMediaListeners(), isClient && React.useInsertionEffect(function() {
|
|
65
|
+
setupMediaListeners(), isClient && (useDidHydrateOnceRoot(), React.useInsertionEffect(function() {
|
|
65
66
|
if (config && (config.disableSSR || document.documentElement.classList.contains("t_unmounted") && document.documentElement.classList.remove("t_unmounted"), !disableInjectCSS)) {
|
|
66
67
|
var style = document.createElement("style");
|
|
67
68
|
return style.appendChild(document.createTextNode(config.getCSS())), document.head.appendChild(style), function() {
|
|
@@ -71,7 +72,7 @@ function TamaguiProvider(_param) {
|
|
|
71
72
|
}, [
|
|
72
73
|
config,
|
|
73
74
|
disableInjectCSS
|
|
74
|
-
]);
|
|
75
|
+
]));
|
|
75
76
|
var _themePropsProvider_defaultTheme;
|
|
76
77
|
return /* @__PURE__ */ _jsx(ComponentContext.Provider, {
|
|
77
78
|
animationDriver: config == null ? void 0 : config.animations,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/views/Users/n8/tamagui/packages/web/src/views/TamaguiProvider.tsx"],
|
|
4
|
-
"mappings": ";AAAA,SAASA,gBAAgB;AACzB,YAAYC,WAAW;AAEvB,SAASC,wBAAwB;AACjC,SAASC,2BAA2B;AAEpC,SAASC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
5
|
-
"names": ["isClient", "React", "ComponentContext", "setupMediaListeners", "ThemeProvider", "TamaguiProvider", "children", "disableInjectCSS", "config", "themePropsProvider", "useInsertionEffect", "disableSSR", "document", "documentElement", "classList", "contains", "remove", "style", "createElement", "appendChild", "createTextNode", "getCSS", "head", "removeChild", "Provider", "animationDriver", "animations", "themeClassNameOnRoot", "disableRootThemeClass", "defaultTheme", "Object", "keys", "themes"]
|
|
4
|
+
"mappings": ";AAAA,SAASA,gBAAgB;AACzB,YAAYC,WAAW;AAEvB,SAASC,wBAAwB;AACjC,SAASC,2BAA2B;AAEpC,SAASC,qBAAqB;AAC9B,SAASC,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/B,SAASC,gBAAgB,QAAA;MAC9BC,WAD8B,OAC9BA,UACAC,mBAF8B,OAE9BA,kBACAC,SAH8B,OAG9BA,QACGC,qBAAAA,2BAJ2B,QAAA;IAC9BH;IACAC;IACAC;;AAGAN,sBAAAA,GAEIH,aAGFK,sBAAAA,GAEAJ,MAAMU,mBAAmB,WAAA;AACvB,QAAKF,WACAA,OAAOG,cAGNC,SAASC,gBAAgBC,UAAUC,SAAS,aAAA,KAC9CH,SAASC,gBAAgBC,UAAUE,OAAO,aAAA,GAI1C,CAACT,mBAAkB;AACrB,UAAMU,QAAQL,SAASM,cAAc,OAAA;AACrCD,mBAAME,YAAYP,SAASQ,eAAeZ,OAAOa,OAAM,CAAA,CAAA,GACvDT,SAASU,KAAKH,YAAYF,KAAAA,GACnB,WAAA;AACLL,iBAASU,KAAKC,YAAYN,KAAAA;MAC5B;IACF;EACF,GAAG;IAACT;IAAQD;GAAiB;MAUvBE;AAPR,SACE,qBAACR,iBAAiBuB,UAAQ;IAACC,iBAAiBjB,UAAAA,OAAAA,SAAAA,OAAQkB;cAClD,qBAACvB,eAAAA,qBAAAA,eAAAA;MACCwB,sBAAsBnB,UAAAA,OAAAA,SAAAA,OAAQmB;MAC9BC,uBAAuBpB,UAAAA,OAAAA,SAAAA,OAAQoB;OAC3BnB,kBAAAA,GAAAA;MACJoB,eACEpB,mCAAAA,mBAAmBoB,kBAAY,QAA/BpB,qCAAAA,SAAAA,mCAAoCD,SAASsB,OAAOC,KAAKvB,OAAOwB,MAAM,EAAE,CAAA,IAAK;;;;AAOvF;AAEA3B,gBAAgB,cAAiB;",
|
|
5
|
+
"names": ["isClient", "React", "ComponentContext", "setupMediaListeners", "ThemeProvider", "useDidHydrateOnceRoot", "TamaguiProvider", "children", "disableInjectCSS", "config", "themePropsProvider", "useInsertionEffect", "disableSSR", "document", "documentElement", "classList", "contains", "remove", "style", "createElement", "appendChild", "createTextNode", "getCSS", "head", "removeChild", "Provider", "animationDriver", "animations", "themeClassNameOnRoot", "disableRootThemeClass", "defaultTheme", "Object", "keys", "themes"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/web",
|
|
3
|
-
"version": "1.100.
|
|
3
|
+
"version": "1.100.2",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -27,18 +27,18 @@
|
|
|
27
27
|
"reset.css"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tamagui/compose-refs": "1.100.
|
|
31
|
-
"@tamagui/constants": "1.100.
|
|
32
|
-
"@tamagui/helpers": "1.100.
|
|
33
|
-
"@tamagui/normalize-css-color": "1.100.
|
|
34
|
-
"@tamagui/timer": "1.100.
|
|
35
|
-
"@tamagui/types": "1.100.
|
|
36
|
-
"@tamagui/use-did-finish-ssr": "1.100.
|
|
37
|
-
"@tamagui/use-event": "1.100.
|
|
38
|
-
"@tamagui/use-force-update": "1.100.
|
|
30
|
+
"@tamagui/compose-refs": "1.100.2",
|
|
31
|
+
"@tamagui/constants": "1.100.2",
|
|
32
|
+
"@tamagui/helpers": "1.100.2",
|
|
33
|
+
"@tamagui/normalize-css-color": "1.100.2",
|
|
34
|
+
"@tamagui/timer": "1.100.2",
|
|
35
|
+
"@tamagui/types": "1.100.2",
|
|
36
|
+
"@tamagui/use-did-finish-ssr": "1.100.2",
|
|
37
|
+
"@tamagui/use-event": "1.100.2",
|
|
38
|
+
"@tamagui/use-force-update": "1.100.2"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@tamagui/build": "1.100.
|
|
41
|
+
"@tamagui/build": "1.100.2",
|
|
42
42
|
"@testing-library/react": "^14.0.0",
|
|
43
43
|
"csstype": "^3.0.10",
|
|
44
44
|
"react": "^18.2.0",
|
package/src/createComponent.tsx
CHANGED
|
@@ -10,6 +10,7 @@ import React, {
|
|
|
10
10
|
useContext,
|
|
11
11
|
useEffect,
|
|
12
12
|
useId,
|
|
13
|
+
useLayoutEffect,
|
|
13
14
|
useMemo,
|
|
14
15
|
useRef,
|
|
15
16
|
useState,
|
|
@@ -68,6 +69,7 @@ import type {
|
|
|
68
69
|
import { Slot } from './views/Slot'
|
|
69
70
|
import { getThemedChildren } from './views/Theme'
|
|
70
71
|
import { ThemeDebug } from './views/ThemeDebug'
|
|
72
|
+
import { useDidHydrateOnce } from './hooks/useDidHydrateOnce'
|
|
71
73
|
|
|
72
74
|
/**
|
|
73
75
|
* All things that need one-time setup after createTamagui is called
|
|
@@ -195,9 +197,16 @@ export const useComponentState = (
|
|
|
195
197
|
|
|
196
198
|
const hasEnterState = hasEnterStyle || isEntering
|
|
197
199
|
|
|
200
|
+
const didHydrateOnce = useDidHydrateOnce()
|
|
201
|
+
|
|
198
202
|
const initialState =
|
|
199
|
-
hasEnterState || hasRNAnimation
|
|
200
|
-
?
|
|
203
|
+
hasEnterState || (!didHydrateOnce && hasRNAnimation)
|
|
204
|
+
? // on the very first render we switch all spring animation drivers to css rendering
|
|
205
|
+
// this is because we need to use css variables, which they don't support to do proper SSR
|
|
206
|
+
// without flickers of the wrong colors.
|
|
207
|
+
// but once we do that initial hydration and we are in client side rendering mode,
|
|
208
|
+
// we can avoid the extra re-render on mount
|
|
209
|
+
isWeb && !didHydrateOnce
|
|
201
210
|
? defaultComponentState
|
|
202
211
|
: defaultComponentStateShouldEnter
|
|
203
212
|
: defaultComponentStateMounted
|
|
@@ -912,7 +921,7 @@ export function createComponent<
|
|
|
912
921
|
return
|
|
913
922
|
}
|
|
914
923
|
|
|
915
|
-
if (state.unmounted === true) {
|
|
924
|
+
if (state.unmounted === true && hasEnterStyle) {
|
|
916
925
|
setStateShallow({ unmounted: 'should-enter' })
|
|
917
926
|
return
|
|
918
927
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useEffect } from 'react'
|
|
2
|
+
|
|
3
|
+
let didHydrateOnce = false
|
|
4
|
+
|
|
5
|
+
// if set on the root tamagui provider, we now can know when things are fully hydrated
|
|
6
|
+
// we cheat a bit why just resetting as we render components below
|
|
7
|
+
|
|
8
|
+
export function useDidHydrateOnceRoot() {
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const tm = setInterval(() => {
|
|
11
|
+
if (Date.now() - last > 32) {
|
|
12
|
+
didHydrateOnce = true
|
|
13
|
+
clearInterval(tm)
|
|
14
|
+
}
|
|
15
|
+
}, 16)
|
|
16
|
+
return () => {
|
|
17
|
+
clearInterval(tm)
|
|
18
|
+
}
|
|
19
|
+
}, [])
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let last = Date.now()
|
|
23
|
+
|
|
24
|
+
export function useDidHydrateOnce() {
|
|
25
|
+
if (!didHydrateOnce) {
|
|
26
|
+
last = Date.now()
|
|
27
|
+
}
|
|
28
|
+
return didHydrateOnce
|
|
29
|
+
}
|
package/src/hooks/useMedia.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { isServer, isWeb } from '@tamagui/constants'
|
|
2
|
-
import { useRef, useSyncExternalStore } from 'react'
|
|
1
|
+
import { isServer, isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
|
|
2
|
+
import { useRef, useState, useSyncExternalStore } from 'react'
|
|
3
3
|
|
|
4
4
|
import { getConfig } from '../config'
|
|
5
5
|
import { matchMedia } from '../helpers/matchMedia'
|
|
@@ -15,6 +15,7 @@ import type {
|
|
|
15
15
|
UseMediaState,
|
|
16
16
|
} from '../types'
|
|
17
17
|
import { getDisableSSR } from './useDisableSSR'
|
|
18
|
+
import { useDidHydrateOnce } from './useDidHydrateOnce'
|
|
18
19
|
|
|
19
20
|
export let mediaState: MediaQueryState =
|
|
20
21
|
// development only safeguard
|
|
@@ -187,17 +188,44 @@ function subscribe(subscriber: any) {
|
|
|
187
188
|
return () => listeners.delete(subscriber)
|
|
188
189
|
}
|
|
189
190
|
|
|
191
|
+
function useLayoutExternalStore<State>(
|
|
192
|
+
subscriber,
|
|
193
|
+
getSnapshot,
|
|
194
|
+
getServerSnapshot
|
|
195
|
+
): State {
|
|
196
|
+
const hasHydrated = useDidHydrateOnce()
|
|
197
|
+
const [state, setState] = useState(hasHydrated ? mediaState : getServerSnapshot)
|
|
198
|
+
|
|
199
|
+
useIsomorphicLayoutEffect(() => {
|
|
200
|
+
function update() {
|
|
201
|
+
setState((prev) => {
|
|
202
|
+
const next = getSnapshot()
|
|
203
|
+
if (next !== prev) {
|
|
204
|
+
return next
|
|
205
|
+
}
|
|
206
|
+
return prev
|
|
207
|
+
})
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
update()
|
|
211
|
+
|
|
212
|
+
return subscriber(update)
|
|
213
|
+
}, [])
|
|
214
|
+
|
|
215
|
+
return state
|
|
216
|
+
}
|
|
217
|
+
|
|
190
218
|
export function useMedia(uid?: any, componentContext?: ComponentContextI): UseMediaState {
|
|
191
219
|
const internal = useRef<UseMediaInternalState | undefined>()
|
|
192
220
|
// performance boost to avoid using context twice
|
|
193
221
|
const disableSSR = getDisableSSR(componentContext)
|
|
194
222
|
const initialState = (disableSSR || !isWeb ? mediaState : initState) || {}
|
|
195
223
|
|
|
196
|
-
const state =
|
|
224
|
+
const state = useLayoutExternalStore<MediaQueryState>(
|
|
197
225
|
subscribe,
|
|
198
226
|
() => {
|
|
199
227
|
if (!internal.current) {
|
|
200
|
-
return
|
|
228
|
+
return mediaState
|
|
201
229
|
}
|
|
202
230
|
|
|
203
231
|
const { touched, prev } = internal.current
|
|
@@ -5,6 +5,7 @@ import { ComponentContext } from '../contexts/ComponentContext'
|
|
|
5
5
|
import { setupMediaListeners } from '../hooks/useMedia'
|
|
6
6
|
import type { TamaguiProviderProps } from '../types'
|
|
7
7
|
import { ThemeProvider } from './ThemeProvider'
|
|
8
|
+
import { useDidHydrateOnceRoot } from '../hooks/useDidHydrateOnce'
|
|
8
9
|
|
|
9
10
|
export function TamaguiProvider({
|
|
10
11
|
children,
|
|
@@ -17,6 +18,8 @@ export function TamaguiProvider({
|
|
|
17
18
|
if (isClient) {
|
|
18
19
|
// inject CSS if asked to (not SSR compliant)
|
|
19
20
|
|
|
21
|
+
useDidHydrateOnceRoot()
|
|
22
|
+
|
|
20
23
|
React.useInsertionEffect(() => {
|
|
21
24
|
if (!config) return
|
|
22
25
|
if (!config.disableSSR) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAaN,MAAM,OAAO,CAAA;AAyBd,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAG/E,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EAKT,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,YAAY,EAEZ,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,SAAS,EAIV,MAAM,SAAS,CAAA;AAehB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AAkE9D,eAAO,MAAM,iBAAiB,UACrB,UAAU,GAAG,SAAS,GAAG,OAAO,MAAM,EAAE,GAAG,CAAC,+BACtB,iBAAiB,gBAChC,YAAY,UAClB,qBAAqB;;;;;;;;;;;;;;;;;;;CA4L9B,CAAA;AAuBD,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACnD,GAAG,SAAS,cAAc,GAAG,cAAc,EAC3C,SAAS,GAAG,KAAK,EACjB,UAAU,SAAS,MAAM,GAAG,KAAK,EACjC,YAAY,EAAE,YAAY,wEAyjC3B;AAsBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,OAEjD;yBAFe,QAAQ;;;AAkBxB,eAAO,MAAM,MAAM,yFA0CjB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,cAAc,GAAG,OAAO,CAAA;IACpC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBAiGxD;AAwDD,eAAO,MAAM,UAAU,UAAW,GAAG,QAQpC,CAAA;AAED,eAAO,MAAM,uBAAuB,uFAOjC;IACD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,qBAAqB,CAAC,GAAG,SAAS,KAAK,IAAI,CAAA;IAC5E,YAAY,CAAC,EAAE,IAAI,MAAM,CAAC,CAAA;IAC1B,WAAW,CAAC,EAAE,IAAI,MAAM,CAAC,CAAA;IACzB,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,KAAK,EAAE,qBAAqB,CAAA;CAC7B,4CAqCA,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDidHydrateOnce.d.ts","sourceRoot":"","sources":["../../src/hooks/useDidHydrateOnce.tsx"],"names":[],"mappings":"AAOA,wBAAgB,qBAAqB,SAYpC;AAID,wBAAgB,iBAAiB,YAKhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMedia.d.ts","sourceRoot":"","sources":["../../src/hooks/useMedia.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACd,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"useMedia.d.ts","sourceRoot":"","sources":["../../src/hooks/useMedia.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACd,MAAM,UAAU,CAAA;AAIjB,eAAO,IAAI,UAAU,EAAE,eAmBN,CAAA;AAEjB,eAAO,MAAM,gBAAgB,EAAE,YAAiB,CAAA;AAEhD,eAAO,MAAM,QAAQ,uBAAmB,CAAA;AAExC,eAAO,MAAM,SAAS,aAAoB,CAAA;AAE1C,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,WAQxC,CAAA;AAUD,eAAO,MAAM,qBAAqB,QAAS,MAAM,WAchD,CAAA;AAMD,eAAO,MAAM,cAAc,WAAY,qBAAqB,SAiB3D,CAAA;AAaD,wBAAgB,mBAAmB,SAiClC;AAsBD,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,aAAa,EAAE,CAAA;CACtB,CAAA;AAID,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,6BAEhE;AAuCD,wBAAgB,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,GAAG,aAAa,CAgDvF;AAED,eAAO,MAAM,iCAAiC,aAClC,MAAM,OACX,MAAM,mBACM,OAAO,MAAM,EAAE,MAAM,CAAC,eAC1B,OAAO,kBAQrB,CAAA;AASD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,EAAE,GAAG,CAAC,EAAE,MAAM,UAwBjF;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,UAE1C;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,WAY9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TamaguiProvider.d.ts","sourceRoot":"","sources":["../../src/views/TamaguiProvider.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"TamaguiProvider.d.ts","sourceRoot":"","sources":["../../src/views/TamaguiProvider.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAIpD,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,gBAAgB,EAChB,MAAM,EACN,GAAG,kBAAkB,EACtB,EAAE,oBAAoB,2CA2CtB;yBAhDe,eAAe"}
|