@tamagui/core 1.0.6 → 1.0.8

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 (192) hide show
  1. package/dist/cjs/createComponent.js.map +2 -2
  2. package/dist/cjs/helpers/ThemeManager.js +4 -24
  3. package/dist/cjs/helpers/ThemeManager.js.map +2 -2
  4. package/dist/cjs/helpers/createPropMapper.js +11 -16
  5. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  6. package/dist/cjs/helpers/expandStyles.js +10 -3
  7. package/dist/cjs/helpers/expandStyles.js.map +3 -3
  8. package/dist/cjs/helpers/getSplitStyles.js +8 -0
  9. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  10. package/dist/cjs/helpers/normalizeColor.js +16 -37
  11. package/dist/cjs/helpers/normalizeColor.js.map +3 -3
  12. package/dist/cjs/helpers/normalizeValueWithProperty.js +1 -1
  13. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +2 -2
  14. package/dist/esm/createComponent.js.map +2 -2
  15. package/dist/esm/helpers/ThemeManager.js +4 -5
  16. package/dist/esm/helpers/ThemeManager.js.map +2 -2
  17. package/dist/esm/helpers/createPropMapper.js +11 -16
  18. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  19. package/dist/esm/helpers/expandStyles.js +5 -4
  20. package/dist/esm/helpers/expandStyles.js.map +2 -2
  21. package/dist/esm/helpers/getSplitStyles.js +8 -0
  22. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  23. package/dist/esm/helpers/normalizeColor.js +14 -35
  24. package/dist/esm/helpers/normalizeColor.js.map +3 -3
  25. package/dist/esm/helpers/normalizeValueWithProperty.js +1 -1
  26. package/dist/esm/helpers/normalizeValueWithProperty.js.map +2 -2
  27. package/package.json +11 -11
  28. package/src/createComponent.tsx +1 -0
  29. package/src/helpers/ThemeManager.tsx +4 -4
  30. package/src/helpers/createPropMapper.ts +12 -16
  31. package/src/helpers/expandStyles.ts +5 -4
  32. package/src/helpers/getSplitStyles.tsx +10 -0
  33. package/src/helpers/normalizeColor.ts +14 -38
  34. package/src/helpers/normalizeValueWithProperty.ts +1 -1
  35. package/types/helpers/ThemeManager.d.ts +1 -1
  36. package/types/helpers/normalizeColor.d.ts +2 -2
  37. package/dist/cjs/Pressability.js +0 -32
  38. package/dist/cjs/Pressability.js.map +0 -7
  39. package/dist/cjs/Pressability.native.js +0 -32
  40. package/dist/cjs/Pressability.native.js.map +0 -7
  41. package/dist/cjs/ThemeContext.js +0 -30
  42. package/dist/cjs/ThemeContext.js.map +0 -7
  43. package/dist/cjs/ThemeManager.js +0 -211
  44. package/dist/cjs/ThemeManager.js.map +0 -7
  45. package/dist/cjs/conf.js +0 -70
  46. package/dist/cjs/conf.js.map +0 -7
  47. package/dist/cjs/constants/platform.js +0 -59
  48. package/dist/cjs/constants/platform.js.map +0 -7
  49. package/dist/cjs/constants/platform.native.js +0 -62
  50. package/dist/cjs/constants/platform.native.js.map +0 -7
  51. package/dist/cjs/constants/rnw.native.js +0 -28
  52. package/dist/cjs/constants/rnw.native.js.map +0 -7
  53. package/dist/cjs/contexts/ButtonInsideButtonContext.js +0 -30
  54. package/dist/cjs/contexts/ButtonInsideButtonContext.js.map +0 -7
  55. package/dist/cjs/contexts/ThemeContext.js +0 -30
  56. package/dist/cjs/contexts/ThemeContext.js.map +0 -7
  57. package/dist/cjs/defaultComponentState.js +0 -2
  58. package/dist/cjs/defaultComponentState.js.map +0 -7
  59. package/dist/cjs/helpers/Unwrap.js +0 -29
  60. package/dist/cjs/helpers/Unwrap.js.map +0 -7
  61. package/dist/cjs/helpers/areEqualSets.js +0 -38
  62. package/dist/cjs/helpers/areEqualSets.js.map +0 -7
  63. package/dist/cjs/helpers/assignNativePropsToWeb.js +0 -188
  64. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +0 -7
  65. package/dist/cjs/helpers/assignNativePropsToWeb.native.js +0 -30
  66. package/dist/cjs/helpers/assignNativePropsToWeb.native.js.map +0 -7
  67. package/dist/cjs/helpers/cache.js +0 -39
  68. package/dist/cjs/helpers/cache.js.map +0 -7
  69. package/dist/cjs/helpers/calc.js +0 -71
  70. package/dist/cjs/helpers/calc.js.map +0 -7
  71. package/dist/cjs/helpers/createShallowUpdate.js +0 -41
  72. package/dist/cjs/helpers/createShallowUpdate.js.map +0 -7
  73. package/dist/cjs/helpers/createTamaguiProvider.js +0 -65
  74. package/dist/cjs/helpers/createTamaguiProvider.js.map +0 -7
  75. package/dist/cjs/helpers/cssHash.js +0 -51
  76. package/dist/cjs/helpers/cssHash.js.map +0 -7
  77. package/dist/cjs/helpers/expandStyle.test.js +0 -10
  78. package/dist/cjs/helpers/expandStyle.test.js.map +0 -7
  79. package/dist/cjs/helpers/getFont.js +0 -62
  80. package/dist/cjs/helpers/getFont.js.map +0 -7
  81. package/dist/cjs/helpers/getSize.js +0 -48
  82. package/dist/cjs/helpers/getSize.js.map +0 -7
  83. package/dist/cjs/helpers/getStackSize.js +0 -46
  84. package/dist/cjs/helpers/getStackSize.js.map +0 -7
  85. package/dist/cjs/helpers/nativeGestureHandler.native.js +0 -19
  86. package/dist/cjs/helpers/nativeGestureHandler.native.js.map +0 -7
  87. package/dist/cjs/helpers/startTransition.js +0 -33
  88. package/dist/cjs/helpers/startTransition.js.map +0 -7
  89. package/dist/cjs/helpers/validate.js +0 -2
  90. package/dist/cjs/helpers/validate.js.map +0 -7
  91. package/dist/cjs/helpers/wrapThemeManagerContext.js +0 -37
  92. package/dist/cjs/helpers/wrapThemeManagerContext.js.map +0 -7
  93. package/dist/cjs/hooks/useConstant.js +0 -36
  94. package/dist/cjs/hooks/useConstant.js.map +0 -7
  95. package/dist/cjs/hooks/useFeatures.js +0 -201
  96. package/dist/cjs/hooks/useFeatures.js.map +0 -7
  97. package/dist/cjs/hooks/useIsMounted.js +0 -40
  98. package/dist/cjs/hooks/useIsMounted.js.map +0 -7
  99. package/dist/cjs/hooks/useIsSSR.js +0 -42
  100. package/dist/cjs/hooks/useIsSSR.js.map +0 -7
  101. package/dist/cjs/hooks/usePressable.js +0 -36
  102. package/dist/cjs/hooks/usePressable.js.map +0 -7
  103. package/dist/cjs/hooks/usePrevious.js +0 -1
  104. package/dist/cjs/hooks/usePrevious.js.map +0 -7
  105. package/dist/cjs/hooks/useUnmountEffect.js +0 -32
  106. package/dist/cjs/hooks/useUnmountEffect.js.map +0 -7
  107. package/dist/cjs/injectStyles.js +0 -40
  108. package/dist/cjs/injectStyles.js.map +0 -7
  109. package/dist/cjs/views/TextAncestorContext.js +0 -44
  110. package/dist/cjs/views/TextAncestorContext.js.map +0 -7
  111. package/dist/cjs/views/ThemeInverse.js +0 -55
  112. package/dist/cjs/views/ThemeInverse.js.map +0 -7
  113. package/dist/cjs/views/ThemeReset.js +0 -64
  114. package/dist/cjs/views/ThemeReset.js.map +0 -7
  115. package/dist/esm/Pressability.js +0 -7
  116. package/dist/esm/Pressability.js.map +0 -7
  117. package/dist/esm/Pressability.native.js +0 -7
  118. package/dist/esm/Pressability.native.js.map +0 -7
  119. package/dist/esm/ThemeContext.js +0 -6
  120. package/dist/esm/ThemeContext.js.map +0 -7
  121. package/dist/esm/ThemeManager.js +0 -185
  122. package/dist/esm/ThemeManager.js.map +0 -7
  123. package/dist/esm/conf.js +0 -39
  124. package/dist/esm/conf.js.map +0 -7
  125. package/dist/esm/constants/platform.js +0 -26
  126. package/dist/esm/constants/platform.js.map +0 -7
  127. package/dist/esm/constants/platform.native.js +0 -28
  128. package/dist/esm/constants/platform.native.js.map +0 -7
  129. package/dist/esm/constants/rnw.native.js +0 -5
  130. package/dist/esm/constants/rnw.native.js.map +0 -7
  131. package/dist/esm/contexts/ButtonInsideButtonContext.js +0 -6
  132. package/dist/esm/contexts/ButtonInsideButtonContext.js.map +0 -7
  133. package/dist/esm/contexts/ThemeContext.js +0 -6
  134. package/dist/esm/contexts/ThemeContext.js.map +0 -7
  135. package/dist/esm/defaultComponentState.js +0 -1
  136. package/dist/esm/defaultComponentState.js.map +0 -7
  137. package/dist/esm/helpers/Unwrap.js +0 -5
  138. package/dist/esm/helpers/Unwrap.js.map +0 -7
  139. package/dist/esm/helpers/areEqualSets.js +0 -14
  140. package/dist/esm/helpers/areEqualSets.js.map +0 -7
  141. package/dist/esm/helpers/assignNativePropsToWeb.js +0 -164
  142. package/dist/esm/helpers/assignNativePropsToWeb.js.map +0 -7
  143. package/dist/esm/helpers/assignNativePropsToWeb.native.js +0 -6
  144. package/dist/esm/helpers/assignNativePropsToWeb.native.js.map +0 -7
  145. package/dist/esm/helpers/cache.js +0 -15
  146. package/dist/esm/helpers/cache.js.map +0 -7
  147. package/dist/esm/helpers/calc.js +0 -47
  148. package/dist/esm/helpers/calc.js.map +0 -7
  149. package/dist/esm/helpers/createShallowUpdate.js +0 -17
  150. package/dist/esm/helpers/createShallowUpdate.js.map +0 -7
  151. package/dist/esm/helpers/createTamaguiProvider.js +0 -38
  152. package/dist/esm/helpers/createTamaguiProvider.js.map +0 -7
  153. package/dist/esm/helpers/cssHash.js +0 -27
  154. package/dist/esm/helpers/cssHash.js.map +0 -7
  155. package/dist/esm/helpers/expandStyle.test.js +0 -9
  156. package/dist/esm/helpers/expandStyle.test.js.map +0 -7
  157. package/dist/esm/helpers/getFont.js +0 -38
  158. package/dist/esm/helpers/getFont.js.map +0 -7
  159. package/dist/esm/helpers/getSize.js +0 -23
  160. package/dist/esm/helpers/getSize.js.map +0 -7
  161. package/dist/esm/helpers/getStackSize.js +0 -22
  162. package/dist/esm/helpers/getStackSize.js.map +0 -7
  163. package/dist/esm/helpers/nativeGestureHandler.native.js +0 -2
  164. package/dist/esm/helpers/nativeGestureHandler.native.js.map +0 -7
  165. package/dist/esm/helpers/startTransition.js +0 -6
  166. package/dist/esm/helpers/startTransition.js.map +0 -7
  167. package/dist/esm/helpers/validate.js +0 -1
  168. package/dist/esm/helpers/validate.js.map +0 -7
  169. package/dist/esm/helpers/wrapThemeManagerContext.js +0 -11
  170. package/dist/esm/helpers/wrapThemeManagerContext.js.map +0 -7
  171. package/dist/esm/hooks/useConstant.js +0 -12
  172. package/dist/esm/hooks/useConstant.js.map +0 -7
  173. package/dist/esm/hooks/useFeatures.js +0 -174
  174. package/dist/esm/hooks/useFeatures.js.map +0 -7
  175. package/dist/esm/hooks/useIsMounted.js +0 -16
  176. package/dist/esm/hooks/useIsMounted.js.map +0 -7
  177. package/dist/esm/hooks/useIsSSR.js +0 -18
  178. package/dist/esm/hooks/useIsSSR.js.map +0 -7
  179. package/dist/esm/hooks/usePressable.js +0 -12
  180. package/dist/esm/hooks/usePressable.js.map +0 -7
  181. package/dist/esm/hooks/usePrevious.js +0 -1
  182. package/dist/esm/hooks/usePrevious.js.map +0 -7
  183. package/dist/esm/hooks/useUnmountEffect.js +0 -8
  184. package/dist/esm/hooks/useUnmountEffect.js.map +0 -7
  185. package/dist/esm/injectStyles.js +0 -16
  186. package/dist/esm/injectStyles.js.map +0 -7
  187. package/dist/esm/views/TextAncestorContext.js +0 -15
  188. package/dist/esm/views/TextAncestorContext.js.map +0 -7
  189. package/dist/esm/views/ThemeInverse.js +0 -27
  190. package/dist/esm/views/ThemeInverse.js.map +0 -7
  191. package/dist/esm/views/ThemeReset.js +0 -37
  192. package/dist/esm/views/ThemeReset.js.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/expandStyles.ts"],
