@tamagui/web 1.92.1 → 1.93.1

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 (86) hide show
  1. package/dist/cjs/createComponent.js +156 -104
  2. package/dist/cjs/createComponent.js.map +2 -2
  3. package/dist/cjs/createComponent.native.js +139 -104
  4. package/dist/cjs/createComponent.native.js.map +2 -2
  5. package/dist/cjs/createVariable.js +7 -3
  6. package/dist/cjs/createVariable.js.map +1 -1
  7. package/dist/cjs/createVariable.native.js +7 -3
  8. package/dist/cjs/createVariable.native.js.map +2 -2
  9. package/dist/cjs/helpers/expandStyle.native.js +0 -5
  10. package/dist/cjs/helpers/expandStyle.native.js.map +2 -2
  11. package/dist/cjs/helpers/getSplitStyles.native.js +1 -15
  12. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  13. package/dist/cjs/helpers/getThemeCSSRules.js +4 -1
  14. package/dist/cjs/helpers/getThemeCSSRules.js.map +1 -1
  15. package/dist/cjs/helpers/insertStyleRule.js +4 -1
  16. package/dist/cjs/helpers/insertStyleRule.js.map +1 -1
  17. package/dist/cjs/helpers/insertStyleRule.native.js +3 -1
  18. package/dist/cjs/helpers/insertStyleRule.native.js.map +2 -2
  19. package/dist/cjs/helpers/registerCSSVariable.js +4 -1
  20. package/dist/cjs/helpers/registerCSSVariable.js.map +1 -1
  21. package/dist/cjs/helpers/registerCSSVariable.native.js +1 -1
  22. package/dist/cjs/helpers/registerCSSVariable.native.js.map +2 -2
  23. package/dist/cjs/hooks/useProps.js +29 -5
  24. package/dist/cjs/hooks/useProps.js.map +1 -1
  25. package/dist/cjs/hooks/useProps.native.js +39 -4
  26. package/dist/cjs/hooks/useProps.native.js.map +2 -2
  27. package/dist/cjs/index.js +1 -0
  28. package/dist/cjs/index.js.map +1 -1
  29. package/dist/cjs/index.native.js +2 -0
  30. package/dist/cjs/index.native.js.map +1 -1
  31. package/dist/esm/createComponent.js +156 -104
  32. package/dist/esm/createComponent.js.map +2 -2
  33. package/dist/esm/createComponent.mjs +193 -135
  34. package/dist/esm/createComponent.native.js +135 -103
  35. package/dist/esm/createComponent.native.js.map +2 -2
  36. package/dist/esm/createVariable.js +7 -3
  37. package/dist/esm/createVariable.js.map +1 -1
  38. package/dist/esm/createVariable.mjs +19 -16
  39. package/dist/esm/createVariable.native.js +7 -3
  40. package/dist/esm/createVariable.native.js.map +2 -2
  41. package/dist/esm/helpers/expandStyle.native.js +0 -5
  42. package/dist/esm/helpers/expandStyle.native.js.map +2 -2
  43. package/dist/esm/helpers/getSplitStyles.native.js +1 -15
  44. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  45. package/dist/esm/helpers/getThemeCSSRules.js +4 -1
  46. package/dist/esm/helpers/getThemeCSSRules.js.map +1 -1
  47. package/dist/esm/helpers/getThemeCSSRules.mjs +1 -1
  48. package/dist/esm/helpers/insertStyleRule.js +4 -1
  49. package/dist/esm/helpers/insertStyleRule.js.map +1 -1
  50. package/dist/esm/helpers/insertStyleRule.mjs +4 -3
  51. package/dist/esm/helpers/insertStyleRule.native.js +3 -1
  52. package/dist/esm/helpers/insertStyleRule.native.js.map +2 -2
  53. package/dist/esm/helpers/registerCSSVariable.js +4 -1
  54. package/dist/esm/helpers/registerCSSVariable.js.map +1 -1
  55. package/dist/esm/helpers/registerCSSVariable.mjs +1 -1
  56. package/dist/esm/helpers/registerCSSVariable.native.js +1 -1
  57. package/dist/esm/helpers/registerCSSVariable.native.js.map +2 -2
  58. package/dist/esm/hooks/useProps.js +31 -6
  59. package/dist/esm/hooks/useProps.js.map +1 -1
  60. package/dist/esm/hooks/useProps.mjs +32 -5
  61. package/dist/esm/hooks/useProps.native.js +41 -5
  62. package/dist/esm/hooks/useProps.native.js.map +2 -2
  63. package/dist/esm/index.js +1 -0
  64. package/dist/esm/index.js.map +1 -1
  65. package/dist/esm/index.mjs +1 -0
  66. package/dist/esm/index.native.js +1 -0
  67. package/dist/esm/index.native.js.map +1 -1
  68. package/package.json +13 -13
  69. package/reset.css +1 -0
  70. package/src/createComponent.tsx +301 -229
  71. package/src/createVariable.ts +11 -2
  72. package/src/helpers/getThemeCSSRules.ts +4 -1
  73. package/src/helpers/insertStyleRule.tsx +4 -1
  74. package/src/helpers/registerCSSVariable.ts +4 -3
  75. package/src/hooks/useProps.tsx +46 -14
  76. package/src/index.ts +1 -0
  77. package/types/createComponent.d.ts +31 -1
  78. package/types/createComponent.d.ts.map +1 -1
  79. package/types/createVariable.d.ts.map +1 -1
  80. package/types/helpers/getThemeCSSRules.d.ts.map +1 -1
  81. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  82. package/types/helpers/registerCSSVariable.d.ts.map +1 -1
  83. package/types/hooks/useProps.d.ts +7 -4
  84. package/types/hooks/useProps.d.ts.map +1 -1
  85. package/types/index.d.ts +1 -0
  86. package/types/index.d.ts.map +1 -1
