@tamagui/core 1.0.0-alpha.11 → 1.0.0-alpha.12

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 (241) hide show
  1. package/dist/cjs/types.js.map +1 -1
  2. package/dist/esm/constants/constants.js +14 -0
  3. package/dist/esm/constants/constants.js.map +7 -0
  4. package/dist/esm/constants/platform.js +19 -0
  5. package/dist/esm/constants/platform.js.map +7 -0
  6. package/dist/esm/constants/pseudos.js +18 -0
  7. package/dist/esm/constants/pseudos.js.map +7 -0
  8. package/dist/esm/constants/rnw.js +22 -0
  9. package/dist/esm/constants/rnw.js.map +7 -0
  10. package/dist/esm/createComponent.js +464 -0
  11. package/dist/esm/createComponent.js.map +7 -0
  12. package/dist/esm/createFont.js +28 -0
  13. package/dist/esm/createFont.js.map +7 -0
  14. package/dist/esm/createShorthands.js +10 -0
  15. package/dist/esm/createShorthands.js.map +7 -0
  16. package/dist/esm/createTamagui.js +168 -0
  17. package/dist/esm/createTamagui.js.map +7 -0
  18. package/dist/esm/createTheme.js +20 -0
  19. package/dist/esm/createTheme.js.map +7 -0
  20. package/dist/esm/createTokens.js +33 -0
  21. package/dist/esm/createTokens.js.map +7 -0
  22. package/dist/esm/createVariable.js +25 -0
  23. package/dist/esm/createVariable.js.map +7 -0
  24. package/dist/esm/helpers/addStylesUsingClassname.js +57 -0
  25. package/dist/esm/helpers/addStylesUsingClassname.js.map +7 -0
  26. package/dist/esm/helpers/createMediaStyle.js +34 -0
  27. package/dist/esm/helpers/createMediaStyle.js.map +7 -0
  28. package/dist/esm/helpers/createPropMapper.js +160 -0
  29. package/dist/esm/helpers/createPropMapper.js.map +7 -0
  30. package/dist/esm/helpers/createTamaguiProvider.js +25 -0
  31. package/dist/esm/helpers/createTamaguiProvider.js.map +7 -0
  32. package/dist/esm/helpers/extendStaticConfig.js +59 -0
  33. package/dist/esm/helpers/extendStaticConfig.js.map +7 -0
  34. package/dist/esm/helpers/fixNativeShadow.js +8 -0
  35. package/dist/esm/helpers/fixNativeShadow.js.map +7 -0
  36. package/dist/esm/helpers/fixNativeShadow.native.js +30 -0
  37. package/dist/esm/helpers/fixNativeShadow.native.js.map +7 -0
  38. package/dist/esm/helpers/getSplitStyles.js +150 -0
  39. package/dist/esm/helpers/getSplitStyles.js.map +7 -0
  40. package/dist/esm/helpers/getStylesAtomic.js +83 -0
  41. package/dist/esm/helpers/getStylesAtomic.js.map +7 -0
  42. package/dist/esm/helpers/getStylesAtomic.native.js +10 -0
  43. package/dist/esm/helpers/getStylesAtomic.native.js.map +7 -0
  44. package/dist/esm/helpers/insertStyleRule.js +24 -0
  45. package/dist/esm/helpers/insertStyleRule.js.map +7 -0
  46. package/dist/esm/helpers/isObj.js +7 -0
  47. package/dist/esm/helpers/isObj.js.map +7 -0
  48. package/dist/esm/helpers/isTamaguiElement.js +10 -0
  49. package/dist/esm/helpers/isTamaguiElement.js.map +7 -0
  50. package/dist/esm/helpers/matchMedia.js +18 -0
  51. package/dist/esm/helpers/matchMedia.js.map +7 -0
  52. package/dist/esm/helpers/matchMedia.native.js +9 -0
  53. package/dist/esm/helpers/matchMedia.native.js.map +7 -0
  54. package/dist/esm/helpers/themeable.js +26 -0
  55. package/dist/esm/helpers/themeable.js.map +7 -0
  56. package/dist/esm/helpers/validate.js +60 -0
  57. package/dist/esm/helpers/validate.js.map +7 -0
  58. package/dist/esm/hooks/useConstant.js +15 -0
  59. package/dist/esm/hooks/useConstant.js.map +7 -0
  60. package/dist/esm/hooks/useFeatures.js +63 -0
  61. package/dist/esm/hooks/useFeatures.js.map +7 -0
  62. package/dist/esm/hooks/useMedia.js +173 -0
  63. package/dist/esm/hooks/useMedia.js.map +7 -0
  64. package/dist/esm/hooks/usePressable.js +13 -0
  65. package/dist/esm/hooks/usePressable.js.map +7 -0
  66. package/dist/esm/hooks/useTheme.js +89 -0
  67. package/dist/esm/hooks/useTheme.js.map +7 -0
  68. package/dist/esm/index.js +32 -0
  69. package/dist/esm/index.js.map +7 -0
  70. package/dist/esm/static/postProcessStyles.js +18 -0
  71. package/dist/esm/static/postProcessStyles.js.map +7 -0
  72. package/dist/esm/static.js +15 -0
  73. package/dist/esm/static.js.map +7 -0
  74. package/dist/esm/styled.js +21 -0
  75. package/dist/esm/styled.js.map +7 -0
  76. package/dist/esm/types.js +1 -0
  77. package/dist/esm/types.js.map +7 -0
  78. package/dist/esm/views/Animated.js +79 -0
  79. package/dist/esm/views/Animated.js.map +7 -0
  80. package/dist/esm/views/Stack.js +12 -0
  81. package/dist/esm/views/Stack.js.map +7 -0
  82. package/dist/esm/views/Text.js +60 -0
  83. package/dist/esm/views/Text.js.map +7 -0
  84. package/dist/esm/views/TextAncestorContext.js +18 -0
  85. package/dist/esm/views/TextAncestorContext.js.map +7 -0
  86. package/dist/esm/views/Theme.js +68 -0
  87. package/dist/esm/views/Theme.js.map +7 -0
  88. package/dist/esm/views/ThemeContext.js +6 -0
  89. package/dist/esm/views/ThemeContext.js.map +7 -0
  90. package/dist/esm/views/ThemeInverse.js +26 -0
  91. package/dist/esm/views/ThemeInverse.js.map +7 -0
  92. package/dist/esm/views/ThemeManagerContext.js +61 -0
  93. package/dist/esm/views/ThemeManagerContext.js.map +7 -0
  94. package/dist/esm/views/ThemeProvider.js +45 -0
  95. package/dist/esm/views/ThemeProvider.js.map +7 -0
  96. package/dist/jsx/constants/constants.js +13 -0
  97. package/dist/jsx/constants/platform.js +18 -0
  98. package/dist/jsx/constants/pseudos.js +17 -0
  99. package/dist/jsx/constants/rnw.js +21 -0
  100. package/dist/jsx/createComponent.js +458 -0
  101. package/dist/jsx/createFont.js +27 -0
  102. package/dist/jsx/createShorthands.js +9 -0
  103. package/dist/jsx/createTamagui.js +167 -0
  104. package/dist/jsx/createTheme.js +19 -0
  105. package/dist/jsx/createTokens.js +32 -0
  106. package/dist/jsx/createVariable.js +24 -0
  107. package/dist/jsx/helpers/addStylesUsingClassname.js +56 -0
  108. package/dist/jsx/helpers/createMediaStyle.js +33 -0
  109. package/dist/jsx/helpers/createPropMapper.js +159 -0
  110. package/dist/jsx/helpers/createTamaguiProvider.js +19 -0
  111. package/dist/jsx/helpers/extendStaticConfig.js +58 -0
  112. package/dist/jsx/helpers/fixNativeShadow.js +7 -0
  113. package/dist/jsx/helpers/fixNativeShadow.native.js +29 -0
  114. package/dist/jsx/helpers/getSplitStyles.js +149 -0
  115. package/dist/jsx/helpers/getStylesAtomic.js +82 -0
  116. package/dist/jsx/helpers/getStylesAtomic.native.js +9 -0
  117. package/dist/jsx/helpers/insertStyleRule.js +23 -0
  118. package/dist/jsx/helpers/isObj.js +6 -0
  119. package/dist/jsx/helpers/isTamaguiElement.js +9 -0
  120. package/dist/jsx/helpers/matchMedia.js +17 -0
  121. package/dist/jsx/helpers/matchMedia.native.js +8 -0
  122. package/dist/jsx/helpers/themeable.js +23 -0
  123. package/dist/jsx/helpers/validate.js +59 -0
  124. package/dist/jsx/hooks/useConstant.js +14 -0
  125. package/dist/jsx/hooks/useFeatures.js +57 -0
  126. package/dist/jsx/hooks/useMedia.js +172 -0
  127. package/dist/jsx/hooks/usePressable.js +12 -0
  128. package/dist/jsx/hooks/useTheme.js +88 -0
  129. package/dist/jsx/index.js +31 -0
  130. package/dist/jsx/static/postProcessStyles.js +17 -0
  131. package/dist/jsx/static.js +14 -0
  132. package/dist/jsx/styled.js +20 -0
  133. package/dist/jsx/types.js +0 -0
  134. package/dist/jsx/views/Animated.js +74 -0
  135. package/dist/jsx/views/Stack.js +11 -0
  136. package/dist/jsx/views/Text.js +59 -0
  137. package/dist/jsx/views/TextAncestorContext.js +14 -0
  138. package/dist/jsx/views/Theme.js +62 -0
  139. package/dist/jsx/views/ThemeContext.js +5 -0
  140. package/dist/jsx/views/ThemeInverse.js +22 -0
  141. package/dist/jsx/views/ThemeManagerContext.js +60 -0
  142. package/dist/jsx/views/ThemeProvider.js +39 -0
  143. package/package.json +10 -11
  144. package/src/createComponent.tsx +1 -1
  145. package/src/types.tsx +6 -6
  146. package/src/views/Text.tsx +2 -1
  147. package/types/constants/constants.d.ts +8 -0
  148. package/types/constants/constants.d.ts.map +1 -0
  149. package/types/constants/platform.d.ts +9 -0
  150. package/types/constants/platform.d.ts.map +1 -0
  151. package/types/constants/pseudos.d.ts +15 -0
  152. package/types/constants/pseudos.d.ts.map +1 -0
  153. package/types/constants/rnw.d.ts +2 -0
  154. package/types/constants/rnw.d.ts.map +1 -0
  155. package/types/createComponent.d.ts +17 -0
  156. package/types/createComponent.d.ts.map +1 -0
  157. package/types/createFont.d.ts +3 -0
  158. package/types/createFont.d.ts.map +1 -0
  159. package/types/createShorthands.d.ts +2 -0
  160. package/types/createShorthands.d.ts.map +1 -0
  161. package/types/createTamagui.d.ts +38 -0
  162. package/types/createTamagui.d.ts.map +1 -0
  163. package/types/createTheme.d.ts +5 -0
  164. package/types/createTheme.d.ts.map +1 -0
  165. package/types/createTokens.d.ts +55 -0
  166. package/types/createTokens.d.ts.map +1 -0
  167. package/types/createVariable.d.ts +15 -0
  168. package/types/createVariable.d.ts.map +1 -0
  169. package/types/helpers/addStylesUsingClassname.d.ts +3 -0
  170. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -0
  171. package/types/helpers/createMediaStyle.d.ts +8 -0
  172. package/types/helpers/createMediaStyle.d.ts.map +1 -0
  173. package/types/helpers/createPropMapper.d.ts +3 -0
  174. package/types/helpers/createPropMapper.d.ts.map +1 -0
  175. package/types/helpers/createTamaguiProvider.d.ts +5 -0
  176. package/types/helpers/createTamaguiProvider.d.ts.map +1 -0
  177. package/types/helpers/extendStaticConfig.d.ts +5 -0
  178. package/types/helpers/extendStaticConfig.d.ts.map +1 -0
  179. package/types/helpers/fixNativeShadow.d.ts +2 -0
  180. package/types/helpers/fixNativeShadow.d.ts.map +1 -0
  181. package/types/helpers/fixNativeShadow.native.d.ts +2 -0
  182. package/types/helpers/fixNativeShadow.native.d.ts.map +1 -0
  183. package/types/helpers/getSplitStyles.d.ts +15 -0
  184. package/types/helpers/getSplitStyles.d.ts.map +1 -0
  185. package/types/helpers/getStylesAtomic.d.ts +3 -0
  186. package/types/helpers/getStylesAtomic.d.ts.map +1 -0
  187. package/types/helpers/getStylesAtomic.native.d.ts +2 -0
  188. package/types/helpers/getStylesAtomic.native.d.ts.map +1 -0
  189. package/types/helpers/insertStyleRule.d.ts +2 -0
  190. package/types/helpers/insertStyleRule.d.ts.map +1 -0
  191. package/types/helpers/isObj.d.ts +2 -0
  192. package/types/helpers/isObj.d.ts.map +1 -0
  193. package/types/helpers/isTamaguiElement.d.ts +3 -0
  194. package/types/helpers/isTamaguiElement.d.ts.map +1 -0
  195. package/types/helpers/matchMedia.d.ts +2 -0
  196. package/types/helpers/matchMedia.d.ts.map +1 -0
  197. package/types/helpers/matchMedia.native.d.ts +3 -0
  198. package/types/helpers/matchMedia.native.d.ts.map +1 -0
  199. package/types/helpers/themeable.d.ts +10 -0
  200. package/types/helpers/themeable.d.ts.map +1 -0
  201. package/types/helpers/validate.d.ts +4 -0
  202. package/types/helpers/validate.d.ts.map +1 -0
  203. package/types/hooks/useConstant.d.ts +2 -0
  204. package/types/hooks/useConstant.d.ts.map +1 -0
  205. package/types/hooks/useFeatures.d.ts +5 -0
  206. package/types/hooks/useFeatures.d.ts.map +1 -0
  207. package/types/hooks/useMedia.d.ts +16 -0
  208. package/types/hooks/useMedia.d.ts.map +1 -0
  209. package/types/hooks/usePressable.d.ts +3 -0
  210. package/types/hooks/usePressable.d.ts.map +1 -0
  211. package/types/hooks/useTheme.d.ts +20 -0
  212. package/types/hooks/useTheme.d.ts.map +1 -0
  213. package/types/index.d.ts +29 -0
  214. package/types/index.d.ts.map +1 -0
  215. package/types/static/postProcessStyles.d.ts +7 -0
  216. package/types/static/postProcessStyles.d.ts.map +1 -0
  217. package/types/static.d.ts +15 -0
  218. package/types/static.d.ts.map +1 -0
  219. package/types/styled.d.ts +21 -0
  220. package/types/styled.d.ts.map +1 -0
  221. package/types/types.d.ts +306 -0
  222. package/types/types.d.ts.map +1 -0
  223. package/types/views/Animated.d.ts +15 -0
  224. package/types/views/Animated.d.ts.map +1 -0
  225. package/types/views/Stack.d.ts +3 -0
  226. package/types/views/Stack.d.ts.map +1 -0
  227. package/types/views/Text.d.ts +3 -0
  228. package/types/views/Text.d.ts.map +1 -0
  229. package/types/views/TextAncestorContext.d.ts +3 -0
  230. package/types/views/TextAncestorContext.d.ts.map +1 -0
  231. package/types/views/Theme.d.ts +8 -0
  232. package/types/views/Theme.d.ts.map +1 -0
  233. package/types/views/ThemeContext.d.ts +18 -0
  234. package/types/views/ThemeContext.d.ts.map +1 -0
  235. package/types/views/ThemeInverse.d.ts +10 -0
  236. package/types/views/ThemeInverse.d.ts.map +1 -0
  237. package/types/views/ThemeManagerContext.d.ts +22 -0
  238. package/types/views/ThemeManagerContext.d.ts.map +1 -0
  239. package/types/views/ThemeProvider.d.ts +10 -0
  240. package/types/views/ThemeProvider.d.ts.map +1 -0
  241. package/types.d.ts +0 -559
