@tamagui/web 1.14.4 → 1.14.5

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 (54) hide show
  1. package/dist/cjs/createComponent.js +1 -17
  2. package/dist/cjs/createComponent.js.map +2 -2
  3. package/dist/cjs/helpers/ThemeManager.js +38 -11
  4. package/dist/cjs/helpers/ThemeManager.js.map +2 -2
  5. package/dist/cjs/helpers/getSplitStyles.js +10 -1
  6. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  7. package/dist/cjs/hooks/useTheme.js +10 -8
  8. package/dist/cjs/hooks/useTheme.js.map +2 -2
  9. package/dist/cjs/index.js +0 -3
  10. package/dist/cjs/index.js.map +2 -2
  11. package/dist/cjs/views/ThemeDebug.js +26 -7
  12. package/dist/cjs/views/ThemeDebug.js.map +3 -3
  13. package/dist/esm/createComponent.js +2 -19
  14. package/dist/esm/createComponent.js.map +2 -2
  15. package/dist/esm/createComponent.mjs +2 -19
  16. package/dist/esm/createComponent.mjs.map +2 -2
  17. package/dist/esm/helpers/ThemeManager.js +37 -11
  18. package/dist/esm/helpers/ThemeManager.js.map +2 -2
  19. package/dist/esm/helpers/ThemeManager.mjs +37 -11
  20. package/dist/esm/helpers/ThemeManager.mjs.map +2 -2
  21. package/dist/esm/helpers/getSplitStyles.js +10 -1
  22. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  23. package/dist/esm/helpers/getSplitStyles.mjs +10 -1
  24. package/dist/esm/helpers/getSplitStyles.mjs.map +2 -2
  25. package/dist/esm/hooks/useTheme.js +12 -9
  26. package/dist/esm/hooks/useTheme.js.map +2 -2
  27. package/dist/esm/hooks/useTheme.mjs +12 -9
  28. package/dist/esm/hooks/useTheme.mjs.map +2 -2
  29. package/dist/esm/index.js +0 -3
  30. package/dist/esm/index.js.map +2 -2
  31. package/dist/esm/index.mjs +0 -3
  32. package/dist/esm/index.mjs.map +2 -2
  33. package/dist/esm/views/ThemeDebug.js +26 -7
  34. package/dist/esm/views/ThemeDebug.js.map +3 -3
  35. package/dist/esm/views/ThemeDebug.mjs +26 -7
  36. package/dist/esm/views/ThemeDebug.mjs.map +3 -3
  37. package/package.json +9 -9
  38. package/src/createComponent.tsx +1 -14
  39. package/src/helpers/ThemeManager.tsx +49 -12
  40. package/src/helpers/getSplitStyles.tsx +9 -0
  41. package/src/hooks/useTheme.tsx +22 -8
  42. package/src/index.ts +0 -3
  43. package/src/views/ThemeDebug.tsx +26 -4
  44. package/types/createComponent.d.ts.map +1 -1
  45. package/types/helpers/ThemeManager.d.ts +5 -3
  46. package/types/helpers/ThemeManager.d.ts.map +1 -1
  47. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  48. package/types/hooks/useTheme.d.ts.map +1 -1
  49. package/types/index.d.ts +0 -3
  50. package/types/index.d.ts.map +1 -1
  51. package/types/views/ThemeDebug.d.ts +1 -2
  52. package/types/views/ThemeDebug.d.ts.map +1 -1
  53. package/src/addTheme.ts +0 -66
  54. package/src/updateTheme.ts +0 -27
@@ -30,18 +30,22 @@ let uid = 0
30
30
 
