@tamagui/web 2.3.2 → 2.3.3-1782462397214
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/.turbo/turbo-build.log +1 -1
- package/dist/cjs/createComponent.cjs +16 -6
- package/dist/cjs/createComponent.native.js +17 -7
- package/dist/cjs/createComponent.native.js.map +1 -1
- package/dist/cjs/helpers/getSplitStyles.cjs +5 -0
- package/dist/cjs/helpers/getSplitStyles.native.js +9 -0
- package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/cjs/helpers/pointerEvents.native.js +26 -20
- package/dist/cjs/helpers/pointerEvents.native.js.map +1 -1
- package/dist/cjs/hooks/useMedia.cjs +107 -42
- package/dist/cjs/hooks/useMedia.native.js +149 -60
- package/dist/cjs/hooks/useMedia.native.js.map +1 -1
- package/dist/cjs/hooks/useTheme.cjs +17 -4
- package/dist/cjs/hooks/useTheme.native.js +18 -4
- package/dist/cjs/hooks/useTheme.native.js.map +1 -1
- package/dist/cjs/hooks/useThemeState.cjs +129 -63
- package/dist/cjs/hooks/useThemeState.native.js +142 -66
- package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/index.native.js +2 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/views/Theme.cjs +1 -1
- package/dist/cjs/views/Theme.native.js +1 -1
- package/dist/cjs/views/Theme.native.js.map +1 -1
- package/dist/esm/createComponent.mjs +16 -6
- package/dist/esm/createComponent.mjs.map +1 -1
- package/dist/esm/createComponent.native.js +19 -9
- package/dist/esm/createComponent.native.js.map +1 -1
- package/dist/esm/helpers/getSplitStyles.mjs +5 -0
- package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
- package/dist/esm/helpers/getSplitStyles.native.js +9 -0
- package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
- package/dist/esm/helpers/pointerEvents.native.js +26 -20
- package/dist/esm/helpers/pointerEvents.native.js.map +1 -1
- package/dist/esm/hooks/useMedia.mjs +108 -43
- package/dist/esm/hooks/useMedia.mjs.map +1 -1
- package/dist/esm/hooks/useMedia.native.js +150 -61
- package/dist/esm/hooks/useMedia.native.js.map +1 -1
- package/dist/esm/hooks/useTheme.mjs +17 -4
- package/dist/esm/hooks/useTheme.mjs.map +1 -1
- package/dist/esm/hooks/useTheme.native.js +18 -4
- package/dist/esm/hooks/useTheme.native.js.map +1 -1
- package/dist/esm/hooks/useThemeState.mjs +130 -64
- package/dist/esm/hooks/useThemeState.mjs.map +1 -1
- package/dist/esm/hooks/useThemeState.native.js +143 -67
- package/dist/esm/hooks/useThemeState.native.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +3 -3
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -3
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/views/Theme.mjs +1 -1
- package/dist/esm/views/Theme.mjs.map +1 -1
- package/dist/esm/views/Theme.native.js +1 -1
- package/dist/esm/views/Theme.native.js.map +1 -1
- package/package.json +13 -13
- package/src/createComponent.tsx +48 -5
- package/src/helpers/getSplitStyles.tsx +33 -0
- package/src/helpers/pointerEvents.native.ts +26 -19
- package/src/hooks/useMedia.tsx +147 -42
- package/src/hooks/useTheme.tsx +27 -5
- package/src/hooks/useThemeState.ts +255 -127
- package/src/index.ts +7 -1
- package/src/types.tsx +49 -5
- package/src/views/Theme.tsx +4 -1
- package/types/createComponent.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/pointerEvents.native.d.ts.map +1 -1
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/useTheme.d.ts +1 -1
- package/types/hooks/useTheme.d.ts.map +1 -1
- package/types/hooks/useThemeState.d.ts +1 -1
- package/types/hooks/useThemeState.d.ts.map +1 -1
- package/types/index.d.ts +2 -2
- package/types/index.d.ts.map +1 -1
- package/types/types.d.ts +2 -1
- package/types/types.d.ts.map +1 -1
- package/types/views/Theme.d.ts.map +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { supportsDynamicColorIOS, useIsomorphicLayoutEffect } from '@tamagui/constants'
|
|
2
2
|
import {
|
|
3
3
|
createContext,
|
|
4
|
-
useCallback,
|
|
5
4
|
useContext,
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
useEffect,
|
|
6
|
+
useReducer,
|
|
7
|
+
useRef,
|
|
8
8
|
type MutableRefObject,
|
|
9
9
|
} from 'react'
|
|
10
10
|
import { getConfig, getSetting } from '../config'
|
|
@@ -54,11 +54,27 @@ export const getRootThemeState = () => rootThemeState
|
|
|
54
54
|
// extracts base name without scheme: "light_red_surface1" -> "red_surface1"
|
|
55
55
|
const getThemeBaseName = (name: string) => name.replace(/^(light|dark)_/, '')
|
|
56
56
|
|
|
57
|
+
// Internal-only ids for the listenersByParent map. Never rendered into HTML,
|
|
58
|
+
// so a process-wide counter is safe (no hydration mismatch from useId).
|
|
59
|
+
let themeStateIdCounter = 0
|
|
60
|
+
const nextThemeStateId = (): string => `t${++themeStateIdCounter}`
|
|
61
|
+
|
|
62
|
+
// useReducer-based force-update; cheaper than useSyncExternalStore's internal
|
|
63
|
+
// useState+useLayoutEffect+useEffect+useDebugValue chain on Hermes.
|
|
64
|
+
const incReducer = (c: number): number => c + 1
|
|
65
|
+
|
|
57
66
|
export const useThemeState = (
|
|
58
67
|
props: UseThemeWithStateProps,
|
|
59
68
|
isRoot = false,
|
|
60
69
|
keys: MutableRefObject<Set<string> | null>,
|
|
61
|
-
schemeKeys?: MutableRefObject<Set<string> | null
|
|
70
|
+
schemeKeys?: MutableRefObject<Set<string> | null>,
|
|
71
|
+
// when true, install the propsKey-watching useIsomorphicLayoutEffect that
|
|
72
|
+
// schedules descendant updates via listenersByParent[id]. Only <Theme>
|
|
73
|
+
// providers actually push their themeState.id into ThemeStateContext, so
|
|
74
|
+
// only they can have descendants subscribed under their id. Leaf styled
|
|
75
|
+
// components pass false (the default) and save one hook slot per mount.
|
|
76
|
+
// Stable per call-site (rule of hooks satisfied).
|
|
77
|
+
cascadeOnChange = false
|
|
62
78
|
): ThemeState => {
|
|
63
79
|
'use no memo'
|
|
64
80
|
|
|
@@ -86,148 +102,260 @@ Looked for theme${props.name ? ` "${props.name}"` : ''}${props.componentName ? `
|
|
|
86
102
|
)
|
|
87
103
|
}
|
|
88
104
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
PendingUpdate.set(id, shouldForce ? 'force' : true)
|
|
96
|
-
cb()
|
|
97
|
-
})
|
|
98
|
-
return () => {
|
|
99
|
-
allListeners.delete(id)
|
|
100
|
-
listenersByParent[parentId].delete(id)
|
|
101
|
-
localStates.delete(id)
|
|
102
|
-
states.delete(id)
|
|
103
|
-
PendingUpdate.delete(id)
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
[id, parentId]
|
|
107
|
-
)
|
|
108
|
-
|
|
105
|
+
// counter-based id, allocated once per component instance (on the ref below).
|
|
106
|
+
// useId is genuinely heavy on Hermes — it queries the fiber-tree position to
|
|
107
|
+
// generate a hydration-stable id. These ids are only used internally as keys
|
|
108
|
+
// in the listenersByParent map; they're never rendered to HTML, so a process-
|
|
109
|
+
// wide counter is safe (no hydration mismatch). Saves a real-millisecond
|
|
110
|
+
// hook call per styled component on native.
|
|
109
111
|
const propsKey = getPropsKey(props)
|
|
110
112
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
parentState &&
|
|
119
|
-
(local as any)._parentName === parentState.name &&
|
|
120
|
-
(local as any)._propsKey === propsKey
|
|
121
|
-
) {
|
|
122
|
-
return local
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// check if this is a scheme-only change (light↔dark) where DynamicColorIOS handles it
|
|
127
|
-
const isSchemeOnlyChange =
|
|
128
|
-
process.env.TAMAGUI_TARGET === 'native' &&
|
|
129
|
-
supportsDynamicColorIOS &&
|
|
130
|
-
getSetting('fastSchemeChange') &&
|
|
131
|
-
local &&
|
|
132
|
-
parentState &&
|
|
133
|
-
local.scheme !== parentState.scheme &&
|
|
134
|
-
getThemeBaseName(local.name) === getThemeBaseName(parentState.name)
|
|
135
|
-
|
|
136
|
-
// all tracked keys are scheme-optimized = can skip re-render for scheme changes
|
|
137
|
-
const keysSize = keys?.current?.size ?? 0
|
|
138
|
-
const schemeKeysSize = schemeKeys?.current?.size ?? 0
|
|
139
|
-
const allKeysSchemeOptimized = schemeKeysSize === keysSize && keysSize > 0
|
|
140
|
-
|
|
141
|
-
const canSkipForSchemeChange = isSchemeOnlyChange && allKeysSchemeOptimized
|
|
142
|
-
|
|
143
|
-
const needsUpdate = props.passThrough
|
|
144
|
-
? false
|
|
145
|
-
: isRoot || props.name === 'light' || props.name === 'dark' || props.name === null
|
|
146
|
-
? true
|
|
147
|
-
: !HasRenderedOnce.get(keys)
|
|
148
|
-
? true
|
|
149
|
-
: canSkipForSchemeChange
|
|
150
|
-
? false // skip re-render for scheme-only changes with DynamicColorIOS
|
|
151
|
-
: keys?.current?.size
|
|
152
|
-
? true
|
|
153
|
-
: props.needsUpdate?.()
|
|
154
|
-
|
|
155
|
-
const [rerender, next] = getNextState(
|
|
156
|
-
local,
|
|
113
|
+
// stable ref-bag for render inputs and the optional subscription cleanup.
|
|
114
|
+
// lastSnap caches the last getSnapshot result for the subscription bailout.
|
|
115
|
+
const ref = useRef<ThemeStateRef>(null as any)
|
|
116
|
+
if (!ref.current) {
|
|
117
|
+
ref.current = {
|
|
118
|
+
id: nextThemeStateId(),
|
|
119
|
+
parentId,
|
|
157
120
|
props,
|
|
158
121
|
propsKey,
|
|
159
122
|
isRoot,
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
123
|
+
keys,
|
|
124
|
+
schemeKeys,
|
|
125
|
+
renderVersion: 0,
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
// refresh latest values for the stable closures to read
|
|
129
|
+
ref.current.props = props
|
|
130
|
+
ref.current.propsKey = propsKey
|
|
131
|
+
ref.current.isRoot = isRoot
|
|
132
|
+
ref.current.keys = keys
|
|
133
|
+
ref.current.schemeKeys = schemeKeys
|
|
134
|
+
ref.current.parentId = parentId
|
|
135
|
+
}
|
|
136
|
+
ref.current.renderVersion++
|
|
165
137
|
|
|
166
|
-
|
|
138
|
+
if (process.env.NODE_ENV === 'development' && globalThis.time)
|
|
139
|
+
globalThis.time`theme-prep-uses`
|
|
167
140
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
141
|
+
// manual subscription replaces useSyncExternalStore: same granular bailout
|
|
142
|
+
// (getSnapshot returning the same ref → React doesn't re-render), fewer
|
|
143
|
+
// React-internal hook slots on Hermes. We don't need tearing prevention
|
|
144
|
+
// here: theme/media updates are event-driven, not transition-driven, and
|
|
145
|
+
// useReducer in normal mode already gives same-tick batching.
|
|
146
|
+
const [, forceUpdate] = useReducer(incReducer, 0)
|
|
147
|
+
const state = getSnapshotImpl(ref.current)
|
|
148
|
+
ref.current.lastSnap = state
|
|
149
|
+
|
|
150
|
+
useEffect(() => {
|
|
151
|
+
const r = ref.current
|
|
152
|
+
const renderVersion = r.renderVersion
|
|
153
|
+
|
|
154
|
+
if (r.unsubscribe && r.subscribedParentId !== r.parentId) {
|
|
155
|
+
cleanupThemeSubscription(r)
|
|
175
156
|
}
|
|
176
157
|
|
|
177
|
-
if (
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
158
|
+
if (shouldSubscribeToTheme(r, cascadeOnChange)) {
|
|
159
|
+
if (!r.unsubscribe) {
|
|
160
|
+
const pid = r.parentId
|
|
161
|
+
const sid = r.id
|
|
162
|
+
const cb = () => {
|
|
163
|
+
const next = getSnapshotImpl(r)
|
|
164
|
+
if (next !== r.lastSnap) {
|
|
165
|
+
r.lastSnap = next
|
|
166
|
+
forceUpdate()
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
listenersByParent[pid] = listenersByParent[pid] || new Set()
|
|
171
|
+
listenersByParent[pid].add(sid)
|
|
172
|
+
allListeners.set(sid, () => {
|
|
173
|
+
PendingUpdate.set(sid, shouldForce ? 'force' : true)
|
|
174
|
+
cb()
|
|
175
|
+
})
|
|
176
|
+
r.subscribedParentId = pid
|
|
177
|
+
r.unsubscribe = () => {
|
|
178
|
+
allListeners.delete(sid)
|
|
179
|
+
listenersByParent[pid]?.delete(sid)
|
|
180
|
+
localStates.delete(sid)
|
|
181
|
+
states.delete(sid)
|
|
182
|
+
PendingUpdate.delete(sid)
|
|
183
|
+
r.unsubscribe = undefined
|
|
184
|
+
r.subscribedParentId = undefined
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
} else if (r.unsubscribe) {
|
|
188
|
+
cleanupThemeSubscription(r)
|
|
192
189
|
}
|
|
193
190
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
191
|
+
return () => {
|
|
192
|
+
// react runs passive cleanup before the next effect as well as on unmount.
|
|
193
|
+
// a newer render bumps renderVersion before that cleanup, so equality here
|
|
194
|
+
// means this is the final unmount cleanup.
|
|
195
|
+
if (r.renderVersion === renderVersion) {
|
|
196
|
+
cleanupThemeState(r)
|
|
197
|
+
}
|
|
197
198
|
}
|
|
198
|
-
|
|
199
|
-
;(local as any)._propsKey = propsKey
|
|
200
|
-
states.set(id, next)
|
|
199
|
+
})
|
|
201
200
|
|
|
202
|
-
|
|
201
|
+
const id = ref.current.id
|
|
202
|
+
if (cascadeOnChange) {
|
|
203
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
204
|
+
useIsomorphicLayoutEffect(() => {
|
|
205
|
+
if (!HasRenderedOnce.get(keys)) {
|
|
206
|
+
HasRenderedOnce.set(keys, true)
|
|
207
|
+
return
|
|
208
|
+
}
|
|
209
|
+
if (!propsKey) {
|
|
210
|
+
if (HadTheme.get(keys)) {
|
|
211
|
+
// we're removing the last theme, make sure to notify
|
|
212
|
+
scheduleUpdate(id)
|
|
213
|
+
}
|
|
214
|
+
HadTheme.set(keys, false)
|
|
215
|
+
return
|
|
216
|
+
}
|
|
217
|
+
if (process.env.NODE_ENV === 'development' && props.debug === 'verbose') {
|
|
218
|
+
console.warn(` · useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name)
|
|
219
|
+
}
|
|
220
|
+
scheduleUpdate(id)
|
|
221
|
+
HadTheme.set(keys, true)
|
|
222
|
+
}, [keys, propsKey])
|
|
203
223
|
}
|
|
204
224
|
|
|
205
|
-
|
|
206
|
-
|
|
225
|
+
return state
|
|
226
|
+
}
|
|
207
227
|
|
|
208
|
-
|
|
228
|
+
type SnapshotRef = {
|
|
229
|
+
id: string
|
|
230
|
+
parentId: string
|
|
231
|
+
props: UseThemeWithStateProps
|
|
232
|
+
propsKey: string
|
|
233
|
+
isRoot: boolean
|
|
234
|
+
keys: MutableRefObject<Set<string> | null>
|
|
235
|
+
schemeKeys?: MutableRefObject<Set<string> | null>
|
|
236
|
+
}
|
|
209
237
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
238
|
+
type ThemeStateRef = SnapshotRef & {
|
|
239
|
+
renderVersion: number
|
|
240
|
+
unsubscribe?: () => void
|
|
241
|
+
subscribedParentId?: string
|
|
242
|
+
lastSnap?: ThemeState
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
const shouldSubscribeToTheme = (r: ThemeStateRef, cascadeOnChange: boolean): boolean =>
|
|
246
|
+
r.isRoot ||
|
|
247
|
+
cascadeOnChange ||
|
|
248
|
+
hasThemeUpdatingProps(r.props) ||
|
|
249
|
+
!!r.keys.current?.size ||
|
|
250
|
+
!!r.props.needsUpdate?.()
|
|
251
|
+
|
|
252
|
+
function cleanupThemeSubscription(r: ThemeStateRef) {
|
|
253
|
+
r.unsubscribe?.()
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
function cleanupThemeState(r: ThemeStateRef) {
|
|
257
|
+
if (r.unsubscribe) {
|
|
258
|
+
cleanupThemeSubscription(r)
|
|
259
|
+
} else {
|
|
260
|
+
localStates.delete(r.id)
|
|
261
|
+
states.delete(r.id)
|
|
262
|
+
PendingUpdate.delete(r.id)
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
const getSnapshotImpl = (r: SnapshotRef): ThemeState => {
|
|
267
|
+
const { id, parentId, props, propsKey, isRoot, keys, schemeKeys } = r
|
|
268
|
+
let local = localStates.get(id)
|
|
269
|
+
const parentState = states.get(parentId)
|
|
270
|
+
|
|
271
|
+
// fast path: nothing changed since last snapshot
|
|
272
|
+
if (local && !PendingUpdate.has(id)) {
|
|
273
|
+
if (
|
|
274
|
+
parentState &&
|
|
275
|
+
(local as any)._parentName === parentState.name &&
|
|
276
|
+
(local as any)._propsKey === propsKey
|
|
277
|
+
) {
|
|
278
|
+
return local
|
|
225
279
|
}
|
|
226
|
-
|
|
227
|
-
HadTheme.set(keys, true)
|
|
228
|
-
}, [keys, propsKey])
|
|
280
|
+
}
|
|
229
281
|
|
|
230
|
-
|
|
282
|
+
// check if this is a scheme-only change (light↔dark) where DynamicColorIOS handles it
|
|
283
|
+
const isSchemeOnlyChange =
|
|
284
|
+
process.env.TAMAGUI_TARGET === 'native' &&
|
|
285
|
+
supportsDynamicColorIOS &&
|
|
286
|
+
getSetting('fastSchemeChange') &&
|
|
287
|
+
local &&
|
|
288
|
+
parentState &&
|
|
289
|
+
local.scheme !== parentState.scheme &&
|
|
290
|
+
getThemeBaseName(local.name) === getThemeBaseName(parentState.name)
|
|
291
|
+
|
|
292
|
+
// all tracked keys are scheme-optimized = can skip re-render for scheme changes
|
|
293
|
+
const keysSize = keys?.current?.size ?? 0
|
|
294
|
+
const schemeKeysSize = schemeKeys?.current?.size ?? 0
|
|
295
|
+
const allKeysSchemeOptimized = schemeKeysSize === keysSize && keysSize > 0
|
|
296
|
+
|
|
297
|
+
const canSkipForSchemeChange = isSchemeOnlyChange && allKeysSchemeOptimized
|
|
298
|
+
|
|
299
|
+
const needsUpdate = props.passThrough
|
|
300
|
+
? false
|
|
301
|
+
: isRoot || props.name === 'light' || props.name === 'dark' || props.name === null
|
|
302
|
+
? true
|
|
303
|
+
: !HasRenderedOnce.get(keys)
|
|
304
|
+
? true
|
|
305
|
+
: canSkipForSchemeChange
|
|
306
|
+
? false // skip re-render for scheme-only changes with DynamicColorIOS
|
|
307
|
+
: keys?.current?.size
|
|
308
|
+
? true
|
|
309
|
+
: props.needsUpdate?.()
|
|
310
|
+
|
|
311
|
+
const [rerender, next] = getNextState(
|
|
312
|
+
local,
|
|
313
|
+
props,
|
|
314
|
+
propsKey,
|
|
315
|
+
isRoot,
|
|
316
|
+
id,
|
|
317
|
+
parentId,
|
|
318
|
+
needsUpdate,
|
|
319
|
+
PendingUpdate.get(id)
|
|
320
|
+
)
|
|
321
|
+
|
|
322
|
+
PendingUpdate.delete(id)
|
|
323
|
+
|
|
324
|
+
// we always create a new localState for every component
|
|
325
|
+
// that way we can use it to de-opt and avoid renders granularly
|
|
326
|
+
// we always return the localState object in each component
|
|
327
|
+
// the global state (states) should always be up to date with the latest
|
|
328
|
+
if (!local || rerender) {
|
|
329
|
+
local = { ...next }
|
|
330
|
+
localStates.set(id, local)
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
if (process.env.NODE_ENV === 'development' && props.debug === 'verbose') {
|
|
334
|
+
console.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, '>', next.name)
|
|
335
|
+
console.info({
|
|
336
|
+
props,
|
|
337
|
+
propsKey,
|
|
338
|
+
isRoot,
|
|
339
|
+
parentId,
|
|
340
|
+
local,
|
|
341
|
+
next,
|
|
342
|
+
needsUpdate,
|
|
343
|
+
isSchemeOnlyChange,
|
|
344
|
+
allKeysSchemeOptimized,
|
|
345
|
+
canSkipForSchemeChange,
|
|
346
|
+
})
|
|
347
|
+
console.groupEnd()
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
if (next !== local) {
|
|
351
|
+
Object.assign(local, next)
|
|
352
|
+
local.id = id
|
|
353
|
+
}
|
|
354
|
+
;(local as any)._parentName = parentState?.name
|
|
355
|
+
;(local as any)._propsKey = propsKey
|
|
356
|
+
states.set(id, next)
|
|
357
|
+
|
|
358
|
+
return local
|
|
231
359
|
}
|
|
232
360
|
|
|
233
361
|
const getNextState = (
|
package/src/index.ts
CHANGED
|
@@ -77,10 +77,16 @@ export {
|
|
|
77
77
|
_disableMediaTouch,
|
|
78
78
|
configureMedia,
|
|
79
79
|
mediaKeyMatch,
|
|
80
|
+
updateMediaListeners,
|
|
80
81
|
useMedia,
|
|
81
82
|
} from './hooks/useMedia'
|
|
82
83
|
export { mediaObjectToString } from './helpers/mediaObjectToString'
|
|
83
|
-
export {
|
|
84
|
+
export {
|
|
85
|
+
getMedia,
|
|
86
|
+
mediaQueryConfig,
|
|
87
|
+
mediaState,
|
|
88
|
+
setMediaState,
|
|
89
|
+
} from './helpers/mediaState'
|
|
84
90
|
export * from './hooks/useProps'
|
|
85
91
|
export * from './hooks/useTheme'
|
|
86
92
|
export * from './hooks/useThemeName'
|
package/src/types.tsx
CHANGED
|
@@ -1884,12 +1884,56 @@ export type GetThemeValueForKey<K extends string | symbol | number> =
|
|
|
1884
1884
|
: never
|
|
1885
1885
|
: never)
|
|
1886
1886
|
|
|
1887
|
+
// keys that accept the first-class "safe" value (-> env(safe-area-inset-*) on
|
|
1888
|
+
// web, numeric insets on native). must mirror propEdges in resolveSafeArea.ts.
|
|
1889
|
+
// only the longhands are listed; shorthands (pt, mt, ...) inherit via WithShorthands.
|
|
1890
|
+
export type SafeAreaValueKeys =
|
|
1891
|
+
| 'padding'
|
|
1892
|
+
| 'paddingTop'
|
|
1893
|
+
| 'paddingBottom'
|
|
1894
|
+
| 'paddingLeft'
|
|
1895
|
+
| 'paddingRight'
|
|
1896
|
+
| 'paddingHorizontal'
|
|
1897
|
+
| 'paddingVertical'
|
|
1898
|
+
| 'paddingStart'
|
|
1899
|
+
| 'paddingEnd'
|
|
1900
|
+
| 'paddingBlock'
|
|
1901
|
+
| 'paddingInline'
|
|
1902
|
+
| 'paddingBlockStart'
|
|
1903
|
+
| 'paddingBlockEnd'
|
|
1904
|
+
| 'paddingInlineStart'
|
|
1905
|
+
| 'paddingInlineEnd'
|
|
1906
|
+
| 'margin'
|
|
1907
|
+
| 'marginTop'
|
|
1908
|
+
| 'marginBottom'
|
|
1909
|
+
| 'marginLeft'
|
|
1910
|
+
| 'marginRight'
|
|
1911
|
+
| 'marginHorizontal'
|
|
1912
|
+
| 'marginVertical'
|
|
1913
|
+
| 'marginStart'
|
|
1914
|
+
| 'marginEnd'
|
|
1915
|
+
| 'marginBlock'
|
|
1916
|
+
| 'marginInline'
|
|
1917
|
+
| 'marginBlockStart'
|
|
1918
|
+
| 'marginBlockEnd'
|
|
1919
|
+
| 'marginInlineStart'
|
|
1920
|
+
| 'marginInlineEnd'
|
|
1921
|
+
| 'inset'
|
|
1922
|
+
| 'top'
|
|
1923
|
+
| 'bottom'
|
|
1924
|
+
| 'left'
|
|
1925
|
+
| 'right'
|
|
1926
|
+
| 'start'
|
|
1927
|
+
| 'end'
|
|
1928
|
+
|
|
1887
1929
|
export type WithThemeValues<T extends object> = {
|
|
1888
|
-
[K in keyof T]:
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1930
|
+
[K in keyof T]:
|
|
1931
|
+
| (ThemeValueGet<K> extends never
|
|
1932
|
+
? K extends keyof ExtraBaseProps
|
|
1933
|
+
? T[K]
|
|
1934
|
+
: T[K] | 'unset'
|
|
1935
|
+
: GetThemeValueForKey<K> | Exclude<T[K], string> | 'unset')
|
|
1936
|
+
| (K extends SafeAreaValueKeys ? 'safe' : never)
|
|
1893
1937
|
}
|
|
1894
1938
|
|
|
1895
1939
|
export type NarrowShorthands = Narrow<Shorthands>
|
package/src/views/Theme.tsx
CHANGED
|
@@ -26,7 +26,10 @@ export const Theme = forwardRef(function Theme(props: ThemeComponentPropsOnly, r
|
|
|
26
26
|
|
|
27
27
|
const isRoot = !!props['_isRoot']
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
// pass forThemeView=true so the descendant-cascade effect is installed —
|
|
30
|
+
// <Theme> pushes themeState.id into ThemeStateContext, so children subscribe
|
|
31
|
+
// under this id and need to be notified when our propsKey changes.
|
|
32
|
+
const [_, themeState] = useThemeWithState(props, isRoot, true)
|
|
30
33
|
|
|
31
34
|
const disableDirectChildTheme = props['disable-child-theme']
|
|
32
35
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAaA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA6B/D,OAAO,KAAK,EAQV,YAAY,EAEZ,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EAOf,MAAM,SAAS,CAAA;AAahB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AAwK9D,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,wEA+nD3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAEf,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,aAAa,EAIb,eAAe,EACf,YAAY,EAEZ,qBAAqB,EAErB,SAAS,EACT,WAAW,EAEZ,MAAM,UAAU,CAAA;AA0BjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAG3D,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAE9B,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAIhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,qBAAqB,EACrC,UAAU,EAAE,eAAe,EAC3B,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,EAEtC,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,OAAO,EAC3B,KAAK,CAAC,EAAE,SAAS,EAEjB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,KACrC,IAAI,GAAG,cAAc,CAAA;AAE1B,eAAO,MAAM,UAAU,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAEf,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,aAAa,EAIb,eAAe,EACf,YAAY,EAEZ,qBAAqB,EAErB,SAAS,EACT,WAAW,EAEZ,MAAM,UAAU,CAAA;AA0BjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAG3D,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAE9B,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAIhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,qBAAqB,EACrC,UAAU,EAAE,eAAe,EAC3B,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,EAEtC,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,OAAO,EAC3B,KAAK,CAAC,EAAE,SAAS,EAEjB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,KACrC,IAAI,GAAG,cAAc,CAAA;AAE1B,eAAO,MAAM,UAAU,MAAM,CAAA;AA6D7B,eAAO,MAAM,cAAc,EAAE,aA41C5B,CAAA;AA+DD,eAAO,MAAM,WAAW,GACtB,YAAY,aAAa,EACzB,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,sBAAsB,OAAO,KAC5B,SA6HF,CAAA;AAQD,eAAO,MAAM,cAAc,EAAE,aAc5B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointerEvents.native.d.ts","sourceRoot":"","sources":["../../src/helpers/pointerEvents.native.ts"],"names":[],"mappings":"AASA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"pointerEvents.native.d.ts","sourceRoot":"","sources":["../../src/helpers/pointerEvents.native.ts"],"names":[],"mappings":"AASA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,QA4I1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMedia.d.ts","sourceRoot":"","sources":["../../src/hooks/useMedia.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,WAAW,EAEX,qBAAqB,EACrB,aAAa,EACb,WAAW,EACZ,MAAM,UAAU,CAAA;AAKjB,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,OAKxC,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,WAMzC,CAAA;AAOD,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,WAShD,CAAA;AAMD,eAAO,MAAM,cAAc,GAAI,QAAQ,qBAAqB,
|
|
1
|
+
{"version":3,"file":"useMedia.d.ts","sourceRoot":"","sources":["../../src/hooks/useMedia.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,WAAW,EAEX,qBAAqB,EACrB,aAAa,EACb,WAAW,EACZ,MAAM,UAAU,CAAA;AAKjB,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,OAKxC,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,WAMzC,CAAA;AAOD,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,WAShD,CAAA;AAMD,eAAO,MAAM,cAAc,GAAI,QAAQ,qBAAqB,SAiB3D,CAAA;AAaD,wBAAgB,mBAAmB,SAkClC;AAID,wBAAgB,oBAAoB,SAEnC;AAED,KAAK,UAAU,GAAG;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAC1B,CAAA;AA6CD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE,OAAO,EACjB,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,QAW1B;AASD,wBAAgB,QAAQ,CACtB,gBAAgB,CAAC,EAAE,iBAAiB,EACpC,KAAK,CAAC,EAAE,SAAS,GAChB,aAAa,CAqIf;AAOD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,QAE9C;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,2BAa1E;AAED,eAAO,MAAM,iCAAiC,GAC5C,UAAU,MAAM,EAChB,KAAK,MAAM,EACX,YAAY,aAAa,EACzB,aAAa,OAAO,kBAOrB,CAAA;AAID,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,UAK1C;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,WAY9C"}
|
|
@@ -5,5 +5,5 @@ export type ThemeWithState = [ThemeParsed, ThemeState];
|
|
|
5
5
|
/**
|
|
6
6
|
* Adds a proxy around themeState that tracks update keys
|
|
7
7
|
*/
|
|
8
|
-
export declare const useThemeWithState: (props: UseThemeWithStateProps, isRoot?: boolean) => ThemeWithState;
|
|
8
|
+
export declare const useThemeWithState: (props: UseThemeWithStateProps, isRoot?: boolean, forThemeView?: boolean) => ThemeWithState;
|
|
9
9
|
//# sourceMappingURL=useTheme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useTheme.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAC/E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useTheme.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAC/E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAUtE,eAAO,MAAM,QAAQ,QAKL,YACf,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AAEtD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,sBAAsB,EAC7B,gBAAc,EAQd,sBAAoB,KACnB,cAiCF,CAAA"}
|
|
@@ -5,7 +5,7 @@ export declare const ThemeStateContext: import("react").Context<string>;
|
|
|
5
5
|
export declare const forceUpdateThemes: () => void;
|
|
6
6
|
export declare const getThemeState: (id: ID) => ThemeState | undefined;
|
|
7
7
|
export declare const getRootThemeState: () => ThemeState | null;
|
|
8
|
-
export declare const useThemeState: (props: UseThemeWithStateProps, isRoot: boolean | undefined, keys: MutableRefObject<Set<string> | null>, schemeKeys?: MutableRefObject<Set<string> | null
|
|
8
|
+
export declare const useThemeState: (props: UseThemeWithStateProps, isRoot: boolean | undefined, keys: MutableRefObject<Set<string> | null>, schemeKeys?: MutableRefObject<Set<string> | null>, cascadeOnChange?: boolean) => ThemeState;
|
|
9
9
|
export declare const hasThemeUpdatingProps: (props: ThemeProps) => boolean;
|
|
10
10
|
export {};
|
|
11
11
|
//# sourceMappingURL=useThemeState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useThemeState.d.ts","sourceRoot":"","sources":["../../src/hooks/useThemeState.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAEV,UAAU,EACV,UAAU,EACV,sBAAsB,EACvB,MAAM,UAAU,CAAA;AAEjB,KAAK,EAAE,GAAG,MAAM,CAAA;AAEhB,eAAO,MAAM,iBAAiB,iCAAwB,CAAA;AAatD,eAAO,MAAM,iBAAiB,YAK7B,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,IAAI,EAAE,2BAAmB,CAAA;AAWvD,eAAO,MAAM,iBAAiB,yBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"useThemeState.d.ts","sourceRoot":"","sources":["../../src/hooks/useThemeState.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAEV,UAAU,EACV,UAAU,EACV,sBAAsB,EACvB,MAAM,UAAU,CAAA;AAEjB,KAAK,EAAE,GAAG,MAAM,CAAA;AAEhB,eAAO,MAAM,iBAAiB,iCAAwB,CAAA;AAatD,eAAO,MAAM,iBAAiB,YAK7B,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,IAAI,EAAE,2BAAmB,CAAA;AAWvD,eAAO,MAAM,iBAAiB,yBAAuB,CAAA;AAcrD,eAAO,MAAM,aAAa,GACxB,OAAO,sBAAsB,EAC7B,2BAAc,EACd,MAAM,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAC1C,aAAa,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAOjD,yBAAuB,KACtB,UAoJF,CAAA;AA2cD,eAAO,MAAM,qBAAqB,GAAI,OAAO,UAAU,YACW,CAAA"}
|
package/types/index.d.ts
CHANGED
|
@@ -52,9 +52,9 @@ export { getConfig, getSetting, getStyleCompat, getThemes, getToken, getTokens,
|
|
|
52
52
|
export { setNonce } from './helpers/insertStyleRule';
|
|
53
53
|
export * from './constants/constants';
|
|
54
54
|
export * from './hooks/useIsTouchDevice';
|
|
55
|
-
export { _disableMediaTouch, configureMedia, mediaKeyMatch, useMedia, } from './hooks/useMedia';
|
|
55
|
+
export { _disableMediaTouch, configureMedia, mediaKeyMatch, updateMediaListeners, useMedia, } from './hooks/useMedia';
|
|
56
56
|
export { mediaObjectToString } from './helpers/mediaObjectToString';
|
|
57
|
-
export { getMedia, mediaQueryConfig, mediaState } from './helpers/mediaState';
|
|
57
|
+
export { getMedia, mediaQueryConfig, mediaState, setMediaState, } from './helpers/mediaState';
|
|
58
58
|
export * from './hooks/useProps';
|
|
59
59
|
export * from './hooks/useTheme';
|
|
60
60
|
export * from './hooks/useThemeName';
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sCAAsC,CAAA;AACpD,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AAEzB,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,mBAAmB,+BAA+B,CAAA;AAClD,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,SAAS,CAAA;AAE5B,cAAc,qBAAqB,CAAA;AAEnC,OAAO,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,SAAS,EACT,QAAQ,EACR,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,KAAK,WAAW,GACjB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEpD,cAAc,uBAAuB,CAAA;AAErC,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/types/types.d.ts
CHANGED
|
@@ -1035,8 +1035,9 @@ export type ThemeValueGet<K extends string | number | symbol> = K extends 'theme
|
|
|
1035
1035
|
export type GetThemeValueForKey<K extends string | symbol | number> = ThemeValueGet<K> | ThemeValueFallback | (TamaguiSettings extends {
|
|
1036
1036
|
autocompleteSpecificTokens: infer Val;
|
|
1037
1037
|
} ? Val extends true | undefined ? SpecificTokens : never : never);
|
|
1038
|
+
export type SafeAreaValueKeys = 'padding' | 'paddingTop' | 'paddingBottom' | 'paddingLeft' | 'paddingRight' | 'paddingHorizontal' | 'paddingVertical' | 'paddingStart' | 'paddingEnd' | 'paddingBlock' | 'paddingInline' | 'paddingBlockStart' | 'paddingBlockEnd' | 'paddingInlineStart' | 'paddingInlineEnd' | 'margin' | 'marginTop' | 'marginBottom' | 'marginLeft' | 'marginRight' | 'marginHorizontal' | 'marginVertical' | 'marginStart' | 'marginEnd' | 'marginBlock' | 'marginInline' | 'marginBlockStart' | 'marginBlockEnd' | 'marginInlineStart' | 'marginInlineEnd' | 'inset' | 'top' | 'bottom' | 'left' | 'right' | 'start' | 'end';
|
|
1038
1039
|
export type WithThemeValues<T extends object> = {
|
|
1039
|
-
[K in keyof T]: ThemeValueGet<K> extends never ? K extends keyof ExtraBaseProps ? T[K] : T[K] | 'unset' : GetThemeValueForKey<K> | Exclude<T[K], string> | 'unset';
|
|
1040
|
+
[K in keyof T]: (ThemeValueGet<K> extends never ? K extends keyof ExtraBaseProps ? T[K] : T[K] | 'unset' : GetThemeValueForKey<K> | Exclude<T[K], string> | 'unset') | (K extends SafeAreaValueKeys ? 'safe' : never);
|
|
1040
1041
|
};
|
|
1041
1042
|
export type NarrowShorthands = Narrow<Shorthands>;
|
|
1042
1043
|
export type Longhands = NarrowShorthands[keyof NarrowShorthands];
|