4
- "sourcesContent": ["import { isWeb } from '@tamagui/constants'\n\nimport { getConfig } from '../config'\nimport { expandStyle } from './expandStyle'\nimport { colorToRGBA, normalizeColor } from './normalizeColor'\nimport { normalizeValueWithProperty } from './normalizeValueWithProperty.js'\nimport { pseudoDescriptors } from './pseudoDescriptors'\n\nlet shorthands: Record<string, string> | null = null\nexport const defaultOffset = { height: 0, width: 0 }\n\n/**\n * This is what you want to run before Object.assign() a style onto another.\n * It does the following:\n * 1. Turns user shorthands into longhands, ie px = paddingHorizontal\n * 2. Normalizes various inconsistent styles to be more consistent\n * 3. Expands react-native shorthands, ie paddingHorizontal => paddingLeft, paddingRight\n */\n\nexport function expandStyles(style: Record<string, any>, config = getConfig()) {\n const res: Record<string, any> = {}\n\n for (let key in style) {\n shorthands = shorthands || (config ? config.shorthands : null)\n if (shorthands) {\n key = shorthands[key] || key\n }\n if (key in pseudoDescriptors) {\n res[key] = expandStyles(style[key])\n continue\n }\n const val = normalizeValueWithProperty(style[key], key)\n // expand react-native shorthands\n const out = expandStyle(key, val)\n if (out) {\n Object.assign(res, Object.fromEntries(out))\n } else {\n res[key] = val\n }\n }\n\n fixStyles(res)\n\n return res\n}\n\nexport function fixStyles(style: Record<string, any>) {\n if (style.shadowRadius) {\n Object.assign(style, normalizeShadow(style))\n }\n\n // ensure border style set by default to solid\n for (const key in borderDefaults) {\n if (style[key] && !style[borderDefaults[key]]) {\n style[borderDefaults[key]] = 'solid'\n }\n }\n}\n\nconst borderDefaults = {\n borderWidth: 'borderStyle',\n borderBottomWidth: 'borderBottomStyle',\n borderTopWidth: 'borderTopStyle',\n borderLeftWidth: 'borderLeftStyle',\n borderRightWidth: 'borderRightStyle',\n}\n\nfunction normalizeShadow({\n shadowColor,\n shadowOffset,\n shadowOpacity,\n shadowRadius,\n}: Record<string, any>) {\n const { height, width } = shadowOffset || defaultOffset\n const colorStr = String(shadowColor || 'black')\n return {\n shadowOffset: {\n width: normalizeValueWithProperty(width || 0),\n height: normalizeValueWithProperty(height || 0),\n },\n shadowRadius: normalizeValueWithProperty(shadowRadius || 0),\n ...(isWeb && {\n shadowColor: normalizeColor(colorStr, shadowOpacity),\n }),\n ...(process.env.TAMAGUI_TARGET === 'native' &&\n (() => {\n // on native fix bug - shadows behave better if turned into non-alpha rgb() + shadowOpacity\n const rgba = colorToRGBA(colorStr)\n if (!rgba) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No rgba form', colorStr)\n }\n return {\n shadowColor,\n shadowOpacity,\n }\n }\n const [r, g, b, a] = rgba\n return {\n shadowColor: `rgb(${r},${g},${b})`,\n shadowOpacity: shadowOpacity ?? a,\n }\n })()),\n }\n}\n"],
5
- "mappings": "AAAA,SAAS,aAAa;AAEtB,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kCAAkC;AAC3C,SAAS,yBAAyB;AAElC,IAAI,aAA4C;AACzC,MAAM,gBAAgB,EAAE,QAAQ,GAAG,OAAO,EAAE;AAU5C,SAAS,aAAa,OAA4B,SAAS,UAAU,GAAG;AAC7E,QAAM,MAA2B,CAAC;AAElC,WAAS,OAAO,OAAO;AACrB,iBAAa,eAAe,SAAS,OAAO,aAAa;AACzD,QAAI,YAAY;AACd,YAAM,WAAW,QAAQ;AAAA,IAC3B;AACA,QAAI,OAAO,mBAAmB;AAC5B,UAAI,OAAO,aAAa,MAAM,IAAI;AAClC;AAAA,IACF;AACA,UAAM,MAAM,2BAA2B,MAAM,MAAM,GAAG;AAEtD,UAAM,MAAM,YAAY,KAAK,GAAG;AAChC,QAAI,KAAK;AACP,aAAO,OAAO,KAAK,OAAO,YAAY,GAAG,CAAC;AAAA,IAC5C,OAAO;AACL,UAAI,OAAO;AAAA,IACb;AAAA,EACF;AAEA,YAAU,GAAG;AAEb,SAAO;AACT;AAEO,SAAS,UAAU,OAA4B;AACpD,MAAI,MAAM,cAAc;AACtB,WAAO,OAAO,OAAO,gBAAgB,KAAK,CAAC;AAAA,EAC7C;AAGA,aAAW,OAAO,gBAAgB;AAChC,QAAI,MAAM,QAAQ,CAAC,MAAM,eAAe,OAAO;AAC7C,YAAM,eAAe,QAAQ;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,MAAM,iBAAiB;AAAA,EACrB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,kBAAkB;AACpB;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,EAAE,QAAQ,MAAM,IAAI,gBAAgB;AAC1C,QAAM,WAAW,OAAO,eAAe,OAAO;AAC9C,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,OAAO,2BAA2B,SAAS,CAAC;AAAA,MAC5C,QAAQ,2BAA2B,UAAU,CAAC;AAAA,IAChD;AAAA,IACA,cAAc,2BAA2B,gBAAgB,CAAC;AAAA,IAC1D,GAAI,SAAS;AAAA,MACX,aAAa,eAAe,UAAU,aAAa;AAAA,IACrD;AAAA,IACA,GAAI,QAAQ,IAAI,mBAAmB,aAChC,MAAM;AAEL,YAAM,OAAO,YAAY,QAAQ;AACjC,UAAI,CAAC,MAAM;AACT,YAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,kBAAQ,KAAK,gBAAgB,QAAQ;AAAA,QACvC;AACA,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,YAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI;AACrB,aAAO;AAAA,QACL,aAAa,OAAO,KAAK,KAAK;AAAA,QAC9B,eAAe,iBAAiB;AAAA,MAClC;AAAA,IACF,GAAG;AAAA,EACP;AACF;",
4
+ "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport normalizeCSSColor from '@tamagui/normalize-css-color'\n\nimport { getConfig } from '../config'\nimport { expandStyle } from './expandStyle'\nimport { normalizeColor, rgba } from './normalizeColor'\nimport { normalizeValueWithProperty } from './normalizeValueWithProperty.js'\nimport { pseudoDescriptors } from './pseudoDescriptors'\n\nlet shorthands: Record<string, string> | null = null\nexport const defaultOffset = { height: 0, width: 0 }\n\n/**\n * This is what you want to run before Object.assign() a style onto another.\n * It does the following:\n * 1. Turns user shorthands into longhands, ie px = paddingHorizontal\n * 2. Normalizes various inconsistent styles to be more consistent\n * 3. Expands react-native shorthands, ie paddingHorizontal => paddingLeft, paddingRight\n */\n\nexport function expandStyles(style: Record<string, any>, config = getConfig()) {\n const res: Record<string, any> = {}\n\n for (let key in style) {\n shorthands = shorthands || (config ? config.shorthands : null)\n if (shorthands) {\n key = shorthands[key] || key\n }\n if (key in pseudoDescriptors) {\n res[key] = expandStyles(style[key])\n continue\n }\n const val = normalizeValueWithProperty(style[key], key)\n // expand react-native shorthands\n const out = expandStyle(key, val)\n if (out) {\n Object.assign(res, Object.fromEntries(out))\n } else {\n res[key] = val\n }\n }\n\n fixStyles(res)\n\n return res\n}\n\nexport function fixStyles(style: Record<string, any>) {\n if (style.shadowRadius) {\n Object.assign(style, normalizeShadow(style))\n }\n\n // ensure border style set by default to solid\n for (const key in borderDefaults) {\n if (style[key] && !style[borderDefaults[key]]) {\n style[borderDefaults[key]] = 'solid'\n }\n }\n}\n\nconst borderDefaults = {\n borderWidth: 'borderStyle',\n borderBottomWidth: 'borderBottomStyle',\n borderTopWidth: 'borderTopStyle',\n borderLeftWidth: 'borderLeftStyle',\n borderRightWidth: 'borderRightStyle',\n}\n\nfunction normalizeShadow({\n shadowColor,\n shadowOffset,\n shadowOpacity,\n shadowRadius,\n}: Record<string, any>) {\n const { height, width } = shadowOffset || defaultOffset\n const colorStr = String(shadowColor || 'black')\n return {\n shadowOffset: {\n width: normalizeValueWithProperty(width || 0),\n height: normalizeValueWithProperty(height || 0),\n },\n shadowRadius: normalizeValueWithProperty(shadowRadius || 0),\n ...(isWeb && {\n shadowColor: normalizeColor(colorStr, shadowOpacity),\n }),\n ...(process.env.TAMAGUI_TARGET === 'native' &&\n (() => {\n // on native fix bug - shadows behave better if turned into non-alpha rgb() + shadowOpacity\n const val = normalizeCSSColor(colorStr)\n if (!val) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No rgba form', colorStr)\n }\n return {\n shadowColor,\n shadowOpacity,\n }\n }\n const { r, g, b, a } = rgba(val)\n return {\n shadowColor: `rgb(${r},${g},${b})`,\n shadowOpacity: shadowOpacity ?? a,\n }\n })()),\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,aAAa;AACtB,OAAO,uBAAuB;AAE9B,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB,YAAY;AACrC,SAAS,kCAAkC;AAC3C,SAAS,yBAAyB;AAElC,IAAI,aAA4C;AACzC,MAAM,gBAAgB,EAAE,QAAQ,GAAG,OAAO,EAAE;AAU5C,SAAS,aAAa,OAA4B,SAAS,UAAU,GAAG;AAC7E,QAAM,MAA2B,CAAC;AAElC,WAAS,OAAO,OAAO;AACrB,iBAAa,eAAe,SAAS,OAAO,aAAa;AACzD,QAAI,YAAY;AACd,YAAM,WAAW,QAAQ;AAAA,IAC3B;AACA,QAAI,OAAO,mBAAmB;AAC5B,UAAI,OAAO,aAAa,MAAM,IAAI;AAClC;AAAA,IACF;AACA,UAAM,MAAM,2BAA2B,MAAM,MAAM,GAAG;AAEtD,UAAM,MAAM,YAAY,KAAK,GAAG;AAChC,QAAI,KAAK;AACP,aAAO,OAAO,KAAK,OAAO,YAAY,GAAG,CAAC;AAAA,IAC5C,OAAO;AACL,UAAI,OAAO;AAAA,IACb;AAAA,EACF;AAEA,YAAU,GAAG;AAEb,SAAO;AACT;AAEO,SAAS,UAAU,OAA4B;AACpD,MAAI,MAAM,cAAc;AACtB,WAAO,OAAO,OAAO,gBAAgB,KAAK,CAAC;AAAA,EAC7C;AAGA,aAAW,OAAO,gBAAgB;AAChC,QAAI,MAAM,QAAQ,CAAC,MAAM,eAAe,OAAO;AAC7C,YAAM,eAAe,QAAQ;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,MAAM,iBAAiB;AAAA,EACrB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,kBAAkB;AACpB;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,EAAE,QAAQ,MAAM,IAAI,gBAAgB;AAC1C,QAAM,WAAW,OAAO,eAAe,OAAO;AAC9C,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,OAAO,2BAA2B,SAAS,CAAC;AAAA,MAC5C,QAAQ,2BAA2B,UAAU,CAAC;AAAA,IAChD;AAAA,IACA,cAAc,2BAA2B,gBAAgB,CAAC;AAAA,IAC1D,GAAI,SAAS;AAAA,MACX,aAAa,eAAe,UAAU,aAAa;AAAA,IACrD;AAAA,IACA,GAAI,QAAQ,IAAI,mBAAmB,aAChC,MAAM;AAEL,YAAM,MAAM,kBAAkB,QAAQ;AACtC,UAAI,CAAC,KAAK;AACR,YAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,kBAAQ,KAAK,gBAAgB,QAAQ;AAAA,QACvC;AACA,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,YAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,GAAG;AAC/B,aAAO;AAAA,QACL,aAAa,OAAO,KAAK,KAAK;AAAA,QAC9B,eAAe,iBAAiB;AAAA,MAClC;AAAA,IACF,GAAG;AAAA,EACP;AACF;",
6
6
  "names": []
7
7
  }
@@ -234,6 +234,12 @@ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, la
234
234
  continue;
235
235
  }
236
236
  }
