@tamagui/web 1.112.9 → 1.112.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/helpers/ThemeManager.js +6 -4
- package/dist/cjs/helpers/ThemeManager.js.map +1 -1
- package/dist/cjs/helpers/ThemeManager.native.js +22 -4
- package/dist/cjs/helpers/ThemeManager.native.js.map +2 -2
- package/dist/cjs/hooks/useTheme.js +11 -9
- package/dist/cjs/hooks/useTheme.js.map +2 -2
- package/dist/cjs/hooks/useTheme.native.js +17 -12
- package/dist/cjs/hooks/useTheme.native.js.map +2 -2
- package/dist/esm/helpers/ThemeManager.js +6 -4
- package/dist/esm/helpers/ThemeManager.js.map +1 -1
- package/dist/esm/helpers/ThemeManager.mjs +6 -4
- package/dist/esm/helpers/ThemeManager.mjs.map +1 -1
- package/dist/esm/helpers/ThemeManager.native.js +21 -5
- package/dist/esm/helpers/ThemeManager.native.js.map +1 -1
- package/dist/esm/hooks/useTheme.js +11 -9
- package/dist/esm/hooks/useTheme.js.map +2 -2
- package/dist/esm/hooks/useTheme.mjs +12 -9
- package/dist/esm/hooks/useTheme.mjs.map +1 -1
- package/dist/esm/hooks/useTheme.native.js +16 -12
- package/dist/esm/hooks/useTheme.native.js.map +1 -1
- package/package.json +11 -11
- package/src/helpers/ThemeManager.tsx +23 -13
- package/src/hooks/useTheme.tsx +20 -7
- package/types/helpers/ThemeManager.d.ts +4 -2
- package/types/helpers/ThemeManager.d.ts.map +1 -1
- package/types/hooks/useTheme.d.ts +1 -0
- package/types/hooks/useTheme.d.ts.map +1 -1
package/src/hooks/useTheme.tsx
CHANGED
|
@@ -20,6 +20,7 @@ import type {
|
|
|
20
20
|
|
|
21
21
|
export type ChangedThemeResponse = {
|
|
22
22
|
state?: ThemeManagerState
|
|
23
|
+
prevState?: ThemeManagerState
|
|
23
24
|
themeManager?: ThemeManager | null
|
|
24
25
|
isNewTheme: boolean
|
|
25
26
|
// null = never been inversed
|
|
@@ -168,6 +169,11 @@ export function getThemeProxied(
|
|
|
168
169
|
|
|
169
170
|
function track(key: string) {
|
|
170
171
|
if (keys && !keys.includes(key)) {
|
|
172
|
+
if (!keys.length) {
|
|
173
|
+
// tracking new key for first time, do an update check
|
|
174
|
+
themeManager?.selfUpdate()
|
|
175
|
+
}
|
|
176
|
+
|
|
171
177
|
keys.push(key)
|
|
172
178
|
if (process.env.NODE_ENV === 'development' && debug) {
|
|
173
179
|
console.info(` 🎨 useTheme() tracking new key: ${key}`)
|
|
@@ -345,7 +351,7 @@ export const useChangeThemeEffect = (
|
|
|
345
351
|
|
|
346
352
|
const [themeState, setThemeState] = React.useState<ChangedThemeResponse>(createState)
|
|
347
353
|
|
|
348
|
-
const { state, mounted, isNewTheme, themeManager, inversed } = themeState
|
|
354
|
+
const { state, mounted, isNewTheme, themeManager, inversed, prevState } = themeState
|
|
349
355
|
const isInversingOnMount = Boolean(!themeState.mounted && props.inverse)
|
|
350
356
|
|
|
351
357
|
function getShouldUpdateTheme(
|
|
@@ -367,6 +373,13 @@ export const useChangeThemeEffect = (
|
|
|
367
373
|
}
|
|
368
374
|
|
|
369
375
|
if (!isServer) {
|
|
376
|
+
React.useLayoutEffect(() => {
|
|
377
|
+
// one homepage breaks on useTheme() in MetaTheme if this isnt set up
|
|
378
|
+
if (themeManager && state && prevState && state !== prevState) {
|
|
379
|
+
themeManager.notify()
|
|
380
|
+
}
|
|
381
|
+
}, [state])
|
|
382
|
+
|
|
370
383
|
// listen for parent change + notify children change
|
|
371
384
|
React.useEffect(() => {
|
|
372
385
|
if (!themeManager) return
|
|
@@ -392,11 +405,12 @@ export const useChangeThemeEffect = (
|
|
|
392
405
|
// for updateTheme/replaceTheme
|
|
393
406
|
const selfListenerDispose = themeManager.onChangeTheme((_a, _b, forced) => {
|
|
394
407
|
if (forced) {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
408
|
+
setThemeState((prev) => {
|
|
409
|
+
const next = createState(prev, forced !== 'self')
|
|
410
|
+
return next
|
|
411
|
+
})
|
|
398
412
|
}
|
|
399
|
-
})
|
|
413
|
+
}, true)
|
|
400
414
|
|
|
401
415
|
const disposeChangeListener = parentManager?.onChangeTheme(
|
|
402
416
|
(name, manager, forced) => {
|
|
@@ -424,9 +438,7 @@ export const useChangeThemeEffect = (
|
|
|
424
438
|
}
|
|
425
439
|
|
|
426
440
|
if (shouldTryUpdate) {
|
|
427
|
-
console.error = preventWarnSetState
|
|
428
441
|
setThemeState((prev) => createState(prev, force))
|
|
429
|
-
console.error = ogLog
|
|
430
442
|
}
|
|
431
443
|
},
|
|
432
444
|
themeManager.id
|
|
@@ -588,6 +600,7 @@ export const useChangeThemeEffect = (
|
|
|
588
600
|
|
|
589
601
|
// after we compare equal we set the state
|
|
590
602
|
response.state = state
|
|
603
|
+
response.prevState = prev?.state
|
|
591
604
|
|
|
592
605
|
if (process.env.NODE_ENV === 'development' && props['debug'] && isClient) {
|
|
593
606
|
console.groupCollapsed(`🔷 [${themeManager.id}] useChangeThemeEffect createState`)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ColorScheme, ThemeParsed, ThemeProps } from '../types';
|
|
2
|
-
type ThemeListener = (name: string | null, themeManager: ThemeManager, forced: boolean) => void;
|
|
2
|
+
type ThemeListener = (name: string | null, themeManager: ThemeManager, forced: boolean | 'self') => void;
|
|
3
3
|
export type SetActiveThemeProps = {
|
|
4
4
|
className?: string;
|
|
5
5
|
parentManager?: ThemeManager | null;
|
|
@@ -33,7 +33,9 @@ export declare class ThemeManager {
|
|
|
33
33
|
_allKeys: Set<string> | null;
|
|
34
34
|
get allKeys(): Set<string>;
|
|
35
35
|
notify(forced?: boolean): void;
|
|
36
|
-
|
|
36
|
+
_selfListener?: ThemeListener;
|
|
37
|
+
selfUpdate(): void;
|
|
38
|
+
onChangeTheme(cb: ThemeListener, debugId?: number | true): () => void;
|
|
37
39
|
}
|
|
38
40
|
type MaybeThemeManager = ThemeManager | undefined;
|
|
39
41
|
export declare function getManagers(themeManager?: ThemeManager | null): readonly [MaybeThemeManager[], MaybeThemeManager[]];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../src/helpers/ThemeManager.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEpE,KAAK,aAAa,GAAG,CACnB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../src/helpers/ThemeManager.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEpE,KAAK,aAAa,GAAG,CACnB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,OAAO,GAAG,MAAM,KACrB,IAAI,CAAA;AAET,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAID,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,WAEzD;AAID,qBAAa,YAAY;IAOd,KAAK,EAAE,UAAU;IAN1B,EAAE,SAAI;IACN,cAAc,qBAA2B;IACzC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAO;IACzC,KAAK,EAAE,iBAAiB,CAAa;gBAG5B,KAAK,GAAE,UAAe,EAC7B,aAAa,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;IA6B1D,oBAAoB,CAClB,KAAK,GAAE,UAAU,GAAG;QAAE,UAAU,CAAC,EAAE,WAAW,CAAA;KAAqB,EACnE,YAAY,UAAO;IAkBrB,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE,YAAY,UAAO;IAgB7D,iBAAiB,CACf,KAAK,aAAa,EAClB,KAAK,GAAE,iBAAiB,GAAG,IAAiB,EAC5C,aAAa,sBAAqB;IAapC,oBAAoB,CAClB,SAAS,EAAE,iBAAiB,GAAG,IAAI,EACnC,KAAK,GAAE,iBAAiB,GAAG,IAAiB;IAQ9C,QAAQ,CAAC,KAAK,aAAa,EAAE,aAAa,sBAAqB;IAO/D,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAO;IACnC,IAAI,OAAO,gBAMV;IAED,MAAM,CAAC,MAAM,UAAQ;IAQrB,aAAa,CAAC,EAAE,aAAa,CAAA;IAE7B,UAAU;IAIV,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAiBzD;AA2KD,KAAK,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAA;AAKjD,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,uDAY7D"}
|
|
@@ -4,6 +4,7 @@ import { ThemeManager } from '../helpers/ThemeManager';
|
|
|
4
4
|
import type { DebugProp, ThemeParsed, ThemeProps, Tokens, UseThemeWithStateProps, VariableVal, VariableValGeneric } from '../types';
|
|
5
5
|
export type ChangedThemeResponse = {
|
|
6
6
|
state?: ThemeManagerState;
|
|
7
|
+
prevState?: ThemeManagerState;
|
|
7
8
|
themeManager?: ThemeManager | null;
|
|
8
9
|
isNewTheme: boolean;
|
|
9
10
|
inversed?: null | boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useTheme.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,YAAY,EAA4B,MAAM,yBAAyB,CAAA;AAGhF,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,MAAM,EACN,sBAAsB,EACtB,WAAW,EACX,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAEjB,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,OAAO,CAAA;IAGnB,QAAQ,CAAC,EAAE,IAAI,GAAG,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAcD,MAAM,MAAM,aAAa,CAAC,GAAG,IAAI,GAAG,GAAG;IACrC;;;;;;;;;OASG;IACH,GAAG,EAAE,CACH,QAAQ,CAAC,EAAE,KAAK,KAEd,MAAM,GACN,CAAC,GAAG,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAC1B,CAAC,SAAS,kBAAkB,GAC1B,GAAG,GACH,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,GACtB,GAAG,SAAS,WAAW,GACrB,MAAM,GAAG,MAAM,GACf,OAAO,CAAC,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;KAC1B,GAAG,IAAI,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,aAAa,CAC/D,GAAG,SAAS,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CACjE;CACF,GAAG;KAED,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;CACpD,CAAA;AAYD,eAAO,MAAM,QAAQ,WAAW,UAAU,KAG1B,cACf,CAAA;AAED,eAAO,MAAM,iBAAiB,UACrB,sBAAsB,KAC5B,CAAC,oBAAoB,EAAE,WAAW,CA8DpC,CAAA;AAED,wBAAgB,eAAe,CAC7B,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAC1C,KAAK,UAAQ,EACb,YAAY,CAAC,EAAE,YAAY,EAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,KAAK,CAAC,EAAE,SAAS,GAChB,cAAc,
|
|
1
|
+
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useTheme.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,YAAY,EAA4B,MAAM,yBAAyB,CAAA;AAGhF,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,MAAM,EACN,sBAAsB,EACtB,WAAW,EACX,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAEjB,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,OAAO,CAAA;IAGnB,QAAQ,CAAC,EAAE,IAAI,GAAG,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAcD,MAAM,MAAM,aAAa,CAAC,GAAG,IAAI,GAAG,GAAG;IACrC;;;;;;;;;OASG;IACH,GAAG,EAAE,CACH,QAAQ,CAAC,EAAE,KAAK,KAEd,MAAM,GACN,CAAC,GAAG,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAC1B,CAAC,SAAS,kBAAkB,GAC1B,GAAG,GACH,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,GACtB,GAAG,SAAS,WAAW,GACrB,MAAM,GAAG,MAAM,GACf,OAAO,CAAC,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;KAC1B,GAAG,IAAI,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,aAAa,CAC/D,GAAG,SAAS,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CACjE;CACF,GAAG;KAED,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;CACpD,CAAA;AAYD,eAAO,MAAM,QAAQ,WAAW,UAAU,KAG1B,cACf,CAAA;AAED,eAAO,MAAM,iBAAiB,UACrB,sBAAsB,KAC5B,CAAC,oBAAoB,EAAE,WAAW,CA8DpC,CAAA;AAED,wBAAgB,eAAe,CAC7B,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAC1C,KAAK,UAAQ,EACb,YAAY,CAAC,EAAE,YAAY,EAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,KAAK,CAAC,EAAE,SAAS,GAChB,cAAc,CA+GhB;AAeD,eAAO,MAAM,mBAAmB,mBAA0B,CAAA;AAO1D,eAAO,MAAM,eAAe,OAAQ,MAAM,6BAEzC,CAAA;AAsBD,eAAO,MAAM,oBAAoB,UACxB,sBAAsB,2BAEtB,MAAM,EAAE,iBACA,MAAM,OAAO,GAAG,SAAS,KACvC,oBAySF,CAAA"}
|