@tamagui/web 1.125.0 → 1.125.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 (83) hide show
  1. package/dist/cjs/createComponent.cjs +8 -9
  2. package/dist/cjs/createComponent.js +9 -11
  3. package/dist/cjs/createComponent.js.map +1 -1
  4. package/dist/cjs/createComponent.native.js +11 -15
  5. package/dist/cjs/createComponent.native.js.map +1 -1
  6. package/dist/cjs/helpers/getSplitStyles.cjs +1 -1
  7. package/dist/cjs/helpers/getSplitStyles.js +1 -1
  8. package/dist/cjs/helpers/getSplitStyles.js.map +1 -1
  9. package/dist/cjs/helpers/getSplitStyles.native.js +1 -1
  10. package/dist/cjs/helpers/getSplitStyles.native.js.map +2 -2
  11. package/dist/cjs/helpers/subscribeToContextGroup.cjs +0 -1
  12. package/dist/cjs/helpers/subscribeToContextGroup.js +0 -1
  13. package/dist/cjs/helpers/subscribeToContextGroup.js.map +1 -1
  14. package/dist/cjs/helpers/subscribeToContextGroup.native.js +1 -1
  15. package/dist/cjs/helpers/subscribeToContextGroup.native.js.map +2 -2
  16. package/dist/cjs/hooks/useMedia.cjs +30 -57
  17. package/dist/cjs/hooks/useMedia.js +31 -47
  18. package/dist/cjs/hooks/useMedia.js.map +2 -2
  19. package/dist/cjs/hooks/useMedia.native.js +35 -61
  20. package/dist/cjs/hooks/useMedia.native.js.map +2 -2
  21. package/dist/cjs/hooks/useProps.cjs +0 -1
  22. package/dist/cjs/hooks/useProps.js +0 -1
  23. package/dist/cjs/hooks/useProps.js.map +1 -1
  24. package/dist/cjs/hooks/useProps.native.js +0 -1
  25. package/dist/cjs/hooks/useProps.native.js.map +1 -1
  26. package/dist/cjs/views/TamaguiProvider.cjs +4 -1
  27. package/dist/cjs/views/TamaguiProvider.js +4 -2
  28. package/dist/cjs/views/TamaguiProvider.js.map +1 -1
  29. package/dist/cjs/views/TamaguiProvider.native.js +4 -2
  30. package/dist/cjs/views/TamaguiProvider.native.js.map +2 -2
  31. package/dist/esm/createComponent.js +9 -11
  32. package/dist/esm/createComponent.js.map +1 -1
  33. package/dist/esm/createComponent.mjs +8 -9
  34. package/dist/esm/createComponent.mjs.map +1 -1
  35. package/dist/esm/createComponent.native.js +11 -15
  36. package/dist/esm/createComponent.native.js.map +1 -1
  37. package/dist/esm/helpers/getSplitStyles.js +1 -1
  38. package/dist/esm/helpers/getSplitStyles.js.map +1 -1
  39. package/dist/esm/helpers/getSplitStyles.mjs +1 -1
  40. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  41. package/dist/esm/helpers/getSplitStyles.native.js +1 -1
  42. package/dist/esm/helpers/getSplitStyles.native.js.map +2 -2
  43. package/dist/esm/helpers/subscribeToContextGroup.js +0 -1
  44. package/dist/esm/helpers/subscribeToContextGroup.js.map +1 -1
  45. package/dist/esm/helpers/subscribeToContextGroup.mjs +0 -1
  46. package/dist/esm/helpers/subscribeToContextGroup.mjs.map +1 -1
  47. package/dist/esm/helpers/subscribeToContextGroup.native.js +1 -1
  48. package/dist/esm/helpers/subscribeToContextGroup.native.js.map +2 -2
  49. package/dist/esm/hooks/useMedia.js +30 -40
  50. package/dist/esm/hooks/useMedia.js.map +2 -2
  51. package/dist/esm/hooks/useMedia.mjs +26 -43
  52. package/dist/esm/hooks/useMedia.mjs.map +1 -1
  53. package/dist/esm/hooks/useMedia.native.js +33 -54
  54. package/dist/esm/hooks/useMedia.native.js.map +2 -2
  55. package/dist/esm/hooks/useProps.js +0 -1
  56. package/dist/esm/hooks/useProps.js.map +1 -1
  57. package/dist/esm/hooks/useProps.mjs +0 -1
  58. package/dist/esm/hooks/useProps.mjs.map +1 -1
  59. package/dist/esm/hooks/useProps.native.js +0 -1
  60. package/dist/esm/hooks/useProps.native.js.map +1 -1
  61. package/dist/esm/views/TamaguiProvider.js +4 -1
  62. package/dist/esm/views/TamaguiProvider.js.map +1 -1
  63. package/dist/esm/views/TamaguiProvider.mjs +4 -1
  64. package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
  65. package/dist/esm/views/TamaguiProvider.native.js +4 -1
  66. package/dist/esm/views/TamaguiProvider.native.js.map +2 -2
  67. package/package.json +11 -11
  68. package/src/createComponent.tsx +15 -21
  69. package/src/helpers/getSplitStyles.tsx +4 -4
  70. package/src/helpers/subscribeToContextGroup.tsx +0 -2
  71. package/src/hooks/useMedia.tsx +47 -90
  72. package/src/hooks/useProps.tsx +0 -1
  73. package/src/types.tsx +1 -1
  74. package/src/views/TamaguiProvider.tsx +6 -1
  75. package/types/createComponent.d.ts.map +1 -1
  76. package/types/helpers/subscribeToContextGroup.d.ts +1 -2
  77. package/types/helpers/subscribeToContextGroup.d.ts.map +1 -1
  78. package/types/hooks/useMedia.d.ts +2 -5
  79. package/types/hooks/useMedia.d.ts.map +1 -1
  80. package/types/hooks/useProps.d.ts.map +1 -1
  81. package/types/types.d.ts +1 -1
  82. package/types/types.d.ts.map +1 -1
  83. package/types/views/TamaguiProvider.d.ts.map +1 -1
