@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.
Files changed (46) hide show
  1. package/dist/cjs/createComponent.js +10 -3
  2. package/dist/cjs/createComponent.js.map +1 -1
  3. package/dist/cjs/createComponent.native.js +10 -3
  4. package/dist/cjs/createComponent.native.js.map +2 -2
  5. package/dist/cjs/hooks/useDidHydrateOnce.js +37 -0
  6. package/dist/cjs/hooks/useDidHydrateOnce.js.map +6 -0
  7. package/dist/cjs/hooks/useDidHydrateOnce.native.js +42 -0
  8. package/dist/cjs/hooks/useDidHydrateOnce.native.js.map +6 -0
  9. package/dist/cjs/hooks/useMedia.js +15 -3
  10. package/dist/cjs/hooks/useMedia.js.map +1 -1
  11. package/dist/cjs/hooks/useMedia.native.js +15 -3
  12. package/dist/cjs/hooks/useMedia.native.js.map +2 -2
  13. package/dist/cjs/views/TamaguiProvider.js +3 -3
  14. package/dist/cjs/views/TamaguiProvider.js.map +1 -1
  15. package/dist/cjs/views/TamaguiProvider.native.js +3 -3
  16. package/dist/cjs/views/TamaguiProvider.native.js.map +2 -2
  17. package/dist/esm/createComponent.js +10 -2
  18. package/dist/esm/createComponent.js.map +1 -1
  19. package/dist/esm/createComponent.mjs +11 -2
  20. package/dist/esm/createComponent.native.js +10 -2
  21. package/dist/esm/createComponent.native.js.map +2 -2
  22. package/dist/esm/hooks/useDidHydrateOnce.js +21 -0
  23. package/dist/esm/hooks/useDidHydrateOnce.js.map +6 -0
  24. package/dist/esm/hooks/useDidHydrateOnce.mjs +17 -0
  25. package/dist/esm/hooks/useDidHydrateOnce.native.js +21 -0
  26. package/dist/esm/hooks/useDidHydrateOnce.native.js.map +6 -0
  27. package/dist/esm/hooks/useMedia.js +17 -4
  28. package/dist/esm/hooks/useMedia.js.map +1 -1
  29. package/dist/esm/hooks/useMedia.mjs +18 -4
  30. package/dist/esm/hooks/useMedia.native.js +17 -4
  31. package/dist/esm/hooks/useMedia.native.js.map +2 -2
  32. package/dist/esm/views/TamaguiProvider.js +3 -2
  33. package/dist/esm/views/TamaguiProvider.js.map +1 -1
  34. package/dist/esm/views/TamaguiProvider.mjs +3 -2
  35. package/dist/esm/views/TamaguiProvider.native.js +3 -2
  36. package/dist/esm/views/TamaguiProvider.native.js.map +2 -2
  37. package/package.json +11 -11
  38. package/src/createComponent.tsx +12 -3
  39. package/src/hooks/useDidHydrateOnce.tsx +29 -0
  40. package/src/hooks/useMedia.tsx +32 -4
  41. package/src/views/TamaguiProvider.tsx +3 -0
  42. package/types/createComponent.d.ts.map +1 -1
  43. package/types/hooks/useDidHydrateOnce.d.ts +3 -0
  44. package/types/hooks/useDidHydrateOnce.d.ts.map +1 -0
  45. package/types/hooks/useMedia.d.ts.map +1 -1
  46. 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, useSyncExternalStore } from "react";
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 = useSyncExternalStore(
97
+ const internal = useRef(), initialState = (getDisableSSR(componentContext) || !isWeb ? mediaState : initState) || {}, state = useLayoutExternalStore(
85
98
  subscribe,
86
99
  () => {
87
100
  if (!internal.current)
88
- return initialState;
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,aAAa;AAChC,SAAS,QAAQ,4BAA4B;AAE7C,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,yBAAyB;AAWlC,SAAS,qBAAqB;AAEvB,IAAI;AAAA;AAAA,EAET,QAAQ,IAAI,aAAa,gBACrB,IAAI;AAAA,IACF,CAAC;AAAA,IACD;AAAA,MACE,IAAI,QAAQ,KAAK;AACf,YACE,OAAO,OAAQ,YACf,IAAI,CAAC,MAAM;AAAA,QAEX,IAAI,CAAC,MAAM;AAEX,gBAAM,IAAI,MAAM,yCAAyC,GAAG,EAAE;AAEhE,eAAO,QAAQ,IAAI,QAAQ,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,EACF,IACC,CAAC;AAAA;AAED,MAAM,mBAAiC,CAAC,GAElC,WAAW,MAAM,YAEjB,YAAY,oBAAI,IAAY,GAE5B,aAAa,CAAC,QAA6B;AACtD,MAAI,UAAU,IAAI,GAAG,EAAG,QAAO;AAC/B,MAAI,IAAI,CAAC,MAAM,KAAK;AAClB,QAAI,IAAI,WAAW,YAAY,EAAG,QAAO;AACzC,QAAI,IAAI,WAAW,SAAS,EAAG,QAAO;AACtC,QAAI,IAAI,WAAW,SAAS,EAAG,QAAO;AAAA,EACxC;AACA,SAAO;AACT;AAGA,IAAI;AAGJ,MAAM,yBAAyB,OAAO,KAAK,iBAAiB,EAAE;AAE9D,IAAI;AAEG,MAAM,wBAAwB,CAAC,QAAgB;AACpD,MAAI,QAAQ,IAAI,aAAa,iBAAiB,IAAI,CAAC,MAAM;AACvD,UAAM,IAAI,MAAM,eAAe;AAIjC,SADa,UAAU,EACd,SAAS,iBACT,yBAMF,iBAAiB,QAAQ,GAAG,IAAI;AACzC,GAEM,UAAU,oBAAI,IAAc;AAElC,IAAI,eAAe;AAEZ,MAAM,iBAAiB,CAAC,WAAkC;AAC/D,QAAM,EAAE,OAAO,wBAAwB,IAAI;AAC3C,MAAK,OACL;AAAA;AACA,eAAW,OAAO;AAChB,iBAAW,GAAG,IAAI,0BAA0B,GAAG,KAAK,IACpD,UAAU,IAAI,IAAI,GAAG,EAAE;AAEzB,WAAO,OAAO,kBAAkB,KAAK,GACrC,YAAY,EAAE,GAAG,WAAW,GAC5B,mBAAmB,OAAO,KAAK,KAAK,GAEhC,OAAO,aACT,oBAAoB,IAEpB,mBAAmB;AAAA;AAEvB;AAEA,SAAS,WAAW;AAClB,UAAQ,QAAQ,CAAC,OAAO,GAAG,CAAC,GAC5B,QAAQ,MAAM;AAChB;AAOA,IAAI,eAAe;AACZ,SAAS,sBAAsB;AACpC,MAAI,WAAS,aAGT,iBAAiB,cACrB;AAAA,mBAAe,cAGf,SAAS;AAET,eAAW,OAAO,kBAAkB;AAgBlC,UAAS,SAAT,WAAkB;AAChB,cAAM,OAAO,CAAC,CAAC,SAAS,EAAE;AAC1B,QAAI,SAAS,WAAW,GAAG,MAC3B,aAAa,EAAE,GAAG,YAAY,CAAC,GAAG,GAAG,KAAK,GAC1C,mBAAmB;AAAA,MACrB;AApBA,YAAM,MAAM,oBAAoB,iBAAiB,GAAG,GAAG,GAAG,GACpD,WAAW,MAAM,WAAW,GAAG,GAC/B,QAAQ,SAAS;AACvB,UAAI,CAAC;AACH,cAAM,IAAI,MAAM,uBAAa;AAI/B,YAAM,YAAY,MAAM,GACxB,QAAQ,IAAI,MAAM;AAChB,cAAM,eAAe,MAAM;AAAA,MAC7B,CAAC,GAED,OAAO;AAAA,IAQT;AAAA;AACF;AAEA,MAAM,YAAY,oBAAI,IAAS;AAC/B,IAAI,WAAW,IACX,eAAe;AACnB,SAAS,qBAAqB;AAE5B,EAAI,YAAY,iBAAiB,iBAGjC,eAAe,cACf,WAAW,IACX,QAAQ,QAAQ,EAAE,KAAK,MAAM;AAC3B,eAAW,IACX,UAAU,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC;AAAA,EAC1C,CAAC;AACH;AAWA,MAAM,eAAe,oBAAI,QAA0B;AAE5C,SAAS,qBAAqB,KAAU,OAAoB;AACjE,SAAO,aAAa,IAAI,KAAK,KAAK;AACpC;AAOA,SAAS,UAAU,YAAiB;AAClC,mBAAU,IAAI,UAAU,GACjB,MAAM,UAAU,OAAO,UAAU;AAC1C;AAEO,SAAS,SAAS,KAAW,kBAAqD;AACvF,QAAM,WAAW,OAA0C,GAGrD,gBADa,cAAc,gBAAgB,KACb,CAAC,QAAQ,aAAa,cAAc,CAAC,GAEnE,QAAQ;AAAA,IACZ;AAAA,IACA,MAAM;AACJ,UAAI,CAAC,SAAS;AACZ,eAAO;AAGT,YAAM,EAAE,SAAS,KAAK,IAAI,SAAS,SAC7B,iBAAiB,MAAM,aAAa,IAAI,GAAG,IAAI;AAErD,UAAI,kBAAkB,eAAe,YAAY;AAC/C,eAAO;AAGT,YAAM,WACJ,gBAAgB,UACd,CAAC,kBAAkB,eAAe,YAAY,UAAU,CAAC,GAAG,OAAO,IAAI;AAK3E,aAFE,CAAC,YAAY,UAAU,MAAM,CAAC,QAAQ,WAAW,GAAG,MAAM,KAAK,GAAG,CAAC,IAG5D,QAGT,SAAS,QAAQ,OAAO,YAEjB;AAAA,IACT;AAAA,IACA,MAAM;AAAA,EACR;AAEA,SAAO,IAAI,MAAM,OAAO;AAAA,IACtB,IAAI,GAAG,KAAK;AACV,aAAI,OAAO,OAAQ,aACjB,SAAS,YAAY,EAAE,MAAM,aAAa,GAC1C,SAAS,QAAQ,YAAY,oBAAI,IAAI,GACrC,SAAS,QAAQ,QAAQ,IAAI,GAAG,IAE3B,QAAQ,IAAI,OAAO,GAAG;AAAA,IAC/B;AAAA,EACF,CAAC;AACH;AAEO,MAAM,oCAAoC,CAC/C,UACA,KACA,iBACA,gBACG;AACH,QAAM,OAAO,UAAU,GACjB,aACJ,eAAe,CAAC,KAAK,SAAS,iBAC1B,sBAAsB,QAAQ,IAC9B;AACN,SAAO,CAAC,gBAAgB,GAAG,KAAK,aAAa,gBAAgB,GAAG,IAAI,aAAa;AACnF;AAEA,SAAS,cAAc,KAAa;AAClC,SAAO,IAAI,QAAQ,UAAU,CAAC,MAAM,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY;AACzE;AAEA,MAAM,QAAQ,oBAAI,QAAqB,GACjC,wBAAgD,CAAC;AAEhD,SAAS,oBAAoB,OAAkC,KAAc;AAClF,MAAI,OAAO,SAAU;AACnB,WAAO;AAET,MAAI,MAAM,IAAI,KAAK;AACjB,WAAO,MAAM,IAAI,KAAK;AAExB,QAAM,MAAM,OAAO,QAAQ,KAAK,EAC7B,IAAI,CAAC,CAAC,SAAS,KAAK,OACnB,UAAU,cAAc,OAAO,GAC3B,OAAO,SAAU,WACZ,IAAI,OAAO,KAAK,KAAK,OAE1B,OAAO,SAAU,YAAY,kBAAkB,KAAK,OAAO,MAC7D,QAAQ,GAAG,KAAK,OAEX,IAAI,OAAO,KAAK,KAAK,KAC7B,EACA,KAAK,OAAO;AACf,SAAI,QACF,sBAAsB,GAAG,IAAI,MAE/B,MAAM,IAAI,OAAO,GAAG,GACb;AACT;AAEO,SAAS,gBAAgB,KAAa;AAC3C,SAAO,sBAAsB,GAAG,KAAK,oBAAoB,iBAAiB,GAAG,GAAG,GAAG;AACrF;AAEO,SAAS,cACd,KACA,YACA;AACA,QAAM,eAAe,iBAAiB,GAAG;AASzC,SARe,OAAO,KAAK,YAAY,EAAE,MAAM,CAAC,UAAU;AACxD,UAAM,cAAc,CAAC,aAAa,KAAK,GACjC,QAAQ,MAAM,WAAW,KAAK,GAC9B,UAAU,MAAM,SAAS,OAAO,GAChC,WAAW,WAAW,UAAU,UAAU,QAAQ;AAExD,WAAO,QAAQ,WAAW,cAAc,WAAW;AAAA,EACrD,CAAC;AAEH;",
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, useSyncExternalStore } from "react";
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 = useSyncExternalStore(subscribe, () => {
95
- if (!internal.current) return initialState;
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, useSyncExternalStore } from "react";
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 = useSyncExternalStore(subscribe, function() {
184
+ var internal = useRef(), disableSSR = getDisableSSR(componentContext), initialState = (disableSSR || !isWeb ? mediaState : initState) || {}, state = useLayoutExternalStore(subscribe, function() {
172
185
  if (!internal.current)
173
- return initialState;
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": "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",
5
- "names": ["isServer", "isWeb", "useRef", "useSyncExternalStore", "getConfig", "matchMedia", "pseudoDescriptors", "getDisableSSR", "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", "useMedia", "uid", "componentContext", "internal", "initialState", "state", "current", "touched", "prev", "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"]
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;AAoCxB;AAlCC,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAyB;AACvB,6BAAoB,GAEhB,YAGF,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,GAI7B,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;",
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvB,SAASC,gBAAgB,QAAA;MAC9BC,WAD8B,OAC9BA,UACAC,mBAF8B,OAE9BA,kBACAC,SAH8B,OAG9BA,QACGC,qBAAAA,2BAJ2B,QAAA;IAC9BH;IACAC;IACAC;;AAGAL,sBAAAA,GAEIH,YAGFC,MAAMS,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,qBAACP,iBAAiBsB,UAAQ;IAACC,iBAAiBjB,UAAAA,OAAAA,SAAAA,OAAQkB;cAClD,qBAACtB,eAAAA,qBAAAA,eAAAA;MACCuB,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", "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.0",
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.0",
31
- "@tamagui/constants": "1.100.0",
32
- "@tamagui/helpers": "1.100.0",
33
- "@tamagui/normalize-css-color": "1.100.0",
34
- "@tamagui/timer": "1.100.0",
35
- "@tamagui/types": "1.100.0",
36
- "@tamagui/use-did-finish-ssr": "1.100.0",
37
- "@tamagui/use-event": "1.100.0",
38
- "@tamagui/use-force-update": "1.100.0"
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.0",
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",
@@ -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
- ? isWeb
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
+ }
@@ -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 = useSyncExternalStore<MediaQueryState>(
224
+ const state = useLayoutExternalStore<MediaQueryState>(
197
225
  subscribe,
198
226
  () => {
199
227
  if (!internal.current) {
200
- return initialState
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,KAYN,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;AAchB,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;;;;;;;;;;;;;;;;;;;CAqL9B,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"}
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,3 @@
1
+ export declare function useDidHydrateOnceRoot(): void;
2
+ export declare function useDidHydrateOnce(): boolean;
3
+ //# sourceMappingURL=useDidHydrateOnce.d.ts.map
@@ -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;AAGjB,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;AAYD,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
+ {"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;AAGpD,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,gBAAgB,EAChB,MAAM,EACN,GAAG,kBAAkB,EACtB,EAAE,oBAAoB,2CAyCtB;yBA9Ce,eAAe"}
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"}