237
+ if (keyInit === "dataSet") {
238
+ for (const key in valInit) {
239
+ viewProps[`data-${hyphenate(key)}`] = valInit[key];
240
+ }
241
+ continue;
242
+ }
237
243
  if (keyInit === "style" || keyInit.startsWith("_style")) {
238
244
  if (!valInit)
239
245
  continue;
@@ -792,6 +798,8 @@ const animatableDefaults = {
792
798
  rotateY: "0deg",
793
799
  rotateX: "0deg"
794
800
  };
801
+ const lowercaseHyphenate = (match) => `-${match.toLowerCase()}`;
802
+ const hyphenate = (str) => str.replace(/[A-Z]/g, lowercaseHyphenate);
795
803
  export {
796
804
  PROP_SPLIT,
797
805
  getSplitStyles,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/getSplitStyles.tsx"],
4
- "sourcesContent": ["import {\n isClient,\n isRSC,\n isServer,\n isWeb,\n useIsomorphicLayoutEffect,\n} from '@tamagui/constants'\nimport {\n stylePropsText,\n stylePropsTransform,\n validPseudoKeys,\n validStyles,\n validStylesOnBaseProps,\n} from '@tamagui/helpers'\nimport { useInsertionEffect } from 'react'\nimport type { ViewStyle } from 'react-native'\n\nimport { getConfig } from '../config'\nimport { isDevTools } from '../constants/isDevTools'\nimport {\n getMediaImportanceIfMoreImportant,\n mediaState as globalMediaState,\n mediaKeysWithAndWithout$,\n mediaQueryConfig,\n mergeMediaByImportance,\n} from '../hooks/useMedia'\nimport type {\n DebugProp,\n MediaQueryKey,\n PseudoPropKeys,\n PseudoStyles,\n SpaceTokens,\n SplitStyleState,\n StackProps,\n StaticConfigParsed,\n TamaguiInternalConfig,\n ThemeParsed,\n} from '../types'\nimport { FontLanguageProps, LanguageContextType } from '../views/FontLanguage.types'\nimport { createMediaStyle } from './createMediaStyle'\nimport { getPropMappedFontFamily } from './createPropMapper'\nimport { fixStyles } from './expandStyles'\nimport { getAtomicStyle, getStylesAtomic, styleToCSS } from './getStylesAtomic'\nimport {\n PartialStyleObject,\n RulesToInsert,\n insertStyleRules,\n insertedTransforms,\n scanAllSheets,\n shouldInsertStyleRules,\n updateRules,\n} from './insertStyleRule'\nimport { FlatTransforms, mergeTransform, mergeTransforms } from './mergeTransform'\nimport {\n normalizeValueWithProperty,\n reverseMapClassNameToValue,\n} from './normalizeValueWithProperty.js'\nimport { pseudoDescriptors } from './pseudoDescriptors'\n\ntype GetStyleResult = {\n pseudos?: PseudoStyles\n style: ViewStyle\n classNames: ClassNamesObject\n rulesToInsert: RulesToInsert\n viewProps: StackProps & Record<string, any>\n fontFamily: string | undefined\n space?: any // SpaceTokens?\n hasMedia: boolean | 'space'\n}\n\ntype GetStyleState = {\n style: ViewStyle\n usedKeys: Record<string, number>\n classNames: ClassNamesObject\n flatTransforms: FlatTransforms\n staticConfig: StaticConfigParsed\n theme: ThemeParsed\n props: Record<string, any>\n viewProps: Record<string, any>\n state: SplitStyleState\n conf: TamaguiInternalConfig\n languageContext?: FontLanguageProps\n avoidDefaultProps?: boolean\n avoidMergeTransform?: boolean\n}\n\nexport type SplitStyles = ReturnType<typeof getSplitStyles>\nexport type ClassNamesObject = Record<string, string>\nexport type SplitStyleResult = ReturnType<typeof getSplitStyles>\n\nconst skipProps = {\n animation: true,\n space: true,\n animateOnly: true,\n debug: true,\n componentName: true,\n role: true,\n tag: true,\n}\nif (process.env.NODE_ENV === 'test') {\n skipProps['data-test-renders'] = true\n}\n\nconst IS_STATIC = process.env.IS_STATIC === 'is_static'\n\n// native only skips\nif (process.env.TAMAGUI_TARGET === 'native') {\n Object.assign(skipProps, {\n whiteSpace: true,\n wordWrap: true,\n textOverflow: true,\n textDecorationDistance: true,\n userSelect: true,\n selectable: true,\n cursor: true,\n contain: true,\n boxSizing: true,\n boxShadow: true,\n })\n}\n\n// web only maps accessibility to aria props\nconst accessibilityDirectMap: Record<string, string> = {}\nif (process.env.TAMAGUI_TARGET === 'web') {\n // bundle size shave\n const items = {\n Hidden: true,\n ActiveDescendant: true,\n Atomic: true,\n AutoComplete: true,\n Busy: true,\n Checked: true,\n ColumnCount: 'colcount',\n ColumnIndex: 'colindex',\n ColumnSpan: 'colspan',\n Current: true,\n Details: true,\n ErrorMessage: true,\n Expanded: true,\n HasPopup: true,\n Invalid: true,\n Label: true,\n Level: true,\n Modal: true,\n Multiline: true,\n MultiSelectable: true,\n Orientation: true,\n Owns: true,\n Placeholder: true,\n PosInSet: true,\n Pressed: true,\n RoleDescription: true,\n RowCount: true,\n RowIndex: true,\n RowSpan: true,\n Selected: true,\n SetSize: true,\n Sort: true,\n ValueMax: true,\n ValueMin: true,\n ValueNow: true,\n ValueText: true,\n }\n for (const key in items) {\n let val = items[key]\n if (val === true) {\n val = key.toLowerCase()\n }\n accessibilityDirectMap[`accessibility${key}`] = `aria-${val}`\n }\n}\n\ntype TransformNamespaceKey = 'transform' | PseudoPropKeys | MediaQueryKey\n\nlet conf: TamaguiInternalConfig\n\ntype StyleSplitter = (\n props: { [key: string]: any },\n staticConfig: StaticConfigParsed,\n theme: ThemeParsed,\n state: SplitStyleState,\n parentSplitStyles?: GetStyleResult | null,\n languageContext?: LanguageContextType,\n // web-only\n elementType?: string,\n debug?: DebugProp\n) => GetStyleResult\n\nexport const PROP_SPLIT = '-'\n\nconst accessibilityRoleToWebRole = {\n adjustable: 'slider',\n header: 'heading',\n image: 'img',\n link: 'link',\n none: 'presentation',\n summary: 'region',\n}\n\n// loop props backwards\n// track used keys:\n// const keys = new Set<string>()\n// keep classnames and styles separate:\n// const styles = {}\n// const classNames = {}\n\nconst isMediaKey = (key: string) =>\n Boolean(key[0] === '$' && mediaKeysWithAndWithout$.has(key))\n\nexport const getSplitStyles: StyleSplitter = (\n props,\n staticConfig,\n theme,\n state,\n parentSplitStyles,\n languageContext,\n elementType,\n debug\n) => {\n if (cache.has(props)) {\n return cache.get(props)\n }\n\n if (props.debug) {\n console.log('props', props)\n }\n\n conf = conf || getConfig()\n const { shorthands } = conf\n const {\n defaultVariants,\n variants,\n propMapper,\n isReactNative,\n deoptProps,\n inlineProps,\n inlineWhenUnflattened,\n } = staticConfig\n const validStyleProps = staticConfig.isText ? stylePropsText : validStyles\n const viewProps: GetStyleResult['viewProps'] = {}\n let pseudos: PseudoStyles | null = null\n let psuedosUsed: Record<string, number> | null = null\n const mediaState = state.mediaState || globalMediaState\n const usedKeys: Record<string, number> = {}\n const propKeys = Object.keys(props)\n let space: SpaceTokens | null = props.space\n let hasMedia: boolean | string[] = false\n\n const shouldDoClasses =\n staticConfig.acceptsClassName && (isWeb || IS_STATIC) && !state.noClassNames\n\n let style: ViewStyle = {}\n const flatTransforms: FlatTransforms = {}\n\n const len = propKeys.length\n const rulesToInsert: RulesToInsert = []\n const classNames: ClassNamesObject = {}\n let className = '' // existing classNames\n // we need to gather these specific to each media query / pseudo\n // value is [hash, val], so [\"-jnjad-asdnjk\", \"scaleX(1) rotate(10deg)\"]\n const transforms: Record<TransformNamespaceKey, [string, string]> = {}\n // fontFamily is our special baby, ensure we grab the latest set one always\n let fontFamily: string | undefined\n\n const styleState: GetStyleState = {\n classNames,\n conf,\n flatTransforms,\n props,\n state,\n staticConfig,\n style,\n theme,\n usedKeys,\n viewProps,\n languageContext,\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.groupCollapsed('getSplitStyles')\n // eslint-disable-next-line no-console\n console.log(staticConfig, { shouldDoClasses, state, IS_STATIC })\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n\n if (props.className) {\n for (const cn of props.className.split(' ')) {\n if (cn[0] === '_') {\n // tamagui, merge it expanded on key, eventually this will go away with better compiler\n const [shorthand, mediaOrPseudo] = cn.slice(1).split('-')\n const isMedia = mediaOrPseudo[0] === '_'\n const isPseudo = mediaOrPseudo[0] === '0'\n const isMediaOrPseudo = isMedia || isPseudo\n let fullKey = shorthands[shorthand]\n if (isMedia) {\n // is media\n let mediaShortKey = mediaOrPseudo.slice(1)\n mediaShortKey = mediaShortKey.slice(0, mediaShortKey.indexOf('_'))\n fullKey += `${PROP_SPLIT}${mediaShortKey}`\n } else if (isPseudo) {\n // is pseudo\n const pseudoShortKey = mediaOrPseudo.slice(1)\n fullKey += `${PROP_SPLIT}${pseudoShortKey}`\n }\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('tamagui classname', fullKey, cn)\n }\n }\n usedKeys[fullKey] = 1\n mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo)\n } else {\n if (cn) {\n className += ` ${cn}`\n }\n }\n }\n }\n\n // loop backwards so we can skip already-used props\n for (let i = len - 1; i >= 0; i--) {\n let keyInit = propKeys[i]\n if (keyInit === 'className') continue // handled above\n const valInit = props[keyInit]\n\n // normalize shorthands up front\n if (keyInit in shorthands) {\n keyInit = shorthands[keyInit]\n }\n\n if (keyInit in usedKeys) continue\n if (keyInit in skipProps) continue\n if (!isWeb && keyInit.startsWith('data-')) continue\n\n if (typeof valInit === 'string' && valInit[0] === '_') {\n if (keyInit in validStyleProps || keyInit.includes('-')) {\n if (shouldDoClasses) {\n classNames[keyInit] = valInit\n } else {\n style[keyInit] = reverseMapClassNameToValue(keyInit, valInit)\n }\n usedKeys[keyInit] = 1\n continue\n }\n }\n\n if (keyInit === 'style' || keyInit.startsWith('_style')) {\n if (!valInit) continue\n const styles = Array.isArray(valInit) ? valInit : [valInit]\n const styleLen = styles.length\n for (let j = styleLen; j >= 0; j--) {\n const cur = styles[j]\n if (!cur) continue\n for (const key in cur) {\n if (usedKeys[key]) continue\n usedKeys[key] = 1\n style[key] = cur[key]\n }\n }\n continue\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n /**\n * Copying in the accessibility/prop handling from react-native-web here\n * Keeps it in a single loop, avoids dup de-structuring to avoid bundle size\n */\n if (keyInit === 'disabled' && valInit === true) {\n usedKeys[keyInit] = 1\n viewProps['aria-disabled'] = true\n // Enhance with native semantics\n if (\n elementType === 'button' ||\n elementType === 'form' ||\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.disabled = true\n }\n if (!variants?.disabled) {\n continue\n }\n }\n\n if (keyInit === 'testID') {\n usedKeys[keyInit] = 1\n if (isReactNative) {\n viewProps.testId = valInit\n } else {\n viewProps['data-testid'] = valInit\n }\n continue\n }\n\n if (keyInit === 'id' || keyInit === 'nativeID') {\n usedKeys[keyInit] = 1\n if (isReactNative) {\n viewProps.nativeID = valInit\n } else {\n viewProps.id = valInit\n }\n continue\n }\n\n let didUseKeyInit = true\n\n if (isReactNative) {\n didUseKeyInit = false\n // pass along to react-native-web\n if (accessibilityDirectMap[keyInit] || keyInit.startsWith('accessibility')) {\n viewProps[keyInit] = valInit\n usedKeys[keyInit] = 1\n continue\n }\n } else {\n if (accessibilityDirectMap[keyInit]) {\n viewProps[accessibilityDirectMap[keyInit]] = valInit\n usedKeys[keyInit] = 1\n continue\n }\n switch (keyInit) {\n case 'accessibilityRole': {\n if (valInit === 'none') {\n viewProps.role = 'presentation'\n } else {\n viewProps.role = accessibilityRoleToWebRole[valInit] || valInit\n }\n break\n }\n case 'accessibilityLabelledBy':\n case 'accessibilityFlowTo':\n case 'accessibilityControls':\n case 'accessibilityDescribedBy': {\n viewProps[`aria-${keyInit.replace('accessibility', '').toLowerCase()}`] =\n processIDRefList(valInit)\n break\n }\n case 'accessibilityKeyShortcuts': {\n if (Array.isArray(valInit)) {\n viewProps['aria-keyshortcuts'] = valInit.join(' ')\n }\n break\n }\n case 'accessibilityLiveRegion': {\n viewProps['aria-live'] = valInit === 'none' ? 'off' : valInit\n break\n }\n case 'accessibilityReadOnly': {\n viewProps['aria-readonly'] = valInit\n // Enhance with native semantics\n if (\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.readOnly = true\n }\n break\n }\n case 'accessibilityRequired': {\n viewProps['aria-required'] = valInit\n // Enhance with native semantics\n if (\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.required = true\n }\n break\n }\n default: {\n didUseKeyInit = false\n }\n }\n }\n\n if (didUseKeyInit) {\n usedKeys[keyInit] = 1\n continue\n }\n\n if (valInit && valInit[0] === '_') {\n // if valid style key (or pseudo like color-hover):\n // this conditional and esp the pseudo check rarely runs so not a perf issue\n const isValidClassName = validStyles[keyInit]\n const isMediaOrPseudo =\n !isValidClassName &&\n keyInit.includes(PROP_SPLIT) &&\n validStyles[keyInit.split(PROP_SPLIT)[0]]\n\n if (isValidClassName || isMediaOrPseudo) {\n usedKeys[keyInit] = 1\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('tamagui classname props', keyInit, valInit)\n }\n }\n mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo)\n continue\n }\n }\n }\n\n if (\n (defaultVariants && keyInit in defaultVariants) ||\n // may want to just: not compile styled() into classnames, always do this, and always pass in all values in extras.props\n // but we'd want to add styled({ extracted: true }) or something at compile time to save on parsing a bit...\n (state.keepVariantsAsProps && variants && keyInit in variants)\n ) {\n viewProps[keyInit] = valInit\n }\n\n /**\n * There's (some) reason to this madness: we want to allow returning media/pseudo from variants\n * Say you have a variant hoverable: { true: { hoverStyle: {} } }\n * We run propMapper first to expand variant, then we run the inner loop and look again\n * for if there's a pseudo/media returned from it.\n */\n\n let isMedia = isMediaKey(keyInit)\n let isPseudo = validPseudoKeys[keyInit]\n\n if (\n !(\n isMedia ||\n isPseudo ||\n variants?.[keyInit] ||\n validStyleProps[keyInit] ||\n shorthands[keyInit]\n )\n ) {\n // web-only, exclude all other accessibility props not handled above\n if (isWeb && keyInit.indexOf('ccessibility') > 0) {\n continue\n }\n usedKeys[keyInit] = 1\n viewProps[keyInit] = valInit\n continue\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.groupCollapsed(' \uD83D\uDD39 styles', keyInit, valInit)\n }\n\n const expanded =\n isMedia || isPseudo\n ? [[keyInit, valInit]]\n : propMapper(\n keyInit,\n valInit,\n theme,\n props,\n state,\n languageContext,\n undefined,\n debug\n )\n\n if (!fontFamily) {\n fontFamily = getPropMappedFontFamily(expanded)\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n if (!isServer && isWeb) {\n // eslint-disable-next-line no-console\n console.log('expanded', expanded, '\\nusedKeys', usedKeys, '\\ncurrent', {\n ...style,\n })\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n\n if (!expanded) continue\n\n for (const [key, val] of expanded) {\n if (val === undefined) continue\n\n isMedia = isMediaKey(key)\n isPseudo = validPseudoKeys[key]\n const isMediaOrPseudo = isMedia || isPseudo\n\n if (!isMediaOrPseudo && usedKeys[key]) {\n continue\n }\n\n if (inlineProps?.has(key) || inlineWhenUnflattened?.has(key)) {\n usedKeys[key] = 1\n viewProps[key] = props[key] ?? val\n }\n\n // pseudo\n if (isPseudo) {\n if (!val) continue\n\n // TODO can avoid processing this if !shouldDoClasses + state is off\n const pseudoStyleObject = getSubStyle(\n styleState,\n key,\n val,\n true,\n state.noClassNames\n )\n\n const descriptor = pseudoDescriptors[key as keyof typeof pseudoDescriptors]\n const isEnter = descriptor.name === 'enter'\n const isExit = descriptor.name === 'exit'\n\n // don't continue here on isEnter && !state.unmounted because we need to merge defaults\n if (!descriptor || (isExit && !state.isExiting)) {\n continue\n }\n\n if (!shouldDoClasses || IS_STATIC) {\n pseudos ||= {}\n pseudos[key] ||= {}\n Object.assign(pseudos[key], pseudoStyleObject)\n }\n\n if (shouldDoClasses && !isEnter && !isExit) {\n const pseudoStyles = getAtomicStyle(pseudoStyleObject, descriptor)\n for (const psuedoStyle of pseudoStyles) {\n const fullKey = `${psuedoStyle.property}${PROP_SPLIT}${descriptor.name}`\n if (!usedKeys[fullKey]) {\n usedKeys[fullKey] = 1\n addStyleToInsertRules(rulesToInsert, psuedoStyle)\n mergeClassName(\n transforms,\n classNames,\n fullKey,\n psuedoStyle.identifier,\n isMediaOrPseudo\n )\n }\n }\n } else {\n let isDisabled = !state[descriptor.stateKey || descriptor.name]\n\n // we never animate in on server side just show the full thing\n // on client side we use CSS to hide the fully in SSR items, then\n // un-hide and replay with original animation.\n if (isWeb && !isClient && isEnter) {\n isDisabled = false\n }\n\n // console.log(\n // 'isDisabled',\n // state,\n // descriptor.stateKey,\n // state[descriptor.stateKey || descriptor.name],\n // isDisabled,\n // descriptor\n // )\n\n if (!isDisabled) {\n usedKeys[key] ||= 1\n }\n psuedosUsed ||= {}\n\n const importance = descriptor.priority\n for (const pkey in pseudoStyleObject) {\n const val = pseudoStyleObject[pkey]\n // when disabled ensure the default value is set for future animations to align\n if (isDisabled) {\n if (!(pkey in usedKeys) && pkey in animatableDefaults) {\n const defaultVal = animatableDefaults[pkey]\n mergeStyle(styleState, pkey, defaultVal, true)\n }\n continue\n }\n const curImportance = psuedosUsed[importance] || 0\n if (importance >= curImportance) {\n psuedosUsed[pkey] = importance\n pseudos ||= {}\n pseudos[key] ||= {}\n pseudos[key][pkey] = val\n // eslint-disable-next-line no-console\n if (process.env.NODE_ENV === 'development' && debug === 'verbose')\n console.log('merging', pkey, val)\n mergeStyle(styleState, pkey, val)\n }\n }\n }\n continue\n }\n\n // media\n if (isMedia) {\n if (!val) continue\n\n hasMedia ||= true\n\n // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n\n const mediaStyle = getSubStyle(\n styleState,\n key,\n val,\n // TODO try true like pseudo\n false\n )\n\n const mediaKeyShort = key.slice(1)\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // prettier-ignore\n // eslint-disable-next-line no-console\n console.log(` \uD83D\uDCFA ${key}`, { key, mediaStyle, props, shouldDoClasses })\n }\n\n if ('space' in mediaStyle) {\n if (!Array.isArray(hasMedia)) {\n hasMedia = []\n }\n hasMedia.push(mediaKeyShort)\n }\n\n if (shouldDoClasses) {\n if ('space' in mediaStyle) {\n delete mediaStyle['space']\n if (mediaState[mediaKeyShort]) {\n const val = valInit.space\n const importance = getMediaImportanceIfMoreImportant(\n mediaKeyShort,\n 'space',\n usedKeys\n )\n if (importance) {\n space = val\n usedKeys['space'] = importance\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n console.log(\n `Found more important space for current media ${mediaKeyShort}: ${val} (importance: ${importance})`\n )\n }\n }\n }\n }\n const mediaStyles = getStylesAtomic(mediaStyle)\n for (const style of mediaStyles) {\n const out = createMediaStyle(style, mediaKeyShort, mediaQueryConfig)\n const fullKey = `${style.property}${PROP_SPLIT}${mediaKeyShort}`\n if (!usedKeys[fullKey]) {\n usedKeys[fullKey] = 1\n addStyleToInsertRules(rulesToInsert, out)\n mergeClassName(transforms, classNames, fullKey, out.identifier, true)\n }\n }\n } else if (mediaState[mediaKeyShort]) {\n for (const subKey in mediaStyle) {\n const importance = getMediaImportanceIfMoreImportant(\n mediaKeyShort,\n subKey,\n usedKeys\n )\n if (importance === null) continue\n if (subKey === 'space') {\n space = valInit.space\n continue\n }\n mergeMediaByImportance(\n style,\n mediaKeyShort,\n subKey,\n mediaStyle[subKey],\n usedKeys\n )\n if (key === 'fontFamily') {\n fontFamily = mediaStyle[key]\n }\n }\n }\n continue\n }\n\n if (!isWeb && key === 'pointerEvents') {\n usedKeys[key] = 1\n viewProps[key] = val\n continue\n }\n\n if (key === 'fontFamily' && !fontFamily && valInit && val) {\n fontFamily = valInit[0] === '$' ? valInit : val\n }\n\n if (key in validStyleProps) {\n mergeStyle(styleState, key, val)\n continue\n }\n\n // pass to view props\n if (!(variants && key in variants)) {\n if (!skipProps[key]) {\n viewProps[key] = val\n usedKeys[key] = 1\n }\n }\n }\n }\n\n fixStyles(style)\n if (isWeb) {\n styleToCSS(style)\n }\n\n // always do this at the very end to preserve the order strictly (animations, origin)\n // and allow proper merging of all pseudos before applying\n if (flatTransforms) {\n if (process.env.NODE_ENV === 'development' && debug) {\n // eslint-disable-next-line no-console\n console.log(\n 'Merging flat transforms, transform before',\n [...(style.transform || [])],\n flatTransforms\n )\n }\n mergeTransforms(style, flatTransforms, true)\n }\n\n // add in defaults if not set:\n if (parentSplitStyles) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (shouldDoClasses) {\n for (const key in parentSplitStyles.classNames) {\n const val = parentSplitStyles.classNames[key]\n if (key in style || key in classNames) continue\n classNames[key] = val\n }\n }\n }\n if (!shouldDoClasses) {\n for (const key in parentSplitStyles.style) {\n if (key in classNames || key in style) continue\n style[key] = parentSplitStyles.style[key]\n }\n }\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (shouldDoClasses) {\n if (style['$$css']) {\n // avoid re-processing for rnw\n } else {\n const atomic = getStylesAtomic(style)\n for (const atomicStyle of atomic) {\n const key = atomicStyle.property\n addStyleToInsertRules(rulesToInsert, atomicStyle)\n mergeClassName(transforms, classNames, key, atomicStyle.identifier)\n }\n if (!IS_STATIC) {\n style = {}\n }\n }\n }\n\n if (transforms) {\n for (const namespace in transforms) {\n if (!transforms[namespace]) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('Error no transform', transforms, namespace)\n }\n continue\n }\n const [hash, val] = transforms[namespace]\n const identifier = `_transform${hash}`\n if (isClient && !insertedTransforms[identifier]) {\n const rule = `.${identifier} { transform: ${val}; }`\n addStyleToInsertRules(rulesToInsert, {\n identifier,\n rules: [rule],\n property: namespace,\n })\n }\n classNames[namespace] = identifier\n }\n }\n }\n\n const result = {\n space,\n hasMedia,\n fontFamily,\n viewProps,\n style,\n pseudos,\n classNames,\n rulesToInsert,\n }\n\n if (className) {\n classNames.className = className\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n if (isDevTools) {\n // eslint-disable-next-line no-console\n console.groupCollapsed(' \uD83D\uDD39 styles =>')\n // prettier-ignore\n const logs = { transforms, viewProps, state, rulesToInsert, parentSplitStyles, flatTransforms, result }\n for (const key in { ...result, ...logs }) {\n // eslint-disable-next-line no-console\n console.log(key, logs[key])\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n }\n\n cache.set(props, result)\n\n return result\n}\n\nfunction mergeClassName(\n transforms: Record<string, any[]>,\n classNames: Record<string, string>,\n key: string,\n val: string,\n isMediaOrPseudo = false\n) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n // empty classnames passed by compiler sometimes\n if (!val) return\n if (val[0] === '_' && val.startsWith('_transform-')) {\n const ns: TransformNamespaceKey = isMediaOrPseudo ? key : 'transform'\n let transform = insertedTransforms[val]\n if (isClient && !transform) {\n scanAllSheets() // HMR or loaded a new chunk\n transform = insertedTransforms[val]\n if (!transform && isWeb && val[0] !== '_') {\n transform = val // runtime insert\n }\n }\n transforms[ns] ||= ['', '']\n transforms[ns][0] += val.replace('_transform', '')\n // ssr doesn't need to do anything just make the right classname\n if (transform) {\n transforms[ns][1] += transform\n }\n } else {\n classNames[key] = val\n }\n }\n}\n\n/**\n * getSubStyle calls propMapper with props\n * those should be specific to the substyle, but fallback to the base props\n * so given props:\n *\n * { fontSize: 12, color: 'red', $sm: { color: 'blue' } }\n *\n * getSubStyle props should be a proxy that ends up like:\n *\n * { fontSize: 12, color: 'blue' }\n *\n * and to avoid re-creating it over and over, use a WeakMap\n */\nconst cache = new WeakMap()\nfunction getSubStyleProps(\n defaultProps: Object,\n baseProps: Object,\n specificProps: Object\n) {\n const key = specificProps || baseProps\n // can cache based only on specific it's always referentially consistent with base\n if (!cache.has(key)) {\n cache.set(key, {\n ...defaultProps,\n ...baseProps,\n ...specificProps,\n })\n }\n return cache.get(key)!\n}\n\nfunction mergeStyle(\n { usedKeys, classNames, flatTransforms, viewProps, style }: GetStyleState,\n key: string,\n val: any,\n dontSetUsed = false\n) {\n if (!dontSetUsed) {\n usedKeys[key] = usedKeys[key] || 1\n }\n if (val && val[0] === '_') {\n classNames[key] = val\n } else if (key in stylePropsTransform) {\n flatTransforms ||= {}\n flatTransforms[key] = val\n } else {\n const out = normalizeValueWithProperty(val, key)\n if (key in validStylesOnBaseProps) {\n viewProps[key] = out\n } else {\n style[key] = out\n }\n }\n}\n\nexport const getSubStyle = (\n styleState: GetStyleState,\n subKey: string,\n styleIn: Object,\n avoidDefaultProps?: boolean,\n avoidMergeTransform?: boolean\n): ViewStyle => {\n const { staticConfig, theme, props, state, conf, languageContext } = styleState\n const styleOut: ViewStyle = {}\n\n for (let key in styleIn) {\n const val = styleIn[key]\n key = conf.shorthands[key] || key\n const expanded = staticConfig.propMapper(\n key,\n val,\n theme,\n getSubStyleProps(staticConfig.defaultProps, props, props[subKey]),\n state,\n languageContext,\n avoidDefaultProps\n )\n if (!expanded) continue\n for (const [skey, sval] of expanded) {\n if (!avoidMergeTransform && skey in stylePropsTransform) {\n mergeTransform(styleOut, skey, sval)\n } else {\n styleOut[skey] = normalizeValueWithProperty(sval, key)\n }\n }\n }\n\n fixStyles(styleOut)\n\n return styleOut\n}\n\nexport const insertSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n insertStyleRules(res.rulesToInsert)\n return res\n}\n\n// on native no need to insert any css\nconst useInsertEffectCompat = isWeb\n ? useInsertionEffect || useIsomorphicLayoutEffect\n : () => {}\n\nexport const useSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n\n if (!isRSC) {\n useInsertEffectCompat(() => {\n insertStyleRules(res.rulesToInsert)\n }, [res.rulesToInsert])\n }\n\n return res\n}\n\nfunction addStyleToInsertRules(\n rulesToInsert: RulesToInsert,\n styleObject: PartialStyleObject\n) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (!shouldInsertStyleRules(styleObject)) {\n return\n }\n updateRules(styleObject.identifier, styleObject.rules)\n rulesToInsert.push(styleObject)\n }\n}\n\nfunction processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nconst animatableDefaults = {\n opacity: 1,\n scale: 1,\n rotate: '0deg',\n rotateY: '0deg',\n rotateX: '0deg',\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n isClient,\n isRSC,\n isServer,\n isWeb,\n useIsomorphicLayoutEffect,\n} from '@tamagui/constants'\nimport {\n stylePropsText,\n stylePropsTransform,\n validPseudoKeys,\n validStyles,\n validStylesOnBaseProps,\n} from '@tamagui/helpers'\nimport { useInsertionEffect } from 'react'\nimport type { ViewStyle } from 'react-native'\n\nimport { getConfig } from '../config'\nimport { isDevTools } from '../constants/isDevTools'\nimport {\n getMediaImportanceIfMoreImportant,\n mediaState as globalMediaState,\n mediaKeysWithAndWithout$,\n mediaQueryConfig,\n mergeMediaByImportance,\n} from '../hooks/useMedia'\nimport type {\n DebugProp,\n MediaQueryKey,\n PseudoPropKeys,\n PseudoStyles,\n SpaceTokens,\n SplitStyleState,\n StackProps,\n StaticConfigParsed,\n TamaguiInternalConfig,\n ThemeParsed,\n} from '../types'\nimport { FontLanguageProps, LanguageContextType } from '../views/FontLanguage.types'\nimport { createMediaStyle } from './createMediaStyle'\nimport { getPropMappedFontFamily } from './createPropMapper'\nimport { fixStyles } from './expandStyles'\nimport { getAtomicStyle, getStylesAtomic, styleToCSS } from './getStylesAtomic'\nimport {\n PartialStyleObject,\n RulesToInsert,\n insertStyleRules,\n insertedTransforms,\n scanAllSheets,\n shouldInsertStyleRules,\n updateRules,\n} from './insertStyleRule'\nimport { FlatTransforms, mergeTransform, mergeTransforms } from './mergeTransform'\nimport {\n normalizeValueWithProperty,\n reverseMapClassNameToValue,\n} from './normalizeValueWithProperty.js'\nimport { pseudoDescriptors } from './pseudoDescriptors'\n\ntype GetStyleResult = {\n pseudos?: PseudoStyles\n style: ViewStyle\n classNames: ClassNamesObject\n rulesToInsert: RulesToInsert\n viewProps: StackProps & Record<string, any>\n fontFamily: string | undefined\n space?: any // SpaceTokens?\n hasMedia: boolean | 'space'\n}\n\ntype GetStyleState = {\n style: ViewStyle\n usedKeys: Record<string, number>\n classNames: ClassNamesObject\n flatTransforms: FlatTransforms\n staticConfig: StaticConfigParsed\n theme: ThemeParsed\n props: Record<string, any>\n viewProps: Record<string, any>\n state: SplitStyleState\n conf: TamaguiInternalConfig\n languageContext?: FontLanguageProps\n avoidDefaultProps?: boolean\n avoidMergeTransform?: boolean\n}\n\nexport type SplitStyles = ReturnType<typeof getSplitStyles>\nexport type ClassNamesObject = Record<string, string>\nexport type SplitStyleResult = ReturnType<typeof getSplitStyles>\n\nconst skipProps = {\n animation: true,\n space: true,\n animateOnly: true,\n debug: true,\n componentName: true,\n role: true,\n tag: true,\n}\nif (process.env.NODE_ENV === 'test') {\n skipProps['data-test-renders'] = true\n}\n\nconst IS_STATIC = process.env.IS_STATIC === 'is_static'\n\n// native only skips\nif (process.env.TAMAGUI_TARGET === 'native') {\n Object.assign(skipProps, {\n whiteSpace: true,\n wordWrap: true,\n textOverflow: true,\n textDecorationDistance: true,\n userSelect: true,\n selectable: true,\n cursor: true,\n contain: true,\n boxSizing: true,\n boxShadow: true,\n })\n}\n\n// web only maps accessibility to aria props\nconst accessibilityDirectMap: Record<string, string> = {}\nif (process.env.TAMAGUI_TARGET === 'web') {\n // bundle size shave\n const items = {\n Hidden: true,\n ActiveDescendant: true,\n Atomic: true,\n AutoComplete: true,\n Busy: true,\n Checked: true,\n ColumnCount: 'colcount',\n ColumnIndex: 'colindex',\n ColumnSpan: 'colspan',\n Current: true,\n Details: true,\n ErrorMessage: true,\n Expanded: true,\n HasPopup: true,\n Invalid: true,\n Label: true,\n Level: true,\n Modal: true,\n Multiline: true,\n MultiSelectable: true,\n Orientation: true,\n Owns: true,\n Placeholder: true,\n PosInSet: true,\n Pressed: true,\n RoleDescription: true,\n RowCount: true,\n RowIndex: true,\n RowSpan: true,\n Selected: true,\n SetSize: true,\n Sort: true,\n ValueMax: true,\n ValueMin: true,\n ValueNow: true,\n ValueText: true,\n }\n for (const key in items) {\n let val = items[key]\n if (val === true) {\n val = key.toLowerCase()\n }\n accessibilityDirectMap[`accessibility${key}`] = `aria-${val}`\n }\n}\n\ntype TransformNamespaceKey = 'transform' | PseudoPropKeys | MediaQueryKey\n\nlet conf: TamaguiInternalConfig\n\ntype StyleSplitter = (\n props: { [key: string]: any },\n staticConfig: StaticConfigParsed,\n theme: ThemeParsed,\n state: SplitStyleState,\n parentSplitStyles?: GetStyleResult | null,\n languageContext?: LanguageContextType,\n // web-only\n elementType?: string,\n debug?: DebugProp\n) => GetStyleResult\n\nexport const PROP_SPLIT = '-'\n\nconst accessibilityRoleToWebRole = {\n adjustable: 'slider',\n header: 'heading',\n image: 'img',\n link: 'link',\n none: 'presentation',\n summary: 'region',\n}\n\n// loop props backwards\n// track used keys:\n// const keys = new Set<string>()\n// keep classnames and styles separate:\n// const styles = {}\n// const classNames = {}\n\nconst isMediaKey = (key: string) =>\n Boolean(key[0] === '$' && mediaKeysWithAndWithout$.has(key))\n\nexport const getSplitStyles: StyleSplitter = (\n props,\n staticConfig,\n theme,\n state,\n parentSplitStyles,\n languageContext,\n elementType,\n debug\n) => {\n if (cache.has(props)) {\n return cache.get(props)\n }\n\n if (props.debug) {\n console.log('props', props)\n }\n\n conf = conf || getConfig()\n const { shorthands } = conf\n const {\n defaultVariants,\n variants,\n propMapper,\n isReactNative,\n deoptProps,\n inlineProps,\n inlineWhenUnflattened,\n } = staticConfig\n const validStyleProps = staticConfig.isText ? stylePropsText : validStyles\n const viewProps: GetStyleResult['viewProps'] = {}\n let pseudos: PseudoStyles | null = null\n let psuedosUsed: Record<string, number> | null = null\n const mediaState = state.mediaState || globalMediaState\n const usedKeys: Record<string, number> = {}\n const propKeys = Object.keys(props)\n let space: SpaceTokens | null = props.space\n let hasMedia: boolean | string[] = false\n\n const shouldDoClasses =\n staticConfig.acceptsClassName && (isWeb || IS_STATIC) && !state.noClassNames\n\n let style: ViewStyle = {}\n const flatTransforms: FlatTransforms = {}\n\n const len = propKeys.length\n const rulesToInsert: RulesToInsert = []\n const classNames: ClassNamesObject = {}\n let className = '' // existing classNames\n // we need to gather these specific to each media query / pseudo\n // value is [hash, val], so [\"-jnjad-asdnjk\", \"scaleX(1) rotate(10deg)\"]\n const transforms: Record<TransformNamespaceKey, [string, string]> = {}\n // fontFamily is our special baby, ensure we grab the latest set one always\n let fontFamily: string | undefined\n\n const styleState: GetStyleState = {\n classNames,\n conf,\n flatTransforms,\n props,\n state,\n staticConfig,\n style,\n theme,\n usedKeys,\n viewProps,\n languageContext,\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.groupCollapsed('getSplitStyles')\n // eslint-disable-next-line no-console\n console.log(staticConfig, { shouldDoClasses, state, IS_STATIC })\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n\n if (props.className) {\n for (const cn of props.className.split(' ')) {\n if (cn[0] === '_') {\n // tamagui, merge it expanded on key, eventually this will go away with better compiler\n const [shorthand, mediaOrPseudo] = cn.slice(1).split('-')\n const isMedia = mediaOrPseudo[0] === '_'\n const isPseudo = mediaOrPseudo[0] === '0'\n const isMediaOrPseudo = isMedia || isPseudo\n let fullKey = shorthands[shorthand]\n if (isMedia) {\n // is media\n let mediaShortKey = mediaOrPseudo.slice(1)\n mediaShortKey = mediaShortKey.slice(0, mediaShortKey.indexOf('_'))\n fullKey += `${PROP_SPLIT}${mediaShortKey}`\n } else if (isPseudo) {\n // is pseudo\n const pseudoShortKey = mediaOrPseudo.slice(1)\n fullKey += `${PROP_SPLIT}${pseudoShortKey}`\n }\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('tamagui classname', fullKey, cn)\n }\n }\n usedKeys[fullKey] = 1\n mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo)\n } else {\n if (cn) {\n className += ` ${cn}`\n }\n }\n }\n }\n\n // loop backwards so we can skip already-used props\n for (let i = len - 1; i >= 0; i--) {\n let keyInit = propKeys[i]\n if (keyInit === 'className') continue // handled above\n const valInit = props[keyInit]\n\n // normalize shorthands up front\n if (keyInit in shorthands) {\n keyInit = shorthands[keyInit]\n }\n\n if (keyInit in usedKeys) continue\n if (keyInit in skipProps) continue\n if (!isWeb && keyInit.startsWith('data-')) continue\n\n if (typeof valInit === 'string' && valInit[0] === '_') {\n if (keyInit in validStyleProps || keyInit.includes('-')) {\n if (shouldDoClasses) {\n classNames[keyInit] = valInit\n } else {\n style[keyInit] = reverseMapClassNameToValue(keyInit, valInit)\n }\n usedKeys[keyInit] = 1\n continue\n }\n }\n\n if (keyInit === 'dataSet') {\n for (const key in valInit) {\n viewProps[`data-${hyphenate(key)}`] = valInit[key]\n }\n continue\n }\n\n if (keyInit === 'style' || keyInit.startsWith('_style')) {\n if (!valInit) continue\n const styles = Array.isArray(valInit) ? valInit : [valInit]\n const styleLen = styles.length\n for (let j = styleLen; j >= 0; j--) {\n const cur = styles[j]\n if (!cur) continue\n for (const key in cur) {\n if (usedKeys[key]) continue\n usedKeys[key] = 1\n style[key] = cur[key]\n }\n }\n continue\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n /**\n * Copying in the accessibility/prop handling from react-native-web here\n * Keeps it in a single loop, avoids dup de-structuring to avoid bundle size\n */\n if (keyInit === 'disabled' && valInit === true) {\n usedKeys[keyInit] = 1\n viewProps['aria-disabled'] = true\n // Enhance with native semantics\n if (\n elementType === 'button' ||\n elementType === 'form' ||\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.disabled = true\n }\n if (!variants?.disabled) {\n continue\n }\n }\n\n if (keyInit === 'testID') {\n usedKeys[keyInit] = 1\n if (isReactNative) {\n viewProps.testId = valInit\n } else {\n viewProps['data-testid'] = valInit\n }\n continue\n }\n\n if (keyInit === 'id' || keyInit === 'nativeID') {\n usedKeys[keyInit] = 1\n if (isReactNative) {\n viewProps.nativeID = valInit\n } else {\n viewProps.id = valInit\n }\n continue\n }\n\n let didUseKeyInit = true\n\n if (isReactNative) {\n didUseKeyInit = false\n // pass along to react-native-web\n if (accessibilityDirectMap[keyInit] || keyInit.startsWith('accessibility')) {\n viewProps[keyInit] = valInit\n usedKeys[keyInit] = 1\n continue\n }\n } else {\n if (accessibilityDirectMap[keyInit]) {\n viewProps[accessibilityDirectMap[keyInit]] = valInit\n usedKeys[keyInit] = 1\n continue\n }\n switch (keyInit) {\n case 'accessibilityRole': {\n if (valInit === 'none') {\n viewProps.role = 'presentation'\n } else {\n viewProps.role = accessibilityRoleToWebRole[valInit] || valInit\n }\n break\n }\n case 'accessibilityLabelledBy':\n case 'accessibilityFlowTo':\n case 'accessibilityControls':\n case 'accessibilityDescribedBy': {\n viewProps[`aria-${keyInit.replace('accessibility', '').toLowerCase()}`] =\n processIDRefList(valInit)\n break\n }\n case 'accessibilityKeyShortcuts': {\n if (Array.isArray(valInit)) {\n viewProps['aria-keyshortcuts'] = valInit.join(' ')\n }\n break\n }\n case 'accessibilityLiveRegion': {\n viewProps['aria-live'] = valInit === 'none' ? 'off' : valInit\n break\n }\n case 'accessibilityReadOnly': {\n viewProps['aria-readonly'] = valInit\n // Enhance with native semantics\n if (\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.readOnly = true\n }\n break\n }\n case 'accessibilityRequired': {\n viewProps['aria-required'] = valInit\n // Enhance with native semantics\n if (\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.required = true\n }\n break\n }\n default: {\n didUseKeyInit = false\n }\n }\n }\n\n if (didUseKeyInit) {\n usedKeys[keyInit] = 1\n continue\n }\n\n if (valInit && valInit[0] === '_') {\n // if valid style key (or pseudo like color-hover):\n // this conditional and esp the pseudo check rarely runs so not a perf issue\n const isValidClassName = validStyles[keyInit]\n const isMediaOrPseudo =\n !isValidClassName &&\n keyInit.includes(PROP_SPLIT) &&\n validStyles[keyInit.split(PROP_SPLIT)[0]]\n\n if (isValidClassName || isMediaOrPseudo) {\n usedKeys[keyInit] = 1\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n // eslint-disable-next-line no-console\n console.log('tamagui classname props', keyInit, valInit)\n }\n }\n mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo)\n continue\n }\n }\n }\n\n if (\n (defaultVariants && keyInit in defaultVariants) ||\n // may want to just: not compile styled() into classnames, always do this, and always pass in all values in extras.props\n // but we'd want to add styled({ extracted: true }) or something at compile time to save on parsing a bit...\n (state.keepVariantsAsProps && variants && keyInit in variants)\n ) {\n viewProps[keyInit] = valInit\n }\n\n /**\n * There's (some) reason to this madness: we want to allow returning media/pseudo from variants\n * Say you have a variant hoverable: { true: { hoverStyle: {} } }\n * We run propMapper first to expand variant, then we run the inner loop and look again\n * for if there's a pseudo/media returned from it.\n */\n\n let isMedia = isMediaKey(keyInit)\n let isPseudo = validPseudoKeys[keyInit]\n\n if (\n !(\n isMedia ||\n isPseudo ||\n variants?.[keyInit] ||\n validStyleProps[keyInit] ||\n shorthands[keyInit]\n )\n ) {\n // web-only, exclude all other accessibility props not handled above\n if (isWeb && keyInit.indexOf('ccessibility') > 0) {\n continue\n }\n usedKeys[keyInit] = 1\n viewProps[keyInit] = valInit\n continue\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.groupCollapsed(' \uD83D\uDD39 styles', keyInit, valInit)\n }\n\n const expanded =\n isMedia || isPseudo\n ? [[keyInit, valInit]]\n : propMapper(\n keyInit,\n valInit,\n theme,\n props,\n state,\n languageContext,\n undefined,\n debug\n )\n\n if (!fontFamily) {\n fontFamily = getPropMappedFontFamily(expanded)\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n if (!isServer && isWeb) {\n // eslint-disable-next-line no-console\n console.log('expanded', expanded, '\\nusedKeys', usedKeys, '\\ncurrent', {\n ...style,\n })\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n\n if (!expanded) continue\n\n for (const [key, val] of expanded) {\n if (val === undefined) continue\n\n isMedia = isMediaKey(key)\n isPseudo = validPseudoKeys[key]\n const isMediaOrPseudo = isMedia || isPseudo\n\n if (!isMediaOrPseudo && usedKeys[key]) {\n continue\n }\n\n if (inlineProps?.has(key) || inlineWhenUnflattened?.has(key)) {\n usedKeys[key] = 1\n viewProps[key] = props[key] ?? val\n }\n\n // pseudo\n if (isPseudo) {\n if (!val) continue\n\n // TODO can avoid processing this if !shouldDoClasses + state is off\n const pseudoStyleObject = getSubStyle(\n styleState,\n key,\n val,\n true,\n state.noClassNames\n )\n\n const descriptor = pseudoDescriptors[key as keyof typeof pseudoDescriptors]\n const isEnter = descriptor.name === 'enter'\n const isExit = descriptor.name === 'exit'\n\n // don't continue here on isEnter && !state.unmounted because we need to merge defaults\n if (!descriptor || (isExit && !state.isExiting)) {\n continue\n }\n\n if (!shouldDoClasses || IS_STATIC) {\n pseudos ||= {}\n pseudos[key] ||= {}\n Object.assign(pseudos[key], pseudoStyleObject)\n }\n\n if (shouldDoClasses && !isEnter && !isExit) {\n const pseudoStyles = getAtomicStyle(pseudoStyleObject, descriptor)\n for (const psuedoStyle of pseudoStyles) {\n const fullKey = `${psuedoStyle.property}${PROP_SPLIT}${descriptor.name}`\n if (!usedKeys[fullKey]) {\n usedKeys[fullKey] = 1\n addStyleToInsertRules(rulesToInsert, psuedoStyle)\n mergeClassName(\n transforms,\n classNames,\n fullKey,\n psuedoStyle.identifier,\n isMediaOrPseudo\n )\n }\n }\n } else {\n let isDisabled = !state[descriptor.stateKey || descriptor.name]\n\n // we never animate in on server side just show the full thing\n // on client side we use CSS to hide the fully in SSR items, then\n // un-hide and replay with original animation.\n if (isWeb && !isClient && isEnter) {\n isDisabled = false\n }\n\n // console.log(\n // 'isDisabled',\n // state,\n // descriptor.stateKey,\n // state[descriptor.stateKey || descriptor.name],\n // isDisabled,\n // descriptor\n // )\n\n if (!isDisabled) {\n usedKeys[key] ||= 1\n }\n psuedosUsed ||= {}\n\n const importance = descriptor.priority\n for (const pkey in pseudoStyleObject) {\n const val = pseudoStyleObject[pkey]\n // when disabled ensure the default value is set for future animations to align\n if (isDisabled) {\n if (!(pkey in usedKeys) && pkey in animatableDefaults) {\n const defaultVal = animatableDefaults[pkey]\n mergeStyle(styleState, pkey, defaultVal, true)\n }\n continue\n }\n const curImportance = psuedosUsed[importance] || 0\n if (importance >= curImportance) {\n psuedosUsed[pkey] = importance\n pseudos ||= {}\n pseudos[key] ||= {}\n pseudos[key][pkey] = val\n // eslint-disable-next-line no-console\n if (process.env.NODE_ENV === 'development' && debug === 'verbose')\n console.log('merging', pkey, val)\n mergeStyle(styleState, pkey, val)\n }\n }\n }\n continue\n }\n\n // media\n if (isMedia) {\n if (!val) continue\n\n hasMedia ||= true\n\n // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n\n const mediaStyle = getSubStyle(\n styleState,\n key,\n val,\n // TODO try true like pseudo\n false\n )\n\n const mediaKeyShort = key.slice(1)\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n // prettier-ignore\n // eslint-disable-next-line no-console\n console.log(` \uD83D\uDCFA ${key}`, { key, mediaStyle, props, shouldDoClasses })\n }\n\n if ('space' in mediaStyle) {\n if (!Array.isArray(hasMedia)) {\n hasMedia = []\n }\n hasMedia.push(mediaKeyShort)\n }\n\n if (shouldDoClasses) {\n if ('space' in mediaStyle) {\n delete mediaStyle['space']\n if (mediaState[mediaKeyShort]) {\n const val = valInit.space\n const importance = getMediaImportanceIfMoreImportant(\n mediaKeyShort,\n 'space',\n usedKeys\n )\n if (importance) {\n space = val\n usedKeys['space'] = importance\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n console.log(\n `Found more important space for current media ${mediaKeyShort}: ${val} (importance: ${importance})`\n )\n }\n }\n }\n }\n const mediaStyles = getStylesAtomic(mediaStyle)\n for (const style of mediaStyles) {\n const out = createMediaStyle(style, mediaKeyShort, mediaQueryConfig)\n const fullKey = `${style.property}${PROP_SPLIT}${mediaKeyShort}`\n if (!usedKeys[fullKey]) {\n usedKeys[fullKey] = 1\n addStyleToInsertRules(rulesToInsert, out)\n mergeClassName(transforms, classNames, fullKey, out.identifier, true)\n }\n }\n } else if (mediaState[mediaKeyShort]) {\n for (const subKey in mediaStyle) {\n const importance = getMediaImportanceIfMoreImportant(\n mediaKeyShort,\n subKey,\n usedKeys\n )\n if (importance === null) continue\n if (subKey === 'space') {\n space = valInit.space\n continue\n }\n mergeMediaByImportance(\n style,\n mediaKeyShort,\n subKey,\n mediaStyle[subKey],\n usedKeys\n )\n if (key === 'fontFamily') {\n fontFamily = mediaStyle[key]\n }\n }\n }\n continue\n }\n\n if (!isWeb && key === 'pointerEvents') {\n usedKeys[key] = 1\n viewProps[key] = val\n continue\n }\n\n if (key === 'fontFamily' && !fontFamily && valInit && val) {\n fontFamily = valInit[0] === '$' ? valInit : val\n }\n\n if (key in validStyleProps) {\n mergeStyle(styleState, key, val)\n continue\n }\n\n // pass to view props\n if (!(variants && key in variants)) {\n if (!skipProps[key]) {\n viewProps[key] = val\n usedKeys[key] = 1\n }\n }\n }\n }\n\n fixStyles(style)\n if (isWeb) {\n styleToCSS(style)\n }\n\n // always do this at the very end to preserve the order strictly (animations, origin)\n // and allow proper merging of all pseudos before applying\n if (flatTransforms) {\n if (process.env.NODE_ENV === 'development' && debug) {\n // eslint-disable-next-line no-console\n console.log(\n 'Merging flat transforms, transform before',\n [...(style.transform || [])],\n flatTransforms\n )\n }\n mergeTransforms(style, flatTransforms, true)\n }\n\n // add in defaults if not set:\n if (parentSplitStyles) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (shouldDoClasses) {\n for (const key in parentSplitStyles.classNames) {\n const val = parentSplitStyles.classNames[key]\n if (key in style || key in classNames) continue\n classNames[key] = val\n }\n }\n }\n if (!shouldDoClasses) {\n for (const key in parentSplitStyles.style) {\n if (key in classNames || key in style) continue\n style[key] = parentSplitStyles.style[key]\n }\n }\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (shouldDoClasses) {\n if (style['$$css']) {\n // avoid re-processing for rnw\n } else {\n const atomic = getStylesAtomic(style)\n for (const atomicStyle of atomic) {\n const key = atomicStyle.property\n addStyleToInsertRules(rulesToInsert, atomicStyle)\n mergeClassName(transforms, classNames, key, atomicStyle.identifier)\n }\n if (!IS_STATIC) {\n style = {}\n }\n }\n }\n\n if (transforms) {\n for (const namespace in transforms) {\n if (!transforms[namespace]) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('Error no transform', transforms, namespace)\n }\n continue\n }\n const [hash, val] = transforms[namespace]\n const identifier = `_transform${hash}`\n if (isClient && !insertedTransforms[identifier]) {\n const rule = `.${identifier} { transform: ${val}; }`\n addStyleToInsertRules(rulesToInsert, {\n identifier,\n rules: [rule],\n property: namespace,\n })\n }\n classNames[namespace] = identifier\n }\n }\n }\n\n const result = {\n space,\n hasMedia,\n fontFamily,\n viewProps,\n style,\n pseudos,\n classNames,\n rulesToInsert,\n }\n\n if (className) {\n classNames.className = className\n }\n\n if (process.env.NODE_ENV === 'development' && debug === 'verbose') {\n if (isDevTools) {\n // eslint-disable-next-line no-console\n console.groupCollapsed(' \uD83D\uDD39 styles =>')\n // prettier-ignore\n const logs = { transforms, viewProps, state, rulesToInsert, parentSplitStyles, flatTransforms, result }\n for (const key in { ...result, ...logs }) {\n // eslint-disable-next-line no-console\n console.log(key, logs[key])\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n }\n\n cache.set(props, result)\n\n return result\n}\n\nfunction mergeClassName(\n transforms: Record<string, any[]>,\n classNames: Record<string, string>,\n key: string,\n val: string,\n isMediaOrPseudo = false\n) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n // empty classnames passed by compiler sometimes\n if (!val) return\n if (val[0] === '_' && val.startsWith('_transform-')) {\n const ns: TransformNamespaceKey = isMediaOrPseudo ? key : 'transform'\n let transform = insertedTransforms[val]\n if (isClient && !transform) {\n scanAllSheets() // HMR or loaded a new chunk\n transform = insertedTransforms[val]\n if (!transform && isWeb && val[0] !== '_') {\n transform = val // runtime insert\n }\n }\n transforms[ns] ||= ['', '']\n transforms[ns][0] += val.replace('_transform', '')\n // ssr doesn't need to do anything just make the right classname\n if (transform) {\n transforms[ns][1] += transform\n }\n } else {\n classNames[key] = val\n }\n }\n}\n\n/**\n * getSubStyle calls propMapper with props\n * those should be specific to the substyle, but fallback to the base props\n * so given props:\n *\n * { fontSize: 12, color: 'red', $sm: { color: 'blue' } }\n *\n * getSubStyle props should be a proxy that ends up like:\n *\n * { fontSize: 12, color: 'blue' }\n *\n * and to avoid re-creating it over and over, use a WeakMap\n */\nconst cache = new WeakMap()\nfunction getSubStyleProps(\n defaultProps: Object,\n baseProps: Object,\n specificProps: Object\n) {\n const key = specificProps || baseProps\n // can cache based only on specific it's always referentially consistent with base\n if (!cache.has(key)) {\n cache.set(key, {\n ...defaultProps,\n ...baseProps,\n ...specificProps,\n })\n }\n return cache.get(key)!\n}\n\nfunction mergeStyle(\n { usedKeys, classNames, flatTransforms, viewProps, style }: GetStyleState,\n key: string,\n val: any,\n dontSetUsed = false\n) {\n if (!dontSetUsed) {\n usedKeys[key] = usedKeys[key] || 1\n }\n if (val && val[0] === '_') {\n classNames[key] = val\n } else if (key in stylePropsTransform) {\n flatTransforms ||= {}\n flatTransforms[key] = val\n } else {\n const out = normalizeValueWithProperty(val, key)\n if (key in validStylesOnBaseProps) {\n viewProps[key] = out\n } else {\n style[key] = out\n }\n }\n}\n\nexport const getSubStyle = (\n styleState: GetStyleState,\n subKey: string,\n styleIn: Object,\n avoidDefaultProps?: boolean,\n avoidMergeTransform?: boolean\n): ViewStyle => {\n const { staticConfig, theme, props, state, conf, languageContext } = styleState\n const styleOut: ViewStyle = {}\n\n for (let key in styleIn) {\n const val = styleIn[key]\n key = conf.shorthands[key] || key\n const expanded = staticConfig.propMapper(\n key,\n val,\n theme,\n getSubStyleProps(staticConfig.defaultProps, props, props[subKey]),\n state,\n languageContext,\n avoidDefaultProps\n )\n if (!expanded) continue\n for (const [skey, sval] of expanded) {\n if (!avoidMergeTransform && skey in stylePropsTransform) {\n mergeTransform(styleOut, skey, sval)\n } else {\n styleOut[skey] = normalizeValueWithProperty(sval, key)\n }\n }\n }\n\n fixStyles(styleOut)\n\n return styleOut\n}\n\nexport const insertSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n insertStyleRules(res.rulesToInsert)\n return res\n}\n\n// on native no need to insert any css\nconst useInsertEffectCompat = isWeb\n ? useInsertionEffect || useIsomorphicLayoutEffect\n : () => {}\n\nexport const useSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n\n if (!isRSC) {\n useInsertEffectCompat(() => {\n insertStyleRules(res.rulesToInsert)\n }, [res.rulesToInsert])\n }\n\n return res\n}\n\nfunction addStyleToInsertRules(\n rulesToInsert: RulesToInsert,\n styleObject: PartialStyleObject\n) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (!shouldInsertStyleRules(styleObject)) {\n return\n }\n updateRules(styleObject.identifier, styleObject.rules)\n rulesToInsert.push(styleObject)\n }\n}\n\nfunction processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nconst animatableDefaults = {\n opacity: 1,\n scale: 1,\n rotate: '0deg',\n rotateY: '0deg',\n rotateX: '0deg',\n}\n\nconst lowercaseHyphenate = (match: string) => `-${match.toLowerCase()}`\nconst hyphenate = (str: string) => str.replace(/[A-Z]/g, lowercaseHyphenate)\n"],
5
+ "mappings": "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",
6
6
  "names": ["val", "style", "conf"]
7
7
  }
@@ -1,50 +1,29 @@
1
1
  import { isWeb } from "@tamagui/constants";
2
- import normalizeCSSColor from "normalize-css-color";
2
+ import normalizeCSSColor, { rgba } from "@tamagui/normalize-css-color";
3
+ import { rgba as rgba2 } from "@tamagui/normalize-css-color";
3
4
  const normalizeColor = (color, opacity) => {
4
- if (color == null || color === void 0) {
5
+ if (color === null || color === void 0) {
5
6
  return;
6
7
  }
7
- if (color[0] === "$" || isWeb && typeof color === "string" && (webColors[color] || color[0] === "_" || color.startsWith("var("))) {
8
+ if (color === "transparent") {
9
+ return `rgba(0,0,0,0)`;
10
+ }
11
+ if (color[0] === "$" || isWeb && (webColors[color] || color[0] === "_" || color.startsWith("var("))) {
8
12
  return color;
9
- } else {
10
- const rgba = colorToRGBA(color);
11
- if (rgba != null) {
12
- const [r, g, b, a] = rgba;
13
- const alpha = (opacity ?? a).toFixed(2);
14
- return `rgba(${r},${g},${b},${alpha})`;
15
- }
16
13
  }
17
- return color;
14
+ const colorProcessed = normalizeCSSColor(color);
15
+ if (colorProcessed !== null) {
16
+ const { r, g, b, a } = rgba(colorProcessed);
17
+ return `rgba(${r},${g},${b},${a.toFixed(2)})`;
18
+ }
18
19
  };
19
20
  const webColors = {
20
21
  currentColor: true,
21
22
  currentcolor: true,
22
- transparent: true,
23
23
  inherit: true
24
24
  };
25
- function colorToRGBA(color) {
26
- const ci = processColor(color);
27
- if (ci != null) {
28
- const r = ci >> 16 & 255;
29
- const g = ci >> 8 & 255;
30
- const b = ci & 255;
31
- const a = (ci >> 24 & 255) / 255;
32
- return [r, g, b, a];
33
- }
34
- return null;
35
- }
36
- const processColor = (color) => {
37
- if (color === void 0 || color === null) {
38
- return null;
39
- }
40
- const intColor = normalizeCSSColor(color);
41
- if (intColor === void 0 || intColor === null) {
42
- return null;
43
- }
44
- return (+intColor << 24 | +intColor >>> 8) >>> 0;
45
- };
46
25
  export {
47
- colorToRGBA,
48
- normalizeColor
26
+ normalizeColor,
27
+ rgba2 as rgba
49
28
  };
50
29
  //# sourceMappingURL=normalizeColor.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/normalizeColor.ts"],
4
- "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport normalizeCSSColor from 'normalize-css-color'\n\nexport const normalizeColor = (color?: number | string | null, opacity?: number) => {\n if (color == null || color === undefined) {\n return\n }\n if (\n color[0] === '$' ||\n (isWeb &&\n typeof color === 'string' &&\n (webColors[color] || color[0] === '_' || color.startsWith('var(')))\n ) {\n return color\n } else {\n const rgba = colorToRGBA(color)\n if (rgba != null) {\n const [r, g, b, a] = rgba\n const alpha = (opacity ?? a).toFixed(2)\n return `rgba(${r},${g},${b},${alpha})`\n }\n }\n return color\n}\n\nconst webColors = {\n currentColor: true,\n currentcolor: true,\n transparent: true,\n inherit: true,\n}\n\nexport function colorToRGBA(color: string | number) {\n const ci = processColor(color)\n if (ci != null) {\n const r = (ci >> 16) & 255\n const g = (ci >> 8) & 255\n const b = ci & 255\n const a = ((ci >> 24) & 255) / 255\n return [r, g, b, a] as const\n }\n return null\n}\n\nconst processColor = (color?: number | string) => {\n if (color === undefined || color === null) {\n return null\n }\n const intColor = normalizeCSSColor(color)\n if (intColor === undefined || intColor === null) {\n return null\n }\n return ((+intColor << 24) | (+intColor >>> 8)) >>> 0\n}\n"],
5
- "mappings": "AAAA,SAAS,aAAa;AACtB,OAAO,uBAAuB;AAEvB,MAAM,iBAAiB,CAAC,OAAgC,YAAqB;AAClF,MAAI,SAAS,QAAQ,UAAU,QAAW;AACxC;AAAA,EACF;AACA,MACE,MAAM,OAAO,OACZ,SACC,OAAO,UAAU,aAChB,UAAU,UAAU,MAAM,OAAO,OAAO,MAAM,WAAW,MAAM,IAClE;AACA,WAAO;AAAA,EACT,OAAO;AACL,UAAM,OAAO,YAAY,KAAK;AAC9B,QAAI,QAAQ,MAAM;AAChB,YAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI;AACrB,YAAM,SAAS,WAAW,GAAG,QAAQ,CAAC;AACtC,aAAO,QAAQ,KAAK,KAAK,KAAK;AAAA,IAChC;AAAA,EACF;AACA,SAAO;AACT;AAEA,MAAM,YAAY;AAAA,EAChB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,aAAa;AAAA,EACb,SAAS;AACX;AAEO,SAAS,YAAY,OAAwB;AAClD,QAAM,KAAK,aAAa,KAAK;AAC7B,MAAI,MAAM,MAAM;AACd,UAAM,IAAK,MAAM,KAAM;AACvB,UAAM,IAAK,MAAM,IAAK;AACtB,UAAM,IAAI,KAAK;AACf,UAAM,KAAM,MAAM,KAAM,OAAO;AAC/B,WAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAAA,EACpB;AACA,SAAO;AACT;AAEA,MAAM,eAAe,CAAC,UAA4B;AAChD,MAAI,UAAU,UAAa,UAAU,MAAM;AACzC,WAAO;AAAA,EACT;AACA,QAAM,WAAW,kBAAkB,KAAK;AACxC,MAAI,aAAa,UAAa,aAAa,MAAM;AAC/C,WAAO;AAAA,EACT;AACA,UAAS,CAAC,YAAY,KAAO,CAAC,aAAa,OAAQ;AACrD;",
6
- "names": []
4
+ "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport normalizeCSSColor, { rgba } from '@tamagui/normalize-css-color'\n\nexport { rgba } from '@tamagui/normalize-css-color'\n\nexport const normalizeColor = (color?: string | null, opacity?: number) => {\n if (color === null || color === undefined) {\n return\n }\n if (color === 'transparent') {\n return `rgba(0,0,0,0)`\n }\n if (\n color[0] === '$' ||\n (isWeb && (webColors[color] || color[0] === '_' || color.startsWith('var(')))\n ) {\n return color\n }\n const colorProcessed = normalizeCSSColor(color)\n if (colorProcessed !== null) {\n const { r, g, b, a } = rgba(colorProcessed)\n return `rgba(${r},${g},${b},${a.toFixed(2)})`\n }\n}\n\nconst webColors = {\n currentColor: true,\n currentcolor: true,\n inherit: true,\n}\n"],
5
+ "mappings": "AAAA,SAAS,aAAa;AACtB,OAAO,qBAAqB,YAAY;AAExC,SAAS,QAAAA,aAAY;AAEd,MAAM,iBAAiB,CAAC,OAAuB,YAAqB;AACzE,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC;AAAA,EACF;AACA,MAAI,UAAU,eAAe;AAC3B,WAAO;AAAA,EACT;AACA,MACE,MAAM,OAAO,OACZ,UAAU,UAAU,UAAU,MAAM,OAAO,OAAO,MAAM,WAAW,MAAM,IAC1E;AACA,WAAO;AAAA,EACT;AACA,QAAM,iBAAiB,kBAAkB,KAAK;AAC9C,MAAI,mBAAmB,MAAM;AAC3B,UAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,cAAc;AAC1C,WAAO,QAAQ,KAAK,KAAK,KAAK,EAAE,QAAQ,CAAC;AAAA,EAC3C;AACF;AAEA,MAAM,YAAY;AAAA,EAChB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,SAAS;AACX;",
6
+ "names": ["rgba"]
7
7
  }