@@ -528,13 +528,13 @@ export function createComponent<
528
528
  (noClass && splitStyles.hasMedia === true)
529
529
 
530
530
  const mediaListeningKeys = hasRuntimeMediaKeys
531
- ? (splitStyles.hasMedia as Record<string, boolean>)
531
+ ? (splitStyles.hasMedia as Set<string>)
532
532
  : null
533
533
  if (process.env.NODE_ENV === 'development' && debugProp === 'verbose') {
534
534
  console.info(`useMedia() createComponent`, shouldListenForMedia, mediaListeningKeys)
535
535
  }
536
536
 
537
- setMediaShouldUpdate(stateRef, shouldListenForMedia, mediaListeningKeys)
537
+ setMediaShouldUpdate(componentContext, shouldListenForMedia, mediaListeningKeys)
538
538
 
539
539
  const {
540
540
  viewProps: viewPropsIn,
@@ -709,39 +709,33 @@ export function createComponent<
709
709
  })
710
710
  }
711
711
 
712
- React.useEffect(() => {
712
+ useIsomorphicLayoutEffect(() => {
713
713
  if (disabled) {
714
714
  return
715
715
  }
716
716
 
717
- let tm
718
-
719
717
  if (state.unmounted === true && hasEnterStyle) {
720
718
  setStateShallow({ unmounted: 'should-enter' })
721
719
  return
722
720
  }
723
721
 
724
722
  if (state.unmounted) {
725
- // this setTimeout fixes moti and css driver enter animations
726
- // not sure why
727
- tm = setTimeout(() => {
728
- setStateShallow({ unmounted: false })
729
- })
730
-
731
- return () => clearTimeout(tm)
723
+ setStateShallow({ unmounted: false })
724
+ return
732
725
  }
733
726
 
734
- const dispose = subscribeToContextGroup({
735
- disabled,
736
- componentContext,
737
- setStateShallow,
738
- state,
739
- mediaGroups,
740
- pseudoGroups,
741
- })
727
+ const dispose =
728
+ pseudoGroups || mediaGroups
729
+ ? subscribeToContextGroup({
730
+ componentContext,
731
+ setStateShallow,
732
+ state,
733
+ mediaGroups,
734
+ pseudoGroups,
735
+ })
736
+ : null
742
737
 
743
738
  return () => {
744
- clearTimeout(tm)
745
739
  dispose?.()
746
740
  componentSetStates.delete(setState)
747
741
  }
@@ -173,7 +173,7 @@ export const getSplitStyles: StyleSplitter = (
173
173
 
174
174
  let pseudos: PseudoStyles | null = null
175
175
  let space: SpaceTokens | null = props.space
176
- let hasMedia: boolean | Record<string, boolean> = false
176
+ let hasMedia: boolean | Set<string> = false
177
177
  let dynamicThemeAccess: boolean | undefined
178
178
  let pseudoGroups: Set<string> | undefined
179
179
  let mediaGroups: Set<string> | undefined
@@ -819,10 +819,10 @@ export const getSplitStyles: StyleSplitter = (
819
819
  hasMedia ||= true
820
820
 
821
821
  if (hasSpace || !shouldDoClasses || styleProps.willBeAnimated) {
822
- if (typeof hasMedia !== 'object') {
823
- hasMedia = {}
822
+ if (!hasMedia || typeof hasMedia === 'boolean') {
823
+ hasMedia = new Set()
824
824
  }
825
- hasMedia[mediaKeyShort] = true
825
+ hasMedia.add(mediaKeyShort)
826
826
  }
827
827
 
828
828
  // can bail early
@@ -3,14 +3,12 @@ import { getMediaState } from '../hooks/useMedia'
3
3
  import type { TamaguiComponentState, ComponentContextI, GroupState } from '../types'
4
4
 
5
5
  export const subscribeToContextGroup = ({
6
- disabled = false,
7
6
  setStateShallow,
8
7
  pseudoGroups,
9
8
  mediaGroups,
10
9
  componentContext,
11
10
  state,
12
11
  }: {
13
- disabled?: boolean
14
12
  setStateShallow: (next?: Partial<TamaguiComponentState> | undefined) => void
15
13
  pseudoGroups?: Set<string>
16
14
  mediaGroups?: Set<string>
@@ -1,6 +1,5 @@
1
- import { isServer, isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
2
- import { useDidFinishSSR } from '@tamagui/use-did-finish-ssr'
3
- import React from 'react'
1
+ import { isServer, isWeb } from '@tamagui/constants'
2
+ import { useRef, useSyncExternalStore } from 'react'
4
3
  import { getConfig, getSetting } from '../config'
5
4
  import { matchMedia } from '../helpers/matchMedia'
6
5
  import { pseudoDescriptors } from '../helpers/pseudoDescriptors'
@@ -15,7 +14,6 @@ import type {
15
14
  TamaguiInternalConfig,
16
15
  UseMediaState,
17
16
  } from '../types'
18
- import { getDisableSSR } from './useDisableSSR'
19
17
 
20
18
  export let mediaState: MediaQueryState =
21
19
  // development only safeguard
@@ -134,31 +132,21 @@ export function setupMediaListeners() {
134
132
  match.removeListener(update)
135
133
  })
136
134
 
137
- update()
138
-
139
135
  function update() {
140
136
  const next = !!getMatch().matches
141
137
  if (next === mediaState[key]) return
142
138
  mediaState = { ...mediaState, [key]: next }
143
- updateCurrentState()
139
+ updateMediaListeners()
144
140
  }
141
+
142
+ update()
145
143
  }
146
144
  }
147
145
 
148
146
  const listeners = new Set<any>()
149
- let flushing = false
150
- let flushVersion = -1
151
- function updateCurrentState() {
152
- // only avoid flush if they haven't re-configured media queries since
153
- if (flushing && flushVersion === mediaVersion) {
154
- return
155
- }
156
- flushVersion = mediaVersion
157
- flushing = true
158
- Promise.resolve().then(() => {
159
- flushing = false
160
- listeners.forEach((cb) => cb(mediaState))
161
- })
147
+
148
+ export function updateMediaListeners() {
149
+ listeners.forEach((cb) => cb(mediaState))
162
150
  }
163
151
 
164
152
  type MediaKeysState = {
@@ -166,9 +154,8 @@ type MediaKeysState = {
166
154
  }
167
155
 
168
156
  type MediaState = {
169
- prev?: MediaKeysState
170
157
  enabled?: boolean
171
- keys?: Record<string, boolean> | null
158
+ keys?: Set<string> | null
172
159
  }
173
160
 
174
161
  const States = new WeakMap<any, MediaState>()
@@ -189,7 +176,7 @@ export function setMediaShouldUpdate(
189
176
  }
190
177
  }
191
178
 
192
- function subscribe(subscriber: any) {
179
+ function subscribe(subscriber: () => void) {
193
180
  listeners.add(subscriber)
194
181
  return () => {
195
182
  listeners.delete(subscriber)
@@ -200,95 +187,65 @@ type ComponentMediaKeys = Set<string>
200
187
 
201
188
  type ComponentMediaQueryState = MediaKeysState
202
189
 
203
- const CurrentKeysMap = new WeakMap<any, ComponentMediaKeys>()
204
-
205
190
  export function useMedia(cc?: ComponentContextI, debug?: DebugProp): UseMediaState {
206
- // performance boost to avoid using context twice
207
- const disableSSR = getSetting('disableSSR') || getDisableSSR(cc)
208
- const isHydrated = useDidFinishSSR()
209
- const initialState = isHydrated || disableSSR || !isWeb ? mediaState : initState
210
- const [state, setState] = React.useState<ComponentMediaQueryState>(initialState)
211
-
212
- if (!CurrentKeysMap.get(setState)) {
213
- CurrentKeysMap.set(setState, new Set())
191
+ const componentState = cc ? States.get(cc) : null
192
+
193
+ const internalRef = useRef<{ keys: Set<string>; lastState?: MediaQueryState }>()
194
+ if (!internalRef.current) {
195
+ internalRef.current = {
196
+ keys: new Set(),
197
+ }
214
198
  }
215
199
 
216
- const currentKeys = CurrentKeysMap.get(setState)!
200
+ const { keys, lastState = getSetting('disableSSR') ? mediaState : initState } =
201
+ internalRef.current
217
202
 
218
203
  // clear each render to track only rendered touched keys
219
- // if (currentKeys.size) currentKeys.clear()
220
-
221
- function getSnapshot(cur: ComponentMediaQueryState) {
222
- if (!currentKeys) return cur
204
+ if (keys.size) {
205
+ keys.clear()
206
+ }
223
207
 
224
- for (const key of currentKeys) {
225
- if (mediaState[key] !== cur[key]) {
226
- if (process.env.NODE_ENV === 'development' && debug) {
227
- console.warn(`useMedia()✍️`, key, cur[key], '>', mediaState[key])
228
- }
208
+ const state = useSyncExternalStore(
209
+ subscribe,
210
+ () => {
211
+ if (componentState?.enabled) {
212
+ internalRef.current!.lastState = mediaState
229
213
  return mediaState
230
214
  }
231
- }
232
-
233
- return cur
234
- }
235
-
236
- let isRendering = true
237
- const isInitialState = state === initialState
238
-
239
- useIsomorphicLayoutEffect(() => {
240
- isRendering = false
241
- })
242
215
 
243
- useIsomorphicLayoutEffect(() => {
244
- const update = () =>
245
- setState((prev) => {
246
- const next = getSnapshot(prev)
247
- return next
248
- })
249
-
250
- update()
216
+ const curKeys = componentState?.keys || keys
251
217
 
252
- const tm = setTimeout(() => {
253
- if (currentKeys.size) {
254
- update()
218
+ if (!curKeys.size) {
219
+ return lastState
255
220
  }
256
- })
257
221
 
258
- const dispose = subscribe(update)
222
+ for (const key of curKeys) {
223
+ if (mediaState[key] !== lastState[key]) {
224
+ if (process.env.NODE_ENV === 'development' && debug) {
225
+ console.warn(`useMedia() ✍️`, key, lastState[key], '=>', mediaState[key])
226
+ }
227
+ internalRef.current!.lastState = mediaState
228
+ return mediaState
229
+ }
230
+ }
259
231
 
260
- return () => {
261
- dispose()
262
- clearTimeout(tm)
263
- }
264
- }, [setState])
232
+ return lastState
233
+ },
234
+ getServerSnapshot
235
+ )
265
236
 
266
237
  return new Proxy(state, {
267
238
  get(_, key) {
268
- if (isRendering && !disableMediaTouch && typeof key === 'string') {
269
- currentKeys.add(key)
270
-
271
- const shouldUpdate = state[key] !== mediaState[key]
272
-
273
- if (shouldUpdate) {
274
- if (process.env.NODE_ENV === 'development' && debug) {
275
- console.info(`useMedia() TOUCH`, key)
276
- }
277
-
278
- // the first update() will get this in an ssr safe way in the useLayoutEffect
279
- if (!isInitialState) {
280
- const next = getSnapshot(state)
281
- if (next !== state) {
282
- setState(next)
283
- }
284
- }
285
- }
239
+ if (!disableMediaTouch && typeof key === 'string') {
240
+ keys.add(key)
286
241
  }
287
242
  return Reflect.get(state, key)
288
243
  },
289
244
  })
290
245
  }
291
246
 
247
+ const getServerSnapshot = () => initState
248
+
292
249
  let disableMediaTouch = false
293
250
  export function _disableMediaTouch(val: boolean) {
294
251
  disableMediaTouch = val
@@ -132,7 +132,6 @@ export function usePropsAndStyle<A extends PropsLikeObject>(
132
132
  }
133
133
 
134
134
  return subscribeToContextGroup({
135
- disabled,
136
135
  componentContext,
137
136
  setStateShallow,
138
137
  state,
package/src/types.tsx CHANGED
@@ -2564,7 +2564,7 @@ export type GetStyleResult = {
2564
2564
  viewProps: StackProps & Record<string, any>
2565
2565
  fontFamily: string | undefined
2566
2566
  space?: any // SpaceTokens?
2567
- hasMedia: boolean | Record<string, boolean>
2567
+ hasMedia: boolean | Set<string>
2568
2568
  dynamicThemeAccess?: boolean
2569
2569
  pseudoGroups?: Set<string>
2570
2570
  mediaGroups?: Set<string>
@@ -1,9 +1,10 @@
1
1
  import { isClient, isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
2
- import React, { useId } from 'react'
2
+ import React from 'react'
3
3
  import { getSetting } from '../config'
4
4
  import { ComponentContext } from '../contexts/ComponentContext'
5
5
  import type { TamaguiProviderProps } from '../types'
6
6
  import { ThemeProvider } from './ThemeProvider'
7
+ import { updateMediaListeners } from '../hooks/useMedia'
7
8
 
8
9
  export function TamaguiProvider({
9
10
  children,
@@ -32,6 +33,10 @@ export function TamaguiProvider({
32
33
  }
33
34
  }
34
35
 
36
+ useIsomorphicLayoutEffect(() => {
37
+ updateMediaListeners()
38
+ }, [])
39
+
35
40
  return (
36
41
  <>
37
42
  <UnmountedClassName>
@@ -1 +1 @@
1
- {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAmBxC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAG/E,OAAO,KAAK,EAEV,SAAS,EAGT,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAElB,YAAY,EAEZ,gBAAgB,EAChB,cAAc,EAMf,MAAM,SAAS,CAAA;AAYhB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AAuF9D,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,wEAukC3B;AAoBD,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,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBAiGxD"}
1
+ {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAmBxC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAG/E,OAAO,KAAK,EAEV,SAAS,EAGT,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAElB,YAAY,EAEZ,gBAAgB,EAChB,cAAc,EAMf,MAAM,SAAS,CAAA;AAYhB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AAuF9D,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,wEAikC3B;AAoBD,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,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBAiGxD"}
@@ -1,6 +1,5 @@
1
1
  import type { TamaguiComponentState, ComponentContextI } from '../types';
2
- export declare const subscribeToContextGroup: ({ disabled, setStateShallow, pseudoGroups, mediaGroups, componentContext, state, }: {
3
- disabled?: boolean;
2
+ export declare const subscribeToContextGroup: ({ setStateShallow, pseudoGroups, mediaGroups, componentContext, state, }: {
4
3
  setStateShallow: (next?: Partial<TamaguiComponentState> | undefined) => void;
5
4
  pseudoGroups?: Set<string>;
6
5
  mediaGroups?: Set<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"subscribeToContextGroup.d.ts","sourceRoot":"","sources":["../../src/helpers/subscribeToContextGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAc,MAAM,UAAU,CAAA;AAEpF,eAAO,MAAM,uBAAuB,uFAOjC;IACD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,KAAK,IAAI,CAAA;IAC5E,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,KAAK,EAAE,qBAAqB,CAAA;CAC7B,6CAqCA,CAAA"}
1
+ {"version":3,"file":"subscribeToContextGroup.d.ts","sourceRoot":"","sources":["../../src/helpers/subscribeToContextGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAc,MAAM,UAAU,CAAA;AAEpF,eAAO,MAAM,uBAAuB,6EAMjC;IACD,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,KAAK,IAAI,CAAA;IAC5E,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,KAAK,EAAE,qBAAqB,CAAA;CAC7B,6CAqCA,CAAA"}
@@ -7,13 +7,10 @@ export declare const isMediaKey: (key: string) => IsMediaType;
7
7
  export declare const getMediaKeyImportance: (key: string) => number;
8
8
  export declare const configureMedia: (config: TamaguiInternalConfig) => void;
9
9
  export declare function setupMediaListeners(): void;
10
- type MediaKeysState = {
11
- [key: string]: any;
12
- };
10
+ export declare function updateMediaListeners(): void;
13
11
  type MediaState = {
14
- prev?: MediaKeysState;
15
12
  enabled?: boolean;
16
- keys?: Record<string, boolean> | null;
13
+ keys?: Set<string> | null;
17
14
  };
18
15
  export declare function setMediaShouldUpdate(ref: any, enabled?: boolean, keys?: MediaState['keys']): void;
19
16
  export declare function useMedia(cc?: ComponentContextI, debug?: DebugProp): UseMediaState;
@@ -1 +1 @@
1
- {"version":3,"file":"useMedia.d.ts","sourceRoot":"","sources":["../../src/hooks/useMedia.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,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;AAI1C,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,WAOxC,CAAA;AAUD,eAAO,MAAM,qBAAqB,QAAS,MAAM,WAchD,CAAA;AAMD,eAAO,MAAM,cAAc,WAAY,qBAAqB,SAa3D,CAAA;AAaD,wBAAgB,mBAAmB,SAkClC;AAkBD,KAAK,cAAc,GAAG;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CACtC,CAAA;AAID,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,EACjB,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,QAW1B;AAeD,wBAAgB,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,aAAa,CAqFjF;AAGD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,QAE9C;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,2BAc7C;AAED,eAAO,MAAM,iCAAiC,aAClC,MAAM,OACX,MAAM,mBACM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAC1B,OAAO,kBAOrB,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":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACd,MAAM,UAAU,CAAA;AAEjB,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;AAI1C,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,WAOxC,CAAA;AAUD,eAAO,MAAM,qBAAqB,QAAS,MAAM,WAchD,CAAA;AAMD,eAAO,MAAM,cAAc,WAAY,qBAAqB,SAa3D,CAAA;AAaD,wBAAgB,mBAAmB,SAkClC;AAID,wBAAgB,oBAAoB,SAEnC;AAMD,KAAK,UAAU,GAAG;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAC1B,CAAA;AAID,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,EACjB,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,QAW1B;AAaD,wBAAgB,QAAQ,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,aAAa,CAuDjF;AAKD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,QAE9C;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,2BAc7C;AAED,eAAO,MAAM,iCAAiC,aAClC,MAAM,OACX,MAAM,mBACM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,eAC1B,OAAO,kBAOrB,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":"useProps.d.ts","sourceRoot":"","sources":["../../src/hooks/useProps.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAEzF,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAKzD,KAAK,eAAe,GAAG,IAAI,CACzB,eAAe,EACf,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,CACzD,GAAG;IACF,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,YAAY,CAAC,EAAE;QAAE,YAAY,EAAE,YAAY,CAAA;KAAE,CAAA;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI;KAEtC,GAAG,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;CACjE,CAAA;AAED,KAAK,eAAe,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAA;AACjE,KAAK,eAAe,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAA;AAEjE;;;;;KAKK;AACL,wBAAgB,QAAQ,CAAC,CAAC,SAAS,eAAe,EAChD,KAAK,EAAE,CAAC,EACR,IAAI,CAAC,EAAE,eAAe,GACrB,uBAAuB,CAAC,CAAC,CAAC,CAW5B;AAED;;;;;KAKK;AACL,wBAAgB,QAAQ,CAAC,CAAC,SAAS,eAAe,EAChD,KAAK,EAAE,CAAC,EACR,IAAI,CAAC,EAAE,eAAe,GACrB,uBAAuB,CAAC,CAAC,CAAC,CAE5B;AAED;;;;;KAKK;AACL,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,eAAe,EACxD,KAAK,EAAE,CAAC,EACR,IAAI,CAAC,EAAE,eAAe,GACrB,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,CAqEtF"}
1
+ {"version":3,"file":"useProps.d.ts","sourceRoot":"","sources":["../../src/hooks/useProps.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAEzF,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAKzD,KAAK,eAAe,GAAG,IAAI,CACzB,eAAe,EACf,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,CACzD,GAAG;IACF,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,YAAY,CAAC,EAAE;QAAE,YAAY,EAAE,YAAY,CAAA;KAAE,CAAA;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI;KAEtC,GAAG,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;CACjE,CAAA;AAED,KAAK,eAAe,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAA;AACjE,KAAK,eAAe,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAA;AAEjE;;;;;KAKK;AACL,wBAAgB,QAAQ,CAAC,CAAC,SAAS,eAAe,EAChD,KAAK,EAAE,CAAC,EACR,IAAI,CAAC,EAAE,eAAe,GACrB,uBAAuB,CAAC,CAAC,CAAC,CAW5B;AAED;;;;;KAKK;AACL,wBAAgB,QAAQ,CAAC,CAAC,SAAS,eAAe,EAChD,KAAK,EAAE,CAAC,EACR,IAAI,CAAC,EAAE,eAAe,GACrB,uBAAuB,CAAC,CAAC,CAAC,CAE5B;AAED;;;;;KAKK;AACL,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,eAAe,EACxD,KAAK,EAAE,CAAC,EACR,IAAI,CAAC,EAAE,eAAe,GACrB,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,CAoEtF"}
package/types/types.d.ts CHANGED
@@ -1586,7 +1586,7 @@ export type GetStyleResult = {
1586
1586
  viewProps: StackProps & Record<string, any>;
1587
1587
  fontFamily: string | undefined;
1588
1588
  space?: any;
1589
- hasMedia: boolean | Record<string, boolean>;
1589
+ hasMedia: boolean | Set<string>;
1590
1590
  dynamicThemeAccess?: boolean;
1591
1591
  pseudoGroups?: Set<string>;
1592
1592
  mediaGroups?: Set<string>;