31
31
  export class ThemeManager {
32
32
  id = uid++
33
+ isComponent = false
33
34
  themeListeners = new Set<ThemeListener>()
34
35
  parentManager: ThemeManager | null = null
35
36
  state: ThemeManagerState = emptyState
36
37
 
37
38
  constructor(
38
39
  public props: ThemeProps = {},
39
- parentManager?: ThemeManager | 'root' | null | undefined
40
+ parentManagerIn?: ThemeManager | 'root' | null | undefined
40
41
  ) {
41
- if (parentManager === 'root') {
42
+ if (parentManagerIn === 'root') {
42
43
  this.updateState(props, false)
43
44
  return
44
45
  }
46
+
47
+ const parentManager = getNonComponentParentManager(parentManagerIn)
48
+
45
49
  if (!parentManager) {
46
50
  if (process.env.NODE_ENV !== 'production') {
47
51
  throw new Error(
@@ -60,9 +64,7 @@ export class ThemeManager {
60
64
  this.parentManager = parentManager
61
65
  }
62
66
 
63
- const updatedState = this.getStateIfChanged(props)
64
- if (updatedState) {
65
- this.state = updatedState
67
+ if (this.updateState(props, false)) {
66
68
  return
67
69
  }
68
70
 
@@ -71,9 +73,9 @@ export class ThemeManager {
71
73
 
72
74
  updateState(
73
75
  props: ThemeProps & { forceTheme?: ThemeParsed } = this.props || {},
74
- notify = true
76
+ shouldNotify = true
75
77
  ) {
76
- const shouldFlush = (() => {
78
+ const isChanging = (() => {
77
79
  if (props.forceTheme) {
78
80
  this.state.theme = props.forceTheme
79
81
  this.state.name = props.name || ''
@@ -86,10 +88,22 @@ export class ThemeManager {
86
88
  return true
87
89
  }
88
90
  })()
89
- if (shouldFlush) {
90
- // reset any derived state
91
+
92
+ if (isChanging) {
93
+ const names = this.state.name.split('_')
94
+ const lastName = names[names.length - 1][0]
95
+ this.isComponent = lastName[0] === lastName[0].toUpperCase()
91
96
  this._allKeys = null
92
- notify && this.notify()
97
+
98
+ if (process.env.NODE_ENV === 'development') {
99
+ this['_numChangeEventsSent'] ??= 0
100
+ this['_numChangeEventsSent']++
101
+ }
102
+
103
+ if (shouldNotify) {
104
+ this.notify()
105
+ }
106
+
93
107
  return this.state
94
108
  }
95
109
  }
@@ -157,7 +171,14 @@ export class ThemeManager {
157
171
  this.themeListeners.forEach((cb) => cb(this.state.name, this))
158
172
  }
159
173
 
160
- onChangeTheme(cb: ThemeListener) {
174
+ onChangeTheme(cb: ThemeListener, debugId?: number) {
175
+ if (process.env.NODE_ENV === 'development' && debugId) {
176
+ // @ts-ignore
177
+ this._listeningIds ??= new Set()
178
+ // @ts-ignore
179
+ this._listeningIds.add(debugId)
180
+ }
181
+
161
182
  this.themeListeners.add(cb)
162
183
  return () => {
163
184
  this.themeListeners.delete(cb)
@@ -224,6 +245,7 @@ function getState(
224
245
  if (process.env.NODE_ENV === 'development' && typeof props.debug === 'string') {
225
246
  console.groupCollapsed('ThemeManager.getState()')
226
247
  console.log({
248
+ props,
227
249
  parentName,
228
250
  parentBaseTheme,
229
251
  base,
@@ -282,7 +304,7 @@ function getState(
282
304
 
283
305
  // eslint-disable-next-line no-console
284
306
  if (process.env.NODE_ENV === 'development' && typeof props.debug === 'string') {
285
- console.log({
307
+ console.warn('ThemeManager.getState():', {
286
308
  result,
287
309
  })
288
310
  console.trace()
@@ -297,3 +319,18 @@ const inverseThemeName = (themeName: string) => {
297
319
  ? themeName.replace(/^light/, 'dark')
298
320
  : themeName.replace(/^dark/, 'light')
299
321
  }
322
+
323
+ export function getNonComponentParentManager(themeManager?: ThemeManager | null) {
324
+ // components never inherit from components
325
+ // example <Switch><Switch.Thumb /></Switch>
326
+ // the Switch theme shouldn't be considered parent of Thumb
327
+ let res = themeManager
328
+ while (res) {
329
+ if (res?.isComponent) {
330
+ res = res.parentManager
331
+ } else {
332
+ break
333
+ }
334
+ }
335
+ return res
336
+ }
@@ -108,6 +108,10 @@ if (process.env.TAMAGUI_TARGET === 'native') {
108
108
  contain: true,
109
109
  boxSizing: true,
110
110
  boxShadow: true,
111
+ outlineStyle: true,
112
+ outlineOffset: true,
113
+ outlineWidth: true,
114
+ outlineColor: true,
111
115
  })
112
116
  }
113
117
 
@@ -1105,6 +1109,11 @@ export const getSubStyle = (
1105
1109
  languageContext,
1106
1110
  avoidDefaultProps
1107
1111
  )
1112
+ if (!staticConfig.isHOC) {
1113
+ if (key in skipProps) {
1114
+ continue
1115
+ }
1116
+ }
1108
1117
  if (!expanded) continue
1109
1118
  for (const [skey, sval] of expanded) {
1110
1119
  if (!avoidMergeTransform && skey in stylePropsTransform) {
@@ -9,6 +9,7 @@ import { createProxy } from '../helpers/createProxy.js'
9
9
  import {
10
10
  ThemeManager,
11
11
  ThemeManagerState,
12
+ getNonComponentParentManager,
12
13
  hasNoThemeUpdatingProps,
13
14
  } from '../helpers/ThemeManager.js'
14
15
  import { ThemeManagerContext } from '../helpers/ThemeManagerContext.js'
@@ -156,7 +157,8 @@ export const useChangeThemeEffect = (
156
157
  themeManager: null,
157
158
  }
158
159
  }
159
- const parentManager = useContext(ThemeManagerContext)
160
+
161
+ const parentManager = getNonComponentParentManager(useContext(ThemeManagerContext))
160
162
 
161
163
  const {
162
164
  debug,
@@ -186,11 +188,14 @@ export const useChangeThemeEffect = (
186
188
  return next
187
189
  }
188
190
 
189
- function getThemeManagerNextStateIfChanged(manager = themeManager) {
191
+ function getThemeManagerNextStateIfChanged(
192
+ manager = themeManager,
193
+ forceShouldChange = false
194
+ ) {
190
195
  const next = getNextThemeManagerState(manager)
191
196
  if (!next) return
192
197
  if (disableUpdate?.() === true) return
193
- if (!manager.getStateShouldChange(next, state)) return
198
+ if (!forceShouldChange && !manager.getStateShouldChange(next, state)) return
194
199
  return next
195
200
  }
196
201
 
@@ -228,13 +233,14 @@ export const useChangeThemeEffect = (
228
233
  }
229
234
 
230
235
  const disposeChangeListener = parentManager?.onChangeTheme((name, manager) => {
231
- if (keys?.length || isNewTheme) {
232
- if (process.env.NODE_ENV === 'development' && props['debug'] && keys?.length) {
233
- console.log(`onChangeTheme`, { props, name, manager, parentManager, keys })
236
+ const shouldUpdate = Boolean(keys?.length || isNewTheme)
237
+ if (shouldUpdate) {
238
+ if (process.env.NODE_ENV === 'development' && props['debug']) {
239
+ console.log(`onChangeTheme`, shouldUpdate, { props, name, manager, keys })
234
240
  }
235
241
  setThemeState(createState)
236
242
  }
237
- })
243
+ }, themeManager.id)
238
244
 
239
245
  return () => {
240
246
  disposeChangeListener?.()
@@ -281,7 +287,15 @@ export const useChangeThemeEffect = (
281
287
  if (prev?.themeManager) {
282
288
  themeManager = prev.themeManager
283
289
 
284
- const nextState = getThemeManagerNextStateIfChanged(themeManager)
290
+ // this could be a bit better, problem is on toggling light/dark the state is actually
291
+ // showing light even when the last was dark. but technically allso onChangeTheme should
292
+ // basically always call on a change, so i'm wondering if we even need the shouldUpdate
293
+ // at all anymore. this forces updates onChangeTheme for all dynamic style accessed components
294
+ // which is correct, potentially in the future we can avoid forceChange and just know to
295
+ // update if keys.length is set + onChangeTheme called
296
+ const forceChange = Boolean(keys?.length)
297
+
298
+ const nextState = getThemeManagerNextStateIfChanged(themeManager, forceChange)
285
299
 
286
300
  if (nextState) {
287
301
  state = nextState
package/src/index.ts CHANGED
@@ -8,8 +8,6 @@ export * from './createTokens.js'
8
8
  export * from './createVariable.js'
9
9
  export * from './createVariables.js'
10
10
  export * from './insertFont.js'
11
- export * from './addTheme.js'
12
- export * from './updateTheme.js'
13
11
  export * from './styled.js'
14
12
  export * from './types.js'
15
13
  export * from './setupReactNative.js'
@@ -45,7 +43,6 @@ export * from './helpers/normalizeColor.js'
45
43
 
46
44
  export * from './contexts/ButtonNestingContext.js'
47
45
 
48
- export * from './hooks/useId.js'
49
46
  export * from './hooks/useIsTouchDevice.js'
50
47
 
51
48
  export {
@@ -1,3 +1,6 @@
1
+ import { useForceUpdate } from '@tamagui/use-force-update'
2
+ import { useEffect, useState } from 'react'
3
+
1
4
  import { ChangedThemeResponse } from '../hooks/useTheme.js'
2
5
  import { ThemeProps } from '../types.js'
3
6
 
@@ -5,22 +8,37 @@ export function ThemeDebug({
5
8
  themeState,
6
9
  themeProps,
7
10
  children,
8
- onChangeCount,
9
11
  }: {
10
12
  themeState: ChangedThemeResponse
11
13
  themeProps: ThemeProps
12
- onChangeCount?: number
13
14
  children: any
14
15
  }) {
15
16
  if (process.env.NODE_ENV === 'development') {
17
+ const [onChangeCount, setOnChangeCount] = useState(0)
18
+ const rerender = useForceUpdate()
19
+
20
+ useEffect(() => {
21
+ themeState.themeManager?.parentManager?.onChangeTheme((name, manager) => {
22
+ setOnChangeCount((p) => ++p)
23
+ console.warn(`theme changed`, name)
24
+ })
25
+ }, [themeState.themeManager])
26
+
27
+ useEffect(() => {
28
+ // to refresh _listeningIds every so often
29
+ const tm = setInterval(rerender, 100)
30
+ return () => clearTimeout(tm)
31
+ }, [])
32
+
16
33
  return (
17
34
  <div
18
35
  style={{
19
36
  whiteSpace: 'pre',
20
- background: 'green',
21
- display: 'inline',
37
+ background: 'var(--background)',
38
+ display: 'inline-block',
22
39
  border: '1px solid #ccc',
23
40
  margin: 20,
41
+ color: 'red',
24
42
  }}
25
43
  >
26
44
  <code>
@@ -36,6 +54,10 @@ export function ThemeDebug({
36
54
  parentId: themeState.themeManager?.parentManager?.id,
37
55
  isNew: themeState.isNewTheme,
38
56
  onChangeCount,
57
+ listening: [...(themeState.themeManager?.['_listeningIds'] || [])].join(
58
+ ','
59
+ ),
60
+ _numChangeEventsSent: themeState.themeManager?.['_numChangeEventsSent'],
39
61
  },
40
62
  null,
41
63
  2
@@ -1 +1 @@
1
- {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAYN,MAAM,OAAO,CAAA;AAiBd,OAAO,EACL,SAAS,EACT,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAEhB,qBAAqB,EAErB,cAAc,EAIf,MAAM,SAAS,CAAA;AAsBhB,eAAO,MAAM,qBAAqB,EAAE,qBAMnC,CAAA;AAeD,eAAO,MAAM,QAAQ,eAAsB,CAAA;AA8B3C,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,GAAG,EAAE,EACtC,GAAG,GAAG,cAAc,EACpB,SAAS,GAAG,KAAK,EAEjB,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,EACpD,eAAe,CAAC,EAAE,iBAAiB,gEA8xBpC;AAGD,eAAO,MAAM,QAAQ;YAAW;QAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE;;CAAmB,CAAA;AAMrE,eAAO,MAAM,MAAM,8DA8CjB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,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,KAYN,MAAM,OAAO,CAAA;AAiBd,OAAO,EACL,SAAS,EACT,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAEhB,qBAAqB,EAErB,cAAc,EAIf,MAAM,SAAS,CAAA;AAsBhB,eAAO,MAAM,qBAAqB,EAAE,qBAMnC,CAAA;AAeD,eAAO,MAAM,QAAQ,eAAsB,CAAA;AA8B3C,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,GAAG,EAAE,EACtC,GAAG,GAAG,cAAc,EACpB,SAAS,GAAG,KAAK,EAEjB,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,EACpD,eAAe,CAAC,EAAE,iBAAiB,gEAixBpC;AAGD,eAAO,MAAM,QAAQ;YAAW;QAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE;;CAAmB,CAAA;AAMrE,eAAO,MAAM,MAAM,8DA8CjB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBAiGxD"}
@@ -17,13 +17,14 @@ export declare function hasNoThemeUpdatingProps(props: ThemeProps): boolean;
17
17
  export declare class ThemeManager {
18
18
  props: ThemeProps;
19
19
  id: number;
20
+ isComponent: boolean;
20
21
  themeListeners: Set<ThemeListener>;
21
22
  parentManager: ThemeManager | null;
22
23
  state: ThemeManagerState;
23
- constructor(props?: ThemeProps, parentManager?: ThemeManager | 'root' | null | undefined);
24
+ constructor(props?: ThemeProps, parentManagerIn?: ThemeManager | 'root' | null | undefined);
24
25
  updateState(props?: ThemeProps & {
25
26
  forceTheme?: ThemeParsed;
26
- }, notify?: boolean): ThemeManagerState | undefined;
27
+ }, shouldNotify?: boolean): ThemeManagerState | undefined;
27
28
  getStateIfChanged(props?: ThemeProps, state?: ThemeManagerState | null, parentManager?: ThemeManager | null): ThemeManagerState | null | undefined;
28
29
  getStateShouldChange(nextState: ThemeManagerState | null, state?: ThemeManagerState | null): boolean;
29
30
  getState(props?: ThemeProps, parentManager?: ThemeManager | null): ThemeManagerState | null;
@@ -31,7 +32,8 @@ export declare class ThemeManager {
31
32
  get allKeys(): Set<string>;
32
33
  getValue(key: string, state?: ThemeManagerState): string | number | import("../createVariable.js").Variable<any> | undefined;
33
34
  notify(): void;
34
- onChangeTheme(cb: ThemeListener): () => void;
35
+ onChangeTheme(cb: ThemeListener, debugId?: number): () => void;
35
36
  }
37
+ export declare function getNonComponentParentManager(themeManager?: ThemeManager | null): ThemeManager | null | undefined;
36
38
  export {};
37
39
  //# sourceMappingURL=ThemeManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../src/helpers/ThemeManager.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAErD,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,EAAE,YAAY,KAAK,IAAI,CAAA;AAE9E,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,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAID,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,WAExD;AAID,qBAAa,YAAY;IAOd,KAAK,EAAE,UAAU;IAN1B,EAAE,SAAQ;IACV,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;IAiC1D,WAAW,CACT,KAAK,GAAE,UAAU,GAAG;QAAE,UAAU,CAAC,EAAE,WAAW,CAAA;KAAqB,EACnE,MAAM,UAAO;IAuBf,iBAAiB,CACf,KAAK,aAAa,EAClB,KAAK,GAAE,iBAAiB,GAAG,IAAiB,EAC5C,aAAa,sBAAqB;IAYpC,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;IAGD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB;IAiB/C,MAAM;IAIN,aAAa,CAAC,EAAE,EAAE,aAAa;CAMhC"}
1
+ {"version":3,"file":"ThemeManager.d.ts","sourceRoot":"","sources":["../../src/helpers/ThemeManager.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAErD,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,EAAE,YAAY,KAAK,IAAI,CAAA;AAE9E,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,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAID,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,WAExD;AAID,qBAAa,YAAY;IAQd,KAAK,EAAE,UAAU;IAP1B,EAAE,SAAQ;IACV,WAAW,UAAQ;IACnB,cAAc,qBAA2B;IACzC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAO;IACzC,KAAK,EAAE,iBAAiB,CAAa;gBAG5B,KAAK,GAAE,UAAe,EAC7B,eAAe,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;IAkC5D,WAAW,CACT,KAAK,GAAE,UAAU,GAAG;QAAE,UAAU,CAAC,EAAE,WAAW,CAAA;KAAqB,EACnE,YAAY,UAAO;IAmCrB,iBAAiB,CACf,KAAK,aAAa,EAClB,KAAK,GAAE,iBAAiB,GAAG,IAAiB,EAC5C,aAAa,sBAAqB;IAYpC,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;IAGD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB;IAiB/C,MAAM;IAIN,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM;CAalD;AAwID,wBAAgB,4BAA4B,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,mCAa9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,cAAc,EAMd,eAAe,EACf,kBAAkB,EAElB,qBAAqB,EACrB,cAAc,EACd,WAAW,EAEZ,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gCAAgC,CAAA;AAkBvC,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,YAAY,EAAE,kBAAkB,CAAA;IAChC,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,KAAK,EAAE,eAAe,CAAA;IACtB,IAAI,EAAE,qBAAqB,CAAA;IAC3B,eAAe,CAAC,EAAE,iBAAiB,CAAA;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAsFhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,kBAAkB,EAChC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,eAAe,EACtB,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,eAAe,CAAC,EAAE,mBAAmB,EAErC,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,KACd,cAAc,CAAA;AAEnB,eAAO,MAAM,UAAU,MAAM,CAAA;AAqB7B,eAAO,MAAM,cAAc,EAAE,aA0xB5B,CAAA;AA0FD,eAAO,MAAM,WAAW,eACV,aAAa,UACjB,MAAM,WACL,MAAM,sBACK,OAAO,wBACL,OAAO,KAC5B,cA6BF,CAAA;AAOD,eAAO,MAAM,cAAc,EAAE,aAU5B,CAAA;AA2BD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,cAAc,EAMd,eAAe,EACf,kBAAkB,EAElB,qBAAqB,EACrB,cAAc,EACd,WAAW,EAEZ,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gCAAgC,CAAA;AAkBvC,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,YAAY,EAAE,kBAAkB,CAAA;IAChC,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,KAAK,EAAE,eAAe,CAAA;IACtB,IAAI,EAAE,qBAAqB,CAAA;IAC3B,eAAe,CAAC,EAAE,iBAAiB,CAAA;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AA0FhE,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,kBAAkB,EAChC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,eAAe,EACtB,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,eAAe,CAAC,EAAE,mBAAmB,EAErC,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,SAAS,KACd,cAAc,CAAA;AAEnB,eAAO,MAAM,UAAU,MAAM,CAAA;AAqB7B,eAAO,MAAM,cAAc,EAAE,aA0xB5B,CAAA;AA0FD,eAAO,MAAM,WAAW,eACV,aAAa,UACjB,MAAM,WACL,MAAM,sBACK,OAAO,wBACL,OAAO,KAC5B,cAkCF,CAAA;AAOD,eAAO,MAAM,cAAc,EAAE,aAU5B,CAAA;AA2BD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useTheme.tsx"],"names":[],"mappings":"AAQA,OAAO,EACL,YAAY,EAGb,MAAM,4BAA4B,CAAA;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAI1D,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAoBD,eAAO,MAAM,QAAQ,WAAW,UAAU,KAAgB,WAEzD,CAAA;AAED,eAAO,MAAM,iBAAiB,UAAW,UAAU;;gBA7BrC,OAAO;kBACL,YAAY,GAAG,IAAI;UAC3B,MAAM;;QAmEb,CAAA;AAED,wBAAgB,eAAe,CAC7B,EACE,KAAK,EACL,YAAY,GACb,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG;IACjC,KAAK,EAAE,WAAW,CAAA;CACnB,EACD,IAAI,CAAC,EAAE,MAAM,EAAE,eA2ChB;AAED,eAAO,MAAM,mBAAmB,mBAA0B,CAAA;AAE1D,eAAO,MAAM,oBAAoB,UACxB,UAAU,yBAEV,MAAM,EAAE,kBACC,MAAM,OAAO,KAC5B,oBAgLF,CAAA"}
1
+ {"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/hooks/useTheme.tsx"],"names":[],"mappings":"AAQA,OAAO,EACL,YAAY,EAIb,MAAM,4BAA4B,CAAA;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAI1D,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAoBD,eAAO,MAAM,QAAQ,WAAW,UAAU,KAAgB,WAEzD,CAAA;AAED,eAAO,MAAM,iBAAiB,UAAW,UAAU;;gBA7BrC,OAAO;kBACL,YAAY,GAAG,IAAI;UAC3B,MAAM;;QAmEb,CAAA;AAED,wBAAgB,eAAe,CAC7B,EACE,KAAK,EACL,YAAY,GACb,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG;IACjC,KAAK,EAAE,WAAW,CAAA;CACnB,EACD,IAAI,CAAC,EAAE,MAAM,EAAE,eA2ChB;AAED,eAAO,MAAM,mBAAmB,mBAA0B,CAAA;AAE1D,eAAO,MAAM,oBAAoB,UACxB,UAAU,yBAEV,MAAM,EAAE,kBACC,MAAM,OAAO,KAC5B,oBA6LF,CAAA"}
package/types/index.d.ts CHANGED
@@ -8,8 +8,6 @@ export * from './createTokens.js';
8
8
  export * from './createVariable.js';
9
9
  export * from './createVariables.js';
10
10
  export * from './insertFont.js';
11
- export * from './addTheme.js';
12
- export * from './updateTheme.js';
13
11
  export * from './styled.js';
14
12
  export * from './types.js';
15
13
  export * from './setupReactNative.js';
@@ -34,7 +32,6 @@ export * from './helpers/themeable.js';
34
32
  export * from './helpers/withStaticProperties.js';
35
33
  export * from './helpers/normalizeColor.js';
36
34
  export * from './contexts/ButtonNestingContext.js';
37
- export * from './hooks/useId.js';
38
35
  export * from './hooks/useIsTouchDevice.js';
39
36
  export { configureMedia, getMedia, mediaState, useMedia, useMediaPropsActive, mediaObjectToString, mediaQueryConfig, } from './hooks/useMedia.js';
40
37
  export * from './hooks/useTheme.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AAErC,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,YAAY,GACb,MAAM,aAAa,CAAA;AAEpB,cAAc,0BAA0B,CAAA;AAExC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA;AAChD,cAAc,wBAAwB,CAAA;AACtC,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAE3C,cAAc,oCAAoC,CAAA;AAElD,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAE3C,OAAO,EACL,cAAc,EACd,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,+BAA+B,CAAA;AAE7C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mCAAmC,CAAA;AACjD,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oCAAoC,CAAA;AAElD,cAAc,2BAA2B,CAAA;AACzC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAElC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AAErC,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,YAAY,GACb,MAAM,aAAa,CAAA;AAEpB,cAAc,0BAA0B,CAAA;AAExC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA;AAChD,cAAc,wBAAwB,CAAA;AACtC,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAE3C,cAAc,oCAAoC,CAAA;AAElD,cAAc,6BAA6B,CAAA;AAE3C,OAAO,EACL,cAAc,EACd,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,qBAAqB,CAAA;AAC5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,+BAA+B,CAAA;AAE7C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mCAAmC,CAAA;AACjD,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oCAAoC,CAAA;AAElD,cAAc,2BAA2B,CAAA;AACzC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAElC,cAAc,iBAAiB,CAAA"}
@@ -1,9 +1,8 @@
1
1
  import { ChangedThemeResponse } from '../hooks/useTheme.js';
2
2
  import { ThemeProps } from '../types.js';
3
- export declare function ThemeDebug({ themeState, themeProps, children, onChangeCount, }: {
3
+ export declare function ThemeDebug({ themeState, themeProps, children, }: {
4
4
  themeState: ChangedThemeResponse;
5
5
  themeProps: ThemeProps;
6
- onChangeCount?: number;
7
6
  children: any;
8
7
  }): any;
9
8
  //# sourceMappingURL=ThemeDebug.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeDebug.d.ts","sourceRoot":"","sources":["../../src/views/ThemeDebug.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,aAAa,GACd,EAAE;IACD,UAAU,EAAE,oBAAoB,CAAA;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,GAAG,CAAA;CACd,OAmCA"}
1
+ {"version":3,"file":"ThemeDebug.d.ts","sourceRoot":"","sources":["../../src/views/ThemeDebug.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,wBAAgB,UAAU,CAAC,EACzB,UAAU,EACV,UAAU,EACV,QAAQ,GACT,EAAE;IACD,UAAU,EAAE,oBAAoB,CAAA;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,GAAG,CAAA;CACd,OAwDA"}
package/src/addTheme.ts DELETED
@@ -1,66 +0,0 @@
1
- import { isWeb } from '@tamagui/constants'
2
-
3
- import { getConfig, updateConfig } from './config.js'
4
- import { getThemeCSSRules } from './helpers/getThemeCSSRules'
5
- import { ensureThemeVariable, proxyThemeToParents } from './helpers/themes.js'
6
- import { ThemeDefinition, ThemeParsed } from './types.js'
7
-
8
- /** @deprecated import from @tamagui/theme instead */
9
- export function addTheme(props: {
10
- name: string
11
- theme: Partial<Record<keyof ThemeDefinition, any>>
12
- insertCSS?: boolean
13
- update?: boolean
14
- }) {
15
- const config = getConfig()
16
-
17
- if (process.env.NODE_ENV === 'development') {
18
- if (!config) {
19
- throw new Error('No config')
20
- }
21
- const theme = config.themes[props.name]
22
- if (!props.update && theme) {
23
- return { theme }
24
- }
25
- }
26
-
27
- const { name: themeName, theme: themeIn, insertCSS } = props
28
- const theme = { ...themeIn } as ThemeParsed
29
- for (const key in theme) {
30
- ensureThemeVariable(theme, key)
31
- }
32
-
33
- const themeProxied = proxyThemeToParents(themeName, theme, config.themes)
34
- config.themes[themeName] = themeProxied
35
-
36
- let cssRules: string[] = []
37
-
38
- if (isWeb) {
39
- if (insertCSS) {
40
- cssRules = getThemeCSSRules({
41
- // @ts-ignore this works but should be fixed types
42
- config,
43
- themeName,
44
- names: [themeName],
45
- theme,
46
- })
47
- const id = `t_theme_style_${themeName}`
48
- const existing = document.querySelector(`#${id}`)
49
- const style = document.createElement('style')
50
- style.id = id
51
- style.appendChild(document.createTextNode(cssRules.join('\n')))
52
- document.head.appendChild(style)
53
- if (existing) {
54
- existing.parentElement?.removeChild(existing)
55
- }
56
- }
57
- }
58
-
59
- updateConfig('themes', { ...config.themes, [themeName]: themeProxied })
60
-
61
- // trigger updates in components
62
- return {
63
- theme: themeProxied,
64
- cssRules,
65
- }
66
- }
@@ -1,27 +0,0 @@
1
- import { addTheme } from './addTheme.js'
2
- import { activeThemeManagers } from './hooks/useTheme.js'
3
- import type { ThemeDefinition } from './types.js'
4
-
5
- /** @deprecated import from @tamagui/theme instead */
6
- export function updateTheme({
7
- name,
8
- theme,
9
- }: {
10
- name: string
11
- theme: Partial<Record<keyof ThemeDefinition, any>>
12
- }) {
13
- const next = addTheme({ name, theme, insertCSS: true, update: true })
14
-
15
- if (process.env.TAMAGUI_TARGET === 'native') {
16
- activeThemeManagers.forEach((manager) => {
17
- if (manager.state.name === name) {
18
- manager.updateState({
19
- name,
20
- forceTheme: next.theme,
21
- })
22
- }
23
- })
24
- }
25
-
26
- return next
27
- }