@@ -15,7 +15,7 @@ function normalizeValueWithProperty(value, property) {
15
15
  res = `${value}px`;
16
16
  } else if (isWeb && property !== void 0 && stringNumbers[property]) {
17
17
  res = `${res}`;
18
- } else if (property && colorProps[property]) {
18
+ } else if (property && property in colorProps) {
19
19
  res = normalizeColor(value);
20
20
  cache[value] = res;
21
21
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/normalizeValueWithProperty.ts"],
4
- "sourcesContent": ["/**\n * Some parts adapted from react-native-web\n * Copyright (c) Nicolas Gallagher licensed under the MIT license.\n */\n\nimport { isWeb } from '@tamagui/constants'\n\nimport { getAllSelectors } from './insertStyleRule'\nimport { normalizeColor } from './normalizeColor'\n\nconst cache = {}\n\nexport function normalizeValueWithProperty(value: any, property?: string): any {\n const cached = cache[value]\n if (cached !== undefined) {\n return cached\n }\n if (property && property in unitlessNumbers) {\n return value\n }\n let res = value\n if (\n process.env.TAMAGUI_TARGET === 'web' &&\n typeof value === 'number' &&\n (property === undefined || !(unitlessNumbers[property] || stringNumbers[property]))\n ) {\n res = `${value}px`\n } else if (isWeb && property !== undefined && stringNumbers[property]) {\n res = `${res}`\n } else if (property && colorProps[property]) {\n res = normalizeColor(value)\n cache[value] = res\n }\n return res\n}\n\n// TODO react-native-web-lite\n\nconst colorProps = {\n backgroundColor: true,\n borderColor: true,\n borderTopColor: true,\n borderRightColor: true,\n borderBottomColor: true,\n borderLeftColor: true,\n color: true,\n shadowColor: true,\n textDecorationColor: true,\n textShadowColor: true,\n}\n\nconst stringNumbers = {\n zIndex: true,\n}\n\nconst unitlessNumbers = {\n WebkitLineClamp: true,\n animationIterationCount: true,\n aspectRatio: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexOrder: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n fontWeight: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowGap: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnGap: true,\n gridColumnStart: true,\n lineClamp: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zoom: true,\n scale: true,\n scaleX: true,\n scaleY: true,\n scaleZ: true,\n shadowOpacity: true,\n}\n\n// getting real values for colors for animations (reverse mapped from CSS)\n// this isn't beautiful, but will do relatively fine performance for now\nconst rcache = {}\nexport function reverseMapClassNameToValue(key: string, className: string) {\n const selectors = getAllSelectors()\n const cssRule = selectors[className]\n if (rcache[cssRule]) return rcache[cssRule]\n if (!cssRule) {\n return\n }\n const cssVal = cssRule.replace(/.*:/, '').replace(/;.*/, '').trim()\n let res: any\n if (cssVal.startsWith('var(')) {\n res = cssVal\n } else if (unitlessNumbers[key]) {\n res = +cssVal\n } else if (cssVal.endsWith('px')) {\n res = +cssVal.replace('px', '')\n } else {\n res = cssVal\n }\n rcache[cssRule] = res\n if (process.env.NODE_ENV === 'development') {\n // ensure we are parsing properly\n if (typeof res === 'number' && isNaN(res)) {\n // eslint-disable-next-line no-console\n console.log('Tamagui invalid parsed value, NaN:', {\n res,\n cssVal,\n cssRule,\n key,\n className,\n })\n }\n }\n return res\n}\n"],
5
- "mappings": "AAKA,SAAS,aAAa;AAEtB,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAE/B,MAAM,QAAQ,CAAC;AAER,SAAS,2BAA2B,OAAY,UAAwB;AAC7E,QAAM,SAAS,MAAM;AACrB,MAAI,WAAW,QAAW;AACxB,WAAO;AAAA,EACT;AACA,MAAI,YAAY,YAAY,iBAAiB;AAC3C,WAAO;AAAA,EACT;AACA,MAAI,MAAM;AACV,MACE,QAAQ,IAAI,mBAAmB,SAC/B,OAAO,UAAU,aAChB,aAAa,UAAa,EAAE,gBAAgB,aAAa,cAAc,aACxE;AACA,UAAM,GAAG;AAAA,EACX,WAAW,SAAS,aAAa,UAAa,cAAc,WAAW;AACrE,UAAM,GAAG;AAAA,EACX,WAAW,YAAY,WAAW,WAAW;AAC3C,UAAM,eAAe,KAAK;AAC1B,UAAM,SAAS;AAAA,EACjB;AACA,SAAO;AACT;AAIA,MAAM,aAAa;AAAA,EACjB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB;AAAA,EACrB,iBAAiB;AACnB;AAEA,MAAM,gBAAgB;AAAA,EACpB,QAAQ;AACV;AAEA,MAAM,kBAAkB;AAAA,EACtB,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,eAAe;AACjB;AAIA,MAAM,SAAS,CAAC;AACT,SAAS,2BAA2B,KAAa,WAAmB;AACzE,QAAM,YAAY,gBAAgB;AAClC,QAAM,UAAU,UAAU;AAC1B,MAAI,OAAO;AAAU,WAAO,OAAO;AACnC,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AACA,QAAM,SAAS,QAAQ,QAAQ,OAAO,EAAE,EAAE,QAAQ,OAAO,EAAE,EAAE,KAAK;AAClE,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM,GAAG;AAC7B,UAAM;AAAA,EACR,WAAW,gBAAgB,MAAM;AAC/B,UAAM,CAAC;AAAA,EACT,WAAW,OAAO,SAAS,IAAI,GAAG;AAChC,UAAM,CAAC,OAAO,QAAQ,MAAM,EAAE;AAAA,EAChC,OAAO;AACL,UAAM;AAAA,EACR;AACA,SAAO,WAAW;AAClB,MAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,QAAI,OAAO,QAAQ,YAAY,MAAM,GAAG,GAAG;AAEzC,cAAQ,IAAI,sCAAsC;AAAA,QAChD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;",
4
+ "sourcesContent": ["/**\n * Some parts adapted from react-native-web\n * Copyright (c) Nicolas Gallagher licensed under the MIT license.\n */\n\nimport { isWeb } from '@tamagui/constants'\n\nimport { getAllSelectors } from './insertStyleRule'\nimport { normalizeColor } from './normalizeColor'\n\nconst cache = {}\n\nexport function normalizeValueWithProperty(value: any, property?: string): any {\n const cached = cache[value]\n if (cached !== undefined) {\n return cached\n }\n if (property && property in unitlessNumbers) {\n return value\n }\n let res = value\n if (\n process.env.TAMAGUI_TARGET === 'web' &&\n typeof value === 'number' &&\n (property === undefined || !(unitlessNumbers[property] || stringNumbers[property]))\n ) {\n res = `${value}px`\n } else if (isWeb && property !== undefined && stringNumbers[property]) {\n res = `${res}`\n } else if (property && property in colorProps) {\n res = normalizeColor(value)\n cache[value] = res\n }\n return res\n}\n\n// TODO react-native-web-lite\n\nconst colorProps = {\n backgroundColor: true,\n borderColor: true,\n borderTopColor: true,\n borderRightColor: true,\n borderBottomColor: true,\n borderLeftColor: true,\n color: true,\n shadowColor: true,\n textDecorationColor: true,\n textShadowColor: true,\n}\n\nconst stringNumbers = {\n zIndex: true,\n}\n\nconst unitlessNumbers = {\n WebkitLineClamp: true,\n animationIterationCount: true,\n aspectRatio: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexOrder: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n fontWeight: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowGap: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnGap: true,\n gridColumnStart: true,\n lineClamp: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zoom: true,\n scale: true,\n scaleX: true,\n scaleY: true,\n scaleZ: true,\n shadowOpacity: true,\n}\n\n// getting real values for colors for animations (reverse mapped from CSS)\n// this isn't beautiful, but will do relatively fine performance for now\nconst rcache = {}\nexport function reverseMapClassNameToValue(key: string, className: string) {\n const selectors = getAllSelectors()\n const cssRule = selectors[className]\n if (rcache[cssRule]) return rcache[cssRule]\n if (!cssRule) {\n return\n }\n const cssVal = cssRule.replace(/.*:/, '').replace(/;.*/, '').trim()\n let res: any\n if (cssVal.startsWith('var(')) {\n res = cssVal\n } else if (unitlessNumbers[key]) {\n res = +cssVal\n } else if (cssVal.endsWith('px')) {\n res = +cssVal.replace('px', '')\n } else {\n res = cssVal\n }\n rcache[cssRule] = res\n if (process.env.NODE_ENV === 'development') {\n // ensure we are parsing properly\n if (typeof res === 'number' && isNaN(res)) {\n // eslint-disable-next-line no-console\n console.log('Tamagui invalid parsed value, NaN:', {\n res,\n cssVal,\n cssRule,\n key,\n className,\n })\n }\n }\n return res\n}\n"],
5
+ "mappings": "AAKA,SAAS,aAAa;AAEtB,SAAS,uBAAuB;AAChC,SAAS,sBAAsB;AAE/B,MAAM,QAAQ,CAAC;AAER,SAAS,2BAA2B,OAAY,UAAwB;AAC7E,QAAM,SAAS,MAAM;AACrB,MAAI,WAAW,QAAW;AACxB,WAAO;AAAA,EACT;AACA,MAAI,YAAY,YAAY,iBAAiB;AAC3C,WAAO;AAAA,EACT;AACA,MAAI,MAAM;AACV,MACE,QAAQ,IAAI,mBAAmB,SAC/B,OAAO,UAAU,aAChB,aAAa,UAAa,EAAE,gBAAgB,aAAa,cAAc,aACxE;AACA,UAAM,GAAG;AAAA,EACX,WAAW,SAAS,aAAa,UAAa,cAAc,WAAW;AACrE,UAAM,GAAG;AAAA,EACX,WAAW,YAAY,YAAY,YAAY;AAC7C,UAAM,eAAe,KAAK;AAC1B,UAAM,SAAS;AAAA,EACjB;AACA,SAAO;AACT;AAIA,MAAM,aAAa;AAAA,EACjB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,aAAa;AAAA,EACb,qBAAqB;AAAA,EACrB,iBAAiB;AACnB;AAEA,MAAM,gBAAgB;AAAA,EACpB,QAAQ;AACV;AAEA,MAAM,kBAAkB;AAAA,EACtB,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,eAAe;AACjB;AAIA,MAAM,SAAS,CAAC;AACT,SAAS,2BAA2B,KAAa,WAAmB;AACzE,QAAM,YAAY,gBAAgB;AAClC,QAAM,UAAU,UAAU;AAC1B,MAAI,OAAO;AAAU,WAAO,OAAO;AACnC,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AACA,QAAM,SAAS,QAAQ,QAAQ,OAAO,EAAE,EAAE,QAAQ,OAAO,EAAE,EAAE,KAAK;AAClE,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM,GAAG;AAC7B,UAAM;AAAA,EACR,WAAW,gBAAgB,MAAM;AAC/B,UAAM,CAAC;AAAA,EACT,WAAW,OAAO,SAAS,IAAI,GAAG;AAChC,UAAM,CAAC,OAAO,QAAQ,MAAM,EAAE;AAAA,EAChC,OAAO;AACL,UAAM;AAAA,EACR;AACA,SAAO,WAAW;AAClB,MAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,QAAI,OAAO,QAAQ,YAAY,MAAM,GAAG,GAAG;AAEzC,cAAQ,IAAI,sCAAsC;AAAA,QAChD;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/core",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -28,22 +28,22 @@
28
28
  "reset.css"
29
29
  ],