@@ -45,7 +45,10 @@ export function getThemeCSSRules(props: {
45
45
  value = tokensValueToVariable.get(variable.val)!.variable
46
46
  }
47
47
  // Hash themeKey in case it has invalid chars too
48
- vars += `--${simpleHash(themeKey, 40)}:${value};`
48
+ vars += `--${process.env.TAMAGUI_CSS_VARIABLE_PREFIX || ''}${simpleHash(
49
+ themeKey,
50
+ 40
51
+ )}:${value};`
49
52
  }
50
53
 
51
54
  const isDarkBase = themeName === 'dark'
@@ -230,7 +230,10 @@ function addThemesFromCSS(cssStyleRule: CSSStyleRule, tokens?: TokensParsed) {
230
230
  const sepI = rule.indexOf(':')
231
231
  if (sepI === -1) continue
232
232
  const varIndex = rule.indexOf('--')
233
- const key = rule.slice(varIndex === -1 ? 0 : varIndex + 2, sepI)
233
+ let key = rule.slice(varIndex === -1 ? 0 : varIndex + 2, sepI)
234
+ if (process.env.TAMAGUI_CSS_VARIABLE_PREFIX) {
235
+ key = key.replace(process.env.TAMAGUI_CSS_VARIABLE_PREFIX, '')
236
+ }
234
237
  const val = rule.slice(sepI + 2)
235
238
  let value: string
236
239
  if (val.startsWith('var(')) {
@@ -7,9 +7,10 @@ export const registerCSSVariable = (v: Variable | VariableVal) => {
7
7
  }
8
8
 
9
9
  export const variableToCSS = (v: Variable, unitless = false) => {
10
- return `--${createCSSVariable(v.name, false)}:${
11
- !unitless && typeof v.val === 'number' ? `${v.val}px` : v.val
12
- }`
10
+ return `--${process.env.TAMAGUI_CSS_VARIABLE_PREFIX || ''}${createCSSVariable(
11
+ v.name,
12
+ false
13
+ )}:${!unitless && typeof v.val === 'number' ? `${v.val}px` : v.val}`
13
14
  }
14
15
 
15
16
  export const tokensValueToVariable = new Map<any, any>()
@@ -1,16 +1,12 @@
1
- import { useContext } from 'react'
1
+ import { useContext, useEffect } from 'react'
2
2
 
3
+ import { getConfig } from '../config'
3
4
  import { ComponentContext } from '../contexts/ComponentContext'
4
- import { defaultComponentStateMounted } from '../defaultComponentState'
5
+ import { subscribeToContextGroup, useComponentState } from '../createComponent'
5
6
  import { useSplitStyles } from '../helpers/getSplitStyles'
6
- import type {
7
- SplitStyleProps,
8
- StackStyle,
9
- StaticConfig,
10
- ThemeParsed,
11
- UseMediaState,
12
- } from '../types'
7
+ import type { SplitStyleProps, StaticConfig, ThemeParsed, UseMediaState } from '../types'
13
8
  import { Stack } from '../views/Stack'
9
+ import type { ViewProps, ViewStyle } from '../views/View'
14
10
  import { useMedia } from './useMedia'
15
11
  import { useThemeWithState } from './useTheme'
16
12
 
@@ -20,6 +16,7 @@ type UsePropsOptions = Pick<
20
16
  > & {
21
17
  disableExpandShorthands?: boolean
22
18
  forComponent?: { staticConfig: StaticConfig }
19
+ noClassNames?: boolean
23
20
  }
24
21
 
25
22
  export type PropsWithoutMediaStyles<A> = {
@@ -27,7 +24,8 @@ export type PropsWithoutMediaStyles<A> = {
27
24
  [Key in keyof A extends `$${string}` ? never : keyof A]?: A[Key]
28
25
  }
29
26
 
30
- type StyleLikeObject = (StackStyle & Record<string, any>) | Object
27
+ type PropsLikeObject = (ViewProps & Record<string, any>) | Object
28
+ type StyleLikeObject = (ViewStyle & Record<string, any>) | Object
31
29
 
32
30
  /**
33
31
  * Returns props and style as a single object, expanding and merging shorthands and media queries.
@@ -35,7 +33,7 @@ type StyleLikeObject = (StackStyle & Record<string, any>) | Object
35
33
  * Use sparingly, it will loop props and trigger re-render on all media queries you access.
36
34
  *
37
35
  * */
38
- export function useProps<A extends StyleLikeObject>(
36
+ export function useProps<A extends PropsLikeObject>(
39
37
  props: A,
40
38
  opts?: UsePropsOptions
41
39
  ): PropsWithoutMediaStyles<A> {
@@ -70,7 +68,7 @@ export function useStyle<A extends StyleLikeObject>(
70
68
  * Use sparingly, it will loop props and trigger re-render on all media queries you access.
71
69
  *
72
70
  * */
73
- export function usePropsAndStyle<A extends StyleLikeObject>(
71
+ export function usePropsAndStyle<A extends PropsLikeObject>(
74
72
  props: A,
75
73
  opts?: UsePropsOptions
76
74
  ): [PropsWithoutMediaStyles<A>, PropsWithoutMediaStyles<A>, ThemeParsed, UseMediaState] {
@@ -78,14 +76,21 @@ export function usePropsAndStyle<A extends StyleLikeObject>(
78
76
  const [themeState, theme] = useThemeWithState({
79
77
  componentName: staticConfig.componentName,
80
78
  })
81
- const componentContext = useContext(ComponentContext)
79
+ const componentContext = useContext(ComponentContext as any) as any
80
+ const { state, disabled, setStateShallow } = useComponentState(
81
+ props,
82
+ componentContext,
83
+ staticConfig,
84
+ getConfig()
85
+ )
86
+
82
87
  const media = useMedia()
83
88
  const splitStyles = useSplitStyles(
84
89
  props,
85
90
  staticConfig,
86
91
  theme,
87
92
  themeState.state?.name || '',
88
- defaultComponentStateMounted,
93
+ state,
89
94
  {
90
95
  isAnimated: false,
91
96
  mediaState: media,
@@ -98,5 +103,32 @@ export function usePropsAndStyle<A extends StyleLikeObject>(
98
103
  null,
99
104
  componentContext
100
105
  )
106
+
107
+ const { mediaGroups, pseudoGroups } = splitStyles
108
+
109
+ useEffect(() => {
110
+ if (disabled) {
111
+ return
112
+ }
113
+
114
+ if (state.unmounted) {
115
+ setStateShallow({ unmounted: false })
116
+ return
117
+ }
118
+
119
+ return subscribeToContextGroup({
120
+ disabled,
121
+ componentContext,
122
+ setStateShallow,
123
+ state,
124
+ mediaGroups,
125
+ pseudoGroups,
126
+ })
127
+ }, [
128
+ disabled,
129
+ pseudoGroups ? Object.keys([...pseudoGroups]).join('') : 0,
130
+ mediaGroups ? Object.keys([...mediaGroups]).join('') : 0,
131
+ ])
132
+
101
133
  return [splitStyles.viewProps, splitStyles.style || {}, theme, media] as any
102
134
  }
package/src/index.ts CHANGED
@@ -42,6 +42,7 @@ export * from './helpers/expandStyles'
42
42
  export * from './helpers/getExpandedShorthands'
43
43
  export * from './helpers/getSplitStyles'
44
44
  export * from './helpers/getStylesAtomic'
45
+ export * from './createComponent'
45
46
  export * from './helpers/getThemeCSSRules'
46
47
  export * from './helpers/getVariantExtras'
47
48
  export * from './helpers/isTamaguiComponent'
@@ -1,6 +1,27 @@
1
1
  import React from 'react';
2
- import type { DebugProp, SpaceDirection, SpaceValue, SpacerProps, SpacerStyleProps, StackNonStyleProps, StaticConfig, TamaguiComponent, TamaguiElement } from './types';
2
+ import type { ComponentContextI, DebugProp, DisposeFn, SpaceDirection, SpaceValue, SpacerProps, SpacerStyleProps, StackNonStyleProps, StackProps, StaticConfig, TamaguiComponent, TamaguiComponentStateRef, TamaguiElement, TamaguiInternalConfig, TextProps } from './types';
3
+ import type { TamaguiComponentState } from './interfaces/TamaguiComponentState';
3
4
  export declare const mouseUps: Set<Function>;
5
+ export declare const useComponentState: (props: StackProps | TextProps | Record<string, any>, { animationDriver, groups }: ComponentContextI, staticConfig: StaticConfig, config: TamaguiInternalConfig) => {
6
+ curStateRef: TamaguiComponentStateRef;
7
+ disabled: any;
8
+ groupName: string;
9
+ hasAnimationProp: boolean;
10
+ hasEnterStyle: boolean;
11
+ isAnimated: boolean;
12
+ isExiting: boolean;
13
+ isHydrated: boolean;
14
+ presence: import("./types").UsePresenceResult | null;
15
+ presenceState: import("./types").PresenceContextProps | null | undefined;
16
+ setState: React.Dispatch<React.SetStateAction<TamaguiComponentState>>;
17
+ setStateShallow: (next?: Partial<TamaguiComponentState> | undefined) => void;
18
+ shouldAvoidClasses: boolean;
19
+ state: TamaguiComponentState;
20
+ stateRef: React.MutableRefObject<TamaguiComponentStateRef>;
21
+ supportsCSSVars: boolean | undefined;
22
+ willBeAnimated: boolean;
23
+ willBeAnimatedClient: boolean;
24
+ };
4
25
  export declare function createComponent<ComponentPropTypes extends Record<string, any> = {}, Ref extends TamaguiElement = TamaguiElement, BaseProps = never, BaseStyles extends Object = never>(staticConfig: StaticConfig): TamaguiComponent<ComponentPropTypes, Ref, BaseProps, BaseStyles, {}>;
5
26
  export declare function Unspaced(props: {
6
27
  children?: any;
@@ -19,4 +40,13 @@ export type SpacedChildrenProps = {
19
40
  debug?: DebugProp;
20
41
  };
21
42
  export declare function spacedChildren(props: SpacedChildrenProps): React.ReactNode;
43
+ export declare const isDisabled: (props: any) => any;
44
+ export declare const subscribeToContextGroup: ({ disabled, setStateShallow, pseudoGroups, mediaGroups, componentContext, state, }: {
45
+ disabled?: boolean | undefined;
46
+ setStateShallow: (next?: Partial<TamaguiComponentState> | undefined) => void;
47
+ pseudoGroups?: Set<string> | undefined;
48
+ mediaGroups?: Set<string> | undefined;
49
+ componentContext: ComponentContextI;
50
+ state: TamaguiComponentState;
51
+ }) => DisposeFn | undefined;
22
52
  //# sourceMappingURL=createComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAIA,OAAO,KAYN,MAAM,OAAO,CAAA;AAuBd,OAAO,KAAK,EAEV,SAAS,EAMT,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAElB,YAAY,EAEZ,gBAAgB,EAEhB,cAAc,EAMf,MAAM,SAAS,CAAA;AAkBhB,eAAO,MAAM,QAAQ,eAAsB,CAAA;AA0E3C,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,wEAwsC3B;AAsBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,OAEjD;yBAFe,QAAQ;;;AAkBxB,eAAO,MAAM,MAAM,yFA0CjB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,cAAc,GAAG,OAAO,CAAA;IACpC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBAiGxD"}
1
+ {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAIA,OAAO,KAYN,MAAM,OAAO,CAAA;AAuBd,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,SAAS,EAKT,cAAc,EACd,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,YAAY,EAEZ,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,SAAS,EAIV,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAgB/E,eAAO,MAAM,QAAQ,eAAsB,CAAA;AAqD3C,eAAO,MAAM,iBAAiB,UACrB,UAAU,GAAG,SAAS,GAAG,OAAO,MAAM,EAAE,GAAG,CAAC,+BACtB,iBAAiB,gBAChC,YAAY,UAClB,qBAAqB;;;;;;;;;;;;;;;;;;;CAsL9B,CAAA;AAuBD,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACnD,GAAG,SAAS,cAAc,GAAG,cAAc,EAC3C,SAAS,GAAG,KAAK,EACjB,UAAU,SAAS,MAAM,GAAG,KAAK,EACjC,YAAY,EAAE,YAAY,wEAqhC3B;AAsBD,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,OAEjD;yBAFe,QAAQ;;;AAkBxB,eAAO,MAAM,MAAM,yFA0CjB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,cAAc,GAAG,OAAO,CAAA;IACpC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBAiGxD;AAwDD,eAAO,MAAM,UAAU,UAAW,GAAG,QAQpC,CAAA;AAED,eAAO,MAAM,uBAAuB;;6BAST,QAAQ,qBAAqB,CAAC,GAAG,SAAS,KAAK,IAAI;;;sBAG1D,iBAAiB;WAC5B,qBAAqB;2BAsC7B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"createVariable.d.ts","sourceRoot":"","sources":["../src/createVariable.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,QAAA,MAAM,MAAM,UAAU,CAAA;AAEtB,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,GAAG;IAC/B,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,CAAC,CAAA;IACN,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE/E,KAAK,UAAU,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,CAAA;AACpE,eAAO,MAAM,cAAc,4GAa1B,CAAA;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,UAAQ,UAQ7D;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,QAAQ,CAE3D;AAED,wBAAgB,WAAW,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,GAAG,GAAG,UAOlE;AAGD,eAAO,MAAM,sBAAsB,QAAS,OAAO,YAAqB,CAAA;AACxE,eAAO,MAAM,mBAAmB,eAAiB,CAAA;AAEjD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,OAMjD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,OAGhD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,OAGpD;AAGD,eAAO,MAAM,iBAAiB,aAAc,MAAM,8BAQjD,CAAA"}
1
+ {"version":3,"file":"createVariable.d.ts","sourceRoot":"","sources":["../src/createVariable.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,QAAA,MAAM,MAAM,UAAU,CAAA;AAEtB,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,GAAG;IAC/B,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,CAAC,CAAA;IACN,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAM/E,KAAK,UAAU,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,CAAA;AACpE,eAAO,MAAM,cAAc,4GAkB1B,CAAA;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,UAAQ,UAQ7D;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,QAAQ,CAE3D;AAED,wBAAgB,WAAW,CAAC,cAAc,EAAE,QAAQ,GAAG,MAAM,GAAG,GAAG,UAOlE;AAGD,eAAO,MAAM,sBAAsB,QAAS,OAAO,YAAqB,CAAA;AACxE,eAAO,MAAM,mBAAmB,eAAiB,CAAA;AAEjD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,OAMjD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,OAGhD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,OAGpD;AAGD,eAAO,MAAM,iBAAiB,aAAc,MAAM,8BAQjD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getThemeCSSRules.d.ts","sourceRoot":"","sources":["../../src/helpers/getThemeCSSRules.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG/D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,YA+JA"}
1
+ {"version":3,"file":"getThemeCSSRules.d.ts","sourceRoot":"","sources":["../../src/helpers/getThemeCSSRules.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG/D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,YAkKA"}
@@ -1 +1 @@
1
- {"version":3,"file":"insertStyleRule.d.ts","sourceRoot":"","sources":["../../src/helpers/insertStyleRule.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EAEb,YAAY,EACb,MAAM,UAAU,CAAA;AAQjB,eAAO,MAAM,kBAAkB,IAAK,CAAA;AAEpC,eAAO,MAAM,eAAe,8BAAqB,CAAA;AACjD,eAAO,MAAM,WAAW,gBAAgC,CAAA;AACxD,eAAO,MAAM,gBAAgB,UAA2B,CAAA;AA6BxD,wBAAgB,qBAAqB,SAkBpC;AAID,wBAAgB,aAAa,CAC3B,aAAa,UAAQ,EACrB,MAAM,CAAC,EAAE,YAAY,GACpB,aAAa,GAAG,SAAS,CA8B3B;AA4ND,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,uBAS9D;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,aAAa,QA+B5D;AAUD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,WAmBxD"}
1
+ {"version":3,"file":"insertStyleRule.d.ts","sourceRoot":"","sources":["../../src/helpers/insertStyleRule.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EAEb,YAAY,EACb,MAAM,UAAU,CAAA;AAQjB,eAAO,MAAM,kBAAkB,IAAK,CAAA;AAEpC,eAAO,MAAM,eAAe,8BAAqB,CAAA;AACjD,eAAO,MAAM,WAAW,gBAAgC,CAAA;AACxD,eAAO,MAAM,gBAAgB,UAA2B,CAAA;AA6BxD,wBAAgB,qBAAqB,SAkBpC;AAID,wBAAgB,aAAa,CAC3B,aAAa,UAAQ,EACrB,MAAM,CAAC,EAAE,YAAY,GACpB,aAAa,GAAG,SAAS,CA8B3B;AA+ND,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,uBAS9D;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,aAAa,QA+B5D;AAUD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,WAmBxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"registerCSSVariable.d.ts","sourceRoot":"","sources":["../../src/helpers/registerCSSVariable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,eAAO,MAAM,mBAAmB,MAAO,QAAQ,GAAG,WAAW,SAE5D,CAAA;AAED,eAAO,MAAM,aAAa,MAAO,QAAQ,+BAIxC,CAAA;AAED,eAAO,MAAM,qBAAqB,eAAsB,CAAA"}
1
+ {"version":3,"file":"registerCSSVariable.d.ts","sourceRoot":"","sources":["../../src/helpers/registerCSSVariable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,eAAO,MAAM,mBAAmB,MAAO,QAAQ,GAAG,WAAW,SAE5D,CAAA;AAED,eAAO,MAAM,aAAa,MAAO,QAAQ,+BAKxC,CAAA;AAED,eAAO,MAAM,qBAAqB,eAAsB,CAAA"}
@@ -1,21 +1,24 @@
1
- import type { SplitStyleProps, StackStyle, StaticConfig, ThemeParsed, UseMediaState } from '../types';
1
+ import type { SplitStyleProps, StaticConfig, ThemeParsed, UseMediaState } from '../types';
2
+ import type { ViewProps, ViewStyle } from '../views/View';
2
3
  type UsePropsOptions = Pick<SplitStyleProps, 'noExpand' | 'noNormalize' | 'noClassNames' | 'resolveValues'> & {
3
4
  disableExpandShorthands?: boolean;
4
5
  forComponent?: {
5
6
  staticConfig: StaticConfig;
6
7
  };
8
+ noClassNames?: boolean;
7
9
  };
8
10
  export type PropsWithoutMediaStyles<A> = {
9
11
  [Key in keyof A extends `$${string}` ? never : keyof A]?: A[Key];
10
12
  };
11
- type StyleLikeObject = (StackStyle & Record<string, any>) | Object;
13
+ type PropsLikeObject = (ViewProps & Record<string, any>) | Object;
14
+ type StyleLikeObject = (ViewStyle & Record<string, any>) | Object;
12
15
  /**
13
16
  * Returns props and style as a single object, expanding and merging shorthands and media queries.
14
17
  *
15
18
  * Use sparingly, it will loop props and trigger re-render on all media queries you access.
16
19
  *
17
20
  * */
18
- export declare function useProps<A extends StyleLikeObject>(props: A, opts?: UsePropsOptions): PropsWithoutMediaStyles<A>;
21
+ export declare function useProps<A extends PropsLikeObject>(props: A, opts?: UsePropsOptions): PropsWithoutMediaStyles<A>;
19
22
  /**
20
23
  * Returns only style values fully resolved and flattened with merged media queries and shorthands with all theme and token values resolved.
21
24
  *
@@ -29,6 +32,6 @@ export declare function useStyle<A extends StyleLikeObject>(props: A, opts?: Use
29
32
  * Use sparingly, it will loop props and trigger re-render on all media queries you access.
30
33
  *
31
34
  * */
32
- export declare function usePropsAndStyle<A extends StyleLikeObject>(props: A, opts?: UsePropsOptions): [PropsWithoutMediaStyles<A>, PropsWithoutMediaStyles<A>, ThemeParsed, UseMediaState];
35
+ export declare function usePropsAndStyle<A extends PropsLikeObject>(props: A, opts?: UsePropsOptions): [PropsWithoutMediaStyles<A>, PropsWithoutMediaStyles<A>, ThemeParsed, UseMediaState];
33
36
  export {};
34
37
  //# sourceMappingURL=useProps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useProps.d.ts","sourceRoot":"","sources":["../../src/hooks/useProps.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACd,MAAM,UAAU,CAAA;AAKjB,KAAK,eAAe,GAAG,IAAI,CACzB,eAAe,EACf,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,eAAe,CAC9D,GAAG;IACF,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,YAAY,CAAC,EAAE;QAAE,YAAY,EAAE,YAAY,CAAA;KAAE,CAAA;CAC9C,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,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAA;AAElE;;;;;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,CA0BtF"}
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;AAIzD,KAAK,eAAe,GAAG,IAAI,CACzB,eAAe,EACf,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,eAAe,CAC9D,GAAG;IACF,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,YAAY,CAAC,EAAE;QAAE,YAAY,EAAE,YAAY,CAAA;KAAE,CAAA;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,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,CA4DtF"}
package/types/index.d.ts CHANGED
@@ -28,6 +28,7 @@ export * from './helpers/expandStyles';
28
28
  export * from './helpers/getExpandedShorthands';
29
29
  export * from './helpers/getSplitStyles';
30
30
  export * from './helpers/getStylesAtomic';
31
+ export * from './createComponent';
31
32
  export * from './helpers/getThemeCSSRules';
32
33
  export * from './helpers/getVariantExtras';
33
34
  export * from './helpers/isTamaguiComponent';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA;AAElC,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,mBAAmB,SAAS,CAAA;AAC5B,mBAAmB,+BAA+B,CAAA;AAClD,mBAAmB,oCAAoC,CAAA;AACvD,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,4CAA4C,CAAA;AAE/D,cAAc,qBAAqB,CAAA;AAEnC,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,aAAa,GACd,MAAM,UAAU,CAAA;AAEjB,cAAc,uBAAuB,CAAA;AAErC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wBAAwB,CAAA;AACtC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,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,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAE5C,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AAExC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AAErC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAElC,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA;AAElC,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,mBAAmB,SAAS,CAAA;AAC5B,mBAAmB,+BAA+B,CAAA;AAClD,mBAAmB,oCAAoC,CAAA;AACvD,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,4CAA4C,CAAA;AAE/D,cAAc,qBAAqB,CAAA;AAEnC,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,aAAa,GACd,MAAM,UAAU,CAAA;AAEjB,cAAc,uBAAuB,CAAA;AAErC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wBAAwB,CAAA;AACtC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,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,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAE5C,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AAExC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AAErC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAElC,cAAc,cAAc,CAAA"}