@@ -0,0 +1,149 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import {
4
+ AllRules,
5
+ stylePropsText,
6
+ stylePropsTransform,
7
+ validStyles,
8
+ validStylesPseudo
9
+ } from "@tamagui/helpers";
10
+ import { isWeb } from "../constants/platform";
11
+ import { mediaQueryConfig, mediaState } from "../hooks/useMedia";
12
+ import { createMediaStyle } from "./createMediaStyle";
13
+ import { fixNativeShadow } from "./fixNativeShadow";
14
+ import { getStylesAtomic } from "./getStylesAtomic";
15
+ import { insertStyleRule } from "./insertStyleRule";
16
+ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, isSplittingDefaultProps) => {
17
+ const validStyleProps = staticConfig.isText ? stylePropsText : validStyles;
18
+ const viewProps = {};
19
+ const style = [];
20
+ let pseudos = null;
21
+ let cur = null;
22
+ let classNames = null;
23
+ for (const keyInit in props) {
24
+ const valInit = props[keyInit];
25
+ if (keyInit[0] === "$") {
26
+ const mediaKey = keyInit.slice(1);
27
+ if (!mediaQueryConfig[mediaKey]) {
28
+ viewProps[keyInit] = valInit;
29
+ continue;
30
+ }
31
+ const mediaProps = { ...props, ...valInit };
32
+ const mediaStyle = getSubStyle(valInit, staticConfig, theme, props);
33
+ if (isWeb) {
34
+ const mediaStyles = getStylesAtomic(mediaStyle);
35
+ if (process.env.NODE_ENV === "development") {
36
+ if (props["debug"]) {
37
+ console.log("mediaStyles", keyInit, { mediaProps, mediaStyle, mediaStyles });
38
+ }
39
+ }
40
+ for (const style2 of mediaStyles) {
41
+ const out2 = createMediaStyle(style2, mediaKey, mediaQueryConfig);
42
+ classNames = classNames || [];
43
+ classNames.push(out2.identifier);
44
+ AllRules.add(out2.styleRule);
45
+ insertStyleRule(out2.styleRule);
46
+ if (process.env.NODE_ENV === "development" && props["debug"]) {
47
+ console.log("mediaProp", style2.identifier, out2, mediaProps, mediaStyle, mediaStyles);
48
+ }
49
+ }
50
+ } else {
51
+ if (mediaState[mediaKey]) {
52
+ style.push(mediaStyle);
53
+ }
54
+ }
55
+ continue;
56
+ }
57
+ if (validStylesPseudo[keyInit]) {
58
+ if (!valInit)
59
+ continue;
60
+ pseudos = pseudos || {};
61
+ pseudos[keyInit] = getSubStyle(valInit, staticConfig, theme, props);
62
+ continue;
63
+ }
64
+ const out = staticConfig.propMapper(keyInit, valInit, theme, props);
65
+ const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out);
66
+ for (const [key, val] of expanded) {
67
+ const keyFirstChar = key[0];
68
+ if (key === "style" || keyFirstChar === "_" && key.startsWith("_style")) {
69
+ if (cur) {
70
+ fixNativeShadow(cur);
71
+ style.push(cur);
72
+ cur = null;
73
+ }
74
+ fixNativeShadow(val);
75
+ style.push(val);
76
+ continue;
77
+ }
78
+ if (key === "flex") {
79
+ cur = cur || {};
80
+ Object.assign(cur, {
81
+ flexGrow: val,
82
+ flexShrink: 1
83
+ });
84
+ continue;
85
+ }
86
+ if (!isWeb && key === "pointerEvents") {
87
+ viewProps[key] = val;
88
+ continue;
89
+ }
90
+ if (validStyleProps[key]) {
91
+ if (key in stylePropsTransform) {
92
+ cur = cur || {};
93
+ mergeTransform(cur, key, val);
94
+ continue;
95
+ }
96
+ cur = cur || {};
97
+ cur[key] = val;
98
+ continue;
99
+ }
100
+ if (!staticConfig.variants || !(key in staticConfig.variants)) {
101
+ viewProps[key] = val;
102
+ }
103
+ }
104
+ }
105
+ if (cur) {
106
+ fixNativeShadow(cur);
107
+ style.push(cur);
108
+ }
109
+ if (process.env.NODE_ENV === "development") {
110
+ if (props["debug"]) {
111
+ console.log(" \u{1F95A} splitProps:", { props, viewProps, style });
112
+ }
113
+ }
114
+ return {
115
+ viewProps,
116
+ style,
117
+ pseudos,
118
+ classNames
119
+ };
120
+ }, "getSplitStyles");
121
+ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props) => {
122
+ const styleOut = {};
123
+ for (const key in styleIn) {
124
+ const val = styleIn[key];
125
+ const out = staticConfig.propMapper(key, val, theme, props);
126
+ const expanded = out === true || !out ? [[key, val]] : Object.entries(out);
127
+ for (const [skey, sval] of expanded) {
128
+ if (skey in stylePropsTransform) {
129
+ mergeTransform(styleOut, skey, sval);
130
+ } else {
131
+ styleOut[skey] = sval;
132
+ }
133
+ }
134
+ }
135
+ fixNativeShadow(styleOut);
136
+ return styleOut;
137
+ }, "getSubStyle");
138
+ const mapTransformKeys = {
139
+ x: "translateX",
140
+ y: "translateY"
141
+ };
142
+ const mergeTransform = /* @__PURE__ */ __name((obj, key, val) => {
143
+ const transform = obj.transform ? Array.isArray(obj.transform) ? obj.transform : [obj.transform] : [];
144
+ transform.push({ [mapTransformKeys[key] || key]: val });
145
+ obj.transform = transform;
146
+ }, "mergeTransform");
147
+ export {
148
+ getSplitStyles
149
+ };
@@ -0,0 +1,82 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { AllRules } from "@tamagui/helpers";
4
+ import { pseudos } from "../constants/pseudos";
5
+ import { rnw } from "../constants/rnw";
6
+ const generateStyle = /* @__PURE__ */ __name((style) => {
7
+ const { atomic, createCompileableStyle, createReactDOMStyle, i18Style } = rnw;
8
+ return {
9
+ ...atomic(createCompileableStyle(createReactDOMStyle(i18Style(style))))
10
+ };
11
+ }, "generateStyle");
12
+ const borderDefaults = {
13
+ borderWidth: "borderStyle",
14
+ borderBottomWidth: "borderBottomStyle",
15
+ borderTopWidth: "borderTopStyle",
16
+ borderLeftWidth: "borderLeftStyle",
17
+ borderRightWidth: "borderRightStyle"
18
+ };
19
+ function getStylesAtomic(style, avoidCollection = false) {
20
+ const styles = {
21
+ base: {}
22
+ };
23
+ for (const key in style) {
24
+ if (!!pseudos[key]) {
25
+ styles[key] = style[key];
26
+ } else {
27
+ styles.base[key] = style[key];
28
+ }
29
+ }
30
+ return Object.keys(styles).map((key) => {
31
+ return getAtomicStyle(styles[key], pseudos[key], avoidCollection);
32
+ }).flat();
33
+ }
34
+ __name(getStylesAtomic, "getStylesAtomic");
35
+ const importantRegex = /\!important*/g;
36
+ function getAtomicStyle(style, pseudo, avoidCollection) {
37
+ if (style == null || typeof style !== "object") {
38
+ throw new Error(`Wrong style type: "${typeof style}": ${style}`);
39
+ }
40
+ for (const key in borderDefaults) {
41
+ if (key in style) {
42
+ style[borderDefaults[key]] = style[borderDefaults[key]] ?? "solid";
43
+ }
44
+ }
45
+ const all = generateStyle(style);
46
+ return Object.keys(all).map((key) => {
47
+ const val = all[key];
48
+ const hash = val.identifier.slice(`${val.identifier}`.lastIndexOf("-") + 1);
49
+ const psuedoPrefix = pseudo ? `-${pseudo.name}-` : "";
50
+ const identifier = `_${val.property}-${psuedoPrefix}${hash}`;
51
+ const className = `.${identifier}`;
52
+ const rules = val.rules.map((rule) => {
53
+ if (pseudo) {
54
+ const psuedoPrefixSelect = [...Array(pseudo.priority)].map(() => ":root").join("") + " ";
55
+ let res = rule.replace(`.${val.identifier}`, `${psuedoPrefixSelect} ${className}`).replace("{", `:${pseudo.name}{`);
56
+ if (pseudo.name === "hover") {
57
+ res = `@media not all and (hover: none) { ${res} }`;
58
+ }
59
+ return res;
60
+ }
61
+ return rule.replace(`.${val.identifier}`, className).replace(importantRegex, "");
62
+ });
63
+ if (!avoidCollection) {
64
+ if (rules.length > 1) {
65
+ console.warn("have never seen more than one, verifying");
66
+ }
67
+ AllRules.add(rules[0]);
68
+ }
69
+ const result = {
70
+ property: val.property,
71
+ value: val.value,
72
+ identifier,
73
+ className,
74
+ rules
75
+ };
76
+ return result;
77
+ });
78
+ }
79
+ __name(getAtomicStyle, "getAtomicStyle");
80
+ export {
81
+ getStylesAtomic
82
+ };
@@ -0,0 +1,9 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ function getStylesAtomic() {
4
+ console.warn("no-op native");
5
+ }
6
+ __name(getStylesAtomic, "getStylesAtomic");
7
+ export {
8
+ getStylesAtomic
9
+ };
@@ -0,0 +1,23 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { isWeb } from "../constants/platform";
4
+ function insertStyleRule(rule) {
5
+ if (typeof window === "undefined") {
6
+ return;
7
+ }
8
+ if (process.env.NODE_ENV === "development") {
9
+ if (!isWeb) {
10
+ console.warn("non web platform, dont use this");
11
+ return;
12
+ }
13
+ }
14
+ const sheet = window.document.styleSheets[0];
15
+ if (!sheet) {
16
+ return;
17
+ }
18
+ sheet.insertRule(rule, sheet.cssRules.length);
19
+ }
20
+ __name(insertStyleRule, "insertStyleRule");
21
+ export {
22
+ insertStyleRule
23
+ };
@@ -0,0 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ const isObj = /* @__PURE__ */ __name((x) => x && !Array.isArray(x) && typeof x === "object", "isObj");
4
+ export {
5
+ isObj
6
+ };
@@ -0,0 +1,9 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { isValidElement } from "react";
4
+ const isTamaguiElement = /* @__PURE__ */ __name((child) => {
5
+ return isValidElement(child) && !!child.type["staticConfig"]?.parsed;
6
+ }, "isTamaguiElement");
7
+ export {
8
+ isTamaguiElement
9
+ };
@@ -0,0 +1,17 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ const matchMedia = typeof window !== "undefined" && window.matchMedia || /* @__PURE__ */ __name(function matchMediaFallback(query) {
4
+ return {
5
+ addListener() {
6
+ if (process.env.NODE_ENV === "development" && !process.env.IS_STATIC && process.env.TAMAGUI_TARGET !== "web") {
7
+ console.log("warning: matchMedia not loading! Is native picking up .native.js files?");
8
+ }
9
+ },
10
+ removeListener() {
11
+ },
12
+ matches: false
13
+ };
14
+ }, "matchMediaFallback");
15
+ export {
16
+ matchMedia
17
+ };
@@ -0,0 +1,8 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import MediaQueryList from "@expo/match-media/build/MediaQueryList.js";
4
+ const matchMedia = /* @__PURE__ */ __name((media) => new MediaQueryList(media), "matchMedia");
5
+ globalThis["matchMedia"] = matchMedia;
6
+ export {
7
+ matchMedia
8
+ };
@@ -0,0 +1,23 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import React, { forwardRef } from "react";
4
+ import { Theme } from "../views/Theme";
5
+ import { ThemeInverse } from "../views/ThemeInverse";
6
+ const themeable = /* @__PURE__ */ __name(function graphql(component) {
7
+ const withThemeComponent = forwardRef(/* @__PURE__ */ __name(function WithTheme({ themeInverse, ...rest }, ref) {
8
+ const el = React.createElement(component, { ...rest, ref });
9
+ if (themeInverse) {
10
+ return <ThemeInverse>{el}</ThemeInverse>;
11
+ }
12
+ if (rest.theme) {
13
+ return <Theme name={rest.theme || null}>{el}</Theme>;
14
+ }
15
+ return el;
16
+ }, "WithTheme"));
17
+ const withTheme = withThemeComponent;
18
+ withTheme.displayName = `Themed(${component?.displayName || component?.name || "Anonymous"})`;
19
+ return withTheme;
20
+ }, "graphql");
21
+ export {
22
+ themeable
23
+ };
@@ -0,0 +1,59 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import ow from "@tamagui/ow";
4
+ const validateConfig = /* @__PURE__ */ __name((conf) => {
5
+ if (!conf) {
6
+ console.warn("no conf?");
7
+ return;
8
+ }
9
+ try {
10
+ ow(conf, validConfig);
11
+ } catch (err) {
12
+ console.log("Given config:\n", JSON.stringify(conf, null, 2));
13
+ throw err;
14
+ }
15
+ }, "validateConfig");
16
+ const validConfig = ow.object.exactShape({
17
+ defaultTheme: ow.optional.string,
18
+ disableRootThemeClass: ow.optional.boolean,
19
+ shorthands: ow.optional.object.valuesOfType(ow.string),
20
+ themes: ow.object.valuesOfType(ow.object),
21
+ tokens: ow.object.valuesOfType(ow.object),
22
+ media: ow.object.valuesOfType(ow.object)
23
+ });
24
+ const validFont = ow.object.exactShape({
25
+ family: ow.string,
26
+ size: ow.object.nonEmpty.valuesOfType(ow.number),
27
+ lineHeight: ow.object.nonEmpty.valuesOfType(ow.number),
28
+ weight: ow.object.nonEmpty.valuesOfType(ow.string),
29
+ letterSpacing: ow.object.nonEmpty.valuesOfType(ow.number)
30
+ });
31
+ const validTokens = ow.object.exactShape({
32
+ font: ow.object.valuesOfType(validFont),
33
+ size: ow.object.nonEmpty.valuesOfType(ow.number),
34
+ space: ow.object.nonEmpty.valuesOfType(ow.number),
35
+ zIndex: ow.object.nonEmpty.valuesOfType(ow.number),
36
+ radius: ow.object.nonEmpty.valuesOfType(ow.number),
37
+ color: ow.object.nonEmpty.valuesOfType(ow.string)
38
+ });
39
+ const validateTokens = /* @__PURE__ */ __name((tokens) => {
40
+ try {
41
+ ow(tokens, validTokens);
42
+ } catch (err) {
43
+ console.log("Given tokens:\n", JSON.stringify(tokens, null, 2));
44
+ throw err;
45
+ }
46
+ }, "validateTokens");
47
+ const validateFont = /* @__PURE__ */ __name((font) => {
48
+ try {
49
+ ow(font, validFont);
50
+ } catch (err) {
51
+ console.log("Given font:\n", JSON.stringify(font, null, 2));
52
+ throw err;
53
+ }
54
+ }, "validateFont");
55
+ export {
56
+ validateConfig,
57
+ validateFont,
58
+ validateTokens
59
+ };
@@ -0,0 +1,14 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { useRef } from "react";
4
+ function useConstant(fn) {
5
+ const ref = useRef();
6
+ if (!ref.current) {
7
+ ref.current = { v: fn() };
8
+ }
9
+ return ref.current.v;
10
+ }
11
+ __name(useConstant, "useConstant");
12
+ export {
13
+ useConstant
14
+ };
@@ -0,0 +1,57 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { isWeb, useIsomorphicLayoutEffect } from "../constants/platform";
4
+ import { addMediaQueryListener, mediaState, removeMediaQueryListener } from "./useMedia";
5
+ const createDefinition = /* @__PURE__ */ __name(({
6
+ Component,
7
+ propNames
8
+ }) => ({
9
+ isEnabled: (props) => propNames.some((name) => !!props[name]),
10
+ Component
11
+ }), "createDefinition");
12
+ let featureDefinitions = null;
13
+ const useFeatures = /* @__PURE__ */ __name((props, utils) => {
14
+ if (!featureDefinitions) {
15
+ featureDefinitions = loadFeatures();
16
+ }
17
+ const features = [];
18
+ for (const name in featureDefinitions) {
19
+ const { isEnabled, Component } = featureDefinitions[name];
20
+ if (isEnabled(props) && Component) {
21
+ features.push(<Component key={name} {...props} _utils={utils} />);
22
+ }
23
+ }
24
+ return features;
25
+ }, "useFeatures");
26
+ function loadFeatures() {
27
+ return {
28
+ ...!isWeb && {
29
+ mediaQuery: loadMediaQueryFeature()
30
+ }
31
+ };
32
+ }
33
+ __name(loadFeatures, "loadFeatures");
34
+ function loadMediaQueryFeature() {
35
+ const mediaPropNames = Object.keys(mediaState);
36
+ return createDefinition({
37
+ Component: (props) => {
38
+ const keys = mediaPropNames.flatMap((x) => x in props ? x.slice(1) : []);
39
+ useIsomorphicLayoutEffect(() => {
40
+ for (const key of keys) {
41
+ addMediaQueryListener(key, props._utils.forceUpdate);
42
+ }
43
+ return () => {
44
+ for (const key of keys) {
45
+ removeMediaQueryListener(key, props._utils.forceUpdate);
46
+ }
47
+ };
48
+ }, [keys.join(",")]);
49
+ return null;
50
+ },
51
+ propNames: mediaPropNames
52
+ });
53
+ }
54
+ __name(loadMediaQueryFeature, "loadMediaQueryFeature");
55
+ export {
56
+ useFeatures
57
+ };
@@ -0,0 +1,172 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { useForceUpdate } from "@tamagui/use-force-update";
4
+ import { useRef } from "react";
5
+ import { useIsomorphicLayoutEffect } from "../constants/platform";
6
+ import { matchMedia } from "../helpers/matchMedia";
7
+ import { useConstant } from "./useConstant";
8
+ const mediaState = {};
9
+ const mediaQueryListeners = {};
10
+ const addMediaQueryListener = /* @__PURE__ */ __name((key, cb) => {
11
+ mediaQueryListeners[key] = mediaQueryListeners[key] || new Set();
12
+ mediaQueryListeners[key].add(cb);
13
+ }, "addMediaQueryListener");
14
+ const removeMediaQueryListener = /* @__PURE__ */ __name((key, cb) => {
15
+ mediaQueryListeners[key].delete(cb);
16
+ }, "removeMediaQueryListener");
17
+ let conf = null;
18
+ const mediaQueryConfig = new Proxy({}, {
19
+ get(target, key) {
20
+ if (!conf) {
21
+ console.warn("Warning: accessing media query before init");
22
+ return null;
23
+ }
24
+ return Reflect.get(conf, key);
25
+ },
26
+ ownKeys() {
27
+ if (!conf) {
28
+ console.warn("Warning: accessing media query before init");
29
+ return [];
30
+ }
31
+ return Object.keys(conf);
32
+ },
33
+ getOwnPropertyDescriptor() {
34
+ return {
35
+ enumerable: true,
36
+ configurable: true
37
+ };
38
+ }
39
+ });
40
+ const getMedia = /* @__PURE__ */ __name(() => {
41
+ if (!conf) {
42
+ throw new Error(`not configured yet`);
43
+ }
44
+ return mediaState;
45
+ }, "getMedia");
46
+ const configureMedia = /* @__PURE__ */ __name(({
47
+ queries,
48
+ defaultActive = ["sm", "xs"]
49
+ } = {}) => {
50
+ if (conf) {
51
+ console.warn(`Already configured mediaQueries once (you may have called getMedia() before configureMedia())`);
52
+ }
53
+ if (queries) {
54
+ conf = queries;
55
+ }
56
+ for (const key in queries) {
57
+ const str = mediaObjectToString(queries[key]);
58
+ try {
59
+ const getMatch = /* @__PURE__ */ __name(() => matchMedia(str), "getMatch");
60
+ const match = getMatch();
61
+ if (!match || typeof match.addListener !== "function") {
62
+ throw new Error("\u26A0\uFE0F No match (seeing this in RN sometimes)");
63
+ }
64
+ mediaState[key] = !!match.matches;
65
+ match.addListener(() => {
66
+ const next = !!getMatch().matches;
67
+ if (next === mediaState[key])
68
+ return;
69
+ mediaState[key] = next;
70
+ const listeners = mediaQueryListeners[key];
71
+ if (listeners?.size) {
72
+ for (const cb of [...listeners]) {
73
+ cb();
74
+ }
75
+ }
76
+ });
77
+ } catch (err) {
78
+ console.error("Error running media query", str, err.message, err.stack);
79
+ const isDefaultActive = defaultActive?.includes(key) ?? true;
80
+ mediaState[key] = isDefaultActive;
81
+ }
82
+ }
83
+ }, "configureMedia");
84
+ const useMedia = /* @__PURE__ */ __name(() => {
85
+ const forceUpdate = useForceUpdate();
86
+ const state = useRef();
87
+ if (!state.current) {
88
+ state.current = {
89
+ selections: {},
90
+ nextSelections: {},
91
+ isUnmounted: false,
92
+ isRendering: true
93
+ };
94
+ }
95
+ state.current.isRendering = true;
96
+ useIsomorphicLayoutEffect(() => {
97
+ const st = state.current;
98
+ st.isRendering = false;
99
+ for (const key in st.selections) {
100
+ if (!(key in st.nextSelections)) {
101
+ removeMediaQueryListener(key, forceUpdate);
102
+ }
103
+ }
104
+ for (const key in st.nextSelections) {
105
+ if (!(key in st.selections)) {
106
+ addMediaQueryListener(key, forceUpdate);
107
+ }
108
+ }
109
+ });
110
+ useIsomorphicLayoutEffect(() => {
111
+ return () => {
112
+ const st = state.current;
113
+ st.isUnmounted = true;
114
+ const allKeys = {
115
+ ...st.selections,
116
+ ...st.nextSelections
117
+ };
118
+ for (const key in allKeys) {
119
+ removeMediaQueryListener(key, forceUpdate);
120
+ }
121
+ };
122
+ }, []);
123
+ return useConstant(() => {
124
+ const st = state.current;
125
+ return new Proxy(mediaState, {
126
+ get(target, key) {
127
+ if (!(key in mediaState)) {
128
+ return Reflect.get(target, key);
129
+ }
130
+ if (!st.isUnmounted) {
131
+ if (st.isRendering) {
132
+ st.nextSelections[key] = true;
133
+ }
134
+ }
135
+ if (key in mediaState) {
136
+ return mediaState[key];
137
+ }
138
+ return Reflect.get(mediaState, key);
139
+ }
140
+ });
141
+ });
142
+ }, "useMedia");
143
+ function camelToHyphen(str) {
144
+ return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).toLowerCase();
145
+ }
146
+ __name(camelToHyphen, "camelToHyphen");
147
+ function mediaObjectToString(query) {
148
+ if (typeof query === "string") {
149
+ return query;
150
+ }
151
+ return Object.entries(query).map(([feature, value]) => {
152
+ feature = camelToHyphen(feature);
153
+ if (typeof value === "string") {
154
+ return `(${feature}: ${value})`;
155
+ }
156
+ if (typeof value === "number" && /[height|width]$/.test(feature)) {
157
+ value = `${value}px`;
158
+ }
159
+ return `(${feature}: ${value})`;
160
+ }).join(" and ");
161
+ }
162
+ __name(mediaObjectToString, "mediaObjectToString");
163
+ export {
164
+ addMediaQueryListener,
165
+ configureMedia,
166
+ getMedia,
167
+ mediaObjectToString,
168
+ mediaQueryConfig,
169
+ mediaState,
170
+ removeMediaQueryListener,
171
+ useMedia
172
+ };
@@ -0,0 +1,12 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { Pressable } from "react-native";
4
+ const getPressable = Pressable?.["type"]?.["render"];
5
+ const usePressable = /* @__PURE__ */ __name((props) => {
6
+ const out = getPressable(props);
7
+ const { children, style, ...pressableProps } = out.props;
8
+ return [pressableProps, style];
9
+ }, "usePressable");
10
+ export {
11
+ usePressable
12
+ };