30
30
  "dependencies": {
31
- "@tamagui/compose-refs": "^1.0.6",
32
- "@tamagui/constants": "^1.0.6",
33
- "@tamagui/helpers": "^1.0.6",
34
- "@tamagui/react-native-use-pressable": "^1.0.6",
35
- "@tamagui/react-native-use-responder-events": "^1.0.6",
36
- "@tamagui/use-did-finish-ssr": "^1.0.6",
37
- "@tamagui/use-event": "^1.0.6",
38
- "@tamagui/use-force-update": "^1.0.6",
39
- "normalize-css-color": "^1.0.2"
31
+ "@tamagui/compose-refs": "^1.0.8",
32
+ "@tamagui/constants": "^1.0.8",
33
+ "@tamagui/helpers": "^1.0.8",
34
+ "@tamagui/normalize-css-color": "^1.0.8",
35
+ "@tamagui/react-native-use-pressable": "^1.0.8",
36
+ "@tamagui/react-native-use-responder-events": "^1.0.8",
37
+ "@tamagui/use-did-finish-ssr": "^1.0.8",
38
+ "@tamagui/use-event": "^1.0.8",
39
+ "@tamagui/use-force-update": "^1.0.8"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "react": "*",
43
43
  "react-dom": "*"
44
44
  },
45
45
  "devDependencies": {
46
- "@tamagui/build": "^1.0.6",
46
+ "@tamagui/build": "^1.0.8",
47
47
  "@testing-library/react": "^13.4.0",
48
48
  "csstype": "^3.0.10",
49
49
  "react": "^18.2.0",
@@ -629,6 +629,7 @@ export function createComponent<
629
629
  rnwStyle[name] = name
630
630
  }
631
631
  viewProps.style = [rnwStyle, ...(Array.isArray(style) ? style : [style])]
632
+
632
633
  if (process.env.NODE_ENV === 'development') {
633
634
  // turn debug data- props into dataSet in dev mode
634
635
  Object.keys(viewProps).forEach((key) => {
@@ -82,7 +82,7 @@ export class ThemeManager {
82
82
  })()
83
83
  if (shouldFlush) {
84
84
  // reset any derived state
85
- this.#allKeys = null
85
+ this._allKeys = null
86
86
  notify && this.notify()
87
87
  return this.state
88
88
  }
@@ -120,13 +120,13 @@ export class ThemeManager {
120
120
  )
121
121
  }
122
122
 
123
- #allKeys: Set<string> | null = null
123
+ _allKeys: Set<string> | null = null
124
124
  get allKeys() {
125
- this.#allKeys ??= new Set([
125
+ this._allKeys ||= new Set([
126
126
  ...(this.parentManager?.allKeys || []),
127
127
  ...Object.keys(this.state.theme || {}),
128
128
  ])
129
- return this.#allKeys
129
+ return this._allKeys
130
130
  }
131
131
 
132
132
  // gets value going up to parents
@@ -368,6 +368,11 @@ const resolveTokensAndVariants: StyleResolver = (
368
368
  return res
369
369
  }
370
370
 
371
+ const tokenCats = ['size', 'color', 'radius', 'space', 'zIndex'].map((name) => ({
372
+ name,
373
+ spreadName: `...${name}`,
374
+ }))
375
+
371
376
  // goes through specificity finding best matching variant function
372
377
  function getVariantDefinition(
373
378
  variant: any,
@@ -382,25 +387,16 @@ function getVariantDefinition(
382
387
  return variant[value]
383
388
  }
384
389
  const { tokensParsed } = conf
385
- if (variant['...size'] && value in tokensParsed.size) {
386
- return variant['...size']
387
- }
388
- if (variant['...color'] && value in tokensParsed.color) {
389
- return variant['...color']
390
- }
391
- if (variant['...radius'] && value in tokensParsed.radius) {
392
- return variant['...radius']
393
- }
394
- if (variant['...space'] && value in tokensParsed.space) {
395
- return variant['...space']
396
- }
397
- if (variant['...zIndex'] && value in tokensParsed.zIndex) {
398
- return variant['...zIndex']
390
+ for (const { name, spreadName } of tokenCats) {
391
+ if (variant[spreadName] && value in tokensParsed[name]) {
392
+ return variant[spreadName]
393
+ }
399
394
  }
400
395
  let fn: any
401
- if (typeof value === 'number') {
396
+ const type = typeof value
397
+ if (type === 'number') {
402
398
  fn = variant[':number']
403
- } else if (typeof value === 'string') {
399
+ } else if (type === 'string') {
404
400
  fn = variant[':string']
405
401
  } else if (value === true || value === false) {
406
402
  fn = variant[':boolean']
@@ -1,8 +1,9 @@
1
1
  import { isWeb } from '@tamagui/constants'
2
+ import normalizeCSSColor from '@tamagui/normalize-css-color'
2
3
 
3
4
  import { getConfig } from '../config'
4
5
  import { expandStyle } from './expandStyle'
5
- import { colorToRGBA, normalizeColor } from './normalizeColor'
6
+ import { normalizeColor, rgba } from './normalizeColor'
6
7
  import { normalizeValueWithProperty } from './normalizeValueWithProperty.js'
7
8
  import { pseudoDescriptors } from './pseudoDescriptors'
8
9
 
@@ -85,8 +86,8 @@ function normalizeShadow({
85
86
  ...(process.env.TAMAGUI_TARGET === 'native' &&
86
87
  (() => {
87
88
  // on native fix bug - shadows behave better if turned into non-alpha rgb() + shadowOpacity
88
- const rgba = colorToRGBA(colorStr)
89
- if (!rgba) {
89
+ const val = normalizeCSSColor(colorStr)
90
+ if (!val) {
90
91
  if (process.env.NODE_ENV === 'development') {
91
92
  // eslint-disable-next-line no-console
92
93
  console.warn('No rgba form', colorStr)
@@ -96,7 +97,7 @@ function normalizeShadow({
96
97
  shadowOpacity,
97
98
  }
98
99
  }
99
- const [r, g, b, a] = rgba
100
+ const { r, g, b, a } = rgba(val)
100
101
  return {
101
102
  shadowColor: `rgb(${r},${g},${b})`,
102
103
  shadowOpacity: shadowOpacity ?? a,
@@ -347,6 +347,13 @@ export const getSplitStyles: StyleSplitter = (
347
347
  }
348
348
  }
349
349
 
350
+ if (keyInit === 'dataSet') {
351
+ for (const key in valInit) {
352
+ viewProps[`data-${hyphenate(key)}`] = valInit[key]
353
+ }
354
+ continue
355
+ }
356
+
350
357
  if (keyInit === 'style' || keyInit.startsWith('_style')) {
351
358
  if (!valInit) continue
352
359
  const styles = Array.isArray(valInit) ? valInit : [valInit]
@@ -1091,3 +1098,6 @@ const animatableDefaults = {
1091
1098
  rotateY: '0deg',
1092
1099
  rotateX: '0deg',
1093
1100
  }
1101
+
1102
+ const lowercaseHyphenate = (match: string) => `-${match.toLowerCase()}`
1103
+ const hyphenate = (str: string) => str.replace(/[A-Z]/g, lowercaseHyphenate)